<?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>188883</bug_id>
          
          <creation_ts>2018-08-23 04:25:10 -0700</creation_ts>
          <short_desc>[GTK][WPE] Add API to inject/register user content in isolated worlds</short_desc>
          <delta_ts>2018-08-24 01:04:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1453033</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-08-23 04:25:10 -0700</bug_when>
    <thetext>We are always using the main world.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453034</commentid>
    <comment_count>1</comment_count>
      <attachid>347918</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-08-23 04:30:50 -0700</bug_when>
    <thetext>Created attachment 347918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453036</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-23 04:34:01 -0700</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>1453037</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-23 04:34:12 -0700</bug_when>
    <thetext>Attachment 347918 did not pass style-queue:


WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/gtk/WebKitUserContentManager.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/wpe/WebKitUserContentManager.h&quot;
ERROR: Source/WebKit/UIProcess/API/glib/WebKitUserContent.cpp:44:  More than one command on the same line  [whitespace/newline] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/wpe/WebKitUserContent.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/UIProcess/API/gtk/WebKitUserContent.h&quot;
Total errors found: 1 in 12 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>1453079</commentid>
    <comment_count>4</comment_count>
      <attachid>347918</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-23 09:23:53 -0700</bug_when>
    <thetext>Comment on attachment 347918
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitUserContent.cpp:44
&gt; +    return *map.get().ensure(worldName, [&amp;] { return API::UserContentWorld::worldWithName(String::fromUTF8(worldName)); }).iterator-&gt;value;

Nit: why [&amp;]? It looks like the only thing you&apos;re capturing here is worldName. I would capture it explicitly.

&gt; Source/WebKit/UIProcess/API/glib/WebKitUserContent.cpp:179
&gt; + * webkit_user_style_sheet_new_for_world:

Hm... do we need it?

We definitely need webkit_user_script_new_for_world().

And it probably makes sense to add webkit_user_style_sheet_new_for_world() at the same time.

But would there be any real use case for it? The use case for running JS in isolated worlds is to prevent the JS from being accessible to the web page. Normally with a style you do want it to be accessible.

&gt; Source/WebKit/UIProcess/API/glib/WebKitUserContentManager.cpp:304
&gt; + * #WebKitUserContentManager::script-message-received signal,

Comma splice; use a semicolon

&gt; Source/WebKit/UIProcess/API/glib/WebKitUserContentManager.cpp:308
&gt; + * See also webkit_user_content_manager_register_script_message_handler()

.

&gt; Source/WebKit/WebProcess/UserContent/WebUserContentController.cpp:112
&gt; -        worldMap().ensure(world.first, [&amp;] { return std::make_pair(InjectedBundleScriptWorld::create(world.second), 1); });
&gt; +        worldMap().ensure(world.first, [&amp;] {
&gt; +#if PLATFORM(GTK) || PLATFORM(WPE)
&gt; +            // The GLib API doesn&apos;t allow to create script worlds from the UI process, and the
&gt; +            // world name is used as the identifier. Use the existing world if found.
&gt; +            if (auto* existingWorld = InjectedBundleScriptWorld::find(world.second))
&gt; +                return std::make_pair(Ref&lt;InjectedBundleScriptWorld&gt;(*existingWorld), 1);
&gt; +#endif
&gt; +            return std::make_pair(InjectedBundleScriptWorld::create(world.second), 1);
&gt; +        });

I don&apos;t understand your explanation; can you try explaining it again? It&apos;s expected for WebUserContentController::addUserContentWorlds to use existing worlds, rather than add new worlds, only on WPE/GTK?

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitUserContentManager.cpp:365
&gt; +    // Check that the &quot;window.webkit.messageHandlers&quot; namespace doesn&apos;t exist in isolated worlds.

Is this comment correct? If it were, I would expect the JS to return &apos;n&apos;, correct? But instead it fails to execute, because you can&apos;t execute JS in a world that doesn&apos;t exist yet?

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitUserContentManager.cpp:384
&gt; +    // Post message in nain world should fail.

main

If you want to test even more, you could proceed to hook up the msg handler for the main world, and then verify that the proper handler gets called when you post the message from WebExtensionTestScriptWorld and the main world.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453406</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-08-24 00:33:39 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #4)
&gt; Comment on attachment 347918 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=347918&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitUserContent.cpp:44
&gt; &gt; +    return *map.get().ensure(worldName, [&amp;] { return API::UserContentWorld::worldWithName(String::fromUTF8(worldName)); }).iterator-&gt;value;
&gt; 
&gt; Nit: why [&amp;]? It looks like the only thing you&apos;re capturing here is
&gt; worldName. I would capture it explicitly.

You are right.

&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitUserContent.cpp:179
&gt; &gt; + * webkit_user_style_sheet_new_for_world:
&gt; 
&gt; Hm... do we need it?

I don&apos;t know but we are also creating the user style sheets unconditionally in the main world. So, I just want to make sure the user content API is consistent and avoid having to add this in the future.

&gt; We definitely need webkit_user_script_new_for_world().
&gt; 
&gt; And it probably makes sense to add webkit_user_style_sheet_new_for_world()
&gt; at the same time.

Exactly.

&gt; But would there be any real use case for it? The use case for running JS in
&gt; isolated worlds is to prevent the JS from being accessible to the web page.
&gt; Normally with a style you do want it to be accessible.

Yes, I don&apos;t know the use case to be honest.

&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitUserContentManager.cpp:304
&gt; &gt; + * #WebKitUserContentManager::script-message-received signal,
&gt; 
&gt; Comma splice; use a semicolon
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitUserContentManager.cpp:308
&gt; &gt; + * See also webkit_user_content_manager_register_script_message_handler()
&gt; 
&gt; .
&gt; 
&gt; &gt; Source/WebKit/WebProcess/UserContent/WebUserContentController.cpp:112
&gt; &gt; -        worldMap().ensure(world.first, [&amp;] { return std::make_pair(InjectedBundleScriptWorld::create(world.second), 1); });
&gt; &gt; +        worldMap().ensure(world.first, [&amp;] {
&gt; &gt; +#if PLATFORM(GTK) || PLATFORM(WPE)
&gt; &gt; +            // The GLib API doesn&apos;t allow to create script worlds from the UI process, and the
&gt; &gt; +            // world name is used as the identifier. Use the existing world if found.
&gt; &gt; +            if (auto* existingWorld = InjectedBundleScriptWorld::find(world.second))
&gt; &gt; +                return std::make_pair(Ref&lt;InjectedBundleScriptWorld&gt;(*existingWorld), 1);
&gt; &gt; +#endif
&gt; &gt; +            return std::make_pair(InjectedBundleScriptWorld::create(world.second), 1);
&gt; &gt; +        });
&gt; 
&gt; I don&apos;t understand your explanation; can you try explaining it again? It&apos;s
&gt; expected for WebUserContentController::addUserContentWorlds to use existing
&gt; worlds, rather than add new worlds, only on WPE/GTK?

Right. We need to inject the scripts or message handers in the isolated world created by the web extension, but WebUserContentController always creates a new one.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitUserContentManager.cpp:365
&gt; &gt; +    // Check that the &quot;window.webkit.messageHandlers&quot; namespace doesn&apos;t exist in isolated worlds.
&gt; 
&gt; Is this comment correct? If it were, I would expect the JS to return &apos;n&apos;,
&gt; correct? But instead it fails to execute, because you can&apos;t execute JS in a
&gt; world that doesn&apos;t exist yet?

No, it fails because it raises an exception. We could improve it by catching the exception and returning &apos;n&apos;, but I don&apos;t think it&apos;s worth it.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitUserContentManager.cpp:384
&gt; &gt; +    // Post message in nain world should fail.
&gt; 
&gt; main
&gt; 
&gt; If you want to test even more, you could proceed to hook up the msg handler
&gt; for the main world, and then verify that the proper handler gets called when
&gt; you post the message from WebExtensionTestScriptWorld and the main world.

Tests can be improved, but I had to do this yesterday in a hurry because we are close to the release (and already frozen indeed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453413</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-08-24 01:04:40 -0700</bug_when>
    <thetext>Committed r235282: &lt;https://trac.webkit.org/changeset/235282&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347918</attachid>
            <date>2018-08-23 04:30:50 -0700</date>
            <delta_ts>2018-08-23 09:23:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-user-content-world.diff</filename>
            <type>text/plain</type>
            <size>39044</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMGNkNDYzZjBjYzEuLjBhYWU5ODg2ZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMzIEBACisyMDE4LTA4LTIzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBBUEkgdG8gaW5qZWN0L3JlZ2lzdGVyIHVz
ZXIgY29udGVudCBpbiBpc29sYXRlZCB3b3JsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODg4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIHRvIGNyZWF0ZSB1c2VyIHNjcmlwdHMv
c3R5bGVzaGVldHMgZm9yIGEgZ2l2ZW4gc2NyaXB0IHdvcmxkIGFuZCB0byByZWdpc3Rlci91bnJl
Z2lzdGVyIHVzZXIgc2NyaXB0CisgICAgICAgIG1lc3NhZ2VzIGluIGEgZ2l2ZW4gc2NyaXB0IHdv
cmxkLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50LmNw
cDoKKyAgICAgICAgKHdlYmtpdFVzZXJDb250ZW50V29ybGQpOgorICAgICAgICAoX1dlYktpdFVz
ZXJTdHlsZVNoZWV0OjpfV2ViS2l0VXNlclN0eWxlU2hlZXQpOgorICAgICAgICAod2Via2l0X3Vz
ZXJfc3R5bGVfc2hlZXRfbmV3KToKKyAgICAgICAgKHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25l
d19mb3Jfd29ybGQpOgorICAgICAgICAoX1dlYktpdFVzZXJTY3JpcHQ6Ol9XZWJLaXRVc2VyU2Ny
aXB0KToKKyAgICAgICAgKHdlYmtpdF91c2VyX3NjcmlwdF9uZXcpOgorICAgICAgICAod2Via2l0
X3VzZXJfc2NyaXB0X25ld19mb3Jfd29ybGQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwOgorICAgICAgICAod2Via2l0X3VzZXJfY29u
dGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXJfaW5fd29ybGQpOgor
ICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3VucmVnaXN0ZXJfc2NyaXB0X21l
c3NhZ2VfaGFuZGxlcl9pbl93b3JsZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFVzZXJDb250ZW50UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVzZXJDb250ZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0VXNlckNvbnRlbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZHMpOgorCiAyMDE4LTA4LTIxICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlcGxhY2UgYm9vbGVhbnMgZm9y
IG1vZGlmaWVyIGtleXMgaW4gVUlFdmVudFdpdGhLZXlTdGF0ZSB3aXRoIE9wdGlvblNldDxNb2Rp
Zmllcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFVzZXJDb250ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFVzZXJDb250ZW50LmNwcAppbmRleCBhMGU2ZGZiM2RjNy4uMzQ1ODNmOTgwNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVu
dC5jcHAKQEAgLTIxLDYgKzIxLDggQEAKICNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudC5oIgog
CiAjaW5jbHVkZSAiV2ViS2l0VXNlckNvbnRlbnRQcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMzUsNiArMzcs
MTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgKiBTaW5jZTogMi42CiAgKi8KIAorCitB
UEk6OlVzZXJDb250ZW50V29ybGQmIHdlYmtpdFVzZXJDb250ZW50V29ybGQoY29uc3QgY2hhciog
d29ybGROYW1lKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPENTdHJpbmcs
IFJlZlB0cjxBUEk6OlVzZXJDb250ZW50V29ybGQ+Pj4gbWFwOworICAgIHJldHVybiAqbWFwLmdl
dCgpLmVuc3VyZSh3b3JsZE5hbWUsIFsmXSB7IHJldHVybiBBUEk6OlVzZXJDb250ZW50V29ybGQ6
OndvcmxkV2l0aE5hbWUoU3RyaW5nOjpmcm9tVVRGOCh3b3JsZE5hbWUpKTsgfSkuaXRlcmF0b3It
PnZhbHVlOworfQorCiBzdGF0aWMgaW5saW5lIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgdG9V
c2VyQ29udGVudEluamVjdGVkRnJhbWVzKFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMg
aW5qZWN0ZWRGcmFtZXMpCiB7CiAgICAgc3dpdGNoIChpbmplY3RlZEZyYW1lcykgewpAQCAtODYs
MTIgKzk1LDEyIEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPFN0cmluZz4gdG9TdHJpbmdWZWN0b3Io
Y29uc3QgY2hhciogY29uc3QqIHN0cnYpCiB9CiAKIHN0cnVjdCBfV2ViS2l0VXNlclN0eWxlU2hl
ZXQgewotICAgIF9XZWJLaXRVc2VyU3R5bGVTaGVldChjb25zdCBnY2hhciogc291cmNlLCBXZWJL
aXRVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBXZWJLaXRVc2VyU3R5
bGVMZXZlbCBsZXZlbCwgY29uc3QgY2hhciogY29uc3QqIHdoaXRlbGlzdCwgY29uc3QgY2hhciog
Y29uc3QqIGJsYWNrbGlzdCkKKyAgICBfV2ViS2l0VXNlclN0eWxlU2hlZXQoY29uc3QgZ2NoYXIq
IHNvdXJjZSwgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywg
V2ViS2l0VXNlclN0eWxlTGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIqIGNvbnN0KiB3aGl0ZWxpc3Qs
IGNvbnN0IGNoYXIqIGNvbnN0KiBibGFja2xpc3QsIEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29y
bGQpCiAgICAgICAgIDogdXNlclN0eWxlU2hlZXQoYWRvcHRSZWYobmV3IEFQSTo6VXNlclN0eWxl
U2hlZXQoVXNlclN0eWxlU2hlZXQgewogICAgICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChzb3Vy
Y2UpLCBVUkwgeyB9LAogICAgICAgICAgICAgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9T
dHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwKICAgICAgICAgICAgIHRvVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyhpbmplY3RlZEZyYW1lcyksCi0gICAgICAgICAgICB0b1VzZXJTdHlsZUxldmVsKGxl
dmVsKSB9LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpKSkKKyAgICAgICAg
ICAgIHRvVXNlclN0eWxlTGV2ZWwobGV2ZWwpIH0sIHdvcmxkKSkpCiAgICAgICAgICwgcmVmZXJl
bmNlQ291bnQoMSkKICAgICB7CiAgICAgfQpAQCAtMTYyLDcgKzE3MSwzMyBAQCBXZWJLaXRVc2Vy
U3R5bGVTaGVldCogd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3KGNvbnN0IGdjaGFyKiBzb3Vy
Y2UsIFdlYktpdFVzZQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNvdXJjZSwgbnVsbHB0
cik7CiAgICAgV2ViS2l0VXNlclN0eWxlU2hlZXQqIHVzZXJTdHlsZVNoZWV0ID0gc3RhdGljX2Nh
c3Q8V2ViS2l0VXNlclN0eWxlU2hlZXQqPihmYXN0TWFsbG9jKHNpemVvZihXZWJLaXRVc2VyU3R5
bGVTaGVldCkpKTsKLSAgICBuZXcgKHVzZXJTdHlsZVNoZWV0KSBXZWJLaXRVc2VyU3R5bGVTaGVl
dChzb3VyY2UsIGluamVjdGVkRnJhbWVzLCBsZXZlbCwgd2hpdGVsaXN0LCBibGFja2xpc3QpOwor
ICAgIG5ldyAodXNlclN0eWxlU2hlZXQpIFdlYktpdFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgaW5q
ZWN0ZWRGcmFtZXMsIGxldmVsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgQVBJOjpVc2VyQ29udGVu
dFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICByZXR1cm4gdXNlclN0eWxlU2hlZXQ7Cit9CisK
Ky8qKgorICogd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3X2Zvcl93b3JsZDoKKyAqIEBzb3Vy
Y2U6IFNvdXJjZSBjb2RlIG9mIHRoZSB1c2VyIHN0eWxlIHNoZWV0LgorICogQGluamVjdGVkX2Zy
YW1lczogQSAjV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyB2YWx1ZQorICogQGxldmVs
OiBBICNXZWJLaXRVc2VyU3R5bGVMZXZlbAorICogQHdvcmxkX25hbWU6IHRoZSBuYW1lIG9mIGEg
I1dlYktpdFNjcmlwdFdvcmxkCisgKiBAd2hpdGVsaXN0OiAoYXJyYXkgemVyby10ZXJtaW5hdGVk
PTEpIChhbGxvdy1ub25lKTogQSB3aGl0ZWxpc3Qgb2YgVVJJIHBhdHRlcm5zIG9yICVOVUxMCisg
KiBAYmxhY2tsaXN0OiAoYXJyYXkgemVyby10ZXJtaW5hdGVkPTEpIChhbGxvdy1ub25lKTogQSBi
bGFja2xpc3Qgb2YgVVJJIHBhdHRlcm5zIG9yICVOVUxMCisgKgorICogQ3JlYXRlcyBhIG5ldyB1
c2VyIHN0eWxlIHNoZWV0IGZvciBzY3JpcHQgd29ybGQgd2l0aCBuYW1lIEB3b3JsZF9uYW1lLgor
ICogU2VlIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldygpIGZvciBhIGZ1bGwgZGVzY3JpcHRp
b24uCisgKgorICogUmV0dXJuczogQSBuZXcgI1dlYktpdFVzZXJTdHlsZVNoZWV0CisgKgorICog
U2luY2U6IDIuMjIKKyAqLworV2ViS2l0VXNlclN0eWxlU2hlZXQqIHdlYmtpdF91c2VyX3N0eWxl
X3NoZWV0X25ld19mb3Jfd29ybGQoY29uc3QgZ2NoYXIqIHNvdXJjZSwgV2ViS2l0VXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgV2ViS2l0VXNlclN0eWxlTGV2ZWwgbGV2
ZWwsIGNvbnN0IGNoYXIqIHdvcmxkTmFtZSwgY29uc3QgY2hhciogY29uc3QqIHdoaXRlbGlzdCwg
Y29uc3QgY2hhciogY29uc3QqIGJsYWNrbGlzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChzb3VyY2UsIG51bGxwdHIpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHdvcmxkTmFtZSwg
bnVsbHB0cik7CisKKyAgICBXZWJLaXRVc2VyU3R5bGVTaGVldCogdXNlclN0eWxlU2hlZXQgPSBz
dGF0aWNfY2FzdDxXZWJLaXRVc2VyU3R5bGVTaGVldCo+KGZhc3RNYWxsb2Moc2l6ZW9mKFdlYktp
dFVzZXJTdHlsZVNoZWV0KSkpOworICAgIG5ldyAodXNlclN0eWxlU2hlZXQpIFdlYktpdFVzZXJT
dHlsZVNoZWV0KHNvdXJjZSwgaW5qZWN0ZWRGcmFtZXMsIGxldmVsLCB3aGl0ZWxpc3QsIGJsYWNr
bGlzdCwgd2Via2l0VXNlckNvbnRlbnRXb3JsZCh3b3JsZE5hbWUpKTsKICAgICByZXR1cm4gdXNl
clN0eWxlU2hlZXQ7CiB9CiAKQEAgLTE3MiwxMiArMjA3LDEyIEBAIEFQSTo6VXNlclN0eWxlU2hl
ZXQmIHdlYmtpdFVzZXJTdHlsZVNoZWV0R2V0VXNlclN0eWxlU2hlZXQoV2ViS2l0VXNlclN0eWxl
U2hlZXQqCiB9CiAKIHN0cnVjdCBfV2ViS2l0VXNlclNjcmlwdCB7Ci0gICAgX1dlYktpdFVzZXJT
Y3JpcHQoY29uc3QgZ2NoYXIqIHNvdXJjZSwgV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
cyBpbmplY3RlZEZyYW1lcywgV2ViS2l0VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9u
VGltZSwgY29uc3QgZ2NoYXIqIGNvbnN0KiB3aGl0ZWxpc3QsIGNvbnN0IGdjaGFyKiBjb25zdCog
YmxhY2tsaXN0KQorICAgIF9XZWJLaXRVc2VyU2NyaXB0KGNvbnN0IGdjaGFyKiBzb3VyY2UsIFdl
YktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdlYktpdFVzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIGNvbnN0IGdjaGFyKiBjb25zdCogd2hp
dGVsaXN0LCBjb25zdCBnY2hhciogY29uc3QqIGJsYWNrbGlzdCwgQVBJOjpVc2VyQ29udGVudFdv
cmxkJiB3b3JsZCkKICAgICAgICAgOiB1c2VyU2NyaXB0KGFkb3B0UmVmKG5ldyBBUEk6OlVzZXJT
Y3JpcHQoVXNlclNjcmlwdCB7CiAgICAgICAgICAgICBTdHJpbmc6OmZyb21VVEY4KHNvdXJjZSks
IFVSTCB7IH0sCiAgICAgICAgICAgICB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmlu
Z1ZlY3RvcihibGFja2xpc3QpLAogICAgICAgICAgICAgdG9Vc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZShpbmplY3Rpb25UaW1lKSwKLSAgICAgICAgICAgIHRvVXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
cyhpbmplY3RlZEZyYW1lcykgfSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgp
KSkpCisgICAgICAgICAgICB0b1VzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMoaW5qZWN0ZWRGcmFt
ZXMpIH0sIHdvcmxkKSkpCiAgICAgICAgICwgcmVmZXJlbmNlQ291bnQoMSkKICAgICB7CiAgICAg
fQpAQCAtMjQ4LDcgKzI4MywzMyBAQCBXZWJLaXRVc2VyU2NyaXB0KiB3ZWJraXRfdXNlcl9zY3Jp
cHRfbmV3KGNvbnN0IGdjaGFyKiBzb3VyY2UsIFdlYktpdFVzZXJDb250ZW50SQogewogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKHNvdXJjZSwgbnVsbHB0cik7CiAgICAgV2ViS2l0VXNlclNjcmlw
dCogdXNlclNjcmlwdCA9IHN0YXRpY19jYXN0PFdlYktpdFVzZXJTY3JpcHQqPihmYXN0TWFsbG9j
KHNpemVvZihXZWJLaXRVc2VyU2NyaXB0KSkpOwotICAgIG5ldyAodXNlclNjcmlwdCkgV2ViS2l0
VXNlclNjcmlwdChzb3VyY2UsIGluamVjdGVkRnJhbWVzLCBpbmplY3Rpb25UaW1lLCB3aGl0ZWxp
c3QsIGJsYWNrbGlzdCk7CisgICAgbmV3ICh1c2VyU2NyaXB0KSBXZWJLaXRVc2VyU2NyaXB0KHNv
dXJjZSwgaW5qZWN0ZWRGcmFtZXMsIGluamVjdGlvblRpbWUsIHdoaXRlbGlzdCwgYmxhY2tsaXN0
LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIHJldHVybiB1c2Vy
U2NyaXB0OworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX3NjcmlwdF9uZXdfZm9yX3dvcmxkOgor
ICogQHNvdXJjZTogU291cmNlIGNvZGUgb2YgdGhlIHVzZXIgc2NyaXB0LgorICogQGluamVjdGVk
X2ZyYW1lczogQSAjV2ViS2l0VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyB2YWx1ZQorICogQGlu
amVjdGlvbl90aW1lOiBBICNXZWJLaXRVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSB2YWx1ZQorICog
QHdvcmxkX25hbWU6IHRoZSBuYW1lIG9mIGEgI1dlYktpdFNjcmlwdFdvcmxkCisgKiBAd2hpdGVs
aXN0OiAoYXJyYXkgemVyby10ZXJtaW5hdGVkPTEpIChhbGxvdy1ub25lKTogQSB3aGl0ZWxpc3Qg
b2YgVVJJIHBhdHRlcm5zIG9yICVOVUxMCisgKiBAYmxhY2tsaXN0OiAoYXJyYXkgemVyby10ZXJt
aW5hdGVkPTEpIChhbGxvdy1ub25lKTogQSBibGFja2xpc3Qgb2YgVVJJIHBhdHRlcm5zIG9yICVO
VUxMCisgKgorICogQ3JlYXRlcyBhIG5ldyB1c2VyIHNjcmlwdCBmb3Igc2NyaXB0IHdvcmxkIHdp
dGggbmFtZSBAd29ybGRfbmFtZS4KKyAqIFNlZSB3ZWJraXRfdXNlcl9zY3JpcHRfbmV3KCkgZm9y
IGEgZnVsbCBkZXNjcmlwdGlvbi4KKyAqCisgKiBSZXR1cm5zOiBBIG5ldyAjV2ViS2l0VXNlclNj
cmlwdAorICoKKyAqIFNpbmNlOiAyLjIyCisgKi8KK1dlYktpdFVzZXJTY3JpcHQqIHdlYmtpdF91
c2VyX3NjcmlwdF9uZXdfZm9yX3dvcmxkKGNvbnN0IGdjaGFyKiBzb3VyY2UsIFdlYktpdFVzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdlYktpdFVzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lIGluamVjdGlvblRpbWUsIGNvbnN0IGNoYXIqIHdvcmxkTmFtZSwgY29uc3QgZ2No
YXIqIGNvbnN0KiB3aGl0ZWxpc3QsIGNvbnN0IGdjaGFyKiBjb25zdCogYmxhY2tsaXN0KQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNvdXJjZSwgbnVsbHB0cik7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwod29ybGROYW1lLCBudWxscHRyKTsKKworICAgIFdlYktpdFVzZXJTY3JpcHQq
IHVzZXJTY3JpcHQgPSBzdGF0aWNfY2FzdDxXZWJLaXRVc2VyU2NyaXB0Kj4oZmFzdE1hbGxvYyhz
aXplb2YoV2ViS2l0VXNlclNjcmlwdCkpKTsKKyAgICBuZXcgKHVzZXJTY3JpcHQpIFdlYktpdFVz
ZXJTY3JpcHQoc291cmNlLCBpbmplY3RlZEZyYW1lcywgaW5qZWN0aW9uVGltZSwgd2hpdGVsaXN0
LCBibGFja2xpc3QsIHdlYmtpdFVzZXJDb250ZW50V29ybGQod29ybGROYW1lKSk7CiAgICAgcmV0
dXJuIHVzZXJTY3JpcHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCmluZGV4IDAyZGNj
MGI3NTE5Li4zNjc0NmM3MmU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCkBAIC0yNjUs
NiArMjY1LDU5IEBAIHZvaWQgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3VucmVnaXN0ZXJf
c2NyaXB0X21lc3NhZ2VfaGFuZGxlcihXZWJLaXRVc2VyQ29uCiAgICAgbWFuYWdlci0+cHJpdi0+
dXNlckNvbnRlbnRDb250cm9sbGVyLT5yZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKFN0
cmluZzo6ZnJvbVVURjgobmFtZSksIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQo
KSk7CiB9CiAKKy8qKgorICogd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3Nj
cmlwdF9tZXNzYWdlX2hhbmRsZXJfaW5fd29ybGQ6CisgKiBAbWFuYWdlcjogQSAjV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyCisgKiBAbmFtZTogTmFtZSBvZiB0aGUgc2NyaXB0IG1lc3NhZ2UgY2hh
bm5lbAorICogQHdvcmxkX25hbWU6IHRoZSBuYW1lIG9mIGEgI1dlYktpdFNjcmlwdFdvcmxkCisg
KgorICogUmVnaXN0ZXJzIGEgbmV3IHVzZXIgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciBpbiBzY3Jp
cHQgd29ybGQgd2l0aCBuYW1lIEB3b3JsZF9uYW1lLgorICogU2VlIHdlYmtpdF91c2VyX2NvbnRl
bnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKCkgZm9yIGZ1bGwgZGVz
Y3JpcHRpb24uCisgKgorICogUmVnaXN0ZXJpbmcgYSBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHdp
bGwgZmFpbCBpZiB0aGUgcmVxdWVzdGVkCisgKiBuYW1lIGhhcyBiZWVuIGFscmVhZHkgcmVnaXN0
ZXJlZCBiZWZvcmUuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgbWVzc2FnZSBoYW5kbGVyIHdh
cyByZWdpc3RlcmVkIHN1Y2Nlc3NmdWxseSwgb3IgJUZBTFNFIG90aGVyd2lzZS4KKyAqCisgKiBT
aW5jZTogMi4yMgorICovCitnYm9vbGVhbiB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVn
aXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcl9pbl93b3JsZChXZWJLaXRVc2VyQ29udGVudE1h
bmFnZXIqIG1hbmFnZXIsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIHdvcmxkTmFtZSkK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfVVNFUl9DT05URU5UX01BTkFH
RVIobWFuYWdlciksIEZBTFNFKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChuYW1lLCBGQUxT
RSk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwod29ybGROYW1lLCBGQUxTRSk7CisKKyAgICBS
ZWY8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPQorICAgICAgICBXZWJTY3JpcHRN
ZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVu
dEd0az4obWFuYWdlciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFtZSksIHdlYmtpdFVzZXJD
b250ZW50V29ybGQod29ybGROYW1lKSk7CisgICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPnVzZXJD
b250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0
KCkpOworfQorCisvKioKKyAqIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl91bnJlZ2lzdGVy
X3NjcmlwdF9tZXNzYWdlX2hhbmRsZXJfaW5fd29ybGQ6CisgKiBAbWFuYWdlcjogQSAjV2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyCisgKiBAbmFtZTogTmFtZSBvZiB0aGUgc2NyaXB0IG1lc3NhZ2Ug
Y2hhbm5lbAorICogQHdvcmxkX25hbWU6IHRoZSBuYW1lIG9mIGEgI1dlYktpdFNjcmlwdFdvcmxk
CisgKgorICogVW5yZWdpc3RlcnMgYSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgbWVzc2FnZSBoYW5k
bGVyIGluIHNjcmlwdCB3b3JsZCB3aXRoIG5hbWUgQHdvcmxkX25hbWUuCisgKgorICogTm90ZSB0
aGF0IHRoaXMgZG9lcyAqbm90KiBkaXNjb25uZWN0IGhhbmRsZXJzIGZvciB0aGUKKyAqICNXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXI6OnNjcmlwdC1tZXNzYWdlLXJlY2VpdmVkIHNpZ25hbCwKKyAq
IHRoZXkgd2lsbCBiZSBrZXB0IGNvbm5lY3RlZCwgYnV0IHRoZSBzaWduYWwgd2lsbCBub3QgYmUg
ZW1pdHRlZAorICogdW5sZXNzIHRoZSBoYW5kbGVyIG5hbWUgaXMgcmVnaXN0ZXJlZCBhZ2Fpbi4K
KyAqCisgKiBTZWUgYWxzbyB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2Ny
aXB0X21lc3NhZ2VfaGFuZGxlcigpCisgKgorICogU2luY2U6IDIuMjIKKyAqLwordm9pZCB3ZWJr
aXRfdXNlcl9jb250ZW50X21hbmFnZXJfdW5yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVy
X2luX3dvcmxkKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogbWFuYWdlciwgY29uc3QgY2hhciog
bmFtZSwgY29uc3QgY2hhciogd29ybGROYW1lKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1VTRVJfQ09OVEVOVF9NQU5BR0VSKG1hbmFnZXIpKTsKKyAgICBnX3JldHVybl9pZl9m
YWlsKG5hbWUpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwod29ybGROYW1lKTsKKworICAgIG1hbmFn
ZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci0+cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVy
Rm9yTmFtZShTdHJpbmc6OmZyb21VVEY4KG5hbWUpLCB3ZWJraXRVc2VyQ29udGVudFdvcmxkKHdv
cmxkTmFtZSkpOworfQorCiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSogd2Via2l0VXNl
ckNvbnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViS2l0VXNlckNv
bnRlbnRNYW5hZ2VyKiBtYW5hZ2VyKQogewogICAgIHJldHVybiBtYW5hZ2VyLT5wcml2LT51c2Vy
Q29udGVudENvbnRyb2xsZXIuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50UHJpdmF0ZS5oCmluZGV4IDQ0NGUy
Y2FhYTcyLi5mMTgxYTI5NDU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRQcml2YXRlLmgKQEAgLTIwLDYgKzIw
LDcgQEAKICNpZm5kZWYgV2ViS2l0VXNlckNvbnRlbnRQcml2YXRlX2gKICNkZWZpbmUgV2ViS2l0
VXNlckNvbnRlbnRQcml2YXRlX2gKIAorI2luY2x1ZGUgIkFQSVVzZXJDb250ZW50V29ybGQuaCIK
ICNpbmNsdWRlICJBUElVc2VyU2NyaXB0LmgiCiAjaW5jbHVkZSAiQVBJVXNlclN0eWxlU2hlZXQu
aCIKICNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudC5oIgpAQCAtMjgsNSArMjksNiBAQAogCiBB
UEk6OlVzZXJTY3JpcHQmIHdlYmtpdFVzZXJTY3JpcHRHZXRVc2VyU2NyaXB0KFdlYktpdFVzZXJT
Y3JpcHQqKTsKIEFQSTo6VXNlclN0eWxlU2hlZXQmIHdlYmtpdFVzZXJTdHlsZVNoZWV0R2V0VXNl
clN0eWxlU2hlZXQoV2ViS2l0VXNlclN0eWxlU2hlZXQqKTsKK0FQSTo6VXNlckNvbnRlbnRXb3Js
ZCYgd2Via2l0VXNlckNvbnRlbnRXb3JsZChjb25zdCBjaGFyKik7CiAKICNlbmRpZiAvLyBXZWJL
aXRVc2VyQ29udGVudFByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudC5oCmluZGV4IGMzZjFlZDU2OWY4Li4xZGQ0NTBkMGNi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2Vy
Q29udGVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNl
ckNvbnRlbnQuaApAQCAtNjksMjAgKzY5LDI4IEBAIHR5cGVkZWYgZW51bSB7CiB0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0VXNlclN0eWxlU2hlZXQgV2ViS2l0VXNlclN0eWxlU2hlZXQ7CiAKIFdFQktJ
VF9BUEkgR1R5cGUKLXdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X2dldF90eXBlICh2b2lkKTsKK3dl
YmtpdF91c2VyX3N0eWxlX3NoZWV0X2dldF90eXBlICAgICAgKHZvaWQpOwogCiBXRUJLSVRfQVBJ
IFdlYktpdFVzZXJTdHlsZVNoZWV0ICoKLXdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3JlZiAgICAg
IChXZWJLaXRVc2VyU3R5bGVTaGVldCAgICAgICAgICAgKnVzZXJfc3R5bGVfc2hlZXQpOword2Vi
a2l0X3VzZXJfc3R5bGVfc2hlZXRfcmVmICAgICAgICAgICAoV2ViS2l0VXNlclN0eWxlU2hlZXQg
ICAgICAgICAgICp1c2VyX3N0eWxlX3NoZWV0KTsKIAogV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRf
dXNlcl9zdHlsZV9zaGVldF91bnJlZiAgICAoV2ViS2l0VXNlclN0eWxlU2hlZXQgICAgICAgICAg
ICp1c2VyX3N0eWxlX3NoZWV0KTsKK3dlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3VucmVmICAgICAg
ICAgKFdlYktpdFVzZXJTdHlsZVNoZWV0ICAgICAgICAgICAqdXNlcl9zdHlsZV9zaGVldCk7CiAK
IFdFQktJVF9BUEkgV2ViS2l0VXNlclN0eWxlU2hlZXQgKgotd2Via2l0X3VzZXJfc3R5bGVfc2hl
ZXRfbmV3ICAgICAgKGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAgICAqc291cmNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXMgaW5qZWN0ZWRfZnJhbWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYktpdFVzZXJTdHlsZUxldmVsICAgICAgICAgICAgbGV2ZWwsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICp3aGl0ZWxp
c3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0
ICAgICAgICAgICAgICpibGFja2xpc3QpOword2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfbmV3ICAg
ICAgICAgICAoY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICAgICpzb3VyY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzIGluamVjdGVkX2ZyYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdFVzZXJTdHlsZUxldmVsICAgICAgICAgICAgbGV2ZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciogY29uc3QgICAgICAgICAg
ICAgKndoaXRlbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdjaGFyKiBjb25zdCAgICAgICAgICAgICAqYmxhY2tsaXN0KTsKKworV0VCS0lUX0FQSSBX
ZWJLaXRVc2VyU3R5bGVTaGVldCAqCit3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9uZXdfZm9yX3dv
cmxkIChjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAgKnNvdXJjZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXMgaW5qZWN0ZWRfZnJhbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0VXNlclN0eWxlTGV2ZWwgICAgICAgICAgICBsZXZlbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAgICAq
d29ybGRfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdjaGFyKiBjb25zdCAgICAgICAgICAgICAqd2hpdGVsaXN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICpibGFj
a2xpc3QpOwogCiAvKioKICAqIFdlYktpdFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lOgpAQCAtMTIw
LDYgKzEyOCwxNCBAQCB3ZWJraXRfdXNlcl9zY3JpcHRfbmV3ICAgICAgICAgICAoY29uc3QgZ2No
YXIgICAgICAgICAgICAgICAgICAgICpzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICp3aGl0ZWxpc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAg
ICAgICpibGFja2xpc3QpOwogCitXRUJLSVRfQVBJIFdlYktpdFVzZXJTY3JpcHQgKgord2Via2l0
X3VzZXJfc2NyaXB0X25ld19mb3Jfd29ybGQgKGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAg
ICAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRfZnJhbWVzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lICAgaW5qZWN0aW9u
X3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAg
ICAgICAgICAgICAgICAgICp3b3JsZF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdjaGFyKiBjb25zdCAgICAgICAgICAgICAqd2hpdGVsaXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBjb25zdCAgICAgICAgICAg
ICAqYmxhY2tsaXN0KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIu
aAppbmRleCA4NmQyNGExMTM1Mi4uZmY1MDU2ODkzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaApA
QCAtNTgsMzIgKzU4LDQwIEBAIHN0cnVjdCBfV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyQ2xhc3Mg
ewogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOwogfTsKIAotCiBXRUJLSVRf
QVBJIEdUeXBlCi13ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfZ2V0X3R5cGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICh2b2lkKTsKK3dlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9nZXRf
dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOwogCiBXRUJLSVRf
QVBJIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqCi13ZWJraXRfdXNlcl9jb250ZW50X21hbmFn
ZXJfbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKK3dlYmtpdF91c2Vy
X2NvbnRlbnRfbWFuYWdlcl9uZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHZvaWQpOwogCiBXRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdl
cl9hZGRfc3R5bGVfc2hlZXQgICAgICAgICAgICAgICAgICAgKFdlYktpdFVzZXJDb250ZW50TWFu
YWdlciAqbWFuYWdlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJTdHlsZVNoZWV0ICAgICAqc3R5bGVzaGVl
dCk7Cit3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgKm1hbmFnZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRVc2VyU3R5bGVTaGVldCAgICAgKnN0eWxlc2hlZXQpOworV0VC
S0lUX0FQSSB2b2lkCit3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVtb3ZlX2FsbF9zdHls
ZV9zaGVldHMgICAgICAgICAgICAgICAgICAgIChXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgKm1h
bmFnZXIpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfdXNlcl9jb250ZW50X21hbmFn
ZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlciAgICAgICAgICAgIChXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIgKm1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAg
ICAgICAgICAgKm5hbWUpOwogV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfdXNlcl9jb250ZW50X21h
bmFnZXJfcmVtb3ZlX2FsbF9zdHlsZV9zaGVldHMgICAgICAgICAgIChXZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIgKm1hbmFnZXIpOword2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3VucmVnaXN0
ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlciAgICAgICAgICAoV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyICptYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICpu
YW1lKTsKIAogV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2Vy
X3JlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXIgICAoV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyICptYW5hZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICpuYW1lKTsKK3dl
YmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVy
X2luX3dvcmxkICAgKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqbWFuYWdlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAqbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdjaGFyICAgICAgICAgICAgICAqd29ybGRfbmFtZSk7CiBXRUJLSVRfQVBJIHZvaWQKLXdl
YmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl91bnJlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRs
ZXIgKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqbWFuYWdlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFy
ICAgICAgICAgICAgICAqbmFtZSk7Cit3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfdW5yZWdp
c3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyX2luX3dvcmxkIChXZWJLaXRVc2VyQ29udGVudE1h
bmFnZXIgKm1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAg
Km5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgKndvcmxkX25h
bWUpOwogCiBXRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRf
c2NyaXB0ICAgICAgICAgICAgICAoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICptYW5hZ2VyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRVc2VyU2NyaXB0ICAgICAgICAgKnNjcmlwdCk7Cit3ZWJraXRfdXNlcl9jb250ZW50X21hbmFn
ZXJfYWRkX3NjcmlwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIgKm1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyU2NyaXB0
ICAgICAgICAgKnNjcmlwdCk7CiAKIFdFQktJVF9BUEkgdm9pZAotd2Via2l0X3VzZXJfY29udGVu
dF9tYW5hZ2VyX3JlbW92ZV9hbGxfc2NyaXB0cyAgICAgIChXZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXIgKm1hbmFnZXIpOword2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlbW92ZV9hbGxfc2Ny
aXB0cyAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICpt
YW5hZ2VyKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQK
aW5kZXggM2ViODI5ODYwMTQuLjU1NjA1ZGI0MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0
aW9ucy50eHQKQEAgLTk2LDkgKzk2LDExIEBAIFdlYktpdFVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
CiB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9yZWYKIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3Vu
cmVmCiB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9uZXcKK3dlYmtpdF91c2VyX3N0eWxlX3NoZWV0
X25ld19mb3Jfd29ybGQKIHdlYmtpdF91c2VyX3NjcmlwdF9yZWYKIHdlYmtpdF91c2VyX3Njcmlw
dF91bnJlZgogd2Via2l0X3VzZXJfc2NyaXB0X25ldword2Via2l0X3VzZXJfc2NyaXB0X25ld19m
b3Jfd29ybGQKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXRUJLSVRfVFlQRV9VU0VSX1NUWUxF
X1NIRUVUCkBAIC0xMjAsNiArMTIyLDggQEAgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2Fk
ZF9zY3JpcHQKIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZW1vdmVfYWxsX3NjcmlwdHMK
IHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5k
bGVyCiB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfdW5yZWdpc3Rlcl9zY3JpcHRfbWVzc2Fn
ZV9oYW5kbGVyCit3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21l
c3NhZ2VfaGFuZGxlcl9pbl93b3JsZAord2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3VucmVn
aXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcl9pbl93b3JsZAogCiA8U1VCU0VDVElPTiBTdGFu
ZGFyZD4KIFdFQktJVF9JU19VU0VSX0NPTlRFTlRfTUFOQUdFUgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyQ29udGVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyQ29udGVudC5oCmluZGV4IGU3YjVhZWVi
ZGJhLi45MjZmOThkYzVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRVc2VyQ29udGVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0VXNlckNvbnRlbnQuaApAQCAtNjksMjAgKzY5LDI4IEBAIHR5cGVkZWYgZW51
bSB7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0VXNlclN0eWxlU2hlZXQgV2ViS2l0VXNlclN0eWxl
U2hlZXQ7CiAKIFdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X2dldF90
eXBlICh2b2lkKTsKK3dlYmtpdF91c2VyX3N0eWxlX3NoZWV0X2dldF90eXBlICAgICAgKHZvaWQp
OwogCiBXRUJLSVRfQVBJIFdlYktpdFVzZXJTdHlsZVNoZWV0ICoKLXdlYmtpdF91c2VyX3N0eWxl
X3NoZWV0X3JlZiAgICAgIChXZWJLaXRVc2VyU3R5bGVTaGVldCAgICAgICAgICAgKnVzZXJfc3R5
bGVfc2hlZXQpOword2Via2l0X3VzZXJfc3R5bGVfc2hlZXRfcmVmICAgICAgICAgICAoV2ViS2l0
VXNlclN0eWxlU2hlZXQgICAgICAgICAgICp1c2VyX3N0eWxlX3NoZWV0KTsKIAogV0VCS0lUX0FQ
SSB2b2lkCi13ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZiAgICAoV2ViS2l0VXNlclN0eWxl
U2hlZXQgICAgICAgICAgICp1c2VyX3N0eWxlX3NoZWV0KTsKK3dlYmtpdF91c2VyX3N0eWxlX3No
ZWV0X3VucmVmICAgICAgICAgKFdlYktpdFVzZXJTdHlsZVNoZWV0ICAgICAgICAgICAqdXNlcl9z
dHlsZV9zaGVldCk7CiAKIFdFQktJVF9BUEkgV2ViS2l0VXNlclN0eWxlU2hlZXQgKgotd2Via2l0
X3VzZXJfc3R5bGVfc2hlZXRfbmV3ICAgICAgKGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAg
ICAqc291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRfZnJhbWVzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdFVzZXJTdHlsZUxldmVsICAgICAgICAgICAgbGV2ZWwsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAg
ICAgICAgICp3aGl0ZWxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICpibGFja2xpc3QpOword2Via2l0X3VzZXJfc3R5
bGVfc2hlZXRfbmV3ICAgICAgICAgICAoY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICAgICpz
b3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkX2ZyYW1lcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJTdHlsZUxldmVsICAgICAgICAgICAgbGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciog
Y29uc3QgICAgICAgICAgICAgKndoaXRlbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBjb25zdCAgICAgICAgICAgICAqYmxhY2tsaXN0KTsK
KworV0VCS0lUX0FQSSBXZWJLaXRVc2VyU3R5bGVTaGVldCAqCit3ZWJraXRfdXNlcl9zdHlsZV9z
aGVldF9uZXdfZm9yX3dvcmxkIChjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICAgKnNvdXJj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRfZnJhbWVzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViS2l0VXNlclN0eWxlTGV2ZWwgICAgICAgICAgICBsZXZlbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAg
ICAgICAgICAgICAgICAqd29ybGRfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdjaGFyKiBjb25zdCAgICAgICAgICAgICAqd2hpdGVsaXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAg
ICAgICAgICAgICpibGFja2xpc3QpOwogCiAvKioKICAqIFdlYktpdFVzZXJTY3JpcHRJbmplY3Rp
b25UaW1lOgpAQCAtMTIwLDYgKzEyOCwxNCBAQCB3ZWJraXRfdXNlcl9zY3JpcHRfbmV3ICAgICAg
ICAgICAoY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICAgICpzb3VyY2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIqIGNvbnN0ICAgICAgICAgICAgICp3
aGl0ZWxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIq
IGNvbnN0ICAgICAgICAgICAgICpibGFja2xpc3QpOwogCitXRUJLSVRfQVBJIFdlYktpdFVzZXJT
Y3JpcHQgKgord2Via2l0X3VzZXJfc2NyaXB0X25ld19mb3Jfd29ybGQgKGNvbnN0IGdjaGFyICAg
ICAgICAgICAgICAgICAgICAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRfZnJhbWVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJTY3JpcHRJbmplY3Rpb25U
aW1lICAgaW5qZWN0aW9uX3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICAgICp3b3JsZF9uYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBjb25zdCAgICAgICAgICAgICAqd2hp
dGVsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyKiBj
b25zdCAgICAgICAgICAgICAqYmxhY2tsaXN0KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJDb250
ZW50TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIuaAppbmRleCAyN2EyN2M4M2E0Zi4uNjUxM2ZhN2I0MjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIuaApAQCAtNTgsMzIgKzU4LDQwIEBAIHN0cnVjdCBfV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyQ2xhc3MgewogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMykgKHZvaWQpOwog
fTsKIAotCiBXRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfZ2V0
X3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKK3dlYmtpdF91c2VyX2NvbnRl
bnRfbWFuYWdlcl9nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZv
aWQpOwogCiBXRUJLSVRfQVBJIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqCi13ZWJraXRfdXNl
cl9jb250ZW50X21hbmFnZXJfbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lk
KTsKK3dlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9uZXcgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHZvaWQpOwogCiBXRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF91c2Vy
X2NvbnRlbnRfbWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQgICAgICAgICAgICAgICAgICAgKFdlYktp
dFVzZXJDb250ZW50TWFuYWdlciAqbWFuYWdlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFVzZXJTdHlsZVNoZWV0
ICAgICAqc3R5bGVzaGVldCk7Cit3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3N0eWxl
X3NoZWV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXIgKm1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVc2VyU3R5bGVTaGVldCAgICAgKnN0
eWxlc2hlZXQpOworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJf
cmVtb3ZlX2FsbF9zdHlsZV9zaGVldHMgICAgICAgICAgICAgICAgICAgIChXZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIgKm1hbmFnZXIpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfdXNl
cl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlciAgICAgICAg
ICAgIChXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgKm1hbmFnZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnY2hhciAgICAgICAgICAgICAgKm5hbWUpOwogV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRf
dXNlcl9jb250ZW50X21hbmFnZXJfcmVtb3ZlX2FsbF9zdHlsZV9zaGVldHMgICAgICAgICAgIChX
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgKm1hbmFnZXIpOword2Via2l0X3VzZXJfY29udGVudF9t
YW5hZ2VyX3VucmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlciAgICAgICAgICAoV2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyICptYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIg
ICAgICAgICAgICAgICpuYW1lKTsKIAogV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X3VzZXJf
Y29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXIgICAoV2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyICptYW5hZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAg
ICAgICpuYW1lKTsKK3dlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRf
bWVzc2FnZV9oYW5kbGVyX2luX3dvcmxkICAgKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqbWFu
YWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAqbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAqd29ybGRfbmFtZSk7CiBXRUJL
SVRfQVBJIHZvaWQKLXdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl91bnJlZ2lzdGVyX3Njcmlw
dF9tZXNzYWdlX2hhbmRsZXIgKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciAqbWFuYWdlciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAqbmFtZSk7Cit3ZWJraXRfdXNlcl9jb250ZW50
X21hbmFnZXJfdW5yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyX2luX3dvcmxkIChXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIgKm1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hh
ciAgICAgICAgICAgICAgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAg
ICAgICAgKndvcmxkX25hbWUpOwogCiBXRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF91c2VyX2NvbnRl
bnRfbWFuYWdlcl9hZGRfc2NyaXB0ICAgICAgICAgICAgICAoV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyICptYW5hZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRVc2VyU2NyaXB0ICAgICAgICAgKnNjcmlwdCk7Cit3ZWJraXRfdXNl
cl9jb250ZW50X21hbmFnZXJfYWRkX3NjcmlwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgKm1hbmFnZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRVc2VyU2NyaXB0ICAgICAgICAgKnNjcmlwdCk7CiAKIFdFQktJVF9BUEkgdm9pZAotd2Vi
a2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlbW92ZV9hbGxfc2NyaXB0cyAgICAgIChXZWJLaXRV
c2VyQ29udGVudE1hbmFnZXIgKm1hbmFnZXIpOword2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2Vy
X3JlbW92ZV9hbGxfc2NyaXB0cyAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0VXNlckNv
bnRlbnRNYW5hZ2VyICptYW5hZ2VyKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLmNwcAppbmRleCBjNGZjYjkwODY4My4uNzE4ZWU0NTNhZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC0xMDEsNyArMTAxLDE1IEBAIHZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyQ29udGVudFdvcmxkcyhjb25zdCBWZWN0b3I8
c3RkOjpwYWlyPHVpbnQ2CiAgICAgICAgIEFTU0VSVCh3b3JsZC5maXJzdCk7CiAgICAgICAgIEFT
U0VSVCh3b3JsZC5maXJzdCAhPSAxKTsKIAotICAgICAgICB3b3JsZE1hcCgpLmVuc3VyZSh3b3Js
ZC5maXJzdCwgWyZdIHsgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQ6OmNyZWF0ZSh3b3JsZC5zZWNvbmQpLCAxKTsgfSk7CisgICAgICAgIHdvcmxkTWFwKCku
ZW5zdXJlKHdvcmxkLmZpcnN0LCBbJl0geworI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
V1BFKQorICAgICAgICAgICAgLy8gVGhlIEdMaWIgQVBJIGRvZXNuJ3QgYWxsb3cgdG8gY3JlYXRl
IHNjcmlwdCB3b3JsZHMgZnJvbSB0aGUgVUkgcHJvY2VzcywgYW5kIHRoZQorICAgICAgICAgICAg
Ly8gd29ybGQgbmFtZSBpcyB1c2VkIGFzIHRoZSBpZGVudGlmaWVyLiBVc2UgdGhlIGV4aXN0aW5n
IHdvcmxkIGlmIGZvdW5kLgorICAgICAgICAgICAgaWYgKGF1dG8qIGV4aXN0aW5nV29ybGQgPSBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpmaW5kKHdvcmxkLnNlY29uZCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKFJlZjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
PigqZXhpc3RpbmdXb3JsZCksIDEpOworI2VuZGlmCisgICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3BhaXIoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Y3JlYXRlKHdvcmxkLnNlY29uZCks
IDEpOworICAgICAgICB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhN2JiMmU3YjFjZC4uZjhkMjg1YTVjMDYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MyBAQAorMjAxOC0wOC0yMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIGluamVjdC9yZWdpc3RlciB1c2Vy
IGNvbnRlbnQgaW4gaXNvbGF0ZWQgd29ybGRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODg4ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBjYXNlcyBmb3IgdGhlIG5ldyBBUEkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFVzZXJDb250
ZW50TWFuYWdlci5jcHA6CisgICAgICAgIChpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0
aCk6CisgICAgICAgIChpc1NjcmlwdEluamVjdGVkRm9yVVJMQXRQYXRoKToKKyAgICAgICAgKHRl
c3RVc2VyQ29udGVudE1hbmFnZXJJbmplY3RlZFN0eWxlU2hlZXQpOgorICAgICAgICAodGVzdFVz
ZXJDb250ZW50TWFuYWdlckluamVjdGVkU2NyaXB0KToKKyAgICAgICAgKFVzZXJTY3JpcHRNZXNz
YWdlVGVzdDo6cmVnaXN0ZXJIYW5kbGVyKToKKyAgICAgICAgKFVzZXJTY3JpcHRNZXNzYWdlVGVz
dDo6dW5yZWdpc3RlckhhbmRsZXIpOgorICAgICAgICAoVXNlclNjcmlwdE1lc3NhZ2VUZXN0Ojpw
b3N0TWVzc2FnZUFuZFdhaXRVbnRpbFJlY2VpdmVkKToKKyAgICAgICAgKHRlc3RVc2VyQ29udGVu
dE1hbmFnZXJTY3JpcHRNZXNzYWdlSW5Xb3JsZFJlY2VpdmVkKToKKyAgICAgICAgKGJlZm9yZUFs
bCk6CisKIDIwMTgtMDgtMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBUcmFuc2l0aW9uIFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJWaWV3
IEFQSSB0ZXN0IGZyb20gV0tQYWdlTG9hZGVyQ2xpZW50IHRvIFdLUGFnZU5hdmlnYXRpb25DbGll
bnQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAppbmRleCA5NzgzYzM1
MzNiNC4uYWQyMzEyMzAzNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdl
ci5jcHAKQEAgLTQ3LDEzICs0NywxNCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld05ld1dpdGhV
c2VyQ29udGVudE1hbmFnZXIoVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2Vy
dCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcyLmdldCgp
KSAhPSB1c2VyQ29udGVudE1hbmFnZXIxLmdldCgpKTsKIH0KIAotc3RhdGljIGJvb2wgaXNTdHls
ZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgoV2ViVmlld1Rlc3QqIHRlc3QsIGNvbnN0IGNoYXIq
IHBhdGgpCitzdGF0aWMgYm9vbCBpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aChXZWJW
aWV3VGVzdCogdGVzdCwgY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciogd29ybGQgPSBudWxs
cHRyKQogewogICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aChwYXRoKS5k
YXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCiAgICAgR1VuaXF1
ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFz
Y3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoa1N0
eWxlU2hlZXRUZXN0U2NyaXB0LCAmZXJyb3Iub3V0UHRyKCkpOworICAgIFdlYktpdEphdmFzY3Jp
cHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB3b3JsZCA/IHRlc3QtPnJ1bkphdmFTY3JpcHRJ
bldvcmxkQW5kV2FpdFVudGlsRmluaXNoZWQoa1N0eWxlU2hlZXRUZXN0U2NyaXB0LCB3b3JsZCwg
JmVycm9yLm91dFB0cigpKQorICAgICAgICA6IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50
aWxGaW5pc2hlZChrU3R5bGVTaGVldFRlc3RTY3JpcHQsICZlcnJvci5vdXRQdHIoKSk7CiAgICAg
Z19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsK
IApAQCAtNjEsMTMgKzYyLDE1IEBAIHN0YXRpYyBib29sIGlzU3R5bGVTaGVldEluamVjdGVkRm9y
VVJMQXRQYXRoKFdlYlZpZXdUZXN0KiB0ZXN0LCBjb25zdCBjaGFyKiBwYXRoCiAgICAgcmV0dXJu
ICFnX3N0cmNtcDAocmVzdWx0U3RyaW5nLmdldCgpLCBrU3R5bGVTaGVldFRlc3RTY3JpcHRSZXN1
bHQpOwogfQogCi1zdGF0aWMgYm9vbCBpc1NjcmlwdEluamVjdGVkRm9yVVJMQXRQYXRoKFdlYlZp
ZXdUZXN0KiB0ZXN0LCBjb25zdCBjaGFyKiBwYXRoKQorc3RhdGljIGJvb2wgaXNTY3JpcHRJbmpl
Y3RlZEZvclVSTEF0UGF0aChXZWJWaWV3VGVzdCogdGVzdCwgY29uc3QgY2hhciogcGF0aCwgY29u
c3QgY2hhciogd29ybGQgPSBudWxscHRyKQogewogICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+
Z2V0VVJJRm9yUGF0aChwYXRoKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5p
c2hlZCgpOwogCiAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgIGlmIChXZWJL
aXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlw
dEFuZFdhaXRVbnRpbEZpbmlzaGVkKGtTY3JpcHRUZXN0U2NyaXB0LCAmZXJyb3Iub3V0UHRyKCkp
KSB7CisgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHdvcmxk
ID8gdGVzdC0+cnVuSmF2YVNjcmlwdEluV29ybGRBbmRXYWl0VW50aWxGaW5pc2hlZChrU2NyaXB0
VGVzdFNjcmlwdCwgd29ybGQsICZlcnJvci5vdXRQdHIoKSkKKyAgICAgICAgOiB0ZXN0LT5ydW5K
YXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoa1NjcmlwdFRlc3RTY3JpcHQsICZlcnJvci5v
dXRQdHIoKSk7CisgICAgaWYgKGphdmFzY3JpcHRSZXN1bHQpIHsKICAgICAgICAgZ19hc3NlcnQo
IWVycm9yLmdldCgpKTsKIAogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc3VsdFN0cmluZyhX
ZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7
CkBAIC0xMjUsNiArMTI4LDE0IEBAIHN0YXRpYyB2b2lkIHRlc3RVc2VyQ29udGVudE1hbmFnZXJJ
bmplY3RlZFN0eWxlU2hlZXQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvCiAKICAgICByZW1v
dmVPbGRJbmplY3RlZENvbnRlbnRBbmRSZXNldExpc3RzKHRlc3QtPm1fdXNlckNvbnRlbnRNYW5h
Z2VyLmdldCgpLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CiAKKyAgICBnX2Fzc2VydCghaXNTdHls
ZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCwgIldlYkV4dGVuc2lv
blRlc3RTY3JpcHRXb3JsZCIpKTsKKyAgICBzdHlsZVNoZWV0ID0gd2Via2l0X3VzZXJfc3R5bGVf
c2hlZXRfbmV3X2Zvcl93b3JsZChrSW5qZWN0ZWRTdHlsZVNoZWV0LCBXRUJLSVRfVVNFUl9DT05U
RU5UX0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRfVVNFUl9TVFlMRV9MRVZFTF9VU0VSLCAiV2Vi
RXh0ZW5zaW9uVGVzdFNjcmlwdFdvcmxkIiwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgd2Via2l0
X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zdHlsZV9zaGVldCh0ZXN0LT5tX3VzZXJDb250ZW50
TWFuYWdlci5nZXQoKSwgc3R5bGVTaGVldCk7CisgICAgd2Via2l0X3VzZXJfc3R5bGVfc2hlZXRf
dW5yZWYoc3R5bGVTaGVldCk7CisgICAgZ19hc3NlcnQoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JV
UkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCwgIldlYkV4dGVuc2lvblRlc3RTY3JpcHRXb3JsZCIp
KTsKKworICAgIHJlbW92ZU9sZEluamVjdGVkQ29udGVudEFuZFJlc2V0TGlzdHModGVzdC0+bV91
c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKKwogICAgIGZp
bGxVUkxMaXN0RnJvbVBhdGhzKGJsYWNrbGlzdCwgcmFuZG9tUGF0aCwgMCk7CiAgICAgc3R5bGVT
aGVldCA9IHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyhrSW5qZWN0ZWRTdHlsZVNoZWV0LCBX
RUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRfVVNFUl9TVFlMRV9M
RVZFTF9VU0VSLCBudWxscHRyLCBibGFja2xpc3QpOwogICAgIHdlYmtpdF91c2VyX2NvbnRlbnRf
bWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQodGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCks
IHN0eWxlU2hlZXQpOwpAQCAtMTY4LDYgKzE3OSwxNCBAQCBzdGF0aWMgdm9pZCB0ZXN0VXNlckNv
bnRlbnRNYW5hZ2VySW5qZWN0ZWRTY3JpcHQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZQogCiAgICAgcmVtb3ZlT2xkSW5qZWN0ZWRDb250ZW50QW5kUmVzZXRMaXN0cyh0ZXN0LT5tX3Vz
ZXJDb250ZW50TWFuYWdlci5nZXQoKSwgd2hpdGVsaXN0LCBibGFja2xpc3QpOwogCisgICAgZ19h
c3NlcnQoIWlzU2NyaXB0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCwgIldl
YkV4dGVuc2lvblRlc3RTY3JpcHRXb3JsZCIpKTsKKyAgICBzY3JpcHQgPSB3ZWJraXRfdXNlcl9z
Y3JpcHRfbmV3X2Zvcl93b3JsZChrSW5qZWN0ZWRTY3JpcHQsIFdFQktJVF9VU0VSX0NPTlRFTlRf
SU5KRUNUX0FMTF9GUkFNRVMsIFdFQktJVF9VU0VSX1NDUklQVF9JTkpFQ1RfQVRfRE9DVU1FTlRf
RU5ELCAiV2ViRXh0ZW5zaW9uVGVzdFNjcmlwdFdvcmxkIiwgbnVsbHB0ciwgbnVsbHB0cik7Cisg
ICAgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zY3JpcHQodGVzdC0+bV91c2VyQ29u
dGVudE1hbmFnZXIuZ2V0KCksIHNjcmlwdCk7CisgICAgd2Via2l0X3VzZXJfc2NyaXB0X3VucmVm
KHNjcmlwdCk7CisgICAgZ19hc3NlcnQoaXNTY3JpcHRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0
LCByYW5kb21QYXRoLCAiV2ViRXh0ZW5zaW9uVGVzdFNjcmlwdFdvcmxkIikpOworCisgICAgcmVt
b3ZlT2xkSW5qZWN0ZWRDb250ZW50QW5kUmVzZXRMaXN0cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFu
YWdlci5nZXQoKSwgd2hpdGVsaXN0LCBibGFja2xpc3QpOworCiAgICAgZmlsbFVSTExpc3RGcm9t
UGF0aHMoYmxhY2tsaXN0LCByYW5kb21QYXRoLCAwKTsKICAgICBzY3JpcHQgPSB3ZWJraXRfdXNl
cl9zY3JpcHRfbmV3KGtJbmplY3RlZFNjcmlwdCwgV0VCS0lUX1VTRVJfQ09OVEVOVF9JTkpFQ1Rf
QUxMX0ZSQU1FUywgV0VCS0lUX1VTRVJfU0NSSVBUX0lOSkVDVF9BVF9ET0NVTUVOVF9FTkQsIG51
bGxwdHIsIGJsYWNrbGlzdCk7CiAgICAgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX2FkZF9z
Y3JpcHQodGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHNjcmlwdCk7CkBAIC0yMDks
MTQgKzIyOCwxNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICB3ZWJraXRfamF2YXNjcmlwdF9yZXN1
bHRfdW5yZWYobV91c2VyU2NyaXB0TWVzc2FnZSk7CiAgICAgfQogCi0gICAgYm9vbCByZWdpc3Rl
ckhhbmRsZXIoY29uc3QgY2hhciogaGFuZGxlck5hbWUpCisgICAgYm9vbCByZWdpc3RlckhhbmRs
ZXIoY29uc3QgY2hhciogaGFuZGxlck5hbWUsIGNvbnN0IGNoYXIqIHdvcmxkTmFtZSA9IG51bGxw
dHIpCiAgICAgewotICAgICAgICByZXR1cm4gd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3Jl
Z2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXIobV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCks
IGhhbmRsZXJOYW1lKTsKKyAgICAgICAgcmV0dXJuIHdvcmxkTmFtZSA/IHdlYmtpdF91c2VyX2Nv
bnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyX2luX3dvcmxkKG1f
dXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCBoYW5kbGVyTmFtZSwgd29ybGROYW1lKQorICAgICAg
ICAgICAgOiB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3Nh
Z2VfaGFuZGxlcihtX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgaGFuZGxlck5hbWUpOwogICAg
IH0KIAotICAgIHZvaWQgdW5yZWdpc3RlckhhbmRsZXIoY29uc3QgY2hhciogaGFuZGxlck5hbWUp
CisgICAgdm9pZCB1bnJlZ2lzdGVySGFuZGxlcihjb25zdCBjaGFyKiBoYW5kbGVyTmFtZSwgY29u
c3QgY2hhciogd29ybGROYW1lID0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIHdlYmtpdF91c2Vy
X2NvbnRlbnRfbWFuYWdlcl91bnJlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXIobV91c2Vy
Q29udGVudE1hbmFnZXIuZ2V0KCksIGhhbmRsZXJOYW1lKTsKKyAgICAgICAgcmV0dXJuIHdvcmxk
TmFtZSA/IHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl91bnJlZ2lzdGVyX3NjcmlwdF9tZXNz
YWdlX2hhbmRsZXJfaW5fd29ybGQobV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIGhhbmRsZXJO
YW1lLCB3b3JsZE5hbWUpCisgICAgICAgICAgICA6IHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdl
cl91bnJlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXIobV91c2VyQ29udGVudE1hbmFnZXIu
Z2V0KCksIGhhbmRsZXJOYW1lKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBzY3JpcHRNZXNz
YWdlUmVjZWl2ZWQoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiB1c2VyQ29udGVudE1hbmFnZXIs
IFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGpzUmVzdWx0LCBVc2VyU2NyaXB0TWVzc2FnZVRlc3Qq
IHRlc3QpCkBAIC0yNTIsMTEgKzI3MywxNCBAQCBwdWJsaWM6CiAgICAgICAgIGdfbWFpbl9sb29w
X3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CiAgICAgfQogCi0gICAgV2ViS2l0SmF2YXNjcmlwdFJl
c3VsdCogcG9zdE1lc3NhZ2VBbmRXYWl0VW50aWxSZWNlaXZlZChjb25zdCBjaGFyKiBoYW5kbGVy
TmFtZSwgY29uc3QgY2hhciogamF2YXNjcmlwdFZhbHVlQXNUZXh0KQorICAgIFdlYktpdEphdmFz
Y3JpcHRSZXN1bHQqIHBvc3RNZXNzYWdlQW5kV2FpdFVudGlsUmVjZWl2ZWQoY29uc3QgY2hhciog
aGFuZGxlck5hbWUsIGNvbnN0IGNoYXIqIGphdmFzY3JpcHRWYWx1ZUFzVGV4dCwgY29uc3QgY2hh
ciogd29ybGROYW1lID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4g
amF2YXNjcmlwdFNuaXBwZXQoZ19zdHJkdXBfcHJpbnRmKCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VI
YW5kbGVycy4lcy5wb3N0TWVzc2FnZSglcyk7IiwgaGFuZGxlck5hbWUsIGphdmFzY3JpcHRWYWx1
ZUFzVGV4dCkpOwogICAgICAgICBtX3dhaXRGb3JTY3JpcHRSdW4gPSB0cnVlOwotICAgICAgICB3
ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQobV93ZWJWaWV3LCBqYXZhc2NyaXB0U25pcHBl
dC5nZXQoKSwgbnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihy
dW5KYXZhU2NyaXB0RmluaXNoZWQpLCB0aGlzKTsKKyAgICAgICAgaWYgKHdvcmxkTmFtZSkKKyAg
ICAgICAgICAgIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9pbl93b3JsZChtX3dlYlZp
ZXcsIGphdmFzY3JpcHRTbmlwcGV0LmdldCgpLCB3b3JsZE5hbWUsIG51bGxwdHIsIHJlaW50ZXJw
cmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4ocnVuSmF2YVNjcmlwdEZpbmlzaGVkKSwgdGhp
cyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNj
cmlwdChtX3dlYlZpZXcsIGphdmFzY3JpcHRTbmlwcGV0LmdldCgpLCBudWxscHRyLCByZWludGVy
cHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KHJ1bkphdmFTY3JpcHRGaW5pc2hlZCksIHRo
aXMpOwogICAgICAgICByZXR1cm4gd2FpdFVudGlsTWVzc2FnZVJlY2VpdmVkKGhhbmRsZXJOYW1l
KTsKICAgICB9CiAKQEAgLTMzMSw2ICszNTUsNDAgQEAgc3RhdGljIHZvaWQgdGVzdFVzZXJDb250
ZW50TWFuYWdlclNjcmlwdE1lc3NhZ2VSZWNlaXZlZChVc2VyU2NyaXB0TWVzc2FnZVRlc3QqIHQK
ICAgICB0ZXN0LT51bnJlZ2lzdGVySGFuZGxlcigiYW5vdGhlckhhbmRsZXIiKTsKIH0KIAorc3Rh
dGljIHZvaWQgdGVzdFVzZXJDb250ZW50TWFuYWdlclNjcmlwdE1lc3NhZ2VJbldvcmxkUmVjZWl2
ZWQoVXNlclNjcmlwdE1lc3NhZ2VUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIGdf
YXNzZXJ0KHRlc3QtPnJlZ2lzdGVySGFuZGxlcigibXNnIikpOworCisgICAgdGVzdC0+bG9hZEh0
bWwoIjxodG1sPjwvaHRtbD4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmlu
aXNoZWQoKTsKKworICAgIC8vIENoZWNrIHRoYXQgdGhlICJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VI
YW5kbGVycyIgbmFtZXNwYWNlIGRvZXNuJ3QgZXhpc3QgaW4gaXNvbGF0ZWQgd29ybGRzLgorICAg
IEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEluV29ybGRBbmRXYWl0VW50
aWxGaW5pc2hlZCgid2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMgPyAneScgOiAnbic7Iiwg
IldlYkV4dGVuc2lvblRlc3RTY3JpcHRXb3JsZCIsICZlcnJvci5vdXRQdHIoKSk7CisgICAgZ19h
c3NlcnQoIWphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgp
LCBXRUJLSVRfSkFWQVNDUklQVF9FUlJPUiwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1JfU0NSSVBU
X0ZBSUxFRCk7CisgICAgdGVzdC0+dW5yZWdpc3RlckhhbmRsZXIoIm1zZyIpOworCisgICAgZ19h
c3NlcnQodGVzdC0+cmVnaXN0ZXJIYW5kbGVyKCJtc2ciLCAiV2ViRXh0ZW5zaW9uVGVzdFNjcmlw
dFdvcmxkIikpOworCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgIndpbmRvdy53ZWJraXQubWVzc2Fn
ZUhhbmRsZXJzIiBuYW1lc3BhY2UgZXhpc3RzIGluIHRoZSB3b3JsZC4KKyAgICBqYXZhc2NyaXB0
UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEluV29ybGRBbmRXYWl0VW50aWxGaW5pc2hlZCgi
d2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMgPyAneScgOiAnbic7IiwgIldlYkV4dGVuc2lv
blRlc3RTY3JpcHRXb3JsZCIsICZlcnJvci5vdXRQdHIoKSk7CisgICAgZ19hc3NlcnQoamF2YXNj
cmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICBHVW5pcXVlUHRy
PGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5n
KGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0
KCksID09LCAieSIpOworCisgICAgdmFsdWVTdHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFz
Y3JpcHRSZXN1bHRUb0NTdHJpbmcodGVzdC0+cG9zdE1lc3NhZ2VBbmRXYWl0VW50aWxSZWNlaXZl
ZCgibXNnIiwgIid1c2VyIG1lc3NhZ2UnIiwgIldlYkV4dGVuc2lvblRlc3RTY3JpcHRXb3JsZCIp
KSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgInVzZXIgbWVz
c2FnZSIpOworCisgICAgLy8gUG9zdCBtZXNzYWdlIGluIG5haW4gd29ybGQgc2hvdWxkIGZhaWwu
CisgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxG
aW5pc2hlZCgid2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMubXNnLnBvc3RNZXNzYWdlKCc0
MicpOyIsICZlcnJvci5vdXRQdHIoKSk7CisgICAgZ19hc3NlcnQoIWphdmFzY3JpcHRSZXN1bHQp
OworICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfSkFWQVNDUklQVF9FUlJP
UiwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1JfU0NSSVBUX0ZBSUxFRCk7CisKKyAgICB0ZXN0LT51
bnJlZ2lzdGVySGFuZGxlcigibXNnIiwgIldlYkV4dGVuc2lvblRlc3RTY3JpcHRXb3JsZCIpOwor
fQorCiAjaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIHZvaWQgdGVzdFVzZXJDb250ZW50TWFuYWdl
clNjcmlwdE1lc3NhZ2VGcm9tRE9NQmluZGluZ3MoVXNlclNjcmlwdE1lc3NhZ2VUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogewpAQCAtMzYyLDYgKzQyMCw3IEBAIHZvaWQgYmVmb3JlQWxsKCkK
ICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIiLCAiaW5qZWN0
ZWQtc3R5bGUtc2hlZXQiLCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRTdHlsZVNoZWV0
KTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIiLCAiaW5q
ZWN0ZWQtc2NyaXB0IiwgdGVzdFVzZXJDb250ZW50TWFuYWdlckluamVjdGVkU2NyaXB0KTsKICAg
ICBVc2VyU2NyaXB0TWVzc2FnZVRlc3Q6OmFkZCgiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIiwg
InNjcmlwdC1tZXNzYWdlLXJlY2VpdmVkIiwgdGVzdFVzZXJDb250ZW50TWFuYWdlclNjcmlwdE1l
c3NhZ2VSZWNlaXZlZCk7CisgICAgVXNlclNjcmlwdE1lc3NhZ2VUZXN0OjphZGQoIldlYktpdFVz
ZXJDb250ZW50TWFuYWdlciIsICJzY3JpcHQtbWVzc2FnZS1pbi13b3JsZC1yZWNlaXZlZCIsIHRl
c3RVc2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNzYWdlSW5Xb3JsZFJlY2VpdmVkKTsKICNpZiBQ
TEFURk9STShHVEspCiAgICAgVXNlclNjcmlwdE1lc3NhZ2VUZXN0OjphZGQoIldlYktpdFVzZXJD
b250ZW50TWFuYWdlciIsICJzY3JpcHQtbWVzc2FnZS1mcm9tLWRvbS1iaW5kaW5ncyIsIHRlc3RV
c2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNzYWdlRnJvbURPTUJpbmRpbmdzKTsKICNlbmRpZgo=
</data>
<flag name="review"
          id="365607"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>