<?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>215961</bug_id>
          
          <creation_ts>2020-08-28 17:37:31 -0700</creation_ts>
          <short_desc>Web Inspector: _WKInspectorDelegate should be attached to _WKInspector not WKWebView</short_desc>
          <delta_ts>2021-01-13 17:30:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>216334</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1683840</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-08-28 17:37:31 -0700</bug_when>
    <thetext>This was written in some haste earlier this year. It makes more sense for the delegate to only exist when an Inspector is open. The didAttachLocalInspector delegate method can go back to WKUIDelegatePrivate where it used to be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683841</commentid>
    <comment_count>1</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-08-28 17:37:45 -0700</bug_when>
    <thetext>&lt;rdar://67486705&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683842</commentid>
    <comment_count>2</comment_count>
      <attachid>407519</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-08-28 17:44:44 -0700</bug_when>
    <thetext>Created attachment 407519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684961</commentid>
    <comment_count>3</comment_count>
      <attachid>407799</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-09-02 13:50:10 -0700</bug_when>
    <thetext>Created attachment 407799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685029</commentid>
    <comment_count>4</comment_count>
      <attachid>407799</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-02 15:35:34 -0700</bug_when>
    <thetext>Comment on attachment 407799
Patch

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

r=me

&gt; Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h:251
&gt; +    @param inspector The Web Inspector instance attached to this WKWebView.

NIT: should there also be a `@param webView`?

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspector.mm:47
&gt; +- (void)dealloc
&gt; +{
&gt; +    _inspector-&gt;~WebInspectorProxy();
&gt; +
&gt; +    [super dealloc];
&gt; +}

Why was this added?

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorDelegate.h:35
&gt; +    @param inspector the associated inspector for which the domain has been enabled.

NIT: &quot;which the Browser domain has&quot;

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorDelegate.h:40
&gt; +    @param inspector the associated inspector for which the domain has been enabled.

ditto (:35)

also, s/enabled/disabled

&gt; Source/WebKit/UIProcess/Inspector/Cocoa/InspectorDelegate.h:44
&gt; +    ~InspectorDelegate();

If the class doesn&apos;t inherit from anything (and this is just ` = default;`) do we need to specify a destructor?

&gt; Source/WebKit/UIProcess/Inspector/Cocoa/InspectorDelegate.h:61
&gt; +        void browserDomainEnabled(WebInspectorProxy&amp;) final;
&gt; +        void browserDomainDisabled(WebInspectorProxy&amp;) final;

Can we just make the entire class `final` instead?

&gt; Source/WebKit/UIProcess/Inspector/Cocoa/InspectorDelegate.mm:41
&gt; +InspectorDelegate::~InspectorDelegate() = default;

ditto (InspectorDelegate.h:44)

&gt; Source/WebKit/UIProcess/Inspector/Cocoa/InspectorDelegate.mm:68
&gt; +void InspectorDelegate::InspectorClient::browserDomainEnabled(WebInspectorProxy&amp;)

Why bother having a `WebInspectorProxy` parameter if we&apos;re not gonna use it?  It would make the callsite cleaner :)

&gt; Source/WebKit/UIProcess/Inspector/Cocoa/InspectorDelegate.mm:80
&gt; +void InspectorDelegate::InspectorClient::browserDomainDisabled(WebInspectorProxy&amp;)

ditto (:68)

&gt; Source/WebKit/UIProcess/Inspector/WebInspectorProxy.h:282
&gt; +    std::unique_ptr&lt;API::InspectorClient&gt; m_inspectorClient;

`UniqueRef`?  We always expect the `m_inspectorClient` to be set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687525</commentid>
    <comment_count>5</comment_count>
      <attachid>408473</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-09-10 13:45:36 -0700</bug_when>
    <thetext>Created attachment 408473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687539</commentid>
    <comment_count>6</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-09-10 14:40:20 -0700</bug_when>
    <thetext>Committed r266890: &lt;https://trac.webkit.org/changeset/266890&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719385</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-01-13 12:24:38 -0800</bug_when>
    <thetext>Removing -[BrowserWKView _setInspectorDelegate:] seems to have broken binary compatibility with open-source builds (because those builds use the system WebInspector.framework).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719505</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-01-13 17:30:05 -0800</bug_when>
    <thetext>See also: https://bugs.webkit.org/show_bug.cgi?id=217778 and https://bugs.webkit.org/show_bug.cgi?id=216945</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407519</attachid>
            <date>2020-08-28 17:44:44 -0700</date>
            <delta_ts>2020-09-02 13:50:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215961-20200828174444.patch</filename>
            <type>text/plain</type>
            <size>25162</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggZGJjNDNjMDIyNGU0YWFjMGY3MzZkY2Uz
NTY3NTIwOGJmYmEyYTVmYi4uOTM1NDk3NGU3NDBmYWE3ZmUyNmNmMzE0ZDM1ZjJiZmVhNmJmM2Mw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JDbGll
bnQuaApAQCAtMjcsNyArMjcsNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYklu
c3BlY3RvclByb3h5OwotY2xhc3MgV2ViUGFnZVByb3h5OwogfQogCiBuYW1lc3BhY2UgQVBJIHsK
QEAgLTM3LDggKzM2LDggQEAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5JbnNwZWN0b3JDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YnJvd3NlckRvbWFpbkVuYWJsZWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGJyb3dzZXJEb21haW5EaXNhYmxl
ZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHkmKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgYnJvd3NlckRvbWFpbkVuYWJsZWQoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBicm93c2VyRG9tYWluRGlzYWJsZWQoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eSYpIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBi
MWQ0MTI0MWI1OWI4MWQ0OWFkNjM2ZTEzNTM2ZmY3YmI1NDc4Mzg0Li40OWJiYzRjZWZmYzkwYjli
OTczNzkzNGRkNTYxNDIzOGI3NzFlZDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTM4LDcgKzM4LDYgQEAKICNpbXBvcnQgIkZ1bGxz
Y3JlZW5DbGllbnQuaCIKICNpbXBvcnQgIkdsb2JhbEZpbmRJblBhZ2VTdGF0ZS5oIgogI2ltcG9y
dCAiSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oIgotI2ltcG9ydCAiSW5zcGVjdG9yRGVsZWdhdGUuaCIK
ICNpbXBvcnQgIkxlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5oIgogI2ltcG9ydCAiTG9nZ2luZy5o
IgogI2ltcG9ydCAiTWVkaWFVdGlsaXRpZXMuaCIKQEAgLTEwMyw3ICsxMDIsNiBAQAogI2ltcG9y
dCAiX1dLRnVsbHNjcmVlbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tIaXRUZXN0UmVzdWx0SW50
ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0lucHV0RGVsZWdhdGUuaCIKLSNpbXBvcnQgIl9XS0luc3Bl
Y3RvckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIgogI2ltcG9y
dCAiX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLU2Vzc2lv
blN0YXRlSW50ZXJuYWwuaCIKQEAgLTM5OCw3ICszOTYsNiBAQCAtICh2b2lkKV9pbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9u
CiAKICAgICBfaWNvbkxvYWRpbmdEZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJY29uTG9h
ZGluZ0RlbGVnYXRlPihzZWxmKTsKICAgICBfcmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBtYWtlVW5p
cXVlPFdlYktpdDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU+KHNlbGYpOwotICAgIF9pbnNwZWN0b3JE
ZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJbnNwZWN0b3JEZWxlZ2F0ZT4oc2VsZik7CiAK
ICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWdlQ29uZmlndXJhdGlvbi0+dXJsU2NoZW1lSGFuZGxl
cnMoKSkKICAgICAgICAgX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoV2ViS2l0
OjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2E6OmNyZWF0ZShzdGF0aWNfY2FzdDxXZWJLaXQ6Oldl
YlVSTFNjaGVtZUhhbmRsZXJDb2NvYSY+KHBhaXIudmFsdWUuZ2V0KCkpLmFwaUhhbmRsZXIoKSks
IHBhaXIua2V5KTsKQEAgLTE1NTQsMTcgKzE1NTEsNiBAQCAtIChfV0tJbnNwZWN0b3IgKilfaW5z
cGVjdG9yCiAgICAgcmV0dXJuIG5pbDsKIH0KIAotLSAoaWQgPF9XS0luc3BlY3RvckRlbGVnYXRl
PilfaW5zcGVjdG9yRGVsZWdhdGUKLXsKLSAgICByZXR1cm4gX2luc3BlY3RvckRlbGVnYXRlLT5k
ZWxlZ2F0ZSgpLmF1dG9yZWxlYXNlKCk7Ci19Ci0KLS0gKHZvaWQpX3NldEluc3BlY3RvckRlbGVn
YXRlOihpZDxfV0tJbnNwZWN0b3JEZWxlZ2F0ZT4pZGVsZWdhdGUKLXsKLSAgICBfcGFnZS0+c2V0
SW5zcGVjdG9yQ2xpZW50KF9pbnNwZWN0b3JEZWxlZ2F0ZS0+Y3JlYXRlSW5zcGVjdG9yQ2xpZW50
KCkpOwotICAgIF9pbnNwZWN0b3JEZWxlZ2F0ZS0+c2V0RGVsZWdhdGUoZGVsZWdhdGUpOwotfQot
CiAtIChfV0tGcmFtZUhhbmRsZSAqKV9tYWluRnJhbWUKIHsKICAgICBpZiAoYXV0byogZnJhbWUg
PSBfcGFnZS0+bWFpbkZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDIwYWNmMTVlNzA1NzIxMmRjMGUz
OGQ1Mzc2NDlhZTRmMjUwY2E1YWIuLjMxMWRiMTlhODAxZDQ2ODVkNjk4MzRjMzQ1Y2YzYTNiMDli
ODYyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdJbnRlcm5hbC5oCkBAIC02OCw3ICs2OCw2IEBAIGNsYXNzIEF0dGFjaG1lbnQ7CiBu
YW1lc3BhY2UgV2ViS2l0IHsKIGVudW0gY2xhc3MgQ29udGludWVVbnNhZmVMb2FkIDogYm9vbDsK
IGNsYXNzIEljb25Mb2FkaW5nRGVsZWdhdGU7Ci1jbGFzcyBJbnNwZWN0b3JEZWxlZ2F0ZTsKIGNs
YXNzIE5hdmlnYXRpb25TdGF0ZTsKIGNsYXNzIFJlc291cmNlTG9hZERlbGVnYXRlOwogY2xhc3Mg
U2FmZUJyb3dzaW5nV2FybmluZzsKQEAgLTExMyw3ICsxMTIsNiBAQCBjbGFzcyBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6VUlEZWxlZ2F0ZT4gX3Vp
RGVsZWdhdGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0
ZT4gX2ljb25Mb2FkaW5nRGVsZWdhdGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6UmVz
b3VyY2VMb2FkRGVsZWdhdGU+IF9yZXNvdXJjZUxvYWREZWxlZ2F0ZTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViS2l0OjpJbnNwZWN0b3JEZWxlZ2F0ZT4gX2luc3BlY3RvckRlbGVnYXRlOwogCiAg
ICAgV2Vha09iakNQdHI8aWQgPF9XS1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZT4+IF90ZXh0TWFu
aXB1bGF0aW9uRGVsZWdhdGU7CiAgICAgV2Vha09iakNQdHI8aWQgPF9XS0lucHV0RGVsZWdhdGU+
PiBfaW5wdXREZWxlZ2F0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDA3MTRiMTdhYTc5NTc4NzcyNWIwYmRlMGI3
ZWNmYTg4MjE3ZWY3YzAuLmNhNWJjNWIxYzM0MThjOWFjMzhjOGY5NWZjNDNhNGY1YjY4MzMwMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaApAQCAtMTI2LDcgKzEyNiw2IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRl
Z2VyLCBfV0tSZWN0RWRnZSkgewogQHByb3RvY29sIF9XS0Z1bGxzY3JlZW5EZWxlZ2F0ZTsKIEBw
cm90b2NvbCBfV0tJY29uTG9hZGluZ0RlbGVnYXRlOwogQHByb3RvY29sIF9XS0lucHV0RGVsZWdh
dGU7Ci1AcHJvdG9jb2wgX1dLSW5zcGVjdG9yRGVsZWdhdGU7CiBAcHJvdG9jb2wgX1dLUmVzb3Vy
Y2VMb2FkRGVsZWdhdGU7CiBAcHJvdG9jb2wgX1dLVGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlOwog
CkBAIC0xODUsNyArMTg0LDYgQEAgZm9yIHRoaXMgcHJvcGVydHkuCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgc2V0dGVyPV9zZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uOikgQk9PTCBfYWxsb3dzUmVt
b3RlSW5zcGVjdGlvbjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldFJl
bW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGU6KSBOU1N0cmluZyAqX3JlbW90ZUluc3BlY3Rpb25O
YW1lT3ZlcnJpZGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMiksIGlvcygxMC4wKSk7CiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS0luc3BlY3RvciAqX2luc3BlY3RvciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwotQHByb3BlcnR5IChu
b25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0SW5zcGVjdG9yRGVsZWdhdGU6KSBpZCA8X1dLSW5z
cGVjdG9yRGVsZWdhdGU+IF9pbnNwZWN0b3JEZWxlZ2F0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIF9XS0ZyYW1lSGFuZGxlICpfbWFpbkZyYW1lIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTQuNCksIGlvcygxMi4yKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IuaAppbmRleCBlZTRjMmU5YzY0ZmU1Yjk5MDllMzgyYTIy
OTFiOTU5YTY4NTQxODBhLi5hNTM4OTlmOThlYTBhOGY3YzFlYTE0M2NjY2ZkNmYzNjNhYjUxMTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ci5oCkBAIC0yOCw2ICsyOCw3IEBACiAKIEBjbGFzcyBXS1dlYlZpZXc7CiBAY2xhc3MgX1dLRnJh
bWVIYW5kbGU7CitAcHJvdG9jb2wgX1dLSW5zcGVjdG9yRGVsZWdhdGU7CiAKIE5TX0FTU1VNRV9O
T05OVUxMX0JFR0lOCiAKQEAgLTM2LDcgKzM3LDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29z
KDEwLjE0LjQpLCBpb3MoMTIuMikpCiAKIC0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxB
QkxFOwogCi0vL0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8X1dLSW5zcGVjdG9yRGVs
ZWdhdGU+IGRlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPF9XS0luc3BlY3Rv
ckRlbGVnYXRlPiBkZWxlZ2F0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLV2Vi
VmlldyAqd2ViVmlldzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBpc0Nv
bm5lY3RlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5z
cGVjdG9yLm1tCmluZGV4IDRlNTQ0ZDA3OTllZjYxNjdmM2NkYWZiY2QyYzRhNGJmMzA2ZjE5ZDQu
LjFkODAxYmI0OWE0ZGZlODI4MjkwNDBmZjE0ODU2NGUzZTkxNGE2MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQpAQCAtMjYsNiAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JJbnRlcm5h
bC5oIgogCisjaW1wb3J0ICJJbnNwZWN0b3JEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3
SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
c1Byb3h5LmgiCkBAIC00MCw2ICs0MSwyNSBAQCBAaW1wbGVtZW50YXRpb24gX1dLSW5zcGVjdG9y
CiAKIC8vIE1BUks6IF9XS0luc3BlY3RvciBtZXRob2RzCiAKKy0gKGlkIDxfV0tJbnNwZWN0b3JE
ZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICByZXR1cm4gX2RlbGVnYXRlLT5kZWxlZ2F0ZSgpLmF1
dG9yZWxlYXNlKCk7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVuIG5pbDsKKworICAgIF9kZWxlZ2F0ZSA9
IG1ha2VVbmlxdWU8V2ViS2l0OjpJbnNwZWN0b3JEZWxlZ2F0ZT4oc2VsZik7Cit9CisKKy0gKHZv
aWQpc2V0RGVsZWdhdGU6KGlkPF9XS0luc3BlY3RvckRlbGVnYXRlPilkZWxlZ2F0ZQoreworICAg
IF9pbnNwZWN0b3ItPnNldEluc3BlY3RvckNsaWVudChfZGVsZWdhdGUtPmNyZWF0ZUluc3BlY3Rv
ckNsaWVudCgpKTsKKyAgICBfZGVsZWdhdGUtPnNldERlbGVnYXRlKGRlbGVnYXRlKTsKK30KKwog
LSAoV0tXZWJWaWV3ICopd2ViVmlldwogewogICAgIGlmIChhdXRvKiBwYWdlID0gX2luc3BlY3Rv
ci0+aW5zcGVjdGVkUGFnZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3RvckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRGVsZWdhdGUuaAppbmRleCBjMDVmMDEwMTRkNjVjZjQ3
OGRmZGVmZDE5ZjkzOTMxZDg1ZmIzYzYyLi5hOGZhMDkwY2NlNjMyYTQzNDE5YWNhMGIyODU0NTA2
MGU0YWQyYjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLSW5zcGVjdG9yRGVsZWdhdGUuaApAQCAtMjYsMjAgKzI2LDE5IEBACiAjaW1wb3J0
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24u
aD4KIAotQGNsYXNzIFdLV2ViVmlldzsKIEBjbGFzcyBfV0tJbnNwZWN0b3I7CiAKIEBwcm90b2Nv
bCBfV0tJbnNwZWN0b3JEZWxlZ2F0ZSA8TlNPYmplY3Q+CiBAb3B0aW9uYWwKIAotLyohIEBhYnN0
cmFjdCBDYWxsZWQgd2hlbiB0aGUgV2ViIEluc3BlY3RvciBwcm90b2NvbCBCcm93c2VyIGRvbWFp
biBpcyBlbmFibGVkIGZvciB0aGUgV2ViIEluc3BlY3RvciBpbnN0YW5jZSBhdHRhY2hlZCB0byB0
aGlzIFdLV2ViVmlldy4KLSAgICBAcGFyYW0gaW5zcGVjdG9yIFRoZSBXZWIgSW5zcGVjdG9yIGlu
c3RhbmNlIGF0dGFjaGVkIHRvIHRoaXMgV0tXZWJWaWV3LgorLyohIEBhYnN0cmFjdCBDYWxsZWQg
d2hlbiB0aGUgIEJyb3dzZXIgZG9tYWluIGlzIGVuYWJsZWQgZm9yIHRoZSBhc3NvY2lhdGVkIF9X
S0luc3BlY3Rvci4KKyAgICBAcGFyYW0gaW5zcGVjdG9yIHRoZSBhc3NvY2lhdGVkIGluc3BlY3Rv
ciBmb3Igd2hpY2ggdGhlIGRvbWFpbiBoYXMgYmVlbiBlbmFibGVkLgogICovCi0tICh2b2lkKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGJyb3dzZXJEb21haW5FbmFibGVkRm9ySW5zcGVj
dG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3I7CistICh2b2lkKWluc3BlY3RvckRpZEVuYWJs
ZUJyb3dzZXJEb21haW46KF9XS0luc3BlY3RvciAqKWluc3BlY3RvcjsKIAotLyohIEBhYnN0cmFj
dCBDYWxsZWQgd2hlbiB0aGUgV2ViIEluc3BlY3RvciBwcm90b2NvbCBCcm93c2VyIGRvbWFpbiBp
cyBkaXNhYmxlZCBmb3IgdGhlIFdlYiBJbnNwZWN0b3IgaW5zdGFuY2UgYXR0YWNoZWQgdG8gdGhp
cyBXS1dlYlZpZXcuCi0gICAgQHBhcmFtIGluc3BlY3RvciBUaGUgV2ViIEluc3BlY3RvciBpbnN0
YW5jZSBhdHRhY2hlZCB0byB0aGlzIFdLV2ViVmlldy4KKy8qISBAYWJzdHJhY3QgQ2FsbGVkIHdo
ZW4gdGhlICBCcm93c2VyIGRvbWFpbiBpcyBkaXNhYmxlZCBmb3IgdGhlIGFzc29jaWF0ZWQgX1dL
SW5zcGVjdG9yLgorICAgIEBwYXJhbSBpbnNwZWN0b3IgdGhlIGFzc29jaWF0ZWQgaW5zcGVjdG9y
IGZvciB3aGljaCB0aGUgZG9tYWluIGhhcyBiZWVuIGVuYWJsZWQuCiAgKi8KLS0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYnJvd3NlckRvbWFpbkRpc2FibGVkRm9ySW5zcGVj
dG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3I7CistICh2b2lkKWluc3BlY3RvckRpZERpc2Fi
bGVCcm93c2VyRG9tYWluOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3I7CiAKIEBlbmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JJbnRl
cm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvcklu
dGVybmFsLmgKaW5kZXggYzU2MTdkMjY2YWI3YmQ4Y2I0YWM5ZmFiNmU4OTZmZjMxMTMzNDE1Yi4u
N2ZkYmQ1OGQ5YzczN2NjMjNmMWUwNTM1OTUyMjUxMzhkNzg5M2U5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckludGVybmFsLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckludGVybmFs
LmgKQEAgLTI4LDYgKzI4LDEwIEBACiAjaW1wb3J0ICJXS09iamVjdC5oIgogI2ltcG9ydCAiV2Vi
SW5zcGVjdG9yUHJveHkuaCIKIAorbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBJbnNwZWN0b3JE
ZWxlZ2F0ZTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IFdy
YXBwZXJUcmFpdHM8V2ViSW5zcGVjdG9yUHJveHk+IHsKQEAgLTM5LDUgKzQzLDYgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxXZWJJbnNwZWN0b3JQcm94eT4gewogQGludGVyZmFj
ZSBfV0tJbnNwZWN0b3IgKCkgPFdLT2JqZWN0PiB7CiBAcGFja2FnZQogICAgIEFQSTo6T2JqZWN0
U3RvcmFnZTxXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5PiBfaW5zcGVjdG9yOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJLaXQ6Okluc3BlY3RvckRlbGVnYXRlPiBfZGVsZWdhdGU7CiB9CiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzL0lu
c3BlY3RvckJyb3dzZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvQWdlbnRzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5jcHAKaW5kZXggYzFmZmE2Y2Y2MTQ2NjZl
NGM4YjVlYzViNDNjYzY0ZjgwNzBlNjU5OS4uZmVjMWM4NjBmYzVjNzFiY2M2OWFhZmZlYzc4ZTBh
MzkwMmZlNWMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L0FnZW50cy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9BZ2VudHMvSW5zcGVjdG9yQnJvd3NlckFnZW50LmNwcApAQCAtNzMs
OSArNzMsOCBAQCB2b2lkIEluc3BlY3RvckJyb3dzZXJBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZykKIAogICAgIG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0b3JDb250cm9sbGVy
KCkuc2V0RW5hYmxlZEJyb3dzZXJBZ2VudCh0aGlzKTsKIAotICAgIGF1dG8qIGluc3BlY3RvciA9
IG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0b3IoKTsKLSAgICBBU1NFUlQoaW5zcGVjdG9yKTsKLSAg
ICBtX2luc3BlY3RlZFBhZ2UuaW5zcGVjdG9yQ2xpZW50KCkuYnJvd3NlckRvbWFpbkVuYWJsZWQo
bV9pbnNwZWN0ZWRQYWdlLCAqaW5zcGVjdG9yKTsKKyAgICBpZiAoYXV0byogaW5zcGVjdG9yID0g
bV9pbnNwZWN0ZWRQYWdlLmluc3BlY3RvcigpKQorICAgICAgICBpbnNwZWN0b3ItPmluc3BlY3Rv
ckNsaWVudCgpLmJyb3dzZXJEb21haW5FbmFibGVkKCppbnNwZWN0b3IpOwogfQogCiB2b2lkIElu
c3BlY3RvckJyb3dzZXJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCkBA
IC04OCw3ICs4Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQnJvd3NlckFnZW50OjpkaXNhYmxlKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZykKICAgICBtX2luc3BlY3RlZFBhZ2UuaW5zcGVjdG9yQ29udHJv
bGxlcigpLnNldEVuYWJsZWRCcm93c2VyQWdlbnQobnVsbHB0cik7CiAKICAgICBpZiAoYXV0byog
aW5zcGVjdG9yID0gbV9pbnNwZWN0ZWRQYWdlLmluc3BlY3RvcigpKQotICAgICAgICBtX2luc3Bl
Y3RlZFBhZ2UuaW5zcGVjdG9yQ2xpZW50KCkuYnJvd3NlckRvbWFpbkRpc2FibGVkKG1faW5zcGVj
dGVkUGFnZSwgKmluc3BlY3Rvcik7CisgICAgICAgIGluc3BlY3Rvci0+aW5zcGVjdG9yQ2xpZW50
KCkuYnJvd3NlckRvbWFpbkRpc2FibGVkKCppbnNwZWN0b3IpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckJyb3dzZXJBZ2VudDo6ZXh0ZW5zaW9uc0VuYWJsZWQoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4m
JiBleHRlbnNpb25JRFRvTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckRlbGVnYXRlLmgKaW5kZXggNDAyZjA5N2Zk
ZmNlZDUyYjUzMzgwYzlhMWMyYjY2N2E2NDZiMWVkNy4uZmI0NzJhZTFhNjAzNjc0NTY5NDM0OTM5
YmFiNTcyYzAwZmI4NmI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL0NvY29hL0luc3BlY3RvckRlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckRlbGVnYXRlLmgKQEAgLTI5LDggKzI5LDcg
QEAKICNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+
CiAKLUBjbGFzcyBXS1dlYlZpZXc7Ci0KK0BjbGFzcyBfV0tJbnNwZWN0b3I7CiBAcHJvdG9jb2wg
X1dLSW5zcGVjdG9yRGVsZWdhdGU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDEsNyArNDAs
OCBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBJbnNwZWN0b3JEZWxlZ2F0ZSB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgSW5zcGVjdG9y
RGVsZWdhdGUoV0tXZWJWaWV3ICopOworICAgIGV4cGxpY2l0IEluc3BlY3RvckRlbGVnYXRlKF9X
S0luc3BlY3RvciAqKTsKKyAgICB+SW5zcGVjdG9yRGVsZWdhdGUoKTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxBUEk6Okluc3BlY3RvckNsaWVudD4gY3JlYXRlSW5zcGVjdG9yQ2xpZW50KCk7CiAK
QEAgLTU3LDE4ICs1NywxOCBAQCBwcml2YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgLy8g
QVBJOjpJbnNwZWN0b3JDbGllbnQKLSAgICAgICAgdm9pZCBicm93c2VyRG9tYWluRW5hYmxlZChX
ZWJQYWdlUHJveHkmLCBXZWJJbnNwZWN0b3JQcm94eSYpIG92ZXJyaWRlOwotICAgICAgICB2b2lk
IGJyb3dzZXJEb21haW5EaXNhYmxlZChXZWJQYWdlUHJveHkmLCBXZWJJbnNwZWN0b3JQcm94eSYp
IG92ZXJyaWRlOworICAgICAgICB2b2lkIGJyb3dzZXJEb21haW5FbmFibGVkKFdlYkluc3BlY3Rv
clByb3h5JikgZmluYWw7CisgICAgICAgIHZvaWQgYnJvd3NlckRvbWFpbkRpc2FibGVkKFdlYklu
c3BlY3RvclByb3h5JikgZmluYWw7CiAKICAgICAgICAgSW5zcGVjdG9yRGVsZWdhdGUmIG1faW5z
cGVjdG9yRGVsZWdhdGU7CiAgICAgfTsKIAotICAgIFdlYWtPYmpDUHRyPFdLV2ViVmlldz4gbV93
ZWJWaWV3OworICAgIFdlYWtPYmpDUHRyPF9XS0luc3BlY3Rvcj4gbV9pbnNwZWN0b3I7CiAgICAg
V2Vha09iakNQdHI8aWQgPF9XS0luc3BlY3RvckRlbGVnYXRlPj4gbV9kZWxlZ2F0ZTsKIAogICAg
IHN0cnVjdCB7Ci0gICAgICAgIGJvb2wgd2ViVmlld0Jyb3dzZXJEb21haW5FbmFibGVkRm9ySW5z
cGVjdG9yIDogMTsKLSAgICAgICAgYm9vbCB3ZWJWaWV3QnJvd3NlckRvbWFpbkRpc2FibGVkRm9y
SW5zcGVjdG9yIDogMTsKKyAgICAgICAgYm9vbCBpbnNwZWN0b3JEaWRFbmFibGVCcm93c2VyRG9t
YWluIDogMTsKKyAgICAgICAgYm9vbCBpbnNwZWN0b3JEaWREaXNhYmxlQnJvd3NlckRvbWFpbiA6
IDE7CiAgICAgfSBtX2RlbGVnYXRlTWV0aG9kczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5t
bQppbmRleCBmZjljZGI3YjIyYTUwOTg1Njk3ODc4MGFhYWU2ZGMwNmQzNjU5NzAwLi42MjJlODVk
NjFhMmI2NDU1Y2UwOTgyNGJlMzM2NjQxZDFmOTBiMDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRGVsZWdhdGUubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckRlbGVnYXRl
Lm1tCkBAIC0zMywxMSArMzMsMTMgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLUluc3BlY3Rv
ckRlbGVnYXRlOjpJbnNwZWN0b3JEZWxlZ2F0ZShXS1dlYlZpZXcgKndlYlZpZXcpCi0gICAgOiBt
X3dlYlZpZXcod2ViVmlldykKK0luc3BlY3RvckRlbGVnYXRlOjpJbnNwZWN0b3JEZWxlZ2F0ZShf
V0tJbnNwZWN0b3IgKmluc3BlY3RvcikKKyAgICA6IG1faW5zcGVjdG9yKGluc3BlY3RvcikKIHsK
IH0KIAorSW5zcGVjdG9yRGVsZWdhdGU6On5JbnNwZWN0b3JEZWxlZ2F0ZSgpID0gZGVmYXVsdDsK
Kwogc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5zcGVjdG9yQ2xpZW50PiBJbnNwZWN0b3JEZWxlZ2F0
ZTo6Y3JlYXRlSW5zcGVjdG9yQ2xpZW50KCkKIHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbnNw
ZWN0b3JDbGllbnQ+KCp0aGlzKTsKQEAgLTUyLDggKzU0LDggQEAgdm9pZCBJbnNwZWN0b3JEZWxl
Z2F0ZTo6c2V0RGVsZWdhdGUoaWQgPF9XS0luc3BlY3RvckRlbGVnYXRlPiBkZWxlZ2F0ZSkKIHsK
ICAgICBtX2RlbGVnYXRlID0gZGVsZWdhdGU7CiAKLSAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3QnJvd3NlckRvbWFpbkVuYWJsZWRGb3JJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpicm93c2VyRG9tYWluRW5hYmxlZEZvckluc3Bl
Y3RvcjopXTsKLSAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3QnJvd3NlckRvbWFpbkRpc2Fi
bGVkRm9ySW5zcGVjdG9yID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6YnJvd3NlckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9yOildOworICAgIG1fZGVs
ZWdhdGVNZXRob2RzLmluc3BlY3RvckRpZEVuYWJsZUJyb3dzZXJEb21haW4gPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnNwZWN0b3JEaWRFbmFibGVCcm93c2VyRG9t
YWluOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckRpZERpc2FibGVCcm93c2Vy
RG9tYWluID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdG9y
RGlkRGlzYWJsZUJyb3dzZXJEb21haW46KV07CiB9CiAKIEluc3BlY3RvckRlbGVnYXRlOjpJbnNw
ZWN0b3JDbGllbnQ6Okluc3BlY3RvckNsaWVudChJbnNwZWN0b3JEZWxlZ2F0ZSYgZGVsZWdhdGUp
CkBAIC02MywyOCArNjUsMjggQEAgSW5zcGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckNsaWVudDo6
SW5zcGVjdG9yQ2xpZW50KEluc3BlY3RvckRlbGVnYXRlJiBkZWxlZ2F0ZSkKIAogSW5zcGVjdG9y
RGVsZWdhdGU6Okluc3BlY3RvckNsaWVudDo6fkluc3BlY3RvckNsaWVudCgpID0gZGVmYXVsdDsK
IAotdm9pZCBJbnNwZWN0b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50Ojpicm93c2VyRG9tYWlu
RW5hYmxlZChXZWJQYWdlUHJveHkmLCBXZWJJbnNwZWN0b3JQcm94eSYgaW5zcGVjdG9yKQordm9p
ZCBJbnNwZWN0b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50Ojpicm93c2VyRG9tYWluRW5hYmxl
ZChXZWJJbnNwZWN0b3JQcm94eSYpCiB7Ci0gICAgaWYgKCFtX2luc3BlY3RvckRlbGVnYXRlLm1f
ZGVsZWdhdGVNZXRob2RzLndlYlZpZXdCcm93c2VyRG9tYWluRW5hYmxlZEZvckluc3BlY3RvcikK
KyAgICBpZiAoIW1faW5zcGVjdG9yRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMuaW5zcGVjdG9y
RGlkRW5hYmxlQnJvd3NlckRvbWFpbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgZGVs
ZWdhdGUgPSBtX2luc3BlY3RvckRlbGVnYXRlLm1fZGVsZWdhdGU7CiAgICAgaWYgKCFkZWxlZ2F0
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW2RlbGVnYXRlIF93ZWJWaWV3Om1faW5zcGVjdG9y
RGVsZWdhdGUubV93ZWJWaWV3LmdldCgpLmdldCgpIGJyb3dzZXJEb21haW5FbmFibGVkRm9ySW5z
cGVjdG9yOndyYXBwZXIoaW5zcGVjdG9yKV07CisgICAgW2RlbGVnYXRlIGluc3BlY3RvckRpZEVu
YWJsZUJyb3dzZXJEb21haW46bV9pbnNwZWN0b3JEZWxlZ2F0ZS5tX2luc3BlY3Rvci5nZXQoKS5n
ZXQoKV07CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckNsaWVudDo6YnJv
d3NlckRvbWFpbkRpc2FibGVkKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclByb3h5JiBpbnNw
ZWN0b3IpCit2b2lkIEluc3BlY3RvckRlbGVnYXRlOjpJbnNwZWN0b3JDbGllbnQ6OmJyb3dzZXJE
b21haW5EaXNhYmxlZChXZWJJbnNwZWN0b3JQcm94eSYpCiB7Ci0gICAgaWYgKCFtX2luc3BlY3Rv
ckRlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdCcm93c2VyRG9tYWluRGlzYWJsZWRG
b3JJbnNwZWN0b3IpCisgICAgaWYgKCFtX2luc3BlY3RvckRlbGVnYXRlLm1fZGVsZWdhdGVNZXRo
b2RzLmluc3BlY3RvckRpZERpc2FibGVCcm93c2VyRG9tYWluKQogICAgICAgICByZXR1cm47CiAK
ICAgICBhdXRvJiBkZWxlZ2F0ZSA9IG1faW5zcGVjdG9yRGVsZWdhdGUubV9kZWxlZ2F0ZTsKICAg
ICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbZGVsZWdhdGUgX3dlYlZp
ZXc6bV9pbnNwZWN0b3JEZWxlZ2F0ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgYnJvd3NlckRvbWFp
bkRpc2FibGVkRm9ySW5zcGVjdG9yOndyYXBwZXIoaW5zcGVjdG9yKV07CisgICAgW2RlbGVnYXRl
IGluc3BlY3RvckRpZERpc2FibGVCcm93c2VyRG9tYWluOm1faW5zcGVjdG9yRGVsZWdhdGUubV9p
bnNwZWN0b3IuZ2V0KCkuZ2V0KCldOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJv
eHkuY3BwCmluZGV4IDlkNjdmYmI5YWUyMTU3M2ZkOTU4NDlmZGRmZTgxODA5ZTRkYjhhMmQuLjI5
YThkZDBkNjA1YTFkNTcyMWM3MjI5YTkwMmE0OWEwMWQwZTJlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcApA
QCAtNjgsNiArNjgsNyBAQCBjb25zdCB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5pdGlh
bFdpbmRvd0hlaWdodCA9IDY1MDsKIAogV2ViSW5zcGVjdG9yUHJveHk6OldlYkluc3BlY3RvclBy
b3h5KFdlYlBhZ2VQcm94eSYgaW5zcGVjdGVkUGFnZSkKICAgICA6IG1faW5zcGVjdGVkUGFnZSgm
aW5zcGVjdGVkUGFnZSkKKyAgICAsIG1faW5zcGVjdG9yQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJ
bnNwZWN0b3JDbGllbnQ+KCkpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9jbG9zZUZyb250
ZW5kQWZ0ZXJJbmFjdGl2aXR5VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViSW5zcGVj
dG9yUHJveHk6OmNsb3NlRnJvbnRlbmRBZnRlckluYWN0aXZpdHlUaW1lckZpcmVkKQogI2VuZGlm
CkBAIC03OSw2ICs4MCwxNiBAQCBXZWJJbnNwZWN0b3JQcm94eTo6fldlYkluc3BlY3RvclByb3h5
KCkKIHsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2V0SW5zcGVjdG9yQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6Okluc3BlY3RvckNsaWVudD4mJiBpbnNwZWN0b3JDbGllbnQpCit7
CisgICAgaWYgKCFpbnNwZWN0b3JDbGllbnQpIHsKKyAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQg
PSBtYWtlVW5pcXVlPEFQSTo6SW5zcGVjdG9yQ2xpZW50PigpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBXVEZNb3ZlKGluc3BlY3RvckNsaWVudCk7
Cit9CisKIHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0aW9uTGV2ZWwoKSBjb25z
dAogewogICAgIHJldHVybiBpbnNwZWN0b3JMZXZlbEZvclBhZ2UoaW5zcGVjdGVkUGFnZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clByb3h5LmgKaW5kZXggNDcxZTYwYWZkNzRlMjEzM2MyNjg5MjBhMzE1ZDZmOTFiYzk0YzAwOS4u
ZTkwMDZjNGQyOTNmOWNjYzRlN2VmNDU3NDM0YzczOGU0NjgwNWYyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKQEAg
LTU5LDYgKzU5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENlcnRpZmljYXRlSW5m
bzsKIH0KIAorbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBJbnNwZWN0b3JDbGllbnQ7Cit9CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFtZVByb3h5OwpAQCAtOTAsNiArOTQsOSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKIAorICAgIEFQSTo6SW5zcGVjdG9y
Q2xpZW50JiBpbnNwZWN0b3JDbGllbnQoKSB7IHJldHVybiAqbV9pbnNwZWN0b3JDbGllbnQ7IH0K
KyAgICB2b2lkIHNldEluc3BlY3RvckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbnNwZWN0
b3JDbGllbnQ+JiYpOworCiAgICAgLy8gUHVibGljIEFQSXMKICAgICBXZWJQYWdlUHJveHkqIGlu
c3BlY3RlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RlZFBhZ2U7IH0KICAgICBXZWJQ
YWdlUHJveHkqIGluc3BlY3RvclBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvclBhZ2U7
IH0KQEAgLTI3NSw2ICsyODIsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViUGFnZVByb3h5KiBtX2lu
c3BlY3RlZFBhZ2UgeyBudWxscHRyIH07CiAgICAgV2ViUGFnZVByb3h5KiBtX2luc3BlY3RvclBh
Z2UgeyBudWxscHRyIH07CisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5zcGVjdG9yQ2xpZW50
PiBtX2luc3BlY3RvckNsaWVudDsKIAogICAgIGJvb2wgbV91bmRlclRlc3QgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9pc1Zpc2libGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKaW5kZXggYzI1MGUyMjVkOWM3Nzk4YzU2MGE1ODc1ZTk0MTE0MjU3MDA3
M2Y4Zi4uM2ZhNTVhZGY3YzFkYmFhNTk4YWI1ZjUwYWNiYTIwMTBhMGJjNjIwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5j
bHVkZSAiQVBJSGlzdG9yeUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSUhpdFRlc3RSZXN1bHQuaCIK
ICNpbmNsdWRlICJBUElJY29uTG9hZGluZ0NsaWVudC5oIgotI2luY2x1ZGUgIkFQSUluc3BlY3Rv
ckNsaWVudC5oIgogI2luY2x1ZGUgIkFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgiCiAj
aW5jbHVkZSAiQVBJTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbi5oIgpA
QCAtNDU4LDcgKzQ1Nyw2IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQm
IHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUmVmCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCiAgICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpD
b250ZXh0TWVudUNsaWVudD4oKSkKICNlbmRpZgotICAgICwgbV9pbnNwZWN0b3JDbGllbnQobWFr
ZVVuaXF1ZTxBUEk6Okluc3BlY3RvckNsaWVudD4oKSkKICAgICAsIG1fbmF2aWdhdGlvblN0YXRl
KG1ha2VVbmlxdWU8V2ViTmF2aWdhdGlvblN0YXRlPigpKQogICAgICwgbV9wcm9jZXNzKHByb2Nl
c3MpCiAgICAgLCBtX3BhZ2VHcm91cCgqbV9jb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKSkKQEAg
LTcwMSwxNiArNjk5LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEljb25Mb2FkaW5nQ2xpZW50
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PiYKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRVc2VJY29uTG9hZGluZ0NsaWVudChoYXNDbGllbnQpKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OnNldEluc3BlY3RvckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpJbnNwZWN0b3JDbGllbnQ+JiYgaW5zcGVjdG9yQ2xpZW50KQotewotICAgIGlmICghaW5zcGVj
dG9yQ2xpZW50KSB7Ci0gICAgICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6
Okluc3BlY3RvckNsaWVudD4oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1faW5z
cGVjdG9yQ2xpZW50ID0gV1RGTW92ZShpbnNwZWN0b3JDbGllbnQpOwotfQotCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKHN0ZDo6dW5pcXVlX3B0cjxQYWdlTG9h
ZFN0YXRlOjpPYnNlcnZlcj4mJiBvYnNlcnZlcikKIHsKICAgICBpZiAobV9wYWdlTG9hZFN0YXRl
T2JzZXJ2ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDYyN2Jk
YzUwYTgwZTEwODg4ZDVmZjQzYzJlNDYwYjQzNzlmM2Y1OWQuLjQ4ZThhMDdiZmIzYzYyYzRmNjc3
ODRiMjNlNGZmMDYxY2I5YWQxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC0xOTEsNyArMTkxLDYgQEAgY2xhc3MgRm9ybUNsaWVudDsKIGNsYXNzIEZ1bGxzY3Jl
ZW5DbGllbnQ7CiBjbGFzcyBIaXN0b3J5Q2xpZW50OwogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQ7
Ci1jbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBMb2FkZXJDbGllbnQ7CiBjbGFzcyBOYXZp
Z2F0aW9uOwogY2xhc3MgTmF2aWdhdGlvbkNsaWVudDsKQEAgLTU4Miw5ICs1ODEsNiBAQCBwdWJs
aWM6CiAgICAgQVBJOjpJY29uTG9hZGluZ0NsaWVudCYgaWNvbkxvYWRpbmdDbGllbnQoKSB7IHJl
dHVybiAqbV9pY29uTG9hZGluZ0NsaWVudDsgfQogICAgIHZvaWQgc2V0SWNvbkxvYWRpbmdDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+JiYpOwogCi0gICAgQVBJ
OjpJbnNwZWN0b3JDbGllbnQmIGluc3BlY3RvckNsaWVudCgpIHsgcmV0dXJuICptX2luc3BlY3Rv
ckNsaWVudDsgfQotICAgIHZvaWQgc2V0SW5zcGVjdG9yQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6Okluc3BlY3RvckNsaWVudD4mJik7Ci0KICAgICB2b2lkIHNldFBhZ2VMb2FkU3RhdGVPYnNl
cnZlcihzdGQ6OnVuaXF1ZV9wdHI8UGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXI+JiYpOwogCiAgICAg
dm9pZCBpbml0aWFsaXplV2ViUGFnZSgpOwpAQCAtMjM4MSw3ICsyMzc3LDYgQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDb250
ZXh0TWVudUNsaWVudD4gbV9jb250ZXh0TWVudUNsaWVudDsKICNlbmRpZgotICAgIHN0ZDo6dW5p
cXVlX3B0cjxBUEk6Okluc3BlY3RvckNsaWVudD4gbV9pbnNwZWN0b3JDbGllbnQ7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudD4gbV9pbmplY3RlZEJ1bmRs
ZUNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXI+IG1f
cGFnZUxvYWRTdGF0ZU9ic2VydmVyOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVsZWdhdGUubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGMxM2RjMjY4NmY4NDExZDY2NjU3ZjA4MDNjODY2ZjdmMDg4YzFhYgotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JE
ZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlV0aWxpdGllcy5oIgorI2lt
cG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0
aW5nLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yLmg+CisjaW1wb3J0IDxXZWJLaXQv
X1dLSW5zcGVjdG9yRGVsZWdhdGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lt
cG9ydCA8d3RmL0RlYnVnVXRpbGl0aWVzLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisKK3N0YXRp
YyBib29sIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CitzdGF0aWMgYm9v
bCBicm93c2VyRG9tYWluRW5hYmxlZEZvckluc3BlY3RvckNhbGxlZCA9IGZhbHNlOworc3RhdGlj
IGJvb2wgYnJvd3NlckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CisK
K0BpbnRlcmZhY2UgSW5zcGVjdG9yRGVsZWdhdGUgOiBOU09iamVjdCA8X1dLSW5zcGVjdG9yRGVs
ZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBJbnNwZWN0b3JEZWxlZ2F0ZQorCistICh2
b2lkKWluc3BlY3RvckRpZEVuYWJsZUJyb3dzZXJEb21haW46KF9XS0luc3BlY3RvciAqKWluc3Bl
Y3RvcgoreworICAgIGJyb3dzZXJEb21haW5FbmFibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gdHJ1
ZTsKKworICAgIC8vIFdhaXQgZm9yIHRoZSBCcm93c2VyIGRvbWFpbiB0byBiZSBlbmFibGVkIGJl
Zm9yZSBjbG9zaW5nIFdlYiBJbnNwZWN0b3IsIHdoaWNoIHdpbGwKKyAgICAvLyBhdXRvbWF0aWNh
bGx5IGRpc2FibGUgdGhlIGRvbWFpbi4KKyAgICBbaW5zcGVjdG9yIGNsb3NlXTsKK30KKworLSAo
dm9pZClpbnNwZWN0b3JEaWREaXNhYmxlQnJvd3NlckRvbWFpbjooX1dLSW5zcGVjdG9yICopaW5z
cGVjdG9yCit7CisgICAgYnJvd3NlckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0g
dHJ1ZTsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIFVJRGVsZWdhdGUgOiBOU09iamVjdCA8V0tV
SURlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gVUlEZWxlZ2F0ZQorCistICh2b2lk
KV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOihf
V0tJbnNwZWN0b3IgKilpbnNwZWN0b3IKK3sKKyAgICBkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNh
bGxlZCA9IGZhbHNlOworICAgIGJyb3dzZXJEb21haW5FbmFibGVkRm9ySW5zcGVjdG9yQ2FsbGVk
ID0gZmFsc2U7CisgICAgYnJvd3NlckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0g
ZmFsc2U7CisKKyAgICBFWFBFQ1RfRVEod2ViVmlldy5faW5zcGVjdG9yLCBpbnNwZWN0b3IpOwor
CisgICAgYXV0byBpbnNwZWN0b3JEZWxlZ2F0ZSA9IGFkb3B0TlMoW0luc3BlY3RvckRlbGVnYXRl
IG5ld10pOworICAgIFtpbnNwZWN0b3Igc2V0RGVsZWdhdGU6aW5zcGVjdG9yRGVsZWdhdGUuZ2V0
KCldOworCisgICAgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSB0cnVlOworfQorCitA
ZW5kCisKK1RFU1QoV2ViS2l0X1dLSW5zcGVjdG9yRGVsZWdhdGUsIERpZE5vdGlmeUZvckxvY2Fs
SW5zcGVjdG9yKQoreworICAgIFNMRUVQX1RIUkVBRF9GT1JfREVCVUdHRVIoKTsKKworICAgIGF1
dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9u
IG5ld10pOworICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2VzLl9kZXZl
bG9wZXJFeHRyYXNFbmFibGVkID0gWUVTOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gdWlE
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1VJRGVsZWdhdGUgbmV3XSk7CisKKyAgICBbd2ViVmlldyBzZXRV
SURlbGVnYXRlOnVpRGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5n
OkAiPGhlYWQ+PHRpdGxlPlRlc3QgcGFnZSB0byBiZSBpbnNwZWN0ZWQ8L3RpdGxlPjwvaGVhZD48
Ym9keT48cD5GaWxsZXIgY29udGVudDwvcD48L2JvZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29tLyJdXTsKKworICAgIEVYUEVDVF9GQUxTRSh3ZWJW
aWV3LmdldCgpLl9oYXNJbnNwZWN0b3JGcm9udGVuZCk7CisKKyAgICBbW3dlYlZpZXcgX2luc3Bl
Y3Rvcl0gc2hvd107CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEF0dGFjaExv
Y2FsSW5zcGVjdG9yQ2FsbGVkKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmJyb3dz
ZXJEb21haW5FbmFibGVkRm9ySW5zcGVjdG9yQ2FsbGVkKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmJyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3RvckNhbGxlZCk7Cit9CisK
KyNlbmRpZiAvLyBQTEFURk9STShNQUMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407799</attachid>
            <date>2020-09-02 13:50:10 -0700</date>
            <delta_ts>2020-09-10 13:45:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215961-20200902135009.patch</filename>
            <type>text/plain</type>
            <size>49611</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2Mzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc4ZDRhM2RmMTZiNGJhYmRk
YmQ5ZjZkNTgyOTdmNDE1ZGFhM2M0YmYuLjAwODcyYWFhNjZiZjk5YTI2Yzc1MGRjMDM4NjQ5Njlk
MDAwM2YwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMjAtMDktMDIgIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogX1dLSW5zcGVj
dG9yRGVsZWdhdGUgc2hvdWxkIGJlIGF0dGFjaGVkIHRvIF9XS0luc3BlY3RvciBub3QgV0tXZWJW
aWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU5
NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3Zl
IF9XS0luc3BlY3RvckRlbGVnYXRlIHRvIGJlIGEgcHJvcGVydHkgb2YgX1dLSW5zcGVjdG9yLiBJ
ZiB0aGVyZQorICAgICAgICBpcyBubyBfV0tJbnNwZWN0b3IgYXZhaWxhYmxlIChpLmUuIGZvciBp
T1MpLCB0aGUgZGVsZWdhdGUgY2Fubm90IGJlIHNldC4KKworICAgICAgICBBcyBwYXJ0IG9mIHRo
aXMgY2hhbmdlLCBtb3ZlIC1kaWRBdHRhY2hMb2NhbEluc3BlY3RvcjogYmFjayB0byBVSURlbGVn
YXRlUHJpdmF0ZS4KKyAgICAgICAgVGhpcyBkZWxlZ2F0ZSBtZXRob2QgaXMgY2FsbGVkIGp1c3Qg
YXMgdGhlIGluc3BlY3RvciBpcyBzaG93biwgc28gdGhlcmUgd291bGQKKyAgICAgICAgYmUgbm8g
d2F5IHRvIGFjdCB1cG9uIHRoaXMgbWVzc2FnZSBpZiBpdCB3ZXJlIHBhcnQgb2YgX1dLSW5zcGVj
dG9yRGVsZWdhdGUuCisgICAgICAgIE5vdywgLWRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOiBpcyB0
aGUgZGVzaWduYXRlZCB0aW1lIHRvIGF0dGFjaCBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIEFQSSB0ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Okluc3BlY3RvckNsaWVu
dDo6YnJvd3NlckRvbWFpbkVuYWJsZWQpOgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JDbGllbnQ6
OmJyb3dzZXJEb21haW5EaXNhYmxlZCk6CisgICAgICAgIChBUEk6Okluc3BlY3RvckNsaWVudDo6
ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmRpZEF0dGFjaExvY2Fs
SW5zcGVjdG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVBy
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfaW5zcGVjdG9yRGVsZWdhdGVdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9zZXRJbnNwZWN0b3JEZWxlZ2F0ZTpdKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0luc3BlY3Rvci5tbToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yIGRlYWxsb2NdKTogQWRk
ZWQuCisgICAgICAgICgtW19XS0luc3BlY3RvciBkZWxlZ2F0ZV0pOiBBZGRlZC4KKyAgICAgICAg
KC1bX1dLSW5zcGVjdG9yIHNldERlbGVnYXRlOl0pOiBBZGRlZC4gU2luY2UgX1dLSW5zcGVjdG9y
L1dlYkluc3BlY3RvclByb3h5IGlzIGFsd2F5cworICAgICAgICBjcmVhdGVkIGludGVybmFsbHkg
aW5zdGVhZCBvZiB2aWEgT2JqQyBpbml0aWFsaXplciwgd2UgbmVlZCB0byBpbml0aWFsaXplIGl2
YXJzIGJlZm9yZQorICAgICAgICB1c2luZyB0aGVtLCBhcyB0aGVyZSBpcyBubyBvdGhlciBwbGFj
ZSBmb3IgdGhlbSB0byBiZSBpbml0aWFsaXplZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLSW5zcGVjdG9yRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3RvckludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAg
ICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0
OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudDo6ZW5hYmxlKToKKyAgICAg
ICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckRlbGVnYXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5tbToKKyAgICAgICAg
KFdlYktpdDo6SW5zcGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckRlbGVnYXRlKToKKyAgICAgICAg
KFdlYktpdDo6SW5zcGVjdG9yRGVsZWdhdGU6OnNldERlbGVnYXRlKToKKyAgICAgICAgKFdlYktp
dDo6SW5zcGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckNsaWVudDo6YnJvd3NlckRvbWFpbkVuYWJs
ZWQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50
Ojpicm93c2VyRG9tYWluRGlzYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JEZWxl
Z2F0ZTo6SW5zcGVjdG9yQ2xpZW50OjpkaWRBdHRhY2hMb2NhbEluc3BlY3Rvcik6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JDbGllbnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6V2ViSW5zcGVjdG9yUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6c2V0SW5zcGVjdG9yQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6Om9wZW5Mb2NhbEluc3BlY3RvckZyb250ZW5k
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6aW5zcGVjdG9yQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpX
ZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEluc3BlY3Rv
ckNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgIFNpbWlsYXIgdG8gdGhlIENvY29hIFNQSSwgbW92
ZSBJbnNwZWN0b3JDbGllbnQgZnJvbSBXZWJQYWdlUHJveHkKKyAgICAgICAgdG8gV2ViSW5zcGVj
dG9yUHJveHkuCisKIDIwMjAtMDktMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggY3Jhc2ggZHVyaW5nIFdlYlBhZ2UgY29uc3RydWN0
b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JDbGllbnQu
aAppbmRleCAzMjJhMWQ2YWZhODBiY2Q4YjY3NmVkYTI1MDVkMDZkYTI2MWI5MWZlLi45MzU0OTc0
ZTc0MGZhYTdmZTI2Y2YzMTRkMzVmMmJmZWE2YmYzYzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNsaWVudC5oCkBAIC0yNyw3ICsyNyw2IEBACiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViSW5zcGVjdG9yUHJveHk7Ci1jbGFzcyBXZWJQ
YWdlUHJveHk7CiB9CiAKIG5hbWVzcGFjZSBBUEkgewpAQCAtMzcsOSArMzYsOCBAQCBjbGFzcyBJ
bnNwZWN0b3JDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkluc3BlY3RvckNsaWVudCgp
ID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hMb2NhbEluc3BlY3RvcihX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHkmKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgYnJvd3NlckRvbWFpbkVuYWJsZWQoV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGJyb3dz
ZXJEb21haW5EaXNhYmxlZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViSW5zcGVj
dG9yUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYnJvd3NlckRvbWFpbkVuYWJsZWQoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBicm93c2VyRG9t
YWluRGlzYWJsZWQoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eSYpIHsgfQogfTsKIAogfSAvLyBu
YW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCmlu
ZGV4IDJlNWJlNjViZGZkY2NiODg4OTE1ZDA4ZGY4NmFiZGE3NDFhYWRjYjUuLmNlN2ZjMWFlMWZh
OWJiNGM4MmE4ZDY3NDZjMjgxOTRhNThiZWE5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElVSUNsaWVudC5oCkBAIC0yMDEsNiArMjAxLDggQEAgcHVibGljOgogI2lmIEVOQUJM
RShXRUJfQVVUSE4pCiAgICAgdmlydHVhbCB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwo
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgV2ViS2l0OjpX
ZWJGcmFtZVByb3h5JiwgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxSZXN1bHQ6OlVuYXZhaWxhYmxlKTsgfQogI2VuZGlmCisKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
QXR0YWNoTG9jYWxJbnNwZWN0b3IoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5JikgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5o
CmluZGV4IDZkMGE1NzBkNTVjNmFiODIwY2Y3YjllYmExNTM1NDhmYjA0YWY0ZGEuLmRiMDYwNDJi
MTM5OTg0YWU5NTRmY2EzMzMzZmFhM2FhM2E2MTg0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaApAQCAtMjQ3
LDYgKzI0NywxMSBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAodm9pZClfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnU6KE5TTWVudSAq
KW1lbnUgZm9yRWxlbWVudDooX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mbyAqKWVsZW1lbnQgdXNl
ckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKE5TTWVudSAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjE0KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFBlcmZv
cm1EcmFnT3BlcmF0aW9uOihCT09MKWhhbmRsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
NC40KSk7CiAKKy8qISBAYWJzdHJhY3QgQ2FsbGVkIHdoZW4gYSBXZWIgSW5zcGVjdG9yIGluc3Rh
bmNlIGlzIGF0dGFjaGVkIHRvIHRoaXMgV0tXZWJWaWV3LiBUaGlzIGlzIG5vdCBjYWxsZWQgaW4g
dGhlIGNhc2Ugb2YgcmVtb3RlIGluc3BlY3Rpb24uCisgICAgQHBhcmFtIGluc3BlY3RvciBUaGUg
V2ViIEluc3BlY3RvciBpbnN0YW5jZSBhdHRhY2hlZCB0byB0aGlzIFdLV2ViVmlldy4KKyAqLwor
LSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRBdHRhY2hMb2NhbEluc3Bl
Y3RvcjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSkpOworCiAjZW5kaWYgLy8gIVRBUkdFVF9PU19JUEhPTkUKIAogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggY2U1MTRi
OTIxMWM0OGE2MjhiYTdjNmI2Y2ZkNTUyMGU1OThhNjJlZi4uOTk4NGMyYzFiOWMzNjZlOTZjYTU2
M2RiMWQxNzM5ODAwMDI5NmI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0zOCw3ICszOCw2IEBACiAjaW1wb3J0ICJGdWxsc2NyZWVu
Q2xpZW50LmgiCiAjaW1wb3J0ICJHbG9iYWxGaW5kSW5QYWdlU3RhdGUuaCIKICNpbXBvcnQgIklj
b25Mb2FkaW5nRGVsZWdhdGUuaCIKLSNpbXBvcnQgIkluc3BlY3RvckRlbGVnYXRlLmgiCiAjaW1w
b3J0ICJMZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNp
bXBvcnQgIk1lZGlhVXRpbGl0aWVzLmgiCkBAIC0xMDMsNyArMTAyLDYgQEAKICNpbXBvcnQgIl9X
S0Z1bGxzY3JlZW5EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLSGl0VGVzdFJlc3VsdEludGVybmFs
LmgiCiAjaW1wb3J0ICJfV0tJbnB1dERlbGVnYXRlLmgiCi0jaW1wb3J0ICJfV0tJbnNwZWN0b3JE
ZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIl9X
S1JlbW90ZU9iamVjdFJlZ2lzdHJ5SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1Nlc3Npb25TdGF0
ZUludGVybmFsLmgiCkBAIC0zOTgsNyArMzk2LDYgQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogCiAg
ICAgX2ljb25Mb2FkaW5nRGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6SWNvbkxvYWRpbmdE
ZWxlZ2F0ZT4oc2VsZik7CiAgICAgX3Jlc291cmNlTG9hZERlbGVnYXRlID0gbWFrZVVuaXF1ZTxX
ZWJLaXQ6OlJlc291cmNlTG9hZERlbGVnYXRlPihzZWxmKTsKLSAgICBfaW5zcGVjdG9yRGVsZWdh
dGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6SW5zcGVjdG9yRGVsZWdhdGU+KHNlbGYpOwogCiAgICAg
Zm9yIChhdXRvJiBwYWlyIDogcGFnZUNvbmZpZ3VyYXRpb24tPnVybFNjaGVtZUhhbmRsZXJzKCkp
CiAgICAgICAgIF9wYWdlLT5zZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFdlYktpdDo6V2Vi
VVJMU2NoZW1lSGFuZGxlckNvY29hOjpjcmVhdGUoc3RhdGljX2Nhc3Q8V2ViS2l0OjpXZWJVUkxT
Y2hlbWVIYW5kbGVyQ29jb2EmPihwYWlyLnZhbHVlLmdldCgpKS5hcGlIYW5kbGVyKCkpLCBwYWly
LmtleSk7CkBAIC0xNTUzLDE3ICsxNTUwLDYgQEAgLSAoX1dLSW5zcGVjdG9yICopX2luc3BlY3Rv
cgogICAgIHJldHVybiBuaWw7CiB9CiAKLS0gKGlkIDxfV0tJbnNwZWN0b3JEZWxlZ2F0ZT4pX2lu
c3BlY3RvckRlbGVnYXRlCi17Ci0gICAgcmV0dXJuIF9pbnNwZWN0b3JEZWxlZ2F0ZS0+ZGVsZWdh
dGUoKS5hdXRvcmVsZWFzZSgpOwotfQotCi0tICh2b2lkKV9zZXRJbnNwZWN0b3JEZWxlZ2F0ZToo
aWQ8X1dLSW5zcGVjdG9yRGVsZWdhdGU+KWRlbGVnYXRlCi17Ci0gICAgX3BhZ2UtPnNldEluc3Bl
Y3RvckNsaWVudChfaW5zcGVjdG9yRGVsZWdhdGUtPmNyZWF0ZUluc3BlY3RvckNsaWVudCgpKTsK
LSAgICBfaW5zcGVjdG9yRGVsZWdhdGUtPnNldERlbGVnYXRlKGRlbGVnYXRlKTsKLX0KLQogLSAo
X1dLRnJhbWVIYW5kbGUgKilfbWFpbkZyYW1lCiB7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gX3Bh
Z2UtPm1haW5GcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRleCAyMGFjZjE1ZTcwNTcyMTJkYzBlMzhkNTM3
NjQ5YWU0ZjI1MGNhNWFiLi4zMTFkYjE5YTgwMWQ0Njg1ZDY5ODM0YzM0NWNmM2EzYjA5Yjg2MmRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3SW50ZXJuYWwuaApAQCAtNjgsNyArNjgsNiBAQCBjbGFzcyBBdHRhY2htZW50OwogbmFtZXNw
YWNlIFdlYktpdCB7CiBlbnVtIGNsYXNzIENvbnRpbnVlVW5zYWZlTG9hZCA6IGJvb2w7CiBjbGFz
cyBJY29uTG9hZGluZ0RlbGVnYXRlOwotY2xhc3MgSW5zcGVjdG9yRGVsZWdhdGU7CiBjbGFzcyBO
YXZpZ2F0aW9uU3RhdGU7CiBjbGFzcyBSZXNvdXJjZUxvYWREZWxlZ2F0ZTsKIGNsYXNzIFNhZmVC
cm93c2luZ1dhcm5pbmc7CkBAIC0xMTMsNyArMTEyLDYgQEAgY2xhc3MgVmlld0dlc3R1cmVDb250
cm9sbGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlVJRGVsZWdhdGU+IF91aURlbGVn
YXRlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU+IF9p
Y29uTG9hZGluZ0RlbGVnYXRlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlJlc291cmNl
TG9hZERlbGVnYXRlPiBfcmVzb3VyY2VMb2FkRGVsZWdhdGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFdlYktpdDo6SW5zcGVjdG9yRGVsZWdhdGU+IF9pbnNwZWN0b3JEZWxlZ2F0ZTsKIAogICAgIFdl
YWtPYmpDUHRyPGlkIDxfV0tUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGU+PiBfdGV4dE1hbmlwdWxh
dGlvbkRlbGVnYXRlOwogICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tJbnB1dERlbGVnYXRlPj4gX2lu
cHV0RGVsZWdhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCAwNzE0YjE3YWE3OTU3ODc3MjViMGJkZTBiN2VjZmE4
ODIxN2VmN2MwLi5jYTViYzViMWMzNDE4YzlhYzM4YzhmOTVmYzQzYTRmNWI2ODMzMDBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmgKQEAgLTEyNiw3ICsxMjYsNiBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwg
X1dLUmVjdEVkZ2UpIHsKIEBwcm90b2NvbCBfV0tGdWxsc2NyZWVuRGVsZWdhdGU7CiBAcHJvdG9j
b2wgX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZTsKIEBwcm90b2NvbCBfV0tJbnB1dERlbGVnYXRlOwot
QHByb3RvY29sIF9XS0luc3BlY3RvckRlbGVnYXRlOwogQHByb3RvY29sIF9XS1Jlc291cmNlTG9h
ZERlbGVnYXRlOwogQHByb3RvY29sIF9XS1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZTsKIApAQCAt
MTg1LDcgKzE4NCw2IEBAIGZvciB0aGlzIHByb3BlcnR5LgogQHByb3BlcnR5IChub25hdG9taWMs
IHNldHRlcj1fc2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbjopIEJPT0wgX2FsbG93c1JlbW90ZUlu
c3BlY3Rpb247CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRSZW1vdGVJ
bnNwZWN0aW9uTmFtZU92ZXJyaWRlOikgTlNTdHJpbmcgKl9yZW1vdGVJbnNwZWN0aW9uTmFtZU92
ZXJyaWRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3MoMTAuMCkpOwogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBfV0tJbnNwZWN0b3IgKl9pbnNwZWN0b3IgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKLUBwcm9wZXJ0eSAobm9uYXRv
bWljLCB3ZWFrLCBzZXR0ZXI9X3NldEluc3BlY3RvckRlbGVnYXRlOikgaWQgPF9XS0luc3BlY3Rv
ckRlbGVnYXRlPiBfaW5zcGVjdG9yRGVsZWdhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBfV0tGcmFtZUhhbmRsZSAqX21haW5GcmFtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjE0LjQpLCBpb3MoMTIuMikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLSW5zcGVjdG9yLmgKaW5kZXggZTM1ZjdhY2FmODI2NzM2M2JhZWQ0NDJjZTI0M2I4
MDk4ZGZhY2I1Yy4uYTUzODk5Zjk4ZWEwYThmN2MxZWExNDNjY2NmZDZmMzYzYWI1MTE1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IuaApA
QCAtMjgsNiArMjgsNyBAQAogCiBAY2xhc3MgV0tXZWJWaWV3OwogQGNsYXNzIF9XS0ZyYW1lSGFu
ZGxlOworQHByb3RvY29sIF9XS0luc3BlY3RvckRlbGVnYXRlOwogCiBOU19BU1NVTUVfTk9OTlVM
TF9CRUdJTgogCkBAIC0zNiw2ICszNyw4IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4x
NC40KSwgaW9zKDEyLjIpKQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsK
IAorQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxfV0tJbnNwZWN0b3JEZWxlZ2F0ZT4g
ZGVsZWdhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1dlYlZpZXcgKndlYlZp
ZXc7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgaXNDb25uZWN0ZWQ7CiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgaXNWaXNpYmxlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KaW5kZXggYjZi
NGMxZWVkMjNiMGEzODkwY2RhNDAyYmVkODQzNTFhNDRhMjkyMC4uNWIwOTJkNDI3ZjEzNTAzMzlh
YWNhMjI4MzFlYzk1OTcyYTQzZjVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIl9XS0luc3BlY3RvckludGVybmFsLmgiCiAKKyNpbXBvcnQgIklu
c3BlY3RvckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKQEAgLTM4LDgg
KzM5LDI5IEBACiAKIEBpbXBsZW1lbnRhdGlvbiBfV0tJbnNwZWN0b3IKIAorLSAodm9pZClkZWFs
bG9jCit7CisgICAgX2luc3BlY3Rvci0+fldlYkluc3BlY3RvclByb3h5KCk7CisKKyAgICBbc3Vw
ZXIgZGVhbGxvY107Cit9CisKIC8vIE1BUks6IF9XS0luc3BlY3RvciBtZXRob2RzCiAKKy0gKGlk
IDxfV0tJbnNwZWN0b3JEZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICByZXR1cm4gX2RlbGVnYXRl
LT5kZWxlZ2F0ZSgpLmF1dG9yZWxlYXNlKCk7Cit9CisKKy0gKHZvaWQpc2V0RGVsZWdhdGU6KGlk
PF9XS0luc3BlY3RvckRlbGVnYXRlPilkZWxlZ2F0ZQoreworICAgIGlmICghX2RlbGVnYXRlKQor
ICAgICAgICBfZGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6SW5zcGVjdG9yRGVsZWdhdGU+
KHNlbGYpOworCisgICAgX2luc3BlY3Rvci0+c2V0SW5zcGVjdG9yQ2xpZW50KF9kZWxlZ2F0ZS0+
Y3JlYXRlSW5zcGVjdG9yQ2xpZW50KCkpOworICAgIF9kZWxlZ2F0ZS0+c2V0RGVsZWdhdGUoZGVs
ZWdhdGUpOworfQorCiAtIChXS1dlYlZpZXcgKil3ZWJWaWV3CiB7CiAgICAgaWYgKGF1dG8qIHBh
Z2UgPSBfaW5zcGVjdG9yLT5pbnNwZWN0ZWRQYWdlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRGVsZWdhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oCmluZGV4IDAy
YmQxNmJlY2M1ZDQ3OWRiODI0ODY2ZjZlYmY0N2UwNGQzMDcwNGEuLmE4ZmEwOTBjY2U2MzJhNDM0
MTlhY2EwYjI4NTQ1MDYwZTRhZDJiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oCkBAIC0yNiwyNSArMjYs
MTkgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLRm91bmRhdGlvbi5oPgogCi1AY2xhc3MgV0tXZWJWaWV3OwogQGNsYXNzIF9XS0luc3BlY3Rv
cjsKIAogQHByb3RvY29sIF9XS0luc3BlY3RvckRlbGVnYXRlIDxOU09iamVjdD4KIEBvcHRpb25h
bAogCi0vKiEgQGFic3RyYWN0IENhbGxlZCB3aGVuIGEgV2ViIEluc3BlY3RvciBpbnN0YW5jZSBp
cyBhdHRhY2hlZCB0byB0aGlzIFdLV2ViVmlldy4gVGhpcyBpcyBub3QgY2FsbGVkIGluIHRoZSBj
YXNlIG9mIHJlbW90ZSBpbnNwZWN0aW9uLgotICAgIEBwYXJhbSBpbnNwZWN0b3IgVGhlIFdlYiBJ
bnNwZWN0b3IgaW5zdGFuY2UgYXR0YWNoZWQgdG8gdGhpcyBXS1dlYlZpZXcuCisvKiEgQGFic3Ry
YWN0IENhbGxlZCB3aGVuIHRoZSAgQnJvd3NlciBkb21haW4gaXMgZW5hYmxlZCBmb3IgdGhlIGFz
c29jaWF0ZWQgX1dLSW5zcGVjdG9yLgorICAgIEBwYXJhbSBpbnNwZWN0b3IgdGhlIGFzc29jaWF0
ZWQgaW5zcGVjdG9yIGZvciB3aGljaCB0aGUgZG9tYWluIGhhcyBiZWVuIGVuYWJsZWQuCiAgKi8K
LS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQXR0YWNoTG9jYWxJbnNw
ZWN0b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3RvcjsKKy0gKHZvaWQpaW5zcGVjdG9yRGlkRW5h
YmxlQnJvd3NlckRvbWFpbjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yOwogCi0vKiEgQGFic3Ry
YWN0IENhbGxlZCB3aGVuIHRoZSBXZWIgSW5zcGVjdG9yIHByb3RvY29sIEJyb3dzZXIgZG9tYWlu
IGlzIGVuYWJsZWQgZm9yIHRoZSBXZWIgSW5zcGVjdG9yIGluc3RhbmNlIGF0dGFjaGVkIHRvIHRo
aXMgV0tXZWJWaWV3LgotICAgIEBwYXJhbSBpbnNwZWN0b3IgVGhlIFdlYiBJbnNwZWN0b3IgaW5z
dGFuY2UgYXR0YWNoZWQgdG8gdGhpcyBXS1dlYlZpZXcuCisvKiEgQGFic3RyYWN0IENhbGxlZCB3
aGVuIHRoZSAgQnJvd3NlciBkb21haW4gaXMgZGlzYWJsZWQgZm9yIHRoZSBhc3NvY2lhdGVkIF9X
S0luc3BlY3Rvci4KKyAgICBAcGFyYW0gaW5zcGVjdG9yIHRoZSBhc3NvY2lhdGVkIGluc3BlY3Rv
ciBmb3Igd2hpY2ggdGhlIGRvbWFpbiBoYXMgYmVlbiBlbmFibGVkLgogICovCi0tICh2b2lkKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGJyb3dzZXJEb21haW5FbmFibGVkRm9ySW5zcGVj
dG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3I7Ci0KLS8qISBAYWJzdHJhY3QgQ2FsbGVkIHdo
ZW4gdGhlIFdlYiBJbnNwZWN0b3IgcHJvdG9jb2wgQnJvd3NlciBkb21haW4gaXMgZGlzYWJsZWQg
Zm9yIHRoZSBXZWIgSW5zcGVjdG9yIGluc3RhbmNlIGF0dGFjaGVkIHRvIHRoaXMgV0tXZWJWaWV3
LgotICAgIEBwYXJhbSBpbnNwZWN0b3IgVGhlIFdlYiBJbnNwZWN0b3IgaW5zdGFuY2UgYXR0YWNo
ZWQgdG8gdGhpcyBXS1dlYlZpZXcuCi0gKi8KLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgYnJvd3NlckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9yOihfV0tJbnNwZWN0b3Ig
KilpbnNwZWN0b3I7CistICh2b2lkKWluc3BlY3RvckRpZERpc2FibGVCcm93c2VyRG9tYWluOihf
V0tJbnNwZWN0b3IgKilpbnNwZWN0b3I7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JJbnRlcm5hbC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckludGVybmFsLmgKaW5kZXggYzU2
MTdkMjY2YWI3YmQ4Y2I0YWM5ZmFiNmU4OTZmZjMxMTMzNDE1Yi4uN2ZkYmQ1OGQ5YzczN2NjMjNm
MWUwNTM1OTUyMjUxMzhkNzg5M2U5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0luc3BlY3RvckludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckludGVybmFsLmgKQEAgLTI4LDYgKzI4LDEw
IEBACiAjaW1wb3J0ICJXS09iamVjdC5oIgogI2ltcG9ydCAiV2ViSW5zcGVjdG9yUHJveHkuaCIK
IAorbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBJbnNwZWN0b3JEZWxlZ2F0ZTsKK30KKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8V2ViSW5z
cGVjdG9yUHJveHk+IHsKQEAgLTM5LDUgKzQzLDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBl
clRyYWl0czxXZWJJbnNwZWN0b3JQcm94eT4gewogQGludGVyZmFjZSBfV0tJbnNwZWN0b3IgKCkg
PFdLT2JqZWN0PiB7CiBAcGFja2FnZQogICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6Oldl
Ykluc3BlY3RvclByb3h5PiBfaW5zcGVjdG9yOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6
Okluc3BlY3RvckRlbGVnYXRlPiBfZGVsZWdhdGU7CiB9CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggY2RlZmQ0Mjg3YjFmNWIyMjIyZDUwYWM2
ZGFiMTk1ZGFiMjM2ZmMzNC4uZjJiNWE3YjI2ZWRhNWY2Yzg4NGIxOWJjY2MwNGIwOTA4NTQ5YWM2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtMTI0
LDYgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQ
cm94eSYsIFdlYkZyYW1lUHJveHkqLCBGcmFtZUluZm9EYXRhJiYsIEFQSTo6T3BlblBhbmVsUGFy
YW1ldGVycyosIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSBmaW5hbDsKICAgICAg
ICAgdm9pZCBkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5k
KFdlYlBhZ2VQcm94eSYsIFdLUmVzb3VyY2VMaW1pdCkgZmluYWw7CiAgICAgICAgIHZvaWQgc2F2
ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0
cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgVVJMJiwgQVBJOjpEYXRhJikgZmluYWw7
CisgICAgICAgIHZvaWQgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IoV2ViUGFnZVByb3h5JiwgV2Vi
SW5zcGVjdG9yUHJveHkmKSBmaW5hbDsKICNlbmRpZgogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5U
QVRJT04pCiAgICAgICAgIHZvaWQgc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlv
bkFjY2VzcyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBGcmFtZUluZm9E
YXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwpAQCAtMTk5LDYg
KzIwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld1NhdmVEYXRhVG9GaWxlU3Vn
Z2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMIDogMTsKICAgICAgICAgYm9vbCB3
ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnNJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlv
bkhhbmRsZXIgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyIDogMTsKKyAgICAgICAgYm9v
bCB3ZWJWaWV3RGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IgOiAxOwogI2VuZGlmCiAjaWYgRU5BQkxF
KERFVklDRV9PUklFTlRBVElPTikKICAgICAgICAgYm9vbCB3ZWJWaWV3U2hvdWxkQWxsb3dEZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1JlcXVlc3RlZEJ5RnJhbWVEZWNpc2lvbkhhbmRs
ZXIgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5k
ZXggYmQ5M2NhNjkyOWQwN2VlNDJkZDgxNDIxOWI4NGZhMzY2NzQzMGE1OS4uNjVhOTJjYWIzNzdk
NzExZWY4MzU5ZjIxYjAyZjcwNTExMmFkMzIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC01Myw2ICs1Myw3IEBACiAjaW1wb3J0ICJfV0tDb250
ZXh0TWVudUVsZW1lbnRJbmZvLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tIaXRUZXN0UmVzdWx0SW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0luc3Bl
Y3RvckludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsSW50ZXJu
YWwuaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVEZXZpY2UuaD4KICNpbXBvcnQg
PEFWRm91bmRhdGlvbi9BVk1lZGlhRm9ybWF0Lmg+CkBAIC0xMjksNiArMTMwLDcgQEAgdm9pZCBV
SURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3U2F2ZURhdGFUb0ZpbGVTdWdnZXN0ZWRGaWxlbmFtZU1p
bWVUeXBlT3JpZ2luYXRpbmdVUkwgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihfd2ViVmlldzpzYXZlRGF0YVRvRmlsZTpzdWdnZXN0ZWRGaWxlbmFtZTptaW1lVHlwZTpv
cmlnaW5hdGluZ1VSTDopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuT3BlblBh
bmVsV2l0aFBhcmFtZXRlcnNJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdp
dGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KV07CiAgICAg
bV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1JlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9y
U2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbkZvclNl
Y3VyaXR5T3JpZ2luOmRlY2lzaW9uSGFuZGxlcjopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3RGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjopXTsKICNlbmRp
ZgogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld1Nob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NSZXF1ZXN0
ZWRCeUZyYW1lRGVjaXNpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXc6c2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFj
Y2Vzc1JlcXVlc3RlZEJ5RnJhbWU6ZGVjaXNpb25IYW5kbGVyOildOwpAQCAtODE0LDYgKzgxNiwx
OCBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdChXZWJLaXQ6OgogICAgIH0pLmdldCgpXTsKIH0KIAordm9pZCBV
SURlbGVnYXRlOjpVSUNsaWVudDo6ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IoV2ViUGFnZVByb3h5
JiwgV2ViSW5zcGVjdG9yUHJveHkmIGluc3BlY3RvcikKK3sKKyAgICBpZiAoIW1fdWlEZWxlZ2F0
ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0
ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBbKGlk
IDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93
ZWJWaWV3IGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOndyYXBwZXIoaW5zcGVjdG9yKV07Cit9CisK
IGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkmIHBh
Z2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUlu
Zm8sIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyogb3BlblBhbmVsUGFyYW1ldGVycywgV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlzdGVuZXIpCiB7CiAgICAgaWYgKCFtX3VpRGVs
ZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJz
SW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0FnZW50cy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0FnZW50cy9JbnNwZWN0b3JCcm93
c2VyQWdlbnQuY3BwCmluZGV4IGMxZmZhNmNmNjE0NjY2ZTRjOGI1ZWM1YjQzY2M2NGY4MDcwZTY1
OTkuLmZlYzFjODYwZmM1YzcxYmNjNjlhYWZmZWM3OGUwYTM5MDJmZTVjMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9BZ2VudHMvSW5zcGVjdG9yQnJvd3Nl
ckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRz
L0luc3BlY3RvckJyb3dzZXJBZ2VudC5jcHAKQEAgLTczLDkgKzczLDggQEAgdm9pZCBJbnNwZWN0
b3JCcm93c2VyQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiAKICAgICBt
X2luc3BlY3RlZFBhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEVuYWJsZWRCcm93c2VyQWdl
bnQodGhpcyk7CiAKLSAgICBhdXRvKiBpbnNwZWN0b3IgPSBtX2luc3BlY3RlZFBhZ2UuaW5zcGVj
dG9yKCk7Ci0gICAgQVNTRVJUKGluc3BlY3Rvcik7Ci0gICAgbV9pbnNwZWN0ZWRQYWdlLmluc3Bl
Y3RvckNsaWVudCgpLmJyb3dzZXJEb21haW5FbmFibGVkKG1faW5zcGVjdGVkUGFnZSwgKmluc3Bl
Y3Rvcik7CisgICAgaWYgKGF1dG8qIGluc3BlY3RvciA9IG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0
b3IoKSkKKyAgICAgICAgaW5zcGVjdG9yLT5pbnNwZWN0b3JDbGllbnQoKS5icm93c2VyRG9tYWlu
RW5hYmxlZCgqaW5zcGVjdG9yKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmRp
c2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQpAQCAtODgsNyArODcsNyBAQCB2b2lkIElu
c3BlY3RvckJyb3dzZXJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiAg
ICAgbV9pbnNwZWN0ZWRQYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRFbmFibGVkQnJvd3Nl
ckFnZW50KG51bGxwdHIpOwogCiAgICAgaWYgKGF1dG8qIGluc3BlY3RvciA9IG1faW5zcGVjdGVk
UGFnZS5pbnNwZWN0b3IoKSkKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLmluc3BlY3RvckNsaWVu
dCgpLmJyb3dzZXJEb21haW5EaXNhYmxlZChtX2luc3BlY3RlZFBhZ2UsICppbnNwZWN0b3IpOwor
ICAgICAgICBpbnNwZWN0b3ItPmluc3BlY3RvckNsaWVudCgpLmJyb3dzZXJEb21haW5EaXNhYmxl
ZCgqaW5zcGVjdG9yKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmV4dGVuc2lv
bnNFbmFibGVkKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiYgZXh0ZW5zaW9uSURUb05hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVj
dG9yRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9J
bnNwZWN0b3JEZWxlZ2F0ZS5oCmluZGV4IGE1YmY3YjM0YmMwYjMyMzRjYWJlZDBkYjJlMTJjNjNm
ZjdmZTJiZmEuLmZiNDcyYWUxYTYwMzY3NDU2OTQzNDkzOWJhYjU3MmMwMGZiODZiN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JE
ZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9J
bnNwZWN0b3JEZWxlZ2F0ZS5oCkBAIC0yOSw4ICsyOSw3IEBACiAjaW1wb3J0ICJXS0ZvdW5kYXRp
b24uaCIKICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCi1AY2xhc3MgV0tXZWJWaWV3Owot
CitAY2xhc3MgX1dLSW5zcGVjdG9yOwogQHByb3RvY29sIF9XS0luc3BlY3RvckRlbGVnYXRlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQxLDcgKzQwLDggQEAgY2xhc3MgV2ViUGFnZVByb3h5
OwogY2xhc3MgSW5zcGVjdG9yRGVsZWdhdGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIGV4cGxpY2l0IEluc3BlY3RvckRlbGVnYXRlKFdLV2ViVmlldyAqKTsK
KyAgICBleHBsaWNpdCBJbnNwZWN0b3JEZWxlZ2F0ZShfV0tJbnNwZWN0b3IgKik7CisgICAgfklu
c3BlY3RvckRlbGVnYXRlKCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbnNwZWN0b3JD
bGllbnQ+IGNyZWF0ZUluc3BlY3RvckNsaWVudCgpOwogCkBAIC01NywyMCArNTcsMTggQEAgcHJp
dmF0ZToKIAogICAgIHByaXZhdGU6CiAgICAgICAgIC8vIEFQSTo6SW5zcGVjdG9yQ2xpZW50Ci0g
ICAgICAgIHZvaWQgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IoV2ViUGFnZVByb3h5JiwgV2ViSW5z
cGVjdG9yUHJveHkmKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBicm93c2VyRG9tYWluRW5hYmxl
ZChXZWJQYWdlUHJveHkmLCBXZWJJbnNwZWN0b3JQcm94eSYpIG92ZXJyaWRlOwotICAgICAgICB2
b2lkIGJyb3dzZXJEb21haW5EaXNhYmxlZChXZWJQYWdlUHJveHkmLCBXZWJJbnNwZWN0b3JQcm94
eSYpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGJyb3dzZXJEb21haW5FbmFibGVkKFdlYkluc3Bl
Y3RvclByb3h5JikgZmluYWw7CisgICAgICAgIHZvaWQgYnJvd3NlckRvbWFpbkRpc2FibGVkKFdl
Ykluc3BlY3RvclByb3h5JikgZmluYWw7CiAKICAgICAgICAgSW5zcGVjdG9yRGVsZWdhdGUmIG1f
aW5zcGVjdG9yRGVsZWdhdGU7CiAgICAgfTsKIAotICAgIFdlYWtPYmpDUHRyPFdLV2ViVmlldz4g
bV93ZWJWaWV3OworICAgIFdlYWtPYmpDUHRyPF9XS0luc3BlY3Rvcj4gbV9pbnNwZWN0b3I7CiAg
ICAgV2Vha09iakNQdHI8aWQgPF9XS0luc3BlY3RvckRlbGVnYXRlPj4gbV9kZWxlZ2F0ZTsKIAog
ICAgIHN0cnVjdCB7Ci0gICAgICAgIHVuc2lnbmVkIHdlYnZpZXdEaWRBdHRhY2hJbnNwZWN0b3Ig
OiAxOwotICAgICAgICB1bnNpZ25lZCB3ZWJWaWV3QnJvd3NlckRvbWFpbkVuYWJsZWRGb3JJbnNw
ZWN0b3IgOiAxOwotICAgICAgICB1bnNpZ25lZCB3ZWJWaWV3QnJvd3NlckRvbWFpbkRpc2FibGVk
Rm9ySW5zcGVjdG9yIDogMTsKKyAgICAgICAgYm9vbCBpbnNwZWN0b3JEaWRFbmFibGVCcm93c2Vy
RG9tYWluIDogMTsKKyAgICAgICAgYm9vbCBpbnNwZWN0b3JEaWREaXNhYmxlQnJvd3NlckRvbWFp
biA6IDE7CiAgICAgfSBtX2RlbGVnYXRlTWV0aG9kczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0
ZS5tbQppbmRleCBmZGQwZmY0NDViMzBiZTYzN2IwYzY3ZTI2NDQyNDFlMGE0ZWYyYmRmLi42MjJl
ODVkNjFhMmI2NDU1Y2UwOTgyNGJlMzM2NjQxZDFmOTBiMDhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRGVsZWdhdGUubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckRlbGVn
YXRlLm1tCkBAIC0zMywxMSArMzMsMTMgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLUluc3Bl
Y3RvckRlbGVnYXRlOjpJbnNwZWN0b3JEZWxlZ2F0ZShXS1dlYlZpZXcgKndlYlZpZXcpCi0gICAg
OiBtX3dlYlZpZXcod2ViVmlldykKK0luc3BlY3RvckRlbGVnYXRlOjpJbnNwZWN0b3JEZWxlZ2F0
ZShfV0tJbnNwZWN0b3IgKmluc3BlY3RvcikKKyAgICA6IG1faW5zcGVjdG9yKGluc3BlY3RvcikK
IHsKIH0KIAorSW5zcGVjdG9yRGVsZWdhdGU6On5JbnNwZWN0b3JEZWxlZ2F0ZSgpID0gZGVmYXVs
dDsKKwogc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5zcGVjdG9yQ2xpZW50PiBJbnNwZWN0b3JEZWxl
Z2F0ZTo6Y3JlYXRlSW5zcGVjdG9yQ2xpZW50KCkKIHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJ
bnNwZWN0b3JDbGllbnQ+KCp0aGlzKTsKQEAgLTUyLDkgKzU0LDggQEAgdm9pZCBJbnNwZWN0b3JE
ZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQgPF9XS0luc3BlY3RvckRlbGVnYXRlPiBkZWxlZ2F0ZSkK
IHsKICAgICBtX2RlbGVnYXRlID0gZGVsZWdhdGU7CiAKLSAgICBtX2RlbGVnYXRlTWV0aG9kcy53
ZWJ2aWV3RGlkQXR0YWNoSW5zcGVjdG9yID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXc6ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6KV07Ci0gICAgbV9kZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld0Jyb3dzZXJEb21haW5FbmFibGVkRm9ySW5zcGVjdG9yID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6YnJvd3NlckRvbWFp
bkVuYWJsZWRGb3JJbnNwZWN0b3I6KV07Ci0gICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Jy
b3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3RvciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmJyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3Rv
cjopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy5pbnNwZWN0b3JEaWRFbmFibGVCcm93c2VyRG9t
YWluID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdG9yRGlk
RW5hYmxlQnJvd3NlckRvbWFpbjopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy5pbnNwZWN0b3JE
aWREaXNhYmxlQnJvd3NlckRvbWFpbiA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKGluc3BlY3RvckRpZERpc2FibGVCcm93c2VyRG9tYWluOildOwogfQogCiBJbnNwZWN0
b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50OjpJbnNwZWN0b3JDbGllbnQoSW5zcGVjdG9yRGVs
ZWdhdGUmIGRlbGVnYXRlKQpAQCAtNjQsNDAgKzY1LDI4IEBAIEluc3BlY3RvckRlbGVnYXRlOjpJ
bnNwZWN0b3JDbGllbnQ6Okluc3BlY3RvckNsaWVudChJbnNwZWN0b3JEZWxlZ2F0ZSYgZGVsZWdh
dGUpCiAKIEluc3BlY3RvckRlbGVnYXRlOjpJbnNwZWN0b3JDbGllbnQ6On5JbnNwZWN0b3JDbGll
bnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgSW5zcGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckNsaWVu
dDo6ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IoV2ViUGFnZVByb3h5JiwgV2ViSW5zcGVjdG9yUHJv
eHkmIGluc3BlY3RvcikKLXsKLSAgICBpZiAoIW1faW5zcGVjdG9yRGVsZWdhdGUubV9kZWxlZ2F0
ZU1ldGhvZHMud2Vidmlld0RpZEF0dGFjaEluc3BlY3RvcikKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgYXV0byYgZGVsZWdhdGUgPSBtX2luc3BlY3RvckRlbGVnYXRlLm1fZGVsZWdhdGU7Ci0gICAg
aWYgKCFkZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW2RlbGVnYXRlIF93ZWJWaWV3
Om1faW5zcGVjdG9yRGVsZWdhdGUubV93ZWJWaWV3LmdldCgpLmdldCgpIGRpZEF0dGFjaExvY2Fs
SW5zcGVjdG9yOndyYXBwZXIoaW5zcGVjdG9yKV07Ci19Ci0KLXZvaWQgSW5zcGVjdG9yRGVsZWdh
dGU6Okluc3BlY3RvckNsaWVudDo6YnJvd3NlckRvbWFpbkVuYWJsZWQoV2ViUGFnZVByb3h5Jiwg
V2ViSW5zcGVjdG9yUHJveHkmIGluc3BlY3RvcikKK3ZvaWQgSW5zcGVjdG9yRGVsZWdhdGU6Oklu
c3BlY3RvckNsaWVudDo6YnJvd3NlckRvbWFpbkVuYWJsZWQoV2ViSW5zcGVjdG9yUHJveHkmKQog
ewotICAgIGlmICghbV9pbnNwZWN0b3JEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3
QnJvd3NlckRvbWFpbkVuYWJsZWRGb3JJbnNwZWN0b3IpCisgICAgaWYgKCFtX2luc3BlY3RvckRl
bGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckRpZEVuYWJsZUJyb3dzZXJEb21haW4p
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8mIGRlbGVnYXRlID0gbV9pbnNwZWN0b3JEZWxl
Z2F0ZS5tX2RlbGVnYXRlOwogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzptX2luc3BlY3RvckRlbGVnYXRlLm1fd2ViVmlldy5nZXQo
KS5nZXQoKSBicm93c2VyRG9tYWluRW5hYmxlZEZvckluc3BlY3Rvcjp3cmFwcGVyKGluc3BlY3Rv
cildOworICAgIFtkZWxlZ2F0ZSBpbnNwZWN0b3JEaWRFbmFibGVCcm93c2VyRG9tYWluOm1faW5z
cGVjdG9yRGVsZWdhdGUubV9pbnNwZWN0b3IuZ2V0KCkuZ2V0KCldOwogfQogCi12b2lkIEluc3Bl
Y3RvckRlbGVnYXRlOjpJbnNwZWN0b3JDbGllbnQ6OmJyb3dzZXJEb21haW5EaXNhYmxlZChXZWJQ
YWdlUHJveHkmLCBXZWJJbnNwZWN0b3JQcm94eSYgaW5zcGVjdG9yKQordm9pZCBJbnNwZWN0b3JE
ZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50Ojpicm93c2VyRG9tYWluRGlzYWJsZWQoV2ViSW5zcGVj
dG9yUHJveHkmKQogewotICAgIGlmICghbV9pbnNwZWN0b3JEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3QnJvd3NlckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9yKQorICAgIGlmICgh
bV9pbnNwZWN0b3JEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy5pbnNwZWN0b3JEaWREaXNhYmxl
QnJvd3NlckRvbWFpbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgZGVsZWdhdGUgPSBt
X2luc3BlY3RvckRlbGVnYXRlLm1fZGVsZWdhdGU7CiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgW2RlbGVnYXRlIF93ZWJWaWV3Om1faW5zcGVjdG9yRGVsZWdhdGUu
bV93ZWJWaWV3LmdldCgpLmdldCgpIGJyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3Rvcjp3
cmFwcGVyKGluc3BlY3RvcildOworICAgIFtkZWxlZ2F0ZSBpbnNwZWN0b3JEaWREaXNhYmxlQnJv
d3NlckRvbWFpbjptX2luc3BlY3RvckRlbGVnYXRlLm1faW5zcGVjdG9yLmdldCgpLmdldCgpXTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBjOTNjODFmOWZl
ODk1ZTljM2JkOTkwMDYyYTkxZGE4ZGRmZjUwYTcyLi43OTIxZmIxMzY3MDFiOGE1ZmYxZjU5NzA1
NmU2MDA5MzUxMWVlMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTY4LDYgKzY4LDcgQEAgY29uc3Qg
dW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OmluaXRpYWxXaW5kb3dIZWlnaHQgPSA2NTA7CiAK
IFdlYkluc3BlY3RvclByb3h5OjpXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkmIGluc3Bl
Y3RlZFBhZ2UpCiAgICAgOiBtX2luc3BlY3RlZFBhZ2UoJmluc3BlY3RlZFBhZ2UpCisgICAgLCBt
X2luc3BlY3RvckNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5zcGVjdG9yQ2xpZW50PigpKQogI2lm
IFBMQVRGT1JNKE1BQykKICAgICAsIG1fY2xvc2VGcm9udGVuZEFmdGVySW5hY3Rpdml0eVRpbWVy
KFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYkluc3BlY3RvclByb3h5OjpjbG9zZUZyb250ZW5k
QWZ0ZXJJbmFjdGl2aXR5VGltZXJGaXJlZCkKICNlbmRpZgpAQCAtNzksNiArODAsMTYgQEAgV2Vi
SW5zcGVjdG9yUHJveHk6On5XZWJJbnNwZWN0b3JQcm94eSgpCiB7CiB9CiAKK3ZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnNldEluc3BlY3RvckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbnNw
ZWN0b3JDbGllbnQ+JiYgaW5zcGVjdG9yQ2xpZW50KQoreworICAgIGlmICghaW5zcGVjdG9yQ2xp
ZW50KSB7CisgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6Okluc3Bl
Y3RvckNsaWVudD4oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faW5zcGVjdG9y
Q2xpZW50ID0gV1RGTW92ZShpbnNwZWN0b3JDbGllbnQpOworfQorCiB1bnNpZ25lZCBXZWJJbnNw
ZWN0b3JQcm94eTo6aW5zcGVjdGlvbkxldmVsKCkgY29uc3QKIHsKICAgICByZXR1cm4gaW5zcGVj
dG9yTGV2ZWxGb3JQYWdlKGluc3BlY3RlZFBhZ2UoKSk7CkBAIC00NjYsNyArNDc3LDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRlbmQoYm9vbCBjYW5B
dHRhY2gsIGJvb2wgdW5kZXJUZXMKICAgICB9CiAKICAgICAvLyBOb3RpZnkgV2ViS2l0IGNsaWVu
dCB3aGVuIGEgbG9jYWwgaW5zcGVjdG9yIGF0dGFjaGVzIHNvIHRoYXQgaXQgbWF5IGluc3RhbGwg
ZGVsZWdhdGVzIHByaW9yIHRvIHRoZSBfV0tJbnNwZWN0b3IgbG9hZGluZyBpdHMgZnJvbnRlbmQu
Ci0gICAgbV9pbnNwZWN0ZWRQYWdlLT5pbnNwZWN0b3JDbGllbnQoKS5kaWRBdHRhY2hMb2NhbElu
c3BlY3RvcigqbV9pbnNwZWN0ZWRQYWdlLCAqdGhpcyk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT51
aUNsaWVudCgpLmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yKCptX2luc3BlY3RlZFBhZ2UsICp0aGlz
KTsKIAogICAgIC8vIEJhaWwgb3V0IGlmIHRoZSBjbGllbnQgY2xvc2VkIHRoZSBpbnNwZWN0b3Ig
ZnJvbSB0aGUgZGVsZWdhdGUgbWV0aG9kLgogICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJv
eHkuaAppbmRleCA4YTY5N2Q2Njc4NGRmZjY4Yjk3MzkyYmQ1MjM4OGE0OWU0YWNkYTE5Li4zNmNj
OWRmMTJjYmI3NWYxYzUxMmFlMDBmZTFkNTA4NmM5YWEwOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtNTks
NiArNTksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwog
fQogCituYW1lc3BhY2UgQVBJIHsKK2NsYXNzIEluc3BlY3RvckNsaWVudDsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lUHJveHk7CkBAIC04NiwxMCArOTAsMTQgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJbnNwZWN0b3JQcm94eShp
bnNwZWN0ZWRQYWdlKSk7CiAgICAgfQogCi0gICAgfldlYkluc3BlY3RvclByb3h5KCk7CisgICAg
ZXhwbGljaXQgV2ViSW5zcGVjdG9yUHJveHkoV2ViUGFnZVByb3h5Jik7CisgICAgdmlydHVhbCB+
V2ViSW5zcGVjdG9yUHJveHkoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCisgICAgQVBJ
OjpJbnNwZWN0b3JDbGllbnQmIGluc3BlY3RvckNsaWVudCgpIHsgcmV0dXJuICptX2luc3BlY3Rv
ckNsaWVudDsgfQorICAgIHZvaWQgc2V0SW5zcGVjdG9yQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6Okluc3BlY3RvckNsaWVudD4mJik7CisKICAgICAvLyBQdWJsaWMgQVBJcwogICAgIFdlYlBh
Z2VQcm94eSogaW5zcGVjdGVkUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdGVkUGFnZTsg
fQogICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5z
cGVjdG9yUGFnZTsgfQpAQCAtMTg0LDggKzE5Miw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgaW5pdGlhbFdpbmRvd0hlaWdodDsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkmKTsKLQogICAgIHZvaWQgY3JlYXRlRnJv
bnRlbmRQYWdlKCk7CiAgICAgdm9pZCBjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpOwogCkBA
IC0yNzMsNiArMjc5LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYlBhZ2VQcm94eSogbV9pbnNwZWN0
ZWRQYWdlIHsgbnVsbHB0ciB9OwogICAgIFdlYlBhZ2VQcm94eSogbV9pbnNwZWN0b3JQYWdlIHsg
bnVsbHB0ciB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okluc3BlY3RvckNsaWVudD4gbV9p
bnNwZWN0b3JDbGllbnQ7CiAKICAgICBib29sIG1fdW5kZXJUZXN0IHsgZmFsc2UgfTsKICAgICBi
b29sIG1faXNWaXNpYmxlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IGJmNjEwOTcyNmVjZjc0ODRiNzZjZDMwZmJhNDc0ODY0OGJjN2Y1MDEu
LmExZWJhOGU2YWNiMjVlM2I5ZDQxZmJlNzI3NWU5NTk3NDc1YTc3MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUg
IkFQSUhpc3RvcnlDbGllbnQuaCIKICNpbmNsdWRlICJBUElIaXRUZXN0UmVzdWx0LmgiCiAjaW5j
bHVkZSAiQVBJSWNvbkxvYWRpbmdDbGllbnQuaCIKLSNpbmNsdWRlICJBUElJbnNwZWN0b3JDbGll
bnQuaCIKICNpbmNsdWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgogI2luY2x1
ZGUgIkFQSUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb24uaCIKQEAgLTQ1
NCw3ICs0NTMsNiBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdl
Q2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgogI2lmIEVOQUJMRShDT05URVhU
X01FTlVTKQogICAgICwgbV9jb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPEFQSTo6Q29udGV4
dE1lbnVDbGllbnQ+KCkpCiAjZW5kaWYKLSAgICAsIG1faW5zcGVjdG9yQ2xpZW50KG1ha2VVbmlx
dWU8QVBJOjpJbnNwZWN0b3JDbGllbnQ+KCkpCiAgICAgLCBtX25hdmlnYXRpb25TdGF0ZShtYWtl
VW5pcXVlPFdlYk5hdmlnYXRpb25TdGF0ZT4oKSkKICAgICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQog
ICAgICwgbV9wYWdlR3JvdXAoKm1fY29uZmlndXJhdGlvbi0+cGFnZUdyb3VwKCkpCkBAIC02OTEs
MTYgKzY4OSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4mCiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoaGFzQ2xpZW50KSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpzZXRJbnNwZWN0b3JDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5z
cGVjdG9yQ2xpZW50PiYmIGluc3BlY3RvckNsaWVudCkKLXsKLSAgICBpZiAoIWluc3BlY3RvckNs
aWVudCkgewotICAgICAgICBtX2luc3BlY3RvckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbnNw
ZWN0b3JDbGllbnQ+KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2luc3BlY3Rv
ckNsaWVudCA9IFdURk1vdmUoaW5zcGVjdG9yQ2xpZW50KTsKLX0KLQogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihzdGQ6OnVuaXF1ZV9wdHI8UGFnZUxvYWRTdGF0
ZTo6T2JzZXJ2ZXI+JiYgb2JzZXJ2ZXIpCiB7CiAgICAgaWYgKG1fcGFnZUxvYWRTdGF0ZU9ic2Vy
dmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBkOTJkYmVkMTNh
Mjk1OGYyYTg3ZmM2YmI4MGNmNTg5OTkxMTUxYWUyLi44NmRlZDkzZTgwN2E0NGMxOWMzM2I5ZWZl
MjM1OTU2YThjMzQwNTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMTkyLDcgKzE5Miw2IEBAIGNsYXNzIEZvcm1DbGllbnQ7CiBjbGFzcyBGdWxsc2NyZWVuQ2xp
ZW50OwogY2xhc3MgSGlzdG9yeUNsaWVudDsKIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50OwotY2xh
c3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgTG9hZGVyQ2xpZW50OwogY2xhc3MgTmF2aWdhdGlv
bjsKIGNsYXNzIE5hdmlnYXRpb25DbGllbnQ7CkBAIC01ODIsOSArNTgxLDYgQEAgcHVibGljOgog
ICAgIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQmIGljb25Mb2FkaW5nQ2xpZW50KCkgeyByZXR1cm4g
Km1faWNvbkxvYWRpbmdDbGllbnQ7IH0KICAgICB2b2lkIHNldEljb25Mb2FkaW5nQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PiYmKTsKIAotICAgIEFQSTo6SW5z
cGVjdG9yQ2xpZW50JiBpbnNwZWN0b3JDbGllbnQoKSB7IHJldHVybiAqbV9pbnNwZWN0b3JDbGll
bnQ7IH0KLSAgICB2b2lkIHNldEluc3BlY3RvckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJ
bnNwZWN0b3JDbGllbnQ+JiYpOwotCiAgICAgdm9pZCBzZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIo
c3RkOjp1bmlxdWVfcHRyPFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyPiYmKTsKIAogICAgIHZvaWQg
aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKQEAgLTIzODIsNyArMjM3OCw2IEBAIHByaXZhdGU6CiAjaWYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q29udGV4dE1l
bnVDbGllbnQ+IG1fY29udGV4dE1lbnVDbGllbnQ7CiAjZW5kaWYKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpJbnNwZWN0b3JDbGllbnQ+IG1faW5zcGVjdG9yQ2xpZW50OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQ+IG1faW5qZWN0ZWRCdW5kbGVDbGll
bnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyPiBtX3BhZ2VM
b2FkU3RhdGVPYnNlcnZlcjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDI4NTUxZmYzZjAxZDJlOTIxZDk4YzEyYjAxYjg2NWI5ZDRiZDZmM2Eu
LmNlMzU5OTNkNzRhNzZiZGI5ZDYxOGRkNjVlY2FmZmEwNGNjMmUzNDcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAy
MC0wOS0wMiAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZSBzaG91bGQgYmUgYXR0YWNoZWQgdG8gX1dLSW5z
cGVjdG9yIG5vdCBXS1dlYlZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNTk2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlZmFjdG9yIHRoZSB0ZXN0IHRvIHNldCB0aGUgX1dLSW5zcGVjdG9yRGVs
ZWdhdGUgY29ycmVjdGx5LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tOiBSZW5hbWVkIGZyb20gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbS4K
KyAgICAgICAgKC1bSW5zcGVjdG9yRGVsZWdhdGUgaW5zcGVjdG9yRGlkRW5hYmxlQnJvd3NlckRv
bWFpbjpdKToKKyAgICAgICAgKC1bSW5zcGVjdG9yRGVsZWdhdGUgaW5zcGVjdG9yRGlkRGlzYWJs
ZUJyb3dzZXJEb21haW46XSk6CisgICAgICAgICgtW1VJRGVsZWdhdGUgX3dlYlZpZXc6ZGlkQXR0
YWNoTG9jYWxJbnNwZWN0b3I6XSk6CisgICAgICAgIChURVNUKToKKwogMjAyMC0wOC0zMSAgSm9u
YXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3dlYmtpdGNvcmVw
eV0gUmVnaXN0ZXIgYW5vdGhlciBwYWNrYWdlIGluIHRoZSBXZWJLaXQgcmVwb3NpdG9yeQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBkZTVmYzRlNWRkM2MwMWYyZjMxNWE1MWVjOWY3NGYyYzlk
MjU1ZjA5Li4zMTFmNmExMTUzODQ1NmNiZTAzYzRhYjM1Y2FlMjEzNjU2OGNkYTE1IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNzg3LDcgKzc4Nyw2IEBACiAJCThDMTBBRjk4MjA2NDY3OTIw
MDE4RkQ5MCAvKiBsb2NhbHN0b3JhZ2UtZW1wdHktc3RyaW5nLXZhbHVlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEMxMEFGOTcyMDY0
Njc4MzAwMThGRDkwIC8qIGxvY2Fsc3RvcmFnZS1lbXB0eS1zdHJpbmctdmFsdWUuaHRtbCAqLzsg
fTsKIAkJOEMxMEFGOTkyMDY0NjdBOTAwMThGRDkwIC8qIExvY2FsU3RvcmFnZVBlcnNpc3RlbmNl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEMxMEFG
OTYyMDY0Njc3NzAwMThGRDkwIC8qIExvY2FsU3RvcmFnZVBlcnNpc3RlbmNlLm1tICovOyB9Owog
CQk4RTRBODUzNzFFMUQxQUIyMDBGNTNCMEYgLyogR3JpZFBvc2l0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhFNEE4NTM2MUUxRDFBQTEwMEY1
M0IwRiAvKiBHcmlkUG9zaXRpb24uY3BwICovOyB9OwotCQk5MTI0NzlGQTIzRTI2OUEyMDBDNkNF
QzggLyogX1dLSW5zcGVjdG9yRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MTI0NzlGOTIzRTI2OUExMDBDNkNFQzggLyogX1dLSW5zcGVj
dG9yRGVsZWdhdGUubW0gKi87IH07CiAJCTkzMEFENDAyMTUwNjk4RDAwMDY3OTcwRiAvKiBsb3Rz
LW9mLXRleHQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5MzBBRDQwMTE1MDY5OEIzMDA2Nzk3MEYgLyogbG90cy1vZi10ZXh0Lmh0bWwg
Ki87IH07CiAJCTkzMTBDRDM4MUVGNzA4RkIwMDUwRkZFMCAvKiBGdW5jdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzEwQ0QzNjFFRjcwOEZC
MDA1MEZGRTAgLyogRnVuY3Rpb24uY3BwICovOyB9OwogCQk5MzFDMjgxRDIyQkM1NUYyMDAxRDk4
QzQgLyogV2ViU1FMQmFzaWNzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTMxQzI4MUMyMkJDNTVBNzAwMUQ5OEM0IC8qIFdlYlNRTEJhc2ljcy5tbSAq
LzsgfTsKQEAgLTgyOCw2ICs4MjcsNyBAQAogCQk5OTg0RkFDQzFDRkZBRjYwMDA4RDE5OEMgLyog
V0tXZWJWaWV3VGV4dElucHV0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTk4NEZBQ0ExQ0ZGQUVFRTAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJbnB1
dC5tbSAqLzsgfTsKIAkJOTk4NEZBQ0UxQ0ZGQjA5MDAwOEQxOThDIC8qIGVkaXRhYmxlLWJvZHku
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5OTg0RkFDRDFDRkZCMDM4MDA4RDE5OEMgLyogZWRpdGFibGUtYm9keS5odG1sICovOyB9Owog
CQk5OTk5MTA4QjFGMzkzQzk2MDA4QUQ0NTUgLyogQ29weWluZy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5OTkxMDhBMUYzOTNDOEIwMDhBRDQ1NSAv
KiBDb3B5aW5nLm1tICovOyB9OworCQk5OUI0RjlDNjI0RURFRDk3MDAwMjJCODIgLyogV0tJbnNw
ZWN0b3JEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5QjRGOUM1MjRFREVEOTYwMDAyMkI4MiAvKiBXS0luc3BlY3RvckRlbGVnYXRlLm1t
ICovOyB9OwogCQk5QjAyRTBENjIzNUZBNDdEMDA0MDQ0QjIgLyogVGV4dE1hbmlwdWxhdGlvbi5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDJFMEQ1
MjM1RkE0N0QwMDQwNDRCMiAvKiBUZXh0TWFuaXB1bGF0aW9uLm1tICovOyB9OwogCQk5QjA3ODZB
NTFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVu
X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5QjA3ODZBNDFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93
Um9vdHNPcGVuX0J1bmRsZS5jcHAgKi87IH07CiAJCTlCMTlDREEwMUYwNkRGRTMwMDA1NDhERCAv
KiBOZXR3b3JrUHJvY2Vzc0NyYXNoV2l0aFBlbmRpbmdDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIxOUNEOUUxRjA2REZFMzAwMDU0
OEREIC8qIE5ldHdvcmtQcm9jZXNzQ3Jhc2hXaXRoUGVuZGluZ0Nvbm5lY3Rpb24ubW0gKi87IH07
CkBAIC0yMzY2LDcgKzIzNjYsNiBAQAogCQk4QzEwQUY5NzIwNjQ2NzgzMDAxOEZEOTAgLyogbG9j
YWxzdG9yYWdlLWVtcHR5LXN0cmluZy12YWx1ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gImxvY2Fsc3RvcmFnZS1lbXB0eS1zdHJpbmctdmFsdWUuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCThERDc2RkExMDQ4NkFBNzYwMEQ5NkI1RSAvKiBUZXN0V2ViS2l0
QVBJICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29t
cGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBUZXN0
V2ViS2l0QVBJOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk4RTRBODUz
NjFFMUQxQUExMDBGNTNCMEYgLyogR3JpZFBvc2l0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdyaWRQb3NpdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTkxMjQ3OUY5MjNFMjY5QTEwMEM2Q0VDOCAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0luc3BlY3Rv
ckRlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzBBRDQwMTE1MDY5
OEIzMDA2Nzk3MEYgLyogbG90cy1vZi10ZXh0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAibG90cy1vZi10ZXh0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MzEwQ0QzNjFFRjcwOEZCMDA1MEZGRTAgLyogRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MzFDMjgxQjIyQkM1NTgzMDAxRDk4QzQgLyogb3BlbmRhdGFiYXNlLWFsd2F5cy1l
eGlzdHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJvcGVuZGF0YWJhc2UtYWx3
YXlzLWV4aXN0cy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0MjQsNiAr
MjQyMyw3IEBACiAJCTk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5w
dXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdU
ZXh0SW5wdXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5ODRGQUNEMUNGRkIw
MzgwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAiZWRpdGFibGUtYm9keS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTk5OTEwOEExRjM5M0M4QjAwOEFENDU1IC8qIENvcHlpbmcubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3B5aW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5OUI0RjlDNTI0RURFRDk2MDAwMjJCODIgLyogV0tJbnNwZWN0b3JEZWxlZ2F0ZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSW5zcGVjdG9yRGVs
ZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDJFMEQ1MjM1RkE0N0Qw
MDQwNDRCMiAvKiBUZXh0TWFuaXB1bGF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4
dE1hbmlwdWxhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwNzg2QTIx
QzU4ODMwRjAwRDE1OUUzIC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZU1h
a2VBbGxTaGFkb3dSb290c09wZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
QjA3ODZBNDFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9v
dHNPcGVuX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW5fQnVuZGxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxNDIsNyArMzE0Miw2IEBACiAJCQljaGlsZHJlbiA9ICgK
IAkJCQlBMTZGNjZCODFDNDBFOUUxMDBCRDREMjQgLyogUmVzb3VyY2VzICovLAogCQkJCTVDRUFC
NURGMUZBOTM3Q0IwMEE3N0ZBQSAvKiBfV0tJbnB1dERlbGVnYXRlLm1tICovLAotCQkJCTkxMjQ3
OUY5MjNFMjY5QTEwMEM2Q0VDOCAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbSAqLywKIAkJCQk3
Q0VGQTk2NDFBQzBCOUUyMDBCOTEwRkQgLyogX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5t
bSAqLywKIAkJCQk1N0M2MjQ0RDIzNDZCQ0ZBMDAzODNGRTcgLyogX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5tbSAqLywKIAkJCQkwNzQ2NjQ1ODIyRkY2MzA1MDBFMzQ1MUEgLyogQWNjZXNzaWJp
bGl0eVRlc3RQbHVnaW4ubW0gKi8sCkBAIC0zMzc4LDYgKzMzNzcsNyBAQAogCQkJCTJEODM4QjFF
MUVFRjNBNUIwMDlCOTgwRSAvKiBXS0NvbnRlbnRWaWV3RWRpdGluZ0FjdGlvbnMubW0gKi8sCiAJ
CQkJMzcwQ0UyMjkxRjU3MzQzNDAwRTc0MTBCIC8qIFdLQ29udGVudFZpZXdUYXJnZXRGb3JBY3Rp
b24ubW0gKi8sCiAJCQkJNTFEMTI0OTcxRTc2M0FGODAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0
b3JlLm1tICovLAorCQkJCTk5QjRGOUM1MjRFREVEOTYwMDAyMkI4MiAvKiBXS0luc3BlY3RvckRl
bGVnYXRlLm1tICovLAogCQkJCUE1QTcyOUYwMUY2MjJBOUEwMERFNUEyOCAvKiBXS05hdmlnYXRp
b25SZXNwb25zZS5tbSAqLywKIAkJCQlERjRCMjczODIxQTQ3NzI3MDA5QkQxQ0EgLyogV0tOU0Rp
Y3Rpb25hcnlFbXB0eURpY3Rpb25hcnlDcmFzaC5tbSAqLywKIAkJCQkzNzVFMEUxNTFENjY2NzQ0
MDBFRkVDMkMgLyogV0tOU051bWJlci5tbSAqLywKQEAgLTQ5NjQsNyArNDk2NCw2IEBACiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJNUNFQUI1RTEx
RkE5MzlGNDAwQTc3RkFBIC8qIF9XS0lucHV0RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKLQkJ
CQk5MTI0NzlGQTIzRTI2OUEyMDBDNkNFQzggLyogX1dLSW5zcGVjdG9yRGVsZWdhdGUubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3Q0VGQTk2NjFBQzBCOUUyMDBCOTEwRkQgLyogX1dLVXNlckNvbnRl
bnRFeHRlbnNpb25TdG9yZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3QzYyNDRFMjM0NkJDRkEw
MDM4M0ZFNyAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdFRTQxQTQxMUFFNjAwNDQ3QzRDIC8qIEFib3V0QmxhbmtMb2FkLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtNTMzMSw2ICs1MzMwLDcgQEAKIAkJCQk3Q0NFN0YwRTFBNDExQUU2MDA0NDdD
NEMgLyogUmVzaXplUmV2ZXJzZVBhZ2luYXRlZFdlYlZpZXcuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdGMEYxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlc2l6ZVdpbmRvd0FmdGVyQ3Jhc2guY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNCN0FGREMyM0M0NTI5NzAwRTQ5Q0YzIC8qIFJlc291cmNl
TG9hZERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOTlCNEY5QzYyNEVERUQ5NzAwMDIy
QjgyIC8qIFdLSW5zcGVjdG9yRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUM4RTFB
NTFGMjZBRjRDMDBCRjczMUIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDQ0IxMEUxMjEzNDU3RDMwMEFDNUFGMCAvKiBSZXNwb25zaXZlbmVzc1RpbWVy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyQzRDOUUyMEVBQTQwRDAwNDk0NUVBIC8qIFJlc3Bv
bnNpdmVuZXNzVGltZXJDcmFzaC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRl
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjlhMzc3NTQ3OTliMGIyN2U3MGI1YjNmNDQ3NzU4YzgwNTFhNTk0ZGQK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLSW5zcGVjdG9yRGVsZWdhdGUubW0KQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJVdGls
aXRpZXMuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZy5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3Rvci5oPgorI2lt
cG9ydCA8V2ViS2l0L19XS0luc3BlY3RvckRlbGVnYXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisKKyNpZiBQTEFURk9STShNQUMpCisKK3N0YXRpYyBib29sIGRpZEF0dGFjaExvY2Fs
SW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBicm93c2VyRG9tYWluRW5hYmxl
ZEZvckluc3BlY3RvckNhbGxlZCA9IGZhbHNlOworc3RhdGljIGJvb2wgYnJvd3NlckRvbWFpbkRp
c2FibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CisKK0BpbnRlcmZhY2UgSW5zcGVjdG9y
RGVsZWdhdGUgOiBOU09iamVjdCA8X1dLSW5zcGVjdG9yRGVsZWdhdGU+CitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBJbnNwZWN0b3JEZWxlZ2F0ZQorCistICh2b2lkKWluc3BlY3RvckRpZEVuYWJs
ZUJyb3dzZXJEb21haW46KF9XS0luc3BlY3RvciAqKWluc3BlY3RvcgoreworICAgIGJyb3dzZXJE
b21haW5FbmFibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gdHJ1ZTsKKworICAgIC8vIFdhaXQgZm9y
IHRoZSBCcm93c2VyIGRvbWFpbiB0byBiZSBlbmFibGVkIGJlZm9yZSBjbG9zaW5nIFdlYiBJbnNw
ZWN0b3IsIHdoaWNoIHdpbGwKKyAgICAvLyBhdXRvbWF0aWNhbGx5IGRpc2FibGUgdGhlIGRvbWFp
bi4KKyAgICBbaW5zcGVjdG9yIGNsb3NlXTsKK30KKworLSAodm9pZClpbnNwZWN0b3JEaWREaXNh
YmxlQnJvd3NlckRvbWFpbjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yCit7CisgICAgYnJvd3Nl
ckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gdHJ1ZTsKK30KKworQGVuZAorCitA
aW50ZXJmYWNlIFVJRGVsZWdhdGUgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlPgorQGVuZAorCitA
aW1wbGVtZW50YXRpb24gVUlEZWxlZ2F0ZQorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0
b3IKK3sKKyAgICBkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNlOworICAgIGJy
b3dzZXJEb21haW5FbmFibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CisgICAgYnJvd3Nl
ckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CisKKyAgICBFWFBFQ1Rf
RVEod2ViVmlldy5faW5zcGVjdG9yLCBpbnNwZWN0b3IpOworCisgICAgYXV0byBpbnNwZWN0b3JE
ZWxlZ2F0ZSA9IGFkb3B0TlMoW0luc3BlY3RvckRlbGVnYXRlIG5ld10pOworICAgIFtpbnNwZWN0
b3Igc2V0RGVsZWdhdGU6aW5zcGVjdG9yRGVsZWdhdGUuZ2V0KCldOworCisgICAgZGlkQXR0YWNo
TG9jYWxJbnNwZWN0b3JDYWxsZWQgPSB0cnVlOworfQorCitAZW5kCisKK1RFU1QoV2ViS2l0X1dL
SW5zcGVjdG9yRGVsZWdhdGUsIERpZE5vdGlmeUZvckxvY2FsSW5zcGVjdG9yKQoreworICAgIGF1
dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9u
IG5ld10pOworICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2VzLl9kZXZl
bG9wZXJFeHRyYXNFbmFibGVkID0gWUVTOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gdWlE
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1VJRGVsZWdhdGUgbmV3XSk7CisKKyAgICBbd2ViVmlldyBzZXRV
SURlbGVnYXRlOnVpRGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5n
OkAiPGhlYWQ+PHRpdGxlPlRlc3QgcGFnZSB0byBiZSBpbnNwZWN0ZWQ8L3RpdGxlPjwvaGVhZD48
Ym9keT48cD5GaWxsZXIgY29udGVudDwvcD48L2JvZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29tLyJdXTsKKworICAgIEVYUEVDVF9GQUxTRSh3ZWJW
aWV3LmdldCgpLl9oYXNJbnNwZWN0b3JGcm9udGVuZCk7CisKKyAgICBbW3dlYlZpZXcgX2luc3Bl
Y3Rvcl0gc2hvd107CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEF0dGFjaExv
Y2FsSW5zcGVjdG9yQ2FsbGVkKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmJyb3dz
ZXJEb21haW5FbmFibGVkRm9ySW5zcGVjdG9yQ2FsbGVkKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmJyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3RvckNhbGxlZCk7Cit9CisK
KyNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL19XS0luc3BlY3RvckRlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRjYzNmMjNjZTRjYzc0ODM5MGM1MmQ3MmNiZmMxNjlm
MjkxMDQxMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS0luc3BlY3RvckRlbGVnYXRl
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lt
cG9ydCAiY29uZmlnLmgiCi0KLSNpbXBvcnQgIlRlc3QuaCIKLSNpbXBvcnQgIlV0aWxpdGllcy5o
IgotI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJL
aXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVG
b3JUZXN0aW5nLmg+Ci0jaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yLmg+Ci0jaW1wb3J0IDxX
ZWJLaXQvX1dLSW5zcGVjdG9yRGVsZWdhdGUuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
LQotI2lmIFBMQVRGT1JNKE1BQykKLQotc3RhdGljIGJvb2wgZGlkQXR0YWNoTG9jYWxJbnNwZWN0
b3JDYWxsZWQgPSBmYWxzZTsKLXN0YXRpYyBib29sIGJyb3dzZXJEb21haW5FbmFibGVkRm9ySW5z
cGVjdG9yQ2FsbGVkID0gZmFsc2U7Ci1zdGF0aWMgYm9vbCBicm93c2VyRG9tYWluRGlzYWJsZWRG
b3JJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKLQotQGludGVyZmFjZSBJbnNwZWN0b3JEZWxlZ2F0
ZSA6IE5TT2JqZWN0IDxfV0tJbnNwZWN0b3JEZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0
aW9uIEluc3BlY3RvckRlbGVnYXRlCi0KLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3Rvcgot
ewotICAgIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7Ci0gICAgYnJvd3Nl
ckRvbWFpbkVuYWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKLSAgICBicm93c2VyRG9t
YWluRGlzYWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKLQotICAgIEVYUEVDVF9FUSh3
ZWJWaWV3Ll9pbnNwZWN0b3IsIGluc3BlY3Rvcik7Ci0gICAgRVhQRUNUX1RSVUUod2ViVmlldy5f
aGFzSW5zcGVjdG9yRnJvbnRlbmQpOwotCi0gICAgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxs
ZWQgPSB0cnVlOwotfQotCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGJy
b3dzZXJEb21haW5FbmFibGVkRm9ySW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IK
LXsKLSAgICBFWFBFQ1RfRVEod2ViVmlldy5faW5zcGVjdG9yLCBpbnNwZWN0b3IpOwotCi0gICAg
Ly8gV2FpdCBmb3IgdGhlIEJyb3dzZXIgZG9tYWluIHRvIGJlIGVuYWJsZWQgYmVmb3JlIGNsb3Np
bmcgV2ViIEluc3BlY3Rvciwgd2hpY2ggd2lsbAotICAgIC8vIGF1dG9tYXRpY2FsbHkgZGlzYWJs
ZSB0aGUgZG9tYWluLgotICAgIFtpbnNwZWN0b3IgY2xvc2VdOwotCi0gICAgYnJvd3NlckRvbWFp
bkVuYWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQgPSB0cnVlOwotfQotCi0tICh2b2lkKV93ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGJyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3Rvcjoo
X1dLSW5zcGVjdG9yICopaW5zcGVjdG9yCi17Ci0gICAgRVhQRUNUX0VRKHdlYlZpZXcuX2luc3Bl
Y3RvciwgaW5zcGVjdG9yKTsKLQotICAgIGJyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3Rv
ckNhbGxlZCA9IHRydWU7Ci19Ci0KLUBlbmQKLQotVEVTVChXZWJLaXRfV0tJbnNwZWN0b3JEZWxl
Z2F0ZSwgRGlkTm90aWZ5Rm9yTG9jYWxJbnNwZWN0b3IpCi17Ci0gICAgYXV0byB3ZWJWaWV3Q29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7Ci0gICAg
d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVyZW5jZXMuX2RldmVsb3BlckV4dHJhc0Vu
YWJsZWQgPSBZRVM7Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW0luc3BlY3RvckRlbGVnYXRlIG5ld10pOwotICAgIFt3ZWJWaWV3IF9zZXRJbnNwZWN0b3JE
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8
aGVhZD48dGl0bGU+VGVzdCBwYWdlIHRvIGJlIGluc3BlY3RlZDwvdGl0bGU+PC9oZWFkPjxib2R5
PjxwPkZpbGxlciBjb250ZW50PC9wPjwvYm9keT4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwOi8vZXhhbXBsZS5jb20vIl1dOwotCi0gICAgRVhQRUNUX0ZBTFNFKHdlYlZpZXcu
Z2V0KCkuX2hhc0luc3BlY3RvckZyb250ZW5kKTsKLQotICAgIFtbd2ViVmlldyBfaW5zcGVjdG9y
XSBzaG93XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkQXR0YWNoTG9jYWxJ
bnNwZWN0b3JDYWxsZWQpOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmYnJvd3NlckRv
bWFpbkVuYWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQpOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmYnJvd3NlckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9yQ2FsbGVkKTsKLX0KLQotI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408473</attachid>
            <date>2020-09-10 13:45:36 -0700</date>
            <delta_ts>2020-09-10 13:45:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215961-20200910134535.patch</filename>
            <type>text/plain</type>
            <size>49882</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2ODg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ5OWY2ODQwYmUzNTExYmI0
NTU5ZTViN2VhNzY0ZTZkMDM3NmViZjcuLjZjNWY0OTI0ZDkxMjQ2MGIyMWQ3OWE5YzE4MjM1ZDFi
ZjFmNTNhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMjAtMDktMDkgIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogX1dLSW5zcGVj
dG9yRGVsZWdhdGUgc2hvdWxkIGJlIGF0dGFjaGVkIHRvIF9XS0luc3BlY3RvciBub3QgV0tXZWJW
aWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU5
NjEKKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgTW92ZSBf
V0tJbnNwZWN0b3JEZWxlZ2F0ZSB0byBiZSBhIHByb3BlcnR5IG9mIF9XS0luc3BlY3Rvci4gSWYg
dGhlcmUKKyAgICAgICAgaXMgbm8gX1dLSW5zcGVjdG9yIGF2YWlsYWJsZSAoaS5lLiBmb3IgaU9T
KSwgdGhlIGRlbGVnYXRlIGNhbm5vdCBiZSBzZXQuCisKKyAgICAgICAgQXMgcGFydCBvZiB0aGlz
IGNoYW5nZSwgbW92ZSAtZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6IGJhY2sgdG8gVUlEZWxlZ2F0
ZVByaXZhdGUuCisgICAgICAgIFRoaXMgZGVsZWdhdGUgbWV0aG9kIGlzIGNhbGxlZCBqdXN0IGFz
IHRoZSBpbnNwZWN0b3IgaXMgc2hvd24sIHNvIHRoZXJlIHdvdWxkCisgICAgICAgIGJlIG5vIHdh
eSB0byBhY3QgdXBvbiB0aGlzIG1lc3NhZ2UgaWYgaXQgd2VyZSBwYXJ0IG9mIF9XS0luc3BlY3Rv
ckRlbGVnYXRlLgorICAgICAgICBOb3csIC1kaWRBdHRhY2hMb2NhbEluc3BlY3RvcjogaXMgdGhl
IGRlc2lnbmF0ZWQgdGltZSB0byBhdHRhY2ggX1dLSW5zcGVjdG9yRGVsZWdhdGUuCisKKyAgICAg
ICAgQ292ZXJlZCBieSBleGlzdGluZyBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JDbGllbnQ6
OmJyb3dzZXJEb21haW5FbmFibGVkKToKKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yQ2xpZW50Ojpi
cm93c2VyRG9tYWluRGlzYWJsZWQpOgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JDbGllbnQ6OmRp
ZEF0dGFjaExvY2FsSW5zcGVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSVVJQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpkaWRBdHRhY2hMb2NhbElu
c3BlY3Rvcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyBfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2luc3BlY3RvckRlbGVnYXRlXSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLV2ViVmlldyBfc2V0SW5zcGVjdG9yRGVsZWdhdGU6XSk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3IubW06CisgICAgICAgICgtW19XS0luc3BlY3RvciBkZWFsbG9jXSk6IEFkZGVk
LgorICAgICAgICAoLVtfV0tJbnNwZWN0b3IgZGVsZWdhdGVdKTogQWRkZWQuCisgICAgICAgICgt
W19XS0luc3BlY3RvciBzZXREZWxlZ2F0ZTpdKTogQWRkZWQuIFNpbmNlIF9XS0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JQcm94eSBpcyBhbHdheXMKKyAgICAgICAgY3JlYXRlZCBpbnRlcm5hbGx5IGlu
c3RlYWQgb2YgdmlhIE9iakMgaW5pdGlhbGl6ZXIsIHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSBpdmFy
cyBiZWZvcmUKKyAgICAgICAgdXNpbmcgdGhlbSwgYXMgdGhlcmUgaXMgbm8gb3RoZXIgcGxhY2Ug
Zm9yIHRoZW0gdG8gYmUgaW5pdGlhbGl6ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3RvckRlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3JJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAg
ICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OnNldERlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6
VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvSW5zcGVjdG9yL0FnZW50cy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmVuYWJsZSk6CisgICAgICAg
IChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRGVsZWdhdGUubW06CisgICAgICAgIChX
ZWJLaXQ6Okluc3BlY3RvckRlbGVnYXRlOjpJbnNwZWN0b3JEZWxlZ2F0ZSk6CisgICAgICAgIChX
ZWJLaXQ6Okluc3BlY3RvckRlbGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6
Okluc3BlY3RvckRlbGVnYXRlOjpJbnNwZWN0b3JDbGllbnQ6OmJyb3dzZXJEb21haW5FbmFibGVk
KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckNsaWVudDo6
YnJvd3NlckRvbWFpbkRpc2FibGVkKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRGVsZWdh
dGU6Okluc3BlY3RvckNsaWVudDo6ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IpOiBEZWxldGVkLgor
CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQ2xpZW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OldlYkluc3BlY3RvclByb3h5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNldEluc3BlY3RvckNsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVuZCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6Omluc3BlY3RvckNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2Vi
UGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJbnNwZWN0b3JD
bGllbnQpOiBEZWxldGVkLgorICAgICAgICBTaW1pbGFyIHRvIHRoZSBDb2NvYSBTUEksIG1vdmUg
SW5zcGVjdG9yQ2xpZW50IGZyb20gV2ViUGFnZVByb3h5CisgICAgICAgIHRvIFdlYkluc3BlY3Rv
clByb3h5LgorCiAyMDIwLTA5LTEwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBtb2Rlcm5pemUgZ2VuZXJhdGVkIGJhY2tlbmQgcHJv
dG9jb2wgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUlu
c3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3Rv
ckNsaWVudC5oCmluZGV4IDMyMmExZDZhZmE4MGJjZDhiNjc2ZWRhMjUwNWQwNmRhMjYxYjkxZmUu
LjkzNTQ5NzRlNzQwZmFhN2ZlMjZjZjMxNGQzNWYyYmZlYTZiZjNjMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTI3LDcgKzI3
LDYgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJJbnNwZWN0b3JQcm94eTsKLWNs
YXNzIFdlYlBhZ2VQcm94eTsKIH0KIAogbmFtZXNwYWNlIEFQSSB7CkBAIC0zNyw5ICszNiw4IEBA
IGNsYXNzIEluc3BlY3RvckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5zcGVjdG9y
Q2xpZW50KCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIGRpZEF0dGFjaExvY2FsSW5z
cGVjdG9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eSYp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBicm93c2VyRG9tYWluRW5hYmxlZChXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHkmKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgYnJvd3NlckRvbWFpbkRpc2FibGVkKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpX
ZWJJbnNwZWN0b3JQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBicm93c2VyRG9tYWluRW5h
YmxlZChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGJy
b3dzZXJEb21haW5EaXNhYmxlZChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5JikgeyB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xp
ZW50LmgKaW5kZXggMmU1YmU2NWJkZmRjY2I4ODg5MTVkMDhkZjg2YWJkYTc0MWFhZGNiNS4uY2U3
ZmMxYWUxZmE5YmI0YzgyYThkNjc0NmMyODE5NGE1OGJlYTk5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTIwMSw2ICsyMDEsOCBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKFdFQl9BVVRITikKICAgICB2aXJ0dWFsIHZvaWQgcnVuV2ViQXV0aGVudGljYXRp
b25QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6V2ViQXV0aGVudGlj
YXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUpOyB9CiAjZW5kaWYKKworICAgIHZpcnR1YWwg
dm9pZCBkaWRBdHRhY2hMb2NhbEluc3BlY3RvcihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHkmKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQ
cml2YXRlLmgKaW5kZXggNmQwYTU3MGQ1NWM2YWI4MjBjZjdiOWViYTE1MzU0OGZiMDRhZjRkYS4u
YjZmNDY5ZmQzYTkzMzkxNzcyYWNlMjI2NzUyMzg5M2UxMGY1NTNmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5o
CkBAIC0yNDcsNiArMjQ3LDEyIEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudToo
TlNNZW51ICopbWVudSBmb3JFbGVtZW50OihfV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvICopZWxl
bWVudCB1c2VySW5mbzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNNZW51ICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTQpKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGlkUGVyZm9ybURyYWdPcGVyYXRpb246KEJPT0wpaGFuZGxlZCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjE0LjQpKTsKIAorLyohIEBhYnN0cmFjdCBDYWxsZWQgd2hlbiBhIFdlYiBJbnNwZWN0
b3IgaW5zdGFuY2UgaXMgYXR0YWNoZWQgdG8gdGhpcyBXS1dlYlZpZXcuIFRoaXMgaXMgbm90IGNh
bGxlZCBpbiB0aGUgY2FzZSBvZiByZW1vdGUgaW5zcGVjdGlvbi4KKyAgICBAcGFyYW0gd2ViVmll
dyBUaGUgV0tXZWJWaWV3IGluc3RhbmNlIGJlaW5nIGluc3BlY3RlZC4KKyAgICBAcGFyYW0gaW5z
cGVjdG9yIFRoZSBXZWIgSW5zcGVjdG9yIGluc3RhbmNlIGF0dGFjaGVkIHRvIHRoaXMgV0tXZWJW
aWV3LgorICovCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEF0dGFj
aExvY2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSk7CisKICNlbmRpZiAvLyAhVEFSR0VUX09TX0lQSE9ORQogCiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpp
bmRleCBiZjQ1Y2I1YmE3ZmI1MzA1ZTFlNDJlN2Q3M2U4ZWI4MDVjNTI3YzRhLi4xN2VlY2JjZWRm
ZTMzOWUzMjU1MzgxZDhkMzcxMjU1NzgyNzA3MzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTM4LDcgKzM4LDYgQEAKICNpbXBvcnQg
IkZ1bGxzY3JlZW5DbGllbnQuaCIKICNpbXBvcnQgIkdsb2JhbEZpbmRJblBhZ2VTdGF0ZS5oIgog
I2ltcG9ydCAiSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oIgotI2ltcG9ydCAiSW5zcGVjdG9yRGVsZWdh
dGUuaCIKICNpbXBvcnQgIkxlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5oIgogI2ltcG9ydCAiTG9n
Z2luZy5oIgogI2ltcG9ydCAiTWVkaWFVdGlsaXRpZXMuaCIKQEAgLTEwMyw3ICsxMDIsNiBAQAog
I2ltcG9ydCAiX1dLRnVsbHNjcmVlbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tIaXRUZXN0UmVz
dWx0SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0lucHV0RGVsZWdhdGUuaCIKLSNpbXBvcnQgIl9X
S0luc3BlY3RvckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIgog
I2ltcG9ydCAiX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dL
U2Vzc2lvblN0YXRlSW50ZXJuYWwuaCIKQEAgLTM5OCw3ICszOTYsNiBAQCAtICh2b2lkKV9pbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1
cmF0aW9uCiAKICAgICBfaWNvbkxvYWRpbmdEZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJ
Y29uTG9hZGluZ0RlbGVnYXRlPihzZWxmKTsKICAgICBfcmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBt
YWtlVW5pcXVlPFdlYktpdDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU+KHNlbGYpOwotICAgIF9pbnNw
ZWN0b3JEZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJbnNwZWN0b3JEZWxlZ2F0ZT4oc2Vs
Zik7CiAKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWdlQ29uZmlndXJhdGlvbi0+dXJsU2NoZW1l
SGFuZGxlcnMoKSkKICAgICAgICAgX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUo
V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2E6OmNyZWF0ZShzdGF0aWNfY2FzdDxXZWJL
aXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYSY+KHBhaXIudmFsdWUuZ2V0KCkpLmFwaUhhbmRs
ZXIoKSksIHBhaXIua2V5KTsKQEAgLTE1NTMsMTcgKzE1NTAsNiBAQCAtIChfV0tJbnNwZWN0b3Ig
KilfaW5zcGVjdG9yCiAgICAgcmV0dXJuIG5pbDsKIH0KIAotLSAoaWQgPF9XS0luc3BlY3RvckRl
bGVnYXRlPilfaW5zcGVjdG9yRGVsZWdhdGUKLXsKLSAgICByZXR1cm4gX2luc3BlY3RvckRlbGVn
YXRlLT5kZWxlZ2F0ZSgpLmF1dG9yZWxlYXNlKCk7Ci19Ci0KLS0gKHZvaWQpX3NldEluc3BlY3Rv
ckRlbGVnYXRlOihpZDxfV0tJbnNwZWN0b3JEZWxlZ2F0ZT4pZGVsZWdhdGUKLXsKLSAgICBfcGFn
ZS0+c2V0SW5zcGVjdG9yQ2xpZW50KF9pbnNwZWN0b3JEZWxlZ2F0ZS0+Y3JlYXRlSW5zcGVjdG9y
Q2xpZW50KCkpOwotICAgIF9pbnNwZWN0b3JEZWxlZ2F0ZS0+c2V0RGVsZWdhdGUoZGVsZWdhdGUp
OwotfQotCiAtIChfV0tGcmFtZUhhbmRsZSAqKV9tYWluRnJhbWUKIHsKICAgICBpZiAoYXV0byog
ZnJhbWUgPSBfcGFnZS0+bWFpbkZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IGJkMmZkNWFjNDRlMTZk
ZDZmYTgxODE4M2NkNDA5MjI5OWIyNWZkNjAuLmMwNWFkNzI0ZWQyMDM5MjFmNWViZWU0NzE3NTE1
Nzk4MzM5ZDYyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC02OCw3ICs2OCw2IEBAIGNsYXNzIEF0dGFjaG1l
bnQ7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIGVudW0gY2xhc3MgQ29udGludWVVbnNhZmVMb2FkIDog
Ym9vbDsKIGNsYXNzIEljb25Mb2FkaW5nRGVsZWdhdGU7Ci1jbGFzcyBJbnNwZWN0b3JEZWxlZ2F0
ZTsKIGNsYXNzIE5hdmlnYXRpb25TdGF0ZTsKIGNsYXNzIFJlc291cmNlTG9hZERlbGVnYXRlOwog
Y2xhc3MgU2FmZUJyb3dzaW5nV2FybmluZzsKQEAgLTExMyw3ICsxMTIsNiBAQCBjbGFzcyBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6VUlEZWxlZ2F0
ZT4gX3VpRGVsZWdhdGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6SWNvbkxvYWRpbmdE
ZWxlZ2F0ZT4gX2ljb25Mb2FkaW5nRGVsZWdhdGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktp
dDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU+IF9yZXNvdXJjZUxvYWREZWxlZ2F0ZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViS2l0OjpJbnNwZWN0b3JEZWxlZ2F0ZT4gX2luc3BlY3RvckRlbGVnYXRl
OwogCiAgICAgV2Vha09iakNQdHI8aWQgPF9XS1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZT4+IF90
ZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGU7CiAgICAgV2Vha09iakNQdHI8aWQgPF9XS0lucHV0RGVs
ZWdhdGU+PiBfaW5wdXREZWxlZ2F0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGFkNjExMTExNzcwNmNlZWY1NDhj
Y2NmODViZjhhMGQxMjk3OTk2MzIuLjFlOTlmNDc5NmIwOGY1NjRmNGEwZTdlNTg0ZGU3NDFkMTFl
MDQyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaApAQCAtMTI2LDcgKzEyNiw2IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhO
U1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogQHByb3RvY29sIF9XS0Z1bGxzY3JlZW5EZWxlZ2F0
ZTsKIEBwcm90b2NvbCBfV0tJY29uTG9hZGluZ0RlbGVnYXRlOwogQHByb3RvY29sIF9XS0lucHV0
RGVsZWdhdGU7Ci1AcHJvdG9jb2wgX1dLSW5zcGVjdG9yRGVsZWdhdGU7CiBAcHJvdG9jb2wgX1dL
UmVzb3VyY2VMb2FkRGVsZWdhdGU7CiBAcHJvdG9jb2wgX1dLVGV4dE1hbmlwdWxhdGlvbkRlbGVn
YXRlOwogCkBAIC0xODUsNyArMTg0LDYgQEAgZm9yIHRoaXMgcHJvcGVydHkuCiBAcHJvcGVydHkg
KG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uOikgQk9PTCBfYWxs
b3dzUmVtb3RlSW5zcGVjdGlvbjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9
X3NldFJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGU6KSBOU1N0cmluZyAqX3JlbW90ZUluc3Bl
Y3Rpb25OYW1lT3ZlcnJpZGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMiksIGlvcygxMC4w
KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS0luc3BlY3RvciAqX2luc3Bl
Y3RvciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwotQHByb3Bl
cnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0SW5zcGVjdG9yRGVsZWdhdGU6KSBpZCA8
X1dLSW5zcGVjdG9yRGVsZWdhdGU+IF9pbnNwZWN0b3JEZWxlZ2F0ZSBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIF9XS0ZyYW1lSGFuZGxlICpfbWFpbkZyYW1lIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IuaAppbmRleCBlMzVmN2FjYWY4MjY3MzYzYmFl
ZDQ0MmNlMjQzYjgwOThkZmFjYjVjLi5hNTM4OTlmOThlYTBhOGY3YzFlYTE0M2NjY2ZkNmYzNjNh
YjUxMTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SW5zcGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3Rvci5oCkBAIC0yOCw2ICsyOCw3IEBACiAKIEBjbGFzcyBXS1dlYlZpZXc7CiBAY2xhc3Mg
X1dLRnJhbWVIYW5kbGU7CitAcHJvdG9jb2wgX1dLSW5zcGVjdG9yRGVsZWdhdGU7CiAKIE5TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCiAKQEAgLTM2LDYgKzM3LDggQEAgV0tfQ0xBU1NfQVZBSUxBQkxF
KG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpCiAKIC0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VO
QVZBSUxBQkxFOwogCitAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPF9XS0luc3BlY3Rv
ckRlbGVnYXRlPiBkZWxlZ2F0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLV2Vi
VmlldyAqd2ViVmlldzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBpc0Nv
bm5lY3RlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBpc1Zpc2libGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5t
bQppbmRleCBiNmI0YzFlZWQyM2IwYTM4OTBjZGE0MDJiZWQ4NDM1MWE0NGEyOTIwLi42NzM0MTFm
MzBlZjFkMTA4ZTFkNDQ0NzQxOTRiY2NhOGY5M2QxZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCIKIAor
I2ltcG9ydCAiSW5zcGVjdG9yRGVsZWdhdGUuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFs
LmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5o
IgpAQCAtNDAsNiArNDEsMjAgQEAgQGltcGxlbWVudGF0aW9uIF9XS0luc3BlY3RvcgogCiAvLyBN
QVJLOiBfV0tJbnNwZWN0b3IgbWV0aG9kcwogCistIChpZCA8X1dLSW5zcGVjdG9yRGVsZWdhdGU+
KWRlbGVnYXRlCit7CisgICAgcmV0dXJuIF9kZWxlZ2F0ZS0+ZGVsZWdhdGUoKS5hdXRvcmVsZWFz
ZSgpOworfQorCistICh2b2lkKXNldERlbGVnYXRlOihpZDxfV0tJbnNwZWN0b3JEZWxlZ2F0ZT4p
ZGVsZWdhdGUKK3sKKyAgICBpZiAoIV9kZWxlZ2F0ZSkKKyAgICAgICAgX2RlbGVnYXRlID0gbWFr
ZVVuaXF1ZTxXZWJLaXQ6Okluc3BlY3RvckRlbGVnYXRlPihzZWxmKTsKKworICAgIF9pbnNwZWN0
b3ItPnNldEluc3BlY3RvckNsaWVudChfZGVsZWdhdGUtPmNyZWF0ZUluc3BlY3RvckNsaWVudCgp
KTsKKyAgICBfZGVsZWdhdGUtPnNldERlbGVnYXRlKGRlbGVnYXRlKTsKK30KKwogLSAoV0tXZWJW
aWV3ICopd2ViVmlldwogewogICAgIGlmIChhdXRvKiBwYWdlID0gX2luc3BlY3Rvci0+aW5zcGVj
dGVkUGFnZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0luc3BlY3RvckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yRGVsZWdhdGUuaAppbmRleCAwMmJkMTZiZWNjNWQ0NzlkYjgyNDg2NmY2
ZWJmNDdlMDRkMzA3MDRhLi43YmM3MTFmZmVlN2RiNmY5MjQ1MWUzYmZlNWJhMDFjZThiMDNlODUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SW5zcGVjdG9yRGVsZWdhdGUuaApAQCAtMjYsMjUgKzI2LDE5IEBACiAjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KIAotQGNs
YXNzIFdLV2ViVmlldzsKIEBjbGFzcyBfV0tJbnNwZWN0b3I7CiAKIEBwcm90b2NvbCBfV0tJbnNw
ZWN0b3JEZWxlZ2F0ZSA8TlNPYmplY3Q+CiBAb3B0aW9uYWwKIAotLyohIEBhYnN0cmFjdCBDYWxs
ZWQgd2hlbiBhIFdlYiBJbnNwZWN0b3IgaW5zdGFuY2UgaXMgYXR0YWNoZWQgdG8gdGhpcyBXS1dl
YlZpZXcuIFRoaXMgaXMgbm90IGNhbGxlZCBpbiB0aGUgY2FzZSBvZiByZW1vdGUgaW5zcGVjdGlv
bi4KLSAgICBAcGFyYW0gaW5zcGVjdG9yIFRoZSBXZWIgSW5zcGVjdG9yIGluc3RhbmNlIGF0dGFj
aGVkIHRvIHRoaXMgV0tXZWJWaWV3LgorLyohIEBhYnN0cmFjdCBDYWxsZWQgd2hlbiB0aGUgQnJv
d3NlciBkb21haW4gaXMgZW5hYmxlZCBmb3IgdGhlIGFzc29jaWF0ZWQgX1dLSW5zcGVjdG9yLgor
ICAgIEBwYXJhbSBpbnNwZWN0b3IgdGhlIGFzc29jaWF0ZWQgX1dLSW5zcGVjdG9yIGZvciB3aGlj
aCB0aGUgQnJvd3NlciBkb21haW4gaGFzIGJlZW4gZW5hYmxlZC4KICAqLwotLSAodm9pZClfd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjooX1dLSW5z
cGVjdG9yICopaW5zcGVjdG9yOworLSAodm9pZClpbnNwZWN0b3JEaWRFbmFibGVCcm93c2VyRG9t
YWluOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3I7CiAKLS8qISBAYWJzdHJhY3QgQ2FsbGVkIHdo
ZW4gdGhlIFdlYiBJbnNwZWN0b3IgcHJvdG9jb2wgQnJvd3NlciBkb21haW4gaXMgZW5hYmxlZCBm
b3IgdGhlIFdlYiBJbnNwZWN0b3IgaW5zdGFuY2UgYXR0YWNoZWQgdG8gdGhpcyBXS1dlYlZpZXcu
Ci0gICAgQHBhcmFtIGluc3BlY3RvciBUaGUgV2ViIEluc3BlY3RvciBpbnN0YW5jZSBhdHRhY2hl
ZCB0byB0aGlzIFdLV2ViVmlldy4KKy8qISBAYWJzdHJhY3QgQ2FsbGVkIHdoZW4gdGhlICBCcm93
c2VyIGRvbWFpbiBpcyBkaXNhYmxlZCBmb3IgdGhlIGFzc29jaWF0ZWQgX1dLSW5zcGVjdG9yLgor
ICAgIEBwYXJhbSBpbnNwZWN0b3IgdGhlIGFzc29jaWF0ZWQgX1dLSW5zcGVjdG9yIGZvciB3aGlj
aCB0aGUgQnJvd3NlciBkb21haW4gaGFzIGJlZW4gZGlzYWJsZWQuCiAgKi8KLS0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYnJvd3NlckRvbWFpbkVuYWJsZWRGb3JJbnNwZWN0
b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3RvcjsKLQotLyohIEBhYnN0cmFjdCBDYWxsZWQgd2hl
biB0aGUgV2ViIEluc3BlY3RvciBwcm90b2NvbCBCcm93c2VyIGRvbWFpbiBpcyBkaXNhYmxlZCBm
b3IgdGhlIFdlYiBJbnNwZWN0b3IgaW5zdGFuY2UgYXR0YWNoZWQgdG8gdGhpcyBXS1dlYlZpZXcu
Ci0gICAgQHBhcmFtIGluc3BlY3RvciBUaGUgV2ViIEluc3BlY3RvciBpbnN0YW5jZSBhdHRhY2hl
ZCB0byB0aGlzIFdLV2ViVmlldy4KLSAqLwotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBicm93c2VyRG9tYWluRGlzYWJsZWRGb3JJbnNwZWN0b3I6KF9XS0luc3BlY3RvciAq
KWluc3BlY3RvcjsKKy0gKHZvaWQpaW5zcGVjdG9yRGlkRGlzYWJsZUJyb3dzZXJEb21haW46KF9X
S0luc3BlY3RvciAqKWluc3BlY3RvcjsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckludGVybmFsLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9ySW50ZXJuYWwuaAppbmRleCBjNTYx
N2QyNjZhYjdiZDhjYjRhYzlmYWI2ZTg5NmZmMzExMzM0MTViLi43ZmRiZDU4ZDljNzM3Y2MyM2Yx
ZTA1MzU5NTIyNTEzOGQ3ODkzZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9ySW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9ySW50ZXJuYWwuaApAQCAtMjgsNiArMjgsMTAg
QEAKICNpbXBvcnQgIldLT2JqZWN0LmgiCiAjaW1wb3J0ICJXZWJJbnNwZWN0b3JQcm94eS5oIgog
CituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIEluc3BlY3RvckRlbGVnYXRlOworfQorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxXZWJJbnNw
ZWN0b3JQcm94eT4gewpAQCAtMzksNSArNDMsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVy
VHJhaXRzPFdlYkluc3BlY3RvclByb3h5PiB7CiBAaW50ZXJmYWNlIF9XS0luc3BlY3RvciAoKSA8
V0tPYmplY3Q+IHsKIEBwYWNrYWdlCiAgICAgQVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk+IF9pbnNwZWN0b3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6
SW5zcGVjdG9yRGVsZWdhdGU+IF9kZWxlZ2F0ZTsKIH0KIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAppbmRleCBjZGVmZDQyODdiMWY1YjIyMjJkNTBhYzZk
YWIxOTVkYWIyMzZmYzM0Li5mMmI1YTdiMjZlZGE1ZjZjODg0YjE5YmNjYzA0YjA5MDg1NDlhYzY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCkBAIC0xMjQs
NiArMTI0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBydW5PcGVuUGFuZWwoV2ViUGFnZVBy
b3h5JiwgV2ViRnJhbWVQcm94eSosIEZyYW1lSW5mb0RhdGEmJiwgQVBJOjpPcGVuUGFuZWxQYXJh
bWV0ZXJzKiwgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIGZpbmFsOwogICAgICAg
ICB2b2lkIGRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQo
V2ViUGFnZVByb3h5JiwgV0tSZXNvdXJjZUxpbWl0KSBmaW5hbDsKICAgICAgICAgdm9pZCBzYXZl
RGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3Ry
aW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBVUkwmLCBBUEk6OkRhdGEmKSBmaW5hbDsK
KyAgICAgICAgdm9pZCBkaWRBdHRhY2hMb2NhbEluc3BlY3RvcihXZWJQYWdlUHJveHkmLCBXZWJJ
bnNwZWN0b3JQcm94eSYpIGZpbmFsOwogI2VuZGlmCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRB
VElPTikKICAgICAgICAgdm9pZCBzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9u
QWNjZXNzKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEZyYW1lSW5mb0Rh
dGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CkBAIC0xOTksNiAr
MjAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCB3ZWJWaWV3U2F2ZURhdGFUb0ZpbGVTdWdn
ZXN0ZWRGaWxlbmFtZU1pbWVUeXBlT3JpZ2luYXRpbmdVUkwgOiAxOwogICAgICAgICBib29sIHdl
YlZpZXdSdW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyc0luaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9u
SGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1JlcXVlc3ROb3RpZmljYXRpb25QZXJt
aXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRsZXIgOiAxOworICAgICAgICBib29s
IHdlYlZpZXdEaWRBdHRhY2hMb2NhbEluc3BlY3RvciA6IDE7CiAjZW5kaWYKICNpZiBFTkFCTEUo
REVWSUNFX09SSUVOVEFUSU9OKQogICAgICAgICBib29sIHdlYlZpZXdTaG91bGRBbGxvd0Rldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzUmVxdWVzdGVkQnlGcmFtZURlY2lzaW9uSGFuZGxl
ciA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRl
eCBiZDkzY2E2OTI5ZDA3ZWU0MmRkODE0MjE5Yjg0ZmEzNjY3NDMwYTU5Li42NWE5MmNhYjM3N2Q3
MTFlZjgzNTlmMjFiMDJmNzA1MTEyYWQzMjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTUzLDYgKzUzLDcgQEAKICNpbXBvcnQgIl9XS0NvbnRl
eHRNZW51RWxlbWVudEluZm8uaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIl9XS0hpdFRlc3RSZXN1bHRJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLSW5zcGVj
dG9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxJbnRlcm5h
bC5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQ2FwdHVyZURldmljZS5oPgogI2ltcG9ydCA8
QVZGb3VuZGF0aW9uL0FWTWVkaWFGb3JtYXQuaD4KQEAgLTEyOSw2ICsxMzAsNyBAQCB2b2lkIFVJ
RGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdhdGU+IGRlbGVnYXRlKQogICAgIG1f
ZGVsZWdhdGVNZXRob2RzLndlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWlt
ZVR5cGVPcmlnaW5hdGluZ1VSTCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF93ZWJWaWV3OnNhdmVEYXRhVG9GaWxlOnN1Z2dlc3RlZEZpbGVuYW1lOm1pbWVUeXBlOm9y
aWdpbmF0aW5nVVJMOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSdW5PcGVuUGFu
ZWxXaXRoUGFyYW1ldGVyc0luaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA9IFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cnVuT3BlblBhbmVsV2l0
aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopXTsKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JT
ZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2Vj
dXJpdHlPcmlnaW46ZGVjaXNpb25IYW5kbGVyOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLndl
YlZpZXdEaWRBdHRhY2hMb2NhbEluc3BlY3RvciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOildOwogI2VuZGlm
CiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3U2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1JlcXVlc3Rl
ZEJ5RnJhbWVEZWNpc2lvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzpzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNj
ZXNzUmVxdWVzdGVkQnlGcmFtZTpkZWNpc2lvbkhhbmRsZXI6KV07CkBAIC04MTQsNiArODE2LDE4
IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdDo6CiAgICAgfSkuZ2V0KCldOwogfQogCit2b2lkIFVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcihXZWJQYWdlUHJveHkm
LCBXZWJJbnNwZWN0b3JQcm94eSYgaW5zcGVjdG9yKQoreworICAgIGlmICghbV91aURlbGVnYXRl
Lm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRBdHRhY2hMb2NhbEluc3BlY3RvcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRl
LmdldCgpOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFsoaWQg
PFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dl
YlZpZXcgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6d3JhcHBlcihpbnNwZWN0b3IpXTsKK30KKwog
Ym9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSYgcGFn
ZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5m
bywgQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzKiBvcGVuUGFuZWxQYXJhbWV0ZXJzLCBXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KiBsaXN0ZW5lcikKIHsKICAgICBpZiAoIW1fdWlEZWxl
Z2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnNJ
bml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzL0luc3BlY3RvckJyb3dz
ZXJBZ2VudC5jcHAKaW5kZXggZGY0YTEwYTQwZjhiMDJmYzVkNzUwOWU5NmM1OTRlYmJjNWFjOWYx
NC4uMmQ0NDQ1MjdlZWRlZTdlYThhNmU0OTg4ZjczNTE5NzU1MmNiOTA4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0FnZW50cy9JbnNwZWN0b3JCcm93c2Vy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9BZ2VudHMv
SW5zcGVjdG9yQnJvd3NlckFnZW50LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIklu
c3BlY3RvckJyb3dzZXJBZ2VudC5oIgogCiAjaW5jbHVkZSAiQVBJSW5zcGVjdG9yQ2xpZW50Lmgi
CisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlSW5zcGVj
dG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvclByb3RvY29sT2JqZWN0cy5oPgpAQCAtNzAsOSArNzEsOCBA
QCBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckJyb3dz
ZXJBZ2VudDo6ZW5hYmxlKCkKIAogICAgIG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0b3JDb250cm9s
bGVyKCkuc2V0RW5hYmxlZEJyb3dzZXJBZ2VudCh0aGlzKTsKIAotICAgIGF1dG8qIGluc3BlY3Rv
ciA9IG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0b3IoKTsKLSAgICBBU1NFUlQoaW5zcGVjdG9yKTsK
LSAgICBtX2luc3BlY3RlZFBhZ2UuaW5zcGVjdG9yQ2xpZW50KCkuYnJvd3NlckRvbWFpbkVuYWJs
ZWQobV9pbnNwZWN0ZWRQYWdlLCAqaW5zcGVjdG9yKTsKKyAgICBpZiAoYXV0byogaW5zcGVjdG9y
ID0gbV9pbnNwZWN0ZWRQYWdlLmluc3BlY3RvcigpKQorICAgICAgICBpbnNwZWN0b3ItPmluc3Bl
Y3RvckNsaWVudCgpLmJyb3dzZXJEb21haW5FbmFibGVkKCppbnNwZWN0b3IpOwogCiAgICAgcmV0
dXJuIHsgfTsKIH0KQEAgLTg1LDcgKzg1LDcgQEAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmRpc2FibGUoKQogICAgIG1faW5z
cGVjdGVkUGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0RW5hYmxlZEJyb3dzZXJBZ2VudChu
dWxscHRyKTsKIAogICAgIGlmIChhdXRvKiBpbnNwZWN0b3IgPSBtX2luc3BlY3RlZFBhZ2UuaW5z
cGVjdG9yKCkpCi0gICAgICAgIG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0b3JDbGllbnQoKS5icm93
c2VyRG9tYWluRGlzYWJsZWQobV9pbnNwZWN0ZWRQYWdlLCAqaW5zcGVjdG9yKTsKKyAgICAgICAg
aW5zcGVjdG9yLT5pbnNwZWN0b3JDbGllbnQoKS5icm93c2VyRG9tYWluRGlzYWJsZWQoKmluc3Bl
Y3Rvcik7CiAKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckRlbGVnYXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRGVsZWdhdGUuaAppbmRleCBh
NWJmN2IzNGJjMGIzMjM0Y2FiZWQwZGIyZTEyYzYzZmY3ZmUyYmZhLi5iOTU5OWE2YjU2MTJlNjAx
ZDIwMzhjZmI1NzlmNWQ5OTNmYTYxNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRGVsZWdhdGUuaApAQCAtMjks
OCArMjksNyBAQAogI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgiCiAjaW1wb3J0IDx3dGYvV2Vha09i
akNQdHIuaD4KIAotQGNsYXNzIFdLV2ViVmlldzsKLQorQGNsYXNzIF9XS0luc3BlY3RvcjsKIEBw
cm90b2NvbCBfV0tJbnNwZWN0b3JEZWxlZ2F0ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00
MSw3ICs0MCw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIEluc3BlY3RvckRlbGVnYXRl
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBJ
bnNwZWN0b3JEZWxlZ2F0ZShXS1dlYlZpZXcgKik7CisgICAgZXhwbGljaXQgSW5zcGVjdG9yRGVs
ZWdhdGUoX1dLSW5zcGVjdG9yICopOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5zcGVj
dG9yQ2xpZW50PiBjcmVhdGVJbnNwZWN0b3JDbGllbnQoKTsKIApAQCAtNDksNyArNDgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXREZWxlZ2F0ZShpZCA8X1dLSW5zcGVjdG9yRGVsZWdhdGU+KTsK
IAogcHJpdmF0ZToKLSAgICBjbGFzcyBJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgQVBJOjpJbnNw
ZWN0b3JDbGllbnQgeworICAgIGNsYXNzIEluc3BlY3RvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBB
UEk6Okluc3BlY3RvckNsaWVudCB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSW5zcGVjdG9yQ2xpZW50KEluc3BlY3RvckRl
bGVnYXRlJik7CkBAIC01NywyMCArNTYsMTggQEAgcHJpdmF0ZToKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIC8vIEFQSTo6SW5zcGVjdG9yQ2xpZW50Ci0gICAgICAgIHZvaWQgZGlkQXR0YWNoTG9j
YWxJbnNwZWN0b3IoV2ViUGFnZVByb3h5JiwgV2ViSW5zcGVjdG9yUHJveHkmKSBvdmVycmlkZTsK
LSAgICAgICAgdm9pZCBicm93c2VyRG9tYWluRW5hYmxlZChXZWJQYWdlUHJveHkmLCBXZWJJbnNw
ZWN0b3JQcm94eSYpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGJyb3dzZXJEb21haW5EaXNhYmxl
ZChXZWJQYWdlUHJveHkmLCBXZWJJbnNwZWN0b3JQcm94eSYpIG92ZXJyaWRlOworICAgICAgICB2
b2lkIGJyb3dzZXJEb21haW5FbmFibGVkKFdlYkluc3BlY3RvclByb3h5Jik7CisgICAgICAgIHZv
aWQgYnJvd3NlckRvbWFpbkRpc2FibGVkKFdlYkluc3BlY3RvclByb3h5Jik7CiAKICAgICAgICAg
SW5zcGVjdG9yRGVsZWdhdGUmIG1faW5zcGVjdG9yRGVsZWdhdGU7CiAgICAgfTsKIAotICAgIFdl
YWtPYmpDUHRyPFdLV2ViVmlldz4gbV93ZWJWaWV3OworICAgIFdlYWtPYmpDUHRyPF9XS0luc3Bl
Y3Rvcj4gbV9pbnNwZWN0b3I7CiAgICAgV2Vha09iakNQdHI8aWQgPF9XS0luc3BlY3RvckRlbGVn
YXRlPj4gbV9kZWxlZ2F0ZTsKIAogICAgIHN0cnVjdCB7Ci0gICAgICAgIHVuc2lnbmVkIHdlYnZp
ZXdEaWRBdHRhY2hJbnNwZWN0b3IgOiAxOwotICAgICAgICB1bnNpZ25lZCB3ZWJWaWV3QnJvd3Nl
ckRvbWFpbkVuYWJsZWRGb3JJbnNwZWN0b3IgOiAxOwotICAgICAgICB1bnNpZ25lZCB3ZWJWaWV3
QnJvd3NlckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9yIDogMTsKKyAgICAgICAgYm9vbCBpbnNw
ZWN0b3JEaWRFbmFibGVCcm93c2VyRG9tYWluIDogMTsKKyAgICAgICAgYm9vbCBpbnNwZWN0b3JE
aWREaXNhYmxlQnJvd3NlckRvbWFpbiA6IDE7CiAgICAgfSBtX2RlbGVnYXRlTWV0aG9kczsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9J
bnNwZWN0b3JEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9D
b2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5tbQppbmRleCBmZGQwZmY0NDViMzBiZTYzN2IwYzY3ZTI2
NDQyNDFlMGE0ZWYyYmRmLi40NjkwODQyMDc2OGUwYWVhZjQxYzY5MGRlM2E5MDA3ZjMzYTZjZTA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5z
cGVjdG9yRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L0NvY29hL0luc3BlY3RvckRlbGVnYXRlLm1tCkBAIC0zMyw4ICszMyw4IEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1JbnNwZWN0b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yRGVsZWdhdGUoV0tXZWJW
aWV3ICp3ZWJWaWV3KQotICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCitJbnNwZWN0b3JEZWxlZ2F0
ZTo6SW5zcGVjdG9yRGVsZWdhdGUoX1dLSW5zcGVjdG9yICppbnNwZWN0b3IpCisgICAgOiBtX2lu
c3BlY3RvcihpbnNwZWN0b3IpCiB7CiB9CiAKQEAgLTUyLDkgKzUyLDggQEAgdm9pZCBJbnNwZWN0
b3JEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQgPF9XS0luc3BlY3RvckRlbGVnYXRlPiBkZWxlZ2F0
ZSkKIHsKICAgICBtX2RlbGVnYXRlID0gZGVsZWdhdGU7CiAKLSAgICBtX2RlbGVnYXRlTWV0aG9k
cy53ZWJ2aWV3RGlkQXR0YWNoSW5zcGVjdG9yID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6KV07Ci0gICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Jyb3dzZXJEb21haW5FbmFibGVkRm9ySW5zcGVjdG9yID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6YnJvd3NlckRv
bWFpbkVuYWJsZWRGb3JJbnNwZWN0b3I6KV07Ci0gICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d0Jyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3RvciA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmJyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3Bl
Y3RvcjopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy5pbnNwZWN0b3JEaWRFbmFibGVCcm93c2Vy
RG9tYWluID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdG9y
RGlkRW5hYmxlQnJvd3NlckRvbWFpbjopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy5pbnNwZWN0
b3JEaWREaXNhYmxlQnJvd3NlckRvbWFpbiA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKGluc3BlY3RvckRpZERpc2FibGVCcm93c2VyRG9tYWluOildOwogfQogCiBJbnNw
ZWN0b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50OjpJbnNwZWN0b3JDbGllbnQoSW5zcGVjdG9y
RGVsZWdhdGUmIGRlbGVnYXRlKQpAQCAtNjQsNDAgKzYzLDI4IEBAIEluc3BlY3RvckRlbGVnYXRl
OjpJbnNwZWN0b3JDbGllbnQ6Okluc3BlY3RvckNsaWVudChJbnNwZWN0b3JEZWxlZ2F0ZSYgZGVs
ZWdhdGUpCiAKIEluc3BlY3RvckRlbGVnYXRlOjpJbnNwZWN0b3JDbGllbnQ6On5JbnNwZWN0b3JD
bGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgSW5zcGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckNs
aWVudDo6ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IoV2ViUGFnZVByb3h5JiwgV2ViSW5zcGVjdG9y
UHJveHkmIGluc3BlY3RvcikKK3ZvaWQgSW5zcGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckNsaWVu
dDo6YnJvd3NlckRvbWFpbkVuYWJsZWQoV2ViSW5zcGVjdG9yUHJveHkmKQogewotICAgIGlmICgh
bV9pbnNwZWN0b3JEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJ2aWV3RGlkQXR0YWNoSW5z
cGVjdG9yKQorICAgIGlmICghbV9pbnNwZWN0b3JEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy5p
bnNwZWN0b3JEaWRFbmFibGVCcm93c2VyRG9tYWluKQogICAgICAgICByZXR1cm47CiAKICAgICBh
dXRvJiBkZWxlZ2F0ZSA9IG1faW5zcGVjdG9yRGVsZWdhdGUubV9kZWxlZ2F0ZTsKICAgICBpZiAo
IWRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbZGVsZWdhdGUgX3dlYlZpZXc6bV9p
bnNwZWN0b3JEZWxlZ2F0ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgZGlkQXR0YWNoTG9jYWxJbnNw
ZWN0b3I6d3JhcHBlcihpbnNwZWN0b3IpXTsKKyAgICBbZGVsZWdhdGUgaW5zcGVjdG9yRGlkRW5h
YmxlQnJvd3NlckRvbWFpbjptX2luc3BlY3RvckRlbGVnYXRlLm1faW5zcGVjdG9yLmdldCgpLmdl
dCgpXTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50Ojpicm93
c2VyRG9tYWluRW5hYmxlZChXZWJQYWdlUHJveHkmLCBXZWJJbnNwZWN0b3JQcm94eSYgaW5zcGVj
dG9yKQordm9pZCBJbnNwZWN0b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50Ojpicm93c2VyRG9t
YWluRGlzYWJsZWQoV2ViSW5zcGVjdG9yUHJveHkmKQogewotICAgIGlmICghbV9pbnNwZWN0b3JE
ZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3QnJvd3NlckRvbWFpbkVuYWJsZWRGb3JJ
bnNwZWN0b3IpCisgICAgaWYgKCFtX2luc3BlY3RvckRlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2Rz
Lmluc3BlY3RvckRpZERpc2FibGVCcm93c2VyRG9tYWluKQogICAgICAgICByZXR1cm47CiAKICAg
ICBhdXRvJiBkZWxlZ2F0ZSA9IG1faW5zcGVjdG9yRGVsZWdhdGUubV9kZWxlZ2F0ZTsKICAgICBp
ZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbZGVsZWdhdGUgX3dlYlZpZXc6
bV9pbnNwZWN0b3JEZWxlZ2F0ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgYnJvd3NlckRvbWFpbkVu
YWJsZWRGb3JJbnNwZWN0b3I6d3JhcHBlcihpbnNwZWN0b3IpXTsKLX0KLQotdm9pZCBJbnNwZWN0
b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50Ojpicm93c2VyRG9tYWluRGlzYWJsZWQoV2ViUGFn
ZVByb3h5JiwgV2ViSW5zcGVjdG9yUHJveHkmIGluc3BlY3RvcikKLXsKLSAgICBpZiAoIW1faW5z
cGVjdG9yRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Jyb3dzZXJEb21haW5EaXNh
YmxlZEZvckluc3BlY3RvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgZGVsZWdhdGUg
PSBtX2luc3BlY3RvckRlbGVnYXRlLm1fZGVsZWdhdGU7Ci0gICAgaWYgKCFkZWxlZ2F0ZSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgW2RlbGVnYXRlIF93ZWJWaWV3Om1faW5zcGVjdG9yRGVsZWdh
dGUubV93ZWJWaWV3LmdldCgpLmdldCgpIGJyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3Rv
cjp3cmFwcGVyKGluc3BlY3RvcildOworICAgIFtkZWxlZ2F0ZSBpbnNwZWN0b3JEaWREaXNhYmxl
QnJvd3NlckRvbWFpbjptX2luc3BlY3RvckRlbGVnYXRlLm1faW5zcGVjdG9yLmdldCgpLmdldCgp
XTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBjOTNjODFm
OWZlODk1ZTljM2JkOTkwMDYyYTkxZGE4ZGRmZjUwYTcyLi43OTIxZmIxMzY3MDFiOGE1ZmYxZjU5
NzA1NmU2MDA5MzUxMWVlMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTY4LDYgKzY4LDcgQEAgY29u
c3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OmluaXRpYWxXaW5kb3dIZWlnaHQgPSA2NTA7
CiAKIFdlYkluc3BlY3RvclByb3h5OjpXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkmIGlu
c3BlY3RlZFBhZ2UpCiAgICAgOiBtX2luc3BlY3RlZFBhZ2UoJmluc3BlY3RlZFBhZ2UpCisgICAg
LCBtX2luc3BlY3RvckNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5zcGVjdG9yQ2xpZW50PigpKQog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fY2xvc2VGcm9udGVuZEFmdGVySW5hY3Rpdml0eVRp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYkluc3BlY3RvclByb3h5OjpjbG9zZUZyb250
ZW5kQWZ0ZXJJbmFjdGl2aXR5VGltZXJGaXJlZCkKICNlbmRpZgpAQCAtNzksNiArODAsMTYgQEAg
V2ViSW5zcGVjdG9yUHJveHk6On5XZWJJbnNwZWN0b3JQcm94eSgpCiB7CiB9CiAKK3ZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnNldEluc3BlY3RvckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJ
bnNwZWN0b3JDbGllbnQ+JiYgaW5zcGVjdG9yQ2xpZW50KQoreworICAgIGlmICghaW5zcGVjdG9y
Q2xpZW50KSB7CisgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6Oklu
c3BlY3RvckNsaWVudD4oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faW5zcGVj
dG9yQ2xpZW50ID0gV1RGTW92ZShpbnNwZWN0b3JDbGllbnQpOworfQorCiB1bnNpZ25lZCBXZWJJ
bnNwZWN0b3JQcm94eTo6aW5zcGVjdGlvbkxldmVsKCkgY29uc3QKIHsKICAgICByZXR1cm4gaW5z
cGVjdG9yTGV2ZWxGb3JQYWdlKGluc3BlY3RlZFBhZ2UoKSk7CkBAIC00NjYsNyArNDc3LDcgQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRlbmQoYm9vbCBj
YW5BdHRhY2gsIGJvb2wgdW5kZXJUZXMKICAgICB9CiAKICAgICAvLyBOb3RpZnkgV2ViS2l0IGNs
aWVudCB3aGVuIGEgbG9jYWwgaW5zcGVjdG9yIGF0dGFjaGVzIHNvIHRoYXQgaXQgbWF5IGluc3Rh
bGwgZGVsZWdhdGVzIHByaW9yIHRvIHRoZSBfV0tJbnNwZWN0b3IgbG9hZGluZyBpdHMgZnJvbnRl
bmQuCi0gICAgbV9pbnNwZWN0ZWRQYWdlLT5pbnNwZWN0b3JDbGllbnQoKS5kaWRBdHRhY2hMb2Nh
bEluc3BlY3RvcigqbV9pbnNwZWN0ZWRQYWdlLCAqdGhpcyk7CisgICAgbV9pbnNwZWN0ZWRQYWdl
LT51aUNsaWVudCgpLmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yKCptX2luc3BlY3RlZFBhZ2UsICp0
aGlzKTsKIAogICAgIC8vIEJhaWwgb3V0IGlmIHRoZSBjbGllbnQgY2xvc2VkIHRoZSBpbnNwZWN0
b3IgZnJvbSB0aGUgZGVsZWdhdGUgbWV0aG9kLgogICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
UHJveHkuaAppbmRleCA4YTY5N2Q2Njc4NGRmZjY4Yjk3MzkyYmQ1MjM4OGE0OWU0YWNkYTE5Li4z
NmNjOWRmMTJjYmI3NWYxYzUxMmFlMDBmZTFkNTA4NmM5YWEwOWE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAt
NTksNiArNTksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2VydGlmaWNhdGVJbmZv
OwogfQogCituYW1lc3BhY2UgQVBJIHsKK2NsYXNzIEluc3BlY3RvckNsaWVudDsKK30KKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lUHJveHk7CkBAIC04NiwxMCArOTAsMTQg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJbnNwZWN0b3JQcm94
eShpbnNwZWN0ZWRQYWdlKSk7CiAgICAgfQogCi0gICAgfldlYkluc3BlY3RvclByb3h5KCk7Cisg
ICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yUHJveHkoV2ViUGFnZVByb3h5Jik7CisgICAgdmlydHVh
bCB+V2ViSW5zcGVjdG9yUHJveHkoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCisgICAg
QVBJOjpJbnNwZWN0b3JDbGllbnQmIGluc3BlY3RvckNsaWVudCgpIHsgcmV0dXJuICptX2luc3Bl
Y3RvckNsaWVudDsgfQorICAgIHZvaWQgc2V0SW5zcGVjdG9yQ2xpZW50KHN0ZDo6dW5pcXVlX3B0
cjxBUEk6Okluc3BlY3RvckNsaWVudD4mJik7CisKICAgICAvLyBQdWJsaWMgQVBJcwogICAgIFdl
YlBhZ2VQcm94eSogaW5zcGVjdGVkUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdGVkUGFn
ZTsgfQogICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5zcGVjdG9yUGFnZTsgfQpAQCAtMTg0LDggKzE5Miw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgaW5pdGlhbFdpbmRvd0hlaWdodDsKIAogcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkmKTsKLQogICAgIHZvaWQgY3JlYXRl
RnJvbnRlbmRQYWdlKCk7CiAgICAgdm9pZCBjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpOwog
CkBAIC0yNzMsNiArMjc5LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYlBhZ2VQcm94eSogbV9pbnNw
ZWN0ZWRQYWdlIHsgbnVsbHB0ciB9OwogICAgIFdlYlBhZ2VQcm94eSogbV9pbnNwZWN0b3JQYWdl
IHsgbnVsbHB0ciB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okluc3BlY3RvckNsaWVudD4g
bV9pbnNwZWN0b3JDbGllbnQ7CiAKICAgICBib29sIG1fdW5kZXJUZXN0IHsgZmFsc2UgfTsKICAg
ICBib29sIG1faXNWaXNpYmxlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IGIzOGUxZjYyYmMzNTcyMGNhMTViZTFjMWZhOTk1Y2NjNzRiOTdl
OGEuLjA5MTJkODAwNDNlMjY2Njc5MjFhMTE0YzA3ZjQwNzZiNDRiOWQ2NjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1
ZGUgIkFQSUhpc3RvcnlDbGllbnQuaCIKICNpbmNsdWRlICJBUElIaXRUZXN0UmVzdWx0LmgiCiAj
aW5jbHVkZSAiQVBJSWNvbkxvYWRpbmdDbGllbnQuaCIKLSNpbmNsdWRlICJBUElJbnNwZWN0b3JD
bGllbnQuaCIKICNpbmNsdWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgogI2lu
Y2x1ZGUgIkFQSUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb24uaCIKQEAg
LTQ4OCw3ICs0ODcsNiBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBw
YWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQogICAgICwgbV9jb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPEFQSTo6Q29u
dGV4dE1lbnVDbGllbnQ+KCkpCiAjZW5kaWYKLSAgICAsIG1faW5zcGVjdG9yQ2xpZW50KG1ha2VV
bmlxdWU8QVBJOjpJbnNwZWN0b3JDbGllbnQ+KCkpCiAgICAgLCBtX25hdmlnYXRpb25TdGF0ZSht
YWtlVW5pcXVlPFdlYk5hdmlnYXRpb25TdGF0ZT4oKSkKICAgICAsIG1fcHJvY2Vzcyhwcm9jZXNz
KQogICAgICwgbV9wYWdlR3JvdXAoKm1fY29uZmlndXJhdGlvbi0+cGFnZUdyb3VwKCkpCkBAIC03
MzEsMTYgKzcyOSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJY29uTG9hZGluZ0NsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4mCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoaGFzQ2xpZW50KSk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpzZXRJbnNwZWN0b3JDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
SW5zcGVjdG9yQ2xpZW50PiYmIGluc3BlY3RvckNsaWVudCkKLXsKLSAgICBpZiAoIWluc3BlY3Rv
ckNsaWVudCkgewotICAgICAgICBtX2luc3BlY3RvckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJ
bnNwZWN0b3JDbGllbnQ+KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2luc3Bl
Y3RvckNsaWVudCA9IFdURk1vdmUoaW5zcGVjdG9yQ2xpZW50KTsKLX0KLQogdm9pZCBXZWJQYWdl
UHJveHk6OnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihzdGQ6OnVuaXF1ZV9wdHI8UGFnZUxvYWRT
dGF0ZTo6T2JzZXJ2ZXI+JiYgb2JzZXJ2ZXIpCiB7CiAgICAgaWYgKG1fcGFnZUxvYWRTdGF0ZU9i
c2VydmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwMzdhMTA1
NDUyMmNhNzhlYTI5ZDVhNjhlZjQ1ZjE0ZDU1ZTBhOTRlLi42ODk0Yzk2ZjNhMmVmMjJiYWVjMmRi
YTY0MTQzOGQzZGYzMmJjMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMTkzLDcgKzE5Myw2IEBAIGNsYXNzIEZvcm1DbGllbnQ7CiBjbGFzcyBGdWxsc2NyZWVu
Q2xpZW50OwogY2xhc3MgSGlzdG9yeUNsaWVudDsKIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50Owot
Y2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgTG9hZGVyQ2xpZW50OwogY2xhc3MgTmF2aWdh
dGlvbjsKIGNsYXNzIE5hdmlnYXRpb25DbGllbnQ7CkBAIC01ODMsOSArNTgyLDYgQEAgcHVibGlj
OgogICAgIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQmIGljb25Mb2FkaW5nQ2xpZW50KCkgeyByZXR1
cm4gKm1faWNvbkxvYWRpbmdDbGllbnQ7IH0KICAgICB2b2lkIHNldEljb25Mb2FkaW5nQ2xpZW50
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PiYmKTsKIAotICAgIEFQSTo6
SW5zcGVjdG9yQ2xpZW50JiBpbnNwZWN0b3JDbGllbnQoKSB7IHJldHVybiAqbV9pbnNwZWN0b3JD
bGllbnQ7IH0KLSAgICB2b2lkIHNldEluc3BlY3RvckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpJbnNwZWN0b3JDbGllbnQ+JiYpOwotCiAgICAgdm9pZCBzZXRQYWdlTG9hZFN0YXRlT2JzZXJ2
ZXIoc3RkOjp1bmlxdWVfcHRyPFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyPiYmKTsKIAogICAgIHZv
aWQgaW5pdGlhbGl6ZVdlYlBhZ2UoKTsKQEAgLTI0MDIsNyArMjM5OCw2IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q29udGV4
dE1lbnVDbGllbnQ+IG1fY29udGV4dE1lbnVDbGllbnQ7CiAjZW5kaWYKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpJbnNwZWN0b3JDbGllbnQ+IG1faW5zcGVjdG9yQ2xpZW50OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQ+IG1faW5qZWN0ZWRCdW5kbGVD
bGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyPiBtX3Bh
Z2VMb2FkU3RhdGVPYnNlcnZlcjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDkzNTg5ZmMzNDVmMDc5MTYyZWI4OGJlOTQ2NzQ0ZmE3ZGE2YjYw
YzYuLmE3Nzg0NmNkMjAwODA1OTBmZTRiNGQ3MGQ1MzA4OWU3M2M0OGY2ZTYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAyMC0wOS0wOSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZSBzaG91bGQgYmUgYXR0YWNoZWQgdG8gX1dL
SW5zcGVjdG9yIG5vdCBXS1dlYlZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNTk2MQorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNz
by4KKworICAgICAgICBSZWZhY3RvciB0aGUgdGVzdCB0byBzZXQgdGhlIF9XS0luc3BlY3RvckRl
bGVnYXRlIGNvcnJlY3RseS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbTogUmVuYW1lZCBmcm9tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLSW5zcGVjdG9yRGVsZWdhdGUubW0u
CisgICAgICAgICgtW0luc3BlY3RvckRlbGVnYXRlIGluc3BlY3RvckRpZEVuYWJsZUJyb3dzZXJE
b21haW46XSk6CisgICAgICAgICgtW0luc3BlY3RvckRlbGVnYXRlIGluc3BlY3RvckRpZERpc2Fi
bGVCcm93c2VyRG9tYWluOl0pOgorICAgICAgICAoLVtVSURlbGVnYXRlIF93ZWJWaWV3OmRpZEF0
dGFjaExvY2FsSW5zcGVjdG9yOl0pOgorICAgICAgICAoVEVTVCk6CisKIDIwMjAtMDktMTAgIERl
dmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IG1vZGVybml6ZSBnZW5lcmF0ZWQgYmFja2VuZCBwcm90b2NvbCBjb2RlCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDRlNTVhYzM5NjViYWNmMDlhY2FmMzc5OTg4YmMzN2YxNjM0Y2RkZTcuLjRi
ZDMxZGIzNTkyMmYxOGEwZTkzNjE2MTc5NGQxYzQ0MmIzMDVhN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC03ODcsNyArNzg3LDYgQEAKIAkJOEMxMEFGOTgyMDY0Njc5MjAwMThGRDkwIC8q
IGxvY2Fsc3RvcmFnZS1lbXB0eS1zdHJpbmctdmFsdWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QzEwQUY5NzIwNjQ2NzgzMDAxOEZE
OTAgLyogbG9jYWxzdG9yYWdlLWVtcHR5LXN0cmluZy12YWx1ZS5odG1sICovOyB9OwogCQk4QzEw
QUY5OTIwNjQ2N0E5MDAxOEZEOTAgLyogTG9jYWxTdG9yYWdlUGVyc2lzdGVuY2UubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QzEwQUY5NjIwNjQ2Nzc3
MDAxOEZEOTAgLyogTG9jYWxTdG9yYWdlUGVyc2lzdGVuY2UubW0gKi87IH07CiAJCThFNEE4NTM3
MUUxRDFBQjIwMEY1M0IwRiAvKiBHcmlkUG9zaXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEU0QTg1MzYxRTFEMUFBMTAwRjUzQjBGIC8qIEdy
aWRQb3NpdGlvbi5jcHAgKi87IH07Ci0JCTkxMjQ3OUZBMjNFMjY5QTIwMEM2Q0VDOCAvKiBfV0tJ
bnNwZWN0b3JEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkxMjQ3OUY5MjNFMjY5QTEwMEM2Q0VDOCAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0
ZS5tbSAqLzsgfTsKIAkJOTMwQUQ0MDIxNTA2OThEMDAwNjc5NzBGIC8qIGxvdHMtb2YtdGV4dC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzMEFENDAxMTUwNjk4QjMwMDY3OTcwRiAvKiBsb3RzLW9mLXRleHQuaHRtbCAqLzsgfTsKIAkJ
OTMxMENEMzgxRUY3MDhGQjAwNTBGRkUwIC8qIEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTBDRDM2MUVGNzA4RkIwMDUwRkZFMCAv
KiBGdW5jdGlvbi5jcHAgKi87IH07CiAJCTkzMUMyODFEMjJCQzU1RjIwMDFEOThDNCAvKiBXZWJT
UUxCYXNpY3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzFDMjgxQzIyQkM1NUE3MDAxRDk4QzQgLyogV2ViU1FMQmFzaWNzLm1tICovOyB9OwpAQCAt
ODI4LDYgKzgyNyw3IEBACiAJCTk5ODRGQUNDMUNGRkFGNjAwMDhEMTk4QyAvKiBXS1dlYlZpZXdU
ZXh0SW5wdXQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5OTg0RkFDQTFDRkZBRUVFMDA4RDE5OEMgLyogV0tXZWJWaWV3VGV4dElucHV0Lm1tICovOyB9
OwogCQk5OTg0RkFDRTFDRkZCMDkwMDA4RDE5OEMgLyogZWRpdGFibGUtYm9keS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5ODRGQUNE
MUNGRkIwMzgwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwgKi87IH07CiAJCTk5OTkxMDhC
MUYzOTNDOTYwMDhBRDQ1NSAvKiBDb3B5aW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTk5OTEwOEExRjM5M0M4QjAwOEFENDU1IC8qIENvcHlpbmcu
bW0gKi87IH07CisJCTk5QjRGOUM2MjRFREVEOTcwMDAyMkI4MiAvKiBXS0luc3BlY3RvckRlbGVn
YXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlC
NEY5QzUyNEVERUQ5NjAwMDIyQjgyIC8qIFdLSW5zcGVjdG9yRGVsZWdhdGUubW0gKi87IH07CiAJ
CTlCMDJFMEQ2MjM1RkE0N0QwMDQwNDRCMiAvKiBUZXh0TWFuaXB1bGF0aW9uLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwMkUwRDUyMzVGQTQ3RDAw
NDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb24ubW0gKi87IH07CiAJCTlCMDc4NkE1MUM1ODg1QzMw
MEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW5fQnVuZGxlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDc4NkE0
MUM1ODg1QzMwMEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW5f
QnVuZGxlLmNwcCAqLzsgfTsKIAkJOUIwQzA1MTkyNEZERkI3RDAwRjJGRTMxIC8qIENvbXBhY3RV
bmlxdWVQdHJUdXBsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QjBDMDUxODI0RkRGQjcwMDBGMkZFMzEgLyogQ29tcGFjdFVuaXF1ZVB0clR1cGxl
LmNwcCAqLzsgfTsKQEAgLTIzNjcsNyArMjM2Nyw2IEBACiAJCThDMTBBRjk3MjA2NDY3ODMwMDE4
RkQ5MCAvKiBsb2NhbHN0b3JhZ2UtZW1wdHktc3RyaW5nLXZhbHVlLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAibG9jYWxzdG9yYWdlLWVtcHR5LXN0cmluZy12YWx1ZS5odG1sIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOERENzZGQTEwNDg2QUE3NjAwRDk2QjVFIC8q
IFRlc3RXZWJLaXRBUEkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsg
cGF0aCA9IFRlc3RXZWJLaXRBUEk7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCThFNEE4NTM2MUUxRDFBQTEwMEY1M0IwRiAvKiBHcmlkUG9zaXRpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JpZFBvc2l0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTEyNDc5RjkyM0UyNjlBMTAwQzZDRUM4IC8qIF9XS0luc3Bl
Y3RvckRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
X1dLSW5zcGVjdG9yRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
MEFENDAxMTUwNjk4QjMwMDY3OTcwRiAvKiBsb3RzLW9mLXRleHQuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJsb3RzLW9mLXRleHQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzMTBDRDM2MUVGNzA4RkIwMDUwRkZFMCAvKiBGdW5jdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzMUMyODFCMjJCQzU1ODMwMDFEOThDNCAvKiBvcGVuZGF0YWJh
c2UtYWx3YXlzLWV4aXN0cy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm9wZW5k
YXRhYmFzZS1hbHdheXMtZXhpc3RzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjQyNSw2ICsyNDI0LDcgQEAKIAkJOTk4NEZBQ0ExQ0ZGQUVFRTAwOEQxOThDIC8qIFdLV2Vi
Vmlld1RleHRJbnB1dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdLV2ViVmlld1RleHRJbnB1dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk4
NEZBQ0QxQ0ZGQjAzODAwOEQxOThDIC8qIGVkaXRhYmxlLWJvZHkuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJlZGl0YWJsZS1ib2R5Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5OTk5MTA4QTFGMzkzQzhCMDA4QUQ0NTUgLyogQ29weWluZy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvcHlpbmcubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTk5QjRGOUM1MjRFREVEOTYwMDAyMkI4MiAvKiBXS0luc3BlY3Rv
ckRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tJ
bnNwZWN0b3JEZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwMkUw
RDUyMzVGQTQ3RDAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb24ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBUZXh0TWFuaXB1bGF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5QjA3ODZBMjFDNTg4MzBGMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93
Um9vdHNPcGVuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVj
dGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlCMDc4NkE0MUM1ODg1QzMwMEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VB
bGxTaGFkb3dSb290c09wZW5fQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbl9CdW5kbGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzE0NCw3ICszMTQ0LDYgQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCUExNkY2NkI4MUM0MEU5RTEwMEJENEQyNCAvKiBSZXNvdXJjZXMgKi8s
CiAJCQkJNUNFQUI1REYxRkE5MzdDQjAwQTc3RkFBIC8qIF9XS0lucHV0RGVsZWdhdGUubW0gKi8s
Ci0JCQkJOTEyNDc5RjkyM0UyNjlBMTAwQzZDRUM4IC8qIF9XS0luc3BlY3RvckRlbGVnYXRlLm1t
ICovLAogCQkJCTdDRUZBOTY0MUFDMEI5RTIwMEI5MTBGRCAvKiBfV0tVc2VyQ29udGVudEV4dGVu
c2lvblN0b3JlLm1tICovLAogCQkJCTU3QzYyNDREMjM0NkJDRkEwMDM4M0ZFNyAvKiBfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tICovLAogCQkJCTA3NDY2NDU4MjJGRjYzMDUwMEUzNDUxQSAv
KiBBY2Nlc3NpYmlsaXR5VGVzdFBsdWdpbi5tbSAqLywKQEAgLTMzODAsNiArMzM3OSw3IEBACiAJ
CQkJMkQ4MzhCMUUxRUVGM0E1QjAwOUI5ODBFIC8qIFdLQ29udGVudFZpZXdFZGl0aW5nQWN0aW9u
cy5tbSAqLywKIAkJCQkzNzBDRTIyOTFGNTczNDM0MDBFNzQxMEIgLyogV0tDb250ZW50Vmlld1Rh
cmdldEZvckFjdGlvbi5tbSAqLywKIAkJCQk1MUQxMjQ5NzFFNzYzQUY4MDAyQjI4MjAgLyogV0tI
VFRQQ29va2llU3RvcmUubW0gKi8sCisJCQkJOTlCNEY5QzUyNEVERUQ5NjAwMDIyQjgyIC8qIFdL
SW5zcGVjdG9yRGVsZWdhdGUubW0gKi8sCiAJCQkJQTVBNzI5RjAxRjYyMkE5QTAwREU1QTI4IC8q
IFdLTmF2aWdhdGlvblJlc3BvbnNlLm1tICovLAogCQkJCURGNEIyNzM4MjFBNDc3MjcwMDlCRDFD
QSAvKiBXS05TRGljdGlvbmFyeUVtcHR5RGljdGlvbmFyeUNyYXNoLm1tICovLAogCQkJCTM3NUUw
RTE1MUQ2NjY3NDQwMEVGRUMyQyAvKiBXS05TTnVtYmVyLm1tICovLApAQCAtNDk2OCw3ICs0OTY4
LDYgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJ
CQk1Q0VBQjVFMTFGQTkzOUY0MDBBNzdGQUEgLyogX1dLSW5wdXREZWxlZ2F0ZS5tbSBpbiBTb3Vy
Y2VzICovLAotCQkJCTkxMjQ3OUZBMjNFMjY5QTIwMEM2Q0VDOCAvKiBfV0tJbnNwZWN0b3JEZWxl
Z2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDRUZBOTY2MUFDMEI5RTIwMEI5MTBGRCAvKiBf
V0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTdDNjI0
NEUyMzQ2QkNGQTAwMzgzRkU3IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3Q0NFN0VFNDFBNDExQUU2MDA0NDdDNEMgLyogQWJvdXRCbGFua0xvYWQu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC01MzM1LDYgKzUzMzQsNyBAQAogCQkJCTdDQ0U3RjBFMUE0
MTFBRTYwMDQ0N0M0QyAvKiBSZXNpemVSZXZlcnNlUGFnaW5hdGVkV2ViVmlldy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3Q0NFN0YwRjFBNDExQUU2MDA0NDdDNEMgLyogUmVzaXplV2luZG93QWZ0
ZXJDcmFzaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0I3QUZEQzIzQzQ1Mjk3MDBFNDlDRjMg
LyogUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKKwkJCQk5OUI0RjlDNjI0
RURFRDk3MDAwMjJCODIgLyogV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTUxQzhFMUE1MUYyNkFGNEMwMEJGNzMxQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDQjEwRTEyMTM0NTdEMzAwQUM1QUYwIC8qIFJlc3BvbnNp
dmVuZXNzVGltZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTJDNEM5RTIwRUFBNDBEMDA0OTQ1
RUEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckNyYXNoLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVs
ZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVj
dG9yRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWUzZDY5NTg1ZmQ1MDQ2NjcxNzNlMzI0MmI3MzRh
ZmM0ZGM4NjBjYgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDEwNyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlRlc3QuaCIKKyNp
bXBvcnQgIlV0aWxpdGllcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0
L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVj
dG9yLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yRGVsZWdhdGUuaD4KKyNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFBMQVRGT1JNKE1BQykKKworQGNsYXNzIEluc3BlY3Rv
ckRlbGVnYXRlOworCitzdGF0aWMgYm9vbCBkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCA9
IGZhbHNlOworc3RhdGljIGJvb2wgYnJvd3NlckRvbWFpbkVuYWJsZWRGb3JJbnNwZWN0b3JDYWxs
ZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGJyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3Rv
ckNhbGxlZCA9IGZhbHNlOworc3RhdGljIFJldGFpblB0cjxJbnNwZWN0b3JEZWxlZ2F0ZT4gc2hh
cmVkSW5zcGVjdG9yRGVsZWdhdGU7CisKK0BpbnRlcmZhY2UgSW5zcGVjdG9yRGVsZWdhdGUgOiBO
U09iamVjdCA8X1dLSW5zcGVjdG9yRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBJ
bnNwZWN0b3JEZWxlZ2F0ZQorCistICh2b2lkKWluc3BlY3RvckRpZEVuYWJsZUJyb3dzZXJEb21h
aW46KF9XS0luc3BlY3RvciAqKWluc3BlY3RvcgoreworICAgIGJyb3dzZXJEb21haW5FbmFibGVk
Rm9ySW5zcGVjdG9yQ2FsbGVkID0gdHJ1ZTsKKworICAgIC8vIFdhaXQgZm9yIHRoZSBCcm93c2Vy
IGRvbWFpbiB0byBiZSBlbmFibGVkIGJlZm9yZSBjbG9zaW5nIFdlYiBJbnNwZWN0b3IsIHdoaWNo
IHdpbGwKKyAgICAvLyBhdXRvbWF0aWNhbGx5IGRpc2FibGUgdGhlIGRvbWFpbi4KKyAgICBbaW5z
cGVjdG9yIGNsb3NlXTsKK30KKworLSAodm9pZClpbnNwZWN0b3JEaWREaXNhYmxlQnJvd3NlckRv
bWFpbjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yCit7CisgICAgYnJvd3NlckRvbWFpbkRpc2Fi
bGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gdHJ1ZTsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIFVJ
RGVsZWdhdGUgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRp
b24gVUlEZWxlZ2F0ZQorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRp
ZEF0dGFjaExvY2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IKK3sKKyAgICBk
aWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNlOworICAgIGJyb3dzZXJEb21haW5F
bmFibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CisgICAgYnJvd3NlckRvbWFpbkRpc2Fi
bGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CisKKyAgICBFWFBFQ1RfRVEod2ViVmlldy5f
aW5zcGVjdG9yLCBpbnNwZWN0b3IpOworCisgICAgc2hhcmVkSW5zcGVjdG9yRGVsZWdhdGUgPSBb
SW5zcGVjdG9yRGVsZWdhdGUgbmV3XTsKKyAgICBbaW5zcGVjdG9yIHNldERlbGVnYXRlOnNoYXJl
ZEluc3BlY3RvckRlbGVnYXRlLmdldCgpXTsKKworICAgIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9y
Q2FsbGVkID0gdHJ1ZTsKK30KKworQGVuZAorCitURVNUKFdlYktpdF9XS0luc3BlY3RvckRlbGVn
YXRlLCBEaWROb3RpZnlGb3JMb2NhbEluc3BlY3RvcikKK3sKKyAgICBhdXRvIHdlYlZpZXdDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICB3
ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlcy5fZGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCA9IFlFUzsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIHVpRGVsZWdhdGUgPSBhZG9w
dE5TKFtVSURlbGVnYXRlIG5ld10pOworCisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1aURl
bGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxoZWFkPjx0aXRs
ZT5UZXN0IHBhZ2UgdG8gYmUgaW5zcGVjdGVkPC90aXRsZT48L2hlYWQ+PGJvZHk+PHA+RmlsbGVy
IGNvbnRlbnQ8L3A+PC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6
Ly9leGFtcGxlLmNvbS8iXV07CisKKyAgICBFWFBFQ1RfRkFMU0Uod2ViVmlldy5nZXQoKS5faGFz
SW5zcGVjdG9yRnJvbnRlbmQpOworCisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHNob3ddOwor
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNh
bGxlZCk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZicm93c2VyRG9tYWluRW5hYmxl
ZEZvckluc3BlY3RvckNhbGxlZCk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZicm93
c2VyRG9tYWluRGlzYWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQpOworfQorCisjZW5kaWYgLy8gUExB
VEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9fV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvX1dLSW5zcGVjdG9yRGVsZWdhdGUubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGE0Y2MzZjIzY2U0Y2M3NDgzOTBjNTJkNzJjYmZjMTY5ZjI5MTA0MTEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5o
IgotCi0jaW1wb3J0ICJUZXN0LmgiCi0jaW1wb3J0ICJVdGlsaXRpZXMuaCIKLSNpbXBvcnQgPFdl
YktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1By
aXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgot
I2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3Rvci5oPgotI2ltcG9ydCA8V2ViS2l0L19XS0luc3Bl
Y3RvckRlbGVnYXRlLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0KLSNpZiBQTEFURk9S
TShNQUMpCi0KLXN0YXRpYyBib29sIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFs
c2U7Ci1zdGF0aWMgYm9vbCBicm93c2VyRG9tYWluRW5hYmxlZEZvckluc3BlY3RvckNhbGxlZCA9
IGZhbHNlOwotc3RhdGljIGJvb2wgYnJvd3NlckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9yQ2Fs
bGVkID0gZmFsc2U7Ci0KLUBpbnRlcmZhY2UgSW5zcGVjdG9yRGVsZWdhdGUgOiBOU09iamVjdCA8
X1dLSW5zcGVjdG9yRGVsZWdhdGU+Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBJbnNwZWN0b3JE
ZWxlZ2F0ZQotCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEF0dGFj
aExvY2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IKLXsKLSAgICBkaWRBdHRh
Y2hMb2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNlOwotICAgIGJyb3dzZXJEb21haW5FbmFibGVk
Rm9ySW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7Ci0gICAgYnJvd3NlckRvbWFpbkRpc2FibGVkRm9y
SW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7Ci0KLSAgICBFWFBFQ1RfRVEod2ViVmlldy5faW5zcGVj
dG9yLCBpbnNwZWN0b3IpOwotICAgIEVYUEVDVF9UUlVFKHdlYlZpZXcuX2hhc0luc3BlY3RvckZy
b250ZW5kKTsKLQotICAgIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gdHJ1ZTsKLX0K
LQotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBicm93c2VyRG9tYWluRW5h
YmxlZEZvckluc3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yCi17Ci0gICAgRVhQRUNU
X0VRKHdlYlZpZXcuX2luc3BlY3RvciwgaW5zcGVjdG9yKTsKLQotICAgIC8vIFdhaXQgZm9yIHRo
ZSBCcm93c2VyIGRvbWFpbiB0byBiZSBlbmFibGVkIGJlZm9yZSBjbG9zaW5nIFdlYiBJbnNwZWN0
b3IsIHdoaWNoIHdpbGwKLSAgICAvLyBhdXRvbWF0aWNhbGx5IGRpc2FibGUgdGhlIGRvbWFpbi4K
LSAgICBbaW5zcGVjdG9yIGNsb3NlXTsKLQotICAgIGJyb3dzZXJEb21haW5FbmFibGVkRm9ySW5z
cGVjdG9yQ2FsbGVkID0gdHJ1ZTsKLX0KLQotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBicm93c2VyRG9tYWluRGlzYWJsZWRGb3JJbnNwZWN0b3I6KF9XS0luc3BlY3RvciAq
KWluc3BlY3RvcgotewotICAgIEVYUEVDVF9FUSh3ZWJWaWV3Ll9pbnNwZWN0b3IsIGluc3BlY3Rv
cik7Ci0KLSAgICBicm93c2VyRG9tYWluRGlzYWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQgPSB0cnVl
OwotfQotCi1AZW5kCi0KLVRFU1QoV2ViS2l0X1dLSW5zcGVjdG9yRGVsZWdhdGUsIERpZE5vdGlm
eUZvckxvY2FsSW5zcGVjdG9yKQotewotICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOwotICAgIHdlYlZpZXdDb25maWd1
cmF0aW9uLmdldCgpLnByZWZlcmVuY2VzLl9kZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gWUVTOwot
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmln
dXJhdGlvbi5nZXQoKV0pOwotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtJbnNwZWN0b3JE
ZWxlZ2F0ZSBuZXddKTsKLSAgICBbd2ViVmlldyBfc2V0SW5zcGVjdG9yRGVsZWdhdGU6ZGVsZWdh
dGUuZ2V0KCldOwotICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGhlYWQ+PHRpdGxlPlRl
c3QgcGFnZSB0byBiZSBpbnNwZWN0ZWQ8L3RpdGxlPjwvaGVhZD48Ym9keT48cD5GaWxsZXIgY29u
dGVudDwvcD48L2JvZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4
YW1wbGUuY29tLyJdXTsKLQotICAgIEVYUEVDVF9GQUxTRSh3ZWJWaWV3LmdldCgpLl9oYXNJbnNw
ZWN0b3JGcm9udGVuZCk7Ci0KLSAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gc2hvd107Ci0KLSAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVk
KTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmJyb3dzZXJEb21haW5FbmFibGVkRm9y
SW5zcGVjdG9yQ2FsbGVkKTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmJyb3dzZXJE
b21haW5EaXNhYmxlZEZvckluc3BlY3RvckNhbGxlZCk7Ci19Ci0KLSNlbmRpZiAvLyBQTEFURk9S
TShNQUMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>