<?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>140392</bug_id>
          
          <creation_ts>2015-01-13 08:47:17 -0800</creation_ts>
          <short_desc>[GTK] Add API to control mixed-content blocking</short_desc>
          <delta_ts>2020-09-01 08:30:24 -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>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>140625</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>andersca</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1060829</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-01-13 08:47:17 -0800</bug_when>
    <thetext>Browsers should be able to block mixed content. For Epiphany, I want all active mixed content to be blocked. Privacy-focused browsers need to block passive mixed content as well (but we can&apos;t do this in Epiphany as it would break too many sites), so this needs to be a browser-controlled setting.

Major browsers notify users when they block mixed content, and allow the user to reload the page with mixed content unblocked. I&apos;ve never needed to do this to make a site work, so I wonder if we can get away with not providing this functionality in Epiphany, but our API should make this possible since I&apos;m not aware of any browser that blocks mixed content without allowing the user to load it anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060832</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-01-13 08:57:09 -0800</bug_when>
    <thetext>One note: this patch sets the default insecure content policy to WEBKIT_INSECURE_CONTENT_POLICY_ALLOW_SOME. This is the setting most apps want to use, but it means that WebKitWebView:insecure-content-event could be emitted with WEBKIT_INSECURE_CONTENT_BLOCKED, which existing apps might not handle correctly (e.g. if they assert if the enum value is unrecognized, or check if it&apos;s one of the original two values and assume it&apos;s the other if not). Therefore we should consider either defaulting to WEBKIT_INSECURE_CONTENT_POLICY_ALLOW_ALL instead (in which case the new value would never be emitted), or addding a new signal WebKitWebView:insecure-content-blocked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060836</commentid>
    <comment_count>2</comment_count>
      <attachid>244520</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-01-13 09:08:56 -0800</bug_when>
    <thetext>Created attachment 244520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061074</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-01-13 21:19:20 -0800</bug_when>
    <thetext>Generating webkit2gtk documentation...
/home/slave/WebKit/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h:121: warning: Value descriptions for WebKitInsecureContentPolicy are missing in source code comment block.
/home/slave/WebKit/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:150: warning: Value described in source code comment block but does not exist. ENUM: WebKitInsecureContentEvent Value: WEBKIT_INSECURE_CONTENT_BLOCKED.
/home/slave/WebKit/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:150: warning: Value description for WebKitInsecureContentEvent::WEBKIT_INSECURE_CONTENT_BLOCKED is missing in source code comment block.

^ I guess I need to talk to the gtkdoc people, as I can&apos;t figure out why it doesn&apos;t see the documentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061075</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-01-13 21:22:54 -0800</bug_when>
    <thetext>Actually I have a guess: the bots need clean builds after r178103 to get rid of their tmpl directories.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075252</commentid>
    <comment_count>5</comment_count>
      <attachid>244520</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-03-07 01:25:05 -0800</bug_when>
    <thetext>Comment on attachment 244520
Patch

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

I think this patch could be split in two, one with the cross-platform changes including layout tests (and maybe even API tests as well) and then the GTK+ API one. That will make it easier for WebKit2 owners to review the cross-platform code, and for GTK+ reviewers the GTK+ part. I haven&apos;t looked at it in detail, so I have just a few general comments/questions.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:944
&gt; + * Since: 2.8

All Since tags should be 2.10 now.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp:956
&gt; +    for (WebKitWebView* webView : context-&gt;priv-&gt;webViews.values())
&gt; +        webkitWebViewSetPageInsecureContentPolicy(webView, policy);

If this is actually a per page thing why not adding the API to the WebView? or even as a setting, so that you can share the policy with multiple web views.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.h:112
&gt; + * @WEBKIT_INSECURE_CONTENT_POLICY_ALLOW_SOME: Block some mixed content. Some
&gt; + *   mixed content will be permitted to preserve compatibility with web sites.
&gt; + *   For example, insecure images, audio, video, and forms are currently
&gt; + *   permitted. The set of permitted insecure content is subject to change.

Is this still true? or are only images allowed. We should probably say here that insecure-content-detected will be called for the allowed as a mode of warning.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:2496
&gt; +void webkit_web_view_reload_with_insecure_content(WebKitWebView* webView)
&gt; +{
&gt; +    g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
&gt; +
&gt; +    webkitWebViewSetPageInsecureContentPolicy(webView, WEBKIT_INSECURE_CONTENT_POLICY_ALLOW_ALL);
&gt; +    webkit_web_view_reload(webView);

I&apos;m not sure about this, I think it would be easier if the app does this. Change the setting/policy, and the reload.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:5363
&gt; +void WebPageProxy::allowDisplayOfInsecureContent(bool allowed)
&gt; +{
&gt; +    if (!isValid())
&gt; +        return;
&gt; +
&gt; +    process().send(Messages::WebPage::AllowDisplayOfInsecureContent(allowed), m_pageID);
&gt; +}
&gt; +
&gt; +void WebPageProxy::allowRunningOfInsecureContent(bool allowed)
&gt; +{
&gt; +    if (!isValid())
&gt; +        return;
&gt; +
&gt; +    process().send(Messages::WebPage::AllowRunningOfInsecureContent(allowed), m_pageID);

I think it would be quite common to call both methods. Maybe we could use a single message allowInsecureContent with flags as parameter.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2664
&gt; +void WebPage::allowDisplayOfInsecureContent(bool allowed)
&gt; +{
&gt; +    m_page-&gt;settings().setAllowDisplayOfInsecureContent(allowed);
&gt; +}
&gt; +
&gt; +void WebPage::allowRunningOfInsecureContent(bool allowed)
&gt; +{
&gt; +    m_page-&gt;settings().setAllowRunningOfInsecureContent(allowed);
&gt; +}

Since they are indeed settings, why not exposing them as settings? I think everythihng will be easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075494</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-03-08 18:54:41 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I think this patch could be split in two, one with the cross-platform
&gt; changes including layout tests (and maybe even API tests as well) and then
&gt; the GTK+ API one. 

The cross-platform changes here are (a) new load event didBlockInsecureContent and (b) control of the existing WebCore insecure content settings from WK2. Neither of that can be tested with layout tests; they need API tests. (Using a setting from a layout test requires a completely different code path.) I don&apos;t want to write cross-platform API tests since they would not be easy to write (HTTP server required: I want libsoup for that!).

But see bug #140940 for related layout tests.

&gt; If this is actually a per page thing why not adding the API to the WebView?
&gt; or even as a setting, so that you can share the policy with multiple web
&gt; views.

I think allowing this setting to be changed for each webview would be unnecessary complexity in the API. We only need to expose one global policy that affects all web views. The only reason to expose it as a per-webview setting would be if the application could change the setting for the web view after the load is committed but before loading begins: that way we don&apos;t have API to allow changing insecure content settings per host. But I&apos;m not sure if that&apos;s how WebKit works or not: when the load-event signal is fired in the UI process, is the web process waiting patiently for the browser to handle that signal before it starts loading, or is it already loading things? If it&apos;s already loading things then I don&apos;t think the browser would have any use for a per-webview setting. But if it&apos;s waiting patiently, then that would be a great idea.

I can&apos;t remember for sure what my reason for not using normal settings was. I think it was because I was brand new when I wrote most of this and didn&apos;t know what I was doing, but maybe I had a good reason I forgot. Probably it was that I did not want an important security feature to be hidden as a setting, and at the time I was thinking that we would not want to change the default behavior since it would be an incompatible change. Anyway I will try removing the API from WebKitWebContent and changing it to use settings and then see what breaks.

&gt; Is this still true? or are only images allowed. We should probably say here
&gt; that insecure-content-detected will be called for the allowed as a mode of
&gt; warning.

I think it&apos;s still true. At least, it needs to be still true. :) I think we would break too many sites if we block videos or forms. My tests in bug #140940 will catch a change regarding videos. I&apos;m not sure what we do for forms, that&apos;s bug #142342.
 
&gt; I&apos;m not sure about this, I think it would be easier if the app does this.
&gt; Change the setting/policy, and the reload.

Eh... I&apos;m not sure about this API either. What we really want is a way to whitelist specific hosts.

&gt; I think it would be quite common to call both methods. Maybe we could use a
&gt; single message allowInsecureContent with flags as parameter.

Let&apos;s wait for bug #142469 (yes another bug!) before deciding how to handle this. Those settings have poor names, and I need to be on the same page as Apple on what the semantics of them should be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075541</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-03-09 00:10:07 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; I think this patch could be split in two, one with the cross-platform
&gt; &gt; changes including layout tests (and maybe even API tests as well) and then
&gt; &gt; the GTK+ API one. 
&gt; 
&gt; The cross-platform changes here are (a) new load event
&gt; didBlockInsecureContent and (b) control of the existing WebCore insecure
&gt; content settings from WK2. Neither of that can be tested with layout tests;

why not?

&gt; they need API tests. (Using a setting from a layout test requires a
&gt; completely different code path.) I don&apos;t want to write cross-platform API
&gt; tests since they would not be easy to write (HTTP server required: I want
&gt; libsoup for that!).

Right, that&apos;s why I said *maybe* an API test.

&gt; But see bug #140940 for related layout tests.

So, they are layout tests for this then, I&apos;m confused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075600</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-03-09 07:55:00 -0700</bug_when>
    <thetext>&gt; why not?

Well to test the didBlockInsecureContent event we would need to hook into that event somehow: that requires an API test. Same for exposing the didRunInsecureContent and didDisplayInsecureContent events, which already existed in WebCore but are new to WK2. And we can&apos;t test WK2 things with layout tests anyway, since they need to work for WK1.

&gt; So, they are layout tests for this then, I&apos;m confused.

They are &quot;related&quot; layout tests, to make sure blocking insecure content works properly, but they don&apos;t actually test any of the functionality added in this patch. WebCore already supports mixed content blocking as did WK1. It&apos;s only new functionality for WK2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076954</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-03-13 10:00:28 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I can&apos;t remember for sure what my reason for not using normal settings was.
&gt; I think it was because I was brand new when I wrote most of this and didn&apos;t
&gt; know what I was doing, but maybe I had a good reason I forgot. 

Well I guess I still did not know what I was doing, because up until today I assumed WebKitSettings were applied to the WebKitWebContext, not the WebKitWebView. As they&apos;re per-view settings I think we can use WebKitSettings just fine. That simplifies things considerably.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684469</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-09-01 08:30:24 -0700</bug_when>
    <thetext>This API might have been a good idea five years ago, but it no longer makes sense in 2015.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244520</attachid>
            <date>2015-01-13 09:08:56 -0800</date>
            <delta_ts>2015-03-07 01:25:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140392-20150113110901.patch</filename>
            <type>text/plain</type>
            <size>53773</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4MzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWNjMTRiY2YxYzJjYWE0
NjkyZjVhOTdkY2Y1MTkyNmFlNDI2OTVhMi4uNzY4ZTQyOTg0MTNmYWM4ZGY5YmY5MDZkNDU4OGM5
YjExMmZkMWJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTAxLTEzICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBB
ZGQgQVBJIHRvIGNvbnRyb2wgbWl4ZWQtY29udGVudCBibG9ja2luZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwMzkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaDogQWRkIG5ldyB2aXJ0dWFsIGZ1bmN0aW9uCisgICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaWRCbG9ja0luc2VjdXJlQ29udGVudCB3aXRoIGVtcHR5IGltcGxlbWVudGF0aW9uLgorICAg
ICAgICAqIGxvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1peGVkQ29udGVudENoZWNrZXI6OmNhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQpOiBDYWxsCisg
ICAgICAgIGRpZEJsb2NrSW5zZWN1cmVDb250ZW50IHdoZW4gY29udGVudCB3aWxsIG5vdCBiZSBw
ZXJtaXR0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNaXhlZENvbnRlbnRDaGVja2VyOjpjYW5SdW5J
bnNlY3VyZUNvbnRlbnQpOiBDYWxsCisgICAgICAgIGRpZEJsb2NrSW5zZWN1cmVDb250ZW50IHdo
ZW4gY29udGVudCB3aWxsIG5vdCBiZSBwZXJtaXR0ZWQuCisKIDIwMTUtMDEtMTMgIFNoaXZha3Vt
YXIgSk0gIDxzaGl2YS5qbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBGaXggRGVidWcgQnVpbGQg
RXJyb3IgaW4gV2ViY29yZSBtb2R1bGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGQ3NDNjM2RjODZmYzU4NWJi
ZjQ0YTFiYjA2MTI5ZmFjNDEwY2M1Mi4uNjMzNTJkOTcyMTI5OGQ3NDg5NjRlZGI5ZTQxOTY4ZTdl
MzZiNDhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE1LTAxLTEzICBNaWNoYWVs
IENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQg
QVBJIHRvIGNvbnRyb2wgbWl4ZWQtY29udGVudCBibG9ja2luZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwMzkyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNs
aWVudC5oOgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZEJsb2NrSW5zZWN1cmVDb250
ZW50Rm9yRnJhbWUpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRM
b2FkZXJDbGllbnQuY3BwOiBIYW5kbGUKKyAgICAgICAgZGlkQmxvY2tJbnNlY3VyZUNvbnRlbnRG
b3JGcmFtZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNw
cDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZCk6IFNldCBkZWZhdWx0IGlu
c2VjdXJlIGNvbnRlbnQgcG9saWN5LgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3NldF9p
bnNlY3VyZV9jb250ZW50X3BvbGljeSk6IEFkZGVkLgorICAgICAgICAod2Via2l0X3dlYl9jb250
ZXh0X2dldF9pbnNlY3VyZV9jb250ZW50X3BvbGljeSk6IEFkZGVkLgorICAgICAgICAod2Via2l0
V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KTogU2V0IHBhZ2UgaW5zZWN1cmUgY29udGVu
dAorICAgICAgICBwb2xpY3kgd2hlbiBjcmVhdGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYkNvbnRleHQuaDogQWRkIG5ldyBBUEkuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xh
c3NfaW5pdCk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uIG9mCisgICAgICAgIGluc2VjdXJlLWNvbnRl
bnQtZGV0ZWN0ZWQgc2lnbmFsLgorICAgICAgICAod2Via2l0V2ViVmlld1Jlc2V0SW5zZWN1cmVD
b250ZW50UG9saWN5KTogQWRkZWQuCisgICAgICAgICh3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQp
OiBSZXNldCB0aGUgaW5zZWN1cmUgY29udGVudCBwb2xpY3kgd2hlbiB0aGUKKyAgICAgICAgbG9h
ZCBpcyBjb21wbGV0ZS4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKTogUmVzZXQg
dGhlIGluc2VjdXJlIGNvbnRlbnQgcG9saWN5IHdoZW4gdGhlCisgICAgICAgIGxvYWQgaXMgY29t
cGxldGUuCisgICAgICAgICh3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMpOiBS
ZXNldCB0aGUgaW5zZWN1cmUgY29udGVudAorICAgICAgICBwb2xpY3kgd2hlbiB0aGUgbG9hZCBp
cyBjb21wbGV0ZS4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdTZXRQYWdlSW5zZWN1cmVDb250ZW50
UG9saWN5KTogQWRkZWQuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfcmVsb2FkX3dpdGhfaW5z
ZWN1cmVfY29udGVudCk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuaDogQWRkIG5ldyBBUEkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld1ByaXZhdGUuaDogQWRkCisgICAgICAgIHdlYmtpdFdlYlZpZXdTZXRQYWdlSW5z
ZWN1cmVDb250ZW50UG9saWN5LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Vi
a2l0Mmd0ay1zZWN0aW9ucy50eHQ6IEFkZCBuZXcgQVBJLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEJsb2Nr
SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjphbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCk6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KTogQWRk
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBBZGQgbmV3IGZ1bmN0aW9u
cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOiBBZGQgbmV3
IGZ1bmN0aW9ucy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOiBBZGQgbmV3CisgICAgICAgIHZlcnNpb24gd2l0aCBk
aWRCbG9ja0luc2VjdXJlQ29udGVudEZvckZyYW1lLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNv
bnRlbnRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6ZGlkQmxvY2tJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSk6CisgICAgICAgIEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50Lmg6IEFkZAorICAgICAgICBkaWRCbG9ja0luc2VjdXJlQ29udGVudEZvckZy
YW1lIGFuZCB1cGRhdGUgQyBBUEkgY2xpZW50IHZlcnNpb24uCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRCbG9ja0luc2VjdXJlQ29udGVudCk6IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaDogQWRkCisgICAgICAgIGRpZEJsb2NrSW5zZWN1cmVDb250ZW50LgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
YWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6YWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOiBBZGRlZCBuZXcgZnVuY3Rpb25zLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOiBBZGRlZCBuZXcg
ZnVuY3Rpb25zLgorCiAyMDE1LTAxLTEyICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNs
b3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDTWFrZV0gVW5yZXZpZXdlZCBidWlsZCBmaXgg
YWZ0ZXIgcjE3ODMwOS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggNTQwNmVmMTNmNTZhYmE0MjZjZWJkNDNiNTQyMTc0MTI0ZmJmN2FkNy4uNzRkZTkzYjE0
YmE4NjUwNGY5ZWE4YTcyYmFhYTNmOTIyMGRjYTM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTIyMSw2ICsyMjEsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlP
cmlnaW4qLCBjb25zdCBVUkwmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RY
U1MoY29uc3QgVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpID0gMDsKIAorICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkQmxvY2tJbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25z
dCBVUkwmKSB7IH0KKwogICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgPSAwOwogICAgICAgICB2aXJ0dWFsIFJlc291cmNl
RXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKICAgICAgICAg
dmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250
ZW50Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tl
ci5jcHAKaW5kZXggN2MyZDJlM2FjODk5MmY5MDQyN2EwMDMyZjNkM2MyMzU2ZGNhMzdmNy4uMDQ0
Y2U1YmNjZDFkZjRjMGM5YzNhMGE3NWVhZmRkYzJhMjZiOWU1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcApAQCAtNzAsNiArNzAsOCBAQCBib29s
IE1peGVkQ29udGVudENoZWNrZXI6OmNhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlP
cmlnaW4qIHNlY3VyaXR5T3JpZwogCiAgICAgaWYgKGFsbG93ZWQpCiAgICAgICAgIGNsaWVudCgp
LmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKKyAgICBlbHNlCisgICAgICAgIGNsaWVudCgp
LmRpZEJsb2NrSW5zZWN1cmVDb250ZW50KHNlY3VyaXR5T3JpZ2luLCB1cmwpOwogCiAgICAgcmV0
dXJuIGFsbG93ZWQ7CiB9CkBAIC04NCw2ICs4Niw4IEBAIGJvb2wgTWl4ZWRDb250ZW50Q2hlY2tl
cjo6Y2FuUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwK
IAogICAgIGlmIChhbGxvd2VkKQogICAgICAgICBjbGllbnQoKS5kaWRSdW5JbnNlY3VyZUNvbnRl
bnQoc2VjdXJpdHlPcmlnaW4sIHVybCk7CisgICAgZWxzZQorICAgICAgICBjbGllbnQoKS5kaWRC
bG9ja0luc2VjdXJlQ29udGVudChzZWN1cml0eU9yaWdpbiwgdXJsKTsKIAogICAgIHJldHVybiBh
bGxvd2VkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xp
ZW50LmgKaW5kZXggNmIxN2E0NWFlOGUwNzg4NTNlMDJkOGQwOGY3OGU1OWE5ODBlNWQ5My4uMDhi
ZjY5MzkyNDkxZDZmMjdlNjNhZTEwMDY3NzA3OTc4NTMxZTBlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCkBAIC03NCw2ICs3NCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KFdlYktp
dDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgQVBJOjpPYmplY3QqKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKFdl
YktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgQVBJOjpPYmplY3Qq
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2Vi
S2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBBUEk6Ok9iamVjdCop
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRCbG9ja0luc2VjdXJlQ29udGVudEZvckZyYW1lKFdl
YktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgQVBJOjpPYmplY3Qq
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTRm9yRnJhbWUoV2ViS2l0OjpXZWJQ
YWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBBUEk6Ok9iamVjdCopIHsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGRpZExheW91dChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYkNvcmU6
OkxheW91dE1pbGVzdG9uZXMsIEFQSTo6T2JqZWN0KikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRMb2FkZXJDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9hZGVyQ2xpZW50LmNwcAppbmRleCAy
MDIyYmY0NjZhZmFmOTA3NTExMjE3MGRiZjVjYzVhYmFlZjRjYjNlLi5kYzhlMjZiOThkMzQxZmZj
Yzc3NjQ2MGRiM2UyOGZmNmJlMWM4OWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdExvYWRlckNsaWVudC5jcHAKQEAgLTEwMSw2ICsxMDEs
MTEgQEAgcHJpdmF0ZToKICAgICAgICAgd2Via2l0V2ViVmlld0luc2VjdXJlQ29udGVudERldGVj
dGVkKG1fd2ViVmlldywgV0VCS0lUX0lOU0VDVVJFX0NPTlRFTlRfUlVOKTsKICAgICB9CiAKKyAg
ICB2b2lkIGRpZEJsb2NrSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2Vi
RnJhbWVQcm94eSosIEFQSTo6T2JqZWN0KiAvKiB1c2VyRGF0YSAqLykgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIHdlYmtpdFdlYlZpZXdJbnNlY3VyZUNvbnRlbnREZXRlY3RlZChtX3dlYlZpZXcs
IFdFQktJVF9JTlNFQ1VSRV9DT05URU5UX0JMT0NLRUQpOworICAgIH0KKwogICAgIHZvaWQgZGlk
Q2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYlBhZ2VQcm94eSosIFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0qIGFkZGVkSXRlbSwgVmVjdG9yPFJlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4gcmVt
b3ZlZEl0ZW1zKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgd2Via2l0QmFja0ZvcndhcmRMaXN0
Q2hhbmdlZCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tfZm9yd2FyZF9saXN0KG1fd2ViVmlldyks
IGFkZGVkSXRlbSwgcmVtb3ZlZEl0ZW1zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggMGNhMmQ2YzRjMzJlNDAz
NTBlZTZiYzIyZDE3NjcyNmFmMmRkMzVkMy4uYTMyMTQxOGMwNThiZDgxZWVjOTY0NGZlZTllYjM2
OTBmZjdmN2U3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTE3Niw2ICsxNzYsNyBAQCBzdHJ1Y3QgX1dlYktp
dFdlYkNvbnRleHRQcml2YXRlIHsKICNlbmRpZgogICAgIENTdHJpbmcgZmF2aWNvbkRhdGFiYXNl
RGlyZWN0b3J5OwogICAgIFdlYktpdFRMU0Vycm9yc1BvbGljeSB0bHNFcnJvcnNQb2xpY3k7Cisg
ICAgV2ViS2l0SW5zZWN1cmVDb250ZW50UG9saWN5IGluc2VjdXJlQ29udGVudFBvbGljeTsKIAog
ICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYktpdFdlYlZpZXcqPiB3ZWJWaWV3czsKIApAQCAtMjcw
LDYgKzI3MSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2Jq
ZWN0KiBvYmplY3QpCiAgICAgcHJpdi0+cmVxdWVzdE1hbmFnZXIgPSBwcml2LT5jb250ZXh0LT5z
dXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPigpOwogICAgIHBy
aXYtPmNvbnRleHQtPnNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyKTsK
IAorICAgIHByaXYtPmluc2VjdXJlQ29udGVudFBvbGljeSA9IFdFQktJVF9JTlNFQ1VSRV9DT05U
RU5UX1BPTElDWV9BTExPV19TT01FOwogICAgIHByaXYtPnRsc0Vycm9yc1BvbGljeSA9IFdFQktJ
VF9UTFNfRVJST1JTX1BPTElDWV9GQUlMOwogICAgIHByaXYtPmNvbnRleHQtPnNldElnbm9yZVRM
U0Vycm9ycyhmYWxzZSk7CiAKQEAgLTkzMiw2ICs5MzQsNDYgQEAgV2ViS2l0VExTRXJyb3JzUG9s
aWN5IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdGxzX2Vycm9yc19wb2xpY3koV2ViS2l0V2ViQ29u
dGV4dCoKIH0KIAogLyoqCisgKiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2luc2VjdXJlX2NvbnRl
bnRfcG9saWN5OgorICogQGNvbnRleHQ6IGEgI1dlYktpdFdlYkNvbnRlbnQKKyAqIEBwb2xpY3k6
IGEgI1dlYktpdEluc2VjdXJlQ29udGVudFBvbGljeQorICoKKyAqIFNldCB0aGUgaW5zZWN1cmUg
Y29udGVudCBwb2xpY3kgb2YgQGNvbnRleHQgYXMgQHBvbGljeSBmb3IKKyAqIGFsbCBmdXR1cmUg
cGFnZSBsb2Fkcy4KKyAqCisgKiBTaW5jZTogMi44CisgKi8KK3ZvaWQgd2Via2l0X3dlYl9jb250
ZXh0X3NldF9pbnNlY3VyZV9jb250ZW50X3BvbGljeShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0
LCBXZWJLaXRJbnNlY3VyZUNvbnRlbnRQb2xpY3kgcG9saWN5KQoreworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKKworICAgIGlmIChjb250ZXh0
LT5wcml2LT5pbnNlY3VyZUNvbnRlbnRQb2xpY3kgPT0gcG9saWN5KQorICAgICAgICByZXR1cm47
CisKKyAgICBjb250ZXh0LT5wcml2LT5pbnNlY3VyZUNvbnRlbnRQb2xpY3kgPSBwb2xpY3k7CisK
KyAgICBmb3IgKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgOiBjb250ZXh0LT5wcml2LT53ZWJWaWV3
cy52YWx1ZXMoKSkKKyAgICAgICAgd2Via2l0V2ViVmlld1NldFBhZ2VJbnNlY3VyZUNvbnRlbnRQ
b2xpY3kod2ViVmlldywgcG9saWN5KTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX2NvbnRleHRf
Z2V0X2luc2VjdXJlX2NvbnRlbnRfcG9saWN5OgorICogQGNvbnRleHQ6IGEgI1dlYktpdFdlYkNv
bnRleHQKKyAqCisgKiBHZXQgdGhlIGluc2VjdXJlIGNvbnRlbnQgcG9saWN5IG9mIEBjb250ZXh0
CisgKgorICogUmV0dXJuczogYSAjV2ViS2l0SW5zZWN1cmVDb250ZW50UG9saWN5CisgKgorICog
U2luY2U6IDIuOAorICovCitXZWJLaXRJbnNlY3VyZUNvbnRlbnRQb2xpY3kgd2Via2l0X3dlYl9j
b250ZXh0X2dldF9pbnNlY3VyZV9jb250ZW50X3BvbGljeShXZWJLaXRXZWJDb250ZXh0KiBjb250
ZXh0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChj
b250ZXh0KSwgV0VCS0lUX0lOU0VDVVJFX0NPTlRFTlRfUE9MSUNZX0FMTE9XX0FMTCk7CisKKyAg
ICByZXR1cm4gY29udGV4dC0+cHJpdi0+aW5zZWN1cmVDb250ZW50UG9saWN5OworfQorCisvKioK
ICAqIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfd2ViX2V4dGVuc2lvbnNfZGlyZWN0b3J5OgogICog
QGNvbnRleHQ6IGEgI1dlYktpdFdlYkNvbnRleHQKICAqIEBkaXJlY3Rvcnk6IHRoZSBkaXJlY3Rv
cnkgdG8gYWRkCkBAIC0xMTcwLDYgKzEyMTIsOCBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVh
dGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaQog
ICAgIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KiB1c2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eSA9IHVzZXJDb250ZW50TWFuYWdlciA/IHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlcikgOiBudWxscHRyOwog
ICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSh3ZWJWaWV3QmFzZSwgY29udGV4dC0+
cHJpdi0+Y29udGV4dC5nZXQoKSwgcHJlZmVyZW5jZXMsIG51bGxwdHIsIHVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LCByZWxhdGVkUGFnZSk7CiAKKyAgICB3ZWJraXRXZWJWaWV3U2V0UGFnZUlu
c2VjdXJlQ29udGVudFBvbGljeShXRUJLSVRfV0VCX1ZJRVcod2ViVmlldyksIGNvbnRleHQtPnBy
aXYtPmluc2VjdXJlQ29udGVudFBvbGljeSk7CisKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3
ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2Uod2ViVmlld0Jhc2UpOwogICAgIGNvbnRleHQtPnByaXYt
PndlYlZpZXdzLnNldChwYWdlLT5wYWdlSUQoKSwgd2ViVmlldyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmgKaW5kZXggOGM0
MjhjMjlmNGE1MzlhZTk2ZWI3NTFkNWM0ZDI2N2QwZWExODYxZS4uNTZlNGY1MWExYTY2NDBjMjg0
ODIwNjFiZWZlNTRlMjJhNjNhNjgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuaApAQCAtOTUsNyArOTUsOCBAQCB0eXBlZGVm
IGVudW0gewogICogICBmaW5pc2ggdGhlIGxvYWQuIEluIGNhc2UgdGhlIHNpZ25hbCBpcyBub3Qg
aGFuZGxlZCwKICAqICAgI1dlYktpdFdlYlZpZXc6OmxvYWQtZmFpbGVkIGlzIGVtaXR0ZWQgYmVm
b3JlIHRoZSBsb2FkIGZpbmlzaGVzLgogICoKLSAqIEVudW0gdmFsdWVzIHVzZWQgdG8gZGVub3Rl
IHRoZSBUTFMgZXJyb3JzIHBvbGljeS4KKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gZGVub3RlIHRo
ZSBUTFMgZXJyb3JzIHBvbGljeS4gU2VlIGFsc28KKyAqICNXZWJLaXRJbnNlY3VyZUNvbnRlbnRQ
b2xpY3kgdG8gcHJldmVudCBleGVjdXRpb24gb2YgaW5zZWN1cmUgY29udGVudC4KICAqLwogdHlw
ZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfSUdOT1JFLApAQCAtMTAz
LDYgKzEwNCwyOCBAQCB0eXBlZGVmIGVudW0gewogfSBXZWJLaXRUTFNFcnJvcnNQb2xpY3k7CiAK
IC8qKgorICogV2ViS2l0SW5zZWN1cmVDb250ZW50UG9saWN5OgorICogQFdFQktJVF9JTlNFQ1VS
RV9DT05URU5UX1BPTElDWV9BTExPV19BTEw6IEFsbG93IGFsbCBtaXhlZCBjb250ZW50LgorICog
QFdFQktJVF9JTlNFQ1VSRV9DT05URU5UX1BPTElDWV9BTExPV19TT01FOiBCbG9jayBzb21lIG1p
eGVkIGNvbnRlbnQuIFNvbWUKKyAqICAgbWl4ZWQgY29udGVudCB3aWxsIGJlIHBlcm1pdHRlZCB0
byBwcmVzZXJ2ZSBjb21wYXRpYmlsaXR5IHdpdGggd2ViIHNpdGVzLgorICogICBGb3IgZXhhbXBs
ZSwgaW5zZWN1cmUgaW1hZ2VzLCBhdWRpbywgdmlkZW8sIGFuZCBmb3JtcyBhcmUgY3VycmVudGx5
CisgKiAgIHBlcm1pdHRlZC4gVGhlIHNldCBvZiBwZXJtaXR0ZWQgaW5zZWN1cmUgY29udGVudCBp
cyBzdWJqZWN0IHRvIGNoYW5nZS4KKyAqIEBXRUJLSVRfSU5TRUNVUkVfQ09OVEVOVF9QT0xJQ1lf
QUxMT1dfTk9ORTogQmxvY2sgYWxsIGluc2VjdXJlIGNvbnRlbnQgaW4KKyAqICAgc2VjdXJlIGNv
bnRleHRzLgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBwb2xpY3kg
Zm9yIGluc2VjdXJlIGNvbnRlbnQgaW4gc2VjdXJlCisgKiBjb250ZXh0cyAobWl4ZWQgY29udGVu
dCkuIFRoZSBtb3N0IGNvbW1vbiBleGFtcGxlIG9mIHN1Y2ggY29udGVudCB3b3VsZCBiZSBhCisg
KiBwYWdlIHdpdGggYW4gSFRUUFMgVVJMIHRoYXQgYXR0ZW1wdHMgdG8gbG9hZCBjb250ZW50IHZp
YSBhbiBIVFRQIFVSTC4KKyAqCisgKiBTaW5jZTogMi44CisgKi8KK3R5cGVkZWYgZW51bSB7Cisg
ICAgV0VCS0lUX0lOU0VDVVJFX0NPTlRFTlRfUE9MSUNZX0FMTE9XX0FMTCwKKyAgICBXRUJLSVRf
SU5TRUNVUkVfQ09OVEVOVF9QT0xJQ1lfQUxMT1dfU09NRSwKKyAgICBXRUJLSVRfSU5TRUNVUkVf
Q09OVEVOVF9QT0xJQ1lfQUxMT1dfTk9ORQorfSBXZWJLaXRJbnNlY3VyZUNvbnRlbnRQb2xpY3k7
CisKKy8qKgogICogV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrOgogICogQHJlcXVlc3Q6
IHRoZSAjV2ViS2l0VVJJU2NoZW1lUmVxdWVzdAogICogQHVzZXJfZGF0YTogdXNlciBkYXRhIHBh
c3NlZCB0byB0aGUgY2FsbGJhY2sKQEAgLTIyMiw2ICsyNDUsMTMgQEAgV0VCS0lUX0FQSSBXZWJL
aXRUTFNFcnJvcnNQb2xpY3kKIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdGxzX2Vycm9yc19wb2xp
Y3kgICAgICAgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQpOwog
CiBXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfY29udGV4dF9zZXRfaW5zZWN1cmVfY29udGVu
dF9wb2xpY3kgICAgICAoV2ViS2l0V2ViQ29udGV4dCAgICAgICAgICAgICAgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dEluc2VjdXJlQ29udGVudFBvbGljeSAgICBwb2xpY3kpOworCitXRUJLSVRfQVBJIFdlYktpdElu
c2VjdXJlQ29udGVudFBvbGljeQord2Via2l0X3dlYl9jb250ZXh0X2dldF9pbnNlY3VyZV9jb250
ZW50X3BvbGljeSAgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCk7
CisKK1dFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl9jb250ZXh0X3NldF93ZWJfZXh0ZW5zaW9u
c19kaXJlY3RvcnkgICAgIChXZWJLaXRXZWJDb250ZXh0ICAgICAgICAgICAgICAqY29udGV4dCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2NoYXIgICAgICAgICAgICAgICAgICAgKmRpcmVjdG9yeSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggYzhiNjI2
NmU3ODgzNzQzYmUyYWMwNjdhNDM3ZWI5ZjM2MWM1ODcyYy4uZGVmYmFjMDYxYTYxZmVmNTMwYTQx
N2NmZTAzYjkyNDg5Y2RkNzQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTE1OTcsMTIgKzE1OTcsMTQgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJW
aWV3Q2xhc3MpCiAgICAgICoKICAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gaW5z
ZWN1cmUgY29udGVudCBoYXMgYmVlbiBkZXRlY3RlZAogICAgICAqIGluIGEgcGFnZSBsb2FkZWQg
dGhyb3VnaCBhIHNlY3VyZSBjb25uZWN0aW9uLiBUaGlzIHR5cGljYWxseQotICAgICAqIG1lYW5z
IHRoYXQgYSBleHRlcm5hbCByZXNvdXJjZSBmcm9tIGFuIHVuc3RydXN0ZWQgc291cmNlIGhhcwor
ICAgICAqIG1lYW5zIHRoYXQgYW4gZXh0ZXJuYWwgcmVzb3VyY2UgZnJvbSBhbiB1bnRydXN0ZWQg
c291cmNlIGhhcwogICAgICAqIGJlZW4gcnVuIG9yIGRpc3BsYXllZCwgcmVzdWx0aW5nIGluIGEg
bWl4IG9mIEhUVFBTIGFuZAogICAgICAqIG5vbi1IVFRQUyBjb250ZW50LgogICAgICAqCiAgICAg
ICogWW91IGNhbiBjaGVjayB0aGUgQGV2ZW50IHBhcmFtZXRlciB0byBrbm93IGV4YWN0bHkgd2hp
Y2gga2luZAogICAgICAqIG9mIGV2ZW50IGhhcyBiZWVuIGRldGVjdGVkIChzZWUgI1dlYktpdElu
c2VjdXJlQ29udGVudEV2ZW50KS4KKyAgICAgKiBJZiBjb250ZW50IHdhcyBibG9ja2VkLCB3ZWJr
aXRfd2ViX3ZpZXdfcmVsb2FkX3dpdGhfaW5zZWN1cmVfY29udGVudCgpCisgICAgICogbWF5IGJl
IHVzZWQgdG8gcmVsb2FkIHdpdGggdGhlIGNvbnRlbnQgdW5ibG9ja2VkLgogICAgICAqLwogICAg
IHNpZ25hbHNbSU5TRUNVUkVfQ09OVEVOVF9ERVRFQ1RFRF0gPQogICAgICAgICBnX3NpZ25hbF9u
ZXcoImluc2VjdXJlLWNvbnRlbnQtZGV0ZWN0ZWQiLApAQCAtMTcyNiw2ICsxNzI4LDEyIEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDYW5jZWxBdXRoZW50aWNhdGlvblJlcXVlc3QoV2ViS2l0
V2ViVmlldyogd2ViVmlldykKICAgICB3ZWJWaWV3LT5wcml2LT5hdXRoZW50aWNhdGlvblJlcXVl
c3QuY2xlYXIoKTsKIH0KIAorc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1Jlc2V0SW5zZWN1cmVD
b250ZW50UG9saWN5KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgV2ViS2l0SW5zZWN1
cmVDb250ZW50UG9saWN5IHBvbGljeSA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfaW5zZWN1cmVf
Y29udGVudF9wb2xpY3kod2ViVmlldy0+cHJpdi0+Y29udGV4dCk7CisgICAgd2Via2l0V2ViVmll
d1NldFBhZ2VJbnNlY3VyZUNvbnRlbnRQb2xpY3kod2ViVmlldywgcG9saWN5KTsKK30KKwogc3Rh
dGljIHZvaWQgd2Via2l0V2ViVmlld0VtaXRMb2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50LCBib29sIGlzRGVsYXllZEV2ZW50KQogewog
ICAgIGlmIChsb2FkRXZlbnQgPT0gV0VCS0lUX0xPQURfU1RBUlRFRCkgewpAQCAtMTc4Nyw2ICsx
Nzk1LDggQEAgdm9pZCB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudCkKICAgICAgICAgICAgIC8vIGxvYWQtY2hh
bmdlZCBzaWduYWwgdW50aWwgbWFpbiByZXNvdXJjZSBvYmplY3QgaGFzIGJlZW4gY3JlYXRlZC4K
ICAgICAgICAgICAgIHByaXYtPndhaXRpbmdGb3JNYWluUmVzb3VyY2UgPSB0cnVlOwogICAgICAg
ICB9CisgICAgfSBlbHNlIGlmIChsb2FkRXZlbnQgPT0gV0VCS0lUX0xPQURfRklOSVNIRUQpIHsK
KyAgICAgICAgd2Via2l0V2ViVmlld1Jlc2V0SW5zZWN1cmVDb250ZW50UG9saWN5KHdlYlZpZXcp
OwogICAgIH0KIAogICAgIGlmIChwcml2LT53YWl0aW5nRm9yTWFpblJlc291cmNlKQpAQCAtMTc5
OCw2ICsxODA4LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3TG9hZENoYW5nZWQoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudCkKIHZvaWQgd2Via2l0V2ViVmll
d0xvYWRGYWlsZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRF
dmVudCwgY29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yICplcnJvcikKIHsKICAgICB3ZWJr
aXRXZWJWaWV3Q2FuY2VsQXV0aGVudGljYXRpb25SZXF1ZXN0KHdlYlZpZXcpOworICAgIHdlYmtp
dFdlYlZpZXdSZXNldEluc2VjdXJlQ29udGVudFBvbGljeSh3ZWJWaWV3KTsKIAogICAgIGdib29s
ZWFuIHJldHVyblZhbHVlOwogICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tMT0FE
X0ZBSUxFRF0sIDAsIGxvYWRFdmVudCwgZmFpbGluZ1VSSSwgZXJyb3IsICZyZXR1cm5WYWx1ZSk7
CkBAIC0xODA3LDYgKzE4MTgsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQsCiB2b2lkIHdlYmtp
dFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBj
b25zdCBjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IqIGVycm9yLCBHVGxzQ2VydGlmaWNhdGVGbGFn
cyB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUpCiB7CiAgICAgd2Via2l0
V2ViVmlld0NhbmNlbEF1dGhlbnRpY2F0aW9uUmVxdWVzdCh3ZWJWaWV3KTsKKyAgICB3ZWJraXRX
ZWJWaWV3UmVzZXRJbnNlY3VyZUNvbnRlbnRQb2xpY3kod2ViVmlldyk7CiAKICAgICBXZWJLaXRU
TFNFcnJvcnNQb2xpY3kgdGxzRXJyb3JzUG9saWN5ID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF90
bHNfZXJyb3JzX3BvbGljeSh3ZWJWaWV3LT5wcml2LT5jb250ZXh0KTsKICAgICBpZiAodGxzRXJy
b3JzUG9saWN5ID09IFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMKSB7CkBAIC0yMTExLDYg
KzIxMjMsMjggQEAgdm9pZCB3ZWJraXRXZWJWaWV3RW1pdENsb3NlTm90aWZpY2F0aW9uKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdE5vdGlmaWNhdGkKICAgICBnX3NpZ25hbF9lbWl0KHdl
YlZpZXcsIHNpZ25hbHNbQ0xPU0VfTk9USUZJQ0FUSU9OXSwgMCwgd2ViTm90aWZpY2F0aW9uLCAm
aGFuZGxlZCk7CiB9CiAKK3ZvaWQgd2Via2l0V2ViVmlld1NldFBhZ2VJbnNlY3VyZUNvbnRlbnRQ
b2xpY3koV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0SW5zZWN1cmVDb250ZW50UG9saWN5
IHBvbGljeSkKK3sKKyAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBnZXRQYWdlKHdlYlZpZXcpOwor
CisgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNlIFdFQktJVF9JTlNFQ1VSRV9DT05URU5U
X1BPTElDWV9BTExPV19BTEw6CisgICAgICAgIHBhZ2UtPmFsbG93RGlzcGxheU9mSW5zZWN1cmVD
b250ZW50KHRydWUpOworICAgICAgICBwYWdlLT5hbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVu
dCh0cnVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRfSU5TRUNVUkVfQ09OVEVO
VF9QT0xJQ1lfQUxMT1dfU09NRToKKyAgICAgICAgcGFnZS0+YWxsb3dEaXNwbGF5T2ZJbnNlY3Vy
ZUNvbnRlbnQodHJ1ZSk7CisgICAgICAgIHBhZ2UtPmFsbG93UnVubmluZ09mSW5zZWN1cmVDb250
ZW50KGZhbHNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRfSU5TRUNVUkVfQ09O
VEVOVF9QT0xJQ1lfQUxMT1dfTk9ORToKKyAgICAgICAgcGFnZS0+YWxsb3dEaXNwbGF5T2ZJbnNl
Y3VyZUNvbnRlbnQoZmFsc2UpOworICAgICAgICBwYWdlLT5hbGxvd1J1bm5pbmdPZkluc2VjdXJl
Q29udGVudChmYWxzZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwogLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdf
bmV3OgogICoKQEAgLTI0NDYsNiArMjQ4MCwyMyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWxv
YWRfYnlwYXNzX2NhY2hlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB9CiAKIC8qKgorICogd2Vi
a2l0X3dlYl92aWV3X3JlbG9hZF93aXRoX2luc2VjdXJlX2NvbnRlbnQ6CisgKiBAd2ViX3ZpZXc6
IGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBSZWxvYWRzIHRoZSBjdXJyZW50IGNvbnRlbnRzIG9m
IEB3ZWJfdmlldyB3aXRoIG1peGVkIGNvbnRlbnQgYmxvY2tpbmcKKyAqIGRpc2FibGVkLgorICoK
KyAqIFNpbmNlOiAyLjgKKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVsb2FkX3dpdGhfaW5z
ZWN1cmVfY29udGVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKworICAgIHdlYmtpdFdlYlZpZXdT
ZXRQYWdlSW5zZWN1cmVDb250ZW50UG9saWN5KHdlYlZpZXcsIFdFQktJVF9JTlNFQ1VSRV9DT05U
RU5UX1BPTElDWV9BTExPV19BTEwpOworICAgIHdlYmtpdF93ZWJfdmlld19yZWxvYWQod2ViVmll
dyk7Cit9CisKKy8qKgogICogd2Via2l0X3dlYl92aWV3X3N0b3BfbG9hZGluZzoKICAqIEB3ZWJf
dmlldzogYSAjV2ViS2l0V2ViVmlldwogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCBkYTNmMTY1ZmRiNmYwMzQ3NjAxNThmN2I3
Njg3ZjUwYTUwM2M0ZjgwLi42MDE0ODA4OTA5MzI2MzYxMTgzOWUxNmQ4NGM3N2MxYjg2MjE5NGQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5oCkBAIC0xNDIsMTMgKzE0MiwxNiBAQCB0eXBlZGVmIGVudW0gewogICogQFdFQktJVF9JTlNF
Q1VSRV9DT05URU5UX0RJU1BMQVlFRDogSW5zZWN1cmUgY29udGVudCBoYXMgYmVlbgogICogZGV0
ZWN0ZWQgYnkgdHJ5aW5nIHRvIGRpc3BsYXkgYW55IGtpbmQgb2YgcmVzb3VyY2UgKGUuZy4gYW4g
aW1hZ2UpCiAgKiBmcm9tIGFuIHVudHJ1c3RlZCBzb3VyY2UuCisgKiBAV0VCS0lUX0lOU0VDVVJF
X0NPTlRFTlRfQkxPQ0tFRDogSW5zZWN1cmUgY29udGVudCBoYXMgYmVlbiBkZXRlY3RlZAorICog
YW5kIGJsb2NrZWQgYXMgcGVyIHRoZSAjV2ViS2l0SW5zZWN1cmVDb250ZW50UG9saWN5LiBTaW5j
ZTogMi44CiAgKgogICogRW51bSB2YWx1ZXMgdXNlZCB0byBkZW5vdGUgdGhlIGRpZmZlcmVudCBl
dmVudHMgd2hpY2ggY2FuIHRyaWdnZXIKICAqIHRoZSBkZXRlY3Rpb24gb2YgaW5zZWN1cmUgY29u
dGVudC4KICAqLwogdHlwZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfSU5TRUNVUkVfQ09OVEVOVF9S
VU4sCi0gICAgV0VCS0lUX0lOU0VDVVJFX0NPTlRFTlRfRElTUExBWUVECisgICAgV0VCS0lUX0lO
U0VDVVJFX0NPTlRFTlRfRElTUExBWUVELAorICAgIFdFQktJVF9JTlNFQ1VSRV9DT05URU5UX0JM
T0NLRUQKIH0gV2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQ7CiAKIC8qKgpAQCAtMzIwLDYgKzMy
Myw5IEBAIHdlYmtpdF93ZWJfdmlld19yZWxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKFdlYktpdFdlYlZpZXcKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3JlbG9h
ZF9ieXBhc3NfY2FjaGUgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAqd2ViX3ZpZXcpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19yZWxvYWRf
d2l0aF9pbnNlY3VyZV9jb250ZW50ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
KndlYl92aWV3KTsKKwogV0VCS0lUX0FQSSBnZG91YmxlCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Vz
dGltYXRlZF9sb2FkX3Byb2dyZXNzICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICp3ZWJfdmlldyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDAzODE0ZWFhOGQwNGUzZmM4YjdlYWE5
ZThhNjYzOTU1MTZjNjlhYjguLjQ4ZjIxMjZiMjdlNjA0N2U0ZGRkNTViM2FiMzc4NTFiYzMzMmVi
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld1ByaXZhdGUuaApAQCAtNTksNiArNTksNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdI
YW5kbGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpBdXRo
ZW50aQogdm9pZCB3ZWJraXRXZWJWaWV3SW5zZWN1cmVDb250ZW50RGV0ZWN0ZWQoV2ViS2l0V2Vi
VmlldyosIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50KTsKIGJvb2wgd2Via2l0V2ViVmlld0Vt
aXRTaG93Tm90aWZpY2F0aW9uKFdlYktpdFdlYlZpZXcqLCBXZWJLaXROb3RpZmljYXRpb24qKTsK
IHZvaWQgd2Via2l0V2ViVmlld0VtaXRDbG9zZU5vdGlmaWNhdGlvbihXZWJLaXRXZWJWaWV3Kiwg
V2ViS2l0Tm90aWZpY2F0aW9uKik7Cit2b2lkIHdlYmtpdFdlYlZpZXdTZXRQYWdlSW5zZWN1cmVD
b250ZW50UG9saWN5KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRJbnNlY3VyZUNvbnRlbnRQb2xpY3kp
Owogdm9pZCB3ZWJraXRXZWJWaWV3V2ViUHJvY2Vzc0NyYXNoZWQoV2ViS2l0V2ViVmlldyopOwog
dm9pZCB3ZWJraXRXZWJWaWV3SXNQbGF5aW5nQXVkaW9DaGFuZ2VkKFdlYktpdFdlYlZpZXcqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggZjM2NmQwYTAyODE0MzY5NTllY2Y2OGRi
MThkMDIzYjY2OTc4YjJhNy4uZDU2MmNmYmI1NjhhODQwYzYxYzNjNzE0OWEyNTFkNzU1OTBlYmFh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CkBAIC0yNyw2ICsyNyw3IEBAIFdlYktpdFdl
YkNvbnRleHQKIFdlYktpdENhY2hlTW9kZWwKIFdlYktpdFByb2Nlc3NNb2RlbAogV2ViS2l0VExT
RXJyb3JzUG9saWN5CitXZWJLaXRJbnNlY3VyZUNvbnRlbnRQb2xpY3kKIHdlYmtpdF93ZWJfY29u
dGV4dF9nZXRfZGVmYXVsdAogd2Via2l0X3dlYl9jb250ZXh0X25ldwogd2Via2l0X3dlYl9jb250
ZXh0X2dldF9jYWNoZV9tb2RlbApAQCAtNDgsNiArNDksOCBAQCB3ZWJraXRfd2ViX2NvbnRleHRf
c2V0X3NwZWxsX2NoZWNraW5nX2xhbmd1YWdlcwogd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcmVm
ZXJyZWRfbGFuZ3VhZ2VzCiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Rsc19lcnJvcnNfcG9saWN5
CiB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3Rsc19lcnJvcnNfcG9saWN5Cit3ZWJraXRfd2ViX2Nv
bnRleHRfc2V0X2luc2VjdXJlX2NvbnRlbnRfcG9saWN5Cit3ZWJraXRfd2ViX2NvbnRleHRfZ2V0
X2luc2VjdXJlX2NvbnRlbnRfcG9saWN5CiB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3dlYl9leHRl
bnNpb25zX2RpcmVjdG9yeQogd2Via2l0X3dlYl9jb250ZXh0X3NldF93ZWJfZXh0ZW5zaW9uc19p
bml0aWFsaXphdGlvbl91c2VyX2RhdGEKIHdlYmtpdF93ZWJfY29udGV4dF9wcmVmZXRjaF9kbnMK
QEAgLTE2NSw2ICsxNjgsNyBAQCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3RpdGxlCiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3BhZ2VfaWQKIHdlYmtpdF93ZWJfdmlld19yZWxvYWQKIHdlYmtpdF93ZWJfdmll
d19yZWxvYWRfYnlwYXNzX2NhY2hlCit3ZWJraXRfd2ViX3ZpZXdfcmVsb2FkX3dpdGhfaW5zZWN1
cmVfY29udGVudAogd2Via2l0X3dlYl92aWV3X3N0b3BfbG9hZGluZwogd2Via2l0X3dlYl92aWV3
X2lzX2xvYWRpbmcKIHdlYmtpdF93ZWJfdmlld19pc19wbGF5aW5nX2F1ZGlvCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDY0OGUzMTllMDAxMDY0ZTBjNDdj
NGFiYzZiN2ZkNTVlZGQ0YTdhYWEuLjY5NDNjMGIxOTBlZjBkODJjYjBmNDA5MmQzYjRjNTFhN2I1
YjhmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0y
ODUyLDYgKzI4NTIsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJ1bkluc2VjdXJlQ29udGVu
dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFVzZXJEYXQKICAgICBtX2xvYWRlckNs
aWVudC0+ZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodGhpcywgZnJhbWUsIG1fcHJvY2Vz
cy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwog
fQogCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQmxvY2tJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit7CisgICAgV2ViRnJh
bWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOworICAgIE1FU1NB
R0VfQ0hFQ0soZnJhbWUpOworCisgICAgbV9sb2FkZXJDbGllbnQtPmRpZEJsb2NrSW5zZWN1cmVD
b250ZW50Rm9yRnJhbWUodGhpcywgZnJhbWUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1Rv
T2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRGV0ZWN0WFNTRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJG
cmFtZShmcmFtZUlEKTsKQEAgLTUzMzksNCArNTM0NywyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wgc2hvdWxkRGlzcGF0Y2hG
YWtlTQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkRGlz
cGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKHNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50
cyksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmFsbG93RGlzcGxheU9mSW5z
ZWN1cmVDb250ZW50KGJvb2wgYWxsb3dlZCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFsbG93
RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KGFsbG93ZWQpLCBtX3BhZ2VJRCk7Cit9CisKK3ZvaWQg
V2ViUGFnZVByb3h5OjphbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChib29sIGFsbG93ZWQp
Cit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChh
bGxvd2VkKSwgbV9wYWdlSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBkZGE3MDcxZWEwMzFjYzQ0NTFkMTA1
ODk3MTk2NDkxYTAzMDYwOGRlLi5lZjhmNWU4MGRiNzI1YzNjODU2Zjk1ZTcyZDRiN2I4OGI4OTJk
NTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC05NjUsNiAr
OTY1LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1v
dmVFdmVudHMoYm9vbCk7CiAKKyAgICB2b2lkIGFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50
KGJvb2wgYWxsb3cpOworICAgIHZvaWQgYWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoYm9v
bCBhbGxvdyk7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQ
cm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9u
Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTEwMTcsNiArMTAyMCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZv
aWQgZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
VXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZEJsb2NrSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZERldGVjdFhTU0Zv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBmcmFt
ZURpZEJlY29tZUZyYW1lU2V0KHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wpOwogICAgIHZvaWQgZGlk
U3RhcnRQcm9ncmVzcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KaW5kZXggYmY5ZGRhZTZhZTBiYjY5ZmI3NWM5OTJkNTNlODMxM2Y3
MjA0Nzk5Mi4uZGVmZTBlMzY1YzYxNWM5MzQ4ZmUyMWJkZjliZDllMDYwZjc2YWZmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0xNDAsNiArMTQwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRSZWNl
aXZlVGl0bGVGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgdGl0bGUsIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkUnVu
SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkKKyAgICBEaWRCbG9ja0luc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRGV0ZWN0WFNTRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBE
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCB0eXBlLCBTdHJpbmcgdXJsLCBXZWJLaXQ6OlVzZXJE
YXRhIHVzZXJEYXRhKQogICAgIERpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRp
b25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCmlu
ZGV4IDVjNTliZTJlZjY1YzMwNTM1ZWQyMWJkOWE0MTU3YWI5NDM1ZWEwOGMuLmZlNTA5Y2U3OTY5
YzdhNGIzNjQ5NTMxM2UxN2Y0MzczZjFkNzM4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtNDQsNiArNDQsNyBAQCB0eXBlZGVmIHZvaWQg
KCpXS0J1bmRsZVBhZ2VEaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHlDYWxsYmFjaykoV0tCdW5k
bGVQYWdlUmVmCiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWREaXNwbGF5SW5zZWN1cmVD
b250ZW50Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJh
bWVSZWYgZnJhbWUsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
OwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJh
bWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUs
IFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2
b2lkICgqV0tCdW5kbGVQYWdlRGlkRGV0ZWN0WFNTRm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiogdXNlckRhdGEs
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlk
QmxvY2tJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmICp1c2VyRGF0YSwgY29uc3Qgdm9p
ZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRGaXJzdExheW91
dEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVm
IGZyYW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5
cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZv
ckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVk
ZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZExheW91dEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxl
UGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKQEAgLTQ2NSw3ICs0NjYsNjggQEAgdHlwZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50VjggewogICAgIFdLQnVuZGxlUGFnZVVzZXJBZ2VudEZvclVSTENhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJBZ2VudEZvclVSTDsKIH0gV0tC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50Vjg7CiAKLWVudW0geyBrV0tCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50Q3VycmVudFZlcnNpb24gV0tfRU5VTV9ERVBSRUNBVEVEKCJVc2UgYW4gZXhwbGljaXQgdmVy
c2lvbiBudW1iZXIgaW5zdGVhZCIpID0gOCB9OwordHlwZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50VjkgeworICAgIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2UgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U7CisKKyAgICAvLyBWZXJz
aW9uIDAuCisgICAgV0tCdW5kbGVQYWdlRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bExvYWRGb3JGcmFtZUNhbGxiYWNrICBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWRGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
V2l0aEVycm9yRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICBkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkV2l0aEVycm9yRm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkQ29tbWl0TG9hZEZvckZy
YW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ29tbWl0TG9hZEZv
ckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
OworICAgIFdLQnVuZGxlUGFnZURpZEZpbmlzaExvYWRGb3JGcmFtZUNhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKKyAgICBXS0J1bmRs
ZVBhZ2VEaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURp
ZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAg
IGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRS
ZWNlaXZlVGl0bGVGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWRSZWNlaXZlVGl0bGVGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWRGaXJzdExheW91dEZv
ckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGaXJzdExheW91
dEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNo
eUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJh
cmNoeTsKKyAgICBXS0J1bmRsZVBhZ2VEaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWVD
YWxsYmFjayAgICAgICAgICAgICAgICAgICBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJh
bWU7CisgICAgV0tCdW5kbGVQYWdlRGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWVDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWU7Cisg
ICAgV0tCdW5kbGVQYWdlRGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZUNhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZTsKKyAgICBXS0J1
bmRsZVBhZ2VEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOworICAgIFdLQnVuZGxl
UGFnZVdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBh
Z2VEaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZTsKKworICAgIC8vIFZlcnNpb24gMS4K
KyAgICBXS0J1bmRsZVBhZ2VEaWRMYXlvdXRGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaWRMYXlvdXRGb3JGcmFtZTsKKyAgICB2b2lkICogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRfdW5hdmFpbGFibGU7CisgICAgV0tC
dW5kbGVQYWdlRGlkRGV0ZWN0WFNTRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlkRGV0ZWN0WFNTRm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlU2hvdWxk
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgc2hv
dWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW07CisgICAgV0tCdW5kbGVQYWdlR2xvYmFsT2JqZWN0
SXNBdmFpbGFibGVGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsT2Jq
ZWN0SXNBdmFpbGFibGVGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VXaWxsRGlzY29ubmVjdERP
TVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3RDYWxsYmFjayAgICB3aWxsRGlzY29ubmVj
dERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3Q7CisgICAgV0tCdW5kbGVQYWdlRGlk
UmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3RDYWxsYmFjayAgICAgICAg
ZGlkUmVjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uVG9HbG9iYWxPYmplY3Q7CisgICAgV0tCdW5k
bGVQYWdlV2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb25DYWxsYmFj
ayAgICAgICAgd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb247CisK
KyAgICAvLyBWZXJzaW9uIDIKKyAgICBXS0J1bmRsZVBhZ2VEaWRGaW5pc2hQcm9ncmVzc0NhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGaW5pc2hQcm9ncmVzczsK
KyAgICBXS0J1bmRsZVBhZ2VTaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTENh
bGxiYWNrICAgICAgICAgICAgICBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVS
TDsKKworICAgIC8vIFZlcnNpb24gMworICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVJbnRl
bnRGb3JGcmFtZV91bmF2YWlsYWJsZTsKKyAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlckludGVu
dFNlcnZpY2VGb3JGcmFtZV91bmF2YWlsYWJsZTsKKworICAgIC8vIFZlcnNpb24gNAorICAgIFdL
QnVuZGxlUGFnZURpZExheW91dENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpZExheW91dDsKKworICAgIC8vIFZlcnNpb24gNQorICAgIFdLQnVuZGxl
UGFnZUZlYXR1cmVzVXNlZEluUGFnZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZlYXR1cmVzVXNlZEluUGFnZTsKKworICAgIC8vIFZlcnNpb24gNgorICAgIFdLQnVu
ZGxlUGFnZVdpbGxMb2FkVVJMUmVxdWVzdENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdpbGxMb2FkVVJMUmVxdWVzdDsKKyAgICBXS0J1bmRsZVBhZ2VXaWxsTG9hZERh
dGFSZXF1ZXN0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsTG9h
ZERhdGFSZXF1ZXN0OworCisgICAgLy8gVmVyc2lvbiA3CisgICAgV0tCdW5kbGVQYWdlV2lsbERl
c3Ryb3lGcmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ls
bERlc3Ryb3lGcmFtZTsKKworICAgIC8vIFZlcnNpb24gOAorICAgIFdLQnVuZGxlUGFnZVVzZXJB
Z2VudEZvclVSTENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVz
ZXJBZ2VudEZvclVSTDsKKworICAgIC8vIFZlcnNpb24gOQorICAgIFdLQnVuZGxlUGFnZURpZEJs
b2NrSW5zZWN1cmVDb250ZW50Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgIGRp
ZEJsb2NrSW5zZWN1cmVDb250ZW50Rm9yRnJhbWU7Cit9IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVu
dFY5OworCitlbnVtIHsga1dLQnVuZGxlUGFnZUxvYWRlckNsaWVudEN1cnJlbnRWZXJzaW9uIFdL
X0VOVU1fREVQUkVDQVRFRCgiVXNlIGFuIGV4cGxpY2l0IHZlcnNpb24gbnVtYmVyIGluc3RlYWQi
KSA9IDkgfTsKIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCB7CiAgICAg
aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmVyc2lvbjsKICAgICBjb25zdCB2b2lkICogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwpA
QCAtNTIwLDYgKzU4MiwxMiBAQCB0eXBlZGVmIHN0cnVjdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGll
bnQgewogCiAgICAgLy8gVmVyc2lvbiA3CiAgICAgV0tCdW5kbGVQYWdlV2lsbERlc3Ryb3lGcmFt
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbERlc3Ryb3lG
cmFtZTsKKworICAgIC8vIFZlcnNpb24gOAorICAgIFdLQnVuZGxlUGFnZVVzZXJBZ2VudEZvclVS
TENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJBZ2VudEZv
clVSTDsKKworICAgIC8vIFZlcnNpb24gOQorICAgIFdLQnVuZGxlUGFnZURpZEJsb2NrSW5zZWN1
cmVDb250ZW50Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgIGRpZEJsb2NrSW5z
ZWN1cmVDb250ZW50Rm9yRnJhbWU7CiB9IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCBXS19DX0RF
UFJFQ0FURUQoIlVzZSBhbiBleHBsaWNpdCB2ZXJzaW9uZWQgc3RydWN0IGluc3RlYWQiKTsKIAog
I2VuZGlmIC8vIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZTg4NDU2Y2EzYjM2Nzk0ODhm
MDRjZjE3OGE5OTI4MjU3ZjQ3NWRmMi4uM2RlYTY3ZTA1ODU5YmViNDhkNjE2Yjk4Y2QzN2ZhNGRh
NWI1M2RhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LmNwcApAQCAtMjE0LDYgKzIxNCwxNiBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZSogcGFnZQogICAg
IHVzZXJEYXRhID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKK3ZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRCbG9ja0luc2VjdXJlQ29udGVudEZv
ckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgUmVmUHRyPEFQSTo6T2JqZWN0
PiYgdXNlckRhdGEpCit7CisgICAgaWYgKCFtX2NsaWVudC5kaWRCbG9ja0luc2VjdXJlQ29udGVu
dEZvckZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bh
c3MgPSAwOworICAgIG1fY2xpZW50LmRpZEJsb2NrSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodG9B
UEkocGFnZSksIHRvQVBJKGZyYW1lKSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNz
KSk7Cit9CisKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RY
U1NGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIFJlZlB0cjxBUEk6Ok9i
amVjdD4mIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQuZGlkRGV0ZWN0WFNTRm9yRnJh
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRl
eCBiNGNiMGViMTBjZjNiYWYyYjc2ZjhjZmIyZDFjYjdiMjkzYmZjYTkwLi5lNDVmYmM5Njg4Yzcx
MjM4ZmJmYTIwZjY4ZDBlZWJjMTE4YmZjMDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIEFQSSB7
CiBjbGFzcyBPYmplY3Q7CiAKIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0J1bmRs
ZVBhZ2VMb2FkZXJDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLQnVuZGxl
UGFnZUxvYWRlckNsaWVudFYwLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMSwgV0tCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50VjIsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFYzLCBXS0J1bmRsZVBh
Z2VMb2FkZXJDbGllbnRWNCwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjUsIFdLQnVuZGxlUGFn
ZUxvYWRlckNsaWVudFY2LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWNywgV0tCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50Vjg+IFZlcnNpb25zOworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0J1bmRs
ZVBhZ2VMb2FkZXJDbGllbnRWMCwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjEsIFdLQnVuZGxl
UGFnZUxvYWRlckNsaWVudFYyLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWMywgV0tCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50VjQsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY1LCBXS0J1bmRsZVBh
Z2VMb2FkZXJDbGllbnRWNiwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50VjcsIFdLQnVuZGxlUGFn
ZUxvYWRlckNsaWVudFY4LCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRWOT4gVmVyc2lvbnM7CiB9
OwogfQogCkBAIC04MCw2ICs4MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnRGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+JiB1c2VyRGF0YSk7CiAgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShX
ZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSk7CiAgICAg
dm9pZCBkaWREZXRlY3RYU1NGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJ
OjpPYmplY3Q+JiB1c2VyRGF0YSk7CisgICAgdm9pZCBkaWRCbG9ja0luc2VjdXJlQ29udGVudEZv
ckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRh
KTsKIAogICAgIHZvaWQgZGlkRmlyc3RMYXlvdXRGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUq
LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSk7CiAgICAgdm9pZCBkaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJ
OjpPYmplY3Q+JiB1c2VyRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IGNkM2ZkNmU3NjBiNjQ5NjNjNmIxNWFjMDlhN2M0MWVmNDQzZmRhMjQuLjRlNmMzMWJjZDU4
ZmRiZWMyZDUwNTM0MGQ1ZjlhYzhmNWFlY2MwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCkBAIC0xMDQyLDYgKzEwNDIsMTkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYsIGJvb2wpCiAgICAgd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWREZXRlY3RYU1NGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlE
KCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRs
ZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaWRCbG9ja0luc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYp
Cit7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXdl
YlBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRh
dGE7CisKKyAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZEJsb2Nr
SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgdXNlckRhdGEpOworCisg
ICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRCbG9ja0luc2VjdXJl
Q29udGVudEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6
c2hhcmVkKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkp
KSk7Cit9CisKIFJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbGxlZEVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gV2ViS2l0
OjpjYW5jZWxsZWRFcnJvcihyZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCA4NDgwZTY0MmIzOWUxYzkxYmEzZTQyNTVhMjUzYjk4ODJiMDA1ODVkLi4wZjA4Yzg3OWVj
Yzc2ZTI2MGU4NjE2YTA1OWMyMmIxZDNkMjI2ZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCkBAIC0xMzQsNiArMTM0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlk
RGlzcGxheUluc2VjdXJlQ29udGVudCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRS
dW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3Jl
OjpVUkwmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQmxvY2tJbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tl
ZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDllMzZmNzg2
MTVkYzFjMzVjMmY1NzYwZDExNjM2NjI3OGQyNWZhNzcuLjdkNmMyNWQ0ZjM1NjVkOTliZWJmMDlj
ZmIyYTY1Nzc2NWM0ODA5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTI2NTMsNiArMjY1MywxNiBAQCB2b2lkIFdlYlBhZ2U6OmZvcmNl
UmVwYWludCh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0KIAordm9pZCBXZWJQYWdlOjphbGxv
d0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChib29sIGFsbG93ZWQpCit7CisgICAgbV9wYWdlLT5z
ZXR0aW5ncygpLnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KGFsbG93ZWQpOworfQor
Cit2b2lkIFdlYlBhZ2U6OmFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KGJvb2wgYWxsb3dl
ZCkKK3sKKyAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNv
bnRlbnQoYWxsb3dlZCk7Cit9CisKIHZvaWQgV2ViUGFnZTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2Uo
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiB7CiAgICAgV2ViUHJlZmVyZW5jZXNT
dG9yZTo6cmVtb3ZlVGVzdFJ1bm5lck92ZXJyaWRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMTQ0ZjVkMTU2MzU5ODYwZjdhOTA4OWRkYjc3
NzdlOGYxNDQ5Mjg3ZS4uMDU4Y2ExNTdhNDRkNjU5ZTNiMGQ3NjIzMjA2MTc1NzYzNTY0ZTU2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC05ODYs
NiArOTg2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZvcmNlUmVwYWludCh1aW50NjRfdCBjYWxs
YmFja0lEKTsKICAgICB2b2lkIHRha2VTbmFwc2hvdChXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90
UmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBiaXRtYXBTaXplLCB1aW50MzJfdCBvcHRpb25zLCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKIAorICAgIHZvaWQgYWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRl
bnQoYm9vbCBhbGxvd2VkKTsKKyAgICB2b2lkIGFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50
KGJvb2wgYWxsb3dlZCk7CisKICAgICB2b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmKTsKICAgICB2b2lkIHBsYXRmb3JtUHJlZmVyZW5jZXNEaWRDaGFu
Z2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5j
ZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA2YThhNTliYzFj
MmIyMGI5Y2M2OGRkNDYwNGE2MTdlNmRiNjE4MWYyLi4yZDllYmJkMjg4ZmZlMzkyNjNlMTE3NjM0
ZTk1MWM3ZGJjNmQ1OTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNDA4LDQgKzQwOCw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICAgICBTZXRTaG91bGREaXNw
YXRjaEZha2VNb3VzZU1vdmVFdmVudHMoYm9vbCBzaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVF
dmVudHMpCisKKyAgICBBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChib29sIGFsbG93ZWQp
CisgICAgQWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBhbGxvd2VkKQogfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFlM2VhMzI5
NjAyNzcyOGRhODM4OTA1Zjg3MmI3MTU1MjBlMWFkZjQuLmU4ZTk3YzRhNTE3MWE5N2Y3OGQyNmY1
YTliMTZjNTE4Y2EyYWUxMTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNS0wMS0xMyAgTWljaGFlbCBDYXRhbnph
cm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIEFQSSB0byBj
b250cm9sIG1peGVkLWNvbnRlbnQgYmxvY2tpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDM5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rl
c3RTU0wuY3BwOiBOZXcgdGVzdHMuCisgICAgICAgICh0ZXN0QWxsSW5zZWN1cmVDb250ZW50QWxs
b3dlZCk6CisgICAgICAgICh0ZXN0U29tZUluc2VjdXJlQ29udGVudEFsbG93ZWQpOgorICAgICAg
ICAodGVzdE5vSW5zZWN1cmVDb250ZW50QWxsb3dlZCk6CisgICAgICAgICh0ZXN0UmVsb2FkV2l0
aEluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChodHRwc1NlcnZlckNhbGxiYWNrKToKKyAgICAg
ICAgKGJlZm9yZUFsbCk6CisgICAgICAgICh0ZXN0SW5zZWN1cmVDb250ZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL0xvYWRUcmFja2luZ1Rlc3Qu
Y3BwOgorICAgICAgICAoTG9hZFRyYWNraW5nVGVzdDo6cmVsb2FkV2l0aEluc2VjdXJlQ29udGVu
dCk6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvTG9hZFRy
YWNraW5nVGVzdC5oOiBBZGQKKyAgICAgICAgTG9hZFRyYWNraW5nVGVzdDo6cmVsb2FkV2l0aElu
c2VjdXJlQ29udGVudC4KKwogMjAxNS0wMS0xMiAgSHVuc2VvcCBKZW9uZyAgPGhzODUuamVvbmdA
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bR1RLXSBGaXggYnVpbGQgYWZ0ZXIgcjE3ODMw
OSAgCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dFNTTC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFNTTC5j
cHAKaW5kZXggMGJlZDdhMTc2ODZlY2I1YTE0NmQ4Mjk4YmUzOGIxZjQwZDNiN2M4Yi4uODM2NDRl
Y2MyODM2OTA3Yzg0MDczMzc0OWJiYzgxZWYyOWMxNDlhMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RTU0wuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0U1NMLmNwcApAQCAtMjcsNyArMjcsOCBAQCBz
dGF0aWMgV2ViS2l0VGVzdFNlcnZlcioga0h0dHBzU2VydmVyOwogc3RhdGljIFdlYktpdFRlc3RT
ZXJ2ZXIqIGtIdHRwU2VydmVyOwogCiBzdGF0aWMgY29uc3QgY2hhciogaW5kZXhIVE1MID0gIjxo
dG1sPjxib2R5PlRlc3RpbmcgV2ViS2l0MkdUSysgU1NMPC9ib2R5PjwvaHRtbGw+IjsKLXN0YXRp
YyBjb25zdCBjaGFyKiBpbnNlY3VyZUNvbnRlbnRIVE1MID0gIjxodG1sPjxzY3JpcHQgc3JjPVwi
JXNcIj48L3NjcmlwdD48Ym9keT48cD5UZXh0ICsgaW1hZ2UgPGltZyBzcmM9XCIlc1wiIGFsaWdu
PVwicmlnaHRcIi8+PC9wPjwvYm9keT48L2h0bWw+IjsKK3N0YXRpYyBjb25zdCBjaGFyKiBpbnNl
Y3VyZUltYWdlSFRNTCA9ICI8aHRtbD48Ym9keT48cD5UZXh0ICsgaW1hZ2UgPGltZyBzcmM9XCIl
c1wiIGFsaWduPVwicmlnaHRcIi8+PC9wPjwvYm9keT48L2h0bWw+IjsKK3N0YXRpYyBjb25zdCBj
aGFyKiBpbnNlY3VyZVNjcmlwdEhUTUwgPSAiPGh0bWw+PHNjcmlwdCBzcmM9XCIlc1wiPjwvc2Ny
aXB0PjwvaHRtbD4iOwogc3RhdGljIGNvbnN0IGNoYXIgVExTRXhwZWN0ZWRTdWNjZXNzVGl0bGVb
XSA9ICJXZWJLaXQyR3RrKyBUTFMgcGVybWlzc2lvbiB0ZXN0IjsKIHN0YXRpYyBjb25zdCBjaGFy
IFRMU1N1Y2Nlc3NIVE1MU3RyaW5nW10gPSAiPGh0bWw+PGhlYWQ+PHRpdGxlPldlYktpdDJHdGsr
IFRMUyBwZXJtaXNzaW9uIHRlc3Q8L3RpdGxlPjwvaGVhZD48Ym9keT48L2JvZHk+PC9odG1sPiI7
CiAKQEAgLTg4LDEzICs4OSwxNCBAQCBzdGF0aWMgdm9pZCB0ZXN0U1NMKFNTTFRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF90bHNfZXJyb3JzX3Bv
bGljeShjb250ZXh0LCBvcmlnaW5hbFBvbGljeSk7CiB9CiAKLWNsYXNzIEluc2VjdXJlQ29udGVu
dFRlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CitjbGFzcyBJbnNlY3VyZUNvbnRlbnRUZXN0OiBw
dWJsaWMgTG9hZFRyYWNraW5nVGVzdCB7CiBwdWJsaWM6CiAgICAgTUFLRV9HTElCX1RFU1RfRklY
VFVSRShJbnNlY3VyZUNvbnRlbnRUZXN0KTsKIAogICAgIEluc2VjdXJlQ29udGVudFRlc3QoKQog
ICAgICAgICA6IG1faW5zZWN1cmVDb250ZW50UnVuKGZhbHNlKQogICAgICAgICAsIG1faW5zZWN1
cmVDb250ZW50RGlzcGxheWVkKGZhbHNlKQorICAgICAgICAsIG1faW5zZWN1cmVDb250ZW50Qmxv
Y2tlZChmYWxzZSkKICAgICB7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAi
aW5zZWN1cmUtY29udGVudC1kZXRlY3RlZCIsIEdfQ0FMTEJBQ0soaW5zZWN1cmVDb250ZW50RGV0
ZWN0ZWRDYWxsYmFjayksIHRoaXMpOwogICAgIH0KQEAgLTEwOCwyNSArMTEwLDEzMiBAQCBwdWJs
aWM6CiAKICAgICAgICAgaWYgKGV2ZW50ID09IFdFQktJVF9JTlNFQ1VSRV9DT05URU5UX0RJU1BM
QVlFRCkKICAgICAgICAgICAgIHRlc3QtPm1faW5zZWN1cmVDb250ZW50RGlzcGxheWVkID0gdHJ1
ZTsKKworICAgICAgICBpZiAoZXZlbnQgPT0gV0VCS0lUX0lOU0VDVVJFX0NPTlRFTlRfQkxPQ0tF
RCkKKyAgICAgICAgICAgIHRlc3QtPm1faW5zZWN1cmVDb250ZW50QmxvY2tlZCA9IHRydWU7Cisg
ICAgfQorCisgICAgdm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVkKCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIG1faW5zZWN1cmVDb250ZW50UnVuID0gZmFsc2U7CisgICAgICAgIG1faW5zZWN1
cmVDb250ZW50RGlzcGxheWVkID0gZmFsc2U7CisgICAgICAgIG1faW5zZWN1cmVDb250ZW50Qmxv
Y2tlZCA9IGZhbHNlOwogICAgIH0KIAogICAgIGJvb2wgbV9pbnNlY3VyZUNvbnRlbnRSdW47CiAg
ICAgYm9vbCBtX2luc2VjdXJlQ29udGVudERpc3BsYXllZDsKKyAgICBib29sIG1faW5zZWN1cmVD
b250ZW50QmxvY2tlZDsKIH07CiAKLXN0YXRpYyB2b2lkIHRlc3RJbnNlY3VyZUNvbnRlbnQoSW5z
ZWN1cmVDb250ZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3N0YXRpYyB2b2lkIHRlc3RB
bGxJbnNlY3VyZUNvbnRlbnRBbGxvd2VkKEluc2VjdXJlQ29udGVudFRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiB7CiAgICAgV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCA9IHdlYmtpdF93ZWJf
dmlld19nZXRfY29udGV4dCh0ZXN0LT5tX3dlYlZpZXcpOwotICAgIFdlYktpdFRMU0Vycm9yc1Bv
bGljeSBvcmlnaW5hbFBvbGljeSA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdGxzX2Vycm9yc19w
b2xpY3koY29udGV4dCk7CisgICAgV2ViS2l0VExTRXJyb3JzUG9saWN5IG9yaWdpbmFsVExTRXJy
b3JzUG9saWN5ID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF90bHNfZXJyb3JzX3BvbGljeShjb250
ZXh0KTsKICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Rsc19lcnJvcnNfcG9saWN5KGNvbnRl
eHQsIFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9JR05PUkUpOwogCi0gICAgdGVzdC0+bG9hZFVS
SShrSHR0cHNTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pbnNlY3VyZS1jb250ZW50LyIpLmRhdGEo
KSk7CisgICAgV2ViS2l0SW5zZWN1cmVDb250ZW50UG9saWN5IG9yaWdpbmFsSW5zZWN1cmVDb250
ZW50UG9saWN5ID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9pbnNlY3VyZV9jb250ZW50X3BvbGlj
eShjb250ZXh0KTsKKyAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2luc2VjdXJlX2NvbnRlbnRf
cG9saWN5KGNvbnRleHQsIFdFQktJVF9JTlNFQ1VSRV9DT05URU5UX1BPTElDWV9BTExPV19BTEwp
OworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfaW5zZWN1cmVfY29udGVudF9w
b2xpY3koY29udGV4dCkgPT0gV0VCS0lUX0lOU0VDVVJFX0NPTlRFTlRfUE9MSUNZX0FMTE9XX0FM
TCk7CisKKyAgICB0ZXN0LT5sb2FkVVJJKGtIdHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2lu
c2VjdXJlLWltYWdlLyIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVk
KCk7CisgICAgZ19hc3NlcnQoIXRlc3QtPm1faW5zZWN1cmVDb250ZW50UnVuKTsKKyAgICBnX2Fz
c2VydCh0ZXN0LT5tX2luc2VjdXJlQ29udGVudERpc3BsYXllZCk7CisgICAgZ19hc3NlcnQoIXRl
c3QtPm1faW5zZWN1cmVDb250ZW50QmxvY2tlZCk7CiAKKyAgICB0ZXN0LT5sb2FkVVJJKGtIdHRw
c1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2luc2VjdXJlLXNjcmlwdC8iKS5kYXRhKCkpOworICAg
IHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIGdfYXNzZXJ0KHRlc3QtPm1faW5z
ZWN1cmVDb250ZW50UnVuKTsKKyAgICBnX2Fzc2VydCghdGVzdC0+bV9pbnNlY3VyZUNvbnRlbnRE
aXNwbGF5ZWQpOworICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2luc2VjdXJlQ29udGVudEJsb2NrZWQp
OworCisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9pbnNlY3VyZV9jb250ZW50X3BvbGljeShj
b250ZXh0LCBvcmlnaW5hbEluc2VjdXJlQ29udGVudFBvbGljeSk7CisgICAgd2Via2l0X3dlYl9j
b250ZXh0X3NldF90bHNfZXJyb3JzX3BvbGljeShjb250ZXh0LCBvcmlnaW5hbFRMU0Vycm9yc1Bv
bGljeSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RTb21lSW5zZWN1cmVDb250ZW50QWxsb3dlZChJ
bnNlY3VyZUNvbnRlbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIFdlYktpdFdl
YkNvbnRleHQqIGNvbnRleHQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQodGVzdC0+bV93
ZWJWaWV3KTsKKyAgICBXZWJLaXRUTFNFcnJvcnNQb2xpY3kgb3JpZ2luYWxUTFNFcnJvcnNQb2xp
Y3kgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3Rsc19lcnJvcnNfcG9saWN5KGNvbnRleHQpOwor
ICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdGxzX2Vycm9yc19wb2xpY3koY29udGV4dCwgV0VC
S0lUX1RMU19FUlJPUlNfUE9MSUNZX0lHTk9SRSk7CisKKyAgICBXZWJLaXRJbnNlY3VyZUNvbnRl
bnRQb2xpY3kgb3JpZ2luYWxJbnNlY3VyZUNvbnRlbnRQb2xpY3kgPSB3ZWJraXRfd2ViX2NvbnRl
eHRfZ2V0X2luc2VjdXJlX2NvbnRlbnRfcG9saWN5KGNvbnRleHQpOworICAgIHdlYmtpdF93ZWJf
Y29udGV4dF9zZXRfaW5zZWN1cmVfY29udGVudF9wb2xpY3koY29udGV4dCwgV0VCS0lUX0lOU0VD
VVJFX0NPTlRFTlRfUE9MSUNZX0FMTE9XX1NPTUUpOworICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJf
Y29udGV4dF9nZXRfaW5zZWN1cmVfY29udGVudF9wb2xpY3koY29udGV4dCkgPT0gV0VCS0lUX0lO
U0VDVVJFX0NPTlRFTlRfUE9MSUNZX0FMTE9XX1NPTUUpOworCisgICAgdGVzdC0+bG9hZFVSSShr
SHR0cHNTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pbnNlY3VyZS1pbWFnZS8iKS5kYXRhKCkpOwor
ICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIGdfYXNzZXJ0KCF0ZXN0LT5t
X2luc2VjdXJlQ29udGVudFJ1bik7CiAgICAgZ19hc3NlcnQodGVzdC0+bV9pbnNlY3VyZUNvbnRl
bnREaXNwbGF5ZWQpOworICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2luc2VjdXJlQ29udGVudEJsb2Nr
ZWQpOwogCi0gICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF90bHNfZXJyb3JzX3BvbGljeShjb250
ZXh0LCBvcmlnaW5hbFBvbGljeSk7CisgICAgdGVzdC0+bG9hZFVSSShrSHR0cHNTZXJ2ZXItPmdl
dFVSSUZvclBhdGgoIi9pbnNlY3VyZS1zY3JpcHQvIikuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0
VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBnX2Fzc2VydCghdGVzdC0+bV9pbnNlY3VyZUNvbnRl
bnRSdW4pOworICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2luc2VjdXJlQ29udGVudERpc3BsYXllZCk7
CisgICAgZ19hc3NlcnQodGVzdC0+bV9pbnNlY3VyZUNvbnRlbnRCbG9ja2VkKTsKKworICAgIHdl
YmtpdF93ZWJfY29udGV4dF9zZXRfaW5zZWN1cmVfY29udGVudF9wb2xpY3koY29udGV4dCwgb3Jp
Z2luYWxJbnNlY3VyZUNvbnRlbnRQb2xpY3kpOworICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRf
dGxzX2Vycm9yc19wb2xpY3koY29udGV4dCwgb3JpZ2luYWxUTFNFcnJvcnNQb2xpY3kpOworfQor
CitzdGF0aWMgdm9pZCB0ZXN0Tm9JbnNlY3VyZUNvbnRlbnRBbGxvd2VkKEluc2VjdXJlQ29udGVu
dFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCA9IHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh0ZXN0LT5tX3dlYlZpZXcpOworICAg
IFdlYktpdFRMU0Vycm9yc1BvbGljeSBvcmlnaW5hbFRMU0Vycm9yc1BvbGljeSA9IHdlYmtpdF93
ZWJfY29udGV4dF9nZXRfdGxzX2Vycm9yc19wb2xpY3koY29udGV4dCk7CisgICAgd2Via2l0X3dl
Yl9jb250ZXh0X3NldF90bHNfZXJyb3JzX3BvbGljeShjb250ZXh0LCBXRUJLSVRfVExTX0VSUk9S
U19QT0xJQ1lfSUdOT1JFKTsKKworICAgIFdlYktpdEluc2VjdXJlQ29udGVudFBvbGljeSBvcmln
aW5hbEluc2VjdXJlQ29udGVudFBvbGljeSA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfaW5zZWN1
cmVfY29udGVudF9wb2xpY3koY29udGV4dCk7CisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9p
bnNlY3VyZV9jb250ZW50X3BvbGljeShjb250ZXh0LCBXRUJLSVRfSU5TRUNVUkVfQ09OVEVOVF9Q
T0xJQ1lfQUxMT1dfTk9ORSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYl9jb250ZXh0X2dldF9p
bnNlY3VyZV9jb250ZW50X3BvbGljeShjb250ZXh0KSA9PSBXRUJLSVRfSU5TRUNVUkVfQ09OVEVO
VF9QT0xJQ1lfQUxMT1dfTk9ORSk7CisKKyAgICB0ZXN0LT5sb2FkVVJJKGtIdHRwc1NlcnZlci0+
Z2V0VVJJRm9yUGF0aCgiL2luc2VjdXJlLWltYWdlLyIpLmRhdGEoKSk7CisgICAgdGVzdC0+d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgZ19hc3NlcnQoIXRlc3QtPm1faW5zZWN1cmVDb250
ZW50UnVuKTsKKyAgICBnX2Fzc2VydCghdGVzdC0+bV9pbnNlY3VyZUNvbnRlbnREaXNwbGF5ZWQp
OworICAgIGdfYXNzZXJ0KHRlc3QtPm1faW5zZWN1cmVDb250ZW50QmxvY2tlZCk7CisKKyAgICB0
ZXN0LT5sb2FkVVJJKGtIdHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2luc2VjdXJlLXNjcmlw
dC8iKS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIGdf
YXNzZXJ0KCF0ZXN0LT5tX2luc2VjdXJlQ29udGVudFJ1bik7CisgICAgZ19hc3NlcnQoIXRlc3Qt
Pm1faW5zZWN1cmVDb250ZW50RGlzcGxheWVkKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX2luc2Vj
dXJlQ29udGVudEJsb2NrZWQpOworCisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9pbnNlY3Vy
ZV9jb250ZW50X3BvbGljeShjb250ZXh0LCBvcmlnaW5hbEluc2VjdXJlQ29udGVudFBvbGljeSk7
CisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF90bHNfZXJyb3JzX3BvbGljeShjb250ZXh0LCBv
cmlnaW5hbFRMU0Vycm9yc1BvbGljeSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RSZWxvYWRXaXRo
SW5zZWN1cmVDb250ZW50KEluc2VjdXJlQ29udGVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
Cit7CisgICAgV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCA9IHdlYmtpdF93ZWJfdmlld19nZXRf
Y29udGV4dCh0ZXN0LT5tX3dlYlZpZXcpOworICAgIFdlYktpdFRMU0Vycm9yc1BvbGljeSBvcmln
aW5hbFRMU0Vycm9yc1BvbGljeSA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfdGxzX2Vycm9yc19w
b2xpY3koY29udGV4dCk7CisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF90bHNfZXJyb3JzX3Bv
bGljeShjb250ZXh0LCBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfSUdOT1JFKTsKKworICAgIFdl
YktpdEluc2VjdXJlQ29udGVudFBvbGljeSBvcmlnaW5hbEluc2VjdXJlQ29udGVudFBvbGljeSA9
IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfaW5zZWN1cmVfY29udGVudF9wb2xpY3koY29udGV4dCk7
CisgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9pbnNlY3VyZV9jb250ZW50X3BvbGljeShjb250
ZXh0LCBXRUJLSVRfSU5TRUNVUkVfQ09OVEVOVF9QT0xJQ1lfQUxMT1dfU09NRSk7CisgICAgZ19h
c3NlcnQod2Via2l0X3dlYl9jb250ZXh0X2dldF9pbnNlY3VyZV9jb250ZW50X3BvbGljeShjb250
ZXh0KSA9PSBXRUJLSVRfSU5TRUNVUkVfQ09OVEVOVF9QT0xJQ1lfQUxMT1dfU09NRSk7CisKKyAg
ICB0ZXN0LT5sb2FkVVJJKGtIdHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2luc2VjdXJlLXNj
cmlwdC8iKS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAg
IGdfYXNzZXJ0KCF0ZXN0LT5tX2luc2VjdXJlQ29udGVudERpc3BsYXllZCk7CisgICAgZ19hc3Nl
cnQoIXRlc3QtPm1faW5zZWN1cmVDb250ZW50UnVuKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX2lu
c2VjdXJlQ29udGVudEJsb2NrZWQpOworCisgICAgdGVzdC0+cmVsb2FkV2l0aEluc2VjdXJlQ29u
dGVudCgpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIGdfYXNzZXJ0
KCF0ZXN0LT5tX2luc2VjdXJlQ29udGVudERpc3BsYXllZCk7CisgICAgZ19hc3NlcnQodGVzdC0+
bV9pbnNlY3VyZUNvbnRlbnRSdW4pOworICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2luc2VjdXJlQ29u
dGVudEJsb2NrZWQpOworCisgICAgLy8gRW5zdXJlIHRoYXQgaW5zZWN1cmUgY29udGVudCBpcyBi
bG9ja2VkIHdoZW4gcmVsb2FkZWQgbm9ybWFsbHkKKyAgICB0ZXN0LT5yZWxvYWQoKTsKKyAgICB0
ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBnX2Fzc2VydCghdGVzdC0+bV9pbnNl
Y3VyZUNvbnRlbnREaXNwbGF5ZWQpOworICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2luc2VjdXJlQ29u
dGVudFJ1bik7CisgICAgZ19hc3NlcnQodGVzdC0+bV9pbnNlY3VyZUNvbnRlbnRCbG9ja2VkKTsK
KworICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfaW5zZWN1cmVfY29udGVudF9wb2xpY3koY29u
dGV4dCwgb3JpZ2luYWxJbnNlY3VyZUNvbnRlbnRQb2xpY3kpOworICAgIHdlYmtpdF93ZWJfY29u
dGV4dF9zZXRfdGxzX2Vycm9yc19wb2xpY3koY29udGV4dCwgb3JpZ2luYWxUTFNFcnJvcnNQb2xp
Y3kpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0VExTRXJyb3JzUG9saWN5KFNTTFRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCkBAIC0zMzUsOCArNDQ0LDEzIEBAIHN0YXRpYyB2b2lkIGh0dHBzU2Vy
dmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29u
c3QKICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNf
T0spOwogICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2Vf
Ym9keSwgU09VUF9NRU1PUllfU1RBVElDLCBpbmRleEhUTUwsIHN0cmxlbihpbmRleEhUTUwpKTsK
ICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9k
eSk7Ci0gICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL2luc2VjdXJlLWNvbnRlbnQv
IikpIHsKLSAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiByZXNwb25zZUhUTUwoZ19zdHJkdXBfcHJp
bnRmKGluc2VjdXJlQ29udGVudEhUTUwsIGtIdHRwU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVz
dC1zY3JpcHQiKS5kYXRhKCksIGtIdHRwU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC1pbWFn
ZSIpLmRhdGEoKSkpOworICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9pbnNlY3Vy
ZS1pbWFnZS8iKSkgeworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc3BvbnNlSFRNTChnX3N0
cmR1cF9wcmludGYoaW5zZWN1cmVJbWFnZUhUTUwsIGtIdHRwU2VydmVyLT5nZXRVUklGb3JQYXRo
KCIvdGVzdC1pbWFnZSIpLmRhdGEoKSkpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBl
bmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfQ09QWSwgcmVzcG9uc2VIVE1M
LmdldCgpLCBzdHJsZW4ocmVzcG9uc2VIVE1MLmdldCgpKSk7CisgICAgICAgIHNvdXBfbWVzc2Fn
ZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICAgICAgc291cF9tZXNz
YWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7CisgICAgfSBlbHNlIGlm
IChnX3N0cl9lcXVhbChwYXRoLCAiL2luc2VjdXJlLXNjcmlwdC8iKSkgeworICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IHJlc3BvbnNlSFRNTChnX3N0cmR1cF9wcmludGYoaW5zZWN1cmVTY3JpcHRI
VE1MLCBrSHR0cFNlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3Qtc2NyaXB0IikuZGF0YSgpKSk7
CiAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5
LCBTT1VQX01FTU9SWV9DT1BZLCByZXNwb25zZUhUTUwuZ2V0KCksIHN0cmxlbihyZXNwb25zZUhU
TUwuZ2V0KCkpKTsKICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09V
UF9TVEFUVVNfT0spOwogICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdl
LT5yZXNwb25zZV9ib2R5KTsKQEAgLTQwMiw3ICs1MTYsMTAgQEAgdm9pZCBiZWZvcmVBbGwoKQog
ICAgIGtIdHRwU2VydmVyLT5ydW4oaHR0cFNlcnZlckNhbGxiYWNrKTsKIAogICAgIFNTTFRlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJzc2wiLCB0ZXN0U1NMKTsKLSAgICBJbnNlY3VyZUNvbnRl
bnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiaW5zZWN1cmUtY29udGVudCIsIHRlc3RJbnNl
Y3VyZUNvbnRlbnQpOworICAgIEluc2VjdXJlQ29udGVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmll
dyIsICJhbGwtaW5zZWN1cmUtY29udGVudC1hbGxvd2VkIiwgdGVzdEFsbEluc2VjdXJlQ29udGVu
dEFsbG93ZWQpOworICAgIEluc2VjdXJlQ29udGVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIs
ICJzb21lLWluc2VjdXJlLWNvbnRlbnQtYWxsb3dlZCIsIHRlc3RTb21lSW5zZWN1cmVDb250ZW50
QWxsb3dlZCk7CisgICAgSW5zZWN1cmVDb250ZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3Iiwg
Im5vLWluc2VjdXJlLWNvbnRlbnQtYWxsb3dlZCIsIHRlc3ROb0luc2VjdXJlQ29udGVudEFsbG93
ZWQpOworICAgIEluc2VjdXJlQ29udGVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJyZWxv
YWQtd2l0aC1pbnNlY3VyZS1jb250ZW50IiwgdGVzdFJlbG9hZFdpdGhJbnNlY3VyZUNvbnRlbnQp
OwogICAgIFNTTFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ0bHMtZXJyb3JzLXBvbGljeSIs
IHRlc3RUTFNFcnJvcnNQb2xpY3kpOwogICAgIFNTTFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIs
ICJ0bHMtZXJyb3JzLXJlZGlyZWN0LXRvLWh0dHAiLCB0ZXN0VExTRXJyb3JzUmVkaXJlY3QpOwog
ICAgIFNTTFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ0bHMtaHR0cC1hdXRoIiwgdGVzdFRM
U0Vycm9yc0hUVFBBdXRoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dl
YktpdDJHdGsvTG9hZFRyYWNraW5nVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9X
ZWJLaXQyR3RrL0xvYWRUcmFja2luZ1Rlc3QuY3BwCmluZGV4IGE1OWNiOTIxMDJmMGIzMmM5OTRj
ZDA5ZjNjZjZiMmE4MGFlN2VmYWMuLmZmNjk5NjJlZjdlYTFhOWM1M2ZiZjdlYmEyNTQ3OTc0YmI5
ZmY5NTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvTG9h
ZFRyYWNraW5nVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0
ay9Mb2FkVHJhY2tpbmdUZXN0LmNwcApAQCAtMjI2LDYgKzIyNiwxNCBAQCB2b2lkIExvYWRUcmFj
a2luZ1Rlc3Q6OnJlbG9hZCgpCiAgICAgd2Via2l0X3dlYl92aWV3X3JlbG9hZChtX3dlYlZpZXcp
OwogfQogCit2b2lkIExvYWRUcmFja2luZ1Rlc3Q6OnJlbG9hZFdpdGhJbnNlY3VyZUNvbnRlbnQo
KQoreworICAgIG1fbG9hZEV2ZW50cy5jbGVhcigpOworICAgIG1fZXN0aW1hdGVkUHJvZ3Jlc3Mg
PSAwOworICAgIG1fZXJyb3IucmVzZXQoKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfcmVsb2FkX3dp
dGhfaW5zZWN1cmVfY29udGVudChtX3dlYlZpZXcpOworfQorCiB2b2lkIExvYWRUcmFja2luZ1Rl
c3Q6OmdvQmFjaygpCiB7CiAgICAgbV9sb2FkRXZlbnRzLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL0xvYWRUcmFja2luZ1Rlc3QuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvTG9hZFRyYWNraW5nVGVzdC5oCmluZGV4
IGM5MjE4NDczNDYzYTY1NWNiYjIzNjdiYzU4MjQ3NTY0OGY2NTY5YTUuLmJlNjlmNzk2NWFhMGM4
NDExNjdhMzcwZDU3Mzk2MTkxNzJmMTlmMzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ3RrL1dlYktpdDJHdGsvTG9hZFRyYWNraW5nVGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ3RrL1dlYktpdDJHdGsvTG9hZFRyYWNraW5nVGVzdC5oCkBAIC00Niw2ICs0Niw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGxvYWRSZXF1ZXN0KFdlYktpdFVSSVJlcXVlc3QqKTsKICAgICB2
b2lkIGxvYWRCeXRlcyhHQnl0ZXMqLCBjb25zdCBjaGFyKiBtaW1lVHlwZSwgY29uc3QgY2hhciog
ZW5jb2RpbmcsIGNvbnN0IGNoYXIqIGJhc2VVUkkpOwogICAgIHZvaWQgcmVsb2FkKCk7CisgICAg
dm9pZCByZWxvYWRXaXRoSW5zZWN1cmVDb250ZW50KCk7CiAgICAgdm9pZCBnb0JhY2soKTsKICAg
ICB2b2lkIGdvRm9yd2FyZCgpOwogCg==
</data>
<flag name="review"
          id="269453"
          type_id="1"
          status="-"
          setter="cgarcia"
    />
    <flag name="commit-queue"
          id="269454"
          type_id="3"
          status="-"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>