<?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>98935</bug_id>
          
          <creation_ts>2012-10-10 11:46:15 -0700</creation_ts>
          <short_desc>[GTK] Add API to allow overriding the default color chooser implementation</short_desc>
          <delta_ts>2015-02-12 00:50:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>141392</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="arno.">a.renevier</assigned_to>
          <cc>andersca</cc>
    
    <cc>a.renevier</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>739180</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-10-10 11:46:15 -0700</bug_when>
    <thetext>The GTK port should add support for color input, using the handy GtkColorChooser widget.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789002</commentid>
    <comment_count>1</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-12-11 17:02:48 -0800</bug_when>
    <thetext>I&apos;m interested in working on it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791143</commentid>
    <comment_count>2</comment_count>
      <attachid>179382</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-12-13 17:14:13 -0800</bug_when>
    <thetext>Created attachment 179382
WIP patch

Here is a wip patch. I&apos;ve tested it and I&apos;m confident it works fine. But the build fails when linking DumpRenderTree.

error is:

  CXXLD  Programs/DumpRenderTree
./.libs/libWebCoreInternals.a(libWebCoreInternals_la-Internals.o): In function `WebCore::Internals::selectColorInColorChooser(WebCore::Element*, WTF::String const&amp;)&apos;:
Internals.cpp:(.text+0x1106): undefined reference to `WebCore::Color::Color(WTF::String const&amp;)&apos;
Internals.cpp:(.text+0x1112): undefined reference to `WebCore::HTMLInputElement::selectColorInColorChooser(WebCore::Color const&amp;)&apos;

This is strange because libWebCorePlatform.la in passed on the command line, and WebCore::Color::Color(WTF::String const&amp;) is correctly defined in .libs/libWebCorePlatform.a (ie: I checked with nm -g, that&apos;s it&apos;s in the text section of one of the its object files). It seems to be the only place in DumpRenderTree where a function from webcore platform is used.

When this is fixed, I can enable the tests, and write the ChangeLogs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791146</commentid>
    <comment_count>3</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-12-13 17:16:21 -0800</bug_when>
    <thetext>CCing people who worked on #94435
So may be they have an idea about this linking problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791711</commentid>
    <comment_count>4</comment_count>
      <attachid>179501</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-12-14 10:56:55 -0800</bug_when>
    <thetext>Created attachment 179501
WIP patch

rebased against current trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795289</commentid>
    <comment_count>5</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-12-20 01:55:59 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; When this is fixed, I can enable the tests, and write the ChangeLogs

You have to additionally export these symbols in Source/autotools/symbols.filter:
diff --git a/Source/autotools/symbols.filter b/Source/autotools/symbols.filter
index f87f834..2c6b00c 100644
--- a/Source/autotools/symbols.filter
+++ b/Source/autotools/symbols.filter
@@ -232,6 +232,8 @@ _ZN7WebCore18StyleSheetContentsD1Ev;
 _ZN7WebCore28DocumentStyleSheetCollection12addUserSheetEN3WTF10PassRefPtrINS_18StyleSheetContentsEEE;
 _ZN7WebCore28DocumentStyleSheetCollection14addAuthorSheetEN3WTF10PassRefPtrINS_18StyleSheetContentsEEE;
 _ZN7WebCore4KURL10invalidateEv;
+_ZN7WebCore5ColorC1ERKN3WTF6StringE;
+_ZN7WebCore16HTMLInputElement25selectColorInColorChooserERKNS_5ColorE;
 
 local:
 _Z*;


http://trac.webkit.org/wiki/ExportingSymbols has a bit more info.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795694</commentid>
    <comment_count>6</comment_count>
      <attachid>180391</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-12-20 12:54:54 -0800</bug_when>
    <thetext>Created attachment 180391
thanks a lot

patch proposal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795700</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-20 12:59:40 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795702</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-20 13:00:04 -0800</bug_when>
    <thetext>Attachment 180391 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;La...&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1248:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1249:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1250:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1251:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1252:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1253:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1254:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:104:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:105:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:106:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:107:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:119:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:120:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:121:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:122:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 15 in 29 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>795776</commentid>
    <comment_count>9</comment_count>
      <attachid>180391</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-20 14:00:46 -0800</bug_when>
    <thetext>Comment on attachment 180391
thanks a lot

Attachment 180391 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15456143

New failing tests:
inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795844</commentid>
    <comment_count>10</comment_count>
      <attachid>180417</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-12-20 15:04:20 -0800</bug_when>
    <thetext>Created attachment 180417
updated patch

follows guidelines for WebKit2 GTK+ API better</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795848</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-20 15:07:18 -0800</bug_when>
    <thetext>Attachment 180417 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;La...&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/webkit2.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1248:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1249:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1250:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1251:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1252:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1253:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1254:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:103:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:104:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:105:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:106:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:118:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:119:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:120:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:121:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 15 in 31 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>796188</commentid>
    <comment_count>12</comment_count>
      <attachid>180417</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-12-21 01:20:21 -0800</bug_when>
    <thetext>Comment on attachment 180417
updated patch

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

Thanks for the patch! I think it would be easier to review if you split the patch in two, one for webkit1 and the other for webkit2. I&apos;ll review the webkit2 part for now.

&gt; Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:238
&gt; -    notImplemented();
&gt; -    return 0;
&gt; +    return WebColorChooserProxyGtk::create(page, m_viewWidget, initialColor, elementRect);

Instead of implementing this, it would be better to implement showColorPicker and hideColorPicker callbacks of the UI client. That way the implementation would be in the API. This could be implemented to also provide a color chooser for C API users if they don&apos;t implement the UI client callbacks themselves. For now, I would only focus on GTK+ API.

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

Use angle-bracket form for header files from WebCore. #include &lt;WebCore/Color.h&gt;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:62
&gt; +#if ENABLE(INPUT_TYPE_COLOR)
&gt; +    WebColorChooserProxy::Client* client;
&gt; +#endif

Instead of a client this should have a WebColorPickerResultListenerProxy

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:101
&gt; +    /**
&gt; +     * WebKitColorChooserRequest:end-chooser:
&gt; +     * @request: the #WebKitColorChooserRequest on which the signal is emitted
&gt; +     *
&gt; +     * Emitted when request must be terminated. This happens for example if the
&gt; +     * page triggering the request unloads before the request is completed.
&gt; +     */
&gt; +    signals[END_CHOOSER] =

Maybe this should be a signal in the view hide-color-chooser, for example.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:116
&gt; +    /**
&gt; +     * WebKitColorChooserRequest:change-color:
&gt; +     * @request: the #WebKitColorChooserRequest on which the signal is emitted
&gt; +     * @color: the new color
&gt; +     *
&gt; +     * Emitted when default value of request is changed.
&gt; +     */
&gt; +    signals[CHANGE_COLOR] =

This shouldn&apos;t happen, no? the request is created with an initial color, and the user finish the request setting a new color

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:140
&gt; +#if ENABLE(INPUT_TYPE_COLOR)
&gt; +    request-&gt;priv-&gt;client-&gt;didEndColorChooser();
&gt; +    request-&gt;priv-&gt;handledRequest = TRUE;
&gt; +#endif

Return early if the request has been completed to make sure we don&apos;t handle this twice.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:146
&gt; + * @color: (array zero-terminated=1) (transfer none): a

Why is color a zero-terminated array? Doc is missing there, cut and paste? :-)

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:150
&gt; +void webkit_color_chooser_request_select_color(WebKitColorChooserRequest* request, const gchar* color)

Could we pass a GdkRGBA instead? and convert it to a WebCore::Color

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:159
&gt; +    request-&gt;priv-&gt;color = Color(color);
&gt; +#if ENABLE(INPUT_TYPE_COLOR)
&gt; +    request-&gt;priv-&gt;client-&gt;didChooseColor(request-&gt;priv-&gt;color);
&gt; +    request-&gt;priv-&gt;client-&gt;didEndColorChooser();
&gt; +#endif
&gt; +    request-&gt;priv-&gt;handledRequest = TRUE;

REturn early if the request has been completed here too.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:170
&gt; +const gchar* webkit_color_chooser_request_get_current_color(WebKitColorChooserRequest* request)

Could we return a GdkRGBA instead?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.h:61
&gt; +WEBKIT_API GType
&gt; +webkit_color_chooser_request_get_type                  (void);

(void) shuld be lined up with parameters of the other methods.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.h:64
&gt; +webkit_color_chooser_request_get_current_color  (WebKitColorChooserRequest* request);

In public headers we use GNOME coding style, this should be WebKitColorChooserRequest *request

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.h:68
&gt; +webkit_color_chooser_request_select_color       (WebKitColorChooserRequest* request, 
&gt; +                                                 const gchar * color);

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:110
&gt; +    RUN_COLOR_CHOOSER,

This signal is a bit different that run-file-chooser, because in this case the dialog should be closed/hidden when the page changes, so maybe it should split in show-color-chooser and close-color-chooser, for example. Or we could keep run-file-chooser and add a cancelled signal to the request object and simply cancel the request.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:421
&gt; +#if GTK_CHECK_VERSION(3, 4, 0)

GTK+ 3.4 is the minimum required version, so we don&apos;t need this checks

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:449
&gt; +        GOwnPtr&lt;char&gt; str_value;

This should be stringValue

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:453
&gt; +        str_value.set(g_strdup_printf(&quot;#%.2X%.2X%.2X&quot;, (int)(color.red * 255), (int)(color.green * 255), (int)(color.blue * 255)));

I could pass a GdkRGBA directly to the request and do the conversions needed there.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:471
&gt; +    if (!gtk_widget_is_toplevel(parent) || !GTK_IS_WINDOW(parent))

Use widgetIsOnscreenToplevelWindow() instead.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:479
&gt; +    const gchar* initialColor = webkit_color_chooser_request_get_current_color(request);
&gt; +    updateColorChooserColorValue(dialog, initialColor);

I think the request should be created with the initial color.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:485
&gt; +    g_object_ref(request);

Move this to the signal_connect to make it clear that we are passing the ownership to the callback.

g_signal_connect(dialog, &quot;response&quot;, G_CALLBACK(colorChooserDialogResponseCallback), g_object_ref(request));

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:842
&gt; +    test-&gt;runJavaScriptAndWaitUntilFinished(&quot;document.querySelector(&apos;input&apos;).value = &apos;#00ff00&apos;;&quot;, 0);
&gt; +    g_assert_cmpstr(webkit_color_chooser_request_get_current_color(colorChooserRequest), ==, &quot;#00ff00&quot;);

Oh, I understand now, the current color might change while the color chooser is running. It would be a bit weird, that you are selecting a color from the dialog and a javascript changes it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796521</commentid>
    <comment_count>13</comment_count>
      <attachid>180569</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-12-21 16:00:56 -0800</bug_when>
    <thetext>Created attachment 180569
new patch iteration

(In reply to comment #12)


&gt; Oh, I understand now, the current color might change while the color chooser is running. It would be a bit weird, that you are selecting a color from the dialog and a javascript changes it.

input.value may be changed via javascript when the picker is open. We may choose either to change selected value in the picker or no. I&apos;ve tested in chromimum and in opera; they both update the new value in the picker.

&gt; Instead of implementing this, it would be better to implement showColorPicker and hideColorPicker callbacks of the UI client. That way the implementation would be in the API. This could be implemented to also provide a color chooser for C API users if they don&apos;t implement the UI client callbacks themselves. For now, I would only focus on GTK+ API.
The problem is that there in no changeColor callback.
Another thing is WebColorPickerResultListenerProxy only has a setColor api which calls m_page-&gt;setColorChooserColor and m_page-&gt;endColorChooser. So it&apos;s not possible to simply end a chooser without selecting a color.
So imagine you have a input with blue color. User opens the picker. Meanwile, value changes to red. We won&apos;t be aware of that change. Then user cancels the picker: with listenerproxy api, we need to select a color. But we are only aware of the initial color (blue). So, we would use not be able to put input color value to red (new javascript set color). I could not find a way to handle this edge case with {show,hide}ColorPicker and WebColorPickerResultListenerProxy. That&apos;s why I implemented createColorChooserProxy.

Do you have any idea to do better ?

&gt; Instead of a client this should have a WebColorPickerResultListenerProxy
see above: with this object, we cannot just endChooser (ie: cancel it)


&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:110
&gt; &gt; +    RUN_COLOR_CHOOSER,
&gt; 
&gt; This signal is a bit different that run-file-chooser, because in this case the dialog should be closed/hidden when the page changes, so maybe it should split in show-color-chooser and close-color-chooser, for example. Or we could keep run-file-chooser and add a cancelled signal to the request object and simply cancel the request.

May be my new patch handle that. But I&apos;m not totally sure what you mean here.

Other comments have been addressed in this new patch iteration (except I did not split it yet).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796524</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-21 16:05:04 -0800</bug_when>
    <thetext>Attachment 180569 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;La...&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
Source/WebKit2/UIProcess/gtk/WebColorChooserProxyGtk.cpp:46:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebKit2/UIProcess/gtk/WebColorChooserProxyGtk.cpp:58:  One line control clauses should not use braces.  [whitespace/braces] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/webkit2.h&quot;
Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:852:  Missing space before {  [whitespace/braces] [5]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1240:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1241:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1242:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1243:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1244:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1245:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1246:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1262:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1263:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1264:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1265:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1266:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1267:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1268:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:103:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:104:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:105:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:106:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:161:  Missing space before {  [whitespace/braces] [5]
Total errors found: 23 in 31 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>798384</commentid>
    <comment_count>15</comment_count>
      <attachid>180981</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2012-12-31 13:26:55 -0800</bug_when>
    <thetext>Created attachment 180981
WebKit2 only patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799129</commentid>
    <comment_count>16</comment_count>
      <attachid>181118</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-01-02 17:36:18 -0800</bug_when>
    <thetext>Created attachment 181118
rebase against tot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799136</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-02 17:40:36 -0800</bug_when>
    <thetext>Attachment 181118 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;La...&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/webkit2.h&quot;
Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:851:  Missing space before {  [whitespace/braces] [5]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1263:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1264:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1265:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1266:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1267:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1268:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1269:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1285:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1286:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1287:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1288:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1289:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1290:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1291:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:103:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:104:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:105:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:106:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:161:  Missing space before {  [whitespace/braces] [5]
Total errors found: 21 in 28 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>799384</commentid>
    <comment_count>18</comment_count>
      <attachid>181118</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-01-03 07:58:42 -0800</bug_when>
    <thetext>Comment on attachment 181118
rebase against tot

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

Thanks for splitting the patch, it looks much better now, but we should implement the UIClient callback from the GTK+ API.

&gt; Source/WebKit2/ChangeLog:12
&gt; +        #WebKitColorChooserRequest object. If the signal is not handled by the

Don&apos;t use # in the changelog

&gt; Source/WebKit2/ChangeLog:14
&gt; +        application, we show a GtkGtkColorChooserDialog (or
&gt; +        GtkColorSelectionDialog for Gtk &lt; 3.4.0).

We don&apos;t hace special case for Gtk &lt; 3.4.0, right?

&gt; Source/WebKit2/ChangeLog:16
&gt; +        WebKitColorChooserRequest api allows to read current color (either

API

&gt; Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:240
&gt; -PassRefPtr&lt;WebColorChooserProxy&gt; PageClientImpl::createColorChooserProxy(WebPageProxy*, const WebCore::Color&amp;, const WebCore::IntRect&amp;)
&gt; +PassRefPtr&lt;WebColorChooserProxy&gt; PageClientImpl::createColorChooserProxy(WebPageProxy* page, const WebCore::Color&amp; initialColor, const WebCore::IntRect&amp; elementRect)
&gt;  {
&gt; -    notImplemented();
&gt; -    return 0;
&gt; +    return WebColorChooserProxyGtk::create(page, m_viewWidget, initialColor, elementRect);

I still think this should be implemented only as a fallback when the client is not implemented and implement the UI client callbacks. If the only problem is that the listener doesn&apos;t allow to finish the request without selecting a color, add WebColorPickerResultListenerProxy::endColorChooser()

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:63
&gt; +    Color color;

I think it would be better to cache a GdkRGBA that we can return directly.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:101
&gt; +    signals[CHANGE_COLOR] =

Instead of a signal this could be a property &quot;color&quot; and users can connect to &quot;notify&quot; signal.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:137
&gt; +void webkit_color_chooser_request_select_color(WebKitColorChooserRequest* request, const GdkRGBA color)

Pass a pointer for the color const GdkRGBA* color

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:159
&gt; +GdkRGBA webkit_color_chooser_request_get_current_color(WebKitColorChooserRequest* request)

Return a pointer

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:167
&gt; +WebKitColorChooserRequest* webkitColorChooserRequestCreate(const Color initialColor, WebColorChooserProxy::Client* client)

You could probably pass a reference for the color const Color&amp; initialColor

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:172
&gt; +    request-&gt;priv-&gt;handledRequest = FALSE;

This is false already, private struct is initialized to 0 when allocated.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:181
&gt; +    g_signal_emit(request, signals[END_CHOOSER], 0, NULL);

This signal doesn&apos;t exist.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:187
&gt; +    g_signal_emit(request, signals[CHANGE_COLOR], 0, request-&gt;priv-&gt;color.serialized().ascii().data(), NULL);

I we use a property here we would emit notify. We should check that the color has actually changed, and return early if the color hasn&apos;t changed.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequestPrivate.h:29
&gt; +#include &quot;Color.h&quot;

Use #include &lt;WebCore/Color.h&gt; instead.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:111
&gt; +    HIDE_COLOR_CHOOSER,

hmm, I think I prefer close-color-chooser

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:185
&gt; +    GRefPtr&lt;GtkWidget&gt; colorChooserDialog;

Don&apos;t use GRefPtr for GtkWidgets, they have a floating reference, and you are going to delete it with gtk_widget_destroy

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:437
&gt; +        // noop if webkit_color_chooser_request_select_color has been called before

In what case can this happen?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:438
&gt; +        webkit_color_chooser_request_cancel(webView-&gt;priv-&gt;colorChooserRequest.get());

The request is cancelled in the dispose, so we could simply unref the request object.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:450
&gt; +    GRefPtr&lt;WebKitColorChooserRequest&gt; refedRequest = webView-&gt;priv-&gt;colorChooserRequest;

Do we need to take another reference?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:452
&gt; +        GOwnPtr&lt;char&gt; stringValue;

This seems unused.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:458
&gt; +    webkitWebViewHideColorChooser(webView, refedRequest.get());

This is already called after webkit_color_chooser_request_select_color(), so instead of calling it here again, we could call webkit_color_chooser_request_cancel() when responseID != OK

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:464
&gt; +    if (webView-&gt;priv-&gt;colorChooserRequest)
&gt; +        return FALSE;

Can this really happen?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:466
&gt; +    if (!!widgetIsOnscreenToplevelWindow(toplevel))

!! -&gt; !

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1244
&gt; +     * WebKitWebView::run-color-chooser:
&gt; +     * @web_view: the #WebKitWebView on which the signal is emitted
&gt; +     * @request: a #WebKitColorChooserRequest

This is not correctly indented, the * should be lined up.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1274
&gt; +     * @request: a #WebKitColorChooserRequest

Is this really important? I guess there can&apos;t be more than one request as the same time for the same view.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1277
&gt; +     * Emitted when color picker must be hidden. This happens for example if the
&gt; +     * page triggering the request unloads before the request is completed.

This is also emitted when the request is finished correctly after selecting a color, no?

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1288
&gt;&gt; +                     g_signal_accumulator_true_handled, 0 /* accumulator data */,
&gt; 
&gt; Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]

I&apos;m not sure this needs to be true_handled. We could check if we have a dialog in the default handler and destroy it.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:842
&gt; +    g_assert_cmpfloat(color.red, ==, 1.0);
&gt; +    g_assert_cmpfloat(color.green, ==, 0.0);
&gt; +    g_assert_cmpfloat(color.blue, ==, 0.0);
&gt; +    g_assert_cmpfloat(color.alpha, ==, 1.0);

Maybe we could add a helper method to check a color assertColorIsEqual() or something like that.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:845
&gt; +    test-&gt;runJavaScriptAndWaitUntilFinished(&quot;document.querySelector(&apos;input&apos;).value = &apos;#00ff00&apos;;&quot;, 0);
&gt; +    color = webkit_color_chooser_request_get_current_color(colorChooserRequest);

We should also check that the notify signal is emitted when the color is changed by javascript.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:860
&gt; +    g_assert_cmpstr(valueString.get(), ==, &quot;#0000ff&quot;);

We should also test that close-color-chooser is emitted when the request is finished and cancelled.

&gt; Source/WebKit2/UIProcess/gtk/WebColorChooserProxyGtk.cpp:45
&gt; +    if (!webkitWebViewRunColorChooserRequest(WEBKIT_WEB_VIEW(m_webView.get()), WEBKIT_COLOR_CHOOSER_REQUEST(m_request.get())))
&gt; +        webkit_color_chooser_request_cancel(WEBKIT_COLOR_CHOOSER_REQUEST(m_request.get()));

The problem of doing this here is that you can&apos;t assume the view widget is a WebKitWebView, in case of C API users it will be a WebKitWebViewBase. Also, WebKitColorChooserRequest is part of the GTK+ API not the C API.

&gt; LayoutTests/ChangeLog:15
&gt; +        * fast/forms/color/input-color-onchange-event-expected.txt:
&gt; +        * platform/gtk/TestExpectations:
&gt; +        * platform/gtk/fast/forms/color/input-appearance-color-expected.txt: Added.

I guess this would be part fo the wk1 patch, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799561</commentid>
    <comment_count>19</comment_count>
      <attachid>181118</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-01-03 12:23:34 -0800</bug_when>
    <thetext>Comment on attachment 181118
rebase against tot

Is it really interesting to expose a color chooser API. Why not just show the default GTK color chooser?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800078</commentid>
    <comment_count>20</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-01-04 01:28:28 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 181118 [details])
&gt; Is it really interesting to expose a color chooser API. Why not just show the default GTK color chooser?

I&apos;m not sure I understand the question, the default signal handler shows the default GTK color chooser when the signal is not handled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800221</commentid>
    <comment_count>21</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-01-04 08:38:17 -0800</bug_when>
    <thetext>(In reply to comment #20)

&gt; I&apos;m not sure I understand the question, the default signal handler shows the default GTK color chooser when the signal is not handled.

Theoretically if someone wanted to show a different color chooser, they would just choose to modify GTK+ for their operating system, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800227</commentid>
    <comment_count>22</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-01-04 08:55:48 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; 
&gt; &gt; I&apos;m not sure I understand the question, the default signal handler shows the default GTK color chooser when the signal is not handled.
&gt; 
&gt; Theoretically if someone wanted to show a different color chooser, they would just choose to modify GTK+ for their operating system, right?

No, they would connect to the signal, show their chooser and return TRUE. That&apos;s what sugar does for the file chooser for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800701</commentid>
    <comment_count>23</comment_count>
      <attachid>181399</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-01-04 15:42:56 -0800</bug_when>
    <thetext>Created attachment 181399
new patch iteration

New patch iteration:
add endColorChooser method to WebColorPickerResultListenerProxy, and use it instead of WebColorChooserProxy::client in chooser proxy.
the main behaviour difference is that I do not update the color in the picker if color is change via javascript
also, implement showColorPicker and hideColorPicker callbacks.
The request is &quot;owned&quot; by the webView which g_object_ref&apos;s in webkitWebViewRunColorChooser and g_object_unref&apos;s it in webkitWebViewCloseColorChooser
close_color_chooser is now called even when picker is closed by user (in previous patch, it was called only when closed from WebCore).
I think I address all the other issues,
except this one which I don&apos;t really understand (neither the problem nor the solution).
&gt; The problem of doing this here is that you can&apos;t assume the view widget is a WebKitWebView, in case of C API users it will be a WebKitWebViewBase. Also, WebKitColorChooserRequest is part of the GTK+ API not the C API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800704</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-04 15:45:15 -0800</bug_when>
    <thetext>Attachment 181399 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u...&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/webkit2.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1253:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1254:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1255:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1256:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1257:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1258:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1259:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1274:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1275:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1276:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1277:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1278:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1279:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:114:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:116:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 15 in 28 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>800866</commentid>
    <comment_count>25</comment_count>
      <attachid>181399</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-01-04 23:17:15 -0800</bug_when>
    <thetext>Comment on attachment 181399
new patch iteration

Attachment 181399 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15705669</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801607</commentid>
    <comment_count>26</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-01-07 13:33:52 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 181399 [details])

&gt; ./webkit2gtk-scan: symbol lookup error: /srv/ews/WebKit/WebKitBuild/Release/.libs/libwebkit2gtk-3.0.so.0: undefined symbol:_ZN6WebKit20WebColorChooserProxy16setSelectedColorERKN7WebCore5ColorE
&gt; Scan failed: 

I don&apos;t understand this error. I cannot reproduce it, and I don&apos;t even have a webkit2gtk-scan binary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801611</commentid>
    <comment_count>27</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-01-07 13:40:34 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; (From update of attachment 181399 [details] [details])
&gt; 
&gt; &gt; ./webkit2gtk-scan: symbol lookup error: /srv/ews/WebKit/WebKitBuild/Release/.libs/libwebkit2gtk-3.0.so.0: undefined symbol:_ZN6WebKit20WebColorChooserProxy16setSelectedColorERKN7WebCore5ColorE
&gt; &gt; Scan failed: 
&gt; 
&gt; I don&apos;t understand this error. I cannot reproduce it, and I don&apos;t even have a webkit2gtk-scan binary.

It&apos;s created-automatically during the gtkdoc generation step. Typically this means that there&apos;s a missing symbol in the library. What happens when you run MiniBrowser?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801619</commentid>
    <comment_count>28</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-01-07 13:50:42 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; (In reply to comment #25)
&gt; &gt; &gt; (From update of attachment 181399 [details] [details] [details])
&gt; &gt; 
&gt; &gt; &gt; ./webkit2gtk-scan: symbol lookup error: /srv/ews/WebKit/WebKitBuild/Release/.libs/libwebkit2gtk-3.0.so.0: undefined symbol:_ZN6WebKit20WebColorChooserProxy16setSelectedColorERKN7WebCore5ColorE
&gt; &gt; &gt; Scan failed: 
&gt; &gt; 
&gt; &gt; I don&apos;t understand this error. I cannot reproduce it, and I don&apos;t even have a webkit2gtk-scan binary.
&gt; 
&gt; It&apos;s created-automatically during the gtkdoc generation step. Typically this means that there&apos;s a missing symbol in the library. What happens when you run MiniBrowser?

MiniBrowser launches fine, and input color works correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801682</commentid>
    <comment_count>29</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-01-07 14:53:34 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; MiniBrowser launches fine, and input color works correctly.

Perhaps you are exposing _ZN6WebKit20WebColorChooserProxy16setSelectedColorERKN7WebCore5ColorE to the gtkdoc when it should be hidden. Take a look at the list of skipped files in Tools/gtk/generate-gtkdoc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805475</commentid>
    <comment_count>30</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-01-11 11:45:06 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; MiniBrowser launches fine, and input color works correctly.
&gt; 
&gt; Perhaps you are exposing _ZN6WebKit20WebColorChooserProxy16setSelectedColorERKN7WebCore5ColorE to the gtkdoc when it should be hidden. Take a look at the list of skipped files in Tools/gtk/generate-gtkdoc.

In previous patch, I implemented WebColorChooserProxyGtk::setSelectedColor.
In the current patch, I don&apos;t implement it anymore (it&apos;s implemented in base class WebColorChooserProxy). Do I need to implement it ? Alternatively, could that be a bug in the bot where something would not have been cleaned up correctly since previous patch ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806743</commentid>
    <comment_count>31</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-01-14 16:25:26 -0800</bug_when>
    <thetext>The method seems to be in the header, so you&apos;ll probably need to add an empty implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807744</commentid>
    <comment_count>32</comment_count>
      <attachid>182856</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-01-15 15:29:52 -0800</bug_when>
    <thetext>Created attachment 182856
try to add an empty implementation of WebColorChooserProxyGtk::setSelectedColor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807746</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 15:33:18 -0800</bug_when>
    <thetext>Attachment 182856 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u...&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/webkit2.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1253:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1254:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1255:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1256:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1257:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1258:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1259:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1274:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1275:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1276:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1277:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1278:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1279:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:114:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:116:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 15 in 28 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>832105</commentid>
    <comment_count>34</comment_count>
      <attachid>188129</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-02-13 11:27:06 -0800</bug_when>
    <thetext>Created attachment 188129
updated patch

&gt; 
&gt; The problem of doing this here is that you can&apos;t assume the view widget is a WebKitWebView, in case of C API users it will be a WebKitWebViewBase. Also, WebKitColorChooserRequest is part of the GTK+ API not the C API.

This new patch fixes this issue: color chooser proxy calls webkitWebViewBaseShowColorChooser and webkitWebViewBase has a client from webkitWebView which it uses to notify that a color picker must be shown. I wonder if it would be better to display the gtk default color picker from webkitWebViewBase, and  webkitWebViewShowColorChooser to just emit a signal and return a boolean to tell webkitWebViewBase wether or not it should display the gtk default picker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832107</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 11:29:49 -0800</bug_when>
    <thetext>Attachment 188129 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.features.am.in&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp&apos;, u&apos;Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/GNUmakefile.list.am&apos;, u&apos;Source/WebKit2/UIProcess/API/C/gtk/WKColorChooserClientGtk.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/gtk/WKColorChooserClientGtk.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserClient.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserClient.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequestPrivate.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk.types&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/webkit2.h&apos;, u&apos;Source/WebKit2/UIProcess/WebColorPickerResultListenerProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebColorPickerResultListenerProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/gtk/WebColorChooserClientGtk.cpp&apos;, u&apos;Source/WebKit2/UIProcess/gtk/WebColorChooserClientGtk.h&apos;, u&apos;Source/WebKit2/UIProcess/gtk/WebColorChooserProxyGtk.cpp&apos;, u&apos;Source/WebKit2/UIProcess/gtk/WebColorChooserProxyGtk.h&apos;, u&apos;Source/autotools/symbols.filter&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitperl/FeatureList.pm&apos;]&quot; exit_code: 1
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/webkit2.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1256:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1257:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1258:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1259:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1260:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1261:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1262:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1277:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1278:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1279:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1280:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1281:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1282:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.h&quot;
Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:114:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:116:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserClient.h&quot;
Total errors found: 16 in 37 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>885507</commentid>
    <comment_count>36</comment_count>
      <attachid>200854</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-05-06 16:51:34 -0700</bug_when>
    <thetext>Created attachment 200854
updated patch: fixes style issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892184</commentid>
    <comment_count>37</comment_count>
      <attachid>200854</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-05-22 02:18:28 -0700</bug_when>
    <thetext>Comment on attachment 200854
updated patch: fixes style issues

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

Sorry for the delay reviewing this. Since we are enabling the color picker feature unconditionally, I wonder if we could avoid all the ifdefs.

&gt; Source/WebKit2/ChangeLog:11
&gt; +        Implement showColorPicker and hideColorPicker UI client callbacks. As
&gt; +        a fallback, implement WebColorChooserProxyGtk.

I think this should be easier to review if we leave the fallback impl for a follow up patch.

&gt; Source/WebKit2/ChangeLog:17
&gt; +        Implement a WebColorChooserClientGtk object. A
&gt; +        WebColorChooser client will be attached to the WebKitWebView. Both
&gt; +        showColorPicker UI callback or WebColorChooserClientGtk will call
&gt; +        webkitWebViewBaseShowColorChooser which will then use client to notify
&gt; +        the WebKitWebView that it should display the color chooser.

Why do you need this instead of implementing showColorPicker and hideColorPicker from the WKPageUIClient?

&gt; Source/WebKit2/UIProcess/API/C/gtk/WKColorChooserClientGtk.cpp:37
&gt; +void WKViewSetColorChooserClientGtk(WKViewRef viewRef, const WKColorChooserClientGtk* wkClient)
&gt; +{
&gt; +    webkitWebViewBaseInitializeColorChooserClient(toImpl(viewRef), wkClient);
&gt; +}

Why do we need a separate client for the color chooser instead of using the UIClient?

&gt; Source/WebKit2/UIProcess/API/C/gtk/WKColorChooserClientGtk.h:42
&gt; +    WKColorChooserClientGtkShowColorChooserCallback  showColorChooser;
&gt; +    WKColorChooserClientGtkHideColorChooserCallback  hideColorChooser;

These are already in WKPageUIClient.

&gt; Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp:240
&gt; -    notImplemented();
&gt; -    return 0;
&gt; +    return WebColorChooserProxyGtk::create(page, m_viewWidget, initialColor, elementRect);

As I said I would leave this unimplemented for now, to make the patch smaller.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:112
&gt; +     */

All new API should have now Since: 2.2 tags.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:129
&gt; + * Ask WebKit to cancel the request. It&apos;s important to do this in case
&gt; + * no selection has been made in the client, otherwise the request
&gt; + * won&apos;t be properly completed and the browser will keep the request
&gt; + * pending forever, which might cause the browser to hang.

To prevent this, you should implement dispose and cancel the request if it hasn&apos;t been handled.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:135
&gt; +    request-&gt;priv-&gt;handledRequest = TRUE;

handledRequest is bool, use true instead of TRUE.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:153
&gt; +    request-&gt;priv-&gt;handledRequest = TRUE;

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:167
&gt; + * Returns: the current color of request. While no color has been selected, it
&gt; + * is the initial value defined by WebKit. When a color has been selected, this
&gt; + * becomes the selected value.

Please, add the xplanation to the body and leave the return tag as Returns: the current color of request

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.h:68
&gt; +webkit_color_chooser_request_select_color       (WebKitColorChooserRequest *request, 
&gt; +                                                 const GdkRGBA *color);

Please line up parameter names.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:175
&gt; +    webkitWebViewBaseShowColorChooser(WEBKIT_WEB_VIEW_BASE(clientInfo), WebCore::Color(WebKit::toWTFString(initialColor)), toImpl(listener));

You can use toWTFString directly since there&apos;s a using namespace WebKit;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:182
&gt; +#endif

So you are implementing it here too? What&apos;s the other client for then?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:470
&gt; +    if (webView-&gt;priv-&gt;colorChooserRequest) {
&gt; +        g_object_unref(webView-&gt;priv-&gt;colorChooserRequest.get());
&gt; +        webView-&gt;priv-&gt;colorChooserRequest.clear();
&gt; +    }

I think you can simply do webView-&gt;priv-&gt;colorChooserRequest = 0;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:472
&gt; +    if (webView-&gt;priv-&gt;colorChooserDialog)
&gt; +        gtk_widget_destroy(webView-&gt;priv-&gt;colorChooserDialog);

You should set webView-&gt;priv-&gt;colorChooserDialog = 0 here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:487
&gt; +    g_object_ref(G_OBJECT(request));

webView-&gt;priv-&gt;colorChooserRequest is a RefPtr, so you are increasing the ref counter twice and then leaking the request.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:489
&gt; +    if (!!widgetIsOnscreenToplevelWindow(toplevel))

!!widgetIsOnscreenToplevelWindow(toplevel)?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:491
&gt; +    GtkWidget* dialog =  gtk_color_chooser_dialog_new(_(&quot;Select Color&quot;), GTK_WINDOW(toplevel));

toplevel can be NULL, you should use toplevel ? GTK_WINDOW(toplevel) : 0

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:496
&gt; +    g_signal_connect(dialog, &quot;response&quot;, G_CALLBACK(colorChooserDialogResponseCallback), webView);

I think you can pass the request to the signal (instead of the view) and that way you don&apos;t probably need to cache it in the private struct

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1322
&gt; +      * Emitted when color picker must be hidden. This happens for example if the

I would say closed instead of hidden since the signals is called close-color-chooser

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1340
&gt; +    ColorChooserTest::add(&quot;WebKitWebView&quot;, &quot;color-chooser-request&quot;, testWebViewColorChooserRequest);

I would be nice to add also a tests for the color property to mke sure notify is emitted when it changes (and only if it has changed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894988</commentid>
    <comment_count>38</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-05-29 09:49:09 -0700</bug_when>
    <thetext>(In reply to comment #37)

&gt; 
&gt; Why do we need a separate client for the color chooser instead of using the UIClient?

The separate client was to (try to) implement WebColorChooserProxyGtk fallback. If we leave it for another patch, that makes the current patch much simpler.



&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:496
&gt; &gt; +    g_signal_connect(dialog, &quot;response&quot;, G_CALLBACK(colorChooserDialogResponseCallback), webView);
&gt; 
&gt; I think you can pass the request to the signal (instead of the view) and that way you don&apos;t probably need to cache it in the private struct

We need to store the request in the view private struct, because we need to delete in when close-color-chooser signal is emitted.


&gt; &gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1340
&gt; &gt; +    ColorChooserTest::add(&quot;WebKitWebView&quot;, &quot;color-chooser-request&quot;, testWebViewColorChooserRequest);
&gt; 
&gt; I would be nice to add also a tests for the color property to mke sure notify is emitted when it changes (and only if it has changed).

Right now, the ui client callbacks (showColorPicker and hideColorPicker) do not allow being notified when color is changed from JavaScript. Should I add such an api ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894989</commentid>
    <comment_count>39</comment_count>
      <attachid>203207</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-05-29 09:50:54 -0700</bug_when>
    <thetext>Created attachment 203207
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899462</commentid>
    <comment_count>40</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-12 00:28:34 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; (In reply to comment #37)
&gt; 
&gt; &gt; 
&gt; &gt; Why do we need a separate client for the color chooser instead of using the UIClient?
&gt; 
&gt; The separate client was to (try to) implement WebColorChooserProxyGtk fallback. If we leave it for another patch, that makes the current patch much simpler.

Yes, that&apos;s the idea :-)

&gt; 
&gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:496
&gt; &gt; &gt; +    g_signal_connect(dialog, &quot;response&quot;, G_CALLBACK(colorChooserDialogResponseCallback), webView);
&gt; &gt; 
&gt; &gt; I think you can pass the request to the signal (instead of the view) and that way you don&apos;t probably need to cache it in the private struct
&gt; 
&gt; We need to store the request in the view private struct, because we need to delete in when close-color-chooser signal is emitted.
&gt; 
&gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1340
&gt; &gt; &gt; +    ColorChooserTest::add(&quot;WebKitWebView&quot;, &quot;color-chooser-request&quot;, testWebViewColorChooserRequest);
&gt; &gt; 
&gt; &gt; I would be nice to add also a tests for the color property to mke sure notify is emitted when it changes (and only if it has changed).
&gt; 
&gt; Right now, the ui client callbacks (showColorPicker and hideColorPicker) do not allow being notified when color is changed from JavaScript. Should I add such an api ?

Yes, file a new bug report to implement that in the C API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899481</commentid>
    <comment_count>41</comment_count>
      <attachid>203207</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-12 02:32:49 -0700</bug_when>
    <thetext>Comment on attachment 203207
updated patch

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

This looks much better, thanks! there are just a few minor issues. We still need another GTK+ reviewer to check the new API and a WebKit2 owner to approve also the changes in the WebColorPickerResultListenerProxy.

&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:88
&gt; +#if ENABLE(INPUT_TYPE_COLOR)
&gt; +#include &quot;ColorChooserClient.h&quot;
&gt; +#endif

ColorChooserClient.h already has the #if ENABLE(INPUT_TYPE_COLOR) so we don&apos;t need to add the #if here too.

&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h:125
&gt; +        virtual PassOwnPtr&lt;ColorChooser&gt; createColorChooser(ColorChooserClient*, const Color&amp; initialColor);

You can omit the initialColor parameter name here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:28
&gt; +#include &quot;config.h&quot;
&gt; +
&gt; +#include &quot;WebKitColorChooserRequest.h&quot;

Remove that empty line.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:31
&gt; +#include &lt;WebCore/Color.h&gt;

This is already included in WebKitColorChooserRequestPrivate.h

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:145
&gt; + * Returns: the current color of request. 

Now that it returns a pointer you should add a introspection annotation to indicate that the returned pointer is owned by the request. 

Returns: (transfer none): 

I wonder if it would be better to return the color as an out parameter, though.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:151
&gt; +    g_return_val_if_fail(WEBKIT_IS_COLOR_CHOOSER_REQUEST(request), NULL);

Use 0 instead of NULL here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:27
&gt; +#include &quot;WebColorPickerResultListenerProxy.h&quot;

This is already included by WebKitColorChooserRequestPrivate.h

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:459
&gt; +    if (webView-&gt;priv-&gt;colorChooserRequest)
&gt; +        webView-&gt;priv-&gt;colorChooserRequest = 0;

You don&apos;t need to check, GRefPtr already checks the internal pointer and it&apos;s safe to set 0 multiple times.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:483
&gt; +    GtkWidget* dialog =  gtk_color_chooser_dialog_new(_(&quot;Select Color&quot;), toplevel ? GTK_WINDOW(toplevel) : 0);

Extra space after the =

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1296
&gt; +      *

Since: 2.2

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1313
&gt; +      * Emitted when color picker must be closed. This happens for example if the
&gt; +      * page triggering the request unloads before the request is completed.

Isn&apos;t this also called when a color has been chosen?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1316
&gt; +      * Returns: %TRUE to stop other handlers from being invoked for the event.
&gt; +      *   %FALSE to propagate the event further.

This signals returns G_TYPE_NONE now, remove the Returns: tag.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1317
&gt; +      *

Since: 2.2

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1768
&gt; +    gboolean returnValue;
&gt; +    g_signal_emit(webView, signals[CLOSE_COLOR_CHOOSER], 0, &amp;returnValue);

This signal is not true handled.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:821
&gt; +    static gboolean closeColorChooserCallback(WebKitWebView*, ColorChooserTest* test)

This should be void

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:836
&gt; +        hadClosedSignal = TRUE;

signal name is close not closed, maybe hadCloseSignal sounds a bit better. Maybe m_colorChooserClosed?

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:853
&gt; +    gboolean hadClosedSignal;

Use bool instead of gboolean, and m_ prefix for class memebers.

bool m_hadClosedSignal;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899632</commentid>
    <comment_count>42</comment_count>
      <attachid>204458</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-06-12 11:07:09 -0700</bug_when>
    <thetext>Created attachment 204458
updated patch to address reviewer comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899835</commentid>
    <comment_count>43</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-06-12 15:51:44 -0700</bug_when>
    <thetext>(In reply to comment #40)

&gt; &gt; Right now, the ui client callbacks (showColorPicker and hideColorPicker) do not allow being notified when color is changed from JavaScript. Should I add such an api ?
&gt; 
&gt; Yes, file a new bug report to implement that in the C API.

I opened bug #117565 about it.
In case input value is changed from javascript, should we call gtk_color_chooser_set_rgba on the dialog ?
Also, should we change the request current color ? (I suppose we shouldn&apos;t, but I&apos;m not sure)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907529</commentid>
    <comment_count>44</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-07-10 23:38:46 -0700</bug_when>
    <thetext>Gustavo, Martin, could you review this, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907980</commentid>
    <comment_count>45</comment_count>
      <attachid>204458</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-07-12 09:13:41 -0700</bug_when>
    <thetext>Comment on attachment 204458
updated patch to address reviewer comments

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

Looks good to me. :)

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:81
&gt; +static void webkitColorChooserRequestGetProperty(GObject* object, guint propId, GValue* value, GParamSpec* paramSpec)

Tiny nit: propId -&gt; propertyId.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1287
&gt; +      * This signal is emitted when the user interacts with a &amp;lt;input
&gt; +      * type=&apos;color&apos; /&amp;gt; HTML element, requesting from WebKit to show
&gt; +      * a dialog to select a color. To let the application know the details of
&gt; +      * the color chooser, as well as to allow the client application to either
&gt; +      * cancel the request or perform an actual color selection, the signal will
&gt; +      * pass an instance of the #WebKitColorChooserRequest in the @request
&gt; +      * argument.

It seems possible to handle this request asynchronously by increasing the reference count of the request. It might be a good idea to mention that explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908023</commentid>
    <comment_count>46</comment_count>
      <attachid>206558</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-07-12 11:37:48 -0700</bug_when>
    <thetext>Created attachment 206558
patch to adress martin&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908060</commentid>
    <comment_count>47</comment_count>
      <attachid>206569</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-07-12 13:42:05 -0700</bug_when>
    <thetext>Created attachment 206569
oups. This patch actually applies on trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908321</commentid>
    <comment_count>48</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-07-15 00:55:17 -0700</bug_when>
    <thetext>Anders, Sam, could you take a look at the cross platform bits in this patch, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919002</commentid>
    <comment_count>49</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-08-20 03:48:18 -0700</bug_when>
    <thetext>Our API freeze is too close (it&apos;s actually today but I&apos;m going to delay it one week), I would like to land patches adding new API during this week. Arnaud, I think the internal C API classes have been renamed/refactored recently, so the patch might need to be rebased (sorry). WebKit2 owners, please, it would be great if you could review the cross-platform changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031627</commentid>
    <comment_count>50</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2014-08-27 03:22:17 -0700</bug_when>
    <thetext>I have discovered via bug 136257 that the GTK port still don&apos;t supports &lt;input type=color&gt;.

A year has passed since the last update on the bug. The patch (as expected) not longer applies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064480</commentid>
    <comment_count>51</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2015-01-27 04:13:24 -0800</bug_when>
    <thetext>(In reply to comment #47)
&gt; A year has passed since the last update on the bug. The patch (as expected)
&gt; not longer applies.

Arnaud, do you plan on updating the patch for current trunk?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064559</commentid>
    <comment_count>52</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2015-01-27 10:39:09 -0800</bug_when>
    <thetext>I won&apos;t have time for that in the near future, sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067858</commentid>
    <comment_count>53</comment_count>
      <attachid>246277</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-02-09 10:48:24 -0800</bug_when>
    <thetext>Created attachment 246277
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068043</commentid>
    <comment_count>54</comment_count>
      <attachid>246277</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2015-02-10 06:34:29 -0800</bug_when>
    <thetext>Comment on attachment 246277
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:143
&gt; +     * color input element is dettached from the page.

Dettached as in removed from the DOM?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:655
&gt; +    webkitWebViewBaseSetColorPickerFactoryFunction(webViewBase, [](WebPageProxy&amp; page, const Color&amp; color, const IntRect&amp; rect) {
&gt; +        return WebKitColorChooser::create(page, color, rect);
&gt; +    });

The API looks good to me, I just couldn&apos;t grasp the goal of allowing to override the factory function and in what cases it would not be overriden, leading to the default ColorPickerGtk to be created. Why not use WebKitColorChooser?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068047</commentid>
    <comment_count>55</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-02-10 06:55:40 -0800</bug_when>
    <thetext>(In reply to comment #54)
&gt; Comment on attachment 246277 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=246277&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:143
&gt; &gt; +     * color input element is dettached from the page.
&gt; 
&gt; Dettached as in removed from the DOM?

Yes.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:655
&gt; &gt; +    webkitWebViewBaseSetColorPickerFactoryFunction(webViewBase, [](WebPageProxy&amp; page, const Color&amp; color, const IntRect&amp; rect) {
&gt; &gt; +        return WebKitColorChooser::create(page, color, rect);
&gt; &gt; +    });
&gt; 
&gt; The API looks good to me, I just couldn&apos;t grasp the goal of allowing to
&gt; override the factory function and in what cases it would not be overriden,
&gt; leading to the default ColorPickerGtk to be created. Why not use
&gt; WebKitColorChooser?

When using the C API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068075</commentid>
    <comment_count>56</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-02-10 09:09:44 -0800</bug_when>
    <thetext>(In reply to comment #55)
&gt; (In reply to comment #54)
&gt; &gt; Comment on attachment 246277 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=246277&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:143
&gt; &gt; &gt; +     * color input element is dettached from the page.
&gt; &gt; 
&gt; &gt; Dettached as in removed from the DOM?
&gt; 
&gt; Yes.
&gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:655
&gt; &gt; &gt; +    webkitWebViewBaseSetColorPickerFactoryFunction(webViewBase, [](WebPageProxy&amp; page, const Color&amp; color, const IntRect&amp; rect) {
&gt; &gt; &gt; +        return WebKitColorChooser::create(page, color, rect);
&gt; &gt; &gt; +    });
&gt; &gt; 
&gt; &gt; The API looks good to me, I just couldn&apos;t grasp the goal of allowing to
&gt; &gt; override the factory function and in what cases it would not be overriden,
&gt; &gt; leading to the default ColorPickerGtk to be created. Why not use
&gt; &gt; WebKitColorChooser?
&gt; 
&gt; When using the C API.

The problem is always the same, that WebKitWebViewBase (which is the only thing the C API knows about) knows nothing about the WebKitWebView and the hook between WebKit2 core and the API is PageClientImpl::createColorPicker(). PageClientImpl was not inside API dir initially, and I think that&apos;s why it only knew about WebKitWebViewBase, but there&apos;s currently no reason why it can&apos;t know about WebKitWebView as well. So, we could probably simply this case (and the download request one), by checking in PageClientImpl whether m_webView is a WebKitWebView or not (then it can only be a WebKitWebViewBase). I can do this cleanup and simplify the download request case in a follow up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068308</commentid>
    <comment_count>57</comment_count>
      <attachid>246382</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-02-11 02:07:32 -0800</bug_when>
    <thetext>Created attachment 246382
Updated patch

Rebased, and updated to remove the factory function trick.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068314</commentid>
    <comment_count>58</comment_count>
      <attachid>246382</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2015-02-11 03:27:02 -0800</bug_when>
    <thetext>Comment on attachment 246382
Updated patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:143
&gt; +     * color input element is dettached from the page.

Ah, I would prefer this changed to removed from the DOM for clarity if you&apos;re not opposed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068317</commentid>
    <comment_count>59</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-02-11 03:40:06 -0800</bug_when>
    <thetext>(In reply to comment #58)
&gt; Comment on attachment 246382 [details]
&gt; Updated patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=246382&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitColorChooserRequest.cpp:143
&gt; &gt; +     * color input element is dettached from the page.
&gt; 
&gt; Ah, I would prefer this changed to removed from the DOM for clarity if
&gt; you&apos;re not opposed.

Sure! I&apos;ll change it before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068577</commentid>
    <comment_count>60</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-02-12 00:50:16 -0800</bug_when>
    <thetext>Committed r179984: &lt;http://trac.webkit.org/changeset/179984&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179382</attachid>
            <date>2012-12-13 17:14:13 -0800</date>
            <delta_ts>2012-12-14 10:56:55 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>98935.patch</filename>
            <type>text/plain</type>
            <size>46412</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">Y29tbWl0IGQyNWQyOTg0NDAyNWVkOWY0Yjk3ZTcxZWM4Y2Y0OGNmYWQ4NDkzZjMKQXV0aG9yOiBB
cm5hdWQgUmVuZXZpZXIgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KRGF0ZTogICBUaHUg
RGVjIDYgMTY6MDI6MDMgMjAxMiAtMDgwMAoKICAgIGlucHV0IGNvbG9yCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuZmVhdHVyZXMuYW0gYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5mZWF0dXJlcy5hbQppbmRleCBlODVhZDVhLi4zY2JjODFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5mZWF0dXJlcy5hbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5mZWF0dXJlcy5hbQpAQCAtNDAsNyArNDAsNyBAQCBmZWF0dXJlX2Rl
ZmluZXNfZGVmYXVsdHMgKz0gXAogCUVOQUJMRV9JRlJBTUVfU0VBTUxFU1M9MSBcCiAJRU5BQkxF
X0lOREVYRURfREFUQUJBU0U9MCBcCiAJRU5BQkxFX0lOUFVUX1NQRUVDSD0wIFwKLQlFTkFCTEVf
SU5QVVRfVFlQRV9DT0xPUj0wIFwKKwlFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUj0xIFwKIAlFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFPTAgXAogCUVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FPTAgXAog
CUVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUw9MCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxl
LmFtCmluZGV4IGJhMDk3ZDAuLjAxMDliMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBA
IC0xOTcsNiArMTk3LDggQEAgd2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBcCisJU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29sb3JDaG9vc2VyR3RrLmNwcCBcCisJU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29sb3JDaG9vc2VyR3RrLmggXAogCVNvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmNwcCBcCiAJU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuaCBcCiAJU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRGV2aWNlTW90aW9uQ2xpZW50R3RrLmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3Rr
LmNwcAppbmRleCA4ZWVlMGE4Li5jNjIzZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKQEAgLTc3LDYgKzc3LDExIEBA
CiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQorI2luY2x1ZGUgIkNvbG9yQ2hvb3NlckNsaWVudC5oIgorI2luY2x1ZGUg
IkNvbG9yQ2hvb3Nlckd0ay5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgzNiw2ICs4NDEsNTAgQEAgdm9pZCBDaHJvbWVDbGll
bnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBp
bnQ2NF90KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKK3N0YXRpYyB2b2lkIGNvbG9yQ2hvb3NlckRpYWxvZ1Jlc3BvbnNlQ2FsbGJhY2so
R3RrRGlhbG9nKiBkaWFsb2csIGdpbnQgcmVzcG9uc2VJRCwgQ29sb3JDaG9vc2VyQ2xpZW50KiBj
bGllbnQpCit7CisgICAgaWYgKHJlc3BvbnNlSUQgPT0gR1RLX1JFU1BPTlNFX09LKSB7CisjaWYg
R1RLX0NIRUNLX1ZFUlNJT04oMywgNCwgMCkKKyAgICAgICAgR2RrUkdCQSBjb2xvcjsKKyAgICAg
ICAgZ3RrX2NvbG9yX2Nob29zZXJfZ2V0X3JnYmEoR1RLX0NPTE9SX0NIT09TRVIoZGlhbG9nKSwg
JmNvbG9yKTsKKyNlbHNlCisgICAgICAgIEdka0NvbG9yIGNvbG9yOworICAgICAgICBHdGtXaWRn
ZXQqIGNvbG9yU2VsZWN0aW9uID0gZ3RrX2NvbG9yX3NlbGVjdGlvbl9kaWFsb2dfZ2V0X2NvbG9y
X3NlbGVjdGlvbihHVEtfQ09MT1JfU0VMRUNUSU9OX0RJQUxPRyhkaWFsb2cpKTsKKyAgICAgICAg
Z3RrX2NvbG9yX3NlbGVjdGlvbl9nZXRfY3VycmVudF9jb2xvcihHVEtfQ09MT1JfU0VMRUNUSU9O
KGNvbG9yU2VsZWN0aW9uKSwgJmNvbG9yKTsKKyNlbmRpZgorICAgICAgICBjbGllbnQtPmRpZENo
b29zZUNvbG9yKGNvbG9yKTsKKyAgICB9CisgICAgY2xpZW50LT5kaWRFbmRDaG9vc2VyKCk7Cit9
CisKK1Bhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hv
b3NlcihDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xv
cikKK3sKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA0LCAwKQorICAgIEd0a1dpZGdldCogcGFy
ZW50ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKyAg
ICBpZiAoIWd0a193aWRnZXRfaXNfdG9wbGV2ZWwocGFyZW50KSB8fCAhR1RLX0lTX1dJTkRPVyhw
YXJlbnQpKQorICAgICAgICBwYXJlbnQgPSAwOworICAgIEd0a1dpZGdldCogZGlhbG9nID0gIGd0
a19jb2xvcl9jaG9vc2VyX2RpYWxvZ19uZXcoXygiU2VsZWN0IENvbG9yIiksIEdUS19XSU5ET1co
cGFyZW50KSk7CisKKyAgICBndGtfY29sb3JfY2hvb3Nlcl9zZXRfdXNlX2FscGhhKEdUS19DT0xP
Ul9DSE9PU0VSKGRpYWxvZyksIEZBTFNFKTsKKyAgICBHZGtSR0JBIHJnYmEgPSBzdGF0aWNfY2Fz
dDxHZGtSR0JBPihpbml0aWFsQ29sb3IpOworICAgIGd0a19jb2xvcl9jaG9vc2VyX3NldF9yZ2Jh
KEdUS19DT0xPUl9DSE9PU0VSKGRpYWxvZyksICZyZ2JhKTsKKyNlbHNlCisgICAgR3RrV2lkZ2V0
KiBkaWFsb2cgPSBndGtfY29sb3Jfc2VsZWN0aW9uX2RpYWxvZ19uZXcoXygiU2VsZWN0IENvbG9y
IikpOworICAgIEd0a1dpZGdldCogY29sb3JTZWxlY3Rpb24gPSBndGtfY29sb3Jfc2VsZWN0aW9u
X2RpYWxvZ19nZXRfY29sb3Jfc2VsZWN0aW9uKEdUS19DT0xPUl9TRUxFQ1RJT05fRElBTE9HKGRp
YWxvZykpOworICAgIGd0a19jb2xvcl9zZWxlY3Rpb25fc2V0X2hhc19wYWxldHRlKEdUS19DT0xP
Ul9TRUxFQ1RJT04oY29sb3JTZWxlY3Rpb24pLCBUUlVFKTsKKworICAgIEdka0NvbG9yIHJnYiA9
IHswLCBpbml0aWFsQ29sb3IucmVkKCkgPDwgOCwgIGluaXRpYWxDb2xvci5ncmVlbigpIDw8IDgs
IGluaXRpYWxDb2xvci5ibHVlKCkgPDwgOCB9OworICAgIGd0a19jb2xvcl9zZWxlY3Rpb25fc2V0
X2N1cnJlbnRfY29sb3IoR1RLX0NPTE9SX1NFTEVDVElPTihjb2xvclNlbGVjdGlvbiksICZyZ2Ip
OworI2VuZGlmCisKKyAgICBnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgInJlc3BvbnNlIiwgR19D
QUxMQkFDSyhjb2xvckNob29zZXJEaWFsb2dSZXNwb25zZUNhbGxiYWNrKSwgY2xpZW50KTsKKyAg
ICBndGtfd2lkZ2V0X3Nob3coZGlhbG9nKTsKKworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ29s
b3JDaG9vc2VyR3RrKGRpYWxvZywgY2xpZW50KSk7Cit9CisjZW5kaWYKKwogdm9pZCBDaHJvbWVD
bGllbnQ6OnJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IHBycEZp
bGVDaG9vc2VyKQogewogICAgIEdSZWZQdHI8V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0PiByZXF1
ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9jcmVhdGUocHJwRmls
ZUNob29zZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmgKaW5kZXggOWYyMTAxNy4uNzFjNmVjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKQEAgLTMwLDYgKzMw
LDkgQEAKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIK
ICNpbmNsdWRlICJUaW1lci5oIgorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorI2luY2x1
ZGUgIkNvbG9yQ2hvb3Nlci5oIgorI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsKQEAgLTEyMiw2ICsx
MjUsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAjZW5kaWYKICAgICAgICAgdmlydHVhbCB2b2lk
IHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3Jp
Z2luKiwgaW50NjRfdCB0b3RhbFNwYWNlTmVlZGVkKTsKKworI2lmIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQorICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBjcmVhdGVD
b2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50KiwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xv
cik7CisjZW5kaWYKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwg
UGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgRmlsZUljb25Mb2FkZXIqKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29sb3JDaG9vc2Vy
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbG9yQ2hvb3Nlckd0
ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFlM2Q3MgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbG9yQ2hvb3Nl
ckd0ay5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ft
c3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6
CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAq
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisjaW5jbHVkZSAiQ29sb3JDaG9vc2VyR3Rr
LmgiCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkNvbG9yQ2hvb3NlckNsaWVudC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NvbG9yQ2hvb3Nlckd0azo6Q29sb3JDaG9vc2Vy
R3RrKEd0a1dpZGdldCogY29sb3JDaG9vc2VyLCBDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCkK
KyAgICA6IG1fY29sb3JDaG9vc2VyKGNvbG9yQ2hvb3NlciksIG1fY2xpZW50KGNsaWVudCkKK3sK
KyAgICBBU1NFUlQobV9jb2xvckNob29zZXIpOworICAgIEFTU0VSVChtX2NsaWVudCk7Cit9CisK
K0NvbG9yQ2hvb3Nlckd0azo6fkNvbG9yQ2hvb3Nlckd0aygpCit7CisgICAgZ3RrX3dpZGdldF9k
ZXN0cm95KG1fY29sb3JDaG9vc2VyLmdldCgpKTsKK30KKwordm9pZCBDb2xvckNob29zZXJHdGs6
OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworI2lmIEdUS19DSEVDS19W
RVJTSU9OKDMsIDQsIDApCisgICAgR2RrUkdCQSByZ2JhID0gc3RhdGljX2Nhc3Q8R2RrUkdCQT4o
Y29sb3IpOworICAgIGd0a19jb2xvcl9jaG9vc2VyX3NldF9yZ2JhKEdUS19DT0xPUl9DSE9PU0VS
KG1fY29sb3JDaG9vc2VyLmdldCgpKSwgJnJnYmEpOworI2Vsc2UKKyAgICBHdGtXaWRnZXQqIGNv
bG9yU2VsZWN0aW9uID0gZ3RrX2NvbG9yX3NlbGVjdGlvbl9kaWFsb2dfZ2V0X2NvbG9yX3NlbGVj
dGlvbihHVEtfQ09MT1JfU0VMRUNUSU9OX0RJQUxPRyhtX2NvbG9yQ2hvb3Nlci5nZXQoKSkpOwor
ICAgIEdka0NvbG9yIHJnYiA9IHswLCBjb2xvci5yZWQoKSA8PCA4LCAgY29sb3IuZ3JlZW4oKSA8
PCA4LCBjb2xvci5ibHVlKCkgPDwgOCB9OworICAgIGd0a19jb2xvcl9zZWxlY3Rpb25fc2V0X2N1
cnJlbnRfY29sb3IoR1RLX0NPTE9SX1NFTEVDVElPTihjb2xvclNlbGVjdGlvbiksICZyZ2IpOwor
I2VuZGlmCit9CisKK3ZvaWQgQ29sb3JDaG9vc2VyR3RrOjplbmRDaG9vc2VyKCkKK3sKKyAgICBt
X2NsaWVudC0+ZGlkRW5kQ2hvb3NlcigpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0NvbG9yQ2hvb3Nlckd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q29sb3JDaG9vc2VyR3RrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWYw
ZDdhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0NvbG9yQ2hvb3Nlckd0ay5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMi
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENvbG9y
Q2hvb3Nlckd0a19oCisjZGVmaW5lIENvbG9yQ2hvb3Nlckd0a19oCisKKyNpbmNsdWRlICJDb2xv
ckNob29zZXIuaCIKKworI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29sb3JDaG9vc2Vy
Q2xpZW50OworY2xhc3MgQ29sb3I7CisKK2NsYXNzIENvbG9yQ2hvb3Nlckd0ayA6IHB1YmxpYyBD
b2xvckNob29zZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IENvbG9yQ2hvb3Nlckd0ayhHdGtX
aWRnZXQqLCBDb2xvckNob29zZXJDbGllbnQqKTsKKyAgICB+Q29sb3JDaG9vc2VyR3RrKCk7CisK
KyAgICAvLyBDb2xvckNob29zZXIgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIHNl
dFNlbGVjdGVkQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kQ2hvb3Nl
cigpOworCitwcml2YXRlOgorICAgIEdSZWZQdHI8R3RrV2lkZ2V0PiBtX2NvbG9yQ2hvb3NlcjsK
KyAgICBDb2xvckNob29zZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworfQorCisjZW5kaWYgLy8g
Q29sb3JDaG9vc2VyR3RrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
Lmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDc4YzEw
ZDYuLmFhMDRhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtOTYsNiArOTYs
NyBAQCB3ZWJraXQyX2hfYXBpICs9IFwKIHdlYmtpdDJndGtfaF9hcGkgKz0gXAogCSQoV2ViS2l0
MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmggXAogCSQoV2ViS2l0
MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oIFwKKwkkKFdl
YktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaCBcCiAJ
JChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oIFwKIAkkKFdl
YktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oIFwKIAkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oIFwKQEAg
LTYzNyw2ICs2MzgsOSBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdFBy
aXZhdGUuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCBcCiAJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudVByaXZhdGUuaCBcCkBAIC03
ODYsNiArNzkwLDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAgXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmNwcCBcCisJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggOTJi
MzE4OC4uNWY0Mjg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtNDQsNiArNDQsMTAgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94eUd0
ay5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTIyOSwxMCArMjMzLDkgQEAgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5
PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHIKIH0KIAog
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQ
cm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94
eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCitQYXNz
UmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JD
aG9vc2VyUHJveHkoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5p
dGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBXZWJDb2xvckNob29z
ZXJQcm94eUd0azo6Y3JlYXRlKHBhZ2UsIG1fdmlld1dpZGdldCwgaW5pdGlhbENvbG9yLCBlbGVt
ZW50UmVjdCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTVmNWIyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dC5jcHAKQEAgLTAsMCArMSwxOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1
bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Ogor
ICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
bmNsdWRlICJXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJDb2xvci5o
IgorI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgiCisjaW5jbHVk
ZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworLyoqCisg
KiBTRUNUSU9OOiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0CisgKiBAU2hvcnRfZGVzY3JpcHRp
b246IEEgcmVxdWVzdCB0byBvcGVuIGEgY29sb3IgY2hvb3NlcgorICogQFRpdGxlOiBXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0CisgKiBAU2VlX2Fsc286ICNXZWJLaXRXZWJWaWV3CisgKgorICog
V2hlbmV2ZXIgdGhlIHVzZXIgaW50ZXJhY3RzIHdpdGggYW4gJmx0O2lucHV0IHR5cGU9J2NvbG9y
JyAvJmd0OworICogSFRNTCBlbGVtZW50LCBXZWJLaXQgd2lsbCBuZWVkIHRvIHNob3cgYSBkaWFs
b2cgdG8gY2hvb3NlIGEgY29sb3IuIEZvciB0aGF0CisgKiB0byBoYXBwZW4gaW4gYSBnZW5lcmFs
IHdheSwgaW5zdGVhZCBvZiBqdXN0IG9wZW5pbmcgYSAjR3RrQ29sb3JDaG9vc2VyCisgKiAod2hp
Y2ggbWlnaHQgYmUgbm90IGRlc2lyYWJsZSBpbiBzb21lIGNhc2VzLCB3aGljaCBjb3VsZCBwcmVm
ZXIgdG8gdXNlIHRoZWlyCisgKiBvd24gY29sb3IgY2hvb3NlciBkaWFsb2cpLCBXZWJLaXQgd2ls
bCBmaXJlIHRoZQorICogI1dlYktpdFdlYlZpZXc6OnJ1bi1jb2xvci1jaG9vc2VyIHNpZ25hbCB3
aXRoIGEgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAqIG9iamVjdCwgd2hpY2ggd2lsbCBh
bGxvdyB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIHRvIHNwZWNpZnkgdGhlIGNvbG9yIHRvIGJlCisg
KiBzZWxlY3RlZCwgdG8gaW5zcGVjdCB0aGUgZGV0YWlscyBvZiB0aGUgcmVxdWVzdCAoZS5nLiB0
byBnZXQgaW5pdGlhbCBjb2xvcikKKyAqIGFuZCB0byBjYW5jZWwgdGhlIHJlcXVlc3QsIGluIGNh
c2Ugbm90aGluZyB3YXMgc2VsZWN0ZWQuCisgKgorICogSW4gY2FzZSB0aGUgY2xpZW50IGFwcGxp
Y2F0aW9uIGRvZXMgbm90IHdpc2ggdG8gaGFuZGxlIHRoaXMgc2lnbmFsLAorICogV2ViS2l0IHdp
bGwgcHJvdmlkZSBhIGRlZmF1bHQgaGFuZGxlciB3aGljaCB3aWxsIGFzeW5jaHJvbm91c2x5IHJ1
bgorICogYSByZWd1bGFyICNHdGtDb2xvckNob29zZXIgZm9yIHRoZSB1c2VyIHRvIGludGVyYWN0
IHdpdGguCisgKi8KKworc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZSB7
CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgV2ViQ29sb3JDaG9vc2VyUHJveHk6
OkNsaWVudCogY2xpZW50OworI2VuZGlmCisgICAgQ29sb3IgY29sb3I7CisgICAgYm9vbCBoYW5k
bGVkUmVxdWVzdDsKK307CisKK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0LCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNUKQorCitl
bnVtIHsKKyAgICBFTkRfQ0hPT1NFUiwKKyAgICBDSEFOR0VfQ09MT1IsCisKKyAgICBMQVNUX1NJ
R05BTAorfTsKKworc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9Owor
CitzdGF0aWMgdm9pZCB3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0RGlzcG9zZShHT2JqZWN0KiBv
YmplY3QpCit7CisgICAgcHJpbnRmKCIlc1xuIiwgX19mdW5jX18pOworICAgIFdlYktpdENvbG9y
Q2hvb3NlclJlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9i
amVjdCk7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIHJlcXVlc3QgaXMgYWx3YXlzIGhhbmRsZWQg
YmVmb3JlIGZpbmFsaXppbmcuCisgICAgaWYgKCFyZXF1ZXN0LT5wcml2LT5oYW5kbGVkUmVxdWVz
dCkKKyAgICAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwocmVxdWVzdCk7
CisKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3BhcmVu
dF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2NvbG9y
X2Nob29zZXJfcmVxdWVzdF9jbGFzc19pbml0KFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFz
cyogcmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09C
SkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworICAgIG9iamVjdENsYXNzLT5kaXNwb3NlID0gd2Vi
a2l0Q29sb3JDaG9vc2VyUmVxdWVzdERpc3Bvc2U7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0OmVuZC1jaG9vc2VyOgorICAgICAqIEByZXF1ZXN0OiB0aGUgI1dl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisg
ICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gcmVxdWVzdCBtdXN0IGJlIHRlcm1pbmF0ZWQuIFRo
aXMgaGFwcGVucyBmb3IgZXhhbXBsZSBpZiB0aGUKKyAgICAgKiBwYWdlIHRyaWdnZXJpbmcgdGhl
IHJlcXVlc3QgdW5sb2FkcyBiZWZvcmUgdGhlIHJlcXVlc3QgaXMgY29tcGxldGVkLgorICAgICAq
LworICAgIHNpZ25hbHNbRU5EX0NIT09TRVJdID0KKyAgICAgICAgZ19zaWduYWxfbmV3KCJlbmQt
Y2hvb3NlciIsCisgICAgICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKG9iamVjdENsYXNz
KSwKKyAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAg
IDAsIDAsIDAsCisgICAgICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19WT0lE
LAorICAgICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsKKworICAgIC8qKgorICAgICAqIFdl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3Q6Y2hhbmdlLWNvbG9yOgorICAgICAqIEByZXF1ZXN0OiB0
aGUgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0
dGVkCisgICAgICogQGNvbG9yOiB0aGUgbmV3IGNvbG9yCisgICAgICoKKyAgICAgKiBFbWl0dGVk
IHdoZW4gZGVmYXVsdCB2YWx1ZSBvZiByZXF1ZXN0IGlzIGNoYW5nZWQuCisgICAgICovCisgICAg
c2lnbmFsc1tDSEFOR0VfQ09MT1JdID0KKyAgICAgICAgZ19zaWduYWxfbmV3KCJjaGFuZ2UtY29s
b3IiLAorICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhvYmplY3RDbGFzcyksCisg
ICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgICAgICAwLCAw
LCAwLAorICAgICAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fU1RSSU5HLAor
ICAgICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAxLAorICAgICAgICAgICAgICAgIEdfVFlQRV9T
VFJJTkcpOworfQorCisvKioKKyAqIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfY2FuY2Vs
OgorICogQHJlcXVlc3Q6IGEgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAqCisgKiBBc2sg
V2ViS2l0IHRvIGNhbmNlbCB0aGUgcmVxdWVzdC4gSXQncyBpbXBvcnRhbnQgdG8gZG8gdGhpcyBp
biBjYXNlCisgKiBubyBzZWxlY3Rpb24gaGFzIGJlZW4gbWFkZSBpbiB0aGUgY2xpZW50LCBvdGhl
cndpc2UgdGhlIHJlcXVlc3QKKyAqIHdvbid0IGJlIHByb3Blcmx5IGNvbXBsZXRlZCBhbmQgdGhl
IGJyb3dzZXIgd2lsbCBrZWVwIHRoZSByZXF1ZXN0CisgKiBwZW5kaW5nIGZvcmV2ZXIsIHdoaWNo
IG1pZ2h0IGNhdXNlIHRoZSBicm93c2VyIHRvIGhhbmcuCisgKi8KK3ZvaWQgd2Via2l0X2NvbG9y
X2Nob29zZXJfcmVxdWVzdF9jYW5jZWwoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVz
dCkKK3sKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICByZXF1ZXN0LT5wcml2LT5j
bGllbnQtPmRpZEVuZENvbG9yQ2hvb3NlcigpOworICAgIHJlcXVlc3QtPnByaXYtPmhhbmRsZWRS
ZXF1ZXN0ID0gVFJVRTsKKyNlbmRpZgorfQorCisvKioKKyAqIHdlYmtpdF9jb2xvcl9jaG9vc2Vy
X3JlcXVlc3Rfc2VsZWN0X2NvbG9yOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdEZpbGVDaG9vc2Vy
UmVxdWVzdAorICogQGNvbG9yOiAoYXJyYXkgemVyby10ZXJtaW5hdGVkPTEpICh0cmFuc2ZlciBu
b25lKTogYQorICoKKyAqIEFzayBXZWJLaXQgdG8gc2VsZWN0IGNvbG9yIGFuZCBjb21wbGV0ZSB0
aGUgcmVxdWVzdC4KKyAqLwordm9pZCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVj
dF9jb2xvcihXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBnY2hhciog
Y29sb3IpCit7CisgICAgcmVxdWVzdC0+cHJpdi0+Y29sb3IgPSBDb2xvcihjb2xvcik7CisjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgcmVxdWVzdC0+cHJpdi0+Y2xpZW50LT5kaWRD
aG9vc2VDb2xvcihyZXF1ZXN0LT5wcml2LT5jb2xvcik7CisgICAgcmVxdWVzdC0+cHJpdi0+Y2xp
ZW50LT5kaWRFbmRDb2xvckNob29zZXIoKTsKKyNlbmRpZgorICAgIHJlcXVlc3QtPnByaXYtPmhh
bmRsZWRSZXF1ZXN0ID0gVFJVRTsKK30KKworLyoqCisgKiB3ZWJraXRfY29sb3JfY2hvb3Nlcl9y
ZXF1ZXN0X2dldF9jdXJyZW50X2NvbG9yOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3QKKyAqCisgKiBSZXR1cm5zOiB0aGUgY3VycmVudCBjb2xvciBvZiByZXF1ZXN0
LiBXaGlsZSBubyBjb2xvciBoYXMgYmVlbiBzZWxlY3RlZCwgaXQKKyAqIGlzIHRoZSBpbml0aWFs
IHZhbHVlIGRlZmluZWQgYnkgV2ViS2l0LiBXaGVuIGEgY29sb3IgaGFzIGJlZW4gc2VsZWN0ZWQs
IHRoaXMKKyAqIGJlY29tZXMgdGhlIHNlbGVjdGVkIHZhbHVlLgorICovCitjb25zdCBnY2hhciog
d2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcihXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT5j
b2xvci5zZXJpYWxpemVkKCkuYXNjaWkoKS5kYXRhKCk7Cit9CisKKyNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKK1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHdlYmtpdENvbG9yQ2hvb3Nl
clJlcXVlc3RDcmVhdGUoY29uc3QgQ29sb3IgaW5pdGlhbENvbG9yLCBXZWJDb2xvckNob29zZXJQ
cm94eTo6Q2xpZW50KiBjbGllbnQpCit7CisgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCog
cmVxdWVzdCA9IFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJ
VF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCwgTlVMTCkpOworICAgIHJlcXVlc3QtPnByaXYt
PmNsaWVudCA9IGNsaWVudDsKKyAgICByZXF1ZXN0LT5wcml2LT5jb2xvciA9IGluaXRpYWxDb2xv
cjsKKyAgICByZXF1ZXN0LT5wcml2LT5oYW5kbGVkUmVxdWVzdCA9IEZBTFNFOworICAgIHJldHVy
biByZXF1ZXN0OworfQorCit2b2lkIHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RFbmQoV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICB3ZWJraXRfY29sb3JfY2hv
b3Nlcl9yZXF1ZXN0X2NhbmNlbChyZXF1ZXN0KTsKKyAgICBnX3NpZ25hbF9lbWl0KHJlcXVlc3Qs
IHNpZ25hbHNbRU5EX0NIT09TRVJdLCAwLCBOVUxMKTsKK30KKwordm9pZCB3ZWJraXRXZWJDb2xv
ckNob29zZXJSZXF1ZXN0U2V0Q29sb3IoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVz
dCwgY29uc3QgQ29sb3IgY29sb3IpCit7CisgICAgcmVxdWVzdC0+cHJpdi0+Y29sb3IgPSBjb2xv
cjsKKyAgICBnX3NpZ25hbF9lbWl0KHJlcXVlc3QsIHNpZ25hbHNbQ0hBTkdFX0NPTE9SXSwgMCwg
cmVxdWVzdC0+cHJpdi0+Y29sb3Iuc2VyaWFsaXplZCgpLmFzY2lpKCkuZGF0YSgpLCBOVUxMKTsK
K30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmExMjRhYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgKQEAgLTAsMCArMSw3
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICog
ICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmlu
ZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+
IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0X2gKKyNkZWZpbmUgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdF9oCisK
KyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+
CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JF
UVVFU1QgICAgICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlwZSgp
KQorI2RlZmluZSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iaikgICAgICAgICAgICAo
R19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0NPTE9SX0NIT09T
RVJfUkVRVUVTVCwgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCkpCisjZGVmaW5lIFdFQktJVF9D
T0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1Nf
Q0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNULCBXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfQ09MT1JfQ0hPT1NF
Ul9SRVFVRVNUKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiks
IFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9JU19D
T0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQ
RSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKSkKKyNkZWZpbmUg
V0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNU
QU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1Qs
IFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0ICAgICAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Owor
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcyAgIFdlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0UHJpdmF0ZSBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZTsKKworc3Ry
dWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKwor
ICAgIC8qPCBwcml2YXRlID4qLworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRl
ICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3Mgewor
ICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3
ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF90eXBlICAgICAgICAgICAgICAgICAgKHZv
aWQpOworCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3Jl
cXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IgIChXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1
ZXN0KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3Nl
bGVjdF9jb2xvciAgICAgICAoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCwgCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2No
YXIgKiBjb2xvcik7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2NvbG9yX2Nob29zZXJfcmVx
dWVzdF9jYW5jZWwgICAgICAgICAgICAgKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVl
c3QpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
UHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhOWE0YTIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodCBub3RpY2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICog
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdFByaXZhdGVfaAorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRl
ICJXZWJDb2xvckNob29zZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3QuaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisKKyNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKKworV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogd2Via2l0Q29sb3JDaG9v
c2VyUmVxdWVzdENyZWF0ZShjb25zdCBXZWJDb3JlOjpDb2xvciwgV2ViS2l0OjpXZWJDb2xvckNo
b29zZXJQcm94eTo6Q2xpZW50Kik7Cit2b2lkIHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RF
bmQoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCopOwordm9pZCB3ZWJraXRXZWJDb2xvckNob29z
ZXJSZXF1ZXN0U2V0Q29sb3IoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCosIGNvbnN0IFdlYkNv
cmU6OkNvbG9yKTsKKworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisjZW5k
aWYgLy8gV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBmYjBjNWVk
Li41YzBkNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcApAQCAtOTIsNiArOTIsOCBAQCBlbnVtIHsKIAogICAgIFJVTl9GSUxF
X0NIT09TRVIsCiAKKyAgICBSVU5fQ09MT1JfQ0hPT1NFUiwKKwogICAgIENPTlRFWFRfTUVOVSwK
ICAgICBDT05URVhUX01FTlVfRElTTUlTU0VELAogCkBAIC0zOTcsNiArMzk5LDc3IEBAIHN0YXRp
YyB2b2lkIGZpbGVDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFjayhHdGtEaWFsb2cqIGRpYWxv
ZywgZ2ludCByZXNwb25zZUlECiAgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19XSURHRVQoZGlh
bG9nKSk7CiB9CiAKK3N0YXRpYyB2b2lkIHVwZGF0ZUNvbG9yQ2hvb3NlckNvbG9yVmFsdWUoR3Rr
V2lkZ2V0KiBkaWFsb2csIGNvbnN0IGdjaGFyKiBjb2xvcikgCit7CisjaWYgR1RLX0NIRUNLX1ZF
UlNJT04oMywgNCwgMCkKKyAgICBHZGtSR0JBIHJnYjsKKyAgICBnZGtfcmdiYV9wYXJzZSgmcmdi
LCBjb2xvcik7CisgICAgZ3RrX2NvbG9yX2Nob29zZXJfc2V0X3JnYmEoR1RLX0NPTE9SX0NIT09T
RVIoZGlhbG9nKSwgJnJnYik7CisjZWxzZQorICAgIEd0a1dpZGdldCogY29sb3JTZWxlY3Rpb24g
PSBndGtfY29sb3Jfc2VsZWN0aW9uX2RpYWxvZ19nZXRfY29sb3Jfc2VsZWN0aW9uKEdUS19DT0xP
Ul9TRUxFQ1RJT05fRElBTE9HKGRpYWxvZykpOworICAgIGd0a19jb2xvcl9zZWxlY3Rpb25fc2V0
X2hhc19wYWxldHRlKEdUS19DT0xPUl9TRUxFQ1RJT04oY29sb3JTZWxlY3Rpb24pLCBUUlVFKTsK
KyAgICBHZGtDb2xvciByZ2I7CisgICAgZ2RrX2NvbG9yX3BhcnNlKGNvbG9yLCAmcmdiKTsKKyAg
ICBndGtfY29sb3Jfc2VsZWN0aW9uX3NldF9jdXJyZW50X2NvbG9yKEdUS19DT0xPUl9TRUxFQ1RJ
T04oY29sb3JTZWxlY3Rpb24pLCAmcmdiKTsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCBjb2xv
ckNob29zZXJSZXF1ZXN0Q2hhbmdlQ2FsbGJhY2soV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCog
cmVxdWVzdCwgY29uc3QgZ2NoYXIqIGNvbG9yLCBHdGtXaWRnZXQqIGRpYWxvZykKK3sKKyAgICB1
cGRhdGVDb2xvckNob29zZXJDb2xvclZhbHVlKGRpYWxvZywgY29sb3IpOworfQorCitzdGF0aWMg
dm9pZCBjb2xvckNob29zZXJSZXF1ZXN0RW5kQ2FsbGJhY2soV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCogcmVxdWVzdCwgR3RrV2lkZ2V0KiBkaWFsb2cpCit7CisgICAgZ19vYmplY3RfdW5yZWYo
cmVxdWVzdCk7CisgICAgZ3RrX3dpZGdldF9kZXN0cm95KGRpYWxvZyk7Cit9CisKK3N0YXRpYyB2
b2lkIGNvbG9yQ2hvb3NlckRpYWxvZ1Jlc3BvbnNlQ2FsbGJhY2soR3RrV2lkZ2V0KiBkaWFsb2cs
IGdpbnQgcmVzcG9uc2VJRCwgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKK3sK
KyAgICBHUmVmUHRyPFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Q+IGFkb3B0ZWRSZXF1ZXN0ID0g
YWRvcHRHUmVmKHJlcXVlc3QpOworICAgIGlmIChyZXNwb25zZUlEID09IEdUS19SRVNQT05TRV9P
SykgeworICAgICAgICBHT3duUHRyPGNoYXI+IHN0cl92YWx1ZTsKKyNpZiBHVEtfQ0hFQ0tfVkVS
U0lPTigzLCA0LCAwKQorICAgICAgICBHZGtSR0JBIGNvbG9yOworICAgICAgICBndGtfY29sb3Jf
Y2hvb3Nlcl9nZXRfcmdiYShHVEtfQ09MT1JfQ0hPT1NFUihkaWFsb2cpLCAmY29sb3IpOworICAg
ICAgICBzdHJfdmFsdWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiIyUuMlglLjJYJS4yWCIsIChpbnQp
KGNvbG9yLnJlZCAqIDI1NSksIChpbnQpKGNvbG9yLmdyZWVuICogMjU1KSwgKGludCkoY29sb3Iu
Ymx1ZSAqIDI1NSkpKTsKKyNlbHNlCisgICAgICAgIEdka0NvbG9yIGNvbG9yOworICAgICAgICBH
dGtXaWRnZXQqIGNvbG9yU2VsZWN0aW9uID0gZ3RrX2NvbG9yX3NlbGVjdGlvbl9kaWFsb2dfZ2V0
X2NvbG9yX3NlbGVjdGlvbihHVEtfQ09MT1JfU0VMRUNUSU9OX0RJQUxPRyhkaWFsb2cpKTsKKyAg
ICAgICAgZ3RrX2NvbG9yX3NlbGVjdGlvbl9nZXRfY3VycmVudF9jb2xvcihHVEtfQ09MT1JfU0VM
RUNUSU9OKGNvbG9yU2VsZWN0aW9uKSwgJmNvbG9yKTsKKyAgICAgICAgc3RyX3ZhbHVlLnNldChn
X3N0cmR1cF9wcmludGYoIiMlLjJYJS4yWCUuMlgiLCAoaW50KShjb2xvci5yZWQgLyAyNTUpLCAo
aW50KShjb2xvci5ncmVlbiAvIDI1NSksIChpbnQpKGNvbG9yLmJsdWUgLyAyNTUpKSk7CisjZW5k
aWYKKyAgICAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3IoYWRv
cHRlZFJlcXVlc3QuZ2V0KCksIHN0cl92YWx1ZS5nZXQoKSk7CisgICAgfSBlbHNlCisgICAgICAg
IHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsKGFkb3B0ZWRSZXF1ZXN0LmdldCgp
KTsKKworICAgIGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpOworfQorCitzdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0V2ViVmlld1J1bkNvbG9yQ2hvb3NlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBX
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQoreworI2lmIEdUS19DSEVDS19WRVJT
SU9OKDMsIDQsIDApCisgICAgR3RrV2lkZ2V0KiBwYXJlbnQgPSBndGtfd2lkZ2V0X2dldF90b3Bs
ZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICBpZiAoIWd0a193aWRnZXRfaXNfdG9wbGV2
ZWwocGFyZW50KSB8fCAhR1RLX0lTX1dJTkRPVyhwYXJlbnQpKQorICAgICAgICBwYXJlbnQgPSAw
OworICAgIEd0a1dpZGdldCogZGlhbG9nID0gIGd0a19jb2xvcl9jaG9vc2VyX2RpYWxvZ19uZXco
XygiU2VsZWN0IENvbG9yIiksIEdUS19XSU5ET1cocGFyZW50KSk7CisjZWxzZQorICAgIEd0a1dp
ZGdldCogZGlhbG9nID0gZ3RrX2NvbG9yX3NlbGVjdGlvbl9kaWFsb2dfbmV3KF8oIlNlbGVjdCBD
b2xvciIpKTsKKyNlbmRpZgorCisgICAgY29uc3QgZ2NoYXIqIGluaXRpYWxDb2xvciA9IHdlYmtp
dF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IocmVxdWVzdCk7CisgICAg
dXBkYXRlQ29sb3JDaG9vc2VyQ29sb3JWYWx1ZShkaWFsb2csIGluaXRpYWxDb2xvcik7CisKKyAg
ICBnX3NpZ25hbF9jb25uZWN0KHJlcXVlc3QsICJlbmQtY2hvb3NlciIsIEdfQ0FMTEJBQ0soY29s
b3JDaG9vc2VyUmVxdWVzdEVuZENhbGxiYWNrKSwgZGlhbG9nKTsKKyAgICBnX3NpZ25hbF9jb25u
ZWN0KHJlcXVlc3QsICJjaGFuZ2UtY29sb3IiLCBHX0NBTExCQUNLKGNvbG9yQ2hvb3NlclJlcXVl
c3RDaGFuZ2VDYWxsYmFjayksIGRpYWxvZyk7CisgICAgZ19zaWduYWxfY29ubmVjdChkaWFsb2cs
ICJyZXNwb25zZSIsIEdfQ0FMTEJBQ0soY29sb3JDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFj
ayksIHJlcXVlc3QpOworICAgIGd0a193aWRnZXRfc2hvdyhkaWFsb2cpOworICAgIGdfb2JqZWN0
X3JlZihyZXF1ZXN0KTsKKworICAgIHJldHVybiBUUlVFOworfQorCiBzdGF0aWMgZ2Jvb2xlYW4g
d2Via2l0V2ViVmlld1J1bkZpbGVDaG9vc2VyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktp
dEZpbGVDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBHdGtXaWRnZXQqIHRvcGxldmVs
ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3KSk7CkBAIC01NDEs
NiArNjE0LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0
V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgd2ViVmlld0NsYXNzLT5kZWNpZGVfcG9s
aWN5ID0gd2Via2l0V2ViVmlld0RlY2lkZVBvbGljeTsKICAgICB3ZWJWaWV3Q2xhc3MtPnBlcm1p
c3Npb25fcmVxdWVzdCA9IHdlYmtpdFdlYlZpZXdQZXJtaXNzaW9uUmVxdWVzdDsKICAgICB3ZWJW
aWV3Q2xhc3MtPnJ1bl9maWxlX2Nob29zZXIgPSB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXI7
CisgICAgd2ViVmlld0NsYXNzLT5ydW5fY29sb3JfY2hvb3NlciA9IHdlYmtpdFdlYlZpZXdSdW5D
b2xvckNob29zZXI7CiAKICAgICAvKioKICAgICAgKiBXZWJLaXRXZWJWaWV3OndlYi1jb250ZXh0
OgpAQCAtMTEzMiw2ICsxMjA2LDM3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFz
c19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgICAg
ICAgICAgR19UWVBFX0JPT0xFQU4sIDEsIC8qIG51bWJlciBvZiBwYXJhbWV0ZXJzICovCiAgICAg
ICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9GSUxFX0NIT09TRVJfUkVRVUVTVCk7CiAKKyAg
ICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6cnVuLWNvbG9yLWNob29zZXI6CisgICAgICog
QHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0
dGVkCisgICAgICogQHJlcXVlc3Q6IGEgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAgICAg
KgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiB0aGUgdXNlciBpbnRlcmFjdHMg
d2l0aCBhICZsdDtpbnB1dAorICAgICAqIHR5cGU9J2NvbG9yJyAvJmd0OyBIVE1MIGVsZW1lbnQs
IHJlcXVlc3RpbmcgZnJvbSBXZWJLaXQgdG8gc2hvdworICAgICAqIGEgZGlhbG9nIHRvIHNlbGVj
dCBhIGNvbG9yLiBUbyBsZXQgdGhlIGFwcGxpY2F0aW9uIGtub3cgdGhlIGRldGFpbHMgb2YKKyAg
ICAgKiB0aGUgY29sb3IgY2hvb3NlciwgYXMgd2VsbCBhcyB0byBhbGxvdyB0aGUgY2xpZW50IGFw
cGxpY2F0aW9uIHRvIGVpdGhlcgorICAgICAqIGNhbmNlbCB0aGUgcmVxdWVzdCBvciBwZXJmb3Jt
IGFuIGFjdHVhbCBjb2xvciBzZWxlY3Rpb24sIHRoZSBzaWduYWwgd2lsbAorICAgICAqIHBhc3Mg
YW4gaW5zdGFuY2Ugb2YgdGhlICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IGluIHRoZSBAcmVx
dWVzdAorICAgICAqIGFyZ3VtZW50LgorICAgICAqCisgICAgICogVGhlIGRlZmF1bHQgc2lnbmFs
IGhhbmRsZXIgd2lsbCBhc3luY2hyb25vdXNseSBydW4gYSByZWd1bGFyCisgICAgICogI0d0a0Nv
bG9yQ2hvb3NlciBmb3IgdGhlIHVzZXIgdG8gaW50ZXJhY3Qgd2l0aC4KKyAgICAgKgorICAgICAq
IFJldHVybnM6ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2Vk
IGZvciB0aGUgZXZlbnQuCisgICAgICogICAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBm
dXJ0aGVyLgorICAgICAqCisgICAgICovCisgICAgc2lnbmFsc1tSVU5fQ09MT1JfQ0hPT1NFUl0g
PQorICAgICAgICBnX3NpZ25hbF9uZXcoInJ1bi1jb2xvci1jaG9vc2VyIiwKKyAgICAgICAgICAg
ICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICAg
ICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgICAgICAgICAgIEdfU1RSVUNU
X09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIHJ1bl9jb2xvcl9jaG9vc2VyKSwKKyAgICAgICAg
ICAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwgMCAvKiBhY2N1
bXVsYXRvciBkYXRhICovLAorICAgICAgICAgICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9P
TEVBTl9fT0JKRUNULAorICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDEsIC8q
IG51bWJlciBvZiBwYXJhbWV0ZXJzICovCisgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQ
RV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QpOworCisKICAgICAvKioKICAgICAgKiBXZWJLaXRXZWJW
aWV3Ojpjb250ZXh0LW1lbnU6CiAgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcg
b24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCkBAIC0xNTI2LDYgKzE2MzEsMTIgQEAgdm9p
ZCB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXJSZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIFdlYktpdEZpbGVDaG9vc2UKICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNb
UlVOX0ZJTEVfQ0hPT1NFUl0sIDAsIHJlcXVlc3QsICZyZXR1cm5WYWx1ZSk7CiB9CiAKK3ZvaWQg
d2Via2l0V2ViVmlld1J1bkNvbG9yQ2hvb3NlclJlcXVlc3QoV2ViS2l0V2ViVmlldyogd2ViVmll
dywgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnYm9vbGVhbiBy
ZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbUlVOX0NPTE9S
X0NIT09TRVJdLCAwLCByZXF1ZXN0LCAmcmV0dXJuVmFsdWUpOworfQorCiBzdGF0aWMgYm9vbCB3
ZWJraXRXZWJWaWV3U2hvdWxkU2hvd0lucHV0TWV0aG9kc01lbnUoV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKIHsKICAgICBHdGtTZXR0aW5ncyogc2V0dGluZ3MgPSBndGtfd2lkZ2V0X2dldF9zZXR0
aW5ncyhHVEtfV0lER0VUKHdlYlZpZXcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCA3YzgzODEzLi5hNzMwNmY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5oPgogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0RmluZENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdC5oPgpAQCAtMTcxLDYgKzE3Miw4IEBAIHN0cnVj
dCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAgICBnYm9vbGVhbiAgICgqIGxlYXZlX2Z1bGxzY3Jl
ZW4pICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKICAgICBn
Ym9vbGVhbiAgICgqIHJ1bl9maWxlX2Nob29zZXIpICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdCAgICAqcmVxdWVzdCk7CisgICAgZ2Jvb2xl
YW4gICAoKiBydW5fY29sb3JfY2hvb3NlcikgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCAgICAqcmVxdWVzdCk7CiAgICAgZ2Jvb2xlYW4g
ICAoKiBjb250ZXh0X21lbnUpICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAg
ICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRDb250ZXh0TWVudSAgICAgICAgICAgKmNvbnRleHRfbWVudSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtFdmVudCAgICAgICAgICAgICAgICAgICAg
KmV2ZW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdQcml2YXRlLmgKaW5kZXggNjZkYTU4NC4uOTFmMGFjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0
ZS5oCkBAIC00OCw2ICs0OCw3IEBAIHZvaWQgd2Via2l0V2ViVmlld01vdXNlVGFyZ2V0Q2hhbmdl
ZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0KiwKIHZvaWQgd2Via2l0
V2ViVmlld1ByaW50RnJhbWUoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6V2ViRnJhbWVQcm94eSop
Owogdm9pZCB3ZWJraXRXZWJWaWV3UmVzb3VyY2VMb2FkU3RhcnRlZChXZWJLaXRXZWJWaWV3Kiwg
V2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBXZWJL
aXRVUklSZXF1ZXN0Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3Qo
V2ViS2l0V2ViVmlldyosIFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdCopOwordm9pZCB3ZWJraXRX
ZWJWaWV3UnVuQ29sb3JDaG9vc2VyUmVxdWVzdChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdCopOwogV2ViS2l0V2ViUmVzb3VyY2UqIHdlYmtpdFdlYlZpZXdHZXRMb2Fk
aW5nV2ViUmVzb3VyY2UoV2ViS2l0V2ViVmlldyosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmll
cik7CiB2b2lkIHdlYmtpdFdlYlZpZXdSZW1vdmVMb2FkaW5nV2ViUmVzb3VyY2UoV2ViS2l0V2Vi
VmlldyosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7CiBXZWJLaXRXZWJSZXNvdXJjZSog
d2Via2l0V2ViVmlld1Jlc291cmNlTG9hZEZpbmlzaGVkKFdlYktpdFdlYlZpZXcqLCB1aW50NjRf
dCByZXNvdXJjZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggMmY2
ZjU0Yi4uNTRjZmJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC02NjEsNiArNjYx
LDI3IEBAIHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlwZQogPC9TRUNUSU9OPgog
CiA8U0VDVElPTj4KKzxGSUxFPldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Q8L0ZJTEU+CitXZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0Cit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9j
dXJyZW50X2NvbG9yCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvcgor
d2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwKKworPFNVQlNFQ1RJT04gU3RhbmRh
cmQ+CitXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MKK1dFQktJVF9UWVBFX0NPTE9SX0NI
T09TRVJfUkVRVUVTVAorV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVAorV0VCS0lUX0lTX0NP
TE9SX0NIT09TRVJfUkVRVUVTVAorV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVF9DTEFTUwor
V0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVF9DTEFTUworV0VCS0lUX0NPTE9SX0NIT09T
RVJfUkVRVUVTVF9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdENvbG9y
Q2hvb3NlclJlcXVlc3RQcml2YXRlCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF90
eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0RmluZENvbnRyb2xsZXI8
L0ZJTEU+CiBXZWJLaXRGaW5kQ29udHJvbGxlcgogV2ViS2l0RmluZE9wdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBl
cyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBl
cwppbmRleCA0ZDg4NDNlLi5lYjViMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCkBAIC0yMSwzICsyMSw0IEBA
IHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF90eXBlCiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0
X2dldF90eXBlCiB3ZWJraXRfY29udGV4dF9tZW51X2dldF90eXBlCiB3ZWJraXRfY29udGV4dF9t
ZW51X2l0ZW1fZ2V0X3R5cGUKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X3R5cGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RX
ZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3Rz
L1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCAwOGNkYmU4Li4wMzMwZWMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdl
YktpdFdlYlZpZXcuY3BwCkBAIC03ODIsNiArNzgyLDYxIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3RmlsZUNob29zZXJSZXF1ZXN0KEZpbGVDaG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKICAgICB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsKGZpbGVDaG9vc2VyUmVx
dWVzdCk7CiB9CiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK2NsYXNzIENvbG9yQ2hv
b3NlclRlc3Q6IHB1YmxpYyBVSUNsaWVudFRlc3QgeworcHVibGljOgorICAgIE1BS0VfR0xJQl9U
RVNUX0ZJWFRVUkUoQ29sb3JDaG9vc2VyVGVzdCk7CisgICAgQ29sb3JDaG9vc2VyVGVzdCgpCisg
ICAgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgInJ1bi1jb2xvci1jaG9v
c2VyIiwgR19DQUxMQkFDSyhydW5Db2xvckNob29zZXJDYWxsYmFjayksIHRoaXMpOworICAgIH0K
KworICAgIHN0YXRpYyBnYm9vbGVhbiBydW5Db2xvckNob29zZXJDYWxsYmFjayhXZWJLaXRXZWJW
aWV3KiwgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCwgQ29sb3JDaG9vc2VyVGVz
dCogdGVzdCkKKyAgICB7CisgICAgICAgIHRlc3QtPnJ1bkNvbG9yQ2hvb3NlcihyZXF1ZXN0KTsK
KyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgdm9pZCBydW5Db2xvckNob29zZXIo
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKKyAgICB7CisgICAgICAgIGFzc2Vy
dE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QocmVxdWVzdCkpOworICAg
ICAgICBtX2NvbG9yQ2hvb3NlclJlcXVlc3QgPSByZXF1ZXN0OworICAgICAgICBnX21haW5fbG9v
cF9xdWl0KG1fbWFpbkxvb3ApOworICAgIH0KKworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3QqIGNsaWNrTW91c2VCdXR0b25BbmRXYWl0Rm9yQ29sb3JDaG9vc2VyUmVxdWVzdChpbnQgeCwg
aW50IHkpCisgICAgeworICAgICAgICBjbGlja01vdXNlQnV0dG9uKHgsIHkpOworICAgICAgICBn
X21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgICAgIHJldHVybiBtX2NvbG9yQ2hvb3Nl
clJlcXVlc3QuZ2V0KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdSZWZQdHI8V2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdD4gbV9jb2xvckNob29zZXJSZXF1ZXN0OworfTsKKworc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdDb2xvckNob29zZXJSZXF1ZXN0KENvbG9yQ2hvb3NlclRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCit7CisgICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFw
cGVkKCk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbG9yQ2hvb3NlckhUTUwgPSAiPGh0bWw+
PGJvZHk+PGlucHV0IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7bWFyZ2lu
OjA7cGFkZGluZzowJyB0eXBlPSdjb2xvcicgdmFsdWU9JyNmZjAwMDAnLz48L2JvZHk+PC9odG1s
PiI7CisgICAgdGVzdC0+bG9hZEh0bWwoY29sb3JDaG9vc2VySFRNTCwgMCk7CisgICAgdGVzdC0+
d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCog
Y29sb3JDaG9vc2VyUmVxdWVzdCA9IHRlc3QtPmNsaWNrTW91c2VCdXR0b25BbmRXYWl0Rm9yQ29s
b3JDaG9vc2VyUmVxdWVzdCg1LCA1KTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X2NvbG9y
X2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcihjb2xvckNob29zZXJSZXF1ZXN0KSwg
PT0sICIjZmYwMDAwIik7CisKKyAgICB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmlu
aXNoZWQoImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykudmFsdWUgPSAnIzAwZmYwMCc7
IiwgMCk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rf
Z2V0X2N1cnJlbnRfY29sb3IoY29sb3JDaG9vc2VyUmVxdWVzdCksID09LCAiIzAwZmYwMCIpOwor
CisgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3IoY29sb3JDaG9v
c2VyUmVxdWVzdCwgIiMwMDAwZmYiKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X2NvbG9y
X2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcihjb2xvckNob29zZXJSZXF1ZXN0KSwg
PT0sICIjMDAwMGZmIik7CisKKyAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0
UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLnZhbHVlOyIsIDApOworICAgIEdPd25QdHI8Y2hhcj4g
dmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNj
cmlwdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0s
ICIjMDAwMGZmIik7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKwog
Y2xhc3MgRnVsbFNjcmVlbkNsaWVudFRlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CiBwdWJsaWM6
CiAgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShGdWxsU2NyZWVuQ2xpZW50VGVzdCk7CkBAIC0x
MDY5LDYgKzExMjQsOSBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJjYW4tc2hvdy1taW1lLXR5cGUiLCB0ZXN0V2ViVmlld0NhblNob3dN
SU1FVHlwZSk7CiAgICAgRm9ybUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzdWJt
aXQtZm9ybSIsIHRlc3RXZWJWaWV3U3VibWl0Rm9ybSk7CiAgICAgU2F2ZVdlYlZpZXdUZXN0Ojph
ZGQoIldlYktpdFdlYlZpZXciLCAic2F2ZSIsIHRlc3RXZWJWaWV3U2F2ZSk7CisjaWYgRU5BQkxF
KElOUFVUX1RZUEVfQ09MT1IpCisgICAgQ29sb3JDaG9vc2VyVGVzdDo6YWRkKCJXZWJLaXRXZWJW
aWV3IiwgImNvbG9yLWNob29zZXItcmVxdWVzdCIsIHRlc3RXZWJWaWV3Q29sb3JDaG9vc2VyUmVx
dWVzdCk7CisjZW5kaWYKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhYWQ1ZDEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmNw
cApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEyLCBTYW1zdW5nIEVs
ZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisg
KiAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1
bWVudGF0aW9uCisgKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsu
aCIKKworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdFByaXZhdGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitXZWJDb2xvckNob29zZXJQcm94eUd0azo6V2ViQ29sb3JDaG9vc2VyUHJveHlH
dGsoV2ViQ29sb3JDaG9vc2VyUHJveHk6OkNsaWVudCogY2xpZW50LCBHdGtXaWRnZXQqIHdlYlZp
ZXcsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0
KQorICAgIDogV2ViQ29sb3JDaG9vc2VyUHJveHkoY2xpZW50KQoreworICAgIG1fcmVxdWVzdCA9
IGFkb3B0R1JlZihHX09CSkVDVCh3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0Q3JlYXRlKGluaXRp
YWxDb2xvciwgbV9jbGllbnQpKSk7CisgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CisgICAgZ19z
aWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcsICJydW4tY29sb3ItY2hvb3NlciIsIG1fcmVxdWVz
dC5nZXQoKSwgJnJldHVyblZhbHVlKTsKK30KKwordm9pZCBXZWJDb2xvckNob29zZXJQcm94eUd0
azo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgd2Via2l0V2Vi
Q29sb3JDaG9vc2VyUmVxdWVzdFNldENvbG9yKFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1Qo
bV9yZXF1ZXN0LmdldCgpKSwgY29sb3IpOworfQorCit2b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5
R3RrOjplbmRDaG9vc2VyKCkKK3sKKyAgICB3ZWJraXRXZWJDb2xvckNob29zZXJSZXF1ZXN0RW5k
KFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1QobV9yZXF1ZXN0LmdldCgpKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3Nl
clByb3h5R3RrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3Nl
clByb3h5R3RrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZhZDM3Ywot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29sb3JD
aG9vc2VyUHJveHlHdGsuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAy
MDEyLCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlIG1ldDoKKyAqCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl
LAorICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb2xv
ckNob29zZXJQcm94eUd0a19oCisjZGVmaW5lIFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrX2gKKwor
I2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5LmgiCisjaW5jbHVkZSA8Z2xpYi1vYmplY3Qu
aD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIENvbG9yOworY2xhc3MgSW50UmVjdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrIDogIHB1YmxpYyBXZWJDb2xvckNob29z
ZXJQcm94eSB7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb2xvckNob29z
ZXJQcm94eT4gY3JlYXRlKFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQqIGNsaWVudCwgR3Rr
V2lkZ2V0KiB3ZWJWaWV3LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsoY2xpZW50LCB3ZWJWaWV3LCBpbml0
aWFsQ29sb3IsIGVsZW1lbnRSZWN0KSk7CisgICAgfQorICAgIHZvaWQgc2V0U2VsZWN0ZWRDb2xv
cihjb25zdCBXZWJDb3JlOjpDb2xvciYpOworICAgIHZvaWQgZW5kQ2hvb3NlcigpOworCitwcml2
YXRlOgorICAgIFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrKFdlYkNvbG9yQ2hvb3NlclByb3h5OjpD
bGllbnQqLCBHdGtXaWRnZXQqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKTsKKworICAgIEdSZWZQdHI8R09iamVjdD4gbV9yZXF1ZXN0OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJDb2xvckNob29zZXJQcm94eUd0a19o
CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCA3NzMwY2JiLi5m
YWEzNzdkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3Qu
cG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC0yNjYs
NyArMjY2LDcgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfSU5Q
VVRfU1BFRUNIIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGlucHV0U3BlZWNoU3VwcG9ydCB9
LAogCiAgICAgeyBvcHRpb24gPT4gImlucHV0LXR5cGUtY29sb3IiLCBkZXNjID0+ICJUb2dnbGUg
SW5wdXQgVHlwZSBDb2xvciBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOUFVU
X1RZUEVfQ09MT1IiLCBkZWZhdWx0ID0+IChpc0JsYWNrQmVycnkoKSB8fCBpc0VmbCgpIHx8IGlz
UXQoKSksIHZhbHVlID0+IFwkaW5wdXRUeXBlQ29sb3JTdXBwb3J0IH0sCisgICAgICBkZWZpbmUg
PT4gIkVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SIiwgZGVmYXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkg
fHwgaXNFZmwoKSB8fCBpc1F0KCkgfHwgaXNHdGsoKSksIHZhbHVlID0+IFwkaW5wdXRUeXBlQ29s
b3JTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAiaW5wdXQtdHlwZS1kYXRlIiwgZGVzYyA9
PiAiVG9nZ2xlIElucHV0IFR5cGUgRGF0ZSBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5B
QkxFX0lOUFVUX1RZUEVfREFURSIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRpbnB1dFR5cGVE
YXRlU3VwcG9ydCB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179501</attachid>
            <date>2012-12-14 10:56:55 -0800</date>
            <delta_ts>2012-12-20 12:54:52 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>98935.patch</filename>
            <type>text/plain</type>
            <size>46449</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">Y29tbWl0IDBmYjk3ODg2ZTNmYmIxODA0YTRhOGQ4NWU4OGU1MmY1ZTYxOGQ0OGEKQXV0aG9yOiBB
cm5hdWQgUmVuZXZpZXIgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KRGF0ZTogICBUaHUg
RGVjIDYgMTY6MDI6MDMgMjAxMiAtMDgwMAoKICAgIGlucHV0IGNvbG9yCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuZmVhdHVyZXMuYW0uaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5mZWF0dXJlcy5hbS5pbgppbmRleCA2MjcxMDZmLi43MjgyZGEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5mZWF0dXJlcy5hbS5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5mZWF0dXJlcy5hbS5pbgpAQCAtMzksNyArMzksNyBA
QCBmZWF0dXJlX2RlZmluZXNfZGVmYXVsdHMgKz0gXAogCUVOQUJMRV9JRlJBTUVfU0VBTUxFU1M9
MSBcCiAJRU5BQkxFX0lOREVYRURfREFUQUJBU0U9MCBcCiAJRU5BQkxFX0lOUFVUX1NQRUVDSD0w
IFwKLQlFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUj0wIFwKKwlFTkFCTEVfSU5QVVRfVFlQRV9DT0xP
Uj0xIFwKIAlFTkFCTEVfSU5QVVRfVFlQRV9EQVRFPTAgXAogCUVOQUJMRV9JTlBVVF9UWVBFX0RB
VEVUSU1FPTAgXAogCUVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUw9MCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L0dOVW1ha2VmaWxlLmFtCmluZGV4IGUwZDhjZWEuLjNkMTExMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1h
a2VmaWxlLmFtCkBAIC0xODQsNiArMTg0LDggQEAgd2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBcCisJ
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29sb3JDaG9vc2VyR3RrLmNwcCBcCisJ
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29sb3JDaG9vc2VyR3RrLmggXAogCVNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmNwcCBc
CiAJU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsu
aCBcCiAJU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRGV2aWNlTW90aW9uQ2xpZW50
R3RrLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmNwcAppbmRleCAwYWQzZDk3Li43MzFiNzhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKQEAgLTc3
LDYgKzc3LDExIEBACiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjZW5kaWYKIAorI2lm
IEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorI2luY2x1ZGUgIkNvbG9yQ2hvb3NlckNsaWVudC5o
IgorI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlckd0ay5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgzNiw2ICs4NDEsNTAgQEAgdm9p
ZCBDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJp
dHlPcmlnaW4qLCBpbnQ2NF90KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKKyNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKK3N0YXRpYyB2b2lkIGNvbG9yQ2hvb3NlckRpYWxvZ1Jlc3Bv
bnNlQ2FsbGJhY2soR3RrRGlhbG9nKiBkaWFsb2csIGdpbnQgcmVzcG9uc2VJRCwgQ29sb3JDaG9v
c2VyQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKHJlc3BvbnNlSUQgPT0gR1RLX1JFU1BPTlNF
X09LKSB7CisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgNCwgMCkKKyAgICAgICAgR2RrUkdCQSBj
b2xvcjsKKyAgICAgICAgZ3RrX2NvbG9yX2Nob29zZXJfZ2V0X3JnYmEoR1RLX0NPTE9SX0NIT09T
RVIoZGlhbG9nKSwgJmNvbG9yKTsKKyNlbHNlCisgICAgICAgIEdka0NvbG9yIGNvbG9yOworICAg
ICAgICBHdGtXaWRnZXQqIGNvbG9yU2VsZWN0aW9uID0gZ3RrX2NvbG9yX3NlbGVjdGlvbl9kaWFs
b2dfZ2V0X2NvbG9yX3NlbGVjdGlvbihHVEtfQ09MT1JfU0VMRUNUSU9OX0RJQUxPRyhkaWFsb2cp
KTsKKyAgICAgICAgZ3RrX2NvbG9yX3NlbGVjdGlvbl9nZXRfY3VycmVudF9jb2xvcihHVEtfQ09M
T1JfU0VMRUNUSU9OKGNvbG9yU2VsZWN0aW9uKSwgJmNvbG9yKTsKKyNlbmRpZgorICAgICAgICBj
bGllbnQtPmRpZENob29zZUNvbG9yKGNvbG9yKTsKKyAgICB9CisgICAgY2xpZW50LT5kaWRFbmRD
aG9vc2VyKCk7Cit9CisKK1Bhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBDaHJvbWVDbGllbnQ6OmNy
ZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCwgY29uc3QgQ29sb3Im
IGluaXRpYWxDb2xvcikKK3sKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA0LCAwKQorICAgIEd0
a1dpZGdldCogcGFyZW50ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChtX3dl
YlZpZXcpKTsKKyAgICBpZiAoIWd0a193aWRnZXRfaXNfdG9wbGV2ZWwocGFyZW50KSB8fCAhR1RL
X0lTX1dJTkRPVyhwYXJlbnQpKQorICAgICAgICBwYXJlbnQgPSAwOworICAgIEd0a1dpZGdldCog
ZGlhbG9nID0gIGd0a19jb2xvcl9jaG9vc2VyX2RpYWxvZ19uZXcoXygiU2VsZWN0IENvbG9yIiks
IEdUS19XSU5ET1cocGFyZW50KSk7CisKKyAgICBndGtfY29sb3JfY2hvb3Nlcl9zZXRfdXNlX2Fs
cGhhKEdUS19DT0xPUl9DSE9PU0VSKGRpYWxvZyksIEZBTFNFKTsKKyAgICBHZGtSR0JBIHJnYmEg
PSBzdGF0aWNfY2FzdDxHZGtSR0JBPihpbml0aWFsQ29sb3IpOworICAgIGd0a19jb2xvcl9jaG9v
c2VyX3NldF9yZ2JhKEdUS19DT0xPUl9DSE9PU0VSKGRpYWxvZyksICZyZ2JhKTsKKyNlbHNlCisg
ICAgR3RrV2lkZ2V0KiBkaWFsb2cgPSBndGtfY29sb3Jfc2VsZWN0aW9uX2RpYWxvZ19uZXcoXygi
U2VsZWN0IENvbG9yIikpOworICAgIEd0a1dpZGdldCogY29sb3JTZWxlY3Rpb24gPSBndGtfY29s
b3Jfc2VsZWN0aW9uX2RpYWxvZ19nZXRfY29sb3Jfc2VsZWN0aW9uKEdUS19DT0xPUl9TRUxFQ1RJ
T05fRElBTE9HKGRpYWxvZykpOworICAgIGd0a19jb2xvcl9zZWxlY3Rpb25fc2V0X2hhc19wYWxl
dHRlKEdUS19DT0xPUl9TRUxFQ1RJT04oY29sb3JTZWxlY3Rpb24pLCBUUlVFKTsKKworICAgIEdk
a0NvbG9yIHJnYiA9IHswLCBpbml0aWFsQ29sb3IucmVkKCkgPDwgOCwgIGluaXRpYWxDb2xvci5n
cmVlbigpIDw8IDgsIGluaXRpYWxDb2xvci5ibHVlKCkgPDwgOCB9OworICAgIGd0a19jb2xvcl9z
ZWxlY3Rpb25fc2V0X2N1cnJlbnRfY29sb3IoR1RLX0NPTE9SX1NFTEVDVElPTihjb2xvclNlbGVj
dGlvbiksICZyZ2IpOworI2VuZGlmCisKKyAgICBnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgInJl
c3BvbnNlIiwgR19DQUxMQkFDSyhjb2xvckNob29zZXJEaWFsb2dSZXNwb25zZUNhbGxiYWNrKSwg
Y2xpZW50KTsKKyAgICBndGtfd2lkZ2V0X3Nob3coZGlhbG9nKTsKKworICAgIHJldHVybiBhZG9w
dFB0cihuZXcgQ29sb3JDaG9vc2VyR3RrKGRpYWxvZywgY2xpZW50KSk7Cit9CisjZW5kaWYKKwog
dm9pZCBDaHJvbWVDbGllbnQ6OnJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNo
b29zZXI+IHBycEZpbGVDaG9vc2VyKQogewogICAgIEdSZWZQdHI8V2ViS2l0RmlsZUNob29zZXJS
ZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9j
cmVhdGUocHJwRmlsZUNob29zZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKaW5kZXggYTAxZmQzMy4uMzc0Yzg3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgK
QEAgLTMwLDYgKzMwLDkgQEAKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJTZWFyY2hQ
b3B1cE1lbnUuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQorI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgorI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsK
QEAgLTEyMCw2ICsxMjMsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAjZW5kaWYKICAgICAgICAg
dmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
KFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCB0b3RhbFNwYWNlTmVlZGVkKTsKKworI2lmIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SKQorICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q29sb3JDaG9v
c2VyPiBjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50KiwgY29uc3QgQ29sb3Im
IGluaXRpYWxDb2xvcik7CisjZW5kaWYKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBh
bmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgRmlsZUljb25M
b2FkZXIqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q29sb3JDaG9vc2VyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nv
bG9yQ2hvb3Nlckd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFl
M2Q3MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0NvbG9yQ2hvb3Nlckd0ay5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJ
UyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisjaW5jbHVkZSAiQ29s
b3JDaG9vc2VyR3RrLmgiCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkNvbG9yQ2hv
b3NlckNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NvbG9yQ2hvb3Nlckd0azo6
Q29sb3JDaG9vc2VyR3RrKEd0a1dpZGdldCogY29sb3JDaG9vc2VyLCBDb2xvckNob29zZXJDbGll
bnQqIGNsaWVudCkKKyAgICA6IG1fY29sb3JDaG9vc2VyKGNvbG9yQ2hvb3NlciksIG1fY2xpZW50
KGNsaWVudCkKK3sKKyAgICBBU1NFUlQobV9jb2xvckNob29zZXIpOworICAgIEFTU0VSVChtX2Ns
aWVudCk7Cit9CisKK0NvbG9yQ2hvb3Nlckd0azo6fkNvbG9yQ2hvb3Nlckd0aygpCit7CisgICAg
Z3RrX3dpZGdldF9kZXN0cm95KG1fY29sb3JDaG9vc2VyLmdldCgpKTsKK30KKwordm9pZCBDb2xv
ckNob29zZXJHdGs6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworI2lm
IEdUS19DSEVDS19WRVJTSU9OKDMsIDQsIDApCisgICAgR2RrUkdCQSByZ2JhID0gc3RhdGljX2Nh
c3Q8R2RrUkdCQT4oY29sb3IpOworICAgIGd0a19jb2xvcl9jaG9vc2VyX3NldF9yZ2JhKEdUS19D
T0xPUl9DSE9PU0VSKG1fY29sb3JDaG9vc2VyLmdldCgpKSwgJnJnYmEpOworI2Vsc2UKKyAgICBH
dGtXaWRnZXQqIGNvbG9yU2VsZWN0aW9uID0gZ3RrX2NvbG9yX3NlbGVjdGlvbl9kaWFsb2dfZ2V0
X2NvbG9yX3NlbGVjdGlvbihHVEtfQ09MT1JfU0VMRUNUSU9OX0RJQUxPRyhtX2NvbG9yQ2hvb3Nl
ci5nZXQoKSkpOworICAgIEdka0NvbG9yIHJnYiA9IHswLCBjb2xvci5yZWQoKSA8PCA4LCAgY29s
b3IuZ3JlZW4oKSA8PCA4LCBjb2xvci5ibHVlKCkgPDwgOCB9OworICAgIGd0a19jb2xvcl9zZWxl
Y3Rpb25fc2V0X2N1cnJlbnRfY29sb3IoR1RLX0NPTE9SX1NFTEVDVElPTihjb2xvclNlbGVjdGlv
biksICZyZ2IpOworI2VuZGlmCit9CisKK3ZvaWQgQ29sb3JDaG9vc2VyR3RrOjplbmRDaG9vc2Vy
KCkKK3sKKyAgICBtX2NsaWVudC0+ZGlkRW5kQ2hvb3NlcigpOworfQorCit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0NvbG9yQ2hvb3Nlckd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ29sb3JDaG9vc2VyR3RrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNWYwZDdhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0NvbG9yQ2hvb3Nlckd0ay5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAg
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQor
ICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIENvbG9yQ2hvb3Nlckd0a19oCisjZGVmaW5lIENvbG9yQ2hvb3Nlckd0a19oCisKKyNp
bmNsdWRlICJDb2xvckNob29zZXIuaCIKKworI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q29sb3JDaG9vc2VyQ2xpZW50OworY2xhc3MgQ29sb3I7CisKK2NsYXNzIENvbG9yQ2hvb3Nlckd0
ayA6IHB1YmxpYyBDb2xvckNob29zZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IENvbG9yQ2hv
b3Nlckd0ayhHdGtXaWRnZXQqLCBDb2xvckNob29zZXJDbGllbnQqKTsKKyAgICB+Q29sb3JDaG9v
c2VyR3RrKCk7CisKKyAgICAvLyBDb2xvckNob29zZXIgaW1wbGVtZW50YXRpb24uCisgICAgdmly
dHVhbCB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZW5kQ2hvb3NlcigpOworCitwcml2YXRlOgorICAgIEdSZWZQdHI8R3RrV2lkZ2V0PiBtX2Nv
bG9yQ2hvb3NlcjsKKyAgICBDb2xvckNob29zZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworfQor
CisjZW5kaWYgLy8gQ29sb3JDaG9vc2VyR3RrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFt
CmluZGV4IDZiNjkzOWIuLjhiYjVhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpA
QCAtOTYsNiArOTYsNyBAQCB3ZWJraXQyX2hfYXBpICs9IFwKIHdlYmtpdDJndGtfaF9hcGkgKz0g
XAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0Lmgg
XAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRl
bS5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3QuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVu
dS5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0
aW9ucy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51
SXRlbS5oIFwKQEAgLTYzOSw2ICs2NDAsOSBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBc
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0
SXRlbS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tG
b3J3YXJkTGlzdFByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaCBcCisJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudVByaXZh
dGUuaCBcCkBAIC03ODgsNiArNzkyLDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwIFwKKwlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmNwcCBcCisJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5j
cHAKaW5kZXggOTJiMzE4OC4uNWY0Mjg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtNDQsNiArNDQsMTAgQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyNpbmNsdWRlICJXZWJDb2xvckNo
b29zZXJQcm94eUd0ay5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTIyOSwxMCArMjMzLDkgQEAgUGFzc1JlZlB0cjxXZWJDb250
ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQ
YWdlUHIKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUGFzc1JlZlB0cjxXZWJD
b2xvckNob29zZXJQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpCitQYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3Jl
OjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVj
dCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBX
ZWJDb2xvckNob29zZXJQcm94eUd0azo6Y3JlYXRlKHBhZ2UsIG1fdmlld1dpZGdldCwgaW5pdGlh
bENvbG9yLCBlbGVtZW50UmVjdCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTVmNWIyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdC5jcHAKQEAgLTAsMCArMSwxOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMi
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgiCisKKyNpbmNs
dWRlICJDb2xvci5oIgorI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRl
LmgiCisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0CisgKiBAU2hv
cnRfZGVzY3JpcHRpb246IEEgcmVxdWVzdCB0byBvcGVuIGEgY29sb3IgY2hvb3NlcgorICogQFRp
dGxlOiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0CisgKiBAU2VlX2Fsc286ICNXZWJLaXRXZWJW
aWV3CisgKgorICogV2hlbmV2ZXIgdGhlIHVzZXIgaW50ZXJhY3RzIHdpdGggYW4gJmx0O2lucHV0
IHR5cGU9J2NvbG9yJyAvJmd0OworICogSFRNTCBlbGVtZW50LCBXZWJLaXQgd2lsbCBuZWVkIHRv
IHNob3cgYSBkaWFsb2cgdG8gY2hvb3NlIGEgY29sb3IuIEZvciB0aGF0CisgKiB0byBoYXBwZW4g
aW4gYSBnZW5lcmFsIHdheSwgaW5zdGVhZCBvZiBqdXN0IG9wZW5pbmcgYSAjR3RrQ29sb3JDaG9v
c2VyCisgKiAod2hpY2ggbWlnaHQgYmUgbm90IGRlc2lyYWJsZSBpbiBzb21lIGNhc2VzLCB3aGlj
aCBjb3VsZCBwcmVmZXIgdG8gdXNlIHRoZWlyCisgKiBvd24gY29sb3IgY2hvb3NlciBkaWFsb2cp
LCBXZWJLaXQgd2lsbCBmaXJlIHRoZQorICogI1dlYktpdFdlYlZpZXc6OnJ1bi1jb2xvci1jaG9v
c2VyIHNpZ25hbCB3aXRoIGEgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAqIG9iamVjdCwg
d2hpY2ggd2lsbCBhbGxvdyB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIHRvIHNwZWNpZnkgdGhlIGNv
bG9yIHRvIGJlCisgKiBzZWxlY3RlZCwgdG8gaW5zcGVjdCB0aGUgZGV0YWlscyBvZiB0aGUgcmVx
dWVzdCAoZS5nLiB0byBnZXQgaW5pdGlhbCBjb2xvcikKKyAqIGFuZCB0byBjYW5jZWwgdGhlIHJl
cXVlc3QsIGluIGNhc2Ugbm90aGluZyB3YXMgc2VsZWN0ZWQuCisgKgorICogSW4gY2FzZSB0aGUg
Y2xpZW50IGFwcGxpY2F0aW9uIGRvZXMgbm90IHdpc2ggdG8gaGFuZGxlIHRoaXMgc2lnbmFsLAor
ICogV2ViS2l0IHdpbGwgcHJvdmlkZSBhIGRlZmF1bHQgaGFuZGxlciB3aGljaCB3aWxsIGFzeW5j
aHJvbm91c2x5IHJ1bgorICogYSByZWd1bGFyICNHdGtDb2xvckNob29zZXIgZm9yIHRoZSB1c2Vy
IHRvIGludGVyYWN0IHdpdGguCisgKi8KKworc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0UHJpdmF0ZSB7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgV2ViQ29sb3JD
aG9vc2VyUHJveHk6OkNsaWVudCogY2xpZW50OworI2VuZGlmCisgICAgQ29sb3IgY29sb3I7Cisg
ICAgYm9vbCBoYW5kbGVkUmVxdWVzdDsKK307CisKK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0LCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0LCBHX1RZUEVf
T0JKRUNUKQorCitlbnVtIHsKKyAgICBFTkRfQ0hPT1NFUiwKKyAgICBDSEFOR0VfQ09MT1IsCisK
KyAgICBMQVNUX1NJR05BTAorfTsKKworc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxd
ID0geyAwLCB9OworCitzdGF0aWMgdm9pZCB3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0RGlzcG9z
ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgcHJpbnRmKCIlc1xuIiwgX19mdW5jX18pOworICAg
IFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRfQ09MT1JfQ0hPT1NF
Ul9SRVFVRVNUKG9iamVjdCk7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIHJlcXVlc3QgaXMgYWx3
YXlzIGhhbmRsZWQgYmVmb3JlIGZpbmFsaXppbmcuCisgICAgaWYgKCFyZXF1ZXN0LT5wcml2LT5o
YW5kbGVkUmVxdWVzdCkKKyAgICAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5j
ZWwocmVxdWVzdCk7CisKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfY29sb3JfY2hvb3Nlcl9y
ZXF1ZXN0X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQg
d2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jbGFzc19pbml0KFdlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3RDbGFzcyogcmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogb2JqZWN0
Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworICAgIG9iamVjdENsYXNzLT5k
aXNwb3NlID0gd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdERpc3Bvc2U7CisKKyAgICAvKioKKyAg
ICAgKiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0OmVuZC1jaG9vc2VyOgorICAgICAqIEByZXF1
ZXN0OiB0aGUgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBp
cyBlbWl0dGVkCisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gcmVxdWVzdCBtdXN0IGJlIHRl
cm1pbmF0ZWQuIFRoaXMgaGFwcGVucyBmb3IgZXhhbXBsZSBpZiB0aGUKKyAgICAgKiBwYWdlIHRy
aWdnZXJpbmcgdGhlIHJlcXVlc3QgdW5sb2FkcyBiZWZvcmUgdGhlIHJlcXVlc3QgaXMgY29tcGxl
dGVkLgorICAgICAqLworICAgIHNpZ25hbHNbRU5EX0NIT09TRVJdID0KKyAgICAgICAgZ19zaWdu
YWxfbmV3KCJlbmQtY2hvb3NlciIsCisgICAgICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNT
KG9iamVjdENsYXNzKSwKKyAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAg
ICAgICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hh
bF9WT0lEX19WT0lELAorICAgICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsKKworICAgIC8q
KgorICAgICAqIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Q6Y2hhbmdlLWNvbG9yOgorICAgICAq
IEByZXF1ZXN0OiB0aGUgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Qgb24gd2hpY2ggdGhlIHNp
Z25hbCBpcyBlbWl0dGVkCisgICAgICogQGNvbG9yOiB0aGUgbmV3IGNvbG9yCisgICAgICoKKyAg
ICAgKiBFbWl0dGVkIHdoZW4gZGVmYXVsdCB2YWx1ZSBvZiByZXF1ZXN0IGlzIGNoYW5nZWQuCisg
ICAgICovCisgICAgc2lnbmFsc1tDSEFOR0VfQ09MT1JdID0KKyAgICAgICAgZ19zaWduYWxfbmV3
KCJjaGFuZ2UtY29sb3IiLAorICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhvYmpl
Y3RDbGFzcyksCisgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAg
ICAgICAgICAwLCAwLCAwLAorICAgICAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9J
RF9fU1RSSU5HLAorICAgICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAxLAorICAgICAgICAgICAg
ICAgIEdfVFlQRV9TVFJJTkcpOworfQorCisvKioKKyAqIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3Jl
cXVlc3RfY2FuY2VsOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QK
KyAqCisgKiBBc2sgV2ViS2l0IHRvIGNhbmNlbCB0aGUgcmVxdWVzdC4gSXQncyBpbXBvcnRhbnQg
dG8gZG8gdGhpcyBpbiBjYXNlCisgKiBubyBzZWxlY3Rpb24gaGFzIGJlZW4gbWFkZSBpbiB0aGUg
Y2xpZW50LCBvdGhlcndpc2UgdGhlIHJlcXVlc3QKKyAqIHdvbid0IGJlIHByb3Blcmx5IGNvbXBs
ZXRlZCBhbmQgdGhlIGJyb3dzZXIgd2lsbCBrZWVwIHRoZSByZXF1ZXN0CisgKiBwZW5kaW5nIGZv
cmV2ZXIsIHdoaWNoIG1pZ2h0IGNhdXNlIHRoZSBicm93c2VyIHRvIGhhbmcuCisgKi8KK3ZvaWQg
d2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwoV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCogcmVxdWVzdCkKK3sKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICByZXF1
ZXN0LT5wcml2LT5jbGllbnQtPmRpZEVuZENvbG9yQ2hvb3NlcigpOworICAgIHJlcXVlc3QtPnBy
aXYtPmhhbmRsZWRSZXF1ZXN0ID0gVFJVRTsKKyNlbmRpZgorfQorCisvKioKKyAqIHdlYmtpdF9j
b2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yOgorICogQHJlcXVlc3Q6IGEgI1dlYktp
dEZpbGVDaG9vc2VyUmVxdWVzdAorICogQGNvbG9yOiAoYXJyYXkgemVyby10ZXJtaW5hdGVkPTEp
ICh0cmFuc2ZlciBub25lKTogYQorICoKKyAqIEFzayBXZWJLaXQgdG8gc2VsZWN0IGNvbG9yIGFu
ZCBjb21wbGV0ZSB0aGUgcmVxdWVzdC4KKyAqLwordm9pZCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9y
ZXF1ZXN0X3NlbGVjdF9jb2xvcihXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0LCBj
b25zdCBnY2hhciogY29sb3IpCit7CisgICAgcmVxdWVzdC0+cHJpdi0+Y29sb3IgPSBDb2xvcihj
b2xvcik7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgcmVxdWVzdC0+cHJpdi0+
Y2xpZW50LT5kaWRDaG9vc2VDb2xvcihyZXF1ZXN0LT5wcml2LT5jb2xvcik7CisgICAgcmVxdWVz
dC0+cHJpdi0+Y2xpZW50LT5kaWRFbmRDb2xvckNob29zZXIoKTsKKyNlbmRpZgorICAgIHJlcXVl
c3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0ID0gVFJVRTsKK30KKworLyoqCisgKiB3ZWJraXRfY29s
b3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9jdXJyZW50X2NvbG9yOgorICogQHJlcXVlc3Q6IGEgI1dl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAqCisgKiBSZXR1cm5zOiB0aGUgY3VycmVudCBjb2xv
ciBvZiByZXF1ZXN0LiBXaGlsZSBubyBjb2xvciBoYXMgYmVlbiBzZWxlY3RlZCwgaXQKKyAqIGlz
IHRoZSBpbml0aWFsIHZhbHVlIGRlZmluZWQgYnkgV2ViS2l0LiBXaGVuIGEgY29sb3IgaGFzIGJl
ZW4gc2VsZWN0ZWQsIHRoaXMKKyAqIGJlY29tZXMgdGhlIHNlbGVjdGVkIHZhbHVlLgorICovCitj
b25zdCBnY2hhciogd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xv
cihXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIHJldHVybiByZXF1
ZXN0LT5wcml2LT5jb2xvci5zZXJpYWxpemVkKCkuYXNjaWkoKS5kYXRhKCk7Cit9CisKKyNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHdlYmtp
dENvbG9yQ2hvb3NlclJlcXVlc3RDcmVhdGUoY29uc3QgQ29sb3IgaW5pdGlhbENvbG9yLCBXZWJD
b2xvckNob29zZXJQcm94eTo6Q2xpZW50KiBjbGllbnQpCit7CisgICAgV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1QoZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCwgTlVMTCkpOworICAgIHJl
cXVlc3QtPnByaXYtPmNsaWVudCA9IGNsaWVudDsKKyAgICByZXF1ZXN0LT5wcml2LT5jb2xvciA9
IGluaXRpYWxDb2xvcjsKKyAgICByZXF1ZXN0LT5wcml2LT5oYW5kbGVkUmVxdWVzdCA9IEZBTFNF
OworICAgIHJldHVybiByZXF1ZXN0OworfQorCit2b2lkIHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJl
cXVlc3RFbmQoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICB3ZWJr
aXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbChyZXF1ZXN0KTsKKyAgICBnX3NpZ25hbF9l
bWl0KHJlcXVlc3QsIHNpZ25hbHNbRU5EX0NIT09TRVJdLCAwLCBOVUxMKTsKK30KKwordm9pZCB3
ZWJraXRXZWJDb2xvckNob29zZXJSZXF1ZXN0U2V0Q29sb3IoV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCogcmVxdWVzdCwgY29uc3QgQ29sb3IgY29sb3IpCit7CisgICAgcmVxdWVzdC0+cHJpdi0+
Y29sb3IgPSBjb2xvcjsKKyAgICBnX3NpZ25hbF9lbWl0KHJlcXVlc3QsIHNpZ25hbHNbQ0hBTkdF
X0NPTE9SXSwgMCwgcmVxdWVzdC0+cHJpdi0+Y29sb3Iuc2VyaWFsaXplZCgpLmFzY2lpKCkuZGF0
YSgpLCBOVUxMKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExMjRhYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgK
QEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVj
dHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICog
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVf
XykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0
Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRl
ZiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0X2gKKyNkZWZpbmUgV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdF9oCisKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9DT0xP
Ul9DSE9PU0VSX1JFUVVFU1QgICAgICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVz
dF9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iaikg
ICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBF
X0NPTE9SX0NIT09TRVJfUkVRVUVTVCwgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCkpCisjZGVm
aW5lIFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVf
Q0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFV
RVNULCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNf
Q09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNF
X1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCkpCisjZGVmaW5l
IFdFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hF
Q0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNU
KSkKKyNkZWZpbmUgV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVF9HRVRfQ0xBU1Mob2JqKSAg
KEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9DT0xPUl9DSE9P
U0VSX1JFUVVFU1QsIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcykpCisKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICAgICAgICBXZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFz
cyAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZSBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJp
dmF0ZTsKKworc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IHsKKyAgICBHT2JqZWN0
IHBhcmVudDsKKworICAgIC8qPCBwcml2YXRlID4qLworICAgIFdlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3RQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRf
QVBJIEdUeXBlCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF90eXBlICAgICAgICAg
ICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKK3dlYmtpdF9jb2xv
cl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IgIChXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0KiByZXF1ZXN0KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfY29sb3JfY2hvb3Nl
cl9yZXF1ZXN0X3NlbGVjdF9jb2xvciAgICAgICAoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCog
cmVxdWVzdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2NoYXIgKiBjb2xvcik7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2NvbG9y
X2Nob29zZXJfcmVxdWVzdF9jYW5jZWwgICAgICAgICAgICAgKFdlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3QqIHJlcXVlc3QpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0UHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjNhOWE0YTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlX2gKKyNkZWZp
bmUgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGVfaAorCisjaW5jbHVkZSAiQ29sb3Iu
aCIKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisKKyNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKworV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogd2Vi
a2l0Q29sb3JDaG9vc2VyUmVxdWVzdENyZWF0ZShjb25zdCBXZWJDb3JlOjpDb2xvciwgV2ViS2l0
OjpXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50Kik7Cit2b2lkIHdlYmtpdFdlYkNvbG9yQ2hv
b3NlclJlcXVlc3RFbmQoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCopOwordm9pZCB3ZWJraXRX
ZWJDb2xvckNob29zZXJSZXF1ZXN0U2V0Q29sb3IoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCos
IGNvbnN0IFdlYkNvcmU6OkNvbG9yKTsKKworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQorCisjZW5kaWYgLy8gV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApp
bmRleCAzNTJiN2ZlLi5lOThiYzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMTA3LDYgKzEwNyw4IEBAIGVudW0gewog
CiAgICAgUlVOX0ZJTEVfQ0hPT1NFUiwKIAorICAgIFJVTl9DT0xPUl9DSE9PU0VSLAorCiAgICAg
Q09OVEVYVF9NRU5VLAogICAgIENPTlRFWFRfTUVOVV9ESVNNSVNTRUQsCiAKQEAgLTQxNCw2ICs0
MTYsNzcgQEAgc3RhdGljIHZvaWQgZmlsZUNob29zZXJEaWFsb2dSZXNwb25zZUNhbGxiYWNrKEd0
a0RpYWxvZyogZGlhbG9nLCBnaW50IHJlc3BvbnNlSUQKICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3ko
R1RLX1dJREdFVChkaWFsb2cpKTsKIH0KIAorc3RhdGljIHZvaWQgdXBkYXRlQ29sb3JDaG9vc2Vy
Q29sb3JWYWx1ZShHdGtXaWRnZXQqIGRpYWxvZywgY29uc3QgZ2NoYXIqIGNvbG9yKSAKK3sKKyNp
ZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA0LCAwKQorICAgIEdka1JHQkEgcmdiOworICAgIGdka19y
Z2JhX3BhcnNlKCZyZ2IsIGNvbG9yKTsKKyAgICBndGtfY29sb3JfY2hvb3Nlcl9zZXRfcmdiYShH
VEtfQ09MT1JfQ0hPT1NFUihkaWFsb2cpLCAmcmdiKTsKKyNlbHNlCisgICAgR3RrV2lkZ2V0KiBj
b2xvclNlbGVjdGlvbiA9IGd0a19jb2xvcl9zZWxlY3Rpb25fZGlhbG9nX2dldF9jb2xvcl9zZWxl
Y3Rpb24oR1RLX0NPTE9SX1NFTEVDVElPTl9ESUFMT0coZGlhbG9nKSk7CisgICAgZ3RrX2NvbG9y
X3NlbGVjdGlvbl9zZXRfaGFzX3BhbGV0dGUoR1RLX0NPTE9SX1NFTEVDVElPTihjb2xvclNlbGVj
dGlvbiksIFRSVUUpOworICAgIEdka0NvbG9yIHJnYjsKKyAgICBnZGtfY29sb3JfcGFyc2UoY29s
b3IsICZyZ2IpOworICAgIGd0a19jb2xvcl9zZWxlY3Rpb25fc2V0X2N1cnJlbnRfY29sb3IoR1RL
X0NPTE9SX1NFTEVDVElPTihjb2xvclNlbGVjdGlvbiksICZyZ2IpOworI2VuZGlmCit9CisKK3N0
YXRpYyB2b2lkIGNvbG9yQ2hvb3NlclJlcXVlc3RDaGFuZ2VDYWxsYmFjayhXZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBnY2hhciogY29sb3IsIEd0a1dpZGdldCogZGlh
bG9nKQoreworICAgIHVwZGF0ZUNvbG9yQ2hvb3NlckNvbG9yVmFsdWUoZGlhbG9nLCBjb2xvcik7
Cit9CisKK3N0YXRpYyB2b2lkIGNvbG9yQ2hvb3NlclJlcXVlc3RFbmRDYWxsYmFjayhXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0LCBHdGtXaWRnZXQqIGRpYWxvZykKK3sKKyAgICBn
X29iamVjdF91bnJlZihyZXF1ZXN0KTsKKyAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTsK
K30KKworc3RhdGljIHZvaWQgY29sb3JDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFjayhHdGtX
aWRnZXQqIGRpYWxvZywgZ2ludCByZXNwb25zZUlELCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
KiByZXF1ZXN0KQoreworICAgIEdSZWZQdHI8V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdD4gYWRv
cHRlZFJlcXVlc3QgPSBhZG9wdEdSZWYocmVxdWVzdCk7CisgICAgaWYgKHJlc3BvbnNlSUQgPT0g
R1RLX1JFU1BPTlNFX09LKSB7CisgICAgICAgIEdPd25QdHI8Y2hhcj4gc3RyX3ZhbHVlOworI2lm
IEdUS19DSEVDS19WRVJTSU9OKDMsIDQsIDApCisgICAgICAgIEdka1JHQkEgY29sb3I7CisgICAg
ICAgIGd0a19jb2xvcl9jaG9vc2VyX2dldF9yZ2JhKEdUS19DT0xPUl9DSE9PU0VSKGRpYWxvZyks
ICZjb2xvcik7CisgICAgICAgIHN0cl92YWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIjJS4yWCUu
MlglLjJYIiwgKGludCkoY29sb3IucmVkICogMjU1KSwgKGludCkoY29sb3IuZ3JlZW4gKiAyNTUp
LCAoaW50KShjb2xvci5ibHVlICogMjU1KSkpOworI2Vsc2UKKyAgICAgICAgR2RrQ29sb3IgY29s
b3I7CisgICAgICAgIEd0a1dpZGdldCogY29sb3JTZWxlY3Rpb24gPSBndGtfY29sb3Jfc2VsZWN0
aW9uX2RpYWxvZ19nZXRfY29sb3Jfc2VsZWN0aW9uKEdUS19DT0xPUl9TRUxFQ1RJT05fRElBTE9H
KGRpYWxvZykpOworICAgICAgICBndGtfY29sb3Jfc2VsZWN0aW9uX2dldF9jdXJyZW50X2NvbG9y
KEdUS19DT0xPUl9TRUxFQ1RJT04oY29sb3JTZWxlY3Rpb24pLCAmY29sb3IpOworICAgICAgICBz
dHJfdmFsdWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiIyUuMlglLjJYJS4yWCIsIChpbnQpKGNvbG9y
LnJlZCAvIDI1NSksIChpbnQpKGNvbG9yLmdyZWVuIC8gMjU1KSwgKGludCkoY29sb3IuYmx1ZSAv
IDI1NSkpKTsKKyNlbmRpZgorICAgICAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3Nl
bGVjdF9jb2xvcihhZG9wdGVkUmVxdWVzdC5nZXQoKSwgc3RyX3ZhbHVlLmdldCgpKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwoYWRvcHRl
ZFJlcXVlc3QuZ2V0KCkpOworCisgICAgZ3RrX3dpZGdldF9kZXN0cm95KGRpYWxvZyk7Cit9CisK
K3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3UnVuQ29sb3JDaG9vc2VyKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QpCit7CisjaWYg
R1RLX0NIRUNLX1ZFUlNJT04oMywgNCwgMCkKKyAgICBHdGtXaWRnZXQqIHBhcmVudCA9IGd0a193
aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQod2ViVmlldykpOworICAgIGlmICghZ3RrX3dp
ZGdldF9pc190b3BsZXZlbChwYXJlbnQpIHx8ICFHVEtfSVNfV0lORE9XKHBhcmVudCkpCisgICAg
ICAgIHBhcmVudCA9IDA7CisgICAgR3RrV2lkZ2V0KiBkaWFsb2cgPSAgZ3RrX2NvbG9yX2Nob29z
ZXJfZGlhbG9nX25ldyhfKCJTZWxlY3QgQ29sb3IiKSwgR1RLX1dJTkRPVyhwYXJlbnQpKTsKKyNl
bHNlCisgICAgR3RrV2lkZ2V0KiBkaWFsb2cgPSBndGtfY29sb3Jfc2VsZWN0aW9uX2RpYWxvZ19u
ZXcoXygiU2VsZWN0IENvbG9yIikpOworI2VuZGlmCisKKyAgICBjb25zdCBnY2hhciogaW5pdGlh
bENvbG9yID0gd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcihy
ZXF1ZXN0KTsKKyAgICB1cGRhdGVDb2xvckNob29zZXJDb2xvclZhbHVlKGRpYWxvZywgaW5pdGlh
bENvbG9yKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QocmVxdWVzdCwgImVuZC1jaG9vc2VyIiwg
R19DQUxMQkFDSyhjb2xvckNob29zZXJSZXF1ZXN0RW5kQ2FsbGJhY2spLCBkaWFsb2cpOworICAg
IGdfc2lnbmFsX2Nvbm5lY3QocmVxdWVzdCwgImNoYW5nZS1jb2xvciIsIEdfQ0FMTEJBQ0soY29s
b3JDaG9vc2VyUmVxdWVzdENoYW5nZUNhbGxiYWNrKSwgZGlhbG9nKTsKKyAgICBnX3NpZ25hbF9j
b25uZWN0KGRpYWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhjb2xvckNob29zZXJEaWFsb2dS
ZXNwb25zZUNhbGxiYWNrKSwgcmVxdWVzdCk7CisgICAgZ3RrX3dpZGdldF9zaG93KGRpYWxvZyk7
CisgICAgZ19vYmplY3RfcmVmKHJlcXVlc3QpOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKIHN0
YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXIoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIEd0a1dp
ZGdldCogdG9wbGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZp
ZXcpKTsKQEAgLTU1OCw2ICs2MzEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xh
c3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICB3ZWJWaWV3Q2xh
c3MtPmRlY2lkZV9wb2xpY3kgPSB3ZWJraXRXZWJWaWV3RGVjaWRlUG9saWN5OwogICAgIHdlYlZp
ZXdDbGFzcy0+cGVybWlzc2lvbl9yZXF1ZXN0ID0gd2Via2l0V2ViVmlld1Blcm1pc3Npb25SZXF1
ZXN0OwogICAgIHdlYlZpZXdDbGFzcy0+cnVuX2ZpbGVfY2hvb3NlciA9IHdlYmtpdFdlYlZpZXdS
dW5GaWxlQ2hvb3NlcjsKKyAgICB3ZWJWaWV3Q2xhc3MtPnJ1bl9jb2xvcl9jaG9vc2VyID0gd2Vi
a2l0V2ViVmlld1J1bkNvbG9yQ2hvb3NlcjsKIAogICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZp
ZXc6d2ViLWNvbnRleHQ6CkBAIC0xMTQ5LDYgKzEyMjMsMzcgQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAg
ICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwgLyogbnVtYmVyIG9mIHBhcmFt
ZXRlcnMgKi8KICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX0ZJTEVfQ0hPT1NFUl9S
RVFVRVNUKTsKIAorICAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjpydW4tY29sb3ItY2hv
b3NlcjoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUg
c2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAcmVxdWVzdDogYSAjV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdAorICAgICAqCisgICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIHRoZSB1
c2VyIGludGVyYWN0cyB3aXRoIGEgJmx0O2lucHV0CisgICAgICogdHlwZT0nY29sb3InIC8mZ3Q7
IEhUTUwgZWxlbWVudCwgcmVxdWVzdGluZyBmcm9tIFdlYktpdCB0byBzaG93CisgICAgICogYSBk
aWFsb2cgdG8gc2VsZWN0IGEgY29sb3IuIFRvIGxldCB0aGUgYXBwbGljYXRpb24ga25vdyB0aGUg
ZGV0YWlscyBvZgorICAgICAqIHRoZSBjb2xvciBjaG9vc2VyLCBhcyB3ZWxsIGFzIHRvIGFsbG93
IHRoZSBjbGllbnQgYXBwbGljYXRpb24gdG8gZWl0aGVyCisgICAgICogY2FuY2VsIHRoZSByZXF1
ZXN0IG9yIHBlcmZvcm0gYW4gYWN0dWFsIGNvbG9yIHNlbGVjdGlvbiwgdGhlIHNpZ25hbCB3aWxs
CisgICAgICogcGFzcyBhbiBpbnN0YW5jZSBvZiB0aGUgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3QgaW4gdGhlIEByZXF1ZXN0CisgICAgICogYXJndW1lbnQuCisgICAgICoKKyAgICAgKiBUaGUg
ZGVmYXVsdCBzaWduYWwgaGFuZGxlciB3aWxsIGFzeW5jaHJvbm91c2x5IHJ1biBhIHJlZ3VsYXIK
KyAgICAgKiAjR3RrQ29sb3JDaG9vc2VyIGZvciB0aGUgdXNlciB0byBpbnRlcmFjdCB3aXRoLgor
ICAgICAqCisgICAgICogUmV0dXJuczogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9t
IGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4KKyAgICAgKiAgICVGQUxTRSB0byBwcm9wYWdh
dGUgdGhlIGV2ZW50IGZ1cnRoZXIuCisgICAgICoKKyAgICAgKi8KKyAgICBzaWduYWxzW1JVTl9D
T0xPUl9DSE9PU0VSXSA9CisgICAgICAgIGdfc2lnbmFsX25ldygicnVuLWNvbG9yLWNob29zZXIi
LAorICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwK
KyAgICAgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgICAg
ICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZpZXdDbGFzcywgcnVuX2NvbG9yX2Nob29z
ZXIpLAorICAgICAgICAgICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5k
bGVkLCAwIC8qIGFjY3VtdWxhdG9yIGRhdGEgKi8sCisgICAgICAgICAgICAgICAgICAgICB3ZWJr
aXRfbWFyc2hhbF9CT09MRUFOX19PQkpFQ1QsCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVf
Qk9PTEVBTiwgMSwgLyogbnVtYmVyIG9mIHBhcmFtZXRlcnMgKi8KKyAgICAgICAgICAgICAgICAg
ICAgIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCk7CisKKwogICAgIC8qKgogICAg
ICAqIFdlYktpdFdlYlZpZXc6OmNvbnRleHQtbWVudToKICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAj
V2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKQEAgLTE1NjcsNiAr
MTY3MiwxMiBAQCB2b2lkIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgV2ViS2l0RmlsZUNob29zZQogICAgIGdfc2lnbmFsX2VtaXQod2Vi
Vmlldywgc2lnbmFsc1tSVU5fRklMRV9DSE9PU0VSXSwgMCwgcmVxdWVzdCwgJnJldHVyblZhbHVl
KTsKIH0KIAordm9pZCB3ZWJraXRXZWJWaWV3UnVuQ29sb3JDaG9vc2VyUmVxdWVzdChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQorewor
ICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2ln
bmFsc1tSVU5fQ09MT1JfQ0hPT1NFUl0sIDAsIHJlcXVlc3QsICZyZXR1cm5WYWx1ZSk7Cit9CisK
IHN0YXRpYyBib29sIHdlYmtpdFdlYlZpZXdTaG91bGRTaG93SW5wdXRNZXRob2RzTWVudShXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEd0a1NldHRpbmdzKiBzZXR0aW5ncyA9IGd0a193
aWRnZXRfZ2V0X3NldHRpbmdzKEdUS19XSURHRVQod2ViVmlldykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGZkYmM2NjYuLjFj
NDVjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jh
c2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RmlsZUNob29zZXJS
ZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGaW5kQ29udHJvbGxlci5oPgogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0Lmg+CkBAIC0xODgsNiAr
MTg5LDggQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogICAgIGdib29sZWFuICAgKCog
bGVhdmVfZnVsbHNjcmVlbikgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAq
d2ViX3ZpZXcpOwogICAgIGdib29sZWFuICAgKCogcnVuX2ZpbGVfY2hvb3NlcikgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0ICAg
ICpyZXF1ZXN0KTsKKyAgICBnYm9vbGVhbiAgICgqIHJ1bl9jb2xvcl9jaG9vc2VyKSAgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Qg
ICAgKnJlcXVlc3QpOwogICAgIGdib29sZWFuICAgKCogY29udGV4dF9tZW51KSAgICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29udGV4dE1lbnUgICAgICAg
ICAgICpjb250ZXh0X21lbnUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2RrRXZlbnQgICAgICAgICAgICAgICAgICAgICpldmVudCwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
CmluZGV4IDBkZTBkMTcuLjg1MmFlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtNDgsNiArNDgsNyBA
QCB2b2lkIHdlYmtpdFdlYlZpZXdNb3VzZVRhcmdldENoYW5nZWQoV2ViS2l0V2ViVmlldyosIFdl
YktpdDo6V2ViSGl0VGVzdFJlc3VsdCosCiB2b2lkIHdlYmtpdFdlYlZpZXdQcmludEZyYW1lKFdl
YktpdFdlYlZpZXcqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqKTsKIHZvaWQgd2Via2l0V2ViVmll
d1Jlc291cmNlTG9hZFN0YXJ0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6V2ViRnJhbWVQcm94
eSosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV2ViS2l0VVJJUmVxdWVzdCopOwogdm9p
ZCB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXJSZXF1ZXN0KFdlYktpdFdlYlZpZXcqLCBXZWJL
aXRGaWxlQ2hvb3NlclJlcXVlc3QqKTsKK3ZvaWQgd2Via2l0V2ViVmlld1J1bkNvbG9yQ2hvb3Nl
clJlcXVlc3QoV2ViS2l0V2ViVmlldyosIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqKTsKIFdl
YktpdFdlYlJlc291cmNlKiB3ZWJraXRXZWJWaWV3R2V0TG9hZGluZ1dlYlJlc291cmNlKFdlYktp
dFdlYlZpZXcqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpOwogdm9pZCB3ZWJraXRXZWJW
aWV3UmVtb3ZlTG9hZGluZ1dlYlJlc291cmNlKFdlYktpdFdlYlZpZXcqLCB1aW50NjRfdCByZXNv
dXJjZUlkZW50aWZpZXIpOwogV2ViS2l0V2ViUmVzb3VyY2UqIHdlYmtpdFdlYlZpZXdSZXNvdXJj
ZUxvYWRGaW5pc2hlZChXZWJLaXRXZWJWaWV3KiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IGZjMzE3NmQuLjNhMzIxN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1z
ZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtNjYzLDYgKzY2MywyNyBAQCB3ZWJraXRfZmlsZV9j
aG9vc2VyX3JlcXVlc3RfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+Cis8RklMRT5X
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PC9GSUxFPgorV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dAord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcgord2Via2l0
X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3IKK3dlYmtpdF9jb2xvcl9jaG9vc2Vy
X3JlcXVlc3RfY2FuY2VsCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdENsYXNzCitXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QKK1dFQktJ
VF9DT0xPUl9DSE9PU0VSX1JFUVVFU1QKK1dFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1QK
K1dFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1MKK1dFQktJVF9JU19DT0xPUl9DSE9P
U0VSX1JFUVVFU1RfQ0xBU1MKK1dFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1RfR0VUX0NMQVNT
CisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0
ZQord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8
U0VDVElPTj4KIDxGSUxFPldlYktpdEZpbmRDb250cm9sbGVyPC9GSUxFPgogV2ViS2l0RmluZENv
bnRyb2xsZXIKIFdlYktpdEZpbmRPcHRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKaW5kZXggNGQ4ODQzZS4uZWI1
YjM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay50eXBlcwpAQCAtMjEsMyArMjEsNCBAQCB3ZWJraXRfd2ViX2luc3BlY3Rv
cl9nZXRfdHlwZQogd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdHlwZQogd2Via2l0X2Nv
bnRleHRfbWVudV9nZXRfdHlwZQogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF90eXBlCit3
ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5j
cHAKaW5kZXggZWE1ZTQwNC4uZDYwMTVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAt
Nzk2LDYgKzc5Niw2MSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0ZpbGVDaG9vc2VyUmVxdWVz
dChGaWxlQ2hvb3NlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0X2ZpbGVf
Y2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbChmaWxlQ2hvb3NlclJlcXVlc3QpOwogfQogCisjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCitjbGFzcyBDb2xvckNob29zZXJUZXN0OiBwdWJsaWMgVUlD
bGllbnRUZXN0IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKENvbG9yQ2hv
b3NlclRlc3QpOworICAgIENvbG9yQ2hvb3NlclRlc3QoKQorICAgIHsKKyAgICAgICAgZ19zaWdu
YWxfY29ubmVjdChtX3dlYlZpZXcsICJydW4tY29sb3ItY2hvb3NlciIsIEdfQ0FMTEJBQ0socnVu
Q29sb3JDaG9vc2VyQ2FsbGJhY2spLCB0aGlzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZ2Jvb2xl
YW4gcnVuQ29sb3JDaG9vc2VyQ2FsbGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3QqIHJlcXVlc3QsIENvbG9yQ2hvb3NlclRlc3QqIHRlc3QpCisgICAgeworICAg
ICAgICB0ZXN0LT5ydW5Db2xvckNob29zZXIocmVxdWVzdCk7CisgICAgICAgIHJldHVybiBUUlVF
OworICAgIH0KKworICAgIHZvaWQgcnVuQ29sb3JDaG9vc2VyKFdlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3QqIHJlcXVlc3QpCisgICAgeworICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVu
VGVzdEZpbmlzaGVzKEdfT0JKRUNUKHJlcXVlc3QpKTsKKyAgICAgICAgbV9jb2xvckNob29zZXJS
ZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wKTsK
KyAgICB9CisKKyAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiBjbGlja01vdXNlQnV0dG9u
QW5kV2FpdEZvckNvbG9yQ2hvb3NlclJlcXVlc3QoaW50IHgsIGludCB5KQorICAgIHsKKyAgICAg
ICAgY2xpY2tNb3VzZUJ1dHRvbih4LCB5KTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFp
bkxvb3ApOworICAgICAgICByZXR1cm4gbV9jb2xvckNob29zZXJSZXF1ZXN0LmdldCgpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBHUmVmUHRyPFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Q+IG1f
Y29sb3JDaG9vc2VyUmVxdWVzdDsKK307CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3Q29sb3JD
aG9vc2VyUmVxdWVzdChDb2xvckNob29zZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQorewor
ICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBjb2xvckNob29zZXJIVE1MID0gIjxodG1sPjxib2R5PjxpbnB1dCBzdHlsZT0n
cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO21hcmdpbjowO3BhZGRpbmc6MCcgdHlwZT0n
Y29sb3InIHZhbHVlPScjZmYwMDAwJy8+PC9ib2R5PjwvaHRtbD4iOworICAgIHRlc3QtPmxvYWRI
dG1sKGNvbG9yQ2hvb3NlckhUTUwsIDApOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hl
ZCgpOworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIGNvbG9yQ2hvb3NlclJlcXVlc3Qg
PSB0ZXN0LT5jbGlja01vdXNlQnV0dG9uQW5kV2FpdEZvckNvbG9yQ2hvb3NlclJlcXVlc3QoNSwg
NSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0
X2N1cnJlbnRfY29sb3IoY29sb3JDaG9vc2VyUmVxdWVzdCksID09LCAiI2ZmMDAwMCIpOworCisg
ICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCdpbnB1dCcpLnZhbHVlID0gJyMwMGZmMDAnOyIsIDApOworICAgIGdfYXNzZXJ0
X2NtcHN0cih3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9jdXJyZW50X2NvbG9yKGNv
bG9yQ2hvb3NlclJlcXVlc3QpLCA9PSwgIiMwMGZmMDAiKTsKKworICAgIHdlYmtpdF9jb2xvcl9j
aG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yKGNvbG9yQ2hvb3NlclJlcXVlc3QsICIjMDAwMGZm
Iik7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0
X2N1cnJlbnRfY29sb3IoY29sb3JDaG9vc2VyUmVxdWVzdCksID09LCAiIzAwMDBmZiIpOworCisg
ICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkph
dmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5w
dXQnKS52YWx1ZTsiLCAwKTsKKyAgICBHT3duUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdU
ZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICBn
X2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiIzAwMDBmZiIpOworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKIGNsYXNzIEZ1bGxTY3JlZW5DbGll
bnRUZXN0OiBwdWJsaWMgV2ViVmlld1Rlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNU
X0ZJWFRVUkUoRnVsbFNjcmVlbkNsaWVudFRlc3QpOwpAQCAtMTA4Myw2ICsxMTM4LDkgQEAgdm9p
ZCBiZWZvcmVBbGwoKQogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiY2Fu
LXNob3ctbWltZS10eXBlIiwgdGVzdFdlYlZpZXdDYW5TaG93TUlNRVR5cGUpOwogICAgIEZvcm1D
bGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAic3VibWl0LWZvcm0iLCB0ZXN0V2ViVmll
d1N1Ym1pdEZvcm0pOwogICAgIFNhdmVXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3Iiwg
InNhdmUiLCB0ZXN0V2ViVmlld1NhdmUpOworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQor
ICAgIENvbG9yQ2hvb3NlclRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJjb2xvci1jaG9vc2Vy
LXJlcXVlc3QiLCB0ZXN0V2ViVmlld0NvbG9yQ2hvb3NlclJlcXVlc3QpOworI2VuZGlmCiB9CiAK
IHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi40YWFkNWQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5jcHAKQEAgLTAsMCArMSw1OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmgiCisKKyNpbmNsdWRlICJDb2xv
ci5oIgorI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29sb3JD
aG9vc2VyUHJveHlHdGs6OldlYkNvbG9yQ2hvb3NlclByb3h5R3RrKFdlYkNvbG9yQ2hvb3NlclBy
b3h5OjpDbGllbnQqIGNsaWVudCwgR3RrV2lkZ2V0KiB3ZWJWaWV3LCBjb25zdCBDb2xvciYgaW5p
dGlhbENvbG9yLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKKyAgICA6IFdlYkNvbG9yQ2hv
b3NlclByb3h5KGNsaWVudCkKK3sKKyAgICBtX3JlcXVlc3QgPSBhZG9wdEdSZWYoR19PQkpFQ1Qo
d2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdENyZWF0ZShpbml0aWFsQ29sb3IsIG1fY2xpZW50KSkp
OworICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3
ZWJWaWV3LCAicnVuLWNvbG9yLWNob29zZXIiLCBtX3JlcXVlc3QuZ2V0KCksICZyZXR1cm5WYWx1
ZSk7Cit9CisKK3ZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHlHdGs6OnNldFNlbGVjdGVkQ29sb3Io
Y29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RT
ZXRDb2xvcihXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG1fcmVxdWVzdC5nZXQoKSksIGNv
bG9yKTsKK30KKwordm9pZCBXZWJDb2xvckNob29zZXJQcm94eUd0azo6ZW5kQ2hvb3NlcigpCit7
CisgICAgd2Via2l0V2ViQ29sb3JDaG9vc2VyUmVxdWVzdEVuZChXRUJLSVRfQ09MT1JfQ0hPT1NF
Ul9SRVFVRVNUKG1fcmVxdWVzdC5nZXQoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmYWQzN2MKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmgKQEAg
LTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJv
bmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRh
dGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29sb3JDaG9vc2VyUHJveHlHdGtfaAor
I2RlZmluZSBXZWJDb2xvckNob29zZXJQcm94eUd0a19oCisKKyNpbmNsdWRlICJXZWJDb2xvckNo
b29zZXJQcm94eS5oIgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb2xvcjsKK2Ns
YXNzIEludFJlY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDb2xvckNo
b29zZXJQcm94eUd0ayA6ICBwdWJsaWMgV2ViQ29sb3JDaG9vc2VyUHJveHkgeworCitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IGNyZWF0ZShXZWJD
b2xvckNob29zZXJQcm94eTo6Q2xpZW50KiBjbGllbnQsIEd0a1dpZGdldCogd2ViVmlldywgY29u
c3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
ZWxlbWVudFJlY3QpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbG9y
Q2hvb3NlclByb3h5R3RrKGNsaWVudCwgd2ViVmlldywgaW5pdGlhbENvbG9yLCBlbGVtZW50UmVj
dCkpOworICAgIH0KKyAgICB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29s
b3ImKTsKKyAgICB2b2lkIGVuZENob29zZXIoKTsKKworcHJpdmF0ZToKKyAgICBXZWJDb2xvckNo
b29zZXJQcm94eUd0ayhXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiwgR3RrV2lkZ2V0Kiwg
Y29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisKKyAgICBH
UmVmUHRyPEdPYmplY3Q+IG1fcmVxdWVzdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gV2ViQ29sb3JDaG9vc2VyUHJveHlHdGtfaAorCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggY2Q2NzM2My4uNTZhODYxYyAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMjY0LDcgKzI2NCw3IEBAIG15IEBmZWF0
dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOUFVUX1NQRUVDSCIsIGRlZmF1bHQg
PT4gMCwgdmFsdWUgPT4gXCRpbnB1dFNwZWVjaFN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+
ICJpbnB1dC10eXBlLWNvbG9yIiwgZGVzYyA9PiAiVG9nZ2xlIElucHV0IFR5cGUgQ29sb3Igc3Vw
cG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SIiwgZGVmYXVs
dCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSB8fCBpc1F0KCkpLCB2YWx1ZSA9PiBcJGlu
cHV0VHlwZUNvbG9yU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfSU5QVVRfVFlQ
RV9DT0xPUiIsIGRlZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgpIHx8IGlzRWZsKCkgfHwgaXNRdCgp
IHx8IGlzR3RrKCkpLCB2YWx1ZSA9PiBcJGlucHV0VHlwZUNvbG9yU3VwcG9ydCB9LAogCiAgICAg
eyBvcHRpb24gPT4gImlucHV0LXR5cGUtZGF0ZSIsIGRlc2MgPT4gIlRvZ2dsZSBJbnB1dCBUeXBl
IERhdGUgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlBVVF9UWVBFX0RBVEUi
LCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW5wdXRUeXBlRGF0ZVN1cHBvcnQgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180391</attachid>
            <date>2012-12-20 12:54:54 -0800</date>
            <delta_ts>2012-12-20 15:04:16 -0800</delta_ts>
            <desc>thanks a lot</desc>
            <filename>bug-98935-20121220125209.patch</filename>
            <type>text/plain</type>
            <size>66512</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJjOGE2OGM3ZmQ2NjEw
NDEyYTUxYTliMTQzYTdkODYyYmJjMGNmNS4uMDY1YmE3ZGE5NDhmZDQxMzViMDA4ZTVhZjhjZDI1
NjM0N2Y0YTExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTIwICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dU
S10gQWRkIHN1cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBpbnB1dCB0eXBlIGNvbG9yIGluIGZlYXR1cmUg
bGlzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmZlYXR1cmVzLmFtLmluOgorCiAyMDEyLTEy
LTE0ICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgaW5jb25zaXN0ZW5jeSBpbiBkcmF3SW1hZ2Ugd2l0aCB0YXJnZXQgcmVjdCBuZWdhdGl2
ZSBkaW1lbnNpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGQxN2NhMGZjN2U0NmVhNGZkOGNjM2My
YjM4NTVhM2RkNjZiN2QyMDkuLjJmODA4ZjM3YWZmYzU2YjY2NDM2ZWJmNTgxYzA0ZmIyMDEwZmY4
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMi0xMi0yMCAgQXJuYXVk
IFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFtHVEtd
IEFkZCBzdXBwb3J0IGZvciBjb2xvciBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgY29sb3IgY2hvb3NlciBmb3IgV2ViS2l0MS4g
CisKKyAgICAgICAgQ3JlYXRlIGEgQ29sb3JDaG9vc2VyR3RrIGNsYXNzLiBJdCBvd25zIGEgR3Rr
V2lkZ2V0IGNvbG9yIGNob29zZXIuIEl0CisgICAgICAgIHVwZGF0ZXMgdGhlIHdpZGdldCBjb2xv
ciB3aGVuIGl0cyA6OnNldFNlbGVjdGVkQ29sb3IgbWV0aG9kIGlzIGNhbGxlZC4KKyAgICAgICAg
VGhpcyB3aWRnZXQgaXMgY3JlYXRlZCBpbiBDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3Nl
cjogaXQgaXMgYQorICAgICAgICBHdGtDb2xvckNob29zZXJEaWFsb2cgZm9yIEdUSyA+PSAzLjQu
MCBvciBHdGtDb2xvclNlbGVjdGlvbkRpYWxvZyBmb3IKKyAgICAgICAgcHJldmlvdXMgR1RLIHZl
cnNpb25zLiBXaGVuIGRpYWxvZyByZWNlaXZlcyBhIHJlc3BvbnNlLAorICAgICAgICBjb2xvckNo
b29zZXJEaWFsb2dSZXNwb25zZUNhbGxiYWNrIGlzIGNhbGxlZC4gSWYgYSBjb2xvciBoYXMgYmVl
bgorICAgICAgICBzZWxlY3RlZCwgY2FsbCBjbGllbnQtPmRpZENob29zZUNvbG9yLgorCisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvbG9yQ2hv
b3NlckRpYWxvZ1Jlc3BvbnNlQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGll
bnQ6OmNyZWF0ZUNvbG9yQ2hvb3Nlcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmg6CisgICAgICAgIChDaHJvbWVDbGllbnQpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0NvbG9yQ2hvb3Nlckd0ay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb2xvckNob29zZXJHdGs6OkNvbG9yQ2hvb3Nlckd0ayk6CisgICAg
ICAgIChXZWJDb3JlOjpDb2xvckNob29zZXJHdGs6On5Db2xvckNob29zZXJHdGspOgorICAgICAg
ICAoV2ViQ29yZTo6Q29sb3JDaG9vc2VyR3RrOjpzZXRTZWxlY3RlZENvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbG9yQ2hvb3Nlckd0azo6ZW5kQ2hvb3Nlcik6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ29sb3JDaG9vc2VyR3RrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChDb2xvckNob29zZXJHdGspOgorCiAyMDEyLTEwLTAxICBBcm5hdWQgUmVuZXZpZXIg
IDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0d0a10gdG9vIGxvbmcg
ZnVuY3Rpb24gaW4gYW5pbWF0aW9uIHNjcmlwdCBjYXVzZSByZXBhaW50IHRvIG5ldmVyIGhhcHBl
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCBlMzJkZDZhNWViYzVkZGQwOWJiNzdhZjQyMjcyOWNlMjliOWQwZTJk
Li5iMzMwYzUwZGFlMWZkOWMwZjUyMWU2ZTdhM2I1YmMwMzU4ZmI3MjliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjUgQEAKKzIwMTItMTItMjAgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJA
c2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY29sb3Ig
aW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
OTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IGlucHV0IGNvbG9yIHR5cGUgZm9yIFdlYktpdDIuCisKKyAgICAgICAgU2ltaWxhcmx5
IHRvIHdoYXQgaGFwcGVucyBmb3IgZmlsZSBjaG9vc2VyLCB3aGVuIGEgY29sb3IgY2hvb3NlciBp
cworICAgICAgICBuZWVkZWQsIHdlIGVtaXQgYSBydW4tY29sb3ItY2hvb3NlciBzaWduYWwgd2l0
aCBhCisgICAgICAgICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IG9iamVjdC4gSWYgdGhlIHNp
Z25hbCBpcyBub3QgaGFuZGxlZCBieSB0aGUKKyAgICAgICAgYXBwbGljYXRpb24sIHdlIHNob3cg
YSBHdGtHdGtDb2xvckNob29zZXJEaWFsb2cgKG9yCisgICAgICAgIEd0a0NvbG9yU2VsZWN0aW9u
RGlhbG9nIGZvciBHdGsgPCAzLjQuMCkuCisKKyAgICAgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCBhcGkgYWxsb3dzIHRvIHJlYWQgY3VycmVudCBjb2xvciAoZWl0aGVyCisgICAgICAgIGlu
aXRpYWwgY29sb3Igc2V0IGJ5IFdlYkNvcmUgb3IgbGF0ZXIsIGNvbG9yIHNlbGVjdGVkIGJ5IHVz
ZXIpLCB0bworICAgICAgICBzZWxlY3QgYSBjb2xvciwgb3IgdG8gY2FuY2VsIGEgcmVxdWVzdC4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZSk6CisgICAgICAgICh3ZWJraXRfY29sb3JfY2hvb3Nl
cl9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVx
dWVzdF9jYW5jZWwpOgorICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxl
Y3RfY29sb3IpOgorICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3Vy
cmVudF9jb2xvcik6CisgICAgICAgICh3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0Q3JlYXRlKToK
KyAgICAgICAgKHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RFbmQpOgorICAgICAgICAod2Vi
a2l0V2ViQ29sb3JDaG9vc2VyUmVxdWVzdFNldENvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoX1dl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3QpOgorICAgICAgICAoX1dlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3RDbGFzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh1cGRhdGVDb2xvckNob29zZXJDb2xvclZhbHVl
KToKKyAgICAgICAgKGNvbG9yQ2hvb3NlclJlcXVlc3RDaGFuZ2VDYWxsYmFjayk6CisgICAgICAg
IChjb2xvckNob29zZXJSZXF1ZXN0RW5kQ2FsbGJhY2spOgorICAgICAgICAoY29sb3JDaG9vc2Vy
RGlhbG9nUmVzcG9uc2VDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3UnVuQ29sb3JD
aG9vc2VyKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdSdW5Db2xvckNob29zZXJSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgIChfV2ViS2l0V2ViVmlld0NsYXNz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoKKyAg
ICAgICAgKHRlc3RXZWJWaWV3Q29sb3JDaG9vc2VyUmVxdWVzdCk6CisgICAgICAgIChiZWZvcmVB
bGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hv
b3NlclByb3h5R3RrOjpXZWJDb2xvckNob29zZXJQcm94eUd0ayk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbG9yQ2hvb3NlclByb3h5R3RrOjpzZXRTZWxlY3RlZENvbG9yKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlHdGs6OmVuZENob29zZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb2xvckNob29zZXJQcm94
eUd0ayk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5R3RrOjpjcmVhdGUp
OgorCiAyMDEyLTEyLTEzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlc291cmNlIGxvYWRzIHNvbWV0aW1lcyBzdGFsbApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuZmVhdHVyZXMuYW0uaW4gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5mZWF0dXJlcy5hbS5pbgppbmRleCA2MjcxMDZmNTY4Mzg3OTU4NDhmMzFmZWRlOWFm
ZmY3YjVhOTY3ZWJiLi43MjgyZGEzMzc4Yjc1YTVkN2E3NjhlMDE4NmQwNThmZDEwODVhNzdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5mZWF0dXJlcy5hbS5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5mZWF0dXJlcy5hbS5pbgpAQCAtMzksNyArMzks
NyBAQCBmZWF0dXJlX2RlZmluZXNfZGVmYXVsdHMgKz0gXAogCUVOQUJMRV9JRlJBTUVfU0VBTUxF
U1M9MSBcCiAJRU5BQkxFX0lOREVYRURfREFUQUJBU0U9MCBcCiAJRU5BQkxFX0lOUFVUX1NQRUVD
SD0wIFwKLQlFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUj0wIFwKKwlFTkFCTEVfSU5QVVRfVFlQRV9D
T0xPUj0xIFwKIAlFTkFCTEVfSU5QVVRfVFlQRV9EQVRFPTAgXAogCUVOQUJMRV9JTlBVVF9UWVBF
X0RBVEVUSU1FPTAgXAogCUVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUw9MCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IGUwZDhjZWE4OTdkZWQ5NzY1MWFmODQ1NGM4ZTVmMmI1
ZWIzZDYzMTIuLjNkMTExMTBhYjVjMGFhNDM3Mjg1ZTI2NjNhMjE4Y2MyN2UyYWY1MGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC0xODQsNiArMTg0LDggQEAgd2Via2l0Z3RrX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Fzc2VydE1hdGNoaW5n
RW51bXMuY3BwIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRHdGsuaCBcCisJU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29sb3JDaG9vc2Vy
R3RrLmNwcCBcCisJU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29sb3JDaG9vc2Vy
R3RrLmggXAogCVNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xp
ZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1l
bnVDbGllbnRHdGsuaCBcCiAJU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRGV2aWNl
TW90aW9uQ2xpZW50R3RrLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCAwYWQzZDk3ZDE5NWNlMDM0ZTUxN2Nj
NDNlZWI2NTdkODM3ZDgxMGMxLi43MzFiNzhhNTdlYWI3MWFhZDQ0Yjg5MWUwMjIwMGRhM2U0YWEy
YTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5jcHAKQEAgLTc3LDYgKzc3LDExIEBACiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5h
Z2VyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorI2luY2x1ZGUg
IkNvbG9yQ2hvb3NlckNsaWVudC5oIgorI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlckd0ay5oIgorI2Vu
ZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTgzNiw2ICs4NDEsNTAgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90KQogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK3N0YXRpYyB2b2lkIGNv
bG9yQ2hvb3NlckRpYWxvZ1Jlc3BvbnNlQ2FsbGJhY2soR3RrRGlhbG9nKiBkaWFsb2csIGdpbnQg
cmVzcG9uc2VJRCwgQ29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKHJlc3Bv
bnNlSUQgPT0gR1RLX1JFU1BPTlNFX09LKSB7CisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgNCwg
MCkKKyAgICAgICAgR2RrUkdCQSBjb2xvcjsKKyAgICAgICAgZ3RrX2NvbG9yX2Nob29zZXJfZ2V0
X3JnYmEoR1RLX0NPTE9SX0NIT09TRVIoZGlhbG9nKSwgJmNvbG9yKTsKKyNlbHNlCisgICAgICAg
IEdka0NvbG9yIGNvbG9yOworICAgICAgICBHdGtXaWRnZXQqIGNvbG9yU2VsZWN0aW9uID0gZ3Rr
X2NvbG9yX3NlbGVjdGlvbl9kaWFsb2dfZ2V0X2NvbG9yX3NlbGVjdGlvbihHVEtfQ09MT1JfU0VM
RUNUSU9OX0RJQUxPRyhkaWFsb2cpKTsKKyAgICAgICAgZ3RrX2NvbG9yX3NlbGVjdGlvbl9nZXRf
Y3VycmVudF9jb2xvcihHVEtfQ09MT1JfU0VMRUNUSU9OKGNvbG9yU2VsZWN0aW9uKSwgJmNvbG9y
KTsKKyNlbmRpZgorICAgICAgICBjbGllbnQtPmRpZENob29zZUNvbG9yKGNvbG9yKTsKKyAgICB9
CisgICAgY2xpZW50LT5kaWRFbmRDaG9vc2VyKCk7Cit9CisKK1Bhc3NPd25QdHI8Q29sb3JDaG9v
c2VyPiBDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQq
IGNsaWVudCwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvcikKK3sKKyNpZiBHVEtfQ0hFQ0tfVkVS
U0lPTigzLCA0LCAwKQorICAgIEd0a1dpZGdldCogcGFyZW50ID0gZ3RrX3dpZGdldF9nZXRfdG9w
bGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKyAgICBpZiAoIWd0a193aWRnZXRfaXNfdG9w
bGV2ZWwocGFyZW50KSB8fCAhR1RLX0lTX1dJTkRPVyhwYXJlbnQpKQorICAgICAgICBwYXJlbnQg
PSAwOworICAgIEd0a1dpZGdldCogZGlhbG9nID0gIGd0a19jb2xvcl9jaG9vc2VyX2RpYWxvZ19u
ZXcoXygiU2VsZWN0IENvbG9yIiksIEdUS19XSU5ET1cocGFyZW50KSk7CisKKyAgICBndGtfY29s
b3JfY2hvb3Nlcl9zZXRfdXNlX2FscGhhKEdUS19DT0xPUl9DSE9PU0VSKGRpYWxvZyksIEZBTFNF
KTsKKyAgICBHZGtSR0JBIHJnYmEgPSBzdGF0aWNfY2FzdDxHZGtSR0JBPihpbml0aWFsQ29sb3Ip
OworICAgIGd0a19jb2xvcl9jaG9vc2VyX3NldF9yZ2JhKEdUS19DT0xPUl9DSE9PU0VSKGRpYWxv
ZyksICZyZ2JhKTsKKyNlbHNlCisgICAgR3RrV2lkZ2V0KiBkaWFsb2cgPSBndGtfY29sb3Jfc2Vs
ZWN0aW9uX2RpYWxvZ19uZXcoXygiU2VsZWN0IENvbG9yIikpOworICAgIEd0a1dpZGdldCogY29s
b3JTZWxlY3Rpb24gPSBndGtfY29sb3Jfc2VsZWN0aW9uX2RpYWxvZ19nZXRfY29sb3Jfc2VsZWN0
aW9uKEdUS19DT0xPUl9TRUxFQ1RJT05fRElBTE9HKGRpYWxvZykpOworICAgIGd0a19jb2xvcl9z
ZWxlY3Rpb25fc2V0X2hhc19wYWxldHRlKEdUS19DT0xPUl9TRUxFQ1RJT04oY29sb3JTZWxlY3Rp
b24pLCBUUlVFKTsKKworICAgIEdka0NvbG9yIHJnYiA9IHswLCBpbml0aWFsQ29sb3IucmVkKCkg
PDwgOCwgIGluaXRpYWxDb2xvci5ncmVlbigpIDw8IDgsIGluaXRpYWxDb2xvci5ibHVlKCkgPDwg
OCB9OworICAgIGd0a19jb2xvcl9zZWxlY3Rpb25fc2V0X2N1cnJlbnRfY29sb3IoR1RLX0NPTE9S
X1NFTEVDVElPTihjb2xvclNlbGVjdGlvbiksICZyZ2IpOworI2VuZGlmCisKKyAgICBnX3NpZ25h
bF9jb25uZWN0KGRpYWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhjb2xvckNob29zZXJEaWFs
b2dSZXNwb25zZUNhbGxiYWNrKSwgY2xpZW50KTsKKyAgICBndGtfd2lkZ2V0X3Nob3coZGlhbG9n
KTsKKworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ29sb3JDaG9vc2VyR3RrKGRpYWxvZywgY2xp
ZW50KSk7Cit9CisjZW5kaWYKKwogdm9pZCBDaHJvbWVDbGllbnQ6OnJ1bk9wZW5QYW5lbChGcmFt
ZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IHBycEZpbGVDaG9vc2VyKQogewogICAgIEdSZWZQ
dHI8V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdF9m
aWxlX2Nob29zZXJfcmVxdWVzdF9jcmVhdGUocHJwRmlsZUNob29zZXIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIGIvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKaW5kZXggYTAx
ZmQzM2NiYWVjOWE1NDUzZDNmNjU1MjlmMjFlODFkYmVkNjY1Zi4uMzc0Yzg3YmVlNDljMTFiM2Ji
NmFkMmVlYzgwMzFlZGY5NTY5MjFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKQEAgLTMwLDYgKzMwLDkgQEAKICNpbmNsdWRl
ICJSZWdpb24uaCIKICNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJUaW1l
ci5oIgorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorI2luY2x1ZGUgIkNvbG9yQ2hvb3Nl
ci5oIgorI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsKQEAgLTEyMCw2ICsxMjMsMTEgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAjZW5kaWYKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBD
YWNoZVNpemUoaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFj
aGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCB0
b3RhbFNwYWNlTmVlZGVkKTsKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgICAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoQ29s
b3JDaG9vc2VyQ2xpZW50KiwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvcik7CisjZW5kaWYKKwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxl
Q2hvb3Nlcj4pOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBW
ZWN0b3I8V1RGOjpTdHJpbmc+JiwgRmlsZUljb25Mb2FkZXIqKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29sb3JDaG9vc2VyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbG9yQ2hvb3Nlckd0ay5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTFlM2Q3MjQ3OTE5OWE1YTY2YTI5ZDdkZWY3NTk1NjkxNDAyZGNmOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbG9yQ2hvb3Nlckd0ay5j
cHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBF
bGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgor
ICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisjaW5jbHVkZSAiQ29sb3JDaG9vc2VyR3RrLmgiCisK
KyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkNvbG9yQ2hvb3NlckNsaWVudC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0NvbG9yQ2hvb3Nlckd0azo6Q29sb3JDaG9vc2VyR3RrKEd0
a1dpZGdldCogY29sb3JDaG9vc2VyLCBDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCkKKyAgICA6
IG1fY29sb3JDaG9vc2VyKGNvbG9yQ2hvb3NlciksIG1fY2xpZW50KGNsaWVudCkKK3sKKyAgICBB
U1NFUlQobV9jb2xvckNob29zZXIpOworICAgIEFTU0VSVChtX2NsaWVudCk7Cit9CisKK0NvbG9y
Q2hvb3Nlckd0azo6fkNvbG9yQ2hvb3Nlckd0aygpCit7CisgICAgZ3RrX3dpZGdldF9kZXN0cm95
KG1fY29sb3JDaG9vc2VyLmdldCgpKTsKK30KKwordm9pZCBDb2xvckNob29zZXJHdGs6OnNldFNl
bGVjdGVkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworI2lmIEdUS19DSEVDS19WRVJTSU9O
KDMsIDQsIDApCisgICAgR2RrUkdCQSByZ2JhID0gc3RhdGljX2Nhc3Q8R2RrUkdCQT4oY29sb3Ip
OworICAgIGd0a19jb2xvcl9jaG9vc2VyX3NldF9yZ2JhKEdUS19DT0xPUl9DSE9PU0VSKG1fY29s
b3JDaG9vc2VyLmdldCgpKSwgJnJnYmEpOworI2Vsc2UKKyAgICBHdGtXaWRnZXQqIGNvbG9yU2Vs
ZWN0aW9uID0gZ3RrX2NvbG9yX3NlbGVjdGlvbl9kaWFsb2dfZ2V0X2NvbG9yX3NlbGVjdGlvbihH
VEtfQ09MT1JfU0VMRUNUSU9OX0RJQUxPRyhtX2NvbG9yQ2hvb3Nlci5nZXQoKSkpOworICAgIEdk
a0NvbG9yIHJnYiA9IHswLCBjb2xvci5yZWQoKSA8PCA4LCAgY29sb3IuZ3JlZW4oKSA8PCA4LCBj
b2xvci5ibHVlKCkgPDwgOCB9OworICAgIGd0a19jb2xvcl9zZWxlY3Rpb25fc2V0X2N1cnJlbnRf
Y29sb3IoR1RLX0NPTE9SX1NFTEVDVElPTihjb2xvclNlbGVjdGlvbiksICZyZ2IpOworI2VuZGlm
Cit9CisKK3ZvaWQgQ29sb3JDaG9vc2VyR3RrOjplbmRDaG9vc2VyKCkKK3sKKyAgICBtX2NsaWVu
dC0+ZGlkRW5kQ2hvb3NlcigpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nv
bG9yQ2hvb3Nlckd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29sb3JD
aG9vc2VyR3RrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYwZDdhODc1MTkzZmZkZmMyNTFlYmZlNDdmM2QwZmY2
MTViMWRkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0NvbG9yQ2hvb3Nlckd0ay5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMg
SVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENv
bG9yQ2hvb3Nlckd0a19oCisjZGVmaW5lIENvbG9yQ2hvb3Nlckd0a19oCisKKyNpbmNsdWRlICJD
b2xvckNob29zZXIuaCIKKworI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29sb3JDaG9v
c2VyQ2xpZW50OworY2xhc3MgQ29sb3I7CisKK2NsYXNzIENvbG9yQ2hvb3Nlckd0ayA6IHB1Ymxp
YyBDb2xvckNob29zZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IENvbG9yQ2hvb3Nlckd0ayhH
dGtXaWRnZXQqLCBDb2xvckNob29zZXJDbGllbnQqKTsKKyAgICB+Q29sb3JDaG9vc2VyR3RrKCk7
CisKKyAgICAvLyBDb2xvckNob29zZXIgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lk
IHNldFNlbGVjdGVkQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kQ2hv
b3NlcigpOworCitwcml2YXRlOgorICAgIEdSZWZQdHI8R3RrV2lkZ2V0PiBtX2NvbG9yQ2hvb3Nl
cjsKKyAgICBDb2xvckNob29zZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworfQorCisjZW5kaWYg
Ly8gQ29sb3JDaG9vc2VyR3RrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDZi
NjkzOWIyYjk4MmJiMWEwYTFiODZkM2MwNzQ3OWMyNzA0MDY3NzUuLjhiYjVhZDQ2MThkY2NhMWUz
Yzc1NDQ1OWNiYzlhMjk3YTE4MGQ5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpA
QCAtOTYsNiArOTYsNyBAQCB3ZWJraXQyX2hfYXBpICs9IFwKIHdlYmtpdDJndGtfaF9hcGkgKz0g
XAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0Lmgg
XAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRl
bS5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3QuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVu
dS5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0
aW9ucy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51
SXRlbS5oIFwKQEAgLTYzOSw2ICs2NDAsOSBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBc
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0
SXRlbS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tG
b3J3YXJkTGlzdFByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaCBcCisJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudVByaXZh
dGUuaCBcCkBAIC03ODgsNiArNzkyLDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwIFwKKwlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmNwcCBcCisJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5j
cHAKaW5kZXggOTJiMzE4OGE1OGU2ZjQ2MzlhNWVlMWYwNzkzZjBjMWYxNWY4YzhhYS4uNWY0Mjg4
ZmNmMjJhOGFlMTI0ODQyMjcyY2VhMmI1MWQyYTBlYTA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtNDQsNiArNDQs
MTAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyNpbmNsdWRlICJX
ZWJDb2xvckNob29zZXJQcm94eUd0ay5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTIyOSwxMCArMjMzLDkgQEAgUGFzc1JlZlB0
cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQ
cm94eShXZWJQYWdlUHIKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUGFzc1Jl
ZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hv
b3NlclByb3h5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpCitQYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25z
dCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBl
bGVtZW50UmVjdCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAg
IHJldHVybiBXZWJDb2xvckNob29zZXJQcm94eUd0azo6Y3JlYXRlKHBhZ2UsIG1fdmlld1dpZGdl
dCwgaW5pdGlhbENvbG9yLCBlbGVtZW50UmVjdCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTVmNWIyZGEyY2Y1MGU5YTM1ZjY2MGRkMDcxMzVi
N2QyMGIxMjRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHAKQEAgLTAsMCArMSwxOTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
CisgKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIldlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3RQcml2YXRlLmgiCisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0CisgKiBAU2hvcnRfZGVzY3JpcHRpb246IEEgcmVxdWVzdCB0byBvcGVuIGEgY29s
b3IgY2hvb3NlcgorICogQFRpdGxlOiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0CisgKiBAU2Vl
X2Fsc286ICNXZWJLaXRXZWJWaWV3CisgKgorICogV2hlbmV2ZXIgdGhlIHVzZXIgaW50ZXJhY3Rz
IHdpdGggYW4gJmx0O2lucHV0IHR5cGU9J2NvbG9yJyAvJmd0OworICogSFRNTCBlbGVtZW50LCBX
ZWJLaXQgd2lsbCBuZWVkIHRvIHNob3cgYSBkaWFsb2cgdG8gY2hvb3NlIGEgY29sb3IuIEZvciB0
aGF0CisgKiB0byBoYXBwZW4gaW4gYSBnZW5lcmFsIHdheSwgaW5zdGVhZCBvZiBqdXN0IG9wZW5p
bmcgYSAjR3RrQ29sb3JDaG9vc2VyCisgKiAod2hpY2ggbWlnaHQgYmUgbm90IGRlc2lyYWJsZSBp
biBzb21lIGNhc2VzLCB3aGljaCBjb3VsZCBwcmVmZXIgdG8gdXNlIHRoZWlyCisgKiBvd24gY29s
b3IgY2hvb3NlciBkaWFsb2cpLCBXZWJLaXQgd2lsbCBmaXJlIHRoZQorICogI1dlYktpdFdlYlZp
ZXc6OnJ1bi1jb2xvci1jaG9vc2VyIHNpZ25hbCB3aXRoIGEgI1dlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3QKKyAqIG9iamVjdCwgd2hpY2ggd2lsbCBhbGxvdyB0aGUgY2xpZW50IGFwcGxpY2F0aW9u
IHRvIHNwZWNpZnkgdGhlIGNvbG9yIHRvIGJlCisgKiBzZWxlY3RlZCwgdG8gaW5zcGVjdCB0aGUg
ZGV0YWlscyBvZiB0aGUgcmVxdWVzdCAoZS5nLiB0byBnZXQgaW5pdGlhbCBjb2xvcikKKyAqIGFu
ZCB0byBjYW5jZWwgdGhlIHJlcXVlc3QsIGluIGNhc2Ugbm90aGluZyB3YXMgc2VsZWN0ZWQuCisg
KgorICogSW4gY2FzZSB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIGRvZXMgbm90IHdpc2ggdG8gaGFu
ZGxlIHRoaXMgc2lnbmFsLAorICogV2ViS2l0IHdpbGwgcHJvdmlkZSBhIGRlZmF1bHQgaGFuZGxl
ciB3aGljaCB3aWxsIGFzeW5jaHJvbm91c2x5IHJ1bgorICogYSByZWd1bGFyICNHdGtDb2xvckNo
b29zZXIgZm9yIHRoZSB1c2VyIHRvIGludGVyYWN0IHdpdGguCisgKi8KKworc3RydWN0IF9XZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZSB7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCisgICAgV2ViQ29sb3JDaG9vc2VyUHJveHk6OkNsaWVudCogY2xpZW50OworI2VuZGlmCisg
ICAgQ29sb3IgY29sb3I7CisgICAgYm9vbCBoYW5kbGVkUmVxdWVzdDsKK307CisKK1dFQktJVF9E
RUZJTkVfVFlQRShXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LCB3ZWJraXRfY29sb3JfY2hvb3Nl
cl9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNUKQorCitlbnVtIHsKKyAgICBFTkRfQ0hPT1NFUiwKKyAg
ICBDSEFOR0VfQ09MT1IsCisKKyAgICBMQVNUX1NJR05BTAorfTsKKworc3RhdGljIGd1aW50IHNp
Z25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OworCitzdGF0aWMgdm9pZCB3ZWJraXRDb2xvckNo
b29zZXJSZXF1ZXN0RGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgcHJpbnRmKCIlc1xu
IiwgX19mdW5jX18pOworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QgPSBX
RUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iamVjdCk7CisKKyAgICAvLyBNYWtlIHN1cmUg
dGhlIHJlcXVlc3QgaXMgYWx3YXlzIGhhbmRsZWQgYmVmb3JlIGZpbmFsaXppbmcuCisgICAgaWYg
KCFyZXF1ZXN0LT5wcml2LT5oYW5kbGVkUmVxdWVzdCkKKyAgICAgICAgd2Via2l0X2NvbG9yX2No
b29zZXJfcmVxdWVzdF9jYW5jZWwocmVxdWVzdCk7CisKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJr
aXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsK
K30KKworc3RhdGljIHZvaWQgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jbGFzc19pbml0
KFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcyogcmVxdWVzdENsYXNzKQoreworICAgIEdP
YmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwor
ICAgIG9iamVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdERpc3Bv
c2U7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0OmVuZC1jaG9v
c2VyOgorICAgICAqIEByZXF1ZXN0OiB0aGUgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Qgb24g
d2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4g
cmVxdWVzdCBtdXN0IGJlIHRlcm1pbmF0ZWQuIFRoaXMgaGFwcGVucyBmb3IgZXhhbXBsZSBpZiB0
aGUKKyAgICAgKiBwYWdlIHRyaWdnZXJpbmcgdGhlIHJlcXVlc3QgdW5sb2FkcyBiZWZvcmUgdGhl
IHJlcXVlc3QgaXMgY29tcGxldGVkLgorICAgICAqLworICAgIHNpZ25hbHNbRU5EX0NIT09TRVJd
ID0KKyAgICAgICAgZ19zaWduYWxfbmV3KCJlbmQtY2hvb3NlciIsCisgICAgICAgICAgICAgICAg
IEdfVFlQRV9GUk9NX0NMQVNTKG9iamVjdENsYXNzKSwKKyAgICAgICAgICAgICAgICAgR19TSUdO
QUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgICAgICAg
IGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19WT0lELAorICAgICAgICAgICAgICAgIEdfVFlQRV9O
T05FLCAwKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Q6Y2hh
bmdlLWNvbG9yOgorICAgICAqIEByZXF1ZXN0OiB0aGUgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQGNvbG9yOiB0aGUgbmV3
IGNvbG9yCisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gZGVmYXVsdCB2YWx1ZSBvZiByZXF1
ZXN0IGlzIGNoYW5nZWQuCisgICAgICovCisgICAgc2lnbmFsc1tDSEFOR0VfQ09MT1JdID0KKyAg
ICAgICAgZ19zaWduYWxfbmV3KCJjaGFuZ2UtY29sb3IiLAorICAgICAgICAgICAgICAgICBHX1RZ
UEVfRlJPTV9DTEFTUyhvYmplY3RDbGFzcyksCisgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JV
Tl9MQVNULAorICAgICAgICAgICAgICAgICAwLCAwLCAwLAorICAgICAgICAgICAgICAgICBnX2Nj
bG9zdXJlX21hcnNoYWxfVk9JRF9fU1RSSU5HLAorICAgICAgICAgICAgICAgIEdfVFlQRV9OT05F
LCAxLAorICAgICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcpOworfQorCisvKioKKyAqIHdlYmtp
dF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QKKyAqCisgKiBBc2sgV2ViS2l0IHRvIGNhbmNlbCB0aGUgcmVxdWVz
dC4gSXQncyBpbXBvcnRhbnQgdG8gZG8gdGhpcyBpbiBjYXNlCisgKiBubyBzZWxlY3Rpb24gaGFz
IGJlZW4gbWFkZSBpbiB0aGUgY2xpZW50LCBvdGhlcndpc2UgdGhlIHJlcXVlc3QKKyAqIHdvbid0
IGJlIHByb3Blcmx5IGNvbXBsZXRlZCBhbmQgdGhlIGJyb3dzZXIgd2lsbCBrZWVwIHRoZSByZXF1
ZXN0CisgKiBwZW5kaW5nIGZvcmV2ZXIsIHdoaWNoIG1pZ2h0IGNhdXNlIHRoZSBicm93c2VyIHRv
IGhhbmcuCisgKi8KK3ZvaWQgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwoV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKK3sKKyNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKKyAgICByZXF1ZXN0LT5wcml2LT5jbGllbnQtPmRpZEVuZENvbG9yQ2hvb3Nlcigp
OworICAgIHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0ID0gVFJVRTsKKyNlbmRpZgorfQor
CisvKioKKyAqIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yOgorICog
QHJlcXVlc3Q6IGEgI1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdAorICogQGNvbG9yOiAoYXJyYXkg
emVyby10ZXJtaW5hdGVkPTEpICh0cmFuc2ZlciBub25lKTogYQorICoKKyAqIEFzayBXZWJLaXQg
dG8gc2VsZWN0IGNvbG9yIGFuZCBjb21wbGV0ZSB0aGUgcmVxdWVzdC4KKyAqLwordm9pZCB3ZWJr
aXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvcihXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBnY2hhciogY29sb3IpCit7CisgICAgcmVxdWVzdC0+cHJp
di0+Y29sb3IgPSBDb2xvcihjb2xvcik7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisg
ICAgcmVxdWVzdC0+cHJpdi0+Y2xpZW50LT5kaWRDaG9vc2VDb2xvcihyZXF1ZXN0LT5wcml2LT5j
b2xvcik7CisgICAgcmVxdWVzdC0+cHJpdi0+Y2xpZW50LT5kaWRFbmRDb2xvckNob29zZXIoKTsK
KyNlbmRpZgorICAgIHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0ID0gVFJVRTsKK30KKwor
LyoqCisgKiB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9jdXJyZW50X2NvbG9yOgor
ICogQHJlcXVlc3Q6IGEgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAqCisgKiBSZXR1cm5z
OiB0aGUgY3VycmVudCBjb2xvciBvZiByZXF1ZXN0LiBXaGlsZSBubyBjb2xvciBoYXMgYmVlbiBz
ZWxlY3RlZCwgaXQKKyAqIGlzIHRoZSBpbml0aWFsIHZhbHVlIGRlZmluZWQgYnkgV2ViS2l0LiBX
aGVuIGEgY29sb3IgaGFzIGJlZW4gc2VsZWN0ZWQsIHRoaXMKKyAqIGJlY29tZXMgdGhlIHNlbGVj
dGVkIHZhbHVlLgorICovCitjb25zdCBnY2hhciogd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVz
dF9nZXRfY3VycmVudF9jb2xvcihXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQor
eworICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT5jb2xvci5zZXJpYWxpemVkKCkuYXNjaWkoKS5k
YXRhKCk7Cit9CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK1dlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3QqIHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RDcmVhdGUoY29uc3QgQ29sb3Ig
aW5pdGlhbENvbG9yLCBXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiBjbGllbnQpCit7Cisg
ICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9DT0xPUl9DSE9P
U0VSX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVT
VCwgTlVMTCkpOworICAgIHJlcXVlc3QtPnByaXYtPmNsaWVudCA9IGNsaWVudDsKKyAgICByZXF1
ZXN0LT5wcml2LT5jb2xvciA9IGluaXRpYWxDb2xvcjsKKyAgICByZXF1ZXN0LT5wcml2LT5oYW5k
bGVkUmVxdWVzdCA9IEZBTFNFOworICAgIHJldHVybiByZXF1ZXN0OworfQorCit2b2lkIHdlYmtp
dFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RFbmQoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVx
dWVzdCkKK3sKKyAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbChyZXF1ZXN0
KTsKKyAgICBnX3NpZ25hbF9lbWl0KHJlcXVlc3QsIHNpZ25hbHNbRU5EX0NIT09TRVJdLCAwLCBO
VUxMKTsKK30KKwordm9pZCB3ZWJraXRXZWJDb2xvckNob29zZXJSZXF1ZXN0U2V0Q29sb3IoV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgQ29sb3IgY29sb3IpCit7Cisg
ICAgcmVxdWVzdC0+cHJpdi0+Y29sb3IgPSBjb2xvcjsKKyAgICBnX3NpZ25hbF9lbWl0KHJlcXVl
c3QsIHNpZ25hbHNbQ0hBTkdFX0NPTE9SXSwgMCwgcmVxdWVzdC0+cHJpdi0+Y29sb3Iuc2VyaWFs
aXplZCgpLmFzY2lpKCkuZGF0YSgpLCBOVUxMKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmExMjRhYjJlZjRlZTI5ZDdkNjQ3N2I4ZmZkOTZlOTY4NWViYzc0
YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHly
aWdodCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
ICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiAh
ZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxB
VElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBk
aXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0X2gK
KyNkZWZpbmUgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdF9oCisKKyNpbmNsdWRlIDxndGsvZ3Rr
Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMK
KworI2RlZmluZSBXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QgICAgICAgICAgICAo
d2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRf
Q09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RB
TkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCwgV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdCkpCisjZGVmaW5lIFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVF
U1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VC
S0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNULCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iaikgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0NPTE9S
X0NIT09TRVJfUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVF
U1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lU
X1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX0NPTE9SX0NIT09T
RVJfUkVRVUVTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9i
aiksICBXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QsIFdlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0ICAgICAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcyAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RD
bGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZSBX
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0IHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIC8qPCBwcml2YXRlID4q
LworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlICpwcml2OworfTsKKworc3Ry
dWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBw
YXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfY29sb3JfY2hvb3Nl
cl9yZXF1ZXN0X2dldF90eXBlICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJ
IGNvbnN0IGdjaGFyICoKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRf
Y29sb3IgIChXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KTsKKworV0VCS0lUX0FQ
SSB2b2lkCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvciAgICAgICAo
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCwgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKiBjb2xvcik7CisKK1dF
QktJVF9BUEkgdm9pZAord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwgICAgICAg
ICAgICAgKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QpOworCitHX0VORF9ERUNM
UworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNhOWE0YTI1ZGVhYzg1M2E1MWM0ZThlNTI2NzM0OTE0ZTY0YTFkYzgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0UHJpdmF0ZS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMi
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdFByaXZhdGVfaAorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJXZWJDb2xv
ckNob29zZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaCIK
KyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xP
UikKKworV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVz
dENyZWF0ZShjb25zdCBXZWJDb3JlOjpDb2xvciwgV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94
eTo6Q2xpZW50Kik7Cit2b2lkIHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RFbmQoV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdCopOwordm9pZCB3ZWJraXRXZWJDb2xvckNob29zZXJSZXF1ZXN0
U2V0Q29sb3IoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCosIGNvbnN0IFdlYkNvcmU6OkNvbG9y
KTsKKworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisjZW5kaWYgLy8gV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCAzNTJiN2ZlZTI4MzhjZDU5
OWFlZTgyNmQyZDU4OWJmMGMzODA2NGJmLi5lOThiYzViODk2NzQzZTcxM2NlMzFiMmRhZTNlNzg0
MThlM2YzYWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcApAQCAtMTA3LDYgKzEwNyw4IEBAIGVudW0gewogCiAgICAgUlVOX0ZJ
TEVfQ0hPT1NFUiwKIAorICAgIFJVTl9DT0xPUl9DSE9PU0VSLAorCiAgICAgQ09OVEVYVF9NRU5V
LAogICAgIENPTlRFWFRfTUVOVV9ESVNNSVNTRUQsCiAKQEAgLTQxNCw2ICs0MTYsNzcgQEAgc3Rh
dGljIHZvaWQgZmlsZUNob29zZXJEaWFsb2dSZXNwb25zZUNhbGxiYWNrKEd0a0RpYWxvZyogZGlh
bG9nLCBnaW50IHJlc3BvbnNlSUQKICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVChk
aWFsb2cpKTsKIH0KIAorc3RhdGljIHZvaWQgdXBkYXRlQ29sb3JDaG9vc2VyQ29sb3JWYWx1ZShH
dGtXaWRnZXQqIGRpYWxvZywgY29uc3QgZ2NoYXIqIGNvbG9yKSAKK3sKKyNpZiBHVEtfQ0hFQ0tf
VkVSU0lPTigzLCA0LCAwKQorICAgIEdka1JHQkEgcmdiOworICAgIGdka19yZ2JhX3BhcnNlKCZy
Z2IsIGNvbG9yKTsKKyAgICBndGtfY29sb3JfY2hvb3Nlcl9zZXRfcmdiYShHVEtfQ09MT1JfQ0hP
T1NFUihkaWFsb2cpLCAmcmdiKTsKKyNlbHNlCisgICAgR3RrV2lkZ2V0KiBjb2xvclNlbGVjdGlv
biA9IGd0a19jb2xvcl9zZWxlY3Rpb25fZGlhbG9nX2dldF9jb2xvcl9zZWxlY3Rpb24oR1RLX0NP
TE9SX1NFTEVDVElPTl9ESUFMT0coZGlhbG9nKSk7CisgICAgZ3RrX2NvbG9yX3NlbGVjdGlvbl9z
ZXRfaGFzX3BhbGV0dGUoR1RLX0NPTE9SX1NFTEVDVElPTihjb2xvclNlbGVjdGlvbiksIFRSVUUp
OworICAgIEdka0NvbG9yIHJnYjsKKyAgICBnZGtfY29sb3JfcGFyc2UoY29sb3IsICZyZ2IpOwor
ICAgIGd0a19jb2xvcl9zZWxlY3Rpb25fc2V0X2N1cnJlbnRfY29sb3IoR1RLX0NPTE9SX1NFTEVD
VElPTihjb2xvclNlbGVjdGlvbiksICZyZ2IpOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkIGNv
bG9yQ2hvb3NlclJlcXVlc3RDaGFuZ2VDYWxsYmFjayhXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
KiByZXF1ZXN0LCBjb25zdCBnY2hhciogY29sb3IsIEd0a1dpZGdldCogZGlhbG9nKQoreworICAg
IHVwZGF0ZUNvbG9yQ2hvb3NlckNvbG9yVmFsdWUoZGlhbG9nLCBjb2xvcik7Cit9CisKK3N0YXRp
YyB2b2lkIGNvbG9yQ2hvb3NlclJlcXVlc3RFbmRDYWxsYmFjayhXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0KiByZXF1ZXN0LCBHdGtXaWRnZXQqIGRpYWxvZykKK3sKKyAgICBnX29iamVjdF91bnJl
ZihyZXF1ZXN0KTsKKyAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTsKK30KKworc3RhdGlj
IHZvaWQgY29sb3JDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFjayhHdGtXaWRnZXQqIGRpYWxv
ZywgZ2ludCByZXNwb25zZUlELCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQor
eworICAgIEdSZWZQdHI8V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdD4gYWRvcHRlZFJlcXVlc3Qg
PSBhZG9wdEdSZWYocmVxdWVzdCk7CisgICAgaWYgKHJlc3BvbnNlSUQgPT0gR1RLX1JFU1BPTlNF
X09LKSB7CisgICAgICAgIEdPd25QdHI8Y2hhcj4gc3RyX3ZhbHVlOworI2lmIEdUS19DSEVDS19W
RVJTSU9OKDMsIDQsIDApCisgICAgICAgIEdka1JHQkEgY29sb3I7CisgICAgICAgIGd0a19jb2xv
cl9jaG9vc2VyX2dldF9yZ2JhKEdUS19DT0xPUl9DSE9PU0VSKGRpYWxvZyksICZjb2xvcik7Cisg
ICAgICAgIHN0cl92YWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIjJS4yWCUuMlglLjJYIiwgKGlu
dCkoY29sb3IucmVkICogMjU1KSwgKGludCkoY29sb3IuZ3JlZW4gKiAyNTUpLCAoaW50KShjb2xv
ci5ibHVlICogMjU1KSkpOworI2Vsc2UKKyAgICAgICAgR2RrQ29sb3IgY29sb3I7CisgICAgICAg
IEd0a1dpZGdldCogY29sb3JTZWxlY3Rpb24gPSBndGtfY29sb3Jfc2VsZWN0aW9uX2RpYWxvZ19n
ZXRfY29sb3Jfc2VsZWN0aW9uKEdUS19DT0xPUl9TRUxFQ1RJT05fRElBTE9HKGRpYWxvZykpOwor
ICAgICAgICBndGtfY29sb3Jfc2VsZWN0aW9uX2dldF9jdXJyZW50X2NvbG9yKEdUS19DT0xPUl9T
RUxFQ1RJT04oY29sb3JTZWxlY3Rpb24pLCAmY29sb3IpOworICAgICAgICBzdHJfdmFsdWUuc2V0
KGdfc3RyZHVwX3ByaW50ZigiIyUuMlglLjJYJS4yWCIsIChpbnQpKGNvbG9yLnJlZCAvIDI1NSks
IChpbnQpKGNvbG9yLmdyZWVuIC8gMjU1KSwgKGludCkoY29sb3IuYmx1ZSAvIDI1NSkpKTsKKyNl
bmRpZgorICAgICAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvcihh
ZG9wdGVkUmVxdWVzdC5nZXQoKSwgc3RyX3ZhbHVlLmdldCgpKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwoYWRvcHRlZFJlcXVlc3QuZ2V0
KCkpOworCisgICAgZ3RrX3dpZGdldF9kZXN0cm95KGRpYWxvZyk7Cit9CisKK3N0YXRpYyBnYm9v
bGVhbiB3ZWJraXRXZWJWaWV3UnVuQ29sb3JDaG9vc2VyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QpCit7CisjaWYgR1RLX0NIRUNLX1ZF
UlNJT04oMywgNCwgMCkKKyAgICBHdGtXaWRnZXQqIHBhcmVudCA9IGd0a193aWRnZXRfZ2V0X3Rv
cGxldmVsKEdUS19XSURHRVQod2ViVmlldykpOworICAgIGlmICghZ3RrX3dpZGdldF9pc190b3Bs
ZXZlbChwYXJlbnQpIHx8ICFHVEtfSVNfV0lORE9XKHBhcmVudCkpCisgICAgICAgIHBhcmVudCA9
IDA7CisgICAgR3RrV2lkZ2V0KiBkaWFsb2cgPSAgZ3RrX2NvbG9yX2Nob29zZXJfZGlhbG9nX25l
dyhfKCJTZWxlY3QgQ29sb3IiKSwgR1RLX1dJTkRPVyhwYXJlbnQpKTsKKyNlbHNlCisgICAgR3Rr
V2lkZ2V0KiBkaWFsb2cgPSBndGtfY29sb3Jfc2VsZWN0aW9uX2RpYWxvZ19uZXcoXygiU2VsZWN0
IENvbG9yIikpOworI2VuZGlmCisKKyAgICBjb25zdCBnY2hhciogaW5pdGlhbENvbG9yID0gd2Vi
a2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcihyZXF1ZXN0KTsKKyAg
ICB1cGRhdGVDb2xvckNob29zZXJDb2xvclZhbHVlKGRpYWxvZywgaW5pdGlhbENvbG9yKTsKKwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3QocmVxdWVzdCwgImVuZC1jaG9vc2VyIiwgR19DQUxMQkFDSyhj
b2xvckNob29zZXJSZXF1ZXN0RW5kQ2FsbGJhY2spLCBkaWFsb2cpOworICAgIGdfc2lnbmFsX2Nv
bm5lY3QocmVxdWVzdCwgImNoYW5nZS1jb2xvciIsIEdfQ0FMTEJBQ0soY29sb3JDaG9vc2VyUmVx
dWVzdENoYW5nZUNhbGxiYWNrKSwgZGlhbG9nKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGRpYWxv
ZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhjb2xvckNob29zZXJEaWFsb2dSZXNwb25zZUNhbGxi
YWNrKSwgcmVxdWVzdCk7CisgICAgZ3RrX3dpZGdldF9zaG93KGRpYWxvZyk7CisgICAgZ19vYmpl
Y3RfcmVmKHJlcXVlc3QpOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKIHN0YXRpYyBnYm9vbGVh
biB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2Vi
S2l0RmlsZUNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIEd0a1dpZGdldCogdG9wbGV2
ZWwgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKQEAgLTU1
OCw2ICs2MzEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJL
aXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICB3ZWJWaWV3Q2xhc3MtPmRlY2lkZV9w
b2xpY3kgPSB3ZWJraXRXZWJWaWV3RGVjaWRlUG9saWN5OwogICAgIHdlYlZpZXdDbGFzcy0+cGVy
bWlzc2lvbl9yZXF1ZXN0ID0gd2Via2l0V2ViVmlld1Blcm1pc3Npb25SZXF1ZXN0OwogICAgIHdl
YlZpZXdDbGFzcy0+cnVuX2ZpbGVfY2hvb3NlciA9IHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3Nl
cjsKKyAgICB3ZWJWaWV3Q2xhc3MtPnJ1bl9jb2xvcl9jaG9vc2VyID0gd2Via2l0V2ViVmlld1J1
bkNvbG9yQ2hvb3NlcjsKIAogICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6d2ViLWNvbnRl
eHQ6CkBAIC0xMTQ5LDYgKzEyMjMsMzcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Ns
YXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICAg
ICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwgLyogbnVtYmVyIG9mIHBhcmFtZXRlcnMgKi8KICAg
ICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX0ZJTEVfQ0hPT1NFUl9SRVFVRVNUKTsKIAor
ICAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjpydW4tY29sb3ItY2hvb3NlcjoKKyAgICAg
KiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVt
aXR0ZWQKKyAgICAgKiBAcmVxdWVzdDogYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAorICAg
ICAqCisgICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIGludGVyYWN0
cyB3aXRoIGEgJmx0O2lucHV0CisgICAgICogdHlwZT0nY29sb3InIC8mZ3Q7IEhUTUwgZWxlbWVu
dCwgcmVxdWVzdGluZyBmcm9tIFdlYktpdCB0byBzaG93CisgICAgICogYSBkaWFsb2cgdG8gc2Vs
ZWN0IGEgY29sb3IuIFRvIGxldCB0aGUgYXBwbGljYXRpb24ga25vdyB0aGUgZGV0YWlscyBvZgor
ICAgICAqIHRoZSBjb2xvciBjaG9vc2VyLCBhcyB3ZWxsIGFzIHRvIGFsbG93IHRoZSBjbGllbnQg
YXBwbGljYXRpb24gdG8gZWl0aGVyCisgICAgICogY2FuY2VsIHRoZSByZXF1ZXN0IG9yIHBlcmZv
cm0gYW4gYWN0dWFsIGNvbG9yIHNlbGVjdGlvbiwgdGhlIHNpZ25hbCB3aWxsCisgICAgICogcGFz
cyBhbiBpbnN0YW5jZSBvZiB0aGUgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgaW4gdGhlIEBy
ZXF1ZXN0CisgICAgICogYXJndW1lbnQuCisgICAgICoKKyAgICAgKiBUaGUgZGVmYXVsdCBzaWdu
YWwgaGFuZGxlciB3aWxsIGFzeW5jaHJvbm91c2x5IHJ1biBhIHJlZ3VsYXIKKyAgICAgKiAjR3Rr
Q29sb3JDaG9vc2VyIGZvciB0aGUgdXNlciB0byBpbnRlcmFjdCB3aXRoLgorICAgICAqCisgICAg
ICogUmV0dXJuczogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9r
ZWQgZm9yIHRoZSBldmVudC4KKyAgICAgKiAgICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50
IGZ1cnRoZXIuCisgICAgICoKKyAgICAgKi8KKyAgICBzaWduYWxzW1JVTl9DT0xPUl9DSE9PU0VS
XSA9CisgICAgICAgIGdfc2lnbmFsX25ldygicnVuLWNvbG9yLWNob29zZXIiLAorICAgICAgICAg
ICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAg
ICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgICAgICAgICAgR19TVFJV
Q1RfT0ZGU0VUKFdlYktpdFdlYlZpZXdDbGFzcywgcnVuX2NvbG9yX2Nob29zZXIpLAorICAgICAg
ICAgICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCAwIC8qIGFj
Y3VtdWxhdG9yIGRhdGEgKi8sCisgICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9C
T09MRUFOX19PQkpFQ1QsCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwg
LyogbnVtYmVyIG9mIHBhcmFtZXRlcnMgKi8KKyAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9U
WVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCk7CisKKwogICAgIC8qKgogICAgICAqIFdlYktpdFdl
YlZpZXc6OmNvbnRleHQtbWVudToKICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmll
dyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKQEAgLTE1NjcsNiArMTY3MiwxMiBAQCB2
b2lkIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgV2ViS2l0RmlsZUNob29zZQogICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFs
c1tSVU5fRklMRV9DSE9PU0VSXSwgMCwgcmVxdWVzdCwgJnJldHVyblZhbHVlKTsKIH0KIAordm9p
ZCB3ZWJraXRXZWJWaWV3UnVuQ29sb3JDaG9vc2VyUmVxdWVzdChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdib29sZWFu
IHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tSVU5fQ09M
T1JfQ0hPT1NFUl0sIDAsIHJlcXVlc3QsICZyZXR1cm5WYWx1ZSk7Cit9CisKIHN0YXRpYyBib29s
IHdlYmtpdFdlYlZpZXdTaG91bGRTaG93SW5wdXRNZXRob2RzTWVudShXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQogewogICAgIEd0a1NldHRpbmdzKiBzZXR0aW5ncyA9IGd0a193aWRnZXRfZ2V0X3Nl
dHRpbmdzKEdUS19XSURHRVQod2ViVmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGZkYmM2NjZlZmM4ZTY3Y2FmZDYyMTUw
NTdkNmZiZWQzYzUwN2Q1MGIuLjFjNDVjYTJmNmU4MDNjMWY1NjM0OGZhMjQ3MTdmOGQ0ZDZlYzcz
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2Uu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oPgogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RmlsZUNob29zZXJSZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGaW5kQ29udHJvbGxlci5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0Lmg+CkBAIC0xODgsNiArMTg5
LDggQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogICAgIGdib29sZWFuICAgKCogbGVh
dmVfZnVsbHNjcmVlbikgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2Vi
X3ZpZXcpOwogICAgIGdib29sZWFuICAgKCogcnVuX2ZpbGVfY2hvb3NlcikgICAgICAgICAgKFdl
YktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0ICAgICpy
ZXF1ZXN0KTsKKyAgICBnYm9vbGVhbiAgICgqIHJ1bl9jb2xvcl9jaG9vc2VyKSAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgICAg
KnJlcXVlc3QpOwogICAgIGdib29sZWFuICAgKCogY29udGV4dF9tZW51KSAgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29udGV4dE1lbnUgICAgICAgICAg
ICpjb250ZXh0X21lbnUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR2RrRXZlbnQgICAgICAgICAgICAgICAgICAgICpldmVudCwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmlu
ZGV4IDBkZTBkMTdmN2I1YTU0NGZmNjJkYjE2ODdmYjZlZWRhZmExM2E3MGYuLjg1MmFlMGM4NTNl
YzJiZTQ0Y2E4M2Q1OTlmNTE3YmQ1NmM5ZmJlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtNDgsNiAr
NDgsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdNb3VzZVRhcmdldENoYW5nZWQoV2ViS2l0V2ViVmll
dyosIFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdCosCiB2b2lkIHdlYmtpdFdlYlZpZXdQcmludEZy
YW1lKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqKTsKIHZvaWQgd2Via2l0
V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6V2ViRnJh
bWVQcm94eSosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV2ViS2l0VVJJUmVxdWVzdCop
Owogdm9pZCB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXJSZXF1ZXN0KFdlYktpdFdlYlZpZXcq
LCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QqKTsKK3ZvaWQgd2Via2l0V2ViVmlld1J1bkNvbG9y
Q2hvb3NlclJlcXVlc3QoV2ViS2l0V2ViVmlldyosIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Qq
KTsKIFdlYktpdFdlYlJlc291cmNlKiB3ZWJraXRXZWJWaWV3R2V0TG9hZGluZ1dlYlJlc291cmNl
KFdlYktpdFdlYlZpZXcqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpOwogdm9pZCB3ZWJr
aXRXZWJWaWV3UmVtb3ZlTG9hZGluZ1dlYlJlc291cmNlKFdlYktpdFdlYlZpZXcqLCB1aW50NjRf
dCByZXNvdXJjZUlkZW50aWZpZXIpOwogV2ViS2l0V2ViUmVzb3VyY2UqIHdlYmtpdFdlYlZpZXdS
ZXNvdXJjZUxvYWRGaW5pc2hlZChXZWJLaXRXZWJWaWV3KiwgdWludDY0X3QgcmVzb3VyY2VJZGVu
dGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IGZjMzE3NmQwYjRhOTZiZGM4
YTJmZDIzZGU0MzY0NmRjMmQ3ZTgwNGIuLjNhMzIxN2Q2YjJlYWI0NWZmY2ExZTg4ZmFjZTY5MDdi
YmI1YTc2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtNjYzLDYgKzY2MywyNyBA
QCB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAogPFNF
Q1RJT04+Cis8RklMRT5XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PC9GSUxFPgorV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdAord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVu
dF9jb2xvcgord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3IKK3dlYmtp
dF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgor
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdENsYXNzCitXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VS
X1JFUVVFU1QKK1dFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1QKK1dFQktJVF9JU19DT0xPUl9D
SE9PU0VSX1JFUVVFU1QKK1dFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1MKK1dFQktJ
VF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1MKK1dFQktJVF9DT0xPUl9DSE9PU0VSX1JF
UVVFU1RfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0UHJpdmF0ZQord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlwZQor
PC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxGSUxFPldlYktpdEZpbmRDb250cm9sbGVyPC9GSUxF
PgogV2ViS2l0RmluZENvbnRyb2xsZXIKIFdlYktpdEZpbmRPcHRpb25zCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKaW5k
ZXggNGQ4ODQzZTljMWQ4YzZmNDRhNzBjMTE0YzI1OTRiMjZhNGJmZGM2ZS4uZWI1YjM5NGJmNTJl
ZjlhMzdiMGRiMzQzNzkwMjlkNmRmNjBkMjhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcwpAQCAtMjEsMyArMjEs
NCBAQCB3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfdHlwZQogd2Via2l0X3VyaV9zY2hlbWVfcmVx
dWVzdF9nZXRfdHlwZQogd2Via2l0X2NvbnRleHRfbWVudV9nZXRfdHlwZQogd2Via2l0X2NvbnRl
eHRfbWVudV9pdGVtX2dldF90eXBlCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF90
eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9U
ZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZWE1ZTQwNDAwOGY4YmUzMjcyOWUxMmRj
YTZkNTZkMzYyZGQ5MWE2OC4uZDYwMTVhMDJmZWMwM2ZlZWRiY2NhZjFmNWJhMmZkYzUyZGE1ZTEy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVz
dFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtNzk2LDYgKzc5Niw2MSBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2ViVmlld0ZpbGVDaG9vc2VyUmVxdWVzdChGaWxlQ2hvb3NlclRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbChm
aWxlQ2hvb3NlclJlcXVlc3QpOwogfQogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCitj
bGFzcyBDb2xvckNob29zZXJUZXN0OiBwdWJsaWMgVUlDbGllbnRUZXN0IHsKK3B1YmxpYzoKKyAg
ICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKENvbG9yQ2hvb3NlclRlc3QpOworICAgIENvbG9yQ2hv
b3NlclRlc3QoKQorICAgIHsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJy
dW4tY29sb3ItY2hvb3NlciIsIEdfQ0FMTEJBQ0socnVuQ29sb3JDaG9vc2VyQ2FsbGJhY2spLCB0
aGlzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gcnVuQ29sb3JDaG9vc2VyQ2FsbGJh
Y2soV2ViS2l0V2ViVmlldyosIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QsIENv
bG9yQ2hvb3NlclRlc3QqIHRlc3QpCisgICAgeworICAgICAgICB0ZXN0LT5ydW5Db2xvckNob29z
ZXIocmVxdWVzdCk7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIHZvaWQgcnVu
Q29sb3JDaG9vc2VyKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QpCisgICAgewor
ICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHJl
cXVlc3QpKTsKKyAgICAgICAgbV9jb2xvckNob29zZXJSZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICAg
ICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wKTsKKyAgICB9CisKKyAgICBXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0KiBjbGlja01vdXNlQnV0dG9uQW5kV2FpdEZvckNvbG9yQ2hvb3NlclJl
cXVlc3QoaW50IHgsIGludCB5KQorICAgIHsKKyAgICAgICAgY2xpY2tNb3VzZUJ1dHRvbih4LCB5
KTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgICAgICByZXR1cm4g
bV9jb2xvckNob29zZXJSZXF1ZXN0LmdldCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBHUmVm
UHRyPFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Q+IG1fY29sb3JDaG9vc2VyUmVxdWVzdDsKK307
CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3Q29sb3JDaG9vc2VyUmVxdWVzdChDb2xvckNob29z
ZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHRlc3QtPnNob3dJbldpbmRvd0Fu
ZFdhaXRVbnRpbE1hcHBlZCgpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb2xvckNob29zZXJI
VE1MID0gIjxodG1sPjxib2R5PjxpbnB1dCBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7bGVmdDow
O3RvcDowO21hcmdpbjowO3BhZGRpbmc6MCcgdHlwZT0nY29sb3InIHZhbHVlPScjZmYwMDAwJy8+
PC9ib2R5PjwvaHRtbD4iOworICAgIHRlc3QtPmxvYWRIdG1sKGNvbG9yQ2hvb3NlckhUTUwsIDAp
OworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIFdlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3QqIGNvbG9yQ2hvb3NlclJlcXVlc3QgPSB0ZXN0LT5jbGlja01vdXNlQnV0dG9u
QW5kV2FpdEZvckNvbG9yQ2hvb3NlclJlcXVlc3QoNSwgNSk7CisgICAgZ19hc3NlcnRfY21wc3Ry
KHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IoY29sb3JDaG9v
c2VyUmVxdWVzdCksID09LCAiI2ZmMDAwMCIpOworCisgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFu
ZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLnZhbHVl
ID0gJyMwMGZmMDAnOyIsIDApOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfY29sb3JfY2hv
b3Nlcl9yZXF1ZXN0X2dldF9jdXJyZW50X2NvbG9yKGNvbG9yQ2hvb3NlclJlcXVlc3QpLCA9PSwg
IiMwMGZmMDAiKTsKKworICAgIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2Nv
bG9yKGNvbG9yQ2hvb3NlclJlcXVlc3QsICIjMDAwMGZmIik7CisgICAgZ19hc3NlcnRfY21wc3Ry
KHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IoY29sb3JDaG9v
c2VyUmVxdWVzdCksID09LCAiIzAwMDBmZiIpOworCisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5p
c2hlZCgiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZTsiLCAwKTsKKyAgICBH
T3duUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9D
U3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJp
bmcuZ2V0KCksID09LCAiIzAwMDBmZiIpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCisKIGNsYXNzIEZ1bGxTY3JlZW5DbGllbnRUZXN0OiBwdWJsaWMgV2ViVmlld1Rl
c3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoRnVsbFNjcmVlbkNsaWVu
dFRlc3QpOwpAQCAtMTA4Myw2ICsxMTM4LDkgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIFdlYlZp
ZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiY2FuLXNob3ctbWltZS10eXBlIiwgdGVzdFdl
YlZpZXdDYW5TaG93TUlNRVR5cGUpOwogICAgIEZvcm1DbGllbnRUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAic3VibWl0LWZvcm0iLCB0ZXN0V2ViVmlld1N1Ym1pdEZvcm0pOwogICAgIFNhdmVX
ZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInNhdmUiLCB0ZXN0V2ViVmlld1NhdmUp
OworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIENvbG9yQ2hvb3NlclRlc3Q6OmFk
ZCgiV2ViS2l0V2ViVmlldyIsICJjb2xvci1jaG9vc2VyLXJlcXVlc3QiLCB0ZXN0V2ViVmlld0Nv
bG9yQ2hvb3NlclJlcXVlc3QpOworI2VuZGlmCiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5
R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40YWFkNWQxOWRhOWU3Y2RhMmEwNTFlYjIwMTU0MzNkNGZiMDRj
N2NmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJD
b2xvckNob29zZXJQcm94eUd0ay5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJB
UyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorI2luY2x1ZGUgIldl
YkNvbG9yQ2hvb3NlclByb3h5R3RrLmgiCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUg
IldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29sb3JDaG9vc2VyUHJveHlHdGs6
OldlYkNvbG9yQ2hvb3NlclByb3h5R3RrKFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQqIGNs
aWVudCwgR3RrV2lkZ2V0KiB3ZWJWaWV3LCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yLCBjb25z
dCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKKyAgICA6IFdlYkNvbG9yQ2hvb3NlclByb3h5KGNsaWVu
dCkKK3sKKyAgICBtX3JlcXVlc3QgPSBhZG9wdEdSZWYoR19PQkpFQ1Qod2Via2l0Q29sb3JDaG9v
c2VyUmVxdWVzdENyZWF0ZShpbml0aWFsQ29sb3IsIG1fY2xpZW50KSkpOworICAgIGdib29sZWFu
IHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAicnVuLWNv
bG9yLWNob29zZXIiLCBtX3JlcXVlc3QuZ2V0KCksICZyZXR1cm5WYWx1ZSk7Cit9CisKK3ZvaWQg
V2ViQ29sb3JDaG9vc2VyUHJveHlHdGs6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKQoreworICAgIHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RTZXRDb2xvcihXRUJLSVRf
Q09MT1JfQ0hPT1NFUl9SRVFVRVNUKG1fcmVxdWVzdC5nZXQoKSksIGNvbG9yKTsKK30KKwordm9p
ZCBXZWJDb2xvckNob29zZXJQcm94eUd0azo6ZW5kQ2hvb3NlcigpCit7CisgICAgd2Via2l0V2Vi
Q29sb3JDaG9vc2VyUmVxdWVzdEVuZChXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG1fcmVx
dWVzdC5nZXQoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmYWQzN2MxYTNk
NTcxODk5NDI5Yjg4YmZmNzA5NDUzYTE1N2ZkYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmgKQEAgLTAsMCAr
MSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgor
ICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29sb3JDaG9vc2VyUHJveHlHdGtfaAorI2RlZmlu
ZSBXZWJDb2xvckNob29zZXJQcm94eUd0a19oCisKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQ
cm94eS5oIgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb2xvcjsKK2NsYXNzIElu
dFJlY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDb2xvckNob29zZXJQ
cm94eUd0ayA6ICBwdWJsaWMgV2ViQ29sb3JDaG9vc2VyUHJveHkgeworCitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IGNyZWF0ZShXZWJDb2xvckNo
b29zZXJQcm94eTo6Q2xpZW50KiBjbGllbnQsIEd0a1dpZGdldCogd2ViVmlldywgY29uc3QgV2Vi
Q29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVu
dFJlY3QpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbG9yQ2hvb3Nl
clByb3h5R3RrKGNsaWVudCwgd2ViVmlldywgaW5pdGlhbENvbG9yLCBlbGVtZW50UmVjdCkpOwor
ICAgIH0KKyAgICB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsK
KyAgICB2b2lkIGVuZENob29zZXIoKTsKKworcHJpdmF0ZToKKyAgICBXZWJDb2xvckNob29zZXJQ
cm94eUd0ayhXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiwgR3RrV2lkZ2V0KiwgY29uc3Qg
V2ViQ29yZTo6Q29sb3ImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisKKyAgICBHUmVmUHRy
PEdPYmplY3Q+IG1fcmVxdWVzdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gV2ViQ29sb3JDaG9vc2VyUHJveHlHdGtfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0
b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpp
bmRleCBmODdmODM0ODBmOWYzYTY3Yjk4YWNiY2JjZWMwY2VmNWU1ODBmMjNjLi4yYzZiMDBjZjA2
ZjI1NjI3N2U4NTZiMTI1NDdkZmQwYWM1OWY2NWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIK
QEAgLTIzMiw2ICsyMzIsOCBAQCBfWk43V2ViQ29yZTE4U3R5bGVTaGVldENvbnRlbnRzRDFFdjsK
IF9aTjdXZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTJhZGRVc2VyU2hlZXRF
TjNXVEYxMFBhc3NSZWZQdHJJTlNfMThTdHlsZVNoZWV0Q29udGVudHNFRUU7CiBfWk43V2ViQ29y
ZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjE0YWRkQXV0aG9yU2hlZXRFTjNXVEYxMFBh
c3NSZWZQdHJJTlNfMThTdHlsZVNoZWV0Q29udGVudHNFRUU7CiBfWk43V2ViQ29yZTRLVVJMMTBp
bnZhbGlkYXRlRXY7CitfWk43V2ViQ29yZTVDb2xvckMxRVJLTjNXVEY2U3RyaW5nRTsKK19aTjdX
ZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50MjVzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyRVJLTlNf
NUNvbG9yRTsKIAogbG9jYWw6CiBfWio7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggYjhlZDNlYWMyNjdjZWE4ODBmZTRlYTk5ZGNjMzA5YjJiODdj
ZTVmYi4uNjEzOTE4Y2VjN2JmYmZlODMyMDUyMDIxZGViNjkxZGZmZThjOGQwZCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDEyLTEyLTIwICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBpbnB1dCB0eXBl
IGNvbG9yIGluIGZlYXR1cmUgbGlzdC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9G
ZWF0dXJlTGlzdC5wbToKKwogMjAxMi0xMS0wOSAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmll
ckBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFtHVEtdIGFkZCBsaWJzY3JldCB0byBqaGJ1
aWxkIHN5c3RlbQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVM
aXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4IGNk
NjczNjMzZTI5ZGJiMWM5MTA0NzIzNzhmNGU0NmM0M2I3Y2NhODcuLjU2YTg2MWNkOGFmYTgwODI1
NGZjM2Y5MjQ2M2U5MzAwNWRlYzMzMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVy
ZUxpc3QucG0KQEAgLTI2NCw3ICsyNjQsNyBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgICBkZWZp
bmUgPT4gIkVOQUJMRV9JTlBVVF9TUEVFQ0giLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW5w
dXRTcGVlY2hTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAiaW5wdXQtdHlwZS1jb2xvciIs
IGRlc2MgPT4gIlRvZ2dsZSBJbnB1dCBUeXBlIENvbG9yIHN1cHBvcnQiLAotICAgICAgZGVmaW5l
ID0+ICJFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUiIsIGRlZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgp
IHx8IGlzRWZsKCkgfHwgaXNRdCgpKSwgdmFsdWUgPT4gXCRpbnB1dFR5cGVDb2xvclN1cHBvcnQg
fSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IiLCBkZWZhdWx0ID0+
IChpc0JsYWNrQmVycnkoKSB8fCBpc0VmbCgpIHx8IGlzUXQoKSB8fCBpc0d0aygpKSwgdmFsdWUg
PT4gXCRpbnB1dFR5cGVDb2xvclN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJpbnB1dC10
eXBlLWRhdGUiLCBkZXNjID0+ICJUb2dnbGUgSW5wdXQgVHlwZSBEYXRlIHN1cHBvcnQiLAogICAg
ICAgZGVmaW5lID0+ICJFTkFCTEVfSU5QVVRfVFlQRV9EQVRFIiwgZGVmYXVsdCA9PiAwLCB2YWx1
ZSA9PiBcJGlucHV0VHlwZURhdGVTdXBwb3J0IH0sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzQ3YTQ2ZDU0YWI1YjY3NjFh
NTg1MmNhOGU5MjczODU1NDBjYTkxOS4uY2YzZDdiZDYxNmJiMjQ2Njc2YTQwZDM2YzhhMmQxMzJk
NDUyMGRmZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTEyLTIwICBBcm5hdWQgUmVuZXZp
ZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHN1
cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEVuYWJsZSBjb2xvciBpbnB1dCB0ZXN0cy4KKworICAgICAgICBNb2RpZnkg
aW5wdXQtY29sb3Itb25jaGFuZ2UtZXZlbnQtZXhwZWN0ZWQudHh0IGJlY2F1c2UgaXQgZGlkIG5v
dCB0YWtlCisgICAgICAgIGludG8gYWNjb3VudCB0aGUgc2Vjb25kIGRlc2NyaXB0aW9uIHBocmFz
ZS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvY29sb3IvaW5wdXQtY29sb3Itb25jaGFuZ2UtZXZl
bnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2Zvcm1zL2NvbG9yL2lucHV0LWFwcGVhcmFu
Y2UtY29sb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKworMjAxMi0xMi0yMCAgQXJuYXVkIFJlbmV2
aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBz
dXBwb3J0IGZvciBjb2xvciBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTg5MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBh
cyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlv
bnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvY29sb3IvaW5wdXQtY29s
b3Itb25jaGFuZ2UtZXZlbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9m
YXN0L2Zvcm1zL2NvbG9yL2lucHV0LWFwcGVhcmFuY2UtY29sb3ItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKwogMjAxMi0xMi0xNCAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1
bmcuY29tPgogCiAgICAgICAgIGluY29uc2lzdGVuY3kgaW4gZHJhd0ltYWdlIHdpdGggdGFyZ2V0
IHJlY3QgbmVnYXRpdmUgZGltZW5zaW9ucy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvY29sb3IvaW5wdXQtY29sb3Itb25jaGFuZ2UtZXZlbnQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9jb2xvci9pbnB1dC1jb2xvci1vbmNoYW5nZS1ldmVudC1leHBl
Y3RlZC50eHQKaW5kZXggYTFjZDY4NTM5M2MyNTc1MGY0ZWE0NDYwN2UxMmM4M2I1YzRlYzdiMy4u
Yzg3OWEwYjdjOTI0NjQ0NTc5YTIyY2RlYThlYTg0NTdhZTRjZWU5YyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9jb2xvci9pbnB1dC1jb2xvci1vbmNoYW5nZS1ldmVudC1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9jb2xvci9pbnB1dC1jb2xvci1v
bmNoYW5nZS1ldmVudC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw1IEBACi1UZXN0IGlmIGNoYW5n
ZSBldmVudCBmaXJlcyBwcm9wZXJseSB3aGVuIGNvbG9yIGNob29zZXIgY2hhbmdlcy4gQnVnIDY2
ODQ4CitUZXN0IGlmIGNoYW5nZSBldmVudCBmaXJlcyBwcm9wZXJseSB3aGVuIGNvbG9yIGNob29z
ZXIgY2hhbmdlcy4gQnVnIDY2ODQ4IAorVG8gbWFudWFsbHkgdGVzdCB0aGlzLCBjbGljayBvbiB0
aGUgaW5wdXQgY29sb3IgZWxlbWVudCBpbiB0aGUgdG9wIGxlZnQgY29ybmVyIGFuZCBjaGFuZ2Ug
dGhlIHZhbHVlIGZyb20gdGhlIGNvbG9yIGNob29zZXIuIFNlZSBpZiB0aGUgbnVtYmVyIG9mICJ2
YWx1ZSBjaGFuZ2VkIiBtZXNzYWdlcyBtYXRjaGVzIHRoZSBudW1iZXIgb2YgdGltZXMgeW91IGNo
YW5nZWQgdGhlIGNvbG9yLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggM2I0ZDcxMmE1ZGNlMjFmNWFk
NWU4NmZiN2RlYzM5MmNlN2JjYjY1Yy4uMDgyMGNjZjcyOTUyMzc5NTEyOGJiMzg1NTkxYTJiNmRj
YjM0YzFjZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTE5MSw5ICsxOTEsNiBAQCB3ZWJraXQub3JnL2IvOTg5MzMgc3RvcmFnZS9kb21zdG9yYWdlL2xv
Y2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlciBbIFNraXAgXQogIyBEYXRhbGlzdCBpcyBub3QgeWV0
IGVuYWJsZWQuCiB3ZWJraXQub3JnL2IvOTg5MzQgZmFzdC9mb3Jtcy9kYXRhbGlzdCBbIFNraXAg
XQogCi0jIENvbG9yIGlucHV0IGlzIG5vdCB5ZXQgZW5hYmxlZC4KLXdlYmtpdC5vcmcvYi85ODkz
NSBmYXN0L2Zvcm1zL2NvbG9yIFsgU2tpcCBdCi0KICMgRU5BQkxFX0lOUFVUX1RZUEVfKiBhcmUg
bm90IGVuYWJsZWQuCiB3ZWJraXQub3JnL2IvOTg5MzYgZmFzdC9mb3Jtcy9kYXRlIFsgU2tpcCBd
CiB3ZWJraXQub3JnL2IvOTg5MzYgZmFzdC9mb3Jtcy9kYXRlLW11bHRpcGxlLWZpZWxkcyBbIFNr
aXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZm9ybXMvY29s
b3IvaW5wdXQtYXBwZWFyYW5jZS1jb2xvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvZmFzdC9mb3Jtcy9jb2xvci9pbnB1dC1hcHBlYXJhbmNlLWNvbG9yLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hYWQ3MTYxZjIzZDY4NzExNDE0MWY1ZWRkZGFjYzI3MjlhNTdiYjFh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZm9ybXMv
Y29sb3IvaW5wdXQtYXBwZWFyYW5jZS1jb2xvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMTUg
QEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNp
emUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtI
VE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4
KSBzaXplIDc4NHg1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtIM30gYXQgKDAsMCkgc2l6ZSA3ODR4
MjIKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTY0eDIyCisgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTY0OiAiRGVmYXVsdCBBcHBlYXJhbmNlIgor
ICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsNDApIHNpemUgNzg0eDQxCisgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDQ1NngxOQorICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ1NjogIkxpc3QgY29sb3IgY29udHJvbHMgaGF2ZSBkaWZm
ZXJlbnQgYXBwZWFyYW5jZSBpZiBFTkFCTEUoREFUQUxJU1QpLiIKKyAgICAgICAgUmVuZGVyQlIg
e0JSfSBhdCAoNDU2LDE1KSBzaXplIDB4MAorICAgICAgICBSZW5kZXJCbG9jayB7SU5QVVR9IGF0
ICgwLDE4KSBzaXplIDQ0eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQg
IzAwMDAwMCldCisgICAgICAgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0
ICgzLDMpIHNpemUgMzh4MTcKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQp
IHNpemUgMzR4OSBbYmdjb2xvcj0jMDAwMDAwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICM3Nzc3Nzcp
XQorICAgICAgICBSZW5kZXJCbG9jayB7SU5QVVR9IGF0ICg0NCwxOCkgc2l6ZSA4OHgyMyBbYmdj
b2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAgICAgICAgIFJl
bmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElWfSBhdCAoMywzKSBzaXplIDgyeDE3CisgICAg
ICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoOCw0KSBzaXplIDUweDkgW2JnY29sb3I9IzAw
MDAwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5kZXJCbG9jayB7SDN9IGF0ICgwLDk5
KSBzaXplIDc4NHgyMgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAx
NjB4MjIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjA6ICJEaWZmZXJlbnQg
Rm9udCBTaXplcyIKKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDEzOSkgc2l6
ZSA3ODR4NDQKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNTc3eDE5
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTc3OiAiTGlzdCBjb2xvciBjb250
cm9scyBoYXZlIGRpZmZlcmVudCBzaXplcyBkZXBlbmRpbmcgb24gZm9udCBzaXplcy4gTm9ybWFs
IGNvbG9yIGNvbnRyb2xzIGRvbid0LiIKKyAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoNTc3LDE1
KSBzaXplIDB4MAorICAgICAgICBSZW5kZXJCbG9jayB7SU5QVVR9IGF0ICgwLDE4KSBzaXplIDQ0
eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisgICAg
ICAgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUgMzh4
MTcKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMzR4OSBbYmdj
b2xvcj0jMDBGRjAwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICM3Nzc3NzcpXQorICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDQ0LDI2KSBzaXplIDR4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBh
dCAoNDQsMjYpIHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5kZXJCbG9jayB7SU5QVVR9IGF0ICg0
OCwxOCkgc2l6ZSA0NHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0ICMw
MDAwMDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElWfSBhdCAo
MywzKSBzaXplIDM4eDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0KSBz
aXplIDM0eDkgW2JnY29sb3I9IzAwRkYwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjNzc3Nzc3KV0K
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg5MiwyNikgc2l6ZSA0eDE5CisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDkyLDI2KSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyQmxvY2sg
e0lOUFVUfSBhdCAoOTYsMTgpIHNpemUgNDR4MjMgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjog
KDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3gge0RJVn0gYXQgKDMsMykgc2l6ZSAzOHgxNworICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDIsNCkgc2l6ZSAzNHg5IFtiZ2NvbG9yPSMwMEZGMDBdIFtib3JkZXI6ICgxcHggc29s
aWQgIzc3Nzc3NyldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTQwLDI2KSBzaXpl
IDR4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTQwLDI2KSB3aWR0aCA0OiAiICIKKyAgICAg
ICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAoMTQ0LDE4KSBzaXplIDg4eDIzIFtiZ2NvbG9yPSNG
RkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisgICAgICAgICAgUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUgODJ4MTcKKyAgICAgICAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICg4LDQpIHNpemUgNTB4OSBbYmdjb2xvcj0jMDBGRjAwXSBb
Ym9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDIzMiwyNikgc2l6ZSA0eDE5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDIzMiwyNikgd2lk
dGggNDogIiAiCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDIzNiwxOCkgc2l6ZSA4
OHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAg
ICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElWfSBhdCAoMywzKSBzaXplIDgy
eDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoOCw0KSBzaXplIDUweDkgW2Jn
Y29sb3I9IzAwRkYwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgzMjQsMjYpIHNpemUgNHgxOQorICAgICAgICAgIHRleHQgcnVu
IGF0ICgzMjQsMjYpIHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5kZXJCbG9jayB7SU5QVVR9IGF0
ICgzMjgsMTgpIHNpemUgODh4MjMgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNl
dCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0g
YXQgKDMsMykgc2l6ZSA4MngxNworICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDgs
NCkgc2l6ZSA1MHg5IFtiZ2NvbG9yPSMwMEZGMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAw
MCldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAg
UmVuZGVyQmxvY2sge0gzfSBhdCAoMCwyMDEpIHNpemUgNzg0eDIyCisgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEyNHgyMgorICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDEyNDogIlZhcmlvdXMgQ29sb3JzIgorICAgICAgUmVuZGVyQmxvY2sgKGFub255
bW91cykgYXQgKDAsMjQxKSBzaXplIDc4NHgyNgorICAgICAgICBSZW5kZXJCbG9jayB7SU5QVVR9
IGF0ICgwLDApIHNpemUgNDR4MjMgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNl
dCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0g
YXQgKDMsMykgc2l6ZSAzOHgxNworICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIs
NCkgc2l6ZSAzNHg5IFtiZ2NvbG9yPSNGRjAwMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzc3Nzc3
NyldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNDQsOCkgc2l6ZSA0eDE5CisgICAg
ICAgICAgdGV4dCBydW4gYXQgKDQ0LDgpIHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5kZXJCbG9j
ayB7SU5QVVR9IGF0ICg0OCwwKSBzaXplIDQ0eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6
ICgycHggaW5zZXQgIzAwMDAwMCldCisgICAgICAgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94IHtESVZ9IGF0ICgzLDMpIHNpemUgMzh4MTcKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgyLDQpIHNpemUgMzR4OSBbYmdjb2xvcj0jMDBGRjAwXSBbYm9yZGVyOiAoMXB4IHNv
bGlkICM3Nzc3NzcpXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDkyLDgpIHNpemUg
NHgxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICg5Miw4KSB3aWR0aCA0OiAiICIKKyAgICAgICAg
UmVuZGVyQmxvY2sge0lOUFVUfSBhdCAoOTYsMCkgc2l6ZSA0NHgyMyBbYmdjb2xvcj0jRkZGRkZG
XSBbYm9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0
ZWRGbGV4aWJsZUJveCB7RElWfSBhdCAoMywzKSBzaXplIDM4eDE3CisgICAgICAgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMiw0KSBzaXplIDM0eDkgW2JnY29sb3I9IzAwMDBGRl0gW2JvcmRl
cjogKDFweCBzb2xpZCAjNzc3Nzc3KV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgx
NDAsOCkgc2l6ZSA0eDE5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDE0MCw4KSB3aWR0aCA0OiAi
ICIKKyAgICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAoMTQ0LDApIHNpemUgNDR4MjMgW2Jn
Y29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgICAgICBS
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0gYXQgKDMsMykgc2l6ZSAzOHgxNworICAg
ICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAzNHg5IFtiZ2NvbG9yPSNF
QzAwOENdIFtib3JkZXI6ICgxcHggc29saWQgIzc3Nzc3NyldCisgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMTg4LDgpIHNpemUgNHgxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICgxODgs
OCkgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDE5MiwwKSBz
aXplIDQ0eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCld
CisgICAgICAgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNp
emUgMzh4MTcKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMzR4
OSBbYmdjb2xvcj0jNDBFMEQwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICM3Nzc3NzcpXQorICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIzNiw4KSBzaXplIDR4MTkKKyAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMjM2LDgpIHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5kZXJCbG9jayB7SU5QVVR9
IGF0ICgyNDAsMCkgc2l6ZSA4OHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGlu
c2V0ICMwMDAwMDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElW
fSBhdCAoMywzKSBzaXplIDgyeDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
OCw0KSBzaXplIDUweDkgW2JnY29sb3I9I0ZGMDAwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAw
MDAwKV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgzMjgsOCkgc2l6ZSA0eDE5Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDMyOCw4KSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVy
QmxvY2sge0lOUFVUfSBhdCAoMzMyLDApIHNpemUgODh4MjMgW2JnY29sb3I9I0ZGRkZGRl0gW2Jv
cmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3gge0RJVn0gYXQgKDMsMykgc2l6ZSA4MngxNworICAgICAgICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDgsNCkgc2l6ZSA1MHg5IFtiZ2NvbG9yPSMwMEZGMDBdIFtib3JkZXI6ICgx
cHggc29saWQgIzAwMDAwMCldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNDIwLDgp
IHNpemUgNHgxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICg0MjAsOCkgd2lkdGggNDogIiAiCisg
ICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDQyNCwwKSBzaXplIDg4eDIzIFtiZ2NvbG9y
PSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisgICAgICAgICAgUmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUgODJ4MTcKKyAgICAgICAg
ICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICg4LDQpIHNpemUgNTB4OSBbYmdjb2xvcj0jMDAwMEZG
XSBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDUxMiw4KSBzaXplIDR4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNTEyLDgpIHdp
ZHRoIDQ6ICIgIgorICAgICAgICBSZW5kZXJCbG9jayB7SU5QVVR9IGF0ICg1MTYsMCkgc2l6ZSA4
OHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAg
ICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElWfSBhdCAoMywzKSBzaXplIDgy
eDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoOCw0KSBzaXplIDUweDkgW2Jn
Y29sb3I9I0VDMDA4Q10gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICg2MDQsOCkgc2l6ZSA0eDE5CisgICAgICAgICAgdGV4dCBydW4g
YXQgKDYwNCw4KSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAo
NjA4LDApIHNpemUgODh4MjMgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAj
MDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0gYXQg
KDMsMykgc2l6ZSA4MngxNworICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDgsNCkg
c2l6ZSA1MHg5IFtiZ2NvbG9yPSM0MEUwRDBdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCld
CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgUmVu
ZGVyQmxvY2sge0gzfSBhdCAoMCwyODUpIHNpemUgNzg0eDIyCisgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDExN3gyMgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDExNzogIkFyYml0cmFyeSBTaXplIgorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91
cykgYXQgKDAsMzI1KSBzaXplIDc4NHgzMAorICAgICAgICBSZW5kZXJCbG9jayB7SU5QVVR9IGF0
ICgwLDApIHNpemUgMTAweDMwIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQg
IzAwMDAwMCldCisgICAgICAgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0
ICgzLDMpIHNpemUgOTR4MjQKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQp
IHNpemUgOTB4MTYgW2JnY29sb3I9I0ZGMDAwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjNzc3Nzc3
KV0KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4NTRjM2ZmMjhjMTg5
MjYyNzJmNjljN2IwNDM2OWVkYWE4ZDE4Nzg5Li5iZDQ2NDNhOGE0NTVmMjA5ZTk2NjliYzI1YjE1
OGYwNzM2YmI4NDJiIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTItMTItMjAgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lz
YS5zYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY29sb3IgaW5w
dXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTM1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZXhwb3J0
IFdlYkNvcmU6OkNvbG9yOjpDb2xvcihXVEY6OlN0cmluZyBjb25zdCYpIGFuZAorICAgICAgICBX
ZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKFdlYkNv
cmU6OkNvbG9yCisgICAgICAgIGNvbnN0JikKKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXI6CisKIDIwMTItMTAtMTAgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZp
ZXJAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBbR3RrXSB0b28gbG9uZyBmdW5jdGlvbiBp
biBhbmltYXRpb24gc2NyaXB0IGNhdXNlIHJlcGFpbnQgdG8gbmV2ZXIgaGFwcGVuLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180417</attachid>
            <date>2012-12-20 15:04:20 -0800</date>
            <delta_ts>2012-12-21 16:00:56 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>bug-98935-20121220150134.patch</filename>
            <type>text/plain</type>
            <size>68161</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJjOGE2OGM3ZmQ2NjEw
NDEyYTUxYTliMTQzYTdkODYyYmJjMGNmNS4uMDY1YmE3ZGE5NDhmZDQxMzViMDA4ZTVhZjhjZDI1
NjM0N2Y0YTExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTIwICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dU
S10gQWRkIHN1cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBpbnB1dCB0eXBlIGNvbG9yIGluIGZlYXR1cmUg
bGlzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmZlYXR1cmVzLmFtLmluOgorCiAyMDEyLTEy
LTE0ICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgaW5jb25zaXN0ZW5jeSBpbiBkcmF3SW1hZ2Ugd2l0aCB0YXJnZXQgcmVjdCBuZWdhdGl2
ZSBkaW1lbnNpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGQxN2NhMGZjN2U0NmVhNGZkOGNjM2My
YjM4NTVhM2RkNjZiN2QyMDkuLjJmODA4ZjM3YWZmYzU2YjY2NDM2ZWJmNTgxYzA0ZmIyMDEwZmY4
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMi0xMi0yMCAgQXJuYXVk
IFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFtHVEtd
IEFkZCBzdXBwb3J0IGZvciBjb2xvciBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgY29sb3IgY2hvb3NlciBmb3IgV2ViS2l0MS4g
CisKKyAgICAgICAgQ3JlYXRlIGEgQ29sb3JDaG9vc2VyR3RrIGNsYXNzLiBJdCBvd25zIGEgR3Rr
V2lkZ2V0IGNvbG9yIGNob29zZXIuIEl0CisgICAgICAgIHVwZGF0ZXMgdGhlIHdpZGdldCBjb2xv
ciB3aGVuIGl0cyA6OnNldFNlbGVjdGVkQ29sb3IgbWV0aG9kIGlzIGNhbGxlZC4KKyAgICAgICAg
VGhpcyB3aWRnZXQgaXMgY3JlYXRlZCBpbiBDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3Nl
cjogaXQgaXMgYQorICAgICAgICBHdGtDb2xvckNob29zZXJEaWFsb2cgZm9yIEdUSyA+PSAzLjQu
MCBvciBHdGtDb2xvclNlbGVjdGlvbkRpYWxvZyBmb3IKKyAgICAgICAgcHJldmlvdXMgR1RLIHZl
cnNpb25zLiBXaGVuIGRpYWxvZyByZWNlaXZlcyBhIHJlc3BvbnNlLAorICAgICAgICBjb2xvckNo
b29zZXJEaWFsb2dSZXNwb25zZUNhbGxiYWNrIGlzIGNhbGxlZC4gSWYgYSBjb2xvciBoYXMgYmVl
bgorICAgICAgICBzZWxlY3RlZCwgY2FsbCBjbGllbnQtPmRpZENob29zZUNvbG9yLgorCisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvbG9yQ2hv
b3NlckRpYWxvZ1Jlc3BvbnNlQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGll
bnQ6OmNyZWF0ZUNvbG9yQ2hvb3Nlcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmg6CisgICAgICAgIChDaHJvbWVDbGllbnQpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0NvbG9yQ2hvb3Nlckd0ay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb2xvckNob29zZXJHdGs6OkNvbG9yQ2hvb3Nlckd0ayk6CisgICAg
ICAgIChXZWJDb3JlOjpDb2xvckNob29zZXJHdGs6On5Db2xvckNob29zZXJHdGspOgorICAgICAg
ICAoV2ViQ29yZTo6Q29sb3JDaG9vc2VyR3RrOjpzZXRTZWxlY3RlZENvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbG9yQ2hvb3Nlckd0azo6ZW5kQ2hvb3Nlcik6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ29sb3JDaG9vc2VyR3RrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChDb2xvckNob29zZXJHdGspOgorCiAyMDEyLTEwLTAxICBBcm5hdWQgUmVuZXZpZXIg
IDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0d0a10gdG9vIGxvbmcg
ZnVuY3Rpb24gaW4gYW5pbWF0aW9uIHNjcmlwdCBjYXVzZSByZXBhaW50IHRvIG5ldmVyIGhhcHBl
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCBlMzJkZDZhNWViYzVkZGQwOWJiNzdhZjQyMjcyOWNlMjliOWQwZTJk
Li41YzIxNTYxNTE3OWNjNzY5YmQxMTZlMmEyOWI2ZWYxMWYwYjYzYTdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjcgQEAKKzIwMTItMTItMjAgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJA
c2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY29sb3Ig
aW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
OTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IGlucHV0IGNvbG9yIHR5cGUgZm9yIFdlYktpdDIuCisKKyAgICAgICAgU2ltaWxhcmx5
IHRvIHdoYXQgaGFwcGVucyBmb3IgZmlsZSBjaG9vc2VyLCB3aGVuIGEgY29sb3IgY2hvb3NlciBp
cworICAgICAgICBuZWVkZWQsIHdlIGVtaXQgYSBydW4tY29sb3ItY2hvb3NlciBzaWduYWwgd2l0
aCBhCisgICAgICAgICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IG9iamVjdC4gSWYgdGhlIHNp
Z25hbCBpcyBub3QgaGFuZGxlZCBieSB0aGUKKyAgICAgICAgYXBwbGljYXRpb24sIHdlIHNob3cg
YSBHdGtHdGtDb2xvckNob29zZXJEaWFsb2cgKG9yCisgICAgICAgIEd0a0NvbG9yU2VsZWN0aW9u
RGlhbG9nIGZvciBHdGsgPCAzLjQuMCkuCisKKyAgICAgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCBhcGkgYWxsb3dzIHRvIHJlYWQgY3VycmVudCBjb2xvciAoZWl0aGVyCisgICAgICAgIGlu
aXRpYWwgY29sb3Igc2V0IGJ5IFdlYkNvcmUgb3IgbGF0ZXIsIGNvbG9yIHNlbGVjdGVkIGJ5IHVz
ZXIpLCB0bworICAgICAgICBzZWxlY3QgYSBjb2xvciwgb3IgdG8gY2FuY2VsIGEgcmVxdWVzdC4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZSk6CisgICAgICAgICh3ZWJraXRfY29sb3JfY2hvb3Nl
cl9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVx
dWVzdF9jYW5jZWwpOgorICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxl
Y3RfY29sb3IpOgorICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3Vy
cmVudF9jb2xvcik6CisgICAgICAgICh3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0Q3JlYXRlKToK
KyAgICAgICAgKHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RFbmQpOgorICAgICAgICAod2Vi
a2l0V2ViQ29sb3JDaG9vc2VyUmVxdWVzdFNldENvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoX1dl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3QpOgorICAgICAgICAoX1dlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3RDbGFzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh1cGRhdGVDb2xvckNob29zZXJDb2xvclZhbHVl
KToKKyAgICAgICAgKGNvbG9yQ2hvb3NlclJlcXVlc3RDaGFuZ2VDYWxsYmFjayk6CisgICAgICAg
IChjb2xvckNob29zZXJSZXF1ZXN0RW5kQ2FsbGJhY2spOgorICAgICAgICAoY29sb3JDaG9vc2Vy
RGlhbG9nUmVzcG9uc2VDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3UnVuQ29sb3JD
aG9vc2VyKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdSdW5Db2xvckNob29zZXJSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgIChfV2ViS2l0V2ViVmlld0NsYXNz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXM6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAg
ICAgICAodGVzdFdlYlZpZXdDb2xvckNob29zZXJSZXF1ZXN0KToKKyAgICAgICAgKGJlZm9yZUFs
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5R3RrOjpXZWJD
b2xvckNob29zZXJQcm94eUd0ayk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclBy
b3h5R3RrOjpzZXRTZWxlY3RlZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9v
c2VyUHJveHlHdGs6OmVuZENob29zZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViQ29s
b3JDaG9vc2VyUHJveHlHdGsuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJDb2xvckNob29zZXJQcm94eUd0ayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5R3RrOjpjcmVhdGUpOgorCiAyMDEyLTEyLTEzICBB
bGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc291cmNlIGxv
YWRzIHNvbWV0aW1lcyBzdGFsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuZmVhdHVyZXMuYW0uaW4gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5mZWF0dXJlcy5h
bS5pbgppbmRleCA2MjcxMDZmNTY4Mzg3OTU4NDhmMzFmZWRlOWFmZmY3YjVhOTY3ZWJiLi43Mjgy
ZGEzMzc4Yjc1YTVkN2E3NjhlMDE4NmQwNThmZDEwODVhNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5mZWF0dXJlcy5hbS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5mZWF0dXJlcy5hbS5pbgpAQCAtMzksNyArMzksNyBAQCBmZWF0dXJlX2RlZmlu
ZXNfZGVmYXVsdHMgKz0gXAogCUVOQUJMRV9JRlJBTUVfU0VBTUxFU1M9MSBcCiAJRU5BQkxFX0lO
REVYRURfREFUQUJBU0U9MCBcCiAJRU5BQkxFX0lOUFVUX1NQRUVDSD0wIFwKLQlFTkFCTEVfSU5Q
VVRfVFlQRV9DT0xPUj0wIFwKKwlFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUj0xIFwKIAlFTkFCTEVf
SU5QVVRfVFlQRV9EQVRFPTAgXAogCUVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FPTAgXAogCUVO
QUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUw9MCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFt
CmluZGV4IGUwZDhjZWE4OTdkZWQ5NzY1MWFmODQ1NGM4ZTVmMmI1ZWIzZDYzMTIuLjNkMTExMTBh
YjVjMGFhNDM3Mjg1ZTI2NjNhMjE4Y2MyN2UyYWY1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxl
LmFtCkBAIC0xODQsNiArMTg0LDggQEAgd2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBcCisJU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29sb3JDaG9vc2VyR3RrLmNwcCBcCisJU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29sb3JDaG9vc2VyR3RrLmggXAogCVNvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmNwcCBcCiAJU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuaCBcCiAJ
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRGV2aWNlTW90aW9uQ2xpZW50R3RrLmNw
cCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcAppbmRleCAwYWQzZDk3ZDE5NWNlMDM0ZTUxN2NjNDNlZWI2NTdkODM3ZDgxMGMx
Li43MzFiNzhhNTdlYWI3MWFhZDQ0Yjg5MWUwMjIwMGRhM2U0YWEyYTU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKQEAg
LTc3LDYgKzc3LDExIEBACiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorI2luY2x1ZGUgIkNvbG9yQ2hvb3NlckNsaWVu
dC5oIgorI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlckd0ay5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgzNiw2ICs4NDEsNTAgQEAg
dm9pZCBDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2Vj
dXJpdHlPcmlnaW4qLCBpbnQ2NF90KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKKyNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK3N0YXRpYyB2b2lkIGNvbG9yQ2hvb3NlckRpYWxvZ1Jl
c3BvbnNlQ2FsbGJhY2soR3RrRGlhbG9nKiBkaWFsb2csIGdpbnQgcmVzcG9uc2VJRCwgQ29sb3JD
aG9vc2VyQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKHJlc3BvbnNlSUQgPT0gR1RLX1JFU1BP
TlNFX09LKSB7CisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgNCwgMCkKKyAgICAgICAgR2RrUkdC
QSBjb2xvcjsKKyAgICAgICAgZ3RrX2NvbG9yX2Nob29zZXJfZ2V0X3JnYmEoR1RLX0NPTE9SX0NI
T09TRVIoZGlhbG9nKSwgJmNvbG9yKTsKKyNlbHNlCisgICAgICAgIEdka0NvbG9yIGNvbG9yOwor
ICAgICAgICBHdGtXaWRnZXQqIGNvbG9yU2VsZWN0aW9uID0gZ3RrX2NvbG9yX3NlbGVjdGlvbl9k
aWFsb2dfZ2V0X2NvbG9yX3NlbGVjdGlvbihHVEtfQ09MT1JfU0VMRUNUSU9OX0RJQUxPRyhkaWFs
b2cpKTsKKyAgICAgICAgZ3RrX2NvbG9yX3NlbGVjdGlvbl9nZXRfY3VycmVudF9jb2xvcihHVEtf
Q09MT1JfU0VMRUNUSU9OKGNvbG9yU2VsZWN0aW9uKSwgJmNvbG9yKTsKKyNlbmRpZgorICAgICAg
ICBjbGllbnQtPmRpZENob29zZUNvbG9yKGNvbG9yKTsKKyAgICB9CisgICAgY2xpZW50LT5kaWRF
bmRDaG9vc2VyKCk7Cit9CisKK1Bhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBDaHJvbWVDbGllbnQ6
OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCwgY29uc3QgQ29s
b3ImIGluaXRpYWxDb2xvcikKK3sKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA0LCAwKQorICAg
IEd0a1dpZGdldCogcGFyZW50ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCht
X3dlYlZpZXcpKTsKKyAgICBpZiAoIWd0a193aWRnZXRfaXNfdG9wbGV2ZWwocGFyZW50KSB8fCAh
R1RLX0lTX1dJTkRPVyhwYXJlbnQpKQorICAgICAgICBwYXJlbnQgPSAwOworICAgIEd0a1dpZGdl
dCogZGlhbG9nID0gIGd0a19jb2xvcl9jaG9vc2VyX2RpYWxvZ19uZXcoXygiU2VsZWN0IENvbG9y
IiksIEdUS19XSU5ET1cocGFyZW50KSk7CisKKyAgICBndGtfY29sb3JfY2hvb3Nlcl9zZXRfdXNl
X2FscGhhKEdUS19DT0xPUl9DSE9PU0VSKGRpYWxvZyksIEZBTFNFKTsKKyAgICBHZGtSR0JBIHJn
YmEgPSBzdGF0aWNfY2FzdDxHZGtSR0JBPihpbml0aWFsQ29sb3IpOworICAgIGd0a19jb2xvcl9j
aG9vc2VyX3NldF9yZ2JhKEdUS19DT0xPUl9DSE9PU0VSKGRpYWxvZyksICZyZ2JhKTsKKyNlbHNl
CisgICAgR3RrV2lkZ2V0KiBkaWFsb2cgPSBndGtfY29sb3Jfc2VsZWN0aW9uX2RpYWxvZ19uZXco
XygiU2VsZWN0IENvbG9yIikpOworICAgIEd0a1dpZGdldCogY29sb3JTZWxlY3Rpb24gPSBndGtf
Y29sb3Jfc2VsZWN0aW9uX2RpYWxvZ19nZXRfY29sb3Jfc2VsZWN0aW9uKEdUS19DT0xPUl9TRUxF
Q1RJT05fRElBTE9HKGRpYWxvZykpOworICAgIGd0a19jb2xvcl9zZWxlY3Rpb25fc2V0X2hhc19w
YWxldHRlKEdUS19DT0xPUl9TRUxFQ1RJT04oY29sb3JTZWxlY3Rpb24pLCBUUlVFKTsKKworICAg
IEdka0NvbG9yIHJnYiA9IHswLCBpbml0aWFsQ29sb3IucmVkKCkgPDwgOCwgIGluaXRpYWxDb2xv
ci5ncmVlbigpIDw8IDgsIGluaXRpYWxDb2xvci5ibHVlKCkgPDwgOCB9OworICAgIGd0a19jb2xv
cl9zZWxlY3Rpb25fc2V0X2N1cnJlbnRfY29sb3IoR1RLX0NPTE9SX1NFTEVDVElPTihjb2xvclNl
bGVjdGlvbiksICZyZ2IpOworI2VuZGlmCisKKyAgICBnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywg
InJlc3BvbnNlIiwgR19DQUxMQkFDSyhjb2xvckNob29zZXJEaWFsb2dSZXNwb25zZUNhbGxiYWNr
KSwgY2xpZW50KTsKKyAgICBndGtfd2lkZ2V0X3Nob3coZGlhbG9nKTsKKworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgQ29sb3JDaG9vc2VyR3RrKGRpYWxvZywgY2xpZW50KSk7Cit9CisjZW5kaWYK
Kwogdm9pZCBDaHJvbWVDbGllbnQ6OnJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8Rmls
ZUNob29zZXI+IHBycEZpbGVDaG9vc2VyKQogewogICAgIEdSZWZQdHI8V2ViS2l0RmlsZUNob29z
ZXJSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVz
dF9jcmVhdGUocHJwRmlsZUNob29zZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKaW5kZXggYTAxZmQzM2NiYWVjOWE1NDUzZDNm
NjU1MjlmMjFlODFkYmVkNjY1Zi4uMzc0Yzg3YmVlNDljMTFiM2JiNmFkMmVlYzgwMzFlZGY5NTY5
MjFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmgKQEAgLTMwLDYgKzMwLDkgQEAKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNs
dWRlICJTZWFyY2hQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQorI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgorI2VuZGlmCiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgV2Vi
S2l0V2ViVmlldzsKQEAgLTEyMCw2ICsxMjMsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAjZW5k
aWYKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBz
cGFjZU5lZWRlZCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCB0b3RhbFNwYWNlTmVlZGVkKTsK
KworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgICAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50Kiwg
Y29uc3QgQ29sb3ImIGluaXRpYWxDb2xvcik7CisjZW5kaWYKKwogICAgICAgICB2aXJ0dWFsIHZv
aWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+
JiwgRmlsZUljb25Mb2FkZXIqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ29sb3JDaG9vc2VyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0NvbG9yQ2hvb3Nlckd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFlM2Q3MjQ3OTE5OWE1
YTY2YTI5ZDdkZWY3NTk1NjkxNDAyZGNmOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbG9yQ2hvb3Nlckd0ay5jcHAKQEAgLTAsMCArMSw2OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQorCisjaW5jbHVkZSAiQ29sb3JDaG9vc2VyR3RrLmgiCisKKyNpbmNsdWRlICJDb2xvci5o
IgorI2luY2x1ZGUgIkNvbG9yQ2hvb3NlckNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0NvbG9yQ2hvb3Nlckd0azo6Q29sb3JDaG9vc2VyR3RrKEd0a1dpZGdldCogY29sb3JDaG9v
c2VyLCBDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY29sb3JDaG9vc2VyKGNv
bG9yQ2hvb3NlciksIG1fY2xpZW50KGNsaWVudCkKK3sKKyAgICBBU1NFUlQobV9jb2xvckNob29z
ZXIpOworICAgIEFTU0VSVChtX2NsaWVudCk7Cit9CisKK0NvbG9yQ2hvb3Nlckd0azo6fkNvbG9y
Q2hvb3Nlckd0aygpCit7CisgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1fY29sb3JDaG9vc2VyLmdl
dCgpKTsKK30KKwordm9pZCBDb2xvckNob29zZXJHdGs6OnNldFNlbGVjdGVkQ29sb3IoY29uc3Qg
Q29sb3ImIGNvbG9yKQoreworI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDQsIDApCisgICAgR2Rr
UkdCQSByZ2JhID0gc3RhdGljX2Nhc3Q8R2RrUkdCQT4oY29sb3IpOworICAgIGd0a19jb2xvcl9j
aG9vc2VyX3NldF9yZ2JhKEdUS19DT0xPUl9DSE9PU0VSKG1fY29sb3JDaG9vc2VyLmdldCgpKSwg
JnJnYmEpOworI2Vsc2UKKyAgICBHdGtXaWRnZXQqIGNvbG9yU2VsZWN0aW9uID0gZ3RrX2NvbG9y
X3NlbGVjdGlvbl9kaWFsb2dfZ2V0X2NvbG9yX3NlbGVjdGlvbihHVEtfQ09MT1JfU0VMRUNUSU9O
X0RJQUxPRyhtX2NvbG9yQ2hvb3Nlci5nZXQoKSkpOworICAgIEdka0NvbG9yIHJnYiA9IHswLCBj
b2xvci5yZWQoKSA8PCA4LCAgY29sb3IuZ3JlZW4oKSA8PCA4LCBjb2xvci5ibHVlKCkgPDwgOCB9
OworICAgIGd0a19jb2xvcl9zZWxlY3Rpb25fc2V0X2N1cnJlbnRfY29sb3IoR1RLX0NPTE9SX1NF
TEVDVElPTihjb2xvclNlbGVjdGlvbiksICZyZ2IpOworI2VuZGlmCit9CisKK3ZvaWQgQ29sb3JD
aG9vc2VyR3RrOjplbmRDaG9vc2VyKCkKK3sKKyAgICBtX2NsaWVudC0+ZGlkRW5kQ2hvb3Nlcigp
OworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbG9yQ2hvb3Nlckd0ay5oIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29sb3JDaG9vc2VyR3RrLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWYwZDdhODc1MTkzZmZkZmMyNTFlYmZlNDdmM2QwZmY2MTViMWRkMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbG9yQ2hvb3Nlckd0
ay5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoK
KyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENvbG9yQ2hvb3Nlckd0a19oCisj
ZGVmaW5lIENvbG9yQ2hvb3Nlckd0a19oCisKKyNpbmNsdWRlICJDb2xvckNob29zZXIuaCIKKwor
I2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29sb3JDaG9vc2VyQ2xpZW50OworY2xhc3Mg
Q29sb3I7CisKK2NsYXNzIENvbG9yQ2hvb3Nlckd0ayA6IHB1YmxpYyBDb2xvckNob29zZXIgewor
cHVibGljOgorICAgIGV4cGxpY2l0IENvbG9yQ2hvb3Nlckd0ayhHdGtXaWRnZXQqLCBDb2xvckNo
b29zZXJDbGllbnQqKTsKKyAgICB+Q29sb3JDaG9vc2VyR3RrKCk7CisKKyAgICAvLyBDb2xvckNo
b29zZXIgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkQ29sb3Io
Y29uc3QgQ29sb3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kQ2hvb3NlcigpOworCitwcml2YXRl
OgorICAgIEdSZWZQdHI8R3RrV2lkZ2V0PiBtX2NvbG9yQ2hvb3NlcjsKKyAgICBDb2xvckNob29z
ZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworfQorCisjZW5kaWYgLy8gQ29sb3JDaG9vc2VyR3Rr
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDZiNjkzOWIyYjk4MmJiMWEwYTFi
ODZkM2MwNzQ3OWMyNzA0MDY3NzUuLjhiYjVhZDQ2MThkY2NhMWUzYzc1NDQ1OWNiYzlhMjk3YTE4
MGQ5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysr
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtOTYsNiArOTYsNyBAQCB3
ZWJraXQyX2hfYXBpICs9IFwKIHdlYmtpdDJndGtfaF9hcGkgKz0gXAogCSQoV2ViS2l0MikvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmggXAogCSQoV2ViS2l0MikvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oIFwKKwkkKFdlYktpdDIp
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaCBcCiAJJChXZWJL
aXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oIFwKIAkkKFdlYktpdDIp
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oIFwKIAkkKFdlYktp
dDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oIFwKQEAgLTYzOSw2
ICs2NDAsOSBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCiAJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUu
aCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudVByaXZhdGUuaCBcCkBAIC03ODgsNiAr
NzkyLDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggOTJiMzE4OGE1
OGU2ZjQ2MzlhNWVlMWYwNzkzZjBjMWYxNWY4YzhhYS4uNWY0Mjg4ZmNmMjJhOGFlMTI0ODQyMjcy
Y2VhMmI1MWQyYTBlYTA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtNDQsNiArNDQsMTAgQEAKICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNp
ZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94
eUd0ay5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTIyOSwxMCArMjMzLDkgQEAgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVBy
b3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHIKIH0K
IAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUGFzc1JlZlB0cjxXZWJDb2xvckNob29z
ZXJQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQ
cm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCitQ
YXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29s
b3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYg
aW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBXZWJDb2xvckNo
b29zZXJQcm94eUd0azo6Y3JlYXRlKHBhZ2UsIG1fdmlld1dpZGdldCwgaW5pdGlhbENvbG9yLCBl
bGVtZW50UmVjdCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zZTM1OTFlODliMTM5NmUzZWFiNjYxMzZkZmM1ZjFiMTZjMGYzZDEyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdC5jcHAKQEAgLTAsMCArMSwyMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMi
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgiCisKKyNpbmNs
dWRlICJDb2xvci5oIgorI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRl
LmgiCisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0CisgKiBAU2hv
cnRfZGVzY3JpcHRpb246IEEgcmVxdWVzdCB0byBvcGVuIGEgY29sb3IgY2hvb3NlcgorICogQFRp
dGxlOiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0CisgKiBAU2VlX2Fsc286ICNXZWJLaXRXZWJW
aWV3CisgKgorICogV2hlbmV2ZXIgdGhlIHVzZXIgaW50ZXJhY3RzIHdpdGggYW4gJmx0O2lucHV0
IHR5cGU9J2NvbG9yJyAvJmd0OworICogSFRNTCBlbGVtZW50LCBXZWJLaXQgd2lsbCBuZWVkIHRv
IHNob3cgYSBkaWFsb2cgdG8gY2hvb3NlIGEgY29sb3IuIEZvciB0aGF0CisgKiB0byBoYXBwZW4g
aW4gYSBnZW5lcmFsIHdheSwgaW5zdGVhZCBvZiBqdXN0IG9wZW5pbmcgYSAjR3RrQ29sb3JDaG9v
c2VyCisgKiAod2hpY2ggbWlnaHQgYmUgbm90IGRlc2lyYWJsZSBpbiBzb21lIGNhc2VzLCB3aGlj
aCBjb3VsZCBwcmVmZXIgdG8gdXNlIHRoZWlyCisgKiBvd24gY29sb3IgY2hvb3NlciBkaWFsb2cp
LCBXZWJLaXQgd2lsbCBmaXJlIHRoZQorICogI1dlYktpdFdlYlZpZXc6OnJ1bi1jb2xvci1jaG9v
c2VyIHNpZ25hbCB3aXRoIGEgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAqIG9iamVjdCwg
d2hpY2ggd2lsbCBhbGxvdyB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIHRvIHNwZWNpZnkgdGhlIGNv
bG9yIHRvIGJlCisgKiBzZWxlY3RlZCwgdG8gaW5zcGVjdCB0aGUgZGV0YWlscyBvZiB0aGUgcmVx
dWVzdCAoZS5nLiB0byBnZXQgaW5pdGlhbCBjb2xvcikKKyAqIGFuZCB0byBjYW5jZWwgdGhlIHJl
cXVlc3QsIGluIGNhc2Ugbm90aGluZyB3YXMgc2VsZWN0ZWQuCisgKgorICogSW4gY2FzZSB0aGUg
Y2xpZW50IGFwcGxpY2F0aW9uIGRvZXMgbm90IHdpc2ggdG8gaGFuZGxlIHRoaXMgc2lnbmFsLAor
ICogV2ViS2l0IHdpbGwgcHJvdmlkZSBhIGRlZmF1bHQgaGFuZGxlciB3aGljaCB3aWxsIGFzeW5j
aHJvbm91c2x5IHJ1bgorICogYSByZWd1bGFyICNHdGtDb2xvckNob29zZXIgZm9yIHRoZSB1c2Vy
IHRvIGludGVyYWN0IHdpdGguCisgKi8KKworc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0UHJpdmF0ZSB7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgV2ViQ29sb3JD
aG9vc2VyUHJveHk6OkNsaWVudCogY2xpZW50OworI2VuZGlmCisgICAgQ29sb3IgY29sb3I7Cisg
ICAgYm9vbCBoYW5kbGVkUmVxdWVzdDsKK307CisKK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0LCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0LCBHX1RZUEVf
T0JKRUNUKQorCitlbnVtIHsKKyAgICBFTkRfQ0hPT1NFUiwKKyAgICBDSEFOR0VfQ09MT1IsCisK
KyAgICBMQVNUX1NJR05BTAorfTsKKworc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxd
ID0geyAwLCB9OworCitzdGF0aWMgdm9pZCB3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0RGlzcG9z
ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVx
dWVzdCA9IFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1Qob2JqZWN0KTsKKworICAgIC8vIE1h
a2Ugc3VyZSB0aGUgcmVxdWVzdCBpcyBhbHdheXMgaGFuZGxlZCBiZWZvcmUgZmluYWxpemluZy4K
KyAgICBpZiAoIXJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0KQorICAgICAgICB3ZWJraXRf
Y29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbChyZXF1ZXN0KTsKKworICAgIEdfT0JKRUNUX0NM
QVNTKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShv
YmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2Ns
YXNzX2luaXQoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdENsYXNzKiByZXF1ZXN0Q2xhc3MpCit7
CisgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RD
bGFzcyk7CisgICAgb2JqZWN0Q2xhc3MtPmRpc3Bvc2UgPSB3ZWJraXRDb2xvckNob29zZXJSZXF1
ZXN0RGlzcG9zZTsKKworICAgIC8qKgorICAgICAqIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Q6
ZW5kLWNob29zZXI6CisgICAgICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKgorICAgICAqIEVtaXR0
ZWQgd2hlbiByZXF1ZXN0IG11c3QgYmUgdGVybWluYXRlZC4gVGhpcyBoYXBwZW5zIGZvciBleGFt
cGxlIGlmIHRoZQorICAgICAqIHBhZ2UgdHJpZ2dlcmluZyB0aGUgcmVxdWVzdCB1bmxvYWRzIGJl
Zm9yZSB0aGUgcmVxdWVzdCBpcyBjb21wbGV0ZWQuCisgICAgICovCisgICAgc2lnbmFsc1tFTkRf
Q0hPT1NFUl0gPQorICAgICAgICBnX3NpZ25hbF9uZXcoImVuZC1jaG9vc2VyIiwKKyAgICAgICAg
ICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mob2JqZWN0Q2xhc3MpLAorICAgICAgICAgICAgICAg
ICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgICAgICAgMCwgMCwgMCwKKyAgICAgICAg
ICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX1ZPSUQsCisgICAgICAgICAgICAgICAg
R19UWVBFX05PTkUsIDApOworCisgICAgLyoqCisgICAgICogV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdDpjaGFuZ2UtY29sb3I6CisgICAgICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAY29sb3I6
IHRoZSBuZXcgY29sb3IKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiBkZWZhdWx0IHZhbHVl
IG9mIHJlcXVlc3QgaXMgY2hhbmdlZC4KKyAgICAgKi8KKyAgICBzaWduYWxzW0NIQU5HRV9DT0xP
Ul0gPQorICAgICAgICBnX3NpZ25hbF9uZXcoImNoYW5nZS1jb2xvciIsCisgICAgICAgICAgICAg
ICAgIEdfVFlQRV9GUk9NX0NMQVNTKG9iamVjdENsYXNzKSwKKyAgICAgICAgICAgICAgICAgR19T
SUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgICAg
ICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19TVFJJTkcsCisgICAgICAgICAgICAgICAgR19U
WVBFX05PTkUsIDEsCisgICAgICAgICAgICAgICAgR19UWVBFX1NUUklORyk7Cit9CisKKy8qKgor
ICogd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWw6CisgKiBAcmVxdWVzdDogYSAj
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAorICoKKyAqIEFzayBXZWJLaXQgdG8gY2FuY2VsIHRo
ZSByZXF1ZXN0LiBJdCdzIGltcG9ydGFudCB0byBkbyB0aGlzIGluIGNhc2UKKyAqIG5vIHNlbGVj
dGlvbiBoYXMgYmVlbiBtYWRlIGluIHRoZSBjbGllbnQsIG90aGVyd2lzZSB0aGUgcmVxdWVzdAor
ICogd29uJ3QgYmUgcHJvcGVybHkgY29tcGxldGVkIGFuZCB0aGUgYnJvd3NlciB3aWxsIGtlZXAg
dGhlIHJlcXVlc3QKKyAqIHBlbmRpbmcgZm9yZXZlciwgd2hpY2ggbWlnaHQgY2F1c2UgdGhlIGJy
b3dzZXIgdG8gaGFuZy4KKyAqLwordm9pZCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2Nh
bmNlbChXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQorICAgIHJlcXVlc3QtPnByaXYtPmNsaWVudC0+ZGlkRW5kQ29sb3JD
aG9vc2VyKCk7CisgICAgcmVxdWVzdC0+cHJpdi0+aGFuZGxlZFJlcXVlc3QgPSBUUlVFOworI2Vu
ZGlmCit9CisKKy8qKgorICogd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29s
b3I6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0CisgKiBAY29sb3I6
IChhcnJheSB6ZXJvLXRlcm1pbmF0ZWQ9MSkgKHRyYW5zZmVyIG5vbmUpOiBhCisgKgorICogQXNr
IFdlYktpdCB0byBzZWxlY3QgY29sb3IgYW5kIGNvbXBsZXRlIHRoZSByZXF1ZXN0LgorICovCit2
b2lkIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yKFdlYktpdENvbG9y
Q2hvb3NlclJlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IGdjaGFyKiBjb2xvcikKK3sKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1QocmVxdWVzdCkpOwor
CisgICAgcmVxdWVzdC0+cHJpdi0+Y29sb3IgPSBDb2xvcihjb2xvcik7CisjaWYgRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCisgICAgcmVxdWVzdC0+cHJpdi0+Y2xpZW50LT5kaWRDaG9vc2VDb2xv
cihyZXF1ZXN0LT5wcml2LT5jb2xvcik7CisgICAgcmVxdWVzdC0+cHJpdi0+Y2xpZW50LT5kaWRF
bmRDb2xvckNob29zZXIoKTsKKyNlbmRpZgorICAgIHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1
ZXN0ID0gVFJVRTsKK30KKworLyoqCisgKiB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dl
dF9jdXJyZW50X2NvbG9yOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3QKKyAqCisgKiBSZXR1cm5zOiB0aGUgY3VycmVudCBjb2xvciBvZiByZXF1ZXN0LiBXaGlsZSBu
byBjb2xvciBoYXMgYmVlbiBzZWxlY3RlZCwgaXQKKyAqIGlzIHRoZSBpbml0aWFsIHZhbHVlIGRl
ZmluZWQgYnkgV2ViS2l0LiBXaGVuIGEgY29sb3IgaGFzIGJlZW4gc2VsZWN0ZWQsIHRoaXMKKyAq
IGJlY29tZXMgdGhlIHNlbGVjdGVkIHZhbHVlLgorICovCitjb25zdCBnY2hhciogd2Via2l0X2Nv
bG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcihXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19D
T0xPUl9DSE9PU0VSX1JFUVVFU1QocmVxdWVzdCksIDApOworCisgICAgcmV0dXJuIHJlcXVlc3Qt
PnByaXYtPmNvbG9yLnNlcmlhbGl6ZWQoKS5hc2NpaSgpLmRhdGEoKTsKK30KKworI2lmIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SKQorV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogd2Via2l0Q29s
b3JDaG9vc2VyUmVxdWVzdENyZWF0ZShjb25zdCBDb2xvciBpbml0aWFsQ29sb3IsIFdlYkNvbG9y
Q2hvb3NlclByb3h5OjpDbGllbnQqIGNsaWVudCkKK3sKKyAgICBXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVChnX29iamVjdF9u
ZXcoV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNULCBOVUxMKSk7CisgICAgcmVxdWVz
dC0+cHJpdi0+Y2xpZW50ID0gY2xpZW50OworICAgIHJlcXVlc3QtPnByaXYtPmNvbG9yID0gaW5p
dGlhbENvbG9yOworICAgIHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0ID0gRkFMU0U7Cisg
ICAgcmV0dXJuIHJlcXVlc3Q7Cit9CisKK3ZvaWQgd2Via2l0V2ViQ29sb3JDaG9vc2VyUmVxdWVz
dEVuZChXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVChyZXF1ZXN0KSk7CisKKyAg
ICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbChyZXF1ZXN0KTsKKyAgICBnX3Np
Z25hbF9lbWl0KHJlcXVlc3QsIHNpZ25hbHNbRU5EX0NIT09TRVJdLCAwLCBOVUxMKTsKK30KKwor
dm9pZCB3ZWJraXRXZWJDb2xvckNob29zZXJSZXF1ZXN0U2V0Q29sb3IoV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgQ29sb3IgY29sb3IpCit7CisgICAgcmVxdWVzdC0+
cHJpdi0+Y29sb3IgPSBjb2xvcjsKKyAgICBnX3NpZ25hbF9lbWl0KHJlcXVlc3QsIHNpZ25hbHNb
Q0hBTkdFX0NPTE9SXSwgMCwgcmVxdWVzdC0+cHJpdi0+Y29sb3Iuc2VyaWFsaXplZCgpLmFzY2lp
KCkuZGF0YSgpLCBOVUxMKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmExMjRhYjJlZjRlZTI5ZDdkNjQ3N2I4ZmZkOTZlOTY4NWViYzc0YjQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0LmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAx
MiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwK
KyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUK
KyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dF
QktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJv
ciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisj
ZW5kaWYKKworI2lmbmRlZiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0X2gKKyNkZWZpbmUgV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdF9oCisKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBX
RUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QgICAgICAgICAgICAod2Via2l0X2NvbG9y
X2Nob29zZXJfcmVxdWVzdF9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfQ09MT1JfQ0hPT1NF
Ul9SRVFVRVNUKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9i
aiksIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCwgV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdCkpCisjZGVmaW5lIFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1Moa2xh
c3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfQ09M
T1JfQ0hPT1NFUl9SRVFVRVNULCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MpKQorI2Rl
ZmluZSBXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iaikgICAgICAgICAoR19UWVBF
X0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVR
VUVTVCkpCisjZGVmaW5lIFdFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1Moa2xh
c3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfQ09MT1Jf
Q0hPT1NFUl9SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVF9H
RVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRf
VFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QsIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFz
cykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICAgICAgICBX
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3RDbGFzcyAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzczsKK3R5cGVk
ZWYgc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZSBXZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0UHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
IHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIC8qPCBwcml2YXRlID4qLworICAgIFdlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7
Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dl
dF90eXBlICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFy
ICoKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IgIChXZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvciAgICAgICAoV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdCogcmVxdWVzdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKiBjb2xvcik7CisKK1dFQktJVF9BUEkgdm9p
ZAord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwgICAgICAgICAgICAgKFdlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QpOworCitHX0VORF9ERUNMUworCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9y
Q2hvb3NlclJlcXVlc3RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhOWE0YTI1
ZGVhYzg1M2E1MWM0ZThlNTI2NzM0OTE0ZTY0YTFkYzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJp
dmF0ZS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1
bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Ogor
ICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3RQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZh
dGVfaAorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94
eS5oIgorI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaCIKKyNpbmNsdWRlICJX
ZWJLaXRQcml2YXRlLmgiCisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKworV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdCogd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdENyZWF0ZShjb25z
dCBXZWJDb3JlOjpDb2xvciwgV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50Kik7
Cit2b2lkIHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RFbmQoV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdCopOwordm9pZCB3ZWJraXRXZWJDb2xvckNob29zZXJSZXF1ZXN0U2V0Q29sb3IoV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdCosIGNvbnN0IFdlYkNvcmU6OkNvbG9yKTsKKworI2VuZGlm
IC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisjZW5kaWYgLy8gV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdFByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCAzNTJiN2ZlZTI4MzhjZDU5OWFlZTgyNmQyZDU4
OWJmMGMzODA2NGJmLi5lOThiYzViODk2NzQzZTcxM2NlMzFiMmRhZTNlNzg0MThlM2YzYWRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmNwcApAQCAtMTA3LDYgKzEwNyw4IEBAIGVudW0gewogCiAgICAgUlVOX0ZJTEVfQ0hPT1NFUiwK
IAorICAgIFJVTl9DT0xPUl9DSE9PU0VSLAorCiAgICAgQ09OVEVYVF9NRU5VLAogICAgIENPTlRF
WFRfTUVOVV9ESVNNSVNTRUQsCiAKQEAgLTQxNCw2ICs0MTYsNzcgQEAgc3RhdGljIHZvaWQgZmls
ZUNob29zZXJEaWFsb2dSZXNwb25zZUNhbGxiYWNrKEd0a0RpYWxvZyogZGlhbG9nLCBnaW50IHJl
c3BvbnNlSUQKICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVChkaWFsb2cpKTsKIH0K
IAorc3RhdGljIHZvaWQgdXBkYXRlQ29sb3JDaG9vc2VyQ29sb3JWYWx1ZShHdGtXaWRnZXQqIGRp
YWxvZywgY29uc3QgZ2NoYXIqIGNvbG9yKSAKK3sKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA0
LCAwKQorICAgIEdka1JHQkEgcmdiOworICAgIGdka19yZ2JhX3BhcnNlKCZyZ2IsIGNvbG9yKTsK
KyAgICBndGtfY29sb3JfY2hvb3Nlcl9zZXRfcmdiYShHVEtfQ09MT1JfQ0hPT1NFUihkaWFsb2cp
LCAmcmdiKTsKKyNlbHNlCisgICAgR3RrV2lkZ2V0KiBjb2xvclNlbGVjdGlvbiA9IGd0a19jb2xv
cl9zZWxlY3Rpb25fZGlhbG9nX2dldF9jb2xvcl9zZWxlY3Rpb24oR1RLX0NPTE9SX1NFTEVDVElP
Tl9ESUFMT0coZGlhbG9nKSk7CisgICAgZ3RrX2NvbG9yX3NlbGVjdGlvbl9zZXRfaGFzX3BhbGV0
dGUoR1RLX0NPTE9SX1NFTEVDVElPTihjb2xvclNlbGVjdGlvbiksIFRSVUUpOworICAgIEdka0Nv
bG9yIHJnYjsKKyAgICBnZGtfY29sb3JfcGFyc2UoY29sb3IsICZyZ2IpOworICAgIGd0a19jb2xv
cl9zZWxlY3Rpb25fc2V0X2N1cnJlbnRfY29sb3IoR1RLX0NPTE9SX1NFTEVDVElPTihjb2xvclNl
bGVjdGlvbiksICZyZ2IpOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkIGNvbG9yQ2hvb3NlclJl
cXVlc3RDaGFuZ2VDYWxsYmFjayhXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0LCBj
b25zdCBnY2hhciogY29sb3IsIEd0a1dpZGdldCogZGlhbG9nKQoreworICAgIHVwZGF0ZUNvbG9y
Q2hvb3NlckNvbG9yVmFsdWUoZGlhbG9nLCBjb2xvcik7Cit9CisKK3N0YXRpYyB2b2lkIGNvbG9y
Q2hvb3NlclJlcXVlc3RFbmRDYWxsYmFjayhXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1
ZXN0LCBHdGtXaWRnZXQqIGRpYWxvZykKK3sKKyAgICBnX29iamVjdF91bnJlZihyZXF1ZXN0KTsK
KyAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTsKK30KKworc3RhdGljIHZvaWQgY29sb3JD
aG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFjayhHdGtXaWRnZXQqIGRpYWxvZywgZ2ludCByZXNw
b25zZUlELCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEdSZWZQ
dHI8V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdD4gYWRvcHRlZFJlcXVlc3QgPSBhZG9wdEdSZWYo
cmVxdWVzdCk7CisgICAgaWYgKHJlc3BvbnNlSUQgPT0gR1RLX1JFU1BPTlNFX09LKSB7CisgICAg
ICAgIEdPd25QdHI8Y2hhcj4gc3RyX3ZhbHVlOworI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDQs
IDApCisgICAgICAgIEdka1JHQkEgY29sb3I7CisgICAgICAgIGd0a19jb2xvcl9jaG9vc2VyX2dl
dF9yZ2JhKEdUS19DT0xPUl9DSE9PU0VSKGRpYWxvZyksICZjb2xvcik7CisgICAgICAgIHN0cl92
YWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIjJS4yWCUuMlglLjJYIiwgKGludCkoY29sb3IucmVk
ICogMjU1KSwgKGludCkoY29sb3IuZ3JlZW4gKiAyNTUpLCAoaW50KShjb2xvci5ibHVlICogMjU1
KSkpOworI2Vsc2UKKyAgICAgICAgR2RrQ29sb3IgY29sb3I7CisgICAgICAgIEd0a1dpZGdldCog
Y29sb3JTZWxlY3Rpb24gPSBndGtfY29sb3Jfc2VsZWN0aW9uX2RpYWxvZ19nZXRfY29sb3Jfc2Vs
ZWN0aW9uKEdUS19DT0xPUl9TRUxFQ1RJT05fRElBTE9HKGRpYWxvZykpOworICAgICAgICBndGtf
Y29sb3Jfc2VsZWN0aW9uX2dldF9jdXJyZW50X2NvbG9yKEdUS19DT0xPUl9TRUxFQ1RJT04oY29s
b3JTZWxlY3Rpb24pLCAmY29sb3IpOworICAgICAgICBzdHJfdmFsdWUuc2V0KGdfc3RyZHVwX3By
aW50ZigiIyUuMlglLjJYJS4yWCIsIChpbnQpKGNvbG9yLnJlZCAvIDI1NSksIChpbnQpKGNvbG9y
LmdyZWVuIC8gMjU1KSwgKGludCkoY29sb3IuYmx1ZSAvIDI1NSkpKTsKKyNlbmRpZgorICAgICAg
ICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvcihhZG9wdGVkUmVxdWVz
dC5nZXQoKSwgc3RyX3ZhbHVlLmdldCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgd2Via2l0X2Nv
bG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwoYWRvcHRlZFJlcXVlc3QuZ2V0KCkpOworCisgICAg
Z3RrX3dpZGdldF9kZXN0cm95KGRpYWxvZyk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRX
ZWJWaWV3UnVuQ29sb3JDaG9vc2VyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdENvbG9y
Q2hvb3NlclJlcXVlc3QqIHJlcXVlc3QpCit7CisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgNCwg
MCkKKyAgICBHdGtXaWRnZXQqIHBhcmVudCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19X
SURHRVQod2ViVmlldykpOworICAgIGlmICghZ3RrX3dpZGdldF9pc190b3BsZXZlbChwYXJlbnQp
IHx8ICFHVEtfSVNfV0lORE9XKHBhcmVudCkpCisgICAgICAgIHBhcmVudCA9IDA7CisgICAgR3Rr
V2lkZ2V0KiBkaWFsb2cgPSAgZ3RrX2NvbG9yX2Nob29zZXJfZGlhbG9nX25ldyhfKCJTZWxlY3Qg
Q29sb3IiKSwgR1RLX1dJTkRPVyhwYXJlbnQpKTsKKyNlbHNlCisgICAgR3RrV2lkZ2V0KiBkaWFs
b2cgPSBndGtfY29sb3Jfc2VsZWN0aW9uX2RpYWxvZ19uZXcoXygiU2VsZWN0IENvbG9yIikpOwor
I2VuZGlmCisKKyAgICBjb25zdCBnY2hhciogaW5pdGlhbENvbG9yID0gd2Via2l0X2NvbG9yX2No
b29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcihyZXF1ZXN0KTsKKyAgICB1cGRhdGVDb2xv
ckNob29zZXJDb2xvclZhbHVlKGRpYWxvZywgaW5pdGlhbENvbG9yKTsKKworICAgIGdfc2lnbmFs
X2Nvbm5lY3QocmVxdWVzdCwgImVuZC1jaG9vc2VyIiwgR19DQUxMQkFDSyhjb2xvckNob29zZXJS
ZXF1ZXN0RW5kQ2FsbGJhY2spLCBkaWFsb2cpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QocmVxdWVz
dCwgImNoYW5nZS1jb2xvciIsIEdfQ0FMTEJBQ0soY29sb3JDaG9vc2VyUmVxdWVzdENoYW5nZUNh
bGxiYWNrKSwgZGlhbG9nKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgInJlc3BvbnNl
IiwgR19DQUxMQkFDSyhjb2xvckNob29zZXJEaWFsb2dSZXNwb25zZUNhbGxiYWNrKSwgcmVxdWVz
dCk7CisgICAgZ3RrX3dpZGdldF9zaG93KGRpYWxvZyk7CisgICAgZ19vYmplY3RfcmVmKHJlcXVl
c3QpOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJW
aWV3UnVuRmlsZUNob29zZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0RmlsZUNob29z
ZXJSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIEd0a1dpZGdldCogdG9wbGV2ZWwgPSBndGtfd2lk
Z2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKQEAgLTU1OCw2ICs2MzEsNyBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xh
c3MqIHdlYlZpZXdDbGFzcykKICAgICB3ZWJWaWV3Q2xhc3MtPmRlY2lkZV9wb2xpY3kgPSB3ZWJr
aXRXZWJWaWV3RGVjaWRlUG9saWN5OwogICAgIHdlYlZpZXdDbGFzcy0+cGVybWlzc2lvbl9yZXF1
ZXN0ID0gd2Via2l0V2ViVmlld1Blcm1pc3Npb25SZXF1ZXN0OwogICAgIHdlYlZpZXdDbGFzcy0+
cnVuX2ZpbGVfY2hvb3NlciA9IHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlcjsKKyAgICB3ZWJW
aWV3Q2xhc3MtPnJ1bl9jb2xvcl9jaG9vc2VyID0gd2Via2l0V2ViVmlld1J1bkNvbG9yQ2hvb3Nl
cjsKIAogICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6d2ViLWNvbnRleHQ6CkBAIC0xMTQ5
LDYgKzEyMjMsMzcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2Vi
S2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICBHX1RZ
UEVfQk9PTEVBTiwgMSwgLyogbnVtYmVyIG9mIHBhcmFtZXRlcnMgKi8KICAgICAgICAgICAgICAg
ICAgICAgIFdFQktJVF9UWVBFX0ZJTEVfQ0hPT1NFUl9SRVFVRVNUKTsKIAorICAgICAvKioKKyAg
ICAgKiBXZWJLaXRXZWJWaWV3OjpydW4tY29sb3ItY2hvb3NlcjoKKyAgICAgKiBAd2ViX3ZpZXc6
IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAg
KiBAcmVxdWVzdDogYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAorICAgICAqCisgICAgICog
VGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIGludGVyYWN0cyB3aXRoIGEgJmx0
O2lucHV0CisgICAgICogdHlwZT0nY29sb3InIC8mZ3Q7IEhUTUwgZWxlbWVudCwgcmVxdWVzdGlu
ZyBmcm9tIFdlYktpdCB0byBzaG93CisgICAgICogYSBkaWFsb2cgdG8gc2VsZWN0IGEgY29sb3Iu
IFRvIGxldCB0aGUgYXBwbGljYXRpb24ga25vdyB0aGUgZGV0YWlscyBvZgorICAgICAqIHRoZSBj
b2xvciBjaG9vc2VyLCBhcyB3ZWxsIGFzIHRvIGFsbG93IHRoZSBjbGllbnQgYXBwbGljYXRpb24g
dG8gZWl0aGVyCisgICAgICogY2FuY2VsIHRoZSByZXF1ZXN0IG9yIHBlcmZvcm0gYW4gYWN0dWFs
IGNvbG9yIHNlbGVjdGlvbiwgdGhlIHNpZ25hbCB3aWxsCisgICAgICogcGFzcyBhbiBpbnN0YW5j
ZSBvZiB0aGUgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgaW4gdGhlIEByZXF1ZXN0CisgICAg
ICogYXJndW1lbnQuCisgICAgICoKKyAgICAgKiBUaGUgZGVmYXVsdCBzaWduYWwgaGFuZGxlciB3
aWxsIGFzeW5jaHJvbm91c2x5IHJ1biBhIHJlZ3VsYXIKKyAgICAgKiAjR3RrQ29sb3JDaG9vc2Vy
IGZvciB0aGUgdXNlciB0byBpbnRlcmFjdCB3aXRoLgorICAgICAqCisgICAgICogUmV0dXJuczog
JVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZSBl
dmVudC4KKyAgICAgKiAgICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIuCisg
ICAgICoKKyAgICAgKi8KKyAgICBzaWduYWxzW1JVTl9DT0xPUl9DSE9PU0VSXSA9CisgICAgICAg
IGdfc2lnbmFsX25ldygicnVuLWNvbG9yLWNob29zZXIiLAorICAgICAgICAgICAgICAgICAgICAg
R19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgICAgICAgICAgIEdf
U0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdl
YktpdFdlYlZpZXdDbGFzcywgcnVuX2NvbG9yX2Nob29zZXIpLAorICAgICAgICAgICAgICAgICAg
ICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCAwIC8qIGFjY3VtdWxhdG9yIGRh
dGEgKi8sCisgICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19PQkpF
Q1QsCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwgLyogbnVtYmVyIG9m
IHBhcmFtZXRlcnMgKi8KKyAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX0NPTE9SX0NI
T09TRVJfUkVRVUVTVCk7CisKKwogICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6OmNvbnRl
eHQtbWVudToKICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0
aGUgc2lnbmFsIGlzIGVtaXR0ZWQKQEAgLTE1NjcsNiArMTY3MiwxMiBAQCB2b2lkIHdlYmtpdFdl
YlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0
RmlsZUNob29zZQogICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tSVU5fRklMRV9D
SE9PU0VSXSwgMCwgcmVxdWVzdCwgJnJldHVyblZhbHVlKTsKIH0KIAordm9pZCB3ZWJraXRXZWJW
aWV3UnVuQ29sb3JDaG9vc2VyUmVxdWVzdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdib29sZWFuIHJldHVyblZhbHVl
OworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tSVU5fQ09MT1JfQ0hPT1NFUl0s
IDAsIHJlcXVlc3QsICZyZXR1cm5WYWx1ZSk7Cit9CisKIHN0YXRpYyBib29sIHdlYmtpdFdlYlZp
ZXdTaG91bGRTaG93SW5wdXRNZXRob2RzTWVudShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewog
ICAgIEd0a1NldHRpbmdzKiBzZXR0aW5ncyA9IGd0a193aWRnZXRfZ2V0X3NldHRpbmdzKEdUS19X
SURHRVQod2ViVmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5oCmluZGV4IGZkYmM2NjZlZmM4ZTY3Y2FmZDYyMTUwNTdkNmZiZWQzYzUw
N2Q1MGIuLjFjNDVjYTJmNmU4MDNjMWY1NjM0OGZhMjQ3MTdmOGQ0ZDZlYzczMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0RGVmaW5lcy5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0Lmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRGaW5kQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0Lmg+CkBAIC0xODgsNiArMTg5LDggQEAgc3RydWN0
IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogICAgIGdib29sZWFuICAgKCogbGVhdmVfZnVsbHNjcmVl
bikgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogICAg
IGdib29sZWFuICAgKCogcnVuX2ZpbGVfY2hvb3NlcikgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0ICAgICpyZXF1ZXN0KTsKKyAg
ICBnYm9vbGVhbiAgICgqIHJ1bl9jb2xvcl9jaG9vc2VyKSAgICAgICAgIChXZWJLaXRXZWJWaWV3
ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgICAgKnJlcXVlc3QpOwog
ICAgIGdib29sZWFuICAgKCogY29udGV4dF9tZW51KSAgICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViS2l0Q29udGV4dE1lbnUgICAgICAgICAgICpjb250ZXh0X21l
bnUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrRXZl
bnQgICAgICAgICAgICAgICAgICAgICpldmVudCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDBkZTBkMTdm
N2I1YTU0NGZmNjJkYjE2ODdmYjZlZWRhZmExM2E3MGYuLjg1MmFlMGM4NTNlYzJiZTQ0Y2E4M2Q1
OTlmNTE3YmQ1NmM5ZmJlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtNDgsNiArNDgsNyBAQCB2b2lk
IHdlYmtpdFdlYlZpZXdNb3VzZVRhcmdldENoYW5nZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6
V2ViSGl0VGVzdFJlc3VsdCosCiB2b2lkIHdlYmtpdFdlYlZpZXdQcmludEZyYW1lKFdlYktpdFdl
YlZpZXcqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqKTsKIHZvaWQgd2Via2l0V2ViVmlld1Jlc291
cmNlTG9hZFN0YXJ0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIHVp
bnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV2ViS2l0VVJJUmVxdWVzdCopOwogdm9pZCB3ZWJr
aXRXZWJWaWV3UnVuRmlsZUNob29zZXJSZXF1ZXN0KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRGaWxl
Q2hvb3NlclJlcXVlc3QqKTsKK3ZvaWQgd2Via2l0V2ViVmlld1J1bkNvbG9yQ2hvb3NlclJlcXVl
c3QoV2ViS2l0V2ViVmlldyosIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqKTsKIFdlYktpdFdl
YlJlc291cmNlKiB3ZWJraXRXZWJWaWV3R2V0TG9hZGluZ1dlYlJlc291cmNlKFdlYktpdFdlYlZp
ZXcqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpOwogdm9pZCB3ZWJraXRXZWJWaWV3UmVt
b3ZlTG9hZGluZ1dlYlJlc291cmNlKFdlYktpdFdlYlZpZXcqLCB1aW50NjRfdCByZXNvdXJjZUlk
ZW50aWZpZXIpOwogV2ViS2l0V2ViUmVzb3VyY2UqIHdlYmtpdFdlYlZpZXdSZXNvdXJjZUxvYWRG
aW5pc2hlZChXZWJLaXRXZWJWaWV3KiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay1kb2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstZG9jcy5zZ21sCmluZGV4IDZlOTcyODQ2N2E3NGMzZGFmNWRhNmRjYjBmYWY3OGE0YTg5
N2ZjOTQuLmU4NDhlMmQ1NzNjZmVlZTgxNWZkYWZjZmQwNWNkOGI0NDU5YTRhNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2Nz
LnNnbWwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLWRvY3Muc2dtbApAQCAtMzAsNiArMzAsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9Inht
bC9XZWJLaXRXZWJSZXNvdXJjZS54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2Vi
S2l0RXJyb3IueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEZhdmljb25E
YXRhYmFzZS54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0RmlsZUNo
b29zZXJSZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRGaW5k
Q29udHJvbGxlci54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0Q29va2ll
TWFuYWdlci54bWwiLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IGZjMzE3NmQwYjRh
OTZiZGM4YTJmZDIzZGU0MzY0NmRjMmQ3ZTgwNGIuLjNhMzIxN2Q2YjJlYWI0NWZmY2ExZTg4ZmFj
ZTY5MDdiYmI1YTc2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtNjYzLDYgKzY2
MywyNyBAQCB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X3R5cGUKIDwvU0VDVElPTj4K
IAogPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PC9GSUxFPgorV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdAord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRf
Y3VycmVudF9jb2xvcgord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3IK
K3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsCisKKzxTVUJTRUNUSU9OIFN0YW5k
YXJkPgorV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdENsYXNzCitXRUJLSVRfVFlQRV9DT0xPUl9D
SE9PU0VSX1JFUVVFU1QKK1dFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1QKK1dFQktJVF9JU19D
T0xPUl9DSE9PU0VSX1JFUVVFU1QKK1dFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1MK
K1dFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1MKK1dFQktJVF9DT0xPUl9DSE9P
U0VSX1JFUVVFU1RfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0UHJpdmF0ZQord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRf
dHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxGSUxFPldlYktpdEZpbmRDb250cm9sbGVy
PC9GSUxFPgogV2ViS2l0RmluZENvbnRyb2xsZXIKIFdlYktpdEZpbmRPcHRpb25zCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlw
ZXMgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlw
ZXMKaW5kZXggNGQ4ODQzZTljMWQ4YzZmNDRhNzBjMTE0YzI1OTRiMjZhNGJmZGM2ZS4uZWI1YjM5
NGJmNTJlZjlhMzdiMGRiMzQzNzkwMjlkNmRmNjBkMjhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcwpAQCAtMjEs
MyArMjEsNCBAQCB3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfdHlwZQogd2Via2l0X3VyaV9zY2hl
bWVfcmVxdWVzdF9nZXRfdHlwZQogd2Via2l0X2NvbnRleHRfbWVudV9nZXRfdHlwZQogd2Via2l0
X2NvbnRleHRfbWVudV9pdGVtX2dldF90eXBlCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0
X2dldF90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZWE1ZTQwNDAwOGY4YmUzMjcy
OWUxMmRjYTZkNTZkMzYyZGQ5MWE2OC4uZDYwMTVhMDJmZWMwM2ZlZWRiY2NhZjFmNWJhMmZkYzUy
ZGE1ZTEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtNzk2LDYgKzc5Niw2MSBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld0ZpbGVDaG9vc2VyUmVxdWVzdChGaWxlQ2hvb3NlclRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2Nh
bmNlbChmaWxlQ2hvb3NlclJlcXVlc3QpOwogfQogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCitjbGFzcyBDb2xvckNob29zZXJUZXN0OiBwdWJsaWMgVUlDbGllbnRUZXN0IHsKK3B1Ymxp
YzoKKyAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKENvbG9yQ2hvb3NlclRlc3QpOworICAgIENv
bG9yQ2hvb3NlclRlc3QoKQorICAgIHsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZp
ZXcsICJydW4tY29sb3ItY2hvb3NlciIsIEdfQ0FMTEJBQ0socnVuQ29sb3JDaG9vc2VyQ2FsbGJh
Y2spLCB0aGlzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gcnVuQ29sb3JDaG9vc2Vy
Q2FsbGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVl
c3QsIENvbG9yQ2hvb3NlclRlc3QqIHRlc3QpCisgICAgeworICAgICAgICB0ZXN0LT5ydW5Db2xv
ckNob29zZXIocmVxdWVzdCk7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIHZv
aWQgcnVuQ29sb3JDaG9vc2VyKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QpCisg
ICAgeworICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JK
RUNUKHJlcXVlc3QpKTsKKyAgICAgICAgbV9jb2xvckNob29zZXJSZXF1ZXN0ID0gcmVxdWVzdDsK
KyAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wKTsKKyAgICB9CisKKyAgICBXZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0KiBjbGlja01vdXNlQnV0dG9uQW5kV2FpdEZvckNvbG9yQ2hv
b3NlclJlcXVlc3QoaW50IHgsIGludCB5KQorICAgIHsKKyAgICAgICAgY2xpY2tNb3VzZUJ1dHRv
bih4LCB5KTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgICAgICBy
ZXR1cm4gbV9jb2xvckNob29zZXJSZXF1ZXN0LmdldCgpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBHUmVmUHRyPFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Q+IG1fY29sb3JDaG9vc2VyUmVxdWVz
dDsKK307CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3Q29sb3JDaG9vc2VyUmVxdWVzdChDb2xv
ckNob29zZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHRlc3QtPnNob3dJbldp
bmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb2xvckNo
b29zZXJIVE1MID0gIjxodG1sPjxib2R5PjxpbnB1dCBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7
bGVmdDowO3RvcDowO21hcmdpbjowO3BhZGRpbmc6MCcgdHlwZT0nY29sb3InIHZhbHVlPScjZmYw
MDAwJy8+PC9ib2R5PjwvaHRtbD4iOworICAgIHRlc3QtPmxvYWRIdG1sKGNvbG9yQ2hvb3NlckhU
TUwsIDApOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIFdlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QqIGNvbG9yQ2hvb3NlclJlcXVlc3QgPSB0ZXN0LT5jbGlja01vdXNl
QnV0dG9uQW5kV2FpdEZvckNvbG9yQ2hvb3NlclJlcXVlc3QoNSwgNSk7CisgICAgZ19hc3NlcnRf
Y21wc3RyKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IoY29s
b3JDaG9vc2VyUmVxdWVzdCksID09LCAiI2ZmMDAwMCIpOworCisgICAgdGVzdC0+cnVuSmF2YVNj
cmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcp
LnZhbHVlID0gJyMwMGZmMDAnOyIsIDApOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfY29s
b3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9jdXJyZW50X2NvbG9yKGNvbG9yQ2hvb3NlclJlcXVlc3Qp
LCA9PSwgIiMwMGZmMDAiKTsKKworICAgIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2Vs
ZWN0X2NvbG9yKGNvbG9yQ2hvb3NlclJlcXVlc3QsICIjMDAwMGZmIik7CisgICAgZ19hc3NlcnRf
Y21wc3RyKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IoY29s
b3JDaG9vc2VyUmVxdWVzdCksID09LCAiIzAwMDBmZiIpOworCisgICAgV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50
aWxGaW5pc2hlZCgiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZTsiLCAwKTsK
KyAgICBHT3duUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVz
dWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodmFs
dWVTdHJpbmcuZ2V0KCksID09LCAiIzAwMDBmZiIpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCisKIGNsYXNzIEZ1bGxTY3JlZW5DbGllbnRUZXN0OiBwdWJsaWMgV2Vi
Vmlld1Rlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoRnVsbFNjcmVl
bkNsaWVudFRlc3QpOwpAQCAtMTA4Myw2ICsxMTM4LDkgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAg
IFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiY2FuLXNob3ctbWltZS10eXBlIiwg
dGVzdFdlYlZpZXdDYW5TaG93TUlNRVR5cGUpOwogICAgIEZvcm1DbGllbnRUZXN0OjphZGQoIldl
YktpdFdlYlZpZXciLCAic3VibWl0LWZvcm0iLCB0ZXN0V2ViVmlld1N1Ym1pdEZvcm0pOwogICAg
IFNhdmVXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInNhdmUiLCB0ZXN0V2ViVmll
d1NhdmUpOworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIENvbG9yQ2hvb3NlclRl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJjb2xvci1jaG9vc2VyLXJlcXVlc3QiLCB0ZXN0V2Vi
Vmlld0NvbG9yQ2hvb3NlclJlcXVlc3QpOworI2VuZGlmCiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCmluZGV4IDFiNGZhODZh
MWVjNDM0OWZhZGYwMzczYTQ3N2U4ZWI2Y2FjNWQ5MjIuLjAzZDNkNjQ3ODVhODM3MWViMGRiMmRl
ZDJmOTNhMzQxODU0Mzg5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93
ZWJraXQyLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEVudW1U
eXBlcy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RXJyb3IuaD4KICNpbmNsdWRlIDx3ZWJr
aXQyL1dlYktpdEZhdmljb25EYXRhYmFzZS5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RmlsZUNob29zZXJS
ZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGaW5kQ29udHJvbGxlci5oPgogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0Lmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRhYWQ1ZDE5ZGE5ZTdjZGEyYTA1MWViMjAxNTQzM2Q0ZmIwNGM3Y2YK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9y
Q2hvb3NlclByb3h5R3RrLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChj
KSAyMDEyLCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG1ldDoKKyAqCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlLAorICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElT
IgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisjaW5jbHVkZSAiV2ViQ29s
b3JDaG9vc2VyUHJveHlHdGsuaCIKKworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb2xvckNob29zZXJQcm94eUd0azo6V2Vi
Q29sb3JDaG9vc2VyUHJveHlHdGsoV2ViQ29sb3JDaG9vc2VyUHJveHk6OkNsaWVudCogY2xpZW50
LCBHdGtXaWRnZXQqIHdlYlZpZXcsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IElu
dFJlY3QmIGVsZW1lbnRSZWN0KQorICAgIDogV2ViQ29sb3JDaG9vc2VyUHJveHkoY2xpZW50KQor
eworICAgIG1fcmVxdWVzdCA9IGFkb3B0R1JlZihHX09CSkVDVCh3ZWJraXRDb2xvckNob29zZXJS
ZXF1ZXN0Q3JlYXRlKGluaXRpYWxDb2xvciwgbV9jbGllbnQpKSk7CisgICAgZ2Jvb2xlYW4gcmV0
dXJuVmFsdWU7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcsICJydW4tY29sb3It
Y2hvb3NlciIsIG1fcmVxdWVzdC5nZXQoKSwgJnJldHVyblZhbHVlKTsKK30KKwordm9pZCBXZWJD
b2xvckNob29zZXJQcm94eUd0azo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
Cit7CisgICAgd2Via2l0V2ViQ29sb3JDaG9vc2VyUmVxdWVzdFNldENvbG9yKFdFQktJVF9DT0xP
Ul9DSE9PU0VSX1JFUVVFU1QobV9yZXF1ZXN0LmdldCgpKSwgY29sb3IpOworfQorCit2b2lkIFdl
YkNvbG9yQ2hvb3NlclByb3h5R3RrOjplbmRDaG9vc2VyKCkKK3sKKyAgICB3ZWJraXRXZWJDb2xv
ckNob29zZXJSZXF1ZXN0RW5kKFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1QobV9yZXF1ZXN0
LmdldCgpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KElOUFVUX1RZUEVfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGZhZDM3YzFhM2Q1NzE4
OTk0MjliODhiZmY3MDk0NTNhMTU3ZmRjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuaApAQCAtMCwwICsxLDU5
IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEyLCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcworICogICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAg
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJDb2xvckNob29zZXJQcm94eUd0a19oCisjZGVmaW5lIFdl
YkNvbG9yQ2hvb3NlclByb3h5R3RrX2gKKworI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5
LmgiCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbG9yOworY2xhc3MgSW50UmVj
dDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkNvbG9yQ2hvb3NlclByb3h5
R3RrIDogIHB1YmxpYyBXZWJDb2xvckNob29zZXJQcm94eSB7CisKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gY3JlYXRlKFdlYkNvbG9yQ2hvb3Nl
clByb3h5OjpDbGllbnQqIGNsaWVudCwgR3RrV2lkZ2V0KiB3ZWJWaWV3LCBjb25zdCBXZWJDb3Jl
OjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVj
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29sb3JDaG9vc2VyUHJv
eHlHdGsoY2xpZW50LCB3ZWJWaWV3LCBpbml0aWFsQ29sb3IsIGVsZW1lbnRSZWN0KSk7CisgICAg
fQorICAgIHZvaWQgc2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOworICAg
IHZvaWQgZW5kQ2hvb3NlcigpOworCitwcml2YXRlOgorICAgIFdlYkNvbG9yQ2hvb3NlclByb3h5
R3RrKFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQqLCBHdGtXaWRnZXQqLCBjb25zdCBXZWJD
b3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKworICAgIEdSZWZQdHI8R09i
amVjdD4gbV9yZXF1ZXN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBXZWJDb2xvckNob29zZXJQcm94eUd0a19oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4
IGY4N2Y4MzQ4MGY5ZjNhNjdiOThhY2JjYmNlYzBjZWY1ZTU4MGYyM2MuLjJjNmIwMGNmMDZmMjU2
Mjc3ZTg1NmIxMjU0N2RmZDBhYzU5ZjY1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAt
MjMyLDYgKzIzMiw4IEBAIF9aTjdXZWJDb3JlMThTdHlsZVNoZWV0Q29udGVudHNEMUV2OwogX1pO
N1dlYkNvcmUyOERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24xMmFkZFVzZXJTaGVldEVOM1dU
RjEwUGFzc1JlZlB0cklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRTsKIF9aTjdXZWJDb3JlMjhE
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTRhZGRBdXRob3JTaGVldEVOM1dURjEwUGFzc1Jl
ZlB0cklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRTsKIF9aTjdXZWJDb3JlNEtVUkwxMGludmFs
aWRhdGVFdjsKK19aTjdXZWJDb3JlNUNvbG9yQzFFUktOM1dURjZTdHJpbmdFOworX1pON1dlYkNv
cmUxNkhUTUxJbnB1dEVsZW1lbnQyNXNlbGVjdENvbG9ySW5Db2xvckNob29zZXJFUktOU181Q29s
b3JFOwogCiBsb2NhbDoKIF9aKjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCBiOGVkM2VhYzI2N2NlYTg4MGZlNGVhOTlkY2MzMDliMmI4N2NlNWZi
Li42MTM5MThjZWM3YmZiZmU4MzIwNTIwMjFkZWI2OTFkZmZlOGM4ZDBkIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTItMTItMjAgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4K
KworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY29sb3IgaW5wdXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTM1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIGlucHV0IHR5cGUgY29s
b3IgaW4gZmVhdHVyZSBsaXN0LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1
cmVMaXN0LnBtOgorCiAyMDEyLTExLTA5ICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNp
c2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0dUS10gYWRkIGxpYnNjcmV0IHRvIGpoYnVpbGQg
c3lzdGVtCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3Qu
cG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggY2Q2NzM2
MzNlMjlkYmIxYzkxMDQ3MjM3OGY0ZTQ2YzQzYjdjY2E4Ny4uNTZhODYxY2Q4YWZhODA4MjU0ZmMz
ZjkyNDYzZTkzMDA1ZGVjMzMyZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlz
dC5wbQpAQCAtMjY0LDcgKzI2NCw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9
PiAiRU5BQkxFX0lOUFVUX1NQRUVDSCIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRpbnB1dFNw
ZWVjaFN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJpbnB1dC10eXBlLWNvbG9yIiwgZGVz
YyA9PiAiVG9nZ2xlIElucHV0IFR5cGUgQ29sb3Igc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4g
IkVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SIiwgZGVmYXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwg
aXNFZmwoKSB8fCBpc1F0KCkpLCB2YWx1ZSA9PiBcJGlucHV0VHlwZUNvbG9yU3VwcG9ydCB9LAor
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUiIsIGRlZmF1bHQgPT4gKGlz
QmxhY2tCZXJyeSgpIHx8IGlzRWZsKCkgfHwgaXNRdCgpIHx8IGlzR3RrKCkpLCB2YWx1ZSA9PiBc
JGlucHV0VHlwZUNvbG9yU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gImlucHV0LXR5cGUt
ZGF0ZSIsIGRlc2MgPT4gIlRvZ2dsZSBJbnB1dCBUeXBlIERhdGUgc3VwcG9ydCIsCiAgICAgICBk
ZWZpbmUgPT4gIkVOQUJMRV9JTlBVVF9UWVBFX0RBVEUiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+
IFwkaW5wdXRUeXBlRGF0ZVN1cHBvcnQgfSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNDdhNDZkNTRhYjViNjc2MWE1ODUy
Y2E4ZTkyNzM4NTU0MGNhOTE5Li5jZjNkN2JkNjE2YmIyNDY2NzZhNDBkMzZjOGEyZDEzMmQ0NTIw
ZGZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTItMTItMjAgIEFybmF1ZCBSZW5ldmllciAg
PGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9y
dCBmb3IgY29sb3IgaW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk4OTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRW5hYmxlIGNvbG9yIGlucHV0IHRlc3RzLgorCisgICAgICAgIE1vZGlmeSBpbnB1
dC1jb2xvci1vbmNoYW5nZS1ldmVudC1leHBlY3RlZC50eHQgYmVjYXVzZSBpdCBkaWQgbm90IHRh
a2UKKyAgICAgICAgaW50byBhY2NvdW50IHRoZSBzZWNvbmQgZGVzY3JpcHRpb24gcGhyYXNlLgor
CisgICAgICAgICogZmFzdC9mb3Jtcy9jb2xvci9pbnB1dC1jb2xvci1vbmNoYW5nZS1ldmVudC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvZm9ybXMvY29sb3IvaW5wdXQtYXBwZWFyYW5jZS1j
b2xvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorCisyMDEyLTEyLTIwICBBcm5hdWQgUmVuZXZpZXIg
IDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBv
cnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFw
cHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBi
ZWxvdyAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9jb2xvci9pbnB1dC1jb2xvci1v
bmNoYW5nZS1ldmVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3Qv
Zm9ybXMvY29sb3IvaW5wdXQtYXBwZWFyYW5jZS1jb2xvci1leHBlY3RlZC50eHQ6IEFkZGVkLgor
CiAyMDEyLTEyLTE0ICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgaW5jb25zaXN0ZW5jeSBpbiBkcmF3SW1hZ2Ugd2l0aCB0YXJnZXQgcmVj
dCBuZWdhdGl2ZSBkaW1lbnNpb25zLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9jb2xvci9pbnB1dC1jb2xvci1vbmNoYW5nZS1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2NvbG9yL2lucHV0LWNvbG9yLW9uY2hhbmdlLWV2ZW50LWV4cGVjdGVk
LnR4dAppbmRleCBhMWNkNjg1MzkzYzI1NzUwZjRlYTQ0NjA3ZTEyYzgzYjVjNGVjN2IzLi5jODc5
YTBiN2M5MjQ2NDQ1NzlhMjJjZGVhOGVhODQ1N2FlNGNlZTljIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2NvbG9yL2lucHV0LWNvbG9yLW9uY2hhbmdlLWV2ZW50LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2NvbG9yL2lucHV0LWNvbG9yLW9uY2hh
bmdlLWV2ZW50LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDUgQEAKLVRlc3QgaWYgY2hhbmdlIGV2
ZW50IGZpcmVzIHByb3Blcmx5IHdoZW4gY29sb3IgY2hvb3NlciBjaGFuZ2VzLiBCdWcgNjY4NDgK
K1Rlc3QgaWYgY2hhbmdlIGV2ZW50IGZpcmVzIHByb3Blcmx5IHdoZW4gY29sb3IgY2hvb3NlciBj
aGFuZ2VzLiBCdWcgNjY4NDggCitUbyBtYW51YWxseSB0ZXN0IHRoaXMsIGNsaWNrIG9uIHRoZSBp
bnB1dCBjb2xvciBlbGVtZW50IGluIHRoZSB0b3AgbGVmdCBjb3JuZXIgYW5kIGNoYW5nZSB0aGUg
dmFsdWUgZnJvbSB0aGUgY29sb3IgY2hvb3Nlci4gU2VlIGlmIHRoZSBudW1iZXIgb2YgInZhbHVl
IGNoYW5nZWQiIG1lc3NhZ2VzIG1hdGNoZXMgdGhlIG51bWJlciBvZiB0aW1lcyB5b3UgY2hhbmdl
ZCB0aGUgY29sb3IuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzYjRkNzEyYTVkY2UyMWY1YWQ1ZTg2
ZmI3ZGVjMzkyY2U3YmNiNjVjLi4wODIwY2NmNzI5NTIzNzk1MTI4YmIzODU1OTFhMmI2ZGNiMzRj
MWNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTkx
LDkgKzE5MSw2IEBAIHdlYmtpdC5vcmcvYi85ODkzMyBzdG9yYWdlL2RvbXN0b3JhZ2UvbG9jYWxz
dG9yYWdlL3N0b3JhZ2V0cmFja2VyIFsgU2tpcCBdCiAjIERhdGFsaXN0IGlzIG5vdCB5ZXQgZW5h
YmxlZC4KIHdlYmtpdC5vcmcvYi85ODkzNCBmYXN0L2Zvcm1zL2RhdGFsaXN0IFsgU2tpcCBdCiAK
LSMgQ29sb3IgaW5wdXQgaXMgbm90IHlldCBlbmFibGVkLgotd2Via2l0Lm9yZy9iLzk4OTM1IGZh
c3QvZm9ybXMvY29sb3IgWyBTa2lwIF0KLQogIyBFTkFCTEVfSU5QVVRfVFlQRV8qIGFyZSBub3Qg
ZW5hYmxlZC4KIHdlYmtpdC5vcmcvYi85ODkzNiBmYXN0L2Zvcm1zL2RhdGUgWyBTa2lwIF0KIHdl
YmtpdC5vcmcvYi85ODkzNiBmYXN0L2Zvcm1zL2RhdGUtbXVsdGlwbGUtZmllbGRzIFsgU2tpcCBd
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9mb3Jtcy9jb2xvci9p
bnB1dC1hcHBlYXJhbmNlLWNvbG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9mYXN0L2Zvcm1zL2NvbG9yL2lucHV0LWFwcGVhcmFuY2UtY29sb3ItZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFhZDcxNjFmMjNkNjg3MTE0MTQxZjVlZGRkYWNjMjcyOWE1N2JiMWEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9mb3Jtcy9jb2xv
ci9pbnB1dC1hcHBlYXJhbmNlLWNvbG9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExNSBAQAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9
IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNp
emUgNzg0eDU4NAorICAgICAgUmVuZGVyQmxvY2sge0gzfSBhdCAoMCwwKSBzaXplIDc4NHgyMgor
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjR4MjIKKyAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjQ6ICJEZWZhdWx0IEFwcGVhcmFuY2UiCisgICAg
ICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCw0MCkgc2l6ZSA3ODR4NDEKKyAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNDU2eDE5CisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggNDU2OiAiTGlzdCBjb2xvciBjb250cm9scyBoYXZlIGRpZmZlcmVu
dCBhcHBlYXJhbmNlIGlmIEVOQUJMRShEQVRBTElTVCkuIgorICAgICAgICBSZW5kZXJCUiB7QlJ9
IGF0ICg0NTYsMTUpIHNpemUgMHgwCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDAs
MTgpIHNpemUgNDR4MjMgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAw
MDAwKV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0gYXQgKDMs
Mykgc2l6ZSAzOHgxNworICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6
ZSAzNHg5IFtiZ2NvbG9yPSMwMDAwMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzc3Nzc3NyldCisg
ICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDQ0LDE4KSBzaXplIDg4eDIzIFtiZ2NvbG9y
PSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisgICAgICAgICAgUmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUgODJ4MTcKKyAgICAgICAg
ICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICg4LDQpIHNpemUgNTB4OSBbYmdjb2xvcj0jMDAwMDAw
XSBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJlbmRlckJsb2NrIHtIM30gYXQgKDAsOTkpIHNp
emUgNzg0eDIyCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2MHgy
MgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2MDogIkRpZmZlcmVudCBGb250
IFNpemVzIgorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMTM5KSBzaXplIDc4
NHg0NAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA1Nzd4MTkKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1Nzc6ICJMaXN0IGNvbG9yIGNvbnRyb2xz
IGhhdmUgZGlmZmVyZW50IHNpemVzIGRlcGVuZGluZyBvbiBmb250IHNpemVzLiBOb3JtYWwgY29s
b3IgY29udHJvbHMgZG9uJ3QuIgorICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICg1NzcsMTUpIHNp
emUgMHgwCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDAsMTgpIHNpemUgNDR4MjMg
W2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgICAg
ICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0gYXQgKDMsMykgc2l6ZSAzOHgxNwor
ICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAzNHg5IFtiZ2NvbG9y
PSMwMEZGMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzc3Nzc3NyldCisgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoNDQsMjYpIHNpemUgNHgxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICg0
NCwyNikgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDQ4LDE4
KSBzaXplIDQ0eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAw
MCldCisgICAgICAgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMp
IHNpemUgMzh4MTcKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUg
MzR4OSBbYmdjb2xvcj0jMDBGRjAwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICM3Nzc3NzcpXQorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDkyLDI2KSBzaXplIDR4MTkKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoOTIsMjYpIHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5kZXJCbG9jayB7SU5Q
VVR9IGF0ICg5NiwxOCkgc2l6ZSA0NHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4
IGluc2V0ICMwMDAwMDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7
RElWfSBhdCAoMywzKSBzaXplIDM4eDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMiw0KSBzaXplIDM0eDkgW2JnY29sb3I9IzAwRkYwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAj
Nzc3Nzc3KV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNDAsMjYpIHNpemUgNHgx
OQorICAgICAgICAgIHRleHQgcnVuIGF0ICgxNDAsMjYpIHdpZHRoIDQ6ICIgIgorICAgICAgICBS
ZW5kZXJCbG9jayB7SU5QVVR9IGF0ICgxNDQsMTgpIHNpemUgODh4MjMgW2JnY29sb3I9I0ZGRkZG
Rl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNh
dGVkRmxleGlibGVCb3gge0RJVn0gYXQgKDMsMykgc2l6ZSA4MngxNworICAgICAgICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDgsNCkgc2l6ZSA1MHg5IFtiZ2NvbG9yPSMwMEZGMDBdIFtib3Jk
ZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MjMyLDI2KSBzaXplIDR4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjMyLDI2KSB3aWR0aCA0
OiAiICIKKyAgICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAoMjM2LDE4KSBzaXplIDg4eDIz
IFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisgICAgICAg
ICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUgODJ4MTcK
KyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICg4LDQpIHNpemUgNTB4OSBbYmdjb2xv
cj0jMDBGRjAwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDMyNCwyNikgc2l6ZSA0eDE5CisgICAgICAgICAgdGV4dCBydW4gYXQg
KDMyNCwyNikgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDMy
OCwxOCkgc2l6ZSA4OHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0ICMw
MDAwMDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElWfSBhdCAo
MywzKSBzaXplIDgyeDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoOCw0KSBz
aXplIDUweDkgW2JnY29sb3I9IzAwRkYwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0K
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5k
ZXJCbG9jayB7SDN9IGF0ICgwLDIwMSkgc2l6ZSA3ODR4MjIKKyAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgMTI0eDIyCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMTI0OiAiVmFyaW91cyBDb2xvcnMiCisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3Vz
KSBhdCAoMCwyNDEpIHNpemUgNzg0eDI2CisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQg
KDAsMCkgc2l6ZSA0NHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0ICMw
MDAwMDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElWfSBhdCAo
MywzKSBzaXplIDM4eDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0KSBz
aXplIDM0eDkgW2JnY29sb3I9I0ZGMDAwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjNzc3Nzc3KV0K
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg0NCw4KSBzaXplIDR4MTkKKyAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoNDQsOCkgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRlckJsb2NrIHtJ
TlBVVH0gYXQgKDQ4LDApIHNpemUgNDR4MjMgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJw
eCBpbnNldCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gg
e0RJVn0gYXQgKDMsMykgc2l6ZSAzOHgxNworICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDIsNCkgc2l6ZSAzNHg5IFtiZ2NvbG9yPSMwMEZGMDBdIFtib3JkZXI6ICgxcHggc29saWQg
Izc3Nzc3NyldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoOTIsOCkgc2l6ZSA0eDE5
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDkyLDgpIHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5k
ZXJCbG9jayB7SU5QVVR9IGF0ICg5NiwwKSBzaXplIDQ0eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFti
b3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisgICAgICAgICAgUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUgMzh4MTcKKyAgICAgICAgICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMzR4OSBbYmdjb2xvcj0jMDAwMEZGXSBbYm9yZGVyOiAo
MXB4IHNvbGlkICM3Nzc3NzcpXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE0MCw4
KSBzaXplIDR4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTQwLDgpIHdpZHRoIDQ6ICIgIgor
ICAgICAgICBSZW5kZXJCbG9jayB7SU5QVVR9IGF0ICgxNDQsMCkgc2l6ZSA0NHgyMyBbYmdjb2xv
cj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAgICAgICAgIFJlbmRl
ckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElWfSBhdCAoMywzKSBzaXplIDM4eDE3CisgICAgICAg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0KSBzaXplIDM0eDkgW2JnY29sb3I9I0VDMDA4
Q10gW2JvcmRlcjogKDFweCBzb2xpZCAjNzc3Nzc3KV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgxODgsOCkgc2l6ZSA0eDE5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDE4OCw4KSB3
aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAoMTkyLDApIHNpemUg
NDR4MjMgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAg
ICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0gYXQgKDMsMykgc2l6ZSAz
OHgxNworICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAzNHg5IFti
Z2NvbG9yPSM0MEUwRDBdIFtib3JkZXI6ICgxcHggc29saWQgIzc3Nzc3NyldCisgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMjM2LDgpIHNpemUgNHgxOQorICAgICAgICAgIHRleHQgcnVu
IGF0ICgyMzYsOCkgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQg
KDI0MCwwKSBzaXplIDg4eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQg
IzAwMDAwMCldCisgICAgICAgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0
ICgzLDMpIHNpemUgODJ4MTcKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICg4LDQp
IHNpemUgNTB4OSBbYmdjb2xvcj0jRkYwMDAwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDAp
XQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDMyOCw4KSBzaXplIDR4MTkKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMzI4LDgpIHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5kZXJCbG9j
ayB7SU5QVVR9IGF0ICgzMzIsMCkgc2l6ZSA4OHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVy
OiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveCB7RElWfSBhdCAoMywzKSBzaXplIDgyeDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoOCw0KSBzaXplIDUweDkgW2JnY29sb3I9IzAwRkYwMF0gW2JvcmRlcjogKDFweCBz
b2xpZCAjMDAwMDAwKV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg0MjAsOCkgc2l6
ZSA0eDE5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDQyMCw4KSB3aWR0aCA0OiAiICIKKyAgICAg
ICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAoNDI0LDApIHNpemUgODh4MjMgW2JnY29sb3I9I0ZG
RkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3gge0RJVn0gYXQgKDMsMykgc2l6ZSA4MngxNworICAgICAgICAgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDgsNCkgc2l6ZSA1MHg5IFtiZ2NvbG9yPSMwMDAwRkZdIFti
b3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoNTEyLDgpIHNpemUgNHgxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICg1MTIsOCkgd2lkdGgg
NDogIiAiCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDUxNiwwKSBzaXplIDg4eDIz
IFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisgICAgICAg
ICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUgODJ4MTcK
KyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICg4LDQpIHNpemUgNTB4OSBbYmdjb2xv
cj0jRUMwMDhDXSBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDYwNCw4KSBzaXplIDR4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAo
NjA0LDgpIHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5kZXJCbG9jayB7SU5QVVR9IGF0ICg2MDgs
MCkgc2l6ZSA4OHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0ICMwMDAw
MDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElWfSBhdCAoMywz
KSBzaXplIDgyeDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoOCw0KSBzaXpl
IDUweDkgW2JnY29sb3I9IzQwRTBEMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5kZXJC
bG9jayB7SDN9IGF0ICgwLDI4NSkgc2l6ZSA3ODR4MjIKKyAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgMTE3eDIyCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggMTE3OiAiQXJiaXRyYXJ5IFNpemUiCisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBh
dCAoMCwzMjUpIHNpemUgNzg0eDMwCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDAs
MCkgc2l6ZSAxMDB4MzAgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAw
MDAwKV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0gYXQgKDMs
Mykgc2l6ZSA5NHgyNAorICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6
ZSA5MHgxNiBbYmdjb2xvcj0jRkYwMDAwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICM3Nzc3NzcpXQpk
aWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDg1NGMzZmYyOGMxODkyNjI3
MmY2OWM3YjA0MzY5ZWRhYThkMTg3ODkuLmJkNDY0M2E4YTQ1NWYyMDllOTY2OWJjMjViMTU4ZjA3
MzZiYjg0MmIgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxMi0xMi0yMCAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNh
bXN1bmcuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBjb2xvciBpbnB1dAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBleHBvcnQgV2Vi
Q29yZTo6Q29sb3I6OkNvbG9yKFdURjo6U3RyaW5nIGNvbnN0JikgYW5kCisgICAgICAgIFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdENvbG9ySW5Db2xvckNob29zZXIoV2ViQ29yZTo6
Q29sb3IKKyAgICAgICAgY29uc3QmKQorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1i
b2xzLmZpbHRlcjoKKwogMjAxMi0xMC0xMCAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBz
aXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFtHdGtdIHRvbyBsb25nIGZ1bmN0aW9uIGluIGFu
aW1hdGlvbiBzY3JpcHQgY2F1c2UgcmVwYWludCB0byBuZXZlciBoYXBwZW4uCg==
</data>
<flag name="review"
          id="197676"
          type_id="1"
          status="-"
          setter="cgarcia"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180569</attachid>
            <date>2012-12-21 16:00:56 -0800</date>
            <delta_ts>2012-12-31 13:26:51 -0800</delta_ts>
            <desc>new patch iteration</desc>
            <filename>98935.patch</filename>
            <type>text/plain</type>
            <size>67833</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">Y29tbWl0IDg2MGNiZWU4NGUzMWVmMjJhYTcyMDRmYjZiZWNkYzM1YzcwMzIzYjcKQXV0aG9yOiBB
cm5hdWQgUmVuZXZpZXIgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KRGF0ZTogICBGcmkg
RGVjIDIxIDE1OjI4OjU3IDIwMTIgLTA4MDAKCiAgICBpbnB1dCBjb2xvcgoKZGlmZiAtLWdpdCBh
L0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4NTRjM2ZmLi5iZDQ2NDNhIDEwMDY0NAotLS0g
YS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTItMjAg
IEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAg
ICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY29sb3IgaW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZXhwb3J0IFdlYkNvcmU6OkNvbG9yOjpDb2xvcihX
VEY6OlN0cmluZyBjb25zdCYpIGFuZAorICAgICAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjpzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKFdlYkNvcmU6OkNvbG9yCisgICAgICAgIGNvbnN0
JikKKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTIt
MTAtMTAgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KIAog
ICAgICAgICBbR3RrXSB0b28gbG9uZyBmdW5jdGlvbiBpbiBhbmltYXRpb24gc2NyaXB0IGNhdXNl
IHJlcGFpbnQgdG8gbmV2ZXIgaGFwcGVuLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM0N2E0NmQuLmNmM2Q3YmQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMSBAQAorMjAxMi0xMi0yMCAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmll
ckBzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBjb2xv
ciBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTg5MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
bmFibGUgY29sb3IgaW5wdXQgdGVzdHMuCisKKyAgICAgICAgTW9kaWZ5IGlucHV0LWNvbG9yLW9u
Y2hhbmdlLWV2ZW50LWV4cGVjdGVkLnR4dCBiZWNhdXNlIGl0IGRpZCBub3QgdGFrZQorICAgICAg
ICBpbnRvIGFjY291bnQgdGhlIHNlY29uZCBkZXNjcmlwdGlvbiBwaHJhc2UuCisKKyAgICAgICAg
KiBmYXN0L2Zvcm1zL2NvbG9yL2lucHV0LWNvbG9yLW9uY2hhbmdlLWV2ZW50LWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvZmFzdC9mb3Jtcy9jb2xvci9pbnB1dC1hcHBlYXJhbmNlLWNvbG9yLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisKKzIwMTItMTItMjAgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZp
ZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY29s
b3IgaW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4OTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJh
dGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2NvbG9yL2lucHV0LWNvbG9yLW9uY2hhbmdlLWV2
ZW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9mb3Jtcy9jb2xv
ci9pbnB1dC1hcHBlYXJhbmNlLWNvbG9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTItMTIt
MTQgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAg
ICAgICBpbmNvbnNpc3RlbmN5IGluIGRyYXdJbWFnZSB3aXRoIHRhcmdldCByZWN0IG5lZ2F0aXZl
IGRpbWVuc2lvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2NvbG9yL2lu
cHV0LWNvbG9yLW9uY2hhbmdlLWV2ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvY29sb3IvaW5wdXQtY29sb3Itb25jaGFuZ2UtZXZlbnQtZXhwZWN0ZWQudHh0CmluZGV4
IGExY2Q2ODUuLmM4NzlhMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvY29s
b3IvaW5wdXQtY29sb3Itb25jaGFuZ2UtZXZlbnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvY29sb3IvaW5wdXQtY29sb3Itb25jaGFuZ2UtZXZlbnQtZXhwZWN0ZWQu
dHh0CkBAIC0xLDQgKzEsNSBAQAotVGVzdCBpZiBjaGFuZ2UgZXZlbnQgZmlyZXMgcHJvcGVybHkg
d2hlbiBjb2xvciBjaG9vc2VyIGNoYW5nZXMuIEJ1ZyA2Njg0OAorVGVzdCBpZiBjaGFuZ2UgZXZl
bnQgZmlyZXMgcHJvcGVybHkgd2hlbiBjb2xvciBjaG9vc2VyIGNoYW5nZXMuIEJ1ZyA2Njg0OCAK
K1RvIG1hbnVhbGx5IHRlc3QgdGhpcywgY2xpY2sgb24gdGhlIGlucHV0IGNvbG9yIGVsZW1lbnQg
aW4gdGhlIHRvcCBsZWZ0IGNvcm5lciBhbmQgY2hhbmdlIHRoZSB2YWx1ZSBmcm9tIHRoZSBjb2xv
ciBjaG9vc2VyLiBTZWUgaWYgdGhlIG51bWJlciBvZiAidmFsdWUgY2hhbmdlZCIgbWVzc2FnZXMg
bWF0Y2hlcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHlvdSBjaGFuZ2VkIHRoZSBjb2xvci4KIAogT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDNiNGQ3MTIuLjA4MjBjY2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0xOTEsOSArMTkxLDYgQEAgd2Via2l0Lm9yZy9iLzk4
OTMzIHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3RvcmFnZXRyYWNrZXIgWyBTa2lw
IF0KICMgRGF0YWxpc3QgaXMgbm90IHlldCBlbmFibGVkLgogd2Via2l0Lm9yZy9iLzk4OTM0IGZh
c3QvZm9ybXMvZGF0YWxpc3QgWyBTa2lwIF0KIAotIyBDb2xvciBpbnB1dCBpcyBub3QgeWV0IGVu
YWJsZWQuCi13ZWJraXQub3JnL2IvOTg5MzUgZmFzdC9mb3Jtcy9jb2xvciBbIFNraXAgXQotCiAj
IEVOQUJMRV9JTlBVVF9UWVBFXyogYXJlIG5vdCBlbmFibGVkLgogd2Via2l0Lm9yZy9iLzk4OTM2
IGZhc3QvZm9ybXMvZGF0ZSBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzk4OTM2IGZhc3QvZm9ybXMv
ZGF0ZS1tdWx0aXBsZS1maWVsZHMgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9mYXN0L2Zvcm1zL2NvbG9yL2lucHV0LWFwcGVhcmFuY2UtY29sb3ItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvZm9ybXMvY29sb3IvaW5wdXQt
YXBwZWFyYW5jZS1jb2xvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYWFkNzE2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9mYXN0L2Zvcm1zL2NvbG9yL2lucHV0LWFwcGVhcmFuY2UtY29sb3ItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTE1IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVy
VmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAor
ICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9k
eSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5kZXJCbG9jayB7SDN9IGF0
ICgwLDApIHNpemUgNzg0eDIyCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDE2NHgyMgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2NDogIkRlZmF1
bHQgQXBwZWFyYW5jZSIKKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDQwKSBz
aXplIDc4NHg0MQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0NTZ4
MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0NTY6ICJMaXN0IGNvbG9yIGNv
bnRyb2xzIGhhdmUgZGlmZmVyZW50IGFwcGVhcmFuY2UgaWYgRU5BQkxFKERBVEFMSVNUKS4iCisg
ICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDQ1NiwxNSkgc2l6ZSAweDAKKyAgICAgICAgUmVuZGVy
QmxvY2sge0lOUFVUfSBhdCAoMCwxOCkgc2l6ZSA0NHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9y
ZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4
aWJsZUJveCB7RElWfSBhdCAoMywzKSBzaXplIDM4eDE3CisgICAgICAgICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMiw0KSBzaXplIDM0eDkgW2JnY29sb3I9IzAwMDAwMF0gW2JvcmRlcjogKDFw
eCBzb2xpZCAjNzc3Nzc3KV0KKyAgICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAoNDQsMTgp
IHNpemUgODh4MjMgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAw
KV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0gYXQgKDMsMykg
c2l6ZSA4MngxNworICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDgsNCkgc2l6ZSA1
MHg5IFtiZ2NvbG9yPSMwMDAwMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCisgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgUmVuZGVyQmxv
Y2sge0gzfSBhdCAoMCw5OSkgc2l6ZSA3ODR4MjIKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgMTYweDIyCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MTYwOiAiRGlmZmVyZW50IEZvbnQgU2l6ZXMiCisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3Vz
KSBhdCAoMCwxMzkpIHNpemUgNzg0eDQ0CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDU3N3gxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDU3Nzog
Ikxpc3QgY29sb3IgY29udHJvbHMgaGF2ZSBkaWZmZXJlbnQgc2l6ZXMgZGVwZW5kaW5nIG9uIGZv
bnQgc2l6ZXMuIE5vcm1hbCBjb2xvciBjb250cm9scyBkb24ndC4iCisgICAgICAgIFJlbmRlckJS
IHtCUn0gYXQgKDU3NywxNSkgc2l6ZSAweDAKKyAgICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBh
dCAoMCwxOCkgc2l6ZSA0NHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0
ICMwMDAwMDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElWfSBh
dCAoMywzKSBzaXplIDM4eDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0
KSBzaXplIDM0eDkgW2JnY29sb3I9IzAwRkYwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjNzc3Nzc3
KV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg0NCwyNikgc2l6ZSA0eDE5CisgICAg
ICAgICAgdGV4dCBydW4gYXQgKDQ0LDI2KSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyQmxv
Y2sge0lOUFVUfSBhdCAoNDgsMTgpIHNpemUgNDR4MjMgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRl
cjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGli
bGVCb3gge0RJVn0gYXQgKDMsMykgc2l6ZSAzOHgxNworICAgICAgICAgICAgUmVuZGVyQmxvY2sg
e0RJVn0gYXQgKDIsNCkgc2l6ZSAzNHg5IFtiZ2NvbG9yPSMwMEZGMDBdIFtib3JkZXI6ICgxcHgg
c29saWQgIzc3Nzc3NyldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoOTIsMjYpIHNp
emUgNHgxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICg5MiwyNikgd2lkdGggNDogIiAiCisgICAg
ICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDk2LDE4KSBzaXplIDQ0eDIzIFtiZ2NvbG9yPSNG
RkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisgICAgICAgICAgUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUgMzh4MTcKKyAgICAgICAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMzR4OSBbYmdjb2xvcj0jMDBGRjAwXSBb
Ym9yZGVyOiAoMXB4IHNvbGlkICM3Nzc3NzcpXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDE0MCwyNikgc2l6ZSA0eDE5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDE0MCwyNikgd2lk
dGggNDogIiAiCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDE0NCwxOCkgc2l6ZSA4
OHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAg
ICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElWfSBhdCAoMywzKSBzaXplIDgy
eDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoOCw0KSBzaXplIDUweDkgW2Jn
Y29sb3I9IzAwRkYwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgyMzIsMjYpIHNpemUgNHgxOQorICAgICAgICAgIHRleHQgcnVu
IGF0ICgyMzIsMjYpIHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5kZXJCbG9jayB7SU5QVVR9IGF0
ICgyMzYsMTgpIHNpemUgODh4MjMgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNl
dCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0g
YXQgKDMsMykgc2l6ZSA4MngxNworICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDgs
NCkgc2l6ZSA1MHg5IFtiZ2NvbG9yPSMwMEZGMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAw
MCldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMzI0LDI2KSBzaXplIDR4MTkKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMzI0LDI2KSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVy
QmxvY2sge0lOUFVUfSBhdCAoMzI4LDE4KSBzaXplIDg4eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFti
b3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisgICAgICAgICAgUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUgODJ4MTcKKyAgICAgICAgICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICg4LDQpIHNpemUgNTB4OSBbYmdjb2xvcj0jMDBGRjAwXSBbYm9yZGVyOiAo
MXB4IHNvbGlkICMwMDAwMDApXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSAweDAKKyAgICAgIFJlbmRlckJsb2NrIHtIM30gYXQgKDAsMjAxKSBzaXplIDc4NHgyMgor
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMjR4MjIKKyAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjQ6ICJWYXJpb3VzIENvbG9ycyIKKyAgICAgIFJl
bmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDI0MSkgc2l6ZSA3ODR4MjYKKyAgICAgICAgUmVu
ZGVyQmxvY2sge0lOUFVUfSBhdCAoMCwwKSBzaXplIDQ0eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFti
b3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisgICAgICAgICAgUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUgMzh4MTcKKyAgICAgICAgICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMzR4OSBbYmdjb2xvcj0jRkYwMDAwXSBbYm9yZGVyOiAo
MXB4IHNvbGlkICM3Nzc3NzcpXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDQ0LDgp
IHNpemUgNHgxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICg0NCw4KSB3aWR0aCA0OiAiICIKKyAg
ICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAoNDgsMCkgc2l6ZSA0NHgyMyBbYmdjb2xvcj0j
RkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAgICAgICAgIFJlbmRlckRl
cHJlY2F0ZWRGbGV4aWJsZUJveCB7RElWfSBhdCAoMywzKSBzaXplIDM4eDE3CisgICAgICAgICAg
ICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0KSBzaXplIDM0eDkgW2JnY29sb3I9IzAwRkYwMF0g
W2JvcmRlcjogKDFweCBzb2xpZCAjNzc3Nzc3KV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICg5Miw4KSBzaXplIDR4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoOTIsOCkgd2lkdGgg
NDogIiAiCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDk2LDApIHNpemUgNDR4MjMg
W2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgICAg
ICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0gYXQgKDMsMykgc2l6ZSAzOHgxNwor
ICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAzNHg5IFtiZ2NvbG9y
PSMwMDAwRkZdIFtib3JkZXI6ICgxcHggc29saWQgIzc3Nzc3NyldCisgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMTQwLDgpIHNpemUgNHgxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICgx
NDAsOCkgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDE0NCww
KSBzaXplIDQ0eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAw
MCldCisgICAgICAgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMp
IHNpemUgMzh4MTcKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUg
MzR4OSBbYmdjb2xvcj0jRUMwMDhDXSBbYm9yZGVyOiAoMXB4IHNvbGlkICM3Nzc3NzcpXQorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE4OCw4KSBzaXplIDR4MTkKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMTg4LDgpIHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5kZXJCbG9jayB7SU5Q
VVR9IGF0ICgxOTIsMCkgc2l6ZSA0NHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4
IGluc2V0ICMwMDAwMDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7
RElWfSBhdCAoMywzKSBzaXplIDM4eDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMiw0KSBzaXplIDM0eDkgW2JnY29sb3I9IzQwRTBEMF0gW2JvcmRlcjogKDFweCBzb2xpZCAj
Nzc3Nzc3KV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyMzYsOCkgc2l6ZSA0eDE5
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDIzNiw4KSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVu
ZGVyQmxvY2sge0lOUFVUfSBhdCAoMjQwLDApIHNpemUgODh4MjMgW2JnY29sb3I9I0ZGRkZGRl0g
W2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3gge0RJVn0gYXQgKDMsMykgc2l6ZSA4MngxNworICAgICAgICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDgsNCkgc2l6ZSA1MHg5IFtiZ2NvbG9yPSNGRjAwMDBdIFtib3JkZXI6
ICgxcHggc29saWQgIzAwMDAwMCldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMzI4
LDgpIHNpemUgNHgxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICgzMjgsOCkgd2lkdGggNDogIiAi
CisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDMzMiwwKSBzaXplIDg4eDIzIFtiZ2Nv
bG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisgICAgICAgICAgUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUgODJ4MTcKKyAgICAg
ICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICg4LDQpIHNpemUgNTB4OSBbYmdjb2xvcj0jMDBG
RjAwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDQyMCw4KSBzaXplIDR4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNDIwLDgp
IHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5kZXJCbG9jayB7SU5QVVR9IGF0ICg0MjQsMCkgc2l6
ZSA4OHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQor
ICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElWfSBhdCAoMywzKSBzaXpl
IDgyeDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoOCw0KSBzaXplIDUweDkg
W2JnY29sb3I9IzAwMDBGRl0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICg1MTIsOCkgc2l6ZSA0eDE5CisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDUxMiw4KSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBh
dCAoNTE2LDApIHNpemUgODh4MjMgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNl
dCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0g
YXQgKDMsMykgc2l6ZSA4MngxNworICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDgs
NCkgc2l6ZSA1MHg5IFtiZ2NvbG9yPSNFQzAwOENdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAw
MCldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNjA0LDgpIHNpemUgNHgxOQorICAg
ICAgICAgIHRleHQgcnVuIGF0ICg2MDQsOCkgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRlckJs
b2NrIHtJTlBVVH0gYXQgKDYwOCwwKSBzaXplIDg4eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3Jk
ZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisgICAgICAgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUgODJ4MTcKKyAgICAgICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICg4LDQpIHNpemUgNTB4OSBbYmdjb2xvcj0jNDBFMEQwXSBbYm9yZGVyOiAoMXB4
IHNvbGlkICMwMDAwMDApXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSAweDAKKyAgICAgIFJlbmRlckJsb2NrIHtIM30gYXQgKDAsMjg1KSBzaXplIDc4NHgyMgorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMTd4MjIKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMTc6ICJBcmJpdHJhcnkgU2l6ZSIKKyAgICAgIFJlbmRl
ckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDMyNSkgc2l6ZSA3ODR4MzAKKyAgICAgICAgUmVuZGVy
QmxvY2sge0lOUFVUfSBhdCAoMCwwKSBzaXplIDEwMHgzMCBbYmdjb2xvcj0jRkZGRkZGXSBbYm9y
ZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4
aWJsZUJveCB7RElWfSBhdCAoMywzKSBzaXplIDk0eDI0CisgICAgICAgICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMiw0KSBzaXplIDkweDE2IFtiZ2NvbG9yPSNGRjAwMDBdIFtib3JkZXI6ICgx
cHggc29saWQgIzc3Nzc3NyldCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJjOGE2OC4uMDY1YmE3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTIwICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJl
bmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9y
IGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEVuYWJsZSBpbnB1dCB0eXBlIGNvbG9yIGluIGZlYXR1cmUgbGlzdC4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmZlYXR1cmVzLmFtLmluOgorCiAyMDEyLTEyLTE0ICBBcm5hdWQgUmVuZXZp
ZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgaW5jb25zaXN0ZW5j
eSBpbiBkcmF3SW1hZ2Ugd2l0aCB0YXJnZXQgcmVjdCBuZWdhdGl2ZSBkaW1lbnNpb25zLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuZmVhdHVyZXMuYW0uaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5mZWF0dXJlcy5hbS5pbgppbmRleCA2MjcxMDZmLi43Mjgy
ZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5mZWF0dXJlcy5hbS5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5mZWF0dXJlcy5hbS5pbgpAQCAtMzks
NyArMzksNyBAQCBmZWF0dXJlX2RlZmluZXNfZGVmYXVsdHMgKz0gXAogCUVOQUJMRV9JRlJBTUVf
U0VBTUxFU1M9MSBcCiAJRU5BQkxFX0lOREVYRURfREFUQUJBU0U9MCBcCiAJRU5BQkxFX0lOUFVU
X1NQRUVDSD0wIFwKLQlFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUj0wIFwKKwlFTkFCTEVfSU5QVVRf
VFlQRV9DT0xPUj0xIFwKIAlFTkFCTEVfSU5QVVRfVFlQRV9EQVRFPTAgXAogCUVOQUJMRV9JTlBV
VF9UWVBFX0RBVEVUSU1FPTAgXAogCUVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUw9MCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKaW5kZXggZDE3Y2EwZi4uMmY4MDhmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM3IEBACisyMDEyLTEyLTIwICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVy
QHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIGNvbG9y
IGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBjb2xvciBjaG9vc2VyIGZvciBXZWJLaXQxLiAKKworICAgICAgICBDcmVhdGUgYSBD
b2xvckNob29zZXJHdGsgY2xhc3MuIEl0IG93bnMgYSBHdGtXaWRnZXQgY29sb3IgY2hvb3Nlci4g
SXQKKyAgICAgICAgdXBkYXRlcyB0aGUgd2lkZ2V0IGNvbG9yIHdoZW4gaXRzIDo6c2V0U2VsZWN0
ZWRDb2xvciBtZXRob2QgaXMgY2FsbGVkLgorICAgICAgICBUaGlzIHdpZGdldCBpcyBjcmVhdGVk
IGluIENocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyOiBpdCBpcyBhCisgICAgICAgIEd0
a0NvbG9yQ2hvb3NlckRpYWxvZyBmb3IgR1RLID49IDMuNC4wIG9yIEd0a0NvbG9yU2VsZWN0aW9u
RGlhbG9nIGZvcgorICAgICAgICBwcmV2aW91cyBHVEsgdmVyc2lvbnMuIFdoZW4gZGlhbG9nIHJl
Y2VpdmVzIGEgcmVzcG9uc2UsCisgICAgICAgIGNvbG9yQ2hvb3NlckRpYWxvZ1Jlc3BvbnNlQ2Fs
bGJhY2sgaXMgY2FsbGVkLiBJZiBhIGNvbG9yIGhhcyBiZWVuCisgICAgICAgIHNlbGVjdGVkLCBj
YWxsIGNsaWVudC0+ZGlkQ2hvb3NlQ29sb3IuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Y29sb3JDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxs
YmFjayk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2Vy
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKyAgICAgICAg
KENocm9tZUNsaWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ29sb3JDaG9vc2VyR3Rr
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9y
Q2hvb3Nlckd0azo6Q29sb3JDaG9vc2VyR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ2hv
b3Nlckd0azo6fkNvbG9yQ2hvb3Nlckd0ayk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNob29z
ZXJHdGs6OnNldFNlbGVjdGVkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JDaG9vc2Vy
R3RrOjplbmRDaG9vc2VyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Db2xvckNob29zZXJH
dGsuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENvbG9yQ2hvb3Nlckd0
ayk6CisKIDIwMTItMTAtMDEgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1z
dW5nLmNvbT4KIAogICAgICAgICBbR3RrXSB0b28gbG9uZyBmdW5jdGlvbiBpbiBhbmltYXRpb24g
c2NyaXB0IGNhdXNlIHJlcGFpbnQgdG8gbmV2ZXIgaGFwcGVuLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmls
ZS5hbQppbmRleCBlMGQ4Y2VhLi4zZDExMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQpA
QCAtMTg0LDYgKzE4NCw4IEBAIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcCBcCiAJU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBcCiAJU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmggXAorCVNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbG9yQ2hvb3Nlckd0ay5jcHAgXAorCVNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbG9yQ2hvb3Nlckd0ay5oIFwKIAlTb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmggXAogCVNvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RldmljZU1vdGlvbkNsaWVudEd0ay5jcHAgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5jcHAKaW5kZXggMGFkM2Q5Ny4uNzMxYjc4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC03Nyw2ICs3NywxMSBA
QAogI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKKyNpbmNsdWRlICJDb2xvckNob29zZXJDbGllbnQuaCIKKyNpbmNsdWRl
ICJDb2xvckNob29zZXJHdGsuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04MzYsNiArODQxLDUwIEBAIHZvaWQgQ2hyb21lQ2xp
ZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwg
aW50NjRfdCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCisjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCitzdGF0aWMgdm9pZCBjb2xvckNob29zZXJEaWFsb2dSZXNwb25zZUNhbGxiYWNr
KEd0a0RpYWxvZyogZGlhbG9nLCBnaW50IHJlc3BvbnNlSUQsIENvbG9yQ2hvb3NlckNsaWVudCog
Y2xpZW50KQoreworICAgIGlmIChyZXNwb25zZUlEID09IEdUS19SRVNQT05TRV9PSykgeworI2lm
IEdUS19DSEVDS19WRVJTSU9OKDMsIDQsIDApCisgICAgICAgIEdka1JHQkEgY29sb3I7CisgICAg
ICAgIGd0a19jb2xvcl9jaG9vc2VyX2dldF9yZ2JhKEdUS19DT0xPUl9DSE9PU0VSKGRpYWxvZyks
ICZjb2xvcik7CisjZWxzZQorICAgICAgICBHZGtDb2xvciBjb2xvcjsKKyAgICAgICAgR3RrV2lk
Z2V0KiBjb2xvclNlbGVjdGlvbiA9IGd0a19jb2xvcl9zZWxlY3Rpb25fZGlhbG9nX2dldF9jb2xv
cl9zZWxlY3Rpb24oR1RLX0NPTE9SX1NFTEVDVElPTl9ESUFMT0coZGlhbG9nKSk7CisgICAgICAg
IGd0a19jb2xvcl9zZWxlY3Rpb25fZ2V0X2N1cnJlbnRfY29sb3IoR1RLX0NPTE9SX1NFTEVDVElP
Tihjb2xvclNlbGVjdGlvbiksICZjb2xvcik7CisjZW5kaWYKKyAgICAgICAgY2xpZW50LT5kaWRD
aG9vc2VDb2xvcihjb2xvcik7CisgICAgfQorICAgIGNsaWVudC0+ZGlkRW5kQ2hvb3NlcigpOwor
fQorCitQYXNzT3duUHRyPENvbG9yQ2hvb3Nlcj4gQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNo
b29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29s
b3IpCit7CisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgNCwgMCkKKyAgICBHdGtXaWRnZXQqIHBh
cmVudCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7Cisg
ICAgaWYgKCFndGtfd2lkZ2V0X2lzX3RvcGxldmVsKHBhcmVudCkgfHwgIUdUS19JU19XSU5ET1co
cGFyZW50KSkKKyAgICAgICAgcGFyZW50ID0gMDsKKyAgICBHdGtXaWRnZXQqIGRpYWxvZyA9ICBn
dGtfY29sb3JfY2hvb3Nlcl9kaWFsb2dfbmV3KF8oIlNlbGVjdCBDb2xvciIpLCBHVEtfV0lORE9X
KHBhcmVudCkpOworCisgICAgZ3RrX2NvbG9yX2Nob29zZXJfc2V0X3VzZV9hbHBoYShHVEtfQ09M
T1JfQ0hPT1NFUihkaWFsb2cpLCBGQUxTRSk7CisgICAgR2RrUkdCQSByZ2JhID0gc3RhdGljX2Nh
c3Q8R2RrUkdCQT4oaW5pdGlhbENvbG9yKTsKKyAgICBndGtfY29sb3JfY2hvb3Nlcl9zZXRfcmdi
YShHVEtfQ09MT1JfQ0hPT1NFUihkaWFsb2cpLCAmcmdiYSk7CisjZWxzZQorICAgIEd0a1dpZGdl
dCogZGlhbG9nID0gZ3RrX2NvbG9yX3NlbGVjdGlvbl9kaWFsb2dfbmV3KF8oIlNlbGVjdCBDb2xv
ciIpKTsKKyAgICBHdGtXaWRnZXQqIGNvbG9yU2VsZWN0aW9uID0gZ3RrX2NvbG9yX3NlbGVjdGlv
bl9kaWFsb2dfZ2V0X2NvbG9yX3NlbGVjdGlvbihHVEtfQ09MT1JfU0VMRUNUSU9OX0RJQUxPRyhk
aWFsb2cpKTsKKyAgICBndGtfY29sb3Jfc2VsZWN0aW9uX3NldF9oYXNfcGFsZXR0ZShHVEtfQ09M
T1JfU0VMRUNUSU9OKGNvbG9yU2VsZWN0aW9uKSwgVFJVRSk7CisKKyAgICBHZGtDb2xvciByZ2Ig
PSB7MCwgaW5pdGlhbENvbG9yLnJlZCgpIDw8IDgsICBpbml0aWFsQ29sb3IuZ3JlZW4oKSA8PCA4
LCBpbml0aWFsQ29sb3IuYmx1ZSgpIDw8IDggfTsKKyAgICBndGtfY29sb3Jfc2VsZWN0aW9uX3Nl
dF9jdXJyZW50X2NvbG9yKEdUS19DT0xPUl9TRUxFQ1RJT04oY29sb3JTZWxlY3Rpb24pLCAmcmdi
KTsKKyNlbmRpZgorCisgICAgZ19zaWduYWxfY29ubmVjdChkaWFsb2csICJyZXNwb25zZSIsIEdf
Q0FMTEJBQ0soY29sb3JDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFjayksIGNsaWVudCk7Cisg
ICAgZ3RrX3dpZGdldF9zaG93KGRpYWxvZyk7CisKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENv
bG9yQ2hvb3Nlckd0ayhkaWFsb2csIGNsaWVudCkpOworfQorI2VuZGlmCisKIHZvaWQgQ2hyb21l
Q2xpZW50OjpydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBwcnBG
aWxlQ2hvb3NlcikKIHsKICAgICBHUmVmUHRyPFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdD4gcmVx
dWVzdCA9IGFkb3B0R1JlZih3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfY3JlYXRlKHBycEZp
bGVDaG9vc2VyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5oCmluZGV4IGEwMWZkMzMuLjM3NGM4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0zMCw2ICsz
MCw5IEBACiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51Lmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyNpbmNs
dWRlICJDb2xvckNob29zZXIuaCIKKyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7CkBAIC0xMjAsNiAr
MTIzLDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogI2VuZGlmCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9y
aWdpbiosIGludDY0X3QgdG90YWxTcGFjZU5lZWRlZCk7CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKKyAgICAgICAgdmlydHVhbCBQYXNzT3duUHRyPENvbG9yQ2hvb3Nlcj4gY3JlYXRl
Q29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IENvbG9yJiBpbml0aWFsQ29s
b3IpOworI2VuZGlmCisKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSos
IFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29u
Rm9yRmlsZXMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbG9yQ2hvb3Nl
ckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db2xvckNob29zZXJH
dGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxZTNkNzIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db2xvckNob29z
ZXJHdGsuY3BwCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNh
bXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0
OgorICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAg
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisg
KiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKworI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlckd0
ay5oIgorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJDb2xvckNob29zZXJDbGllbnQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDb2xvckNob29zZXJHdGs6OkNvbG9yQ2hvb3Nl
ckd0ayhHdGtXaWRnZXQqIGNvbG9yQ2hvb3NlciwgQ29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQp
CisgICAgOiBtX2NvbG9yQ2hvb3Nlcihjb2xvckNob29zZXIpLCBtX2NsaWVudChjbGllbnQpCit7
CisgICAgQVNTRVJUKG1fY29sb3JDaG9vc2VyKTsKKyAgICBBU1NFUlQobV9jbGllbnQpOworfQor
CitDb2xvckNob29zZXJHdGs6On5Db2xvckNob29zZXJHdGsoKQoreworICAgIGd0a193aWRnZXRf
ZGVzdHJveShtX2NvbG9yQ2hvb3Nlci5nZXQoKSk7Cit9CisKK3ZvaWQgQ29sb3JDaG9vc2VyR3Rr
OjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyNpZiBHVEtfQ0hFQ0tf
VkVSU0lPTigzLCA0LCAwKQorICAgIEdka1JHQkEgcmdiYSA9IHN0YXRpY19jYXN0PEdka1JHQkE+
KGNvbG9yKTsKKyAgICBndGtfY29sb3JfY2hvb3Nlcl9zZXRfcmdiYShHVEtfQ09MT1JfQ0hPT1NF
UihtX2NvbG9yQ2hvb3Nlci5nZXQoKSksICZyZ2JhKTsKKyNlbHNlCisgICAgR3RrV2lkZ2V0KiBj
b2xvclNlbGVjdGlvbiA9IGd0a19jb2xvcl9zZWxlY3Rpb25fZGlhbG9nX2dldF9jb2xvcl9zZWxl
Y3Rpb24oR1RLX0NPTE9SX1NFTEVDVElPTl9ESUFMT0cobV9jb2xvckNob29zZXIuZ2V0KCkpKTsK
KyAgICBHZGtDb2xvciByZ2IgPSB7MCwgY29sb3IucmVkKCkgPDwgOCwgIGNvbG9yLmdyZWVuKCkg
PDwgOCwgY29sb3IuYmx1ZSgpIDw8IDggfTsKKyAgICBndGtfY29sb3Jfc2VsZWN0aW9uX3NldF9j
dXJyZW50X2NvbG9yKEdUS19DT0xPUl9TRUxFQ1RJT04oY29sb3JTZWxlY3Rpb24pLCAmcmdiKTsK
KyNlbmRpZgorfQorCit2b2lkIENvbG9yQ2hvb3Nlckd0azo6ZW5kQ2hvb3NlcigpCit7CisgICAg
bV9jbGllbnQtPmRpZEVuZENob29zZXIoKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9Db2xvckNob29zZXJHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0NvbG9yQ2hvb3Nlckd0ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVm
MGQ3YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9Db2xvckNob29zZXJHdGsuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChj
KSAyMDEyLCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG1ldDoKKyAqCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlLAorICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElT
IgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb2xv
ckNob29zZXJHdGtfaAorI2RlZmluZSBDb2xvckNob29zZXJHdGtfaAorCisjaW5jbHVkZSAiQ29s
b3JDaG9vc2VyLmgiCisKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbG9yQ2hvb3Nl
ckNsaWVudDsKK2NsYXNzIENvbG9yOworCitjbGFzcyBDb2xvckNob29zZXJHdGsgOiBwdWJsaWMg
Q29sb3JDaG9vc2VyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBDb2xvckNob29zZXJHdGsoR3Rr
V2lkZ2V0KiwgQ29sb3JDaG9vc2VyQ2xpZW50Kik7CisgICAgfkNvbG9yQ2hvb3Nlckd0aygpOwor
CisgICAgLy8gQ29sb3JDaG9vc2VyIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCBz
ZXRTZWxlY3RlZENvbG9yKGNvbnN0IENvbG9yJik7CisgICAgdmlydHVhbCB2b2lkIGVuZENob29z
ZXIoKTsKKworcHJpdmF0ZToKKyAgICBHUmVmUHRyPEd0a1dpZGdldD4gbV9jb2xvckNob29zZXI7
CisgICAgQ29sb3JDaG9vc2VyQ2xpZW50KiBtX2NsaWVudDsKK307CisKK30KKworI2VuZGlmIC8v
IENvbG9yQ2hvb3Nlckd0a19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTMyZGQ2YS4uMDgxYjNmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEyLTEyLTIwICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJl
bmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9y
IGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudCBpbnB1dCBjb2xvciB0eXBlIGZvciBXZWJLaXQyLgorCisgICAgICAgIFNp
bWlsYXJseSB0byB3aGF0IGhhcHBlbnMgZm9yIGZpbGUgY2hvb3Nlciwgd2hlbiBhIGNvbG9yIGNo
b29zZXIgaXMKKyAgICAgICAgbmVlZGVkLCB3ZSBlbWl0IGEgcnVuLWNvbG9yLWNob29zZXIgc2ln
bmFsIHdpdGggYQorICAgICAgICAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCBvYmplY3QuIElm
IHRoZSBzaWduYWwgaXMgbm90IGhhbmRsZWQgYnkgdGhlCisgICAgICAgIGFwcGxpY2F0aW9uLCB3
ZSBzaG93IGEgR3RrR3RrQ29sb3JDaG9vc2VyRGlhbG9nIChvcgorICAgICAgICBHdGtDb2xvclNl
bGVjdGlvbkRpYWxvZyBmb3IgR3RrIDwgMy40LjApLgorCisgICAgICAgIFdlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3QgYXBpIGFsbG93cyB0byByZWFkIGN1cnJlbnQgY29sb3IgKGVpdGhlcgorICAg
ICAgICBpbml0aWFsIGNvbG9yIHNldCBieSBXZWJDb3JlIG9yIGxhdGVyLCBjb2xvciBzZWxlY3Rl
ZCBieSB1c2VyKSwgdG8KKyAgICAgICAgc2VsZWN0IGEgY29sb3IsIG9yIHRvIGNhbmNlbCBhIHJl
cXVlc3QuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChf
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUpOgorICAgICAgICAod2Via2l0X2NvbG9y
X2Nob29zZXJfcmVxdWVzdF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9jb2xvcl9jaG9v
c2VyX3JlcXVlc3RfY2FuY2VsKToKKyAgICAgICAgKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVl
c3Rfc2VsZWN0X2NvbG9yKToKKyAgICAgICAgKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rf
Z2V0X2N1cnJlbnRfY29sb3IpOgorICAgICAgICAod2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdENy
ZWF0ZSk6CisgICAgICAgICh3ZWJraXRXZWJDb2xvckNob29zZXJSZXF1ZXN0RW5kKToKKyAgICAg
ICAgKHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RTZXRDb2xvcik6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAg
ICAgKF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KToKKyAgICAgICAgKF9XZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0Q2xhc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoX1dlYktpdFdlYlZpZXdQcml2YXRl
KToKKyAgICAgICAgKGNvbG9yQ2hvb3NlclJlcXVlc3RDaGFuZ2VDYWxsYmFjayk6CisgICAgICAg
ICh3ZWJraXRXZWJWaWV3SGlkZUNvbG9yQ2hvb3Nlcik6CisgICAgICAgIChjb2xvckNob29zZXJE
aWFsb2dSZXNwb25zZUNhbGxiYWNrKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdSdW5Db2xvckNo
b29zZXIpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAo
d2Via2l0V2ViVmlld1J1bkNvbG9yQ2hvb3NlclJlcXVlc3QpOgorICAgICAgICAod2Via2l0V2Vi
Vmlld0hpZGVDb2xvckNob29zZXJSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgIChfV2ViS2l0V2ViVmlld0NsYXNzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXM6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAodGVz
dFdlYlZpZXdDb2xvckNob29zZXJSZXF1ZXN0KToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9n
dGsvV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5R3RrOjpXZWJDb2xvckNob29z
ZXJQcm94eUd0ayk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5R3RrOjpz
ZXRTZWxlY3RlZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlH
dGs6OmVuZENob29zZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViQ29sb3JDaG9vc2Vy
UHJveHlHdGsuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJDb2xvckNob29zZXJQcm94eUd0ayk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbG9yQ2hvb3NlclByb3h5R3RrOjpjcmVhdGUpOgorCiAyMDEyLTEyLTEzICBBbGV4ZXkgUHJv
c2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc291cmNlIGxvYWRzIHNvbWV0
aW1lcyBzdGFsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5h
bSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNmI2OTM5Yi4uOGJi
NWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC05Niw2ICs5Niw3IEBAIHdl
YmtpdDJfaF9hcGkgKz0gXAogd2Via2l0Mmd0a19oX2FwaSArPSBcCiAJJChXZWJLaXQyKS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaCBcCiAJJChXZWJLaXQyKS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmggXAorCSQoV2ViS2l0Mikv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oIFwKIAkkKFdlYktp
dDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmggXAogCSQoV2ViS2l0Mikv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmggXAogCSQoV2ViS2l0
MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmggXApAQCAtNjM5LDYg
KzY0MCw5IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5o
IFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0LmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51UHJpdmF0ZS5oIFwKQEAgLTc4OCw2ICs3
OTIsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9H
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9ndGsvV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCA5MmIzMTg4Li41
ZjQyODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFn
ZUNsaWVudEltcGwuY3BwCkBAIC00NCw2ICs0NCwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmgiCisj
ZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtMjI5LDEwICsyMzMsOSBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VD
bGllbnRJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcgogfQogCiAjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCi1QYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBQ
YWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5KiwgY29u
c3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKK1Bhc3NSZWZQdHI8
V2ViQ29sb3JDaG9vc2VyUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXJQ
cm94eShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29s
b3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0KQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIFdlYkNvbG9yQ2hvb3NlclByb3h5
R3RrOjpjcmVhdGUocGFnZSwgbV92aWV3V2lkZ2V0LCBpbml0aWFsQ29sb3IsIGVsZW1lbnRSZWN0
KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NzRiYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcApA
QCAtMCwwICsxLDE4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVj
dHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICog
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
IldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3Iu
aD4KKyNpbmNsdWRlICJXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oIgorI2luY2x1
ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKy8qKgor
ICogU0VDVElPTjogV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAorICogQFNob3J0X2Rlc2NyaXB0
aW9uOiBBIHJlcXVlc3QgdG8gb3BlbiBhIGNvbG9yIGNob29zZXIKKyAqIEBUaXRsZTogV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdAorICogQFNlZV9hbHNvOiAjV2ViS2l0V2ViVmlldworICoKKyAq
IFdoZW5ldmVyIHRoZSB1c2VyIGludGVyYWN0cyB3aXRoIGFuICZsdDtpbnB1dCB0eXBlPSdjb2xv
cicgLyZndDsKKyAqIEhUTUwgZWxlbWVudCwgV2ViS2l0IHdpbGwgbmVlZCB0byBzaG93IGEgZGlh
bG9nIHRvIGNob29zZSBhIGNvbG9yLiBGb3IgdGhhdAorICogdG8gaGFwcGVuIGluIGEgZ2VuZXJh
bCB3YXksIGluc3RlYWQgb2YganVzdCBvcGVuaW5nIGEgI0d0a0NvbG9yQ2hvb3NlcgorICogKHdo
aWNoIG1pZ2h0IGJlIG5vdCBkZXNpcmFibGUgaW4gc29tZSBjYXNlcywgd2hpY2ggY291bGQgcHJl
ZmVyIHRvIHVzZSB0aGVpcgorICogb3duIGNvbG9yIGNob29zZXIgZGlhbG9nKSwgV2ViS2l0IHdp
bGwgZmlyZSB0aGUKKyAqICNXZWJLaXRXZWJWaWV3OjpydW4tY29sb3ItY2hvb3NlciBzaWduYWwg
d2l0aCBhICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0CisgKiBvYmplY3QsIHdoaWNoIHdpbGwg
YWxsb3cgdGhlIGNsaWVudCBhcHBsaWNhdGlvbiB0byBzcGVjaWZ5IHRoZSBjb2xvciB0byBiZQor
ICogc2VsZWN0ZWQsIHRvIGluc3BlY3QgdGhlIGRldGFpbHMgb2YgdGhlIHJlcXVlc3QgKGUuZy4g
dG8gZ2V0IGluaXRpYWwgY29sb3IpCisgKiBhbmQgdG8gY2FuY2VsIHRoZSByZXF1ZXN0LCBpbiBj
YXNlIG5vdGhpbmcgd2FzIHNlbGVjdGVkLgorICoKKyAqIEluIGNhc2UgdGhlIGNsaWVudCBhcHBs
aWNhdGlvbiBkb2VzIG5vdCB3aXNoIHRvIGhhbmRsZSB0aGlzIHNpZ25hbCwKKyAqIFdlYktpdCB3
aWxsIHByb3ZpZGUgYSBkZWZhdWx0IGhhbmRsZXIgd2hpY2ggd2lsbCBhc3luY2hyb25vdXNseSBy
dW4KKyAqIGEgcmVndWxhciAjR3RrQ29sb3JDaG9vc2VyIGZvciB0aGUgdXNlciB0byBpbnRlcmFj
dCB3aXRoLgorICovCisKK3N0cnVjdCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUg
eworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIFdlYkNvbG9yQ2hvb3NlclByb3h5
OjpDbGllbnQqIGNsaWVudDsKKyNlbmRpZgorICAgIENvbG9yIGNvbG9yOworICAgIGJvb2wgaGFu
ZGxlZFJlcXVlc3Q7Cit9OworCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdCwgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdCwgR19UWVBFX09CSkVDVCkKKwor
ZW51bSB7CisgICAgRU5EX0NIT09TRVIsCisgICAgQ0hBTkdFX0NPTE9SLAorCisgICAgTEFTVF9T
SUdOQUwKK307CisKK3N0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsK
Kworc3RhdGljIHZvaWQgd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdERpc3Bvc2UoR09iamVjdCog
b2JqZWN0KQoreworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QgPSBXRUJL
SVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iamVjdCk7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhl
IHJlcXVlc3QgaXMgYWx3YXlzIGhhbmRsZWQgYmVmb3JlIGZpbmFsaXppbmcuCisgICAgaWYgKCFy
ZXF1ZXN0LT5wcml2LT5oYW5kbGVkUmVxdWVzdCkKKyAgICAgICAgd2Via2l0X2NvbG9yX2Nob29z
ZXJfcmVxdWVzdF9jYW5jZWwocmVxdWVzdCk7CisKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRf
Y29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsKK30K
Kworc3RhdGljIHZvaWQgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jbGFzc19pbml0KFdl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcyogcmVxdWVzdENsYXNzKQoreworICAgIEdPYmpl
Y3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworICAg
IG9iamVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdERpc3Bvc2U7
CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0OmNoYW5nZS1jb2xv
cjoKKyAgICAgKiBAcmVxdWVzdDogdGhlICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IG9uIHdo
aWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBjb2xvcjogdGhlIG5ldyBjb2xvcgor
ICAgICAqCisgICAgICogRW1pdHRlZCB3aGVuIGRlZmF1bHQgdmFsdWUgb2YgcmVxdWVzdCBpcyBj
aGFuZ2VkLgorICAgICAqLworICAgIHNpZ25hbHNbQ0hBTkdFX0NPTE9SXSA9CisgICAgICAgIGdf
c2lnbmFsX25ldygiY2hhbmdlLWNvbG9yIiwKKyAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01f
Q0xBU1Mob2JqZWN0Q2xhc3MpLAorICAgICAgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwK
KyAgICAgICAgICAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgZ19jY2xvc3VyZV9t
YXJzaGFsX1ZPSURfX1NUUklORywKKyAgICAgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMSwKKyAg
ICAgICAgICAgICAgICBHX1RZUEVfU1RSSU5HKTsKK30KKworLyoqCisgKiB3ZWJraXRfY29sb3Jf
Y2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbDoKKyAqIEByZXF1ZXN0OiBhICNXZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0CisgKgorICogQXNrIFdlYktpdCB0byBjYW5jZWwgdGhlIHJlcXVlc3QuIEl0J3Mg
aW1wb3J0YW50IHRvIGRvIHRoaXMgaW4gY2FzZQorICogbm8gc2VsZWN0aW9uIGhhcyBiZWVuIG1h
ZGUgaW4gdGhlIGNsaWVudCwgb3RoZXJ3aXNlIHRoZSByZXF1ZXN0CisgKiB3b24ndCBiZSBwcm9w
ZXJseSBjb21wbGV0ZWQgYW5kIHRoZSBicm93c2VyIHdpbGwga2VlcCB0aGUgcmVxdWVzdAorICog
cGVuZGluZyBmb3JldmVyLCB3aGljaCBtaWdodCBjYXVzZSB0aGUgYnJvd3NlciB0byBoYW5nLgor
ICovCit2b2lkIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsKFdlYktpdENvbG9y
Q2hvb3NlclJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgaWYgKHJlcXVlc3QtPnByaXYtPmhhbmRs
ZWRSZXF1ZXN0KQorICAgICAgICByZXR1cm47CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
CisgICAgcmVxdWVzdC0+cHJpdi0+Y2xpZW50LT5kaWRFbmRDb2xvckNob29zZXIoKTsKKyNlbmRp
ZgorICAgIHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0ID0gVFJVRTsKK30KKworLyoqCisg
KiB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvcjoKKyAqIEByZXF1ZXN0
OiBhICNXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QKKyAqIEBjb2xvcjogYSAjR2RrUkdCQQorICoK
KyAqIEFzayBXZWJLaXQgdG8gc2VsZWN0IGNvbG9yIGFuZCBjb21wbGV0ZSB0aGUgcmVxdWVzdC4K
KyAqLwordm9pZCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvcihXZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBHZGtSR0JBIGNvbG9yKQorewor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVChyZXF1
ZXN0KSk7CisgICAgaWYgKHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0KQorICAgICAgICBy
ZXR1cm47CisKKyAgICByZXF1ZXN0LT5wcml2LT5jb2xvciA9IENvbG9yKGNvbG9yKTsKKyNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICByZXF1ZXN0LT5wcml2LT5jbGllbnQtPmRpZENo
b29zZUNvbG9yKHJlcXVlc3QtPnByaXYtPmNvbG9yKTsKKyAgICByZXF1ZXN0LT5wcml2LT5jbGll
bnQtPmRpZEVuZENvbG9yQ2hvb3NlcigpOworI2VuZGlmCisgICAgcmVxdWVzdC0+cHJpdi0+aGFu
ZGxlZFJlcXVlc3QgPSBUUlVFOworfQorCisvKioKKyAqIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3Jl
cXVlc3RfZ2V0X2N1cnJlbnRfY29sb3I6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdAorICoKKyAqIFJldHVybnM6IHRoZSBjdXJyZW50IGNvbG9yIG9mIHJlcXVlc3Qu
IFdoaWxlIG5vIGNvbG9yIGhhcyBiZWVuIHNlbGVjdGVkLCBpdAorICogaXMgdGhlIGluaXRpYWwg
dmFsdWUgZGVmaW5lZCBieSBXZWJLaXQuIFdoZW4gYSBjb2xvciBoYXMgYmVlbiBzZWxlY3RlZCwg
dGhpcworICogYmVjb21lcyB0aGUgc2VsZWN0ZWQgdmFsdWUuCisgKi8KK0dka1JHQkEgd2Via2l0
X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcihXZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19DT0xPUl9DSE9PU0VSX1JFUVVFU1QocmVxdWVzdCksICgoY29uc3QgR2RrUkdCQSl7MC4wLCAw
LjAsIDAuMCwgMC4wfSkpOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdka1JHQkE+KHJlcXVl
c3QtPnByaXYtPmNvbG9yKTsKK30KKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdENyZWF0ZShj
b25zdCBDb2xvciBpbml0aWFsQ29sb3IsIFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQqIGNs
aWVudCkKK3sKKyAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lU
X0NPTE9SX0NIT09TRVJfUkVRVUVTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09MT1JfQ0hP
T1NFUl9SRVFVRVNULCBOVUxMKSk7CisgICAgcmVxdWVzdC0+cHJpdi0+Y2xpZW50ID0gY2xpZW50
OworICAgIHJlcXVlc3QtPnByaXYtPmNvbG9yID0gaW5pdGlhbENvbG9yOworICAgIHJlcXVlc3Qt
PnByaXYtPmhhbmRsZWRSZXF1ZXN0ID0gRkFMU0U7CisgICAgcmV0dXJuIHJlcXVlc3Q7Cit9CisK
K3ZvaWQgd2Via2l0V2ViQ29sb3JDaG9vc2VyUmVxdWVzdEVuZChXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0NPTE9S
X0NIT09TRVJfUkVRVUVTVChyZXF1ZXN0KSk7CisKKyAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9y
ZXF1ZXN0X2NhbmNlbChyZXF1ZXN0KTsKKyAgICBnX3NpZ25hbF9lbWl0KHJlcXVlc3QsIHNpZ25h
bHNbRU5EX0NIT09TRVJdLCAwLCBOVUxMKTsKK30KKwordm9pZCB3ZWJraXRXZWJDb2xvckNob29z
ZXJSZXF1ZXN0U2V0Q29sb3IoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCwgY29u
c3QgQ29sb3IgY29sb3IpCit7CisgICAgcmVxdWVzdC0+cHJpdi0+Y29sb3IgPSBjb2xvcjsKKyAg
ICBnX3NpZ25hbF9lbWl0KHJlcXVlc3QsIHNpZ25hbHNbQ0hBTkdFX0NPTE9SXSwgMCwgcmVxdWVz
dC0+cHJpdi0+Y29sb3Iuc2VyaWFsaXplZCgpLmFzY2lpKCkuZGF0YSgpLCBOVUxMKTsKK30KKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjIyNTc1NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgKQEAgLTAsMCArMSw3NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VC
S0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBi
ZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0X2gKKyNkZWZpbmUgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdF9oCisKKyNpbmNs
dWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0df
QkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1Qg
ICAgICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlwZSgpKQorI2Rl
ZmluZSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iaikgICAgICAgICAgICAoR19UWVBF
X0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVR
VUVTVCwgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCkpCisjZGVmaW5lIFdFQktJVF9DT0xPUl9D
SE9PU0VSX1JFUVVFU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgo
a2xhc3MpLCAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNULCBXZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFV
RVNUKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJ
VF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9JU19DT0xPUl9D
SE9PU0VSX1JFUVVFU1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xh
c3MpLCAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lU
X0NPTE9SX0NIT09TRVJfUkVRVUVTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9H
RVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QsIFdlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0ICAgICAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0OwordHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcyAgIFdlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0UHJpdmF0ZSBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZTsKKworc3RydWN0IF9X
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIC8q
PCBwcml2YXRlID4qLworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlICpwcml2
OworfTsKKworc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MgeworICAgIEdP
YmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRf
Y29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF90eXBlICAgICAgICAgICAodm9pZCk7CisKK1dFQktJ
VF9BUEkgR2RrUkdCQQord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9j
b2xvciAgKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgKnJlcXVlc3QpOworCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yICAgICAgIChX
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICpyZXF1ZXN0LCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHZGtSR0JBIGNvbG9yKTsKKworV0VC
S0lUX0FQSSB2b2lkCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbCAgICAgICAg
ICAgICAoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCAqcmVxdWVzdCk7CisKK0dfRU5EX0RFQ0xT
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E5YTRhMgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQ
cml2YXRlLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ft
c3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6
CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAq
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdFByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJp
dmF0ZV9oCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclBy
b3h5LmgiCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oIgorI2luY2x1ZGUg
IldlYktpdFByaXZhdGUuaCIKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCitXZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0KiB3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0Q3JlYXRlKGNv
bnN0IFdlYkNvcmU6OkNvbG9yLCBXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQq
KTsKK3ZvaWQgd2Via2l0V2ViQ29sb3JDaG9vc2VyUmVxdWVzdEVuZChXZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0Kik7Cit2b2lkIHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RTZXRDb2xvcihX
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiwgY29uc3QgV2ViQ29yZTo6Q29sb3IpOworCisjZW5k
aWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKKyNlbmRpZiAvLyBXZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDM1MmI3ZmUuLmI1MzU4MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBA
IC0xMDcsNiArMTA3LDkgQEAgZW51bSB7CiAKICAgICBSVU5fRklMRV9DSE9PU0VSLAogCisgICAg
UlVOX0NPTE9SX0NIT09TRVIsCisgICAgSElERV9DT0xPUl9DSE9PU0VSLAorCiAgICAgQ09OVEVY
VF9NRU5VLAogICAgIENPTlRFWFRfTUVOVV9ESVNNSVNTRUQsCiAKQEAgLTE3Niw2ICsxNzksOSBA
QCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAgICBHUmVmUHRyPEdDYW5jZWxsYWJs
ZT4gZmF2aWNvbkNhbmNlbGxhYmxlOwogICAgIENTdHJpbmcgZmF2aWNvblVSSTsKICAgICB1bnNp
Z25lZCBsb25nIGZhdmljb25DaGFuZ2VkSGFuZGxlcklEOworCisgICAgR1JlZlB0cjxHdGtXaWRn
ZXQ+IGNvbG9yQ2hvb3NlckRpYWxvZzsKKyAgICBHUmVmUHRyPFdlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3Q+IGNvbG9yQ2hvb3NlclJlcXVlc3Q7CiB9OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tM
QVNUX1NJR05BTF0gPSB7IDAsIH07CkBAIC00MTQsNiArNDIwLDY0IEBAIHN0YXRpYyB2b2lkIGZp
bGVDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFjayhHdGtEaWFsb2cqIGRpYWxvZywgZ2ludCBy
ZXNwb25zZUlECiAgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19XSURHRVQoZGlhbG9nKSk7CiB9
CiAKK3N0YXRpYyB2b2lkIGNvbG9yQ2hvb3NlclJlcXVlc3RDaGFuZ2VDYWxsYmFjayhXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBnY2hhciogY29sb3IsIEd0a1dpZGdl
dCogZGlhbG9nKQoreworICAgIEdka1JHQkEgcmdiOworICAgIGdka19yZ2JhX3BhcnNlKCZyZ2Is
IGNvbG9yKTsKKyAgICBndGtfY29sb3JfY2hvb3Nlcl9zZXRfcmdiYShHVEtfQ09MT1JfQ0hPT1NF
UihkaWFsb2cpLCAmcmdiKTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdIaWRl
Q29sb3JDaG9vc2VyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3QqIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3Nl
clJlcXVlc3QuZ2V0KCkgPT0gcmVxdWVzdCk7CisKKyAgICBpZiAod2ViVmlldy0+cHJpdi0+Y29s
b3JDaG9vc2VyUmVxdWVzdCkgeworICAgICAgICAvLyBub29wIGlmIHdlYmtpdF9jb2xvcl9jaG9v
c2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yIGhhcyBiZWVuIGNhbGxlZCBiZWZvcmUKKyAgICAgICAg
d2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwod2ViVmlldy0+cHJpdi0+Y29sb3JD
aG9vc2VyUmVxdWVzdC5nZXQoKSk7CisgICAgICAgIHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3Nl
clJlcXVlc3QuY2xlYXIoKTsKKyAgICB9CisgICAgaWYgKHdlYlZpZXctPnByaXYtPmNvbG9yQ2hv
b3NlckRpYWxvZykgeworICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kod2ViVmlldy0+cHJpdi0+
Y29sb3JDaG9vc2VyRGlhbG9nLmdldCgpKTsKKyAgICAgICAgd2ViVmlldy0+cHJpdi0+Y29sb3JD
aG9vc2VyRGlhbG9nLmNsZWFyKCk7CisgICAgfQorICAgIHJldHVybiBUUlVFOworfQorCitzdGF0
aWMgdm9pZCBjb2xvckNob29zZXJEaWFsb2dSZXNwb25zZUNhbGxiYWNrKEd0a1dpZGdldCogZGlh
bG9nLCBnaW50IHJlc3BvbnNlSUQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgR1Jl
ZlB0cjxXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PiByZWZlZFJlcXVlc3QgPSB3ZWJWaWV3LT5w
cml2LT5jb2xvckNob29zZXJSZXF1ZXN0OworICAgIGlmIChyZXNwb25zZUlEID09IEdUS19SRVNQ
T05TRV9PSykgeworICAgICAgICBHT3duUHRyPGNoYXI+IHN0cmluZ1ZhbHVlOworICAgICAgICBH
ZGtSR0JBIGNvbG9yOworICAgICAgICBndGtfY29sb3JfY2hvb3Nlcl9nZXRfcmdiYShHVEtfQ09M
T1JfQ0hPT1NFUihkaWFsb2cpLCAmY29sb3IpOworICAgICAgICB3ZWJraXRfY29sb3JfY2hvb3Nl
cl9yZXF1ZXN0X3NlbGVjdF9jb2xvcihyZWZlZFJlcXVlc3QuZ2V0KCksIGNvbG9yKTsKKyAgICB9
CisKKyAgICB3ZWJraXRXZWJWaWV3SGlkZUNvbG9yQ2hvb3Nlcih3ZWJWaWV3LCByZWZlZFJlcXVl
c3QuZ2V0KCkpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld1J1bkNvbG9yQ2hv
b3NlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiBy
ZXF1ZXN0KQoreworICAgIGlmICh3ZWJWaWV3LT5wcml2LT5jb2xvckNob29zZXJSZXF1ZXN0KQor
ICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193aWRn
ZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQod2ViVmlldykpOworICAgIGlmICghIXdpZGdldElz
T25zY3JlZW5Ub3BsZXZlbFdpbmRvdyh0b3BsZXZlbCkpCisgICAgICAgIHRvcGxldmVsID0gMDsK
KyAgICBHdGtXaWRnZXQqIGRpYWxvZyA9ICBndGtfY29sb3JfY2hvb3Nlcl9kaWFsb2dfbmV3KF8o
IlNlbGVjdCBDb2xvciIpLCBHVEtfV0lORE9XKHRvcGxldmVsKSk7CisKKyAgICBjb25zdCBHZGtS
R0JBIHJnYiA9IHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29sb3Io
cmVxdWVzdCk7CisgICAgZ3RrX2NvbG9yX2Nob29zZXJfc2V0X3JnYmEoR1RLX0NPTE9SX0NIT09T
RVIoZGlhbG9nKSwgJnJnYik7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KHJlcXVlc3QsICJjaGFu
Z2UtY29sb3IiLCBHX0NBTExCQUNLKGNvbG9yQ2hvb3NlclJlcXVlc3RDaGFuZ2VDYWxsYmFjayks
IGRpYWxvZyk7CisgICAgZ19zaWduYWxfY29ubmVjdChkaWFsb2csICJyZXNwb25zZSIsIEdfQ0FM
TEJBQ0soY29sb3JDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFjayksIHdlYlZpZXcpOworICAg
IGd0a193aWRnZXRfc2hvdyhkaWFsb2cpOworCisgICAgd2ViVmlldy0+cHJpdi0+Y29sb3JDaG9v
c2VyRGlhbG9nID0gZGlhbG9nOworICAgIHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3NlclJlcXVl
c3QgPSByZXF1ZXN0OworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKIHN0YXRpYyBnYm9vbGVhbiB3
ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0
RmlsZUNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIEd0a1dpZGdldCogdG9wbGV2ZWwg
PSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKQEAgLTU1OCw2
ICs2MjIsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRX
ZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICB3ZWJWaWV3Q2xhc3MtPmRlY2lkZV9wb2xp
Y3kgPSB3ZWJraXRXZWJWaWV3RGVjaWRlUG9saWN5OwogICAgIHdlYlZpZXdDbGFzcy0+cGVybWlz
c2lvbl9yZXF1ZXN0ID0gd2Via2l0V2ViVmlld1Blcm1pc3Npb25SZXF1ZXN0OwogICAgIHdlYlZp
ZXdDbGFzcy0+cnVuX2ZpbGVfY2hvb3NlciA9IHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlcjsK
KyAgICB3ZWJWaWV3Q2xhc3MtPnJ1bl9jb2xvcl9jaG9vc2VyID0gd2Via2l0V2ViVmlld1J1bkNv
bG9yQ2hvb3NlcjsKKyAgICB3ZWJWaWV3Q2xhc3MtPmhpZGVfY29sb3JfY2hvb3NlciA9IHdlYmtp
dFdlYlZpZXdIaWRlQ29sb3JDaG9vc2VyOwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmll
dzp3ZWItY29udGV4dDoKQEAgLTExNDksNiArMTIxNSw1OCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAg
ICAgICAgICAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAxLCAvKiBudW1iZXIgb2YgcGFyYW1l
dGVycyAqLwogICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfRklMRV9DSE9PU0VSX1JF
UVVFU1QpOwogCisgICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OnJ1bi1jb2xvci1jaG9v
c2VyOgorICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBz
aWduYWwgaXMgZW1pdHRlZAorICAgICAqIEByZXF1ZXN0OiBhICNXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0CisgICAgICoKKyAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gdGhlIHVz
ZXIgaW50ZXJhY3RzIHdpdGggYSAmbHQ7aW5wdXQKKyAgICAgKiB0eXBlPSdjb2xvcicgLyZndDsg
SFRNTCBlbGVtZW50LCByZXF1ZXN0aW5nIGZyb20gV2ViS2l0IHRvIHNob3cKKyAgICAgKiBhIGRp
YWxvZyB0byBzZWxlY3QgYSBjb2xvci4gVG8gbGV0IHRoZSBhcHBsaWNhdGlvbiBrbm93IHRoZSBk
ZXRhaWxzIG9mCisgICAgICogdGhlIGNvbG9yIGNob29zZXIsIGFzIHdlbGwgYXMgdG8gYWxsb3cg
dGhlIGNsaWVudCBhcHBsaWNhdGlvbiB0byBlaXRoZXIKKyAgICAgKiBjYW5jZWwgdGhlIHJlcXVl
c3Qgb3IgcGVyZm9ybSBhbiBhY3R1YWwgY29sb3Igc2VsZWN0aW9uLCB0aGUgc2lnbmFsIHdpbGwK
KyAgICAgKiBwYXNzIGFuIGluc3RhbmNlIG9mIHRoZSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dCBpbiB0aGUgQHJlcXVlc3QKKyAgICAgKiBhcmd1bWVudC4KKyAgICAgKgorICAgICAqIFRoZSBk
ZWZhdWx0IHNpZ25hbCBoYW5kbGVyIHdpbGwgYXN5bmNocm9ub3VzbHkgcnVuIGEgcmVndWxhcgor
ICAgICAqICNHdGtDb2xvckNob29zZXIgZm9yIHRoZSB1c2VyIHRvIGludGVyYWN0IHdpdGguCisg
ICAgICoKKyAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZyb20g
YmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50LgorICAgICAqICAgJUZBTFNFIHRvIHByb3BhZ2F0
ZSB0aGUgZXZlbnQgZnVydGhlci4KKyAgICAgKgorICAgICAqLworICAgIHNpZ25hbHNbUlVOX0NP
TE9SX0NIT09TRVJdID0KKyAgICAgICAgZ19zaWduYWxfbmV3KCJydW4tY29sb3ItY2hvb3NlciIs
CisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAor
ICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAg
ICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBydW5fY29sb3JfY2hvb3Nl
ciksCisgICAgICAgICAgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRs
ZWQsIDAgLyogYWNjdW11bGF0b3IgZGF0YSAqLywKKyAgICAgICAgICAgICAgICAgICAgIHdlYmtp
dF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVCwKKyAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9C
T09MRUFOLCAxLCAvKiBudW1iZXIgb2YgcGFyYW1ldGVycyAqLworICAgICAgICAgICAgICAgICAg
ICAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKTsKKworICAgICAvKioKKyAgICAg
KiBXZWJLaXRXZWJWaWV3OjpoaWRlLWNvbG9yLWNob29zZXI6CisgICAgICogQHdlYl92aWV3OiB0
aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICog
QHJlcXVlc3Q6IGEgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAgICAgKgorICAgICAqIEVt
aXR0ZWQgd2hlbiBjb2xvciBwaWNrZXIgbXVzdCBiZSBoaWRkZW4uIFRoaXMgaGFwcGVucyBmb3Ig
ZXhhbXBsZSBpZiB0aGUKKyAgICAgKiBwYWdlIHRyaWdnZXJpbmcgdGhlIHJlcXVlc3QgdW5sb2Fk
cyBiZWZvcmUgdGhlIHJlcXVlc3QgaXMgY29tcGxldGVkLgorICAgICAqCisgICAgICogUmV0dXJu
czogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRo
ZSBldmVudC4KKyAgICAgKiAgICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIu
CisgICAgICoKKyAgICAgKi8KKyAgICBzaWduYWxzW0hJREVfQ09MT1JfQ0hPT1NFUl0gPQorICAg
ICAgICBnX3NpZ25hbF9uZXcoImhpZGUtY29sb3ItY2hvb3NlciIsCisgICAgICAgICAgICAgICAg
ICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgICAgICAg
ICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZT
RVQoV2ViS2l0V2ViVmlld0NsYXNzLCBoaWRlX2NvbG9yX2Nob29zZXIpLAorICAgICAgICAgICAg
ICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCAwIC8qIGFjY3VtdWxh
dG9yIGRhdGEgKi8sCisgICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFO
X19PQkpFQ1QsCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwgLyogbnVt
YmVyIG9mIHBhcmFtZXRlcnMgKi8KKyAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX0NP
TE9SX0NIT09TRVJfUkVRVUVTVCk7CisKICAgICAvKioKICAgICAgKiBXZWJLaXRXZWJWaWV3Ojpj
b250ZXh0LW1lbnU6CiAgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hp
Y2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCkBAIC0xNTY3LDYgKzE2ODUsMjAgQEAgdm9pZCB3ZWJr
aXRXZWJWaWV3UnVuRmlsZUNob29zZXJSZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdl
YktpdEZpbGVDaG9vc2UKICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbUlVOX0ZJ
TEVfQ0hPT1NFUl0sIDAsIHJlcXVlc3QsICZyZXR1cm5WYWx1ZSk7CiB9CiAKK2Jvb2wgd2Via2l0
V2ViVmlld1J1bkNvbG9yQ2hvb3NlclJlcXVlc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnYm9vbGVhbiByZXR1cm5W
YWx1ZTsKKyAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbUlVOX0NPTE9SX0NIT09T
RVJdLCAwLCByZXF1ZXN0LCAmcmV0dXJuVmFsdWUpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
K30KKworYm9vbCB3ZWJraXRXZWJWaWV3SGlkZUNvbG9yQ2hvb3NlclJlcXVlc3QoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAg
ICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25h
bHNbSElERV9DT0xPUl9DSE9PU0VSXSwgMCwgcmVxdWVzdCwgJnJldHVyblZhbHVlKTsKKyAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKIHN0YXRpYyBib29sIHdlYmtpdFdlYlZpZXdTaG91bGRT
aG93SW5wdXRNZXRob2RzTWVudShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEd0a1Nl
dHRpbmdzKiBzZXR0aW5ncyA9IGd0a193aWRnZXRfZ2V0X3NldHRpbmdzKEdUS19XSURHRVQod2Vi
VmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlldy5oCmluZGV4IGZkYmM2NjYuLmU2YmE0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJh
Y2tGb3J3YXJkTGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRGaW5kQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Rm9ybVN1Ym1pc3Np
b25SZXF1ZXN0Lmg+CkBAIC0xODgsNiArMTg5LDEwIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Ns
YXNzIHsKICAgICBnYm9vbGVhbiAgICgqIGxlYXZlX2Z1bGxzY3JlZW4pICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKICAgICBnYm9vbGVhbiAgICgqIHJ1
bl9maWxlX2Nob29zZXIpICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndl
Yl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdEZpbGVDaG9vc2VyUmVxdWVzdCAgICAqcmVxdWVzdCk7CisgICAgZ2Jvb2xlYW4gICAoKiBy
dW5fY29sb3JfY2hvb3NlcikgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3
ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICAgICpyZXF1ZXN0KTsKKyAgICBnYm9vbGVhbiAgICgq
IGhpZGVfY29sb3JfY2hvb3NlcikgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAg
KndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgICAgKnJlcXVlc3QpOwogICAgIGdib29sZWFuICAg
KCogY29udGV4dF9tZW51KSAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
ICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0Q29udGV4dE1lbnUgICAgICAgICAgICpjb250ZXh0X21lbnUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrRXZlbnQgICAgICAgICAgICAg
ICAgICAgICpldmVudCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDBkZTBkMTcuLjBkY2FlNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d1ByaXZhdGUuaApAQCAtNDgsNiArNDgsOCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdNb3VzZVRhcmdl
dENoYW5nZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdCosCiB2b2lk
IHdlYmtpdFdlYlZpZXdQcmludEZyYW1lKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkqKTsKIHZvaWQgd2Via2l0V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQoV2ViS2l0V2Vi
VmlldyosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmll
ciwgV2ViS2l0VVJJUmVxdWVzdCopOwogdm9pZCB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXJS
ZXF1ZXN0KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QqKTsKK2Jvb2wg
d2Via2l0V2ViVmlld1J1bkNvbG9yQ2hvb3NlclJlcXVlc3QoV2ViS2l0V2ViVmlldyosIFdlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3QqKTsKK2Jvb2wgd2Via2l0V2ViVmlld0hpZGVDb2xvckNob29z
ZXJSZXF1ZXN0KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Kik7CiBX
ZWJLaXRXZWJSZXNvdXJjZSogd2Via2l0V2ViVmlld0dldExvYWRpbmdXZWJSZXNvdXJjZShXZWJL
aXRXZWJWaWV3KiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKIHZvaWQgd2Via2l0V2Vi
Vmlld1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZShXZWJLaXRXZWJWaWV3KiwgdWludDY0X3QgcmVz
b3VyY2VJZGVudGlmaWVyKTsKIFdlYktpdFdlYlJlc291cmNlKiB3ZWJraXRXZWJWaWV3UmVzb3Vy
Y2VMb2FkRmluaXNoZWQoV2ViS2l0V2ViVmlldyosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmll
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA2ZTk3Mjg0Li5lODQ4ZTJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5z
Z21sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay1kb2NzLnNnbWwKQEAgLTMwLDYgKzMwLDcgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv
V2ViS2l0V2ViUmVzb3VyY2UueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktp
dEVycm9yLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRGYXZpY29uRGF0
YWJhc2UueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEZpbGVDaG9v
c2VyUmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0RmluZENv
bnRyb2xsZXIueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdENvb2tpZU1h
bmFnZXIueG1sIi8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCBmYzMxNzZkLi4zYTMy
MTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTY2Myw2ICs2NjMsMjcgQEAgd2Vi
a2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2dldF90eXBlCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9O
PgorPEZJTEU+V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdDwvRklMRT4KK1dlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3QKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29s
b3IKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yCit3ZWJraXRfY29s
b3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbAorCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcworV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFV
RVNUCitXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUCitXRUJLSVRfSVNfQ09MT1JfQ0hPT1NF
Ul9SRVFVRVNUCitXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUX0NMQVNTCitXRUJLSVRfSVNf
Q09MT1JfQ0hPT1NFUl9SRVFVRVNUX0NMQVNTCitXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNU
X0dFVF9DTEFTUworCis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdFByaXZhdGUKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X3R5cGUKKzwvU0VD
VElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRGaW5kQ29udHJvbGxlcjwvRklMRT4KIFdl
YktpdEZpbmRDb250cm9sbGVyCiBXZWJLaXRGaW5kT3B0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCmluZGV4IDRk
ODg0M2UuLmViNWIzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcworKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKQEAgLTIxLDMgKzIxLDQgQEAgd2Via2l0X3dl
Yl9pbnNwZWN0b3JfZ2V0X3R5cGUKIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3R5cGUK
IHdlYmtpdF9jb250ZXh0X21lbnVfZ2V0X3R5cGUKIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9n
ZXRfdHlwZQord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlwZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktp
dFdlYlZpZXcuY3BwCmluZGV4IGVhNWU0MDQuLjIyNWNiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmll
dy5jcHAKQEAgLTc5Niw2ICs3OTYsNzMgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdGaWxlQ2hv
b3NlclJlcXVlc3QoRmlsZUNob29zZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHdl
YmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwoZmlsZUNob29zZXJSZXF1ZXN0KTsKIH0K
IAorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorY2xhc3MgQ29sb3JDaG9vc2VyVGVzdDog
cHVibGljIFVJQ2xpZW50VGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVS
RShDb2xvckNob29zZXJUZXN0KTsKKyAgICBDb2xvckNob29zZXJUZXN0KCkKKyAgICB7CisgICAg
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAicnVuLWNvbG9yLWNob29zZXIiLCBHX0NB
TExCQUNLKHJ1bkNvbG9yQ2hvb3NlckNhbGxiYWNrKSwgdGhpcyk7CisgICAgfQorCisgICAgc3Rh
dGljIGdib29sZWFuIHJ1bkNvbG9yQ2hvb3NlckNhbGxiYWNrKFdlYktpdFdlYlZpZXcqLCBXZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0LCBDb2xvckNob29zZXJUZXN0KiB0ZXN0KQor
ICAgIHsKKyAgICAgICAgdGVzdC0+cnVuQ29sb3JDaG9vc2VyKHJlcXVlc3QpOworICAgICAgICBy
ZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICB2b2lkIHJ1bkNvbG9yQ2hvb3NlcihXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQorICAgIHsKKyAgICAgICAgYXNzZXJ0T2JqZWN0SXNE
ZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChyZXF1ZXN0KSk7CisgICAgICAgIG1fY29s
b3JDaG9vc2VyUmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgICAgIGdfbWFpbl9sb29wX3F1aXQobV9t
YWluTG9vcCk7CisgICAgfQorCisgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogY2xpY2tN
b3VzZUJ1dHRvbkFuZFdhaXRGb3JDb2xvckNob29zZXJSZXF1ZXN0KGludCB4LCBpbnQgeSkKKyAg
ICB7CisgICAgICAgIGNsaWNrTW91c2VCdXR0b24oeCwgeSk7CisgICAgICAgIGdfbWFpbl9sb29w
X3J1bihtX21haW5Mb29wKTsKKyAgICAgICAgcmV0dXJuIG1fY29sb3JDaG9vc2VyUmVxdWVzdC5n
ZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR1JlZlB0cjxXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0PiBtX2NvbG9yQ2hvb3NlclJlcXVlc3Q7Cit9OworCitzdGF0aWMgdm9pZCB0ZXN0V2Vi
Vmlld0NvbG9yQ2hvb3NlclJlcXVlc3QoQ29sb3JDaG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKK3sKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKyAg
ICBzdGF0aWMgY29uc3QgY2hhciogY29sb3JDaG9vc2VySFRNTCA9ICI8aHRtbD48Ym9keT48aW5w
dXQgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDttYXJnaW46MDtwYWRkaW5n
OjAnIHR5cGU9J2NvbG9yJyB2YWx1ZT0nI2ZmMDAwMCcvPjwvYm9keT48L2h0bWw+IjsKKyAgICB0
ZXN0LT5sb2FkSHRtbChjb2xvckNob29zZXJIVE1MLCAwKTsKKyAgICB0ZXN0LT53YWl0VW50aWxM
b2FkRmluaXNoZWQoKTsKKyAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiBjb2xvckNob29z
ZXJSZXF1ZXN0ID0gdGVzdC0+Y2xpY2tNb3VzZUJ1dHRvbkFuZFdhaXRGb3JDb2xvckNob29zZXJS
ZXF1ZXN0KDUsIDUpOworICAgIEdka1JHQkEgY29sb3IgPSB3ZWJraXRfY29sb3JfY2hvb3Nlcl9y
ZXF1ZXN0X2dldF9jdXJyZW50X2NvbG9yKGNvbG9yQ2hvb3NlclJlcXVlc3QpOworICAgIGdfYXNz
ZXJ0X2NtcGZsb2F0KGNvbG9yLnJlZCwgPT0sIDEuMCk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQo
Y29sb3IuZ3JlZW4sID09LCAwLjApOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLmJsdWUs
ID09LCAwLjApOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLmFscGhhLCA9PSwgMS4wKTsK
KworICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZSA9ICcjMDBmZjAwJzsiLCAwKTsKKyAgICBjb2xv
ciA9IHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IoY29sb3JD
aG9vc2VyUmVxdWVzdCk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQoY29sb3IucmVkLCA9PSwgMC4w
KTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChjb2xvci5ncmVlbiwgPT0sIDEuMCk7CisgICAgZ19h
c3NlcnRfY21wZmxvYXQoY29sb3IuYmx1ZSwgPT0sIDAuMCk7CisgICAgZ19hc3NlcnRfY21wZmxv
YXQoY29sb3IuYWxwaGEsID09LCAxLjApOworCisgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVx
dWVzdF9zZWxlY3RfY29sb3IoY29sb3JDaG9vc2VyUmVxdWVzdCwgKEdka1JHQkEpezAuMCwgMC4w
LCAxLjAsIDEuMH0pOworICAgIGNvbG9yID0gd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9n
ZXRfY3VycmVudF9jb2xvcihjb2xvckNob29zZXJSZXF1ZXN0KTsKKyAgICBnX2Fzc2VydF9jbXBm
bG9hdChjb2xvci5yZWQsID09LCAwLjApOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLmdy
ZWVuLCA9PSwgMC4wKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChjb2xvci5ibHVlLCA9PSwgMS4w
KTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChjb2xvci5hbHBoYSwgPT0sIDEuMCk7CisKKyAgICBX
ZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNj
cmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcp
LnZhbHVlOyIsIDApOworICAgIEdPd25QdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6
OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIGdfYXNz
ZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICIjMDAwMGZmIik7Cit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKwogY2xhc3MgRnVsbFNjcmVlbkNsaWVudFRl
c3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CiBwdWJsaWM6CiAgICAgTUFLRV9HTElCX1RFU1RfRklY
VFVSRShGdWxsU2NyZWVuQ2xpZW50VGVzdCk7CkBAIC0xMDgzLDYgKzExNTAsOSBAQCB2b2lkIGJl
Zm9yZUFsbCgpCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJjYW4tc2hv
dy1taW1lLXR5cGUiLCB0ZXN0V2ViVmlld0NhblNob3dNSU1FVHlwZSk7CiAgICAgRm9ybUNsaWVu
dFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzdWJtaXQtZm9ybSIsIHRlc3RXZWJWaWV3U3Vi
bWl0Rm9ybSk7CiAgICAgU2F2ZVdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAic2F2
ZSIsIHRlc3RXZWJWaWV3U2F2ZSk7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAg
Q29sb3JDaG9vc2VyVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImNvbG9yLWNob29zZXItcmVx
dWVzdCIsIHRlc3RXZWJWaWV3Q29sb3JDaG9vc2VyUmVxdWVzdCk7CisjZW5kaWYKIH0KIAogdm9p
ZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgK
aW5kZXggMWI0ZmE4Ni4uMDNkM2Q2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3dlYmtpdDIuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
RW51bVR5cGVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRFcnJvci5oPgogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGaWxlQ2hv
b3NlclJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZpbmRDb250cm9sbGVyLmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29sb3JDaG9vc2VyUHJveHlH
dGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94
eUd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTIzYWM5YwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29sb3JDaG9v
c2VyUHJveHlHdGsuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUgbWV0OgorICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Us
CisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
CisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyNpbmNsdWRlICJXZWJDb2xvckNo
b29zZXJQcm94eUd0ay5oIgorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2
YXRlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworV2ViQ29sb3JDaG9vc2VyUHJveHlHdGs6OldlYkNvbG9yQ2hvb3NlclByb3h5R3RrKFdlYkNv
bG9yQ2hvb3NlclByb3h5OjpDbGllbnQqIGNsaWVudCwgR3RrV2lkZ2V0KiB3ZWJWaWV3LCBjb25z
dCBDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKKyAgICA6
IFdlYkNvbG9yQ2hvb3NlclByb3h5KGNsaWVudCkKKyAgICAsIG1fd2ViVmlldyh3ZWJWaWV3KQor
eworICAgIG1fcmVxdWVzdCA9IGFkb3B0R1JlZihHX09CSkVDVCh3ZWJraXRDb2xvckNob29zZXJS
ZXF1ZXN0Q3JlYXRlKGluaXRpYWxDb2xvciwgbV9jbGllbnQpKSk7CisgICAgaWYgKCF3ZWJraXRX
ZWJWaWV3UnVuQ29sb3JDaG9vc2VyUmVxdWVzdChXRUJLSVRfV0VCX1ZJRVcobV93ZWJWaWV3Lmdl
dCgpKSwgV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVChtX3JlcXVlc3QuZ2V0KCkpKSkgewor
ICAgICAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbChXRUJLSVRfQ09MT1Jf
Q0hPT1NFUl9SRVFVRVNUKG1fcmVxdWVzdC5nZXQoKSkpOworICAgIH0KK30KKwordm9pZCBXZWJD
b2xvckNob29zZXJQcm94eUd0azo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
Cit7CisgICAgd2Via2l0V2ViQ29sb3JDaG9vc2VyUmVxdWVzdFNldENvbG9yKFdFQktJVF9DT0xP
Ul9DSE9PU0VSX1JFUVVFU1QobV9yZXF1ZXN0LmdldCgpKSwgY29sb3IpOworfQorCit2b2lkIFdl
YkNvbG9yQ2hvb3NlclByb3h5R3RrOjplbmRDaG9vc2VyKCkKK3sKKyAgICBpZiAoIXdlYmtpdFdl
YlZpZXdIaWRlQ29sb3JDaG9vc2VyUmVxdWVzdChXRUJLSVRfV0VCX1ZJRVcobV93ZWJWaWV3Lmdl
dCgpKSwgV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVChtX3JlcXVlc3QuZ2V0KCkpKSkgewor
ICAgICAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbChXRUJLSVRfQ09MT1Jf
Q0hPT1NFUl9SRVFVRVNUKG1fcmVxdWVzdC5nZXQoKSkpOworICAgIH0KKworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94
eUd0ay5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94
eUd0ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNmIzM2YKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3Nl
clByb3h5R3RrLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwg
U2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBt
ZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAq
ICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUK
KyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAq
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29sb3JDaG9v
c2VyUHJveHlHdGtfaAorI2RlZmluZSBXZWJDb2xvckNob29zZXJQcm94eUd0a19oCisKKyNpbmNs
dWRlICJXZWJDb2xvckNob29zZXJQcm94eS5oIgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Cisj
aW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBDb2xvcjsKK2NsYXNzIEludFJlY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJDb2xvckNob29zZXJQcm94eUd0ayA6ICBwdWJsaWMgV2ViQ29sb3JDaG9vc2VyUHJv
eHkgeworCitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJv
eHk+IGNyZWF0ZShXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiBjbGllbnQsIEd0a1dpZGdl
dCogd2ViVmlldywgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrKGNsaWVudCwgd2ViVmlldywgaW5pdGlhbENv
bG9yLCBlbGVtZW50UmVjdCkpOworICAgIH0KKyAgICB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29u
c3QgV2ViQ29yZTo6Q29sb3ImKTsKKyAgICB2b2lkIGVuZENob29zZXIoKTsKKworcHJpdmF0ZToK
KyAgICBXZWJDb2xvckNob29zZXJQcm94eUd0ayhXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50
KiwgR3RrV2lkZ2V0KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0Jik7CisKKyAgICBHUmVmUHRyPEdPYmplY3Q+IG1fcmVxdWVzdDsKKyAgICBHUmVmUHRyPEd0
a1dpZGdldD4gbV93ZWJWaWV3OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBXZWJDb2xvckNob29zZXJQcm94eUd0a19oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRv
dG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmlu
ZGV4IGY4N2Y4MzQuLjJjNmIwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMjMyLDYg
KzIzMiw4IEBAIF9aTjdXZWJDb3JlMThTdHlsZVNoZWV0Q29udGVudHNEMUV2OwogX1pON1dlYkNv
cmUyOERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24xMmFkZFVzZXJTaGVldEVOM1dURjEwUGFz
c1JlZlB0cklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRTsKIF9aTjdXZWJDb3JlMjhEb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uMTRhZGRBdXRob3JTaGVldEVOM1dURjEwUGFzc1JlZlB0cklO
U18xOFN0eWxlU2hlZXRDb250ZW50c0VFRTsKIF9aTjdXZWJDb3JlNEtVUkwxMGludmFsaWRhdGVF
djsKK19aTjdXZWJDb3JlNUNvbG9yQzFFUktOM1dURjZTdHJpbmdFOworX1pON1dlYkNvcmUxNkhU
TUxJbnB1dEVsZW1lbnQyNXNlbGVjdENvbG9ySW5Db2xvckNob29zZXJFUktOU181Q29sb3JFOwog
CiBsb2NhbDoKIF9aKjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBiOGVkM2VhLi42MTM5MThjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTItMjAgIEFybmF1
ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RL
XSBBZGQgc3VwcG9ydCBmb3IgY29sb3IgaW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIGlucHV0IHR5cGUgY29sb3IgaW4gZmVhdHVyZSBs
aXN0LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOgorCiAy
MDEyLTExLTA5ICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+
CiAKICAgICAgICAgW0dUS10gYWRkIGxpYnNjcmV0IHRvIGpoYnVpbGQgc3lzdGVtCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggY2Q2NzM2My4uNTZhODYxYyAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMjY0LDcgKzI2NCw3IEBA
IG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOUFVUX1NQRUVDSCIs
IGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRpbnB1dFNwZWVjaFN1cHBvcnQgfSwKIAogICAgIHsg
b3B0aW9uID0+ICJpbnB1dC10eXBlLWNvbG9yIiwgZGVzYyA9PiAiVG9nZ2xlIElucHV0IFR5cGUg
Q29sb3Igc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlBVVF9UWVBFX0NPTE9S
IiwgZGVmYXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSB8fCBpc1F0KCkpLCB2YWx1
ZSA9PiBcJGlucHV0VHlwZUNvbG9yU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
SU5QVVRfVFlQRV9DT0xPUiIsIGRlZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgpIHx8IGlzRWZsKCkg
fHwgaXNRdCgpIHx8IGlzR3RrKCkpLCB2YWx1ZSA9PiBcJGlucHV0VHlwZUNvbG9yU3VwcG9ydCB9
LAogCiAgICAgeyBvcHRpb24gPT4gImlucHV0LXR5cGUtZGF0ZSIsIGRlc2MgPT4gIlRvZ2dsZSBJ
bnB1dCBUeXBlIERhdGUgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlBVVF9U
WVBFX0RBVEUiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW5wdXRUeXBlRGF0ZVN1cHBvcnQg
fSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180981</attachid>
            <date>2012-12-31 13:26:55 -0800</date>
            <delta_ts>2013-01-02 17:36:13 -0800</delta_ts>
            <desc>WebKit2 only patch</desc>
            <filename>bug-98935-20121231132404.patch</filename>
            <type>text/plain</type>
            <size>60472</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk5ZmY0MTZhZjg0MDFh
MmY3N2ZiMjM3YzdkMDE2Mzk0YTJjOGYzNy4uMmNhNGI2OWI0ZTlhZjJiNWIyOTRiOWUzOTk1MDRl
MDgwY2I1NThjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTIwICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dU
S10gQWRkIHN1cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBpbnB1dCB0eXBlIGNvbG9yIGluIGZlYXR1cmUg
bGlzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmZlYXR1cmVzLmFtLmluOgorCiAyMDEyLTEy
LTI2ICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgQWRkIENhbnZhcyBibGVuZCBtb2RlcyB0byBDYWlybwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4
IGU3MTllOGQ1OWI4OTNhN2VjYmU4ZGJjNzIyNTRhOGUwYWJjZjg2ZGUuLjY0YzY2NjhmNTBmZmY1
NzJhN2VlNjM3OWJiYTk4ODUxMTY4MmMyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAxMi0xMi0zMSAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1
bmcuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBjb2xvciBpbnB1dAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHViIGltcGxlbWVu
dGF0aW9uIG9mIENocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChDaHJvbWVDbGllbnQpOgorCiAyMDEyLTEwLTAxICBBcm5hdWQgUmVuZXZpZXIg
IDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0d0a10gdG9vIGxvbmcg
ZnVuY3Rpb24gaW4gYW5pbWF0aW9uIHNjcmlwdCBjYXVzZSByZXBhaW50IHRvIG5ldmVyIGhhcHBl
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA0OThmODcyMjk2YzVhNDMwZjU3YzUzNTRkMDBmY2MwYTVkMWM0ZDQy
Li5iOGYwZGJhN2RhZWQ0ZTBmYzJjOGM4NmNiMjgzNTJiM2EzNWE2MTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjggQEAKKzIwMTItMTItMjAgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJA
c2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY29sb3Ig
aW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
OTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IGlucHV0IGNvbG9yIHR5cGUgZm9yIFdlYktpdDIuCisKKyAgICAgICAgU2ltaWxhcmx5
IHRvIHdoYXQgaGFwcGVucyBmb3IgZmlsZSBjaG9vc2VyLCB3aGVuIGEgY29sb3IgY2hvb3NlciBp
cworICAgICAgICBuZWVkZWQsIHdlIGVtaXQgYSBydW4tY29sb3ItY2hvb3NlciBzaWduYWwgd2l0
aCBhCisgICAgICAgICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IG9iamVjdC4gSWYgdGhlIHNp
Z25hbCBpcyBub3QgaGFuZGxlZCBieSB0aGUKKyAgICAgICAgYXBwbGljYXRpb24sIHdlIHNob3cg
YSBHdGtHdGtDb2xvckNob29zZXJEaWFsb2cgKG9yCisgICAgICAgIEd0a0NvbG9yU2VsZWN0aW9u
RGlhbG9nIGZvciBHdGsgPCAzLjQuMCkuCisKKyAgICAgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCBhcGkgYWxsb3dzIHRvIHJlYWQgY3VycmVudCBjb2xvciAoZWl0aGVyCisgICAgICAgIGlu
aXRpYWwgY29sb3Igc2V0IGJ5IFdlYkNvcmUgb3IgbGF0ZXIsIGNvbG9yIHNlbGVjdGVkIGJ5IHVz
ZXIpLCB0bworICAgICAgICBzZWxlY3QgYSBjb2xvciwgb3IgdG8gY2FuY2VsIGEgcmVxdWVzdC4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZSk6CisgICAgICAgICh3ZWJraXRfY29sb3JfY2hvb3Nl
cl9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVx
dWVzdF9jYW5jZWwpOgorICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxl
Y3RfY29sb3IpOgorICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3Vy
cmVudF9jb2xvcik6CisgICAgICAgICh3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0Q3JlYXRlKToK
KyAgICAgICAgKHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RFbmQpOgorICAgICAgICAod2Vi
a2l0V2ViQ29sb3JDaG9vc2VyUmVxdWVzdFNldENvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoX1dl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3QpOgorICAgICAgICAoX1dlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3RDbGFzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViVmlld1ByaXZhdGUpOgorICAg
ICAgICAoY29sb3JDaG9vc2VyUmVxdWVzdENoYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdIaWRlQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKGNvbG9yQ2hvb3NlckRpYWxvZ1Jl
c3BvbnNlQ2FsbGJhY2spOgorICAgICAgICAod2Via2l0V2ViVmlld1J1bkNvbG9yQ2hvb3Nlcik6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3UnVuQ29sb3JDaG9vc2VyUmVxdWVzdCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3SGlk
ZUNvbG9yQ2hvb3NlclJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuaDoKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3Q2xhc3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlczoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh0ZXN0V2ViVmll
d0NvbG9yQ2hvb3NlclJlcXVlc3QpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJD
b2xvckNob29zZXJQcm94eUd0ay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlHdGs6OldlYkNvbG9yQ2hvb3NlclByb3h5
R3RrKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlHdGs6OnNldFNlbGVj
dGVkQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUd0azo6ZW5k
Q2hvb3Nlcik6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0
ay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JD
aG9vc2VyUHJveHlHdGs6OmNyZWF0ZSk6CisKIDIwMTItMTItMjEgIEVsbGlvdHQgU3ByZWhuICA8
ZXNwcmVobkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBkb2N1bWVudEZyYWdtZW50
SXNTaGFkb3dSb290IHdpdGggaXNUcmVlU2NvcGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmZlYXR1cmVzLmFtLmluIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
ZmVhdHVyZXMuYW0uaW4KaW5kZXggZGY2ZjI3NjA5ODAyZTc3NTVmNTViMDYwNjFiZjI1Nzc0OTc1
NWJmZC4uOTQxMmI5OTA3MjVjN2M1Y2ZlYzUwY2UwNzk4ZWJiNmZmM2U0MWFmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuZmVhdHVyZXMuYW0uaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuZmVhdHVyZXMuYW0uaW4KQEAgLTQwLDcgKzQwLDcgQEAgZmVh
dHVyZV9kZWZpbmVzX2RlZmF1bHRzICs9IFwKIAlFTkFCTEVfSUZSQU1FX1NFQU1MRVNTPTEgXAog
CUVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFPTAgXAogCUVOQUJMRV9JTlBVVF9TUEVFQ0g9MCBcCi0J
RU5BQkxFX0lOUFVUX1RZUEVfQ09MT1I9MCBcCisJRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1I9MSBc
CiAJRU5BQkxFX0lOUFVUX1RZUEVfREFURT0wIFwKIAlFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElN
RT0wIFwKIAlFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMPTAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXgg
MGFkM2Q5N2QxOTVjZTAzNGU1MTdjYzQzZWViNjU3ZDgzN2Q4MTBjMS4uNmE4OWY2ZDBjNGRkYjY3
MzAxODY4N2VjZmJjOTQzMDVmMTgxZTA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC03Nyw2ICs3NywxMCBAQAog
I2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKKyNpbmNsdWRlICJDb2xvckNob29zZXJDbGllbnQuaCIKKyNlbmRpZgorCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04MzYsNiAr
ODQwLDEyIEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCitQYXNzT3duUHRyPENvbG9yQ2hvb3Nlcj4gQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNo
b29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50KiwgY29uc3QgQ29sb3ImKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHZvaWQgQ2hyb21lQ2xpZW50Ojpy
dW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBwcnBGaWxlQ2hvb3Nl
cikKIHsKICAgICBHUmVmUHRyPFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdD4gcmVxdWVzdCA9IGFk
b3B0R1JlZih3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfY3JlYXRlKHBycEZpbGVDaG9vc2Vy
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5oCmluZGV4IGEwMWZkMzNjYmFlYzlhNTQ1M2QzZjY1NTI5ZjIxZTgxZGJlZDY2NWYuLjVk
NjBmMDliNjVkZDJkNjQ4MTBiMmQxMGUxNDM2OTllMTE1YmE3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0zNiw2ICsz
Niw3IEBAIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBvcHVwTWVudUNsaWVudDsKK2NsYXNzIENvbG9yOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEyMCw2ICsxMjEsMTEgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAjZW5kaWYKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNp
emUoaW50NjRfdCBzcGFjZU5lZWRlZCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCB0b3RhbFNw
YWNlTmVlZGVkKTsKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgICAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9v
c2VyQ2xpZW50KiwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvcik7CisjZW5kaWYKKwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nl
cj4pOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiwgRmlsZUljb25Mb2FkZXIqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggMTczNGJjOGI4NjU5MTA5NzE5NDkwNTAyODFhYzFmYjk4NjJlNTQwYy4uYmU0
N2Q0ZWRkZWZhNjhmZGUyNjdmYjFhOGRmNzU5ZmNkOGVlMjI2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5saXN0LmFtCkBAIC05Niw2ICs5Niw3IEBAIHdlYmtpdDJfaF9hcGkgKz0gXAogd2Via2l0
Mmd0a19oX2FwaSArPSBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNr
Rm9yd2FyZExpc3QuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNr
Rm9yd2FyZExpc3RJdGVtLmggXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvbnRleHRNZW51LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q29udGV4dE1lbnVBY3Rpb25zLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q29udGV4dE1lbnVJdGVtLmggXApAQCAtNjQwLDYgKzY0MSw5IEBAIHdlYmtpdDJfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0Zvcndh
cmRMaXN0SXRlbS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRC
YWNrRm9yd2FyZExpc3RJdGVtLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcCBcCisJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oIFwKKwlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250
ZXh0TWVudS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENv
bnRleHRNZW51LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENv
bnRleHRNZW51UHJpdmF0ZS5oIFwKQEAgLTc5MSw2ICs3OTUsOCBAQCB3ZWJraXQyX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0UHJveHkuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9y
ZUNhaXJvLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0
ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29sb3JDaG9vc2VyUHJv
eHlHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3Nl
clByb3h5R3RrLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0
ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94
eUd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQ
cm94eUd0ay5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1Bh
Z2VDbGllbnRJbXBsLmNwcAppbmRleCA5MmIzMTg4YTU4ZTZmNDYzOWE1ZWUxZjA3OTNmMGMxZjE1
ZjhjOGFhLi41ZjQyODhmY2YyMmE4YWUxMjQ4NDIyNzJjZWEyYjUxZDJhMGVhMDcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3Bw
CkBAIC00NCw2ICs0NCwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmgiCisjZW5kaWYKKwogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjI5LDEwICsyMzMs
OSBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVh
dGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcgogfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCi1QYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29s
b3ImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKK1Bhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2Vy
UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXJQcm94eShXZWJQYWdlUHJv
eHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGVsZW1lbnRSZWN0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrOjpjcmVhdGUocGFn
ZSwgbV92aWV3V2lkZ2V0LCBpbml0aWFsQ29sb3IsIGVsZW1lbnRSZWN0KTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0NzRiYWE1ZWMzOWI4OTc1
ZmVjZTI0MWJlMDgyZWNiYjEwMjFkM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcApAQCAtMCww
ICsxLDE4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmlj
cworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
bgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3QuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNp
bmNsdWRlICJXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgPGds
aWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKy8qKgorICogU0VD
VElPTjogV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAorICogQFNob3J0X2Rlc2NyaXB0aW9uOiBB
IHJlcXVlc3QgdG8gb3BlbiBhIGNvbG9yIGNob29zZXIKKyAqIEBUaXRsZTogV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdAorICogQFNlZV9hbHNvOiAjV2ViS2l0V2ViVmlldworICoKKyAqIFdoZW5l
dmVyIHRoZSB1c2VyIGludGVyYWN0cyB3aXRoIGFuICZsdDtpbnB1dCB0eXBlPSdjb2xvcicgLyZn
dDsKKyAqIEhUTUwgZWxlbWVudCwgV2ViS2l0IHdpbGwgbmVlZCB0byBzaG93IGEgZGlhbG9nIHRv
IGNob29zZSBhIGNvbG9yLiBGb3IgdGhhdAorICogdG8gaGFwcGVuIGluIGEgZ2VuZXJhbCB3YXks
IGluc3RlYWQgb2YganVzdCBvcGVuaW5nIGEgI0d0a0NvbG9yQ2hvb3NlcgorICogKHdoaWNoIG1p
Z2h0IGJlIG5vdCBkZXNpcmFibGUgaW4gc29tZSBjYXNlcywgd2hpY2ggY291bGQgcHJlZmVyIHRv
IHVzZSB0aGVpcgorICogb3duIGNvbG9yIGNob29zZXIgZGlhbG9nKSwgV2ViS2l0IHdpbGwgZmly
ZSB0aGUKKyAqICNXZWJLaXRXZWJWaWV3OjpydW4tY29sb3ItY2hvb3NlciBzaWduYWwgd2l0aCBh
ICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0CisgKiBvYmplY3QsIHdoaWNoIHdpbGwgYWxsb3cg
dGhlIGNsaWVudCBhcHBsaWNhdGlvbiB0byBzcGVjaWZ5IHRoZSBjb2xvciB0byBiZQorICogc2Vs
ZWN0ZWQsIHRvIGluc3BlY3QgdGhlIGRldGFpbHMgb2YgdGhlIHJlcXVlc3QgKGUuZy4gdG8gZ2V0
IGluaXRpYWwgY29sb3IpCisgKiBhbmQgdG8gY2FuY2VsIHRoZSByZXF1ZXN0LCBpbiBjYXNlIG5v
dGhpbmcgd2FzIHNlbGVjdGVkLgorICoKKyAqIEluIGNhc2UgdGhlIGNsaWVudCBhcHBsaWNhdGlv
biBkb2VzIG5vdCB3aXNoIHRvIGhhbmRsZSB0aGlzIHNpZ25hbCwKKyAqIFdlYktpdCB3aWxsIHBy
b3ZpZGUgYSBkZWZhdWx0IGhhbmRsZXIgd2hpY2ggd2lsbCBhc3luY2hyb25vdXNseSBydW4KKyAq
IGEgcmVndWxhciAjR3RrQ29sb3JDaG9vc2VyIGZvciB0aGUgdXNlciB0byBpbnRlcmFjdCB3aXRo
LgorICovCisKK3N0cnVjdCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUgeworI2lm
IEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGll
bnQqIGNsaWVudDsKKyNlbmRpZgorICAgIENvbG9yIGNvbG9yOworICAgIGJvb2wgaGFuZGxlZFJl
cXVlc3Q7Cit9OworCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dCwgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdCwgR19UWVBFX09CSkVDVCkKKworZW51bSB7
CisgICAgRU5EX0NIT09TRVIsCisgICAgQ0hBTkdFX0NPTE9SLAorCisgICAgTEFTVF9TSUdOQUwK
K307CisKK3N0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKKworc3Rh
dGljIHZvaWQgd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdERpc3Bvc2UoR09iamVjdCogb2JqZWN0
KQoreworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRfQ09M
T1JfQ0hPT1NFUl9SRVFVRVNUKG9iamVjdCk7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhlIHJlcXVl
c3QgaXMgYWx3YXlzIGhhbmRsZWQgYmVmb3JlIGZpbmFsaXppbmcuCisgICAgaWYgKCFyZXF1ZXN0
LT5wcml2LT5oYW5kbGVkUmVxdWVzdCkKKyAgICAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVx
dWVzdF9jYW5jZWwocmVxdWVzdCk7CisKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfY29sb3Jf
Y2hvb3Nlcl9yZXF1ZXN0X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsKK30KKworc3Rh
dGljIHZvaWQgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jbGFzc19pbml0KFdlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3RDbGFzcyogcmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RDbGFz
cyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworICAgIG9iamVj
dENsYXNzLT5kaXNwb3NlID0gd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdERpc3Bvc2U7CisKKyAg
ICAvKioKKyAgICAgKiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0OmNoYW5nZS1jb2xvcjoKKyAg
ICAgKiBAcmVxdWVzdDogdGhlICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IG9uIHdoaWNoIHRo
ZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBjb2xvcjogdGhlIG5ldyBjb2xvcgorICAgICAq
CisgICAgICogRW1pdHRlZCB3aGVuIGRlZmF1bHQgdmFsdWUgb2YgcmVxdWVzdCBpcyBjaGFuZ2Vk
LgorICAgICAqLworICAgIHNpZ25hbHNbQ0hBTkdFX0NPTE9SXSA9CisgICAgICAgIGdfc2lnbmFs
X25ldygiY2hhbmdlLWNvbG9yIiwKKyAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mo
b2JqZWN0Q2xhc3MpLAorICAgICAgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAg
ICAgICAgICAgICAgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFs
X1ZPSURfX1NUUklORywKKyAgICAgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMSwKKyAgICAgICAg
ICAgICAgICBHX1RZUEVfU1RSSU5HKTsKK30KKworLyoqCisgKiB3ZWJraXRfY29sb3JfY2hvb3Nl
cl9yZXF1ZXN0X2NhbmNlbDoKKyAqIEByZXF1ZXN0OiBhICNXZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0CisgKgorICogQXNrIFdlYktpdCB0byBjYW5jZWwgdGhlIHJlcXVlc3QuIEl0J3MgaW1wb3J0
YW50IHRvIGRvIHRoaXMgaW4gY2FzZQorICogbm8gc2VsZWN0aW9uIGhhcyBiZWVuIG1hZGUgaW4g
dGhlIGNsaWVudCwgb3RoZXJ3aXNlIHRoZSByZXF1ZXN0CisgKiB3b24ndCBiZSBwcm9wZXJseSBj
b21wbGV0ZWQgYW5kIHRoZSBicm93c2VyIHdpbGwga2VlcCB0aGUgcmVxdWVzdAorICogcGVuZGlu
ZyBmb3JldmVyLCB3aGljaCBtaWdodCBjYXVzZSB0aGUgYnJvd3NlciB0byBoYW5nLgorICovCit2
b2lkIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsKFdlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgaWYgKHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1
ZXN0KQorICAgICAgICByZXR1cm47CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAg
cmVxdWVzdC0+cHJpdi0+Y2xpZW50LT5kaWRFbmRDb2xvckNob29zZXIoKTsKKyNlbmRpZgorICAg
IHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0ID0gVFJVRTsKK30KKworLyoqCisgKiB3ZWJr
aXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvcjoKKyAqIEByZXF1ZXN0OiBhICNX
ZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QKKyAqIEBjb2xvcjogYSAjR2RrUkdCQQorICoKKyAqIEFz
ayBXZWJLaXQgdG8gc2VsZWN0IGNvbG9yIGFuZCBjb21wbGV0ZSB0aGUgcmVxdWVzdC4KKyAqLwor
dm9pZCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvcihXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBHZGtSR0JBIGNvbG9yKQoreworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVChyZXF1ZXN0KSk7
CisgICAgaWYgKHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0KQorICAgICAgICByZXR1cm47
CisKKyAgICByZXF1ZXN0LT5wcml2LT5jb2xvciA9IENvbG9yKGNvbG9yKTsKKyNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKKyAgICByZXF1ZXN0LT5wcml2LT5jbGllbnQtPmRpZENob29zZUNv
bG9yKHJlcXVlc3QtPnByaXYtPmNvbG9yKTsKKyAgICByZXF1ZXN0LT5wcml2LT5jbGllbnQtPmRp
ZEVuZENvbG9yQ2hvb3NlcigpOworI2VuZGlmCisgICAgcmVxdWVzdC0+cHJpdi0+aGFuZGxlZFJl
cXVlc3QgPSBUUlVFOworfQorCisvKioKKyAqIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rf
Z2V0X2N1cnJlbnRfY29sb3I6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdAorICoKKyAqIFJldHVybnM6IHRoZSBjdXJyZW50IGNvbG9yIG9mIHJlcXVlc3QuIFdoaWxl
IG5vIGNvbG9yIGhhcyBiZWVuIHNlbGVjdGVkLCBpdAorICogaXMgdGhlIGluaXRpYWwgdmFsdWUg
ZGVmaW5lZCBieSBXZWJLaXQuIFdoZW4gYSBjb2xvciBoYXMgYmVlbiBzZWxlY3RlZCwgdGhpcwor
ICogYmVjb21lcyB0aGUgc2VsZWN0ZWQgdmFsdWUuCisgKi8KK0dka1JHQkEgd2Via2l0X2NvbG9y
X2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcihXZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19DT0xP
Ul9DSE9PU0VSX1JFUVVFU1QocmVxdWVzdCksICgoY29uc3QgR2RrUkdCQSl7MC4wLCAwLjAsIDAu
MCwgMC4wfSkpOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdka1JHQkE+KHJlcXVlc3QtPnBy
aXYtPmNvbG9yKTsKK30KKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdCogd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdENyZWF0ZShjb25zdCBD
b2xvciBpbml0aWFsQ29sb3IsIFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQqIGNsaWVudCkK
K3sKKyAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX0NPTE9S
X0NIT09TRVJfUkVRVUVTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9S
RVFVRVNULCBOVUxMKSk7CisgICAgcmVxdWVzdC0+cHJpdi0+Y2xpZW50ID0gY2xpZW50OworICAg
IHJlcXVlc3QtPnByaXYtPmNvbG9yID0gaW5pdGlhbENvbG9yOworICAgIHJlcXVlc3QtPnByaXYt
PmhhbmRsZWRSZXF1ZXN0ID0gRkFMU0U7CisgICAgcmV0dXJuIHJlcXVlc3Q7Cit9CisKK3ZvaWQg
d2Via2l0V2ViQ29sb3JDaG9vc2VyUmVxdWVzdEVuZChXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0NPTE9SX0NIT09T
RVJfUkVRVUVTVChyZXF1ZXN0KSk7CisKKyAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0
X2NhbmNlbChyZXF1ZXN0KTsKKyAgICBnX3NpZ25hbF9lbWl0KHJlcXVlc3QsIHNpZ25hbHNbRU5E
X0NIT09TRVJdLCAwLCBOVUxMKTsKK30KKwordm9pZCB3ZWJraXRXZWJDb2xvckNob29zZXJSZXF1
ZXN0U2V0Q29sb3IoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgQ29s
b3IgY29sb3IpCit7CisgICAgcmVxdWVzdC0+cHJpdi0+Y29sb3IgPSBjb2xvcjsKKyAgICBnX3Np
Z25hbF9lbWl0KHJlcXVlc3QsIHNpZ25hbHNbQ0hBTkdFX0NPTE9SXSwgMCwgcmVxdWVzdC0+cHJp
di0+Y29sb3Iuc2VyaWFsaXplZCgpLmFzY2lpKCkuZGF0YSgpLCBOVUxMKTsKK30KKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyNTc1NWViODA1OThmODc1ZTBjMWY5
MWM0OTdhOGY1NDlhZTI5MTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgKQEAgLTAsMCArMSw3NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQo
V0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNh
biBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0X2gKKyNkZWZpbmUgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdF9oCisKKyNp
bmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisK
K0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVF
U1QgICAgICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlwZSgpKQor
I2RlZmluZSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iaikgICAgICAgICAgICAoR19U
WVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJf
UkVRVUVTVCwgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCkpCisjZGVmaW5lIFdFQktJVF9DT0xP
Ul9DSE9PU0VSX1JFUVVFU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FT
VCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNULCBXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9S
RVFVRVNUKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdF
QktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9JU19DT0xP
Ul9DSE9PU0VSX1JFUVVFU1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgo
a2xhc3MpLCAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKSkKKyNkZWZpbmUgV0VC
S0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5D
RV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QsIFdl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0ICAgICAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0OwordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcyAgIFdlYktpdENvbG9y
Q2hvb3NlclJlcXVlc3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0UHJpdmF0ZSBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZTsKKworc3RydWN0
IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKworICAg
IC8qPCBwcml2YXRlID4qLworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlICpw
cml2OworfTsKKworc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MgeworICAg
IEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJr
aXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF90eXBlICAgICAgICAgICAodm9pZCk7CisKK1dF
QktJVF9BUEkgR2RrUkdCQQord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVu
dF9jb2xvciAgKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgKnJlcXVlc3QpOworCitXRUJLSVRf
QVBJIHZvaWQKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yICAgICAg
IChXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICpyZXF1ZXN0LCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHZGtSR0JBIGNvbG9yKTsKKwor
V0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbCAgICAg
ICAgICAgICAoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCAqcmVxdWVzdCk7CisKK0dfRU5EX0RF
Q0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2E5YTRhMjVkZWFjODUzYTUxYzRlOGU1MjY3MzQ5MTRlNjRhMWRjOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3RQcml2YXRlLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJ
UyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0UHJpdmF0ZV9oCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIldlYkNv
bG9yQ2hvb3NlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5o
IgorI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQorCitXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiB3ZWJraXRDb2xvckNob29zZXJSZXF1
ZXN0Q3JlYXRlKGNvbnN0IFdlYkNvcmU6OkNvbG9yLCBXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclBy
b3h5OjpDbGllbnQqKTsKK3ZvaWQgd2Via2l0V2ViQ29sb3JDaG9vc2VyUmVxdWVzdEVuZChXZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0Kik7Cit2b2lkIHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVl
c3RTZXRDb2xvcihXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiwgY29uc3QgV2ViQ29yZTo6Q29s
b3IpOworCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisKKyNlbmRpZiAvLyBX
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDJhODMxMjlmNmY0NDA5
MmYwZTc2YjMxZWNkZjMwYmFkM2JmMDgwZDUuLjNlZjU4YWY2MDkxYTE4MDBmN2JhMWFjZTVlNjc3
NTNjODhkMzY2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuY3BwCkBAIC0xMDcsNiArMTA3LDkgQEAgZW51bSB7CiAKICAgICBSVU5f
RklMRV9DSE9PU0VSLAogCisgICAgUlVOX0NPTE9SX0NIT09TRVIsCisgICAgSElERV9DT0xPUl9D
SE9PU0VSLAorCiAgICAgQ09OVEVYVF9NRU5VLAogICAgIENPTlRFWFRfTUVOVV9ESVNNSVNTRUQs
CiAKQEAgLTE3Niw2ICsxNzksOSBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAg
ICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gZmF2aWNvbkNhbmNlbGxhYmxlOwogICAgIENTdHJpbmcg
ZmF2aWNvblVSSTsKICAgICB1bnNpZ25lZCBsb25nIGZhdmljb25DaGFuZ2VkSGFuZGxlcklEOwor
CisgICAgR1JlZlB0cjxHdGtXaWRnZXQ+IGNvbG9yQ2hvb3NlckRpYWxvZzsKKyAgICBHUmVmUHRy
PFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Q+IGNvbG9yQ2hvb3NlclJlcXVlc3Q7CiB9OwogCiBz
dGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CkBAIC00MTQsNiArNDIw
LDY0IEBAIHN0YXRpYyB2b2lkIGZpbGVDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFjayhHdGtE
aWFsb2cqIGRpYWxvZywgZ2ludCByZXNwb25zZUlECiAgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdU
S19XSURHRVQoZGlhbG9nKSk7CiB9CiAKK3N0YXRpYyB2b2lkIGNvbG9yQ2hvb3NlclJlcXVlc3RD
aGFuZ2VDYWxsYmFjayhXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBn
Y2hhciogY29sb3IsIEd0a1dpZGdldCogZGlhbG9nKQoreworICAgIEdka1JHQkEgcmdiOworICAg
IGdka19yZ2JhX3BhcnNlKCZyZ2IsIGNvbG9yKTsKKyAgICBndGtfY29sb3JfY2hvb3Nlcl9zZXRf
cmdiYShHVEtfQ09MT1JfQ0hPT1NFUihkaWFsb2cpLCAmcmdiKTsKK30KKworc3RhdGljIGdib29s
ZWFuIHdlYmtpdFdlYlZpZXdIaWRlQ29sb3JDaG9vc2VyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgQVNTRVJUKHdlYlZp
ZXctPnByaXYtPmNvbG9yQ2hvb3NlclJlcXVlc3QuZ2V0KCkgPT0gcmVxdWVzdCk7CisKKyAgICBp
ZiAod2ViVmlldy0+cHJpdi0+Y29sb3JDaG9vc2VyUmVxdWVzdCkgeworICAgICAgICAvLyBub29w
IGlmIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yIGhhcyBiZWVuIGNh
bGxlZCBiZWZvcmUKKyAgICAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwo
d2ViVmlldy0+cHJpdi0+Y29sb3JDaG9vc2VyUmVxdWVzdC5nZXQoKSk7CisgICAgICAgIHdlYlZp
ZXctPnByaXYtPmNvbG9yQ2hvb3NlclJlcXVlc3QuY2xlYXIoKTsKKyAgICB9CisgICAgaWYgKHdl
YlZpZXctPnByaXYtPmNvbG9yQ2hvb3NlckRpYWxvZykgeworICAgICAgICBndGtfd2lkZ2V0X2Rl
c3Ryb3kod2ViVmlldy0+cHJpdi0+Y29sb3JDaG9vc2VyRGlhbG9nLmdldCgpKTsKKyAgICAgICAg
d2ViVmlldy0+cHJpdi0+Y29sb3JDaG9vc2VyRGlhbG9nLmNsZWFyKCk7CisgICAgfQorICAgIHJl
dHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZCBjb2xvckNob29zZXJEaWFsb2dSZXNwb25zZUNh
bGxiYWNrKEd0a1dpZGdldCogZGlhbG9nLCBnaW50IHJlc3BvbnNlSUQsIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCit7CisgICAgR1JlZlB0cjxXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PiByZWZl
ZFJlcXVlc3QgPSB3ZWJWaWV3LT5wcml2LT5jb2xvckNob29zZXJSZXF1ZXN0OworICAgIGlmIChy
ZXNwb25zZUlEID09IEdUS19SRVNQT05TRV9PSykgeworICAgICAgICBHT3duUHRyPGNoYXI+IHN0
cmluZ1ZhbHVlOworICAgICAgICBHZGtSR0JBIGNvbG9yOworICAgICAgICBndGtfY29sb3JfY2hv
b3Nlcl9nZXRfcmdiYShHVEtfQ09MT1JfQ0hPT1NFUihkaWFsb2cpLCAmY29sb3IpOworICAgICAg
ICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvcihyZWZlZFJlcXVlc3Qu
Z2V0KCksIGNvbG9yKTsKKyAgICB9CisKKyAgICB3ZWJraXRXZWJWaWV3SGlkZUNvbG9yQ2hvb3Nl
cih3ZWJWaWV3LCByZWZlZFJlcXVlc3QuZ2V0KCkpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0V2ViVmlld1J1bkNvbG9yQ2hvb3NlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGlmICh3ZWJWaWV3LT5wcml2LT5j
b2xvckNob29zZXJSZXF1ZXN0KQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgR3RrV2lkZ2V0
KiB0b3BsZXZlbCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQod2ViVmlldykp
OworICAgIGlmICghIXdpZGdldElzT25zY3JlZW5Ub3BsZXZlbFdpbmRvdyh0b3BsZXZlbCkpCisg
ICAgICAgIHRvcGxldmVsID0gMDsKKyAgICBHdGtXaWRnZXQqIGRpYWxvZyA9ICBndGtfY29sb3Jf
Y2hvb3Nlcl9kaWFsb2dfbmV3KF8oIlNlbGVjdCBDb2xvciIpLCBHVEtfV0lORE9XKHRvcGxldmVs
KSk7CisKKyAgICBjb25zdCBHZGtSR0JBIHJnYiA9IHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVl
c3RfZ2V0X2N1cnJlbnRfY29sb3IocmVxdWVzdCk7CisgICAgZ3RrX2NvbG9yX2Nob29zZXJfc2V0
X3JnYmEoR1RLX0NPTE9SX0NIT09TRVIoZGlhbG9nKSwgJnJnYik7CisKKyAgICBnX3NpZ25hbF9j
b25uZWN0KHJlcXVlc3QsICJjaGFuZ2UtY29sb3IiLCBHX0NBTExCQUNLKGNvbG9yQ2hvb3NlclJl
cXVlc3RDaGFuZ2VDYWxsYmFjayksIGRpYWxvZyk7CisgICAgZ19zaWduYWxfY29ubmVjdChkaWFs
b2csICJyZXNwb25zZSIsIEdfQ0FMTEJBQ0soY29sb3JDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxs
YmFjayksIHdlYlZpZXcpOworICAgIGd0a193aWRnZXRfc2hvdyhkaWFsb2cpOworCisgICAgd2Vi
Vmlldy0+cHJpdi0+Y29sb3JDaG9vc2VyRGlhbG9nID0gZGlhbG9nOworICAgIHdlYlZpZXctPnBy
aXYtPmNvbG9yQ2hvb3NlclJlcXVlc3QgPSByZXF1ZXN0OworCisgICAgcmV0dXJuIFRSVUU7Cit9
CisKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXIoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQogewogICAg
IEd0a1dpZGdldCogdG9wbGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VU
KHdlYlZpZXcpKTsKQEAgLTU1OCw2ICs2MjIsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICB3ZWJW
aWV3Q2xhc3MtPmRlY2lkZV9wb2xpY3kgPSB3ZWJraXRXZWJWaWV3RGVjaWRlUG9saWN5OwogICAg
IHdlYlZpZXdDbGFzcy0+cGVybWlzc2lvbl9yZXF1ZXN0ID0gd2Via2l0V2ViVmlld1Blcm1pc3Np
b25SZXF1ZXN0OwogICAgIHdlYlZpZXdDbGFzcy0+cnVuX2ZpbGVfY2hvb3NlciA9IHdlYmtpdFdl
YlZpZXdSdW5GaWxlQ2hvb3NlcjsKKyAgICB3ZWJWaWV3Q2xhc3MtPnJ1bl9jb2xvcl9jaG9vc2Vy
ID0gd2Via2l0V2ViVmlld1J1bkNvbG9yQ2hvb3NlcjsKKyAgICB3ZWJWaWV3Q2xhc3MtPmhpZGVf
Y29sb3JfY2hvb3NlciA9IHdlYmtpdFdlYlZpZXdIaWRlQ29sb3JDaG9vc2VyOwogCiAgICAgLyoq
CiAgICAgICogV2ViS2l0V2ViVmlldzp3ZWItY29udGV4dDoKQEAgLTExNDksNiArMTIxNSw1OCBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xh
c3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAx
LCAvKiBudW1iZXIgb2YgcGFyYW1ldGVycyAqLwogICAgICAgICAgICAgICAgICAgICAgV0VCS0lU
X1RZUEVfRklMRV9DSE9PU0VSX1JFUVVFU1QpOwogCisgICAgIC8qKgorICAgICAqIFdlYktpdFdl
YlZpZXc6OnJ1bi1jb2xvci1jaG9vc2VyOgorICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRX
ZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEByZXF1ZXN0OiBh
ICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0CisgICAgICoKKyAgICAgKiBUaGlzIHNpZ25hbCBp
cyBlbWl0dGVkIHdoZW4gdGhlIHVzZXIgaW50ZXJhY3RzIHdpdGggYSAmbHQ7aW5wdXQKKyAgICAg
KiB0eXBlPSdjb2xvcicgLyZndDsgSFRNTCBlbGVtZW50LCByZXF1ZXN0aW5nIGZyb20gV2ViS2l0
IHRvIHNob3cKKyAgICAgKiBhIGRpYWxvZyB0byBzZWxlY3QgYSBjb2xvci4gVG8gbGV0IHRoZSBh
cHBsaWNhdGlvbiBrbm93IHRoZSBkZXRhaWxzIG9mCisgICAgICogdGhlIGNvbG9yIGNob29zZXIs
IGFzIHdlbGwgYXMgdG8gYWxsb3cgdGhlIGNsaWVudCBhcHBsaWNhdGlvbiB0byBlaXRoZXIKKyAg
ICAgKiBjYW5jZWwgdGhlIHJlcXVlc3Qgb3IgcGVyZm9ybSBhbiBhY3R1YWwgY29sb3Igc2VsZWN0
aW9uLCB0aGUgc2lnbmFsIHdpbGwKKyAgICAgKiBwYXNzIGFuIGluc3RhbmNlIG9mIHRoZSAjV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdCBpbiB0aGUgQHJlcXVlc3QKKyAgICAgKiBhcmd1bWVudC4K
KyAgICAgKgorICAgICAqIFRoZSBkZWZhdWx0IHNpZ25hbCBoYW5kbGVyIHdpbGwgYXN5bmNocm9u
b3VzbHkgcnVuIGEgcmVndWxhcgorICAgICAqICNHdGtDb2xvckNob29zZXIgZm9yIHRoZSB1c2Vy
IHRvIGludGVyYWN0IHdpdGguCisgICAgICoKKyAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBzdG9w
IG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50LgorICAgICAq
ICAgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4KKyAgICAgKgorICAgICAq
LworICAgIHNpZ25hbHNbUlVOX0NPTE9SX0NIT09TRVJdID0KKyAgICAgICAgZ19zaWduYWxfbmV3
KCJydW4tY29sb3ItY2hvb3NlciIsCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9D
TEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xB
U1QsCisgICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0Ns
YXNzLCBydW5fY29sb3JfY2hvb3NlciksCisgICAgICAgICAgICAgICAgICAgICBnX3NpZ25hbF9h
Y2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIDAgLyogYWNjdW11bGF0b3IgZGF0YSAqLywKKyAgICAg
ICAgICAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVCwKKyAgICAgICAg
ICAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAxLCAvKiBudW1iZXIgb2YgcGFyYW1ldGVycyAq
LworICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNU
KTsKKworICAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OjpoaWRlLWNvbG9yLWNob29zZXI6
CisgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25h
bCBpcyBlbWl0dGVkCisgICAgICogQHJlcXVlc3Q6IGEgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3QKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiBjb2xvciBwaWNrZXIgbXVzdCBiZSBoaWRk
ZW4uIFRoaXMgaGFwcGVucyBmb3IgZXhhbXBsZSBpZiB0aGUKKyAgICAgKiBwYWdlIHRyaWdnZXJp
bmcgdGhlIHJlcXVlc3QgdW5sb2FkcyBiZWZvcmUgdGhlIHJlcXVlc3QgaXMgY29tcGxldGVkLgor
ICAgICAqCisgICAgICogUmV0dXJuczogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9t
IGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4KKyAgICAgKiAgICVGQUxTRSB0byBwcm9wYWdh
dGUgdGhlIGV2ZW50IGZ1cnRoZXIuCisgICAgICoKKyAgICAgKi8KKyAgICBzaWduYWxzW0hJREVf
Q09MT1JfQ0hPT1NFUl0gPQorICAgICAgICBnX3NpZ25hbF9uZXcoImhpZGUtY29sb3ItY2hvb3Nl
ciIsCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3Mp
LAorICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAg
ICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBoaWRlX2NvbG9yX2No
b29zZXIpLAorICAgICAgICAgICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9o
YW5kbGVkLCAwIC8qIGFjY3VtdWxhdG9yIGRhdGEgKi8sCisgICAgICAgICAgICAgICAgICAgICB3
ZWJraXRfbWFyc2hhbF9CT09MRUFOX19PQkpFQ1QsCisgICAgICAgICAgICAgICAgICAgICBHX1RZ
UEVfQk9PTEVBTiwgMSwgLyogbnVtYmVyIG9mIHBhcmFtZXRlcnMgKi8KKyAgICAgICAgICAgICAg
ICAgICAgIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCk7CisKICAgICAvKioKICAg
ICAgKiBXZWJLaXRXZWJWaWV3Ojpjb250ZXh0LW1lbnU6CiAgICAgICogQHdlYl92aWV3OiB0aGUg
I1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCkBAIC0xNTgwLDYg
KzE2OTgsMjAgQEAgdm9pZCB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXJSZXF1ZXN0KFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdEZpbGVDaG9vc2UKICAgICBnX3NpZ25hbF9lbWl0KHdl
YlZpZXcsIHNpZ25hbHNbUlVOX0ZJTEVfQ0hPT1NFUl0sIDAsIHJlcXVlc3QsICZyZXR1cm5WYWx1
ZSk7CiB9CiAKK2Jvb2wgd2Via2l0V2ViVmlld1J1bkNvbG9yQ2hvb3NlclJlcXVlc3QoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKK3sK
KyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNp
Z25hbHNbUlVOX0NPTE9SX0NIT09TRVJdLCAwLCByZXF1ZXN0LCAmcmV0dXJuVmFsdWUpOworICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKK30KKworYm9vbCB3ZWJraXRXZWJWaWV3SGlkZUNvbG9yQ2hv
b3NlclJlcXVlc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCogcmVxdWVzdCkKK3sKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25h
bF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbSElERV9DT0xPUl9DSE9PU0VSXSwgMCwgcmVxdWVzdCwg
JnJldHVyblZhbHVlKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKIHN0YXRpYyBib29s
IHdlYmtpdFdlYlZpZXdTaG91bGRTaG93SW5wdXRNZXRob2RzTWVudShXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQogewogICAgIEd0a1NldHRpbmdzKiBzZXR0aW5ncyA9IGd0a193aWRnZXRfZ2V0X3Nl
dHRpbmdzKEdUS19XSURHRVQod2ViVmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGZkYmM2NjZlZmM4ZTY3Y2FmZDYyMTUw
NTdkNmZiZWQzYzUwN2Q1MGIuLmU2YmE0ODAwMTAzYTBkNWM3ZjcxMDRhMTI5N2RkMjkwODRhMWVl
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2Uu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oPgogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RmlsZUNob29zZXJSZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGaW5kQ29udHJvbGxlci5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0Lmg+CkBAIC0xODgsNiArMTg5
LDEwIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAgICBnYm9vbGVhbiAgICgqIGxl
YXZlX2Z1bGxzY3JlZW4pICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndl
Yl92aWV3KTsKICAgICBnYm9vbGVhbiAgICgqIHJ1bl9maWxlX2Nob29zZXIpICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdCAgICAq
cmVxdWVzdCk7CisgICAgZ2Jvb2xlYW4gICAoKiBydW5fY29sb3JfY2hvb3NlcikgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICAg
ICpyZXF1ZXN0KTsKKyAgICBnYm9vbGVhbiAgICgqIGhpZGVfY29sb3JfY2hvb3NlcikgICAgICAg
IChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Qg
ICAgKnJlcXVlc3QpOwogICAgIGdib29sZWFuICAgKCogY29udGV4dF9tZW51KSAgICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29udGV4dE1lbnUgICAgICAg
ICAgICpjb250ZXh0X21lbnUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2RrRXZlbnQgICAgICAgICAgICAgICAgICAgICpldmVudCwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
CmluZGV4IGU5ZmEzY2FiMjM0YTExOTIzOTUxNTY2MmZlOWZjZTA4MGUyZWM5NTkuLmZjNGViZWMz
NTMyYjkzYzNlZDg1YTA1MDJjMjk4N2I4MDA5YzU0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtNDks
NiArNDksOCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdNb3VzZVRhcmdldENoYW5nZWQoV2ViS2l0V2Vi
VmlldyosIFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdCosCiB2b2lkIHdlYmtpdFdlYlZpZXdQcmlu
dEZyYW1lKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqKTsKIHZvaWQgd2Vi
a2l0V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6V2Vi
RnJhbWVQcm94eSosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV2ViS2l0VVJJUmVxdWVz
dCopOwogdm9pZCB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXJSZXF1ZXN0KFdlYktpdFdlYlZp
ZXcqLCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QqKTsKK2Jvb2wgd2Via2l0V2ViVmlld1J1bkNv
bG9yQ2hvb3NlclJlcXVlc3QoV2ViS2l0V2ViVmlldyosIFdlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3QqKTsKK2Jvb2wgd2Via2l0V2ViVmlld0hpZGVDb2xvckNob29zZXJSZXF1ZXN0KFdlYktpdFdl
YlZpZXcqLCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Kik7CiBXZWJLaXRXZWJSZXNvdXJjZSog
d2Via2l0V2ViVmlld0dldExvYWRpbmdXZWJSZXNvdXJjZShXZWJLaXRXZWJWaWV3KiwgdWludDY0
X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKIHZvaWQgd2Via2l0V2ViVmlld1JlbW92ZUxvYWRpbmdX
ZWJSZXNvdXJjZShXZWJLaXRXZWJWaWV3KiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsK
IFdlYktpdFdlYlJlc291cmNlKiB3ZWJraXRXZWJWaWV3UmVzb3VyY2VMb2FkRmluaXNoZWQoV2Vi
S2l0V2ViVmlldyosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21s
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Mu
c2dtbAppbmRleCA2ZTk3Mjg0NjdhNzRjM2RhZjVkYTZkY2IwZmFmNzhhNGE4OTdmYzk0Li5lODQ4
ZTJkNTczY2ZlZWU4MTVmZGFmY2ZkMDVjZDhiNDQ1OWE0YTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNn
bWwKQEAgLTMwLDYgKzMwLDcgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0V2Vi
UmVzb3VyY2UueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEVycm9yLnht
bCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRGYXZpY29uRGF0YWJhc2UueG1s
Ii8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Qu
eG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVz
dC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0RmluZENvbnRyb2xsZXIu
eG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdENvb2tpZU1hbmFnZXIueG1s
Ii8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCBjZjNhNjE2M2I4MTJjOTViYzBiYmRh
YmY5N2FmNzhjMDgyYmYwZTAxLi5kNGM3N2RlYzc2Mjk4ZDJjMTg0MmI4OTU2MzkyZjM5MjZjZGQw
ZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTY2Niw2ICs2NjYsMjcgQEAgd2Vi
a2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2dldF90eXBlCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9O
PgorPEZJTEU+V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdDwvRklMRT4KK1dlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3QKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29s
b3IKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yCit3ZWJraXRfY29s
b3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbAorCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcworV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFV
RVNUCitXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUCitXRUJLSVRfSVNfQ09MT1JfQ0hPT1NF
Ul9SRVFVRVNUCitXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUX0NMQVNTCitXRUJLSVRfSVNf
Q09MT1JfQ0hPT1NFUl9SRVFVRVNUX0NMQVNTCitXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNU
X0dFVF9DTEFTUworCis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdFByaXZhdGUKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X3R5cGUKKzwvU0VD
VElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRGaW5kQ29udHJvbGxlcjwvRklMRT4KIFdl
YktpdEZpbmRDb250cm9sbGVyCiBXZWJLaXRGaW5kT3B0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCmluZGV4IDRk
ODg0M2U5YzFkOGM2ZjQ0YTcwYzExNGMyNTk0YjI2YTRiZmRjNmUuLmViNWIzOTRiZjUyZWY5YTM3
YjBkYjM0Mzc5MDI5ZDZkZjYwZDI4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcworKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKQEAgLTIxLDMgKzIxLDQgQEAg
d2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0X3R5cGUKIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3Rf
Z2V0X3R5cGUKIHdlYmtpdF9jb250ZXh0X21lbnVfZ2V0X3R5cGUKIHdlYmtpdF9jb250ZXh0X21l
bnVfaXRlbV9nZXRfdHlwZQord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlwZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdl
YktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IGVhNWU0MDQwMDhmOGJlMzI3MjllMTJkY2E2ZDU2
ZDM2MmRkOTFhNjguLmNhZWNkODdhMmMyZWFkMGY5NTNlMzNiNzI2ZTliM2FjNDc4YzRhYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJL
aXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTc5Niw2ICs3OTYsNzAgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QoRmlsZUNob29zZXJUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogICAgIHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwoZmlsZUNo
b29zZXJSZXF1ZXN0KTsKIH0KIAorY2xhc3MgQ29sb3JDaG9vc2VyVGVzdDogcHVibGljIFVJQ2xp
ZW50VGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShDb2xvckNob29z
ZXJUZXN0KTsKKyAgICBDb2xvckNob29zZXJUZXN0KCkKKyAgICB7CisgICAgICAgIGdfc2lnbmFs
X2Nvbm5lY3QobV93ZWJWaWV3LCAicnVuLWNvbG9yLWNob29zZXIiLCBHX0NBTExCQUNLKHJ1bkNv
bG9yQ2hvb3NlckNhbGxiYWNrKSwgdGhpcyk7CisgICAgfQorCisgICAgc3RhdGljIGdib29sZWFu
IHJ1bkNvbG9yQ2hvb3NlckNhbGxiYWNrKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0KiByZXF1ZXN0LCBDb2xvckNob29zZXJUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAg
ICAgdGVzdC0+cnVuQ29sb3JDaG9vc2VyKHJlcXVlc3QpOworICAgICAgICByZXR1cm4gVFJVRTsK
KyAgICB9CisKKyAgICB2b2lkIHJ1bkNvbG9yQ2hvb3NlcihXZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0KiByZXF1ZXN0KQorICAgIHsKKyAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRl
c3RGaW5pc2hlcyhHX09CSkVDVChyZXF1ZXN0KSk7CisgICAgICAgIG1fY29sb3JDaG9vc2VyUmVx
dWVzdCA9IHJlcXVlc3Q7CisgICAgICAgIGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcCk7Cisg
ICAgfQorCisgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogY2xpY2tNb3VzZUJ1dHRvbkFu
ZFdhaXRGb3JDb2xvckNob29zZXJSZXF1ZXN0KGludCB4LCBpbnQgeSkKKyAgICB7CisgICAgICAg
IGNsaWNrTW91c2VCdXR0b24oeCwgeSk7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5M
b29wKTsKKyAgICAgICAgcmV0dXJuIG1fY29sb3JDaG9vc2VyUmVxdWVzdC5nZXQoKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgR1JlZlB0cjxXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PiBtX2Nv
bG9yQ2hvb3NlclJlcXVlc3Q7Cit9OworCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NvbG9yQ2hv
b3NlclJlcXVlc3QoQ29sb3JDaG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAg
ICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKyAgICBzdGF0aWMgY29u
c3QgY2hhciogY29sb3JDaG9vc2VySFRNTCA9ICI8aHRtbD48Ym9keT48aW5wdXQgc3R5bGU9J3Bv
c2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDttYXJnaW46MDtwYWRkaW5nOjAnIHR5cGU9J2Nv
bG9yJyB2YWx1ZT0nI2ZmMDAwMCcvPjwvYm9keT48L2h0bWw+IjsKKyAgICB0ZXN0LT5sb2FkSHRt
bChjb2xvckNob29zZXJIVE1MLCAwKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQo
KTsKKyAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiBjb2xvckNob29zZXJSZXF1ZXN0ID0g
dGVzdC0+Y2xpY2tNb3VzZUJ1dHRvbkFuZFdhaXRGb3JDb2xvckNob29zZXJSZXF1ZXN0KDUsIDUp
OworICAgIEdka1JHQkEgY29sb3IgPSB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9j
dXJyZW50X2NvbG9yKGNvbG9yQ2hvb3NlclJlcXVlc3QpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0
KGNvbG9yLnJlZCwgPT0sIDEuMCk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQoY29sb3IuZ3JlZW4s
ID09LCAwLjApOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLmJsdWUsID09LCAwLjApOwor
ICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLmFscGhhLCA9PSwgMS4wKTsKKworICAgIHRlc3Qt
PnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignaW5wdXQnKS52YWx1ZSA9ICcjMDBmZjAwJzsiLCAwKTsKKyAgICBjb2xvciA9IHdlYmtpdF9j
b2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IoY29sb3JDaG9vc2VyUmVxdWVz
dCk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQoY29sb3IucmVkLCA9PSwgMC4wKTsKKyAgICBnX2Fz
c2VydF9jbXBmbG9hdChjb2xvci5ncmVlbiwgPT0sIDEuMCk7CisgICAgZ19hc3NlcnRfY21wZmxv
YXQoY29sb3IuYmx1ZSwgPT0sIDAuMCk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQoY29sb3IuYWxw
aGEsID09LCAxLjApOworCisgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3Rf
Y29sb3IoY29sb3JDaG9vc2VyUmVxdWVzdCwgKEdka1JHQkEpezAuMCwgMC4wLCAxLjAsIDEuMH0p
OworICAgIGNvbG9yID0gd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9j
b2xvcihjb2xvckNob29zZXJSZXF1ZXN0KTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChjb2xvci5y
ZWQsID09LCAwLjApOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLmdyZWVuLCA9PSwgMC4w
KTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChjb2xvci5ibHVlLCA9PSwgMS4wKTsKKyAgICBnX2Fz
c2VydF9jbXBmbG9hdChjb2xvci5hbHBoYSwgPT0sIDEuMCk7CisKKyAgICBXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRV
bnRpbEZpbmlzaGVkKCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLnZhbHVlOyIsIDAp
OworICAgIEdPd25QdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRS
ZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih2
YWx1ZVN0cmluZy5nZXQoKSwgPT0sICIjMDAwMGZmIik7Cit9CisKIGNsYXNzIEZ1bGxTY3JlZW5D
bGllbnRUZXN0OiBwdWJsaWMgV2ViVmlld1Rlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9U
RVNUX0ZJWFRVUkUoRnVsbFNjcmVlbkNsaWVudFRlc3QpOwpAQCAtMTA4Myw2ICsxMTQ3LDcgQEAg
dm9pZCBiZWZvcmVBbGwoKQogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAi
Y2FuLXNob3ctbWltZS10eXBlIiwgdGVzdFdlYlZpZXdDYW5TaG93TUlNRVR5cGUpOwogICAgIEZv
cm1DbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAic3VibWl0LWZvcm0iLCB0ZXN0V2Vi
Vmlld1N1Ym1pdEZvcm0pOwogICAgIFNhdmVXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3
IiwgInNhdmUiLCB0ZXN0V2ViVmlld1NhdmUpOworICAgIENvbG9yQ2hvb3NlclRlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJjb2xvci1jaG9vc2VyLXJlcXVlc3QiLCB0ZXN0V2ViVmlld0NvbG9y
Q2hvb3NlclJlcXVlc3QpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCAxYjRmYTg2YTFlYzQzNDlmYWRmMDM3M2E0
NzdlOGViNmNhYzVkOTIyLi4wM2QzZDY0Nzg1YTgzNzFlYjBkYjJkZWQyZjkzYTM0MTg1NDM4OTFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRFbnVtVHlwZXMuaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdEVycm9yLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGYXZpY29u
RGF0YWJhc2UuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Qu
aD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0RmluZENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
OTY1NThjY2JlZGEyZDgzYTc5ZGNhYWE1NjRlZWE1NGU0ZTZiZWVmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5j
cHAKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBF
bGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgor
ICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5R3Rr
LmgiCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3RQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb2xvckNo
b29zZXJQcm94eUd0azo6V2ViQ29sb3JDaG9vc2VyUHJveHlHdGsoV2ViQ29sb3JDaG9vc2VyUHJv
eHk6OkNsaWVudCogY2xpZW50LCBHdGtXaWRnZXQqIHdlYlZpZXcsIGNvbnN0IENvbG9yJiBpbml0
aWFsQ29sb3IsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0KQorICAgIDogV2ViQ29sb3JDaG9v
c2VyUHJveHkoY2xpZW50KQorICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCit7CisgICAgbV9yZXF1
ZXN0ID0gYWRvcHRHUmVmKEdfT0JKRUNUKHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RDcmVhdGUo
aW5pdGlhbENvbG9yLCBtX2NsaWVudCkpKTsKKyAgICBpZiAoIXdlYmtpdFdlYlZpZXdSdW5Db2xv
ckNob29zZXJSZXF1ZXN0KFdFQktJVF9XRUJfVklFVyhtX3dlYlZpZXcuZ2V0KCkpLCBXRUJLSVRf
Q09MT1JfQ0hPT1NFUl9SRVFVRVNUKG1fcmVxdWVzdC5nZXQoKSkpKQorICAgICAgICB3ZWJraXRf
Y29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbChXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNU
KG1fcmVxdWVzdC5nZXQoKSkpOworfQorCit2b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrOjpz
ZXRTZWxlY3RlZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICB3ZWJraXRXZWJDb2xv
ckNob29zZXJSZXF1ZXN0U2V0Q29sb3IoV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVChtX3Jl
cXVlc3QuZ2V0KCkpLCBjb2xvcik7Cit9CisKK3ZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHlHdGs6
OmVuZENob29zZXIoKQoreworICAgIGlmICghd2Via2l0V2ViVmlld0hpZGVDb2xvckNob29zZXJS
ZXF1ZXN0KFdFQktJVF9XRUJfVklFVyhtX3dlYlZpZXcuZ2V0KCkpLCBXRUJLSVRfQ09MT1JfQ0hP
T1NFUl9SRVFVRVNUKG1fcmVxdWVzdC5nZXQoKSkpKQorICAgICAgICB3ZWJraXRfY29sb3JfY2hv
b3Nlcl9yZXF1ZXN0X2NhbmNlbChXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG1fcmVxdWVz
dC5nZXQoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczNmIzM2ZmODUyYWQ4
NDdmNzAzYWJmZjY5ZDcyZjgxOGQ1NGZkMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmgKQEAgLTAsMCArMSw2
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICog
ICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29sb3JDaG9vc2VyUHJveHlHdGtfaAorI2RlZmluZSBX
ZWJDb2xvckNob29zZXJQcm94eUd0a19oCisKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94
eS5oIgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb2xvcjsKK2NsYXNzIEludFJl
Y3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDb2xvckNob29zZXJQcm94
eUd0ayA6ICBwdWJsaWMgV2ViQ29sb3JDaG9vc2VyUHJveHkgeworCitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IGNyZWF0ZShXZWJDb2xvckNob29z
ZXJQcm94eTo6Q2xpZW50KiBjbGllbnQsIEd0a1dpZGdldCogd2ViVmlldywgY29uc3QgV2ViQ29y
ZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJl
Y3QpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbG9yQ2hvb3NlclBy
b3h5R3RrKGNsaWVudCwgd2ViVmlldywgaW5pdGlhbENvbG9yLCBlbGVtZW50UmVjdCkpOworICAg
IH0KKyAgICB2b2lkIHNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKKyAg
ICB2b2lkIGVuZENob29zZXIoKTsKKworcHJpdmF0ZToKKyAgICBXZWJDb2xvckNob29zZXJQcm94
eUd0ayhXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiwgR3RrV2lkZ2V0KiwgY29uc3QgV2Vi
Q29yZTo6Q29sb3ImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisKKyAgICBHUmVmUHRyPEdP
YmplY3Q+IG1fcmVxdWVzdDsKKyAgICBHUmVmUHRyPEd0a1dpZGdldD4gbV93ZWJWaWV3OworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJDb2xvckNob29zZXJQcm94
eUd0a19oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9T
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IGNmMTFhNDg1NzQ1MzkwOWFkMWU2
ODZhMWYyMmMxZTE2ZTA2YjFmNWYuLmNmMDdhMzI1NmUyZTUxMjFkMjU4MzgzYjY4Nzc4NDVmYzI2
MTI4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIv
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMjMzLDYgKzIzMyw4IEBAIF9aTjdX
ZWJDb3JlMThTdHlsZVNoZWV0Q29udGVudHNEMUV2OwogX1pON1dlYkNvcmUyOERvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb24xMmFkZFVzZXJTaGVldEVOM1dURjEwUGFzc1JlZlB0cklOU18xOFN0
eWxlU2hlZXRDb250ZW50c0VFRTsKIF9aTjdXZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uMTRhZGRBdXRob3JTaGVldEVOM1dURjEwUGFzc1JlZlB0cklOU18xOFN0eWxlU2hlZXRD
b250ZW50c0VFRTsKIF9aTjdXZWJDb3JlNEtVUkwxMGludmFsaWRhdGVFdjsKK19aTjdXZWJDb3Jl
NUNvbG9yQzFFUktOM1dURjZTdHJpbmdFOworX1pON1dlYkNvcmUxNkhUTUxJbnB1dEVsZW1lbnQy
NXNlbGVjdENvbG9ySW5Db2xvckNob29zZXJFUktOU181Q29sb3JFOwogCiBsb2NhbDoKIF9aKjsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3YjIx
ZGE4ZDcxMDMzMmQ5ZTI5ODIwNGU3YjhkZmQwZjMzZWFjNDg2Li5iOTk0NDZiODY1MGRkN2EzNjEy
MDFkMzRlMGRmNTUwY2QyZjI1ZGViIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTItMjAgIEFybmF1ZCBSZW5l
dmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQg
c3VwcG9ydCBmb3IgY29sb3IgaW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk4OTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRW5hYmxlIGlucHV0IHR5cGUgY29sb3IgaW4gZmVhdHVyZSBsaXN0Lgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOgorCiAyMDEyLTEx
LTA5ICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgW0dUS10gYWRkIGxpYnNjcmV0IHRvIGpoYnVpbGQgc3lzdGVtCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggMmVkZGIyNjUwYTg4MTcyNmRhZjVhZjRjY2M5
YjZjYjhmMTdlNWYxMi4uYWZjYzllZTg0ZTcyNzFhMTMyMGE5MDBmMjdhMjlhNmJjY2I4NzhmNiAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMjcyLDcgKzI3Miw3
IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOUFVUX1NQRUVD
SCIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRpbnB1dFNwZWVjaFN1cHBvcnQgfSwKIAogICAg
IHsgb3B0aW9uID0+ICJpbnB1dC10eXBlLWNvbG9yIiwgZGVzYyA9PiAiVG9nZ2xlIElucHV0IFR5
cGUgQ29sb3Igc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlBVVF9UWVBFX0NP
TE9SIiwgZGVmYXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSB8fCBpc1F0KCkpLCB2
YWx1ZSA9PiBcJGlucHV0VHlwZUNvbG9yU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFC
TEVfSU5QVVRfVFlQRV9DT0xPUiIsIGRlZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgpIHx8IGlzRWZs
KCkgfHwgaXNRdCgpIHx8IGlzR3RrKCkpLCB2YWx1ZSA9PiBcJGlucHV0VHlwZUNvbG9yU3VwcG9y
dCB9LAogCiAgICAgeyBvcHRpb24gPT4gImlucHV0LXR5cGUtZGF0ZSIsIGRlc2MgPT4gIlRvZ2ds
ZSBJbnB1dCBUeXBlIERhdGUgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlBV
VF9UWVBFX0RBVEUiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW5wdXRUeXBlRGF0ZVN1cHBv
cnQgfSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA0OGY4MDFjMjA2ZDc0NDAwZDhkOGM4Y2I5M2JkNWVjZTU4MzE5ZjkxLi5k
MzQxYTliZmM0YTJiMDJlYWEwMjVlMjFjNWE1ZjljY2NhZmI4ZmY5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTItMTItMjAgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1z
dW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY29sb3IgaW5wdXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTM1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIGNvbG9y
IGlucHV0IHRlc3RzLgorCisgICAgICAgIE1vZGlmeSBpbnB1dC1jb2xvci1vbmNoYW5nZS1ldmVu
dC1leHBlY3RlZC50eHQgYmVjYXVzZSBpdCBkaWQgbm90IHRha2UKKyAgICAgICAgaW50byBhY2Nv
dW50IHRoZSBzZWNvbmQgZGVzY3JpcHRpb24gcGhyYXNlLgorCisgICAgICAgICogZmFzdC9mb3Jt
cy9jb2xvci9pbnB1dC1jb2xvci1vbmNoYW5nZS1ldmVudC1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L2Zhc3QvZm9ybXMvY29sb3IvaW5wdXQtYXBwZWFyYW5jZS1jb2xvci1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorCiAyMDEyLTEyLTE0ICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ft
c3VuZy5jb20+CiAKICAgICAgICAgaW5jb25zaXN0ZW5jeSBpbiBkcmF3SW1hZ2Ugd2l0aCB0YXJn
ZXQgcmVjdCBuZWdhdGl2ZSBkaW1lbnNpb25zLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9jb2xvci9pbnB1dC1jb2xvci1vbmNoYW5nZS1ldmVudC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2NvbG9yL2lucHV0LWNvbG9yLW9uY2hhbmdlLWV2ZW50LWV4
cGVjdGVkLnR4dAppbmRleCBhMWNkNjg1MzkzYzI1NzUwZjRlYTQ0NjA3ZTEyYzgzYjVjNGVjN2Iz
Li5jODc5YTBiN2M5MjQ2NDQ1NzlhMjJjZGVhOGVhODQ1N2FlNGNlZTljIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2NvbG9yL2lucHV0LWNvbG9yLW9uY2hhbmdlLWV2ZW50LWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2NvbG9yL2lucHV0LWNvbG9y
LW9uY2hhbmdlLWV2ZW50LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDUgQEAKLVRlc3QgaWYgY2hh
bmdlIGV2ZW50IGZpcmVzIHByb3Blcmx5IHdoZW4gY29sb3IgY2hvb3NlciBjaGFuZ2VzLiBCdWcg
NjY4NDgKK1Rlc3QgaWYgY2hhbmdlIGV2ZW50IGZpcmVzIHByb3Blcmx5IHdoZW4gY29sb3IgY2hv
b3NlciBjaGFuZ2VzLiBCdWcgNjY4NDggCitUbyBtYW51YWxseSB0ZXN0IHRoaXMsIGNsaWNrIG9u
IHRoZSBpbnB1dCBjb2xvciBlbGVtZW50IGluIHRoZSB0b3AgbGVmdCBjb3JuZXIgYW5kIGNoYW5n
ZSB0aGUgdmFsdWUgZnJvbSB0aGUgY29sb3IgY2hvb3Nlci4gU2VlIGlmIHRoZSBudW1iZXIgb2Yg
InZhbHVlIGNoYW5nZWQiIG1lc3NhZ2VzIG1hdGNoZXMgdGhlIG51bWJlciBvZiB0aW1lcyB5b3Ug
Y2hhbmdlZCB0aGUgY29sb3IuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAyMmViNzQwOTVkYmU2MDQy
OTUxOWRiZGI4YWIxMGQxNmNkZTdmOGY5Li40YTM5MWY0OGEwNGU3MzczNDkyOTczZGJiYWFjODlj
NGE5OWIwYzA2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtMTkzLDkgKzE5Myw2IEBAIHdlYmtpdC5vcmcvYi85ODkzMyBzdG9yYWdlL2RvbXN0b3JhZ2Uv
bG9jYWxzdG9yYWdlL3N0b3JhZ2V0cmFja2VyIFsgU2tpcCBdCiAjIERhdGFsaXN0IGlzIG5vdCB5
ZXQgZW5hYmxlZC4KIHdlYmtpdC5vcmcvYi85ODkzNCBmYXN0L2Zvcm1zL2RhdGFsaXN0IFsgU2tp
cCBdCiAKLSMgQ29sb3IgaW5wdXQgaXMgbm90IHlldCBlbmFibGVkLgotd2Via2l0Lm9yZy9iLzk4
OTM1IGZhc3QvZm9ybXMvY29sb3IgWyBTa2lwIF0KLQogIyBFTkFCTEVfSU5QVVRfVFlQRV8qIGFy
ZSBub3QgZW5hYmxlZC4KIHdlYmtpdC5vcmcvYi85ODkzNiBmYXN0L2Zvcm1zL2RhdGUgWyBTa2lw
IF0KIHdlYmtpdC5vcmcvYi85ODkzNiBmYXN0L2Zvcm1zL2RhdGUtbXVsdGlwbGUtZmllbGRzIFsg
U2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9mb3Jtcy9j
b2xvci9pbnB1dC1hcHBlYXJhbmNlLWNvbG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9mYXN0L2Zvcm1zL2NvbG9yL2lucHV0LWFwcGVhcmFuY2UtY29sb3ItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVjNGFmMTg3MzhjN2M1Y2EwZjFjNzRjZDY5OTk5NTU5ZjkzNzI1
YmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9mb3Jt
cy9jb2xvci9pbnB1dC1hcHBlYXJhbmNlLWNvbG9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEx
NSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sg
e0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4
LDgpIHNpemUgNzg0eDU4NAorICAgICAgUmVuZGVyQmxvY2sge0gzfSBhdCAoMCwwKSBzaXplIDc4
NHgyMgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjR4MjIKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjQ6ICJEZWZhdWx0IEFwcGVhcmFuY2Ui
CisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCw0MCkgc2l6ZSA3ODR4NDEKKyAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNDU2eDE5CisgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDU2OiAiTGlzdCBjb2xvciBjb250cm9scyBoYXZlIGRp
ZmZlcmVudCBhcHBlYXJhbmNlIGlmIEVOQUJMRShEQVRBTElTVCkuIgorICAgICAgICBSZW5kZXJC
UiB7QlJ9IGF0ICg0NTYsMTUpIHNpemUgMHgwCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0g
YXQgKDAsMTgpIHNpemUgNDR4MjMgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNl
dCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0g
YXQgKDMsMykgc2l6ZSAzOHgxNworICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIs
NCkgc2l6ZSAzNHg5IFtiZ2NvbG9yPSMwMDAwMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzc3Nzc3
NyldCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDQ0LDE4KSBzaXplIDQ0eDIzIFti
Z2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisgICAgICAgICAg
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUgMzh4MTcKKyAg
ICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMzR4OSBbYmdjb2xvcj0j
MDAwMDAwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICM3Nzc3NzcpXQorICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJlbmRlckJsb2NrIHtIM30gYXQgKDAs
OTkpIHNpemUgNzg0eDIyCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDE2MHgyMgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2MDogIkRpZmZlcmVu
dCBGb250IFNpemVzIgorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMTM5KSBz
aXplIDc4NHg0NAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA1Nzd4
MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1Nzc6ICJMaXN0IGNvbG9yIGNv
bnRyb2xzIGhhdmUgZGlmZmVyZW50IHNpemVzIGRlcGVuZGluZyBvbiBmb250IHNpemVzLiBOb3Jt
YWwgY29sb3IgY29udHJvbHMgZG9uJ3QuIgorICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICg1Nzcs
MTUpIHNpemUgMHgwCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDAsMTgpIHNpemUg
NDR4MjMgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAg
ICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0gYXQgKDMsMykgc2l6ZSAz
OHgxNworICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAzNHg5IFti
Z2NvbG9yPSMwMEZGMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzc3Nzc3NyldCisgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoNDQsMjYpIHNpemUgNHgxOQorICAgICAgICAgIHRleHQgcnVu
IGF0ICg0NCwyNikgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQg
KDQ4LDE4KSBzaXplIDQ0eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQg
IzAwMDAwMCldCisgICAgICAgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0
ICgzLDMpIHNpemUgMzh4MTcKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQp
IHNpemUgMzR4OSBbYmdjb2xvcj0jMDBGRjAwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICM3Nzc3Nzcp
XQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDkyLDI2KSBzaXplIDR4MTkKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoOTIsMjYpIHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5kZXJCbG9j
ayB7SU5QVVR9IGF0ICg5NiwxOCkgc2l6ZSA0NHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVy
OiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveCB7RElWfSBhdCAoMywzKSBzaXplIDM4eDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMiw0KSBzaXplIDM0eDkgW2JnY29sb3I9IzAwRkYwMF0gW2JvcmRlcjogKDFweCBz
b2xpZCAjNzc3Nzc3KV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNDAsMjYpIHNp
emUgNHgxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICgxNDAsMjYpIHdpZHRoIDQ6ICIgIgorICAg
ICAgICBSZW5kZXJCbG9jayB7SU5QVVR9IGF0ICgxNDQsMTgpIHNpemUgNDR4MjMgW2JnY29sb3I9
I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0gYXQgKDMsMykgc2l6ZSAzOHgxNworICAgICAgICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAzNHg5IFtiZ2NvbG9yPSMwMEZGMDBd
IFtib3JkZXI6ICgxcHggc29saWQgIzc3Nzc3NyldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMTg4LDI2KSBzaXplIDR4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTg4LDI2KSB3
aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAoMTkyLDE4KSBzaXpl
IDQ0eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisg
ICAgICAgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUg
Mzh4MTcKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMzR4OSBb
Ymdjb2xvcj0jMDBGRjAwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICM3Nzc3NzcpXQorICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIzNiwyNikgc2l6ZSA0eDE5CisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDIzNiwyNikgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0g
YXQgKDI0MCwxOCkgc2l6ZSA0NHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGlu
c2V0ICMwMDAwMDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElW
fSBhdCAoMywzKSBzaXplIDM4eDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
Miw0KSBzaXplIDM0eDkgW2JnY29sb3I9IzAwRkYwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjNzc3
Nzc3KV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisgICAg
ICBSZW5kZXJCbG9jayB7SDN9IGF0ICgwLDIwMSkgc2l6ZSA3ODR4MjIKKyAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTI0eDIyCisgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggMTI0OiAiVmFyaW91cyBDb2xvcnMiCisgICAgICBSZW5kZXJCbG9jayAoYW5v
bnltb3VzKSBhdCAoMCwyNDEpIHNpemUgNzg0eDI2CisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBV
VH0gYXQgKDAsMCkgc2l6ZSA0NHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGlu
c2V0ICMwMDAwMDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElW
fSBhdCAoMywzKSBzaXplIDM4eDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
Miw0KSBzaXplIDM0eDkgW2JnY29sb3I9I0ZGMDAwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjNzc3
Nzc3KV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg0NCw4KSBzaXplIDR4MTkKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoNDQsOCkgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRlckJs
b2NrIHtJTlBVVH0gYXQgKDQ4LDApIHNpemUgNDR4MjMgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRl
cjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGli
bGVCb3gge0RJVn0gYXQgKDMsMykgc2l6ZSAzOHgxNworICAgICAgICAgICAgUmVuZGVyQmxvY2sg
e0RJVn0gYXQgKDIsNCkgc2l6ZSAzNHg5IFtiZ2NvbG9yPSMwMEZGMDBdIFtib3JkZXI6ICgxcHgg
c29saWQgIzc3Nzc3NyldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoOTIsOCkgc2l6
ZSA0eDE5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDkyLDgpIHdpZHRoIDQ6ICIgIgorICAgICAg
ICBSZW5kZXJCbG9jayB7SU5QVVR9IGF0ICg5NiwwKSBzaXplIDQ0eDIzIFtiZ2NvbG9yPSNGRkZG
RkZdIFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisgICAgICAgICAgUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUgMzh4MTcKKyAgICAgICAgICAgIFJl
bmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMzR4OSBbYmdjb2xvcj0jMDAwMEZGXSBbYm9y
ZGVyOiAoMXB4IHNvbGlkICM3Nzc3NzcpXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDE0MCw4KSBzaXplIDR4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTQwLDgpIHdpZHRoIDQ6
ICIgIgorICAgICAgICBSZW5kZXJCbG9jayB7SU5QVVR9IGF0ICgxNDQsMCkgc2l6ZSA0NHgyMyBb
Ymdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAgICAgICAg
IFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElWfSBhdCAoMywzKSBzaXplIDM4eDE3Cisg
ICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0KSBzaXplIDM0eDkgW2JnY29sb3I9
I0VDMDA4Q10gW2JvcmRlcjogKDFweCBzb2xpZCAjNzc3Nzc3KV0KKyAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgxODgsOCkgc2l6ZSA0eDE5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDE4
OCw4KSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAoMTkyLDAp
IHNpemUgNDR4MjMgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAw
KV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0gYXQgKDMsMykg
c2l6ZSAzOHgxNworICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAz
NHg5IFtiZ2NvbG9yPSM0MEUwRDBdIFtib3JkZXI6ICgxcHggc29saWQgIzc3Nzc3NyldCisgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMjM2LDgpIHNpemUgNHgxOQorICAgICAgICAgIHRl
eHQgcnVuIGF0ICgyMzYsOCkgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBV
VH0gYXQgKDI0MCwwKSBzaXplIDQ0eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHgg
aW5zZXQgIzAwMDAwMCldCisgICAgICAgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtE
SVZ9IGF0ICgzLDMpIHNpemUgMzh4MTcKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0
ICgyLDQpIHNpemUgMzR4OSBbYmdjb2xvcj0jRkYwMDAwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICM3
Nzc3NzcpXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDI4NCw4KSBzaXplIDR4MTkK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjg0LDgpIHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5k
ZXJCbG9jayB7SU5QVVR9IGF0ICgyODgsMCkgc2l6ZSA0NHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBb
Ym9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRG
bGV4aWJsZUJveCB7RElWfSBhdCAoMywzKSBzaXplIDM4eDE3CisgICAgICAgICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMiw0KSBzaXplIDM0eDkgW2JnY29sb3I9IzAwRkYwMF0gW2JvcmRlcjog
KDFweCBzb2xpZCAjNzc3Nzc3KV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgzMzIs
OCkgc2l6ZSA0eDE5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDMzMiw4KSB3aWR0aCA0OiAiICIK
KyAgICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAoMzM2LDApIHNpemUgNDR4MjMgW2JnY29s
b3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0gYXQgKDMsMykgc2l6ZSAzOHgxNworICAgICAg
ICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAzNHg5IFtiZ2NvbG9yPSMwMDAw
RkZdIFtib3JkZXI6ICgxcHggc29saWQgIzc3Nzc3NyldCisgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMzgwLDgpIHNpemUgNHgxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICgzODAsOCkg
d2lkdGggNDogIiAiCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDM4NCwwKSBzaXpl
IDQ0eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisg
ICAgICAgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUg
Mzh4MTcKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMzR4OSBb
Ymdjb2xvcj0jRUMwMDhDXSBbYm9yZGVyOiAoMXB4IHNvbGlkICM3Nzc3NzcpXQorICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDQyOCw4KSBzaXplIDR4MTkKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoNDI4LDgpIHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5kZXJCbG9jayB7SU5QVVR9IGF0
ICg0MzIsMCkgc2l6ZSA0NHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0
ICMwMDAwMDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElWfSBh
dCAoMywzKSBzaXplIDM4eDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0
KSBzaXplIDM0eDkgW2JnY29sb3I9IzQwRTBEMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjNzc3Nzc3
KV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBS
ZW5kZXJCbG9jayB7SDN9IGF0ICgwLDI4NSkgc2l6ZSA3ODR4MjIKKyAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTE3eDIyCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMTE3OiAiQXJiaXRyYXJ5IFNpemUiCisgICAgICBSZW5kZXJCbG9jayAoYW5vbnlt
b3VzKSBhdCAoMCwzMjUpIHNpemUgNzg0eDMwCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0g
YXQgKDAsMCkgc2l6ZSAxMDB4MzAgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNl
dCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0g
YXQgKDMsMykgc2l6ZSA5NHgyNAorICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIs
NCkgc2l6ZSA5MHgxNiBbYmdjb2xvcj0jRkYwMDAwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICM3Nzc3
NzcpXQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDVhNGRjYjM2ZjZm
NGNmMmUwMWM3NWM0MGY0N2VlYTMxNzRiMjViYzQuLmM4OTBmNzBkMjZlY2IxZmViZTIwYTViODk5
ZWIxNjJiNDE4MzVmZmUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAxMi0xMi0yMCAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBz
aXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBjb2xvciBp
bnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5
MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBleHBv
cnQgV2ViQ29yZTo6Q29sb3I6OkNvbG9yKFdURjo6U3RyaW5nIGNvbnN0JikgYW5kCisgICAgICAg
IFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdENvbG9ySW5Db2xvckNob29zZXIoV2Vi
Q29yZTo6Q29sb3IKKyAgICAgICAgY29uc3QmKQorCisgICAgICAgICogU291cmNlL2F1dG90b29s
cy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMi0xMC0xMCAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5l
dmllckBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFtHdGtdIHRvbyBsb25nIGZ1bmN0aW9u
IGluIGFuaW1hdGlvbiBzY3JpcHQgY2F1c2UgcmVwYWludCB0byBuZXZlciBoYXBwZW4uCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181118</attachid>
            <date>2013-01-02 17:36:18 -0800</date>
            <delta_ts>2013-01-04 15:42:56 -0800</delta_ts>
            <desc>rebase against tot</desc>
            <filename>bug-98935-20130102173323.patch</filename>
            <type>text/plain</type>
            <size>60456</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4Njg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTgxMWE3MTNiYTg2Y2Qy
MmY4ZjFkYTllNmFmOWFlMGNlZmExOWM0YS4uYmI5NmI1MjUxNjEzOGE5ZWZjYWMzYWM4YTg5YTI3
YjhlMTBjNWE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTIwICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dU
S10gQWRkIHN1cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBpbnB1dCB0eXBlIGNvbG9yIGluIGZlYXR1cmUg
bGlzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmZlYXR1cmVzLmFtLmluOgorCiAyMDEyLTEy
LTI2ICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgQWRkIENhbnZhcyBibGVuZCBtb2RlcyB0byBDYWlybwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4
IDdjNWI5YzQ3YTg4ZjE2MmUzMWYyM2NmZWNiMjgxOGQwNmE0OTI3YjMuLjY3YzgwOGExNDc5MzQy
MWYyZjUzMTNiZTQ4NzY0MjE2ODFiM2E5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAxMi0xMi0zMSAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1
bmcuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBjb2xvciBpbnB1dAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHViIGltcGxlbWVu
dGF0aW9uIG9mIENocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChDaHJvbWVDbGllbnQpOgorCiAyMDEyLTEwLTAxICBBcm5hdWQgUmVuZXZpZXIg
IDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0d0a10gdG9vIGxvbmcg
ZnVuY3Rpb24gaW4gYW5pbWF0aW9uIHNjcmlwdCBjYXVzZSByZXBhaW50IHRvIG5ldmVyIGhhcHBl
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA1OTUxZTVhZmFkMzdhY2Y4ZWRmZmU5MjY3NjU0N2ZiZjliYzBhMTQ5
Li41N2Y0N2YwNmQ1Mzg3ZGJlOGY1ZWM4NmQ1Mzg1NzYxYTFkMDlhZjFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjggQEAKKzIwMTItMTItMjAgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJA
c2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY29sb3Ig
aW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
OTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IGlucHV0IGNvbG9yIHR5cGUgZm9yIFdlYktpdDIuCisKKyAgICAgICAgU2ltaWxhcmx5
IHRvIHdoYXQgaGFwcGVucyBmb3IgZmlsZSBjaG9vc2VyLCB3aGVuIGEgY29sb3IgY2hvb3NlciBp
cworICAgICAgICBuZWVkZWQsIHdlIGVtaXQgYSBydW4tY29sb3ItY2hvb3NlciBzaWduYWwgd2l0
aCBhCisgICAgICAgICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IG9iamVjdC4gSWYgdGhlIHNp
Z25hbCBpcyBub3QgaGFuZGxlZCBieSB0aGUKKyAgICAgICAgYXBwbGljYXRpb24sIHdlIHNob3cg
YSBHdGtHdGtDb2xvckNob29zZXJEaWFsb2cgKG9yCisgICAgICAgIEd0a0NvbG9yU2VsZWN0aW9u
RGlhbG9nIGZvciBHdGsgPCAzLjQuMCkuCisKKyAgICAgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCBhcGkgYWxsb3dzIHRvIHJlYWQgY3VycmVudCBjb2xvciAoZWl0aGVyCisgICAgICAgIGlu
aXRpYWwgY29sb3Igc2V0IGJ5IFdlYkNvcmUgb3IgbGF0ZXIsIGNvbG9yIHNlbGVjdGVkIGJ5IHVz
ZXIpLCB0bworICAgICAgICBzZWxlY3QgYSBjb2xvciwgb3IgdG8gY2FuY2VsIGEgcmVxdWVzdC4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZSk6CisgICAgICAgICh3ZWJraXRfY29sb3JfY2hvb3Nl
cl9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVx
dWVzdF9jYW5jZWwpOgorICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxl
Y3RfY29sb3IpOgorICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3Vy
cmVudF9jb2xvcik6CisgICAgICAgICh3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0Q3JlYXRlKToK
KyAgICAgICAgKHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RFbmQpOgorICAgICAgICAod2Vi
a2l0V2ViQ29sb3JDaG9vc2VyUmVxdWVzdFNldENvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoX1dl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3QpOgorICAgICAgICAoX1dlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3RDbGFzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViVmlld1ByaXZhdGUpOgorICAg
ICAgICAoY29sb3JDaG9vc2VyUmVxdWVzdENoYW5nZUNhbGxiYWNrKToKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdIaWRlQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKGNvbG9yQ2hvb3NlckRpYWxvZ1Jl
c3BvbnNlQ2FsbGJhY2spOgorICAgICAgICAod2Via2l0V2ViVmlld1J1bkNvbG9yQ2hvb3Nlcik6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3UnVuQ29sb3JDaG9vc2VyUmVxdWVzdCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3SGlk
ZUNvbG9yQ2hvb3NlclJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuaDoKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3Q2xhc3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlczoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh0ZXN0V2ViVmll
d0NvbG9yQ2hvb3NlclJlcXVlc3QpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJD
b2xvckNob29zZXJQcm94eUd0ay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlHdGs6OldlYkNvbG9yQ2hvb3NlclByb3h5
R3RrKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlHdGs6OnNldFNlbGVj
dGVkQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUd0azo6ZW5k
Q2hvb3Nlcik6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0
ay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JD
aG9vc2VyUHJveHlHdGs6OmNyZWF0ZSk6CisKIDIwMTMtMDEtMDIgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBTdG9wIHByZXRlbmRpbmcgaXRzIHBvc3NpYmxlIHRvIHJ1
biB0aGUgV2ViUHJvY2VzcyBpbiB0aHJlYWRlZCBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5mZWF0dXJlcy5hbS5pbiBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmZlYXR1cmVzLmFtLmluCmluZGV4IGQxOGZjNzE2NTM5MWNmZWI4Yjc2Y2QxNWVjMzcyMzFm
NDg0ZjAxNzMuLjE2ZjM5NWU1YzM3M2RiNWRkZWM4OWZjYmQxYmVkNjllNzNkYTk5ZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmZlYXR1cmVzLmFtLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmZlYXR1cmVzLmFtLmluCkBAIC00MCw3ICs0MCw3IEBA
IGZlYXR1cmVfZGVmaW5lc19kZWZhdWx0cyArPSBcCiAJRU5BQkxFX0lGUkFNRV9TRUFNTEVTUz0x
IFwKIAlFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRT0wIFwKIAlFTkFCTEVfSU5QVVRfU1BFRUNIPTAg
XAotCUVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SPTAgXAorCUVOQUJMRV9JTlBVVF9UWVBFX0NPTE9S
PTEgXAogCUVOQUJMRV9JTlBVVF9UWVBFX0RBVEU9MCBcCiAJRU5BQkxFX0lOUFVUX1RZUEVfREFU
RVRJTUU9MCBcCiAJRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTD0wIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCmlu
ZGV4IDBhZDNkOTdkMTk1Y2UwMzRlNTE3Y2M0M2VlYjY1N2Q4MzdkODEwYzEuLjZhODlmNmQwYzRk
ZGI2NzMwMTg2ODdlY2ZiYzk0MzA1ZjE4MWUwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAtNzcsNiArNzcsMTAg
QEAKICNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCisjaW5jbHVkZSAiQ29sb3JDaG9vc2VyQ2xpZW50LmgiCisjZW5kaWYK
KwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODM2
LDYgKzg0MCwxMiBAQCB2b2lkIENocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3QpCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAorUGFzc093blB0cjxDb2xvckNob29zZXI+IENocm9tZUNsaWVudDo6Y3JlYXRlQ29s
b3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IENvbG9yJikKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCiB2b2lkIENocm9tZUNsaWVu
dDo6cnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gcHJwRmlsZUNo
b29zZXIpCiB7CiAgICAgR1JlZlB0cjxXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3Q+IHJlcXVlc3Qg
PSBhZG9wdEdSZWYod2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2NyZWF0ZShwcnBGaWxlQ2hv
b3NlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuaAppbmRleCBhMDFmZDMzY2JhZWM5YTU0NTNkM2Y2NTUyOWYyMWU4MWRiZWQ2NjVm
Li41ZDYwZjA5YjY1ZGQyZDY0ODEwYjJkMTBlMTQzNjk5ZTExNWJhNzE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMzYs
NiArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlldyBXZWJLaXRXZWJWaWV3Owog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CitjbGFzcyBDb2xv
cjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMjAsNiArMTIxLDExIEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogI2VuZGlmCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2Fj
aGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hl
ZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3QgdG90
YWxTcGFjZU5lZWRlZCk7CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICAgICAg
dmlydHVhbCBQYXNzT3duUHRyPENvbG9yQ2hvb3Nlcj4gY3JlYXRlQ29sb3JDaG9vc2VyKENvbG9y
Q2hvb3NlckNsaWVudCosIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IpOworI2VuZGlmCisKICAg
ICAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNo
b29zZXI+KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3QgVmVj
dG9yPFdURjo6U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5saXN0LmFtCmluZGV4IGQ3NzY4NWYxNTQ3M2I0OTBmMWQwNGE5OWMxYjRkOTgxNTRjZmFjNzIu
LjdiNTE1ZWRiMzhlZDQzZjgzMzdlMWRjNjNkODE0ODMzZjgyZGJmMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUubGlzdC5hbQpAQCAtOTYsNiArOTYsNyBAQCB3ZWJraXQyX2hfYXBpICs9IFwKIHdl
YmtpdDJndGtfaF9hcGkgKz0gXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QmFja0ZvcndhcmRMaXN0LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QmFja0ZvcndhcmRMaXN0SXRlbS5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDb250ZXh0TWVudS5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvbnRleHRNZW51QWN0aW9ucy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENvbnRleHRNZW51SXRlbS5oIFwKQEAgLTY0MSw2ICs2NDIsOSBAQCB3ZWJraXQyX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tG
b3J3YXJkTGlzdEl0ZW0uaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHAgXAorCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaCBc
CisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdFByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q29udGV4dE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDb250ZXh0TWVudS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDb250ZXh0TWVudVByaXZhdGUuaCBcCkBAIC03OTQsNiArNzk4LDggQEAgd2Via2l0Ml9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jYWlyby9CYWNraW5n
U3RvcmVDYWlyby5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNr
ZXJHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3Nl
clByb3h5R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNo
b29zZXJQcm94eUd0ay5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRl
eHRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51
UHJveHlHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRN
ZW51UHJveHlHdGsuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggYmY2MTYyNDBhMDFmYmYzODk4MDE3MTI3OGE4YjY2
N2FjYzhhNmU4MS4uMTkxZTIwMDgzMzg5NmM2ODZiMDdiNjNlZDVlZGI5ZTM2MWQzNzAxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmNwcApAQCAtNDQsNiArNDQsMTAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9D
T0xPUikKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94eUd0ay5oIgorI2VuZGlmCisKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTIzMSwxMCAr
MjM1LDkgQEAgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHIKIH0KIAogI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0NPTE9SKQotUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gUGFnZUNsaWVudElt
cGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCitQYXNzUmVmUHRyPFdlYkNvbG9yQ2hv
b3NlclByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViUGFn
ZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiAwOworICAgIHJldHVybiBXZWJDb2xvckNob29zZXJQcm94eUd0azo6Y3JlYXRl
KHBhZ2UsIG1fdmlld1dpZGdldCwgaW5pdGlhbENvbG9yLCBlbGVtZW50UmVjdCk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDc0YmFhNWVjMzli
ODk3NWZlY2UyNDFiZTA4MmVjYmIxMDIxZDNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHAKQEAg
LTAsMCArMSwxODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1bmcgRWxlY3Ry
b25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50
YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJX
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+
CisjaW5jbHVkZSAiV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCIKKyNpbmNsdWRl
IDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisvKioKKyAq
IFNFQ1RJT046IFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAqIEBTaG9ydF9kZXNjcmlwdGlv
bjogQSByZXF1ZXN0IHRvIG9wZW4gYSBjb2xvciBjaG9vc2VyCisgKiBAVGl0bGU6IFdlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QKKyAqIEBTZWVfYWxzbzogI1dlYktpdFdlYlZpZXcKKyAqCisgKiBX
aGVuZXZlciB0aGUgdXNlciBpbnRlcmFjdHMgd2l0aCBhbiAmbHQ7aW5wdXQgdHlwZT0nY29sb3In
IC8mZ3Q7CisgKiBIVE1MIGVsZW1lbnQsIFdlYktpdCB3aWxsIG5lZWQgdG8gc2hvdyBhIGRpYWxv
ZyB0byBjaG9vc2UgYSBjb2xvci4gRm9yIHRoYXQKKyAqIHRvIGhhcHBlbiBpbiBhIGdlbmVyYWwg
d2F5LCBpbnN0ZWFkIG9mIGp1c3Qgb3BlbmluZyBhICNHdGtDb2xvckNob29zZXIKKyAqICh3aGlj
aCBtaWdodCBiZSBub3QgZGVzaXJhYmxlIGluIHNvbWUgY2FzZXMsIHdoaWNoIGNvdWxkIHByZWZl
ciB0byB1c2UgdGhlaXIKKyAqIG93biBjb2xvciBjaG9vc2VyIGRpYWxvZyksIFdlYktpdCB3aWxs
IGZpcmUgdGhlCisgKiAjV2ViS2l0V2ViVmlldzo6cnVuLWNvbG9yLWNob29zZXIgc2lnbmFsIHdp
dGggYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAorICogb2JqZWN0LCB3aGljaCB3aWxsIGFs
bG93IHRoZSBjbGllbnQgYXBwbGljYXRpb24gdG8gc3BlY2lmeSB0aGUgY29sb3IgdG8gYmUKKyAq
IHNlbGVjdGVkLCB0byBpbnNwZWN0IHRoZSBkZXRhaWxzIG9mIHRoZSByZXF1ZXN0IChlLmcuIHRv
IGdldCBpbml0aWFsIGNvbG9yKQorICogYW5kIHRvIGNhbmNlbCB0aGUgcmVxdWVzdCwgaW4gY2Fz
ZSBub3RoaW5nIHdhcyBzZWxlY3RlZC4KKyAqCisgKiBJbiBjYXNlIHRoZSBjbGllbnQgYXBwbGlj
YXRpb24gZG9lcyBub3Qgd2lzaCB0byBoYW5kbGUgdGhpcyBzaWduYWwsCisgKiBXZWJLaXQgd2ls
bCBwcm92aWRlIGEgZGVmYXVsdCBoYW5kbGVyIHdoaWNoIHdpbGwgYXN5bmNocm9ub3VzbHkgcnVu
CisgKiBhIHJlZ3VsYXIgI0d0a0NvbG9yQ2hvb3NlciBmb3IgdGhlIHVzZXIgdG8gaW50ZXJhY3Qg
d2l0aC4KKyAqLworCitzdHJ1Y3QgX1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlIHsK
KyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBXZWJDb2xvckNob29zZXJQcm94eTo6
Q2xpZW50KiBjbGllbnQ7CisjZW5kaWYKKyAgICBDb2xvciBjb2xvcjsKKyAgICBib29sIGhhbmRs
ZWRSZXF1ZXN0OworfTsKKworV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3QsIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QpCisKK2Vu
dW0geworICAgIEVORF9DSE9PU0VSLAorICAgIENIQU5HRV9DT0xPUiwKKworICAgIExBU1RfU0lH
TkFMCit9OworCitzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CisK
K3N0YXRpYyB2b2lkIHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3REaXNwb3NlKEdPYmplY3QqIG9i
amVjdCkKK3sKKyAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lU
X0NPTE9SX0NIT09TRVJfUkVRVUVTVChvYmplY3QpOworCisgICAgLy8gTWFrZSBzdXJlIHRoZSBy
ZXF1ZXN0IGlzIGFsd2F5cyBoYW5kbGVkIGJlZm9yZSBmaW5hbGl6aW5nLgorICAgIGlmICghcmVx
dWVzdC0+cHJpdi0+aGFuZGxlZFJlcXVlc3QpCisgICAgICAgIHdlYmtpdF9jb2xvcl9jaG9vc2Vy
X3JlcXVlc3RfY2FuY2VsKHJlcXVlc3QpOworCisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2Nv
bG9yX2Nob29zZXJfcmVxdWVzdF9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7Cit9CisK
K3N0YXRpYyB2b2lkIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MqIHJlcXVlc3RDbGFzcykKK3sKKyAgICBHT2JqZWN0
Q2xhc3MqIG9iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBv
YmplY3RDbGFzcy0+ZGlzcG9zZSA9IHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3REaXNwb3NlOwor
CisgICAgLyoqCisgICAgICogV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdDpjaGFuZ2UtY29sb3I6
CisgICAgICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCBvbiB3aGlj
aCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAY29sb3I6IHRoZSBuZXcgY29sb3IKKyAg
ICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiBkZWZhdWx0IHZhbHVlIG9mIHJlcXVlc3QgaXMgY2hh
bmdlZC4KKyAgICAgKi8KKyAgICBzaWduYWxzW0NIQU5HRV9DT0xPUl0gPQorICAgICAgICBnX3Np
Z25hbF9uZXcoImNoYW5nZS1jb2xvciIsCisgICAgICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NM
QVNTKG9iamVjdENsYXNzKSwKKyAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisg
ICAgICAgICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFy
c2hhbF9WT0lEX19TVFJJTkcsCisgICAgICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCisgICAg
ICAgICAgICAgICAgR19UWVBFX1NUUklORyk7Cit9CisKKy8qKgorICogd2Via2l0X2NvbG9yX2No
b29zZXJfcmVxdWVzdF9jYW5jZWw6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdAorICoKKyAqIEFzayBXZWJLaXQgdG8gY2FuY2VsIHRoZSByZXF1ZXN0LiBJdCdzIGlt
cG9ydGFudCB0byBkbyB0aGlzIGluIGNhc2UKKyAqIG5vIHNlbGVjdGlvbiBoYXMgYmVlbiBtYWRl
IGluIHRoZSBjbGllbnQsIG90aGVyd2lzZSB0aGUgcmVxdWVzdAorICogd29uJ3QgYmUgcHJvcGVy
bHkgY29tcGxldGVkIGFuZCB0aGUgYnJvd3NlciB3aWxsIGtlZXAgdGhlIHJlcXVlc3QKKyAqIHBl
bmRpbmcgZm9yZXZlciwgd2hpY2ggbWlnaHQgY2F1c2UgdGhlIGJyb3dzZXIgdG8gaGFuZy4KKyAq
Lwordm9pZCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbChXZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGlmIChyZXF1ZXN0LT5wcml2LT5oYW5kbGVk
UmVxdWVzdCkKKyAgICAgICAgcmV0dXJuOworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQor
ICAgIHJlcXVlc3QtPnByaXYtPmNsaWVudC0+ZGlkRW5kQ29sb3JDaG9vc2VyKCk7CisjZW5kaWYK
KyAgICByZXF1ZXN0LT5wcml2LT5oYW5kbGVkUmVxdWVzdCA9IFRSVUU7Cit9CisKKy8qKgorICog
d2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3I6CisgKiBAcmVxdWVzdDog
YSAjV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0CisgKiBAY29sb3I6IGEgI0dka1JHQkEKKyAqCisg
KiBBc2sgV2ViS2l0IHRvIHNlbGVjdCBjb2xvciBhbmQgY29tcGxldGUgdGhlIHJlcXVlc3QuCisg
Ki8KK3ZvaWQgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3IoV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgR2RrUkdCQSBjb2xvcikKK3sKKyAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1QocmVxdWVz
dCkpOworICAgIGlmIChyZXF1ZXN0LT5wcml2LT5oYW5kbGVkUmVxdWVzdCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgcmVxdWVzdC0+cHJpdi0+Y29sb3IgPSBDb2xvcihjb2xvcik7CisjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgcmVxdWVzdC0+cHJpdi0+Y2xpZW50LT5kaWRDaG9v
c2VDb2xvcihyZXF1ZXN0LT5wcml2LT5jb2xvcik7CisgICAgcmVxdWVzdC0+cHJpdi0+Y2xpZW50
LT5kaWRFbmRDb2xvckNob29zZXIoKTsKKyNlbmRpZgorICAgIHJlcXVlc3QtPnByaXYtPmhhbmRs
ZWRSZXF1ZXN0ID0gVFJVRTsKK30KKworLyoqCisgKiB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1
ZXN0X2dldF9jdXJyZW50X2NvbG9yOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3QKKyAqCisgKiBSZXR1cm5zOiB0aGUgY3VycmVudCBjb2xvciBvZiByZXF1ZXN0LiBX
aGlsZSBubyBjb2xvciBoYXMgYmVlbiBzZWxlY3RlZCwgaXQKKyAqIGlzIHRoZSBpbml0aWFsIHZh
bHVlIGRlZmluZWQgYnkgV2ViS2l0LiBXaGVuIGEgY29sb3IgaGFzIGJlZW4gc2VsZWN0ZWQsIHRo
aXMKKyAqIGJlY29tZXMgdGhlIHNlbGVjdGVkIHZhbHVlLgorICovCitHZGtSR0JBIHdlYmtpdF9j
b2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IoV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNf
Q09MT1JfQ0hPT1NFUl9SRVFVRVNUKHJlcXVlc3QpLCAoKGNvbnN0IEdka1JHQkEpezAuMCwgMC4w
LCAwLjAsIDAuMH0pKTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHZGtSR0JBPihyZXF1ZXN0
LT5wcml2LT5jb2xvcik7Cit9CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK1dlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3QqIHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RDcmVhdGUoY29u
c3QgQ29sb3IgaW5pdGlhbENvbG9yLCBXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiBjbGll
bnQpCit7CisgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9D
T0xPUl9DSE9PU0VSX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTE9SX0NIT09T
RVJfUkVRVUVTVCwgTlVMTCkpOworICAgIHJlcXVlc3QtPnByaXYtPmNsaWVudCA9IGNsaWVudDsK
KyAgICByZXF1ZXN0LT5wcml2LT5jb2xvciA9IGluaXRpYWxDb2xvcjsKKyAgICByZXF1ZXN0LT5w
cml2LT5oYW5kbGVkUmVxdWVzdCA9IEZBTFNFOworICAgIHJldHVybiByZXF1ZXN0OworfQorCit2
b2lkIHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RFbmQoV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19DT0xPUl9D
SE9PU0VSX1JFUVVFU1QocmVxdWVzdCkpOworCisgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVx
dWVzdF9jYW5jZWwocmVxdWVzdCk7CisgICAgZ19zaWduYWxfZW1pdChyZXF1ZXN0LCBzaWduYWxz
W0VORF9DSE9PU0VSXSwgMCwgTlVMTCk7Cit9CisKK3ZvaWQgd2Via2l0V2ViQ29sb3JDaG9vc2Vy
UmVxdWVzdFNldENvbG9yKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QsIGNvbnN0
IENvbG9yIGNvbG9yKQoreworICAgIHJlcXVlc3QtPnByaXYtPmNvbG9yID0gY29sb3I7CisgICAg
Z19zaWduYWxfZW1pdChyZXF1ZXN0LCBzaWduYWxzW0NIQU5HRV9DT0xPUl0sIDAsIHJlcXVlc3Qt
PnByaXYtPmNvbG9yLnNlcmlhbGl6ZWQoKS5hc2NpaSgpLmRhdGEoKSwgTlVMTCk7Cit9CisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjU3NTVlYjgwNTk4Zjg3NWUw
YzFmOTFjNDk3YThmNTQ5YWUyOTExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oCkBAIC0wLDAgKzEs
NzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAq
ICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZp
bmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5o
PiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdF9oCisjZGVmaW5lIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RfaAor
CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5o
PgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9S
RVFVRVNUICAgICAgICAgICAgKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X3R5cGUo
KSkKKyNkZWZpbmUgV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVChvYmopICAgICAgICAgICAg
KEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9DT0xPUl9DSE9P
U0VSX1JFUVVFU1QsIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QpKQorI2RlZmluZSBXRUJLSVRf
Q09MT1JfQ0hPT1NFUl9SRVFVRVNUX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNT
X0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCwgV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdENsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0NPTE9SX0NIT09T
RVJfUkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmop
LCBXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfSVNf
Q09MT1JfQ0hPT1NFUl9SRVFVRVNUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZ
UEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCkpCisjZGVmaW5l
IFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1RfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5T
VEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNU
LCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdCAgICAgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdDsK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MgICBXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdFByaXZhdGUgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGU7CisKK3N0
cnVjdCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCB7CisgICAgR09iamVjdCBwYXJlbnQ7CisK
KyAgICAvKjwgcHJpdmF0ZSA+Ki8KKyAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0
ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdENsYXNzIHsK
KyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQor
d2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlwZSAgICAgICAgICAgKHZvaWQpOwor
CitXRUJLSVRfQVBJIEdka1JHQkEKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1
cnJlbnRfY29sb3IgIChXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICpyZXF1ZXN0KTsKKworV0VC
S0lUX0FQSSB2b2lkCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvciAg
ICAgICAoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCAqcmVxdWVzdCwgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR2RrUkdCQSBjb2xvcik7
CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwg
ICAgICAgICAgICAgKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgKnJlcXVlc3QpOworCitHX0VO
RF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjNhOWE0YTI1ZGVhYzg1M2E1MWM0ZThlNTI2NzM0OTE0ZTY0YTFkYzgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAi
QVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdFByaXZhdGVfaAorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJX
ZWJDb2xvckNob29zZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3QuaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKKworV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogd2Via2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdENyZWF0ZShjb25zdCBXZWJDb3JlOjpDb2xvciwgV2ViS2l0OjpXZWJDb2xvckNob29z
ZXJQcm94eTo6Q2xpZW50Kik7Cit2b2lkIHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RFbmQo
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCopOwordm9pZCB3ZWJraXRXZWJDb2xvckNob29zZXJS
ZXF1ZXN0U2V0Q29sb3IoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCosIGNvbnN0IFdlYkNvcmU6
OkNvbG9yKTsKKworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisjZW5kaWYg
Ly8gV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBkMGVjOGM5ZDBm
ODc1NjIzNWE2ZTgwNDg2NDI4MDY1MjkyOGQyOGEyLi40Y2NiY2FjODJhNDZjMGMwMDI2YWI1Mzc1
MjE0MTRhNWRjOWI0M2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMTA3LDYgKzEwNyw5IEBAIGVudW0gewogCiAgICAg
UlVOX0ZJTEVfQ0hPT1NFUiwKIAorICAgIFJVTl9DT0xPUl9DSE9PU0VSLAorICAgIEhJREVfQ09M
T1JfQ0hPT1NFUiwKKwogICAgIENPTlRFWFRfTUVOVSwKICAgICBDT05URVhUX01FTlVfRElTTUlT
U0VELAogCkBAIC0xNzgsNiArMTgxLDkgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7
CiAgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IGZhdmljb25DYW5jZWxsYWJsZTsKICAgICBDU3Ry
aW5nIGZhdmljb25VUkk7CiAgICAgdW5zaWduZWQgbG9uZyBmYXZpY29uQ2hhbmdlZEhhbmRsZXJJ
RDsKKworICAgIEdSZWZQdHI8R3RrV2lkZ2V0PiBjb2xvckNob29zZXJEaWFsb2c7CisgICAgR1Jl
ZlB0cjxXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PiBjb2xvckNob29zZXJSZXF1ZXN0OwogfTsK
IAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwpAQCAtNDE2LDYg
KzQyMiw2NCBAQCBzdGF0aWMgdm9pZCBmaWxlQ2hvb3NlckRpYWxvZ1Jlc3BvbnNlQ2FsbGJhY2so
R3RrRGlhbG9nKiBkaWFsb2csIGdpbnQgcmVzcG9uc2VJRAogICAgIGd0a193aWRnZXRfZGVzdHJv
eShHVEtfV0lER0VUKGRpYWxvZykpOwogfQogCitzdGF0aWMgdm9pZCBjb2xvckNob29zZXJSZXF1
ZXN0Q2hhbmdlQ2FsbGJhY2soV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCwgY29u
c3QgZ2NoYXIqIGNvbG9yLCBHdGtXaWRnZXQqIGRpYWxvZykKK3sKKyAgICBHZGtSR0JBIHJnYjsK
KyAgICBnZGtfcmdiYV9wYXJzZSgmcmdiLCBjb2xvcik7CisgICAgZ3RrX2NvbG9yX2Nob29zZXJf
c2V0X3JnYmEoR1RLX0NPTE9SX0NIT09TRVIoZGlhbG9nKSwgJnJnYik7Cit9CisKK3N0YXRpYyBn
Ym9vbGVhbiB3ZWJraXRXZWJWaWV3SGlkZUNvbG9yQ2hvb3NlcihXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEFTU0VSVCh3
ZWJWaWV3LT5wcml2LT5jb2xvckNob29zZXJSZXF1ZXN0LmdldCgpID09IHJlcXVlc3QpOworCisg
ICAgaWYgKHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3NlclJlcXVlc3QpIHsKKyAgICAgICAgLy8g
bm9vcCBpZiB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvciBoYXMgYmVl
biBjYWxsZWQgYmVmb3JlCisgICAgICAgIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfY2Fu
Y2VsKHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3NlclJlcXVlc3QuZ2V0KCkpOworICAgICAgICB3
ZWJWaWV3LT5wcml2LT5jb2xvckNob29zZXJSZXF1ZXN0LmNsZWFyKCk7CisgICAgfQorICAgIGlm
ICh3ZWJWaWV3LT5wcml2LT5jb2xvckNob29zZXJEaWFsb2cpIHsKKyAgICAgICAgZ3RrX3dpZGdl
dF9kZXN0cm95KHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3NlckRpYWxvZy5nZXQoKSk7CisgICAg
ICAgIHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3NlckRpYWxvZy5jbGVhcigpOworICAgIH0KKyAg
ICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQgY29sb3JDaG9vc2VyRGlhbG9nUmVzcG9u
c2VDYWxsYmFjayhHdGtXaWRnZXQqIGRpYWxvZywgZ2ludCByZXNwb25zZUlELCBXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQoreworICAgIEdSZWZQdHI8V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdD4g
cmVmZWRSZXF1ZXN0ID0gd2ViVmlldy0+cHJpdi0+Y29sb3JDaG9vc2VyUmVxdWVzdDsKKyAgICBp
ZiAocmVzcG9uc2VJRCA9PSBHVEtfUkVTUE9OU0VfT0spIHsKKyAgICAgICAgR093blB0cjxjaGFy
PiBzdHJpbmdWYWx1ZTsKKyAgICAgICAgR2RrUkdCQSBjb2xvcjsKKyAgICAgICAgZ3RrX2NvbG9y
X2Nob29zZXJfZ2V0X3JnYmEoR1RLX0NPTE9SX0NIT09TRVIoZGlhbG9nKSwgJmNvbG9yKTsKKyAg
ICAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3IocmVmZWRSZXF1
ZXN0LmdldCgpLCBjb2xvcik7CisgICAgfQorCisgICAgd2Via2l0V2ViVmlld0hpZGVDb2xvckNo
b29zZXIod2ViVmlldywgcmVmZWRSZXF1ZXN0LmdldCgpKTsKK30KKworc3RhdGljIGdib29sZWFu
IHdlYmtpdFdlYlZpZXdSdW5Db2xvckNob29zZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBpZiAod2ViVmlldy0+cHJp
di0+Y29sb3JDaG9vc2VyUmVxdWVzdCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIEd0a1dp
ZGdldCogdG9wbGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZp
ZXcpKTsKKyAgICBpZiAoISF3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3codG9wbGV2ZWwp
KQorICAgICAgICB0b3BsZXZlbCA9IDA7CisgICAgR3RrV2lkZ2V0KiBkaWFsb2cgPSAgZ3RrX2Nv
bG9yX2Nob29zZXJfZGlhbG9nX25ldyhfKCJTZWxlY3QgQ29sb3IiKSwgR1RLX1dJTkRPVyh0b3Bs
ZXZlbCkpOworCisgICAgY29uc3QgR2RrUkdCQSByZ2IgPSB3ZWJraXRfY29sb3JfY2hvb3Nlcl9y
ZXF1ZXN0X2dldF9jdXJyZW50X2NvbG9yKHJlcXVlc3QpOworICAgIGd0a19jb2xvcl9jaG9vc2Vy
X3NldF9yZ2JhKEdUS19DT0xPUl9DSE9PU0VSKGRpYWxvZyksICZyZ2IpOworCisgICAgZ19zaWdu
YWxfY29ubmVjdChyZXF1ZXN0LCAiY2hhbmdlLWNvbG9yIiwgR19DQUxMQkFDSyhjb2xvckNob29z
ZXJSZXF1ZXN0Q2hhbmdlQ2FsbGJhY2spLCBkaWFsb2cpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
ZGlhbG9nLCAicmVzcG9uc2UiLCBHX0NBTExCQUNLKGNvbG9yQ2hvb3NlckRpYWxvZ1Jlc3BvbnNl
Q2FsbGJhY2spLCB3ZWJWaWV3KTsKKyAgICBndGtfd2lkZ2V0X3Nob3coZGlhbG9nKTsKKworICAg
IHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3NlckRpYWxvZyA9IGRpYWxvZzsKKyAgICB3ZWJWaWV3
LT5wcml2LT5jb2xvckNob29zZXJSZXF1ZXN0ID0gcmVxdWVzdDsKKworICAgIHJldHVybiBUUlVF
OworfQorCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld1J1bkZpbGVDaG9vc2VyKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKIHsK
ICAgICBHdGtXaWRnZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJ
REdFVCh3ZWJWaWV3KSk7CkBAIC01NjYsNiArNjMwLDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAg
d2ViVmlld0NsYXNzLT5kZWNpZGVfcG9saWN5ID0gd2Via2l0V2ViVmlld0RlY2lkZVBvbGljeTsK
ICAgICB3ZWJWaWV3Q2xhc3MtPnBlcm1pc3Npb25fcmVxdWVzdCA9IHdlYmtpdFdlYlZpZXdQZXJt
aXNzaW9uUmVxdWVzdDsKICAgICB3ZWJWaWV3Q2xhc3MtPnJ1bl9maWxlX2Nob29zZXIgPSB3ZWJr
aXRXZWJWaWV3UnVuRmlsZUNob29zZXI7CisgICAgd2ViVmlld0NsYXNzLT5ydW5fY29sb3JfY2hv
b3NlciA9IHdlYmtpdFdlYlZpZXdSdW5Db2xvckNob29zZXI7CisgICAgd2ViVmlld0NsYXNzLT5o
aWRlX2NvbG9yX2Nob29zZXIgPSB3ZWJraXRXZWJWaWV3SGlkZUNvbG9yQ2hvb3NlcjsKIAogICAg
IC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6d2ViLWNvbnRleHQ6CkBAIC0xMTcyLDYgKzEyMzgs
NTggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmll
d0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVB
TiwgMSwgLyogbnVtYmVyIG9mIHBhcmFtZXRlcnMgKi8KICAgICAgICAgICAgICAgICAgICAgIFdF
QktJVF9UWVBFX0ZJTEVfQ0hPT1NFUl9SRVFVRVNUKTsKIAorICAgICAvKioKKyAgICAgKiBXZWJL
aXRXZWJWaWV3OjpydW4tY29sb3ItY2hvb3NlcjoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2Vi
S2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKiBAcmVxdWVz
dDogYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAorICAgICAqCisgICAgICogVGhpcyBzaWdu
YWwgaXMgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIGludGVyYWN0cyB3aXRoIGEgJmx0O2lucHV0Cisg
ICAgICogdHlwZT0nY29sb3InIC8mZ3Q7IEhUTUwgZWxlbWVudCwgcmVxdWVzdGluZyBmcm9tIFdl
YktpdCB0byBzaG93CisgICAgICogYSBkaWFsb2cgdG8gc2VsZWN0IGEgY29sb3IuIFRvIGxldCB0
aGUgYXBwbGljYXRpb24ga25vdyB0aGUgZGV0YWlscyBvZgorICAgICAqIHRoZSBjb2xvciBjaG9v
c2VyLCBhcyB3ZWxsIGFzIHRvIGFsbG93IHRoZSBjbGllbnQgYXBwbGljYXRpb24gdG8gZWl0aGVy
CisgICAgICogY2FuY2VsIHRoZSByZXF1ZXN0IG9yIHBlcmZvcm0gYW4gYWN0dWFsIGNvbG9yIHNl
bGVjdGlvbiwgdGhlIHNpZ25hbCB3aWxsCisgICAgICogcGFzcyBhbiBpbnN0YW5jZSBvZiB0aGUg
I1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgaW4gdGhlIEByZXF1ZXN0CisgICAgICogYXJndW1l
bnQuCisgICAgICoKKyAgICAgKiBUaGUgZGVmYXVsdCBzaWduYWwgaGFuZGxlciB3aWxsIGFzeW5j
aHJvbm91c2x5IHJ1biBhIHJlZ3VsYXIKKyAgICAgKiAjR3RrQ29sb3JDaG9vc2VyIGZvciB0aGUg
dXNlciB0byBpbnRlcmFjdCB3aXRoLgorICAgICAqCisgICAgICogUmV0dXJuczogJVRSVUUgdG8g
c3RvcCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4KKyAg
ICAgKiAgICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIuCisgICAgICoKKyAg
ICAgKi8KKyAgICBzaWduYWxzW1JVTl9DT0xPUl9DSE9PU0VSXSA9CisgICAgICAgIGdfc2lnbmFs
X25ldygicnVuLWNvbG9yLWNob29zZXIiLAorICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZS
T01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JV
Tl9MQVNULAorICAgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZp
ZXdDbGFzcywgcnVuX2NvbG9yX2Nob29zZXIpLAorICAgICAgICAgICAgICAgICAgICAgZ19zaWdu
YWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCAwIC8qIGFjY3VtdWxhdG9yIGRhdGEgKi8sCisg
ICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19PQkpFQ1QsCisgICAg
ICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwgLyogbnVtYmVyIG9mIHBhcmFtZXRl
cnMgKi8KKyAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVR
VUVTVCk7CisKKyAgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6aGlkZS1jb2xvci1jaG9v
c2VyOgorICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBz
aWduYWwgaXMgZW1pdHRlZAorICAgICAqIEByZXF1ZXN0OiBhICNXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0CisgICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gY29sb3IgcGlja2VyIG11c3QgYmUg
aGlkZGVuLiBUaGlzIGhhcHBlbnMgZm9yIGV4YW1wbGUgaWYgdGhlCisgICAgICogcGFnZSB0cmln
Z2VyaW5nIHRoZSByZXF1ZXN0IHVubG9hZHMgYmVmb3JlIHRoZSByZXF1ZXN0IGlzIGNvbXBsZXRl
ZC4KKyAgICAgKgorICAgICAqIFJldHVybnM6ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMg
ZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUgZXZlbnQuCisgICAgICogICAlRkFMU0UgdG8gcHJv
cGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgorICAgICAqCisgICAgICovCisgICAgc2lnbmFsc1tI
SURFX0NPTE9SX0NIT09TRVJdID0KKyAgICAgICAgZ19zaWduYWxfbmV3KCJoaWRlLWNvbG9yLWNo
b29zZXIiLAorICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0Ns
YXNzKSwKKyAgICAgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAg
ICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZpZXdDbGFzcywgaGlkZV9jb2xv
cl9jaG9vc2VyKSwKKyAgICAgICAgICAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3Ry
dWVfaGFuZGxlZCwgMCAvKiBhY2N1bXVsYXRvciBkYXRhICovLAorICAgICAgICAgICAgICAgICAg
ICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNULAorICAgICAgICAgICAgICAgICAgICAg
R19UWVBFX0JPT0xFQU4sIDEsIC8qIG51bWJlciBvZiBwYXJhbWV0ZXJzICovCisgICAgICAgICAg
ICAgICAgICAgICBXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QpOworCiAgICAgLyoq
CiAgICAgICogV2ViS2l0V2ViVmlldzo6Y29udGV4dC1tZW51OgogICAgICAqIEB3ZWJfdmlldzog
dGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZApAQCAtMTYw
Myw2ICsxNzIxLDIwIEBAIHZvaWQgd2Via2l0V2ViVmlld1J1bkZpbGVDaG9vc2VyUmVxdWVzdChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRGaWxlQ2hvb3NlCiAgICAgZ19zaWduYWxfZW1p
dCh3ZWJWaWV3LCBzaWduYWxzW1JVTl9GSUxFX0NIT09TRVJdLCAwLCByZXF1ZXN0LCAmcmV0dXJu
VmFsdWUpOwogfQogCitib29sIHdlYmtpdFdlYlZpZXdSdW5Db2xvckNob29zZXJSZXF1ZXN0KFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3Qp
Cit7CisgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3
LCBzaWduYWxzW1JVTl9DT0xPUl9DSE9PU0VSXSwgMCwgcmVxdWVzdCwgJnJldHVyblZhbHVlKTsK
KyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK2Jvb2wgd2Via2l0V2ViVmlld0hpZGVDb2xv
ckNob29zZXJSZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CisgICAgZ19z
aWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0hJREVfQ09MT1JfQ0hPT1NFUl0sIDAsIHJlcXVl
c3QsICZyZXR1cm5WYWx1ZSk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCiBzdGF0aWMg
Ym9vbCB3ZWJraXRXZWJWaWV3U2hvdWxkU2hvd0lucHV0TWV0aG9kc01lbnUoV2ViS2l0V2ViVmll
dyogd2ViVmlldykKIHsKICAgICBHdGtTZXR0aW5ncyogc2V0dGluZ3MgPSBndGtfd2lkZ2V0X2dl
dF9zZXR0aW5ncyhHVEtfV0lER0VUKHdlYlZpZXcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCA0MjExMGVjNDg2YWMyNzBkMThk
Njc0N2Y1Nzg5NGRhYTNmZjUwNTU5Li5kMGY3ODg3OTYxZTEzNTE0NmRiZDg1OGE1MDhhM2U0MjFj
YjU5YWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNC
YXNlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaD4KICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZpbGVDaG9vc2Vy
UmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RmluZENvbnRyb2xsZXIuaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdC5oPgpAQCAtMjAxLDYg
KzIwMiwxMCBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgZ2Jvb2xlYW4gICAo
KiBsZWF2ZV9mdWxsc2NyZWVuKSAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAg
ICp3ZWJfdmlldyk7CiAgICAgZ2Jvb2xlYW4gICAoKiBydW5fZmlsZV9jaG9vc2VyKSAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3Qg
ICAgKnJlcXVlc3QpOworICAgIGdib29sZWFuICAgKCogcnVuX2NvbG9yX2Nob29zZXIpICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dCAgICAqcmVxdWVzdCk7CisgICAgZ2Jvb2xlYW4gICAoKiBoaWRlX2NvbG9yX2Nob29zZXIpICAg
ICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0ICAgICpyZXF1ZXN0KTsKICAgICBnYm9vbGVhbiAgICgqIGNvbnRleHRfbWVudSkgICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbnRleHRNZW51ICAg
ICAgICAgICAqY29udGV4dF9tZW51LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdka0V2ZW50ICAgICAgICAgICAgICAgICAgICAqZXZlbnQsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZh
dGUuaAppbmRleCBlOWZhM2NhYjIzNGExMTkyMzk1MTU2NjJmZTlmY2UwODBlMmVjOTU5Li5mYzRl
YmVjMzUzMmI5M2MzZWQ4NWEwNTAyYzI5ODdiODAwOWM1NDgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKQEAg
LTQ5LDYgKzQ5LDggQEAgdm9pZCB3ZWJraXRXZWJWaWV3TW91c2VUYXJnZXRDaGFuZ2VkKFdlYktp
dFdlYlZpZXcqLCBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHQqLAogdm9pZCB3ZWJraXRXZWJWaWV3
UHJpbnRGcmFtZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Kik7CiB2b2lk
IHdlYmtpdFdlYlZpZXdSZXNvdXJjZUxvYWRTdGFydGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6
OldlYkZyYW1lUHJveHkqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdlYktpdFVSSVJl
cXVlc3QqKTsKIHZvaWQgd2Via2l0V2ViVmlld1J1bkZpbGVDaG9vc2VyUmVxdWVzdChXZWJLaXRX
ZWJWaWV3KiwgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0Kik7Citib29sIHdlYmtpdFdlYlZpZXdS
dW5Db2xvckNob29zZXJSZXF1ZXN0KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0Kik7Citib29sIHdlYmtpdFdlYlZpZXdIaWRlQ29sb3JDaG9vc2VyUmVxdWVzdChXZWJL
aXRXZWJWaWV3KiwgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCopOwogV2ViS2l0V2ViUmVzb3Vy
Y2UqIHdlYmtpdFdlYlZpZXdHZXRMb2FkaW5nV2ViUmVzb3VyY2UoV2ViS2l0V2ViVmlldyosIHVp
bnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7CiB2b2lkIHdlYmtpdFdlYlZpZXdSZW1vdmVMb2Fk
aW5nV2ViUmVzb3VyY2UoV2ViS2l0V2ViVmlldyosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmll
cik7CiBXZWJLaXRXZWJSZXNvdXJjZSogd2Via2l0V2ViVmlld1Jlc291cmNlTG9hZEZpbmlzaGVk
KFdlYktpdFdlYlZpZXcqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Mu
c2dtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1k
b2NzLnNnbWwKaW5kZXggNmU5NzI4NDY3YTc0YzNkYWY1ZGE2ZGNiMGZhZjc4YTRhODk3ZmM5NC4u
ZTg0OGUyZDU3M2NmZWVlODE1ZmRhZmNmZDA1Y2Q4YjQ0NTlhNGE0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9j
cy5zZ21sCkBAIC0zMCw2ICszMCw3IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktp
dFdlYlJlc291cmNlLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRFcnJv
ci54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0RmF2aWNvbkRhdGFiYXNl
LnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRGaWxlQ2hvb3NlclJl
cXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEZpbmRDb250cm9s
bGVyLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRDb29raWVNYW5hZ2Vy
LnhtbCIvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggMTI4ZTJiNTkwY2E3ZjgxMDUz
NGJmM2E0NWRlMDBmNzBiYTM2ODk4Ny4uNDYwNWU5ZTgxZmUwZjhiNGRmZWQ2NGY1M2RkMWQwMDk2
Yzk0NjU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC02NjksNiArNjY5LDI3IEBA
IHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlwZQogPC9TRUNUSU9OPgogCiA8U0VD
VElPTj4KKzxGSUxFPldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Q8L0ZJTEU+CitXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0Cit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9jdXJyZW50
X2NvbG9yCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvcgord2Via2l0
X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitX
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MKK1dFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJf
UkVRVUVTVAorV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVAorV0VCS0lUX0lTX0NPTE9SX0NI
T09TRVJfUkVRVUVTVAorV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVF9DTEFTUworV0VCS0lU
X0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVF9DTEFTUworV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVR
VUVTVF9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3RQcml2YXRlCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF90eXBlCis8
L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0RmluZENvbnRyb2xsZXI8L0ZJTEU+
CiBXZWJLaXRGaW5kQ29udHJvbGxlcgogV2ViS2l0RmluZE9wdGlvbnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcwppbmRl
eCA0ZDg4NDNlOWMxZDhjNmY0NGE3MGMxMTRjMjU5NGIyNmE0YmZkYzZlLi5lYjViMzk0YmY1MmVm
OWEzN2IwZGIzNDM3OTAyOWQ2ZGY2MGQyOGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCkBAIC0yMSwzICsyMSw0
IEBAIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF90eXBlCiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1
ZXN0X2dldF90eXBlCiB3ZWJraXRfY29udGV4dF9tZW51X2dldF90eXBlCiB3ZWJraXRfY29udGV4
dF9tZW51X2l0ZW1fZ2V0X3R5cGUKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X3R5
cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rl
c3RXZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCA2ZWQ0YTM4ZTMwMTE1YWJkMTA2YjViY2Vi
ZGY1ODNhY2EyOTQ4YmZkLi43MWRlNjIwNTQ3OTkzNWM5YjMxNTE1MjU5NTM2NDQ0YWM4N2RjNGNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0
V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC03OTYsNiArNzk2LDcwIEBAIHN0YXRpYyB2
b2lkIHRlc3RXZWJWaWV3RmlsZUNob29zZXJSZXF1ZXN0KEZpbGVDaG9vc2VyVGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKICAgICB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsKGZp
bGVDaG9vc2VyUmVxdWVzdCk7CiB9CiAKK2NsYXNzIENvbG9yQ2hvb3NlclRlc3Q6IHB1YmxpYyBV
SUNsaWVudFRlc3QgeworcHVibGljOgorICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoQ29sb3JD
aG9vc2VyVGVzdCk7CisgICAgQ29sb3JDaG9vc2VyVGVzdCgpCisgICAgeworICAgICAgICBnX3Np
Z25hbF9jb25uZWN0KG1fd2ViVmlldywgInJ1bi1jb2xvci1jaG9vc2VyIiwgR19DQUxMQkFDSyhy
dW5Db2xvckNob29zZXJDYWxsYmFjayksIHRoaXMpOworICAgIH0KKworICAgIHN0YXRpYyBnYm9v
bGVhbiBydW5Db2xvckNob29zZXJDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdCogcmVxdWVzdCwgQ29sb3JDaG9vc2VyVGVzdCogdGVzdCkKKyAgICB7Cisg
ICAgICAgIHRlc3QtPnJ1bkNvbG9yQ2hvb3NlcihyZXF1ZXN0KTsKKyAgICAgICAgcmV0dXJuIFRS
VUU7CisgICAgfQorCisgICAgdm9pZCBydW5Db2xvckNob29zZXIoV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdCogcmVxdWVzdCkKKyAgICB7CisgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdo
ZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QocmVxdWVzdCkpOworICAgICAgICBtX2NvbG9yQ2hvb3Nl
clJlcXVlc3QgPSByZXF1ZXN0OworICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3Ap
OworICAgIH0KKworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIGNsaWNrTW91c2VCdXR0
b25BbmRXYWl0Rm9yQ29sb3JDaG9vc2VyUmVxdWVzdChpbnQgeCwgaW50IHkpCisgICAgeworICAg
ICAgICBjbGlja01vdXNlQnV0dG9uKHgsIHkpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9t
YWluTG9vcCk7CisgICAgICAgIHJldHVybiBtX2NvbG9yQ2hvb3NlclJlcXVlc3QuZ2V0KCk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEdSZWZQdHI8V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdD4g
bV9jb2xvckNob29zZXJSZXF1ZXN0OworfTsKKworc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDb2xv
ckNob29zZXJSZXF1ZXN0KENvbG9yQ2hvb3NlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7
CisgICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbG9yQ2hvb3NlckhUTUwgPSAiPGh0bWw+PGJvZHk+PGlucHV0IHN0eWxl
PSdwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7bWFyZ2luOjA7cGFkZGluZzowJyB0eXBl
PSdjb2xvcicgdmFsdWU9JyNmZjAwMDAnLz48L2JvZHk+PC9odG1sPiI7CisgICAgdGVzdC0+bG9h
ZEh0bWwoY29sb3JDaG9vc2VySFRNTCwgMCk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlz
aGVkKCk7CisgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogY29sb3JDaG9vc2VyUmVxdWVz
dCA9IHRlc3QtPmNsaWNrTW91c2VCdXR0b25BbmRXYWl0Rm9yQ29sb3JDaG9vc2VyUmVxdWVzdCg1
LCA1KTsKKyAgICBHZGtSR0JBIGNvbG9yID0gd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9n
ZXRfY3VycmVudF9jb2xvcihjb2xvckNob29zZXJSZXF1ZXN0KTsKKyAgICBnX2Fzc2VydF9jbXBm
bG9hdChjb2xvci5yZWQsID09LCAxLjApOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLmdy
ZWVuLCA9PSwgMC4wKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChjb2xvci5ibHVlLCA9PSwgMC4w
KTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChjb2xvci5hbHBoYSwgPT0sIDEuMCk7CisKKyAgICB0
ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJ2lucHV0JykudmFsdWUgPSAnIzAwZmYwMCc7IiwgMCk7CisgICAgY29sb3IgPSB3ZWJr
aXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9jdXJyZW50X2NvbG9yKGNvbG9yQ2hvb3NlclJl
cXVlc3QpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLnJlZCwgPT0sIDAuMCk7CisgICAg
Z19hc3NlcnRfY21wZmxvYXQoY29sb3IuZ3JlZW4sID09LCAxLjApOworICAgIGdfYXNzZXJ0X2Nt
cGZsb2F0KGNvbG9yLmJsdWUsID09LCAwLjApOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9y
LmFscGhhLCA9PSwgMS4wKTsKKworICAgIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2Vs
ZWN0X2NvbG9yKGNvbG9yQ2hvb3NlclJlcXVlc3QsIChHZGtSR0JBKXswLjAsIDAuMCwgMS4wLCAx
LjB9KTsKKyAgICBjb2xvciA9IHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJl
bnRfY29sb3IoY29sb3JDaG9vc2VyUmVxdWVzdCk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQoY29s
b3IucmVkLCA9PSwgMC4wKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChjb2xvci5ncmVlbiwgPT0s
IDAuMCk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQoY29sb3IuYmx1ZSwgPT0sIDEuMCk7CisgICAg
Z19hc3NlcnRfY21wZmxvYXQoY29sb3IuYWxwaGEsID09LCAxLjApOworCisgICAgV2ViS2l0SmF2
YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRX
YWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZTsi
LCAwKTsKKyAgICBHT3duUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2Ny
aXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9jbXBz
dHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiIzAwMDBmZiIpOworfQorCiBjbGFzcyBGdWxsU2Ny
ZWVuQ2xpZW50VGVzdDogcHVibGljIFdlYlZpZXdUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dM
SUJfVEVTVF9GSVhUVVJFKEZ1bGxTY3JlZW5DbGllbnRUZXN0KTsKQEAgLTExMDUsNiArMTE2OSw3
IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBGb3JtQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJW
aWV3IiwgInN1Ym1pdC1mb3JtIiwgdGVzdFdlYlZpZXdTdWJtaXRGb3JtKTsKICAgICBTYXZlV2Vi
Vmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzYXZlIiwgdGVzdFdlYlZpZXdTYXZlKTsK
ICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInZpZXctbW9kZSIsIHRlc3RX
ZWJWaWV3TW9kZSk7CisgICAgQ29sb3JDaG9vc2VyVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3Iiwg
ImNvbG9yLWNob29zZXItcmVxdWVzdCIsIHRlc3RXZWJWaWV3Q29sb3JDaG9vc2VyUmVxdWVzdCk7
CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mi5oCmluZGV4IDFiNGZhODZhMWVjNDM0OWZhZGYwMzczYTQ3N2U4ZWI2Y2FjNWQ5MjIu
LjAzZDNkNjQ3ODVhODM3MWViMGRiMmRlZDJmOTNhMzQxODU0Mzg5MWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdEVudW1UeXBlcy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
RXJyb3IuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZhdmljb25EYXRhYmFzZS5oPgorI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRGaW5kQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Rm9ybVN1Ym1pc3Np
b25SZXF1ZXN0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dl
YkNvbG9yQ2hvb3NlclByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5NjU1OGNjYmVkYTJkODNh
NzlkY2FhYTU2NGVlYTU0ZTRlNmJlZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmNwcApAQCAtMCwwICsxLDYx
IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEyLCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcworICogICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAg
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuaCIKKworI2luY2x1ZGUg
IkNvbG9yLmgiCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCIK
KyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrOjpX
ZWJDb2xvckNob29zZXJQcm94eUd0ayhXZWJDb2xvckNob29zZXJQcm94eTo6Q2xpZW50KiBjbGll
bnQsIEd0a1dpZGdldCogd2ViVmlldywgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvciwgY29uc3Qg
SW50UmVjdCYgZWxlbWVudFJlY3QpCisgICAgOiBXZWJDb2xvckNob29zZXJQcm94eShjbGllbnQp
CisgICAgLCBtX3dlYlZpZXcod2ViVmlldykKK3sKKyAgICBtX3JlcXVlc3QgPSBhZG9wdEdSZWYo
R19PQkpFQ1Qod2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdENyZWF0ZShpbml0aWFsQ29sb3IsIG1f
Y2xpZW50KSkpOworICAgIGlmICghd2Via2l0V2ViVmlld1J1bkNvbG9yQ2hvb3NlclJlcXVlc3Qo
V0VCS0lUX1dFQl9WSUVXKG1fd2ViVmlldy5nZXQoKSksIFdFQktJVF9DT0xPUl9DSE9PU0VSX1JF
UVVFU1QobV9yZXF1ZXN0LmdldCgpKSkpCisgICAgICAgIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3Jl
cXVlc3RfY2FuY2VsKFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1QobV9yZXF1ZXN0LmdldCgp
KSk7Cit9CisKK3ZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHlHdGs6OnNldFNlbGVjdGVkQ29sb3Io
Y29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RT
ZXRDb2xvcihXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG1fcmVxdWVzdC5nZXQoKSksIGNv
bG9yKTsKK30KKwordm9pZCBXZWJDb2xvckNob29zZXJQcm94eUd0azo6ZW5kQ2hvb3NlcigpCit7
CisgICAgaWYgKCF3ZWJraXRXZWJWaWV3SGlkZUNvbG9yQ2hvb3NlclJlcXVlc3QoV0VCS0lUX1dF
Ql9WSUVXKG1fd2ViVmlldy5nZXQoKSksIFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1QobV9y
ZXF1ZXN0LmdldCgpKSkpCisgICAgICAgIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfY2Fu
Y2VsKFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1QobV9yZXF1ZXN0LmdldCgpKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hv
b3NlclByb3h5R3RrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hv
b3NlclByb3h5R3RrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzM2YjMzZmY4NTJhZDg0N2Y3MDNhYmZmNjlkNzJm
ODE4ZDU0ZmQwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29w
eXJpZ2h0IChjKSAyMDEyLCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQgbm90aWNlLAorICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAq
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJDb2xvckNob29zZXJQcm94eUd0a19oCisjZGVmaW5lIFdlYkNvbG9yQ2hvb3NlclBy
b3h5R3RrX2gKKworI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5LmgiCisjaW5jbHVkZSA8
Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbG9yOworY2xhc3MgSW50UmVjdDsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrIDogIHB1YmxpYyBX
ZWJDb2xvckNob29zZXJQcm94eSB7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
ZWJDb2xvckNob29zZXJQcm94eT4gY3JlYXRlKFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQq
IGNsaWVudCwgR3RrV2lkZ2V0KiB3ZWJWaWV3LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlh
bENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsoY2xpZW50LCB3
ZWJWaWV3LCBpbml0aWFsQ29sb3IsIGVsZW1lbnRSZWN0KSk7CisgICAgfQorICAgIHZvaWQgc2V0
U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOworICAgIHZvaWQgZW5kQ2hvb3Nl
cigpOworCitwcml2YXRlOgorICAgIFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrKFdlYkNvbG9yQ2hv
b3NlclByb3h5OjpDbGllbnQqLCBHdGtXaWRnZXQqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKworICAgIEdSZWZQdHI8R09iamVjdD4gbV9yZXF1ZXN0
OworICAgIEdSZWZQdHI8R3RrV2lkZ2V0PiBtX3dlYlZpZXc7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrX2gKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXIKaW5kZXggMzFlYTllMTNiNmUwZTA4ODY3ODFjZGZjYmE0MDNkZGE2NzUy
MDM4Yi4uNWM5NDY2NTE1MDdlNDU2OTlkZDllZmZkZGU1MzgzZjI2MTk2NmI2MyAxMDA2NDQKLS0t
IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xz
L3N5bWJvbHMuZmlsdGVyCkBAIC0yMzYsNiArMjM2LDggQEAgX1pON1dlYkNvcmUxOFN0eWxlU2hl
ZXRDb250ZW50c0QxRXY7CiBfWk43V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bjEyYWRkVXNlclNoZWV0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4U3R5bGVTaGVldENvbnRlbnRz
RUVFOwogX1pON1dlYkNvcmUyOERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24xNGFkZEF1dGhv
clNoZWV0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4U3R5bGVTaGVldENvbnRlbnRzRUVFOwogX1pO
N1dlYkNvcmU0S1VSTDEwaW52YWxpZGF0ZUV2OworX1pON1dlYkNvcmU1Q29sb3JDMUVSS04zV1RG
NlN0cmluZ0U7CitfWk43V2ViQ29yZTE2SFRNTElucHV0RWxlbWVudDI1c2VsZWN0Q29sb3JJbkNv
bG9yQ2hvb3NlckVSS05TXzVDb2xvckU7CiAKIGxvY2FsOgogX1oqOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQyMTkyMTRjYmMzYTQ0ODRmY2Yx
ZjE1MDBjYzRiZjI1OThmMTQ2ZjkuLjk1NzJlYTIxODI5MWE3YjEyNmYzNTFkMWE4NjIxNGI3OGZk
MzYwOGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMi0yMCAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmll
ckBzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBjb2xv
ciBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTg5MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
bmFibGUgaW5wdXQgdHlwZSBjb2xvciBpbiBmZWF0dXJlIGxpc3QuCisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG06CisKIDIwMTItMTEtMDkgIEFybmF1ZCBSZW5l
dmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBbR1RLXSBhZGQg
bGlic2NyZXQgdG8gamhidWlsZCBzeXN0ZW0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJl
TGlzdC5wbQppbmRleCAyZjQ1ZWYzYWQyZDE3MjYyZjE5NGM4YTQ2ZDg2ZDIxMGM0MjVmOWNlLi5m
ZGU5ZmIwODAxMjY3MDYxZGI1NDBhZWI5NjEzMDUzZDc2ZmM3NTUxIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC0yNzIsNyArMjcyLDcgQEAgbXkgQGZlYXR1cmVz
ID0gKAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfSU5QVVRfU1BFRUNIIiwgZGVmYXVsdCA9PiAw
LCB2YWx1ZSA9PiBcJGlucHV0U3BlZWNoU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gImlu
cHV0LXR5cGUtY29sb3IiLCBkZXNjID0+ICJUb2dnbGUgSW5wdXQgVHlwZSBDb2xvciBzdXBwb3J0
IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IiLCBkZWZhdWx0ID0+
IChpc0JsYWNrQmVycnkoKSB8fCBpc0VmbCgpIHx8IGlzUXQoKSksIHZhbHVlID0+IFwkaW5wdXRU
eXBlQ29sb3JTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlBVVF9UWVBFX0NP
TE9SIiwgZGVmYXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSB8fCBpc1F0KCkgfHwg
aXNHdGsoKSksIHZhbHVlID0+IFwkaW5wdXRUeXBlQ29sb3JTdXBwb3J0IH0sCiAKICAgICB7IG9w
dGlvbiA9PiAiaW5wdXQtdHlwZS1kYXRlIiwgZGVzYyA9PiAiVG9nZ2xlIElucHV0IFR5cGUgRGF0
ZSBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOUFVUX1RZUEVfREFURSIsIGRl
ZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRpbnB1dFR5cGVEYXRlU3VwcG9ydCB9LApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc2
YWE2NjIzMzhjYjgyZTYyOTMxNWI4ZjRmMGQyOTgyNmJlMDFhNzcuLmQwY2Y5ODY5NzFhYzVlMGNl
Y2NkM2NmYTExMTQwZDdjNjAyNDI1ZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0xMi0y
MCAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1bmcuY29tPgorCisgICAg
ICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBjb2xvciBpbnB1dAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgY29sb3IgaW5wdXQgdGVzdHMuCisK
KyAgICAgICAgTW9kaWZ5IGlucHV0LWNvbG9yLW9uY2hhbmdlLWV2ZW50LWV4cGVjdGVkLnR4dCBi
ZWNhdXNlIGl0IGRpZCBub3QgdGFrZQorICAgICAgICBpbnRvIGFjY291bnQgdGhlIHNlY29uZCBk
ZXNjcmlwdGlvbiBwaHJhc2UuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2NvbG9yL2lucHV0LWNv
bG9yLW9uY2hhbmdlLWV2ZW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9mb3Jtcy9jb2xv
ci9pbnB1dC1hcHBlYXJhbmNlLWNvbG9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTItMTIt
MTQgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAg
ICAgICBpbmNvbnNpc3RlbmN5IGluIGRyYXdJbWFnZSB3aXRoIHRhcmdldCByZWN0IG5lZ2F0aXZl
IGRpbWVuc2lvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2NvbG9yL2lu
cHV0LWNvbG9yLW9uY2hhbmdlLWV2ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvY29sb3IvaW5wdXQtY29sb3Itb25jaGFuZ2UtZXZlbnQtZXhwZWN0ZWQudHh0CmluZGV4
IGExY2Q2ODUzOTNjMjU3NTBmNGVhNDQ2MDdlMTJjODNiNWM0ZWM3YjMuLmM4NzlhMGI3YzkyNDY0
NDU3OWEyMmNkZWE4ZWE4NDU3YWU0Y2VlOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvY29sb3IvaW5wdXQtY29sb3Itb25jaGFuZ2UtZXZlbnQtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvY29sb3IvaW5wdXQtY29sb3Itb25jaGFuZ2UtZXZlbnQt
ZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNSBAQAotVGVzdCBpZiBjaGFuZ2UgZXZlbnQgZmlyZXMg
cHJvcGVybHkgd2hlbiBjb2xvciBjaG9vc2VyIGNoYW5nZXMuIEJ1ZyA2Njg0OAorVGVzdCBpZiBj
aGFuZ2UgZXZlbnQgZmlyZXMgcHJvcGVybHkgd2hlbiBjb2xvciBjaG9vc2VyIGNoYW5nZXMuIEJ1
ZyA2Njg0OCAKK1RvIG1hbnVhbGx5IHRlc3QgdGhpcywgY2xpY2sgb24gdGhlIGlucHV0IGNvbG9y
IGVsZW1lbnQgaW4gdGhlIHRvcCBsZWZ0IGNvcm5lciBhbmQgY2hhbmdlIHRoZSB2YWx1ZSBmcm9t
IHRoZSBjb2xvciBjaG9vc2VyLiBTZWUgaWYgdGhlIG51bWJlciBvZiAidmFsdWUgY2hhbmdlZCIg
bWVzc2FnZXMgbWF0Y2hlcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHlvdSBjaGFuZ2VkIHRoZSBjb2xv
ci4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDkxZGU3OTRlMTI5YTY0Zjk2YjUyNDFiM2FjYjZhNjc5
ZmU4NjU4NjAuLmIyNDA3ZmI4YTNjYzQ5MzAwNWRhYTdhNTA5Nzc4NDlhMDE4NDEyZTUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0xOTMsOSArMTkzLDYg
QEAgd2Via2l0Lm9yZy9iLzk4OTMzIHN0b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2Uvc3Rv
cmFnZXRyYWNrZXIgWyBTa2lwIF0KICMgRGF0YWxpc3QgaXMgbm90IHlldCBlbmFibGVkLgogd2Vi
a2l0Lm9yZy9iLzk4OTM0IGZhc3QvZm9ybXMvZGF0YWxpc3QgWyBTa2lwIF0KIAotIyBDb2xvciBp
bnB1dCBpcyBub3QgeWV0IGVuYWJsZWQuCi13ZWJraXQub3JnL2IvOTg5MzUgZmFzdC9mb3Jtcy9j
b2xvciBbIFNraXAgXQotCiAjIEVOQUJMRV9JTlBVVF9UWVBFXyogYXJlIG5vdCBlbmFibGVkLgog
d2Via2l0Lm9yZy9iLzk4OTM2IGZhc3QvZm9ybXMvZGF0ZSBbIFNraXAgXQogd2Via2l0Lm9yZy9i
Lzk4OTM2IGZhc3QvZm9ybXMvZGF0ZS1tdWx0aXBsZS1maWVsZHMgWyBTa2lwIF0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Zvcm1zL2NvbG9yL2lucHV0LWFwcGVh
cmFuY2UtY29sb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3Qv
Zm9ybXMvY29sb3IvaW5wdXQtYXBwZWFyYW5jZS1jb2xvci1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWM0YWYxODczOGM3YzVjYTBmMWM3NGNkNjk5OTk1NTlmOTM3MjViZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2Zvcm1zL2NvbG9yL2lucHV0LWFw
cGVhcmFuY2UtY29sb3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTE1IEBACitsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xh
eWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0
CisgICAgICBSZW5kZXJCbG9jayB7SDN9IGF0ICgwLDApIHNpemUgNzg0eDIyCisgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2NHgyMgorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDE2NDogIkRlZmF1bHQgQXBwZWFyYW5jZSIKKyAgICAgIFJlbmRlckJs
b2NrIChhbm9ueW1vdXMpIGF0ICgwLDQwKSBzaXplIDc4NHg0MQorICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0NTZ4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA0NTY6ICJMaXN0IGNvbG9yIGNvbnRyb2xzIGhhdmUgZGlmZmVyZW50IGFwcGVhcmFu
Y2UgaWYgRU5BQkxFKERBVEFMSVNUKS4iCisgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDQ1Niwx
NSkgc2l6ZSAweDAKKyAgICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAoMCwxOCkgc2l6ZSA0
NHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAg
ICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElWfSBhdCAoMywzKSBzaXplIDM4
eDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0KSBzaXplIDM0eDkgW2Jn
Y29sb3I9IzAwMDAwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjNzc3Nzc3KV0KKyAgICAgICAgUmVu
ZGVyQmxvY2sge0lOUFVUfSBhdCAoNDQsMTgpIHNpemUgNDR4MjMgW2JnY29sb3I9I0ZGRkZGRl0g
W2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3gge0RJVn0gYXQgKDMsMykgc2l6ZSAzOHgxNworICAgICAgICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAzNHg5IFtiZ2NvbG9yPSMwMDAwMDBdIFtib3JkZXI6
ICgxcHggc29saWQgIzc3Nzc3NyldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDB4MAorICAgICAgUmVuZGVyQmxvY2sge0gzfSBhdCAoMCw5OSkgc2l6ZSA3ODR4MjIK
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTYweDIyCisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTYwOiAiRGlmZmVyZW50IEZvbnQgU2l6ZXMiCisg
ICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxMzkpIHNpemUgNzg0eDQ0CisgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDU3N3gxOQorICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDU3NzogIkxpc3QgY29sb3IgY29udHJvbHMgaGF2ZSBkaWZm
ZXJlbnQgc2l6ZXMgZGVwZW5kaW5nIG9uIGZvbnQgc2l6ZXMuIE5vcm1hbCBjb2xvciBjb250cm9s
cyBkb24ndC4iCisgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDU3NywxNSkgc2l6ZSAweDAKKyAg
ICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAoMCwxOCkgc2l6ZSA0NHgyMyBbYmdjb2xvcj0j
RkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAgICAgICAgIFJlbmRlckRl
cHJlY2F0ZWRGbGV4aWJsZUJveCB7RElWfSBhdCAoMywzKSBzaXplIDM4eDE3CisgICAgICAgICAg
ICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0KSBzaXplIDM0eDkgW2JnY29sb3I9IzAwRkYwMF0g
W2JvcmRlcjogKDFweCBzb2xpZCAjNzc3Nzc3KV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICg0NCwyNikgc2l6ZSA0eDE5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDQ0LDI2KSB3aWR0
aCA0OiAiICIKKyAgICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAoNDgsMTgpIHNpemUgNDR4
MjMgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAg
ICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0gYXQgKDMsMykgc2l6ZSAzOHgx
NworICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAzNHg5IFtiZ2Nv
bG9yPSMwMEZGMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzc3Nzc3NyldCisgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoOTIsMjYpIHNpemUgNHgxOQorICAgICAgICAgIHRleHQgcnVuIGF0
ICg5MiwyNikgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDk2
LDE4KSBzaXplIDQ0eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQgIzAw
MDAwMCldCisgICAgICAgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgz
LDMpIHNpemUgMzh4MTcKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNp
emUgMzR4OSBbYmdjb2xvcj0jMDBGRjAwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICM3Nzc3NzcpXQor
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE0MCwyNikgc2l6ZSA0eDE5CisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDE0MCwyNikgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRlckJsb2Nr
IHtJTlBVVH0gYXQgKDE0NCwxOCkgc2l6ZSA0NHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVy
OiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveCB7RElWfSBhdCAoMywzKSBzaXplIDM4eDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMiw0KSBzaXplIDM0eDkgW2JnY29sb3I9IzAwRkYwMF0gW2JvcmRlcjogKDFweCBz
b2xpZCAjNzc3Nzc3KV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxODgsMjYpIHNp
emUgNHgxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICgxODgsMjYpIHdpZHRoIDQ6ICIgIgorICAg
ICAgICBSZW5kZXJCbG9jayB7SU5QVVR9IGF0ICgxOTIsMTgpIHNpemUgNDR4MjMgW2JnY29sb3I9
I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0gYXQgKDMsMykgc2l6ZSAzOHgxNworICAgICAgICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAzNHg5IFtiZ2NvbG9yPSMwMEZGMDBd
IFtib3JkZXI6ICgxcHggc29saWQgIzc3Nzc3NyldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMjM2LDI2KSBzaXplIDR4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjM2LDI2KSB3
aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAoMjQwLDE4KSBzaXpl
IDQ0eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisg
ICAgICAgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUg
Mzh4MTcKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMzR4OSBb
Ymdjb2xvcj0jMDBGRjAwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICM3Nzc3NzcpXQorICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJlbmRlckJsb2NrIHtI
M30gYXQgKDAsMjAxKSBzaXplIDc4NHgyMgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAxMjR4MjIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjQ6
ICJWYXJpb3VzIENvbG9ycyIKKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDI0
MSkgc2l6ZSA3ODR4MjYKKyAgICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAoMCwwKSBzaXpl
IDQ0eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisg
ICAgICAgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUg
Mzh4MTcKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMzR4OSBb
Ymdjb2xvcj0jRkYwMDAwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICM3Nzc3NzcpXQorICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDQ0LDgpIHNpemUgNHgxOQorICAgICAgICAgIHRleHQgcnVu
IGF0ICg0NCw4KSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAo
NDgsMCkgc2l6ZSA0NHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0ICMw
MDAwMDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElWfSBhdCAo
MywzKSBzaXplIDM4eDE3CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0KSBz
aXplIDM0eDkgW2JnY29sb3I9IzAwRkYwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjNzc3Nzc3KV0K
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg5Miw4KSBzaXplIDR4MTkKKyAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoOTIsOCkgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRlckJsb2NrIHtJ
TlBVVH0gYXQgKDk2LDApIHNpemUgNDR4MjMgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJw
eCBpbnNldCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gg
e0RJVn0gYXQgKDMsMykgc2l6ZSAzOHgxNworICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDIsNCkgc2l6ZSAzNHg5IFtiZ2NvbG9yPSMwMDAwRkZdIFtib3JkZXI6ICgxcHggc29saWQg
Izc3Nzc3NyldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTQwLDgpIHNpemUgNHgx
OQorICAgICAgICAgIHRleHQgcnVuIGF0ICgxNDAsOCkgd2lkdGggNDogIiAiCisgICAgICAgIFJl
bmRlckJsb2NrIHtJTlBVVH0gYXQgKDE0NCwwKSBzaXplIDQ0eDIzIFtiZ2NvbG9yPSNGRkZGRkZd
IFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisgICAgICAgICAgUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUgMzh4MTcKKyAgICAgICAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMzR4OSBbYmdjb2xvcj0jRUMwMDhDXSBbYm9yZGVy
OiAoMXB4IHNvbGlkICM3Nzc3NzcpXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE4
OCw4KSBzaXplIDR4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTg4LDgpIHdpZHRoIDQ6ICIg
IgorICAgICAgICBSZW5kZXJCbG9jayB7SU5QVVR9IGF0ICgxOTIsMCkgc2l6ZSA0NHgyMyBbYmdj
b2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAgICAgICAgIFJl
bmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElWfSBhdCAoMywzKSBzaXplIDM4eDE3CisgICAg
ICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0KSBzaXplIDM0eDkgW2JnY29sb3I9IzQw
RTBEMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjNzc3Nzc3KV0KKyAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgyMzYsOCkgc2l6ZSA0eDE5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDIzNiw4
KSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAoMjQwLDApIHNp
emUgNDR4MjMgW2JnY29sb3I9I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0K
KyAgICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0gYXQgKDMsMykgc2l6
ZSAzOHgxNworICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAzNHg5
IFtiZ2NvbG9yPSNGRjAwMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzc3Nzc3NyldCisgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMjg0LDgpIHNpemUgNHgxOQorICAgICAgICAgIHRleHQg
cnVuIGF0ICgyODQsOCkgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0g
YXQgKDI4OCwwKSBzaXplIDQ0eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5z
ZXQgIzAwMDAwMCldCisgICAgICAgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9
IGF0ICgzLDMpIHNpemUgMzh4MTcKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgy
LDQpIHNpemUgMzR4OSBbYmdjb2xvcj0jMDBGRjAwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICM3Nzc3
NzcpXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDMzMiw4KSBzaXplIDR4MTkKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMzMyLDgpIHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5kZXJC
bG9jayB7SU5QVVR9IGF0ICgzMzYsMCkgc2l6ZSA0NHgyMyBbYmdjb2xvcj0jRkZGRkZGXSBbYm9y
ZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAgICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4
aWJsZUJveCB7RElWfSBhdCAoMywzKSBzaXplIDM4eDE3CisgICAgICAgICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMiw0KSBzaXplIDM0eDkgW2JnY29sb3I9IzAwMDBGRl0gW2JvcmRlcjogKDFw
eCBzb2xpZCAjNzc3Nzc3KV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgzODAsOCkg
c2l6ZSA0eDE5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDM4MCw4KSB3aWR0aCA0OiAiICIKKyAg
ICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAoMzg0LDApIHNpemUgNDR4MjMgW2JnY29sb3I9
I0ZGRkZGRl0gW2JvcmRlcjogKDJweCBpbnNldCAjMDAwMDAwKV0KKyAgICAgICAgICBSZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3gge0RJVn0gYXQgKDMsMykgc2l6ZSAzOHgxNworICAgICAgICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsNCkgc2l6ZSAzNHg5IFtiZ2NvbG9yPSNFQzAwOENd
IFtib3JkZXI6ICgxcHggc29saWQgIzc3Nzc3NyldCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoNDI4LDgpIHNpemUgNHgxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICg0MjgsOCkgd2lk
dGggNDogIiAiCisgICAgICAgIFJlbmRlckJsb2NrIHtJTlBVVH0gYXQgKDQzMiwwKSBzaXplIDQ0
eDIzIFtiZ2NvbG9yPSNGRkZGRkZdIFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisgICAg
ICAgICAgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94IHtESVZ9IGF0ICgzLDMpIHNpemUgMzh4
MTcKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDQpIHNpemUgMzR4OSBbYmdj
b2xvcj0jNDBFMEQwXSBbYm9yZGVyOiAoMXB4IHNvbGlkICM3Nzc3NzcpXQorICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJlbmRlckJsb2NrIHtIM30g
YXQgKDAsMjg1KSBzaXplIDc4NHgyMgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSAxMTd4MjIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMTc6ICJB
cmJpdHJhcnkgU2l6ZSIKKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDMyNSkg
c2l6ZSA3ODR4MzAKKyAgICAgICAgUmVuZGVyQmxvY2sge0lOUFVUfSBhdCAoMCwwKSBzaXplIDEw
MHgzMCBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0ICMwMDAwMDApXQorICAg
ICAgICAgIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveCB7RElWfSBhdCAoMywzKSBzaXplIDk0
eDI0CisgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiw0KSBzaXplIDkweDE2IFti
Z2NvbG9yPSNGRjAwMDBdIFtib3JkZXI6ICgxcHggc29saWQgIzc3Nzc3NyldCmRpZmYgLS1naXQg
YS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMTAwM2U3OWU1MGI1ZDhlYmJkNjJiYmIxMzNi
NTlmN2MxNmQwODMxMS4uODVlYWZjOGViZmUzYzE3ZWRiOWE4ZGI2NDI5MmRiN2EzYzQwMTQ0NiAx
MDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDEyLTEyLTIwICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGV4cG9ydCBXZWJDb3JlOjpDb2xv
cjo6Q29sb3IoV1RGOjpTdHJpbmcgY29uc3QmKSBhbmQKKyAgICAgICAgV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6c2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlcihXZWJDb3JlOjpDb2xvcgorICAg
ICAgICBjb25zdCYpCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
OgorCiAyMDEyLTEwLTEwICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgW0d0a10gdG9vIGxvbmcgZnVuY3Rpb24gaW4gYW5pbWF0aW9uIHNj
cmlwdCBjYXVzZSByZXBhaW50IHRvIG5ldmVyIGhhcHBlbi4K
</data>
<flag name="review"
          id="198617"
          type_id="1"
          status="-"
          setter="cgarcia"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181399</attachid>
            <date>2013-01-04 15:42:56 -0800</date>
            <delta_ts>2013-01-15 15:29:47 -0800</delta_ts>
            <desc>new patch iteration</desc>
            <filename>color.patch</filename>
            <type>text/plain</type>
            <size>52251</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">Y29tbWl0IDk5ODQ1YjJhOTg4MjRjYTU5ODEzZGNlMzJlZDE4MGE0NTA1OGY4N2UKQXV0aG9yOiBB
cm5hdWQgUmVuZXZpZXIgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KRGF0ZTogICBGcmkg
RGVjIDIxIDE1OjI4OjU3IDIwMTIgLTA4MDAKCiAgICBpbnB1dCBjb2xvcgoKZGlmZiAtLWdpdCBh
L0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxMDAzZTc5Li44NWVhZmM4IDEwMDY0NAotLS0g
YS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTItMjAg
IEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAg
ICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY29sb3IgaW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZXhwb3J0IFdlYkNvcmU6OkNvbG9yOjpDb2xvcihX
VEY6OlN0cmluZyBjb25zdCYpIGFuZAorICAgICAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjpzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKFdlYkNvcmU6OkNvbG9yCisgICAgICAgIGNvbnN0
JikKKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTIt
MTAtMTAgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KIAog
ICAgICAgICBbR3RrXSB0b28gbG9uZyBmdW5jdGlvbiBpbiBhbmltYXRpb24gc2NyaXB0IGNhdXNl
IHJlcGFpbnQgdG8gbmV2ZXIgaGFwcGVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE4ZDYzMjUuLjI0ZjQyNzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMi0yMCAgQXJuYXVkIFJlbmV2aWVy
ICA8YS5yZW5ldmllckBzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBw
b3J0IGZvciBjb2xvciBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTg5MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFbmFibGUgaW5wdXQgdHlwZSBjb2xvciBpbiBmZWF0dXJlIGxpc3QuCisKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5mZWF0dXJlcy5hbS5pbjoKKwogMjAxMy0wMS0wMyAgQXJuYXVk
IFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IGNhbm5vdCB1bmRvY2sgaW5zcGVjdG9yIHdoZW4gd2luZG93IHNpemUgaXMgdG9v
IHNtYWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5mZWF0dXJlcy5h
bS5pbiBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmZlYXR1cmVzLmFtLmluCmluZGV4IGQx
OGZjNzEuLjE2ZjM5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmZl
YXR1cmVzLmFtLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmZlYXR1cmVzLmFt
LmluCkBAIC00MCw3ICs0MCw3IEBAIGZlYXR1cmVfZGVmaW5lc19kZWZhdWx0cyArPSBcCiAJRU5B
QkxFX0lGUkFNRV9TRUFNTEVTUz0xIFwKIAlFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRT0wIFwKIAlF
TkFCTEVfSU5QVVRfU1BFRUNIPTAgXAotCUVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SPTAgXAorCUVO
QUJMRV9JTlBVVF9UWVBFX0NPTE9SPTEgXAogCUVOQUJMRV9JTlBVVF9UWVBFX0RBVEU9MCBcCiAJ
RU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUU9MCBcCiAJRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJ
TUVMT0NBTD0wIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA3YzViOWM0Li42N2M4MDhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMTItMzEgIEFybmF1ZCBSZW5ldmllciAg
PGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9y
dCBmb3IgY29sb3IgaW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk4OTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9y
Q2hvb3NlcgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2hyb21lQ2xpZW50KToKKwogMjAxMi0x
MC0wMSAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtHdGtdIHRvbyBsb25nIGZ1bmN0aW9uIGluIGFuaW1hdGlvbiBzY3JpcHQgY2F1c2Ug
cmVwYWludCB0byBuZXZlciBoYXBwZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCAwYWQzZDk3Li42YTg5ZjZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5jcHAKQEAgLTc3LDYgKzc3LDEwIEBACiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgi
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorI2luY2x1ZGUgIkNvbG9y
Q2hvb3NlckNsaWVudC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgzNiw2ICs4NDAsMTIgQEAgdm9pZCBDaHJvbWVDbGllbnQ6
OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2
NF90KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK1Bhc3NPd25QdHI8Q29sb3JDaG9vc2Vy
PiBDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqLCBj
b25zdCBDb2xvciYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKwogdm9pZCBDaHJvbWVDbGllbnQ6OnJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQ
dHI8RmlsZUNob29zZXI+IHBycEZpbGVDaG9vc2VyKQogewogICAgIEdSZWZQdHI8V2ViS2l0Rmls
ZUNob29zZXJSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdF9maWxlX2Nob29zZXJf
cmVxdWVzdF9jcmVhdGUocHJwRmlsZUNob29zZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKaW5kZXggYTAxZmQzMy4uNWQ2MGYw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmgKQEAgLTM2LDYgKzM2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcg
V2ViS2l0V2ViVmlldzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUG9wdXBNZW51Q2xp
ZW50OworY2xhc3MgQ29sb3I7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTIwLDYgKzEy
MSwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICNlbmRpZgogICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmln
aW4qLCBpbnQ2NF90IHRvdGFsU3BhY2VOZWVkZWQpOworCisjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCisgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxDb2xvckNob29zZXI+IGNyZWF0ZUNv
bG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqLCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9y
KTsKKyNlbmRpZgorCiAgICAgICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQ
YXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBsb2FkSWNvbkZv
ckZpbGVzKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBGaWxlSWNvbkxvYWRlciopOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggMjEzNjE3ZS4uM2JlZjIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBA
CisyMDEyLTEyLTIwICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5j
b20+CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBpbnB1dCBj
b2xvciB0eXBlIGZvciBXZWJLaXQyLgorCisgICAgICAgIEltcGxlbWVudCBzaG93Q29sb3JQaWNr
ZXIgYW5kIGhpZGVDb2xvclBpY2tlciBVSSBjbGllbnQgY2FsbGJhY2tzLiBBcworICAgICAgICBh
IGZhbGxiYWNrLCBpbXBsZW1lbnQgV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuCisKKyAgICAgICAg
QWRkIGEgZW5kQ29sb3JDaG9vc2VyIG1ldGhvZCB0byBXZWJDb2xvclBpY2tlclJlc3VsdExpc3Rl
bmVyUHJveHkgdG8KKyAgICAgICAgYmUgYWJsZSB0byBjYW5jZWwgdGhlIHJlcXVlc3Qgd2l0aG91
dCBzZWxlY3RpbmcgYSBjb2xvci4KKworICAgICAgICBTaW1pbGFybHkgdG8gd2hhdCBoYXBwZW5z
IGZvciBmaWxlIGNob29zZXIsIHdoZW4gYSBjb2xvciBjaG9vc2VyIGlzCisgICAgICAgIG5lZWRl
ZCwgd2UgZW1pdCBhIHJ1bi1jb2xvci1jaG9vc2VyIHNpZ25hbCB3aXRoIGEKKyAgICAgICAgV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdCBvYmplY3QuIElmIHRoZSBzaWduYWwgaXMgbm90IGhhbmRs
ZWQgYnkgdGhlCisgICAgICAgIGFwcGxpY2F0aW9uLCB3ZSBzaG93IGEgR3RrR3RrQ29sb3JDaG9v
c2VyRGlhbG9nLgorCisgICAgICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgQVBJIGFsbG93
cyB0byByZWFkIGN1cnJlbnQgY29sb3IgKGVpdGhlcgorICAgICAgICBpbml0aWFsIGNvbG9yIHNl
dCBieSBXZWJDb3JlIG9yIGxhdGVyLCBjb2xvciBzZWxlY3RlZCBieSB1c2VyKSwgdG8KKyAgICAg
ICAgc2VsZWN0IGEgY29sb3IsIG9yIHRvIGNhbmNlbCBhIHJlcXVlc3QuCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9y
Q2hvb3NlclByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdFByaXZhdGUpOgorICAgICAgICAod2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdEdldFByb3Bl
cnR5KToKKyAgICAgICAgKHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RTZXRQcm9wZXJ0eSk6Cisg
ICAgICAgICh3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAg
ICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwpOgorICAgICAgICAod2Via2l0
X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3IpOgorICAgICAgICAod2Via2l0X2Nv
bG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcik6CisgICAgICAgICh3ZWJraXRD
b2xvckNob29zZXJSZXF1ZXN0Q3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFdlYkNvbG9yQ2hvb3Nl
clJlcXVlc3RTZXRDb2xvcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0KToKKyAgICAgICAgKF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRl
Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNw
cDoKKyAgICAgICAgKHNob3dDb2xvclBpY2tlcik6CisgICAgICAgIChoaWRlQ29sb3JQaWNrZXIp
OgorICAgICAgICAoYXR0YWNoVUlDbGllbnRUb1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoX1dlYktpdFdlYlZpZXdQcml2YXRl
KToKKyAgICAgICAgKGNvbG9yQ2hvb3NlclJlcXVlc3RDaGFuZ2VDYWxsYmFjayk6CisgICAgICAg
ICh3ZWJraXRXZWJWaWV3Q2xvc2VDb2xvckNob29zZXIpOgorICAgICAgICAoY29sb3JDaG9vc2Vy
RGlhbG9nUmVzcG9uc2VDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3UnVuQ29sb3JD
aG9vc2VyKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdSdW5Db2xvckNob29zZXJSZXF1ZXN0KToKKyAgICAgICAgKHdlYmtpdFdl
YlZpZXdDbG9zZUNvbG9yQ2hvb3NlclJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3Q2xhc3MpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlczoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgIChh
c3NlcnRDb2xvcklzRXF1YWwpOgorICAgICAgICAodGVzdFdlYlZpZXdDb2xvckNob29zZXJSZXF1
ZXN0KToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3Rl
bmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBpY2tlclJlc3VsdExpc3Rl
bmVyUHJveHk6OmVuZENvbG9yQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaDoKKyAgICAgICAg
KFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNz
L2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlHdGs6OldlYkNvbG9yQ2hv
b3NlclByb3h5R3RrKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlHdGs6
OmVuZENob29zZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViQ29sb3JDaG9vc2VyUHJv
eHlHdGsuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJDb2xvckNob29zZXJQcm94eUd0ayk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bG9yQ2hvb3NlclByb3h5R3RrOjpjcmVhdGUpOgorCiAyMDEzLTAxLTAzICBBcm5hdWQgUmVuZXZp
ZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgY3Jhc2ggd2l0aCBz
bWFsbCB3aW5kb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGQ3NzY4NWYuLjdi
NTE1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysr
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtOTYsNiArOTYsNyBAQCB3
ZWJraXQyX2hfYXBpICs9IFwKIHdlYmtpdDJndGtfaF9hcGkgKz0gXAogCSQoV2ViS2l0MikvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0LmggXAogCSQoV2ViS2l0MikvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oIFwKKwkkKFdlYktpdDIp
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaCBcCiAJJChXZWJL
aXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oIFwKIAkkKFdlYktpdDIp
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oIFwKIAkkKFdlYktp
dDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oIFwKQEAgLTY0MSw2
ICs2NDIsOSBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCiAJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUu
aCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudVByaXZhdGUuaCBcCkBAIC03OTQsNiAr
Nzk4LDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggYmY2MTYyNC4u
MTkxZTIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFn
ZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1Bh
Z2VDbGllbnRJbXBsLmNwcApAQCAtNDQsNiArNDQsMTAgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94eUd0ay5oIgor
I2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTIzMSwxMCArMjM1LDkgQEAgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBQYWdl
Q2xpZW50SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHIKIH0KIAogI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQotUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4g
UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBhZ2VQcm94eSosIGNv
bnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCitQYXNzUmVmUHRy
PFdlYkNvbG9yQ2hvb3NlclByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JDaG9vc2Vy
UHJveHkoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENv
bG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBXZWJDb2xvckNob29zZXJQcm94
eUd0azo6Y3JlYXRlKHBhZ2UsIG1fdmlld1dpZGdldCwgaW5pdGlhbENvbG9yLCBlbGVtZW50UmVj
dCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWU4ODA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHAK
QEAgLTAsMCArMSwxOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAq
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJXZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbmNs
dWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisvKioK
KyAqIFNFQ1RJT046IFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAqIEBTaG9ydF9kZXNjcmlw
dGlvbjogQSByZXF1ZXN0IHRvIG9wZW4gYSBjb2xvciBjaG9vc2VyCisgKiBAVGl0bGU6IFdlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3QKKyAqIEBTZWVfYWxzbzogI1dlYktpdFdlYlZpZXcKKyAqCisg
KiBXaGVuZXZlciB0aGUgdXNlciBpbnRlcmFjdHMgd2l0aCBhbiAmbHQ7aW5wdXQgdHlwZT0nY29s
b3InIC8mZ3Q7CisgKiBIVE1MIGVsZW1lbnQsIFdlYktpdCB3aWxsIG5lZWQgdG8gc2hvdyBhIGRp
YWxvZyB0byBjaG9vc2UgYSBjb2xvci4gRm9yIHRoYXQKKyAqIHRvIGhhcHBlbiBpbiBhIGdlbmVy
YWwgd2F5LCBpbnN0ZWFkIG9mIGp1c3Qgb3BlbmluZyBhICNHdGtDb2xvckNob29zZXIKKyAqICh3
aGljaCBtaWdodCBiZSBub3QgZGVzaXJhYmxlIGluIHNvbWUgY2FzZXMsIHdoaWNoIGNvdWxkIHBy
ZWZlciB0byB1c2UgdGhlaXIKKyAqIG93biBjb2xvciBjaG9vc2VyIGRpYWxvZyksIFdlYktpdCB3
aWxsIGZpcmUgdGhlCisgKiAjV2ViS2l0V2ViVmlldzo6cnVuLWNvbG9yLWNob29zZXIgc2lnbmFs
IHdpdGggYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAorICogb2JqZWN0LCB3aGljaCB3aWxs
IGFsbG93IHRoZSBjbGllbnQgYXBwbGljYXRpb24gdG8gc3BlY2lmeSB0aGUgY29sb3IgdG8gYmUK
KyAqIHNlbGVjdGVkLCB0byBpbnNwZWN0IHRoZSBkZXRhaWxzIG9mIHRoZSByZXF1ZXN0IChlLmcu
IHRvIGdldCBpbml0aWFsIGNvbG9yKQorICogYW5kIHRvIGNhbmNlbCB0aGUgcmVxdWVzdCwgaW4g
Y2FzZSBub3RoaW5nIHdhcyBzZWxlY3RlZC4KKyAqCisgKiBJbiBjYXNlIHRoZSBjbGllbnQgYXBw
bGljYXRpb24gZG9lcyBub3Qgd2lzaCB0byBoYW5kbGUgdGhpcyBzaWduYWwsCisgKiBXZWJLaXQg
d2lsbCBwcm92aWRlIGEgZGVmYXVsdCBoYW5kbGVyIHdoaWNoIHdpbGwgYXN5bmNocm9ub3VzbHkg
cnVuCisgKiBhIHJlZ3VsYXIgI0d0a0NvbG9yQ2hvb3NlciBmb3IgdGhlIHVzZXIgdG8gaW50ZXJh
Y3Qgd2l0aC4KKyAqLworCitzdHJ1Y3QgX1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRl
IHsKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBXZWJDb2xvclBpY2tlclJlc3Vs
dExpc3RlbmVyUHJveHkqIGxpc3RlbmVyOworI2VuZGlmCisgICAgR2RrUkdCQSBjb2xvcjsKKyAg
ICBib29sIGhhbmRsZWRSZXF1ZXN0OworfTsKKworV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QsIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3QsIEdfVFlQRV9P
QkpFQ1QpCisKK2VudW0geworICAgIFBST1BfMCwKKworICAgIFBST1BfQ09MT1IKK307CisKK3N0
YXRpYyB2b2lkIHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RHZXRQcm9wZXJ0eShHT2JqZWN0KiBv
YmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVj
KQoreworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRfQ09M
T1JfQ0hPT1NFUl9SRVFVRVNUKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAg
IGNhc2UgUFJPUF9DT0xPUjoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm94ZWQodmFsdWUsICZyZXF1
ZXN0LT5wcml2LT5jb2xvcik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1T
cGVjKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RT
ZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHVlKiB2
YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQoreworICAgIFdlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iamVjdCk7CisK
KyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2UgUFJPUF9DT0xPUjoKKyAgICAgICAgaWYg
KEdka1JHQkEqIGNvbG9yID0gc3RhdGljX2Nhc3Q8R2RrUkdCQSo+KGdfdmFsdWVfZ2V0X2JveGVk
KHZhbHVlKSkpCisgICAgICAgICAgICByZXF1ZXN0LT5wcml2LT5jb2xvciA9ICpjb2xvcjsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElE
X1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOworICAgIH0KK30KKworc3Rh
dGljIHZvaWQgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jbGFzc19pbml0KFdlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3RDbGFzcyogcmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RDbGFz
cyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworICAgIG9iamVj
dENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0R2V0UHJvcGVy
dHk7CisgICAgb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdENvbG9yQ2hvb3NlclJl
cXVlc3RTZXRQcm9wZXJ0eTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6Y29sb3I6
CisgICAgICoKKyAgICAgKiBUaGUgI0dka1JHQkEgY29sb3Igb2YgdGhlIHJlcXVlc3QKKyAgICAg
Ki8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9DT0xPUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib3hlZCgiY29sb3IiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJD
dXJyZW50IGNvbG9yIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF8oIlRoZSBjdXJyZW50IGNvbG9yIGZvciB0aGUgcmVxdWVzdCIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
REtfVFlQRV9SR0JBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKKworfQorCisvKioKKyAqIHdl
YmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsOgorICogQHJlcXVlc3Q6IGEgI1dlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3QKKyAqCisgKiBBc2sgV2ViS2l0IHRvIGNhbmNlbCB0aGUgcmVx
dWVzdC4gSXQncyBpbXBvcnRhbnQgdG8gZG8gdGhpcyBpbiBjYXNlCisgKiBubyBzZWxlY3Rpb24g
aGFzIGJlZW4gbWFkZSBpbiB0aGUgY2xpZW50LCBvdGhlcndpc2UgdGhlIHJlcXVlc3QKKyAqIHdv
bid0IGJlIHByb3Blcmx5IGNvbXBsZXRlZCBhbmQgdGhlIGJyb3dzZXIgd2lsbCBrZWVwIHRoZSBy
ZXF1ZXN0CisgKiBwZW5kaW5nIGZvcmV2ZXIsIHdoaWNoIG1pZ2h0IGNhdXNlIHRoZSBicm93c2Vy
IHRvIGhhbmcuCisgKi8KK3ZvaWQgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwo
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBpZiAocmVxdWVzdC0+
cHJpdi0+aGFuZGxlZFJlcXVlc3QpCisgICAgICAgIHJldHVybjsKKyAgICByZXF1ZXN0LT5wcml2
LT5oYW5kbGVkUmVxdWVzdCA9IFRSVUU7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisg
ICAgcmVxdWVzdC0+cHJpdi0+bGlzdGVuZXItPmVuZENvbG9yQ2hvb3NlcigpOworI2VuZGlmCit9
CisKKy8qKgorICogd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3I6Cisg
KiBAcmVxdWVzdDogYSAjV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0CisgKiBAY29sb3I6IGEgcG9p
bnRlciAjR2RrUkdCQQorICoKKyAqIEFzayBXZWJLaXQgdG8gc2VsZWN0IGNvbG9yIGFuZCBjb21w
bGV0ZSB0aGUgcmVxdWVzdC4KKyAqLwordm9pZCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0
X3NlbGVjdF9jb2xvcihXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBH
ZGtSR0JBKiBjb2xvcikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19DT0xPUl9D
SE9PU0VSX1JFUVVFU1QocmVxdWVzdCkpOworICAgIGlmIChyZXF1ZXN0LT5wcml2LT5oYW5kbGVk
UmVxdWVzdCkKKyAgICAgICAgcmV0dXJuOworICAgIHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1
ZXN0ID0gVFJVRTsKKworICAgIHJlcXVlc3QtPnByaXYtPmNvbG9yID0gKmNvbG9yOworI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIHJlcXVlc3QtPnByaXYtPmxpc3RlbmVyLT5zZXRD
b2xvcihDb2xvcihyZXF1ZXN0LT5wcml2LT5jb2xvcikuc2VyaWFsaXplZCgpKTsKKyNlbmRpZgor
fQorCisvKioKKyAqIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29s
b3I6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAorICoKKyAqIFJl
dHVybnM6IHRoZSBjdXJyZW50IGNvbG9yIG9mIHJlcXVlc3QuIFdoaWxlIG5vIGNvbG9yIGhhcyBi
ZWVuIHNlbGVjdGVkLCBpdAorICogaXMgdGhlIGluaXRpYWwgdmFsdWUgZGVmaW5lZCBieSBXZWJL
aXQuIFdoZW4gYSBjb2xvciBoYXMgYmVlbiBzZWxlY3RlZCwgdGhpcworICogYmVjb21lcyB0aGUg
c2VsZWN0ZWQgdmFsdWUuCisgKi8KK0dka1JHQkEqIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVl
c3RfZ2V0X2N1cnJlbnRfY29sb3IoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFV
RVNUKHJlcXVlc3QpLCBOVUxMKTsKKworICAgIHJldHVybiAmcmVxdWVzdC0+cHJpdi0+Y29sb3I7
Cit9CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK1dlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3QqIHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RDcmVhdGUoY29uc3QgQ29sb3ImIGluaXRp
YWxDb2xvciwgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5KiBsaXN0ZW5lcikKK3sK
KyAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX0NPTE9SX0NI
T09TRVJfUkVRVUVTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFV
RVNULCBOVUxMKSk7CisgICAgcmVxdWVzdC0+cHJpdi0+bGlzdGVuZXIgPSBsaXN0ZW5lcjsKKyAg
ICByZXF1ZXN0LT5wcml2LT5jb2xvciA9IGluaXRpYWxDb2xvcjsKKyAgICByZXR1cm4gcmVxdWVz
dDsKK30KKwordm9pZCB3ZWJraXRXZWJDb2xvckNob29zZXJSZXF1ZXN0U2V0Q29sb3IoV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAg
IGlmIChnZGtfcmdiYV9lcXVhbCgmY29sb3IsICZyZXF1ZXN0LT5wcml2LT5jb2xvcikpCisgICAg
ICAgIHJldHVybjsKKyAgICByZXF1ZXN0LT5wcml2LT5jb2xvciA9IGNvbG9yOworICAgIGdfb2Jq
ZWN0X25vdGlmeShHX09CSkVDVChyZXF1ZXN0KSwgImNvbG9yIik7Cit9CisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9y
Q2hvb3NlclJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGQ4
ZDJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodCBub3RpY2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICog
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYg
IWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElM
QVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQg
ZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdF9o
CisjZGVmaW5lIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RfaAorCisjaW5jbHVkZSA8Z3RrL2d0
ay5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xT
CisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUICAgICAgICAgICAg
KHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lU
X0NPTE9SX0NIT09TRVJfUkVRVUVTVChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNU
QU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QsIFdlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3QpKQorI2RlZmluZSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFV
RVNUX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdF
QktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCwgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dENsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVChvYmopICAg
ICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9DT0xP
Ul9DSE9PU0VSX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFV
RVNUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJ
VF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9DT0xPUl9DSE9P
U0VSX1JFUVVFU1RfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChv
YmopLCAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNULCBXZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0Q2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCAgICAgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdDsKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUg
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdCB7CisgICAgR09iamVjdCBwYXJlbnQ7CisKKyAgICAvKjwgcHJpdmF0ZSA+
Ki8KKyAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZSAqcHJpdjsKK307CisKK3N0
cnVjdCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdENsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3Mg
cGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2NvbG9yX2Nob29z
ZXJfcmVxdWVzdF9nZXRfdHlwZSAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIEdka1JH
QkEgKgord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvciAgKFdl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3QgKnJlcXVlc3QpOworCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yICAgICAgIChXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0ICpyZXF1ZXN0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHZGtSR0JBICpjb2xvcik7CisKK1dFQktJVF9BUEkg
dm9pZAord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwgICAgICAgICAgICAgKFdl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3QgKnJlcXVlc3QpOworCitHX0VORF9ERUNMUworCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmMwNWUwNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5o
CkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAq
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3RQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGVfaAor
CisjaW5jbHVkZSAiV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmgiCisjaW5jbHVk
ZSAiV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYktpdFByaXZhdGUu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9D
T0xPUikKKworV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogd2Via2l0Q29sb3JDaG9vc2VyUmVx
dWVzdENyZWF0ZShjb25zdCBXZWJDb3JlOjpDb2xvciYsIFdlYktpdDo6V2ViQ29sb3JQaWNrZXJS
ZXN1bHRMaXN0ZW5lclByb3h5Kik7Cit2b2lkIHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RF
bmQoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCopOwordm9pZCB3ZWJraXRXZWJDb2xvckNob29z
ZXJSZXF1ZXN0U2V0Q29sb3IoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCosIGNvbnN0IFdlYkNv
cmU6OkNvbG9yJik7CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKworI2Vu
ZGlmIC8vIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCAwMGQ2
NWVkLi42MzM2Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0zMCw2ICszMCwxMCBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogCisj
aWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdFByaXZhdGUuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBz
dGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVz
dFJlZiwgV0tEaWN0aW9uYXJ5UmVmIHdrV2luZG93RmVhdHVyZXMsIFdLRXZlbnRNb2RpZmllcnMs
IFdLRXZlbnRNb3VzZUJ1dHRvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTE1Nyw2ICsx
NjEsMjEgQEAgc3RhdGljIHZvaWQgcnVuTW9kYWwoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCiAgICAgd2Via2l0V2ViVmlld1J1bkFzTW9kYWwoV0VCS0lUX1dFQl9WSUVX
KGNsaWVudEluZm8pKTsKIH0KIAorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorc3RhdGlj
IHZvaWQgc2hvd0NvbG9yUGlja2VyKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgaW5pdGlhbENvbG9y
LCBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCit7CisgICAgV2ViQ29yZTo6Q29sb3IgY29sb3IgPSBXZWJDb3JlOjpDb2xvcihX
ZWJLaXQ6OnRvV1RGU3RyaW5nKGluaXRpYWxDb2xvcikpOworICAgIEdSZWZQdHI8V2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJraXRDb2xvckNob29zZXJS
ZXF1ZXN0Q3JlYXRlKGNvbG9yLCB0b0ltcGwobGlzdGVuZXIpKSk7CisgICAgaWYgKCF3ZWJraXRX
ZWJWaWV3UnVuQ29sb3JDaG9vc2VyUmVxdWVzdChXRUJLSVRfV0VCX1ZJRVcoY2xpZW50SW5mbyks
IHJlcXVlc3QuZ2V0KCkpKQorICAgICAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2Nh
bmNlbChyZXF1ZXN0LmdldCgpKTsKK30KKworc3RhdGljIHZvaWQgaGlkZUNvbG9yUGlja2VyKFdL
UGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICB3ZWJraXRXZWJWaWV3Q2xv
c2VDb2xvckNob29zZXJSZXF1ZXN0KFdFQktJVF9XRUJfVklFVyhjbGllbnRJbmZvKSk7Cit9Cisj
ZW5kaWYKKwogdm9pZCBhdHRhY2hVSUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KQogewogICAgIFdLUGFnZVVJQ2xpZW50IHdrVUlDbGllbnQgPSB7CkBAIC0yMDUsOCArMjI0LDEz
IEBAIHZvaWQgYXR0YWNoVUlDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAg
ICAgICAgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQsCiAgICAgICAgIDAsIC8vIGRlY2lkZVBvbGlj
eUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0CiAgICAgICAgIDAsIC8vIHVuYXZhaWxh
YmxlUGx1Z2luQnV0dG9uQ2xpY2tlZAorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAg
ICAgICBzaG93Q29sb3JQaWNrZXIsCisgICAgICAgIGhpZGVDb2xvclBpY2tlciwKKyNlbHNlCiAg
ICAgICAgIDAsIC8vIHNob3dDb2xvclBpY2tlcgogICAgICAgICAwLCAvLyBoaWRlQ29sb3JQaWNr
ZXIKKyNlbmRpZgogICAgIH07CiAgICAgV0tQYWdlUmVmIHdrUGFnZSA9IHRvQVBJKHdlYmtpdFdl
YlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSkpOwogICAgIFdL
UGFnZVNldFBhZ2VVSUNsaWVudCh3a1BhZ2UsICZ3a1VJQ2xpZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZDBlYzhj
OS4uOTE0MjQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHAKQEAgLTEwNyw2ICsxMDcsOSBAQCBlbnVtIHsKIAogICAgIFJVTl9G
SUxFX0NIT09TRVIsCiAKKyAgICBSVU5fQ09MT1JfQ0hPT1NFUiwKKyAgICBDTE9TRV9DT0xPUl9D
SE9PU0VSLAorCiAgICAgQ09OVEVYVF9NRU5VLAogICAgIENPTlRFWFRfTUVOVV9ESVNNSVNTRUQs
CiAKQEAgLTE3OCw2ICsxODEsOSBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAg
ICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gZmF2aWNvbkNhbmNlbGxhYmxlOwogICAgIENTdHJpbmcg
ZmF2aWNvblVSSTsKICAgICB1bnNpZ25lZCBsb25nIGZhdmljb25DaGFuZ2VkSGFuZGxlcklEOwor
CisgICAgR3RrV2lkZ2V0KiBjb2xvckNob29zZXJEaWFsb2c7CisgICAgR1JlZlB0cjxXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0PiBjb2xvckNob29zZXJSZXF1ZXN0OwogfTsKIAogc3RhdGljIGd1
aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwpAQCAtNDE2LDYgKzQyMiw1NCBAQCBz
dGF0aWMgdm9pZCBmaWxlQ2hvb3NlckRpYWxvZ1Jlc3BvbnNlQ2FsbGJhY2soR3RrRGlhbG9nKiBk
aWFsb2csIGdpbnQgcmVzcG9uc2VJRAogICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VU
KGRpYWxvZykpOwogfQogCitzdGF0aWMgdm9pZCBjb2xvckNob29zZXJSZXF1ZXN0Q2hhbmdlQ2Fs
bGJhY2soR09iamVjdCogb2JqZWN0LCBHUGFyYW1TcGVjKiwgR3RrV2lkZ2V0KiBkaWFsb2cpCit7
CisgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9DT0xPUl9D
SE9PU0VSX1JFUVVFU1Qob2JqZWN0KTsKKworICAgIEdka1JHQkEqIGNvbG9yID0gd2Via2l0X2Nv
bG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcihyZXF1ZXN0KTsKKyAgICBndGtf
Y29sb3JfY2hvb3Nlcl9zZXRfcmdiYShHVEtfQ09MT1JfQ0hPT1NFUihkaWFsb2cpLCBjb2xvcik7
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDbG9zZUNvbG9yQ2hvb3NlcihXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGlmICh3ZWJWaWV3LT5wcml2LT5jb2xvckNob29zZXJS
ZXF1ZXN0KSB7CisgICAgICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXctPnByaXYtPmNvbG9yQ2hv
b3NlclJlcXVlc3QuZ2V0KCkpOworICAgICAgICB3ZWJWaWV3LT5wcml2LT5jb2xvckNob29zZXJS
ZXF1ZXN0LmNsZWFyKCk7CisgICAgfQorICAgIGlmICh3ZWJWaWV3LT5wcml2LT5jb2xvckNob29z
ZXJEaWFsb2cpCisgICAgICAgIGd0a193aWRnZXRfZGVzdHJveSh3ZWJWaWV3LT5wcml2LT5jb2xv
ckNob29zZXJEaWFsb2cpOworfQorCitzdGF0aWMgdm9pZCBjb2xvckNob29zZXJEaWFsb2dSZXNw
b25zZUNhbGxiYWNrKEd0a1dpZGdldCogZGlhbG9nLCBnaW50IHJlc3BvbnNlSUQsIFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCit7CisgICAgaWYgKHJlc3BvbnNlSUQgPT0gR1RLX1JFU1BPTlNFX09L
KSB7CisgICAgICAgIEdka1JHQkEgY29sb3I7CisgICAgICAgIGd0a19jb2xvcl9jaG9vc2VyX2dl
dF9yZ2JhKEdUS19DT0xPUl9DSE9PU0VSKGRpYWxvZyksICZjb2xvcik7CisgICAgICAgIHdlYmtp
dF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yKHdlYlZpZXctPnByaXYtPmNvbG9y
Q2hvb3NlclJlcXVlc3QuZ2V0KCksICZjb2xvcik7CisgICAgfSBlbHNlCisgICAgICAgIHdlYmtp
dF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsKHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3Nl
clJlcXVlc3QuZ2V0KCkpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld1J1bkNv
bG9yQ2hvb3NlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0KiByZXF1ZXN0KQoreworICAgIGdfb2JqZWN0X3JlZihHX09CSkVDVChyZXF1ZXN0KSk7Cisg
ICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURH
RVQod2ViVmlldykpOworICAgIGlmICghIXdpZGdldElzT25zY3JlZW5Ub3BsZXZlbFdpbmRvdyh0
b3BsZXZlbCkpCisgICAgICAgIHRvcGxldmVsID0gMDsKKyAgICBHdGtXaWRnZXQqIGRpYWxvZyA9
ICBndGtfY29sb3JfY2hvb3Nlcl9kaWFsb2dfbmV3KF8oIlNlbGVjdCBDb2xvciIpLCBHVEtfV0lO
RE9XKHRvcGxldmVsKSk7CisKKyAgICBndGtfY29sb3JfY2hvb3Nlcl9zZXRfcmdiYShHVEtfQ09M
T1JfQ0hPT1NFUihkaWFsb2cpLCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9jdXJy
ZW50X2NvbG9yKHJlcXVlc3QpKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QocmVxdWVzdCwgIm5v
dGlmeTo6Y29sb3IiLCBHX0NBTExCQUNLKGNvbG9yQ2hvb3NlclJlcXVlc3RDaGFuZ2VDYWxsYmFj
ayksIGRpYWxvZyk7CisgICAgZ19zaWduYWxfY29ubmVjdChkaWFsb2csICJyZXNwb25zZSIsIEdf
Q0FMTEJBQ0soY29sb3JDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFjayksIHdlYlZpZXcpOwor
ICAgIGd0a193aWRnZXRfc2hvdyhkaWFsb2cpOworCisgICAgd2ViVmlldy0+cHJpdi0+Y29sb3JD
aG9vc2VyRGlhbG9nID0gZGlhbG9nOworICAgIHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3NlclJl
cXVlc3QgPSByZXF1ZXN0OworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKIHN0YXRpYyBnYm9vbGVh
biB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2Vi
S2l0RmlsZUNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIEd0a1dpZGdldCogdG9wbGV2
ZWwgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKQEAgLTU2
Niw2ICs2MjAsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJL
aXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICB3ZWJWaWV3Q2xhc3MtPmRlY2lkZV9w
b2xpY3kgPSB3ZWJraXRXZWJWaWV3RGVjaWRlUG9saWN5OwogICAgIHdlYlZpZXdDbGFzcy0+cGVy
bWlzc2lvbl9yZXF1ZXN0ID0gd2Via2l0V2ViVmlld1Blcm1pc3Npb25SZXF1ZXN0OwogICAgIHdl
YlZpZXdDbGFzcy0+cnVuX2ZpbGVfY2hvb3NlciA9IHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3Nl
cjsKKyAgICB3ZWJWaWV3Q2xhc3MtPnJ1bl9jb2xvcl9jaG9vc2VyID0gd2Via2l0V2ViVmlld1J1
bkNvbG9yQ2hvb3NlcjsKKyAgICB3ZWJWaWV3Q2xhc3MtPmNsb3NlX2NvbG9yX2Nob29zZXIgPSB3
ZWJraXRXZWJWaWV3Q2xvc2VDb2xvckNob29zZXI7CiAKICAgICAvKioKICAgICAgKiBXZWJLaXRX
ZWJWaWV3OndlYi1jb250ZXh0OgpAQCAtMTE3Miw2ICsxMjI4LDU2IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNz
KQogICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDEsIC8qIG51bWJlciBvZiBw
YXJhbWV0ZXJzICovCiAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9GSUxFX0NIT09T
RVJfUkVRVUVTVCk7CiAKKyAgICAgLyoqCisgICAgICAqIFdlYktpdFdlYlZpZXc6OnJ1bi1jb2xv
ci1jaG9vc2VyOgorICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGlj
aCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgICogQHJlcXVlc3Q6IGEgI1dlYktpdENvbG9y
Q2hvb3NlclJlcXVlc3QKKyAgICAgICoKKyAgICAgICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3
aGVuIHRoZSB1c2VyIGludGVyYWN0cyB3aXRoIGEgJmx0O2lucHV0CisgICAgICAqIHR5cGU9J2Nv
bG9yJyAvJmd0OyBIVE1MIGVsZW1lbnQsIHJlcXVlc3RpbmcgZnJvbSBXZWJLaXQgdG8gc2hvdwor
ICAgICAgKiBhIGRpYWxvZyB0byBzZWxlY3QgYSBjb2xvci4gVG8gbGV0IHRoZSBhcHBsaWNhdGlv
biBrbm93IHRoZSBkZXRhaWxzIG9mCisgICAgICAqIHRoZSBjb2xvciBjaG9vc2VyLCBhcyB3ZWxs
IGFzIHRvIGFsbG93IHRoZSBjbGllbnQgYXBwbGljYXRpb24gdG8gZWl0aGVyCisgICAgICAqIGNh
bmNlbCB0aGUgcmVxdWVzdCBvciBwZXJmb3JtIGFuIGFjdHVhbCBjb2xvciBzZWxlY3Rpb24sIHRo
ZSBzaWduYWwgd2lsbAorICAgICAgKiBwYXNzIGFuIGluc3RhbmNlIG9mIHRoZSAjV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdCBpbiB0aGUgQHJlcXVlc3QKKyAgICAgICogYXJndW1lbnQuCisgICAg
ICAqCisgICAgICAqIFRoZSBkZWZhdWx0IHNpZ25hbCBoYW5kbGVyIHdpbGwgYXN5bmNocm9ub3Vz
bHkgcnVuIGEgcmVndWxhcgorICAgICAgKiAjR3RrQ29sb3JDaG9vc2VyIGZvciB0aGUgdXNlciB0
byBpbnRlcmFjdCB3aXRoLgorICAgICAgKgorICAgICAgICogUmV0dXJuczogJVRSVUUgdG8gc3Rv
cCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4KKyAgICAg
ICogICAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgorICAgICAgKgorICAg
ICAgKi8KKyAgICBzaWduYWxzW1JVTl9DT0xPUl9DSE9PU0VSXSA9CisgICAgICAgIGdfc2lnbmFs
X25ldygicnVuLWNvbG9yLWNob29zZXIiLAorICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZS
T01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JV
Tl9MQVNULAorICAgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZp
ZXdDbGFzcywgcnVuX2NvbG9yX2Nob29zZXIpLAorICAgICAgICAgICAgICAgICAgICAgZ19zaWdu
YWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCAwIC8qIGFjY3VtdWxhdG9yIGRhdGEgKi8sCisg
ICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19PQkpFQ1QsCisgICAg
ICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwgLyogbnVtYmVyIG9mIHBhcmFtZXRl
cnMgKi8KKyAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVR
VUVTVCk7CisKKyAgICAgLyoqCisgICAgICAqIFdlYktpdFdlYlZpZXc6OmNsb3NlLWNvbG9yLWNo
b29zZXI6CisgICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRo
ZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAgKgorICAgICAgKiBFbWl0dGVkIHdoZW4gY29sb3Ig
cGlja2VyIG11c3QgYmUgaGlkZGVuLiBUaGlzIGhhcHBlbnMgZm9yIGV4YW1wbGUgaWYgdGhlCisg
ICAgICAqIHBhZ2UgdHJpZ2dlcmluZyB0aGUgcmVxdWVzdCB1bmxvYWRzIGJlZm9yZSB0aGUgcmVx
dWVzdCBpcyBjb21wbGV0ZWQuCisgICAgICAqCisgICAgICAqIFJldHVybnM6ICVUUlVFIHRvIHN0
b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUgZXZlbnQuCisgICAg
ICAqICAgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4KKyAgICAgICoKKyAg
ICAgICovCisgICAgc2lnbmFsc1tDTE9TRV9DT0xPUl9DSE9PU0VSXSA9CisgICAgICAgIGdfc2ln
bmFsX25ldygiY2xvc2UtY29sb3ItY2hvb3NlciIsCisgICAgICAgICAgICAgICAgICAgICBHX1RZ
UEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgICAgICAgICAgR19TSUdO
QUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0
V2ViVmlld0NsYXNzLCBjbG9zZV9jb2xvcl9jaG9vc2VyKSwKKyAgICAgICAgICAgICAgICAgICAg
IDAsIDAsCisgICAgICAgICAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fVk9J
RCwKKyAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsKKwogICAgIC8qKgogICAg
ICAqIFdlYktpdFdlYlZpZXc6OmNvbnRleHQtbWVudToKICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAj
V2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKQEAgLTE2MDMsNiAr
MTcwOSwxOSBAQCB2b2lkIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgV2ViS2l0RmlsZUNob29zZQogICAgIGdfc2lnbmFsX2VtaXQod2Vi
Vmlldywgc2lnbmFsc1tSVU5fRklMRV9DSE9PU0VSXSwgMCwgcmVxdWVzdCwgJnJldHVyblZhbHVl
KTsKIH0KIAorYm9vbCB3ZWJraXRXZWJWaWV3UnVuQ29sb3JDaG9vc2VyUmVxdWVzdChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQorewor
ICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2ln
bmFsc1tSVU5fQ09MT1JfQ0hPT1NFUl0sIDAsIHJlcXVlc3QsICZyZXR1cm5WYWx1ZSk7CisgICAg
cmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIHdlYmtpdFdlYlZpZXdDbG9zZUNvbG9yQ2hv
b3NlclJlcXVlc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnYm9vbGVhbiByZXR1
cm5WYWx1ZTsKKyAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbQ0xPU0VfQ09MT1Jf
Q0hPT1NFUl0sIDAsICZyZXR1cm5WYWx1ZSk7Cit9CisKIHN0YXRpYyBib29sIHdlYmtpdFdlYlZp
ZXdTaG91bGRTaG93SW5wdXRNZXRob2RzTWVudShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewog
ICAgIEd0a1NldHRpbmdzKiBzZXR0aW5ncyA9IGd0a193aWRnZXRfZ2V0X3NldHRpbmdzKEdUS19X
SURHRVQod2ViVmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5oCmluZGV4IDQyMTEwZWMuLmYzMTg2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDx3ZWJraXQy
L1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5l
cy5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oPgogI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXRGaW5kQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Rm9y
bVN1Ym1pc3Npb25SZXF1ZXN0Lmg+CkBAIC0yMDEsNiArMjAyLDkgQEAgc3RydWN0IF9XZWJLaXRX
ZWJWaWV3Q2xhc3MgewogICAgIGdib29sZWFuICAgKCogbGVhdmVfZnVsbHNjcmVlbikgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogICAgIGdib29sZWFu
ICAgKCogcnVuX2ZpbGVfY2hvb3NlcikgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0ICAgICpyZXF1ZXN0KTsKKyAgICBnYm9vbGVh
biAgICgqIHJ1bl9jb2xvcl9jaG9vc2VyKSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgICAgKnJlcXVlc3QpOworICAgIHZvaWQg
ICAgICAgKCogY2xvc2VfY29sb3JfY2hvb3NlcikgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgICAqd2ViX3ZpZXcpOwogICAgIGdib29sZWFuICAgKCogY29udGV4dF9tZW51KSAgICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29udGV4dE1lbnUg
ICAgICAgICAgICpjb250ZXh0X21lbnUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR2RrRXZlbnQgICAgICAgICAgICAgICAgICAgICpldmVudCwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IGU5ZmEzY2EuLjNmZWE5ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtNDksNiAr
NDksOCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdNb3VzZVRhcmdldENoYW5nZWQoV2ViS2l0V2ViVmll
dyosIFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdCosCiB2b2lkIHdlYmtpdFdlYlZpZXdQcmludEZy
YW1lKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqKTsKIHZvaWQgd2Via2l0
V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6V2ViRnJh
bWVQcm94eSosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV2ViS2l0VVJJUmVxdWVzdCop
Owogdm9pZCB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXJSZXF1ZXN0KFdlYktpdFdlYlZpZXcq
LCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QqKTsKK2Jvb2wgd2Via2l0V2ViVmlld1J1bkNvbG9y
Q2hvb3NlclJlcXVlc3QoV2ViS2l0V2ViVmlldyosIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Qq
KTsKK3ZvaWQgd2Via2l0V2ViVmlld0Nsb3NlQ29sb3JDaG9vc2VyUmVxdWVzdChXZWJLaXRXZWJW
aWV3Kik7CiBXZWJLaXRXZWJSZXNvdXJjZSogd2Via2l0V2ViVmlld0dldExvYWRpbmdXZWJSZXNv
dXJjZShXZWJLaXRXZWJWaWV3KiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKIHZvaWQg
d2Via2l0V2ViVmlld1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZShXZWJLaXRXZWJWaWV3KiwgdWlu
dDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKIFdlYktpdFdlYlJlc291cmNlKiB3ZWJraXRXZWJW
aWV3UmVzb3VyY2VMb2FkRmluaXNoZWQoV2ViS2l0V2ViVmlldyosIHVpbnQ2NF90IHJlc291cmNl
SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA2ZTk3Mjg0Li5lODQ4ZTJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTMwLDYgKzMwLDcgQEAKICAgICA8eGk6aW5jbHVkZSBo
cmVmPSJ4bWwvV2ViS2l0V2ViUmVzb3VyY2UueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL1dlYktpdEVycm9yLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRG
YXZpY29uRGF0YWJhc2UueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktp
dEZpbGVDaG9vc2VyUmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2Vi
S2l0RmluZENvbnRyb2xsZXIueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktp
dENvb2tpZU1hbmFnZXIueG1sIi8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCAxMjhl
MmI1Li40NjA1ZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTY2OSw2ICs2Njks
MjcgQEAgd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2dldF90eXBlCiA8L1NFQ1RJT04+CiAK
IDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdDwvRklMRT4KK1dlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3QKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1
cnJlbnRfY29sb3IKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yCit3
ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbAorCis8U1VCU0VDVElPTiBTdGFuZGFy
ZD4KK1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcworV0VCS0lUX1RZUEVfQ09MT1JfQ0hP
T1NFUl9SRVFVRVNUCitXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUCitXRUJLSVRfSVNfQ09M
T1JfQ0hPT1NFUl9SRVFVRVNUCitXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUX0NMQVNTCitX
RUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUX0NMQVNTCitXRUJLSVRfQ09MT1JfQ0hPT1NF
Ul9SRVFVRVNUX0dFVF9DTEFTUworCis8U1VCU0VDVElPTiBQcml2YXRlPgorV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdFByaXZhdGUKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X3R5
cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRGaW5kQ29udHJvbGxlcjwv
RklMRT4KIFdlYktpdEZpbmRDb250cm9sbGVyCiBXZWJLaXRGaW5kT3B0aW9ucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVz
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVz
CmluZGV4IDRkODg0M2UuLmViNWIzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcworKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKQEAgLTIxLDMgKzIxLDQgQEAg
d2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0X3R5cGUKIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3Rf
Z2V0X3R5cGUKIHdlYmtpdF9jb250ZXh0X21lbnVfZ2V0X3R5cGUKIHdlYmtpdF9jb250ZXh0X21l
bnVfaXRlbV9nZXRfdHlwZQord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlwZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdl
YktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDZlZDRhMzguLjM0MmExNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2Vi
S2l0V2ViVmlldy5jcHAKQEAgLTI2LDYgKzI2LDE1IEBACiAjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAorc3RhdGljIHZv
aWQgYXNzZXJ0Q29sb3JJc0VxdWFsKGNvbnN0IEdka1JHQkEqIGNvbG9yLCBmbG9hdCByZWQsIGZs
b2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKK3sgICAgCisgICAgZ19hc3NlcnQo
Y29sb3IpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLT5yZWQsID09LCByZWQpOworICAg
IGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLT5ncmVlbiwgPT0sIGdyZWVuKTsKKyAgICBnX2Fzc2Vy
dF9jbXBmbG9hdChjb2xvci0+Ymx1ZSwgPT0sIGJsdWUpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0
KGNvbG9yLT5hbHBoYSwgPT0sIGFscGhhKTsKK30KKwogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdE
ZWZhdWx0Q29udGV4dChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBn
X2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQodGVzdC0+bV93ZWJWaWV3KSA9PSB3
ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSk7CkBAIC03OTYsNiArODA1LDgzIEBAIHN0
YXRpYyB2b2lkIHRlc3RXZWJWaWV3RmlsZUNob29zZXJSZXF1ZXN0KEZpbGVDaG9vc2VyVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfY2Fu
Y2VsKGZpbGVDaG9vc2VyUmVxdWVzdCk7CiB9CiAKK2NsYXNzIENvbG9yQ2hvb3NlclRlc3Q6IHB1
YmxpYyBVSUNsaWVudFRlc3QgeworcHVibGljOgorICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUo
Q29sb3JDaG9vc2VyVGVzdCk7CisgICAgQ29sb3JDaG9vc2VyVGVzdCgpCisgICAgOiBoYWRDbG9z
ZWRTaWduYWwoRkFMU0UpCisgICAgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmll
dywgInJ1bi1jb2xvci1jaG9vc2VyIiwgR19DQUxMQkFDSyhydW5Db2xvckNob29zZXJDYWxsYmFj
ayksIHRoaXMpOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImNsb3NlLWNv
bG9yLWNob29zZXIiLCBHX0NBTExCQUNLKGNsb3NlQ29sb3JDaG9vc2VyQ2FsbGJhY2spLCB0aGlz
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gcnVuQ29sb3JDaG9vc2VyQ2FsbGJhY2so
V2ViS2l0V2ViVmlldyosIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QsIENvbG9y
Q2hvb3NlclRlc3QqIHRlc3QpCisgICAgeworICAgICAgICB0ZXN0LT5ydW5Db2xvckNob29zZXIo
cmVxdWVzdCk7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIHN0YXRpYyBnYm9v
bGVhbiBjbG9zZUNvbG9yQ2hvb3NlckNhbGxiYWNrKFdlYktpdFdlYlZpZXcqLCBDb2xvckNob29z
ZXJUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgdGVzdC0+Y2xvc2VDb2xvckNob29zZXIoKTsK
KyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgdm9pZCBydW5Db2xvckNob29zZXIo
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKKyAgICB7CisgICAgICAgIGFzc2Vy
dE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QocmVxdWVzdCkpOworICAg
ICAgICBtX2NvbG9yQ2hvb3NlclJlcXVlc3QgPSByZXF1ZXN0OworICAgICAgICBnX21haW5fbG9v
cF9xdWl0KG1fbWFpbkxvb3ApOworICAgIH0KKworICAgIHZvaWQgY2xvc2VDb2xvckNob29zZXIo
KQorICAgIHsKKyAgICAgICAgaGFkQ2xvc2VkU2lnbmFsID0gVFJVRTsKKyAgICB9CisKKyAgICBX
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiBjbGlja01vdXNlQnV0dG9uQW5kV2FpdEZvckNvbG9y
Q2hvb3NlclJlcXVlc3QoaW50IHgsIGludCB5KQorICAgIHsKKyAgICAgICAgY2xpY2tNb3VzZUJ1
dHRvbih4LCB5KTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgICAg
ICByZXR1cm4gbV9jb2xvckNob29zZXJSZXF1ZXN0LmdldCgpOworICAgIH0KKworICAgIGdib29s
ZWFuIGNsb3NlZFNpZ25hbCgpCisgICAgeworICAgICAgICByZXR1cm4gaGFkQ2xvc2VkU2lnbmFs
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBHUmVmUHRyPFdlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3Q+IG1fY29sb3JDaG9vc2VyUmVxdWVzdDsKKyAgICBnYm9vbGVhbiBoYWRDbG9zZWRTaWduYWw7
Cit9OworCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NvbG9yQ2hvb3NlclJlcXVlc3QoQ29sb3JD
aG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5zaG93SW5XaW5k
b3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogY29sb3JDaG9v
c2VySFRNTCA9ICI8aHRtbD48Ym9keT48aW5wdXQgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2xl
ZnQ6MDt0b3A6MDttYXJnaW46MDtwYWRkaW5nOjAnIHR5cGU9J2NvbG9yJyB2YWx1ZT0nI2ZmMDAw
MCcvPjwvYm9keT48L2h0bWw+IjsKKyAgICB0ZXN0LT5sb2FkSHRtbChjb2xvckNob29zZXJIVE1M
LCAwKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0KiBjb2xvckNob29zZXJSZXF1ZXN0ID0gdGVzdC0+Y2xpY2tNb3VzZUJ1
dHRvbkFuZFdhaXRGb3JDb2xvckNob29zZXJSZXF1ZXN0KDUsIDUpOworICAgIEdka1JHQkEqIGNv
bG9yID0gd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcihjb2xv
ckNob29zZXJSZXF1ZXN0KTsKKyAgICBhc3NlcnRDb2xvcklzRXF1YWwoY29sb3IsIDEuMCwgMC4w
LCAwLjAsIDEuMCk7CisKKyAgICB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNo
ZWQoImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykudmFsdWUgPSAnIzAwZmYwMCc7Iiwg
MCk7CisgICAgY29sb3IgPSB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9jdXJyZW50
X2NvbG9yKGNvbG9yQ2hvb3NlclJlcXVlc3QpOworICAgIGFzc2VydENvbG9ySXNFcXVhbChjb2xv
ciwgMS4wLCAwLjAsIDAuMCwgMS4wKTsKKworICAgIGdfYXNzZXJ0KCF0ZXN0LT5jbG9zZWRTaWdu
YWwoKSk7CisgICAgR2RrUkdCQSBibHVlID0gezAuMCwgMC4wLCAxLjAsIDEuMH07CisgICAgd2Vi
a2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3IoY29sb3JDaG9vc2VyUmVxdWVz
dCwgJmJsdWUpOworICAgIGdfYXNzZXJ0KHRlc3QtPmNsb3NlZFNpZ25hbCgpKTsKKyAgICBjb2xv
ciA9IHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IoY29sb3JD
aG9vc2VyUmVxdWVzdCk7CisgICAgYXNzZXJ0Q29sb3JJc0VxdWFsKGNvbG9yLCAwLjAsIDAuMCwg
MS4wLCAxLjApOworCisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3Vs
dCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZTsiLCAwKTsKKyAgICBHT3duUHRyPGNoYXI+IHZhbHVl
U3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRS
ZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiIzAw
MDBmZiIpOworfQorCiBjbGFzcyBGdWxsU2NyZWVuQ2xpZW50VGVzdDogcHVibGljIFdlYlZpZXdU
ZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKEZ1bGxTY3JlZW5DbGll
bnRUZXN0KTsKQEAgLTExMDUsNiArMTE5MSw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBGb3Jt
Q2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInN1Ym1pdC1mb3JtIiwgdGVzdFdlYlZp
ZXdTdWJtaXRGb3JtKTsKICAgICBTYXZlV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIs
ICJzYXZlIiwgdGVzdFdlYlZpZXdTYXZlKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3IiwgInZpZXctbW9kZSIsIHRlc3RXZWJWaWV3TW9kZSk7CisgICAgQ29sb3JDaG9vc2Vy
VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImNvbG9yLWNob29zZXItcmVxdWVzdCIsIHRlc3RX
ZWJWaWV3Q29sb3JDaG9vc2VyUmVxdWVzdCk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCmluZGV4IDFiNGZhODYuLjAzZDNk
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEVudW1UeXBlcy5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0RXJyb3IuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZhdmlj
b25EYXRhYmFzZS5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0Lmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRGaW5kQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3Bw
CmluZGV4IDBlZTc5ZGQuLmJhMDUxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwCkBA
IC01NSw2ICs1NSwxNCBAQCB2b2lkIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eTo6
c2V0Q29sb3IoY29uc3QgU3RyaW5nJiBjb2xvcikKICAgICBtX3BhZ2UtPmVuZENvbG9yQ2hvb3Nl
cigpOwogfQogCit2b2lkIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eTo6ZW5kQ29s
b3JDaG9vc2VyKCkKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9wYWdlLT5lbmRDb2xvckNob29zZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHku
aAppbmRleCBkMjhlYjhhLi42MmEyZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5oCkBAIC01
MCw2ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIHZvaWQg
c2V0Q29sb3IoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBlbmRDb2xvckNob29zZXIoKTsKIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHko
V2ViUGFnZVByb3h5Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjJlOTQ1OWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmNwcApAQCAtMCwwICsxLDYwIEBACisv
KgorICogQ29weXJpZ2h0IChjKSAyMDEyLCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhp
cworICogICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
CisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuaCIKKworI2luY2x1ZGUgIkNvbG9y
LmgiCisjaW5jbHVkZSAiV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmgiCisjaW5j
bHVkZSAiV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJL
aXRXZWJWaWV3UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvbG9yQ2hvb3Nl
clByb3h5R3RrOjpXZWJDb2xvckNob29zZXJQcm94eUd0ayhXZWJQYWdlUHJveHkqIHBhZ2UsIEd0
a1dpZGdldCogd2ViVmlldywgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgSW50UmVj
dCYgZWxlbWVudFJlY3QpCisgICAgOiBXZWJDb2xvckNob29zZXJQcm94eShwYWdlKQorICAgICwg
bV9jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyKFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQ
cm94eTo6Y3JlYXRlKHBhZ2UpKQorICAgICwgbV93ZWJWaWV3KHdlYlZpZXcpCit7CisgICAgR1Jl
ZlB0cjxXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PiByZXF1ZXN0ID0gd2Via2l0Q29sb3JDaG9v
c2VyUmVxdWVzdENyZWF0ZShpbml0aWFsQ29sb3IsIG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5l
ci5nZXQoKSk7CisgICAgaWYgKCF3ZWJraXRXZWJWaWV3UnVuQ29sb3JDaG9vc2VyUmVxdWVzdChX
RUJLSVRfV0VCX1ZJRVcobV93ZWJWaWV3LmdldCgpKSwgcmVxdWVzdC5nZXQoKSkpCisgICAgICAg
IHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsKFdFQktJVF9DT0xPUl9DSE9PU0VS
X1JFUVVFU1QocmVxdWVzdC5nZXQoKSkpOworfQorCit2b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5
R3RrOjplbmRDaG9vc2VyKCkKK3sKKyAgICB3ZWJraXRXZWJWaWV3Q2xvc2VDb2xvckNob29zZXJS
ZXF1ZXN0KFdFQktJVF9XRUJfVklFVyhtX3dlYlZpZXcuZ2V0KCkpKTsKKworICAgIFdlYkNvbG9y
Q2hvb3NlclByb3h5OjplbmRDaG9vc2VyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJkN2FiNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuaApAQCAt
MCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEyLCBTYW1zdW5nIEVsZWN0cm9u
aWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0IG5vdGljZSwgdGhpcworICogICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uCisgKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb2xvckNob29zZXJQcm94eUd0a19oCisj
ZGVmaW5lIFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrX2gKKworI2luY2x1ZGUgIldlYkNvbG9yQ2hv
b3NlclByb3h5LmgiCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENvbG9yOworY2xh
c3MgSW50UmVjdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJQYWdlUHJveHk7
CitjbGFzcyBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk7CisKK2NsYXNzIFdlYkNv
bG9yQ2hvb3NlclByb3h5R3RrIDogIHB1YmxpYyBXZWJDb2xvckNob29zZXJQcm94eSB7CisKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gY3JlYXRl
KFdlYlBhZ2VQcm94eSogcGFnZSwgR3RrV2lkZ2V0KiB3ZWJWaWV3LCBjb25zdCBXZWJDb3JlOjpD
b2xvciYgaW5pdGlhbENvbG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29sb3JDaG9vc2VyUHJveHlH
dGsocGFnZSwgd2ViVmlldywgaW5pdGlhbENvbG9yLCBlbGVtZW50UmVjdCkpOworICAgIH0KKyAg
ICB2b2lkIGVuZENob29zZXIoKTsKKworcHJpdmF0ZToKKyAgICBXZWJDb2xvckNob29zZXJQcm94
eUd0ayhXZWJQYWdlUHJveHkqLCBHdGtXaWRnZXQqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyAgICBSZWZQdHI8V2ViQ29sb3JQaWNrZXJSZXN1bHRM
aXN0ZW5lclByb3h5PiBtX2NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXI7CisKKyAgICBHUmVmUHRy
PEdPYmplY3Q+IG1fcmVxdWVzdDsKKyAgICBHUmVmUHRyPEd0a1dpZGdldD4gbV93ZWJWaWV3Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJDb2xvckNob29zZXJQ
cm94eUd0a19oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIg
Yi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDMxZWE5ZTEuLjVjOTQ2NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMjM2LDYgKzIzNiw4IEBAIF9aTjdXZWJDb3Jl
MThTdHlsZVNoZWV0Q29udGVudHNEMUV2OwogX1pON1dlYkNvcmUyOERvY3VtZW50U3R5bGVTaGVl
dENvbGxlY3Rpb24xMmFkZFVzZXJTaGVldEVOM1dURjEwUGFzc1JlZlB0cklOU18xOFN0eWxlU2hl
ZXRDb250ZW50c0VFRTsKIF9aTjdXZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
MTRhZGRBdXRob3JTaGVldEVOM1dURjEwUGFzc1JlZlB0cklOU18xOFN0eWxlU2hlZXRDb250ZW50
c0VFRTsKIF9aTjdXZWJDb3JlNEtVUkwxMGludmFsaWRhdGVFdjsKK19aTjdXZWJDb3JlNUNvbG9y
QzFFUktOM1dURjZTdHJpbmdFOworX1pON1dlYkNvcmUxNkhUTUxJbnB1dEVsZW1lbnQyNXNlbGVj
dENvbG9ySW5Db2xvckNob29zZXJFUktOU181Q29sb3JFOwogCiBsb2NhbDoKIF9aKjsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0MjE5MjE0Li45
NTcyZWEyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTItMjAgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZp
ZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY29s
b3IgaW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk4OTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RW5hYmxlIGlucHV0IHR5cGUgY29sb3IgaW4gZmVhdHVyZSBsaXN0LgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOgorCiAyMDEyLTExLTA5ICBBcm5hdWQgUmVu
ZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0dUS10gYWRk
IGxpYnNjcmV0IHRvIGpoYnVpbGQgc3lzdGVtCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVy
ZUxpc3QucG0KaW5kZXggMmY0NWVmMy4uZmRlOWZiMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9GZWF0dXJlTGlzdC5wbQpAQCAtMjcyLDcgKzI3Miw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAg
ICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOUFVUX1NQRUVDSCIsIGRlZmF1bHQgPT4gMCwgdmFsdWUg
PT4gXCRpbnB1dFNwZWVjaFN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJpbnB1dC10eXBl
LWNvbG9yIiwgZGVzYyA9PiAiVG9nZ2xlIElucHV0IFR5cGUgQ29sb3Igc3VwcG9ydCIsCi0gICAg
ICBkZWZpbmUgPT4gIkVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SIiwgZGVmYXVsdCA9PiAoaXNCbGFj
a0JlcnJ5KCkgfHwgaXNFZmwoKSB8fCBpc1F0KCkpLCB2YWx1ZSA9PiBcJGlucHV0VHlwZUNvbG9y
U3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUiIsIGRl
ZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgpIHx8IGlzRWZsKCkgfHwgaXNRdCgpIHx8IGlzR3RrKCkp
LCB2YWx1ZSA9PiBcJGlucHV0VHlwZUNvbG9yU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4g
ImlucHV0LXR5cGUtZGF0ZSIsIGRlc2MgPT4gIlRvZ2dsZSBJbnB1dCBUeXBlIERhdGUgc3VwcG9y
dCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlBVVF9UWVBFX0RBVEUiLCBkZWZhdWx0ID0+
IDAsIHZhbHVlID0+IFwkaW5wdXRUeXBlRGF0ZVN1cHBvcnQgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182856</attachid>
            <date>2013-01-15 15:29:52 -0800</date>
            <delta_ts>2013-02-13 11:27:06 -0800</delta_ts>
            <desc>try to add an empty implementation of WebColorChooserProxyGtk::setSelectedColor</desc>
            <filename>bug-98935-20130115152653.patch</filename>
            <type>text/plain</type>
            <size>54041</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjRkNTg3MTU3ZDAwZjNh
MGFmY2Y5MjJmYWE3YjY4MTQ1ODFiODM5Ny4uZTc4YTRjMzVhZmNmZWM4MDZjNzlmMWY5ZDU2YTll
ODRmMDg4Njk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTIwICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dU
S10gQWRkIHN1cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBpbnB1dCB0eXBlIGNvbG9yIGluIGZlYXR1cmUg
bGlzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmZlYXR1cmVzLmFtLmluOgorCiAyMDEyLTEy
LTI2ICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgQWRkIENhbnZhcyBibGVuZCBtb2RlcyB0byBDYWlybwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4
IDNhNDdiYjFmMGRlYzY5Y2NlZDE3Mjg1ZjBkNDZiZjkzNjY1YTJjMGYuLjlhZjdiM2QwNGM1M2E1
ZWE5NDFjNzEyOWIwNDBhNDNiZjk1MTlhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAxMi0xMi0zMSAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1
bmcuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBjb2xvciBpbnB1dAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHViIGltcGxlbWVu
dGF0aW9uIG9mIENocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChDaHJvbWVDbGllbnQpOgorCiAyMDEyLTEwLTAxICBBcm5hdWQgUmVuZXZpZXIg
IDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0d0a10gdG9vIGxvbmcg
ZnVuY3Rpb24gaW4gYW5pbWF0aW9uIHNjcmlwdCBjYXVzZSByZXBhaW50IHRvIG5ldmVyIGhhcHBl
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCAzMzRjZTliMjhiNzM1NGI4YzZmZTA2YWY4NjNiMjU0NzliNWVlMGM2
Li4zOTU2YzRlMDE3OGZjYWZhZThkYmY3ZTEyOWNmYjViN2M1ZGIzODg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsODQgQEAKKzIwMTItMTItMjAgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJA
c2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY29sb3Ig
aW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
OTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IGlucHV0IGNvbG9yIHR5cGUgZm9yIFdlYktpdDIuCisKKyAgICAgICAgSW1wbGVtZW50
IHNob3dDb2xvclBpY2tlciBhbmQgaGlkZUNvbG9yUGlja2VyIFVJIGNsaWVudCBjYWxsYmFja3Mu
IEFzCisgICAgICAgIGEgZmFsbGJhY2ssIGltcGxlbWVudCBXZWJDb2xvckNob29zZXJQcm94eUd0
ay4KKworICAgICAgICBBZGQgYSBlbmRDb2xvckNob29zZXIgbWV0aG9kIHRvIFdlYkNvbG9yUGlj
a2VyUmVzdWx0TGlzdGVuZXJQcm94eSB0bworICAgICAgICBiZSBhYmxlIHRvIGNhbmNlbCB0aGUg
cmVxdWVzdCB3aXRob3V0IHNlbGVjdGluZyBhIGNvbG9yLgorCisgICAgICAgIFNpbWlsYXJseSB0
byB3aGF0IGhhcHBlbnMgZm9yIGZpbGUgY2hvb3Nlciwgd2hlbiBhIGNvbG9yIGNob29zZXIgaXMK
KyAgICAgICAgbmVlZGVkLCB3ZSBlbWl0IGEgcnVuLWNvbG9yLWNob29zZXIgc2lnbmFsIHdpdGgg
YQorICAgICAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IG9iamVjdC4gSWYgdGhlIHNpZ25h
bCBpcyBub3QgaGFuZGxlZCBieSB0aGUKKyAgICAgICAgYXBwbGljYXRpb24sIHdlIHNob3cgYSBH
dGtHdGtDb2xvckNob29zZXJEaWFsb2cuCisKKyAgICAgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCBBUEkgYWxsb3dzIHRvIHJlYWQgY3VycmVudCBjb2xvciAoZWl0aGVyCisgICAgICAgIGlu
aXRpYWwgY29sb3Igc2V0IGJ5IFdlYkNvcmUgb3IgbGF0ZXIsIGNvbG9yIHNlbGVjdGVkIGJ5IHVz
ZXIpLCB0bworICAgICAgICBzZWxlY3QgYSBjb2xvciwgb3IgdG8gY2FuY2VsIGEgcmVxdWVzdC4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZSk6CisgICAgICAgICh3ZWJraXRDb2xvckNob29zZXJS
ZXF1ZXN0R2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdFNl
dFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfY2xhc3Nf
aW5pdCk6CisgICAgICAgICh3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbCk6Cisg
ICAgICAgICh3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvcik6CisgICAg
ICAgICh3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9jdXJyZW50X2NvbG9yKToKKyAg
ICAgICAgKHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RDcmVhdGUpOgorICAgICAgICAod2Via2l0
V2ViQ29sb3JDaG9vc2VyUmVxdWVzdFNldENvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoX1dlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3QpOgorICAgICAgICAoX1dlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3RDbGFzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VUlDbGllbnQuY3BwOgorICAgICAgICAoc2hvd0NvbG9yUGlja2VyKToKKyAgICAgICAgKGhp
ZGVDb2xvclBpY2tlcik6CisgICAgICAgIChhdHRhY2hVSUNsaWVudFRvVmlldyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgIChfV2ViS2l0
V2ViVmlld1ByaXZhdGUpOgorICAgICAgICAoY29sb3JDaG9vc2VyUmVxdWVzdENoYW5nZUNhbGxi
YWNrKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdDbG9zZUNvbG9yQ2hvb3Nlcik6CisgICAgICAg
IChjb2xvckNob29zZXJEaWFsb2dSZXNwb25zZUNhbGxiYWNrKToKKyAgICAgICAgKHdlYmtpdFdl
YlZpZXdSdW5Db2xvckNob29zZXIpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2lu
aXQpOgorICAgICAgICAod2Via2l0V2ViVmlld1J1bkNvbG9yQ2hvb3NlclJlcXVlc3QpOgorICAg
ICAgICAod2Via2l0V2ViVmlld0Nsb3NlQ29sb3JDaG9vc2VyUmVxdWVzdCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAoX1dlYktpdFdlYlZp
ZXdDbGFzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5z
Z21sOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9u
cy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVz
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNw
cDoKKyAgICAgICAgKGFzc2VydENvbG9ySXNFcXVhbCk6CisgICAgICAgICh0ZXN0V2ViVmlld0Nv
bG9yQ2hvb3NlclJlcXVlc3QpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbG9yUGlj
a2VyUmVzdWx0TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yUGlj
a2VyUmVzdWx0TGlzdGVuZXJQcm94eTo6ZW5kQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94
eS5oOgorICAgICAgICAoV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUd0
azo6V2ViQ29sb3JDaG9vc2VyUHJveHlHdGspOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvckNo
b29zZXJQcm94eUd0azo6ZW5kQ2hvb3Nlcik6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJD
b2xvckNob29zZXJQcm94eUd0ay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlHdGs6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5R3RrOjpzZXRTZWxlY3RlZENvbG9yKToKKwogMjAxMy0w
MS0xMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBF
bnN1cmUgdGhhdCBXZWJQYWdlUHJveHkncyBub3Rpb24gb2YgcGFnZVNjYWxlRmFjdG9yIGlzIHJl
c2V0IG9uIGRpZENvbW1pdExvYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmZlYXR1cmVzLmFtLmluIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuZmVhdHVyZXMu
YW0uaW4KaW5kZXggN2E1YjE5ZDA4ZjllOTAzN2JlMTJkMjdmMWNiNTc5YTJlM2Q2Zjk4ZS4uYjU4
MTZjNGNhOWFmMDUyNDRiYzQzMDExOWFjYmJjY2FmNDU5MGI0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuZmVhdHVyZXMuYW0uaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUuZmVhdHVyZXMuYW0uaW4KQEAgLTQwLDcgKzQwLDcgQEAgZmVhdHVyZV9kZWZp
bmVzX2RlZmF1bHRzICs9IFwKIAlFTkFCTEVfSUZSQU1FX1NFQU1MRVNTPTEgXAogCUVOQUJMRV9J
TkRFWEVEX0RBVEFCQVNFPTAgXAogCUVOQUJMRV9JTlBVVF9TUEVFQ0g9MCBcCi0JRU5BQkxFX0lO
UFVUX1RZUEVfQ09MT1I9MCBcCisJRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1I9MSBcCiAJRU5BQkxF
X0lOUFVUX1RZUEVfREFURT0wIFwKIAlFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRT0wIFwKIAlF
TkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMPTAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggNDY4NDE5OTQ0
YWFjMDhmODU4ODUxNTU1ZjMyYmI5ZmQ1Zjc1MGFhMi4uMWI5ZDYxOGUxNmZhNmIyMGRhZmJiNjM0
NjQxYmVkYTBkMTNmNzIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC03Nyw2ICs3NywxMCBAQAogI2luY2x1ZGUg
IkRhdGFiYXNlTWFuYWdlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xP
UikKKyNpbmNsdWRlICJDb2xvckNob29zZXJDbGllbnQuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04MzYsNiArODQwLDEyIEBA
IHZvaWQgQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNl
Y3VyaXR5T3JpZ2luKiwgaW50NjRfdCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitQYXNz
T3duUHRyPENvbG9yQ2hvb3Nlcj4gQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIoQ29s
b3JDaG9vc2VyQ2xpZW50KiwgY29uc3QgQ29sb3ImKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHZvaWQgQ2hyb21lQ2xpZW50OjpydW5PcGVuUGFu
ZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBwcnBGaWxlQ2hvb3NlcikKIHsKICAg
ICBHUmVmUHRyPFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1JlZih3
ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfY3JlYXRlKHBycEZpbGVDaG9vc2VyKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsu
aCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCmlu
ZGV4IDk0N2NhM2MwMWE4N2JiYjBiMGJiM2VjMDYxZThkZjk1NTdjZjgyM2EuLjM4MmJiMTUyYjBm
Mzc5ZjdiMTI5MzlkNWQ1NzMxMDllZmM0ZDk3MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0zNiw2ICszNiw3IEBAIHR5
cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFBvcHVwTWVudUNsaWVudDsKK2NsYXNzIENvbG9yOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTEyMCw2ICsxMjEsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAj
ZW5kaWYKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRf
dCBzcGFjZU5lZWRlZCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25D
YWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCB0b3RhbFNwYWNlTmVlZGVk
KTsKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgICAgICB2aXJ0dWFsIFBhc3NP
d25QdHI8Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50
KiwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvcik7CisjZW5kaWYKKwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JiwgRmlsZUljb25Mb2FkZXIqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggYzc0YzViZTA2NmFlN2Y5ZWFiMTY2NmM2ZTkzYWU1ZjRiMjY0NWE1Mi4uZjA4YzE5ODM4ZDY1
OWY5ZDE0Nzc4YTY2MGJmMGMwMDJjYTU1MzYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC05Niw2ICs5Niw3IEBAIHdlYmtpdDJfaF9hcGkgKz0gXAogd2Via2l0Mmd0a19oX2Fw
aSArPSBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExp
c3QuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExp
c3RJdGVtLmggXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRl
eHRNZW51LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1l
bnVBY3Rpb25zLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4
dE1lbnVJdGVtLmggXApAQCAtNjQ5LDYgKzY1MCw5IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRl
bS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2Fy
ZExpc3RJdGVtLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
QmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oIFwKKwlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5o
IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51
LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51
UHJpdmF0ZS5oIFwKQEAgLTgwMiw2ICs4MDYsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHku
aCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNw
cCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAgXAor
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuY3Bw
IFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3Rr
LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dEd0ay5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5jcHAg
XAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29udGV4dE1lbnVQcm94eUd0ay5o
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcAppbmRleCBiZjYxNjI0MGEwMWZiZjM4OTgwMTcxMjc4YThiNjY3YWNjOGE2ZTgxLi4x
OTFlMjAwODMzODk2YzY4NmIwN2I2M2VkNWVkYjllMzYxZDM3MDFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC00NCw2
ICs0NCwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorI2luY2x1
ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjMxLDEwICsyMzUsOSBAQCBQYXNz
UmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0
TWVudVByb3h5KFdlYlBhZ2VQcgogfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi1Q
YXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29s
b3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JikKK1Bhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IFBh
Z2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXJQcm94eShXZWJQYWdlUHJveHkqIHBhZ2Us
IGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGVsZW1lbnRSZWN0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrOjpjcmVhdGUocGFnZSwgbV92aWV3
V2lkZ2V0LCBpbml0aWFsQ29sb3IsIGVsZW1lbnRSZWN0KTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9y
Q2hvb3NlclJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhZTg4MDY4NjMzYzEzMzE1MTFlM2EwZDk0
OGIyNjc4Njc0NjRmYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcApAQCAtMCwwICsxLDE5MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3QuaCIKKworI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2
YXRlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4t
bGliLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKy8qKgorICogU0VDVElPTjogV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdAorICogQFNob3J0X2Rlc2NyaXB0aW9uOiBBIHJlcXVlc3Qg
dG8gb3BlbiBhIGNvbG9yIGNob29zZXIKKyAqIEBUaXRsZTogV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdAorICogQFNlZV9hbHNvOiAjV2ViS2l0V2ViVmlldworICoKKyAqIFdoZW5ldmVyIHRoZSB1
c2VyIGludGVyYWN0cyB3aXRoIGFuICZsdDtpbnB1dCB0eXBlPSdjb2xvcicgLyZndDsKKyAqIEhU
TUwgZWxlbWVudCwgV2ViS2l0IHdpbGwgbmVlZCB0byBzaG93IGEgZGlhbG9nIHRvIGNob29zZSBh
IGNvbG9yLiBGb3IgdGhhdAorICogdG8gaGFwcGVuIGluIGEgZ2VuZXJhbCB3YXksIGluc3RlYWQg
b2YganVzdCBvcGVuaW5nIGEgI0d0a0NvbG9yQ2hvb3NlcgorICogKHdoaWNoIG1pZ2h0IGJlIG5v
dCBkZXNpcmFibGUgaW4gc29tZSBjYXNlcywgd2hpY2ggY291bGQgcHJlZmVyIHRvIHVzZSB0aGVp
cgorICogb3duIGNvbG9yIGNob29zZXIgZGlhbG9nKSwgV2ViS2l0IHdpbGwgZmlyZSB0aGUKKyAq
ICNXZWJLaXRXZWJWaWV3OjpydW4tY29sb3ItY2hvb3NlciBzaWduYWwgd2l0aCBhICNXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0CisgKiBvYmplY3QsIHdoaWNoIHdpbGwgYWxsb3cgdGhlIGNsaWVu
dCBhcHBsaWNhdGlvbiB0byBzcGVjaWZ5IHRoZSBjb2xvciB0byBiZQorICogc2VsZWN0ZWQsIHRv
IGluc3BlY3QgdGhlIGRldGFpbHMgb2YgdGhlIHJlcXVlc3QgKGUuZy4gdG8gZ2V0IGluaXRpYWwg
Y29sb3IpCisgKiBhbmQgdG8gY2FuY2VsIHRoZSByZXF1ZXN0LCBpbiBjYXNlIG5vdGhpbmcgd2Fz
IHNlbGVjdGVkLgorICoKKyAqIEluIGNhc2UgdGhlIGNsaWVudCBhcHBsaWNhdGlvbiBkb2VzIG5v
dCB3aXNoIHRvIGhhbmRsZSB0aGlzIHNpZ25hbCwKKyAqIFdlYktpdCB3aWxsIHByb3ZpZGUgYSBk
ZWZhdWx0IGhhbmRsZXIgd2hpY2ggd2lsbCBhc3luY2hyb25vdXNseSBydW4KKyAqIGEgcmVndWxh
ciAjR3RrQ29sb3JDaG9vc2VyIGZvciB0aGUgdXNlciB0byBpbnRlcmFjdCB3aXRoLgorICovCisK
K3N0cnVjdCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUgeworI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQorICAgIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eSog
bGlzdGVuZXI7CisjZW5kaWYKKyAgICBHZGtSR0JBIGNvbG9yOworICAgIGJvb2wgaGFuZGxlZFJl
cXVlc3Q7Cit9OworCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dCwgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdCwgR19UWVBFX09CSkVDVCkKKworZW51bSB7
CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9DT0xPUgorfTsKKworc3RhdGljIHZvaWQgd2Via2l0
Q29sb3JDaG9vc2VyUmVxdWVzdEdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVF
U1Qob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQUk9QX0NPTE9S
OgorICAgICAgICBnX3ZhbHVlX3NldF9ib3hlZCh2YWx1ZSwgJnJlcXVlc3QtPnByaXYtPmNvbG9y
KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9J
TlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOworICAgIH0KK30K
Kworc3RhdGljIHZvaWQgd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdFNldFByb3BlcnR5KEdPYmpl
Y3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVj
KiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCA9
IFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1Qob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJv
cElkKSB7CisgICAgY2FzZSBQUk9QX0NPTE9SOgorICAgICAgICBpZiAoR2RrUkdCQSogY29sb3Ig
PSBzdGF0aWNfY2FzdDxHZGtSR0JBKj4oZ192YWx1ZV9nZXRfYm94ZWQodmFsdWUpKSkKKyAgICAg
ICAgICAgIHJlcXVlc3QtPnByaXYtPmNvbG9yID0gKmNvbG9yOworICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2Jq
ZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRf
Y29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dENsYXNzKiByZXF1ZXN0Q2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9
IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgb2JqZWN0Q2xhc3MtPmdldF9wcm9w
ZXJ0eSA9IHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RHZXRQcm9wZXJ0eTsKKyAgICBvYmplY3RD
bGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdFNldFByb3BlcnR5
OworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzpjb2xvcjoKKyAgICAgKgorICAgICAq
IFRoZSAjR2RrUkdCQSBjb2xvciBvZiB0aGUgcmVxdWVzdAorICAgICAqLworICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUk9QX0NPTE9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ19wYXJhbV9zcGVjX2JveGVkKCJjb2xvciIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkN1cnJlbnQgY29sb3IiKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XygiVGhlIGN1cnJlbnQgY29sb3IgZm9yIHRoZSByZXF1ZXN0IiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdES19UWVBFX1JHQkEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdF
QktJVF9QQVJBTV9SRUFEQUJMRSkpOworCit9CisKKy8qKgorICogd2Via2l0X2NvbG9yX2Nob29z
ZXJfcmVxdWVzdF9jYW5jZWw6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdAorICoKKyAqIEFzayBXZWJLaXQgdG8gY2FuY2VsIHRoZSByZXF1ZXN0LiBJdCdzIGltcG9y
dGFudCB0byBkbyB0aGlzIGluIGNhc2UKKyAqIG5vIHNlbGVjdGlvbiBoYXMgYmVlbiBtYWRlIGlu
IHRoZSBjbGllbnQsIG90aGVyd2lzZSB0aGUgcmVxdWVzdAorICogd29uJ3QgYmUgcHJvcGVybHkg
Y29tcGxldGVkIGFuZCB0aGUgYnJvd3NlciB3aWxsIGtlZXAgdGhlIHJlcXVlc3QKKyAqIHBlbmRp
bmcgZm9yZXZlciwgd2hpY2ggbWlnaHQgY2F1c2UgdGhlIGJyb3dzZXIgdG8gaGFuZy4KKyAqLwor
dm9pZCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbChXZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGlmIChyZXF1ZXN0LT5wcml2LT5oYW5kbGVkUmVx
dWVzdCkKKyAgICAgICAgcmV0dXJuOworICAgIHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0
ID0gVFJVRTsKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICByZXF1ZXN0LT5wcml2
LT5saXN0ZW5lci0+ZW5kQ29sb3JDaG9vc2VyKCk7CisjZW5kaWYKK30KKworLyoqCisgKiB3ZWJr
aXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvcjoKKyAqIEByZXF1ZXN0OiBhICNX
ZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QKKyAqIEBjb2xvcjogYSBwb2ludGVyICNHZGtSR0JBCisg
KgorICogQXNrIFdlYktpdCB0byBzZWxlY3QgY29sb3IgYW5kIGNvbXBsZXRlIHRoZSByZXF1ZXN0
LgorICovCit2b2lkIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yKFdl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IEdka1JHQkEqIGNvbG9yKQor
eworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVChy
ZXF1ZXN0KSk7CisgICAgaWYgKHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0KQorICAgICAg
ICByZXR1cm47CisgICAgcmVxdWVzdC0+cHJpdi0+aGFuZGxlZFJlcXVlc3QgPSBUUlVFOworCisg
ICAgcmVxdWVzdC0+cHJpdi0+Y29sb3IgPSAqY29sb3I7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCisgICAgcmVxdWVzdC0+cHJpdi0+bGlzdGVuZXItPnNldENvbG9yKENvbG9yKHJlcXVl
c3QtPnByaXYtPmNvbG9yKS5zZXJpYWxpemVkKCkpOworI2VuZGlmCit9CisKKy8qKgorICogd2Vi
a2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcjoKKyAqIEByZXF1ZXN0
OiBhICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0CisgKgorICogUmV0dXJuczogdGhlIGN1cnJl
bnQgY29sb3Igb2YgcmVxdWVzdC4gV2hpbGUgbm8gY29sb3IgaGFzIGJlZW4gc2VsZWN0ZWQsIGl0
CisgKiBpcyB0aGUgaW5pdGlhbCB2YWx1ZSBkZWZpbmVkIGJ5IFdlYktpdC4gV2hlbiBhIGNvbG9y
IGhhcyBiZWVuIHNlbGVjdGVkLCB0aGlzCisgKiBiZWNvbWVzIHRoZSBzZWxlY3RlZCB2YWx1ZS4K
KyAqLworR2RrUkdCQSogd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9j
b2xvcihXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1QocmVxdWVzdCksIE5V
TEwpOworCisgICAgcmV0dXJuICZyZXF1ZXN0LT5wcml2LT5jb2xvcjsKK30KKworI2lmIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SKQorV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogd2Via2l0Q29s
b3JDaG9vc2VyUmVxdWVzdENyZWF0ZShjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yLCBXZWJDb2xv
clBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkqIGxpc3RlbmVyKQoreworICAgIFdlYktpdENvbG9y
Q2hvb3NlclJlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKGdf
b2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QsIE5VTEwpKTsKKyAg
ICByZXF1ZXN0LT5wcml2LT5saXN0ZW5lciA9IGxpc3RlbmVyOworICAgIHJlcXVlc3QtPnByaXYt
PmNvbG9yID0gaW5pdGlhbENvbG9yOworICAgIHJldHVybiByZXF1ZXN0OworfQorCit2b2lkIHdl
YmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RTZXRDb2xvcihXZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0KiByZXF1ZXN0LCBjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgaWYgKGdka19yZ2JhX2Vx
dWFsKCZjb2xvciwgJnJlcXVlc3QtPnByaXYtPmNvbG9yKSkKKyAgICAgICAgcmV0dXJuOworICAg
IHJlcXVlc3QtPnByaXYtPmNvbG9yID0gY29sb3I7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JK
RUNUKHJlcXVlc3QpLCAiY29sb3IiKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM4ZDhkMmJiNGY0NGQ4OGQ0ZDU2YWU5N2UzZGZlYzNlOWUxMDhiZjAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0LmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJ
UyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiAhZGVmaW5l
ZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikK
KyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3Rs
eS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0X2gKKyNkZWZp
bmUgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdF9oCisKKyNpbmNsdWRlIDxndGsvZ3RrLmg+Cisj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2Rl
ZmluZSBXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QgICAgICAgICAgICAod2Via2l0
X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfQ09MT1Jf
Q0hPT1NFUl9SRVFVRVNUKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NB
U1QoKG9iaiksIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCwgV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdCkpCisjZGVmaW5lIFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xB
U1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZ
UEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNULCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3Mp
KQorI2RlZmluZSBXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iaikgICAgICAgICAo
R19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0NPTE9SX0NIT09T
RVJfUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xB
U1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVf
Q09MT1JfQ0hPT1NFUl9SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVR
VUVTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBX
RUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QsIFdlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICAg
ICAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3RDbGFzcyAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzczsK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZSBXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0IHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIC8qPCBwcml2YXRlID4qLworICAg
IFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9X
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRf
Y2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1
ZXN0X2dldF90eXBlICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgR2RrUkdCQSAqCit3
ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9jdXJyZW50X2NvbG9yICAoV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdCAqcmVxdWVzdCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2Nv
bG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3IgICAgICAgKFdlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3QgKnJlcXVlc3QsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdka1JHQkEgKmNvbG9yKTsKKworV0VCS0lUX0FQSSB2b2lkCit3
ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbCAgICAgICAgICAgICAoV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdCAqcmVxdWVzdCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA1ZTA2OTMxMDY1
YjhlNWFkODQ2NjRkMjY2ZjhlYjkxZWQzZThkMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRl
LmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBF
bGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgor
ICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdFByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZV9o
CisKKyNpbmNsdWRlICJXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaCIKKyNpbmNs
dWRlICJXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0
ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKworI2lmIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQorCitXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiB3ZWJraXRDb2xvckNob29zZXJS
ZXF1ZXN0Q3JlYXRlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgV2ViS2l0OjpXZWJDb2xvclBpY2tl
clJlc3VsdExpc3RlbmVyUHJveHkqKTsKK3ZvaWQgd2Via2l0V2ViQ29sb3JDaG9vc2VyUmVxdWVz
dEVuZChXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Kik7Cit2b2lkIHdlYmtpdFdlYkNvbG9yQ2hv
b3NlclJlcXVlc3RTZXRDb2xvcihXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiwgY29uc3QgV2Vi
Q29yZTo6Q29sb3ImKTsKKworI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisj
ZW5kaWYgLy8gV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGVfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCmluZGV4IDAw
ZDY1ZWQzNGFhNzA0YjhhY2NlOGVlMDEyYjRiNTVhMmIwMTE3ZjAuLjYzMzYyNzZmYmNiMWYyZjBh
NjUwMDhjMDM2N2Q5ZjkxODk3ZTExOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTMwLDYgKzMwLDEwIEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVm
UHRyLmg+CiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyNpbmNsdWRlICJXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiAKIHN0YXRpYyBXS1BhZ2VSZWYgY3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYgcGFnZSwg
V0tVUkxSZXF1ZXN0UmVmLCBXS0RpY3Rpb25hcnlSZWYgd2tXaW5kb3dGZWF0dXJlcywgV0tFdmVu
dE1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpA
QCAtMTU3LDYgKzE2MSwyMSBAQCBzdGF0aWMgdm9pZCBydW5Nb2RhbChXS1BhZ2VSZWYgcGFnZSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKICAgICB3ZWJraXRXZWJWaWV3UnVuQXNNb2RhbChXRUJL
SVRfV0VCX1ZJRVcoY2xpZW50SW5mbykpOwogfQogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCitzdGF0aWMgdm9pZCBzaG93Q29sb3JQaWNrZXIoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBp
bml0aWFsQ29sb3IsIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBXZWJDb3JlOjpDb2xvciBjb2xvciA9IFdlYkNv
cmU6OkNvbG9yKFdlYktpdDo6dG9XVEZTdHJpbmcoaW5pdGlhbENvbG9yKSk7CisgICAgR1JlZlB0
cjxXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdENv
bG9yQ2hvb3NlclJlcXVlc3RDcmVhdGUoY29sb3IsIHRvSW1wbChsaXN0ZW5lcikpKTsKKyAgICBp
ZiAoIXdlYmtpdFdlYlZpZXdSdW5Db2xvckNob29zZXJSZXF1ZXN0KFdFQktJVF9XRUJfVklFVyhj
bGllbnRJbmZvKSwgcmVxdWVzdC5nZXQoKSkpCisgICAgICAgIHdlYmtpdF9jb2xvcl9jaG9vc2Vy
X3JlcXVlc3RfY2FuY2VsKHJlcXVlc3QuZ2V0KCkpOworfQorCitzdGF0aWMgdm9pZCBoaWRlQ29s
b3JQaWNrZXIoV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHdlYmtp
dFdlYlZpZXdDbG9zZUNvbG9yQ2hvb3NlclJlcXVlc3QoV0VCS0lUX1dFQl9WSUVXKGNsaWVudElu
Zm8pKTsKK30KKyNlbmRpZgorCiB2b2lkIGF0dGFjaFVJQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCiB7CiAgICAgV0tQYWdlVUlDbGllbnQgd2tVSUNsaWVudCA9IHsKQEAgLTIw
NSw4ICsyMjQsMTMgQEAgdm9pZCBhdHRhY2hVSUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQogICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudCwKICAgICAgICAgMCwgLy8g
ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QKICAgICAgICAgMCwg
Ly8gdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkCisjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCisgICAgICAgIHNob3dDb2xvclBpY2tlciwKKyAgICAgICAgaGlkZUNvbG9yUGlja2Vy
LAorI2Vsc2UKICAgICAgICAgMCwgLy8gc2hvd0NvbG9yUGlja2VyCiAgICAgICAgIDAsIC8vIGhp
ZGVDb2xvclBpY2tlcgorI2VuZGlmCiAgICAgfTsKICAgICBXS1BhZ2VSZWYgd2tQYWdlID0gdG9B
UEkod2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcp
KSk7CiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KHdrUGFnZSwgJndrVUlDbGllbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApp
bmRleCBiMDQzZDkxOTc3OTY2NjVkZjRlNGY3YTk4Mjk0ODZhNWU0NjYyMTEyLi40ZWQxYzE2ODRi
MDIyN2UzM2ZhNjMyZmRmOWQwYTdmMTc4ZjgzYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMTA3LDYgKzEwNyw5IEBA
IGVudW0gewogCiAgICAgUlVOX0ZJTEVfQ0hPT1NFUiwKIAorICAgIFJVTl9DT0xPUl9DSE9PU0VS
LAorICAgIENMT1NFX0NPTE9SX0NIT09TRVIsCisKICAgICBDT05URVhUX01FTlUsCiAgICAgQ09O
VEVYVF9NRU5VX0RJU01JU1NFRCwKIApAQCAtMTc4LDYgKzE4MSw5IEBAIHN0cnVjdCBfV2ViS2l0
V2ViVmlld1ByaXZhdGUgewogICAgIEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBmYXZpY29uQ2FuY2Vs
bGFibGU7CiAgICAgQ1N0cmluZyBmYXZpY29uVVJJOwogICAgIHVuc2lnbmVkIGxvbmcgZmF2aWNv
bkNoYW5nZWRIYW5kbGVySUQ7CisKKyAgICBHdGtXaWRnZXQqIGNvbG9yQ2hvb3NlckRpYWxvZzsK
KyAgICBHUmVmUHRyPFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Q+IGNvbG9yQ2hvb3NlclJlcXVl
c3Q7CiB9OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CkBA
IC00MTYsNiArNDIyLDU0IEBAIHN0YXRpYyB2b2lkIGZpbGVDaG9vc2VyRGlhbG9nUmVzcG9uc2VD
YWxsYmFjayhHdGtEaWFsb2cqIGRpYWxvZywgZ2ludCByZXNwb25zZUlECiAgICAgZ3RrX3dpZGdl
dF9kZXN0cm95KEdUS19XSURHRVQoZGlhbG9nKSk7CiB9CiAKK3N0YXRpYyB2b2lkIGNvbG9yQ2hv
b3NlclJlcXVlc3RDaGFuZ2VDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdQYXJhbVNwZWMqLCBH
dGtXaWRnZXQqIGRpYWxvZykKK3sKKyAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1
ZXN0ID0gV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVChvYmplY3QpOworCisgICAgR2RrUkdC
QSogY29sb3IgPSB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9jdXJyZW50X2NvbG9y
KHJlcXVlc3QpOworICAgIGd0a19jb2xvcl9jaG9vc2VyX3NldF9yZ2JhKEdUS19DT0xPUl9DSE9P
U0VSKGRpYWxvZyksIGNvbG9yKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Nsb3Nl
Q29sb3JDaG9vc2VyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgaWYgKHdlYlZpZXct
PnByaXYtPmNvbG9yQ2hvb3NlclJlcXVlc3QpIHsKKyAgICAgICAgZ19vYmplY3RfdW5yZWYod2Vi
Vmlldy0+cHJpdi0+Y29sb3JDaG9vc2VyUmVxdWVzdC5nZXQoKSk7CisgICAgICAgIHdlYlZpZXct
PnByaXYtPmNvbG9yQ2hvb3NlclJlcXVlc3QuY2xlYXIoKTsKKyAgICB9CisgICAgaWYgKHdlYlZp
ZXctPnByaXYtPmNvbG9yQ2hvb3NlckRpYWxvZykKKyAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95
KHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3NlckRpYWxvZyk7Cit9CisKK3N0YXRpYyB2b2lkIGNv
bG9yQ2hvb3NlckRpYWxvZ1Jlc3BvbnNlQ2FsbGJhY2soR3RrV2lkZ2V0KiBkaWFsb2csIGdpbnQg
cmVzcG9uc2VJRCwgV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBpZiAocmVzcG9uc2VJ
RCA9PSBHVEtfUkVTUE9OU0VfT0spIHsKKyAgICAgICAgR2RrUkdCQSBjb2xvcjsKKyAgICAgICAg
Z3RrX2NvbG9yX2Nob29zZXJfZ2V0X3JnYmEoR1RLX0NPTE9SX0NIT09TRVIoZGlhbG9nKSwgJmNv
bG9yKTsKKyAgICAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3Io
d2ViVmlldy0+cHJpdi0+Y29sb3JDaG9vc2VyUmVxdWVzdC5nZXQoKSwgJmNvbG9yKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwod2ViVmll
dy0+cHJpdi0+Y29sb3JDaG9vc2VyUmVxdWVzdC5nZXQoKSk7Cit9CisKK3N0YXRpYyBnYm9vbGVh
biB3ZWJraXRXZWJWaWV3UnVuQ29sb3JDaG9vc2VyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19vYmplY3RfcmVmKEdf
T0JKRUNUKHJlcXVlc3QpKTsKKyAgICBHdGtXaWRnZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9n
ZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3KSk7CisgICAgaWYgKCEhd2lkZ2V0SXNPbnNj
cmVlblRvcGxldmVsV2luZG93KHRvcGxldmVsKSkKKyAgICAgICAgdG9wbGV2ZWwgPSAwOworICAg
IEd0a1dpZGdldCogZGlhbG9nID0gIGd0a19jb2xvcl9jaG9vc2VyX2RpYWxvZ19uZXcoXygiU2Vs
ZWN0IENvbG9yIiksIEdUS19XSU5ET1codG9wbGV2ZWwpKTsKKworICAgIGd0a19jb2xvcl9jaG9v
c2VyX3NldF9yZ2JhKEdUS19DT0xPUl9DSE9PU0VSKGRpYWxvZyksIHdlYmtpdF9jb2xvcl9jaG9v
c2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IocmVxdWVzdCkpOworCisgICAgZ19zaWduYWxf
Y29ubmVjdChyZXF1ZXN0LCAibm90aWZ5Ojpjb2xvciIsIEdfQ0FMTEJBQ0soY29sb3JDaG9vc2Vy
UmVxdWVzdENoYW5nZUNhbGxiYWNrKSwgZGlhbG9nKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGRp
YWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhjb2xvckNob29zZXJEaWFsb2dSZXNwb25zZUNh
bGxiYWNrKSwgd2ViVmlldyk7CisgICAgZ3RrX3dpZGdldF9zaG93KGRpYWxvZyk7CisKKyAgICB3
ZWJWaWV3LT5wcml2LT5jb2xvckNob29zZXJEaWFsb2cgPSBkaWFsb2c7CisgICAgd2ViVmlldy0+
cHJpdi0+Y29sb3JDaG9vc2VyUmVxdWVzdCA9IHJlcXVlc3Q7CisKKyAgICByZXR1cm4gVFJVRTsK
K30KKwogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlcihXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QpCiB7CiAg
ICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURH
RVQod2ViVmlldykpOwpAQCAtNTY2LDYgKzYyMCw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgIHdl
YlZpZXdDbGFzcy0+ZGVjaWRlX3BvbGljeSA9IHdlYmtpdFdlYlZpZXdEZWNpZGVQb2xpY3k7CiAg
ICAgd2ViVmlld0NsYXNzLT5wZXJtaXNzaW9uX3JlcXVlc3QgPSB3ZWJraXRXZWJWaWV3UGVybWlz
c2lvblJlcXVlc3Q7CiAgICAgd2ViVmlld0NsYXNzLT5ydW5fZmlsZV9jaG9vc2VyID0gd2Via2l0
V2ViVmlld1J1bkZpbGVDaG9vc2VyOworICAgIHdlYlZpZXdDbGFzcy0+cnVuX2NvbG9yX2Nob29z
ZXIgPSB3ZWJraXRXZWJWaWV3UnVuQ29sb3JDaG9vc2VyOworICAgIHdlYlZpZXdDbGFzcy0+Y2xv
c2VfY29sb3JfY2hvb3NlciA9IHdlYmtpdFdlYlZpZXdDbG9zZUNvbG9yQ2hvb3NlcjsKIAogICAg
IC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6d2ViLWNvbnRleHQ6CkBAIC0xMTcyLDYgKzEyMjgs
NTYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmll
d0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVB
TiwgMSwgLyogbnVtYmVyIG9mIHBhcmFtZXRlcnMgKi8KICAgICAgICAgICAgICAgICAgICAgIFdF
QktJVF9UWVBFX0ZJTEVfQ0hPT1NFUl9SRVFVRVNUKTsKIAorICAgICAvKioKKyAgICAgICogV2Vi
S2l0V2ViVmlldzo6cnVuLWNvbG9yLWNob29zZXI6CisgICAgICAqIEB3ZWJfdmlldzogdGhlICNX
ZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAgKiBAcmVx
dWVzdDogYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAorICAgICAgKgorICAgICAgKiBUaGlz
IHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gdGhlIHVzZXIgaW50ZXJhY3RzIHdpdGggYSAmbHQ7aW5w
dXQKKyAgICAgICogdHlwZT0nY29sb3InIC8mZ3Q7IEhUTUwgZWxlbWVudCwgcmVxdWVzdGluZyBm
cm9tIFdlYktpdCB0byBzaG93CisgICAgICAqIGEgZGlhbG9nIHRvIHNlbGVjdCBhIGNvbG9yLiBU
byBsZXQgdGhlIGFwcGxpY2F0aW9uIGtub3cgdGhlIGRldGFpbHMgb2YKKyAgICAgICogdGhlIGNv
bG9yIGNob29zZXIsIGFzIHdlbGwgYXMgdG8gYWxsb3cgdGhlIGNsaWVudCBhcHBsaWNhdGlvbiB0
byBlaXRoZXIKKyAgICAgICogY2FuY2VsIHRoZSByZXF1ZXN0IG9yIHBlcmZvcm0gYW4gYWN0dWFs
IGNvbG9yIHNlbGVjdGlvbiwgdGhlIHNpZ25hbCB3aWxsCisgICAgICAqIHBhc3MgYW4gaW5zdGFu
Y2Ugb2YgdGhlICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IGluIHRoZSBAcmVxdWVzdAorICAg
ICAgKiBhcmd1bWVudC4KKyAgICAgICoKKyAgICAgICogVGhlIGRlZmF1bHQgc2lnbmFsIGhhbmRs
ZXIgd2lsbCBhc3luY2hyb25vdXNseSBydW4gYSByZWd1bGFyCisgICAgICAqICNHdGtDb2xvckNo
b29zZXIgZm9yIHRoZSB1c2VyIHRvIGludGVyYWN0IHdpdGguCisgICAgICAqCisgICAgICAgKiBS
ZXR1cm5zOiAlVFJVRSB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBm
b3IgdGhlIGV2ZW50LgorICAgICAgKiAgICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1
cnRoZXIuCisgICAgICAqCisgICAgICAqLworICAgIHNpZ25hbHNbUlVOX0NPTE9SX0NIT09TRVJd
ID0KKyAgICAgICAgZ19zaWduYWxfbmV3KCJydW4tY29sb3ItY2hvb3NlciIsCisgICAgICAgICAg
ICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAg
ICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAgICAgICBHX1NUUlVD
VF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBydW5fY29sb3JfY2hvb3NlciksCisgICAgICAg
ICAgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIDAgLyogYWNj
dW11bGF0b3IgZGF0YSAqLywKKyAgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JP
T0xFQU5fX09CSkVDVCwKKyAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAxLCAv
KiBudW1iZXIgb2YgcGFyYW1ldGVycyAqLworICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZ
UEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKTsKKworICAgICAvKioKKyAgICAgICogV2ViS2l0V2Vi
Vmlldzo6Y2xvc2UtY29sb3ItY2hvb3NlcjoKKyAgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktp
dFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICAqCisgICAgICAq
IEVtaXR0ZWQgd2hlbiBjb2xvciBwaWNrZXIgbXVzdCBiZSBoaWRkZW4uIFRoaXMgaGFwcGVucyBm
b3IgZXhhbXBsZSBpZiB0aGUKKyAgICAgICogcGFnZSB0cmlnZ2VyaW5nIHRoZSByZXF1ZXN0IHVu
bG9hZHMgYmVmb3JlIHRoZSByZXF1ZXN0IGlzIGNvbXBsZXRlZC4KKyAgICAgICoKKyAgICAgICog
UmV0dXJuczogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQg
Zm9yIHRoZSBldmVudC4KKyAgICAgICogICAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBm
dXJ0aGVyLgorICAgICAgKgorICAgICAgKi8KKyAgICBzaWduYWxzW0NMT1NFX0NPTE9SX0NIT09T
RVJdID0KKyAgICAgICAgZ19zaWduYWxfbmV3KCJjbG9zZS1jb2xvci1jaG9vc2VyIiwKKyAgICAg
ICAgICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAg
ICAgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgICAgICAgICAgIEdf
U1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIGNsb3NlX2NvbG9yX2Nob29zZXIpLAor
ICAgICAgICAgICAgICAgICAgICAgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgIGdfY2Nsb3N1
cmVfbWFyc2hhbF9WT0lEX19WT0lELAorICAgICAgICAgICAgICAgICAgICAgR19UWVBFX05PTkUs
IDApOworCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmlldzo6Y29udGV4dC1tZW51OgogICAg
ICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMg
ZW1pdHRlZApAQCAtMTYwMyw2ICsxNzA5LDE5IEBAIHZvaWQgd2Via2l0V2ViVmlld1J1bkZpbGVD
aG9vc2VyUmVxdWVzdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRGaWxlQ2hvb3NlCiAg
ICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1JVTl9GSUxFX0NIT09TRVJdLCAwLCBy
ZXF1ZXN0LCAmcmV0dXJuVmFsdWUpOwogfQogCitib29sIHdlYmtpdFdlYlZpZXdSdW5Db2xvckNo
b29zZXJSZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CisgICAgZ19zaWdu
YWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1JVTl9DT0xPUl9DSE9PU0VSXSwgMCwgcmVxdWVzdCwg
JnJldHVyblZhbHVlKTsKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7Cit9CisKK3ZvaWQgd2Via2l0
V2ViVmlld0Nsb3NlQ29sb3JDaG9vc2VyUmVxdWVzdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQor
eworICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywg
c2lnbmFsc1tDTE9TRV9DT0xPUl9DSE9PU0VSXSwgMCwgJnJldHVyblZhbHVlKTsKK30KKwogc3Rh
dGljIGJvb2wgd2Via2l0V2ViVmlld1Nob3VsZFNob3dJbnB1dE1ldGhvZHNNZW51KFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgR3RrU2V0dGluZ3MqIHNldHRpbmdzID0gZ3RrX3dpZGdl
dF9nZXRfc2V0dGluZ3MoR1RLX1dJREdFVCh3ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYjY3OWQ5ZDk3OGRmYTA0
YTljN2Y4YzljOTc5MzQ0NzU4NjBmMGY3Yy4uZjkwMmU4MjY2Y2M4NTg4NzQ1MTgyOTk4YzY3OGYz
NWUzNDAxNWJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQmFzZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QmFja0ZvcndhcmRMaXN0Lmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGaWxlQ2hv
b3NlclJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZpbmRDb250cm9sbGVyLmg+
CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QuaD4KQEAgLTIw
MSw2ICsyMDIsOSBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgZ2Jvb2xlYW4g
ICAoKiBsZWF2ZV9mdWxsc2NyZWVuKSAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAgICp3ZWJfdmlldyk7CiAgICAgZ2Jvb2xlYW4gICAoKiBydW5fZmlsZV9jaG9vc2VyKSAgICAg
ICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRGaWxlQ2hvb3NlclJlcXVl
c3QgICAgKnJlcXVlc3QpOworICAgIGdib29sZWFuICAgKCogcnVuX2NvbG9yX2Nob29zZXIpICAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCAgICAqcmVxdWVzdCk7CisgICAgdm9pZCAgICAgICAoKiBjbG9zZV9jb2xvcl9jaG9vc2Vy
KSAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAgICAgZ2Jv
b2xlYW4gICAoKiBjb250ZXh0X21lbnUpICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRDb250ZXh0TWVudSAgICAgICAgICAgKmNvbnRleHRfbWVudSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtFdmVudCAgICAg
ICAgICAgICAgICAgICAgKmV2ZW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5kZXggZTlmYTNjYWIyMzRhMTE5
MjM5NTE1NjYyZmU5ZmNlMDgwZTJlYzk1OS4uM2ZlYTlkNWYyYmFiM2QxZmUyNmIzNjU3ZTQwZDdi
YmUxMGQ4NGVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC00OSw2ICs0OSw4IEBAIHZvaWQgd2Via2l0
V2ViVmlld01vdXNlVGFyZ2V0Q2hhbmdlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpXZWJIaXRU
ZXN0UmVzdWx0KiwKIHZvaWQgd2Via2l0V2ViVmlld1ByaW50RnJhbWUoV2ViS2l0V2ViVmlldyos
IFdlYktpdDo6V2ViRnJhbWVQcm94eSopOwogdm9pZCB3ZWJraXRXZWJWaWV3UmVzb3VyY2VMb2Fk
U3RhcnRlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgdWludDY0X3Qg
cmVzb3VyY2VJZGVudGlmaWVyLCBXZWJLaXRVUklSZXF1ZXN0Kik7CiB2b2lkIHdlYmtpdFdlYlZp
ZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QoV2ViS2l0V2ViVmlldyosIFdlYktpdEZpbGVDaG9vc2Vy
UmVxdWVzdCopOworYm9vbCB3ZWJraXRXZWJWaWV3UnVuQ29sb3JDaG9vc2VyUmVxdWVzdChXZWJL
aXRXZWJWaWV3KiwgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCopOwordm9pZCB3ZWJraXRXZWJW
aWV3Q2xvc2VDb2xvckNob29zZXJSZXF1ZXN0KFdlYktpdFdlYlZpZXcqKTsKIFdlYktpdFdlYlJl
c291cmNlKiB3ZWJraXRXZWJWaWV3R2V0TG9hZGluZ1dlYlJlc291cmNlKFdlYktpdFdlYlZpZXcq
LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpOwogdm9pZCB3ZWJraXRXZWJWaWV3UmVtb3Zl
TG9hZGluZ1dlYlJlc291cmNlKFdlYktpdFdlYlZpZXcqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50
aWZpZXIpOwogV2ViS2l0V2ViUmVzb3VyY2UqIHdlYmtpdFdlYlZpZXdSZXNvdXJjZUxvYWRGaW5p
c2hlZChXZWJLaXRXZWJWaWV3KiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1k
b2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstZG9jcy5zZ21sCmluZGV4IDdjNmM2OGRhOGEyOWIwOWYzN2UyZWJiMjVlMzg3ZTY1OWUzZGMw
MjIuLjRiYjA5Mzc5ZjM4YzYxMGYyYmVlZGM0ZjliM2QzNTllNWUyNzI4NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNn
bWwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LWRvY3Muc2dtbApAQCAtMzAsNiArMzAsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9X
ZWJLaXRXZWJSZXNvdXJjZS54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0
RXJyb3IueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEZhdmljb25EYXRh
YmFzZS54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0RmlsZUNob29z
ZXJSZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRGaW5kQ29u
dHJvbGxlci54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0Q29va2llTWFu
YWdlci54bWwiLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IDBmOWZhMzEyZjQ4OWIz
MzM1NWExNWMyMWYxMmZiN2IwZTY2NGUyYTkuLjk3NzlhYzIwODgyNDY5YWEwYWM1NDZkOWE0Njdk
NDhlNmJjYjI3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtNjcwLDYgKzY3MCwy
NyBAQCB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAog
PFNFQ1RJT04+Cis8RklMRT5XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PC9GSUxFPgorV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdAord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3Vy
cmVudF9jb2xvcgord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3IKK3dl
YmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJk
PgorV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdENsYXNzCitXRUJLSVRfVFlQRV9DT0xPUl9DSE9P
U0VSX1JFUVVFU1QKK1dFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1QKK1dFQktJVF9JU19DT0xP
Ul9DSE9PU0VSX1JFUVVFU1QKK1dFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1MKK1dF
QktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1MKK1dFQktJVF9DT0xPUl9DSE9PU0VS
X1JFUVVFU1RfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0UHJpdmF0ZQord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlw
ZQorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxGSUxFPldlYktpdEZpbmRDb250cm9sbGVyPC9G
SUxFPgogV2ViS2l0RmluZENvbnRyb2xsZXIKIFdlYktpdEZpbmRPcHRpb25zCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMK
aW5kZXggZWIwZjMzODMzZTc0ZWNmODM1Njc3YmFhZTI3ZjcwNTk0MjkxNWM1Mi4uZDVhMDBjMDc4
MWFmNDcyNTM4ZTMyNmNjZDk0MTgwYWI3MjIxYTAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcwpAQCAtMjMsMyAr
MjMsNCBAQCB3ZWJraXRfY29udGV4dF9tZW51X2dldF90eXBlCiB3ZWJraXRfY29udGV4dF9tZW51
X2l0ZW1fZ2V0X3R5cGUKIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF90eXBlCiB3ZWJraXRfd2Vi
X3BhZ2VfZ2V0X3R5cGUKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X3R5cGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJL
aXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rl
c3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCA2ZWQ0YTM4ZTMwMTE1YWJkMTA2YjViY2ViZGY1ODNh
Y2EyOTQ4YmZkLi4zNDJhMTZjOWU4Y2U3NmFkN2ZlMmMxZTVkNjBlNjNiOTIyZjI0ZDUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0
V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC0yNiw2ICsyNiwxNSBAQAogI2luY2x1ZGUgPHd0Zi9n
b2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKK3N0
YXRpYyB2b2lkIGFzc2VydENvbG9ySXNFcXVhbChjb25zdCBHZGtSR0JBKiBjb2xvciwgZmxvYXQg
cmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSwgZmxvYXQgYWxwaGEpCit7ICAgIAorICAgIGdf
YXNzZXJ0KGNvbG9yKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChjb2xvci0+cmVkLCA9PSwgcmVk
KTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChjb2xvci0+Z3JlZW4sID09LCBncmVlbik7CisgICAg
Z19hc3NlcnRfY21wZmxvYXQoY29sb3ItPmJsdWUsID09LCBibHVlKTsKKyAgICBnX2Fzc2VydF9j
bXBmbG9hdChjb2xvci0+YWxwaGEsID09LCBhbHBoYSk7Cit9CisKIHN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3RGVmYXVsdENvbnRleHQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7
CiAgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHRlc3QtPm1fd2ViVmll
dykgPT0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCkpOwpAQCAtNzk2LDYgKzgwNSw4
MyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0ZpbGVDaG9vc2VyUmVxdWVzdChGaWxlQ2hvb3Nl
clRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1
ZXN0X2NhbmNlbChmaWxlQ2hvb3NlclJlcXVlc3QpOwogfQogCitjbGFzcyBDb2xvckNob29zZXJU
ZXN0OiBwdWJsaWMgVUlDbGllbnRUZXN0IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVTVF9G
SVhUVVJFKENvbG9yQ2hvb3NlclRlc3QpOworICAgIENvbG9yQ2hvb3NlclRlc3QoKQorICAgIDog
aGFkQ2xvc2VkU2lnbmFsKEZBTFNFKQorICAgIHsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdCht
X3dlYlZpZXcsICJydW4tY29sb3ItY2hvb3NlciIsIEdfQ0FMTEJBQ0socnVuQ29sb3JDaG9vc2Vy
Q2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJj
bG9zZS1jb2xvci1jaG9vc2VyIiwgR19DQUxMQkFDSyhjbG9zZUNvbG9yQ2hvb3NlckNhbGxiYWNr
KSwgdGhpcyk7CisgICAgfQorCisgICAgc3RhdGljIGdib29sZWFuIHJ1bkNvbG9yQ2hvb3NlckNh
bGxiYWNrKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0
LCBDb2xvckNob29zZXJUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgdGVzdC0+cnVuQ29sb3JD
aG9vc2VyKHJlcXVlc3QpOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICBzdGF0
aWMgZ2Jvb2xlYW4gY2xvc2VDb2xvckNob29zZXJDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiwgQ29s
b3JDaG9vc2VyVGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIHRlc3QtPmNsb3NlQ29sb3JDaG9v
c2VyKCk7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIHZvaWQgcnVuQ29sb3JD
aG9vc2VyKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QpCisgICAgeworICAgICAg
ICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHJlcXVlc3Qp
KTsKKyAgICAgICAgbV9jb2xvckNob29zZXJSZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICAgICAgZ19t
YWluX2xvb3BfcXVpdChtX21haW5Mb29wKTsKKyAgICB9CisKKyAgICB2b2lkIGNsb3NlQ29sb3JD
aG9vc2VyKCkKKyAgICB7CisgICAgICAgIGhhZENsb3NlZFNpZ25hbCA9IFRSVUU7CisgICAgfQor
CisgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogY2xpY2tNb3VzZUJ1dHRvbkFuZFdhaXRG
b3JDb2xvckNob29zZXJSZXF1ZXN0KGludCB4LCBpbnQgeSkKKyAgICB7CisgICAgICAgIGNsaWNr
TW91c2VCdXR0b24oeCwgeSk7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsK
KyAgICAgICAgcmV0dXJuIG1fY29sb3JDaG9vc2VyUmVxdWVzdC5nZXQoKTsKKyAgICB9CisKKyAg
ICBnYm9vbGVhbiBjbG9zZWRTaWduYWwoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGhhZENsb3Nl
ZFNpZ25hbDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR1JlZlB0cjxXZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0PiBtX2NvbG9yQ2hvb3NlclJlcXVlc3Q7CisgICAgZ2Jvb2xlYW4gaGFkQ2xvc2Vk
U2lnbmFsOworfTsKKworc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDb2xvckNob29zZXJSZXF1ZXN0
KENvbG9yQ2hvb3NlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgdGVzdC0+c2hv
d0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNv
bG9yQ2hvb3NlckhUTUwgPSAiPGh0bWw+PGJvZHk+PGlucHV0IHN0eWxlPSdwb3NpdGlvbjphYnNv
bHV0ZTtsZWZ0OjA7dG9wOjA7bWFyZ2luOjA7cGFkZGluZzowJyB0eXBlPSdjb2xvcicgdmFsdWU9
JyNmZjAwMDAnLz48L2JvZHk+PC9odG1sPiI7CisgICAgdGVzdC0+bG9hZEh0bWwoY29sb3JDaG9v
c2VySFRNTCwgMCk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogY29sb3JDaG9vc2VyUmVxdWVzdCA9IHRlc3QtPmNsaWNr
TW91c2VCdXR0b25BbmRXYWl0Rm9yQ29sb3JDaG9vc2VyUmVxdWVzdCg1LCA1KTsKKyAgICBHZGtS
R0JBKiBjb2xvciA9IHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29s
b3IoY29sb3JDaG9vc2VyUmVxdWVzdCk7CisgICAgYXNzZXJ0Q29sb3JJc0VxdWFsKGNvbG9yLCAx
LjAsIDAuMCwgMC4wLCAxLjApOworCisgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRp
bEZpbmlzaGVkKCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLnZhbHVlID0gJyMwMGZm
MDAnOyIsIDApOworICAgIGNvbG9yID0gd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRf
Y3VycmVudF9jb2xvcihjb2xvckNob29zZXJSZXF1ZXN0KTsKKyAgICBhc3NlcnRDb2xvcklzRXF1
YWwoY29sb3IsIDEuMCwgMC4wLCAwLjAsIDEuMCk7CisKKyAgICBnX2Fzc2VydCghdGVzdC0+Y2xv
c2VkU2lnbmFsKCkpOworICAgIEdka1JHQkEgYmx1ZSA9IHswLjAsIDAuMCwgMS4wLCAxLjB9Owor
ICAgIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yKGNvbG9yQ2hvb3Nl
clJlcXVlc3QsICZibHVlKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5jbG9zZWRTaWduYWwoKSk7Cisg
ICAgY29sb3IgPSB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9jdXJyZW50X2NvbG9y
KGNvbG9yQ2hvb3NlclJlcXVlc3QpOworICAgIGFzc2VydENvbG9ySXNFcXVhbChjb2xvciwgMC4w
LCAwLjAsIDEuMCwgMS4wKTsKKworICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3Jp
cHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykudmFsdWU7IiwgMCk7CisgICAgR093blB0cjxjaGFy
PiB2YWx1ZVN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZh
c2NyaXB0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9
PSwgIiMwMDAwZmYiKTsKK30KKwogY2xhc3MgRnVsbFNjcmVlbkNsaWVudFRlc3Q6IHB1YmxpYyBX
ZWJWaWV3VGVzdCB7CiBwdWJsaWM6CiAgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShGdWxsU2Ny
ZWVuQ2xpZW50VGVzdCk7CkBAIC0xMTA1LDYgKzExOTEsNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAg
ICAgRm9ybUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzdWJtaXQtZm9ybSIsIHRl
c3RXZWJWaWV3U3VibWl0Rm9ybSk7CiAgICAgU2F2ZVdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAic2F2ZSIsIHRlc3RXZWJWaWV3U2F2ZSk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJ2aWV3LW1vZGUiLCB0ZXN0V2ViVmlld01vZGUpOworICAgIENvbG9y
Q2hvb3NlclRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJjb2xvci1jaG9vc2VyLXJlcXVlc3Qi
LCB0ZXN0V2ViVmlld0NvbG9yQ2hvb3NlclJlcXVlc3QpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCAxYjRmYTg2
YTFlYzQzNDlmYWRmMDM3M2E0NzdlOGViNmNhYzVkOTIyLi4wM2QzZDY0Nzg1YTgzNzFlYjBkYjJk
ZWQyZjkzYTM0MTg1NDM4OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mi5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRFbnVt
VHlwZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEVycm9yLmg+CiAjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZpbGVDaG9vc2Vy
UmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RmluZENvbnRyb2xsZXIuaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdC5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRM
aXN0ZW5lclByb3h5LmNwcAppbmRleCAwZWU3OWRkNzFhMzZkMjUzOWZmYWQ0NDdmZTlhNjMwYmE5
MjY2NjYyLi5iYTA1MTczNDdlZTcxM2U0MDM3MGM3MzFhZTJhNDY3OTk0NjVkNzAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5l
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJS
ZXN1bHRMaXN0ZW5lclByb3h5LmNwcApAQCAtNTUsNiArNTUsMTQgQEAgdm9pZCBXZWJDb2xvclBp
Y2tlclJlc3VsdExpc3RlbmVyUHJveHk6OnNldENvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IpCiAg
ICAgbV9wYWdlLT5lbmRDb2xvckNob29zZXIoKTsKIH0KIAordm9pZCBXZWJDb2xvclBpY2tlclJl
c3VsdExpc3RlbmVyUHJveHk6OmVuZENvbG9yQ2hvb3NlcigpCit7CisgICAgaWYgKCFtX3BhZ2Up
CisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZS0+ZW5kQ29sb3JDaG9vc2VyKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJS
ZXN1bHRMaXN0ZW5lclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQ
aWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmgKaW5kZXggZDI4ZWI4YWE5NWMyZDhkYjA2ZDIxYmI3
NDYwMWRhOWRjZWUxYTQ3ZC4uNjJhMmUwYjgwYjlkMzY3ZTg5NmU3YzFjNjI2ZGQ4OGFkYTQxZGEw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyUmVz
dWx0TGlzdGVuZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xv
clBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGludmFsaWRhdGUoKTsKICAgICB2b2lkIHNldENvbG9yKGNvbnN0IFN0cmluZyYp
OworICAgIHZvaWQgZW5kQ29sb3JDaG9vc2VyKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
V2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5KFdlYlBhZ2VQcm94eSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5
R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yZTk0NTllZGRiMDEwNDE0YjFiMTVkMjkwYzA3MTdmYzViZDM4
YzJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJD
b2xvckNob29zZXJQcm94eUd0ay5jcHAKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJB
UyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorI2luY2x1ZGUgIldl
YkNvbG9yQ2hvb3NlclByb3h5R3RrLmgiCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUg
IldlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZh
dGUuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb2xvckNob29zZXJQcm94eUd0azo6V2Vi
Q29sb3JDaG9vc2VyUHJveHlHdGsoV2ViUGFnZVByb3h5KiBwYWdlLCBHdGtXaWRnZXQqIHdlYlZp
ZXcsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0
KQorICAgIDogV2ViQ29sb3JDaG9vc2VyUHJveHkocGFnZSkKKyAgICAsIG1fY29sb3JQaWNrZXJS
ZXN1bHRMaXN0ZW5lcihXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk6OmNyZWF0ZShw
YWdlKSkKKyAgICAsIG1fd2ViVmlldyh3ZWJWaWV3KQoreworICAgIEdSZWZQdHI8V2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdD4gcmVxdWVzdCA9IHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RDcmVh
dGUoaW5pdGlhbENvbG9yLCBtX2NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuZ2V0KCkpOworICAg
IGlmICghd2Via2l0V2ViVmlld1J1bkNvbG9yQ2hvb3NlclJlcXVlc3QoV0VCS0lUX1dFQl9WSUVX
KG1fd2ViVmlldy5nZXQoKSksIHJlcXVlc3QuZ2V0KCkpKQorICAgICAgICB3ZWJraXRfY29sb3Jf
Y2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbChXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKHJlcXVl
c3QuZ2V0KCkpKTsKK30KKwordm9pZCBXZWJDb2xvckNob29zZXJQcm94eUd0azo6ZW5kQ2hvb3Nl
cigpCit7CisgICAgd2Via2l0V2ViVmlld0Nsb3NlQ29sb3JDaG9vc2VyUmVxdWVzdChXRUJLSVRf
V0VCX1ZJRVcobV93ZWJWaWV3LmdldCgpKSk7CisKKyAgICBXZWJDb2xvckNob29zZXJQcm94eTo6
ZW5kQ2hvb3NlcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ZjJlMWRlNDI4
ODI1MjA2MDJiOTcwZmU0MWY5NDg4ZjdkNTkxMDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmgKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgor
ICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29sb3JDaG9vc2VyUHJveHlHdGtfaAorI2RlZmlu
ZSBXZWJDb2xvckNob29zZXJQcm94eUd0a19oCisKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQ
cm94eS5oIgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb2xvcjsKK2NsYXNzIElu
dFJlY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViUGFnZVByb3h5OworY2xh
c3MgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5OworCitjbGFzcyBXZWJDb2xvckNo
b29zZXJQcm94eUd0ayA6ICBwdWJsaWMgV2ViQ29sb3JDaG9vc2VyUHJveHkgeworCitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IGNyZWF0ZShXZWJQ
YWdlUHJveHkqIHBhZ2UsIEd0a1dpZGdldCogd2ViVmlldywgY29uc3QgV2ViQ29yZTo6Q29sb3Im
IGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrKHBh
Z2UsIHdlYlZpZXcsIGluaXRpYWxDb2xvciwgZWxlbWVudFJlY3QpKTsKKyAgICB9CisgICAgdm9p
ZCBlbmRDaG9vc2VyKCk7CisgICAgdm9pZCBzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiBjb2xvcikgeyB9OworCitwcml2YXRlOgorICAgIFdlYkNvbG9yQ2hvb3NlclByb3h5
R3RrKFdlYlBhZ2VQcm94eSosIEd0a1dpZGdldCosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIFJlZlB0cjxXZWJDb2xvclBpY2tlclJlc3VsdExp
c3RlbmVyUHJveHk+IG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lcjsKKworICAgIEdSZWZQdHI8
R09iamVjdD4gbV9yZXF1ZXN0OworICAgIEdSZWZQdHI8R3RrV2lkZ2V0PiBtX3dlYlZpZXc7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkNvbG9yQ2hvb3NlclBy
b3h5R3RrX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBi
L1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggNjNlYTdkZGJkMDljNWM5MDk5
MWQyNTRhMGEwNjAxMjg0MTZhNjZiNy4uZjM0NjcwMDVkMWMzZGY2NjZhNGJjY2Q4ZjM4OTEyODEx
NGFkNWJmMSAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysg
Yi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0yMzksNiArMjM5LDggQEAgX1pO
N1dlYkNvcmUyOERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24xNGFkZEF1dGhvclNoZWV0RU4z
V1RGMTBQYXNzUmVmUHRySU5TXzEKIF9aTjdXZWJDb3JlNEtVUkwxMGludmFsaWRhdGVFdjsKIF9a
TjZXZWJLaXQyMldlYkd0a0V4dGVuc2lvbk1hbmFnZXIxMGluaXRpYWxpemVFUEsxNE9wYXF1ZVdL
QnVuZGxlOwogX1pONldlYktpdDIyV2ViR3RrRXh0ZW5zaW9uTWFuYWdlcjZzaGFyZWRFdjsKK19a
TjdXZWJDb3JlNUNvbG9yQzFFUktOM1dURjZTdHJpbmdFOworX1pON1dlYkNvcmUxNkhUTUxJbnB1
dEVsZW1lbnQyNXNlbGVjdENvbG9ySW5Db2xvckNob29zZXJFUktOU181Q29sb3JFOwogCiBsb2Nh
bDoKIF9aKjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAzYzZkMjJjMjdjMGQ5OWUxOTJlZDc0ZGU1ZWUyOTcwZmY2MmU5MWY4Li45MzU0Y2QzMDVm
YTk1MmI2NjY1ZTY4NWFhYjBmY2EyNDU4YTkyYWFhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTItMjAgIEFy
bmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBb
R1RLXSBBZGQgc3VwcG9ydCBmb3IgY29sb3IgaW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIGlucHV0IHR5cGUgY29sb3IgaW4gZmVhdHVy
ZSBsaXN0LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOgor
CiAyMDEyLTExLTA5ICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgW0dUS10gYWRkIGxpYnNjcmV0IHRvIGpoYnVpbGQgc3lzdGVtCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggMzMyZjFiMmExYzkyMGEwMjhh
OTQyOTNhYzAyNjdlNTU4YjE4MGNkYy4uNDVkZTRkY2QwMWEwZTI2MWI5MGMxNmNmYjMxODZiOGI1
NzA5NzRmYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0
LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMjcy
LDcgKzI3Miw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0lO
UFVUX1NQRUVDSCIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRpbnB1dFNwZWVjaFN1cHBvcnQg
fSwKIAogICAgIHsgb3B0aW9uID0+ICJpbnB1dC10eXBlLWNvbG9yIiwgZGVzYyA9PiAiVG9nZ2xl
IElucHV0IFR5cGUgQ29sb3Igc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlBV
VF9UWVBFX0NPTE9SIiwgZGVmYXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSB8fCBp
c1F0KCkpLCB2YWx1ZSA9PiBcJGlucHV0VHlwZUNvbG9yU3VwcG9ydCB9LAorICAgICAgZGVmaW5l
ID0+ICJFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUiIsIGRlZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgp
IHx8IGlzRWZsKCkgfHwgaXNRdCgpIHx8IGlzR3RrKCkpLCB2YWx1ZSA9PiBcJGlucHV0VHlwZUNv
bG9yU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gImlucHV0LXR5cGUtZGF0ZSIsIGRlc2Mg
PT4gIlRvZ2dsZSBJbnB1dCBUeXBlIERhdGUgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVO
QUJMRV9JTlBVVF9UWVBFX0RBVEUiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW5wdXRUeXBl
RGF0ZVN1cHBvcnQgfSwKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4
MWIyNWY5NDBmYjM1ODJjYzk2YzEzNmVhYmJlMTY2NWVkNzQ0MDk2Li5hZWNkZWE0NWZjZTkyYWRj
ZTgwOWIwNDQ5YWZiNzcxZGVlNGUwMTEwIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTItMjAgIEFybmF1ZCBSZW5ldmllciAgPGEu
cmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBm
b3IgY29sb3IgaW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk4OTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgZXhwb3J0IFdlYkNvcmU6OkNvbG9yOjpDb2xvcihXVEY6OlN0cmluZyBjb25zdCYpIGFu
ZAorICAgICAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3RDb2xvckluQ29sb3JD
aG9vc2VyKFdlYkNvcmU6OkNvbG9yCisgICAgICAgIGNvbnN0JikKKworICAgICAgICAqIFNvdXJj
ZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMTAtMTAgIEFybmF1ZCBSZW5ldmll
ciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBbR3RrXSB0b28gbG9u
ZyBmdW5jdGlvbiBpbiBhbmltYXRpb24gc2NyaXB0IGNhdXNlIHJlcGFpbnQgdG8gbmV2ZXIgaGFw
cGVuLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188129</attachid>
            <date>2013-02-13 11:27:06 -0800</date>
            <delta_ts>2013-05-06 16:51:28 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>73029</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">Y29tbWl0IDFlYWM2Y2FjYjQ3NDQ2NTRmMGI0MmZlZmRjZmQ4ZGVkOTE4ZjY3MzMKQXV0aG9yOiBB
cm5hdWQgUmVuZXZpZXIgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KRGF0ZTogICBXZWQg
RmViIDEzIDExOjEwOjM0IDIwMTMgLTA4MDAKCiAgICBjb2xvciBpbnB1dAoKZGlmZiAtLWdpdCBh
L0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmODU4NThhLi45MGU2NDI4IDEwMDY0NAotLS0g
YS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTItMjAg
IEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAg
ICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY29sb3IgaW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZXhwb3J0IFdlYkNvcmU6OkNvbG9yOjpDb2xvcihX
VEY6OlN0cmluZyBjb25zdCYpIGFuZAorICAgICAgICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjpzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKFdlYkNvcmU6OkNvbG9yCisgICAgICAgIGNvbnN0
JikKKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTMt
MDItMDEgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KIAog
ICAgICAgICBhbGxvdyB1c2luZyB1bmF0dGFjaGVkIGNhbnZhcyBmb3IgZHJhZyBpY29uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGE3MTI0MGQuLjQwYTEwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxMi0xMi0yMCAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1bmcuY29t
PgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBjb2xvciBpbnB1dAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgaW5wdXQgdHlwZSBj
b2xvciBpbiBmZWF0dXJlIGxpc3QuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5mZWF0dXJlcy5h
bS5pbjoKKwogMjAxMy0wMi0wNyAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNh
bXN1bmcuY29tPgogCiAgICAgICAgIG1lYXN1cmVUZXh0KCkgaW1wcm92ZW1lbnRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5mZWF0dXJlcy5hbS5pbiBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmZlYXR1cmVzLmFtLmluCmluZGV4IGE2ZGM0MzkuLjY1ODViOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmZlYXR1cmVzLmFtLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmZlYXR1cmVzLmFtLmluCkBAIC00Myw3ICs0
Myw3IEBAIGZlYXR1cmVfZGVmaW5lc19kZWZhdWx0cyArPSBcCiAJRU5BQkxFX0lGUkFNRV9TRUFN
TEVTUz0xIFwKIAlFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRT0wIFwKIAlFTkFCTEVfSU5QVVRfU1BF
RUNIPTAgXAotCUVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SPTAgXAorCUVOQUJMRV9JTlBVVF9UWVBF
X0NPTE9SPTEgXAogCUVOQUJMRV9JTlBVVF9UWVBFX0RBVEU9MCBcCiAJRU5BQkxFX0lOUFVUX1RZ
UEVfREFURVRJTUU9MCBcCiAJRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTD0wIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwppbmRleCBiMGFmYmVkLi45YTdlZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTItMTItMzEgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lz
YS5zYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY29sb3IgaW5w
dXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTM1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3R1YiBp
bXBsZW1lbnRhdGlvbiBvZiBDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlcgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQ2hyb21lQ2xpZW50KToKKwogMjAxMi0xMC0wMSAgQXJuYXVkIFJl
bmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFtHdGtdIHRv
byBsb25nIGZ1bmN0aW9uIGluIGFuaW1hdGlvbiBzY3JpcHQgY2F1c2UgcmVwYWludCB0byBuZXZl
ciBoYXBwZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmNwcAppbmRleCA2ZmY4MWI5Li43MmMwOTA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKQEAgLTgx
LDYgKzgxLDEwIEBACiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyNpbmNsdWRlICJDb2xvckNob29zZXJDbGllbnQu
aCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC04NDAsNiArODQ0LDE0IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCkKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCitQYXNzT3du
UHRyPENvbG9yQ2hvb3Nlcj4gQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIoQ29sb3JD
aG9vc2VyQ2xpZW50KiwgY29uc3QgQ29sb3ImKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKwogdm9pZCBDaHJvbWVDbGllbnQ6OnJ1bk9w
ZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IHBycEZpbGVDaG9vc2VyKQog
ewogICAgIEdSZWZQdHI8V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRH
UmVmKHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9jcmVhdGUocHJwRmlsZUNob29zZXIpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3Rr
LmgKaW5kZXggY2JkNTg0Ny4uZmZiZTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKQEAgLTM2LDYgKzM2LDcgQEAgdHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgUG9wdXBNZW51Q2xpZW50OworY2xhc3MgQ29sb3I7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtMTIwLDYgKzEyMSwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICNlbmRp
ZgogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNw
YWNlTmVlZGVkKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90IHRvdGFsU3BhY2VOZWVkZWQpOwor
CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgICAgIHZpcnR1YWwgUGFzc093blB0
cjxDb2xvckNob29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqLCBj
b25zdCBDb2xvciYgaW5pdGlhbENvbG9yKTsKKyNlbmRpZgorCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4m
LCBGaWxlSWNvbkxvYWRlciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzBmNDA4ZS4uM2NlNmQ2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxMi0xMi0yMCAgQXJuYXVkIFJlbmV2aWVyICA8
YS5yZW5ldmllckBzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0
IGZvciBjb2xvciBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTg5MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnQgaW5wdXQgY29sb3IgdHlwZSBmb3IgV2ViS2l0Mi4KKworICAgICAg
ICBJbXBsZW1lbnQgc2hvd0NvbG9yUGlja2VyIGFuZCBoaWRlQ29sb3JQaWNrZXIgVUkgY2xpZW50
IGNhbGxiYWNrcy4gQXMKKyAgICAgICAgYSBmYWxsYmFjaywgaW1wbGVtZW50IFdlYkNvbG9yQ2hv
b3NlclByb3h5R3RrLgorCisgICAgICAgIEltcGxlbWVudCBhIFdlYkNvbG9yQ2hvb3NlckNsaWVu
dEd0ayBvYmplY3QuIEEKKyAgICAgICAgV2ViQ29sb3JDaG9vc2VyIGNsaWVudCB3aWxsIGJlIGF0
dGFjaGVkIHRvIHRoZSBXZWJLaXRXZWJWaWV3LiBCb3RoCisgICAgICAgIHNob3dDb2xvclBpY2tl
ciBVSSBjYWxsYmFjayBvciBXZWJDb2xvckNob29zZXJDbGllbnRHdGsgd2lsbCBjYWxsCisgICAg
ICAgIHdlYmtpdFdlYlZpZXdCYXNlU2hvd0NvbG9yQ2hvb3NlciB3aGljaCB3aWxsIHRoZW4gdXNl
IGNsaWVudCB0byBub3RpZnkKKyAgICAgICAgdGhlIFdlYktpdFdlYlZpZXcgdGhhdCBpdCBzaG91
bGQgZGlzcGxheSB0aGUgY29sb3IgY2hvb3Nlci4KKworICAgICAgICBBZGQgYSBlbmRDb2xvckNo
b29zZXIgbWV0aG9kIHRvIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eSB0bworICAg
ICAgICBiZSBhYmxlIHRvIGNhbmNlbCB0aGUgcmVxdWVzdCB3aXRob3V0IHNlbGVjdGluZyBhIGNv
bG9yLgorCisgICAgICAgIFNpbWlsYXJseSB0byB3aGF0IGhhcHBlbnMgZm9yIGZpbGUgY2hvb3Nl
ciwgd2hlbiBhIGNvbG9yIGNob29zZXIgaXMKKyAgICAgICAgbmVlZGVkLCB3ZSBlbWl0IGEgcnVu
LWNvbG9yLWNob29zZXIgc2lnbmFsIHdpdGggYQorICAgICAgICBXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0IG9iamVjdC4gSWYgdGhlIHNpZ25hbCBpcyBub3QgaGFuZGxlZCBieSB0aGUKKyAgICAg
ICAgYXBwbGljYXRpb24sIHdlIHNob3cgYSBHdGtHdGtDb2xvckNob29zZXJEaWFsb2cuCisKKyAg
ICAgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCBBUEkgYWxsb3dzIHRvIHJlYWQgY3VycmVu
dCBjb2xvciAoZWl0aGVyCisgICAgICAgIGluaXRpYWwgY29sb3Igc2V0IGJ5IFdlYkNvcmUgb3Ig
bGF0ZXIsIGNvbG9yIHNlbGVjdGVkIGJ5IHVzZXIpLCB0bworICAgICAgICBzZWxlY3QgYSBjb2xv
ciwgb3IgdG8gY2FuY2VsIGEgcmVxdWVzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3Qu
YW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0NvbG9yQ2hvb3NlckNsaWVudEd0
ay5jcHA6IEFkZGVkLgorICAgICAgICAoV0tWaWV3U2V0Q29sb3JDaG9vc2VyQ2xpZW50R3RrKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZ3RrL1dLQ29sb3JDaG9vc2VyQ2xpZW50R3RrLmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJDbGllbnQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKHNob3dDb2xvckNob29zZXIpOgorICAgICAgICAoaGlkZUNv
bG9yQ2hvb3Nlcik6CisgICAgICAgIChhdHRhY2hDb2xvckNob29zZXJDbGllbnRUb1ZpZXcpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlckNsaWVudC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0LmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZh
dGUpOgorICAgICAgICAod2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdEdldFByb3BlcnR5KToKKyAg
ICAgICAgKHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3
ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0
X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwpOgorICAgICAgICAod2Via2l0X2NvbG9yX2No
b29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3IpOgorICAgICAgICAod2Via2l0X2NvbG9yX2Nob29z
ZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcik6CisgICAgICAgICh3ZWJraXRDb2xvckNob29z
ZXJSZXF1ZXN0Q3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RT
ZXRDb2xvcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdC5oOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KToK
KyAgICAgICAgKF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHA6CisgICAgICAgIChzaG93Q29s
b3JQaWNrZXIpOgorICAgICAgICAoaGlkZUNvbG9yUGlja2VyKToKKyAgICAgICAgKGF0dGFjaFVJ
Q2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmNwcDoKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgIChjb2xvckNo
b29zZXJSZXF1ZXN0Q2hhbmdlQ2FsbGJhY2spOgorICAgICAgICAod2Via2l0V2ViVmlld0Nsb3Nl
Q29sb3JDaG9vc2VyKToKKyAgICAgICAgKGNvbG9yQ2hvb3NlckRpYWxvZ1Jlc3BvbnNlQ2FsbGJh
Y2spOgorICAgICAgICAod2Via2l0V2ViVmlld1J1bkNvbG9yQ2hvb3Nlcik6CisgICAgICAgICh3
ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNz
X2luaXQpOgorICAgICAgICAod2Via2l0V2ViVmlld1Nob3dDb2xvckNob29zZXIpOgorICAgICAg
ICAod2Via2l0V2ViVmlld0hpZGVDb2xvckNob29zZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3Q2xhc3MpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAg
ICAgKF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jh
c2VJbml0aWFsaXplQ29sb3JDaG9vc2VyQ2xpZW50KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdC
YXNlU2hvd0NvbG9yQ2hvb3Nlcik6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUhpZGVDb2xv
ckNob29zZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Mu
c2dtbDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlv
bnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBl
czoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5j
cHA6CisgICAgICAgIChhc3NlcnRDb2xvcklzRXF1YWwpOgorICAgICAgICAodGVzdFdlYlZpZXdD
b2xvckNob29zZXJSZXF1ZXN0KToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb2xvclBp
Y2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvclBp
Y2tlclJlc3VsdExpc3RlbmVyUHJveHk6OmVuZENvbG9yQ2hvb3Nlcik6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJv
eHkuaDoKKyAgICAgICAgKFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eSk6CisgICAg
ICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJDbGllbnRHdGsuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlckNsaWVu
dEd0azo6c2hvd0NvbG9yQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3Nl
ckNsaWVudEd0azo6aGlkZUNvbG9yQ2hvb3Nlcik6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9X
ZWJDb2xvckNob29zZXJDbGllbnRHdGsuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViQ29sb3JDaG9vc2VyQ2xpZW50R3RrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3Rr
L1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUd0azo6V2ViQ29sb3JDaG9vc2Vy
UHJveHlHdGspOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUd0azo6ZW5k
Q2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5R3RrOjpzZXRT
ZWxlY3RlZENvbG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclBy
b3h5R3RrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViQ29sb3JDaG9vc2VyUHJveHlHdGspOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b2xvckNob29zZXJQcm94eUd0azo6Y3JlYXRlKToKKwogMjAxMy0wMi0xMiAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBhIFdvcmtRdWV1
ZU1lc3NhZ2VSZWNlaXZlciBjbGFzcyBhcyBhIHJlcGxhY2VtZW50IGZvciBRdWV1ZUNsaWVudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9X
ZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZjM0ZTc1OC4uYTE4MjJiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zNSw2ICszNSw3IEBAIHdlYmtpdDJfaF9hcGkg
Kz0gXAogCSQoV2ViS2l0MikvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuaCBcCiAJJChXZWJL
aXQyKS9TaGFyZWQvQVBJL2MvV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBcCiAJJChXZWJLaXQy
KS9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLQVBJQ2FzdEd0ay5oIFwKKwkkKFdlYktpdDIpL1VJUHJv
Y2Vzcy9BUEkvQy9ndGsvV0tDb2xvckNob29zZXJDbGllbnRHdGsuaCBcCiAJJChXZWJLaXQyKS9V
SVByb2Nlc3MvQVBJL0MvZ3RrL1dLRnVsbFNjcmVlbkNsaWVudEd0ay5oIFwKIAkkKFdlYktpdDIp
L1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tJbnNwZWN0b3JDbGllbnRHdGsuaCBcCiAJJChXZWJLaXQy
KS9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLVmlldy5oIFwKQEAgLTk1LDYgKzk2LDcgQEAgd2Via2l0
Ml9oX2FwaSArPSBcCiB3ZWJraXQyZ3RrX2hfYXBpICs9IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCisJJChXZWJLaXQyKS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmggXAogCSQoV2ViS2l0Mikv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaCBcCiAJJChXZWJLaXQyKS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaCBcCiAJJChXZWJLaXQyKS9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaCBcCkBAIC01MzgsNiArNTQw
LDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJXaGVlbEV2
ZW50LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0FQSUNhc3RH
dGsuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0NvbG9yQ2hvb3Nl
ckNsaWVudEd0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tD
b2xvckNob29zZXJDbGllbnRHdGsuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L2d0ay9XS0Z1bGxTY3JlZW5DbGllbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvZ3RrL1dLRnVsbFNjcmVlbkNsaWVudEd0ay5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvZ3RrL1dLSW5zcGVjdG9yQ2xpZW50R3RrLmNwcCBcCkBAIC02NTEsNiAr
NjU1LDExIEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5o
IFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJD
bGllbnQuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xv
ckNob29zZXJDbGllbnQuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaCBcCisJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCBcCiAJU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudVByaXZhdGUu
aCBcCkBAIC04MDQsNiArODEzLDEwIEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcCBcCisJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5jcHAgXAorCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuaCBcCisJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJDbGllbnRHdGsuY3Bw
IFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlckNsaWVudEd0
ay5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRHdGsuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlHdGsu
aCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLQ29s
b3JDaG9vc2VyQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9n
dGsvV0tDb2xvckNob29zZXJDbGllbnRHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjkyZmZlYTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvZ3RrL1dLQ29sb3JDaG9vc2VyQ2xpZW50R3RrLmNwcApAQCAtMCwwICsxLDM3
IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEyLCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcworICogICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAg
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLQ29sb3JDaG9vc2Vy
Q2xpZW50R3RrLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJLaXRX
ZWJWaWV3QmFzZVByaXZhdGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwordm9pZCBX
S1ZpZXdTZXRDb2xvckNob29zZXJDbGllbnRHdGsoV0tWaWV3UmVmIHZpZXdSZWYsIGNvbnN0IFdL
Q29sb3JDaG9vc2VyQ2xpZW50R3RrKiB3a0NsaWVudCkKK3sKKyAgICB3ZWJraXRXZWJWaWV3QmFz
ZUluaXRpYWxpemVDb2xvckNob29zZXJDbGllbnQodG9JbXBsKHZpZXdSZWYpLCB3a0NsaWVudCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLQ29s
b3JDaG9vc2VyQ2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3Rr
L1dLQ29sb3JDaG9vc2VyQ2xpZW50R3RrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZWJmZjE4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9ndGsvV0tDb2xvckNob29zZXJDbGllbnRHdGsuaApAQCAtMCwwICsxLDU0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhp
cworICogICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8gCisKKyNpZm5kZWYgV0tDb2xvckNob29zZXJDbGllbnRHdGtfaAorI2RlZmluZSBXS0NvbG9y
Q2hvb3NlckNsaWVudEd0a19oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZk
ZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgdm9pZCAoKldL
Q29sb3JDaG9vc2VyQ2xpZW50R3RrU2hvd0NvbG9yQ2hvb3NlckNhbGxiYWNrKShjb25zdCB2b2lk
KiBjbGllbnRJbmZvLCBXS1N0cmluZ1JlZiwgV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVm
KTsKK3R5cGVkZWYgdm9pZCAoKldLQ29sb3JDaG9vc2VyQ2xpZW50R3RrSGlkZUNvbG9yQ2hvb3Nl
ckNhbGxiYWNrKShjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKworc3RydWN0IFdLQ29sb3JDaG9v
c2VyQ2xpZW50R3RrIHsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmVyc2lvbjsKKyAgICBjb25zdCB2b2lkKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKKyAgICBXS0NvbG9yQ2hvb3NlckNsaWVudEd0
a1Nob3dDb2xvckNob29zZXJDYWxsYmFjayAgc2hvd0NvbG9yQ2hvb3NlcjsKKyAgICBXS0NvbG9y
Q2hvb3NlckNsaWVudEd0a0hpZGVDb2xvckNob29zZXJDYWxsYmFjayAgaGlkZUNvbG9yQ2hvb3Nl
cjsKK307Cit0eXBlZGVmIHN0cnVjdCBXS0NvbG9yQ2hvb3NlckNsaWVudEd0ayBXS0NvbG9yQ2hv
b3NlckNsaWVudEd0azsKKworZW51bSB7IGtXS0NvbG9yQ2hvb3NlckNsaWVudEd0a0N1cnJlbnRW
ZXJzaW9uID0gMCB9OworCitXS19FWFBPUlQgdm9pZCBXS1ZpZXdTZXRDb2xvckNob29zZXJDbGll
bnRHdGsoV0tWaWV3UmVmIHZpZXdSZWYsIGNvbnN0IFdLQ29sb3JDaG9vc2VyQ2xpZW50R3RrKiBj
bGllbnQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tD
b2xvckNob29zZXJDbGllbnRHdGtfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGJmNjE2MjQuLjE5MWUyMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5jcHAKQEAgLTQ0LDYgKzQ0LDEwIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuaCIKKyNlbmRpZgorCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMzEsMTAg
KzIzNSw5IEBAIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6
OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByCiB9CiAKICNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKLVBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IFBhZ2VDbGllbnRJ
bXBsOjpjcmVhdGVDb2xvckNob29zZXJQcm94eShXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3Jl
OjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKQorUGFzc1JlZlB0cjxXZWJDb2xvckNo
b29zZXJQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNvbG9yQ2hvb3NlclByb3h5KFdlYlBh
Z2VQcm94eSogcGFnZSwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gV2ViQ29sb3JDaG9vc2VyUHJveHlHdGs6OmNyZWF0
ZShwYWdlLCBtX3ZpZXdXaWRnZXQsIGluaXRpYWxDb2xvciwgZWxlbWVudFJlY3QpOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dENvbG9yQ2hvb3NlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDb2xvckNob29zZXJDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmNhNGU5NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJDbGllbnQuY3BwCkBAIC0wLDAgKzEsNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAg
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRDb2xvckNo
b29zZXJDbGllbnQuaCIKKworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiV2ViS2l0UHJp
dmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CisKK3N0YXRpYyB2b2lkIHNob3dDb2xvckNob29zZXIoY29uc3Qgdm9pZCog
Y2xpZW50SW5mbywgV0tTdHJpbmdSZWYgaW5pdGlhbENvbG9yLCBXS0NvbG9yUGlja2VyUmVzdWx0
TGlzdGVuZXJSZWYgbGlzdGVuZXIpCit7CisgICAgV2ViQ29yZTo6Q29sb3IgY29sb3IgPSBXZWJD
b3JlOjpDb2xvcihXZWJLaXQ6OnRvV1RGU3RyaW5nKGluaXRpYWxDb2xvcikpOworICAgIHdlYmtp
dFdlYlZpZXdTaG93Q29sb3JDaG9vc2VyKFdFQktJVF9XRUJfVklFVyhjbGllbnRJbmZvKSwgY29s
b3IsIHRvSW1wbChsaXN0ZW5lcikpOworfQorCitzdGF0aWMgdm9pZCBoaWRlQ29sb3JDaG9vc2Vy
KGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgd2Via2l0V2ViVmlld0hpZGVDb2xvckNo
b29zZXIoV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pKTsKK30KKwordm9pZCBhdHRhY2hDb2xv
ckNob29zZXJDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBXS0Nv
bG9yQ2hvb3NlckNsaWVudEd0ayB3a0NvbG9yQ2hvb3NlckNsaWVudCA9IHsKKyAgICAgICAga1dL
Q29sb3JDaG9vc2VyQ2xpZW50R3RrQ3VycmVudFZlcnNpb24sCisgICAgICAgIHdlYlZpZXcsIC8v
IGNsaWVudEluZm8KKyAgICAgICAgc2hvd0NvbG9yQ2hvb3NlciwKKyAgICAgICAgaGlkZUNvbG9y
Q2hvb3NlcgorICAgIH07CisgICAgV0tWaWV3U2V0Q29sb3JDaG9vc2VyQ2xpZW50R3RrKHRvQVBJ
KFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKSwgJndrQ29sb3JDaG9vc2VyQ2xpZW50KTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENv
bG9yQ2hvb3NlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q29sb3JDaG9vc2VyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uY2YwZDNiYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlckNsaWVudC5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisg
KiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYktpdENvbG9yQ2hvb3NlckNsaWVudF9oCisjZGVmaW5lIFdlYktpdENvbG9y
Q2hvb3NlckNsaWVudF9oCisKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCisKK3ZvaWQgYXR0
YWNoQ29sb3JDaG9vc2VyQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqKTsKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmRhZTg4MDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcApAQCAtMCwwICsxLDE5MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3QuaCIKKworI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRl
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGli
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKy8qKgorICogU0VDVElPTjogV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdAorICogQFNob3J0X2Rlc2NyaXB0aW9uOiBBIHJlcXVlc3QgdG8g
b3BlbiBhIGNvbG9yIGNob29zZXIKKyAqIEBUaXRsZTogV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dAorICogQFNlZV9hbHNvOiAjV2ViS2l0V2ViVmlldworICoKKyAqIFdoZW5ldmVyIHRoZSB1c2Vy
IGludGVyYWN0cyB3aXRoIGFuICZsdDtpbnB1dCB0eXBlPSdjb2xvcicgLyZndDsKKyAqIEhUTUwg
ZWxlbWVudCwgV2ViS2l0IHdpbGwgbmVlZCB0byBzaG93IGEgZGlhbG9nIHRvIGNob29zZSBhIGNv
bG9yLiBGb3IgdGhhdAorICogdG8gaGFwcGVuIGluIGEgZ2VuZXJhbCB3YXksIGluc3RlYWQgb2Yg
anVzdCBvcGVuaW5nIGEgI0d0a0NvbG9yQ2hvb3NlcgorICogKHdoaWNoIG1pZ2h0IGJlIG5vdCBk
ZXNpcmFibGUgaW4gc29tZSBjYXNlcywgd2hpY2ggY291bGQgcHJlZmVyIHRvIHVzZSB0aGVpcgor
ICogb3duIGNvbG9yIGNob29zZXIgZGlhbG9nKSwgV2ViS2l0IHdpbGwgZmlyZSB0aGUKKyAqICNX
ZWJLaXRXZWJWaWV3OjpydW4tY29sb3ItY2hvb3NlciBzaWduYWwgd2l0aCBhICNXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0CisgKiBvYmplY3QsIHdoaWNoIHdpbGwgYWxsb3cgdGhlIGNsaWVudCBh
cHBsaWNhdGlvbiB0byBzcGVjaWZ5IHRoZSBjb2xvciB0byBiZQorICogc2VsZWN0ZWQsIHRvIGlu
c3BlY3QgdGhlIGRldGFpbHMgb2YgdGhlIHJlcXVlc3QgKGUuZy4gdG8gZ2V0IGluaXRpYWwgY29s
b3IpCisgKiBhbmQgdG8gY2FuY2VsIHRoZSByZXF1ZXN0LCBpbiBjYXNlIG5vdGhpbmcgd2FzIHNl
bGVjdGVkLgorICoKKyAqIEluIGNhc2UgdGhlIGNsaWVudCBhcHBsaWNhdGlvbiBkb2VzIG5vdCB3
aXNoIHRvIGhhbmRsZSB0aGlzIHNpZ25hbCwKKyAqIFdlYktpdCB3aWxsIHByb3ZpZGUgYSBkZWZh
dWx0IGhhbmRsZXIgd2hpY2ggd2lsbCBhc3luY2hyb25vdXNseSBydW4KKyAqIGEgcmVndWxhciAj
R3RrQ29sb3JDaG9vc2VyIGZvciB0aGUgdXNlciB0byBpbnRlcmFjdCB3aXRoLgorICovCisKK3N0
cnVjdCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUgeworI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQorICAgIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eSogbGlz
dGVuZXI7CisjZW5kaWYKKyAgICBHZGtSR0JBIGNvbG9yOworICAgIGJvb2wgaGFuZGxlZFJlcXVl
c3Q7Cit9OworCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCwg
d2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdCwgR19UWVBFX09CSkVDVCkKKworZW51bSB7Cisg
ICAgUFJPUF8wLAorCisgICAgUFJPUF9DT0xPUgorfTsKKworc3RhdGljIHZvaWQgd2Via2l0Q29s
b3JDaG9vc2VyUmVxdWVzdEdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElk
LCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1Qo
b2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQUk9QX0NPTE9SOgor
ICAgICAgICBnX3ZhbHVlX3NldF9ib3hlZCh2YWx1ZSwgJnJlcXVlc3QtPnByaXYtPmNvbG9yKTsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZB
TElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOworICAgIH0KK30KKwor
c3RhdGljIHZvaWQgd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdFNldFByb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBw
YXJhbVNwZWMpCit7CisgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCA9IFdF
QktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1Qob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElk
KSB7CisgICAgY2FzZSBQUk9QX0NPTE9SOgorICAgICAgICBpZiAoR2RrUkdCQSogY29sb3IgPSBz
dGF0aWNfY2FzdDxHZGtSR0JBKj4oZ192YWx1ZV9nZXRfYm94ZWQodmFsdWUpKSkKKyAgICAgICAg
ICAgIHJlcXVlc3QtPnByaXYtPmNvbG9yID0gKmNvbG9yOworICAgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0
LCBwcm9wSWQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfY29s
b3JfY2hvb3Nlcl9yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdENs
YXNzKiByZXF1ZXN0Q2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdf
T0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0
eSA9IHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RHZXRQcm9wZXJ0eTsKKyAgICBvYmplY3RDbGFz
cy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdFNldFByb3BlcnR5Owor
CisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzpjb2xvcjoKKyAgICAgKgorICAgICAqIFRo
ZSAjR2RrUkdCQSBjb2xvciBvZiB0aGUgcmVxdWVzdAorICAgICAqLworICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUk9QX0NPTE9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ19wYXJhbV9zcGVjX2JveGVkKCJjb2xvciIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkN1cnJlbnQgY29sb3IiKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygi
VGhlIGN1cnJlbnQgY29sb3IgZm9yIHRoZSByZXF1ZXN0IiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdES19UWVBFX1JHQkEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJ
VF9QQVJBTV9SRUFEQUJMRSkpOworCit9CisKKy8qKgorICogd2Via2l0X2NvbG9yX2Nob29zZXJf
cmVxdWVzdF9jYW5jZWw6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dAorICoKKyAqIEFzayBXZWJLaXQgdG8gY2FuY2VsIHRoZSByZXF1ZXN0LiBJdCdzIGltcG9ydGFu
dCB0byBkbyB0aGlzIGluIGNhc2UKKyAqIG5vIHNlbGVjdGlvbiBoYXMgYmVlbiBtYWRlIGluIHRo
ZSBjbGllbnQsIG90aGVyd2lzZSB0aGUgcmVxdWVzdAorICogd29uJ3QgYmUgcHJvcGVybHkgY29t
cGxldGVkIGFuZCB0aGUgYnJvd3NlciB3aWxsIGtlZXAgdGhlIHJlcXVlc3QKKyAqIHBlbmRpbmcg
Zm9yZXZlciwgd2hpY2ggbWlnaHQgY2F1c2UgdGhlIGJyb3dzZXIgdG8gaGFuZy4KKyAqLwordm9p
ZCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbChXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGlmIChyZXF1ZXN0LT5wcml2LT5oYW5kbGVkUmVxdWVz
dCkKKyAgICAgICAgcmV0dXJuOworICAgIHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0ID0g
VFJVRTsKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICByZXF1ZXN0LT5wcml2LT5s
aXN0ZW5lci0+ZW5kQ29sb3JDaG9vc2VyKCk7CisjZW5kaWYKK30KKworLyoqCisgKiB3ZWJraXRf
Y29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvcjoKKyAqIEByZXF1ZXN0OiBhICNXZWJL
aXRGaWxlQ2hvb3NlclJlcXVlc3QKKyAqIEBjb2xvcjogYSBwb2ludGVyICNHZGtSR0JBCisgKgor
ICogQXNrIFdlYktpdCB0byBzZWxlY3QgY29sb3IgYW5kIGNvbXBsZXRlIHRoZSByZXF1ZXN0Lgor
ICovCit2b2lkIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yKFdlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IEdka1JHQkEqIGNvbG9yKQorewor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVChyZXF1
ZXN0KSk7CisgICAgaWYgKHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0KQorICAgICAgICBy
ZXR1cm47CisgICAgcmVxdWVzdC0+cHJpdi0+aGFuZGxlZFJlcXVlc3QgPSBUUlVFOworCisgICAg
cmVxdWVzdC0+cHJpdi0+Y29sb3IgPSAqY29sb3I7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCisgICAgcmVxdWVzdC0+cHJpdi0+bGlzdGVuZXItPnNldENvbG9yKENvbG9yKHJlcXVlc3Qt
PnByaXYtPmNvbG9yKS5zZXJpYWxpemVkKCkpOworI2VuZGlmCit9CisKKy8qKgorICogd2Via2l0
X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcjoKKyAqIEByZXF1ZXN0OiBh
ICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0CisgKgorICogUmV0dXJuczogdGhlIGN1cnJlbnQg
Y29sb3Igb2YgcmVxdWVzdC4gV2hpbGUgbm8gY29sb3IgaGFzIGJlZW4gc2VsZWN0ZWQsIGl0Cisg
KiBpcyB0aGUgaW5pdGlhbCB2YWx1ZSBkZWZpbmVkIGJ5IFdlYktpdC4gV2hlbiBhIGNvbG9yIGhh
cyBiZWVuIHNlbGVjdGVkLCB0aGlzCisgKiBiZWNvbWVzIHRoZSBzZWxlY3RlZCB2YWx1ZS4KKyAq
LworR2RrUkdCQSogd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xv
cihXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1QocmVxdWVzdCksIE5VTEwp
OworCisgICAgcmV0dXJuICZyZXF1ZXN0LT5wcml2LT5jb2xvcjsKK30KKworI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQorV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogd2Via2l0Q29sb3JD
aG9vc2VyUmVxdWVzdENyZWF0ZShjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yLCBXZWJDb2xvclBp
Y2tlclJlc3VsdExpc3RlbmVyUHJveHkqIGxpc3RlbmVyKQoreworICAgIFdlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QsIE5VTEwpKTsKKyAgICBy
ZXF1ZXN0LT5wcml2LT5saXN0ZW5lciA9IGxpc3RlbmVyOworICAgIHJlcXVlc3QtPnByaXYtPmNv
bG9yID0gaW5pdGlhbENvbG9yOworICAgIHJldHVybiByZXF1ZXN0OworfQorCit2b2lkIHdlYmtp
dFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RTZXRDb2xvcihXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
KiByZXF1ZXN0LCBjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgaWYgKGdka19yZ2JhX2VxdWFs
KCZjb2xvciwgJnJlcXVlc3QtPnByaXYtPmNvbG9yKSkKKyAgICAgICAgcmV0dXJuOworICAgIHJl
cXVlc3QtPnByaXYtPmNvbG9yID0gY29sb3I7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNU
KHJlcXVlc3QpLCAiY29sb3IiKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ZDhkMmIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0LmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ft
c3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6
CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAq
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJf
SF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25s
eSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYK
KworI2lmbmRlZiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0X2gKKyNkZWZpbmUgV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdF9oCisKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Vi
a2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRf
VFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QgICAgICAgICAgICAod2Via2l0X2NvbG9yX2Nob29z
ZXJfcmVxdWVzdF9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFV
RVNUKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdF
QktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCwgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dCkpCisjZGVmaW5lIFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1Moa2xhc3MpICAg
IChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hP
T1NFUl9SRVFVRVNULCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBX
RUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNL
X0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCkp
CisjZGVmaW5lIFdFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1Moa2xhc3MpIChH
X1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NF
Ul9SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVF9HRVRfQ0xB
U1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9D
T0xPUl9DSE9PU0VSX1JFUVVFU1QsIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcykpCisK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICAgICAgICBXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3RDbGFzcyAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzczsKK3R5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZSBXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0UHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IHsKKyAg
ICBHT2JqZWN0IHBhcmVudDsKKworICAgIC8qPCBwcml2YXRlID4qLworICAgIFdlYktpdENvbG9y
Q2hvb3NlclJlcXVlc3RQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9Owor
CitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF90eXBl
ICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgR2RrUkdCQSAqCit3ZWJraXRfY29sb3Jf
Y2hvb3Nlcl9yZXF1ZXN0X2dldF9jdXJyZW50X2NvbG9yICAoV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCAqcmVxdWVzdCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2NvbG9yX2Nob29zZXJf
cmVxdWVzdF9zZWxlY3RfY29sb3IgICAgICAgKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgKnJl
cXVlc3QsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdka1JHQkEgKmNvbG9yKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfY29sb3Jf
Y2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbCAgICAgICAgICAgICAoV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCAqcmVxdWVzdCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3RQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YzA1ZTA2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgKQEAgLTAsMCArMSw0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGVfaAorI2RlZmlu
ZSBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXZWJDb2xv
clBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQ29sb3IuaD4KKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCitXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0KiB3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0Q3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkNvbG9yJiwgV2ViS2l0OjpXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkq
KTsKK3ZvaWQgd2Via2l0V2ViQ29sb3JDaG9vc2VyUmVxdWVzdEVuZChXZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0Kik7Cit2b2lkIHdlYmtpdFdlYkNvbG9yQ2hvb3NlclJlcXVlc3RTZXRDb2xvcihX
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorCisjZW5kaWYgLy8gV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdFByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UHJpdmF0ZS5oCmluZGV4IGJlMzllODAuLmVjOTJhODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKQEAgLTI3LDYg
KzI3LDcgQEAKICNkZWZpbmUgV2ViS2l0UHJpdmF0ZV9oCiAKICNpbmNsdWRlIDxXZWJLaXQyL1dL
QVBJQ2FzdC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tDb2xvckNob29zZXJDbGllbnRHdGsuaD4K
ICNpbmNsdWRlIDxXZWJLaXQyL1dLQ29udGV4dFNvdXAuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dL
RG93bmxvYWQuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLRmluZE9wdGlvbnMuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcAppbmRl
eCAwMGQ2NWVkLi5jYjU0YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0zMCw2ICszMCwxMCBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5o
PgogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdFByaXZhdGUuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogCiBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJM
UmVxdWVzdFJlZiwgV0tEaWN0aW9uYXJ5UmVmIHdrV2luZG93RmVhdHVyZXMsIFdLRXZlbnRNb2Rp
ZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKQEAgLTE1
Nyw2ICsxNjEsMTggQEAgc3RhdGljIHZvaWQgcnVuTW9kYWwoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCiAgICAgd2Via2l0V2ViVmlld1J1bkFzTW9kYWwoV0VCS0lUX1dF
Ql9WSUVXKGNsaWVudEluZm8pKTsKIH0KIAorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQor
c3RhdGljIHZvaWQgc2hvd0NvbG9yUGlja2VyKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgaW5pdGlh
bENvbG9yLCBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCit7CisgICAgd2Via2l0V2ViVmlld0Jhc2VTaG93Q29sb3JDaG9vc2Vy
KFdFQktJVF9XRUJfVklFV19CQVNFKGNsaWVudEluZm8pLCBXZWJDb3JlOjpDb2xvcihXZWJLaXQ6
OnRvV1RGU3RyaW5nKGluaXRpYWxDb2xvcikpLCB0b0ltcGwobGlzdGVuZXIpKTsKK30KKworc3Rh
dGljIHZvaWQgaGlkZUNvbG9yUGlja2VyKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKK3sKKyAgICB3ZWJraXRXZWJWaWV3QmFzZUhpZGVDb2xvckNob29zZXIoV0VCS0lUX1dFQl9W
SUVXX0JBU0UoY2xpZW50SW5mbykpOworfQorI2VuZGlmCisKIHZvaWQgYXR0YWNoVUlDbGllbnRU
b1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBXS1BhZ2VVSUNsaWVudCB3a1VJ
Q2xpZW50ID0gewpAQCAtMjA1LDggKzIyMSwxMyBAQCB2b2lkIGF0dGFjaFVJQ2xpZW50VG9WaWV3
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
LAogICAgICAgICAwLCAvLyBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdAogICAgICAgICAwLCAvLyB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQKKyNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICAgICAgc2hvd0NvbG9yUGlja2VyLAorICAgICAg
ICBoaWRlQ29sb3JQaWNrZXIsCisjZWxzZQogICAgICAgICAwLCAvLyBzaG93Q29sb3JQaWNrZXIK
ICAgICAgICAgMCwgLy8gaGlkZUNvbG9yUGlja2VyCisjZW5kaWYKICAgICB9OwogICAgIFdLUGFn
ZVJlZiB3a1BhZ2UgPSB0b0FQSSh3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9W
SUVXX0JBU0Uod2ViVmlldykpKTsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQod2tQYWdlLCAm
d2tVSUNsaWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuY3BwCmluZGV4IGU3YTc1MDEuLmY3NzNmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yMSwxMCAr
MjEsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3Lmgi
CiAKKyNpbmNsdWRlICJXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaCIKICNpbmNs
dWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1E
YXRhLmgiCiAjaW5jbHVkZSAiV2ViRGF0YS5oIgogI2luY2x1ZGUgIldlYktpdEJhY2tGb3J3YXJk
TGlzdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRDb2xvckNob29zZXJDbGllbnQuaCIKKyNp
bmNsdWRlICJXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldl
YktpdENvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29udGV4dE1lbnVJdGVt
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdENvbnRleHRNZW51UHJpdmF0ZS5oIgpAQCAtMTA2
LDYgKzEwOSw5IEBAIGVudW0gewogCiAgICAgUlVOX0ZJTEVfQ0hPT1NFUiwKIAorICAgIFJVTl9D
T0xPUl9DSE9PU0VSLAorICAgIENMT1NFX0NPTE9SX0NIT09TRVIsCisKICAgICBDT05URVhUX01F
TlUsCiAgICAgQ09OVEVYVF9NRU5VX0RJU01JU1NFRCwKIApAQCAtMTc3LDYgKzE4Myw5IEBAIHN0
cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgIEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBm
YXZpY29uQ2FuY2VsbGFibGU7CiAgICAgQ1N0cmluZyBmYXZpY29uVVJJOwogICAgIHVuc2lnbmVk
IGxvbmcgZmF2aWNvbkNoYW5nZWRIYW5kbGVySUQ7CisKKyAgICBHdGtXaWRnZXQqIGNvbG9yQ2hv
b3NlckRpYWxvZzsKKyAgICBHUmVmUHRyPFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Q+IGNvbG9y
Q2hvb3NlclJlcXVlc3Q7CiB9OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0g
PSB7IDAsIH07CkBAIC00MTUsNiArNDI0LDU0IEBAIHN0YXRpYyB2b2lkIGZpbGVDaG9vc2VyRGlh
bG9nUmVzcG9uc2VDYWxsYmFjayhHdGtEaWFsb2cqIGRpYWxvZywgZ2ludCByZXNwb25zZUlECiAg
ICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19XSURHRVQoZGlhbG9nKSk7CiB9CiAKK3N0YXRpYyB2
b2lkIGNvbG9yQ2hvb3NlclJlcXVlc3RDaGFuZ2VDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdQ
YXJhbVNwZWMqLCBHdGtXaWRnZXQqIGRpYWxvZykKK3sKKyAgICBXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVChvYmplY3QpOwor
CisgICAgR2RrUkdCQSogY29sb3IgPSB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9j
dXJyZW50X2NvbG9yKHJlcXVlc3QpOworICAgIGd0a19jb2xvcl9jaG9vc2VyX3NldF9yZ2JhKEdU
S19DT0xPUl9DSE9PU0VSKGRpYWxvZyksIGNvbG9yKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0
V2ViVmlld0Nsb3NlQ29sb3JDaG9vc2VyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAg
aWYgKHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3NlclJlcXVlc3QpIHsKKyAgICAgICAgZ19vYmpl
Y3RfdW5yZWYod2ViVmlldy0+cHJpdi0+Y29sb3JDaG9vc2VyUmVxdWVzdC5nZXQoKSk7CisgICAg
ICAgIHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3NlclJlcXVlc3QuY2xlYXIoKTsKKyAgICB9Cisg
ICAgaWYgKHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3NlckRpYWxvZykKKyAgICAgICAgZ3RrX3dp
ZGdldF9kZXN0cm95KHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3NlckRpYWxvZyk7Cit9CisKK3N0
YXRpYyB2b2lkIGNvbG9yQ2hvb3NlckRpYWxvZ1Jlc3BvbnNlQ2FsbGJhY2soR3RrV2lkZ2V0KiBk
aWFsb2csIGdpbnQgcmVzcG9uc2VJRCwgV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBp
ZiAocmVzcG9uc2VJRCA9PSBHVEtfUkVTUE9OU0VfT0spIHsKKyAgICAgICAgR2RrUkdCQSBjb2xv
cjsKKyAgICAgICAgZ3RrX2NvbG9yX2Nob29zZXJfZ2V0X3JnYmEoR1RLX0NPTE9SX0NIT09TRVIo
ZGlhbG9nKSwgJmNvbG9yKTsKKyAgICAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9z
ZWxlY3RfY29sb3Iod2ViVmlldy0+cHJpdi0+Y29sb3JDaG9vc2VyUmVxdWVzdC5nZXQoKSwgJmNv
bG9yKTsKKyAgICB9IGVsc2UKKyAgICAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9j
YW5jZWwod2ViVmlldy0+cHJpdi0+Y29sb3JDaG9vc2VyUmVxdWVzdC5nZXQoKSk7Cit9CisKK3N0
YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3UnVuQ29sb3JDaG9vc2VyKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19v
YmplY3RfcmVmKEdfT0JKRUNUKHJlcXVlc3QpKTsKKyAgICBHdGtXaWRnZXQqIHRvcGxldmVsID0g
Z3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3KSk7CisgICAgaWYgKCEh
d2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KHRvcGxldmVsKSkKKyAgICAgICAgdG9wbGV2
ZWwgPSAwOworICAgIEd0a1dpZGdldCogZGlhbG9nID0gIGd0a19jb2xvcl9jaG9vc2VyX2RpYWxv
Z19uZXcoXygiU2VsZWN0IENvbG9yIiksIEdUS19XSU5ET1codG9wbGV2ZWwpKTsKKworICAgIGd0
a19jb2xvcl9jaG9vc2VyX3NldF9yZ2JhKEdUS19DT0xPUl9DSE9PU0VSKGRpYWxvZyksIHdlYmtp
dF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IocmVxdWVzdCkpOworCisg
ICAgZ19zaWduYWxfY29ubmVjdChyZXF1ZXN0LCAibm90aWZ5Ojpjb2xvciIsIEdfQ0FMTEJBQ0so
Y29sb3JDaG9vc2VyUmVxdWVzdENoYW5nZUNhbGxiYWNrKSwgZGlhbG9nKTsKKyAgICBnX3NpZ25h
bF9jb25uZWN0KGRpYWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhjb2xvckNob29zZXJEaWFs
b2dSZXNwb25zZUNhbGxiYWNrKSwgd2ViVmlldyk7CisgICAgZ3RrX3dpZGdldF9zaG93KGRpYWxv
Zyk7CisKKyAgICB3ZWJWaWV3LT5wcml2LT5jb2xvckNob29zZXJEaWFsb2cgPSBkaWFsb2c7Cisg
ICAgd2ViVmlldy0+cHJpdi0+Y29sb3JDaG9vc2VyUmVxdWVzdCA9IHJlcXVlc3Q7CisKKyAgICBy
ZXR1cm4gVFJVRTsKK30KKwogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hv
b3NlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QqIHJl
cXVlc3QpCiB7CiAgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193aWRnZXRfZ2V0X3RvcGxl
dmVsKEdUS19XSURHRVQod2ViVmlldykpOwpAQCAtNDYzLDYgKzUyMCw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgYXR0YWNoVUlD
bGllbnRUb1ZpZXcod2ViVmlldyk7CiAgICAgYXR0YWNoUG9saWN5Q2xpZW50VG9WaWV3KHdlYlZp
ZXcpOwogICAgIGF0dGFjaEZ1bGxTY3JlZW5DbGllbnRUb1ZpZXcod2ViVmlldyk7CisgICAgYXR0
YWNoQ29sb3JDaG9vc2VyQ2xpZW50VG9WaWV3KHdlYlZpZXcpOwogICAgIGF0dGFjaENvbnRleHRN
ZW51Q2xpZW50VG9WaWV3KHdlYlZpZXcpOwogICAgIGF0dGFjaEZvcm1DbGllbnRUb1ZpZXcod2Vi
Vmlldyk7CiAKQEAgLTU2NSw2ICs2MjMsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
Y2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICB3ZWJWaWV3
Q2xhc3MtPmRlY2lkZV9wb2xpY3kgPSB3ZWJraXRXZWJWaWV3RGVjaWRlUG9saWN5OwogICAgIHdl
YlZpZXdDbGFzcy0+cGVybWlzc2lvbl9yZXF1ZXN0ID0gd2Via2l0V2ViVmlld1Blcm1pc3Npb25S
ZXF1ZXN0OwogICAgIHdlYlZpZXdDbGFzcy0+cnVuX2ZpbGVfY2hvb3NlciA9IHdlYmtpdFdlYlZp
ZXdSdW5GaWxlQ2hvb3NlcjsKKyAgICB3ZWJWaWV3Q2xhc3MtPnJ1bl9jb2xvcl9jaG9vc2VyID0g
d2Via2l0V2ViVmlld1J1bkNvbG9yQ2hvb3NlcjsKKyAgICB3ZWJWaWV3Q2xhc3MtPmNsb3NlX2Nv
bG9yX2Nob29zZXIgPSB3ZWJraXRXZWJWaWV3Q2xvc2VDb2xvckNob29zZXI7CiAKICAgICAvKioK
ICAgICAgKiBXZWJLaXRXZWJWaWV3OndlYi1jb250ZXh0OgpAQCAtMTE3MSw2ICsxMjMxLDU2IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFz
cyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDEs
IC8qIG51bWJlciBvZiBwYXJhbWV0ZXJzICovCiAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRf
VFlQRV9GSUxFX0NIT09TRVJfUkVRVUVTVCk7CiAKKyAgICAgLyoqCisgICAgICAqIFdlYktpdFdl
YlZpZXc6OnJ1bi1jb2xvci1jaG9vc2VyOgorICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0
V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgICogQHJlcXVlc3Q6
IGEgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAgICAgICoKKyAgICAgICogVGhpcyBzaWdu
YWwgaXMgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIGludGVyYWN0cyB3aXRoIGEgJmx0O2lucHV0Cisg
ICAgICAqIHR5cGU9J2NvbG9yJyAvJmd0OyBIVE1MIGVsZW1lbnQsIHJlcXVlc3RpbmcgZnJvbSBX
ZWJLaXQgdG8gc2hvdworICAgICAgKiBhIGRpYWxvZyB0byBzZWxlY3QgYSBjb2xvci4gVG8gbGV0
IHRoZSBhcHBsaWNhdGlvbiBrbm93IHRoZSBkZXRhaWxzIG9mCisgICAgICAqIHRoZSBjb2xvciBj
aG9vc2VyLCBhcyB3ZWxsIGFzIHRvIGFsbG93IHRoZSBjbGllbnQgYXBwbGljYXRpb24gdG8gZWl0
aGVyCisgICAgICAqIGNhbmNlbCB0aGUgcmVxdWVzdCBvciBwZXJmb3JtIGFuIGFjdHVhbCBjb2xv
ciBzZWxlY3Rpb24sIHRoZSBzaWduYWwgd2lsbAorICAgICAgKiBwYXNzIGFuIGluc3RhbmNlIG9m
IHRoZSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCBpbiB0aGUgQHJlcXVlc3QKKyAgICAgICog
YXJndW1lbnQuCisgICAgICAqCisgICAgICAqIFRoZSBkZWZhdWx0IHNpZ25hbCBoYW5kbGVyIHdp
bGwgYXN5bmNocm9ub3VzbHkgcnVuIGEgcmVndWxhcgorICAgICAgKiAjR3RrQ29sb3JDaG9vc2Vy
IGZvciB0aGUgdXNlciB0byBpbnRlcmFjdCB3aXRoLgorICAgICAgKgorICAgICAgICogUmV0dXJu
czogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRo
ZSBldmVudC4KKyAgICAgICogICAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVy
LgorICAgICAgKgorICAgICAgKi8KKyAgICBzaWduYWxzW1JVTl9DT0xPUl9DSE9PU0VSXSA9Cisg
ICAgICAgIGdfc2lnbmFsX25ldygicnVuLWNvbG9yLWNob29zZXIiLAorICAgICAgICAgICAgICAg
ICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgICAgICAg
ICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZG
U0VUKFdlYktpdFdlYlZpZXdDbGFzcywgcnVuX2NvbG9yX2Nob29zZXIpLAorICAgICAgICAgICAg
ICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCAwIC8qIGFjY3VtdWxh
dG9yIGRhdGEgKi8sCisgICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFO
X19PQkpFQ1QsCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwgLyogbnVt
YmVyIG9mIHBhcmFtZXRlcnMgKi8KKyAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX0NP
TE9SX0NIT09TRVJfUkVRVUVTVCk7CisKKyAgICAgLyoqCisgICAgICAqIFdlYktpdFdlYlZpZXc6
OmNsb3NlLWNvbG9yLWNob29zZXI6CisgICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJW
aWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAgKgorICAgICAgKiBFbWl0
dGVkIHdoZW4gY29sb3IgcGlja2VyIG11c3QgYmUgaGlkZGVuLiBUaGlzIGhhcHBlbnMgZm9yIGV4
YW1wbGUgaWYgdGhlCisgICAgICAqIHBhZ2UgdHJpZ2dlcmluZyB0aGUgcmVxdWVzdCB1bmxvYWRz
IGJlZm9yZSB0aGUgcmVxdWVzdCBpcyBjb21wbGV0ZWQuCisgICAgICAqCisgICAgICAqIFJldHVy
bnM6ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0
aGUgZXZlbnQuCisgICAgICAqICAgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhl
ci4KKyAgICAgICoKKyAgICAgICovCisgICAgc2lnbmFsc1tDTE9TRV9DT0xPUl9DSE9PU0VSXSA9
CisgICAgICAgIGdfc2lnbmFsX25ldygiY2xvc2UtY29sb3ItY2hvb3NlciIsCisgICAgICAgICAg
ICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAg
ICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAgICAgICBHX1NUUlVD
VF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBjbG9zZV9jb2xvcl9jaG9vc2VyKSwKKyAgICAg
ICAgICAgICAgICAgICAgIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICBnX2NjbG9zdXJlX21h
cnNoYWxfVk9JRF9fVk9JRCwKKyAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsK
KwogICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6OmNvbnRleHQtbWVudToKICAgICAgKiBA
d2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0
ZWQKQEAgLTE2MDIsNiArMTcxMiwzMCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3Nl
clJlcXVlc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0RmlsZUNob29zZQogICAgIGdf
c2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tSVU5fRklMRV9DSE9PU0VSXSwgMCwgcmVxdWVz
dCwgJnJldHVyblZhbHVlKTsKIH0KIAorYm9vbCB3ZWJraXRXZWJWaWV3U2hvd0NvbG9yQ2hvb3Nl
cihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBDb2xvciYgY29sb3IsIFdlYkNvbG9yUGlj
a2VyUmVzdWx0TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpCit7CisjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCisgICAgR1JlZlB0cjxXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PiByZXF1ZXN0
ID0gYWRvcHRHUmVmKHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RDcmVhdGUoY29sb3IsIGxpc3Rl
bmVyKSk7CisKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25hbF9lbWl0KHdl
YlZpZXcsIHNpZ25hbHNbUlVOX0NPTE9SX0NIT09TRVJdLCAwLCByZXF1ZXN0LmdldCgpLCAmcmV0
dXJuVmFsdWUpOworICAgIGlmICghcmV0dXJuVmFsdWUpCisgICAgICAgIHdlYmtpdF9jb2xvcl9j
aG9vc2VyX3JlcXVlc3RfY2FuY2VsKHJlcXVlc3QuZ2V0KCkpOworCisgICAgcmV0dXJuIHJldHVy
blZhbHVlOworI2Vsc2UKKyAgICByZXR1cm4gRkFMU0U7CisjZW5kaWYKK30KKwordm9pZCB3ZWJr
aXRXZWJWaWV3SGlkZUNvbG9yQ2hvb3NlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworI2lm
IEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAg
IGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tDTE9TRV9DT0xPUl9DSE9PU0VSXSwgMCwg
JnJldHVyblZhbHVlKTsKKyNlbmRpZgorfQorCiBzdGF0aWMgYm9vbCB3ZWJraXRXZWJWaWV3U2hv
dWxkU2hvd0lucHV0TWV0aG9kc01lbnUoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBH
dGtTZXR0aW5ncyogc2V0dGluZ3MgPSBndGtfd2lkZ2V0X2dldF9zZXR0aW5ncyhHVEtfV0lER0VU
KHdlYlZpZXcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuaAppbmRleCBiNjc5ZDlkLi5mOTAyZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRCYWNrRm9yd2FyZExpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4K
KyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0RmluZENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZvcm1TdWJt
aXNzaW9uUmVxdWVzdC5oPgpAQCAtMjAxLDYgKzIwMiw5IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmll
d0NsYXNzIHsKICAgICBnYm9vbGVhbiAgICgqIGxlYXZlX2Z1bGxzY3JlZW4pICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKICAgICBnYm9vbGVhbiAgICgq
IHJ1bl9maWxlX2Nob29zZXIpICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAg
KndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdCAgICAqcmVxdWVzdCk7CisgICAgZ2Jvb2xlYW4gICAo
KiBydW5fY29sb3JfY2hvb3NlcikgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAg
ICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICAgICpyZXF1ZXN0KTsKKyAgICB2b2lkICAgICAg
ICgqIGNsb3NlX2NvbG9yX2Nob29zZXIpICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICAgKndlYl92aWV3KTsKICAgICBnYm9vbGVhbiAgICgqIGNvbnRleHRfbWVudSkgICAgICAgICAg
ICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbnRleHRNZW51ICAgICAg
ICAgICAqY29udGV4dF9tZW51LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdka0V2ZW50ICAgICAgICAgICAgICAgICAgICAqZXZlbnQsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAK
aW5kZXggMjM0NGY4OS4uNjU4MzQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJXaGVl
bEV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJXZWJDb2xv
ckNob29zZXJDbGllbnRHdGsuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAi
V2ViRXZlbnRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbkNsaWVudEd0ay5oIgpA
QCAtMTMxLDYgKzEzMiwxMCBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAj
aWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIE93blB0cjxSZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdz4gcmVkaXJlY3RlZFdpbmRvdzsKICNlbmRpZgorCisjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCisgICAgV2ViQ29sb3JDaG9vc2VyQ2xpZW50R3RrIGNvbG9yQ2hvb3NlckNsaWVu
dDsKKyNlbmRpZgogfTsKIAogV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFdlYlZpZXdCYXNlLCB3
ZWJraXRfd2ViX3ZpZXdfYmFzZSwgR1RLX1RZUEVfQ09OVEFJTkVSKQpAQCAtMTA4OSwzICsxMDk0
LDI2IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VVcGRhdGVUZXh0SW5wdXRTdGF0ZShXZWJLaXRX
ZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiB7CiAgICAgd2Via2l0V2ViVmlld0Jhc2Ut
PnByaXYtPmlucHV0TWV0aG9kRmlsdGVyLnNldEN1cnNvclJlY3Qod2Via2l0V2ViVmlld0Jhc2Ut
PnByaXYtPnBhZ2VQcm94eS0+ZWRpdG9yU3RhdGUoKS5jdXJzb3JSZWN0KTsKIH0KKwordm9pZCB3
ZWJraXRXZWJWaWV3QmFzZUluaXRpYWxpemVDb2xvckNob29zZXJDbGllbnQoV2ViS2l0V2ViVmll
d0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBjb25zdCBXS0NvbG9yQ2hvb3NlckNsaWVudEd0ayog
d2tDbGllbnQpCit7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgd2Via2l0V2Vi
Vmlld0Jhc2UtPnByaXYtPmNvbG9yQ2hvb3NlckNsaWVudC5pbml0aWFsaXplKHdrQ2xpZW50KTsK
KyNlbmRpZgorfQorCit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2hvd0NvbG9yQ2hvb3NlcihXZWJL
aXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29s
b3IsIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eSogcHJveHkpCit7CisjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2
ID0gd2Via2l0V2ViVmlld0Jhc2UtPnByaXY7CisgICAgcHJpdi0+Y29sb3JDaG9vc2VyQ2xpZW50
LnNob3dDb2xvckNob29zZXIoaW5pdGlhbENvbG9yLCBwcm94eSk7CisjZW5kaWYKK30KKwordm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZUhpZGVDb2xvckNob29zZXIoV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YmtpdFdlYlZpZXdCYXNlKQoreworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIFdl
YktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2Owor
ICAgIHByaXYtPmNvbG9yQ2hvb3NlckNsaWVudC5oaWRlQ29sb3JDaG9vc2VyKCk7CisjZW5kaWYK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKaW5kZXggM2Q4ODY0MS4uNTdmNDZjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2VQcml2YXRlLmgKQEAgLTI4LDYgKzI4LDggQEAKICNpZm5kZWYgV2ViS2l0V2ViVmlld0Jh
c2VQcml2YXRlX2gKICNkZWZpbmUgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlX2gKIAorI2luY2x1
ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eUd0ay5oIgogI2luY2x1ZGUgIldlYktp
dDJHdGtBdXRoZW50aWNhdGlvbkRpYWxvZy5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIK
QEAgLTcxLDQgKzczLDggQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUFkZEF1dGhlbnRpY2F0aW9u
RGlhbG9nKFdlYktpdFdlYlZpZXdCYXNlKiwgV2ViS2l0OjpXZWJLaXQKIHZvaWQgd2Via2l0V2Vi
Vmlld0Jhc2VDYW5jZWxBdXRoZW50aWNhdGlvbkRpYWxvZyhXZWJLaXRXZWJWaWV3QmFzZSopOwog
dm9pZCB3ZWJraXRXZWJWaWV3QmFzZUFkZFdlYkluc3BlY3RvcihXZWJLaXRXZWJWaWV3QmFzZSos
IEd0a1dpZGdldCogaW5zcGVjdG9yKTsKIAordm9pZCB3ZWJraXRXZWJWaWV3QmFzZUluaXRpYWxp
emVDb2xvckNob29zZXJDbGllbnQoV2ViS2l0V2ViVmlld0Jhc2UqLCBjb25zdCBXS0NvbG9yQ2hv
b3NlckNsaWVudEd0ayopOwordm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNob3dDb2xvckNob29zZXIo
V2ViS2l0V2ViVmlld0Jhc2UqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIFdlYktpdDo6V2ViQ29s
b3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5Kik7Cit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlSGlk
ZUNvbG9yQ2hvb3NlcihXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpOworCiAj
ZW5kaWYgLy8gV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGU5
ZmEzY2EuLmFhNWMwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRl
ZiBXZWJLaXRXZWJWaWV3UHJpdmF0ZV9oCiAjZGVmaW5lIFdlYktpdFdlYlZpZXdQcml2YXRlX2gK
IAorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3Lmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC00OSw2ICs1MCw4IEBAIHZvaWQg
d2Via2l0V2ViVmlld01vdXNlVGFyZ2V0Q2hhbmdlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpX
ZWJIaXRUZXN0UmVzdWx0KiwKIHZvaWQgd2Via2l0V2ViVmlld1ByaW50RnJhbWUoV2ViS2l0V2Vi
VmlldyosIFdlYktpdDo6V2ViRnJhbWVQcm94eSopOwogdm9pZCB3ZWJraXRXZWJWaWV3UmVzb3Vy
Y2VMb2FkU3RhcnRlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgdWlu
dDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBXZWJLaXRVUklSZXF1ZXN0Kik7CiB2b2lkIHdlYmtp
dFdlYlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QoV2ViS2l0V2ViVmlldyosIFdlYktpdEZpbGVD
aG9vc2VyUmVxdWVzdCopOworYm9vbCB3ZWJraXRXZWJWaWV3U2hvd0NvbG9yQ2hvb3NlcihXZWJL
aXRXZWJWaWV3KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBXZWJLaXQ6OldlYkNvbG9yUGlja2Vy
UmVzdWx0TGlzdGVuZXJQcm94eSopOwordm9pZCB3ZWJraXRXZWJWaWV3SGlkZUNvbG9yQ2hvb3Nl
cihXZWJLaXRXZWJWaWV3Kik7CiBXZWJLaXRXZWJSZXNvdXJjZSogd2Via2l0V2ViVmlld0dldExv
YWRpbmdXZWJSZXNvdXJjZShXZWJLaXRXZWJWaWV3KiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlm
aWVyKTsKIHZvaWQgd2Via2l0V2ViVmlld1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZShXZWJLaXRX
ZWJWaWV3KiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKIFdlYktpdFdlYlJlc291cmNl
KiB3ZWJraXRXZWJWaWV3UmVzb3VyY2VMb2FkRmluaXNoZWQoV2ViS2l0V2ViVmlldyosIHVpbnQ2
NF90IHJlc291cmNlSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCA3YzZjNjhk
Li40YmIwOTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTMwLDYgKzMwLDcgQEAKICAgICA8
eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0V2ViUmVzb3VyY2UueG1sIi8+CiAgICAgPHhpOmlu
Y2x1ZGUgaHJlZj0ieG1sL1dlYktpdEVycm9yLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9
InhtbC9XZWJLaXRGYXZpY29uRGF0YWJhc2UueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJl
Zj0ieG1sL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBo
cmVmPSJ4bWwvV2ViS2l0RmluZENvbnRyb2xsZXIueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJl
Zj0ieG1sL1dlYktpdENvb2tpZU1hbmFnZXIueG1sIi8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4
dAppbmRleCAzOGJhYmE3Li40YmY1MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAg
LTY3Miw2ICs2NzIsMjcgQEAgd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2dldF90eXBlCiA8
L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdDwv
RklMRT4KK1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3Jl
cXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2Vs
ZWN0X2NvbG9yCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbAorCis8U1VCU0VD
VElPTiBTdGFuZGFyZD4KK1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcworV0VCS0lUX1RZ
UEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUCitXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUCitX
RUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUCitXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFV
RVNUX0NMQVNTCitXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUX0NMQVNTCitXRUJLSVRf
Q09MT1JfQ0hPT1NFUl9SRVFVRVNUX0dFVF9DTEFTUworCis8U1VCU0VDVElPTiBQcml2YXRlPgor
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3Jl
cXVlc3RfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRGaW5k
Q29udHJvbGxlcjwvRklMRT4KIFdlYktpdEZpbmRDb250cm9sbGVyCiBXZWJLaXRGaW5kT3B0aW9u
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLnR5cGVzIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLnR5cGVzCmluZGV4IGViMGYzMzguLmQ1YTAwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKQEAgLTIz
LDMgKzIzLDQgQEAgd2Via2l0X2NvbnRleHRfbWVudV9nZXRfdHlwZQogd2Via2l0X2NvbnRleHRf
bWVudV9pdGVtX2dldF90eXBlCiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZQogd2Via2l0
X3dlYl9wYWdlX2dldF90eXBlCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF90eXBl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0
V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNmVkNGEzOC4uMzQyYTE2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RX
ZWJLaXRXZWJWaWV3LmNwcApAQCAtMjYsNiArMjYsMTUgQEAKICNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCitzdGF0aWMg
dm9pZCBhc3NlcnRDb2xvcklzRXF1YWwoY29uc3QgR2RrUkdCQSogY29sb3IsIGZsb2F0IHJlZCwg
ZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQoreyAgICAKKyAgICBnX2Fzc2Vy
dChjb2xvcik7CisgICAgZ19hc3NlcnRfY21wZmxvYXQoY29sb3ItPnJlZCwgPT0sIHJlZCk7Cisg
ICAgZ19hc3NlcnRfY21wZmxvYXQoY29sb3ItPmdyZWVuLCA9PSwgZ3JlZW4pOworICAgIGdfYXNz
ZXJ0X2NtcGZsb2F0KGNvbG9yLT5ibHVlLCA9PSwgYmx1ZSk7CisgICAgZ19hc3NlcnRfY21wZmxv
YXQoY29sb3ItPmFscGhhLCA9PSwgYWxwaGEpOworfQorCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmll
d0RlZmF1bHRDb250ZXh0KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAg
IGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh0ZXN0LT5tX3dlYlZpZXcpID09
IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpKTsKQEAgLTc5Niw2ICs4MDUsODMgQEAg
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QoRmlsZUNob29zZXJUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9j
YW5jZWwoZmlsZUNob29zZXJSZXF1ZXN0KTsKIH0KIAorY2xhc3MgQ29sb3JDaG9vc2VyVGVzdDog
cHVibGljIFVJQ2xpZW50VGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9HTElCX1RFU1RfRklYVFVS
RShDb2xvckNob29zZXJUZXN0KTsKKyAgICBDb2xvckNob29zZXJUZXN0KCkKKyAgICA6IGhhZENs
b3NlZFNpZ25hbChGQUxTRSkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJW
aWV3LCAicnVuLWNvbG9yLWNob29zZXIiLCBHX0NBTExCQUNLKHJ1bkNvbG9yQ2hvb3NlckNhbGxi
YWNrKSwgdGhpcyk7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAiY2xvc2Ut
Y29sb3ItY2hvb3NlciIsIEdfQ0FMTEJBQ0soY2xvc2VDb2xvckNob29zZXJDYWxsYmFjayksIHRo
aXMpOworICAgIH0KKworICAgIHN0YXRpYyBnYm9vbGVhbiBydW5Db2xvckNob29zZXJDYWxsYmFj
ayhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCwgQ29s
b3JDaG9vc2VyVGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIHRlc3QtPnJ1bkNvbG9yQ2hvb3Nl
cihyZXF1ZXN0KTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgc3RhdGljIGdi
b29sZWFuIGNsb3NlQ29sb3JDaG9vc2VyQ2FsbGJhY2soV2ViS2l0V2ViVmlldyosIENvbG9yQ2hv
b3NlclRlc3QqIHRlc3QpCisgICAgeworICAgICAgICB0ZXN0LT5jbG9zZUNvbG9yQ2hvb3Nlcigp
OworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICB2b2lkIHJ1bkNvbG9yQ2hvb3Nl
cihXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQorICAgIHsKKyAgICAgICAgYXNz
ZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChyZXF1ZXN0KSk7Cisg
ICAgICAgIG1fY29sb3JDaG9vc2VyUmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgICAgIGdfbWFpbl9s
b29wX3F1aXQobV9tYWluTG9vcCk7CisgICAgfQorCisgICAgdm9pZCBjbG9zZUNvbG9yQ2hvb3Nl
cigpCisgICAgeworICAgICAgICBoYWRDbG9zZWRTaWduYWwgPSBUUlVFOworICAgIH0KKworICAg
IFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIGNsaWNrTW91c2VCdXR0b25BbmRXYWl0Rm9yQ29s
b3JDaG9vc2VyUmVxdWVzdChpbnQgeCwgaW50IHkpCisgICAgeworICAgICAgICBjbGlja01vdXNl
QnV0dG9uKHgsIHkpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAg
ICAgIHJldHVybiBtX2NvbG9yQ2hvb3NlclJlcXVlc3QuZ2V0KCk7CisgICAgfQorCisgICAgZ2Jv
b2xlYW4gY2xvc2VkU2lnbmFsKCkKKyAgICB7CisgICAgICAgIHJldHVybiBoYWRDbG9zZWRTaWdu
YWw7CisgICAgfQorCitwcml2YXRlOgorICAgIEdSZWZQdHI8V2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdD4gbV9jb2xvckNob29zZXJSZXF1ZXN0OworICAgIGdib29sZWFuIGhhZENsb3NlZFNpZ25h
bDsKK307CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3Q29sb3JDaG9vc2VyUmVxdWVzdChDb2xv
ckNob29zZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHRlc3QtPnNob3dJbldp
bmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb2xvckNo
b29zZXJIVE1MID0gIjxodG1sPjxib2R5PjxpbnB1dCBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7
bGVmdDowO3RvcDowO21hcmdpbjowO3BhZGRpbmc6MCcgdHlwZT0nY29sb3InIHZhbHVlPScjZmYw
MDAwJy8+PC9ib2R5PjwvaHRtbD4iOworICAgIHRlc3QtPmxvYWRIdG1sKGNvbG9yQ2hvb3NlckhU
TUwsIDApOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIFdlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QqIGNvbG9yQ2hvb3NlclJlcXVlc3QgPSB0ZXN0LT5jbGlja01vdXNl
QnV0dG9uQW5kV2FpdEZvckNvbG9yQ2hvb3NlclJlcXVlc3QoNSwgNSk7CisgICAgR2RrUkdCQSog
Y29sb3IgPSB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9jdXJyZW50X2NvbG9yKGNv
bG9yQ2hvb3NlclJlcXVlc3QpOworICAgIGFzc2VydENvbG9ySXNFcXVhbChjb2xvciwgMS4wLCAw
LjAsIDAuMCwgMS4wKTsKKworICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5p
c2hlZCgiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZSA9ICcjMDBmZjAwJzsi
LCAwKTsKKyAgICBjb2xvciA9IHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJl
bnRfY29sb3IoY29sb3JDaG9vc2VyUmVxdWVzdCk7CisgICAgYXNzZXJ0Q29sb3JJc0VxdWFsKGNv
bG9yLCAxLjAsIDAuMCwgMC4wLCAxLjApOworCisgICAgZ19hc3NlcnQoIXRlc3QtPmNsb3NlZFNp
Z25hbCgpKTsKKyAgICBHZGtSR0JBIGJsdWUgPSB7MC4wLCAwLjAsIDEuMCwgMS4wfTsKKyAgICB3
ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvcihjb2xvckNob29zZXJSZXF1
ZXN0LCAmYmx1ZSk7CisgICAgZ19hc3NlcnQodGVzdC0+Y2xvc2VkU2lnbmFsKCkpOworICAgIGNv
bG9yID0gd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcihjb2xv
ckNob29zZXJSZXF1ZXN0KTsKKyAgICBhc3NlcnRDb2xvcklzRXF1YWwoY29sb3IsIDAuMCwgMC4w
LCAxLjAsIDEuMCk7CisKKyAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVz
dWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCdpbnB1dCcpLnZhbHVlOyIsIDApOworICAgIEdPd25QdHI8Y2hhcj4gdmFs
dWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlw
dFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICIj
MDAwMGZmIik7Cit9CisKIGNsYXNzIEZ1bGxTY3JlZW5DbGllbnRUZXN0OiBwdWJsaWMgV2ViVmll
d1Rlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoRnVsbFNjcmVlbkNs
aWVudFRlc3QpOwpAQCAtMTEwNSw2ICsxMTkxLDcgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIEZv
cm1DbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAic3VibWl0LWZvcm0iLCB0ZXN0V2Vi
Vmlld1N1Ym1pdEZvcm0pOwogICAgIFNhdmVXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3
IiwgInNhdmUiLCB0ZXN0V2ViVmlld1NhdmUpOwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktp
dFdlYlZpZXciLCAidmlldy1tb2RlIiwgdGVzdFdlYlZpZXdNb2RlKTsKKyAgICBDb2xvckNob29z
ZXJUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiY29sb3ItY2hvb3Nlci1yZXF1ZXN0IiwgdGVz
dFdlYlZpZXdDb2xvckNob29zZXJSZXF1ZXN0KTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKaW5kZXggMWI0ZmE4Ni4uMDNk
M2Q2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0
Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RW51bVR5cGVzLmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRFcnJvci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RmF2
aWNvbkRhdGFiYXNlLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuaD4KICNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdEZpbmRDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5j
cHAKaW5kZXggMGVlNzlkZC4uYmEwNTE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAK
QEAgLTU1LDYgKzU1LDE0IEBAIHZvaWQgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5
OjpzZXRDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yKQogICAgIG1fcGFnZS0+ZW5kQ29sb3JDaG9v
c2VyKCk7CiB9CiAKK3ZvaWQgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5OjplbmRD
b2xvckNob29zZXIoKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX3BhZ2UtPmVuZENvbG9yQ2hvb3NlcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94
eS5oCmluZGV4IGQyOGViOGEuLjYyYTJlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmgKQEAg
LTUwLDYgKzUwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgdm9p
ZCBzZXRDb2xvcihjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGVuZENvbG9yQ2hvb3NlcigpOwog
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94
eShXZWJQYWdlUHJveHkqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvV2ViQ29sb3JDaG9vc2VyQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9ndGsvV2ViQ29sb3JDaG9vc2VyQ2xpZW50R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5jZTA3M2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJDbGllbnRHdGsuY3BwCkBAIC0wLDAgKzEsNDkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAg
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2Vy
Q2xpZW50R3RrLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKKyNpbmNsdWRlIDxzdGRpby5oPgorCit2b2lkIFdlYkNvbG9yQ2hvb3NlckNsaWVudEd0
azo6c2hvd0NvbG9yQ2hvb3Nlcihjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yLCBX
ZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkqIHByb3h5KQoreworICAgIGlmICghbV9j
bGllbnQuc2hvd0NvbG9yQ2hvb3NlcikKKyAgICAgICAgcmV0dXJuOworICAgIG1fY2xpZW50LnNo
b3dDb2xvckNob29zZXIobV9jbGllbnQuY2xpZW50SW5mbywgdG9BUEkoaW5pdGlhbENvbG9yLnNl
cmlhbGl6ZWQoKS5pbXBsKCkpLCB0b0FQSShwcm94eSkpOworfQorCit2b2lkIFdlYkNvbG9yQ2hv
b3NlckNsaWVudEd0azo6aGlkZUNvbG9yQ2hvb3NlcigpCit7CisgICAgaWYgKCFtX2NsaWVudC5o
aWRlQ29sb3JDaG9vc2VyKQorICAgICAgICByZXR1cm47CisgICAgbV9jbGllbnQuaGlkZUNvbG9y
Q2hvb3NlcihtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3Nl
ckNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29z
ZXJDbGllbnRHdGsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDM3OTYx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJDb2xv
ckNob29zZXJDbGllbnRHdGsuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChj
KSAyMDEyLCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG1ldDoKKyAqCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlLAorICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElT
IgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJD
b2xvckNob29zZXJDbGllbnRHdGtfaAorI2RlZmluZSBXZWJDb2xvckNob29zZXJDbGllbnRHdGtf
aAorCisjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRl
ICJXS0NvbG9yQ2hvb3NlckNsaWVudEd0ay5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgQVBJT2JqZWN0OworY2xhc3MgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5Owor
Y2xhc3MgV2ViQ29sb3JDaG9vc2VyQ2xpZW50R3RrIDogcHVibGljIEFQSUNsaWVudDxXS0NvbG9y
Q2hvb3NlckNsaWVudEd0aywga1dLQ29sb3JDaG9vc2VyQ2xpZW50R3RrQ3VycmVudFZlcnNpb24+
IHsKK3B1YmxpYzoKKyAgICB2b2lkIHNob3dDb2xvckNob29zZXIoY29uc3QgV2ViQ29yZTo6Q29s
b3ImLCBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkqKTsKKyAgICB2b2lkIGhpZGVD
b2xvckNob29zZXIoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorI2VuZGlmIC8vIFdl
YkNvbG9yQ2hvb3NlckNsaWVudEd0a19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjFmZjY5ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmNwcApAQCAtMCwwICsx
LDY0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEyLCBTYW1zdW5nIEVsZWN0cm9uaWNzCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSwgdGhpcworICogICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisg
KiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuaCIKKworI2luY2x1
ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5
LmgiCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCIKKyNpbmNs
dWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHku
aCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitX
ZWJDb2xvckNob29zZXJQcm94eUd0azo6V2ViQ29sb3JDaG9vc2VyUHJveHlHdGsoV2ViUGFnZVBy
b3h5KiBwYWdlLCBHdGtXaWRnZXQqIHdlYlZpZXcsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3Is
IGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0KQorICAgIDogV2ViQ29sb3JDaG9vc2VyUHJveHko
cGFnZSkKKyAgICAsIG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lcihXZWJDb2xvclBpY2tlclJl
c3VsdExpc3RlbmVyUHJveHk6OmNyZWF0ZShwYWdlKSkKKyAgICAsIG1fd2ViVmlldyh3ZWJWaWV3
KQoreworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2hvd0NvbG9yQ2hvb3NlcihXRUJLSVRfV0VCX1ZJ
RVdfQkFTRShtX3dlYlZpZXcuZ2V0KCkpLCBpbml0aWFsQ29sb3IsIG1fY29sb3JQaWNrZXJSZXN1
bHRMaXN0ZW5lci5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHlHdGs6OmVu
ZENob29zZXIoKQoreworICAgIHdlYmtpdFdlYlZpZXdCYXNlSGlkZUNvbG9yQ2hvb3NlcihXRUJL
SVRfV0VCX1ZJRVdfQkFTRShtX3dlYlZpZXcuZ2V0KCkpKTsKKyAgICBXZWJDb2xvckNob29zZXJQ
cm94eTo6ZW5kQ2hvb3NlcigpOworfQorCit2b2lkIFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrOjpz
ZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3sKKyAgICBpZiAo
IW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisgICAgbV9jbGllbnQtPmRpZENob29zZUNvbG9y
KGNvbG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5jMjY1ZDlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisg
KiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrX2gKKyNkZWZpbmUgV2ViQ29sb3JDaG9v
c2VyUHJveHlHdGtfaAorCisjaW5jbHVkZSAiV2ViQ29sb3JDaG9vc2VyUHJveHkuaCIKKyNpbmNs
dWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29sb3I7CitjbGFzcyBJbnRSZWN0OworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKK2NsYXNzIFdlYkNvbG9yUGlj
a2VyUmVzdWx0TGlzdGVuZXJQcm94eTsKKworY2xhc3MgV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsg
OiAgcHVibGljIFdlYkNvbG9yQ2hvb3NlclByb3h5IHsKKworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5KiBwYWdl
LCBHdGtXaWRnZXQqIHdlYlZpZXcsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3Is
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJDb2xvckNob29zZXJQcm94eUd0ayhwYWdlLCB3ZWJWaWV3LCBp
bml0aWFsQ29sb3IsIGVsZW1lbnRSZWN0KSk7CisgICAgfQorICAgIHZvaWQgZW5kQ2hvb3Nlcigp
OworICAgIHZvaWQgc2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOworCitw
cml2YXRlOgorICAgIFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrKFdlYlBhZ2VQcm94eSosIEd0a1dp
ZGdldCosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwor
ICAgIFJlZlB0cjxXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk+IG1fY29sb3JQaWNr
ZXJSZXN1bHRMaXN0ZW5lcjsKKworICAgIEdSZWZQdHI8R09iamVjdD4gbV9yZXF1ZXN0OworICAg
IEdSZWZQdHI8R3RrV2lkZ2V0PiBtX3dlYlZpZXc7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrX2gKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXIKaW5kZXggN2M3ZTE3OS4uYTAxYWU3OSAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90
b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
CkBAIC0yNjksNiArMjY5LDggQEAgX1pON1dlYkNvcmU3RWxlbWVudDE2Y3JlYXRlU2hhZG93Um9v
dEVSaTsKIF9aTks3V2ViQ29yZTRLVVJMNnN0cmluZ0V2OwogX1pON1dlYkNvcmU5UGFnZUdyb3Vw
MThjYXB0aW9uUHJlZmVyZW5jZXNFdjsKIF9aTjdXZWJDb3JlNFBhZ2U5aW5pdEdyb3VwRXY7Citf
Wk43V2ViQ29yZTVDb2xvckMxRVJLTjNXVEY2U3RyaW5nRTsKK19aTjdXZWJDb3JlMTZIVE1MSW5w
dXRFbGVtZW50MjVzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyRVJLTlNfNUNvbG9yRTsKIAogbG9j
YWw6CiBfWio7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggYzI0ZjI0OS4uOGUxMWY0MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTIwICBBcm5hdWQgUmVu
ZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dUS10gQWRk
IHN1cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVuYWJsZSBpbnB1dCB0eXBlIGNvbG9yIGluIGZlYXR1cmUgbGlzdC4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKwogMjAxMy0w
Mi0xMiAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
Y2hyb21pdW1dIG1vdmUgdGV4dCBkdW1wIGdlbmVyYXRpb24gdG8gVGVzdFJ1bm5lciBsaWJyYXJ5
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggMGQxYzAzMi4uY2Vj
OWIyOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBt
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMjgyLDcg
KzI4Miw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOUFVU
X1NQRUVDSCIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRpbnB1dFNwZWVjaFN1cHBvcnQgfSwK
IAogICAgIHsgb3B0aW9uID0+ICJpbnB1dC10eXBlLWNvbG9yIiwgZGVzYyA9PiAiVG9nZ2xlIElu
cHV0IFR5cGUgQ29sb3Igc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlBVVF9U
WVBFX0NPTE9SIiwgZGVmYXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSB8fCBpc1F0
KCkpLCB2YWx1ZSA9PiBcJGlucHV0VHlwZUNvbG9yU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+
ICJFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUiIsIGRlZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgpIHx8
IGlzRWZsKCkgfHwgaXNRdCgpIHx8IGlzR3RrKCkpLCB2YWx1ZSA9PiBcJGlucHV0VHlwZUNvbG9y
U3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gImlucHV0LXR5cGUtZGF0ZSIsIGRlc2MgPT4g
IlRvZ2dsZSBJbnB1dCBUeXBlIERhdGUgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJM
RV9JTlBVVF9UWVBFX0RBVEUiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW5wdXRUeXBlRGF0
ZVN1cHBvcnQgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200854</attachid>
            <date>2013-05-06 16:51:34 -0700</date>
            <delta_ts>2013-05-29 09:50:49 -0700</delta_ts>
            <desc>updated patch: fixes style issues</desc>
            <filename>bug-98935-20130506165039.patch</filename>
            <type>text/plain</type>
            <size>75206</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGVhYmUyYzIxMjAxZjI1
NjVlMWNmN2ExZWY5ZDliZmFjODg2ZDZjNS4uZDQ2NGVhODZkMzBmZmJkZTBhOWI4ZTk5YzczMjdl
MTliNmE5ODVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTIwICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dU
S10gQWRkIHN1cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBpbnB1dCB0eXBlIGNvbG9yIGluIGZlYXR1cmUg
bGlzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmZlYXR1cmVzLmFtLmluOgorCiAyMDEzLTA1
LTA2ICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgcmVtb3ZlIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi9ET01OYW1lZEZsb3dDb2xsZWN0
aW9uIHNwZWNpYWwgY2FzZSBuYW1lR2V0dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggODc1ZTQxYTJi
NDc3ODA3OTM3NmU3NGNlYTg4YWFjM2E1ZWZkODJmMC4uMzg1OGJmNWEyMWE5YWEwNDY0N2RjYzk5
ZTMzMTVhMTQxNWVmM2UzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEy
LTEyLTMxICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0dWIgaW1wbGVtZW50YXRpb24gb2Yg
Q2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIKKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6
Y3JlYXRlQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KENocm9tZUNsaWVudCk6CisKIDIwMTItMTAtMDEgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZp
ZXJAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBbR3RrXSB0b28gbG9uZyBmdW5jdGlvbiBp
biBhbmltYXRpb24gc2NyaXB0IGNhdXNlIHJlcGFpbnQgdG8gbmV2ZXIgaGFwcGVuLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDNjYzVmYWFkZjc3MDYzZTAyOWI5N2ZiNTQ3YWU5MDk3ZWFhODc1NGEuLjAzZTdmZjgz
NWMxNzQyZThlYWVmZDVkN2JlOTY5OWRkOWMzN2M5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MTMgQEAKKzIwMTItMTItMjAgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1z
dW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY29sb3IgaW5wdXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTM1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGlu
cHV0IGNvbG9yIHR5cGUgZm9yIFdlYktpdDIuCisKKyAgICAgICAgSW1wbGVtZW50IHNob3dDb2xv
clBpY2tlciBhbmQgaGlkZUNvbG9yUGlja2VyIFVJIGNsaWVudCBjYWxsYmFja3MuIEFzCisgICAg
ICAgIGEgZmFsbGJhY2ssIGltcGxlbWVudCBXZWJDb2xvckNob29zZXJQcm94eUd0ay4KKworICAg
ICAgICBJbXBsZW1lbnQgYSBXZWJDb2xvckNob29zZXJDbGllbnRHdGsgb2JqZWN0LiBBCisgICAg
ICAgIFdlYkNvbG9yQ2hvb3NlciBjbGllbnQgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgV2ViS2l0
V2ViVmlldy4gQm90aAorICAgICAgICBzaG93Q29sb3JQaWNrZXIgVUkgY2FsbGJhY2sgb3IgV2Vi
Q29sb3JDaG9vc2VyQ2xpZW50R3RrIHdpbGwgY2FsbAorICAgICAgICB3ZWJraXRXZWJWaWV3QmFz
ZVNob3dDb2xvckNob29zZXIgd2hpY2ggd2lsbCB0aGVuIHVzZSBjbGllbnQgdG8gbm90aWZ5Cisg
ICAgICAgIHRoZSBXZWJLaXRXZWJWaWV3IHRoYXQgaXQgc2hvdWxkIGRpc3BsYXkgdGhlIGNvbG9y
IGNob29zZXIuCisKKyAgICAgICAgQWRkIGEgZW5kQ29sb3JDaG9vc2VyIG1ldGhvZCB0byBXZWJD
b2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkgdG8KKyAgICAgICAgYmUgYWJsZSB0byBjYW5j
ZWwgdGhlIHJlcXVlc3Qgd2l0aG91dCBzZWxlY3RpbmcgYSBjb2xvci4KKworICAgICAgICBTaW1p
bGFybHkgdG8gd2hhdCBoYXBwZW5zIGZvciBmaWxlIGNob29zZXIsIHdoZW4gYSBjb2xvciBjaG9v
c2VyIGlzCisgICAgICAgIG5lZWRlZCwgd2UgZW1pdCBhIHJ1bi1jb2xvci1jaG9vc2VyIHNpZ25h
bCB3aXRoIGEKKyAgICAgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCBvYmplY3QuIElmIHRo
ZSBzaWduYWwgaXMgbm90IGhhbmRsZWQgYnkgdGhlCisgICAgICAgIGFwcGxpY2F0aW9uLCB3ZSBz
aG93IGEgR3RrR3RrQ29sb3JDaG9vc2VyRGlhbG9nLgorCisgICAgICAgIFdlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3QgQVBJIGFsbG93cyB0byByZWFkIGN1cnJlbnQgY29sb3IgKGVpdGhlcgorICAg
ICAgICBpbml0aWFsIGNvbG9yIHNldCBieSBXZWJDb3JlIG9yIGxhdGVyLCBjb2xvciBzZWxlY3Rl
ZCBieSB1c2VyKSwgdG8KKyAgICAgICAgc2VsZWN0IGEgY29sb3IsIG9yIHRvIGNhbmNlbCBhIHJl
cXVlc3QuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9ndGsvV0tDb2xvckNob29zZXJDbGllbnRHdGsuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdLVmlld1NldENvbG9yQ2hvb3NlckNsaWVudEd0ayk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL2d0ay9XS0NvbG9yQ2hvb3NlckNsaWVudEd0ay5oOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXJQcm94eSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAg
IChzaG93Q29sb3JDaG9vc2VyKToKKyAgICAgICAgKGhpZGVDb2xvckNob29zZXIpOgorICAgICAg
ICAoYXR0YWNoQ29sb3JDaG9vc2VyQ2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHA6IEFkZGVkLgorICAg
ICAgICAoX1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlKToKKyAgICAgICAgKHdlYmtp
dENvbG9yQ2hvb3NlclJlcXVlc3RHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRDb2xvckNo
b29zZXJSZXF1ZXN0U2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJf
cmVxdWVzdF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVl
c3RfY2FuY2VsKToKKyAgICAgICAgKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0
X2NvbG9yKToKKyAgICAgICAgKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJl
bnRfY29sb3IpOgorICAgICAgICAod2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdENyZWF0ZSk6Cisg
ICAgICAgICh3ZWJraXRXZWJDb2xvckNob29zZXJSZXF1ZXN0U2V0Q29sb3IpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaDogQWRkZWQuCisg
ICAgICAgIChfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCk6CisgICAgICAgIChfV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdENsYXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VUlDbGllbnQuY3BwOgorICAgICAgICAoc2hvd0NvbG9yUGlja2VyKToKKyAgICAgICAg
KGhpZGVDb2xvclBpY2tlcik6CisgICAgICAgIChhdHRhY2hVSUNsaWVudFRvVmlldyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgIChfV2Vi
S2l0V2ViVmlld1ByaXZhdGUpOgorICAgICAgICAoY29sb3JDaG9vc2VyUmVxdWVzdENoYW5nZUNh
bGxiYWNrKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdDbG9zZUNvbG9yQ2hvb3Nlcik6CisgICAg
ICAgIChjb2xvckNob29zZXJEaWFsb2dSZXNwb25zZUNhbGxiYWNrKToKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdSdW5Db2xvckNob29zZXIpOgorICAgICAgICAod2Via2l0V2ViVmlld0NvbnN0cnVj
dGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdTaG93Q29sb3JDaG9vc2VyKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdIaWRl
Q29sb3JDaG9vc2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
Lmg6CisgICAgICAgIChfV2ViS2l0V2ViVmlld0NsYXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViVmlld0Jh
c2VQcml2YXRlKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlSW5pdGlhbGl6ZUNvbG9yQ2hv
b3NlckNsaWVudCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVNob3dDb2xvckNob29zZXIp
OgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VIaWRlQ29sb3JDaG9vc2VyKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXM6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoYXNzZXJ0
Q29sb3JJc0VxdWFsKToKKyAgICAgICAgKHRlc3RXZWJWaWV3Q29sb3JDaG9vc2VyUmVxdWVzdCk6
CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtp
dDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclBy
b3h5OjplbmRDb2xvckNob29zZXIpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5Lmg6CisgICAgICAgIChXZWJD
b2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsv
V2ViQ29sb3JDaG9vc2VyQ2xpZW50R3RrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb2xvckNob29zZXJDbGllbnRHdGs6OnNob3dDb2xvckNob29z
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb2xvckNob29zZXJDbGllbnRHdGs6OmhpZGVDb2xv
ckNob29zZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViQ29sb3JDaG9vc2VyQ2xpZW50
R3RrLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvbG9yQ2hvb3Nl
ckNsaWVudEd0ayk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94
eUd0ay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29sb3JDaG9vc2VyUHJveHlHdGs6OldlYkNvbG9yQ2hvb3NlclByb3h5R3RrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlHdGs6OmVuZENob29zZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb2xvckNob29zZXJQcm94eUd0azo6c2V0U2VsZWN0ZWRDb2xvcik6CisgICAg
ICAgICogVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvbG9yQ2hv
b3NlclByb3h5R3RrKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHlHdGs6
OmNyZWF0ZSk6CisKIDIwMTMtMDUtMDMgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lz
YS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBbR1RLXSBbV2ViS2l0Ml0gZW5hYmxlIGRpc3BsYXlp
bmcgY29uc29sZS5sb2cgbWVzc2FnZXMgdG8gc3lzdGVtIGNvbnNvbGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCmluZGV4IDY5
NjYwYzkzYmIxNzk4YzAzZDQxNGRlMmZmOTVlNmQxNDExZGQ0YTEuLjkwZjQ3MjJiOGJjNDU0MWMw
NDJiYTA5ODY3MjFiZWY4MjZlNDI1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAtODMsNiArODMsMTAgQEAKICNp
bmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0NPTE9SKQorI2luY2x1ZGUgIkNvbG9yQ2hvb3NlckNsaWVudC5oIgorI2VuZGlmCisKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTg0Myw2ICs4
NDcsMTQgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK1Bhc3NPd25QdHI8Q29sb3JDaG9vc2Vy
PiBDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqLCBj
b25zdCBDb2xvciYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKyNlbmRpZgorCiB2b2lkIENocm9tZUNsaWVudDo6cnVuT3BlblBhbmVsKEZyYW1lKiwg
UGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gcHJwRmlsZUNob29zZXIpCiB7CiAgICAgR1JlZlB0cjxX
ZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYod2Via2l0X2ZpbGVf
Y2hvb3Nlcl9yZXF1ZXN0X2NyZWF0ZShwcnBGaWxlQ2hvb3NlcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmggYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAppbmRleCAxOGZhY2Q5
MDBjMTQ1ODgwNmM0NTAwZmVjOWRlODQ1ZDk4M2Y5NzM3Li42MWNlYjMxYTUwMDQwNDhmNmZlNGZl
YjNiYjk3MDhkMTQ3NzdjYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMzYsNiArMzYsNyBAQCB0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0V2ViVmlldyBXZWJLaXRXZWJWaWV3OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBQb3B1cE1lbnVDbGllbnQ7CitjbGFzcyBDb2xvcjsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC0xMjAsNiArMTIxLDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogI2VuZGlmCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVk
ZWQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3QgdG90YWxTcGFjZU5lZWRlZCk7CisKKyNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICAgICAgdmlydHVhbCBQYXNzT3duUHRyPENvbG9y
Q2hvb3Nlcj4gY3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IENv
bG9yJiBpbml0aWFsQ29sb3IpOworI2VuZGlmCisKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bk9w
ZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIEZpbGVJ
Y29uTG9hZGVyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDc1ZWQ2ODMx
MDRjOGQ5YTFhMmMwMjI2MWYyZjZiZWQzYTI3M2Q3OTUuLjQ5NGE1NmQ5ZTMyY2EyOTY5MzliZDIz
ZTEyYjIyMzUzMWJiMjRkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzUs
NiArMzUsNyBAQCB3ZWJraXQyX2hfYXBpICs9IFwKIAkkKFdlYktpdDIpL1NoYXJlZC9BUEkvYy9X
S1VSTFJlc3BvbnNlLmggXAogCSQoV2ViS2l0MikvU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0FQSUNhc3RH
dGsuaCBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLQ29sb3JDaG9vc2VyQ2xp
ZW50R3RrLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0Z1bGxTY3JlZW5D
bGllbnRHdGsuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLSW5zcGVjdG9y
Q2xpZW50R3RrLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcuaCBc
CkBAIC05NSw2ICs5Niw3IEBAIHdlYmtpdDJfaF9hcGkgKz0gXAogd2Via2l0Mmd0a19oX2FwaSAr
PSBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3Qu
aCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJ
dGVtLmggXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRN
ZW51LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVB
Y3Rpb25zLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1l
bnVJdGVtLmggXApAQCAtNTQzLDYgKzU0NSw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViV2hlZWxFdmVudC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9ndGsvV0tBUElDYXN0R3RrLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9ndGsvV0tDb2xvckNob29zZXJDbGllbnRHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLQ29sb3JDaG9vc2VyQ2xpZW50R3RrLmggXAogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9ndGsvV0tGdWxsU2NyZWVuQ2xpZW50R3RrLmNwcCBc
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0Z1bGxTY3JlZW5DbGllbnRH
dGsuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0luc3BlY3RvckNs
aWVudEd0ay5jcHAgXApAQCAtNjU2LDYgKzY2MCwxMSBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0
ZW0uaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0Zvcndh
cmRMaXN0SXRlbS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEJhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyQ2xpZW50LmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyQ2xpZW50LmggXAorCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuY3BwIFwKKwlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
LmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3RQcml2YXRlLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvbnRleHRNZW51LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29udGV4dE1lbnUuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29udGV4dE1lbnVQcml2YXRlLmggXApAQCAtODIwLDYgKzgyOSwxMCBAQCB3ZWJraXQy
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0UHJveHkuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NhaXJvL0Jh
Y2tpbmdTdG9yZUNhaXJvLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9UZXh0
Q2hlY2tlckd0ay5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29sb3JD
aG9vc2VyUHJveHlHdGsuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNv
bG9yQ2hvb3NlclByb3h5R3RrLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2Vi
Q29sb3JDaG9vc2VyQ2xpZW50R3RrLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9XZWJDb2xvckNob29zZXJDbGllbnRHdGsuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJDb250ZXh0R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJDb250ZXh0TWVudVByb3h5R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9XZWJDb250ZXh0TWVudVByb3h5R3RrLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL2d0ay9XS0NvbG9yQ2hvb3NlckNsaWVudEd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dLQ29sb3JDaG9vc2VyQ2xpZW50R3RrLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45MmZmZWE5MjI0Njc0OTc1ODQzNmY4NTExYWQ1NWYyNDJjODY4MTMwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0NvbG9y
Q2hvb3NlckNsaWVudEd0ay5jcHAKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJ
UyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXS0NvbG9yQ2hvb3NlckNsaWVudEd0ay5oIgorCisjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3ZvaWQgV0tWaWV3U2V0Q29sb3JDaG9vc2VyQ2xp
ZW50R3RrKFdLVmlld1JlZiB2aWV3UmVmLCBjb25zdCBXS0NvbG9yQ2hvb3NlckNsaWVudEd0ayog
d2tDbGllbnQpCit7CisgICAgd2Via2l0V2ViVmlld0Jhc2VJbml0aWFsaXplQ29sb3JDaG9vc2Vy
Q2xpZW50KHRvSW1wbCh2aWV3UmVmKSwgd2tDbGllbnQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0NvbG9yQ2hvb3NlckNsaWVudEd0ay5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2d0ay9XS0NvbG9yQ2hvb3NlckNsaWVudEd0
ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmViZmYxODZkODNlYjUzN2FlYzAyZmI3OWZkZTBmYTNmN2M3MzlkNTkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZ3RrL1dL
Q29sb3JDaG9vc2VyQ2xpZW50R3RrLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJB
UyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovIAorCisjaWZuZGVm
IFdLQ29sb3JDaG9vc2VyQ2xpZW50R3RrX2gKKyNkZWZpbmUgV0tDb2xvckNob29zZXJDbGllbnRH
dGtfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVz
CitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit0eXBlZGVmIHZvaWQgKCpXS0NvbG9yQ2hvb3NlckNs
aWVudEd0a1Nob3dDb2xvckNob29zZXJDYWxsYmFjaykoY29uc3Qgdm9pZCogY2xpZW50SW5mbywg
V0tTdHJpbmdSZWYsIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZik7Cit0eXBlZGVmIHZv
aWQgKCpXS0NvbG9yQ2hvb3NlckNsaWVudEd0a0hpZGVDb2xvckNob29zZXJDYWxsYmFjaykoY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3N0cnVjdCBXS0NvbG9yQ2hvb3NlckNsaWVudEd0ayB7
CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZl
cnNpb247CisgICAgY29uc3Qgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNsaWVudEluZm87CisgICAgV0tDb2xvckNob29zZXJDbGllbnRHdGtTaG93Q29sb3JDaG9v
c2VyQ2FsbGJhY2sgIHNob3dDb2xvckNob29zZXI7CisgICAgV0tDb2xvckNob29zZXJDbGllbnRH
dGtIaWRlQ29sb3JDaG9vc2VyQ2FsbGJhY2sgIGhpZGVDb2xvckNob29zZXI7Cit9OwordHlwZWRl
ZiBzdHJ1Y3QgV0tDb2xvckNob29zZXJDbGllbnRHdGsgV0tDb2xvckNob29zZXJDbGllbnRHdGs7
CisKK2VudW0geyBrV0tDb2xvckNob29zZXJDbGllbnRHdGtDdXJyZW50VmVyc2lvbiA9IDAgfTsK
KworV0tfRVhQT1JUIHZvaWQgV0tWaWV3U2V0Q29sb3JDaG9vc2VyQ2xpZW50R3RrKFdLVmlld1Jl
ZiB2aWV3UmVmLCBjb25zdCBXS0NvbG9yQ2hvb3NlckNsaWVudEd0ayogY2xpZW50KTsKKworI2lm
ZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLQ29sb3JDaG9vc2VyQ2xp
ZW50R3RrX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1Bh
Z2VDbGllbnRJbXBsLmNwcAppbmRleCBiZjYxNjI0MGEwMWZiZjM4OTgwMTcxMjc4YThiNjY3YWNj
OGE2ZTgxLi4xOTFlMjAwODMzODk2YzY4NmIwN2I2M2VkNWVkYjllMzYxZDM3MDFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3Bw
CkBAIC00NCw2ICs0NCwxMCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQorI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmgiCisjZW5kaWYKKwogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjMxLDEwICsyMzUs
OSBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVh
dGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcgogfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCi1QYXNzUmVmUHRyPFdlYkNvbG9yQ2hvb3NlclByb3h5PiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29s
b3ImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKK1Bhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2Vy
UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb2xvckNob29zZXJQcm94eShXZWJQYWdlUHJv
eHkqIHBhZ2UsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGVsZW1lbnRSZWN0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrOjpjcmVhdGUocGFn
ZSwgbV92aWV3V2lkZ2V0LCBpbml0aWFsQ29sb3IsIGVsZW1lbnRSZWN0KTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xv
ckNob29zZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q29sb3JDaG9vc2VyQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTRlOTVkZTRmMGRlOTE5MGY0
ZWVlYzc2ZGI2NTg0MDFkZDViYWVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyQ2xpZW50LmNwcApAQCAtMCwwICsx
LDU2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEyLCBTYW1zdW5nIEVsZWN0cm9uaWNzCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSwgdGhpcworICogICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisg
KiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0Q29s
b3JDaG9vc2VyQ2xpZW50LmgiCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIldlYktp
dFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCitzdGF0aWMgdm9pZCBzaG93Q29sb3JDaG9vc2VyKGNvbnN0IHZv
aWQqIGNsaWVudEluZm8sIFdLU3RyaW5nUmVmIGluaXRpYWxDb2xvciwgV0tDb2xvclBpY2tlclJl
c3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyKQoreworICAgIFdlYkNvcmU6OkNvbG9yIGNvbG9yID0g
V2ViQ29yZTo6Q29sb3IoV2ViS2l0Ojp0b1dURlN0cmluZyhpbml0aWFsQ29sb3IpKTsKKyAgICB3
ZWJraXRXZWJWaWV3U2hvd0NvbG9yQ2hvb3NlcihXRUJLSVRfV0VCX1ZJRVcoY2xpZW50SW5mbyks
IGNvbG9yLCB0b0ltcGwobGlzdGVuZXIpKTsKK30KKworc3RhdGljIHZvaWQgaGlkZUNvbG9yQ2hv
b3Nlcihjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHdlYmtpdFdlYlZpZXdIaWRlQ29s
b3JDaG9vc2VyKFdFQktJVF9XRUJfVklFVyhjbGllbnRJbmZvKSk7Cit9CisKK3ZvaWQgYXR0YWNo
Q29sb3JDaG9vc2VyQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAg
V0tDb2xvckNob29zZXJDbGllbnRHdGsgd2tDb2xvckNob29zZXJDbGllbnQgPSB7CisgICAgICAg
IGtXS0NvbG9yQ2hvb3NlckNsaWVudEd0a0N1cnJlbnRWZXJzaW9uLAorICAgICAgICB3ZWJWaWV3
LCAvLyBjbGllbnRJbmZvCisgICAgICAgIHNob3dDb2xvckNob29zZXIsCisgICAgICAgIGhpZGVD
b2xvckNob29zZXIKKyAgICB9OworICAgIFdLVmlld1NldENvbG9yQ2hvb3NlckNsaWVudEd0ayh0
b0FQSShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSksICZ3a0NvbG9yQ2hvb3NlckNsaWVu
dCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDb2xvckNob29zZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENvbG9yQ2hvb3NlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmMGQzYmIxM2E2MjQyMjlm
NTlkODI5YjU5NjlhNDg4NDViMzQ0ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJDbGllbnQuaApAQCAtMCwwICsx
LDMzIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEyLCBTYW1zdW5nIEVsZWN0cm9uaWNzCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSwgdGhpcworICogICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisg
KiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJLaXRDb2xvckNob29zZXJDbGllbnRfaAorI2RlZmlu
ZSBXZWJLaXRDb2xvckNob29zZXJDbGllbnRfaAorCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5o
IgorCit2b2lkIGF0dGFjaENvbG9yQ2hvb3NlckNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3Kik7
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGI3MDY2
ZWQ4MTJiODYyOWZkZTJhOTFmOGMzMGI1MjZjM2NlMzY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5j
cHAKQEAgLTAsMCArMSwxOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1bmcg
RWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoK
KyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlICJXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNp
bmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCisv
KioKKyAqIFNFQ1RJT046IFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAqIEBTaG9ydF9kZXNj
cmlwdGlvbjogQSByZXF1ZXN0IHRvIG9wZW4gYSBjb2xvciBjaG9vc2VyCisgKiBAVGl0bGU6IFdl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAqIEBTZWVfYWxzbzogI1dlYktpdFdlYlZpZXcKKyAq
CisgKiBXaGVuZXZlciB0aGUgdXNlciBpbnRlcmFjdHMgd2l0aCBhbiAmbHQ7aW5wdXQgdHlwZT0n
Y29sb3InIC8mZ3Q7CisgKiBIVE1MIGVsZW1lbnQsIFdlYktpdCB3aWxsIG5lZWQgdG8gc2hvdyBh
IGRpYWxvZyB0byBjaG9vc2UgYSBjb2xvci4gRm9yIHRoYXQKKyAqIHRvIGhhcHBlbiBpbiBhIGdl
bmVyYWwgd2F5LCBpbnN0ZWFkIG9mIGp1c3Qgb3BlbmluZyBhICNHdGtDb2xvckNob29zZXIKKyAq
ICh3aGljaCBtaWdodCBiZSBub3QgZGVzaXJhYmxlIGluIHNvbWUgY2FzZXMsIHdoaWNoIGNvdWxk
IHByZWZlciB0byB1c2UgdGhlaXIKKyAqIG93biBjb2xvciBjaG9vc2VyIGRpYWxvZyksIFdlYktp
dCB3aWxsIGZpcmUgdGhlCisgKiAjV2ViS2l0V2ViVmlldzo6cnVuLWNvbG9yLWNob29zZXIgc2ln
bmFsIHdpdGggYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAorICogb2JqZWN0LCB3aGljaCB3
aWxsIGFsbG93IHRoZSBjbGllbnQgYXBwbGljYXRpb24gdG8gc3BlY2lmeSB0aGUgY29sb3IgdG8g
YmUKKyAqIHNlbGVjdGVkLCB0byBpbnNwZWN0IHRoZSBkZXRhaWxzIG9mIHRoZSByZXF1ZXN0IChl
LmcuIHRvIGdldCBpbml0aWFsIGNvbG9yKQorICogYW5kIHRvIGNhbmNlbCB0aGUgcmVxdWVzdCwg
aW4gY2FzZSBub3RoaW5nIHdhcyBzZWxlY3RlZC4KKyAqCisgKiBJbiBjYXNlIHRoZSBjbGllbnQg
YXBwbGljYXRpb24gZG9lcyBub3Qgd2lzaCB0byBoYW5kbGUgdGhpcyBzaWduYWwsCisgKiBXZWJL
aXQgd2lsbCBwcm92aWRlIGEgZGVmYXVsdCBoYW5kbGVyIHdoaWNoIHdpbGwgYXN5bmNocm9ub3Vz
bHkgcnVuCisgKiBhIHJlZ3VsYXIgI0d0a0NvbG9yQ2hvb3NlciBmb3IgdGhlIHVzZXIgdG8gaW50
ZXJhY3Qgd2l0aC4KKyAqLworCitzdHJ1Y3QgX1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2
YXRlIHsKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBXZWJDb2xvclBpY2tlclJl
c3VsdExpc3RlbmVyUHJveHkqIGxpc3RlbmVyOworI2VuZGlmCisgICAgR2RrUkdCQSBjb2xvcjsK
KyAgICBib29sIGhhbmRsZWRSZXF1ZXN0OworfTsKKworV0VCS0lUX0RFRklORV9UWVBFKFdlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3QsIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3QsIEdfVFlQ
RV9PQkpFQ1QpCisKK2VudW0geworICAgIFBST1BfMCwKKworICAgIFBST1BfQ09MT1IKK307CisK
K3N0YXRpYyB2b2lkIHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RHZXRQcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1T
cGVjKQoreworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRf
Q09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgewor
ICAgIGNhc2UgUFJPUF9DT0xPUjoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm94ZWQodmFsdWUsICZy
ZXF1ZXN0LT5wcml2LT5jb2xvcik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFy
YW1TcGVjKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdENvbG9yQ2hvb3NlclJlcXVl
c3RTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHVl
KiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQoreworICAgIFdlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iamVjdCk7
CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2UgUFJPUF9DT0xPUjoKKyAgICAgICAg
aWYgKEdka1JHQkEqIGNvbG9yID0gc3RhdGljX2Nhc3Q8R2RrUkdCQSo+KGdfdmFsdWVfZ2V0X2Jv
eGVkKHZhbHVlKSkpCisgICAgICAgICAgICByZXF1ZXN0LT5wcml2LT5jb2xvciA9ICpjb2xvcjsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZB
TElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOworICAgIH0KK30KKwor
c3RhdGljIHZvaWQgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jbGFzc19pbml0KFdlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcyogcmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RD
bGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworICAgIG9i
amVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0R2V0UHJv
cGVydHk7CisgICAgb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdENvbG9yQ2hvb3Nl
clJlcXVlc3RTZXRQcm9wZXJ0eTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6Y29s
b3I6CisgICAgICoKKyAgICAgKiBUaGUgI0dka1JHQkEgY29sb3Igb2YgdGhlIHJlcXVlc3QKKyAg
ICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLAor
ICAgICAgICBQUk9QX0NPTE9SLAorICAgICAgICBnX3BhcmFtX3NwZWNfYm94ZWQoImNvbG9yIiwK
KyAgICAgICAgICAgIF8oIkN1cnJlbnQgY29sb3IiKSwKKyAgICAgICAgICAgIF8oIlRoZSBjdXJy
ZW50IGNvbG9yIGZvciB0aGUgcmVxdWVzdCIpLAorICAgICAgICAgICAgR0RLX1RZUEVfUkdCQSwK
KyAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOworfQorCisvKioKKyAqIHdlYmtp
dF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QKKyAqCisgKiBBc2sgV2ViS2l0IHRvIGNhbmNlbCB0aGUgcmVxdWVz
dC4gSXQncyBpbXBvcnRhbnQgdG8gZG8gdGhpcyBpbiBjYXNlCisgKiBubyBzZWxlY3Rpb24gaGFz
IGJlZW4gbWFkZSBpbiB0aGUgY2xpZW50LCBvdGhlcndpc2UgdGhlIHJlcXVlc3QKKyAqIHdvbid0
IGJlIHByb3Blcmx5IGNvbXBsZXRlZCBhbmQgdGhlIGJyb3dzZXIgd2lsbCBrZWVwIHRoZSByZXF1
ZXN0CisgKiBwZW5kaW5nIGZvcmV2ZXIsIHdoaWNoIG1pZ2h0IGNhdXNlIHRoZSBicm93c2VyIHRv
IGhhbmcuCisgKi8KK3ZvaWQgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwoV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBpZiAocmVxdWVzdC0+cHJp
di0+aGFuZGxlZFJlcXVlc3QpCisgICAgICAgIHJldHVybjsKKyAgICByZXF1ZXN0LT5wcml2LT5o
YW5kbGVkUmVxdWVzdCA9IFRSVUU7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAg
cmVxdWVzdC0+cHJpdi0+bGlzdGVuZXItPmVuZENvbG9yQ2hvb3NlcigpOworI2VuZGlmCit9CisK
Ky8qKgorICogd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3I6CisgKiBA
cmVxdWVzdDogYSAjV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0CisgKiBAY29sb3I6IGEgcG9pbnRl
ciAjR2RrUkdCQQorICoKKyAqIEFzayBXZWJLaXQgdG8gc2VsZWN0IGNvbG9yIGFuZCBjb21wbGV0
ZSB0aGUgcmVxdWVzdC4KKyAqLwordm9pZCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3Nl
bGVjdF9jb2xvcihXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBHZGtS
R0JBKiBjb2xvcikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19DT0xPUl9DSE9P
U0VSX1JFUVVFU1QocmVxdWVzdCkpOworICAgIGlmIChyZXF1ZXN0LT5wcml2LT5oYW5kbGVkUmVx
dWVzdCkKKyAgICAgICAgcmV0dXJuOworICAgIHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0
ID0gVFJVRTsKKworICAgIHJlcXVlc3QtPnByaXYtPmNvbG9yID0gKmNvbG9yOworI2lmIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SKQorICAgIHJlcXVlc3QtPnByaXYtPmxpc3RlbmVyLT5zZXRDb2xv
cihDb2xvcihyZXF1ZXN0LT5wcml2LT5jb2xvcikuc2VyaWFsaXplZCgpKTsKKyNlbmRpZgorfQor
CisvKioKKyAqIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29sb3I6
CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAorICoKKyAqIFJldHVy
bnM6IHRoZSBjdXJyZW50IGNvbG9yIG9mIHJlcXVlc3QuIFdoaWxlIG5vIGNvbG9yIGhhcyBiZWVu
IHNlbGVjdGVkLCBpdAorICogaXMgdGhlIGluaXRpYWwgdmFsdWUgZGVmaW5lZCBieSBXZWJLaXQu
IFdoZW4gYSBjb2xvciBoYXMgYmVlbiBzZWxlY3RlZCwgdGhpcworICogYmVjb21lcyB0aGUgc2Vs
ZWN0ZWQgdmFsdWUuCisgKi8KK0dka1JHQkEqIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rf
Z2V0X2N1cnJlbnRfY29sb3IoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKK3sK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNU
KHJlcXVlc3QpLCBOVUxMKTsKKworICAgIHJldHVybiAmcmVxdWVzdC0+cHJpdi0+Y29sb3I7Cit9
CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK1dlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3QqIHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RDcmVhdGUoY29uc3QgQ29sb3ImIGluaXRpYWxD
b2xvciwgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5KiBsaXN0ZW5lcikKK3sKKyAg
ICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX0NPTE9SX0NIT09T
RVJfUkVRVUVTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNU
LCBOVUxMKSk7CisgICAgcmVxdWVzdC0+cHJpdi0+bGlzdGVuZXIgPSBsaXN0ZW5lcjsKKyAgICBy
ZXF1ZXN0LT5wcml2LT5jb2xvciA9IGluaXRpYWxDb2xvcjsKKyAgICByZXR1cm4gcmVxdWVzdDsK
K30KKwordm9pZCB3ZWJraXRXZWJDb2xvckNob29zZXJSZXF1ZXN0U2V0Q29sb3IoV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIGlm
IChnZGtfcmdiYV9lcXVhbCgmY29sb3IsICZyZXF1ZXN0LT5wcml2LT5jb2xvcikpCisgICAgICAg
IHJldHVybjsKKyAgICByZXF1ZXN0LT5wcml2LT5jb2xvciA9IGNvbG9yOworICAgIGdfb2JqZWN0
X25vdGlmeShHX09CSkVDVChyZXF1ZXN0KSwgImNvbG9yIik7Cit9CisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOGQ4ZDJiYjRmNDRkODhkNGQ1NmFlOTdlM2RmZWMz
ZTllMTA4YmYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisg
KiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJf
Q09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5j
bHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisKKyNpZm5kZWYgV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdF9oCisjZGVmaW5lIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RfaAorCisjaW5jbHVkZSA8
Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lO
X0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUICAgICAg
ICAgICAgKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X3R5cGUoKSkKKyNkZWZpbmUg
V0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVD
S19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1Qs
IFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QpKQorI2RlZmluZSBXRUJLSVRfQ09MT1JfQ0hPT1NF
Ul9SRVFVRVNUX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNz
KSwgIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCwgV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdENsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVChv
YmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQ
RV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfSVNfQ09MT1JfQ0hPT1NF
Ul9SRVFVRVNUX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwg
IFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9DT0xP
Ul9DSE9PU0VSX1JFUVVFU1RfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NM
QVNTKChvYmopLCAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNULCBXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0Q2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdCAgICAgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdDsKK3R5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MgICBXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFBy
aXZhdGUgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdCB7CisgICAgR09iamVjdCBwYXJlbnQ7CisKKyAgICAvKjwgcHJp
dmF0ZSA+Ki8KKyAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZSAqcHJpdjsKK307
CisKK3N0cnVjdCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdENsYXNzIHsKKyAgICBHT2JqZWN0
Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2NvbG9y
X2Nob29zZXJfcmVxdWVzdF9nZXRfdHlwZSAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJ
IEdka1JHQkEgKgord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xv
ciAgKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgKnJlcXVlc3QpOworCitXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yICAgICAgIChXZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0ICpyZXF1ZXN0LCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHZGtSR0JBICpjb2xvcik7CisKK1dFQktJ
VF9BUEkgdm9pZAord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwgICAgICAgICAg
ICAgKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgKnJlcXVlc3QpOworCitHX0VORF9ERUNMUwor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmMwNWUwNjkzMTA2NWI4ZTVhZDg0NjY0ZDI2NmY4ZWI5MWVkM2U4ZDIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0UHJpdmF0ZS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUgbWV0OgorICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Us
CisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
CisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdFByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclBy
b3h5LmgiCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oIgorI2luY2x1ZGUg
IldlYktpdFByaXZhdGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CisKKyNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKKworV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogd2Via2l0
Q29sb3JDaG9vc2VyUmVxdWVzdENyZWF0ZShjb25zdCBXZWJDb3JlOjpDb2xvciYsIFdlYktpdDo6
V2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5Kik7Cit2b2lkIHdlYmtpdFdlYkNvbG9y
Q2hvb3NlclJlcXVlc3RFbmQoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCopOwordm9pZCB3ZWJr
aXRXZWJDb2xvckNob29zZXJSZXF1ZXN0U2V0Q29sb3IoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dCosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKKworI2VuZGlmIC8vIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaApp
bmRleCAwNjgyMGU1MTYzZjMxMjBmZjEyYjQ4ODUwYzZkNTAxYWMwZjE4YjA2Li44Mzg5ZjFmOTY1
ODllNGFhNzEzNzUyNjJkOTBmYjM0N2M0MmE0MGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVm
aW5lIFdlYktpdFByaXZhdGVfaAogCiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0FQSUNhc3QuaD4KKyNp
bmNsdWRlIDxXZWJLaXQyL1dLQ29sb3JDaG9vc2VyQ2xpZW50R3RrLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0NvbnRleHRTb3VwLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Rvd25sb2FkLmg+CiAj
aW5jbHVkZSA8V2ViS2l0Mi9XS0ZpbmRPcHRpb25zLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKaW5kZXggMjM4ZWU5YTZkMGVh
MDdiZWY2YjU1NmZjNjhiY2JkY2YxMjhlYjg4Yy4uZmYxOWEwN2MxNGVjZThkYjlkMjFlY2MxYTYy
MjMyMTgxZmNlZGMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVJQ2xpZW50LmNwcApAQCAtMzEsNiArMzEsMTAgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0d0a1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIAor
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3RQcml2YXRlLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAog
c3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQYWdlKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlcXVl
c3RSZWYsIFdLRGljdGlvbmFyeVJlZiB3a1dpbmRvd0ZlYXR1cmVzLCBXS0V2ZW50TW9kaWZpZXJz
LCBXS0V2ZW50TW91c2VCdXR0b24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC0xNjUsNiAr
MTY5LDE4IEBAIHN0YXRpYyB2b2lkIHJ1bk1vZGFsKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQogICAgIHdlYmtpdFdlYlZpZXdSdW5Bc01vZGFsKFdFQktJVF9XRUJfVklF
VyhjbGllbnRJbmZvKSk7CiB9CiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK3N0YXRp
YyB2b2lkIHNob3dDb2xvclBpY2tlcihXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIGluaXRpYWxDb2xv
ciwgV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQoreworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2hvd0NvbG9yQ2hvb3NlcihXRUJL
SVRfV0VCX1ZJRVdfQkFTRShjbGllbnRJbmZvKSwgV2ViQ29yZTo6Q29sb3IoV2ViS2l0Ojp0b1dU
RlN0cmluZyhpbml0aWFsQ29sb3IpKSwgdG9JbXBsKGxpc3RlbmVyKSk7Cit9CisKK3N0YXRpYyB2
b2lkIGhpZGVDb2xvclBpY2tlcihXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7
CisgICAgd2Via2l0V2ViVmlld0Jhc2VIaWRlQ29sb3JDaG9vc2VyKFdFQktJVF9XRUJfVklFV19C
QVNFKGNsaWVudEluZm8pKTsKK30KKyNlbmRpZgorCiB2b2lkIGF0dGFjaFVJQ2xpZW50VG9WaWV3
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgV0tQYWdlVUlDbGllbnQgd2tVSUNsaWVu
dCA9IHsKQEAgLTIxMyw4ICsyMjksMTMgQEAgdm9pZCBhdHRhY2hVSUNsaWVudFRvVmlldyhXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudCwKICAg
ICAgICAgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QsCiAgICAg
ICAgIDAsIC8vIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZAorI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQorICAgICAgICBzaG93Q29sb3JQaWNrZXIsCisgICAgICAgIGhpZGVDb2xv
clBpY2tlciwKKyNlbHNlCiAgICAgICAgIDAsIC8vIHNob3dDb2xvclBpY2tlcgogICAgICAgICAw
LCAvLyBoaWRlQ29sb3JQaWNrZXIKKyNlbmRpZgogICAgICAgICAwLCAvLyBwbHVnaW5Mb2FkUG9s
aWN5CiAgICAgfTsKICAgICBXS1BhZ2VSZWYgd2tQYWdlID0gdG9BUEkod2Via2l0V2ViVmlld0Jh
c2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDc1MGNl
MzBhMTFmMTFkMTM3ZWM3ZTY5ZmQyNzU1MTdmYmI2NTdlNTcuLmY2MmZlNDNhNGU5YmY1OWRjOWU2
NTIwMDRiMGViNmRjZDhmMGEyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yNCwxMSArMjQsMTQgQEAKICNpbmNsdWRl
ICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oIgog
I2luY2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgorI2luY2x1ZGUgIldlYkNvbG9yUGlja2Vy
UmVzdWx0TGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbS5oIgog
I2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKICNpbmNsdWRlICJXZWJEYXRhLmgi
CiAjaW5jbHVkZSAiV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cuaCIKICNpbmNsdWRlICJXZWJL
aXRCYWNrRm9yd2FyZExpc3RQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JDaG9vc2Vy
Q2xpZW50LmgiCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCIK
ICNpbmNsdWRlICJXZWJLaXRDb250ZXh0TWVudUNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdENv
bnRleHRNZW51SXRlbVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRDb250ZXh0TWVudVByaXZh
dGUuaCIKQEAgLTExMCw2ICsxMTMsOSBAQCBlbnVtIHsKIAogICAgIFJVTl9GSUxFX0NIT09TRVIs
CiAKKyAgICBSVU5fQ09MT1JfQ0hPT1NFUiwKKyAgICBDTE9TRV9DT0xPUl9DSE9PU0VSLAorCiAg
ICAgQ09OVEVYVF9NRU5VLAogICAgIENPTlRFWFRfTUVOVV9ESVNNSVNTRUQsCiAKQEAgLTE4Nyw2
ICsxOTMsOSBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAgICB1bnNpZ25lZCBs
b25nIGZhdmljb25DaGFuZ2VkSGFuZGxlcklEOwogCiAgICAgU25hcHNob3RSZXN1bHRzTWFwIHNu
YXBzaG90UmVzdWx0c01hcDsKKworICAgIEd0a1dpZGdldCogY29sb3JDaG9vc2VyRGlhbG9nOwor
ICAgIEdSZWZQdHI8V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdD4gY29sb3JDaG9vc2VyUmVxdWVz
dDsKIH07CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAg
LTQ0NSw2ICs0NTQsNTQgQEAgc3RhdGljIHZvaWQgZmlsZUNob29zZXJEaWFsb2dSZXNwb25zZUNh
bGxiYWNrKEd0a0RpYWxvZyogZGlhbG9nLCBnaW50IHJlc3BvbnNlSUQKICAgICBndGtfd2lkZ2V0
X2Rlc3Ryb3koR1RLX1dJREdFVChkaWFsb2cpKTsKIH0KIAorc3RhdGljIHZvaWQgY29sb3JDaG9v
c2VyUmVxdWVzdENoYW5nZUNhbGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR1BhcmFtU3BlYyosIEd0
a1dpZGdldCogZGlhbG9nKQoreworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVl
c3QgPSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iamVjdCk7CisKKyAgICBHZGtSR0JB
KiBjb2xvciA9IHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29sb3Io
cmVxdWVzdCk7CisgICAgZ3RrX2NvbG9yX2Nob29zZXJfc2V0X3JnYmEoR1RLX0NPTE9SX0NIT09T
RVIoZGlhbG9nKSwgY29sb3IpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q2xvc2VD
b2xvckNob29zZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBpZiAod2ViVmlldy0+
cHJpdi0+Y29sb3JDaG9vc2VyUmVxdWVzdCkgeworICAgICAgICBnX29iamVjdF91bnJlZih3ZWJW
aWV3LT5wcml2LT5jb2xvckNob29zZXJSZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgd2ViVmlldy0+
cHJpdi0+Y29sb3JDaG9vc2VyUmVxdWVzdC5jbGVhcigpOworICAgIH0KKyAgICBpZiAod2ViVmll
dy0+cHJpdi0+Y29sb3JDaG9vc2VyRGlhbG9nKQorICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3ko
d2ViVmlldy0+cHJpdi0+Y29sb3JDaG9vc2VyRGlhbG9nKTsKK30KKworc3RhdGljIHZvaWQgY29s
b3JDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFjayhHdGtXaWRnZXQqIGRpYWxvZywgZ2ludCBy
ZXNwb25zZUlELCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGlmIChyZXNwb25zZUlE
ID09IEdUS19SRVNQT05TRV9PSykgeworICAgICAgICBHZGtSR0JBIGNvbG9yOworICAgICAgICBn
dGtfY29sb3JfY2hvb3Nlcl9nZXRfcmdiYShHVEtfQ09MT1JfQ0hPT1NFUihkaWFsb2cpLCAmY29s
b3IpOworICAgICAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvcih3
ZWJWaWV3LT5wcml2LT5jb2xvckNob29zZXJSZXF1ZXN0LmdldCgpLCAmY29sb3IpOworICAgIH0g
ZWxzZQorICAgICAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbCh3ZWJWaWV3
LT5wcml2LT5jb2xvckNob29zZXJSZXF1ZXN0LmdldCgpKTsKK30KKworc3RhdGljIGdib29sZWFu
IHdlYmtpdFdlYlZpZXdSdW5Db2xvckNob29zZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX29iamVjdF9yZWYoR19P
QkpFQ1QocmVxdWVzdCkpOworICAgIEd0a1dpZGdldCogdG9wbGV2ZWwgPSBndGtfd2lkZ2V0X2dl
dF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICBpZiAoISF3aWRnZXRJc09uc2Ny
ZWVuVG9wbGV2ZWxXaW5kb3codG9wbGV2ZWwpKQorICAgICAgICB0b3BsZXZlbCA9IDA7CisgICAg
R3RrV2lkZ2V0KiBkaWFsb2cgPSAgZ3RrX2NvbG9yX2Nob29zZXJfZGlhbG9nX25ldyhfKCJTZWxl
Y3QgQ29sb3IiKSwgR1RLX1dJTkRPVyh0b3BsZXZlbCkpOworCisgICAgZ3RrX2NvbG9yX2Nob29z
ZXJfc2V0X3JnYmEoR1RLX0NPTE9SX0NIT09TRVIoZGlhbG9nKSwgd2Via2l0X2NvbG9yX2Nob29z
ZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcihyZXF1ZXN0KSk7CisKKyAgICBnX3NpZ25hbF9j
b25uZWN0KHJlcXVlc3QsICJub3RpZnk6OmNvbG9yIiwgR19DQUxMQkFDSyhjb2xvckNob29zZXJS
ZXF1ZXN0Q2hhbmdlQ2FsbGJhY2spLCBkaWFsb2cpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoZGlh
bG9nLCAicmVzcG9uc2UiLCBHX0NBTExCQUNLKGNvbG9yQ2hvb3NlckRpYWxvZ1Jlc3BvbnNlQ2Fs
bGJhY2spLCB3ZWJWaWV3KTsKKyAgICBndGtfd2lkZ2V0X3Nob3coZGlhbG9nKTsKKworICAgIHdl
YlZpZXctPnByaXYtPmNvbG9yQ2hvb3NlckRpYWxvZyA9IGRpYWxvZzsKKyAgICB3ZWJWaWV3LT5w
cml2LT5jb2xvckNob29zZXJSZXF1ZXN0ID0gcmVxdWVzdDsKKworICAgIHJldHVybiBUUlVFOwor
fQorCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld1J1bkZpbGVDaG9vc2VyKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKIHsKICAg
ICBHdGtXaWRnZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdF
VCh3ZWJWaWV3KSk7CkBAIC00OTMsNiArNTUwLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmll
d0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBhdHRhY2hVSUNsaWVudFRvVmlldyh3
ZWJWaWV3KTsKICAgICBhdHRhY2hQb2xpY3lDbGllbnRUb1ZpZXcod2ViVmlldyk7CiAgICAgYXR0
YWNoRnVsbFNjcmVlbkNsaWVudFRvVmlldyh3ZWJWaWV3KTsKKyAgICBhdHRhY2hDb2xvckNob29z
ZXJDbGllbnRUb1ZpZXcod2ViVmlldyk7CiAgICAgYXR0YWNoQ29udGV4dE1lbnVDbGllbnRUb1Zp
ZXcod2ViVmlldyk7CiAgICAgYXR0YWNoRm9ybUNsaWVudFRvVmlldyh3ZWJWaWV3KTsKIApAQCAt
NjA1LDYgKzY2Myw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdl
YktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgIHdlYlZpZXdDbGFzcy0+ZGVjaWRl
X3BvbGljeSA9IHdlYmtpdFdlYlZpZXdEZWNpZGVQb2xpY3k7CiAgICAgd2ViVmlld0NsYXNzLT5w
ZXJtaXNzaW9uX3JlcXVlc3QgPSB3ZWJraXRXZWJWaWV3UGVybWlzc2lvblJlcXVlc3Q7CiAgICAg
d2ViVmlld0NsYXNzLT5ydW5fZmlsZV9jaG9vc2VyID0gd2Via2l0V2ViVmlld1J1bkZpbGVDaG9v
c2VyOworICAgIHdlYlZpZXdDbGFzcy0+cnVuX2NvbG9yX2Nob29zZXIgPSB3ZWJraXRXZWJWaWV3
UnVuQ29sb3JDaG9vc2VyOworICAgIHdlYlZpZXdDbGFzcy0+Y2xvc2VfY29sb3JfY2hvb3NlciA9
IHdlYmtpdFdlYlZpZXdDbG9zZUNvbG9yQ2hvb3NlcjsKIAogICAgIC8qKgogICAgICAqIFdlYktp
dFdlYlZpZXc6d2ViLWNvbnRleHQ6CkBAIC0xMjI1LDYgKzEyODUsNTYgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xh
c3MpCiAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwgLyogbnVtYmVyIG9m
IHBhcmFtZXRlcnMgKi8KICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX0ZJTEVfQ0hP
T1NFUl9SRVFVRVNUKTsKIAorICAgICAvKioKKyAgICAgICogV2ViS2l0V2ViVmlldzo6cnVuLWNv
bG9yLWNob29zZXI6CisgICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdo
aWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAgKiBAcmVxdWVzdDogYSAjV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdAorICAgICAgKgorICAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVk
IHdoZW4gdGhlIHVzZXIgaW50ZXJhY3RzIHdpdGggYSAmbHQ7aW5wdXQKKyAgICAgICogdHlwZT0n
Y29sb3InIC8mZ3Q7IEhUTUwgZWxlbWVudCwgcmVxdWVzdGluZyBmcm9tIFdlYktpdCB0byBzaG93
CisgICAgICAqIGEgZGlhbG9nIHRvIHNlbGVjdCBhIGNvbG9yLiBUbyBsZXQgdGhlIGFwcGxpY2F0
aW9uIGtub3cgdGhlIGRldGFpbHMgb2YKKyAgICAgICogdGhlIGNvbG9yIGNob29zZXIsIGFzIHdl
bGwgYXMgdG8gYWxsb3cgdGhlIGNsaWVudCBhcHBsaWNhdGlvbiB0byBlaXRoZXIKKyAgICAgICog
Y2FuY2VsIHRoZSByZXF1ZXN0IG9yIHBlcmZvcm0gYW4gYWN0dWFsIGNvbG9yIHNlbGVjdGlvbiwg
dGhlIHNpZ25hbCB3aWxsCisgICAgICAqIHBhc3MgYW4gaW5zdGFuY2Ugb2YgdGhlICNXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0IGluIHRoZSBAcmVxdWVzdAorICAgICAgKiBhcmd1bWVudC4KKyAg
ICAgICoKKyAgICAgICogVGhlIGRlZmF1bHQgc2lnbmFsIGhhbmRsZXIgd2lsbCBhc3luY2hyb25v
dXNseSBydW4gYSByZWd1bGFyCisgICAgICAqICNHdGtDb2xvckNob29zZXIgZm9yIHRoZSB1c2Vy
IHRvIGludGVyYWN0IHdpdGguCisgICAgICAqCisgICAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBz
dG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50LgorICAg
ICAgKiAgICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIuCisgICAgICAqCisg
ICAgICAqLworICAgIHNpZ25hbHNbUlVOX0NPTE9SX0NIT09TRVJdID0KKyAgICAgICAgZ19zaWdu
YWxfbmV3KCJydW4tY29sb3ItY2hvb3NlciIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFT
Uyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAg
ICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBydW5fY29sb3JfY2hvb3Nl
ciksCisgICAgICAgICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIDAgLyog
YWNjdW11bGF0b3IgZGF0YSAqLywKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5f
X09CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAxLCAvKiBudW1iZXIgb2YgcGFy
YW1ldGVycyAqLworICAgICAgICAgICAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNU
KTsKKworICAgICAvKioKKyAgICAgICogV2ViS2l0V2ViVmlldzo6Y2xvc2UtY29sb3ItY2hvb3Nl
cjoKKyAgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNp
Z25hbCBpcyBlbWl0dGVkCisgICAgICAqCisgICAgICAqIEVtaXR0ZWQgd2hlbiBjb2xvciBwaWNr
ZXIgbXVzdCBiZSBoaWRkZW4uIFRoaXMgaGFwcGVucyBmb3IgZXhhbXBsZSBpZiB0aGUKKyAgICAg
ICogcGFnZSB0cmlnZ2VyaW5nIHRoZSByZXF1ZXN0IHVubG9hZHMgYmVmb3JlIHRoZSByZXF1ZXN0
IGlzIGNvbXBsZXRlZC4KKyAgICAgICoKKyAgICAgICogUmV0dXJuczogJVRSVUUgdG8gc3RvcCBv
dGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4KKyAgICAgICog
ICAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgorICAgICAgKgorICAgICAg
Ki8KKyAgICBzaWduYWxzW0NMT1NFX0NPTE9SX0NIT09TRVJdID0KKyAgICAgICAgZ19zaWduYWxf
bmV3KCJjbG9zZS1jb2xvci1jaG9vc2VyIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNT
KHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAg
ICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIGNsb3NlX2NvbG9yX2Nob29z
ZXIpLAorICAgICAgICAgICAgMCwgMCwKKyAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9W
T0lEX19WT0lELAorICAgICAgICAgICAgR19UWVBFX05PTkUsIDApOworCiAgICAgLyoqCiAgICAg
ICogV2ViS2l0V2ViVmlldzo6Y29udGV4dC1tZW51OgogICAgICAqIEB3ZWJfdmlldzogdGhlICNX
ZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZApAQCAtMTY1Myw2ICsx
NzYzLDMwIEBAIHZvaWQgd2Via2l0V2ViVmlld1J1bkZpbGVDaG9vc2VyUmVxdWVzdChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRGaWxlQ2hvb3NlCiAgICAgZ19zaWduYWxfZW1pdCh3ZWJW
aWV3LCBzaWduYWxzW1JVTl9GSUxFX0NIT09TRVJdLCAwLCByZXF1ZXN0LCAmcmV0dXJuVmFsdWUp
OwogfQogCitib29sIHdlYmtpdFdlYlZpZXdTaG93Q29sb3JDaG9vc2VyKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIGNvbnN0IENvbG9yJiBjb2xvciwgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5l
clByb3h5KiBsaXN0ZW5lcikKK3sKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBH
UmVmUHRyPFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYod2Vi
a2l0Q29sb3JDaG9vc2VyUmVxdWVzdENyZWF0ZShjb2xvciwgbGlzdGVuZXIpKTsKKworICAgIGdi
b29sZWFuIHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tS
VU5fQ09MT1JfQ0hPT1NFUl0sIDAsIHJlcXVlc3QuZ2V0KCksICZyZXR1cm5WYWx1ZSk7CisgICAg
aWYgKCFyZXR1cm5WYWx1ZSkKKyAgICAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9j
YW5jZWwocmVxdWVzdC5nZXQoKSk7CisKKyAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisjZWxzZQor
ICAgIHJldHVybiBGQUxTRTsKKyNlbmRpZgorfQorCit2b2lkIHdlYmtpdFdlYlZpZXdIaWRlQ29s
b3JDaG9vc2VyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCisgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CisgICAgZ19zaWduYWxfZW1pdCh3
ZWJWaWV3LCBzaWduYWxzW0NMT1NFX0NPTE9SX0NIT09TRVJdLCAwLCAmcmV0dXJuVmFsdWUpOwor
I2VuZGlmCit9CisKIHN0YXRpYyBib29sIHdlYmtpdFdlYlZpZXdTaG91bGRTaG93SW5wdXRNZXRo
b2RzTWVudShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEd0a1NldHRpbmdzKiBzZXR0
aW5ncyA9IGd0a193aWRnZXRfZ2V0X3NldHRpbmdzKEdUS19XSURHRVQod2ViVmlldykpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4
IDVmNzk3OWRmMzcyODc3NzEyNGU0YTIwNjk2YjgzZDVhY2U1ZWNmY2IuLjQyYThjZmZkZGNiZGI2
NjE4YmQ3NWE5OTE4ODhkNTMxNjA3MzQ1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tG
b3J3YXJkTGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtp
dDIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRG
aW5kQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Rm9ybVN1Ym1pc3Npb25S
ZXF1ZXN0Lmg+CkBAIC0yMzEsNiArMjMyLDkgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3Mg
ewogICAgIGdib29sZWFuICAgKCogbGVhdmVfZnVsbHNjcmVlbikgICAgICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogICAgIGdib29sZWFuICAgKCogcnVuX2Zp
bGVfY2hvb3NlcikgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3Zp
ZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
RmlsZUNob29zZXJSZXF1ZXN0ICAgICpyZXF1ZXN0KTsKKyAgICBnYm9vbGVhbiAgICgqIHJ1bl9j
b2xvcl9jaG9vc2VyKSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92
aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3QgICAgKnJlcXVlc3QpOworICAgIHZvaWQgICAgICAgKCogY2xv
c2VfY29sb3JfY2hvb3NlcikgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2Vi
X3ZpZXcpOwogICAgIGdib29sZWFuICAgKCogY29udGV4dF9tZW51KSAgICAgICAgICAgICAgKFdl
YktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29udGV4dE1lbnUgICAgICAgICAgICpj
b250ZXh0X21lbnUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR2RrRXZlbnQgICAgICAgICAgICAgICAgICAgICpldmVudCwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCA5
NGMzNDI1ZTRjYWNiOTI0ZDJmYzljMGUwMmE5NWRmNDZlNmUwMmYzLi45YTZkZmE3NjVjNjY0YWFi
OWZmM2IxODMzZTdhYmIzZjE5ODJlZGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYldo
ZWVsRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIldlYkNv
bG9yQ2hvb3NlckNsaWVudEd0ay5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRl
ICJXZWJFdmVudEZhY3RvcnkuaCIKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuQ2xpZW50R3RrLmgi
CkBAIC0xMzIsNiArMTMzLDEwIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsK
ICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgT3duUHRyPFJlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93PiByZWRpcmVjdGVkV2luZG93OwogI2VuZGlmCisKKyNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9DT0xPUikKKyAgICBXZWJDb2xvckNob29zZXJDbGllbnRHdGsgY29sb3JDaG9vc2VyQ2xp
ZW50OworI2VuZGlmCiB9OwogCiBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlld0Jhc2Us
IHdlYmtpdF93ZWJfdmlld19iYXNlLCBHVEtfVFlQRV9DT05UQUlORVIpCkBAIC0xMTA0LDMgKzEx
MDksMjYgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVVwZGF0ZVRleHRJbnB1dFN0YXRlKFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKIHsKICAgICB3ZWJraXRXZWJWaWV3QmFz
ZS0+cHJpdi0+aW5wdXRNZXRob2RGaWx0ZXIuc2V0Q3Vyc29yUmVjdCh3ZWJraXRXZWJWaWV3QmFz
ZS0+cHJpdi0+cGFnZVByb3h5LT5lZGl0b3JTdGF0ZSgpLmN1cnNvclJlY3QpOwogfQorCit2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlSW5pdGlhbGl6ZUNvbG9yQ2hvb3NlckNsaWVudChXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIGNvbnN0IFdLQ29sb3JDaG9vc2VyQ2xpZW50R3Rr
KiB3a0NsaWVudCkKK3sKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICB3ZWJraXRX
ZWJWaWV3QmFzZS0+cHJpdi0+Y29sb3JDaG9vc2VyQ2xpZW50LmluaXRpYWxpemUod2tDbGllbnQp
OworI2VuZGlmCit9CisKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VTaG93Q29sb3JDaG9vc2VyKFdl
YktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgY29uc3QgQ29sb3ImIGluaXRpYWxD
b2xvciwgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5KiBwcm94eSkKK3sKKyNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHBy
aXYgPSB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdjsKKyAgICBwcml2LT5jb2xvckNob29zZXJDbGll
bnQuc2hvd0NvbG9yQ2hvb3Nlcihpbml0aWFsQ29sb3IsIHByb3h5KTsKKyNlbmRpZgorfQorCit2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlSGlkZUNvbG9yQ2hvb3NlcihXZWJLaXRXZWJWaWV3QmFzZSog
d2Via2l0V2ViVmlld0Jhc2UpCit7CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAg
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2Via2l0V2ViVmlld0Jhc2UtPnByaXY7
CisgICAgcHJpdi0+Y29sb3JDaG9vc2VyQ2xpZW50LmhpZGVDb2xvckNob29zZXIoKTsKKyNlbmRp
ZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAppbmRleCBlMzBmZDk0OWVjYjlmYWMxNGI0ZmJmZDNh
Yzk1NGE4MDVhZjAwYWI1Li43Mjk3NmRlOTExMWZmZGZiZGY0YTUwNjM0NzJhNzNiMTllMTIyM2Uz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaApAQCAtMjgsNiArMjgsOCBAQAogI2lmbmRlZiBXZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGVfaAogI2RlZmluZSBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGVf
aAogCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJXZWJDb2xvclBpY2tlclJlc3VsdExp
c3RlbmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5R3RrLmgiCiAjaW5j
bHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlLmgiCkBA
IC03MCw0ICs3Miw4IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VBZGRBdXRoZW50aWNhdGlvbkRp
YWxvZyhXZWJLaXRXZWJWaWV3QmFzZSosIEd0a1dpZGdldCogYXV0CiB2b2lkIHdlYmtpdFdlYlZp
ZXdCYXNlQ2FuY2VsQXV0aGVudGljYXRpb25EaWFsb2coV2ViS2l0V2ViVmlld0Jhc2UqKTsKIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VBZGRXZWJJbnNwZWN0b3IoV2ViS2l0V2ViVmlld0Jhc2UqLCBH
dGtXaWRnZXQqIGluc3BlY3Rvcik7CiAKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VJbml0aWFsaXpl
Q29sb3JDaG9vc2VyQ2xpZW50KFdlYktpdFdlYlZpZXdCYXNlKiwgY29uc3QgV0tDb2xvckNob29z
ZXJDbGllbnRHdGsqKTsKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VTaG93Q29sb3JDaG9vc2VyKFdl
YktpdFdlYlZpZXdCYXNlKiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBXZWJLaXQ6OldlYkNvbG9y
UGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eSopOwordm9pZCB3ZWJraXRXZWJWaWV3QmFzZUhpZGVD
b2xvckNob29zZXIoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKTsKKwogI2Vu
ZGlmIC8vIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAppbmRleCBlYjFm
MjdkYjI5OGNhZTM4NzgxYjVkYjQyNDhhM2Q2Yjg3ZGE0YmExLi4yYTUyZDM3NjM1NGEzMTY3Mjdj
NTI0ZDkyNzZlN2Q1YTAxZmZlOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAK
IAogI2luY2x1ZGUgIldlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
IHZvaWQgd2Via2l0V2ViVmlld0xvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRMb2Fk
RXZlbnQpOwpAQCAtNTAsNiArNTEsOCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdNb3VzZVRhcmdldENo
YW5nZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdCosCiB2b2lkIHdl
YmtpdFdlYlZpZXdQcmludEZyYW1lKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkqKTsKIHZvaWQgd2Via2l0V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQoV2ViS2l0V2ViVmll
dyosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwg
V2ViS2l0VVJJUmVxdWVzdCopOwogdm9pZCB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXJSZXF1
ZXN0KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QqKTsKK2Jvb2wgd2Vi
a2l0V2ViVmlld1Nob3dDb2xvckNob29zZXIoV2ViS2l0V2ViVmlldyosIGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiwgV2ViS2l0OjpXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkqKTsKK3Zv
aWQgd2Via2l0V2ViVmlld0hpZGVDb2xvckNob29zZXIoV2ViS2l0V2ViVmlldyopOwogV2ViS2l0
V2ViUmVzb3VyY2UqIHdlYmtpdFdlYlZpZXdHZXRMb2FkaW5nV2ViUmVzb3VyY2UoV2ViS2l0V2Vi
VmlldyosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7CiB2b2lkIHdlYktpdFdlYlZpZXdE
aWRSZWNlaXZlU25hcHNob3QoV2ViS2l0V2ViVmlldyosIHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdl
YktpdDo6V2ViSW1hZ2UqKTsKIHZvaWQgd2Via2l0V2ViVmlld1JlbW92ZUxvYWRpbmdXZWJSZXNv
dXJjZShXZWJLaXRXZWJWaWV3KiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1k
b2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstZG9jcy5zZ21sCmluZGV4IDJmYTdlYmFjZmRjNjI3ZmIyNDA5NGYwMGJlNmI3MTJmOGQyZDQz
Y2IuLmFlMjQ1Yjk3YzRiYWVlYzI1NGJlNDc1MTZmOTkzNzU4ODhmNmQ5NjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNn
bWwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LWRvY3Muc2dtbApAQCAtMzAsNiArMzAsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9X
ZWJLaXRXZWJSZXNvdXJjZS54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0
RXJyb3IueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEZhdmljb25EYXRh
YmFzZS54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0RmlsZUNob29z
ZXJSZXF1ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRGaW5kQ29u
dHJvbGxlci54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0Q29va2llTWFu
YWdlci54bWwiLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IDUzNDY5YWQ5MjMxYTlm
NDM2MmE1ODk2Mjg4NTY0MWU5ODZlZGM4NzEuLmM3MTJmNTQ1MTEyZGFhY2FiNGQ4OTAyNDAzYzUy
ZjIwYjQ5OWRjZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtNjg3LDYgKzY4Nywy
NyBAQCB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAog
PFNFQ1RJT04+Cis8RklMRT5XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PC9GSUxFPgorV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdAord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3Vy
cmVudF9jb2xvcgord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3IKK3dl
YmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJk
PgorV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdENsYXNzCitXRUJLSVRfVFlQRV9DT0xPUl9DSE9P
U0VSX1JFUVVFU1QKK1dFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1QKK1dFQktJVF9JU19DT0xP
Ul9DSE9PU0VSX1JFUVVFU1QKK1dFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1MKK1dF
QktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1MKK1dFQktJVF9DT0xPUl9DSE9PU0VS
X1JFUVVFU1RfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFByaXZhdGU+CitXZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0UHJpdmF0ZQord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlw
ZQorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxGSUxFPldlYktpdEZpbmRDb250cm9sbGVyPC9G
SUxFPgogV2ViS2l0RmluZENvbnRyb2xsZXIKIFdlYktpdEZpbmRPcHRpb25zCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMK
aW5kZXggNWQ5N2Y2OWJlZDVkZDdmM2E3NjExYThkYTlkZmU3ODgzZmRhNDQ0NS4uYWY1NzdhYjdl
ODhmMTlmNzJlYjBiYjMxOWU2MjBiNzcyZjVlY2UxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcwpAQCAtMjQsMyAr
MjQsNCBAQCB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X3R5cGUKIHdlYmtpdF93ZWJfdmll
d19ncm91cF9nZXRfdHlwZQogd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3R5cGUKIHdlYmtpdF93
ZWJfcGFnZV9nZXRfdHlwZQord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlwZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdl
YktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMv
VGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDA2YjY5ZjRlNjYzMTYzYTdhMTEwMjliY2Q3YTUw
N2RkNDUyZjZlOWMuLjdlNWJjZTZiOTMyMzlhNDVlMDRiMTBhNWM2MjgxY2UzN2I5YWU1NDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJL
aXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTI2LDYgKzI2LDE1IEBACiAjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAor
c3RhdGljIHZvaWQgYXNzZXJ0Q29sb3JJc0VxdWFsKGNvbnN0IEdka1JHQkEqIGNvbG9yLCBmbG9h
dCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBhbHBoYSkKK3sgICAgCisgICAg
Z19hc3NlcnQoY29sb3IpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLT5yZWQsID09LCBy
ZWQpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLT5ncmVlbiwgPT0sIGdyZWVuKTsKKyAg
ICBnX2Fzc2VydF9jbXBmbG9hdChjb2xvci0+Ymx1ZSwgPT0sIGJsdWUpOworICAgIGdfYXNzZXJ0
X2NtcGZsb2F0KGNvbG9yLT5hbHBoYSwgPT0sIGFscGhhKTsKK30KKwogc3RhdGljIHZvaWQgdGVz
dFdlYlZpZXdEZWZhdWx0Q29udGV4dChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
IHsKICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQodGVzdC0+bV93ZWJW
aWV3KSA9PSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSk7CkBAIC03OTMsNiArODAy
LDgzIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RmlsZUNob29zZXJSZXF1ZXN0KEZpbGVDaG9v
c2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB3ZWJraXRfZmlsZV9jaG9vc2VyX3Jl
cXVlc3RfY2FuY2VsKGZpbGVDaG9vc2VyUmVxdWVzdCk7CiB9CiAKK2NsYXNzIENvbG9yQ2hvb3Nl
clRlc3Q6IHB1YmxpYyBVSUNsaWVudFRlc3QgeworcHVibGljOgorICAgIE1BS0VfR0xJQl9URVNU
X0ZJWFRVUkUoQ29sb3JDaG9vc2VyVGVzdCk7CisgICAgQ29sb3JDaG9vc2VyVGVzdCgpCisgICAg
OiBoYWRDbG9zZWRTaWduYWwoRkFMU0UpCisgICAgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0
KG1fd2ViVmlldywgInJ1bi1jb2xvci1jaG9vc2VyIiwgR19DQUxMQkFDSyhydW5Db2xvckNob29z
ZXJDYWxsYmFjayksIHRoaXMpOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywg
ImNsb3NlLWNvbG9yLWNob29zZXIiLCBHX0NBTExCQUNLKGNsb3NlQ29sb3JDaG9vc2VyQ2FsbGJh
Y2spLCB0aGlzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gcnVuQ29sb3JDaG9vc2Vy
Q2FsbGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVl
c3QsIENvbG9yQ2hvb3NlclRlc3QqIHRlc3QpCisgICAgeworICAgICAgICB0ZXN0LT5ydW5Db2xv
ckNob29zZXIocmVxdWVzdCk7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0KKworICAgIHN0
YXRpYyBnYm9vbGVhbiBjbG9zZUNvbG9yQ2hvb3NlckNhbGxiYWNrKFdlYktpdFdlYlZpZXcqLCBD
b2xvckNob29zZXJUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgdGVzdC0+Y2xvc2VDb2xvckNo
b29zZXIoKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgdm9pZCBydW5Db2xv
ckNob29zZXIoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKKyAgICB7CisgICAg
ICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QocmVxdWVz
dCkpOworICAgICAgICBtX2NvbG9yQ2hvb3NlclJlcXVlc3QgPSByZXF1ZXN0OworICAgICAgICBn
X21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3ApOworICAgIH0KKworICAgIHZvaWQgY2xvc2VDb2xv
ckNob29zZXIoKQorICAgIHsKKyAgICAgICAgaGFkQ2xvc2VkU2lnbmFsID0gVFJVRTsKKyAgICB9
CisKKyAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiBjbGlja01vdXNlQnV0dG9uQW5kV2Fp
dEZvckNvbG9yQ2hvb3NlclJlcXVlc3QoaW50IHgsIGludCB5KQorICAgIHsKKyAgICAgICAgY2xp
Y2tNb3VzZUJ1dHRvbih4LCB5KTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3Ap
OworICAgICAgICByZXR1cm4gbV9jb2xvckNob29zZXJSZXF1ZXN0LmdldCgpOworICAgIH0KKwor
ICAgIGdib29sZWFuIGNsb3NlZFNpZ25hbCgpCisgICAgeworICAgICAgICByZXR1cm4gaGFkQ2xv
c2VkU2lnbmFsOworICAgIH0KKworcHJpdmF0ZToKKyAgICBHUmVmUHRyPFdlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3Q+IG1fY29sb3JDaG9vc2VyUmVxdWVzdDsKKyAgICBnYm9vbGVhbiBoYWRDbG9z
ZWRTaWduYWw7Cit9OworCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NvbG9yQ2hvb3NlclJlcXVl
c3QoQ29sb3JDaG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5z
aG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciog
Y29sb3JDaG9vc2VySFRNTCA9ICI8aHRtbD48Ym9keT48aW5wdXQgc3R5bGU9J3Bvc2l0aW9uOmFi
c29sdXRlO2xlZnQ6MDt0b3A6MDttYXJnaW46MDtwYWRkaW5nOjAnIHR5cGU9J2NvbG9yJyB2YWx1
ZT0nI2ZmMDAwMCcvPjwvYm9keT48L2h0bWw+IjsKKyAgICB0ZXN0LT5sb2FkSHRtbChjb2xvckNo
b29zZXJIVE1MLCAwKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBX
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiBjb2xvckNob29zZXJSZXF1ZXN0ID0gdGVzdC0+Y2xp
Y2tNb3VzZUJ1dHRvbkFuZFdhaXRGb3JDb2xvckNob29zZXJSZXF1ZXN0KDUsIDUpOworICAgIEdk
a1JHQkEqIGNvbG9yID0gd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9j
b2xvcihjb2xvckNob29zZXJSZXF1ZXN0KTsKKyAgICBhc3NlcnRDb2xvcklzRXF1YWwoY29sb3Is
IDEuMCwgMC4wLCAwLjAsIDEuMCk7CisKKyAgICB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVu
dGlsRmluaXNoZWQoImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykudmFsdWUgPSAnIzAw
ZmYwMCc7IiwgMCk7CisgICAgY29sb3IgPSB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dl
dF9jdXJyZW50X2NvbG9yKGNvbG9yQ2hvb3NlclJlcXVlc3QpOworICAgIGFzc2VydENvbG9ySXNF
cXVhbChjb2xvciwgMS4wLCAwLjAsIDAuMCwgMS4wKTsKKworICAgIGdfYXNzZXJ0KCF0ZXN0LT5j
bG9zZWRTaWduYWwoKSk7CisgICAgR2RrUkdCQSBibHVlID0gezAuMCwgMC4wLCAxLjAsIDEuMH07
CisgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3IoY29sb3JDaG9v
c2VyUmVxdWVzdCwgJmJsdWUpOworICAgIGdfYXNzZXJ0KHRlc3QtPmNsb3NlZFNpZ25hbCgpKTsK
KyAgICBjb2xvciA9IHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29s
b3IoY29sb3JDaG9vc2VyUmVxdWVzdCk7CisgICAgYXNzZXJ0Q29sb3JJc0VxdWFsKGNvbG9yLCAw
LjAsIDAuMCwgMS4wLCAxLjApOworCisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNj
cmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9j
dW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZTsiLCAwKTsKKyAgICBHT3duUHRyPGNo
YXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGph
dmFzY3JpcHRSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCks
ID09LCAiIzAwMDBmZiIpOworfQorCiBjbGFzcyBGdWxsU2NyZWVuQ2xpZW50VGVzdDogcHVibGlj
IFdlYlZpZXdUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKEZ1bGxT
Y3JlZW5DbGllbnRUZXN0KTsKQEAgLTEyNTEsNiArMTMzNyw3IEBAIHZvaWQgYmVmb3JlQWxsKCkK
ICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInZpZXctbW9kZSIsIHRlc3RX
ZWJWaWV3TW9kZSk7CiAgICAgU25hcHNob3RXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3
IiwgInNuYXBzaG90IiwgdGVzdFdlYlZpZXdTbmFwc2hvdCk7CiAgICAgV2ViVmlld1Rlc3Q6OmFk
ZCgiV2ViS2l0V2ViVmlldyIsICJwYWdlLXZpc2liaWxpdHkiLCB0ZXN0V2ViVmlld1BhZ2VWaXNp
YmlsaXR5KTsKKyAgICBDb2xvckNob29zZXJUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiY29s
b3ItY2hvb3Nlci1yZXF1ZXN0IiwgdGVzdFdlYlZpZXdDb2xvckNob29zZXJSZXF1ZXN0KTsKIH0K
IAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmgKaW5kZXggM2EzOTIxMDBiMzQwMzAyNzYwZTA3N2RkMGFjYzUxNmZlNWYwMWQ4ZS4uM2Ji
NWYwOTU2MDVlODA3N2QzNzg2YTY5YzQ3ZmNlNDNlMTNiYzI2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0RW51bVR5cGVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRFcnJv
ci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmg+CisjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZp
bmRDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGb3JtU3VibWlzc2lvblJl
cXVlc3QuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBp
Y2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAKaW5kZXggMGVlNzlkZDcxYTM2ZDI1
MzlmZmFkNDQ3ZmU5YTYzMGJhOTI2NjY2Mi4uYmEwNTE3MzQ3ZWU3MTNlNDAzNzBjNzMxYWUyYTQ2
Nzk5NDY1ZDcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9y
UGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAKQEAgLTU1LDYgKzU1LDE0
IEBAIHZvaWQgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5OjpzZXRDb2xvcihjb25z
dCBTdHJpbmcmIGNvbG9yKQogICAgIG1fcGFnZS0+ZW5kQ29sb3JDaG9vc2VyKCk7CiB9CiAKK3Zv
aWQgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5OjplbmRDb2xvckNob29zZXIoKQor
eworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BhZ2UtPmVuZENv
bG9yQ2hvb3NlcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5oCmluZGV4IGQyOGVi
OGFhOTVjMmQ4ZGIwNmQyMWJiNzQ2MDFkYTlkY2VlMWE0N2QuLjYyYTJlMGI4MGI5ZDM2N2U4OTZl
N2MxYzYyNmRkODhhZGE0MWRhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmgKQEAgLTUwLDYg
KzUwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgdm9pZCBzZXRD
b2xvcihjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGVuZENvbG9yQ2hvb3NlcigpOwogCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eShXZWJQ
YWdlUHJveHkqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2Vi
Q29sb3JDaG9vc2VyQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViQ29sb3JDaG9vc2VyQ2xpZW50R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2MwMDEyZWRjYWRhM2Q3
OGI0OWIwMjRiYTgyYzI1ZWVhNWQ4ZTEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9XZWJDb2xvckNob29zZXJDbGllbnRHdGsuY3BwCkBAIC0wLDAgKzEs
NDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAq
ICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ29sb3JDaG9v
c2VyQ2xpZW50R3RrLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3ZvaWQgV2ViQ29sb3JDaG9vc2VyQ2xpZW50R3RrOjpzaG93Q29sb3JDaG9vc2Vy
KGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIFdlYkNvbG9yUGlja2VyUmVzdWx0
TGlzdGVuZXJQcm94eSogcHJveHkpCit7CisgICAgaWYgKCFtX2NsaWVudC5zaG93Q29sb3JDaG9v
c2VyKQorICAgICAgICByZXR1cm47CisgICAgbV9jbGllbnQuc2hvd0NvbG9yQ2hvb3NlcihtX2Ns
aWVudC5jbGllbnRJbmZvLCB0b0FQSShpbml0aWFsQ29sb3Iuc2VyaWFsaXplZCgpLmltcGwoKSks
IHRvQVBJKHByb3h5KSk7Cit9CisKK3ZvaWQgV2ViQ29sb3JDaG9vc2VyQ2xpZW50R3RrOjpoaWRl
Q29sb3JDaG9vc2VyKCkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmhpZGVDb2xvckNob29zZXIpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX2NsaWVudC5oaWRlQ29sb3JDaG9vc2VyKG1fY2xpZW50LmNs
aWVudEluZm8pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29sb3JDaG9vc2VyQ2xpZW50R3RrLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlckNsaWVudEd0ay5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNkMzc5NjE3NWJkNjhhMDE2NGIyNGQ0ZjE3OGRiYzdlZGIxYWExYjgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlckNs
aWVudEd0ay5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNh
bXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0
OgorICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAg
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisg
KiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkNvbG9yQ2hvb3Nl
ckNsaWVudEd0a19oCisjZGVmaW5lIFdlYkNvbG9yQ2hvb3NlckNsaWVudEd0a19oCisKKyNpbmNs
dWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIldLQ29sb3JD
aG9vc2VyQ2xpZW50R3RrLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBBUElPYmpl
Y3Q7CitjbGFzcyBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk7CitjbGFzcyBXZWJD
b2xvckNob29zZXJDbGllbnRHdGsgOiBwdWJsaWMgQVBJQ2xpZW50PFdLQ29sb3JDaG9vc2VyQ2xp
ZW50R3RrLCBrV0tDb2xvckNob29zZXJDbGllbnRHdGtDdXJyZW50VmVyc2lvbj4geworcHVibGlj
OgorICAgIHZvaWQgc2hvd0NvbG9yQ2hvb3Nlcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIFdlYkNv
bG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eSopOworICAgIHZvaWQgaGlkZUNvbG9yQ2hvb3Nl
cigpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisjZW5kaWYgLy8gV2ViQ29sb3JDaG9v
c2VyQ2xpZW50R3RrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZmNjlkMGVlMTU4ZTU5
ZTRkNWNjOGM3M2Q2MzIxNTRlOWVmY2RiZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsuY3BwCkBAIC0wLDAgKzEs
NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAq
ICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94eUd0ay5oIgorCisjaW5jbHVk
ZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHku
aCIKKyNpbmNsdWRlICJXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oIgorI2luY2x1
ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dl
YkNvbG9yQ2hvb3NlclByb3h5R3RrOjpXZWJDb2xvckNob29zZXJQcm94eUd0ayhXZWJQYWdlUHJv
eHkqIHBhZ2UsIEd0a1dpZGdldCogd2ViVmlldywgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvciwg
Y29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QpCisgICAgOiBXZWJDb2xvckNob29zZXJQcm94eShw
YWdlKQorICAgICwgbV9jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyKFdlYkNvbG9yUGlja2VyUmVz
dWx0TGlzdGVuZXJQcm94eTo6Y3JlYXRlKHBhZ2UpKQorICAgICwgbV93ZWJWaWV3KHdlYlZpZXcp
Cit7CisgICAgd2Via2l0V2ViVmlld0Jhc2VTaG93Q29sb3JDaG9vc2VyKFdFQktJVF9XRUJfVklF
V19CQVNFKG1fd2ViVmlldy5nZXQoKSksIGluaXRpYWxDb2xvciwgbV9jb2xvclBpY2tlclJlc3Vs
dExpc3RlbmVyLmdldCgpKTsKK30KKwordm9pZCBXZWJDb2xvckNob29zZXJQcm94eUd0azo6ZW5k
Q2hvb3NlcigpCit7CisgICAgd2Via2l0V2ViVmlld0Jhc2VIaWRlQ29sb3JDaG9vc2VyKFdFQktJ
VF9XRUJfVklFV19CQVNFKG1fd2ViVmlldy5nZXQoKSkpOworICAgIFdlYkNvbG9yQ2hvb3NlclBy
b3h5OjplbmRDaG9vc2VyKCk7Cit9CisKK3ZvaWQgV2ViQ29sb3JDaG9vc2VyUHJveHlHdGs6OnNl
dFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQoreworICAgIGlmICgh
bV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NsaWVudC0+ZGlkQ2hvb3NlQ29sb3Io
Y29sb3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9XZWJDb2xvckNob29zZXJQcm94eUd0ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyNjVkOWQyMGJkNDlhYWRh
NTBjN2U0MzkxZDU4MjdmMzFkYTljYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbG9yQ2hvb3NlclByb3h5R3RrLmgKQEAgLTAsMCArMSw2MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViQ29sb3JDaG9vc2VyUHJveHlHdGtfaAorI2RlZmluZSBXZWJD
b2xvckNob29zZXJQcm94eUd0a19oCisKKyNpbmNsdWRlICJXZWJDb2xvckNob29zZXJQcm94eS5o
IgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb2xvcjsKK2NsYXNzIEludFJlY3Q7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3MgV2Vi
Q29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5OworCitjbGFzcyBXZWJDb2xvckNob29zZXJQ
cm94eUd0ayA6ICBwdWJsaWMgV2ViQ29sb3JDaG9vc2VyUHJveHkgeworCitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViQ29sb3JDaG9vc2VyUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJv
eHkqIHBhZ2UsIEd0a1dpZGdldCogd2ViVmlldywgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRp
YWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbG9yQ2hvb3NlclByb3h5R3RrKHBhZ2UsIHdl
YlZpZXcsIGluaXRpYWxDb2xvciwgZWxlbWVudFJlY3QpKTsKKyAgICB9CisgICAgdm9pZCBlbmRD
aG9vc2VyKCk7CisgICAgdm9pZCBzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9y
Jik7CisKK3ByaXZhdGU6CisgICAgV2ViQ29sb3JDaG9vc2VyUHJveHlHdGsoV2ViUGFnZVByb3h5
KiwgR3RrV2lkZ2V0KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0Jik7CisgICAgUmVmUHRyPFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eT4gbV9j
b2xvclBpY2tlclJlc3VsdExpc3RlbmVyOworCisgICAgR1JlZlB0cjxHT2JqZWN0PiBtX3JlcXVl
c3Q7CisgICAgR1JlZlB0cjxHdGtXaWRnZXQ+IG1fd2ViVmlldzsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViQ29sb3JDaG9vc2VyUHJveHlHdGtfaAorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQgYi9Tb3VyY2Uv
YXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKaW5kZXggY2VlY2ZhMTA0ZmZhMWUyM2Fh
ZTVlZDQ0NmYwYmJmYjRmMGU5MTY3Zi4uYWMwNTAzOTAzM2E1ZTVmNGQyOGVhYjJjMTYwYTllNDI1
ZDIyZTg4MSAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVz
Lm00CisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNApAQCAtMTMz
LDcgKzEzMyw3IEBAICRzcmNkaXIvVG9vbHMvZ3RrL2dlbmVyYXRlLWZlYXR1cmUtZGVmaW5lcy1m
aWxlcyAkQ09ORklHVVJBQkxFX0ZFQVRVUkVfREVGSU5FUyBcCiAgICAgRU5BQkxFX0lGUkFNRV9T
RUFNTEVTUz0xIFwKICAgICBFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRT0wIFwKICAgICBFTkFCTEVf
SU5QVVRfU1BFRUNIPTAgXAotICAgIEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SPTAgXAorICAgIEVO
QUJMRV9JTlBVVF9UWVBFX0NPTE9SPTEgXAogICAgIEVOQUJMRV9JTlBVVF9UWVBFX0RBVEU9MCBc
CiAgICAgRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURT0wIFwKICAgICBFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMPTAgXApkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90
b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5k
ZXggOTA2OWNkZDlmNjlkNTY0NDVkYzUzZjNkMDM5MjkxMDZjYzYwYWU1Ny4uMzA5ZmVhZjY1MWZm
ZDQwYmQzMjUwOTFkOTZmZGViNWQ2OGU3NTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29s
cy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBA
IC0zMTUsNiArMzE1LDggQEAgX1pUVk43V2ViQ29yZTE0U3RhdGljTm9kZUxpc3RFOwogX1pON1dl
YkNvcmU2RWRpdG9yMjZ0b2dnbGVPdmVyd3JpdGVNb2RlRW5hYmxlZEV2OwogX1pOSzdXZWJDb3Jl
MTRGcmFtZVNlbGVjdGlvbjZib3VuZHNFYjsKIF9aTjdXZWJDb3JlMTBDbGllbnRSZWN0QzFFUktO
U185RmxvYXRSZWN0RTsKK19aTjdXZWJDb3JlNUNvbG9yQzFFUktOM1dURjZTdHJpbmdFOworX1pO
N1dlYkNvcmUxNkhUTUxJbnB1dEVsZW1lbnQyNXNlbGVjdENvbG9ySW5Db2xvckNob29zZXJFUktO
U181Q29sb3JFOwogCiBsb2NhbDoKIF9aKjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ZDI2N2UwNTU0ZjVlY2RhMmE3ZDVhNzIzMDNlOTdlNzNl
MmJkZjZlLi5jZjA4OGQxMTUyMDVmNjliZTllMGY4OWFiYmJlOGYyYTNkOGJkNTg3IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTItMTItMjAgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5n
LmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY29sb3IgaW5wdXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIGlucHV0IHR5
cGUgY29sb3IgaW4gZmVhdHVyZSBsaXN0LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJs
L0ZlYXR1cmVMaXN0LnBtOgorCiAyMDEzLTA1LTA2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbRmxha2luZXNzIERhc2hib2FyZF0gU3RvcCBkZWNvZGlu
ZyBTbm93TGVvcGFyZCBidWlsZGVyIG5hbWVzIGludG8gcGxhdGZvcm1zCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggOGJmNDMwMTBkODk5ZjUwYTk2YWYwNTUyZjRk
ODdlYmEyNjU2NWRkMS4uNTIzOTBhNjg3M2RhZjY4OThiYTU1ZmM4ZTYwMzg4N2VkZWQ2NDRjOCAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMjkzLDcgKzI5Myw3
IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOUFVUX1NQRUVD
SCIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRpbnB1dFNwZWVjaFN1cHBvcnQgfSwKIAogICAg
IHsgb3B0aW9uID0+ICJpbnB1dC10eXBlLWNvbG9yIiwgZGVzYyA9PiAiVG9nZ2xlIElucHV0IFR5
cGUgQ29sb3Igc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlBVVF9UWVBFX0NP
TE9SIiwgZGVmYXVsdCA9PiAoaXNCbGFja0JlcnJ5KCkgfHwgaXNFZmwoKSB8fCBpc1F0KCkpLCB2
YWx1ZSA9PiBcJGlucHV0VHlwZUNvbG9yU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFC
TEVfSU5QVVRfVFlQRV9DT0xPUiIsIGRlZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgpIHx8IGlzRWZs
KCkgfHwgaXNRdCgpIHx8IGlzR3RrKCkpLCB2YWx1ZSA9PiBcJGlucHV0VHlwZUNvbG9yU3VwcG9y
dCB9LAogCiAgICAgeyBvcHRpb24gPT4gImlucHV0LXR5cGUtZGF0ZSIsIGRlc2MgPT4gIlRvZ2ds
ZSBJbnB1dCBUeXBlIERhdGUgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlBV
VF9UWVBFX0RBVEUiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW5wdXRUeXBlRGF0ZVN1cHBv
cnQgfSwKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlYjMxY2EwMGY0
YWFjOTBmYmMyMDM0NmQzMjViNGExYzhmNDMxZWY2Li44ZjhiNDYwNmU1OGI2ZGQ4ZGY3ODUwMDc4
YTMwYzlkNjc0NTkxYWY5IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTItMTItMjAgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJA
c2lzYS5zYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY29sb3Ig
aW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
OTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZXhw
b3J0IFdlYkNvcmU6OkNvbG9yOjpDb2xvcihXVEY6OlN0cmluZyBjb25zdCYpIGFuZAorICAgICAg
ICBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKFdl
YkNvcmU6OkNvbG9yCisgICAgICAgIGNvbnN0JikKKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTMtMDUtMDQgIEFybmF1ZCBSZW5ldmllciAgPGEucmVu
ZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBhbGxvdyB1c2luZyB1bmF0dGFjaGVk
IGNhbnZhcyBmb3IgZHJhZyBpY29uLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203207</attachid>
            <date>2013-05-29 09:50:54 -0700</date>
            <delta_ts>2013-06-12 11:07:03 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>bug-98935-20130529094931.patch</filename>
            <type>text/plain</type>
            <size>44190</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDJjYWZiZDk2OGQxZWRm
OTJjYjFhN2FkMzI4M2IyMWYzNzZmZmQzMi4uZGQyNjlkYjlhYTE1Mzg1OGVjMzExODU0Y2RhNDMz
Yjk5NjhjMDkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTIwICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dU
S10gQWRkIHN1cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBpbnB1dCB0eXBlIGNvbG9yIGluIGZlYXR1cmUg
bGlzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmZlYXR1cmVzLmFtLmluOgorCiAyMDEzLTA1
LTA3ICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgc2hyaW5rIHJlcGFpbnQgcmVjdGFuZ2xlIHdoZW4gY2xpcCB3YXMgYXBwbGllZCB0byBj
YW52YXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggOGU1M2M1NzU2MzYxZWQ3NGUwZTNjY2NhZjhhY2Ez
ZDZjMmRiNjdmMi4uMjdjYjE0Zjk1ZmE4NDQwMDhiNjVkYTdiZDY5M2YyY2UxYjBkZGE1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEyLTMxICBBcm5hdWQgUmVuZXZp
ZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHN1
cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFN0dWIgaW1wbGVtZW50YXRpb24gb2YgQ2hyb21lQ2xpZW50OjpjcmVhdGVD
b2xvckNob29zZXIKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50
R3RrLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENocm9tZUNsaWVudCk6CisKIDIw
MTItMTAtMDEgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4K
IAogICAgICAgICBbR3RrXSB0b28gbG9uZyBmdW5jdGlvbiBpbiBhbmltYXRpb24gc2NyaXB0IGNh
dXNlIHJlcGFpbnQgdG8gbmV2ZXIgaGFwcGVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDNkYjBiYzFlZjBlYWNk
M2RkNTdjN2UzYzdmZDU0ODE4NTg4ZDdkYTMuLjQzZGY1NDIzMzlhMzkwNmI4Y2U4ZTY2MDZkZmEw
ZTkxYzQ1MzNmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OCBAQAorMjAxMi0xMi0yMCAgQXJu
YXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFtH
VEtdIEFkZCBzdXBwb3J0IGZvciBjb2xvciBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgaW5wdXQgY29sb3IgdHlwZSBmb3IgV2Vi
S2l0Mi4KKworICAgICAgICBJbXBsZW1lbnQgc2hvd0NvbG9yUGlja2VyIGFuZCBoaWRlQ29sb3JQ
aWNrZXIgVUkgY2xpZW50IGNhbGxiYWNrcy4KKworICAgICAgICBBZGQgYSBlbmRDb2xvckNob29z
ZXIgbWV0aG9kIHRvIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eSB0bworICAgICAg
ICBiZSBhYmxlIHRvIGNhbmNlbCB0aGUgcmVxdWVzdCB3aXRob3V0IHNlbGVjdGluZyBhIGNvbG9y
LgorCisgICAgICAgIFNpbWlsYXJseSB0byB3aGF0IGhhcHBlbnMgZm9yIGZpbGUgY2hvb3Nlciwg
d2hlbiBhIGNvbG9yIGNob29zZXIgaXMKKyAgICAgICAgbmVlZGVkLCB3ZSBlbWl0IGEgcnVuLWNv
bG9yLWNob29zZXIgc2lnbmFsIHdpdGggYQorICAgICAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0IG9iamVjdC4gSWYgdGhlIHNpZ25hbCBpcyBub3QgaGFuZGxlZCBieSB0aGUKKyAgICAgICAg
YXBwbGljYXRpb24sIHdlIHNob3cgYSBHdGtHdGtDb2xvckNob29zZXJEaWFsb2cuCisKKyAgICAg
ICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCBBUEkgYWxsb3dzIHRvIHJlYWQgY3VycmVudCBj
b2xvciAoZWl0aGVyCisgICAgICAgIGluaXRpYWwgY29sb3Igc2V0IGJ5IFdlYkNvcmUgb3IgbGF0
ZXIsIGNvbG9yIHNlbGVjdGVkIGJ5IHVzZXIpLCB0bworICAgICAgICBzZWxlY3QgYSBjb2xvciwg
b3IgdG8gY2FuY2VsIGEgcmVxdWVzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5j
cHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlKToK
KyAgICAgICAgKHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3REaXNwb3NlKToKKyAgICAgICAgKHdl
YmtpdENvbG9yQ2hvb3NlclJlcXVlc3RHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfY29s
b3JfY2hvb3Nlcl9yZXF1ZXN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X2NvbG9yX2No
b29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3IpOgorICAgICAgICAod2Via2l0X2NvbG9yX2Nob29z
ZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcik6CisgICAgICAgICh3ZWJraXRDb2xvckNob29z
ZXJSZXF1ZXN0Q3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAgICAoX1dlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3QpOgorICAgICAgICAoX1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3Bw
OgorICAgICAgICAoc2hvd0NvbG9yUGlja2VyKToKKyAgICAgICAgKGhpZGVDb2xvclBpY2tlcik6
CisgICAgICAgIChhdHRhY2hVSUNsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViVmlld1ByaXZhdGUp
OgorICAgICAgICAod2Via2l0V2ViVmlld0Nsb3NlQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKGNv
bG9yQ2hvb3NlckRpYWxvZ1Jlc3BvbnNlQ2FsbGJhY2spOgorICAgICAgICAod2Via2l0V2ViVmll
d1J1bkNvbG9yQ2hvb3Nlcik6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdCk6
CisgICAgICAgICh3ZWJraXRXZWJWaWV3U2hvd0NvbG9yQ2hvb3Nlcik6CisgICAgICAgICh3ZWJr
aXRXZWJWaWV3SGlkZUNvbG9yQ2hvb3Nlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5oOgorICAgICAgICAoX1dlYktpdFdlYlZpZXdDbGFzcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKGFzc2Vy
dENvbG9ySXNFcXVhbCk6CisgICAgICAgICh0ZXN0V2ViVmlld0NvbG9yQ2hvb3NlclJlcXVlc3Qp
OgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQ
cm94eTo6ZW5kQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5oOgorICAgICAgICAoV2Vi
Q29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5KToKKwogMjAxMy0wNS0yOCAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBGcmVlemUgd2hlbiBsb2FkaW5n
IGEgcGFydGljdWxhciBwYWdlIG9uIHdhc2hpbmd0b25wb3N0LmNvbSB3aXRoIE5ldHdvcmtQcm9j
ZXNzIGVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRHdGsuY3BwCmluZGV4IDg5MDZjNDNlZmZmMWE5NmI3MzEyNWViOTQzODdkZWZh
Zjc5ZWY2NmEuLjdkMmFjZDhjZjExZDJiYTBkNjQ0MGU4MWRkNTZlZTFlNTI1M2M0YTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3Rr
LmNwcApAQCAtODMsNiArODMsMTAgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorI2luY2x1ZGUgIkNvbG9yQ2hv
b3NlckNsaWVudC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTgzOSw2ICs4NDMsMTQgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OnJl
YWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90
KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xP
UikKK1Bhc3NPd25QdHI8Q29sb3JDaG9vc2VyPiBDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hv
b3NlcihDb2xvckNob29zZXJDbGllbnQqLCBjb25zdCBDb2xvciYpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgorCiB2b2lkIENocm9tZUNs
aWVudDo6cnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gcHJwRmls
ZUNob29zZXIpCiB7CiAgICAgR1JlZlB0cjxXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3Q+IHJlcXVl
c3QgPSBhZG9wdEdSZWYod2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2NyZWF0ZShwcnBGaWxl
Q2hvb3NlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuaAppbmRleCBjODJmNDA0ZWE3MmE1NDA5Zjc3YzYyOGNmNmNkN2M0YmNjZTk3
MjYzLi5iMjU3YTYwYWIyZWZhOTE4ZWNhMDI2ZTg3NjAyNTFiNzg5ZTJlNGIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAt
MzYsNiArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlldyBXZWJLaXRXZWJWaWV3
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CitjbGFzcyBD
b2xvcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTksNiArMTIwLDExIEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogI2VuZGlmCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBw
Q2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVh
Y2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3Qg
dG90YWxTcGFjZU5lZWRlZCk7CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICAg
ICAgdmlydHVhbCBQYXNzT3duUHRyPENvbG9yQ2hvb3Nlcj4gY3JlYXRlQ29sb3JDaG9vc2VyKENv
bG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IpOworI2VuZGlmCisK
ICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8Rmls
ZUNob29zZXI+KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3Qg
VmVjdG9yPFdURjo6U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IGM0NGE2NjFiNjFhZWQ2MDdhOGRiYzRhMDAyMDM3YzU4MTNkNDg1
NDcuLmZlODYyMmVmZWNhYjhjNWQ1M2UyYzY0MmQ2MWVlM2QyOTM2ZDkwZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtOTYsNiArOTYsNyBAQCB3ZWJraXQyX2hfYXBpICs9IFwK
IHdlYmtpdDJndGtfaF9hcGkgKz0gXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0QmFja0ZvcndhcmRMaXN0LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDb250ZXh0TWVudS5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENvbnRleHRNZW51QWN0aW9ucy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5oIFwKQEAgLTY1Nyw2ICs2NTgsOSBAQCB3ZWJraXQy
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJh
Y2tGb3J3YXJkTGlzdEl0ZW0uaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCBcCisJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHAgXAorCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Qu
aCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdFByaXZhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q29udGV4dE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRDb250ZXh0TWVudS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRDb250ZXh0TWVudVByaXZhdGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc5ZGY4ODM4ZTA2MmQ2OWM2NzUzNjg4OWQ0OTkyNThlMDhlZTE0MGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0LmNwcApAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJ
UyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaCIKKworI2lu
Y2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Db2xvci5oPgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKKy8qKgorICogU0VDVElPTjogV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dAorICogQFNob3J0X2Rlc2NyaXB0aW9uOiBBIHJlcXVlc3QgdG8gb3BlbiBhIGNvbG9yIGNob29z
ZXIKKyAqIEBUaXRsZTogV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAorICogQFNlZV9hbHNvOiAj
V2ViS2l0V2ViVmlldworICoKKyAqIFdoZW5ldmVyIHRoZSB1c2VyIGludGVyYWN0cyB3aXRoIGFu
ICZsdDtpbnB1dCB0eXBlPSdjb2xvcicgLyZndDsKKyAqIEhUTUwgZWxlbWVudCwgV2ViS2l0IHdp
bGwgbmVlZCB0byBzaG93IGEgZGlhbG9nIHRvIGNob29zZSBhIGNvbG9yLiBGb3IgdGhhdAorICog
dG8gaGFwcGVuIGluIGEgZ2VuZXJhbCB3YXksIGluc3RlYWQgb2YganVzdCBvcGVuaW5nIGEgI0d0
a0NvbG9yQ2hvb3NlcgorICogKHdoaWNoIG1pZ2h0IGJlIG5vdCBkZXNpcmFibGUgaW4gc29tZSBj
YXNlcywgd2hpY2ggY291bGQgcHJlZmVyIHRvIHVzZSB0aGVpcgorICogb3duIGNvbG9yIGNob29z
ZXIgZGlhbG9nKSwgV2ViS2l0IHdpbGwgZmlyZSB0aGUKKyAqICNXZWJLaXRXZWJWaWV3OjpydW4t
Y29sb3ItY2hvb3NlciBzaWduYWwgd2l0aCBhICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Cisg
KiBvYmplY3QsIHdoaWNoIHdpbGwgYWxsb3cgdGhlIGNsaWVudCBhcHBsaWNhdGlvbiB0byBzcGVj
aWZ5IHRoZSBjb2xvciB0byBiZQorICogc2VsZWN0ZWQsIHRvIGluc3BlY3QgdGhlIGRldGFpbHMg
b2YgdGhlIHJlcXVlc3QgKGUuZy4gdG8gZ2V0IGluaXRpYWwgY29sb3IpCisgKiBhbmQgdG8gY2Fu
Y2VsIHRoZSByZXF1ZXN0LCBpbiBjYXNlIG5vdGhpbmcgd2FzIHNlbGVjdGVkLgorICoKKyAqIElu
IGNhc2UgdGhlIGNsaWVudCBhcHBsaWNhdGlvbiBkb2VzIG5vdCB3aXNoIHRvIGhhbmRsZSB0aGlz
IHNpZ25hbCwKKyAqIFdlYktpdCB3aWxsIHByb3ZpZGUgYSBkZWZhdWx0IGhhbmRsZXIgd2hpY2gg
d2lsbCBhc3luY2hyb25vdXNseSBydW4KKyAqIGEgcmVndWxhciAjR3RrQ29sb3JDaG9vc2VyIGZv
ciB0aGUgdXNlciB0byBpbnRlcmFjdCB3aXRoLgorICovCisKK3N0cnVjdCBfV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdFByaXZhdGUgeworICAgIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQ
cm94eSogbGlzdGVuZXI7CisgICAgR2RrUkdCQSBjb2xvcjsKKyAgICBib29sIGhhbmRsZWRSZXF1
ZXN0OworfTsKKworV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Qs
IHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QpCisKK2VudW0gewor
ICAgIFBST1BfMCwKKworICAgIFBST1BfQ09MT1IKK307CisKK3N0YXRpYyB2b2lkIHdlYmtpdENv
bG9yQ2hvb3NlclJlcXVlc3REaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKK3sgICAgCisgICAgV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9DT0xPUl9DSE9PU0VSX1JF
UVVFU1Qob2JqZWN0KTsKKworICAgIGlmICghcmVxdWVzdC0+cHJpdi0+aGFuZGxlZFJlcXVlc3Qp
IHsKKyAgICAgICAgcmVxdWVzdC0+cHJpdi0+aGFuZGxlZFJlcXVlc3QgPSB0cnVlOworICAgICAg
ICByZXF1ZXN0LT5wcml2LT5saXN0ZW5lci0+ZW5kQ29sb3JDaG9vc2VyKCk7CisgICAgfQorfQor
CitzdGF0aWMgdm9pZCB3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0R2V0UHJvcGVydHkoR09iamVj
dCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFt
U3BlYykKK3sKKyAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lU
X0NPTE9SX0NIT09TRVJfUkVRVUVTVChvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9wSWQpIHsK
KyAgICBjYXNlIFBST1BfQ09MT1I6CisgICAgICAgIGdfdmFsdWVfc2V0X2JveGVkKHZhbHVlLCAm
cmVxdWVzdC0+cHJpdi0+Y29sb3IpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBh
cmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9y
ZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdENsYXNzKiByZXF1ZXN0
Q2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNT
KHJlcXVlc3RDbGFzcyk7CisgICAgb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdENv
bG9yQ2hvb3NlclJlcXVlc3RHZXRQcm9wZXJ0eTsKKyAgICBvYmplY3RDbGFzcy0+ZGlzcG9zZSA9
IHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3REaXNwb3NlOworCisgICAgLyoqCisgICAgICogV2Vi
S2l0V2ViVmlldzpjb2xvcjoKKyAgICAgKgorICAgICAqIFRoZSAjR2RrUkdCQSBjb2xvciBvZiB0
aGUgcmVxdWVzdAorICAgICAqCisgICAgICogU2luY2U6IDIuMgorICAgICAqLworICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfQ09M
T1IsCisgICAgICAgIGdfcGFyYW1fc3BlY19ib3hlZCgiY29sb3IiLAorICAgICAgICAgICAgXygi
Q3VycmVudCBjb2xvciIpLAorICAgICAgICAgICAgXygiVGhlIGN1cnJlbnQgY29sb3IgZm9yIHRo
ZSByZXF1ZXN0IiksCisgICAgICAgICAgICBHREtfVFlQRV9SR0JBLAorICAgICAgICAgICAgV0VC
S0lUX1BBUkFNX1JFQURBQkxFKSk7Cit9CisKKy8qKgorICogd2Via2l0X2NvbG9yX2Nob29zZXJf
cmVxdWVzdF9zZWxlY3RfY29sb3I6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0RmlsZUNob29zZXJS
ZXF1ZXN0CisgKiBAY29sb3I6IGEgcG9pbnRlciAjR2RrUkdCQQorICoKKyAqIEFzayBXZWJLaXQg
dG8gc2VsZWN0IGNvbG9yIGFuZCBjb21wbGV0ZSB0aGUgcmVxdWVzdC4KKyAqCisgKiBTaW5jZTog
Mi4yCisgKi8KK3ZvaWQgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3Io
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgR2RrUkdCQSogY29sb3Ip
Cit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNU
KHJlcXVlc3QpKTsKKyAgICBpZiAocmVxdWVzdC0+cHJpdi0+aGFuZGxlZFJlcXVlc3QpCisgICAg
ICAgIHJldHVybjsKKyAgICByZXF1ZXN0LT5wcml2LT5oYW5kbGVkUmVxdWVzdCA9IHRydWU7CisK
KyAgICByZXF1ZXN0LT5wcml2LT5jb2xvciA9ICpjb2xvcjsKKyAgICByZXF1ZXN0LT5wcml2LT5s
aXN0ZW5lci0+c2V0Q29sb3IoQ29sb3IocmVxdWVzdC0+cHJpdi0+Y29sb3IpLnNlcmlhbGl6ZWQo
KSk7Cit9CisKKy8qKgorICogd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVu
dF9jb2xvcjoKKyAqIEByZXF1ZXN0OiBhICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0CisgKgor
ICogV2hpbGUgbm8gY29sb3IgaGFzIGJlZW4gc2VsZWN0ZWQsIGl0IGlzIHRoZSBpbml0aWFsIHZh
bHVlIGRlZmluZWQgYnkgV2ViS2l0LgorICogV2hlbiBhIGNvbG9yIGhhcyBiZWVuIHNlbGVjdGVk
LCB0aGlzIGJlY29tZXMgdGhlIHNlbGVjdGVkIHZhbHVlLgorICoKKyAqIFJldHVybnM6IHRoZSBj
dXJyZW50IGNvbG9yIG9mIHJlcXVlc3QuIAorICoKKyAqIFNpbmNlOiAyLjIKKyAqLworR2RrUkdC
QSogd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcihXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1QocmVxdWVzdCksIE5VTEwpOworCisgICAg
cmV0dXJuICZyZXF1ZXN0LT5wcml2LT5jb2xvcjsKK30KKworV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCogd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdENyZWF0ZShjb25zdCBDb2xvciYgaW5pdGlh
bENvbG9yLCBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkqIGxpc3RlbmVyKQorewor
ICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRfQ09MT1JfQ0hP
T1NFUl9SRVFVRVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVF
U1QsIE5VTEwpKTsKKyAgICByZXF1ZXN0LT5wcml2LT5saXN0ZW5lciA9IGxpc3RlbmVyOworICAg
IHJlcXVlc3QtPnByaXYtPmNvbG9yID0gaW5pdGlhbENvbG9yOworICAgIHJldHVybiByZXF1ZXN0
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzMGI3NmEzNDQzY2I4YzQw
NjU4NTJkMWU4NWNhMTQ1OWY3YTQxYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgKQEAgLTAsMCAr
MSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmljcwor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgor
ICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRl
ZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQy
Lmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5kaWYKKworI2lmbmRlZiBXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0X2gKKyNkZWZpbmUgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdF9o
CisKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVz
Lmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VS
X1JFUVVFU1QgICAgICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlw
ZSgpKQorI2RlZmluZSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iaikgICAgICAgICAg
ICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX0NPTE9SX0NI
T09TRVJfUkVRVUVTVCwgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCkpCisjZGVmaW5lIFdFQktJ
VF9DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xB
U1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNULCBXZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfQ09MT1JfQ0hP
T1NFUl9SRVFVRVNUKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9i
aiksIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9J
U19DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1Nf
VFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKSkKKyNkZWZp
bmUgV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9J
TlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVF
U1QsIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICAgICAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcyAgIFdlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0UHJpdmF0ZSBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZTsKKwor
c3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IHsKKyAgICBHT2JqZWN0IHBhcmVudDsK
KworICAgIC8qPCBwcml2YXRlID4qLworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2
YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3Mg
eworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBl
Cit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF90eXBlICAgICAgICAgICAodm9pZCk7
CisKK1dFQktJVF9BUEkgR2RrUkdCQSAqCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dl
dF9jdXJyZW50X2NvbG9yICAoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCAqcmVxdWVzdCk7CisK
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29s
b3IgICAgICAgKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgKnJlcXVlc3QsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdka1JHQkEgICAg
ICAgICAgICAgKmNvbG9yKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdFByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNzhhNmM3ZGNlMmQxZDU3OTViYzlk
NjhmYWIwMWFiZWFhZTYyZjZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaApAQCAtMCww
ICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEyLCBTYW1zdW5nIEVsZWN0cm9uaWNz
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
IG5vdGljZSwgdGhpcworICogICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
CisgKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0
ZV9oCisjZGVmaW5lIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlX2gKKworI2luY2x1
ZGUgIldlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Db2xvci5oPgorCitXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiB3ZWJr
aXRDb2xvckNob29zZXJSZXF1ZXN0Q3JlYXRlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgV2ViS2l0
OjpXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkqKTsKKworI2VuZGlmIC8vIFdlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCAyMzhlZTlhNmQwZWEwN2Jl
ZjZiNTU2ZmM2OGJjYmRjZjEyOGViODhjLi4zZjIzYjc1MzUzNDQ5ODkzODMzZTMwNjYwYzAwOGZj
MTNjOGQ5Nzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VUlDbGllbnQuY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV2ViS2l0VUlDbGllbnQuaCIKIAorI2luY2x1ZGUgIldlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQ
cml2YXRlLmgiCkBAIC0xNjUsNiArMTY2LDE2IEBAIHN0YXRpYyB2b2lkIHJ1bk1vZGFsKFdLUGFn
ZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogICAgIHdlYmtpdFdlYlZpZXdSdW5B
c01vZGFsKFdFQktJVF9XRUJfVklFVyhjbGllbnRJbmZvKSk7CiB9CiAKK3N0YXRpYyB2b2lkIHNo
b3dDb2xvclBpY2tlcihXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIGluaXRpYWxDb2xvciwgV0tDb2xv
clBpY2tlclJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworICAgIHdlYmtpdFdlYlZpZXdTaG93Q29sb3JDaG9vc2VyKFdFQktJVF9XRUJfVklFVyhj
bGllbnRJbmZvKSwgV2ViQ29yZTo6Q29sb3IodG9XVEZTdHJpbmcoaW5pdGlhbENvbG9yKSksIHRv
SW1wbChsaXN0ZW5lcikpOworfQorCitzdGF0aWMgdm9pZCBoaWRlQ29sb3JQaWNrZXIoV0tQYWdl
UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHdlYmtpdFdlYlZpZXdIaWRlQ29s
b3JDaG9vc2VyKFdFQktJVF9XRUJfVklFVyhjbGllbnRJbmZvKSk7Cit9CisKIHZvaWQgYXR0YWNo
VUlDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBXS1BhZ2VVSUNs
aWVudCB3a1VJQ2xpZW50ID0gewpAQCAtMjEzLDggKzIyNCw4IEBAIHZvaWQgYXR0YWNoVUlDbGll
bnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAgICAgbW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQsCiAgICAgICAgIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LAogICAgICAgICAwLCAvLyB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQKLSAg
ICAgICAgMCwgLy8gc2hvd0NvbG9yUGlja2VyCi0gICAgICAgIDAsIC8vIGhpZGVDb2xvclBpY2tl
cgorICAgICAgICBzaG93Q29sb3JQaWNrZXIsCisgICAgICAgIGhpZGVDb2xvclBpY2tlciwKICAg
ICAgICAgMCwgLy8gcGx1Z2luTG9hZFBvbGljeQogICAgIH07CiAgICAgV0tQYWdlUmVmIHdrUGFn
ZSA9IHRvQVBJKHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3
ZWJWaWV3KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcAppbmRleCA3NTBjZTMwYTExZjExZDEzN2VjN2U2OWZkMjc1NTE3ZmJiNjU3
ZTU3Li5hOTlhNmQ2MGY0ZThlNDBkNjU5YzYwNjUyNDIwM2FhNTlhMWFlZmZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAt
MjQsMTEgKzI0LDEzIEBACiAjaW5jbHVkZSAiSW1hZ2VPcHRpb25zLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1DZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIK
KyNpbmNsdWRlICJXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1EYXRh
LmgiCiAjaW5jbHVkZSAiV2ViRGF0YS5oIgogI2luY2x1ZGUgIldlYktpdEF1dGhlbnRpY2F0aW9u
RGlhbG9nLmgiCiAjaW5jbHVkZSAiV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0Q29udGV4dE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXRDb250ZXh0TWVudUl0ZW1Q
cml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29udGV4dE1lbnVQcml2YXRlLmgiCkBAIC0xMTAs
NiArMTEyLDkgQEAgZW51bSB7CiAKICAgICBSVU5fRklMRV9DSE9PU0VSLAogCisgICAgUlVOX0NP
TE9SX0NIT09TRVIsCisgICAgQ0xPU0VfQ09MT1JfQ0hPT1NFUiwKKwogICAgIENPTlRFWFRfTUVO
VSwKICAgICBDT05URVhUX01FTlVfRElTTUlTU0VELAogCkBAIC0xODcsNiArMTkyLDkgQEAgc3Ry
dWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgdW5zaWduZWQgbG9uZyBmYXZpY29uQ2hh
bmdlZEhhbmRsZXJJRDsKIAogICAgIFNuYXBzaG90UmVzdWx0c01hcCBzbmFwc2hvdFJlc3VsdHNN
YXA7CisKKyAgICBHdGtXaWRnZXQqIGNvbG9yQ2hvb3NlckRpYWxvZzsKKyAgICBHUmVmUHRyPFdl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3Q+IGNvbG9yQ2hvb3NlclJlcXVlc3Q7CiB9OwogCiBzdGF0
aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CkBAIC00NDUsNiArNDUzLDQ2
IEBAIHN0YXRpYyB2b2lkIGZpbGVDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFjayhHdGtEaWFs
b2cqIGRpYWxvZywgZ2ludCByZXNwb25zZUlECiAgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19X
SURHRVQoZGlhbG9nKSk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDbG9zZUNvbG9y
Q2hvb3NlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGlmICh3ZWJWaWV3LT5wcml2
LT5jb2xvckNob29zZXJSZXF1ZXN0KQorICAgICAgICB3ZWJWaWV3LT5wcml2LT5jb2xvckNob29z
ZXJSZXF1ZXN0ID0gMDsKKworICAgIGlmICh3ZWJWaWV3LT5wcml2LT5jb2xvckNob29zZXJEaWFs
b2cpIHsKKyAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KHdlYlZpZXctPnByaXYtPmNvbG9yQ2hv
b3NlckRpYWxvZyk7CisgICAgICAgIHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3NlckRpYWxvZyA9
IDA7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBjb2xvckNob29zZXJEaWFsb2dSZXNwb25zZUNh
bGxiYWNrKEd0a1dpZGdldCogZGlhbG9nLCBnaW50IHJlc3BvbnNlSUQsIFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCit7CisgICAgaWYgKHJlc3BvbnNlSUQgPT0gR1RLX1JFU1BPTlNFX09LKSB7Cisg
ICAgICAgIEdka1JHQkEgY29sb3I7CisgICAgICAgIGd0a19jb2xvcl9jaG9vc2VyX2dldF9yZ2Jh
KEdUS19DT0xPUl9DSE9PU0VSKGRpYWxvZyksICZjb2xvcik7CisgICAgICAgIHdlYmtpdF9jb2xv
cl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yKHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3Nl
clJlcXVlc3QuZ2V0KCksICZjb2xvcik7CisgICAgfSBlbHNlCisgICAgICAgIHdlYmtpdFdlYlZp
ZXdDbG9zZUNvbG9yQ2hvb3Nlcih3ZWJWaWV3KTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtp
dFdlYlZpZXdSdW5Db2xvckNob29zZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBHdGtXaWRnZXQqIHRvcGxldmVsID0g
Z3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3KSk7CisgICAgaWYgKCF3
aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3codG9wbGV2ZWwpKQorICAgICAgICB0b3BsZXZl
bCA9IDA7CisKKyAgICBHdGtXaWRnZXQqIGRpYWxvZyA9ICBndGtfY29sb3JfY2hvb3Nlcl9kaWFs
b2dfbmV3KF8oIlNlbGVjdCBDb2xvciIpLCB0b3BsZXZlbCA/IEdUS19XSU5ET1codG9wbGV2ZWwp
IDogMCk7CisKKyAgICBndGtfY29sb3JfY2hvb3Nlcl9zZXRfcmdiYShHVEtfQ09MT1JfQ0hPT1NF
UihkaWFsb2cpLCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9jdXJyZW50X2NvbG9y
KHJlcXVlc3QpKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCAicmVzcG9uc2UiLCBH
X0NBTExCQUNLKGNvbG9yQ2hvb3NlckRpYWxvZ1Jlc3BvbnNlQ2FsbGJhY2spLCB3ZWJWaWV3KTsK
KyAgICBndGtfd2lkZ2V0X3Nob3coZGlhbG9nKTsKKworICAgIHdlYlZpZXctPnByaXYtPmNvbG9y
Q2hvb3NlckRpYWxvZyA9IGRpYWxvZzsKKyAgICB3ZWJWaWV3LT5wcml2LT5jb2xvckNob29zZXJS
ZXF1ZXN0ID0gcmVxdWVzdDsKKworICAgIHJldHVybiBUUlVFOworfQorCiBzdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0V2ViVmlld1J1bkZpbGVDaG9vc2VyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdl
YktpdEZpbGVDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBHdGtXaWRnZXQqIHRvcGxl
dmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3KSk7CkBAIC02
MDUsNiArNjUzLDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2Vi
S2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgd2ViVmlld0NsYXNzLT5kZWNpZGVf
cG9saWN5ID0gd2Via2l0V2ViVmlld0RlY2lkZVBvbGljeTsKICAgICB3ZWJWaWV3Q2xhc3MtPnBl
cm1pc3Npb25fcmVxdWVzdCA9IHdlYmtpdFdlYlZpZXdQZXJtaXNzaW9uUmVxdWVzdDsKICAgICB3
ZWJWaWV3Q2xhc3MtPnJ1bl9maWxlX2Nob29zZXIgPSB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29z
ZXI7CisgICAgd2ViVmlld0NsYXNzLT5ydW5fY29sb3JfY2hvb3NlciA9IHdlYmtpdFdlYlZpZXdS
dW5Db2xvckNob29zZXI7CisgICAgd2ViVmlld0NsYXNzLT5jbG9zZV9jb2xvcl9jaG9vc2VyID0g
d2Via2l0V2ViVmlld0Nsb3NlQ29sb3JDaG9vc2VyOwogCiAgICAgLyoqCiAgICAgICogV2ViS2l0
V2ViVmlldzp3ZWItY29udGV4dDoKQEAgLTEyMjUsNiArMTI3NSw1NiBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFz
cykKICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAxLCAvKiBudW1iZXIgb2Yg
cGFyYW1ldGVycyAqLwogICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfRklMRV9DSE9P
U0VSX1JFUVVFU1QpOwogCisgICAgIC8qKgorICAgICAgKiBXZWJLaXRXZWJWaWV3OjpydW4tY29s
b3ItY2hvb3NlcjoKKyAgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hp
Y2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICAqIEByZXF1ZXN0OiBhICNXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0CisgICAgICAqCisgICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQg
d2hlbiB0aGUgdXNlciBpbnRlcmFjdHMgd2l0aCBhICZsdDtpbnB1dAorICAgICAgKiB0eXBlPSdj
b2xvcicgLyZndDsgSFRNTCBlbGVtZW50LCByZXF1ZXN0aW5nIGZyb20gV2ViS2l0IHRvIHNob3cK
KyAgICAgICogYSBkaWFsb2cgdG8gc2VsZWN0IGEgY29sb3IuIFRvIGxldCB0aGUgYXBwbGljYXRp
b24ga25vdyB0aGUgZGV0YWlscyBvZgorICAgICAgKiB0aGUgY29sb3IgY2hvb3NlciwgYXMgd2Vs
bCBhcyB0byBhbGxvdyB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIHRvIGVpdGhlcgorICAgICAgKiBj
YW5jZWwgdGhlIHJlcXVlc3Qgb3IgcGVyZm9ybSBhbiBhY3R1YWwgY29sb3Igc2VsZWN0aW9uLCB0
aGUgc2lnbmFsIHdpbGwKKyAgICAgICogcGFzcyBhbiBpbnN0YW5jZSBvZiB0aGUgI1dlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QgaW4gdGhlIEByZXF1ZXN0CisgICAgICAqIGFyZ3VtZW50LgorICAg
ICAgKgorICAgICAgKiBUaGUgZGVmYXVsdCBzaWduYWwgaGFuZGxlciB3aWxsIGFzeW5jaHJvbm91
c2x5IHJ1biBhIHJlZ3VsYXIKKyAgICAgICogI0d0a0NvbG9yQ2hvb3NlciBmb3IgdGhlIHVzZXIg
dG8gaW50ZXJhY3Qgd2l0aC4KKyAgICAgICoKKyAgICAgICogUmV0dXJuczogJVRSVUUgdG8gc3Rv
cCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4KKyAgICAg
ICogICAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgorICAgICAgKgorICAg
ICAgKi8KKyAgICBzaWduYWxzW1JVTl9DT0xPUl9DSE9PU0VSXSA9CisgICAgICAgIGdfc2lnbmFs
X25ldygicnVuLWNvbG9yLWNob29zZXIiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mo
d2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAg
ICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZpZXdDbGFzcywgcnVuX2NvbG9yX2Nob29zZXIp
LAorICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCAwIC8qIGFj
Y3VtdWxhdG9yIGRhdGEgKi8sCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19P
QkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwgLyogbnVtYmVyIG9mIHBhcmFt
ZXRlcnMgKi8KKyAgICAgICAgICAgIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCk7
CisKKyAgICAgLyoqCisgICAgICAqIFdlYktpdFdlYlZpZXc6OmNsb3NlLWNvbG9yLWNob29zZXI6
CisgICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWdu
YWwgaXMgZW1pdHRlZAorICAgICAgKgorICAgICAgKiBFbWl0dGVkIHdoZW4gY29sb3IgcGlja2Vy
IG11c3QgYmUgY2xvc2VkLiBUaGlzIGhhcHBlbnMgZm9yIGV4YW1wbGUgaWYgdGhlCisgICAgICAq
IHBhZ2UgdHJpZ2dlcmluZyB0aGUgcmVxdWVzdCB1bmxvYWRzIGJlZm9yZSB0aGUgcmVxdWVzdCBp
cyBjb21wbGV0ZWQuCisgICAgICAqCisgICAgICAqIFJldHVybnM6ICVUUlVFIHRvIHN0b3Agb3Ro
ZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUgZXZlbnQuCisgICAgICAqICAg
JUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4KKyAgICAgICoKKyAgICAgICov
CisgICAgc2lnbmFsc1tDTE9TRV9DT0xPUl9DSE9PU0VSXSA9CisgICAgICAgIGdfc2lnbmFsX25l
dygiY2xvc2UtY29sb3ItY2hvb3NlciIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3
ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAg
ICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBjbG9zZV9jb2xvcl9jaG9vc2Vy
KSwKKyAgICAgICAgICAgIDAsIDAsCisgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9J
RF9fVk9JRCwKKyAgICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsKKwogICAgIC8qKgogICAgICAq
IFdlYktpdFdlYlZpZXc6OmNvbnRleHQtbWVudToKICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2Vi
S2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKQEAgLTE2NTMsNiArMTc1
MywyMSBAQCB2b2lkIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0RmlsZUNob29zZQogICAgIGdfc2lnbmFsX2VtaXQod2ViVmll
dywgc2lnbmFsc1tSVU5fRklMRV9DSE9PU0VSXSwgMCwgcmVxdWVzdCwgJnJldHVyblZhbHVlKTsK
IH0KIAorYm9vbCB3ZWJraXRXZWJWaWV3U2hvd0NvbG9yQ2hvb3NlcihXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBjb25zdCBDb2xvciYgY29sb3IsIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQ
cm94eSogbGlzdGVuZXIpCit7CisgICAgR1JlZlB0cjxXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RDcmVhdGUoY29s
b3IsIGxpc3RlbmVyKSk7CisKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25h
bF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbUlVOX0NPTE9SX0NIT09TRVJdLCAwLCByZXF1ZXN0Lmdl
dCgpLCAmcmV0dXJuVmFsdWUpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCB3
ZWJraXRXZWJWaWV3SGlkZUNvbG9yQ2hvb3NlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQorewor
ICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2ln
bmFsc1tDTE9TRV9DT0xPUl9DSE9PU0VSXSwgMCwgJnJldHVyblZhbHVlKTsKK30KKwogc3RhdGlj
IGJvb2wgd2Via2l0V2ViVmlld1Nob3VsZFNob3dJbnB1dE1ldGhvZHNNZW51KFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCiB7CiAgICAgR3RrU2V0dGluZ3MqIHNldHRpbmdzID0gZ3RrX3dpZGdldF9n
ZXRfc2V0dGluZ3MoR1RLX1dJREdFVCh3ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYjIzZDdmZmIxM2EwOGYwOTU0
ZWNhMzU0Y2U4NmVjNTcwNzNjYTFkNy4uZmRiMjU0NDZmZTkwNjBmMmU0OTNkY2E0ZjhkNjBjMzNh
MjRhNDlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
QmFzZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QmFja0ZvcndhcmRMaXN0Lmg+CiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGaWxlQ2hvb3Nl
clJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZpbmRDb250cm9sbGVyLmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QuaD4KQEAgLTIzMSw2
ICsyMzIsOSBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgZ2Jvb2xlYW4gICAo
KiBsZWF2ZV9mdWxsc2NyZWVuKSAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAg
ICp3ZWJfdmlldyk7CiAgICAgZ2Jvb2xlYW4gICAoKiBydW5fZmlsZV9jaG9vc2VyKSAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3Qg
ICAgKnJlcXVlc3QpOworICAgIGdib29sZWFuICAgKCogcnVuX2NvbG9yX2Nob29zZXIpICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dCAgICpyZXF1ZXN0KTsKKyAgICB2b2lkICAgICAgICgqIGNsb3NlX2NvbG9yX2Nob29zZXIpICAg
ICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKICAgICBnYm9vbGVh
biAgICgqIGNvbnRleHRfbWVudSkgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdENvbnRleHRNZW51ICAgICAgICAgICAqY29udGV4dF9tZW51LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka0V2ZW50ICAgICAgICAg
ICAgICAgICAgICAqZXZlbnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAppbmRleCBlYjFmMjdkYjI5OGNhZTM4Nzgx
YjVkYjQyNDhhM2Q2Yjg3ZGE0YmExLi4yYTUyZDM3NjM1NGEzMTY3MjdjNTI0ZDkyNzZlN2Q1YTAx
ZmZlOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdQcml2YXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIldl
YkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
Q29sb3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHZvaWQgd2Via2l0V2Vi
Vmlld0xvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZlbnQpOwpAQCAtNTAs
NiArNTEsOCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdNb3VzZVRhcmdldENoYW5nZWQoV2ViS2l0V2Vi
VmlldyosIFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdCosCiB2b2lkIHdlYmtpdFdlYlZpZXdQcmlu
dEZyYW1lKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqKTsKIHZvaWQgd2Vi
a2l0V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6V2Vi
RnJhbWVQcm94eSosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV2ViS2l0VVJJUmVxdWVz
dCopOwogdm9pZCB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXJSZXF1ZXN0KFdlYktpdFdlYlZp
ZXcqLCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QqKTsKK2Jvb2wgd2Via2l0V2ViVmlld1Nob3dD
b2xvckNob29zZXIoV2ViS2l0V2ViVmlldyosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgV2ViS2l0
OjpXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkqKTsKK3ZvaWQgd2Via2l0V2ViVmll
d0hpZGVDb2xvckNob29zZXIoV2ViS2l0V2ViVmlldyopOwogV2ViS2l0V2ViUmVzb3VyY2UqIHdl
YmtpdFdlYlZpZXdHZXRMb2FkaW5nV2ViUmVzb3VyY2UoV2ViS2l0V2ViVmlldyosIHVpbnQ2NF90
IHJlc291cmNlSWRlbnRpZmllcik7CiB2b2lkIHdlYktpdFdlYlZpZXdEaWRSZWNlaXZlU25hcHNo
b3QoV2ViS2l0V2ViVmlldyosIHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYktpdDo6V2ViSW1hZ2Uq
KTsKIHZvaWQgd2Via2l0V2ViVmlld1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZShXZWJLaXRXZWJW
aWV3KiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCmlu
ZGV4IDJmYTdlYmFjZmRjNjI3ZmIyNDA5NGYwMGJlNmI3MTJmOGQyZDQzY2IuLmFlMjQ1Yjk3YzRi
YWVlYzI1NGJlNDc1MTZmOTkzNzU4ODhmNmQ5NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAt
MzAsNiArMzAsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXZWJSZXNvdXJj
ZS54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0RXJyb3IueG1sIi8+CiAg
ICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEZhdmljb25EYXRhYmFzZS54bWwiLz4KKyAg
ICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC54bWwiLz4K
ICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LnhtbCIv
PgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRGaW5kQ29udHJvbGxlci54bWwiLz4K
ICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0Q29va2llTWFuYWdlci54bWwiLz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dl
YmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IGYyODBjNjJkZjI5ZjI2YjMyMjYyY2RhZGYyZThk
YTMzYzFkOWI5OTAuLjljNDIzM2VkMzkyZTU4YjA2NDExNjE2YjZjMzhiZjRkNzk1NDA1YzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtNjg3LDYgKzY4NywyNiBAQCB3ZWJraXRfZmls
ZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+Cis8RklM
RT5XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PC9GSUxFPgorV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdAord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcgord2Vi
a2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3IKKworPFNVQlNFQ1RJT04gU3Rh
bmRhcmQ+CitXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MKK1dFQktJVF9UWVBFX0NPTE9S
X0NIT09TRVJfUkVRVUVTVAorV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVAorV0VCS0lUX0lT
X0NPTE9SX0NIT09TRVJfUkVRVUVTVAorV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVF9DTEFT
UworV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVF9DTEFTUworV0VCS0lUX0NPTE9SX0NI
T09TRVJfUkVRVUVTVF9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dl
dF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0RmluZENvbnRyb2xs
ZXI8L0ZJTEU+CiBXZWJLaXRGaW5kQ29udHJvbGxlcgogV2ViS2l0RmluZE9wdGlvbnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50
eXBlcyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50
eXBlcwppbmRleCA1ZDk3ZjY5YmVkNWRkN2YzYTc2MTFhOGRhOWRmZTc4ODNmZGE0NDQ1Li5hZjU3
N2FiN2U4OGYxOWY3MmViMGJiMzE5ZTYyMGI3NzJmNWVjZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCkBAIC0y
NCwzICsyNCw0IEBAIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfdHlwZQogd2Via2l0X3dl
Yl92aWV3X2dyb3VwX2dldF90eXBlCiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfdHlwZQogd2Vi
a2l0X3dlYl9wYWdlX2dldF90eXBlCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF90
eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9U
ZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggMDZiNjlmNGU2NjMxNjNhN2ExMTAyOWJj
ZDdhNTA3ZGQ0NTJmNmU5Yy4uN2U1YmNlNmI5MzIzOWE0NWUwNGIxMGE1YzYyODFjZTM3YjlhZTU0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVz
dFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMjYsNiArMjYsMTUgQEAKICNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCitzdGF0aWMgdm9pZCBhc3NlcnRDb2xvcklzRXF1YWwoY29uc3QgR2RrUkdCQSogY29sb3Is
IGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhhKQoreyAgICAK
KyAgICBnX2Fzc2VydChjb2xvcik7CisgICAgZ19hc3NlcnRfY21wZmxvYXQoY29sb3ItPnJlZCwg
PT0sIHJlZCk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQoY29sb3ItPmdyZWVuLCA9PSwgZ3JlZW4p
OworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLT5ibHVlLCA9PSwgYmx1ZSk7CisgICAgZ19h
c3NlcnRfY21wZmxvYXQoY29sb3ItPmFscGhhLCA9PSwgYWxwaGEpOworfQorCiBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld0RlZmF1bHRDb250ZXh0KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQogewogICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh0ZXN0LT5t
X3dlYlZpZXcpID09IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpKTsKQEAgLTc5Myw2
ICs4MDIsODMgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QoRmls
ZUNob29zZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHdlYmtpdF9maWxlX2Nob29z
ZXJfcmVxdWVzdF9jYW5jZWwoZmlsZUNob29zZXJSZXF1ZXN0KTsKIH0KIAorY2xhc3MgQ29sb3JD
aG9vc2VyVGVzdDogcHVibGljIFVJQ2xpZW50VGVzdCB7CitwdWJsaWM6CisgICAgTUFLRV9HTElC
X1RFU1RfRklYVFVSRShDb2xvckNob29zZXJUZXN0KTsKKyAgICBDb2xvckNob29zZXJUZXN0KCkK
KyAgICA6IGhhZENsb3NlZFNpZ25hbChGQUxTRSkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2Nv
bm5lY3QobV93ZWJWaWV3LCAicnVuLWNvbG9yLWNob29zZXIiLCBHX0NBTExCQUNLKHJ1bkNvbG9y
Q2hvb3NlckNhbGxiYWNrKSwgdGhpcyk7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJW
aWV3LCAiY2xvc2UtY29sb3ItY2hvb3NlciIsIEdfQ0FMTEJBQ0soY2xvc2VDb2xvckNob29zZXJD
YWxsYmFjayksIHRoaXMpOworICAgIH0KKworICAgIHN0YXRpYyBnYm9vbGVhbiBydW5Db2xvckNo
b29zZXJDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCog
cmVxdWVzdCwgQ29sb3JDaG9vc2VyVGVzdCogdGVzdCkKKyAgICB7CisgICAgICAgIHRlc3QtPnJ1
bkNvbG9yQ2hvb3NlcihyZXF1ZXN0KTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisg
ICAgc3RhdGljIGdib29sZWFuIGNsb3NlQ29sb3JDaG9vc2VyQ2FsbGJhY2soV2ViS2l0V2ViVmll
dyosIENvbG9yQ2hvb3NlclRlc3QqIHRlc3QpCisgICAgeworICAgICAgICB0ZXN0LT5jbG9zZUNv
bG9yQ2hvb3NlcigpOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICB2b2lkIHJ1
bkNvbG9yQ2hvb3NlcihXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQorICAgIHsK
KyAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChy
ZXF1ZXN0KSk7CisgICAgICAgIG1fY29sb3JDaG9vc2VyUmVxdWVzdCA9IHJlcXVlc3Q7CisgICAg
ICAgIGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcCk7CisgICAgfQorCisgICAgdm9pZCBjbG9z
ZUNvbG9yQ2hvb3NlcigpCisgICAgeworICAgICAgICBoYWRDbG9zZWRTaWduYWwgPSBUUlVFOwor
ICAgIH0KKworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIGNsaWNrTW91c2VCdXR0b25B
bmRXYWl0Rm9yQ29sb3JDaG9vc2VyUmVxdWVzdChpbnQgeCwgaW50IHkpCisgICAgeworICAgICAg
ICBjbGlja01vdXNlQnV0dG9uKHgsIHkpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWlu
TG9vcCk7CisgICAgICAgIHJldHVybiBtX2NvbG9yQ2hvb3NlclJlcXVlc3QuZ2V0KCk7CisgICAg
fQorCisgICAgZ2Jvb2xlYW4gY2xvc2VkU2lnbmFsKCkKKyAgICB7CisgICAgICAgIHJldHVybiBo
YWRDbG9zZWRTaWduYWw7CisgICAgfQorCitwcml2YXRlOgorICAgIEdSZWZQdHI8V2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdD4gbV9jb2xvckNob29zZXJSZXF1ZXN0OworICAgIGdib29sZWFuIGhh
ZENsb3NlZFNpZ25hbDsKK307CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3Q29sb3JDaG9vc2Vy
UmVxdWVzdChDb2xvckNob29zZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHRl
c3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBjb2xvckNob29zZXJIVE1MID0gIjxodG1sPjxib2R5PjxpbnB1dCBzdHlsZT0ncG9zaXRp
b246YWJzb2x1dGU7bGVmdDowO3RvcDowO21hcmdpbjowO3BhZGRpbmc6MCcgdHlwZT0nY29sb3In
IHZhbHVlPScjZmYwMDAwJy8+PC9ib2R5PjwvaHRtbD4iOworICAgIHRlc3QtPmxvYWRIdG1sKGNv
bG9yQ2hvb3NlckhUTUwsIDApOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwor
ICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIGNvbG9yQ2hvb3NlclJlcXVlc3QgPSB0ZXN0
LT5jbGlja01vdXNlQnV0dG9uQW5kV2FpdEZvckNvbG9yQ2hvb3NlclJlcXVlc3QoNSwgNSk7Cisg
ICAgR2RrUkdCQSogY29sb3IgPSB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9jdXJy
ZW50X2NvbG9yKGNvbG9yQ2hvb3NlclJlcXVlc3QpOworICAgIGFzc2VydENvbG9ySXNFcXVhbChj
b2xvciwgMS4wLCAwLjAsIDAuMCwgMS4wKTsKKworICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRX
YWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1ZSA9
ICcjMDBmZjAwJzsiLCAwKTsKKyAgICBjb2xvciA9IHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVl
c3RfZ2V0X2N1cnJlbnRfY29sb3IoY29sb3JDaG9vc2VyUmVxdWVzdCk7CisgICAgYXNzZXJ0Q29s
b3JJc0VxdWFsKGNvbG9yLCAxLjAsIDAuMCwgMC4wLCAxLjApOworCisgICAgZ19hc3NlcnQoIXRl
c3QtPmNsb3NlZFNpZ25hbCgpKTsKKyAgICBHZGtSR0JBIGJsdWUgPSB7MC4wLCAwLjAsIDEuMCwg
MS4wfTsKKyAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvcihjb2xv
ckNob29zZXJSZXF1ZXN0LCAmYmx1ZSk7CisgICAgZ19hc3NlcnQodGVzdC0+Y2xvc2VkU2lnbmFs
KCkpOworICAgIGNvbG9yID0gd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVu
dF9jb2xvcihjb2xvckNob29zZXJSZXF1ZXN0KTsKKyAgICBhc3NlcnRDb2xvcklzRXF1YWwoY29s
b3IsIDAuMCwgMC4wLCAxLjAsIDEuMCk7CisKKyAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBq
YXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVk
KCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLnZhbHVlOyIsIDApOworICAgIEdPd25Q
dHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJp
bmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5n
ZXQoKSwgPT0sICIjMDAwMGZmIik7Cit9CisKIGNsYXNzIEZ1bGxTY3JlZW5DbGllbnRUZXN0OiBw
dWJsaWMgV2ViVmlld1Rlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUo
RnVsbFNjcmVlbkNsaWVudFRlc3QpOwpAQCAtMTI1MSw2ICsxMzM3LDcgQEAgdm9pZCBiZWZvcmVB
bGwoKQogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAidmlldy1tb2RlIiwg
dGVzdFdlYlZpZXdNb2RlKTsKICAgICBTbmFwc2hvdFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAic25hcHNob3QiLCB0ZXN0V2ViVmlld1NuYXBzaG90KTsKICAgICBXZWJWaWV3VGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInBhZ2UtdmlzaWJpbGl0eSIsIHRlc3RXZWJWaWV3UGFn
ZVZpc2liaWxpdHkpOworICAgIENvbG9yQ2hvb3NlclRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIs
ICJjb2xvci1jaG9vc2VyLXJlcXVlc3QiLCB0ZXN0V2ViVmlld0NvbG9yQ2hvb3NlclJlcXVlc3Qp
OwogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3dlYmtpdDIuaAppbmRleCAzYTM5MjEwMGIzNDAzMDI3NjBlMDc3ZGQwYWNjNTE2ZmU1ZjAxZDhl
Li4zYmI1ZjA5NTYwNWU4MDc3ZDM3ODZhNjljNDdmY2U0M2UxM2JjMjZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5j
bHVkZSA8d2Via2l0Mi9XZWJLaXRFbnVtVHlwZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dEVycm9yLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuaD4KKyNp
bmNsdWRlIDx3ZWJraXQyL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaD4KICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0RmluZENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZvcm1TdWJtaXNz
aW9uUmVxdWVzdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAppbmRleCAwZWU3OWRkNzFh
MzZkMjUzOWZmYWQ0NDdmZTlhNjMwYmE5MjY2NjYyLi5iYTA1MTczNDdlZTcxM2U0MDM3MGM3MzFh
ZTJhNDY3OTk0NjVkNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmNwcApAQCAtNTUsNiAr
NTUsMTQgQEAgdm9pZCBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk6OnNldENvbG9y
KGNvbnN0IFN0cmluZyYgY29sb3IpCiAgICAgbV9wYWdlLT5lbmRDb2xvckNob29zZXIoKTsKIH0K
IAordm9pZCBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk6OmVuZENvbG9yQ2hvb3Nl
cigpCit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZS0+
ZW5kQ29sb3JDaG9vc2VyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmgKaW5kZXgg
ZDI4ZWI4YWE5NWMyZDhkYjA2ZDIxYmI3NDYwMWRhOWRjZWUxYTQ3ZC4uNjJhMmUwYjgwYjlkMzY3
ZTg5NmU3YzFjNjI2ZGQ4OGFkYTQxZGEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaApAQCAt
NTAsNiArNTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKICAgICB2b2lk
IHNldENvbG9yKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgZW5kQ29sb3JDaG9vc2VyKCk7CiAK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5
KFdlYlBhZ2VQcm94eSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktp
dEZlYXR1cmVzLm00IGIvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00Cmlu
ZGV4IDYwNmMxNzZkZmMzYzlkYTczMjExZDdhMWMzMWFmMTdjYzE1M2FiNDAuLmY5ZDMxNGU2YzI0
ZmNkMjgyMGUzNmJmZGYzNzZmYWQ5ODRkOWQzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9v
bHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNAorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2Vi
S2l0RmVhdHVyZXMubTQKQEAgLTEzOCw3ICsxMzgsNyBAQCAkc3JjZGlyL1Rvb2xzL2d0ay9nZW5l
cmF0ZS1mZWF0dXJlLWRlZmluZXMtZmlsZXMgJENPTkZJR1VSQUJMRV9GRUFUVVJFX0RFRklORVMg
XAogICAgIEVOQUJMRV9JRlJBTUVfU0VBTUxFU1M9MSBcCiAgICAgRU5BQkxFX0lOREVYRURfREFU
QUJBU0U9MCBcCiAgICAgRU5BQkxFX0lOUFVUX1NQRUVDSD0wIFwKLSAgICBFTkFCTEVfSU5QVVRf
VFlQRV9DT0xPUj0wIFwKKyAgICBFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUj0xIFwKICAgICBFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFPTAgXAogICAgIEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lO
Q09NUExFVEU9MCBcCiAgICAgRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTD0wIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IGJkNGU1MjE0M2U0ODFiNjE2ZWZiMmU3NzBiZDBlODll
ZTQ1NjRlNmMuLjU4ZjYxNzFjZDllM2IyYTQzOTZiZThlODAzNTcwNzMwMzc3MTkyOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90
b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMzE4LDYgKzMxOCw4IEBAIF9aTjdXZWJDb3JlMTBDbGll
bnRSZWN0QzFFUktOU185RmxvYXRSZWN0RTsKIF9aTjdXZWJDb3JlMTNCYXR0ZXJ5U3RhdHVzNmNy
ZWF0ZUViZGRkOwogX1pON1dlYkNvcmUxN0JhdHRlcnlDb250cm9sbGVyMTRzdXBwbGVtZW50TmFt
ZUV2OwogX1pON1dlYkNvcmUxN0JhdHRlcnlDb250cm9sbGVyMjJkaWRDaGFuZ2VCYXR0ZXJ5U3Rh
dHVzRVJLTjNXVEYxMkF0b21pY1N0cmluZ0VOUzFfMTBQYXNzUmVmUHRySU5TXzEzQmF0dGVyeVN0
YXR1c0VFRTsKK19aTjdXZWJDb3JlNUNvbG9yQzFFUktOM1dURjZTdHJpbmdFOworX1pON1dlYkNv
cmUxNkhUTUxJbnB1dEVsZW1lbnQyNXNlbGVjdENvbG9ySW5Db2xvckNob29zZXJFUktOU181Q29s
b3JFOwogCiBsb2NhbDoKIF9aKjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAzNDc3Zjg0YzFkZTNmMzY3ZjQ5NmM5MDlmZmM2MmE3NTFmYjZiOTg0
Li4zNzNmNjQ3ZTcxYzc3ZWQ2ZGIyYmM4NDI3MTdmZThmNmFhMjJlNDZmIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTItMTItMjAgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4K
KworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgY29sb3IgaW5wdXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTM1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIGlucHV0IHR5cGUgY29s
b3IgaW4gZmVhdHVyZSBsaXN0LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1
cmVMaXN0LnBtOgorCiAyMDEzLTA1LTI4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBbV2luZG93c10gTWFueSBDU1MyLjEgdGVzdHMgZmFpbCB1bmRlciBO
UldULgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBt
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4IDdhZGVmYTQ0
YjYxNjIyMDM0MWUyMmUyOTgzN2U0NjU2MDA3YWVkODAuLjFkYTZhYmFkNTI0NmI4MjAzNzJhYTlh
NGUzMjZhM2EzNjdmYzdhYzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9G
ZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3Qu
cG0KQEAgLTI5Myw3ICsyOTMsNyBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4g
IkVOQUJMRV9JTlBVVF9TUEVFQ0giLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW5wdXRTcGVl
Y2hTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAiaW5wdXQtdHlwZS1jb2xvciIsIGRlc2Mg
PT4gIlRvZ2dsZSBJbnB1dCBUeXBlIENvbG9yIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJF
TkFCTEVfSU5QVVRfVFlQRV9DT0xPUiIsIGRlZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgpIHx8IGlz
RWZsKCkgfHwgaXNRdCgpKSwgdmFsdWUgPT4gXCRpbnB1dFR5cGVDb2xvclN1cHBvcnQgfSwKKyAg
ICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IiLCBkZWZhdWx0ID0+IChpc0Js
YWNrQmVycnkoKSB8fCBpc0VmbCgpIHx8IGlzUXQoKSB8fCBpc0d0aygpKSwgdmFsdWUgPT4gXCRp
bnB1dFR5cGVDb2xvclN1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJpbnB1dC10eXBlLWRh
dGUiLCBkZXNjID0+ICJUb2dnbGUgSW5wdXQgVHlwZSBEYXRlIHN1cHBvcnQiLAogICAgICAgZGVm
aW5lID0+ICJFTkFCTEVfSU5QVVRfVFlQRV9EQVRFIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBc
JGlucHV0VHlwZURhdGVTdXBwb3J0IH0sCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VM
b2cKaW5kZXggMTk3NDRmYjBlMzViNzUxMjJiNjZlYzJiZDkxYmQyYTQyMmI4NjRhZi4uMzAyYmRh
ZTcyNjcwNGJlZDE2MDg0ZDk1NGUzOTFiZWM4ODNiNzY3MyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9n
CisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEyLTIwICBBcm5hdWQgUmVu
ZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dUS10gQWRk
IHN1cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGV4cG9ydCBXZWJDb3JlOjpDb2xvcjo6Q29sb3IoV1RGOjpTdHJpbmcg
Y29uc3QmKSBhbmQKKyAgICAgICAgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2VsZWN0Q29s
b3JJbkNvbG9yQ2hvb3NlcihXZWJDb3JlOjpDb2xvcgorICAgICAgICBjb25zdCYpCisKKyAgICAg
ICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTEwLTEwICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0d0
a10gdG9vIGxvbmcgZnVuY3Rpb24gaW4gYW5pbWF0aW9uIHNjcmlwdCBjYXVzZSByZXBhaW50IHRv
IG5ldmVyIGhhcHBlbi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204458</attachid>
            <date>2013-06-12 11:07:09 -0700</date>
            <delta_ts>2013-07-12 11:37:43 -0700</delta_ts>
            <desc>updated patch to address reviewer comments</desc>
            <filename>bug-98935-20130612110529.patch</filename>
            <type>text/plain</type>
            <size>43543</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxMTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVkMmQwMjYzOGNjZDU1
ZmUxODMzNzYyNTI4ZWVhYWU4MGE2M2I4MS4uZWRlMzc5ZjVhMmMzMGM1Y2ZlNzhlNDc1NTJlMWJl
ODVjMWUwYmMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTIwICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dU
S10gQWRkIHN1cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBpbnB1dCB0eXBlIGNvbG9yIGluIGZlYXR1cmUg
bGlzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmZlYXR1cmVzLmFtLmluOgorCiAyMDEzLTA1
LTA2ICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgcmVtb3ZlIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi9ET01OYW1lZEZsb3dDb2xsZWN0
aW9uIHNwZWNpYWwgY2FzZSBuYW1lR2V0dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggYmE2YzhjNTc4
OGUyYjE4NGE5MjEyZDVmYzdiMmI1YTRkMjJjZjllZi4uNzJmMTFiNTU5ZTNhNzNjZGU1NDZmNjky
ZmE0NWY0NGNmN2E3Zjc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEy
LTEyLTMxICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0dWIgaW1wbGVtZW50YXRpb24gb2Yg
Q2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIKKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6
Y3JlYXRlQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRHdGsuaDoKKwogMjAxMi0xMC0wMSAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNh
LnNhbXN1bmcuY29tPgogCiAgICAgICAgIFtHdGtdIHRvbyBsb25nIGZ1bmN0aW9uIGluIGFuaW1h
dGlvbiBzY3JpcHQgY2F1c2UgcmVwYWludCB0byBuZXZlciBoYXBwZW4uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
MTJjNzYyMTBkM2IzYzlmNWRhZmE0OWY0M2ZkYTNiYjU4NTBjYWVkYi4uYmQyNzhlZGE3YzNmMWFl
MzlhMmJmZjM0YTQyMjdkMThhNWEyN2NiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisy
MDEyLTEyLTIwICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBpbnB1dCBjb2xv
ciB0eXBlIGZvciBXZWJLaXQyLgorCisgICAgICAgIEltcGxlbWVudCBzaG93Q29sb3JQaWNrZXIg
YW5kIGhpZGVDb2xvclBpY2tlciBVSSBjbGllbnQgY2FsbGJhY2tzLgorCisgICAgICAgIEFkZCBh
IGVuZENvbG9yQ2hvb3NlciBtZXRob2QgdG8gV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclBy
b3h5IHRvCisgICAgICAgIGJlIGFibGUgdG8gY2FuY2VsIHRoZSByZXF1ZXN0IHdpdGhvdXQgc2Vs
ZWN0aW5nIGEgY29sb3IuCisKKyAgICAgICAgU2ltaWxhcmx5IHRvIHdoYXQgaGFwcGVucyBmb3Ig
ZmlsZSBjaG9vc2VyLCB3aGVuIGEgY29sb3IgY2hvb3NlciBpcworICAgICAgICBuZWVkZWQsIHdl
IGVtaXQgYSBydW4tY29sb3ItY2hvb3NlciBzaWduYWwgd2l0aCBhCisgICAgICAgIFdlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3Qgb2JqZWN0LiBJZiB0aGUgc2lnbmFsIGlzIG5vdCBoYW5kbGVkIGJ5
IHRoZQorICAgICAgICBhcHBsaWNhdGlvbiwgd2Ugc2hvdyBhIEd0a0d0a0NvbG9yQ2hvb3NlckRp
YWxvZy4KKworICAgICAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IEFQSSBhbGxvd3MgdG8g
cmVhZCBjdXJyZW50IGNvbG9yIChlaXRoZXIKKyAgICAgICAgaW5pdGlhbCBjb2xvciBzZXQgYnkg
V2ViQ29yZSBvciBsYXRlciwgY29sb3Igc2VsZWN0ZWQgYnkgdXNlciksIHRvCisgICAgICAgIHNl
bGVjdCBhIGNvbG9yLCBvciB0byBjYW5jZWwgYSByZXF1ZXN0LgorCisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0LmNwcDogQWRkZWQuCisgICAgICAgICh3ZWJraXRDb2xvckNob29zZXJSZXF1
ZXN0RGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0R2V0UHJvcGVy
dHkpOgorICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jbGFzc19pbml0KToK
KyAgICAgICAgKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yKToKKyAg
ICAgICAgKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IpOgor
ICAgICAgICAod2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdENyZWF0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHA6
CisgICAgICAgIChzaG93Q29sb3JQaWNrZXIpOgorICAgICAgICAoaGlkZUNvbG9yUGlja2VyKToK
KyAgICAgICAgKGF0dGFjaFVJQ2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdDbG9zZUNvbG9y
Q2hvb3Nlcik6CisgICAgICAgIChjb2xvckNob29zZXJEaWFsb2dSZXNwb25zZUNhbGxiYWNrKToK
KyAgICAgICAgKHdlYmtpdFdlYlZpZXdSdW5Db2xvckNob29zZXIpOgorICAgICAgICAod2Via2l0
X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0V2ViVmlld1Nob3dDb2xvckNo
b29zZXIpOgorICAgICAgICAod2Via2l0V2ViVmlld0hpZGVDb2xvckNob29zZXIpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXM6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAoYXNzZXJ0Q29sb3JJc0Vx
dWFsKToKKyAgICAgICAgKHRlc3RXZWJWaWV3Q29sb3JDaG9vc2VyUmVxdWVzdCk6CisgICAgICAg
IChiZWZvcmVBbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5OjplbmRD
b2xvckNob29zZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExp
c3RlbmVyUHJveHkuaDoKKwogMjAxMy0wNi0wNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hA
YXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBXSzI6IGFjY2Vzc2liaWxpdHkgcG9zaXRpb24gaXMg
Y2FsY3VsYXRlZCBldmVyeSB0aW1lIHdpbmRvdyBmcmFtZSBpcyB1cGRhdGVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRl
eCBiNTI5YjQ3OGE0ZTRhOTY4ZThlNjc0YjUwYmFlYzg5OTkyZTE2Yzc4Li5hZTFkMTliZGIyOTky
MmQwYmIwZGE2MmE5ZTM5N2I4YzE4YzhhYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKQEAgLTgzLDYgKzgzLDggQEAK
ICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjZW5kaWYKIAorI2luY2x1ZGUgIkNvbG9y
Q2hvb3NlckNsaWVudC5oIgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC04MzksNiArODQxLDE0IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpyZWFjaGVk
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCkKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCitQ
YXNzT3duUHRyPENvbG9yQ2hvb3Nlcj4gQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIo
Q29sb3JDaG9vc2VyQ2xpZW50KiwgY29uc3QgQ29sb3ImKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKKwogdm9pZCBDaHJvbWVDbGllbnQ6
OnJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IHBycEZpbGVDaG9v
c2VyKQogewogICAgIEdSZWZQdHI8V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0PiByZXF1ZXN0ID0g
YWRvcHRHUmVmKHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9jcmVhdGUocHJwRmlsZUNob29z
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmgKaW5kZXggYzgyZjQwNGVhNzJhNTQwOWY3N2M2MjhjZjZjZDdjNGJjY2U5NzI2My4u
MjM3MTI4MWFjY2E1OWU4MzFmMGYzZGFhMDc5YWE4NjhjNjZkNzY5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKKysrIGIvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKQEAgLTM2LDYg
KzM2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUG9wdXBNZW51Q2xpZW50OworY2xhc3MgQ29sb3I7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE5LDYgKzEyMCwxMSBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKICNlbmRpZgogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hl
U2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVkKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRB
cHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90IHRvdGFs
U3BhY2VOZWVkZWQpOworCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgICAgIHZp
cnR1YWwgUGFzc093blB0cjxDb2xvckNob29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNo
b29zZXJDbGllbnQqLCBjb25zdCBDb2xvciYpOworI2VuZGlmCisKICAgICAgICAgdmlydHVhbCB2
b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5n
PiYsIEZpbGVJY29uTG9hZGVyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IGM0NGE2NjFiNjFhZWQ2MDdhOGRiYzRhMDAyMDM3YzU4MTNkNDg1NDcuLmZlODYyMmVmZWNhYjhj
NWQ1M2UyYzY0MmQ2MWVlM2QyOTM2ZDkwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtOTYsNiArOTYsNyBAQCB3ZWJraXQyX2hfYXBpICs9IFwKIHdlYmtpdDJndGtfaF9hcGkg
Kz0gXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0
LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0
SXRlbS5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3QuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0
TWVudS5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51
QWN0aW9ucy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRN
ZW51SXRlbS5oIFwKQEAgLTY1Nyw2ICs2NTgsOSBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0u
aCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRM
aXN0SXRlbS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJh
Y2tGb3J3YXJkTGlzdFByaXZhdGUuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaCBcCisJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCBc
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5o
IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudVBy
aXZhdGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzZmE4OTZi
MGJkMjFiM2VhZDJmYjhmMDgwYjIxNjE0ODJhMGU0MTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNw
cApAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBF
bGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgor
ICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJXZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKy8qKgorICogU0VDVElPTjogV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdAorICogQFNob3J0X2Rlc2NyaXB0aW9uOiBBIHJlcXVlc3QgdG8gb3BlbiBhIGNv
bG9yIGNob29zZXIKKyAqIEBUaXRsZTogV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAorICogQFNl
ZV9hbHNvOiAjV2ViS2l0V2ViVmlldworICoKKyAqIFdoZW5ldmVyIHRoZSB1c2VyIGludGVyYWN0
cyB3aXRoIGFuICZsdDtpbnB1dCB0eXBlPSdjb2xvcicgLyZndDsKKyAqIEhUTUwgZWxlbWVudCwg
V2ViS2l0IHdpbGwgbmVlZCB0byBzaG93IGEgZGlhbG9nIHRvIGNob29zZSBhIGNvbG9yLiBGb3Ig
dGhhdAorICogdG8gaGFwcGVuIGluIGEgZ2VuZXJhbCB3YXksIGluc3RlYWQgb2YganVzdCBvcGVu
aW5nIGEgI0d0a0NvbG9yQ2hvb3NlcgorICogKHdoaWNoIG1pZ2h0IGJlIG5vdCBkZXNpcmFibGUg
aW4gc29tZSBjYXNlcywgd2hpY2ggY291bGQgcHJlZmVyIHRvIHVzZSB0aGVpcgorICogb3duIGNv
bG9yIGNob29zZXIgZGlhbG9nKSwgV2ViS2l0IHdpbGwgZmlyZSB0aGUKKyAqICNXZWJLaXRXZWJW
aWV3OjpydW4tY29sb3ItY2hvb3NlciBzaWduYWwgd2l0aCBhICNXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0CisgKiBvYmplY3QsIHdoaWNoIHdpbGwgYWxsb3cgdGhlIGNsaWVudCBhcHBsaWNhdGlv
biB0byBzcGVjaWZ5IHRoZSBjb2xvciB0byBiZQorICogc2VsZWN0ZWQsIHRvIGluc3BlY3QgdGhl
IGRldGFpbHMgb2YgdGhlIHJlcXVlc3QgKGUuZy4gdG8gZ2V0IGluaXRpYWwgY29sb3IpCisgKiBh
bmQgdG8gY2FuY2VsIHRoZSByZXF1ZXN0LCBpbiBjYXNlIG5vdGhpbmcgd2FzIHNlbGVjdGVkLgor
ICoKKyAqIEluIGNhc2UgdGhlIGNsaWVudCBhcHBsaWNhdGlvbiBkb2VzIG5vdCB3aXNoIHRvIGhh
bmRsZSB0aGlzIHNpZ25hbCwKKyAqIFdlYktpdCB3aWxsIHByb3ZpZGUgYSBkZWZhdWx0IGhhbmRs
ZXIgd2hpY2ggd2lsbCBhc3luY2hyb25vdXNseSBydW4KKyAqIGEgcmVndWxhciAjR3RrQ29sb3JD
aG9vc2VyIGZvciB0aGUgdXNlciB0byBpbnRlcmFjdCB3aXRoLgorICovCisKK3N0cnVjdCBfV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUgeworICAgIFdlYkNvbG9yUGlja2VyUmVzdWx0
TGlzdGVuZXJQcm94eSogbGlzdGVuZXI7CisgICAgR2RrUkdCQSBjb2xvcjsKKyAgICBib29sIGhh
bmRsZWRSZXF1ZXN0OworfTsKKworV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3QsIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3QsIEdfVFlQRV9PQkpFQ1QpCisK
K2VudW0geworICAgIFBST1BfMCwKKworICAgIFBST1BfQ09MT1IKK307CisKK3N0YXRpYyB2b2lk
IHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3REaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKK3sgICAg
CisgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9DT0xPUl9D
SE9PU0VSX1JFUVVFU1Qob2JqZWN0KTsKKworICAgIGlmICghcmVxdWVzdC0+cHJpdi0+aGFuZGxl
ZFJlcXVlc3QpIHsKKyAgICAgICAgcmVxdWVzdC0+cHJpdi0+aGFuZGxlZFJlcXVlc3QgPSB0cnVl
OworICAgICAgICByZXF1ZXN0LT5wcml2LT5saXN0ZW5lci0+ZW5kQ29sb3JDaG9vc2VyKCk7Cisg
ICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0R2V0UHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNw
ZWMqIHBhcmFtU3BlYykKK3sKKyAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0
ID0gV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVChvYmplY3QpOworCisgICAgc3dpdGNoIChw
cm9wSWQpIHsKKyAgICBjYXNlIFBST1BfQ09MT1I6CisgICAgICAgIGdfdmFsdWVfc2V0X2JveGVk
KHZhbHVlLCAmcmVxdWVzdC0+cHJpdi0+Y29sb3IpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBw
cm9wSWQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfY29sb3Jf
Y2hvb3Nlcl9yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdENsYXNz
KiByZXF1ZXN0Q2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JK
RUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9
IHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RHZXRQcm9wZXJ0eTsKKyAgICBvYmplY3RDbGFzcy0+
ZGlzcG9zZSA9IHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3REaXNwb3NlOworCisgICAgLyoqCisg
ICAgICogV2ViS2l0V2ViVmlldzpjb2xvcjoKKyAgICAgKgorICAgICAqIFRoZSAjR2RrUkdCQSBj
b2xvciBvZiB0aGUgcmVxdWVzdAorICAgICAqCisgICAgICogU2luY2U6IDIuMgorICAgICAqLwor
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsCisgICAgICAg
IFBST1BfQ09MT1IsCisgICAgICAgIGdfcGFyYW1fc3BlY19ib3hlZCgiY29sb3IiLAorICAgICAg
ICAgICAgXygiQ3VycmVudCBjb2xvciIpLAorICAgICAgICAgICAgXygiVGhlIGN1cnJlbnQgY29s
b3IgZm9yIHRoZSByZXF1ZXN0IiksCisgICAgICAgICAgICBHREtfVFlQRV9SR0JBLAorICAgICAg
ICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Cit9CisKKy8qKgorICogd2Via2l0X2NvbG9y
X2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3I6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0Rmls
ZUNob29zZXJSZXF1ZXN0CisgKiBAY29sb3I6IGEgcG9pbnRlciAjR2RrUkdCQQorICoKKyAqIEFz
ayBXZWJLaXQgdG8gc2VsZWN0IGNvbG9yIGFuZCBjb21wbGV0ZSB0aGUgcmVxdWVzdC4KKyAqCisg
KiBTaW5jZTogMi4yCisgKi8KK3ZvaWQgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxl
Y3RfY29sb3IoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgR2RrUkdC
QSogY29sb3IpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfQ09MT1JfQ0hPT1NF
Ul9SRVFVRVNUKHJlcXVlc3QpKTsKKyAgICBpZiAocmVxdWVzdC0+cHJpdi0+aGFuZGxlZFJlcXVl
c3QpCisgICAgICAgIHJldHVybjsKKyAgICByZXF1ZXN0LT5wcml2LT5oYW5kbGVkUmVxdWVzdCA9
IHRydWU7CisKKyAgICByZXF1ZXN0LT5wcml2LT5jb2xvciA9ICpjb2xvcjsKKyAgICByZXF1ZXN0
LT5wcml2LT5saXN0ZW5lci0+c2V0Q29sb3IoQ29sb3IocmVxdWVzdC0+cHJpdi0+Y29sb3IpLnNl
cmlhbGl6ZWQoKSk7Cit9CisKKy8qKgorICogd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9n
ZXRfY3VycmVudF9jb2xvcjoKKyAqIEByZXF1ZXN0OiBhICNXZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0CisgKgorICogV2hpbGUgbm8gY29sb3IgaGFzIGJlZW4gc2VsZWN0ZWQsIGl0IGlzIHRoZSBp
bml0aWFsIHZhbHVlIGRlZmluZWQgYnkgV2ViS2l0LgorICogV2hlbiBhIGNvbG9yIGhhcyBiZWVu
IHNlbGVjdGVkLCB0aGlzIGJlY29tZXMgdGhlIHNlbGVjdGVkIHZhbHVlLgorICoKKyAqIFJldHVy
bnM6ICh0cmFuc2ZlciBub25lKTogdGhlIGN1cnJlbnQgY29sb3Igb2YgcmVxdWVzdC4gCisgKgor
ICogU2luY2U6IDIuMgorICovCitHZGtSR0JBKiB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0
X2dldF9jdXJyZW50X2NvbG9yKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVT
VChyZXF1ZXN0KSwgMCk7CisKKyAgICByZXR1cm4gJnJlcXVlc3QtPnByaXYtPmNvbG9yOworfQor
CitXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiB3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0Q3Jl
YXRlKGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IsIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVu
ZXJQcm94eSogbGlzdGVuZXIpCit7CisgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVx
dWVzdCA9IFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCwgTlVMTCkpOworICAgIHJlcXVlc3QtPnByaXYtPmxp
c3RlbmVyID0gbGlzdGVuZXI7CisgICAgcmVxdWVzdC0+cHJpdi0+Y29sb3IgPSBpbml0aWFsQ29s
b3I7CisgICAgcmV0dXJuIHJlcXVlc3Q7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDMwYjc2YTM0NDNjYjhjNDA2NTg1MmQxZTg1Y2ExNDU5ZjdhNDFiNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3QuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEy
LCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
IG1ldDoKKyAqCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAor
ICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQor
ICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VC
S0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9y
ICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNl
bmRpZgorCisjaWZuZGVmIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RfaAorI2RlZmluZSBXZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0X2gKKworI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdF
QktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCAgICAgICAgICAgICh3ZWJraXRfY29sb3Jf
Y2hvb3Nlcl9yZXF1ZXN0X2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9DT0xPUl9DSE9PU0VS
X1JFUVVFU1Qob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2Jq
KSwgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNULCBXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0KSkKKyNkZWZpbmUgV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVF9DTEFTUyhrbGFz
cykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9DT0xP
Ul9DSE9PU0VSX1JFUVVFU1QsIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcykpCisjZGVm
aW5lIFdFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1Qob2JqKSAgICAgICAgIChHX1RZUEVf
Q0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFV
RVNUKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVF9DTEFTUyhrbGFz
cykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9DT0xPUl9D
SE9PU0VSX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUX0dF
VF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9U
WVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCwgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdENsYXNz
KSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgICAgICAgIFdl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3Q7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdENsYXNzICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdENsYXNzOwordHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlIFdlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3RQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Qg
eworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgLyo8IHByaXZhdGUgPiovCisgICAgV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3RDbGFzcyB7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsK
K307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0
X3R5cGUgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBHZGtSR0JBICoKK3dlYmtpdF9j
b2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IgIChXZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0ICpyZXF1ZXN0KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfY29sb3JfY2hv
b3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvciAgICAgICAoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dCAqcmVxdWVzdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR2RrUkdCQSAgICAgICAgICAgICAqY29sb3IpOworCitHX0VORF9ERUNMUwor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA3OGE2YzdkY2UyZDFkNTc5NWJjOWQ2OGZhYjAxYWJlYWFlNjJmNmUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0UHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUgbWV0OgorICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Us
CisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
CisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlX2gKKyNkZWZpbmUgV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdFByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclBy
b3h5LmgiCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oIgorI2luY2x1ZGUg
IldlYktpdFByaXZhdGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CisKK1dlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QqIHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RDcmVhdGUoY29uc3Qg
V2ViQ29yZTo6Q29sb3ImLCBXZWJLaXQ6OldlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94
eSopOworCisjZW5kaWYgLy8gV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3Bw
CmluZGV4IDIzOGVlOWE2ZDBlYTA3YmVmNmI1NTZmYzY4YmNiZGNmMTI4ZWI4OGMuLjNmMjNiNzUz
NTM0NDk4OTM4MzNlMzA2NjBjMDA4ZmMxM2M4ZDk3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTIwLDYgKzIwLDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRVSUNsaWVudC5oIgogCisj
aW5jbHVkZSAiV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJX
ZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0R2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXROb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdFByaXZhdGUuaCIKQEAgLTE2NSw2ICsxNjYsMTYgQEAgc3Rh
dGljIHZvaWQgcnVuTW9kYWwoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
CiAgICAgd2Via2l0V2ViVmlld1J1bkFzTW9kYWwoV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8p
KTsKIH0KIAorc3RhdGljIHZvaWQgc2hvd0NvbG9yUGlja2VyKFdLUGFnZVJlZiwgV0tTdHJpbmdS
ZWYgaW5pdGlhbENvbG9yLCBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgd2Via2l0V2ViVmlld1Nob3dDb2xvckNo
b29zZXIoV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pLCBXZWJDb3JlOjpDb2xvcih0b1dURlN0
cmluZyhpbml0aWFsQ29sb3IpKSwgdG9JbXBsKGxpc3RlbmVyKSk7Cit9CisKK3N0YXRpYyB2b2lk
IGhpZGVDb2xvclBpY2tlcihXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7Cisg
ICAgd2Via2l0V2ViVmlld0hpZGVDb2xvckNob29zZXIoV0VCS0lUX1dFQl9WSUVXKGNsaWVudElu
Zm8pKTsKK30KKwogdm9pZCBhdHRhY2hVSUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQogewogICAgIFdLUGFnZVVJQ2xpZW50IHdrVUlDbGllbnQgPSB7CkBAIC0yMTMsOCArMjI0
LDggQEAgdm9pZCBhdHRhY2hVSUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQog
ICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudCwKICAgICAgICAgZGVjaWRlUG9saWN5Rm9y
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QsCiAgICAgICAgIDAsIC8vIHVuYXZhaWxhYmxl
UGx1Z2luQnV0dG9uQ2xpY2tlZAotICAgICAgICAwLCAvLyBzaG93Q29sb3JQaWNrZXIKLSAgICAg
ICAgMCwgLy8gaGlkZUNvbG9yUGlja2VyCisgICAgICAgIHNob3dDb2xvclBpY2tlciwKKyAgICAg
ICAgaGlkZUNvbG9yUGlja2VyLAogICAgICAgICAwLCAvLyBwbHVnaW5Mb2FkUG9saWN5CiAgICAg
fTsKICAgICBXS1BhZ2VSZWYgd2tQYWdlID0gdG9BUEkod2Via2l0V2ViVmlld0Jhc2VHZXRQYWdl
KFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDc1MGNlMzBhMTFmMTFk
MTM3ZWM3ZTY5ZmQyNzU1MTdmYmI2NTdlNTcuLmQxZDY3ZmUyZmRkYzU5Njg0MDdkNzU0NTFmYTJi
ZDY5ZjMwMmEzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiV2ViRGF0YS5o
IgogI2luY2x1ZGUgIldlYktpdEF1dGhlbnRpY2F0aW9uRGlhbG9nLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuaCIK
ICNpbmNsdWRlICJXZWJLaXRDb250ZXh0TWVudUl0ZW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0Q29udGV4dE1lbnVQcml2YXRlLmgiCkBAIC0xMTAsNiArMTExLDkgQEAgZW51bSB7CiAKICAg
ICBSVU5fRklMRV9DSE9PU0VSLAogCisgICAgUlVOX0NPTE9SX0NIT09TRVIsCisgICAgQ0xPU0Vf
Q09MT1JfQ0hPT1NFUiwKKwogICAgIENPTlRFWFRfTUVOVSwKICAgICBDT05URVhUX01FTlVfRElT
TUlTU0VELAogCkBAIC0xODcsNiArMTkxLDkgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0
ZSB7CiAgICAgdW5zaWduZWQgbG9uZyBmYXZpY29uQ2hhbmdlZEhhbmRsZXJJRDsKIAogICAgIFNu
YXBzaG90UmVzdWx0c01hcCBzbmFwc2hvdFJlc3VsdHNNYXA7CisKKyAgICBHdGtXaWRnZXQqIGNv
bG9yQ2hvb3NlckRpYWxvZzsKKyAgICBHUmVmUHRyPFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Q+
IGNvbG9yQ2hvb3NlclJlcXVlc3Q7CiB9OwogCiBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJ
R05BTF0gPSB7IDAsIH07CkBAIC00NDUsNiArNDUyLDQ1IEBAIHN0YXRpYyB2b2lkIGZpbGVDaG9v
c2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFjayhHdGtEaWFsb2cqIGRpYWxvZywgZ2ludCByZXNwb25z
ZUlECiAgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19XSURHRVQoZGlhbG9nKSk7CiB9CiAKK3N0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDbG9zZUNvbG9yQ2hvb3NlcihXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQoreworICAgIHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3NlclJlcXVlc3QgPSAwOwor
CisgICAgaWYgKHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3NlckRpYWxvZykgeworICAgICAgICBn
dGtfd2lkZ2V0X2Rlc3Ryb3kod2ViVmlldy0+cHJpdi0+Y29sb3JDaG9vc2VyRGlhbG9nKTsKKyAg
ICAgICAgd2ViVmlldy0+cHJpdi0+Y29sb3JDaG9vc2VyRGlhbG9nID0gMDsKKyAgICB9Cit9CisK
K3N0YXRpYyB2b2lkIGNvbG9yQ2hvb3NlckRpYWxvZ1Jlc3BvbnNlQ2FsbGJhY2soR3RrV2lkZ2V0
KiBkaWFsb2csIGdpbnQgcmVzcG9uc2VJRCwgV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAg
ICBpZiAocmVzcG9uc2VJRCA9PSBHVEtfUkVTUE9OU0VfT0spIHsKKyAgICAgICAgR2RrUkdCQSBj
b2xvcjsKKyAgICAgICAgZ3RrX2NvbG9yX2Nob29zZXJfZ2V0X3JnYmEoR1RLX0NPTE9SX0NIT09T
RVIoZGlhbG9nKSwgJmNvbG9yKTsKKyAgICAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVz
dF9zZWxlY3RfY29sb3Iod2ViVmlldy0+cHJpdi0+Y29sb3JDaG9vc2VyUmVxdWVzdC5nZXQoKSwg
JmNvbG9yKTsKKyAgICB9IGVsc2UKKyAgICAgICAgd2Via2l0V2ViVmlld0Nsb3NlQ29sb3JDaG9v
c2VyKHdlYlZpZXcpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld1J1bkNvbG9y
Q2hvb3NlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
KiByZXF1ZXN0KQoreworICAgIEd0a1dpZGdldCogdG9wbGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90
b3BsZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyAgICBpZiAoIXdpZGdldElzT25zY3JlZW5U
b3BsZXZlbFdpbmRvdyh0b3BsZXZlbCkpCisgICAgICAgIHRvcGxldmVsID0gMDsKKworICAgIEd0
a1dpZGdldCogZGlhbG9nID0gZ3RrX2NvbG9yX2Nob29zZXJfZGlhbG9nX25ldyhfKCJTZWxlY3Qg
Q29sb3IiKSwgdG9wbGV2ZWwgPyBHVEtfV0lORE9XKHRvcGxldmVsKSA6IDApOworCisgICAgZ3Rr
X2NvbG9yX2Nob29zZXJfc2V0X3JnYmEoR1RLX0NPTE9SX0NIT09TRVIoZGlhbG9nKSwgd2Via2l0
X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvcihyZXF1ZXN0KSk7CisKKyAg
ICBnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhjb2xvckNo
b29zZXJEaWFsb2dSZXNwb25zZUNhbGxiYWNrKSwgd2ViVmlldyk7CisgICAgZ3RrX3dpZGdldF9z
aG93KGRpYWxvZyk7CisKKyAgICB3ZWJWaWV3LT5wcml2LT5jb2xvckNob29zZXJEaWFsb2cgPSBk
aWFsb2c7CisgICAgd2ViVmlldy0+cHJpdi0+Y29sb3JDaG9vc2VyUmVxdWVzdCA9IHJlcXVlc3Q7
CisKKyAgICByZXR1cm4gVFJVRTsKK30KKwogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdS
dW5GaWxlQ2hvb3NlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRGaWxlQ2hvb3NlclJl
cXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193aWRnZXRf
Z2V0X3RvcGxldmVsKEdUS19XSURHRVQod2ViVmlldykpOwpAQCAtNjA1LDYgKzY1MSw4IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyog
d2ViVmlld0NsYXNzKQogICAgIHdlYlZpZXdDbGFzcy0+ZGVjaWRlX3BvbGljeSA9IHdlYmtpdFdl
YlZpZXdEZWNpZGVQb2xpY3k7CiAgICAgd2ViVmlld0NsYXNzLT5wZXJtaXNzaW9uX3JlcXVlc3Qg
PSB3ZWJraXRXZWJWaWV3UGVybWlzc2lvblJlcXVlc3Q7CiAgICAgd2ViVmlld0NsYXNzLT5ydW5f
ZmlsZV9jaG9vc2VyID0gd2Via2l0V2ViVmlld1J1bkZpbGVDaG9vc2VyOworICAgIHdlYlZpZXdD
bGFzcy0+cnVuX2NvbG9yX2Nob29zZXIgPSB3ZWJraXRXZWJWaWV3UnVuQ29sb3JDaG9vc2VyOwor
ICAgIHdlYlZpZXdDbGFzcy0+Y2xvc2VfY29sb3JfY2hvb3NlciA9IHdlYmtpdFdlYlZpZXdDbG9z
ZUNvbG9yQ2hvb3NlcjsKIAogICAgIC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6d2ViLWNvbnRl
eHQ6CkBAIC0xMjI1LDYgKzEyNzMsNTYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Ns
YXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICAg
ICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwgLyogbnVtYmVyIG9mIHBhcmFtZXRlcnMgKi8KICAg
ICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX0ZJTEVfQ0hPT1NFUl9SRVFVRVNUKTsKIAor
ICAgICAvKioKKyAgICAgICogV2ViS2l0V2ViVmlldzo6cnVuLWNvbG9yLWNob29zZXI6CisgICAg
ICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMg
ZW1pdHRlZAorICAgICAgKiBAcmVxdWVzdDogYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAor
ICAgICAgKgorICAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gdGhlIHVzZXIgaW50
ZXJhY3RzIHdpdGggYSAmbHQ7aW5wdXQKKyAgICAgICogdHlwZT0nY29sb3InIC8mZ3Q7IEhUTUwg
ZWxlbWVudCwgcmVxdWVzdGluZyBmcm9tIFdlYktpdCB0byBzaG93CisgICAgICAqIGEgZGlhbG9n
IHRvIHNlbGVjdCBhIGNvbG9yLiBUbyBsZXQgdGhlIGFwcGxpY2F0aW9uIGtub3cgdGhlIGRldGFp
bHMgb2YKKyAgICAgICogdGhlIGNvbG9yIGNob29zZXIsIGFzIHdlbGwgYXMgdG8gYWxsb3cgdGhl
IGNsaWVudCBhcHBsaWNhdGlvbiB0byBlaXRoZXIKKyAgICAgICogY2FuY2VsIHRoZSByZXF1ZXN0
IG9yIHBlcmZvcm0gYW4gYWN0dWFsIGNvbG9yIHNlbGVjdGlvbiwgdGhlIHNpZ25hbCB3aWxsCisg
ICAgICAqIHBhc3MgYW4gaW5zdGFuY2Ugb2YgdGhlICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
IGluIHRoZSBAcmVxdWVzdAorICAgICAgKiBhcmd1bWVudC4KKyAgICAgICoKKyAgICAgICogVGhl
IGRlZmF1bHQgc2lnbmFsIGhhbmRsZXIgd2lsbCBhc3luY2hyb25vdXNseSBydW4gYSByZWd1bGFy
CisgICAgICAqICNHdGtDb2xvckNob29zZXIgZm9yIHRoZSB1c2VyIHRvIGludGVyYWN0IHdpdGgu
CisgICAgICAqCisgICAgICAqIFJldHVybnM6ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMg
ZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUgZXZlbnQuCisgICAgICAqICAgJUZBTFNFIHRvIHBy
b3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4KKyAgICAgICoKKyAgICAgICogU2luY2U6IDIuMgor
ICAgICAgKi8KKyAgICBzaWduYWxzW1JVTl9DT0xPUl9DSE9PU0VSXSA9CisgICAgICAgIGdfc2ln
bmFsX25ldygicnVuLWNvbG9yLWNob29zZXIiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xB
U1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAg
ICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZpZXdDbGFzcywgcnVuX2NvbG9yX2Nob29z
ZXIpLAorICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCAwIC8q
IGFjY3VtdWxhdG9yIGRhdGEgKi8sCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFO
X19PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwgLyogbnVtYmVyIG9mIHBh
cmFtZXRlcnMgKi8KKyAgICAgICAgICAgIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVT
VCk7CisKKyAgICAgLyoqCisgICAgICAqIFdlYktpdFdlYlZpZXc6OmNsb3NlLWNvbG9yLWNob29z
ZXI6CisgICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBz
aWduYWwgaXMgZW1pdHRlZAorICAgICAgKgorICAgICAgKiBFbWl0dGVkIHdoZW4gY29sb3IgcGlj
a2VyIG11c3QgYmUgY2xvc2VkLiBUaGlzIGhhcHBlbnMgYWZ0ZXIgYSBjb2xvcgorICAgICAgKiBo
YXMgYmVlbiBjaG9vc2VuLiBUaGlzIGhhcHBlbnMgYWxzbyBpZiB0aGUgcGFnZSB0cmlnZ2VyaW5n
IHRoZSByZXF1ZXN0CisgICAgICAqIHVubG9hZHMgYmVmb3JlIHRoZSByZXF1ZXN0IGlzIGNvbXBs
ZXRlZC4KKyAgICAgICoKKyAgICAgICogU2luY2U6IDIuMgorICAgICAgKi8KKyAgICBzaWduYWxz
W0NMT1NFX0NPTE9SX0NIT09TRVJdID0KKyAgICAgICAgZ19zaWduYWxfbmV3KCJjbG9zZS1jb2xv
ci1jaG9vc2VyIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyks
CisgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgIEdfU1RSVUNUX09G
RlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIGNsb3NlX2NvbG9yX2Nob29zZXIpLAorICAgICAgICAg
ICAgMCwgMCwKKyAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19WT0lELAorICAg
ICAgICAgICAgR19UWVBFX05PTkUsIDApOworCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2ViVmll
dzo6Y29udGV4dC1tZW51OgogICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9u
IHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZApAQCAtMTY1Myw2ICsxNzUxLDIwIEBAIHZvaWQg
d2Via2l0V2ViVmlld1J1bkZpbGVDaG9vc2VyUmVxdWVzdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBXZWJLaXRGaWxlQ2hvb3NlCiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1JV
Tl9GSUxFX0NIT09TRVJdLCAwLCByZXF1ZXN0LCAmcmV0dXJuVmFsdWUpOwogfQogCitib29sIHdl
YmtpdFdlYlZpZXdTaG93Q29sb3JDaG9vc2VyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0
IENvbG9yJiBjb2xvciwgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5KiBsaXN0ZW5l
cikKK3sKKyAgICBHUmVmUHRyPFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Q+IHJlcXVlc3QgPSBh
ZG9wdEdSZWYod2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdENyZWF0ZShjb2xvciwgbGlzdGVuZXIp
KTsKKworICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgIGdfc2lnbmFsX2VtaXQod2ViVmll
dywgc2lnbmFsc1tSVU5fQ09MT1JfQ0hPT1NFUl0sIDAsIHJlcXVlc3QuZ2V0KCksICZyZXR1cm5W
YWx1ZSk7CisgICAgcmV0dXJuIHJldHVyblZhbHVlOworfQorCit2b2lkIHdlYmtpdFdlYlZpZXdI
aWRlQ29sb3JDaG9vc2VyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19zaWduYWxf
ZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0NMT1NFX0NPTE9SX0NIT09TRVJdLCAwLCBOVUxMKTsKK30K
Kwogc3RhdGljIGJvb2wgd2Via2l0V2ViVmlld1Nob3VsZFNob3dJbnB1dE1ldGhvZHNNZW51KFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgR3RrU2V0dGluZ3MqIHNldHRpbmdzID0gZ3Rr
X3dpZGdldF9nZXRfc2V0dGluZ3MoR1RLX1dJREdFVCh3ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggYjIzZDdmZmIx
M2EwOGYwOTU0ZWNhMzU0Y2U4NmVjNTcwNzNjYTFkNy4uZmRiMjU0NDZmZTkwNjBmMmU0OTNkY2E0
ZjhkNjBjMzNhMjRhNDlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QmFja0ZvcndhcmRMaXN0
Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRG
aWxlQ2hvb3NlclJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZpbmRDb250cm9s
bGVyLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QuaD4K
QEAgLTIzMSw2ICsyMzIsOSBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgZ2Jv
b2xlYW4gICAoKiBsZWF2ZV9mdWxsc2NyZWVuKSAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAg
ICAgICAgICAgICp3ZWJfdmlldyk7CiAgICAgZ2Jvb2xlYW4gICAoKiBydW5fZmlsZV9jaG9vc2Vy
KSAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRGaWxlQ2hvb3Nl
clJlcXVlc3QgICAgKnJlcXVlc3QpOworICAgIGdib29sZWFuICAgKCogcnVuX2NvbG9yX2Nob29z
ZXIpICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdCAgICpyZXF1ZXN0KTsKKyAgICB2b2lkICAgICAgICgqIGNsb3NlX2NvbG9yX2No
b29zZXIpICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKICAg
ICBnYm9vbGVhbiAgICgqIGNvbnRleHRfbWVudSkgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3
ICAgICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdENvbnRleHRNZW51ICAgICAgICAgICAqY29udGV4dF9tZW51
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka0V2ZW50
ICAgICAgICAgICAgICAgICAgICAqZXZlbnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAppbmRleCBlYjFmMjdkYjI5
OGNhZTM4NzgxYjVkYjQyNDhhM2Q2Yjg3ZGE0YmExLi4yYTUyZDM3NjM1NGEzMTY3MjdjNTI0ZDky
NzZlN2Q1YTAxZmZlOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lu
Y2x1ZGUgIldlYkltYWdlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHZvaWQg
d2Via2l0V2ViVmlld0xvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZlbnQp
OwpAQCAtNTAsNiArNTEsOCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdNb3VzZVRhcmdldENoYW5nZWQo
V2ViS2l0V2ViVmlldyosIFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdCosCiB2b2lkIHdlYmtpdFdl
YlZpZXdQcmludEZyYW1lKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqKTsK
IHZvaWQgd2Via2l0V2ViVmlld1Jlc291cmNlTG9hZFN0YXJ0ZWQoV2ViS2l0V2ViVmlldyosIFdl
YktpdDo6V2ViRnJhbWVQcm94eSosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV2ViS2l0
VVJJUmVxdWVzdCopOwogdm9pZCB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXJSZXF1ZXN0KFdl
YktpdFdlYlZpZXcqLCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QqKTsKK2Jvb2wgd2Via2l0V2Vi
Vmlld1Nob3dDb2xvckNob29zZXIoV2ViS2l0V2ViVmlldyosIGNvbnN0IFdlYkNvcmU6OkNvbG9y
JiwgV2ViS2l0OjpXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkqKTsKK3ZvaWQgd2Vi
a2l0V2ViVmlld0hpZGVDb2xvckNob29zZXIoV2ViS2l0V2ViVmlldyopOwogV2ViS2l0V2ViUmVz
b3VyY2UqIHdlYmtpdFdlYlZpZXdHZXRMb2FkaW5nV2ViUmVzb3VyY2UoV2ViS2l0V2ViVmlldyos
IHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7CiB2b2lkIHdlYktpdFdlYlZpZXdEaWRSZWNl
aXZlU25hcHNob3QoV2ViS2l0V2ViVmlldyosIHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYktpdDo6
V2ViSW1hZ2UqKTsKIHZvaWQgd2Via2l0V2ViVmlld1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZShX
ZWJLaXRXZWJWaWV3KiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNn
bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9j
cy5zZ21sCmluZGV4IDJmYTdlYmFjZmRjNjI3ZmIyNDA5NGYwMGJlNmI3MTJmOGQyZDQzY2IuLmFl
MjQ1Yjk3YzRiYWVlYzI1NGJlNDc1MTZmOTkzNzU4ODhmNmQ5NjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Mu
c2dtbApAQCAtMzAsNiArMzAsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRX
ZWJSZXNvdXJjZS54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0RXJyb3Iu
eG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEZhdmljb25EYXRhYmFzZS54
bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0RmlsZUNob29zZXJSZXF1
ZXN0LnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRGaW5kQ29udHJvbGxl
ci54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0Q29va2llTWFuYWdlci54
bWwiLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IGYyODBjNjJkZjI5ZjI2YjMyMjYy
Y2RhZGYyZThkYTMzYzFkOWI5OTAuLjljNDIzM2VkMzkyZTU4YjA2NDExNjE2YjZjMzhiZjRkNzk1
NDA1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtNjg3LDYgKzY4NywyNiBAQCB3
ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIAogPFNFQ1RJ
T04+Cis8RklMRT5XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PC9GSUxFPgorV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdAord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9j
b2xvcgord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZWxlY3RfY29sb3IKKworPFNVQlNF
Q1RJT04gU3RhbmRhcmQ+CitXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MKK1dFQktJVF9U
WVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVAorV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVAor
V0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVAorV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVR
VUVTVF9DTEFTUworV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVF9DTEFTUworV0VCS0lU
X0NPTE9SX0NIT09TRVJfUkVRVUVTVF9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4K
K1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9y
ZXF1ZXN0X2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+V2ViS2l0Rmlu
ZENvbnRyb2xsZXI8L0ZJTEU+CiBXZWJLaXRGaW5kQ29udHJvbGxlcgogV2ViS2l0RmluZE9wdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay50eXBlcyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay50eXBlcwppbmRleCA1ZDk3ZjY5YmVkNWRkN2YzYTc2MTFhOGRhOWRmZTc4ODNmZGE0
NDQ1Li5hZjU3N2FiN2U4OGYxOWY3MmViMGJiMzE5ZTYyMGI3NzJmNWVjZTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5
cGVzCkBAIC0yNCwzICsyNCw0IEBAIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfdHlwZQog
d2Via2l0X3dlYl92aWV3X2dyb3VwX2dldF90eXBlCiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRf
dHlwZQogd2Via2l0X3dlYl9wYWdlX2dldF90eXBlCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1
ZXN0X2dldF90eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggMDZiNjlmNGU2NjMxNjNh
N2ExMTAyOWJjZDdhNTA3ZGQ0NTJmNmU5Yy4uZmVjZTQ3ZjdjNGNlNWNlMmVlNzQ0Zjc5MGY3OGMy
MGY2ZjNiOGZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMjYsNiArMjYsMTUgQEAK
ICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgogCitzdGF0aWMgdm9pZCBhc3NlcnRDb2xvcklzRXF1YWwoY29uc3QgR2RrUkdC
QSogY29sb3IsIGZsb2F0IHJlZCwgZmxvYXQgZ3JlZW4sIGZsb2F0IGJsdWUsIGZsb2F0IGFscGhh
KQoreyAgICAKKyAgICBnX2Fzc2VydChjb2xvcik7CisgICAgZ19hc3NlcnRfY21wZmxvYXQoY29s
b3ItPnJlZCwgPT0sIHJlZCk7CisgICAgZ19hc3NlcnRfY21wZmxvYXQoY29sb3ItPmdyZWVuLCA9
PSwgZ3JlZW4pOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLT5ibHVlLCA9PSwgYmx1ZSk7
CisgICAgZ19hc3NlcnRfY21wZmxvYXQoY29sb3ItPmFscGhhLCA9PSwgYWxwaGEpOworfQorCiBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld0RlZmF1bHRDb250ZXh0KFdlYlZpZXdUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogewogICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4
dCh0ZXN0LT5tX3dlYlZpZXcpID09IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpKTsK
QEAgLTc5Myw2ICs4MDIsODIgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJl
cXVlc3QoRmlsZUNob29zZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHdlYmtpdF9m
aWxlX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwoZmlsZUNob29zZXJSZXF1ZXN0KTsKIH0KIAorY2xh
c3MgQ29sb3JDaG9vc2VyVGVzdDogcHVibGljIFVJQ2xpZW50VGVzdCB7CitwdWJsaWM6CisgICAg
TUFLRV9HTElCX1RFU1RfRklYVFVSRShDb2xvckNob29zZXJUZXN0KTsKKyAgICBDb2xvckNob29z
ZXJUZXN0KCkKKyAgICA6IG1fY29sb3JDaG9vc2VyQ2xvc2VkKEZBTFNFKQorICAgIHsKKyAgICAg
ICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJydW4tY29sb3ItY2hvb3NlciIsIEdfQ0FM
TEJBQ0socnVuQ29sb3JDaG9vc2VyQ2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgZ19zaWduYWxf
Y29ubmVjdChtX3dlYlZpZXcsICJjbG9zZS1jb2xvci1jaG9vc2VyIiwgR19DQUxMQkFDSyhjbG9z
ZUNvbG9yQ2hvb3NlckNhbGxiYWNrKSwgdGhpcyk7CisgICAgfQorCisgICAgc3RhdGljIGdib29s
ZWFuIHJ1bkNvbG9yQ2hvb3NlckNhbGxiYWNrKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0KiByZXF1ZXN0LCBDb2xvckNob29zZXJUZXN0KiB0ZXN0KQorICAgIHsKKyAg
ICAgICAgdGVzdC0+cnVuQ29sb3JDaG9vc2VyKHJlcXVlc3QpOworICAgICAgICByZXR1cm4gVFJV
RTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBjbG9zZUNvbG9yQ2hvb3NlckNhbGxiYWNrKFdl
YktpdFdlYlZpZXcqLCBDb2xvckNob29zZXJUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgdGVz
dC0+Y2xvc2VDb2xvckNob29zZXIoKTsKKyAgICB9CisKKyAgICB2b2lkIHJ1bkNvbG9yQ2hvb3Nl
cihXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQorICAgIHsKKyAgICAgICAgYXNz
ZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChyZXF1ZXN0KSk7Cisg
ICAgICAgIG1fY29sb3JDaG9vc2VyUmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgICAgIGdfbWFpbl9s
b29wX3F1aXQobV9tYWluTG9vcCk7CisgICAgfQorCisgICAgdm9pZCBjbG9zZUNvbG9yQ2hvb3Nl
cigpCisgICAgeworICAgICAgICBtX2NvbG9yQ2hvb3NlckNsb3NlZCA9IFRSVUU7CisgICAgfQor
CisgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogY2xpY2tNb3VzZUJ1dHRvbkFuZFdhaXRG
b3JDb2xvckNob29zZXJSZXF1ZXN0KGludCB4LCBpbnQgeSkKKyAgICB7CisgICAgICAgIGNsaWNr
TW91c2VCdXR0b24oeCwgeSk7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsK
KyAgICAgICAgcmV0dXJuIG1fY29sb3JDaG9vc2VyUmVxdWVzdC5nZXQoKTsKKyAgICB9CisKKyAg
ICBnYm9vbGVhbiBjbG9zZWRTaWduYWwoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY29sb3JD
aG9vc2VyQ2xvc2VkOworICAgIH0KKworcHJpdmF0ZToKKyAgICBHUmVmUHRyPFdlYktpdENvbG9y
Q2hvb3NlclJlcXVlc3Q+IG1fY29sb3JDaG9vc2VyUmVxdWVzdDsKKyAgICBib29sIG1fY29sb3JD
aG9vc2VyQ2xvc2VkOworfTsKKworc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDb2xvckNob29zZXJS
ZXF1ZXN0KENvbG9yQ2hvb3NlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgdGVz
dC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKCk7CisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGNvbG9yQ2hvb3NlckhUTUwgPSAiPGh0bWw+PGJvZHk+PGlucHV0IHN0eWxlPSdwb3NpdGlv
bjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7bWFyZ2luOjA7cGFkZGluZzowJyB0eXBlPSdjb2xvcicg
dmFsdWU9JyNmZjAwMDAnLz48L2JvZHk+PC9odG1sPiI7CisgICAgdGVzdC0+bG9hZEh0bWwoY29s
b3JDaG9vc2VySFRNTCwgMCk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Cisg
ICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogY29sb3JDaG9vc2VyUmVxdWVzdCA9IHRlc3Qt
PmNsaWNrTW91c2VCdXR0b25BbmRXYWl0Rm9yQ29sb3JDaG9vc2VyUmVxdWVzdCg1LCA1KTsKKyAg
ICBHZGtSR0JBKiBjb2xvciA9IHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJl
bnRfY29sb3IoY29sb3JDaG9vc2VyUmVxdWVzdCk7CisgICAgYXNzZXJ0Q29sb3JJc0VxdWFsKGNv
bG9yLCAxLjAsIDAuMCwgMC4wLCAxLjApOworCisgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdh
aXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLnZhbHVlID0g
JyMwMGZmMDAnOyIsIDApOworICAgIGNvbG9yID0gd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVz
dF9nZXRfY3VycmVudF9jb2xvcihjb2xvckNob29zZXJSZXF1ZXN0KTsKKyAgICBhc3NlcnRDb2xv
cklzRXF1YWwoY29sb3IsIDEuMCwgMC4wLCAwLjAsIDEuMCk7CisKKyAgICBnX2Fzc2VydCghdGVz
dC0+Y2xvc2VkU2lnbmFsKCkpOworICAgIEdka1JHQkEgYmx1ZSA9IHswLjAsIDAuMCwgMS4wLCAx
LjB9OworICAgIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yKGNvbG9y
Q2hvb3NlclJlcXVlc3QsICZibHVlKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5jbG9zZWRTaWduYWwo
KSk7CisgICAgY29sb3IgPSB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9jdXJyZW50
X2NvbG9yKGNvbG9yQ2hvb3NlclJlcXVlc3QpOworICAgIGFzc2VydENvbG9ySXNFcXVhbChjb2xv
ciwgMC4wLCAwLjAsIDEuMCwgMS4wKTsKKworICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGph
dmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQo
ImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykudmFsdWU7IiwgMCk7CisgICAgR093blB0
cjxjaGFyPiB2YWx1ZVN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmlu
ZyhqYXZhc2NyaXB0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdl
dCgpLCA9PSwgIiMwMDAwZmYiKTsKK30KKwogY2xhc3MgRnVsbFNjcmVlbkNsaWVudFRlc3Q6IHB1
YmxpYyBXZWJWaWV3VGVzdCB7CiBwdWJsaWM6CiAgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShG
dWxsU2NyZWVuQ2xpZW50VGVzdCk7CkBAIC0xMjUxLDYgKzEzMzYsNyBAQCB2b2lkIGJlZm9yZUFs
bCgpCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ2aWV3LW1vZGUiLCB0
ZXN0V2ViVmlld01vZGUpOwogICAgIFNuYXBzaG90V2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2Vi
VmlldyIsICJzbmFwc2hvdCIsIHRlc3RXZWJWaWV3U25hcHNob3QpOwogICAgIFdlYlZpZXdUZXN0
OjphZGQoIldlYktpdFdlYlZpZXciLCAicGFnZS12aXNpYmlsaXR5IiwgdGVzdFdlYlZpZXdQYWdl
VmlzaWJpbGl0eSk7CisgICAgQ29sb3JDaG9vc2VyVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3Iiwg
ImNvbG9yLWNob29zZXItcmVxdWVzdCIsIHRlc3RXZWJWaWV3Q29sb3JDaG9vc2VyUmVxdWVzdCk7
CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvd2Via2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
d2Via2l0Mi5oCmluZGV4IDNhMzkyMTAwYjM0MDMwMjc2MGUwNzdkZDBhY2M1MTZmZTVmMDFkOGUu
LjNiYjVmMDk1NjA1ZTgwNzdkMzc4NmE2OWM0N2ZjZTQzZTEzYmMyNmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlIDx3ZWJraXQyL1dlYktpdEVudW1UeXBlcy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0
RXJyb3IuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZhdmljb25EYXRhYmFzZS5oPgorI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRGaW5kQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Rm9ybVN1Ym1pc3Np
b25SZXF1ZXN0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29s
b3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwCmluZGV4IDBlZTc5ZGQ3MWEz
NmQyNTM5ZmZhZDQ0N2ZlOWE2MzBiYTkyNjY2NjIuLmJhMDUxNzM0N2VlNzEzZTQwMzcwYzczMWFl
MmE0Njc5OTQ2NWQ3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuY3BwCkBAIC01NSw2ICs1
NSwxNCBAQCB2b2lkIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eTo6c2V0Q29sb3Io
Y29uc3QgU3RyaW5nJiBjb2xvcikKICAgICBtX3BhZ2UtPmVuZENvbG9yQ2hvb3NlcigpOwogfQog
Cit2b2lkIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eTo6ZW5kQ29sb3JDaG9vc2Vy
KCkKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYWdlLT5l
bmRDb2xvckNob29zZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaAppbmRleCBk
MjhlYjhhYTk1YzJkOGRiMDZkMjFiYjc0NjAxZGE5ZGNlZTFhNDdkLi42MmEyZTBiODBiOWQzNjdl
ODk2ZTdjMWM2MjZkZDg4YWRhNDFkYTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5oCkBAIC01
MCw2ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIHZvaWQg
c2V0Q29sb3IoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBlbmRDb2xvckNob29zZXIoKTsKIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHko
V2ViUGFnZVByb3h5Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0
RmVhdHVyZXMubTQgYi9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKaW5k
ZXggMjVlZDgwZTVhMGJkNGJhZmQzYzgzYTEyNWUxOWVmNTE5ZmI2NjcyZC4uZDg0YmQwN2RjMWJj
ZjBjYzUzODc1YTdjZjZjNGFiMTRlM2U2OGFlNyAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29s
cy9TZXR1cFdlYktpdEZlYXR1cmVzLm00CisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJL
aXRGZWF0dXJlcy5tNApAQCAtMTM5LDcgKzEzOSw3IEBAICRzcmNkaXIvVG9vbHMvZ3RrL2dlbmVy
YXRlLWZlYXR1cmUtZGVmaW5lcy1maWxlcyAkQ09ORklHVVJBQkxFX0ZFQVRVUkVfREVGSU5FUyBc
CiAgICAgRU5BQkxFX0lGUkFNRV9TRUFNTEVTUz0xIFwKICAgICBFTkFCTEVfSU5ERVhFRF9EQVRB
QkFTRT0wIFwKICAgICBFTkFCTEVfSU5QVVRfU1BFRUNIPTAgXAotICAgIEVOQUJMRV9JTlBVVF9U
WVBFX0NPTE9SPTAgXAorICAgIEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SPTEgXAogICAgIEVOQUJM
RV9JTlBVVF9UWVBFX0RBVEU9MCBcCiAgICAgRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVfSU5D
T01QTEVURT0wIFwKICAgICBFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMPTAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXIKaW5kZXggYmQ0ZTUyMTQzZTQ4MWI2MTZlZmIyZTc3MGJkMGU4OWVl
NDU2NGU2Yy4uNThmNjE3MWNkOWUzYjJhNDM5NmJlOGU4MDM1NzA3MzAzNzcxOTI4YSAxMDA2NDQK
LS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0zMTgsNiArMzE4LDggQEAgX1pON1dlYkNvcmUxMENsaWVu
dFJlY3RDMUVSS05TXzlGbG9hdFJlY3RFOwogX1pON1dlYkNvcmUxM0JhdHRlcnlTdGF0dXM2Y3Jl
YXRlRWJkZGQ7CiBfWk43V2ViQ29yZTE3QmF0dGVyeUNvbnRyb2xsZXIxNHN1cHBsZW1lbnROYW1l
RXY7CiBfWk43V2ViQ29yZTE3QmF0dGVyeUNvbnRyb2xsZXIyMmRpZENoYW5nZUJhdHRlcnlTdGF0
dXNFUktOM1dURjEyQXRvbWljU3RyaW5nRU5TMV8xMFBhc3NSZWZQdHJJTlNfMTNCYXR0ZXJ5U3Rh
dHVzRUVFOworX1pON1dlYkNvcmU1Q29sb3JDMUVSS04zV1RGNlN0cmluZ0U7CitfWk43V2ViQ29y
ZTE2SFRNTElucHV0RWxlbWVudDI1c2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3NlckVSS05TXzVDb2xv
ckU7CiAKIGxvY2FsOgogX1oqOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDIwMTU4OTY5MmFkOTQ0MDA5ZWRiMGE1M2FkYjc0MjRkNjdkNzFmZjMu
LjFiMjU0ZTg3ODE4YmQyODA1N2JmNTljNGFkY2UwZGUwYWI0MzMxYzMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
Mi0xMi0yMCAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1bmcuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBjb2xvciBpbnB1dAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgaW5wdXQgdHlwZSBjb2xv
ciBpbiBmZWF0dXJlIGxpc3QuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVy
ZUxpc3QucG06CisKIDIwMTMtMDYtMDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQnVpbGQgZml4IGFmdGVyIHIxNTA1OTIuIFdlIG5lZWQgdG8gZGlzYWJsZSBc
MiBzaG91bGRuJ3QgYmUgdHJlYXRlZCBhcyBhbiBlc2NhcGUgY2hhcmFjdGVyLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4IGFhZDA3NWE5MmE0MzI0ZjcwOWJmYjNk
YTZhNzA0MWE4YmI3Y2Q4ZjkuLmU2ZjZkODVjMWFiNWVkYThmZTU3OWQyN2YwYmJhZjNiMTNmMjk5
YTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KQEAgLTI5Nyw3ICsy
OTcsNyBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9JTlBVVF9T
UEVFQ0giLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW5wdXRTcGVlY2hTdXBwb3J0IH0sCiAK
ICAgICB7IG9wdGlvbiA9PiAiaW5wdXQtdHlwZS1jb2xvciIsIGRlc2MgPT4gIlRvZ2dsZSBJbnB1
dCBUeXBlIENvbG9yIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfSU5QVVRfVFlQ
RV9DT0xPUiIsIGRlZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgpIHx8IGlzRWZsKCkgfHwgaXNRdCgp
KSwgdmFsdWUgPT4gXCRpbnB1dFR5cGVDb2xvclN1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9PiAi
RU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IiLCBkZWZhdWx0ID0+IChpc0JsYWNrQmVycnkoKSB8fCBp
c0VmbCgpIHx8IGlzUXQoKSB8fCBpc0d0aygpKSwgdmFsdWUgPT4gXCRpbnB1dFR5cGVDb2xvclN1
cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJpbnB1dC10eXBlLWRhdGUiLCBkZXNjID0+ICJU
b2dnbGUgSW5wdXQgVHlwZSBEYXRlIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
SU5QVVRfVFlQRV9EQVRFIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGlucHV0VHlwZURhdGVT
dXBwb3J0IH0sCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMTA1OWZk
MTZlNWUxZTllZWIyYTQ2YWQ0YmJiNTliZDY2NzA0NDY0My4uZGU1Mzg1ZDQ0YWI5ODFiZWM0OWMx
ZGY3ZmUxNjY1NzRlMGJiYzlhMSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEyLTIwICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2
aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIGNv
bG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGV4cG9ydCBXZWJDb3JlOjpDb2xvcjo6Q29sb3IoV1RGOjpTdHJpbmcgY29uc3QmKSBhbmQKKyAg
ICAgICAgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2VsZWN0Q29sb3JJbkNvbG9yQ2hvb3Nl
cihXZWJDb3JlOjpDb2xvcgorICAgICAgICBjb25zdCYpCisKKyAgICAgICAgKiBTb3VyY2UvYXV0
b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvU2V0dXBX
ZWJLaXRGZWF0dXJlcy5tNDoKKwogMjAxMi0xMC0xMCAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5l
dmllckBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFtHdGtdIHRvbyBsb25nIGZ1bmN0aW9u
IGluIGFuaW1hdGlvbiBzY3JpcHQgY2F1c2UgcmVwYWludCB0byBuZXZlciBoYXBwZW4uCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206558</attachid>
            <date>2013-07-12 11:37:48 -0700</date>
            <delta_ts>2013-07-12 13:41:58 -0700</delta_ts>
            <desc>patch to adress martin&apos;s comments</desc>
            <filename>bug-98935-20130712113524.patch</filename>
            <type>text/plain</type>
            <size>44375</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyNDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc4YzEyOWY2YWJmMjJh
NmM4NjQyNzA5ZTY4NzdhY2I2MjZiZjQ5ZS4uNzNiZDllMGM5NThjYmJiOWMzNDhlNTk5MTliYTBj
NmZmM2Q1ODQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTIwICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dU
S10gQWRkIHN1cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBpbnB1dCB0eXBlIGNvbG9yIGluIGZlYXR1cmUg
bGlzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmZlYXR1cmVzLmFtLmluOgorCiAyMDEzLTA3
LTA4ICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogIkFsd2F5cyBlbmFibGUiIHByb2ZpbGluZyBkb2VzIG5vdCB3
b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggOWU4YzhjNWRmNGYyZDY1MWE4OWQ0MmMzZDU2NDgzNDRm
YjI5NTg4OS4uMDFhZDA0MDYyM2RlMzBlNzBmOTk4ZGQ0MmI5YzhjYzI5NDAxNjRjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEyLTMxICBBcm5hdWQgUmVuZXZpZXIg
IDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBv
cnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFN0dWIgaW1wbGVtZW50YXRpb24gb2YgQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xv
ckNob29zZXIKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKwogMjAxMy0wNy0wOCAg
QnJpYW4gSG9sdCAgPGJyaWFuLmhvbHRAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0dUS10gRnJh
bWVMb2FkZXJDbGllbnQ6IFJlZmFjdG9yIG5ha2VkIHBvaW50ZXJzIHRvIHVzZSBzbWFydCBwb2lu
dGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDVhMjk1OGVkOTZjMGYyOWMyNDgyZmIwM2I2ZGRlZTg0NTI2YTk0
N2UuLjI1YmQ3NDZkNWM4MjFjYzhmODZiNmRhNDAxMTAyM2FlNDYyNjdjNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw2MSBAQAorMjAxMi0xMi0yMCAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmll
ckBzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBjb2xv
ciBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTg5MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnQgaW5wdXQgY29sb3IgdHlwZSBmb3IgV2ViS2l0Mi4KKworICAgICAgICBJbXBsZW1l
bnQgc2hvd0NvbG9yUGlja2VyIGFuZCBoaWRlQ29sb3JQaWNrZXIgVUkgY2xpZW50IGNhbGxiYWNr
cy4KKworICAgICAgICBBZGQgYSBlbmRDb2xvckNob29zZXIgbWV0aG9kIHRvIFdlYkNvbG9yUGlj
a2VyUmVzdWx0TGlzdGVuZXJQcm94eSB0bworICAgICAgICBiZSBhYmxlIHRvIGNhbmNlbCB0aGUg
cmVxdWVzdCB3aXRob3V0IHNlbGVjdGluZyBhIGNvbG9yLgorCisgICAgICAgIFNpbWlsYXJseSB0
byB3aGF0IGhhcHBlbnMgZm9yIGZpbGUgY2hvb3Nlciwgd2hlbiBhIGNvbG9yIGNob29zZXIgaXMK
KyAgICAgICAgbmVlZGVkLCB3ZSBlbWl0IGEgcnVuLWNvbG9yLWNob29zZXIgc2lnbmFsIHdpdGgg
YQorICAgICAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IG9iamVjdC4gSWYgdGhlIHNpZ25h
bCBpcyBub3QgaGFuZGxlZCBieSB0aGUKKyAgICAgICAgYXBwbGljYXRpb24sIHdlIHNob3cgYSBH
dGtHdGtDb2xvckNob29zZXJEaWFsb2cuCisKKyAgICAgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCBBUEkgYWxsb3dzIHRvIHJlYWQgY3VycmVudCBjb2xvciAoZWl0aGVyCisgICAgICAgIGlu
aXRpYWwgY29sb3Igc2V0IGJ5IFdlYkNvcmUgb3IgbGF0ZXIsIGNvbG9yIHNlbGVjdGVkIGJ5IHVz
ZXIpLCB0bworICAgICAgICBzZWxlY3QgYSBjb2xvciwgb3IgdG8gY2FuY2VsIGEgcmVxdWVzdC4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHA6IEFkZGVkLgorICAgICAgICAod2Vi
a2l0Q29sb3JDaG9vc2VyUmVxdWVzdERpc3Bvc2UpOgorICAgICAgICAod2Via2l0Q29sb3JDaG9v
c2VyUmVxdWVzdEdldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3Jl
cXVlc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0
X3NlbGVjdF9jb2xvcik6CisgICAgICAgICh3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dl
dF9jdXJyZW50X2NvbG9yKToKKyAgICAgICAgKHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RDcmVh
dGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3QuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VUlDbGllbnQuY3BwOgorICAgICAgICAoc2hvd0NvbG9yUGlja2VyKToKKyAgICAgICAg
KGhpZGVDb2xvclBpY2tlcik6CisgICAgICAgIChhdHRhY2hVSUNsaWVudFRvVmlldyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJr
aXRXZWJWaWV3Q2xvc2VDb2xvckNob29zZXIpOgorICAgICAgICAoY29sb3JDaG9vc2VyRGlhbG9n
UmVzcG9uc2VDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3UnVuQ29sb3JDaG9vc2Vy
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdTaG93Q29sb3JDaG9vc2VyKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdIaWRlQ29s
b3JDaG9vc2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAg
ICAgKGFzc2VydENvbG9ySXNFcXVhbCk6CisgICAgICAgICh0ZXN0V2ViVmlld0NvbG9yQ2hvb3Nl
clJlcXVlc3QpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay93ZWJraXQyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0
TGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yUGlja2VyUmVzdWx0
TGlzdGVuZXJQcm94eTo6ZW5kQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
Q29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5Lmg6CisKIDIwMTMtMDYtMTQgIEFybmF1ZCBS
ZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBbV0syXSBh
cGkgdG8gbm90aWZ5IGlucHV0IGNvbG9yIHZhbHVlIGNoYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCmluZGV4IDgzMzI2
MzM3Y2VlZTRhMGYzNDFmZDUyN2RjNjM0NzIyOTFiZjg3MjguLmQxYzg5ZTViNzhhNzU2YTEwYmM2
MWJjNTQ4MmY4YzE3OTBlNGY3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAtOTgsNiArOTgsNyBAQAogI2lmZGVm
IEdES19XSU5ET1dJTkdfWDExCiAjaW5jbHVkZSAiV2lkZ2V0QmFja2luZ1N0b3JlR3RrWDExLmgi
CiAjZW5kaWYKKyNpbmNsdWRlICJDb2xvckNob29zZXJDbGllbnQuaCIKICNpbmNsdWRlICJXaWRn
ZXRCYWNraW5nU3RvcmVDYWlyby5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTg2
MSw2ICs4NjIsMTQgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90KQogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK1Bhc3NPd25QdHI8Q29sb3JD
aG9vc2VyPiBDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGll
bnQqLCBjb25zdCBDb2xvciYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKyNlbmRpZgorCiB2b2lkIENocm9tZUNsaWVudDo6cnVuT3BlblBhbmVsKEZy
YW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4gcHJwRmlsZUNob29zZXIpCiB7CiAgICAgR1Jl
ZlB0cjxXZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYod2Via2l0
X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2NyZWF0ZShwcnBGaWxlQ2hvb3NlcikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmggYi9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAppbmRleCAz
OGZjMTQ2NmYwMGU1MmQxZDc1MjM2MjdjMjJiZjZjZTE0OWI5NmQxLi4zMTcwMDExNDNkMzNlNGY3
YTVhNmE2N2VjNTNmOTNlOWM2ZjhjNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMzYsNiArMzYsNyBAQCB0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0V2ViVmlldyBXZWJLaXRXZWJWaWV3OwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CitjbGFzcyBDb2xvcjsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC0xMTksNiArMTIwLDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogI2VuZGlm
CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3Bh
Y2VOZWVkZWQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3QgdG90YWxTcGFjZU5lZWRlZCk7CisK
KyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICAgICAgdmlydHVhbCBQYXNzT3duUHRy
PENvbG9yQ2hvb3Nlcj4gY3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCosIGNv
bnN0IENvbG9yJik7CisjZW5kaWYKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVs
KEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
bG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgRmlsZUljb25Mb2Fk
ZXIqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggYjE1MDE3ZmViOGNkMGM1
Zjg4NGE1OGQ5NTkzNTk3YmRhNmEyNzYyZS4uNzhkYjVhMjc5NWQzNDI2Y2EzNmYzZGY2NzBlY2M0
ZGFkNTdiMzBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC05Niw2ICs5Niw3
IEBAIHdlYmtpdDJfaF9hcGkgKz0gXAogd2Via2l0Mmd0a19oX2FwaSArPSBcCiAJJChXZWJLaXQy
KS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaCBcCiAJJChXZWJLaXQy
KS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmggXAorCSQoV2Vi
S2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oIFwKIAkk
KFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmggXAogCSQoV2Vi
S2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmggXAogCSQo
V2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmggXApAQCAt
NjU4LDYgKzY1OSw5IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJp
dmF0ZS5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0LmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5jcHAgXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmggXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51UHJpdmF0ZS5oIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2YxZjEyNWZjMjNjM2I1NzQ4N2U2MzAw
OTU0ZmE3Y2ExZDQyZGE2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuY3BwCkBAIC0wLDAgKzEsMTYw
IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEyLCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcworICogICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAg
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3QuaCIKKworI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2
YXRlLmgiCisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworLyoqCisgKiBTRUNUSU9OOiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0CisgKiBA
U2hvcnRfZGVzY3JpcHRpb246IEEgcmVxdWVzdCB0byBvcGVuIGEgY29sb3IgY2hvb3NlcgorICog
QFRpdGxlOiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0CisgKiBAU2VlX2Fsc286ICNXZWJLaXRX
ZWJWaWV3CisgKgorICogV2hlbmV2ZXIgdGhlIHVzZXIgaW50ZXJhY3RzIHdpdGggYW4gJmx0O2lu
cHV0IHR5cGU9J2NvbG9yJyAvJmd0OworICogSFRNTCBlbGVtZW50LCBXZWJLaXQgd2lsbCBuZWVk
IHRvIHNob3cgYSBkaWFsb2cgdG8gY2hvb3NlIGEgY29sb3IuIEZvciB0aGF0CisgKiB0byBoYXBw
ZW4gaW4gYSBnZW5lcmFsIHdheSwgaW5zdGVhZCBvZiBqdXN0IG9wZW5pbmcgYSAjR3RrQ29sb3JD
aG9vc2VyCisgKiAod2hpY2ggbWlnaHQgYmUgbm90IGRlc2lyYWJsZSBpbiBzb21lIGNhc2VzLCB3
aGljaCBjb3VsZCBwcmVmZXIgdG8gdXNlIHRoZWlyCisgKiBvd24gY29sb3IgY2hvb3NlciBkaWFs
b2cpLCBXZWJLaXQgd2lsbCBmaXJlIHRoZQorICogI1dlYktpdFdlYlZpZXc6OnJ1bi1jb2xvci1j
aG9vc2VyIHNpZ25hbCB3aXRoIGEgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAqIG9iamVj
dCwgd2hpY2ggd2lsbCBhbGxvdyB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIHRvIHNwZWNpZnkgdGhl
IGNvbG9yIHRvIGJlCisgKiBzZWxlY3RlZCwgdG8gaW5zcGVjdCB0aGUgZGV0YWlscyBvZiB0aGUg
cmVxdWVzdCAoZS5nLiB0byBnZXQgaW5pdGlhbCBjb2xvcikKKyAqIGFuZCB0byBjYW5jZWwgdGhl
IHJlcXVlc3QsIGluIGNhc2Ugbm90aGluZyB3YXMgc2VsZWN0ZWQuCisgKgorICogSW4gY2FzZSB0
aGUgY2xpZW50IGFwcGxpY2F0aW9uIGRvZXMgbm90IHdpc2ggdG8gaGFuZGxlIHRoaXMgc2lnbmFs
LAorICogV2ViS2l0IHdpbGwgcHJvdmlkZSBhIGRlZmF1bHQgaGFuZGxlciB3aGljaCB3aWxsIGFz
eW5jaHJvbm91c2x5IHJ1bgorICogYSByZWd1bGFyICNHdGtDb2xvckNob29zZXIgZm9yIHRoZSB1
c2VyIHRvIGludGVyYWN0IHdpdGguCisgKi8KKworc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0UHJpdmF0ZSB7CisgICAgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5KiBs
aXN0ZW5lcjsKKyAgICBHZGtSR0JBIGNvbG9yOworICAgIGJvb2wgaGFuZGxlZFJlcXVlc3Q7Cit9
OworCitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCwgd2Via2l0
X2NvbG9yX2Nob29zZXJfcmVxdWVzdCwgR19UWVBFX09CSkVDVCkKKworZW51bSB7CisgICAgUFJP
UF8wLAorCisgICAgUFJPUF9DT0xPUgorfTsKKworc3RhdGljIHZvaWQgd2Via2l0Q29sb3JDaG9v
c2VyUmVxdWVzdERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQoreyAgICAKKyAgICBXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVChv
YmplY3QpOworCisgICAgaWYgKCFyZXF1ZXN0LT5wcml2LT5oYW5kbGVkUmVxdWVzdCkgeworICAg
ICAgICByZXF1ZXN0LT5wcml2LT5oYW5kbGVkUmVxdWVzdCA9IHRydWU7CisgICAgICAgIHJlcXVl
c3QtPnByaXYtPmxpc3RlbmVyLT5lbmRDb2xvckNob29zZXIoKTsKKyAgICB9Cit9CisKK3N0YXRp
YyB2b2lkIHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3Bl
YykKK3sKKyAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX0NP
TE9SX0NIT09TRVJfUkVRVUVTVChvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7
CisgICAgY2FzZSBQUk9QX0NPTE9SOgorICAgICAgICBnX3ZhbHVlX3NldF9ib3hlZCh2YWx1ZSwg
JnJlcXVlc3QtPnByaXYtPmNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJ
ZCwgcGFyYW1TcGVjKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9jb2xvcl9jaG9v
c2VyX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MqIHJl
cXVlc3RDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdENsYXNzID0gR19PQkpFQ1Rf
Q0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Vi
a2l0Q29sb3JDaG9vc2VyUmVxdWVzdEdldFByb3BlcnR5OworICAgIG9iamVjdENsYXNzLT5kaXNw
b3NlID0gd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdERpc3Bvc2U7CisKKyAgICAvKioKKyAgICAg
KiBXZWJLaXRXZWJWaWV3OmNvbG9yOgorICAgICAqCisgICAgICogVGhlICNHZGtSR0JBIGNvbG9y
IG9mIHRoZSByZXF1ZXN0CisgICAgICoKKyAgICAgKiBTaW5jZTogMi4yCisgICAgICovCisgICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywKKyAgICAgICAgUFJP
UF9DT0xPUiwKKyAgICAgICAgZ19wYXJhbV9zcGVjX2JveGVkKCJjb2xvciIsCisgICAgICAgICAg
ICBfKCJDdXJyZW50IGNvbG9yIiksCisgICAgICAgICAgICBfKCJUaGUgY3VycmVudCBjb2xvciBm
b3IgdGhlIHJlcXVlc3QiKSwKKyAgICAgICAgICAgIEdES19UWVBFX1JHQkEsCisgICAgICAgICAg
ICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKK30KKworLyoqCisgKiB3ZWJraXRfY29sb3JfY2hv
b3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvcjoKKyAqIEByZXF1ZXN0OiBhICNXZWJLaXRGaWxlQ2hv
b3NlclJlcXVlc3QKKyAqIEBjb2xvcjogYSBwb2ludGVyICNHZGtSR0JBCisgKgorICogQXNrIFdl
YktpdCB0byBzZWxlY3QgY29sb3IgYW5kIGNvbXBsZXRlIHRoZSByZXF1ZXN0LgorICoKKyAqIFNp
bmNlOiAyLjIKKyAqLwordm9pZCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9j
b2xvcihXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBHZGtSR0JBKiBj
b2xvcikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JF
UVVFU1QocmVxdWVzdCkpOworICAgIGlmIChyZXF1ZXN0LT5wcml2LT5oYW5kbGVkUmVxdWVzdCkK
KyAgICAgICAgcmV0dXJuOworICAgIHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0ID0gdHJ1
ZTsKKworICAgIHJlcXVlc3QtPnByaXYtPmNvbG9yID0gKmNvbG9yOworICAgIHJlcXVlc3QtPnBy
aXYtPmxpc3RlbmVyLT5zZXRDb2xvcihDb2xvcihyZXF1ZXN0LT5wcml2LT5jb2xvcikuc2VyaWFs
aXplZCgpKTsKK30KKworLyoqCisgKiB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9j
dXJyZW50X2NvbG9yOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QK
KyAqCisgKiBXaGlsZSBubyBjb2xvciBoYXMgYmVlbiBzZWxlY3RlZCwgaXQgaXMgdGhlIGluaXRp
YWwgdmFsdWUgZGVmaW5lZCBieSBXZWJLaXQuCisgKiBXaGVuIGEgY29sb3IgaGFzIGJlZW4gc2Vs
ZWN0ZWQsIHRoaXMgYmVjb21lcyB0aGUgc2VsZWN0ZWQgdmFsdWUuCisgKgorICogUmV0dXJuczog
KHRyYW5zZmVyIG5vbmUpOiB0aGUgY3VycmVudCBjb2xvciBvZiByZXF1ZXN0LiAKKyAqCisgKiBT
aW5jZTogMi4yCisgKi8KK0dka1JHQkEqIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0
X2N1cnJlbnRfY29sb3IoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKHJl
cXVlc3QpLCAwKTsKKworICAgIHJldHVybiAmcmVxdWVzdC0+cHJpdi0+Y29sb3I7Cit9CisKK1dl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RDcmVhdGUo
Y29uc3QgQ29sb3ImIGluaXRpYWxDb2xvciwgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclBy
b3h5KiBsaXN0ZW5lcikKK3sKKyAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0
ID0gV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
Q09MT1JfQ0hPT1NFUl9SRVFVRVNULCBOVUxMKSk7CisgICAgcmVxdWVzdC0+cHJpdi0+bGlzdGVu
ZXIgPSBsaXN0ZW5lcjsKKyAgICByZXF1ZXN0LT5wcml2LT5jb2xvciA9IGluaXRpYWxDb2xvcjsK
KyAgICByZXR1cm4gcmVxdWVzdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wMzBiNzZhMzQ0M2NiOGM0MDY1ODUyZDFlODVjYTE0NTlmN2E0MWI0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdC5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNh
bXN1bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0
OgorICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAg
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisg
KiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQy
X0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9u
bHkgPHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlm
CisKKyNpZm5kZWYgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdF9oCisjZGVmaW5lIFdlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3RfaAorCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lU
X1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUICAgICAgICAgICAgKHdlYmtpdF9jb2xvcl9jaG9v
c2VyX3JlcXVlc3RfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVR
VUVTVChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBX
RUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QsIFdlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3QpKQorI2RlZmluZSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUX0NMQVNTKGtsYXNzKSAg
ICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0NPTE9SX0NI
T09TRVJfUkVRVUVTVCwgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdENsYXNzKSkKKyNkZWZpbmUg
V0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVD
S19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1Qp
KQorI2RlZmluZSBXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUX0NMQVNTKGtsYXNzKSAo
R19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0NPTE9SX0NIT09T
RVJfUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1RfR0VUX0NM
QVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVf
Q09MT1JfQ0hPT1NFUl9SRVFVRVNULCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MpKQor
Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCAgICAgICAgV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdDsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0Q2xhc3MgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3M7Cit0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUgV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdFByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCB7Cisg
ICAgR09iamVjdCBwYXJlbnQ7CisKKyAgICAvKjwgcHJpdmF0ZSA+Ki8KKyAgICBXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0UHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdENsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsK
KworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlw
ZSAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIEdka1JHQkEgKgord2Via2l0X2NvbG9y
X2Nob29zZXJfcmVxdWVzdF9nZXRfY3VycmVudF9jb2xvciAgKFdlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3QgKnJlcXVlc3QpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9jb2xvcl9jaG9vc2Vy
X3JlcXVlc3Rfc2VsZWN0X2NvbG9yICAgICAgIChXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICpy
ZXF1ZXN0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHZGtSR0JBICAgICAgICAgICAgICpjb2xvcik7CisKK0dfRU5EX0RFQ0xTCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc4
YTZjN2RjZTJkMWQ1Nzk1YmM5ZDY4ZmFiMDFhYmVhYWU2MmY2ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3RQcml2YXRlLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwg
U2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBt
ZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAq
ICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUK
KyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAq
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdFByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
UHJpdmF0ZV9oCisKKyNpbmNsdWRlICJXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHku
aCIKKyNpbmNsdWRlICJXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2Vi
S2l0UHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKworV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdCogd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdENyZWF0ZShjb25zdCBXZWJD
b3JlOjpDb2xvciYsIFdlYktpdDo6V2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5Kik7
CisKKyNlbmRpZiAvLyBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKaW5k
ZXggZDg1NDEzZmNlYzllYjlhOTQyYjQyNTc3MTVlZjcyZDBkNzNiNGZkYi4uZjE3NzE3NjI4YzUw
OWM4NmFkNDY4YmU4ZGM0ZWQ0NGJiOTZjZWU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcApAQCAtMjAsNiArMjAsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFVJQ2xpZW50LmgiCiAKKyNpbmNs
dWRlICJXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dEZpbGVDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIK
QEAgLTE1OCw2ICsxNTksMTYgQEAgc3RhdGljIHZvaWQgcnVuTW9kYWwoV0tQYWdlUmVmIHBhZ2Us
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiAgICAgd2Via2l0V2ViVmlld1J1bkFzTW9kYWwoV0VC
S0lUX1dFQl9WSUVXKGNsaWVudEluZm8pKTsKIH0KIAorc3RhdGljIHZvaWQgc2hvd0NvbG9yUGlj
a2VyKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgaW5pdGlhbENvbG9yLCBXS0NvbG9yUGlja2VyUmVz
dWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAg
d2Via2l0V2ViVmlld1Nob3dDb2xvckNob29zZXIoV0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8p
LCBXZWJDb3JlOjpDb2xvcih0b1dURlN0cmluZyhpbml0aWFsQ29sb3IpKSwgdG9JbXBsKGxpc3Rl
bmVyKSk7Cit9CisKK3N0YXRpYyB2b2lkIGhpZGVDb2xvclBpY2tlcihXS1BhZ2VSZWYsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgd2Via2l0V2ViVmlld0hpZGVDb2xvckNob29zZXIo
V0VCS0lUX1dFQl9WSUVXKGNsaWVudEluZm8pKTsKK30KKwogdm9pZCBhdHRhY2hVSUNsaWVudFRv
VmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIFdLUGFnZVVJQ2xpZW50IHdrVUlD
bGllbnQgPSB7CkBAIC0yMDYsOSArMjE3LDkgQEAgdm9pZCBhdHRhY2hVSUNsaWVudFRvVmlldyhX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICBtb3VzZURpZE1vdmVPdmVyRWxlbWVudCwK
ICAgICAgICAgMCwgLy8gZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QKICAgICAgICAgMCwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkCi0gICAgICAg
IDAsIC8vIHNob3dDb2xvclBpY2tlcgotICAgICAgICAwLCAvLyBoaWRlQ29sb3JQaWNrZXIKKyAg
ICAgICAgc2hvd0NvbG9yUGlja2VyLCAvLyBzaG93Q29sb3JQaWNrZXIKICAgICAgICAgMCwgLy8g
c2V0Q29sb3JQaWNrZXIKKyAgICAgICAgaGlkZUNvbG9yUGlja2VyLCAvLyBoaWRlQ29sb3JQaWNr
ZXIKICAgICAgICAgMCwgLy8gcGx1Z2luTG9hZFBvbGljeQogICAgIH07CiAgICAgV0tQYWdlUmVm
IHdrUGFnZSA9IHRvQVBJKHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdf
QkFTRSh3ZWJWaWV3KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCAyOTQ5NzA5MGRiNjA3ZGJjYTlmMDFhYjlmNDRjOTMy
N2U0ODIxYzFmLi5lZmQzZDMzMzlmNjkyMzZmOGJmYzgwZjE1ZjY0N2IyYjU4M2VhMjNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNw
cApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIldlYkRhdGEuaCIKICNpbmNsdWRlICJXZWJL
aXRBdXRoZW50aWNhdGlvbkRpYWxvZy5oIgogI2luY2x1ZGUgIldlYktpdEJhY2tGb3J3YXJkTGlz
dFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYktpdENvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0
Q29udGV4dE1lbnVJdGVtUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdENvbnRleHRNZW51UHJp
dmF0ZS5oIgpAQCAtMTEwLDYgKzExMSw5IEBAIGVudW0gewogCiAgICAgUlVOX0ZJTEVfQ0hPT1NF
UiwKIAorICAgIFJVTl9DT0xPUl9DSE9PU0VSLAorICAgIENMT1NFX0NPTE9SX0NIT09TRVIsCisK
ICAgICBDT05URVhUX01FTlUsCiAgICAgQ09OVEVYVF9NRU5VX0RJU01JU1NFRCwKIApAQCAtMTg3
LDYgKzE5MSw5IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgIHVuc2lnbmVk
IGxvbmcgZmF2aWNvbkNoYW5nZWRIYW5kbGVySUQ7CiAKICAgICBTbmFwc2hvdFJlc3VsdHNNYXAg
c25hcHNob3RSZXN1bHRzTWFwOworCisgICAgR3RrV2lkZ2V0KiBjb2xvckNob29zZXJEaWFsb2c7
CisgICAgR1JlZlB0cjxXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PiBjb2xvckNob29zZXJSZXF1
ZXN0OwogfTsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwpA
QCAtNDQ1LDYgKzQ1Miw0NSBAQCBzdGF0aWMgdm9pZCBmaWxlQ2hvb3NlckRpYWxvZ1Jlc3BvbnNl
Q2FsbGJhY2soR3RrRGlhbG9nKiBkaWFsb2csIGdpbnQgcmVzcG9uc2VJRAogICAgIGd0a193aWRn
ZXRfZGVzdHJveShHVEtfV0lER0VUKGRpYWxvZykpOwogfQogCitzdGF0aWMgdm9pZCB3ZWJraXRX
ZWJWaWV3Q2xvc2VDb2xvckNob29zZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICB3
ZWJWaWV3LT5wcml2LT5jb2xvckNob29zZXJSZXF1ZXN0ID0gMDsKKworICAgIGlmICh3ZWJWaWV3
LT5wcml2LT5jb2xvckNob29zZXJEaWFsb2cpIHsKKyAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95
KHdlYlZpZXctPnByaXYtPmNvbG9yQ2hvb3NlckRpYWxvZyk7CisgICAgICAgIHdlYlZpZXctPnBy
aXYtPmNvbG9yQ2hvb3NlckRpYWxvZyA9IDA7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBjb2xv
ckNob29zZXJEaWFsb2dSZXNwb25zZUNhbGxiYWNrKEd0a1dpZGdldCogZGlhbG9nLCBnaW50IHJl
c3BvbnNlSUQsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgaWYgKHJlc3BvbnNlSUQg
PT0gR1RLX1JFU1BPTlNFX09LKSB7CisgICAgICAgIEdka1JHQkEgY29sb3I7CisgICAgICAgIGd0
a19jb2xvcl9jaG9vc2VyX2dldF9yZ2JhKEdUS19DT0xPUl9DSE9PU0VSKGRpYWxvZyksICZjb2xv
cik7CisgICAgICAgIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yKHdl
YlZpZXctPnByaXYtPmNvbG9yQ2hvb3NlclJlcXVlc3QuZ2V0KCksICZjb2xvcik7CisgICAgfSBl
bHNlCisgICAgICAgIHdlYmtpdFdlYlZpZXdDbG9zZUNvbG9yQ2hvb3Nlcih3ZWJWaWV3KTsKK30K
Kworc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdSdW5Db2xvckNob29zZXIoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAg
ICBHdGtXaWRnZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdF
VCh3ZWJWaWV3KSk7CisgICAgaWYgKCF3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3codG9w
bGV2ZWwpKQorICAgICAgICB0b3BsZXZlbCA9IDA7CisKKyAgICBHdGtXaWRnZXQqIGRpYWxvZyA9
IGd0a19jb2xvcl9jaG9vc2VyX2RpYWxvZ19uZXcoXygiU2VsZWN0IENvbG9yIiksIHRvcGxldmVs
ID8gR1RLX1dJTkRPVyh0b3BsZXZlbCkgOiAwKTsKKworICAgIGd0a19jb2xvcl9jaG9vc2VyX3Nl
dF9yZ2JhKEdUS19DT0xPUl9DSE9PU0VSKGRpYWxvZyksIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3Jl
cXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IocmVxdWVzdCkpOworCisgICAgZ19zaWduYWxfY29ubmVj
dChkaWFsb2csICJyZXNwb25zZSIsIEdfQ0FMTEJBQ0soY29sb3JDaG9vc2VyRGlhbG9nUmVzcG9u
c2VDYWxsYmFjayksIHdlYlZpZXcpOworICAgIGd0a193aWRnZXRfc2hvdyhkaWFsb2cpOworCisg
ICAgd2ViVmlldy0+cHJpdi0+Y29sb3JDaG9vc2VyRGlhbG9nID0gZGlhbG9nOworICAgIHdlYlZp
ZXctPnByaXYtPmNvbG9yQ2hvb3NlclJlcXVlc3QgPSByZXF1ZXN0OworCisgICAgcmV0dXJuIFRS
VUU7Cit9CisKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXIoV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQog
ewogICAgIEd0a1dpZGdldCogdG9wbGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtf
V0lER0VUKHdlYlZpZXcpKTsKQEAgLTYwNSw2ICs2NTEsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAg
ICB3ZWJWaWV3Q2xhc3MtPmRlY2lkZV9wb2xpY3kgPSB3ZWJraXRXZWJWaWV3RGVjaWRlUG9saWN5
OwogICAgIHdlYlZpZXdDbGFzcy0+cGVybWlzc2lvbl9yZXF1ZXN0ID0gd2Via2l0V2ViVmlld1Bl
cm1pc3Npb25SZXF1ZXN0OwogICAgIHdlYlZpZXdDbGFzcy0+cnVuX2ZpbGVfY2hvb3NlciA9IHdl
YmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlcjsKKyAgICB3ZWJWaWV3Q2xhc3MtPnJ1bl9jb2xvcl9j
aG9vc2VyID0gd2Via2l0V2ViVmlld1J1bkNvbG9yQ2hvb3NlcjsKKyAgICB3ZWJWaWV3Q2xhc3Mt
PmNsb3NlX2NvbG9yX2Nob29zZXIgPSB3ZWJraXRXZWJWaWV3Q2xvc2VDb2xvckNob29zZXI7CiAK
ICAgICAvKioKICAgICAgKiBXZWJLaXRXZWJWaWV3OndlYi1jb250ZXh0OgpAQCAtMTIxNywxMyAr
MTI2NSw2NiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRX
ZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgKi8KICAgICBzaWduYWxzW1JVTl9GSUxF
X0NIT09TRVJdID0KICAgICAgICAgZ19zaWduYWxfbmV3KCJydW4tZmlsZS1jaG9vc2VyIiwKLSAg
ICAgICAgICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCi0gICAg
ICAgICAgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKLSAgICAgICAgICAgICAgICAgICAg
IEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIHJ1bl9maWxlX2Nob29zZXIpLAot
ICAgICAgICAgICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCAw
IC8qIGFjY3VtdWxhdG9yIGRhdGEgKi8sCi0gICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFy
c2hhbF9CT09MRUFOX19PQkpFQ1QsCi0gICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVB
TiwgMSwgLyogbnVtYmVyIG9mIHBhcmFtZXRlcnMgKi8KLSAgICAgICAgICAgICAgICAgICAgIFdF
QktJVF9UWVBFX0ZJTEVfQ0hPT1NFUl9SRVFVRVNUKTsKKyAgICAgICAgICAgIEdfVFlQRV9GUk9N
X0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAg
ICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIHJ1bl9maWxlX2No
b29zZXIpLAorICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCAw
IC8qIGFjY3VtdWxhdG9yIGRhdGEgKi8sCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09M
RUFOX19PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwgLyogbnVtYmVyIG9m
IHBhcmFtZXRlcnMgKi8KKyAgICAgICAgICAgIFdFQktJVF9UWVBFX0ZJTEVfQ0hPT1NFUl9SRVFV
RVNUKTsKKworICAgICAvKioKKyAgICAgICogV2ViS2l0V2ViVmlldzo6cnVuLWNvbG9yLWNob29z
ZXI6CisgICAgICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBz
aWduYWwgaXMgZW1pdHRlZAorICAgICAgKiBAcmVxdWVzdDogYSAjV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdAorICAgICAgKgorICAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gdGhl
IHVzZXIgaW50ZXJhY3RzIHdpdGggYSAmbHQ7aW5wdXQKKyAgICAgICogdHlwZT0nY29sb3InIC8m
Z3Q7IEhUTUwgZWxlbWVudCwgcmVxdWVzdGluZyBmcm9tIFdlYktpdCB0byBzaG93CisgICAgICAq
IGEgZGlhbG9nIHRvIHNlbGVjdCBhIGNvbG9yLiBUbyBsZXQgdGhlIGFwcGxpY2F0aW9uIGtub3cg
dGhlIGRldGFpbHMgb2YKKyAgICAgICogdGhlIGNvbG9yIGNob29zZXIsIGFzIHdlbGwgYXMgdG8g
YWxsb3cgdGhlIGNsaWVudCBhcHBsaWNhdGlvbiB0byBlaXRoZXIKKyAgICAgICogY2FuY2VsIHRo
ZSByZXF1ZXN0IG9yIHBlcmZvcm0gYW4gYWN0dWFsIGNvbG9yIHNlbGVjdGlvbiwgdGhlIHNpZ25h
bCB3aWxsCisgICAgICAqIHBhc3MgYW4gaW5zdGFuY2Ugb2YgdGhlICNXZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0IGluIHRoZSBAcmVxdWVzdAorICAgICAgKiBhcmd1bWVudC4KKyAgICAgICoKKyAg
ICAgICogSXQgaXMgcG9zc2libGUgdG8gaGFuZGxlIHRoaXMgcmVxdWVzdCBhc3luY2hyb25vdXNs
eSBieSBpbmNyZWFzaW5nIHRoZQorICAgICAgKiByZWZlcmVuY2UgY291bnQgb2YgdGhlIHJlcXVl
c3QuCisgICAgICAqCisgICAgICAqIFRoZSBkZWZhdWx0IHNpZ25hbCBoYW5kbGVyIHdpbGwgYXN5
bmNocm9ub3VzbHkgcnVuIGEgcmVndWxhcgorICAgICAgKiAjR3RrQ29sb3JDaG9vc2VyIGZvciB0
aGUgdXNlciB0byBpbnRlcmFjdCB3aXRoLgorICAgICAgKgorICAgICAgKiBSZXR1cm5zOiAlVFJV
RSB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50
LgorICAgICAgKiAgICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIuCisgICAg
ICAqCisgICAgICAqIFNpbmNlOiAyLjIKKyAgICAgICovCisgICAgc2lnbmFsc1tSVU5fQ09MT1Jf
Q0hPT1NFUl0gPQorICAgICAgICBnX3NpZ25hbF9uZXcoInJ1bi1jb2xvci1jaG9vc2VyIiwKKyAg
ICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICBH
X1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJW
aWV3Q2xhc3MsIHJ1bl9jb2xvcl9jaG9vc2VyKSwKKyAgICAgICAgICAgIGdfc2lnbmFsX2FjY3Vt
dWxhdG9yX3RydWVfaGFuZGxlZCwgMCAvKiBhY2N1bXVsYXRvciBkYXRhICovLAorICAgICAgICAg
ICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNULAorICAgICAgICAgICAgR19UWVBFX0JP
T0xFQU4sIDEsIC8qIG51bWJlciBvZiBwYXJhbWV0ZXJzICovCisgICAgICAgICAgICBXRUJLSVRf
VFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QpOworCisgICAgIC8qKgorICAgICAgKiBXZWJLaXRX
ZWJWaWV3OjpjbG9zZS1jb2xvci1jaG9vc2VyOgorICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2Vi
S2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgICoKKyAgICAg
ICogRW1pdHRlZCB3aGVuIGNvbG9yIHBpY2tlciBtdXN0IGJlIGNsb3NlZC4gVGhpcyBoYXBwZW5z
IGFmdGVyIGEgY29sb3IKKyAgICAgICogaGFzIGJlZW4gY2hvb3Nlbi4gVGhpcyBoYXBwZW5zIGFs
c28gaWYgdGhlIHBhZ2UgdHJpZ2dlcmluZyB0aGUgcmVxdWVzdAorICAgICAgKiB1bmxvYWRzIGJl
Zm9yZSB0aGUgcmVxdWVzdCBpcyBjb21wbGV0ZWQuCisgICAgICAqCisgICAgICAqIFNpbmNlOiAy
LjIKKyAgICAgICovCisgICAgc2lnbmFsc1tDTE9TRV9DT0xPUl9DSE9PU0VSXSA9CisgICAgICAg
IGdfc2lnbmFsX25ldygiY2xvc2UtY29sb3ItY2hvb3NlciIsCisgICAgICAgICAgICBHX1RZUEVf
RlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1Qs
CisgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBjbG9zZV9j
b2xvcl9jaG9vc2VyKSwKKyAgICAgICAgICAgIDAsIDAsCisgICAgICAgICAgICBnX2NjbG9zdXJl
X21hcnNoYWxfVk9JRF9fVk9JRCwKKyAgICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsKIAogICAg
IC8qKgogICAgICAqIFdlYktpdFdlYlZpZXc6OmNvbnRleHQtbWVudToKQEAgLTE2NTIsNiArMTc1
MywyMCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0RmlsZUNob29zZQogICAgIGdfc2lnbmFsX2VtaXQod2ViVmll
dywgc2lnbmFsc1tSVU5fRklMRV9DSE9PU0VSXSwgMCwgcmVxdWVzdCwgJnJldHVyblZhbHVlKTsK
IH0KIAorYm9vbCB3ZWJraXRXZWJWaWV3U2hvd0NvbG9yQ2hvb3NlcihXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBjb25zdCBDb2xvciYgY29sb3IsIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQ
cm94eSogbGlzdGVuZXIpCit7CisgICAgR1JlZlB0cjxXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RDcmVhdGUoY29s
b3IsIGxpc3RlbmVyKSk7CisKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25h
bF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbUlVOX0NPTE9SX0NIT09TRVJdLCAwLCByZXF1ZXN0Lmdl
dCgpLCAmcmV0dXJuVmFsdWUpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCB3
ZWJraXRXZWJWaWV3SGlkZUNvbG9yQ2hvb3NlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQorewor
ICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tDTE9TRV9DT0xPUl9DSE9PU0VSXSwg
MCwgTlVMTCk7Cit9CisKIHN0YXRpYyBib29sIHdlYmtpdFdlYlZpZXdTaG91bGRTaG93SW5wdXRN
ZXRob2RzTWVudShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEd0a1NldHRpbmdzKiBz
ZXR0aW5ncyA9IGd0a193aWRnZXRfZ2V0X3NldHRpbmdzKEdUS19XSURHRVQod2ViVmlldykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmlu
ZGV4IGIyM2Q3ZmZiMTNhMDhmMDk1NGVjYTM1NGNlODZlYzU3MDczY2ExZDcuLmZkYjI1NDQ2ZmU5
MDYwZjJlNDkzZGNhNGY4ZDYwYzMzYTI0YTQ5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJh
Y2tGb3J3YXJkTGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorI2lu
Y2x1ZGUgPHdlYmtpdDIvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJL
aXRGaW5kQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Rm9ybVN1Ym1pc3Np
b25SZXF1ZXN0Lmg+CkBAIC0yMzEsNiArMjMyLDkgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xh
c3MgewogICAgIGdib29sZWFuICAgKCogbGVhdmVfZnVsbHNjcmVlbikgICAgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogICAgIGdib29sZWFuICAgKCogcnVu
X2ZpbGVfY2hvb3NlcikgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2Vi
X3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0RmlsZUNob29zZXJSZXF1ZXN0ICAgICpyZXF1ZXN0KTsKKyAgICBnYm9vbGVhbiAgICgqIHJ1
bl9jb2xvcl9jaG9vc2VyKSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndl
Yl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3QgICAqcmVxdWVzdCk7CisgICAgdm9pZCAgICAgICAoKiBj
bG9zZV9jb2xvcl9jaG9vc2VyKSAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3
ZWJfdmlldyk7CiAgICAgZ2Jvb2xlYW4gICAoKiBjb250ZXh0X21lbnUpICAgICAgICAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb250ZXh0TWVudSAgICAgICAgICAg
KmNvbnRleHRfbWVudSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHZGtFdmVudCAgICAgICAgICAgICAgICAgICAgKmV2ZW50LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5k
ZXggZWIxZjI3ZGIyOThjYWUzODc4MWI1ZGI0MjQ4YTNkNmI4N2RhNGJhMS4uMmE1MmQzNzYzNTRh
MzE2NzI3YzUyNGQ5Mjc2ZTdkNWEwMWZmZTk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC0yOSw2ICsy
OSw3IEBACiAKICNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXcu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCiB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiwgV2Vi
S2l0TG9hZEV2ZW50KTsKQEAgLTUwLDYgKzUxLDggQEAgdm9pZCB3ZWJraXRXZWJWaWV3TW91c2VU
YXJnZXRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHQqLAog
dm9pZCB3ZWJraXRXZWJWaWV3UHJpbnRGcmFtZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpXZWJG
cmFtZVByb3h5Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdSZXNvdXJjZUxvYWRTdGFydGVkKFdlYktp
dFdlYlZpZXcqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50
aWZpZXIsIFdlYktpdFVSSVJlcXVlc3QqKTsKIHZvaWQgd2Via2l0V2ViVmlld1J1bkZpbGVDaG9v
c2VyUmVxdWVzdChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0Kik7Citi
b29sIHdlYmtpdFdlYlZpZXdTaG93Q29sb3JDaG9vc2VyKFdlYktpdFdlYlZpZXcqLCBjb25zdCBX
ZWJDb3JlOjpDb2xvciYsIFdlYktpdDo6V2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5
Kik7Cit2b2lkIHdlYmtpdFdlYlZpZXdIaWRlQ29sb3JDaG9vc2VyKFdlYktpdFdlYlZpZXcqKTsK
IFdlYktpdFdlYlJlc291cmNlKiB3ZWJraXRXZWJWaWV3R2V0TG9hZGluZ1dlYlJlc291cmNlKFdl
YktpdFdlYlZpZXcqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpOwogdm9pZCB3ZWJLaXRX
ZWJWaWV3RGlkUmVjZWl2ZVNuYXBzaG90KFdlYktpdFdlYlZpZXcqLCB1aW50NjRfdCBjYWxsYmFj
a0lELCBXZWJLaXQ6OldlYkltYWdlKik7CiB2b2lkIHdlYmtpdFdlYlZpZXdSZW1vdmVMb2FkaW5n
V2ViUmVzb3VyY2UoV2ViS2l0V2ViVmlldyosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCAyZmE3ZWJhY2ZkYzYyN2ZiMjQwOTRmMDBiZTZiNzEy
ZjhkMmQ0M2NiLi5hZTI0NWI5N2M0YmFlZWMyNTRiZTQ3NTE2Zjk5Mzc1ODg4ZjZkOTY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
ZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTMwLDYgKzMwLDcgQEAKICAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvV2ViS2l0V2ViUmVzb3VyY2UueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1s
L1dlYktpdEVycm9yLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRGYXZp
Y29uRGF0YWJhc2UueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdENvbG9y
Q2hvb3NlclJlcXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEZp
bGVDaG9vc2VyUmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0
RmluZENvbnRyb2xsZXIueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdENv
b2tpZU1hbmFnZXIueG1sIi8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCBmMjgwYzYy
ZGYyOWYyNmIzMjI2MmNkYWRmMmU4ZGEzM2MxZDliOTkwLi45YzQyMzNlZDM5MmU1OGIwNjQxMTYx
NmI2YzM4YmY0ZDc5NTQwNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTY4Nyw2
ICs2ODcsMjYgQEAgd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2dldF90eXBlCiA8L1NFQ1RJ
T04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdDwvRklMRT4K
K1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rf
Z2V0X2N1cnJlbnRfY29sb3IKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2Nv
bG9yCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdENs
YXNzCitXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QKK1dFQktJVF9DT0xPUl9DSE9P
U0VSX1JFUVVFU1QKK1dFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1QKK1dFQktJVF9DT0xP
Ul9DSE9PU0VSX1JFUVVFU1RfQ0xBU1MKK1dFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1Rf
Q0xBU1MKK1dFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1RfR0VUX0NMQVNTCisKKzxTVUJTRUNU
SU9OIFByaXZhdGU+CitXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZQord2Via2l0X2Nv
bG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxG
SUxFPldlYktpdEZpbmRDb250cm9sbGVyPC9GSUxFPgogV2ViS2l0RmluZENvbnRyb2xsZXIKIFdl
YktpdEZpbmRPcHRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMKaW5kZXggNWQ5N2Y2OWJlZDVkZDdmM2E3NjExYThk
YTlkZmU3ODgzZmRhNDQ0NS4uYWY1NzdhYjdlODhmMTlmNzJlYjBiYjMxOWU2MjBiNzcyZjVlY2Ux
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay50eXBlcwpAQCAtMjQsMyArMjQsNCBAQCB3ZWJraXRfY29udGV4dF9tZW51X2l0
ZW1fZ2V0X3R5cGUKIHdlYmtpdF93ZWJfdmlld19ncm91cF9nZXRfdHlwZQogd2Via2l0X3dlYl9l
eHRlbnNpb25fZ2V0X3R5cGUKIHdlYmtpdF93ZWJfcGFnZV9nZXRfdHlwZQord2Via2l0X2NvbG9y
X2Nob29zZXJfcmVxdWVzdF9nZXRfdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDg4
ZDc3ZjI4NjBlMDYwYTUwNmFiOWJiNWM4MmZhMjhhZmE2NmIxN2EuLjU1ZTQxYzRkODRiNWY1MTcw
Y2ZiMGY1MmM3MTNkMDUzYjBmYzE4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTI2
LDYgKzI2LDE1IEBACiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAorc3RhdGljIHZvaWQgYXNzZXJ0Q29sb3JJc0VxdWFs
KGNvbnN0IEdka1JHQkEqIGNvbG9yLCBmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVl
LCBmbG9hdCBhbHBoYSkKK3sgICAgCisgICAgZ19hc3NlcnQoY29sb3IpOworICAgIGdfYXNzZXJ0
X2NtcGZsb2F0KGNvbG9yLT5yZWQsID09LCByZWQpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNv
bG9yLT5ncmVlbiwgPT0sIGdyZWVuKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChjb2xvci0+Ymx1
ZSwgPT0sIGJsdWUpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLT5hbHBoYSwgPT0sIGFs
cGhhKTsKK30KKwogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdEZWZhdWx0Q29udGV4dChXZWJWaWV3
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2NvbnRleHQodGVzdC0+bV93ZWJWaWV3KSA9PSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0
X2RlZmF1bHQoKSk7CkBAIC03OTMsNiArODAyLDgyIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
RmlsZUNob29zZXJSZXF1ZXN0KEZpbGVDaG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
ICAgICB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsKGZpbGVDaG9vc2VyUmVxdWVz
dCk7CiB9CiAKK2NsYXNzIENvbG9yQ2hvb3NlclRlc3Q6IHB1YmxpYyBVSUNsaWVudFRlc3Qgewor
cHVibGljOgorICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoQ29sb3JDaG9vc2VyVGVzdCk7Cisg
ICAgQ29sb3JDaG9vc2VyVGVzdCgpCisgICAgOiBtX2NvbG9yQ2hvb3NlckNsb3NlZChGQUxTRSkK
KyAgICB7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAicnVuLWNvbG9yLWNo
b29zZXIiLCBHX0NBTExCQUNLKHJ1bkNvbG9yQ2hvb3NlckNhbGxiYWNrKSwgdGhpcyk7CisgICAg
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAiY2xvc2UtY29sb3ItY2hvb3NlciIsIEdf
Q0FMTEJBQ0soY2xvc2VDb2xvckNob29zZXJDYWxsYmFjayksIHRoaXMpOworICAgIH0KKworICAg
IHN0YXRpYyBnYm9vbGVhbiBydW5Db2xvckNob29zZXJDYWxsYmFjayhXZWJLaXRXZWJWaWV3Kiwg
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCwgQ29sb3JDaG9vc2VyVGVzdCogdGVz
dCkKKyAgICB7CisgICAgICAgIHRlc3QtPnJ1bkNvbG9yQ2hvb3NlcihyZXF1ZXN0KTsKKyAgICAg
ICAgcmV0dXJuIFRSVUU7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgY2xvc2VDb2xvckNob29z
ZXJDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiwgQ29sb3JDaG9vc2VyVGVzdCogdGVzdCkKKyAgICB7
CisgICAgICAgIHRlc3QtPmNsb3NlQ29sb3JDaG9vc2VyKCk7CisgICAgfQorCisgICAgdm9pZCBy
dW5Db2xvckNob29zZXIoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKKyAgICB7
CisgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qo
cmVxdWVzdCkpOworICAgICAgICBtX2NvbG9yQ2hvb3NlclJlcXVlc3QgPSByZXF1ZXN0OworICAg
ICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3ApOworICAgIH0KKworICAgIHZvaWQgY2xv
c2VDb2xvckNob29zZXIoKQorICAgIHsKKyAgICAgICAgbV9jb2xvckNob29zZXJDbG9zZWQgPSBU
UlVFOworICAgIH0KKworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIGNsaWNrTW91c2VC
dXR0b25BbmRXYWl0Rm9yQ29sb3JDaG9vc2VyUmVxdWVzdChpbnQgeCwgaW50IHkpCisgICAgewor
ICAgICAgICBjbGlja01vdXNlQnV0dG9uKHgsIHkpOworICAgICAgICBnX21haW5fbG9vcF9ydW4o
bV9tYWluTG9vcCk7CisgICAgICAgIHJldHVybiBtX2NvbG9yQ2hvb3NlclJlcXVlc3QuZ2V0KCk7
CisgICAgfQorCisgICAgZ2Jvb2xlYW4gY2xvc2VkU2lnbmFsKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2NvbG9yQ2hvb3NlckNsb3NlZDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR1JlZlB0
cjxXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PiBtX2NvbG9yQ2hvb3NlclJlcXVlc3Q7CisgICAg
Ym9vbCBtX2NvbG9yQ2hvb3NlckNsb3NlZDsKK307CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
Q29sb3JDaG9vc2VyUmVxdWVzdChDb2xvckNob29zZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQoreworICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBjb2xvckNob29zZXJIVE1MID0gIjxodG1sPjxib2R5PjxpbnB1dCBz
dHlsZT0ncG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO21hcmdpbjowO3BhZGRpbmc6MCcg
dHlwZT0nY29sb3InIHZhbHVlPScjZmYwMDAwJy8+PC9ib2R5PjwvaHRtbD4iOworICAgIHRlc3Qt
PmxvYWRIdG1sKGNvbG9yQ2hvb3NlckhUTUwsIDApOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIGNvbG9yQ2hvb3NlclJl
cXVlc3QgPSB0ZXN0LT5jbGlja01vdXNlQnV0dG9uQW5kV2FpdEZvckNvbG9yQ2hvb3NlclJlcXVl
c3QoNSwgNSk7CisgICAgR2RrUkdCQSogY29sb3IgPSB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1
ZXN0X2dldF9jdXJyZW50X2NvbG9yKGNvbG9yQ2hvb3NlclJlcXVlc3QpOworICAgIGFzc2VydENv
bG9ySXNFcXVhbChjb2xvciwgMS4wLCAwLjAsIDAuMCwgMS4wKTsKKworICAgIHRlc3QtPnJ1bkph
dmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5w
dXQnKS52YWx1ZSA9ICcjMDBmZjAwJzsiLCAwKTsKKyAgICBjb2xvciA9IHdlYmtpdF9jb2xvcl9j
aG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IoY29sb3JDaG9vc2VyUmVxdWVzdCk7Cisg
ICAgYXNzZXJ0Q29sb3JJc0VxdWFsKGNvbG9yLCAxLjAsIDAuMCwgMC4wLCAxLjApOworCisgICAg
Z19hc3NlcnQoIXRlc3QtPmNsb3NlZFNpZ25hbCgpKTsKKyAgICBHZGtSR0JBIGJsdWUgPSB7MC4w
LCAwLjAsIDEuMCwgMS4wfTsKKyAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVj
dF9jb2xvcihjb2xvckNob29zZXJSZXF1ZXN0LCAmYmx1ZSk7CisgICAgZ19hc3NlcnQodGVzdC0+
Y2xvc2VkU2lnbmFsKCkpOworICAgIGNvbG9yID0gd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVz
dF9nZXRfY3VycmVudF9jb2xvcihjb2xvckNob29zZXJSZXF1ZXN0KTsKKyAgICBhc3NlcnRDb2xv
cklzRXF1YWwoY29sb3IsIDAuMCwgMC4wLCAxLjAsIDEuMCk7CisKKyAgICBXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRV
bnRpbEZpbmlzaGVkKCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLnZhbHVlOyIsIDAp
OworICAgIEdPd25QdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRS
ZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih2
YWx1ZVN0cmluZy5nZXQoKSwgPT0sICIjMDAwMGZmIik7Cit9CisKIGNsYXNzIEZ1bGxTY3JlZW5D
bGllbnRUZXN0OiBwdWJsaWMgV2ViVmlld1Rlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9U
RVNUX0ZJWFRVUkUoRnVsbFNjcmVlbkNsaWVudFRlc3QpOwpAQCAtMTI1MSw2ICsxMzM2LDcgQEAg
dm9pZCBiZWZvcmVBbGwoKQogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAi
dmlldy1tb2RlIiwgdGVzdFdlYlZpZXdNb2RlKTsKICAgICBTbmFwc2hvdFdlYlZpZXdUZXN0Ojph
ZGQoIldlYktpdFdlYlZpZXciLCAic25hcHNob3QiLCB0ZXN0V2ViVmlld1NuYXBzaG90KTsKICAg
ICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInBhZ2UtdmlzaWJpbGl0eSIsIHRl
c3RXZWJWaWV3UGFnZVZpc2liaWxpdHkpOworICAgIENvbG9yQ2hvb3NlclRlc3Q6OmFkZCgiV2Vi
S2l0V2ViVmlldyIsICJjb2xvci1jaG9vc2VyLXJlcXVlc3QiLCB0ZXN0V2ViVmlld0NvbG9yQ2hv
b3NlclJlcXVlc3QpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCBkMTg0MzE1MjgxYTgzNjNiODEwNTc4YzM4OGYx
ZTM2ZWEzY2FiMmIyLi5lZmYzMjYzNmM2MDkxNWQ2NTU3ZGNiZDQxZGI5ODkzNTNjZmE5Y2U0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRFbnVtVHlwZXMuaD4KICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdEVycm9yLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGYXZpY29uRGF0
YWJhc2UuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5oPgogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0RmluZENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dEZvcm1TdWJtaXNzaW9uUmVxdWVzdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAppbmRl
eCAwZWU3OWRkNzFhMzZkMjUzOWZmYWQ0NDdmZTlhNjMwYmE5MjY2NjYyLi5iYTA1MTczNDdlZTcx
M2U0MDM3MGM3MzFhZTJhNDY3OTk0NjVkNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmNw
cApAQCAtNTUsNiArNTUsMTQgQEAgdm9pZCBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJv
eHk6OnNldENvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IpCiAgICAgbV9wYWdlLT5lbmRDb2xvckNo
b29zZXIoKTsKIH0KIAordm9pZCBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk6OmVu
ZENvbG9yQ2hvb3NlcigpCit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fcGFnZS0+ZW5kQ29sb3JDaG9vc2VyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclBy
b3h5LmgKaW5kZXggZDI4ZWI4YWE5NWMyZDhkYjA2ZDIxYmI3NDYwMWRhOWRjZWUxYTQ3ZC4uNjJh
MmUwYjgwYjlkMzY3ZTg5NmU3YzFjNjI2ZGQ4OGFkYTQxZGEwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVy
UHJveHkuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludmFsaWRhdGUo
KTsKICAgICB2b2lkIHNldENvbG9yKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgZW5kQ29sb3JD
aG9vc2VyKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViQ29sb3JQaWNrZXJSZXN1bHRM
aXN0ZW5lclByb3h5KFdlYlBhZ2VQcm94eSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29s
cy9TZXR1cFdlYktpdEZlYXR1cmVzLm00IGIvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZl
YXR1cmVzLm00CmluZGV4IGE1MjQ3M2RiMGMzMWRkZTlhOGRlOTBkNjhiMTM3ZjUzOGE5OGMxMzUu
LjcxYmExMWMwYWYyNjJmNDM4Yjg2YWMxN2E4N2EyODE5YmQ5NTBjM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9hdXRvdG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNAorKysgYi9Tb3VyY2UvYXV0b3Rv
b2xzL1NldHVwV2ViS2l0RmVhdHVyZXMubTQKQEAgLTEzNCw3ICsxMzQsNyBAQCAkc3JjZGlyL1Rv
b2xzL2d0ay9nZW5lcmF0ZS1mZWF0dXJlLWRlZmluZXMtZmlsZXMgJENPTkZJR1VSQUJMRV9GRUFU
VVJFX0RFRklORVMgXAogICAgIEVOQUJMRV9JRlJBTUVfU0VBTUxFU1M9MSBcCiAgICAgRU5BQkxF
X0lOREVYRURfREFUQUJBU0U9MCBcCiAgICAgRU5BQkxFX0lOUFVUX1NQRUVDSD0wIFwKLSAgICBF
TkFCTEVfSU5QVVRfVFlQRV9DT0xPUj0wIFwKKyAgICBFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUj0x
IFwKICAgICBFTkFCTEVfSU5QVVRfVFlQRV9EQVRFPTAgXAogICAgIEVOQUJMRV9JTlBVVF9UWVBF
X0RBVEVUSU1FX0lOQ09NUExFVEU9MCBcCiAgICAgRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVM
T0NBTD0wIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9T
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDRhN2E0MTkwZDNhODY5ZGJhY2Y4
M2QxMjVmY2FlYzU3NTVhY2FmOGIuLjhkNGNlYzUwMGE4NmQyYzc3OWJhOWJiZGZmNmUxNTk4MTM1
Zjc5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIv
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMzIzLDYgKzMyMyw4IEBAIF9aTjdX
ZWJDb3JlMTNTY3JpcHRHQ0V2ZW50MTFnZXRIZWFwU2l6ZUVSTlNfOEhlYXBJbmZvRTsKIF9aTjdX
ZWJDb3JlMjhub3RJbXBsZW1lbnRlZExvZ2dpbmdDaGFubmVsRXY7CiBfWk43V2ViQ29yZTd0b1VJ
bnQ4RVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRU5TXzMwSW50ZWdlckNvbnZlcnNpb25D
b25maWd1cmF0aW9uRTsKIF9aTjdXZWJDb3JlNnRvSW50OEVQTjNKU0M5RXhlY1N0YXRlRU5TMF83
SlNWYWx1ZUVOU18zMEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbkU7CitfWk43V2ViQ29y
ZTVDb2xvckMxRVJLTjNXVEY2U3RyaW5nRTsKK19aTjdXZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50
MjVzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyRVJLTlNfNUNvbG9yRTsKIAogbG9jYWw6CiBfWio7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGVl
ODU5ZWFmYWIyMDBkZWMzNWRkNTVjNTFhY2U2M2ZkNmJjYzY3Ny4uZDNhYmEzNGQzZDY2ZTJmNmQz
ZGI2OWY4YWY3Y2E4OWJhMGYyYWVhZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTIwICBBcm5hdWQgUmVu
ZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dUS10gQWRk
IHN1cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEVuYWJsZSBpbnB1dCB0eXBlIGNvbG9yIGluIGZlYXR1cmUgbGlzdC4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKwogMjAxMy0w
Ni0xNCAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtXSzJdIGFwaSB0byBub3RpZnkgaW5wdXQgY29sb3IgdmFsdWUgY2hhbmdlLgpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4IGQ0MDMzMjcyODQ2NjcyZjg4
MzUyNmU3NWEzMTUxOWE2MjQ4MGY5NmYuLjY3NTc4NTIwY2NlY2VhZTA3ZjVkOTZjNTc4ZTM5OGQz
ODZjNjUzYjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlz
dC5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KQEAgLTMw
MSw3ICszMDEsNyBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9J
TlBVVF9TUEVFQ0giLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkaW5wdXRTcGVlY2hTdXBwb3J0
IH0sCiAKICAgICB7IG9wdGlvbiA9PiAiaW5wdXQtdHlwZS1jb2xvciIsIGRlc2MgPT4gIlRvZ2ds
ZSBJbnB1dCBUeXBlIENvbG9yIHN1cHBvcnQiLAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfSU5Q
VVRfVFlQRV9DT0xPUiIsIGRlZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgpIHx8IGlzRWZsKCkpLCB2
YWx1ZSA9PiBcJGlucHV0VHlwZUNvbG9yU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFC
TEVfSU5QVVRfVFlQRV9DT0xPUiIsIGRlZmF1bHQgPT4gKGlzQmxhY2tCZXJyeSgpIHx8IGlzRWZs
KCkgfHwgaXNHdGsoKSksIHZhbHVlID0+IFwkaW5wdXRUeXBlQ29sb3JTdXBwb3J0IH0sCiAKICAg
ICB7IG9wdGlvbiA9PiAiaW5wdXQtdHlwZS1kYXRlIiwgZGVzYyA9PiAiVG9nZ2xlIElucHV0IFR5
cGUgRGF0ZSBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0lOUFVUX1RZUEVfREFU
RSIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRpbnB1dFR5cGVEYXRlU3VwcG9ydCB9LApkaWZm
IC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGUyNWQwNWM3NGY3ZGJiNTAyZjUy
OTY3ZGU5ODQzMDAzZjhkZjA5NjYuLjA5ZTRmOWYzMzg0NzQ0MGQyNzRkYjIzMDQ4ZmU0MWI1YWYy
ODgwOTggMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxMi0xMi0yMCAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNhLnNhbXN1
bmcuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBjb2xvciBpbnB1dAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBleHBvcnQgV2ViQ29y
ZTo6Q29sb3I6OkNvbG9yKFdURjo6U3RyaW5nIGNvbnN0JikgYW5kCisgICAgICAgIFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdENvbG9ySW5Db2xvckNob29zZXIoV2ViQ29yZTo6Q29s
b3IKKyAgICAgICAgY29uc3QmKQorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xz
LmZpbHRlcjoKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL1NldHVwV2ViS2l0RmVhdHVyZXMu
bTQ6CisKIDIwMTMtMDctMDggIENoYW5nU2VvayBPaCAgPGNoYW5nc2Vvay5vaEBjb2xsYWJvcmEu
Y29tPgogCiAgICAgICAgIFtHVEtdIEFjY2VsZXJhdGlvbiBkZXNjcmlwdGlvbiBpc24ndCBkaXNw
bGF5ZWQgaW4gY29uZmlndXJlZCBvcHRpb25zLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206569</attachid>
            <date>2013-07-12 13:42:05 -0700</date>
            <delta_ts>2015-02-09 10:48:24 -0800</delta_ts>
            <desc>oups. This patch actually applies on trunk</desc>
            <filename>bug-98935-20130712133940.patch</filename>
            <type>text/plain</type>
            <size>44325</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM5ZDI3NzgyZTVkNzgx
NzNiZDJlY2E0MjZjOGM1NjhmMGQ4N2NmNi4uMzljYmYxYmU3MGQyMTZiMmVhZTVmMzA4ZWM5NThh
NDk5NDNjYzg2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTIwICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dU
S10gQWRkIHN1cHBvcnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBpbnB1dCB0eXBlIGNvbG9yIGluIGZlYXR1cmUg
bGlzdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmZlYXR1cmVzLmFtLmluOgorCiAyMDEzLTA3
LTA4ICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogIkFsd2F5cyBlbmFibGUiIHByb2ZpbGluZyBkb2VzIG5vdCB3
b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggY2E2YTQ1ZjJiN2UzYzY3ZWE2MGE0Yzk3NWQ5YzIwYTM3
NDNkNTJkMy4uMjEzM2VmNGI5NjQzNjE0NDY4YTg5MmY4OGNmZWNmNDJlZTNlNWM4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEyLTMxICBBcm5hdWQgUmVuZXZpZXIg
IDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBv
cnQgZm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFN0dWIgaW1wbGVtZW50YXRpb24gb2YgQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xv
ckNob29zZXIKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKwogMjAxMy0wNy0wOSAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZC4gVXBkYXRlIE5FV1MgYW5kIFZlcnNpb25zLm00IGZvciAyLjEuMyByZWxlYXNlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IGUzNmYzMGJhMTA4MmExMjEyN2FkNzk3MmExZGU4YmNiNDIzOWI2MTUuLjAx
ZDQwZjE1ZTJlMDI5NzE5YmFhY2ZhNzg1ZGJiZWNmOTRjMGM0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxMi0xMi0yMCAgQXJuYXVkIFJlbmV2aWVyICA8YS5yZW5ldmllckBzaXNh
LnNhbXN1bmcuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBjb2xvciBpbnB1
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MzUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnQgaW5wdXQgY29sb3IgdHlwZSBmb3IgV2ViS2l0Mi4KKworICAgICAgICBJbXBsZW1lbnQgc2hv
d0NvbG9yUGlja2VyIGFuZCBoaWRlQ29sb3JQaWNrZXIgVUkgY2xpZW50IGNhbGxiYWNrcy4KKwor
ICAgICAgICBBZGQgYSBlbmRDb2xvckNob29zZXIgbWV0aG9kIHRvIFdlYkNvbG9yUGlja2VyUmVz
dWx0TGlzdGVuZXJQcm94eSB0bworICAgICAgICBiZSBhYmxlIHRvIGNhbmNlbCB0aGUgcmVxdWVz
dCB3aXRob3V0IHNlbGVjdGluZyBhIGNvbG9yLgorCisgICAgICAgIFNpbWlsYXJseSB0byB3aGF0
IGhhcHBlbnMgZm9yIGZpbGUgY2hvb3Nlciwgd2hlbiBhIGNvbG9yIGNob29zZXIgaXMKKyAgICAg
ICAgbmVlZGVkLCB3ZSBlbWl0IGEgcnVuLWNvbG9yLWNob29zZXIgc2lnbmFsIHdpdGggYQorICAg
ICAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IG9iamVjdC4gSWYgdGhlIHNpZ25hbCBpcyBu
b3QgaGFuZGxlZCBieSB0aGUKKyAgICAgICAgYXBwbGljYXRpb24sIHdlIHNob3cgYSBHdGtHdGtD
b2xvckNob29zZXJEaWFsb2cuCisKKyAgICAgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCBB
UEkgYWxsb3dzIHRvIHJlYWQgY3VycmVudCBjb2xvciAoZWl0aGVyCisgICAgICAgIGluaXRpYWwg
Y29sb3Igc2V0IGJ5IFdlYkNvcmUgb3IgbGF0ZXIsIGNvbG9yIHNlbGVjdGVkIGJ5IHVzZXIpLCB0
bworICAgICAgICBzZWxlY3QgYSBjb2xvciwgb3IgdG8gY2FuY2VsIGEgcmVxdWVzdC4KKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHA6IEFkZGVkLgorICAgICAgICAod2Via2l0Q29s
b3JDaG9vc2VyUmVxdWVzdERpc3Bvc2UpOgorICAgICAgICAod2Via2l0Q29sb3JDaG9vc2VyUmVx
dWVzdEdldFByb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rf
Y2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVj
dF9jb2xvcik6CisgICAgICAgICh3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9jdXJy
ZW50X2NvbG9yKToKKyAgICAgICAgKHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RDcmVhdGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdFByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VUlDbGllbnQuY3BwOgorICAgICAgICAoc2hvd0NvbG9yUGlja2VyKToKKyAgICAgICAgKGhpZGVD
b2xvclBpY2tlcik6CisgICAgICAgIChhdHRhY2hVSUNsaWVudFRvVmlldyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJW
aWV3Q2xvc2VDb2xvckNob29zZXIpOgorICAgICAgICAoY29sb3JDaG9vc2VyRGlhbG9nUmVzcG9u
c2VDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3UnVuQ29sb3JDaG9vc2VyKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdFdlYlZp
ZXdTaG93Q29sb3JDaG9vc2VyKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdIaWRlQ29sb3JDaG9v
c2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKGFz
c2VydENvbG9ySXNFcXVhbCk6CisgICAgICAgICh0ZXN0V2ViVmlld0NvbG9yQ2hvb3NlclJlcXVl
c3QpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93
ZWJraXQyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVu
ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVu
ZXJQcm94eTo6ZW5kQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29sb3JQ
aWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5Lmg6CisKIDIwMTMtMDctMTAgIFJvZ2VyIEZvbmcgIDxy
b2dlcl9mb25nQGFwcGxlLmNvbT4KIAogICAgICAgICBQbHVnaW5zIHRoYXQgZG9uJ3Qgc3VwcG9y
dCBzbmFwc2hvdHRpbmcgc2hvdWxkIG5vdCBhbGwgYXV0b3N0YXJ0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggODMz
MjYzMzdjZWVlNGEwZjM0MWZkNTI3ZGM2MzQ3MjI5MWJmODcyOC4uZDFjODllNWI3OGE3NTZhMTBi
YzYxYmM1NDgyZjhjMTc5MGU0Zjc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC05OCw2ICs5OCw3IEBACiAjaWZk
ZWYgR0RLX1dJTkRPV0lOR19YMTEKICNpbmNsdWRlICJXaWRnZXRCYWNraW5nU3RvcmVHdGtYMTEu
aCIKICNlbmRpZgorI2luY2x1ZGUgIkNvbG9yQ2hvb3NlckNsaWVudC5oIgogI2luY2x1ZGUgIldp
ZGdldEJhY2tpbmdTdG9yZUNhaXJvLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAt
ODYxLDYgKzg2MiwxNCBAQCB2b2lkIENocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2Fj
aGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3QpCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorUGFzc093blB0cjxDb2xv
ckNob29zZXI+IENocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNs
aWVudCosIGNvbnN0IENvbG9yJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBudWxscHRyOworfQorI2VuZGlmCisKIHZvaWQgQ2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwo
RnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBwcnBGaWxlQ2hvb3NlcikKIHsKICAgICBH
UmVmUHRyPFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJr
aXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfY3JlYXRlKHBycEZpbGVDaG9vc2VyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCmluZGV4
IDM4ZmMxNDY2ZjAwZTUyZDFkNzUyMzYyN2MyMmJmNmNlMTQ5Yjk2ZDEuLjMxNzAwMTE0M2QzM2U0
ZjdhNWE2YTY3ZWM1M2Y5M2U5YzZmOGM1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0zNiw2ICszNiw3IEBAIHR5cGVk
ZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFBvcHVwTWVudUNsaWVudDsKK2NsYXNzIENvbG9yOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTExOSw2ICsxMjAsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAjZW5k
aWYKICAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBz
cGFjZU5lZWRlZCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCB0b3RhbFNwYWNlTmVlZGVkKTsK
KworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgICAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50Kiwg
Y29uc3QgQ29sb3ImKTsKKyNlbmRpZgorCiAgICAgICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFu
ZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPik7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBGaWxlSWNvbkxv
YWRlciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBiMTUwMTdmZWI4Y2Qw
YzVmODg0YTU4ZDk1OTM1OTdiZGE2YTI3NjJlLi43OGRiNWEyNzk1ZDM0MjZjYTM2ZjNkZjY3MGVj
YzRkYWQ1N2IzMGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTk2LDYgKzk2
LDcgQEAgd2Via2l0Ml9oX2FwaSArPSBcCiB3ZWJraXQyZ3RrX2hfYXBpICs9IFwKIAkkKFdlYktp
dDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5oIFwKIAkkKFdlYktp
dDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCisJJChX
ZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmggXAog
CSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaCBcCiAJJChX
ZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUFjdGlvbnMuaCBcCiAJ
JChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uaCBcCkBA
IC02NTgsNiArNjU5LDkgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmggXAogCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RQ
cml2YXRlLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9y
Q2hvb3NlclJlcXVlc3QuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmggXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51LmNwcCBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuaCBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVQcml2YXRlLmggXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjFmMTI1ZmMyM2MzYjU3NDg3ZTYz
MDA5NTRmYTdjYTFkNDJkYTYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHAKQEAgLTAsMCArMSwx
NjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1bmcgRWxlY3Ryb25pY3MKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KKyAq
ICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdC5oIgorCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFBy
aXZhdGUuaCIKKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCisvKioKKyAqIFNFQ1RJT046IFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAq
IEBTaG9ydF9kZXNjcmlwdGlvbjogQSByZXF1ZXN0IHRvIG9wZW4gYSBjb2xvciBjaG9vc2VyCisg
KiBAVGl0bGU6IFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAqIEBTZWVfYWxzbzogI1dlYktp
dFdlYlZpZXcKKyAqCisgKiBXaGVuZXZlciB0aGUgdXNlciBpbnRlcmFjdHMgd2l0aCBhbiAmbHQ7
aW5wdXQgdHlwZT0nY29sb3InIC8mZ3Q7CisgKiBIVE1MIGVsZW1lbnQsIFdlYktpdCB3aWxsIG5l
ZWQgdG8gc2hvdyBhIGRpYWxvZyB0byBjaG9vc2UgYSBjb2xvci4gRm9yIHRoYXQKKyAqIHRvIGhh
cHBlbiBpbiBhIGdlbmVyYWwgd2F5LCBpbnN0ZWFkIG9mIGp1c3Qgb3BlbmluZyBhICNHdGtDb2xv
ckNob29zZXIKKyAqICh3aGljaCBtaWdodCBiZSBub3QgZGVzaXJhYmxlIGluIHNvbWUgY2FzZXMs
IHdoaWNoIGNvdWxkIHByZWZlciB0byB1c2UgdGhlaXIKKyAqIG93biBjb2xvciBjaG9vc2VyIGRp
YWxvZyksIFdlYktpdCB3aWxsIGZpcmUgdGhlCisgKiAjV2ViS2l0V2ViVmlldzo6cnVuLWNvbG9y
LWNob29zZXIgc2lnbmFsIHdpdGggYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAorICogb2Jq
ZWN0LCB3aGljaCB3aWxsIGFsbG93IHRoZSBjbGllbnQgYXBwbGljYXRpb24gdG8gc3BlY2lmeSB0
aGUgY29sb3IgdG8gYmUKKyAqIHNlbGVjdGVkLCB0byBpbnNwZWN0IHRoZSBkZXRhaWxzIG9mIHRo
ZSByZXF1ZXN0IChlLmcuIHRvIGdldCBpbml0aWFsIGNvbG9yKQorICogYW5kIHRvIGNhbmNlbCB0
aGUgcmVxdWVzdCwgaW4gY2FzZSBub3RoaW5nIHdhcyBzZWxlY3RlZC4KKyAqCisgKiBJbiBjYXNl
IHRoZSBjbGllbnQgYXBwbGljYXRpb24gZG9lcyBub3Qgd2lzaCB0byBoYW5kbGUgdGhpcyBzaWdu
YWwsCisgKiBXZWJLaXQgd2lsbCBwcm92aWRlIGEgZGVmYXVsdCBoYW5kbGVyIHdoaWNoIHdpbGwg
YXN5bmNocm9ub3VzbHkgcnVuCisgKiBhIHJlZ3VsYXIgI0d0a0NvbG9yQ2hvb3NlciBmb3IgdGhl
IHVzZXIgdG8gaW50ZXJhY3Qgd2l0aC4KKyAqLworCitzdHJ1Y3QgX1dlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3RQcml2YXRlIHsKKyAgICBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkq
IGxpc3RlbmVyOworICAgIEdka1JHQkEgY29sb3I7CisgICAgYm9vbCBoYW5kbGVkUmVxdWVzdDsK
K307CisKK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LCB3ZWJr
aXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0LCBHX1RZUEVfT0JKRUNUKQorCitlbnVtIHsKKyAgICBQ
Uk9QXzAsCisKKyAgICBQUk9QX0NPTE9SCit9OworCitzdGF0aWMgdm9pZCB3ZWJraXRDb2xvckNo
b29zZXJSZXF1ZXN0RGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCit7ICAgIAorICAgIFdlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNU
KG9iamVjdCk7CisKKyAgICBpZiAoIXJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0KSB7Cisg
ICAgICAgIHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0ID0gdHJ1ZTsKKyAgICAgICAgcmVx
dWVzdC0+cHJpdi0+bGlzdGVuZXItPmVuZENvbG9yQ2hvb3NlcigpOworICAgIH0KK30KKworc3Rh
dGljIHZvaWQgd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdEdldFByb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1T
cGVjKQoreworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRf
Q09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQp
IHsKKyAgICBjYXNlIFBST1BfQ09MT1I6CisgICAgICAgIGdfdmFsdWVfc2V0X2JveGVkKHZhbHVl
LCAmcmVxdWVzdC0+cHJpdi0+Y29sb3IpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0
eUlkLCBwYXJhbVNwZWMpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0X2NvbG9yX2No
b29zZXJfcmVxdWVzdF9jbGFzc19pbml0KFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcyog
cmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVD
VF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworICAgIG9iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3
ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0R2V0UHJvcGVydHk7CisgICAgb2JqZWN0Q2xhc3MtPmRp
c3Bvc2UgPSB3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0RGlzcG9zZTsKKworICAgIC8qKgorICAg
ICAqIFdlYktpdFdlYlZpZXc6Y29sb3I6CisgICAgICoKKyAgICAgKiBUaGUgI0dka1JHQkEgY29s
b3Igb2YgdGhlIHJlcXVlc3QKKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjIKKyAgICAgKi8KKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLAorICAgICAgICBQ
Uk9QX0NPTE9SLAorICAgICAgICBnX3BhcmFtX3NwZWNfYm94ZWQoImNvbG9yIiwKKyAgICAgICAg
ICAgIF8oIkN1cnJlbnQgY29sb3IiKSwKKyAgICAgICAgICAgIF8oIlRoZSBjdXJyZW50IGNvbG9y
IGZvciB0aGUgcmVxdWVzdCIpLAorICAgICAgICAgICAgR0RLX1RZUEVfUkdCQSwKKyAgICAgICAg
ICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOworfQorCisvKioKKyAqIHdlYmtpdF9jb2xvcl9j
aG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdEZpbGVD
aG9vc2VyUmVxdWVzdAorICogQGNvbG9yOiBhIHBvaW50ZXIgI0dka1JHQkEKKyAqCisgKiBBc2sg
V2ViS2l0IHRvIHNlbGVjdCBjb2xvciBhbmQgY29tcGxldGUgdGhlIHJlcXVlc3QuCisgKgorICog
U2luY2U6IDIuMgorICovCit2b2lkIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0
X2NvbG9yKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IEdka1JHQkEq
IGNvbG9yKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJf
UkVRVUVTVChyZXF1ZXN0KSk7CisgICAgaWYgKHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0
KQorICAgICAgICByZXR1cm47CisgICAgcmVxdWVzdC0+cHJpdi0+aGFuZGxlZFJlcXVlc3QgPSB0
cnVlOworCisgICAgcmVxdWVzdC0+cHJpdi0+Y29sb3IgPSAqY29sb3I7CisgICAgcmVxdWVzdC0+
cHJpdi0+bGlzdGVuZXItPnNldENvbG9yKENvbG9yKHJlcXVlc3QtPnByaXYtPmNvbG9yKS5zZXJp
YWxpemVkKCkpOworfQorCisvKioKKyAqIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0
X2N1cnJlbnRfY29sb3I6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dAorICoKKyAqIFdoaWxlIG5vIGNvbG9yIGhhcyBiZWVuIHNlbGVjdGVkLCBpdCBpcyB0aGUgaW5p
dGlhbCB2YWx1ZSBkZWZpbmVkIGJ5IFdlYktpdC4KKyAqIFdoZW4gYSBjb2xvciBoYXMgYmVlbiBz
ZWxlY3RlZCwgdGhpcyBiZWNvbWVzIHRoZSBzZWxlY3RlZCB2YWx1ZS4KKyAqCisgKiBSZXR1cm5z
OiAodHJhbnNmZXIgbm9uZSk6IHRoZSBjdXJyZW50IGNvbG9yIG9mIHJlcXVlc3QuIAorICoKKyAq
IFNpbmNlOiAyLjIKKyAqLworR2RrUkdCQSogd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9n
ZXRfY3VycmVudF9jb2xvcihXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1Qo
cmVxdWVzdCksIDApOworCisgICAgcmV0dXJuICZyZXF1ZXN0LT5wcml2LT5jb2xvcjsKK30KKwor
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdENyZWF0
ZShjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yLCBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVy
UHJveHkqIGxpc3RlbmVyKQoreworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVl
c3QgPSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QsIE5VTEwpKTsKKyAgICByZXF1ZXN0LT5wcml2LT5saXN0
ZW5lciA9IGxpc3RlbmVyOworICAgIHJlcXVlc3QtPnByaXYtPmNvbG9yID0gaW5pdGlhbENvbG9y
OworICAgIHJldHVybiByZXF1ZXN0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAzMGI3NmEzNDQzY2I4YzQwNjU4NTJkMWU4NWNhMTQ1OWY3YTQxYjQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0LmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwg
U2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBt
ZXQ6CisgKgorICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAq
ICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUgZG9jdW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUK
KyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAq
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dFQktJ
VDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJvciAi
T25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisjZW5k
aWYKKworI2lmbmRlZiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0X2gKKyNkZWZpbmUgV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdF9oCisKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJL
SVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QgICAgICAgICAgICAod2Via2l0X2NvbG9yX2No
b29zZXJfcmVxdWVzdF9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9S
RVFVRVNUKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiks
IFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCwgV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCkpCisjZGVmaW5lIFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1Moa2xhc3Mp
ICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfQ09MT1Jf
Q0hPT1NFUl9SRVFVRVNULCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MpKQorI2RlZmlu
ZSBXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iaikgICAgICAgICAoR19UWVBFX0NI
RUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVT
VCkpCisjZGVmaW5lIFdFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1Moa2xhc3Mp
IChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hP
T1NFUl9SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVF9HRVRf
Q0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQ
RV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QsIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcykp
CisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICAgICAgICBXZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3RDbGFzcyAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzczsKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZSBXZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0UHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IHsK
KyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIC8qPCBwcml2YXRlID4qLworICAgIFdlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9
OworCitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF90
eXBlICAgICAgICAgICAodm9pZCk7CisKK1dFQktJVF9BUEkgR2RrUkdCQSAqCit3ZWJraXRfY29s
b3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9jdXJyZW50X2NvbG9yICAoV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdCAqcmVxdWVzdCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2NvbG9yX2Nob29z
ZXJfcmVxdWVzdF9zZWxlY3RfY29sb3IgICAgICAgKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Qg
KnJlcXVlc3QsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdka1JHQkEgICAgICAgICAgICAgKmNvbG9yKTsKKworR19FTkRfREVDTFMKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NzhhNmM3ZGNlMmQxZDU3OTViYzlkNjhmYWIwMWFiZWFhZTYyZjZlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdFByaXZhdGUuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEy
LCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
IG1ldDoKKyAqCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAor
ICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQor
ICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0UHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3RQcml2YXRlX2gKKworI2luY2x1ZGUgIldlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94
eS5oIgorI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaCIKKyNpbmNsdWRlICJX
ZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgorCitXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0KiB3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0Q3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkNvbG9yJiwgV2ViS2l0OjpXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkq
KTsKKworI2VuZGlmIC8vIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcApp
bmRleCAwODk5Yjg1NjM4OTRhNDAwNWExMjgzMWY2NWUzZjllYjJiNjcyOGM4Li41MGQ1ZGRhZWYz
NGFjNmU4MzVhODkzYjQwNDVkNWQ0MWIzMTllYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0yMCw2ICsyMCw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0VUlDbGllbnQuaCIKIAorI2lu
Y2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0RmlsZUNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5o
IgpAQCAtMTU4LDYgKzE1OSwxNiBAQCBzdGF0aWMgdm9pZCBydW5Nb2RhbChXS1BhZ2VSZWYgcGFn
ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKICAgICB3ZWJraXRXZWJWaWV3UnVuQXNNb2RhbChX
RUJLSVRfV0VCX1ZJRVcoY2xpZW50SW5mbykpOwogfQogCitzdGF0aWMgdm9pZCBzaG93Q29sb3JQ
aWNrZXIoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBpbml0aWFsQ29sb3IsIFdLQ29sb3JQaWNrZXJS
ZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICB3ZWJraXRXZWJWaWV3U2hvd0NvbG9yQ2hvb3NlcihXRUJLSVRfV0VCX1ZJRVcoY2xpZW50SW5m
byksIFdlYkNvcmU6OkNvbG9yKHRvV1RGU3RyaW5nKGluaXRpYWxDb2xvcikpLCB0b0ltcGwobGlz
dGVuZXIpKTsKK30KKworc3RhdGljIHZvaWQgaGlkZUNvbG9yUGlja2VyKFdLUGFnZVJlZiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICB3ZWJraXRXZWJWaWV3SGlkZUNvbG9yQ2hvb3Nl
cihXRUJLSVRfV0VCX1ZJRVcoY2xpZW50SW5mbykpOworfQorCiB2b2lkIGF0dGFjaFVJQ2xpZW50
VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgV0tQYWdlVUlDbGllbnQgd2tV
SUNsaWVudCA9IHsKQEAgLTIwNiw4ICsyMTcsOCBAQCB2b2lkIGF0dGFjaFVJQ2xpZW50VG9WaWV3
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
LAogICAgICAgICAwLCAvLyBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdAogICAgICAgICAwLCAvLyB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQKLSAgICAg
ICAgMCwgLy8gc2hvd0NvbG9yUGlja2VyCi0gICAgICAgIDAsIC8vIGhpZGVDb2xvclBpY2tlcgor
ICAgICAgICBzaG93Q29sb3JQaWNrZXIsCisgICAgICAgIGhpZGVDb2xvclBpY2tlciwKICAgICAg
ICAgMCwgLy8gcGx1Z2luTG9hZFBvbGljeQogICAgIH07CiAgICAgV0tQYWdlUmVmIHdrUGFnZSA9
IHRvQVBJKHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJW
aWV3KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3LmNwcAppbmRleCAyOTQ5NzA5MGRiNjA3ZGJjYTlmMDFhYjlmNDRjOTMyN2U0ODIxYzFm
Li5lZmQzZDMzMzlmNjkyMzZmOGJmYzgwZjE1ZjY0N2IyYjU4M2VhMjNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIldlYkRhdGEuaCIKICNpbmNsdWRlICJXZWJLaXRBdXRoZW50
aWNhdGlvbkRpYWxvZy5oIgogI2luY2x1ZGUgIldlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUu
aCIKKyNpbmNsdWRlICJXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdENvbnRleHRNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29udGV4dE1l
bnVJdGVtUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdENvbnRleHRNZW51UHJpdmF0ZS5oIgpA
QCAtMTEwLDYgKzExMSw5IEBAIGVudW0gewogCiAgICAgUlVOX0ZJTEVfQ0hPT1NFUiwKIAorICAg
IFJVTl9DT0xPUl9DSE9PU0VSLAorICAgIENMT1NFX0NPTE9SX0NIT09TRVIsCisKICAgICBDT05U
RVhUX01FTlUsCiAgICAgQ09OVEVYVF9NRU5VX0RJU01JU1NFRCwKIApAQCAtMTg3LDYgKzE5MSw5
IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgIHVuc2lnbmVkIGxvbmcgZmF2
aWNvbkNoYW5nZWRIYW5kbGVySUQ7CiAKICAgICBTbmFwc2hvdFJlc3VsdHNNYXAgc25hcHNob3RS
ZXN1bHRzTWFwOworCisgICAgR3RrV2lkZ2V0KiBjb2xvckNob29zZXJEaWFsb2c7CisgICAgR1Jl
ZlB0cjxXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PiBjb2xvckNob29zZXJSZXF1ZXN0OwogfTsK
IAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwpAQCAtNDQ1LDYg
KzQ1Miw0NSBAQCBzdGF0aWMgdm9pZCBmaWxlQ2hvb3NlckRpYWxvZ1Jlc3BvbnNlQ2FsbGJhY2so
R3RrRGlhbG9nKiBkaWFsb2csIGdpbnQgcmVzcG9uc2VJRAogICAgIGd0a193aWRnZXRfZGVzdHJv
eShHVEtfV0lER0VUKGRpYWxvZykpOwogfQogCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q2xv
c2VDb2xvckNob29zZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICB3ZWJWaWV3LT5w
cml2LT5jb2xvckNob29zZXJSZXF1ZXN0ID0gMDsKKworICAgIGlmICh3ZWJWaWV3LT5wcml2LT5j
b2xvckNob29zZXJEaWFsb2cpIHsKKyAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KHdlYlZpZXct
PnByaXYtPmNvbG9yQ2hvb3NlckRpYWxvZyk7CisgICAgICAgIHdlYlZpZXctPnByaXYtPmNvbG9y
Q2hvb3NlckRpYWxvZyA9IDA7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBjb2xvckNob29zZXJE
aWFsb2dSZXNwb25zZUNhbGxiYWNrKEd0a1dpZGdldCogZGlhbG9nLCBnaW50IHJlc3BvbnNlSUQs
IFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgaWYgKHJlc3BvbnNlSUQgPT0gR1RLX1JF
U1BPTlNFX09LKSB7CisgICAgICAgIEdka1JHQkEgY29sb3I7CisgICAgICAgIGd0a19jb2xvcl9j
aG9vc2VyX2dldF9yZ2JhKEdUS19DT0xPUl9DSE9PU0VSKGRpYWxvZyksICZjb2xvcik7CisgICAg
ICAgIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yKHdlYlZpZXctPnBy
aXYtPmNvbG9yQ2hvb3NlclJlcXVlc3QuZ2V0KCksICZjb2xvcik7CisgICAgfSBlbHNlCisgICAg
ICAgIHdlYmtpdFdlYlZpZXdDbG9zZUNvbG9yQ2hvb3Nlcih3ZWJWaWV3KTsKK30KKworc3RhdGlj
IGdib29sZWFuIHdlYmtpdFdlYlZpZXdSdW5Db2xvckNob29zZXIoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBHdGtXaWRn
ZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3
KSk7CisgICAgaWYgKCF3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3codG9wbGV2ZWwpKQor
ICAgICAgICB0b3BsZXZlbCA9IDA7CisKKyAgICBHdGtXaWRnZXQqIGRpYWxvZyA9IGd0a19jb2xv
cl9jaG9vc2VyX2RpYWxvZ19uZXcoXygiU2VsZWN0IENvbG9yIiksIHRvcGxldmVsID8gR1RLX1dJ
TkRPVyh0b3BsZXZlbCkgOiAwKTsKKworICAgIGd0a19jb2xvcl9jaG9vc2VyX3NldF9yZ2JhKEdU
S19DT0xPUl9DSE9PU0VSKGRpYWxvZyksIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0
X2N1cnJlbnRfY29sb3IocmVxdWVzdCkpOworCisgICAgZ19zaWduYWxfY29ubmVjdChkaWFsb2cs
ICJyZXNwb25zZSIsIEdfQ0FMTEJBQ0soY29sb3JDaG9vc2VyRGlhbG9nUmVzcG9uc2VDYWxsYmFj
ayksIHdlYlZpZXcpOworICAgIGd0a193aWRnZXRfc2hvdyhkaWFsb2cpOworCisgICAgd2ViVmll
dy0+cHJpdi0+Y29sb3JDaG9vc2VyRGlhbG9nID0gZGlhbG9nOworICAgIHdlYlZpZXctPnByaXYt
PmNvbG9yQ2hvb3NlclJlcXVlc3QgPSByZXF1ZXN0OworCisgICAgcmV0dXJuIFRSVUU7Cit9CisK
IHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXIoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIEd0
a1dpZGdldCogdG9wbGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdl
YlZpZXcpKTsKQEAgLTYwNSw2ICs2NTEsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
Y2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICB3ZWJWaWV3
Q2xhc3MtPmRlY2lkZV9wb2xpY3kgPSB3ZWJraXRXZWJWaWV3RGVjaWRlUG9saWN5OwogICAgIHdl
YlZpZXdDbGFzcy0+cGVybWlzc2lvbl9yZXF1ZXN0ID0gd2Via2l0V2ViVmlld1Blcm1pc3Npb25S
ZXF1ZXN0OwogICAgIHdlYlZpZXdDbGFzcy0+cnVuX2ZpbGVfY2hvb3NlciA9IHdlYmtpdFdlYlZp
ZXdSdW5GaWxlQ2hvb3NlcjsKKyAgICB3ZWJWaWV3Q2xhc3MtPnJ1bl9jb2xvcl9jaG9vc2VyID0g
d2Via2l0V2ViVmlld1J1bkNvbG9yQ2hvb3NlcjsKKyAgICB3ZWJWaWV3Q2xhc3MtPmNsb3NlX2Nv
bG9yX2Nob29zZXIgPSB3ZWJraXRXZWJWaWV3Q2xvc2VDb2xvckNob29zZXI7CiAKICAgICAvKioK
ICAgICAgKiBXZWJLaXRXZWJWaWV3OndlYi1jb250ZXh0OgpAQCAtMTIxNywxMyArMTI2NSw2NiBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xh
c3MqIHdlYlZpZXdDbGFzcykKICAgICAgKi8KICAgICBzaWduYWxzW1JVTl9GSUxFX0NIT09TRVJd
ID0KICAgICAgICAgZ19zaWduYWxfbmV3KCJydW4tZmlsZS1jaG9vc2VyIiwKLSAgICAgICAgICAg
ICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCi0gICAgICAgICAgICAg
ICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKLSAgICAgICAgICAgICAgICAgICAgIEdfU1RSVUNU
X09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIHJ1bl9maWxlX2Nob29zZXIpLAotICAgICAgICAg
ICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCAwIC8qIGFjY3Vt
dWxhdG9yIGRhdGEgKi8sCi0gICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09M
RUFOX19PQkpFQ1QsCi0gICAgICAgICAgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwgLyog
bnVtYmVyIG9mIHBhcmFtZXRlcnMgKi8KLSAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBF
X0ZJTEVfQ0hPT1NFUl9SRVFVRVNUKTsKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdl
YlZpZXdDbGFzcyksCisgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAg
IEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIHJ1bl9maWxlX2Nob29zZXIpLAor
ICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCAwIC8qIGFjY3Vt
dWxhdG9yIGRhdGEgKi8sCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19PQkpF
Q1QsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMSwgLyogbnVtYmVyIG9mIHBhcmFtZXRl
cnMgKi8KKyAgICAgICAgICAgIFdFQktJVF9UWVBFX0ZJTEVfQ0hPT1NFUl9SRVFVRVNUKTsKKwor
ICAgICAvKioKKyAgICAgICogV2ViS2l0V2ViVmlldzo6cnVuLWNvbG9yLWNob29zZXI6CisgICAg
ICAqIEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMg
ZW1pdHRlZAorICAgICAgKiBAcmVxdWVzdDogYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAor
ICAgICAgKgorICAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gdGhlIHVzZXIgaW50
ZXJhY3RzIHdpdGggYSAmbHQ7aW5wdXQKKyAgICAgICogdHlwZT0nY29sb3InIC8mZ3Q7IEhUTUwg
ZWxlbWVudCwgcmVxdWVzdGluZyBmcm9tIFdlYktpdCB0byBzaG93CisgICAgICAqIGEgZGlhbG9n
IHRvIHNlbGVjdCBhIGNvbG9yLiBUbyBsZXQgdGhlIGFwcGxpY2F0aW9uIGtub3cgdGhlIGRldGFp
bHMgb2YKKyAgICAgICogdGhlIGNvbG9yIGNob29zZXIsIGFzIHdlbGwgYXMgdG8gYWxsb3cgdGhl
IGNsaWVudCBhcHBsaWNhdGlvbiB0byBlaXRoZXIKKyAgICAgICogY2FuY2VsIHRoZSByZXF1ZXN0
IG9yIHBlcmZvcm0gYW4gYWN0dWFsIGNvbG9yIHNlbGVjdGlvbiwgdGhlIHNpZ25hbCB3aWxsCisg
ICAgICAqIHBhc3MgYW4gaW5zdGFuY2Ugb2YgdGhlICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
IGluIHRoZSBAcmVxdWVzdAorICAgICAgKiBhcmd1bWVudC4KKyAgICAgICoKKyAgICAgICogSXQg
aXMgcG9zc2libGUgdG8gaGFuZGxlIHRoaXMgcmVxdWVzdCBhc3luY2hyb25vdXNseSBieSBpbmNy
ZWFzaW5nIHRoZQorICAgICAgKiByZWZlcmVuY2UgY291bnQgb2YgdGhlIHJlcXVlc3QuCisgICAg
ICAqCisgICAgICAqIFRoZSBkZWZhdWx0IHNpZ25hbCBoYW5kbGVyIHdpbGwgYXN5bmNocm9ub3Vz
bHkgcnVuIGEgcmVndWxhcgorICAgICAgKiAjR3RrQ29sb3JDaG9vc2VyIGZvciB0aGUgdXNlciB0
byBpbnRlcmFjdCB3aXRoLgorICAgICAgKgorICAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBzdG9w
IG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50LgorICAgICAg
KiAgICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIuCisgICAgICAqCisgICAg
ICAqIFNpbmNlOiAyLjIKKyAgICAgICovCisgICAgc2lnbmFsc1tSVU5fQ09MT1JfQ0hPT1NFUl0g
PQorICAgICAgICBnX3NpZ25hbF9uZXcoInJ1bi1jb2xvci1jaG9vc2VyIiwKKyAgICAgICAgICAg
IEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICBHX1NJR05BTF9S
VU5fTEFTVCwKKyAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3Ms
IHJ1bl9jb2xvcl9jaG9vc2VyKSwKKyAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3Ry
dWVfaGFuZGxlZCwgMCAvKiBhY2N1bXVsYXRvciBkYXRhICovLAorICAgICAgICAgICAgd2Via2l0
X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNULAorICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDEs
IC8qIG51bWJlciBvZiBwYXJhbWV0ZXJzICovCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9DT0xP
Ul9DSE9PU0VSX1JFUVVFU1QpOworCisgICAgIC8qKgorICAgICAgKiBXZWJLaXRXZWJWaWV3Ojpj
bG9zZS1jb2xvci1jaG9vc2VyOgorICAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmll
dyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgICoKKyAgICAgICogRW1pdHRl
ZCB3aGVuIGNvbG9yIHBpY2tlciBtdXN0IGJlIGNsb3NlZC4gVGhpcyBoYXBwZW5zIGFmdGVyIGEg
Y29sb3IKKyAgICAgICogaGFzIGJlZW4gY2hvb3Nlbi4gVGhpcyBoYXBwZW5zIGFsc28gaWYgdGhl
IHBhZ2UgdHJpZ2dlcmluZyB0aGUgcmVxdWVzdAorICAgICAgKiB1bmxvYWRzIGJlZm9yZSB0aGUg
cmVxdWVzdCBpcyBjb21wbGV0ZWQuCisgICAgICAqCisgICAgICAqIFNpbmNlOiAyLjIKKyAgICAg
ICovCisgICAgc2lnbmFsc1tDTE9TRV9DT0xPUl9DSE9PU0VSXSA9CisgICAgICAgIGdfc2lnbmFs
X25ldygiY2xvc2UtY29sb3ItY2hvb3NlciIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFT
Uyh3ZWJWaWV3Q2xhc3MpLAorICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAg
ICAgICBHX1NUUlVDVF9PRkZTRVQoV2ViS2l0V2ViVmlld0NsYXNzLCBjbG9zZV9jb2xvcl9jaG9v
c2VyKSwKKyAgICAgICAgICAgIDAsIDAsCisgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxf
Vk9JRF9fVk9JRCwKKyAgICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsKIAogICAgIC8qKgogICAg
ICAqIFdlYktpdFdlYlZpZXc6OmNvbnRleHQtbWVudToKQEAgLTE2NTIsNiArMTc1MywyMCBAQCB2
b2lkIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3QoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgV2ViS2l0RmlsZUNob29zZQogICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFs
c1tSVU5fRklMRV9DSE9PU0VSXSwgMCwgcmVxdWVzdCwgJnJldHVyblZhbHVlKTsKIH0KIAorYm9v
bCB3ZWJraXRXZWJWaWV3U2hvd0NvbG9yQ2hvb3NlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBj
b25zdCBDb2xvciYgY29sb3IsIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eSogbGlz
dGVuZXIpCit7CisgICAgR1JlZlB0cjxXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PiByZXF1ZXN0
ID0gYWRvcHRHUmVmKHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RDcmVhdGUoY29sb3IsIGxpc3Rl
bmVyKSk7CisKKyAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKKyAgICBnX3NpZ25hbF9lbWl0KHdl
YlZpZXcsIHNpZ25hbHNbUlVOX0NPTE9SX0NIT09TRVJdLCAwLCByZXF1ZXN0LmdldCgpLCAmcmV0
dXJuVmFsdWUpOworICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwordm9pZCB3ZWJraXRXZWJW
aWV3SGlkZUNvbG9yQ2hvb3NlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdfc2ln
bmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tDTE9TRV9DT0xPUl9DSE9PU0VSXSwgMCwgTlVMTCk7
Cit9CisKIHN0YXRpYyBib29sIHdlYmtpdFdlYlZpZXdTaG91bGRTaG93SW5wdXRNZXRob2RzTWVu
dShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEd0a1NldHRpbmdzKiBzZXR0aW5ncyA9
IGd0a193aWRnZXRfZ2V0X3NldHRpbmdzKEdUS19XSURHRVQod2ViVmlldykpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGIyM2Q3
ZmZiMTNhMDhmMDk1NGVjYTM1NGNlODZlYzU3MDczY2ExZDcuLmZkYjI1NDQ2ZmU5MDYwZjJlNDkz
ZGNhNGY4ZDYwYzMzYTI0YTQ5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJk
TGlzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2Vi
S2l0RmlsZUNob29zZXJSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGaW5kQ29u
dHJvbGxlci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0
Lmg+CkBAIC0yMzEsNiArMjMyLDkgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3Q2xhc3MgewogICAg
IGdib29sZWFuICAgKCogbGVhdmVfZnVsbHNjcmVlbikgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogICAgIGdib29sZWFuICAgKCogcnVuX2ZpbGVfY2hv
b3NlcikgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0RmlsZUNo
b29zZXJSZXF1ZXN0ICAgICpyZXF1ZXN0KTsKKyAgICBnYm9vbGVhbiAgICgqIHJ1bl9jb2xvcl9j
aG9vc2VyKSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbG9y
Q2hvb3NlclJlcXVlc3QgICAqcmVxdWVzdCk7CisgICAgdm9pZCAgICAgICAoKiBjbG9zZV9jb2xv
cl9jaG9vc2VyKSAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7
CiAgICAgZ2Jvb2xlYW4gICAoKiBjb250ZXh0X21lbnUpICAgICAgICAgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb250ZXh0TWVudSAgICAgICAgICAgKmNvbnRleHRf
bWVudSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtF
dmVudCAgICAgICAgICAgICAgICAgICAgKmV2ZW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5kZXggZWIxZjI3
ZGIyOThjYWUzODc4MWI1ZGI0MjQ4YTNkNmI4N2RhNGJhMS4uMmE1MmQzNzYzNTRhMzE2NzI3YzUy
NGQ5Mjc2ZTdkNWEwMWZmZTk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAK
ICNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXcuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB2
b2lkIHdlYmtpdFdlYlZpZXdMb2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0TG9hZEV2
ZW50KTsKQEAgLTUwLDYgKzUxLDggQEAgdm9pZCB3ZWJraXRXZWJWaWV3TW91c2VUYXJnZXRDaGFu
Z2VkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHQqLAogdm9pZCB3ZWJr
aXRXZWJWaWV3UHJpbnRGcmFtZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5
Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdSZXNvdXJjZUxvYWRTdGFydGVkKFdlYktpdFdlYlZpZXcq
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFdl
YktpdFVSSVJlcXVlc3QqKTsKIHZvaWQgd2Via2l0V2ViVmlld1J1bkZpbGVDaG9vc2VyUmVxdWVz
dChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0Kik7Citib29sIHdlYmtp
dFdlYlZpZXdTaG93Q29sb3JDaG9vc2VyKFdlYktpdFdlYlZpZXcqLCBjb25zdCBXZWJDb3JlOjpD
b2xvciYsIFdlYktpdDo6V2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5Kik7Cit2b2lk
IHdlYmtpdFdlYlZpZXdIaWRlQ29sb3JDaG9vc2VyKFdlYktpdFdlYlZpZXcqKTsKIFdlYktpdFdl
YlJlc291cmNlKiB3ZWJraXRXZWJWaWV3R2V0TG9hZGluZ1dlYlJlc291cmNlKFdlYktpdFdlYlZp
ZXcqLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpOwogdm9pZCB3ZWJLaXRXZWJWaWV3RGlk
UmVjZWl2ZVNuYXBzaG90KFdlYktpdFdlYlZpZXcqLCB1aW50NjRfdCBjYWxsYmFja0lELCBXZWJL
aXQ6OldlYkltYWdlKik7CiB2b2lkIHdlYmtpdFdlYlZpZXdSZW1vdmVMb2FkaW5nV2ViUmVzb3Vy
Y2UoV2ViS2l0V2ViVmlldyosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9j
cy5zZ21sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LWRvY3Muc2dtbAppbmRleCAyZmE3ZWJhY2ZkYzYyN2ZiMjQwOTRmMDBiZTZiNzEyZjhkMmQ0M2Ni
Li5hZTI0NWI5N2M0YmFlZWMyNTRiZTQ3NTE2Zjk5Mzc1ODg4ZjZkOTY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21s
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1k
b2NzLnNnbWwKQEAgLTMwLDYgKzMwLDcgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2Vi
S2l0V2ViUmVzb3VyY2UueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEVy
cm9yLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRGYXZpY29uRGF0YWJh
c2UueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdEZpbGVDaG9vc2Vy
UmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0RmluZENvbnRy
b2xsZXIueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdENvb2tpZU1hbmFn
ZXIueG1sIi8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCBmMjgwYzYyZGYyOWYyNmIz
MjI2MmNkYWRmMmU4ZGEzM2MxZDliOTkwLi45YzQyMzNlZDM5MmU1OGIwNjQxMTYxNmI2YzM4YmY0
ZDc5NTQwNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTY4Nyw2ICs2ODcsMjYg
QEAgd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2dldF90eXBlCiA8L1NFQ1RJT04+CiAKIDxT
RUNUSU9OPgorPEZJTEU+V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdDwvRklMRT4KK1dlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2N1cnJl
bnRfY29sb3IKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2NvbG9yCisKKzxT
VUJTRUNUSU9OIFN0YW5kYXJkPgorV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdENsYXNzCitXRUJL
SVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QKK1dFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVF
U1QKK1dFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1QKK1dFQktJVF9DT0xPUl9DSE9PU0VS
X1JFUVVFU1RfQ0xBU1MKK1dFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1MKK1dF
QktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1RfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9OIFByaXZh
dGU+CitXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZQord2Via2l0X2NvbG9yX2Nob29z
ZXJfcmVxdWVzdF9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxGSUxFPldlYktp
dEZpbmRDb250cm9sbGVyPC9GSUxFPgogV2ViS2l0RmluZENvbnRyb2xsZXIKIFdlYktpdEZpbmRP
cHRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGsudHlwZXMgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2Nz
L3dlYmtpdDJndGsudHlwZXMKaW5kZXggNWQ5N2Y2OWJlZDVkZDdmM2E3NjExYThkYTlkZmU3ODgz
ZmRhNDQ0NS4uYWY1NzdhYjdlODhmMTlmNzJlYjBiYjMxOWU2MjBiNzcyZjVlY2UxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5
cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay50eXBlcwpAQCAtMjQsMyArMjQsNCBAQCB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X3R5
cGUKIHdlYmtpdF93ZWJfdmlld19ncm91cF9nZXRfdHlwZQogd2Via2l0X3dlYl9leHRlbnNpb25f
Z2V0X3R5cGUKIHdlYmtpdF93ZWJfcGFnZV9nZXRfdHlwZQord2Via2l0X2NvbG9yX2Nob29zZXJf
cmVxdWVzdF9nZXRfdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IDg4ZDc3ZjI4NjBl
MDYwYTUwNmFiOWJiNWM4MmZhMjhhZmE2NmIxN2EuLjU1ZTQxYzRkODRiNWY1MTcwY2ZiMGY1MmM3
MTNkMDUzYjBmYzE4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTI2LDYgKzI2LDE1
IEBACiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KIAorc3RhdGljIHZvaWQgYXNzZXJ0Q29sb3JJc0VxdWFsKGNvbnN0IEdk
a1JHQkEqIGNvbG9yLCBmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBibHVlLCBmbG9hdCBh
bHBoYSkKK3sgICAgCisgICAgZ19hc3NlcnQoY29sb3IpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0
KGNvbG9yLT5yZWQsID09LCByZWQpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLT5ncmVl
biwgPT0sIGdyZWVuKTsKKyAgICBnX2Fzc2VydF9jbXBmbG9hdChjb2xvci0+Ymx1ZSwgPT0sIGJs
dWUpOworICAgIGdfYXNzZXJ0X2NtcGZsb2F0KGNvbG9yLT5hbHBoYSwgPT0sIGFscGhhKTsKK30K
Kwogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdEZWZhdWx0Q29udGV4dChXZWJWaWV3VGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Nv
bnRleHQodGVzdC0+bV93ZWJWaWV3KSA9PSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQo
KSk7CkBAIC03OTMsNiArODAyLDgyIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RmlsZUNob29z
ZXJSZXF1ZXN0KEZpbGVDaG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB3ZWJr
aXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsKGZpbGVDaG9vc2VyUmVxdWVzdCk7CiB9CiAK
K2NsYXNzIENvbG9yQ2hvb3NlclRlc3Q6IHB1YmxpYyBVSUNsaWVudFRlc3QgeworcHVibGljOgor
ICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoQ29sb3JDaG9vc2VyVGVzdCk7CisgICAgQ29sb3JD
aG9vc2VyVGVzdCgpCisgICAgOiBtX2NvbG9yQ2hvb3NlckNsb3NlZChGQUxTRSkKKyAgICB7Cisg
ICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAicnVuLWNvbG9yLWNob29zZXIiLCBH
X0NBTExCQUNLKHJ1bkNvbG9yQ2hvb3NlckNhbGxiYWNrKSwgdGhpcyk7CisgICAgICAgIGdfc2ln
bmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAiY2xvc2UtY29sb3ItY2hvb3NlciIsIEdfQ0FMTEJBQ0so
Y2xvc2VDb2xvckNob29zZXJDYWxsYmFjayksIHRoaXMpOworICAgIH0KKworICAgIHN0YXRpYyBn
Ym9vbGVhbiBydW5Db2xvckNob29zZXJDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCwgQ29sb3JDaG9vc2VyVGVzdCogdGVzdCkKKyAgICB7
CisgICAgICAgIHRlc3QtPnJ1bkNvbG9yQ2hvb3NlcihyZXF1ZXN0KTsKKyAgICAgICAgcmV0dXJu
IFRSVUU7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgY2xvc2VDb2xvckNob29zZXJDYWxsYmFj
ayhXZWJLaXRXZWJWaWV3KiwgQ29sb3JDaG9vc2VyVGVzdCogdGVzdCkKKyAgICB7CisgICAgICAg
IHRlc3QtPmNsb3NlQ29sb3JDaG9vc2VyKCk7CisgICAgfQorCisgICAgdm9pZCBydW5Db2xvckNo
b29zZXIoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKKyAgICB7CisgICAgICAg
IGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QocmVxdWVzdCkp
OworICAgICAgICBtX2NvbG9yQ2hvb3NlclJlcXVlc3QgPSByZXF1ZXN0OworICAgICAgICBnX21h
aW5fbG9vcF9xdWl0KG1fbWFpbkxvb3ApOworICAgIH0KKworICAgIHZvaWQgY2xvc2VDb2xvckNo
b29zZXIoKQorICAgIHsKKyAgICAgICAgbV9jb2xvckNob29zZXJDbG9zZWQgPSBUUlVFOworICAg
IH0KKworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIGNsaWNrTW91c2VCdXR0b25BbmRX
YWl0Rm9yQ29sb3JDaG9vc2VyUmVxdWVzdChpbnQgeCwgaW50IHkpCisgICAgeworICAgICAgICBj
bGlja01vdXNlQnV0dG9uKHgsIHkpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9v
cCk7CisgICAgICAgIHJldHVybiBtX2NvbG9yQ2hvb3NlclJlcXVlc3QuZ2V0KCk7CisgICAgfQor
CisgICAgZ2Jvb2xlYW4gY2xvc2VkU2lnbmFsKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Nv
bG9yQ2hvb3NlckNsb3NlZDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR1JlZlB0cjxXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0PiBtX2NvbG9yQ2hvb3NlclJlcXVlc3Q7CisgICAgYm9vbCBtX2Nv
bG9yQ2hvb3NlckNsb3NlZDsKK307CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3Q29sb3JDaG9v
c2VyUmVxdWVzdChDb2xvckNob29zZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAg
IHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBjb2xvckNob29zZXJIVE1MID0gIjxodG1sPjxib2R5PjxpbnB1dCBzdHlsZT0ncG9z
aXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO21hcmdpbjowO3BhZGRpbmc6MCcgdHlwZT0nY29s
b3InIHZhbHVlPScjZmYwMDAwJy8+PC9ib2R5PjwvaHRtbD4iOworICAgIHRlc3QtPmxvYWRIdG1s
KGNvbG9yQ2hvb3NlckhUTUwsIDApOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIGNvbG9yQ2hvb3NlclJlcXVlc3QgPSB0
ZXN0LT5jbGlja01vdXNlQnV0dG9uQW5kV2FpdEZvckNvbG9yQ2hvb3NlclJlcXVlc3QoNSwgNSk7
CisgICAgR2RrUkdCQSogY29sb3IgPSB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9j
dXJyZW50X2NvbG9yKGNvbG9yQ2hvb3NlclJlcXVlc3QpOworICAgIGFzc2VydENvbG9ySXNFcXVh
bChjb2xvciwgMS4wLCAwLjAsIDAuMCwgMS4wKTsKKworICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRB
bmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKS52YWx1
ZSA9ICcjMDBmZjAwJzsiLCAwKTsKKyAgICBjb2xvciA9IHdlYmtpdF9jb2xvcl9jaG9vc2VyX3Jl
cXVlc3RfZ2V0X2N1cnJlbnRfY29sb3IoY29sb3JDaG9vc2VyUmVxdWVzdCk7CisgICAgYXNzZXJ0
Q29sb3JJc0VxdWFsKGNvbG9yLCAxLjAsIDAuMCwgMC4wLCAxLjApOworCisgICAgZ19hc3NlcnQo
IXRlc3QtPmNsb3NlZFNpZ25hbCgpKTsKKyAgICBHZGtSR0JBIGJsdWUgPSB7MC4wLCAwLjAsIDEu
MCwgMS4wfTsKKyAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NlbGVjdF9jb2xvcihj
b2xvckNob29zZXJSZXF1ZXN0LCAmYmx1ZSk7CisgICAgZ19hc3NlcnQodGVzdC0+Y2xvc2VkU2ln
bmFsKCkpOworICAgIGNvbG9yID0gd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfY3Vy
cmVudF9jb2xvcihjb2xvckNob29zZXJSZXF1ZXN0KTsKKyAgICBhc3NlcnRDb2xvcklzRXF1YWwo
Y29sb3IsIDAuMCwgMC4wLCAxLjAsIDEuMCk7CisKKyAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlz
aGVkKCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpLnZhbHVlOyIsIDApOworICAgIEdP
d25QdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NT
dHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmlu
Zy5nZXQoKSwgPT0sICIjMDAwMGZmIik7Cit9CisKIGNsYXNzIEZ1bGxTY3JlZW5DbGllbnRUZXN0
OiBwdWJsaWMgV2ViVmlld1Rlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRV
UkUoRnVsbFNjcmVlbkNsaWVudFRlc3QpOwpAQCAtMTI1MSw2ICsxMzM2LDcgQEAgdm9pZCBiZWZv
cmVBbGwoKQogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAidmlldy1tb2Rl
IiwgdGVzdFdlYlZpZXdNb2RlKTsKICAgICBTbmFwc2hvdFdlYlZpZXdUZXN0OjphZGQoIldlYktp
dFdlYlZpZXciLCAic25hcHNob3QiLCB0ZXN0V2ViVmlld1NuYXBzaG90KTsKICAgICBXZWJWaWV3
VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInBhZ2UtdmlzaWJpbGl0eSIsIHRlc3RXZWJWaWV3
UGFnZVZpc2liaWxpdHkpOworICAgIENvbG9yQ2hvb3NlclRlc3Q6OmFkZCgiV2ViS2l0V2ViVmll
dyIsICJjb2xvci1jaG9vc2VyLXJlcXVlc3QiLCB0ZXN0V2ViVmlld0NvbG9yQ2hvb3NlclJlcXVl
c3QpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL3dlYmtpdDIuaAppbmRleCBkMTg0MzE1MjgxYTgzNjNiODEwNTc4YzM4OGYxZTM2ZWEzY2Fi
MmIyLi5lZmYzMjYzNmM2MDkxNWQ2NTU3ZGNiZDQxZGI5ODkzNTNjZmE5Y2U0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRFbnVtVHlwZXMuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdEVycm9yLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuaD4K
KyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaD4KICNpbmNsdWRl
IDx3ZWJraXQyL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0RmluZENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZvcm1TdWJt
aXNzaW9uUmVxdWVzdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAppbmRleCAwZWU3OWRk
NzFhMzZkMjUzOWZmYWQ0NDdmZTlhNjMwYmE5MjY2NjYyLi5iYTA1MTczNDdlZTcxM2U0MDM3MGM3
MzFhZTJhNDY3OTk0NjVkNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmNwcApAQCAtNTUs
NiArNTUsMTQgQEAgdm9pZCBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk6OnNldENv
bG9yKGNvbnN0IFN0cmluZyYgY29sb3IpCiAgICAgbV9wYWdlLT5lbmRDb2xvckNob29zZXIoKTsK
IH0KIAordm9pZCBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk6OmVuZENvbG9yQ2hv
b3NlcigpCit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFn
ZS0+ZW5kQ29sb3JDaG9vc2VyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5k
aWYgLy8gRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclByb3h5LmgKaW5k
ZXggZDI4ZWI4YWE5NWMyZDhkYjA2ZDIxYmI3NDYwMWRhOWRjZWUxYTQ3ZC4uNjJhMmUwYjgwYjlk
MzY3ZTg5NmU3YzFjNjI2ZGQ4OGFkYTQxZGEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkuaApA
QCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKICAgICB2
b2lkIHNldENvbG9yKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgZW5kQ29sb3JDaG9vc2VyKCk7
CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclBy
b3h5KFdlYlBhZ2VQcm94eSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9TZXR1cFdl
YktpdEZlYXR1cmVzLm00IGIvU291cmNlL2F1dG90b29scy9TZXR1cFdlYktpdEZlYXR1cmVzLm00
CmluZGV4IGE1MjQ3M2RiMGMzMWRkZTlhOGRlOTBkNjhiMTM3ZjUzOGE5OGMxMzUuLjcxYmExMWMw
YWYyNjJmNDM4Yjg2YWMxN2E4N2EyODE5YmQ5NTBjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRv
dG9vbHMvU2V0dXBXZWJLaXRGZWF0dXJlcy5tNAorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL1NldHVw
V2ViS2l0RmVhdHVyZXMubTQKQEAgLTEzNCw3ICsxMzQsNyBAQCAkc3JjZGlyL1Rvb2xzL2d0ay9n
ZW5lcmF0ZS1mZWF0dXJlLWRlZmluZXMtZmlsZXMgJENPTkZJR1VSQUJMRV9GRUFUVVJFX0RFRklO
RVMgXAogICAgIEVOQUJMRV9JRlJBTUVfU0VBTUxFU1M9MSBcCiAgICAgRU5BQkxFX0lOREVYRURf
REFUQUJBU0U9MCBcCiAgICAgRU5BQkxFX0lOUFVUX1NQRUVDSD0wIFwKLSAgICBFTkFCTEVfSU5Q
VVRfVFlQRV9DT0xPUj0wIFwKKyAgICBFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUj0xIFwKICAgICBF
TkFCTEVfSU5QVVRfVFlQRV9EQVRFPTAgXAogICAgIEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1F
X0lOQ09NUExFVEU9MCBcCiAgICAgRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJTUVMT0NBTD0wIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0
b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDRhN2E0MTkwZDNhODY5ZGJhY2Y4M2QxMjVmY2Fl
YzU3NTVhY2FmOGIuLjhkNGNlYzUwMGE4NmQyYzc3OWJhOWJiZGZmNmUxNTk4MTM1Zjc5MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMzIzLDYgKzMyMyw4IEBAIF9aTjdXZWJDb3JlMTNT
Y3JpcHRHQ0V2ZW50MTFnZXRIZWFwU2l6ZUVSTlNfOEhlYXBJbmZvRTsKIF9aTjdXZWJDb3JlMjhu
b3RJbXBsZW1lbnRlZExvZ2dpbmdDaGFubmVsRXY7CiBfWk43V2ViQ29yZTd0b1VJbnQ4RVBOM0pT
QzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRU5TXzMwSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0
aW9uRTsKIF9aTjdXZWJDb3JlNnRvSW50OEVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVO
U18zMEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbkU7CitfWk43V2ViQ29yZTVDb2xvckMx
RVJLTjNXVEY2U3RyaW5nRTsKK19aTjdXZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50MjVzZWxlY3RD
b2xvckluQ29sb3JDaG9vc2VyRVJLTlNfNUNvbG9yRTsKIAogbG9jYWw6CiBfWio7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjFlNjE4YjMxOTYz
MTdhYjJmZTE3Y2QyMGJiNmRiYWRhNGNlZGEyNS4uMWE2N2M4YWI4ZDdiY2ZlYWRjZGYzNjMyNzRl
Zjk5OWQ4ODU1YTA3NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTIwICBBcm5hdWQgUmVuZXZpZXIgIDxh
LnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQg
Zm9yIGNvbG9yIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEVuYWJsZSBpbnB1dCB0eXBlIGNvbG9yIGluIGZlYXR1cmUgbGlzdC4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKwogMjAxMy0wNy0xMiAgQnJp
YW4gSG9sdCAgPGJyaWFuLmhvbHRAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgY2hlY2std2Via2l0
LXN0eWxlOiBJZ25vcmUgZmFsc2UgcG9zaXRpdmU6IEluc3RhbmNlIG9mICdQb3BlbicgaGFzIG5v
ICdwaWQnIG1lbWJlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1
cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCmluZGV4
IGQ0MDMzMjcyODQ2NjcyZjg4MzUyNmU3NWEzMTUxOWE2MjQ4MGY5NmYuLjY3NTc4NTIwY2NlY2Vh
ZTA3ZjVkOTZjNTc4ZTM5OGQzODZjNjUzYjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cGVybC9GZWF0dXJlTGlzdC5wbQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVh
dHVyZUxpc3QucG0KQEAgLTMwMSw3ICszMDEsNyBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgICBk
ZWZpbmUgPT4gIkVOQUJMRV9JTlBVVF9TUEVFQ0giLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwk
aW5wdXRTcGVlY2hTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAiaW5wdXQtdHlwZS1jb2xv
ciIsIGRlc2MgPT4gIlRvZ2dsZSBJbnB1dCBUeXBlIENvbG9yIHN1cHBvcnQiLAotICAgICAgZGVm
aW5lID0+ICJFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUiIsIGRlZmF1bHQgPT4gKGlzQmxhY2tCZXJy
eSgpIHx8IGlzRWZsKCkpLCB2YWx1ZSA9PiBcJGlucHV0VHlwZUNvbG9yU3VwcG9ydCB9LAorICAg
ICAgZGVmaW5lID0+ICJFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUiIsIGRlZmF1bHQgPT4gKGlzQmxh
Y2tCZXJyeSgpIHx8IGlzRWZsKCkgfHwgaXNHdGsoKSksIHZhbHVlID0+IFwkaW5wdXRUeXBlQ29s
b3JTdXBwb3J0IH0sCiAKICAgICB7IG9wdGlvbiA9PiAiaW5wdXQtdHlwZS1kYXRlIiwgZGVzYyA9
PiAiVG9nZ2xlIElucHV0IFR5cGUgRGF0ZSBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5B
QkxFX0lOUFVUX1RZUEVfREFURSIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRpbnB1dFR5cGVE
YXRlU3VwcG9ydCB9LApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDU0
MjIyZmI0ZjU2NjMyZWY4ZmY3YjM5OTA3MDM0N2QyMDcyOTUxOWUuLmI3NzAyNWJjZDlkZTM3NzM0
MDNlODE3NDc4MTZmNTQ0YjVlZmQwZmEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMi0yMCAgQXJuYXVkIFJlbmV2aWVyICA8YS5y
ZW5ldmllckBzaXNhLnNhbXN1bmcuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZv
ciBjb2xvciBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTg5MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBleHBvcnQgV2ViQ29yZTo6Q29sb3I6OkNvbG9yKFdURjo6U3RyaW5nIGNvbnN0JikgYW5k
CisgICAgICAgIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdENvbG9ySW5Db2xvckNo
b29zZXIoV2ViQ29yZTo6Q29sb3IKKyAgICAgICAgY29uc3QmKQorCisgICAgICAgICogU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL1Nl
dHVwV2ViS2l0RmVhdHVyZXMubTQ6CisKIDIwMTMtMDctMDkgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBORVdT
IGFuZCBWZXJzaW9ucy5tNCBmb3IgMi4xLjMgcmVsZWFzZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246277</attachid>
            <date>2015-02-09 10:48:24 -0800</date>
            <delta_ts>2015-02-11 02:07:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-color-chooser-api.diff</filename>
            <type>text/plain</type>
            <size>45781</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmYWVlZWVlLi43OWJmMTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjMg
QEAKIDIwMTUtMDItMDkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIEFkZCBBUEkgdG8gYWxsb3cgb3ZlcnJpZGluZyB0aGUgZGVmYXVs
dCBjb2xvciBjaG9vc2VyIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdG8gYWxsb3cgdGhlIHVzZXIgdG8gb3ZlcnJp
ZGUgdGhlIGRlZmF1bHQgVUkgb2YgY29sb3IKKyAgICAgICAgY2hvb3Nlci4gU2ltaWxhciB0byB0
aGUgZmlsZSBjaG9vc2VyIEFQSSwgYSBuZXcgcnVuLWNvbG9yLWNob29zZXIKKyAgICAgICAgc2ln
bmFsIGlzIGFkZGVkIHRvIFdlYktpdFdlYlZpZXcgdGhhdCBwYXNzZXMgYSBXZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0CisgICAgICAgIHBhcmFtZXRlciB0byB0aGUgc2lnbmFsLgorCisgICAgICAg
IEluaXRpYWwgcGF0Y2ggYnkgQXJuYXVkIFJlbmV2aWVyIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3Vu
Zy5jb20+LgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IEFkZCBuZXcgZmlsZXMgdG8g
Y29tcGlsYXRpb24uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JQaWNrZXIp
OiBDYWxsIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlQ29sb3JQaWNrZXIoKS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0Q29sb3JDaG9vc2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJLaXRDb2xvckNob29zZXI6OldlYktpdENvbG9yQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQ6
OldlYktpdENvbG9yQ2hvb3Nlcjo6fldlYktpdENvbG9yQ2hvb3Nlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYktpdENvbG9yQ2hvb3Nlcjo6ZW5kUGlja2VyKTogQ2hhaW4gdXAgdG8gcGFyZW50IGNs
YXNzCisgICAgICAgIHdoZW4gbm90IGhhdmluZyBhIHJlcXVlc3QsIG9yIGZpbmlzaCB0aGUgcmVx
dWVzdCBpZiB3ZSBoYXZlIG9uZS4KKyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q29sb3JDaG9vc2Vy
Ojpjb2xvckNob29zZXJSZXF1ZXN0RmluaXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRD
b2xvckNob29zZXI6OmNvbG9yQ2hvb3NlclJlcXVlc3RSR0JBQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYktpdENvbG9yQ2hvb3Nlcjo6c2hvd0NvbG9yUGlja2VyKTogQ3JlYXRlIGEgbmV3
CisgICAgICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgYW5kIGVtaXQgV2ViS2l0V2ViVmll
dzo6cnVuLWNvbG9yLWNob29zZXIuCisgICAgICAgIElmIHRoZSBzaWduYWwgaXMgbm90IGhhbmRs
ZWQsIGZhbGxiYWNrIHRvIHRoZSBkZWZhdWx0IGNvbG9yCisgICAgICAgIGNob29zZXIgZGlhbG9n
IGltcGxlbWVudGVkIGJ5IHRoZSBwYXJlbnQgY2xhc3MuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdl
YmtpdENvbG9yQ2hvb3NlclJlcXVlc3RHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRDb2xv
ckNob29zZXJSZXF1ZXN0U2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2NvbG9yX2Nob29z
ZXJfcmVxdWVzdF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3Jl
cXVlc3Rfc2V0X3JnYmEpOgorICAgICAgICAod2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9n
ZXRfcmdiYSk6CisgICAgICAgICh3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9lbGVt
ZW50X3JlY3RhbmdsZSk6CisgICAgICAgICh3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2Zp
bmlzaCk6CisgICAgICAgICh3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbCk6Cisg
ICAgICAgICh3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0Q3JlYXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Lmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgor
ICAgICAgICAod2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKTogU2V0IGEgY29sb3IgcGlja2VyIGZh
Y3RvcnkgZnVuY3Rpb24gdG8KKyAgICAgICAgV2ViS2l0V2ViVmlld0Jhc2UgdG8gdXNlIG91ciBj
dXN0b20gV2ViQ29sb3JQaWNrZXIuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5p
dCk6IEFkZCBydW4tY29sb3ItY2hvb3NlciBzaWduYWwuCisgICAgICAgICh3ZWJraXRXZWJWaWV3
RW1pdFJ1bkNvbG9yQ2hvb3Nlcik6IEVtaXQgcnVuLWNvbG9yLWNob29zZXIgc2lnbmFsLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJW
aWV3QmFzZVNldENvbG9yUGlja2VyRmFjdG9yeUZ1bmN0aW9uKToKKyAgICAgICAgKHdlYmtpdFdl
YlZpZXdCYXNlQ3JlYXRlQ29sb3JQaWNrZXIpOiBVc2UgdGhlIGNvbG9yIHBpY2tlciBmYWN0b3J5
CisgICAgICAgIGZ1bmN0aW9uIGlmIGFueSwgb3IgZmFsbGJhY2sgdG8gV2ViQ29sb3JQaWNrZXJH
dGsuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25z
LnR4dDogQWRkIG5ldyBzeW1ib2xzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1kb2NzLnNnbWw6IEFkZCBuZXcgc2VjdGlvbiBmb3IgV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6IEluY2x1
ZGUgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oCisKKzIwMTUtMDItMDkgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtHVEtdIEFkZCBkZWZh
dWx0IGNvbG9yIGNob29zZXIgaW1wbGVtZW50YXRpb24gdXNpbmcgR3RrQ29sb3JDaG9vc2VyRGlh
bG9nCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEz
OTIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBiNDEwY2I2Li4zNWRkN2RmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTAxLDYgKzEwMSw4IEBAIGxpc3QoQVBQRU5EIFdl
YktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRl
bS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5o
CisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyLmNwcAorICAgIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnUuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0Q29udGV4dE1lbnUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51
QWN0aW9ucy5jcHAKQEAgLTM0Nyw2ICszNDksNyBAQCBzZXQoV2ViS2l0MkdUS19JTlNUQUxMRURf
SEVBREVSUwogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhl
bnRpY2F0aW9uUmVxdWVzdC5oCiAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0QmFja0ZvcndhcmRMaXN0LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmgKKyAgICAke1dFQktJVDJfRElSfS9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgKICAgICAke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDcmVkZW50aWFsLmgKICAgICAke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oCiAgICAgJHtXRUJLSVQy
X0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApp
bmRleCBlNzM4OGI0Li43YjlmMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0yMjYsMTIgKzIyNiwxMCBAQCBQYXNz
UmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVDb250ZXh0
TWVudVByb3h5KFdlYlBhZ2VQcgogICAgIHJldHVybiBXZWJDb250ZXh0TWVudVByb3h5R3RrOjpj
cmVhdGUobV92aWV3V2lkZ2V0LCBwYWdlKTsKIH0KIAotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQogUGFzc1JlZlB0cjxXZWJDb2xvclBpY2tlcj4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZUNv
bG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9y
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogewotICAgIHJldHVybiBXZWJDb2xvclBp
Y2tlckd0azo6Y3JlYXRlKCpwYWdlLCBjb2xvciwgcmVjdCk7CisgICAgcmV0dXJuIHdlYmtpdFdl
YlZpZXdCYXNlQ3JlYXRlQ29sb3JQaWNrZXIoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV92aWV3V2lk
Z2V0KSwgKnBhZ2UsIGNvbG9yLCByZWN0KTsKIH0KLSNlbmRpZgogCiB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpzZXRUZXh0SW5kaWNhdG9yKFBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4s
IGJvb2wgLyogZmFkZU91dCAqLykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3Nlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmIyNmJhYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXIuY3BwCkBAIC0wLDAgKzEsODMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3Nlci5oIgorCisjaW5jbHVkZSAiV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJp
dmF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lu
dFJlY3QuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitQYXNzUmVmUHRyPFdlYktpdENvbG9yQ2hvb3Nlcj4gV2ViS2l0Q29sb3JDaG9vc2VyOjpj
cmVhdGUoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENv
bG9yLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViS2l0Q29sb3JDaG9vc2VyKHBhZ2UsIGluaXRpYWxDb2xvciwgcmVjdCkpOworfQor
CitXZWJLaXRDb2xvckNob29zZXI6OldlYktpdENvbG9yQ2hvb3NlcihXZWJQYWdlUHJveHkmIHBh
Z2UsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IEludFJlY3QmIHJlY3QpCisgICAg
OiBXZWJDb2xvclBpY2tlckd0ayhwYWdlLCBpbml0aWFsQ29sb3IsIHJlY3QpCisgICAgLCBtX2Vs
ZW1lbnRSZWN0KHJlY3QpCit7Cit9CisKK1dlYktpdENvbG9yQ2hvb3Nlcjo6fldlYktpdENvbG9y
Q2hvb3NlcigpCit7CisgICAgZW5kUGlja2VyKCk7Cit9CisKK3ZvaWQgV2ViS2l0Q29sb3JDaG9v
c2VyOjplbmRQaWNrZXIoKQoreworICAgIGlmICghbV9yZXF1ZXN0KSB7CisgICAgICAgIFdlYkNv
bG9yUGlja2VyR3RrOjplbmRQaWNrZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZmluaXNoKG1fcmVxdWVzdC5nZXQoKSk7Cit9
CisKK3ZvaWQgV2ViS2l0Q29sb3JDaG9vc2VyOjpjb2xvckNob29zZXJSZXF1ZXN0RmluaXNoZWQo
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCosIFdlYktpdENvbG9yQ2hvb3NlciogY29sb3JDaG9v
c2VyKQoreworICAgIGNvbG9yQ2hvb3Nlci0+bV9yZXF1ZXN0ID0gbnVsbHB0cjsKK30KKwordm9p
ZCBXZWJLaXRDb2xvckNob29zZXI6OmNvbG9yQ2hvb3NlclJlcXVlc3RSR0JBQ2hhbmdlZChXZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0LCBHUGFyYW1TcGVjKiwgV2ViS2l0Q29sb3JD
aG9vc2VyKiBjb2xvckNob29zZXIpCit7CisgICAgR2RrUkdCQSByZ2JhOworICAgIHdlYmtpdF9j
b2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X3JnYmEocmVxdWVzdCwgJnJnYmEpOworICAgIGNvbG9y
Q2hvb3Nlci0+ZGlkQ2hvb3NlQ29sb3IocmdiYSk7Cit9CisKK3ZvaWQgV2ViS2l0Q29sb3JDaG9v
c2VyOjpzaG93Q29sb3JQaWNrZXIoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIG1faW5pdGlh
bENvbG9yID0gY29sb3I7CisgICAgR1JlZlB0cjxXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PiBy
ZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RDcmVhdGUodGhpcykp
OworICAgIGdfc2lnbmFsX2Nvbm5lY3QocmVxdWVzdC5nZXQoKSwgIm5vdGlmeTo6cmdiYSIsIEdf
Q0FMTEJBQ0soV2ViS2l0Q29sb3JDaG9vc2VyOjpjb2xvckNob29zZXJSZXF1ZXN0UkdCQUNoYW5n
ZWQpLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHJlcXVlc3QuZ2V0KCksICJmaW5pc2hl
ZCIsIEdfQ0FMTEJBQ0soV2ViS2l0Q29sb3JDaG9vc2VyOjpjb2xvckNob29zZXJSZXF1ZXN0Rmlu
aXNoZWQpLCB0aGlzKTsKKworICAgIGlmICh3ZWJraXRXZWJWaWV3RW1pdFJ1bkNvbG9yQ2hvb3Nl
cihXRUJLSVRfV0VCX1ZJRVcobV93ZWJWaWV3KSwgcmVxdWVzdC5nZXQoKSkpCisgICAgICAgIG1f
cmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgZWxzZQorICAgICAgICBXZWJDb2xvclBpY2tlckd0azo6
c2hvd0NvbG9yUGlja2VyKGNvbG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29z
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3Nl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ODNiYjEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNo
b29zZXIuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxp
YSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpZm5kZWYgV2ViS2l0Q29sb3JDaG9vc2VyX2gKKyNkZWZpbmUgV2ViS2l0Q29sb3JD
aG9vc2VyX2gKKworI2luY2x1ZGUgIldlYkNvbG9yUGlja2VyR3RrLmgiCisjaW5jbHVkZSAiV2Vi
S2l0UHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKwordHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29sb3I7CitjbGFzcyBJbnRSZWN0
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViS2l0Q29sb3JDaG9vc2VyIGZp
bmFsIDogcHVibGljIFdlYkNvbG9yUGlja2VyR3RrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJLaXRDb2xvckNob29zZXI+IGNyZWF0ZShXZWJQYWdlUHJveHkmLCBjb25zdCBX
ZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyAgICB2aXJ0dWFsIH5X
ZWJLaXRDb2xvckNob29zZXIoKTsKKworICAgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1l
bnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50UmVjdDsgfQorCitwcml2YXRlOgorICAg
IFdlYktpdENvbG9yQ2hvb3NlcihXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpDb2xvciYs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKworICAgIHZpcnR1YWwgdm9pZCBlbmRQaWNrZXIo
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbG9yUGlja2VyKGNvbnN0IFdlYkNv
cmU6OkNvbG9yJikgb3ZlcnJpZGU7CisKKyAgICBzdGF0aWMgdm9pZCBjb2xvckNob29zZXJSZXF1
ZXN0RmluaXNoZWQoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCosIFdlYktpdENvbG9yQ2hvb3Nl
ciopOworICAgIHN0YXRpYyB2b2lkIGNvbG9yQ2hvb3NlclJlcXVlc3RSR0JBQ2hhbmdlZChXZWJL
aXRDb2xvckNob29zZXJSZXF1ZXN0KiwgR1BhcmFtU3BlYyosIFdlYktpdENvbG9yQ2hvb3Nlciop
OworCisgICAgR1JlZlB0cjxXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PiBtX3JlcXVlc3Q7Cisg
ICAgV2ViQ29yZTo6SW50UmVjdCBtX2VsZW1lbnRSZWN0OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBXZWJLaXRDb2xvckNob29zZXJfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzg4YjBkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdC5jcHAKQEAgLTAsMCArMSwyNjQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBF
bGVjdHJvbmljcworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgor
ICogKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgiCisKKyNpbmNsdWRlICJXZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworLyoqCisg
KiBTRUNUSU9OOiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0CisgKiBAU2hvcnRfZGVzY3JpcHRp
b246IEEgcmVxdWVzdCB0byBvcGVuIGEgY29sb3IgY2hvb3NlcgorICogQFRpdGxlOiBXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0CisgKiBAU2VlX2Fsc286ICNXZWJLaXRXZWJWaWV3CisgKgorICog
V2hlbmV2ZXIgdGhlIHVzZXIgaW50ZXJhY3RzIHdpdGggYW4gJmx0O2lucHV0IHR5cGU9J2NvbG9y
JyAvJmd0OworICogSFRNTCBlbGVtZW50LCBXZWJLaXQgd2lsbCBuZWVkIHRvIHNob3cgYSBkaWFs
b2cgdG8gY2hvb3NlIGEgY29sb3IuIEZvciB0aGF0CisgKiB0byBoYXBwZW4gaW4gYSBnZW5lcmFs
IHdheSwgaW5zdGVhZCBvZiBqdXN0IG9wZW5pbmcgYSAjR3RrQ29sb3JDaG9vc2VyCisgKiAod2hp
Y2ggbWlnaHQgYmUgbm90IGRlc2lyYWJsZSBpbiBzb21lIGNhc2VzLCB3aGljaCBjb3VsZCBwcmVm
ZXIgdG8gdXNlIHRoZWlyCisgKiBvd24gY29sb3IgY2hvb3NlciBkaWFsb2cpLCBXZWJLaXQgd2ls
bCBmaXJlIHRoZQorICogI1dlYktpdFdlYlZpZXc6OnJ1bi1jb2xvci1jaG9vc2VyIHNpZ25hbCB3
aXRoIGEgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAqIG9iamVjdCwgd2hpY2ggd2lsbCBh
bGxvdyB0aGUgY2xpZW50IGFwcGxpY2F0aW9uIHRvIHNwZWNpZnkgdGhlIGNvbG9yIHRvIGJlCisg
KiBzZWxlY3RlZCwgdG8gaW5zcGVjdCB0aGUgZGV0YWlscyBvZiB0aGUgcmVxdWVzdCAoZS5nLiB0
byBnZXQgaW5pdGlhbCBjb2xvcikKKyAqIGFuZCB0byBjYW5jZWwgdGhlIHJlcXVlc3QsIGluIGNh
c2Ugbm90aGluZyB3YXMgc2VsZWN0ZWQuCisgKgorICogSW4gY2FzZSB0aGUgY2xpZW50IGFwcGxp
Y2F0aW9uIGRvZXMgbm90IHdpc2ggdG8gaGFuZGxlIHRoaXMgc2lnbmFsLAorICogV2ViS2l0IHdp
bGwgcHJvdmlkZSBhIGRlZmF1bHQgaGFuZGxlciB3aGljaCB3aWxsIGFzeW5jaHJvbm91c2x5IHJ1
bgorICogYSByZWd1bGFyICNHdGtDb2xvckNob29zZXJEaWFsb2cgZm9yIHRoZSB1c2VyIHRvIGlu
dGVyYWN0IHdpdGguCisgKi8KKworZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9SR0JB
Cit9OworCitlbnVtIHsKKyAgICBGSU5JU0hFRCwKKworICAgIExBU1RfU0lHTkFMCit9OworCitz
dHJ1Y3QgX1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlIHsKKyAgICBXZWJLaXRDb2xv
ckNob29zZXIqIGNvbG9yQ2hvb3NlcjsKKyAgICBHZGtSR0JBIHJnYmE7CisgICAgYm9vbCBoYW5k
bGVkOworfTsKKworc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9Owor
CitXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCwgd2Via2l0X2Nv
bG9yX2Nob29zZXJfcmVxdWVzdCwgR19UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQgd2Via2l0
Q29sb3JDaG9vc2VyUmVxdWVzdERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQoreworICAgIFdlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFV
RVNUKG9iamVjdCk7CisgICAgaWYgKCFyZXF1ZXN0LT5wcml2LT5oYW5kbGVkKQorICAgICAgICB3
ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2ZpbmlzaChyZXF1ZXN0KTsKKworICAgIEdfT0JK
RUNUX0NMQVNTKHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfcGFyZW50X2NsYXNzKS0+ZGlz
cG9zZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0
R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlELCBHVmFsdWUqIHZh
bHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCogcmVxdWVzdCA9IFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1Qob2JqZWN0KTsKKwor
ICAgIHN3aXRjaCAocHJvcGVydHlJRCkgeworICAgIGNhc2UgUFJPUF9SR0JBOgorICAgICAgICBn
X3ZhbHVlX3NldF9ib3hlZCh2YWx1ZSwgJnJlcXVlc3QtPnByaXYtPnJnYmEpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVS
VFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlELCBwYXJhbVNwZWMpOworICAgIH0KK30KKworc3RhdGlj
IHZvaWQgd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdFNldFByb3BlcnR5KEdPYmplY3QqIG9iamVj
dCwgZ3VpbnQgcHJvcGVydHlJRCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFy
YW1TcGVjKQoreworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QgPSBXRUJL
SVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BlcnR5
SUQpIHsKKyAgICBjYXNlIFBST1BfUkdCQToKKyAgICAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJf
cmVxdWVzdF9zZXRfcmdiYShyZXF1ZXN0LCBzdGF0aWNfY2FzdDxHZGtSR0JBKj4oZ192YWx1ZV9n
ZXRfYm94ZWQodmFsdWUpKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SUQsIHBh
cmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9y
ZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdENsYXNzKiByZXF1ZXN0
Q2xhc3MpCit7CisgICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNT
KHJlcXVlc3RDbGFzcyk7CisgICAgb2JqZWN0Q2xhc3MtPmRpc3Bvc2UgPSB3ZWJraXRDb2xvckNo
b29zZXJSZXF1ZXN0RGlzcG9zZTsKKyAgICBvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Vi
a2l0Q29sb3JDaG9vc2VyUmVxdWVzdEdldFByb3BlcnR5OworICAgIG9iamVjdENsYXNzLT5zZXRf
cHJvcGVydHkgPSB3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0U2V0UHJvcGVydHk7CisKKyAgICAv
KioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OnJnYmE6CisgICAgICoKKyAgICAgKiBUaGUgI0dka1JH
QkEgY29sb3Igb2YgdGhlIHJlcXVlc3QKKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjgKKyAgICAg
Ki8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLAorICAg
ICAgICBQUk9QX1JHQkEsCisgICAgICAgIGdfcGFyYW1fc3BlY19ib3hlZCgicmdiYSIsCisgICAg
ICAgICAgICBfKCJDdXJyZW50IFJHQkEgY29sb3IiKSwKKyAgICAgICAgICAgIF8oIlRoZSBjdXJy
ZW50IFJHQkEgY29sb3IgZm9yIHRoZSByZXF1ZXN0IiksCisgICAgICAgICAgICBHREtfVFlQRV9S
R0JBLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9S
RUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVCkpKTsKKworICAgIC8qKgorICAgICAqIFdlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3Q6OmZpbmlzaGVkOgorICAgICAqIEByZXF1ZXN0OiB0aGUgI1dl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisg
ICAgICoKKyAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIEByZXF1ZXN0IGZpbmlzaGVzLiBUaGlzIHNp
Z25hbCBjYW4gYmUgZW1pdHRlZCBiZWNhdXNlIHRoZQorICAgICAqIHVzZXIgY29tcGxldGVkIHRo
ZSBAcmVxdWVzdCBjYWxsaW5nIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZmluaXNoKCks
CisgICAgICogb3IgY2FuY2VsbGVkIGl0IHdpdGggd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVz
dF9jYW5jZWwoKSBvciBiZWNhdXNlIHRoZSAKKyAgICAgKiBjb2xvciBpbnB1dCBlbGVtZW50IGlz
IGRldHRhY2hlZCBmcm9tIHRoZSBwYWdlLgorICAgICAqCisgICAgICogU2luY2U6IDIuOAorICAg
ICAqLworICAgIHNpZ25hbHNbRklOSVNIRURdID0KKyAgICAgICAgZ19zaWduYWxfbmV3KAorICAg
ICAgICAgICAgImZpbmlzaGVkIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHJlcXVl
c3RDbGFzcyksCisgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgIDAs
IDAsCisgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFs
X1ZPSURfX1ZPSUQsCisgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMCk7Cit9CisKKy8qKgorICog
d2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZXRfcmdiYToKKyAqIEByZXF1ZXN0OiBhICNX
ZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QKKyAqIEByZ2JhOiBhIHBvaW50ZXIgI0dka1JHQkEKKyAq
CisgKiBTZXRzIHRoZSBjdXJyZW50ICNHZGtSR0JBIGNvbG9yIG9mIEByZXF1ZXN0CisgKgorICog
U2luY2U6IDIuOAorICovCit2b2lkIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2V0X3Jn
YmEoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgR2RrUkdCQSogcmdi
YSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVF
U1QocmVxdWVzdCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwocmdiYSk7CisKKyAgICBpZiAoZ2Rr
X3JnYmFfZXF1YWwoJnJlcXVlc3QtPnByaXYtPnJnYmEsIHJnYmEpKQorICAgICAgICByZXR1cm47
CisKKyAgICByZXF1ZXN0LT5wcml2LT5yZ2JhID0gKnJnYmE7CisgICAgZ19vYmplY3Rfbm90aWZ5
KEdfT0JKRUNUKHJlcXVlc3QpLCAicmdiYSIpOworfQorCisvKioKKyAqIHdlYmtpdF9jb2xvcl9j
aG9vc2VyX3JlcXVlc3RfZ2V0X3JnYmE6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdAorICogQHJnYmE6IChvdXQpOiBhICNHZGtSR0JBIHRvIGZpbGwgaW4gd2l0aCB0
aGUgY3VycmVudCBjb2xvci4KKyAqCisgKiBHZXRzIHRoZSBjdXJyZW50ICNHZGtSR0JBIGNvbG9y
IG9mIEByZXF1ZXN0CisgKgorICogU2luY2U6IDIuOAorICovCit2b2lkIHdlYmtpdF9jb2xvcl9j
aG9vc2VyX3JlcXVlc3RfZ2V0X3JnYmEoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVz
dCwgR2RrUkdCQSogcmdiYSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19DT0xP
Ul9DSE9PU0VSX1JFUVVFU1QocmVxdWVzdCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwocmdiYSk7
CisKKyAgICAqcmdiYSA9IHJlcXVlc3QtPnByaXYtPnJnYmE7Cit9CisKKy8qKgorICogd2Via2l0
X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfZWxlbWVudF9yZWN0YW5nbGU6CisgKiBAcmVxdWVz
dDogYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAorICogQHJlY3Q6IChvdXQpOiBhICNHZGtS
ZWN0YW5nbGUgdG8gZmlsbCBpbiB3aXRoIHRoZSBlbGVtZW50IGFyZWEKKyAqCisgKiBHZXRzIHRo
ZSBib3VuZGluZyBib3ggb2YgdGhlIGNvbG9yIGlucHV0IGVsZW1lbnQuCisgKgorICogU2luY2U6
IDIuOAorICovCit2b2lkIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2VsZW1lbnRf
cmVjdGFuZ2xlKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QsIEdka1JlY3Rhbmds
ZSogcmVjdCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19DT0xPUl9DSE9PU0VS
X1JFUVVFU1QocmVxdWVzdCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwocmVjdCk7CisKKyAgICAq
cmVjdCA9IHJlcXVlc3QtPnByaXYtPmNvbG9yQ2hvb3Nlci0+ZWxlbWVudFJlY3QoKTsKK30KKwor
LyoqCisgKiB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2ZpbmlzaDoKKyAqIEByZXF1ZXN0
OiBhICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0CisgKgorICogRmluaXNoZXMgQHJlcXVlc3Qg
YW5kIHRoZSBpbnB1dCBlbGVtZW50IGtlZXBzIHRoZSBjdXJyZW50IHZhbHVlIG9mCisgKiAjV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdDpyZ2JhLgorICogVGhlIHNpZ25hbCAjV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdDo6ZmluaXNoZWQKKyAqIGlzIGVtaXR0ZWQgdG8gbm90aWZ5IHRoYXQgdGhl
IHJlcXVlc3QgaGFzIGZpbmlzaGVkLgorICoKKyAqIFNpbmNlOiAyLjgKKyAqLwordm9pZCB3ZWJr
aXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2ZpbmlzaChXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0
KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0NPTE9SX0NIT09T
RVJfUkVRVUVTVChyZXF1ZXN0KSk7CisKKyAgICBpZiAocmVxdWVzdC0+cHJpdi0+aGFuZGxlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgcmVxdWVzdC0+cHJpdi0+aGFuZGxlZCA9IHRydWU7Cisg
ICAgZ19zaWduYWxfZW1pdChyZXF1ZXN0LCBzaWduYWxzW0ZJTklTSEVEXSwgMCk7Cit9CisKKy8q
KgorICogd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWw6CisgKiBAcmVxdWVzdDog
YSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAorICoKKyAqIENhbmNlbHMgQHJlcXVlc3QgYW5k
IHRoZSBpbnB1dCBlbGVtZW50IGNoYW5nZXMgdG8gdXNlIHRoZSBpbml0aWFsIGNvbG9yCisgKiBp
dCBoYXMgYmVmb3JlIHRoZSByZXF1ZXN0IHN0YXJ0ZWQuCisgKiBUaGUgc2lnbmFsICNXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0OjpmaW5pc2hlZAorICogaXMgZW1pdHRlZCB0byBub3RpZnkgdGhh
dCB0aGUgcmVxdWVzdCBoYXMgZmluaXNoZWQuCisgKgorICogU2luY2U6IDIuOAorICovCit2b2lk
IHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsKFdlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3QqIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfQ09MT1Jf
Q0hPT1NFUl9SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIGlmIChyZXF1ZXN0LT5wcml2LT5oYW5k
bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICByZXF1ZXN0LT5wcml2LT5oYW5kbGVkID0gdHJ1
ZTsKKyAgICByZXF1ZXN0LT5wcml2LT5jb2xvckNob29zZXItPmNhbmNlbCgpOworICAgIGdfc2ln
bmFsX2VtaXQocmVxdWVzdCwgc2lnbmFsc1tGSU5JU0hFRF0sIDApOworfQorCitXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0KiB3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0Q3JlYXRlKFdlYktpdENv
bG9yQ2hvb3NlciogY29sb3JDaG9vc2VyKQoreworICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3QqIHJlcXVlc3QgPSBXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKAorICAgICAgICBnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNULCAicmdiYSIsIGNvbG9y
Q2hvb3Nlci0+aW5pdGlhbENvbG9yKCksIG51bGxwdHIpKTsKKyAgICByZXF1ZXN0LT5wcml2LT5j
b2xvckNob29zZXIgPSBjb2xvckNob29zZXI7CisgICAgcmV0dXJuIHJlcXVlc3Q7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29z
ZXJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNh
NGViYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTIsIFNhbXN1
bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Ogor
ICoKKyAqICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiAgIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24KKyAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgIWRlZmluZWQoX19XRUJLSVQyX0hf
SU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJfQ09NUElMQVRJT04pCisjZXJyb3IgIk9ubHkg
PHdlYmtpdDIvd2Via2l0Mi5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkuIgorI2VuZGlmCisK
KyNpZm5kZWYgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdF9oCisjZGVmaW5lIFdlYktpdENvbG9y
Q2hvb3NlclJlcXVlc3RfaAorCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHdlYmtp
dDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX1RZ
UEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUICAgICAgICAgICAgKHdlYmtpdF9jb2xvcl9jaG9vc2Vy
X3JlcXVlc3RfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVT
VChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJL
SVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QsIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Qp
KQorI2RlZmluZSBXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKG9iaikgICAgICAgICAo
R19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX0NPTE9SX0NIT09T
RVJfUkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1RfQ0xBU1Mo
a2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVf
Q09MT1JfQ0hPT1NFUl9SRVFVRVNULCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MpKQor
I2RlZmluZSBXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUX0NMQVNTKGtsYXNzKSAoR19U
WVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJf
UkVRVUVTVCkpCisjZGVmaW5lIFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1RfR0VUX0NMQVNT
KG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfQ09M
T1JfQ0hPT1NFUl9SRVFVRVNULCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MpKQorCit0
eXBlZGVmIHN0cnVjdCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCAgICAgICAgV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdDsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0Q2xhc3MgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3M7Cit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUgV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdFByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCB7CisgICAg
R09iamVjdCBwYXJlbnQ7CisKKyAgICAvKjwgcHJpdmF0ZSA+Ki8KKyAgICBXZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0UHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdENsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKwor
V0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfdHlwZSAg
ICAgICAgICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9jb2xvcl9jaG9v
c2VyX3JlcXVlc3RfZ2V0X3JnYmEgICAgICAgICAgICAgIChXZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0ICpyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdka1JHQkEgICAgICAgICAgICAgICAgICAgKnJnYmEpOworCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2V0X3JnYmEgICAgICAgICAgICAg
IChXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICpyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdka1JHQkEgICAgICAgICAg
ICAgKnJnYmEpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVl
c3RfZ2V0X2VsZW1lbnRfcmVjdGFuZ2xlIChXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICpyZXF1
ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdka1JlY3RhbmdsZSAgICAgICAgICAgICAgKnJlY3QpOworCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZmluaXNoICAgICAgICAgICAgICAgIChXZWJLaXRD
b2xvckNob29zZXJSZXF1ZXN0ICpyZXF1ZXN0KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRf
Y29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbCAgICAgICAgICAgICAgICAoV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdCAqcmVxdWVzdCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2Vy
UmVxdWVzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uM2FjZmUyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgKQEAgLTAsMCAr
MSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICogQ29weXJp
Z2h0IChjKSAyMDEyLCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQgbm90aWNlLAorICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg
IkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdENvbG9y
Q2hvb3NlclJlcXVlc3RQcml2YXRlX2gKKworI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3Nlci5o
IgorI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaCIKKworV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdCogd2Via2l0Q29sb3JDaG9vc2VyUmVxdWVzdENyZWF0ZShXZWJLaXQ6Oldl
YktpdENvbG9yQ2hvb3NlciopOworCisjZW5kaWYgLy8gV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dFByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcAppbmRleCBhMDk3NjRiLi4yNDI0YmIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIldlYktpdEF1dGhlbnRpY2F0aW9uRGlhbG9nLmgiCiAjaW5jbHVkZSAi
V2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdEJh
Y2tGb3J3YXJkTGlzdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRDb2xvckNob29zZXIuaCIK
ICNpbmNsdWRlICJXZWJLaXRDb250ZXh0TWVudUNsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdENv
bnRleHRNZW51SXRlbVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRDb250ZXh0TWVudVByaXZh
dGUuaCIKQEAgLTEzMiw2ICsxMzMsOCBAQCBlbnVtIHsKIAogICAgIFNIT1dfTk9USUZJQ0FUSU9O
LAogCisgICAgUlVOX0NPTE9SX0NIT09TRVIsCisKICAgICBMQVNUX1NJR05BTAogfTsKIApAQCAt
NjQ1LDcgKzY0OCwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09i
amVjdCogb2JqZWN0KQogICAgIC8vIFRoZSByZWxhdGVkIHZpZXcgaXMgb25seSB2YWxpZCBkdXJp
bmcgdGhlIGNvbnN0cnVjdGlvbi4KICAgICBwcml2LT5yZWxhdGVkVmlldyA9IG51bGxwdHI7CiAK
LSAgICB3ZWJraXRXZWJWaWV3QmFzZVNldERvd25sb2FkUmVxdWVzdEhhbmRsZXIoV0VCS0lUX1dF
Ql9WSUVXX0JBU0Uod2ViVmlldyksIHdlYmtpdFdlYlZpZXdIYW5kbGVEb3dubG9hZFJlcXVlc3Qp
OworICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19C
QVNFKHdlYlZpZXcpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0RG93bmxvYWRSZXF1ZXN0SGFu
ZGxlcih3ZWJWaWV3QmFzZSwgd2Via2l0V2ViVmlld0hhbmRsZURvd25sb2FkUmVxdWVzdCk7Cisg
ICAgd2Via2l0V2ViVmlld0Jhc2VTZXRDb2xvclBpY2tlckZhY3RvcnlGdW5jdGlvbih3ZWJWaWV3
QmFzZSwgW10oV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IElu
dFJlY3QmIHJlY3QpIHsKKyAgICAgICAgcmV0dXJuIFdlYktpdENvbG9yQ2hvb3Nlcjo6Y3JlYXRl
KHBhZ2UsIGNvbG9yLCByZWN0KTsKKyAgICB9KTsKIAogICAgIGF0dGFjaExvYWRlckNsaWVudFRv
Vmlldyh3ZWJWaWV3KTsKICAgICBhdHRhY2hVSUNsaWVudFRvVmlldyh3ZWJWaWV3KTsKQEAgLTE3
MTQsNiArMTcyMSw0MCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChX
ZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgIHdlYmtpdF9tYXJz
aGFsX0JPT0xFQU5fX09CSkVDVCwKICAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOLCAxLAogICAg
ICAgICAgICAgV0VCS0lUX1RZUEVfTk9USUZJQ0FUSU9OKTsKKworICAgICAvKioKKyAgICAgICog
V2ViS2l0V2ViVmlldzo6cnVuLWNvbG9yLWNob29zZXI6CisgICAgICAqIEB3ZWJfdmlldzogdGhl
ICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAgKiBA
cmVxdWVzdDogYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAorICAgICAgKgorICAgICAgKiBU
aGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gdGhlIHVzZXIgaW50ZXJhY3RzIHdpdGggYSAmbHQ7
aW5wdXQKKyAgICAgICogdHlwZT0nY29sb3InIC8mZ3Q7IEhUTUwgZWxlbWVudCwgcmVxdWVzdGlu
ZyBmcm9tIFdlYktpdCB0byBzaG93CisgICAgICAqIGEgZGlhbG9nIHRvIHNlbGVjdCBhIGNvbG9y
LiBUbyBsZXQgdGhlIGFwcGxpY2F0aW9uIGtub3cgdGhlIGRldGFpbHMgb2YKKyAgICAgICogdGhl
IGNvbG9yIGNob29zZXIsIGFzIHdlbGwgYXMgdG8gYWxsb3cgdGhlIGNsaWVudCBhcHBsaWNhdGlv
biB0byBlaXRoZXIKKyAgICAgICogY2FuY2VsIHRoZSByZXF1ZXN0IG9yIHBlcmZvcm0gYW4gYWN0
dWFsIGNvbG9yIHNlbGVjdGlvbiwgdGhlIHNpZ25hbCB3aWxsCisgICAgICAqIHBhc3MgYW4gaW5z
dGFuY2Ugb2YgdGhlICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0IGluIHRoZSBAcmVxdWVzdAor
ICAgICAgKiBhcmd1bWVudC4KKyAgICAgICoKKyAgICAgICogSXQgaXMgcG9zc2libGUgdG8gaGFu
ZGxlIHRoaXMgcmVxdWVzdCBhc3luY2hyb25vdXNseSBieSBpbmNyZWFzaW5nIHRoZQorICAgICAg
KiByZWZlcmVuY2UgY291bnQgb2YgdGhlIHJlcXVlc3QuCisgICAgICAqCisgICAgICAqIFRoZSBk
ZWZhdWx0IHNpZ25hbCBoYW5kbGVyIHdpbGwgYXN5bmNocm9ub3VzbHkgcnVuIGEgcmVndWxhcgor
ICAgICAgKiAjR3RrQ29sb3JDaG9vc2VyIGZvciB0aGUgdXNlciB0byBpbnRlcmFjdCB3aXRoLgor
ICAgICAgKgorICAgICAgKiBSZXR1cm5zOiAlVFJVRSB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZy
b20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50LgorICAgICAgKiAgICVGQUxTRSB0byBwcm9w
YWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIuCisgICAgICAqCisgICAgICAqIFNpbmNlOiAyLjgKKyAg
ICAgICovCisgICAgc2lnbmFsc1tSVU5fQ09MT1JfQ0hPT1NFUl0gPQorICAgICAgICBnX3NpZ25h
bF9uZXcoInJ1bi1jb2xvci1jaG9vc2VyIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNT
KHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAg
ICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIHJ1bl9jb2xvcl9jaG9vc2Vy
KSwKKyAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwgbnVsbHB0
ciwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xFQU5fX09CSkVDVCwKKyAgICAgICAg
ICAgIEdfVFlQRV9CT09MRUFOLCAxLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfQ09MT1JfQ0hP
T1NFUl9SRVFVRVNUKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NhbmNlbEF1dGhl
bnRpY2F0aW9uUmVxdWVzdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpAQCAtMjA5MSw2ICsyMTMy
LDEzIEBAIGJvb2wgd2Via2l0V2ViVmlld0VtaXRTaG93Tm90aWZpY2F0aW9uKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIFdlYktpdE5vdGlmaWNhdGlvCiAgICAgcmV0dXJuIGhhbmRsZWQ7CiB9CiAK
K2Jvb2wgd2Via2l0V2ViVmlld0VtaXRSdW5Db2xvckNob29zZXIoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnYm9vbGVh
biBoYW5kbGVkOworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tSVU5fQ09MT1Jf
Q0hPT1NFUl0sIDAsIHJlcXVlc3QsICZoYW5kbGVkKTsKKyAgICByZXR1cm4gaGFuZGxlZDsKK30K
KwogLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfbmV3OgogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCA3ODUyN2IxLi4wY2ZjMjQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRBdXRoZW50aWNh
dGlvblJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEJhY2tGb3J3YXJkTGlzdC5o
PgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Rmls
ZUNob29zZXJSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGaW5kQ29udHJvbGxl
ci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0Lmg+CkBA
IC0yNDQsMTIgKzI0NSwxMyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVGxzQ2VydGlmaWNhdGVG
bGFncyAgICAgICAgIGVycm9ycyk7CiAgICAgZ2Jvb2xlYW4gICAoKiBzaG93X25vdGlmaWNhdGlv
bikgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Tm90aWZp
Y2F0aW9uICAgICAgICAgICpub3RpZmljYXRpb24pOworICAgIGdib29sZWFuICAgKCogcnVuX2Nv
bG9yX2Nob29zZXIpICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJf
dmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3QgICAqcmVxdWVzdCk7CiAKICAgICB2b2lkICgqX3dlYmtp
dF9yZXNlcnZlZDApICh2b2lkKTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDEpICh2b2lk
KTsKICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDIpICh2b2lkKTsKICAgICB2b2lkICgqX3dl
YmtpdF9yZXNlcnZlZDMpICh2b2lkKTsKLSAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDQpICh2
b2lkKTsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCBlMDFiNzM2Li5i
NjY4YzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0xOTEsNiArMTkxLDcgQEAgc3RydWN0IF9XZWJLaXRX
ZWJWaWV3QmFzZVByaXZhdGUgewogI2lmIEhBVkUoR1RLX0dFU1RVUkVTKQogICAgIHN0ZDo6dW5p
cXVlX3B0cjxHZXN0dXJlQ29udHJvbGxlcj4gZ2VzdHVyZUNvbnRyb2xsZXI7CiAjZW5kaWYKKyAg
ICBDb2xvclBpY2tlckZhY3RvcnlGdW5jdGlvbiBjb2xvclBpY2tlckZhY3RvcnlGdW5jdGlvbjsK
IH07CiAKIFdFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRXZWJWaWV3QmFzZSwgd2Via2l0X3dlYl92
aWV3X2Jhc2UsIEdUS19UWVBFX0NPTlRBSU5FUikKQEAgLTEzMzQsMyArMTMzNSwxNiBAQCB2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlRXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKFdlYktpdFdl
YlZpZXdCYXNlKiB3ZWJraXRXZQogICAgIFVOVVNFRF9QQVJBTSh3ZWJraXRXZWJWaWV3QmFzZSk7
CiAjZW5kaWYKIH0KKwordm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldENvbG9yUGlja2VyRmFjdG9y
eUZ1bmN0aW9uKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgQ29sb3JQaWNrZXJGYWN0
b3J5RnVuY3Rpb24mJiBmdW5jdGlvbikKK3sKKyAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+Y29sb3JQ
aWNrZXJGYWN0b3J5RnVuY3Rpb24gPSBXVEY6Om1vdmUoZnVuY3Rpb24pOworfQorCitQYXNzUmVm
UHRyPFdlYkNvbG9yUGlja2VyPiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZUNvbG9yUGlja2VyKFdl
YktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBX
ZWJDb3JlOjpDb2xvciYgY29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCit7Cisg
ICAgaWYgKHdlYlZpZXdCYXNlLT5wcml2LT5jb2xvclBpY2tlckZhY3RvcnlGdW5jdGlvbikKKyAg
ICAgICAgcmV0dXJuIHdlYlZpZXdCYXNlLT5wcml2LT5jb2xvclBpY2tlckZhY3RvcnlGdW5jdGlv
bihwYWdlLCBjb2xvciwgcmVjdCk7CisKKyAgICByZXR1cm4gV2ViQ29sb3JQaWNrZXJHdGs6OmNy
ZWF0ZShwYWdlLCBjb2xvciwgcmVjdCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCmluZGV4IGE1
ZjM1NTUuLjIyZDAxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCkBAIC0zMCw2ICszMCw3IEBA
CiAKICNpbmNsdWRlICJEcmFnQW5kRHJvcEhhbmRsZXIuaCIKICNpbmNsdWRlICJHZXN0dXJlQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIldlYkNvbG9yUGlja2VyR3RrLmgiCiAjaW5jbHVkZSAiV2Vi
Q29udGV4dE1lbnVQcm94eUd0ay5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5LmgiCiAj
aW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgpAQCAtODAsNCArODEsOCBAQCBXZWJLaXQ6OkRyYWdB
bmREcm9wSGFuZGxlciYgd2Via2l0V2ViVmlld0Jhc2VEcmFnQW5kRHJvcEhhbmRsZXIoV2ViS2l0
V2ViVmlld0JhcwogV2ViS2l0OjpHZXN0dXJlQ29udHJvbGxlciYgd2Via2l0V2ViVmlld0Jhc2VH
ZXN0dXJlQ29udHJvbGxlcihXZWJLaXRXZWJWaWV3QmFzZSopOwogI2VuZGlmCiAKK3R5cGVkZWYg
c3RkOjpmdW5jdGlvbjxQYXNzUmVmUHRyPFdlYktpdDo6V2ViQ29sb3JQaWNrZXI+IChXZWJLaXQ6
OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpPiBDb2xvclBpY2tlckZhY3RvcnlGdW5jdGlvbjsKK3ZvaWQgd2Via2l0V2ViVmlld0Jh
c2VTZXRDb2xvclBpY2tlckZhY3RvcnlGdW5jdGlvbihXZWJLaXRXZWJWaWV3QmFzZSosIENvbG9y
UGlja2VyRmFjdG9yeUZ1bmN0aW9uJiYpOworUGFzc1JlZlB0cjxXZWJLaXQ6OldlYkNvbG9yUGlj
a2VyPiB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZUNvbG9yUGlja2VyKFdlYktpdFdlYlZpZXdCYXNl
KiwgV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmKTsKKwogI2VuZGlmIC8vIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld1ByaXZhdGUuaAppbmRleCA4YjI0ZDBjLi4yNmVmYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKQEAg
LTU5LDYgKzU5LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3U3VibWl0Rm9ybVJlcXVlc3QoV2ViS2l0
V2ViVmlldyosIFdlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdCoKIHZvaWQgd2Via2l0V2ViVmll
d0hhbmRsZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKTsKIHZvaWQgd2Via2l0V2ViVmlld0luc2VjdXJl
Q29udGVudERldGVjdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVu
dCk7CiBib29sIHdlYmtpdFdlYlZpZXdFbWl0U2hvd05vdGlmaWNhdGlvbihXZWJLaXRXZWJWaWV3
KiwgV2ViS2l0Tm90aWZpY2F0aW9uKik7Citib29sIHdlYmtpdFdlYlZpZXdFbWl0UnVuQ29sb3JD
aG9vc2VyKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Kik7CiB2b2lk
IHdlYmtpdFdlYlZpZXdXZWJQcm9jZXNzQ3Jhc2hlZChXZWJLaXRXZWJWaWV3Kik7CiB2b2lkIHdl
YmtpdFdlYlZpZXdJc1BsYXlpbmdBdWRpb0NoYW5nZWQoV2ViS2l0V2ViVmlldyopOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
NC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IDA4MDU4NGMuLmJjZDVmNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00
LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC0xMjQ3LDMgKzEyNDcsMjYgQEAgV0VC
S0lUX1dFQl9ISVRfVEVTVF9SRVNVTFRfR0VUX0NMQVNTCiBXZWJLaXRXZWJIaXRUZXN0UmVzdWx0
UHJpdmF0ZQogd2Via2l0X3dlYl9oaXRfdGVzdF9yZXN1bHRfZ2V0X3R5cGUKIDwvU0VDVElPTj4K
KworPFNFQ1RJT04+Cis8RklMRT5XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PC9GSUxFPgorV2Vi
S2l0Q29sb3JDaG9vc2VyUmVxdWVzdAord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRf
cmdiYQord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9zZXRfcmdiYQord2Via2l0X2NvbG9y
X2Nob29zZXJfcmVxdWVzdF9nZXRfZWxlbWVudF9yZWN0YW5nbGUKK3dlYmtpdF9jb2xvcl9jaG9v
c2VyX3JlcXVlc3RfZmluaXNoCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbAor
Cis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcwor
V0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUCitXRUJLSVRfQ09MT1JfQ0hPT1NFUl9S
RVFVRVNUCitXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUCitXRUJLSVRfQ09MT1JfQ0hP
T1NFUl9SRVFVRVNUX0NMQVNTCitXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUX0NMQVNT
CitXRUJLSVRfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUX0dFVF9DTEFTUworCis8U1VCU0VDVElPTiBQ
cml2YXRlPgorV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUKK3dlYmtpdF9jb2xvcl9j
aG9vc2VyX3JlcXVlc3RfZ2V0X3R5cGUKKzwvU0VDVElPTj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCmlu
ZGV4IDJkNTNlYmQuLjA0NjM0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbApAQCAtMzMsNiArMzMs
NyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRXZWJSZXNvdXJjZS54bWwiLz4K
ICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0RXJyb3IueG1sIi8+CiAgICAgPHhpOmlu
Y2x1ZGUgaHJlZj0ieG1sL1dlYktpdEZhdmljb25EYXRhYmFzZS54bWwiLz4KKyAgICA8eGk6aW5j
bHVkZSBocmVmPSJ4bWwvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC54bWwiLz4KICAgICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LnhtbCIvPgogICAgIDx4
aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRGaW5kQ29udHJvbGxlci54bWwiLz4KICAgICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0Q29va2llTWFuYWdlci54bWwiLz4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCBkMzYyZjA1Li5kOWJjOTIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC00MSw2ICs0
MSw3IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRFbnVtVHlwZXMuaD4KICNpbmNsdWRlIDx3
ZWJraXQyL1dlYktpdEVycm9yLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGYXZpY29uRGF0
YWJhc2UuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaD4K
ICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5oPgogI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0RmluZENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktp
dEZvcm1TdWJtaXNzaW9uUmVxdWVzdC5oPgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDUxNTA2YTAuLjc1NmQ3ZDggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNiBAQAogMjAxNS0w
Mi0wOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKKyAgICAg
ICAgW0dUS10gQWRkIEFQSSB0byBhbGxvdyBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IGNvbG9yIGNo
b29zZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk4OTM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgY29sb3IgY2hvb3NlciBpbXBsZW1lbnRhdGlvbiBmb3IgTWluaUJy
b3dzZXIgdXNpbmcKKyAgICAgICAgR3RrUG9wb3ZlciB3aGVuIHRoZSBHVEsrIHZlcnNpb24gaXMg
cmVjZW50IGVub3VnaC4KKyAgICAgICAgQW5kIGEgdGVzdCBjYXNlIHRvIGNoZWNrIHRoZSBuZXcg
Y29sb3IgY2hvb3NlciBBUEkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3Nlcldp
bmRvdy5jOgorICAgICAgICAoY29sb3JDaG9vc2VyUkdCQUNoYW5nZWQpOgorICAgICAgICAocG9w
b3ZlckNvbG9yQ2xvc2VkKToKKyAgICAgICAgKGNvbG9yQ2hvb3NlclJlcXVlc3RGaW5pc2hlZCk6
CisgICAgICAgIChydW5Db2xvckNob29zZXJDYWxsYmFjayk6CisgICAgICAgIChicm93c2VyV2lu
ZG93Q29uc3RydWN0ZWQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0VUlDbGllbnQuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdDb2xvckNob29zZXJSZXF1
ZXN0KToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisKKzIwMTUtMDItMDkgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtHVEtdIEFkZCBkZWZhdWx0
IGNvbG9yIGNob29zZXIgaW1wbGVtZW50YXRpb24gdXNpbmcgR3RrQ29sb3JDaG9vc2VyRGlhbG9n
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEzOTIK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBiL1Rv
b2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKaW5kZXggZjg1NGMyMy4uMThkZDQ1
YSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysg
Yi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC01MDEsNiArNTAxLDUx
IEBAIHN0YXRpYyBnYm9vbGVhbiBzY3JvbGxFdmVudENhbGxiYWNrKFdlYktpdFdlYlZpZXcgKndl
YlZpZXcsIGNvbnN0IEdka0V2ZW50U2Nyb2xsCiAgICAgcmV0dXJuIGJyb3dzZXJXaW5kb3dab29t
T3V0KHdpbmRvdyk7CiB9CiAKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCAxMiwgMCkKK3N0YXRp
YyB2b2lkIGNvbG9yQ2hvb3NlclJHQkFDaGFuZ2VkKEd0a0NvbG9yQ2hvb3NlciAqY29sb3JDaG9v
c2VyLCBHUGFyYW1TcGVjICpwYXJhbVNwZWMsIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgKnJl
cXVlc3QpCit7CisgICAgR2RrUkdCQSByZ2JhOworICAgIGd0a19jb2xvcl9jaG9vc2VyX2dldF9y
Z2JhKGNvbG9yQ2hvb3NlciwgJnJnYmEpOworICAgIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVl
c3Rfc2V0X3JnYmEocmVxdWVzdCwgJnJnYmEpOworfQorCitzdGF0aWMgdm9pZCBwb3BvdmVyQ29s
b3JDbG9zZWQoR3RrV2lkZ2V0ICpwb3BvdmVyLCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICpy
ZXF1ZXN0KQoreworICAgIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZmluaXNoKHJlcXVl
c3QpOworfQorCitzdGF0aWMgdm9pZCBjb2xvckNob29zZXJSZXF1ZXN0RmluaXNoZWQoV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdCAqcmVxdWVzdCwgR3RrV2lkZ2V0ICpwb3BvdmVyKQoreworICAg
IGdfb2JqZWN0X3VucmVmKHJlcXVlc3QpOworICAgIGd0a193aWRnZXRfZGVzdHJveShwb3BvdmVy
KTsKK30KKworc3RhdGljIGdib29sZWFuIHJ1bkNvbG9yQ2hvb3NlckNhbGxiYWNrKFdlYktpdFdl
YlZpZXcgKndlYlZpZXcsIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgKnJlcXVlc3QsIEJyb3dz
ZXJXaW5kb3cgKndpbmRvdykKK3sKKyAgICBHdGtXaWRnZXQgKnBvcG92ZXIgPSBndGtfcG9wb3Zl
cl9uZXcoR1RLX1dJREdFVCh3ZWJWaWV3KSk7CisKKyAgICBHZGtSZWN0YW5nbGUgcmVjdGFuZ2xl
OworICAgIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2VsZW1lbnRfcmVjdGFuZ2xl
KHJlcXVlc3QsICZyZWN0YW5nbGUpOworICAgIGd0a19wb3BvdmVyX3NldF9wb2ludGluZ190byhH
VEtfUE9QT1ZFUihwb3BvdmVyKSwgJnJlY3RhbmdsZSk7CisKKyAgICBHdGtXaWRnZXQgKmNvbG9y
Q2hvb3NlciA9IGd0a19jb2xvcl9jaG9vc2VyX3dpZGdldF9uZXcoKTsKKyAgICBHZGtSR0JBIHJn
YmE7CisgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfcmdiYShyZXF1ZXN0LCAm
cmdiYSk7CisgICAgZ3RrX2NvbG9yX2Nob29zZXJfc2V0X3JnYmEoR1RLX0NPTE9SX0NIT09TRVIo
Y29sb3JDaG9vc2VyKSwgJnJnYmEpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoY29sb3JDaG9vc2Vy
LCAibm90aWZ5OjpyZ2JhIiwgR19DQUxMQkFDSyhjb2xvckNob29zZXJSR0JBQ2hhbmdlZCksIHJl
cXVlc3QpOworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIocG9wb3ZlciksIGNv
bG9yQ2hvb3Nlcik7CisgICAgZ3RrX3dpZGdldF9zaG93KGNvbG9yQ2hvb3Nlcik7CisKKyAgICBn
X29iamVjdF9yZWYocmVxdWVzdCk7CisgICAgZ19zaWduYWxfY29ubmVjdF9vYmplY3QocG9wb3Zl
ciwgImhpZGUiLCBHX0NBTExCQUNLKHBvcG92ZXJDb2xvckNsb3NlZCksIHJlcXVlc3QsIDApOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3Rfb2JqZWN0KHJlcXVlc3QsICJmaW5pc2hlZCIsIEdfQ0FMTEJB
Q0soY29sb3JDaG9vc2VyUmVxdWVzdEZpbmlzaGVkKSwgcG9wb3ZlciwgMCk7CisKKyAgICBndGtf
d2lkZ2V0X3Nob3cocG9wb3Zlcik7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKyNlbmRpZiAvKiBH
VEtfQ0hFQ0tfVkVSU0lPTigzLCAxMiwgMCkgKi8KKwogc3RhdGljIHZvaWQgYnJvd3NlcldpbmRv
d1VwZGF0ZVpvb21BY3Rpb25zKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKIHsKICAgICBndGtfd2lk
Z2V0X3NldF9zZW5zaXRpdmUod2luZG93LT56b29tSW5JdGVtLCBicm93c2VyV2luZG93Q2FuWm9v
bUluKHdpbmRvdykpOwpAQCAtODM4LDYgKzg4Myw5IEBAIHN0YXRpYyB2b2lkIGJyb3dzZXJXaW5k
b3dDb25zdHJ1Y3RlZChHT2JqZWN0ICpnT2JqZWN0KQogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2lu
ZG93LT53ZWJWaWV3LCAibGVhdmUtZnVsbHNjcmVlbiIsIEdfQ0FMTEJBQ0sod2ViVmlld0xlYXZl
RnVsbFNjcmVlbiksIHdpbmRvdyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZp
ZXcsICJub3RpZnk6OmlzLWxvYWRpbmciLCBHX0NBTExCQUNLKHdlYlZpZXdJc0xvYWRpbmdDaGFu
Z2VkKSwgd2luZG93KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+d2ViVmlldywgInNj
cm9sbC1ldmVudCIsIEdfQ0FMTEJBQ0soc2Nyb2xsRXZlbnRDYWxsYmFjayksIHdpbmRvdyk7Cisj
aWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMTIsIDApCisgICAgZ19zaWduYWxfY29ubmVjdCh3aW5k
b3ctPndlYlZpZXcsICJydW4tY29sb3ItY2hvb3NlciIsIEdfQ0FMTEJBQ0socnVuQ29sb3JDaG9v
c2VyQ2FsbGJhY2spLCB3aW5kb3cpOworI2VuZGlmCiAKICAgICBnX3NpZ25hbF9jb25uZWN0KHdl
YmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3aW5kb3ctPndlYlZpZXcpLCAiZG93bmxvYWQtc3Rh
cnRlZCIsIEdfQ0FMTEJBQ0soZG93bmxvYWRTdGFydGVkKSwgd2luZG93KTsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RVSUNsaWVudC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcApp
bmRleCBmMjc3NWVkLi43YjkwMGJhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcApAQCAtODU3LDYgKzg1NywxMDggQEAg
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QoRmlsZUNob29zZXJUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9j
YW5jZWwoZmlsZUNob29zZXJSZXF1ZXN0KTsKIH0KIAorY2xhc3MgQ29sb3JDaG9vc2VyVGVzdDog
cHVibGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJF
KENvbG9yQ2hvb3NlclRlc3QpOworCisgICAgc3RhdGljIGdib29sZWFuIHJ1bkNvbG9yQ2hvb3Nl
ckNhbGxiYWNrKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1
ZXN0LCBDb2xvckNob29zZXJUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgdGVzdC0+cnVuQ29s
b3JDaG9vc2VyKHJlcXVlc3QpOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICBz
dGF0aWMgdm9pZCByZXF1ZXN0RmluaXNoZWRDYWxsYmFjayhXZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0KiByZXF1ZXN0LCBDb2xvckNob29zZXJUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgZ19h
c3NlcnQodGVzdC0+bV9yZXF1ZXN0LmdldCgpID09IHJlcXVlc3QpOworICAgICAgICB0ZXN0LT5t
X3JlcXVlc3QgPSBudWxscHRyOworICAgICAgICBpZiAoZ19tYWluX2xvb3BfaXNfcnVubmluZyh0
ZXN0LT5tX21haW5Mb29wKSkKKyAgICAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9t
YWluTG9vcCk7CisgICAgfQorCisgICAgQ29sb3JDaG9vc2VyVGVzdCgpCisgICAgeworICAgICAg
ICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgInJ1bi1jb2xvci1jaG9vc2VyIiwgR19DQUxM
QkFDSyhydW5Db2xvckNob29zZXJDYWxsYmFjayksIHRoaXMpOworICAgIH0KKworICAgIHZvaWQg
cnVuQ29sb3JDaG9vc2VyKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QpCisgICAg
eworICAgICAgICBnX2Fzc2VydChXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKHJlcXVl
c3QpKTsKKyAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09C
SkVDVChyZXF1ZXN0KSk7CisgICAgICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgICAgIGdf
c2lnbmFsX2Nvbm5lY3QocmVxdWVzdCwgImZpbmlzaGVkIiwgR19DQUxMQkFDSyhyZXF1ZXN0Rmlu
aXNoZWRDYWxsYmFjayksIHRoaXMpOworICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxv
b3ApOworICAgIH0KKworICAgIHZvaWQgZmluaXNoUmVxdWVzdCgpCisgICAgeworICAgICAgICBn
X2Fzc2VydChtX3JlcXVlc3QuZ2V0KCkpOworICAgICAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9y
ZXF1ZXN0X2ZpbmlzaChtX3JlcXVlc3QuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydCghbV9yZXF1
ZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGNhbmNlbFJlcXVlc3QoKQorICAgIHsKKyAgICAgICAg
Z19hc3NlcnQobV9yZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJf
cmVxdWVzdF9jYW5jZWwobV9yZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnQoIW1fcmVx
dWVzdCk7CisgICAgfQorCisgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogY2xpY2tNb3Vz
ZUJ1dHRvbkFuZFdhaXRGb3JDb2xvckNob29zZXJSZXF1ZXN0KGludCB4LCBpbnQgeSkKKyAgICB7
CisgICAgICAgIGNsaWNrTW91c2VCdXR0b24oeCwgeSk7CisgICAgICAgIGdfbWFpbl9sb29wX3J1
bihtX21haW5Mb29wKTsKKyAgICAgICAgZ19hc3NlcnQobV9yZXF1ZXN0LmdldCgpKTsKKyAgICAg
ICAgcmV0dXJuIG1fcmVxdWVzdC5nZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR1JlZlB0
cjxXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0PiBtX3JlcXVlc3Q7Cit9OworCitzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld0NvbG9yQ2hvb3NlclJlcXVlc3QoQ29sb3JDaG9vc2VyVGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciogY29sb3JDaG9vc2VySFRN
TEZvcm1hdCA9ICI8aHRtbD48Ym9keT48aW5wdXQgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2xl
ZnQ6MTt0b3A6MTttYXJnaW46MDtwYWRkaW5nOjA7d2lkdGg6NDU7aGVpZ2h0OjI1JyB0eXBlPSdj
b2xvcicgJXMvPjwvYm9keT48L2h0bWw+IjsKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0
VW50aWxNYXBwZWQoKTsKKworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGVmYXVsdENvbG9ySFRNTChn
X3N0cmR1cF9wcmludGYoY29sb3JDaG9vc2VySFRNTEZvcm1hdCwgIiIpKTsKKyAgICB0ZXN0LT5s
b2FkSHRtbChkZWZhdWx0Q29sb3JIVE1MLmdldCgpLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0
VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1
ZXN0ID0gdGVzdC0+Y2xpY2tNb3VzZUJ1dHRvbkFuZFdhaXRGb3JDb2xvckNob29zZXJSZXF1ZXN0
KDUsIDUpOworCisgICAgLy8gRGVmYXVsdCBjb2xvciBpcyBibGFjayAoIzAwMDAwMCkuCisgICAg
R2RrUkdCQSByZ2JhMTsKKyAgICBHZGtSR0JBIHJnYmEyID0geyAwLiwgMC4sIDAuLCAxLiB9Owor
ICAgIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X3JnYmEocmVxdWVzdCwgJnJnYmEx
KTsKKyAgICBnX2Fzc2VydChnZGtfcmdiYV9lcXVhbCgmcmdiYTEsICZyZ2JhMikpOworCisgICAg
Ly8gU2V0IGEgZGlmZmVyZW50IGNvbG9yLgorICAgIHJnYmEyLmdyZWVuID0gMTsKKyAgICB3ZWJr
aXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NldF9yZ2JhKHJlcXVlc3QsICZyZ2JhMik7CisgICAg
d2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfcmdiYShyZXF1ZXN0LCAmcmdiYTEpOwor
ICAgIGdfYXNzZXJ0KGdka19yZ2JhX2VxdWFsKCZyZ2JhMSwgJnJnYmEyKSk7CisKKyAgICBHZGtS
ZWN0YW5nbGUgcmVjdDsKKyAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9lbGVt
ZW50X3JlY3RhbmdsZShyZXF1ZXN0LCAmcmVjdCk7CisgICAgZ19hc3NlcnRfY21waW50KHJlY3Qu
eCwgPT0gLCAxKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQocmVjdC55LCA9PSAsIDEpOworICAgIGdf
YXNzZXJ0X2NtcGludChyZWN0LndpZHRoLCA9PSAsIDQ1KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
cmVjdC5oZWlnaHQsID09ICwgMjUpOworCisgICAgdGVzdC0+ZmluaXNoUmVxdWVzdCgpOworCisg
ICAgLy8gVXNlIGFuIGluaXRpYWwgY29sb3IuCisgICAgR1VuaXF1ZVB0cjxjaGFyPiBpbml0aWFs
Q29sb3JIVE1MKGdfc3RyZHVwX3ByaW50Zihjb2xvckNob29zZXJIVE1MRm9ybWF0LCAidmFsdWU9
JyNGRjAwRkYnIikpOworICAgIHRlc3QtPmxvYWRIdG1sKGluaXRpYWxDb2xvckhUTUwuZ2V0KCks
IG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHJlcXVl
c3QgPSB0ZXN0LT5jbGlja01vdXNlQnV0dG9uQW5kV2FpdEZvckNvbG9yQ2hvb3NlclJlcXVlc3Qo
NSwgNSk7CisKKyAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9yZ2JhKHJlcXVl
c3QsICZyZ2JhMSk7CisgICAgR2RrUkdCQSByZ2JhMyA9IHsgMS4sIDAuLCAxLiwgMS4gfTsKKyAg
ICBnX2Fzc2VydChnZGtfcmdiYV9lcXVhbCgmcmdiYTEsICZyZ2JhMykpOworCisgICAgdGVzdC0+
Y2FuY2VsUmVxdWVzdCgpOworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgVUlDbGllbnRU
ZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiY3JlYXRlLXJlYWR5LWNsb3NlIiwgdGVzdFdlYlZp
ZXdDcmVhdGVSZWFkeUNsb3NlKTsKQEAgLTg3MCw2ICs5NzIsNyBAQCB2b2lkIGJlZm9yZUFsbCgp
CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAidXNlcm1lZGlhLXBlcm1p
c3Npb24tcmVxdWVzdHMiLCB0ZXN0V2ViVmlld1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyk7
CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiYXVkaW8tdXNlcm1lZGlh
LXBlcm1pc3Npb24tcmVxdWVzdCIsIHRlc3RXZWJWaWV3QXVkaW9Pbmx5VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RzKTsKICAgICBGaWxlQ2hvb3NlclRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIs
ICJmaWxlLWNob29zZXItcmVxdWVzdCIsIHRlc3RXZWJWaWV3RmlsZUNob29zZXJSZXF1ZXN0KTsK
KyAgICBDb2xvckNob29zZXJUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiY29sb3ItY2hvb3Nl
ci1yZXF1ZXN0IiwgdGVzdFdlYlZpZXdDb2xvckNob29zZXJSZXF1ZXN0KTsKIH0KIAogdm9pZCBh
ZnRlckFsbCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246382</attachid>
            <date>2015-02-11 02:07:32 -0800</date>
            <delta_ts>2015-02-11 03:26:16 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-color-chooser-api.diff</filename>
            <type>text/plain</type>
            <size>42055</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmYzA2M2FhLi40M2Y0ZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYg
QEAKKzIwMTUtMDItMDkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEFkZCBBUEkgdG8gYWxsb3cgb3ZlcnJpZGluZyB0aGUgZGVmYXVs
dCBjb2xvciBjaG9vc2VyIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdG8gYWxsb3cgdGhlIHVzZXIgdG8gb3ZlcnJp
ZGUgdGhlIGRlZmF1bHQgVUkgb2YgY29sb3IKKyAgICAgICAgY2hvb3Nlci4gU2ltaWxhciB0byB0
aGUgZmlsZSBjaG9vc2VyIEFQSSwgYSBuZXcgcnVuLWNvbG9yLWNob29zZXIKKyAgICAgICAgc2ln
bmFsIGlzIGFkZGVkIHRvIFdlYktpdFdlYlZpZXcgdGhhdCBwYXNzZXMgYSBXZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0CisgICAgICAgIHBhcmFtZXRlciB0byB0aGUgc2lnbmFsLgorCisgICAgICAg
IEluaXRpYWwgcGF0Y2ggYnkgQXJuYXVkIFJlbmV2aWVyIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3Vu
Zy5jb20+LgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IEFkZCBuZXcgZmlsZXMgdG8g
Y29tcGlsYXRpb24uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JQaWNrZXIp
OiBDcmVhdGUgYQorICAgICAgICBXZWJLaXRDb2xvckNob29zZXIgaXMgdGhlIHZpZXcgd2lkZ2V0
IGlzIGEgV2ViS2l0V2ViVmlldyBvciBhCisgICAgICAgIFdlYkNvbG9yUGlja2VyIG90aGVyd2lz
ZSwKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q29sb3JDaG9vc2VyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJLaXRDb2xvckNob29zZXI6OldlYktpdENvbG9yQ2hvb3Nlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYktpdENvbG9yQ2hvb3Nlcjo6fldlYktpdENvbG9yQ2hvb3Nlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYktpdENvbG9yQ2hvb3Nlcjo6ZW5kUGlja2VyKTogQ2hhaW4g
dXAgdG8gcGFyZW50IGNsYXNzCisgICAgICAgIHdoZW4gbm90IGhhdmluZyBhIHJlcXVlc3QsIG9y
IGZpbmlzaCB0aGUgcmVxdWVzdCBpZiB3ZSBoYXZlIG9uZS4KKyAgICAgICAgKFdlYktpdDo6V2Vi
S2l0Q29sb3JDaG9vc2VyOjpjb2xvckNob29zZXJSZXF1ZXN0RmluaXNoZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJLaXRDb2xvckNob29zZXI6OmNvbG9yQ2hvb3NlclJlcXVlc3RSR0JBQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdENvbG9yQ2hvb3Nlcjo6c2hvd0NvbG9yUGlja2Vy
KTogQ3JlYXRlIGEgbmV3CisgICAgICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgYW5kIGVt
aXQgV2ViS2l0V2ViVmlldzo6cnVuLWNvbG9yLWNob29zZXIuCisgICAgICAgIElmIHRoZSBzaWdu
YWwgaXMgbm90IGhhbmRsZWQsIGZhbGxiYWNrIHRvIHRoZSBkZWZhdWx0IGNvbG9yCisgICAgICAg
IGNob29zZXIgZGlhbG9nIGltcGxlbWVudGVkIGJ5IHRoZSBwYXJlbnQgY2xhc3MuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyLmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RHZXRQcm9wZXJ0eSk6CisgICAg
ICAgICh3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0U2V0UHJvcGVydHkpOgorICAgICAgICAod2Vi
a2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9j
b2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2V0X3JnYmEpOgorICAgICAgICAod2Via2l0X2NvbG9yX2No
b29zZXJfcmVxdWVzdF9nZXRfcmdiYSk6CisgICAgICAgICh3ZWJraXRfY29sb3JfY2hvb3Nlcl9y
ZXF1ZXN0X2dldF9lbGVtZW50X3JlY3RhbmdsZSk6CisgICAgICAgICh3ZWJraXRfY29sb3JfY2hv
b3Nlcl9yZXF1ZXN0X2ZpbmlzaCk6CisgICAgICAgICh3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1
ZXN0X2NhbmNlbCk6CisgICAgICAgICh3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0Q3JlYXRlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Lmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3RQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOiBBZGQg
cnVuLWNvbG9yLWNob29zZXIgc2lnbmFsLgorICAgICAgICAod2Via2l0V2ViVmlld0VtaXRSdW5D
b2xvckNob29zZXIpOiBFbWl0IHJ1bi1jb2xvci1jaG9vc2VyIHNpZ25hbC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dDogQWRkIG5ldyBzeW1ib2xzLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWw6IEFkZCBu
ZXcgc2VjdGlvbiBmb3IgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay93ZWJraXQyLmg6IEluY2x1ZGUgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dC5oCisKIDIwMTUtMDItMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBkZWZhdWx0IGNvbG9yIGNob29zZXIgaW1wbGVtZW50
YXRpb24gdXNpbmcgR3RrQ29sb3JDaG9vc2VyRGlhbG9nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtl
CmluZGV4IGI0MTBjYjYuLjM1ZGQ3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0x
MDEsNiArMTAxLDggQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRCYWNrRm9yd2FyZExpc3RQcml2YXRlLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDb2xvckNob29zZXIuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudS5oCiAgICAgVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVBY3Rpb25zLmNwcApAQCAtMzQ3LDYgKzM0OSw3
IEBAIHNldChXZWJLaXQyR1RLX0lOU1RBTExFRF9IRUFERVJTCiAgICAgJHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmgKICAgICAke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRCYWNrRm9yd2FyZExpc3QuaAogICAg
ICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEJhY2tGb3J3YXJkTGlzdEl0
ZW0uaAorICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3QuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dENyZWRlbnRpYWwuaAogICAgICR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dENvbnRleHRNZW51LmgKICAgICAke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDb250ZXh0TWVudUFjdGlvbnMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGU3Mzg4YjQuLmI4M2JlZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5j
cHAKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJXZWJDb2xvclBpY2tlckd0ay5oIgogI2lu
Y2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHlHdGsuaCIKICNpbmNsdWRlICJXZWJFdmVudEZhY3Rv
cnkuaCIKKyNpbmNsdWRlICJXZWJLaXRDb2xvckNob29zZXIuaCIKKyNpbmNsdWRlICJXZWJLaXRX
ZWJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlHdGsuaCIKQEAg
LTIyNiwxMiArMjI4LDEyIEBAIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUGFnZUNs
aWVudEltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByCiAgICAgcmV0dXJuIFdl
YkNvbnRleHRNZW51UHJveHlHdGs6OmNyZWF0ZShtX3ZpZXdXaWRnZXQsIHBhZ2UpOwogfQogCi0j
aWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiBQYXNzUmVmUHRyPFdlYkNvbG9yUGlja2VyPiBQ
YWdlQ2xpZW50SW1wbDo6Y3JlYXRlQ29sb3JQaWNrZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25z
dCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCiB7
CisgICAgaWYgKFdFQktJVF9JU19XRUJfVklFVyhtX3ZpZXdXaWRnZXQpKQorICAgICAgICByZXR1
cm4gV2ViS2l0Q29sb3JDaG9vc2VyOjpjcmVhdGUoKnBhZ2UsIGNvbG9yLCByZWN0KTsKICAgICBy
ZXR1cm4gV2ViQ29sb3JQaWNrZXJHdGs6OmNyZWF0ZSgqcGFnZSwgY29sb3IsIHJlY3QpOwogfQot
I2VuZGlmCiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFRleHRJbmRpY2F0b3IoUGFzc1JlZlB0
cjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yPiwgYm9vbCAvKiBmYWRlT3V0ICovKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3Nl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI2YmFiNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9y
Q2hvb3Nlci5jcHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJ
Z2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0Q29sb3JDaG9v
c2VyLmgiCisKKyNpbmNsdWRlICJXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oIgor
I2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db2xv
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8V2ViS2l0Q29sb3JDaG9v
c2VyPiBXZWJLaXRDb2xvckNob29zZXI6OmNyZWF0ZShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJl
Y3QpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRDb2xvckNob29zZXIocGFnZSwg
aW5pdGlhbENvbG9yLCByZWN0KSk7Cit9CisKK1dlYktpdENvbG9yQ2hvb3Nlcjo6V2ViS2l0Q29s
b3JDaG9vc2VyKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvciwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICA6IFdlYkNvbG9yUGlja2VyR3RrKHBhZ2UsIGluaXRp
YWxDb2xvciwgcmVjdCkKKyAgICAsIG1fZWxlbWVudFJlY3QocmVjdCkKK3sKK30KKworV2ViS2l0
Q29sb3JDaG9vc2VyOjp+V2ViS2l0Q29sb3JDaG9vc2VyKCkKK3sKKyAgICBlbmRQaWNrZXIoKTsK
K30KKwordm9pZCBXZWJLaXRDb2xvckNob29zZXI6OmVuZFBpY2tlcigpCit7CisgICAgaWYgKCFt
X3JlcXVlc3QpIHsKKyAgICAgICAgV2ViQ29sb3JQaWNrZXJHdGs6OmVuZFBpY2tlcigpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9m
aW5pc2gobV9yZXF1ZXN0LmdldCgpKTsKK30KKwordm9pZCBXZWJLaXRDb2xvckNob29zZXI6OmNv
bG9yQ2hvb3NlclJlcXVlc3RGaW5pc2hlZChXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiwgV2Vi
S2l0Q29sb3JDaG9vc2VyKiBjb2xvckNob29zZXIpCit7CisgICAgY29sb3JDaG9vc2VyLT5tX3Jl
cXVlc3QgPSBudWxscHRyOworfQorCit2b2lkIFdlYktpdENvbG9yQ2hvb3Nlcjo6Y29sb3JDaG9v
c2VyUmVxdWVzdFJHQkFDaGFuZ2VkKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3Qs
IEdQYXJhbVNwZWMqLCBXZWJLaXRDb2xvckNob29zZXIqIGNvbG9yQ2hvb3NlcikKK3sKKyAgICBH
ZGtSR0JBIHJnYmE7CisgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfcmdiYShy
ZXF1ZXN0LCAmcmdiYSk7CisgICAgY29sb3JDaG9vc2VyLT5kaWRDaG9vc2VDb2xvcihyZ2JhKTsK
K30KKwordm9pZCBXZWJLaXRDb2xvckNob29zZXI6OnNob3dDb2xvclBpY2tlcihjb25zdCBDb2xv
ciYgY29sb3IpCit7CisgICAgbV9pbml0aWFsQ29sb3IgPSBjb2xvcjsKKyAgICBHUmVmUHRyPFdl
YktpdENvbG9yQ2hvb3NlclJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYod2Via2l0Q29sb3JD
aG9vc2VyUmVxdWVzdENyZWF0ZSh0aGlzKSk7CisgICAgZ19zaWduYWxfY29ubmVjdChyZXF1ZXN0
LmdldCgpLCAibm90aWZ5OjpyZ2JhIiwgR19DQUxMQkFDSyhXZWJLaXRDb2xvckNob29zZXI6OmNv
bG9yQ2hvb3NlclJlcXVlc3RSR0JBQ2hhbmdlZCksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5l
Y3QocmVxdWVzdC5nZXQoKSwgImZpbmlzaGVkIiwgR19DQUxMQkFDSyhXZWJLaXRDb2xvckNob29z
ZXI6OmNvbG9yQ2hvb3NlclJlcXVlc3RGaW5pc2hlZCksIHRoaXMpOworCisgICAgaWYgKHdlYmtp
dFdlYlZpZXdFbWl0UnVuQ29sb3JDaG9vc2VyKFdFQktJVF9XRUJfVklFVyhtX3dlYlZpZXcpLCBy
ZXF1ZXN0LmdldCgpKSkKKyAgICAgICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICBlbHNlCisg
ICAgICAgIFdlYkNvbG9yUGlja2VyR3RrOjpzaG93Q29sb3JQaWNrZXIoY29sb3IpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3Nlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYTg4M2JiMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdENvbG9yQ2hvb3Nlci5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRDb2xvckNob29z
ZXJfaAorI2RlZmluZSBXZWJLaXRDb2xvckNob29zZXJfaAorCisjaW5jbHVkZSAiV2ViQ29sb3JQ
aWNrZXJHdGsuaCIKKyNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR1JlZlB0ci5oPgorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0OworCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBDb2xvcjsKK2NsYXNzIEludFJlY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJLaXRDb2xvckNob29zZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29sb3JQaWNrZXJHdGsg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYktpdENvbG9yQ2hvb3Nlcj4gY3Jl
YXRlKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpOworICAgIHZpcnR1YWwgfldlYktpdENvbG9yQ2hvb3NlcigpOworCisgICAgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2VsZW1l
bnRSZWN0OyB9CisKK3ByaXZhdGU6CisgICAgV2ViS2l0Q29sb3JDaG9vc2VyKFdlYlBhZ2VQcm94
eSYsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworCisg
ICAgdmlydHVhbCB2b2lkIGVuZFBpY2tlcigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBz
aG93Q29sb3JQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKKworICAgIHN0
YXRpYyB2b2lkIGNvbG9yQ2hvb3NlclJlcXVlc3RGaW5pc2hlZChXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0KiwgV2ViS2l0Q29sb3JDaG9vc2VyKik7CisgICAgc3RhdGljIHZvaWQgY29sb3JDaG9v
c2VyUmVxdWVzdFJHQkFDaGFuZ2VkKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqLCBHUGFyYW1T
cGVjKiwgV2ViS2l0Q29sb3JDaG9vc2VyKik7CisKKyAgICBHUmVmUHRyPFdlYktpdENvbG9yQ2hv
b3NlclJlcXVlc3Q+IG1fcmVxdWVzdDsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IG1fZWxlbWVudFJl
Y3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYktpdENvbG9y
Q2hvb3Nlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjZkMjdhNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmNwcApAQCAtMCww
ICsxLDI2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICogQ29w
eXJpZ2h0IChjKSAyMDEyLCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICogICBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQgbm90aWNlLAorICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAq
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QuaCIK
KworI2luY2x1ZGUgIldlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmgiCisjaW5jbHVk
ZSA8Z2xpYi9naTE4bi1saWIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCisvKioKKyAqIFNFQ1RJT046IFdlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3QKKyAqIEBTaG9ydF9kZXNjcmlwdGlvbjogQSByZXF1ZXN0IHRvIG9wZW4gYSBjb2xvciBj
aG9vc2VyCisgKiBAVGl0bGU6IFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAqIEBTZWVfYWxz
bzogI1dlYktpdFdlYlZpZXcKKyAqCisgKiBXaGVuZXZlciB0aGUgdXNlciBpbnRlcmFjdHMgd2l0
aCBhbiAmbHQ7aW5wdXQgdHlwZT0nY29sb3InIC8mZ3Q7CisgKiBIVE1MIGVsZW1lbnQsIFdlYktp
dCB3aWxsIG5lZWQgdG8gc2hvdyBhIGRpYWxvZyB0byBjaG9vc2UgYSBjb2xvci4gRm9yIHRoYXQK
KyAqIHRvIGhhcHBlbiBpbiBhIGdlbmVyYWwgd2F5LCBpbnN0ZWFkIG9mIGp1c3Qgb3BlbmluZyBh
ICNHdGtDb2xvckNob29zZXIKKyAqICh3aGljaCBtaWdodCBiZSBub3QgZGVzaXJhYmxlIGluIHNv
bWUgY2FzZXMsIHdoaWNoIGNvdWxkIHByZWZlciB0byB1c2UgdGhlaXIKKyAqIG93biBjb2xvciBj
aG9vc2VyIGRpYWxvZyksIFdlYktpdCB3aWxsIGZpcmUgdGhlCisgKiAjV2ViS2l0V2ViVmlldzo6
cnVuLWNvbG9yLWNob29zZXIgc2lnbmFsIHdpdGggYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dAorICogb2JqZWN0LCB3aGljaCB3aWxsIGFsbG93IHRoZSBjbGllbnQgYXBwbGljYXRpb24gdG8g
c3BlY2lmeSB0aGUgY29sb3IgdG8gYmUKKyAqIHNlbGVjdGVkLCB0byBpbnNwZWN0IHRoZSBkZXRh
aWxzIG9mIHRoZSByZXF1ZXN0IChlLmcuIHRvIGdldCBpbml0aWFsIGNvbG9yKQorICogYW5kIHRv
IGNhbmNlbCB0aGUgcmVxdWVzdCwgaW4gY2FzZSBub3RoaW5nIHdhcyBzZWxlY3RlZC4KKyAqCisg
KiBJbiBjYXNlIHRoZSBjbGllbnQgYXBwbGljYXRpb24gZG9lcyBub3Qgd2lzaCB0byBoYW5kbGUg
dGhpcyBzaWduYWwsCisgKiBXZWJLaXQgd2lsbCBwcm92aWRlIGEgZGVmYXVsdCBoYW5kbGVyIHdo
aWNoIHdpbGwgYXN5bmNocm9ub3VzbHkgcnVuCisgKiBhIHJlZ3VsYXIgI0d0a0NvbG9yQ2hvb3Nl
ckRpYWxvZyBmb3IgdGhlIHVzZXIgdG8gaW50ZXJhY3Qgd2l0aC4KKyAqLworCitlbnVtIHsKKyAg
ICBQUk9QXzAsCisKKyAgICBQUk9QX1JHQkEKK307CisKK2VudW0geworICAgIEZJTklTSEVELAor
CisgICAgTEFTVF9TSUdOQUwKK307CisKK3N0cnVjdCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVz
dFByaXZhdGUgeworICAgIFdlYktpdENvbG9yQ2hvb3NlciogY29sb3JDaG9vc2VyOworICAgIEdk
a1JHQkEgcmdiYTsKKyAgICBib29sIGhhbmRsZWQ7Cit9OworCitzdGF0aWMgZ3VpbnQgc2lnbmFs
c1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CisKK1dFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRDb2xv
ckNob29zZXJSZXF1ZXN0LCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0LCBHX1RZUEVfT0JK
RUNUKQorCitzdGF0aWMgdm9pZCB3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0RGlzcG9zZShHT2Jq
ZWN0KiBvYmplY3QpCit7CisgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCA9
IFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1Qob2JqZWN0KTsKKyAgICBpZiAoIXJlcXVlc3Qt
PnByaXYtPmhhbmRsZWQpCisgICAgICAgIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZmlu
aXNoKHJlcXVlc3QpOworCisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2NvbG9yX2Nob29zZXJf
cmVxdWVzdF9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lk
IHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3RHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BlcnR5SUQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKK3sK
KyAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX0NPTE9SX0NI
T09TRVJfUkVRVUVTVChvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9wZXJ0eUlEKSB7CisgICAg
Y2FzZSBQUk9QX1JHQkE6CisgICAgICAgIGdfdmFsdWVfc2V0X2JveGVkKHZhbHVlLCAmcmVxdWVz
dC0+cHJpdi0+cmdiYSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdf
T0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SUQsIHBhcmFt
U3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0
U2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlELCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0Q29sb3JDaG9v
c2VyUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1Qob2JqZWN0
KTsKKworICAgIHN3aXRjaCAocHJvcGVydHlJRCkgeworICAgIGNhc2UgUFJPUF9SR0JBOgorICAg
ICAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X3NldF9yZ2JhKHJlcXVlc3QsIHN0YXRp
Y19jYXN0PEdka1JHQkEqPihnX3ZhbHVlX2dldF9ib3hlZCh2YWx1ZSkpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZ
X0lEKG9iamVjdCwgcHJvcGVydHlJRCwgcGFyYW1TcGVjKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJLaXRDb2xvckNo
b29zZXJSZXF1ZXN0Q2xhc3MqIHJlcXVlc3RDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIG9i
amVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBvYmplY3RDbGFz
cy0+ZGlzcG9zZSA9IHdlYmtpdENvbG9yQ2hvb3NlclJlcXVlc3REaXNwb3NlOworICAgIG9iamVj
dENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRDb2xvckNob29zZXJSZXF1ZXN0R2V0UHJvcGVy
dHk7CisgICAgb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdENvbG9yQ2hvb3NlclJl
cXVlc3RTZXRQcm9wZXJ0eTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6cmdiYToK
KyAgICAgKgorICAgICAqIFRoZSAjR2RrUkdCQSBjb2xvciBvZiB0aGUgcmVxdWVzdAorICAgICAq
CisgICAgICogU2luY2U6IDIuOAorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkob2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfUkdCQSwKKyAgICAgICAgZ19wYXJh
bV9zcGVjX2JveGVkKCJyZ2JhIiwKKyAgICAgICAgICAgIF8oIkN1cnJlbnQgUkdCQSBjb2xvciIp
LAorICAgICAgICAgICAgXygiVGhlIGN1cnJlbnQgUkdCQSBjb2xvciBmb3IgdGhlIHJlcXVlc3Qi
KSwKKyAgICAgICAgICAgIEdES19UWVBFX1JHQkEsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxH
UGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUKSkp
OworCisgICAgLyoqCisgICAgICogV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdDo6ZmluaXNoZWQ6
CisgICAgICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCBvbiB3aGlj
aCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUg
QHJlcXVlc3QgZmluaXNoZXMuIFRoaXMgc2lnbmFsIGNhbiBiZSBlbWl0dGVkIGJlY2F1c2UgdGhl
CisgICAgICogdXNlciBjb21wbGV0ZWQgdGhlIEByZXF1ZXN0IGNhbGxpbmcgd2Via2l0X2NvbG9y
X2Nob29zZXJfcmVxdWVzdF9maW5pc2goKSwKKyAgICAgKiBvciBjYW5jZWxsZWQgaXQgd2l0aCB3
ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbCgpIG9yIGJlY2F1c2UgdGhlCisgICAg
ICogY29sb3IgaW5wdXQgZWxlbWVudCBpcyBkZXR0YWNoZWQgZnJvbSB0aGUgcGFnZS4KKyAgICAg
KgorICAgICAqIFNpbmNlOiAyLjgKKyAgICAgKi8KKyAgICBzaWduYWxzW0ZJTklTSEVEXSA9Cisg
ICAgICAgIGdfc2lnbmFsX25ldygKKyAgICAgICAgICAgICJmaW5pc2hlZCIsCisgICAgICAgICAg
ICBHX1RZUEVfRlJPTV9DTEFTUyhyZXF1ZXN0Q2xhc3MpLAorICAgICAgICAgICAgR19TSUdOQUxf
UlVOX0xBU1QsCisgICAgICAgICAgICAwLCAwLAorICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAg
ICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19WT0lELAorICAgICAgICAgICAgR19UWVBF
X05PTkUsIDApOworfQorCisvKioKKyAqIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2V0
X3JnYmE6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0CisgKiBAcmdi
YTogYSBwb2ludGVyICNHZGtSR0JBCisgKgorICogU2V0cyB0aGUgY3VycmVudCAjR2RrUkdCQSBj
b2xvciBvZiBAcmVxdWVzdAorICoKKyAqIFNpbmNlOiAyLjgKKyAqLwordm9pZCB3ZWJraXRfY29s
b3JfY2hvb3Nlcl9yZXF1ZXN0X3NldF9yZ2JhKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHJl
cXVlc3QsIGNvbnN0IEdka1JHQkEqIHJnYmEpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJL
SVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKHJlcXVlc3QpKTsKKyAgICBnX3JldHVybl9pZl9m
YWlsKHJnYmEpOworCisgICAgaWYgKGdka19yZ2JhX2VxdWFsKCZyZXF1ZXN0LT5wcml2LT5yZ2Jh
LCByZ2JhKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVxdWVzdC0+cHJpdi0+cmdiYSA9ICpy
Z2JhOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChyZXF1ZXN0KSwgInJnYmEiKTsKK30K
KworLyoqCisgKiB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9yZ2JhOgorICogQHJl
cXVlc3Q6IGEgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAqIEByZ2JhOiAob3V0KTogYSAj
R2RrUkdCQSB0byBmaWxsIGluIHdpdGggdGhlIGN1cnJlbnQgY29sb3IuCisgKgorICogR2V0cyB0
aGUgY3VycmVudCAjR2RrUkdCQSBjb2xvciBvZiBAcmVxdWVzdAorICoKKyAqIFNpbmNlOiAyLjgK
KyAqLwordm9pZCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9yZ2JhKFdlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QsIEdka1JHQkEqIHJnYmEpCit7CisgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKHJlcXVlc3QpKTsKKyAg
ICBnX3JldHVybl9pZl9mYWlsKHJnYmEpOworCisgICAgKnJnYmEgPSByZXF1ZXN0LT5wcml2LT5y
Z2JhOworfQorCisvKioKKyAqIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X2VsZW1l
bnRfcmVjdGFuZ2xlOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QK
KyAqIEByZWN0OiAob3V0KTogYSAjR2RrUmVjdGFuZ2xlIHRvIGZpbGwgaW4gd2l0aCB0aGUgZWxl
bWVudCBhcmVhCisgKgorICogR2V0cyB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBjb2xvciBpbnB1
dCBlbGVtZW50LgorICoKKyAqIFNpbmNlOiAyLjgKKyAqLwordm9pZCB3ZWJraXRfY29sb3JfY2hv
b3Nlcl9yZXF1ZXN0X2dldF9lbGVtZW50X3JlY3RhbmdsZShXZWJLaXRDb2xvckNob29zZXJSZXF1
ZXN0KiByZXF1ZXN0LCBHZGtSZWN0YW5nbGUqIHJlY3QpCit7CisgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKHJlcXVlc3QpKTsKKyAgICBnX3JldHVy
bl9pZl9mYWlsKHJlY3QpOworCisgICAgKnJlY3QgPSByZXF1ZXN0LT5wcml2LT5jb2xvckNob29z
ZXItPmVsZW1lbnRSZWN0KCk7Cit9CisKKy8qKgorICogd2Via2l0X2NvbG9yX2Nob29zZXJfcmVx
dWVzdF9maW5pc2g6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdAor
ICoKKyAqIEZpbmlzaGVzIEByZXF1ZXN0IGFuZCB0aGUgaW5wdXQgZWxlbWVudCBrZWVwcyB0aGUg
Y3VycmVudCB2YWx1ZSBvZgorICogI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Q6cmdiYS4KKyAq
IFRoZSBzaWduYWwgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Q6OmZpbmlzaGVkCisgKiBpcyBl
bWl0dGVkIHRvIG5vdGlmeSB0aGF0IHRoZSByZXF1ZXN0IGhhcyBmaW5pc2hlZC4KKyAqCisgKiBT
aW5jZTogMi44CisgKi8KK3ZvaWQgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9maW5pc2go
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl9pZl9m
YWlsKFdFQktJVF9JU19DT0xPUl9DSE9PU0VSX1JFUVVFU1QocmVxdWVzdCkpOworCisgICAgaWYg
KHJlcXVlc3QtPnByaXYtPmhhbmRsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHJlcXVlc3Qt
PnByaXYtPmhhbmRsZWQgPSB0cnVlOworICAgIGdfc2lnbmFsX2VtaXQocmVxdWVzdCwgc2lnbmFs
c1tGSU5JU0hFRF0sIDApOworfQorCisvKioKKyAqIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVl
c3RfY2FuY2VsOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QKKyAq
CisgKiBDYW5jZWxzIEByZXF1ZXN0IGFuZCB0aGUgaW5wdXQgZWxlbWVudCBjaGFuZ2VzIHRvIHVz
ZSB0aGUgaW5pdGlhbCBjb2xvcgorICogaXQgaGFzIGJlZm9yZSB0aGUgcmVxdWVzdCBzdGFydGVk
LgorICogVGhlIHNpZ25hbCAjV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdDo6ZmluaXNoZWQKKyAq
IGlzIGVtaXR0ZWQgdG8gbm90aWZ5IHRoYXQgdGhlIHJlcXVlc3QgaGFzIGZpbmlzaGVkLgorICoK
KyAqIFNpbmNlOiAyLjgKKyAqLwordm9pZCB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2Nh
bmNlbChXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVChyZXF1ZXN0KSk7CisKKyAg
ICBpZiAocmVxdWVzdC0+cHJpdi0+aGFuZGxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVx
dWVzdC0+cHJpdi0+aGFuZGxlZCA9IHRydWU7CisgICAgcmVxdWVzdC0+cHJpdi0+Y29sb3JDaG9v
c2VyLT5jYW5jZWwoKTsKKyAgICBnX3NpZ25hbF9lbWl0KHJlcXVlc3QsIHNpZ25hbHNbRklOSVNI
RURdLCAwKTsKK30KKworV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogd2Via2l0Q29sb3JDaG9v
c2VyUmVxdWVzdENyZWF0ZShXZWJLaXRDb2xvckNob29zZXIqIGNvbG9yQ2hvb3NlcikKK3sKKyAg
ICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX0NPTE9SX0NIT09T
RVJfUkVRVUVTVCgKKyAgICAgICAgZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTE9SX0NIT09T
RVJfUkVRVUVTVCwgInJnYmEiLCBjb2xvckNob29zZXItPmluaXRpYWxDb2xvcigpLCBudWxscHRy
KSk7CisgICAgcmVxdWVzdC0+cHJpdi0+Y29sb3JDaG9vc2VyID0gY29sb3JDaG9vc2VyOworICAg
IHJldHVybiByZXF1ZXN0OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYTRlYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0LmgKQEAg
LTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICog
Q29weXJpZ2h0IChjKSAyMDEyLCBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcworICog
ICBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQgbm90aWNlLAorICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
KyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmICFkZWZpbmVkKF9fV0VCS0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NP
TVBJTEFUSU9OKQorI2Vycm9yICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1
ZGVkIGRpcmVjdGx5LiIKKyNlbmRpZgorCisjaWZuZGVmIFdlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3RfaAorI2RlZmluZSBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0X2gKKworI2luY2x1ZGUgPGd0
ay9ndGsuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdERlZmluZXMuaD4KKworR19CRUdJTl9E
RUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCAgICAgICAg
ICAgICh3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF90eXBlKCkpCisjZGVmaW5lIFdF
QktJVF9DT0xPUl9DSE9PU0VSX1JFUVVFU1Qob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tf
SU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfQ09MT1JfQ0hPT1NFUl9SRVFVRVNULCBX
ZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KSkKKyNkZWZpbmUgV0VCS0lUX0lTX0NPTE9SX0NIT09T
RVJfUkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmop
LCBXRUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfQ09M
T1JfQ0hPT1NFUl9SRVFVRVNUX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NB
U1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCwgV2ViS2l0Q29s
b3JDaG9vc2VyUmVxdWVzdENsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJf
UkVRVUVTVF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBX
RUJLSVRfVFlQRV9DT0xPUl9DSE9PU0VSX1JFUVVFU1QpKQorI2RlZmluZSBXRUJLSVRfQ09MT1Jf
Q0hPT1NFUl9SRVFVRVNUX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFT
Uygob2JqKSwgIFdFQktJVF9UWVBFX0NPTE9SX0NIT09TRVJfUkVRVUVTVCwgV2ViS2l0Q29sb3JD
aG9vc2VyUmVxdWVzdENsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdENvbG9yQ2hvb3Nl
clJlcXVlc3QgICAgICAgIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3Q7Cit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdENsYXNzICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVx
dWVzdENsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2
YXRlIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QgeworICAgIEdPYmplY3QgcGFyZW50OworCisgICAgLyo8IHByaXZh
dGUgPiovCisgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZhdGUgKnByaXY7Cit9Owor
CitzdHJ1Y3QgX1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RDbGFzcyB7CisgICAgR09iamVjdENs
YXNzIHBhcmVudF9jbGFzczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9jb2xvcl9j
aG9vc2VyX3JlcXVlc3RfZ2V0X3R5cGUgICAgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQ
SSB2b2lkCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9yZ2JhICAgICAgICAgICAg
ICAoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCAqcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtSR0JBICAgICAgICAgICAgICAg
ICAgICpyZ2JhKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1
ZXN0X3NldF9yZ2JhICAgICAgICAgICAgICAoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCAqcmVx
dWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHZGtSR0JBICAgICAgICAgICAgICpyZ2JhKTsKKworV0VCS0lUX0FQSSB2b2lkCit3
ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9lbGVtZW50X3JlY3RhbmdsZSAoV2ViS2l0
Q29sb3JDaG9vc2VyUmVxdWVzdCAqcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUgICAgICAgICAgICAgICpyZWN0
KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2Zpbmlz
aCAgICAgICAgICAgICAgICAoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCAqcmVxdWVzdCk7CisK
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwgICAg
ICAgICAgICAgICAgKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgKnJlcXVlc3QpOworCitHX0VO
RF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhY2ZlMjgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0UHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoYykgMjAxMiwgU2Ftc3VuZyBFbGVjdHJvbmlj
cworICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMKKyAqICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
bgorICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdFByaXZh
dGVfaAorI2RlZmluZSBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0UHJpdmF0ZV9oCisKKyNpbmNs
dWRlICJXZWJLaXRDb2xvckNob29zZXIuaCIKKyNpbmNsdWRlICJXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0LmgiCisKK1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIHdlYmtpdENvbG9yQ2hvb3Nl
clJlcXVlc3RDcmVhdGUoV2ViS2l0OjpXZWJLaXRDb2xvckNob29zZXIqKTsKKworI2VuZGlmIC8v
IFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3RQcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggYTA5NzY0Yi4uOWQ0
MWZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5jcHAKQEAgLTEzMiw2ICsxMzIsOCBAQCBlbnVtIHsKIAogICAgIFNIT1dfTk9USUZJ
Q0FUSU9OLAogCisgICAgUlVOX0NPTE9SX0NIT09TRVIsCisKICAgICBMQVNUX1NJR05BTAogfTsK
IApAQCAtMTcxNCw2ICsxNzE2LDQwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFz
c19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgd2Vi
a2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNULAogICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4s
IDEsCiAgICAgICAgICAgICBXRUJLSVRfVFlQRV9OT1RJRklDQVRJT04pOworCisgICAgIC8qKgor
ICAgICAgKiBXZWJLaXRXZWJWaWV3OjpydW4tY29sb3ItY2hvb3NlcjoKKyAgICAgICogQHdlYl92
aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisg
ICAgICAqIEByZXF1ZXN0OiBhICNXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0CisgICAgICAqCisg
ICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiB0aGUgdXNlciBpbnRlcmFjdHMgd2l0
aCBhICZsdDtpbnB1dAorICAgICAgKiB0eXBlPSdjb2xvcicgLyZndDsgSFRNTCBlbGVtZW50LCBy
ZXF1ZXN0aW5nIGZyb20gV2ViS2l0IHRvIHNob3cKKyAgICAgICogYSBkaWFsb2cgdG8gc2VsZWN0
IGEgY29sb3IuIFRvIGxldCB0aGUgYXBwbGljYXRpb24ga25vdyB0aGUgZGV0YWlscyBvZgorICAg
ICAgKiB0aGUgY29sb3IgY2hvb3NlciwgYXMgd2VsbCBhcyB0byBhbGxvdyB0aGUgY2xpZW50IGFw
cGxpY2F0aW9uIHRvIGVpdGhlcgorICAgICAgKiBjYW5jZWwgdGhlIHJlcXVlc3Qgb3IgcGVyZm9y
bSBhbiBhY3R1YWwgY29sb3Igc2VsZWN0aW9uLCB0aGUgc2lnbmFsIHdpbGwKKyAgICAgICogcGFz
cyBhbiBpbnN0YW5jZSBvZiB0aGUgI1dlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgaW4gdGhlIEBy
ZXF1ZXN0CisgICAgICAqIGFyZ3VtZW50LgorICAgICAgKgorICAgICAgKiBJdCBpcyBwb3NzaWJs
ZSB0byBoYW5kbGUgdGhpcyByZXF1ZXN0IGFzeW5jaHJvbm91c2x5IGJ5IGluY3JlYXNpbmcgdGhl
CisgICAgICAqIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgcmVxdWVzdC4KKyAgICAgICoKKyAgICAg
ICogVGhlIGRlZmF1bHQgc2lnbmFsIGhhbmRsZXIgd2lsbCBhc3luY2hyb25vdXNseSBydW4gYSBy
ZWd1bGFyCisgICAgICAqICNHdGtDb2xvckNob29zZXIgZm9yIHRoZSB1c2VyIHRvIGludGVyYWN0
IHdpdGguCisgICAgICAqCisgICAgICAqIFJldHVybnM6ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFu
ZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUgZXZlbnQuCisgICAgICAqICAgJUZBTFNF
IHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4KKyAgICAgICoKKyAgICAgICogU2luY2U6
IDIuOAorICAgICAgKi8KKyAgICBzaWduYWxzW1JVTl9DT0xPUl9DSE9PU0VSXSA9CisgICAgICAg
IGdfc2lnbmFsX25ldygicnVuLWNvbG9yLWNob29zZXIiLAorICAgICAgICAgICAgR19UWVBFX0ZS
T01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAor
ICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZpZXdDbGFzcywgcnVuX2NvbG9y
X2Nob29zZXIpLAorICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVk
LCBudWxscHRyLAorICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVBTl9fT0JKRUNULAor
ICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDEsCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9D
T0xPUl9DSE9PU0VSX1JFUVVFU1QpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q2Fu
Y2VsQXV0aGVudGljYXRpb25SZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCkBAIC0yMDkx
LDYgKzIxMjcsMTMgQEAgYm9vbCB3ZWJraXRXZWJWaWV3RW1pdFNob3dOb3RpZmljYXRpb24oV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0Tm90aWZpY2F0aW8KICAgICByZXR1cm4gaGFuZGxl
ZDsKIH0KIAorYm9vbCB3ZWJraXRXZWJWaWV3RW1pdFJ1bkNvbG9yQ2hvb3NlcihXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQoreworICAg
IGdib29sZWFuIGhhbmRsZWQ7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1JV
Tl9DT0xPUl9DSE9PU0VSXSwgMCwgcmVxdWVzdCwgJmhhbmRsZWQpOworICAgIHJldHVybiBoYW5k
bGVkOworfQorCiAvKioKICAqIHdlYmtpdF93ZWJfdmlld19uZXc6CiAgKgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IDc4NTI3YjEu
LjBjZmMyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEF1
dGhlbnRpY2F0aW9uUmVxdWVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0QmFja0Zvcndh
cmRMaXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXREZWZpbmVzLmg+CisjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZpbmRD
b250cm9sbGVyLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGb3JtU3VibWlzc2lvblJlcXVl
c3QuaD4KQEAgLTI0NCwxMiArMjQ1LDEzIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUbHNDZXJ0
aWZpY2F0ZUZsYWdzICAgICAgICAgZXJyb3JzKTsKICAgICBnYm9vbGVhbiAgICgqIHNob3dfbm90
aWZpY2F0aW9uKSAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3Zp
ZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXROb3RpZmljYXRpb24gICAgICAgICAgKm5vdGlmaWNhdGlvbik7CisgICAgZ2Jvb2xlYW4gICAo
KiBydW5fY29sb3JfY2hvb3NlcikgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCAgICpyZXF1ZXN0KTsKIAogICAgIHZvaWQg
KCpfd2Via2l0X3Jlc2VydmVkMCkgKHZvaWQpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVk
MSkgKHZvaWQpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMikgKHZvaWQpOwogICAgIHZv
aWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOwotICAgIHZvaWQgKCpfd2Via2l0X3Jlc2Vy
dmVkNCkgKHZvaWQpOwogfTsKIAogV0VCS0lUX0FQSSBHVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5kZXgg
OGIyNGQwYy4uMjZlZmJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC01OSw2ICs1OSw3IEBAIHZvaWQg
d2Via2l0V2ViVmlld1N1Ym1pdEZvcm1SZXF1ZXN0KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRGb3Jt
U3VibWlzc2lvblJlcXVlc3QqCiB2b2lkIHdlYmtpdFdlYlZpZXdIYW5kbGVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdJbnNlY3VyZUNvbnRlbnREZXRlY3RlZChXZWJL
aXRXZWJWaWV3KiwgV2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQpOwogYm9vbCB3ZWJraXRXZWJW
aWV3RW1pdFNob3dOb3RpZmljYXRpb24oV2ViS2l0V2ViVmlldyosIFdlYktpdE5vdGlmaWNhdGlv
biopOworYm9vbCB3ZWJraXRXZWJWaWV3RW1pdFJ1bkNvbG9yQ2hvb3NlcihXZWJLaXRXZWJWaWV3
KiwgV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCopOwogdm9pZCB3ZWJraXRXZWJWaWV3V2ViUHJv
Y2Vzc0NyYXNoZWQoV2ViS2l0V2ViVmlldyopOwogdm9pZCB3ZWJraXRXZWJWaWV3SXNQbGF5aW5n
QXVkaW9DaGFuZ2VkKFdlYktpdFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rp
b25zLnR4dAppbmRleCAwODA1ODRjLi5iY2Q1ZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNl
Y3Rpb25zLnR4dApAQCAtMTI0NywzICsxMjQ3LDI2IEBAIFdFQktJVF9XRUJfSElUX1RFU1RfUkVT
VUxUX0dFVF9DTEFTUwogV2ViS2l0V2ViSGl0VGVzdFJlc3VsdFByaXZhdGUKIHdlYmtpdF93ZWJf
aGl0X3Rlc3RfcmVzdWx0X2dldF90eXBlCiA8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdDwvRklMRT4KK1dlYktpdENvbG9yQ2hvb3NlclJlcXVl
c3QKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X3JnYmEKK3dlYmtpdF9jb2xvcl9j
aG9vc2VyX3JlcXVlc3Rfc2V0X3JnYmEKK3dlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0
X2VsZW1lbnRfcmVjdGFuZ2xlCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2ZpbmlzaAor
d2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwKKworPFNVQlNFQ1RJT04gU3RhbmRh
cmQ+CitXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Q2xhc3MKK1dFQktJVF9UWVBFX0NPTE9SX0NI
T09TRVJfUkVRVUVTVAorV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVAorV0VCS0lUX0lTX0NP
TE9SX0NIT09TRVJfUkVRVUVTVAorV0VCS0lUX0NPTE9SX0NIT09TRVJfUkVRVUVTVF9DTEFTUwor
V0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVF9DTEFTUworV0VCS0lUX0NPTE9SX0NIT09T
RVJfUkVRVUVTVF9HRVRfQ0xBU1MKKworPFNVQlNFQ1RJT04gUHJpdmF0ZT4KK1dlYktpdENvbG9y
Q2hvb3NlclJlcXVlc3RQcml2YXRlCit3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF90
eXBlCis8L1NFQ1RJT04+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCAyZDUzZWJkLi4wNDYzNDQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTMzLDYgKzMzLDcgQEAKICAgICA8eGk6aW5jbHVk
ZSBocmVmPSJ4bWwvV2ViS2l0V2ViUmVzb3VyY2UueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJl
Zj0ieG1sL1dlYktpdEVycm9yLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJL
aXRGYXZpY29uRGF0YWJhc2UueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dl
YktpdEZpbGVDaG9vc2VyUmVxdWVzdC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv
V2ViS2l0RmluZENvbnRyb2xsZXIueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dl
YktpdENvb2tpZU1hbmFnZXIueG1sIi8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay93ZWJraXQyLmgKaW5kZXggZDM2MmYwNS4uZDliYzkyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0RW51bVR5cGVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRFcnJvci5o
PgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmg+CisjaW5jbHVkZSA8
d2Via2l0Mi9XZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdEZpbmRD
b250cm9sbGVyLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRGb3JtU3VibWlzc2lvblJlcXVl
c3QuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCAxNTFmOWU4Li41NzkxZTNkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTUtMDItMDkgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBBUEkgdG8g
YWxsb3cgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCBjb2xvciBjaG9vc2VyIGltcGxlbWVudGF0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkzNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGNv
bG9yIGNob29zZXIgaW1wbGVtZW50YXRpb24gZm9yIE1pbmlCcm93c2VyIHVzaW5nCisgICAgICAg
IEd0a1BvcG92ZXIgd2hlbiB0aGUgR1RLKyB2ZXJzaW9uIGlzIHJlY2VudCBlbm91Z2guCisgICAg
ICAgIEFuZCBhIHRlc3QgY2FzZSB0byBjaGVjayB0aGUgbmV3IGNvbG9yIGNob29zZXIgQVBJLgor
CisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAgKGNv
bG9yQ2hvb3NlclJHQkFDaGFuZ2VkKToKKyAgICAgICAgKHBvcG92ZXJDb2xvckNsb3NlZCk6Cisg
ICAgICAgIChjb2xvckNob29zZXJSZXF1ZXN0RmluaXNoZWQpOgorICAgICAgICAocnVuQ29sb3JD
aG9vc2VyQ2FsbGJhY2spOgorICAgICAgICAoYnJvd3NlcldpbmRvd0NvbnN0cnVjdGVkKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcDoK
KyAgICAgICAgKHRlc3RXZWJWaWV3Q29sb3JDaG9vc2VyUmVxdWVzdCk6CisgICAgICAgIChiZWZv
cmVBbGwpOgorCiAyMDE1LTAyLTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgZGVmYXVsdCBjb2xvciBjaG9vc2VyIGltcGxl
bWVudGF0aW9uIHVzaW5nIEd0a0NvbG9yQ2hvb3NlckRpYWxvZwpkaWZmIC0tZ2l0IGEvVG9vbHMv
TWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9C
cm93c2VyV2luZG93LmMKaW5kZXggZjg1NGMyMy4uMThkZDQ1YSAxMDA2NDQKLS0tIGEvVG9vbHMv
TWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9n
dGsvQnJvd3NlcldpbmRvdy5jCkBAIC01MDEsNiArNTAxLDUxIEBAIHN0YXRpYyBnYm9vbGVhbiBz
Y3JvbGxFdmVudENhbGxiYWNrKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIGNvbnN0IEdka0V2ZW50
U2Nyb2xsCiAgICAgcmV0dXJuIGJyb3dzZXJXaW5kb3dab29tT3V0KHdpbmRvdyk7CiB9CiAKKyNp
ZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCAxMiwgMCkKK3N0YXRpYyB2b2lkIGNvbG9yQ2hvb3NlclJH
QkFDaGFuZ2VkKEd0a0NvbG9yQ2hvb3NlciAqY29sb3JDaG9vc2VyLCBHUGFyYW1TcGVjICpwYXJh
bVNwZWMsIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgKnJlcXVlc3QpCit7CisgICAgR2RrUkdC
QSByZ2JhOworICAgIGd0a19jb2xvcl9jaG9vc2VyX2dldF9yZ2JhKGNvbG9yQ2hvb3NlciwgJnJn
YmEpOworICAgIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3Rfc2V0X3JnYmEocmVxdWVzdCwg
JnJnYmEpOworfQorCitzdGF0aWMgdm9pZCBwb3BvdmVyQ29sb3JDbG9zZWQoR3RrV2lkZ2V0ICpw
b3BvdmVyLCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICpyZXF1ZXN0KQoreworICAgIHdlYmtp
dF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZmluaXNoKHJlcXVlc3QpOworfQorCitzdGF0aWMgdm9p
ZCBjb2xvckNob29zZXJSZXF1ZXN0RmluaXNoZWQoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCAq
cmVxdWVzdCwgR3RrV2lkZ2V0ICpwb3BvdmVyKQoreworICAgIGdfb2JqZWN0X3VucmVmKHJlcXVl
c3QpOworICAgIGd0a193aWRnZXRfZGVzdHJveShwb3BvdmVyKTsKK30KKworc3RhdGljIGdib29s
ZWFuIHJ1bkNvbG9yQ2hvb3NlckNhbGxiYWNrKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3QgKnJlcXVlc3QsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKK3sK
KyAgICBHdGtXaWRnZXQgKnBvcG92ZXIgPSBndGtfcG9wb3Zlcl9uZXcoR1RLX1dJREdFVCh3ZWJW
aWV3KSk7CisKKyAgICBHZGtSZWN0YW5nbGUgcmVjdGFuZ2xlOworICAgIHdlYmtpdF9jb2xvcl9j
aG9vc2VyX3JlcXVlc3RfZ2V0X2VsZW1lbnRfcmVjdGFuZ2xlKHJlcXVlc3QsICZyZWN0YW5nbGUp
OworICAgIGd0a19wb3BvdmVyX3NldF9wb2ludGluZ190byhHVEtfUE9QT1ZFUihwb3BvdmVyKSwg
JnJlY3RhbmdsZSk7CisKKyAgICBHdGtXaWRnZXQgKmNvbG9yQ2hvb3NlciA9IGd0a19jb2xvcl9j
aG9vc2VyX3dpZGdldF9uZXcoKTsKKyAgICBHZGtSR0JBIHJnYmE7CisgICAgd2Via2l0X2NvbG9y
X2Nob29zZXJfcmVxdWVzdF9nZXRfcmdiYShyZXF1ZXN0LCAmcmdiYSk7CisgICAgZ3RrX2NvbG9y
X2Nob29zZXJfc2V0X3JnYmEoR1RLX0NPTE9SX0NIT09TRVIoY29sb3JDaG9vc2VyKSwgJnJnYmEp
OworICAgIGdfc2lnbmFsX2Nvbm5lY3QoY29sb3JDaG9vc2VyLCAibm90aWZ5OjpyZ2JhIiwgR19D
QUxMQkFDSyhjb2xvckNob29zZXJSR0JBQ2hhbmdlZCksIHJlcXVlc3QpOworICAgIGd0a19jb250
YWluZXJfYWRkKEdUS19DT05UQUlORVIocG9wb3ZlciksIGNvbG9yQ2hvb3Nlcik7CisgICAgZ3Rr
X3dpZGdldF9zaG93KGNvbG9yQ2hvb3Nlcik7CisKKyAgICBnX29iamVjdF9yZWYocmVxdWVzdCk7
CisgICAgZ19zaWduYWxfY29ubmVjdF9vYmplY3QocG9wb3ZlciwgImhpZGUiLCBHX0NBTExCQUNL
KHBvcG92ZXJDb2xvckNsb3NlZCksIHJlcXVlc3QsIDApOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rf
b2JqZWN0KHJlcXVlc3QsICJmaW5pc2hlZCIsIEdfQ0FMTEJBQ0soY29sb3JDaG9vc2VyUmVxdWVz
dEZpbmlzaGVkKSwgcG9wb3ZlciwgMCk7CisKKyAgICBndGtfd2lkZ2V0X3Nob3cocG9wb3Zlcik7
CisKKyAgICByZXR1cm4gVFJVRTsKK30KKyNlbmRpZiAvKiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCAx
MiwgMCkgKi8KKwogc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1VwZGF0ZVpvb21BY3Rpb25zKEJy
b3dzZXJXaW5kb3cgKndpbmRvdykKIHsKICAgICBndGtfd2lkZ2V0X3NldF9zZW5zaXRpdmUod2lu
ZG93LT56b29tSW5JdGVtLCBicm93c2VyV2luZG93Q2FuWm9vbUluKHdpbmRvdykpOwpAQCAtODM4
LDYgKzg4Myw5IEBAIHN0YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dDb25zdHJ1Y3RlZChHT2JqZWN0
ICpnT2JqZWN0KQogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LT53ZWJWaWV3LCAibGVhdmUt
ZnVsbHNjcmVlbiIsIEdfQ0FMTEJBQ0sod2ViVmlld0xlYXZlRnVsbFNjcmVlbiksIHdpbmRvdyk7
CiAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcsICJub3RpZnk6OmlzLWxvYWRp
bmciLCBHX0NBTExCQUNLKHdlYlZpZXdJc0xvYWRpbmdDaGFuZ2VkKSwgd2luZG93KTsKICAgICBn
X3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+d2ViVmlldywgInNjcm9sbC1ldmVudCIsIEdfQ0FMTEJB
Q0soc2Nyb2xsRXZlbnRDYWxsYmFjayksIHdpbmRvdyk7CisjaWYgR1RLX0NIRUNLX1ZFUlNJT04o
MywgMTIsIDApCisgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYlZpZXcsICJydW4tY29s
b3ItY2hvb3NlciIsIEdfQ0FMTEJBQ0socnVuQ29sb3JDaG9vc2VyQ2FsbGJhY2spLCB3aW5kb3cp
OworI2VuZGlmCiAKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYmtpdF93ZWJfdmlld19nZXRfY29u
dGV4dCh3aW5kb3ctPndlYlZpZXcpLCAiZG93bmxvYWQtc3RhcnRlZCIsIEdfQ0FMTEJBQ0soZG93
bmxvYWRTdGFydGVkKSwgd2luZG93KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RVSUNsaWVudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50LmNwcAppbmRleCBmMjc3NWVkLi43YjkwMGJh
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFVJ
Q2xpZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dFVJQ2xpZW50LmNwcApAQCAtODU3LDYgKzg1NywxMDggQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZp
ZXdGaWxlQ2hvb3NlclJlcXVlc3QoRmlsZUNob29zZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogICAgIHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwoZmlsZUNob29zZXJSZXF1
ZXN0KTsKIH0KIAorY2xhc3MgQ29sb3JDaG9vc2VyVGVzdDogcHVibGljIFdlYlZpZXdUZXN0IHsK
K3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKENvbG9yQ2hvb3NlclRlc3QpOwor
CisgICAgc3RhdGljIGdib29sZWFuIHJ1bkNvbG9yQ2hvb3NlckNhbGxiYWNrKFdlYktpdFdlYlZp
ZXcqLCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0LCBDb2xvckNob29zZXJUZXN0
KiB0ZXN0KQorICAgIHsKKyAgICAgICAgdGVzdC0+cnVuQ29sb3JDaG9vc2VyKHJlcXVlc3QpOwor
ICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCByZXF1ZXN0Rmlu
aXNoZWRDYWxsYmFjayhXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0LCBDb2xvckNo
b29zZXJUZXN0KiB0ZXN0KQorICAgIHsKKyAgICAgICAgZ19hc3NlcnQodGVzdC0+bV9yZXF1ZXN0
LmdldCgpID09IHJlcXVlc3QpOworICAgICAgICB0ZXN0LT5tX3JlcXVlc3QgPSBudWxscHRyOwor
ICAgICAgICBpZiAoZ19tYWluX2xvb3BfaXNfcnVubmluZyh0ZXN0LT5tX21haW5Mb29wKSkKKyAg
ICAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CisgICAgfQorCisg
ICAgQ29sb3JDaG9vc2VyVGVzdCgpCisgICAgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1f
d2ViVmlldywgInJ1bi1jb2xvci1jaG9vc2VyIiwgR19DQUxMQkFDSyhydW5Db2xvckNob29zZXJD
YWxsYmFjayksIHRoaXMpOworICAgIH0KKworICAgIHZvaWQgcnVuQ29sb3JDaG9vc2VyKFdlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3QqIHJlcXVlc3QpCisgICAgeworICAgICAgICBnX2Fzc2VydChX
RUJLSVRfSVNfQ09MT1JfQ0hPT1NFUl9SRVFVRVNUKHJlcXVlc3QpKTsKKyAgICAgICAgYXNzZXJ0
T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChyZXF1ZXN0KSk7CisgICAg
ICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QocmVxdWVz
dCwgImZpbmlzaGVkIiwgR19DQUxMQkFDSyhyZXF1ZXN0RmluaXNoZWRDYWxsYmFjayksIHRoaXMp
OworICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3ApOworICAgIH0KKworICAgIHZv
aWQgZmluaXNoUmVxdWVzdCgpCisgICAgeworICAgICAgICBnX2Fzc2VydChtX3JlcXVlc3QuZ2V0
KCkpOworICAgICAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2ZpbmlzaChtX3JlcXVl
c3QuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydCghbV9yZXF1ZXN0KTsKKyAgICB9CisKKyAgICB2
b2lkIGNhbmNlbFJlcXVlc3QoKQorICAgIHsKKyAgICAgICAgZ19hc3NlcnQobV9yZXF1ZXN0Lmdl
dCgpKTsKKyAgICAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwobV9yZXF1
ZXN0LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnQoIW1fcmVxdWVzdCk7CisgICAgfQorCisgICAg
V2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogY2xpY2tNb3VzZUJ1dHRvbkFuZFdhaXRGb3JDb2xv
ckNob29zZXJSZXF1ZXN0KGludCB4LCBpbnQgeSkKKyAgICB7CisgICAgICAgIGNsaWNrTW91c2VC
dXR0b24oeCwgeSk7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICAg
ICAgZ19hc3NlcnQobV9yZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuIG1fcmVxdWVzdC5n
ZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR1JlZlB0cjxXZWJLaXRDb2xvckNob29zZXJS
ZXF1ZXN0PiBtX3JlcXVlc3Q7Cit9OworCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NvbG9yQ2hv
b3NlclJlcXVlc3QoQ29sb3JDaG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAg
ICBzdGF0aWMgY29uc3QgY2hhciogY29sb3JDaG9vc2VySFRNTEZvcm1hdCA9ICI8aHRtbD48Ym9k
eT48aW5wdXQgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MTt0b3A6MTttYXJnaW46MDtw
YWRkaW5nOjA7d2lkdGg6NDU7aGVpZ2h0OjI1JyB0eXBlPSdjb2xvcicgJXMvPjwvYm9keT48L2h0
bWw+IjsKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKworICAg
IEdVbmlxdWVQdHI8Y2hhcj4gZGVmYXVsdENvbG9ySFRNTChnX3N0cmR1cF9wcmludGYoY29sb3JD
aG9vc2VySFRNTEZvcm1hdCwgIiIpKTsKKyAgICB0ZXN0LT5sb2FkSHRtbChkZWZhdWx0Q29sb3JI
VE1MLmdldCgpLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsK
KyAgICBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0ID0gdGVzdC0+Y2xpY2tNb3Vz
ZUJ1dHRvbkFuZFdhaXRGb3JDb2xvckNob29zZXJSZXF1ZXN0KDUsIDUpOworCisgICAgLy8gRGVm
YXVsdCBjb2xvciBpcyBibGFjayAoIzAwMDAwMCkuCisgICAgR2RrUkdCQSByZ2JhMTsKKyAgICBH
ZGtSR0JBIHJnYmEyID0geyAwLiwgMC4sIDAuLCAxLiB9OworICAgIHdlYmtpdF9jb2xvcl9jaG9v
c2VyX3JlcXVlc3RfZ2V0X3JnYmEocmVxdWVzdCwgJnJnYmExKTsKKyAgICBnX2Fzc2VydChnZGtf
cmdiYV9lcXVhbCgmcmdiYTEsICZyZ2JhMikpOworCisgICAgLy8gU2V0IGEgZGlmZmVyZW50IGNv
bG9yLgorICAgIHJnYmEyLmdyZWVuID0gMTsKKyAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1
ZXN0X3NldF9yZ2JhKHJlcXVlc3QsICZyZ2JhMik7CisgICAgd2Via2l0X2NvbG9yX2Nob29zZXJf
cmVxdWVzdF9nZXRfcmdiYShyZXF1ZXN0LCAmcmdiYTEpOworICAgIGdfYXNzZXJ0KGdka19yZ2Jh
X2VxdWFsKCZyZ2JhMSwgJnJnYmEyKSk7CisKKyAgICBHZGtSZWN0YW5nbGUgcmVjdDsKKyAgICB3
ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9lbGVtZW50X3JlY3RhbmdsZShyZXF1ZXN0
LCAmcmVjdCk7CisgICAgZ19hc3NlcnRfY21waW50KHJlY3QueCwgPT0gLCAxKTsKKyAgICBnX2Fz
c2VydF9jbXBpbnQocmVjdC55LCA9PSAsIDEpOworICAgIGdfYXNzZXJ0X2NtcGludChyZWN0Lndp
ZHRoLCA9PSAsIDQ1KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQocmVjdC5oZWlnaHQsID09ICwgMjUp
OworCisgICAgdGVzdC0+ZmluaXNoUmVxdWVzdCgpOworCisgICAgLy8gVXNlIGFuIGluaXRpYWwg
Y29sb3IuCisgICAgR1VuaXF1ZVB0cjxjaGFyPiBpbml0aWFsQ29sb3JIVE1MKGdfc3RyZHVwX3By
aW50Zihjb2xvckNob29zZXJIVE1MRm9ybWF0LCAidmFsdWU9JyNGRjAwRkYnIikpOworICAgIHRl
c3QtPmxvYWRIdG1sKGluaXRpYWxDb2xvckhUTUwuZ2V0KCksIG51bGxwdHIpOworICAgIHRlc3Qt
PndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHJlcXVlc3QgPSB0ZXN0LT5jbGlja01vdXNl
QnV0dG9uQW5kV2FpdEZvckNvbG9yQ2hvb3NlclJlcXVlc3QoNSwgNSk7CisKKyAgICB3ZWJraXRf
Y29sb3JfY2hvb3Nlcl9yZXF1ZXN0X2dldF9yZ2JhKHJlcXVlc3QsICZyZ2JhMSk7CisgICAgR2Rr
UkdCQSByZ2JhMyA9IHsgMS4sIDAuLCAxLiwgMS4gfTsKKyAgICBnX2Fzc2VydChnZGtfcmdiYV9l
cXVhbCgmcmdiYTEsICZyZ2JhMykpOworCisgICAgdGVzdC0+Y2FuY2VsUmVxdWVzdCgpOworfQor
CiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZp
ZXciLCAiY3JlYXRlLXJlYWR5LWNsb3NlIiwgdGVzdFdlYlZpZXdDcmVhdGVSZWFkeUNsb3NlKTsK
QEAgLTg3MCw2ICs5NzIsNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgVUlDbGllbnRUZXN0Ojph
ZGQoIldlYktpdFdlYlZpZXciLCAidXNlcm1lZGlhLXBlcm1pc3Npb24tcmVxdWVzdHMiLCB0ZXN0
V2ViVmlld1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyk7CiAgICAgVUlDbGllbnRUZXN0Ojph
ZGQoIldlYktpdFdlYlZpZXciLCAiYXVkaW8tdXNlcm1lZGlhLXBlcm1pc3Npb24tcmVxdWVzdCIs
IHRlc3RXZWJWaWV3QXVkaW9Pbmx5VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKTsKICAgICBG
aWxlQ2hvb3NlclRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJmaWxlLWNob29zZXItcmVxdWVz
dCIsIHRlc3RXZWJWaWV3RmlsZUNob29zZXJSZXF1ZXN0KTsKKyAgICBDb2xvckNob29zZXJUZXN0
OjphZGQoIldlYktpdFdlYlZpZXciLCAiY29sb3ItY2hvb3Nlci1yZXF1ZXN0IiwgdGVzdFdlYlZp
ZXdDb2xvckNob29zZXJSZXF1ZXN0KTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCg==
</data>
<flag name="review"
          id="271321"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>