<?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>29160</bug_id>
          
          <creation_ts>2009-09-10 16:43:19 -0700</creation_ts>
          <short_desc>Safari 4 unable to change settings on Linksys Routers</short_desc>
          <delta_ts>2009-09-14 13:33:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly 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>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>146395</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-09-10 16:43:19 -0700</bug_when>
    <thetext>Safari 4 unable to change settings on Linksys Routers.

This originally broke in http://trac.webkit.org/changeset/42483 where - on Mac and Windows platforms - WebKit stopped automatically sending HTTP Basic Authentication credentials out on subsequent requests.

Linksys routers depend on getting the credential without having to ask for it.

In Radar as &lt;rdar://problem/7174050&gt;

And I have a patch coming that augments the WebCore session credential store to handle this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146448</commentid>
    <comment_count>1</comment_count>
      <attachid>39407</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-09-10 20:56:44 -0700</bug_when>
    <thetext>Created attachment 39407
Proposed fix (layout test is coming seperately)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146723</commentid>
    <comment_count>2</comment_count>
      <attachid>39469</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-09-11 13:09:39 -0700</bug_when>
    <thetext>Created attachment 39469
Updated fix + DRT enhancements + Layout Test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146858</commentid>
    <comment_count>3</comment_count>
      <attachid>39469</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-11 18:29:53 -0700</bug_when>
    <thetext>Comment on attachment 39469
Updated fix + DRT enhancements + Layout Test

This only changes the behavior for Basic authentication scheme. I think that&apos;s worth mentioning in ChangeLog.

+static OriginToDefaultCredentialMap&amp; originToDefaultCredentialMap()

Maybe it&apos;s also worth adding &quot;Basic&quot; somewhere in this name, or in a comment next to it.

+#include &quot;Credential.h&quot;
+#include &quot;CString.h&quot;

This is not properly sorted, we use case-sensitive sort for headers.

 #include &quot;CookieStorageWin.h&quot;
+#include &quot;CredentialStorage.h&quot;
 #include &quot;CString.h&quot;

Same issue (pre-existing).

+            // This case should never happen, as all URL paths should start with a leading /

All _HTTP_ paths? There are protocolInHTTPFamily() checks at call sites, seems worth adding an assertion in the function itself.

+        // &lt;rdar://problem/7174050&gt; - For URLs that match the paths of those previously challenged for HTTP Basic authentication, 
+        // we need to try and reuse the credential preemptively, as allowed by RFC 2617.

Two times in a row, I read this as a FIXME comment. Maybe it&apos;s just me, or maybe it needs to be more assertive than &quot;we need to&quot; :)

+        CString encoded = unencoded.utf8().base64Encode();

We should ideally check if it&apos;s UTF-8 is what other browsers use - it may also be page encoding. But I&apos;m not sure if credentials encoding is something we do correctly now.

     if (!challenge.previousFailureCount() &amp;&amp; (!client() || client()-&gt;shouldUseCredentialStorage(this))) {
-        NSURLCredential *credential = WebCoreCredentialStorage::get([mac(challenge) protectionSpace]);
-        if (credential) {
-            [challenge.sender() useCredential:credential forAuthenticationChallenge:mac(challenge)];
+        Credential credential = CredentialStorage::get(challenge.protectionSpace());
+        if (!credential.isEmpty()) {
+            [challenge.sender() useCredential:mac(credential) forAuthenticationChallenge:mac(challenge)];
             return;
         }

If default credentials are incorrect, are we going to send them again on 401, and only then ask the user?

A separate question - aren&apos;t we going to store proxy credentials as default credentials for an URL after handling a 407 response?

This patch looks really good to me, both code changes and the fact that it greatly improves DRT capabilities. I have to say r- since 407 looks like an important issue, even though I&apos;m not 100% sure that it&apos;s real.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146953</commentid>
    <comment_count>4</comment_count>
      <attachid>39519</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-09-12 15:36:59 -0700</bug_when>
    <thetext>Created attachment 39519
Patch with changes

Except for the unanswered question about credential encoding, which I&apos;m sure we get wrong in plenty of other contexts, this patch addresses all of Alexeys comments, including most importantly:
-Not sending the same incorrect credentials twice in a row
and
-Not storing credentials on 407 (by limiting to 401 only)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147107</commentid>
    <comment_count>5</comment_count>
      <attachid>39554</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-09-14 10:44:20 -0700</bug_when>
    <thetext>Created attachment 39554
Updated fix - Same code changes as my Saturday patch, but a new layout test for the &quot;resending the same wrong credentials&quot; behavior.

I also wanted to layout test the 407 behavior, but CFNetwork won&apos;t send proxy credentials unless you&apos;re actually connected to a proxy, and testing that is outside the scope of our current layout test infrastructure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147110</commentid>
    <comment_count>6</comment_count>
      <attachid>39554</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-14 10:53:30 -0700</bug_when>
    <thetext>Comment on attachment 39554
Updated fix - Same code changes as my Saturday patch, but a new layout test for the &quot;resending the same wrong credentials&quot; behavior.

+    const HashMap&lt;String, Credential&gt;&amp; pathToCredentialMap(originToDefaultBasicCredentialMap().get(origin));

Good catch with copying the map!

+        Credential m_initialCredential;

This seems difficult to understand without a context, I think it&apos;s worth a comment (yeah, copied many times).

+        NSLog(@&quot;Telling send to use %@ for challenge %@&quot;, mac(webCredential), d-&gt;m_currentMacChallenge);

Looks unintentional (maybe there&apos;s something to log with WebCore mechanisms though?) 

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147111</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-09-14 10:54:44 -0700</bug_when>
    <thetext>Whoops - that log was in there for last minute testing with the new layout test.

Thanks for the review!

Will be landing shortly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147147</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-09-14 13:06:35 -0700</bug_when>
    <thetext>Committed revision 48363
http://trac.webkit.org/changeset/48363</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147155</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-09-14 13:13:50 -0700</bug_when>
    <thetext>Committed revision 48364
http://trac.webkit.org/changeset/48364

Windows build fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147162</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-09-14 13:33:02 -0700</bug_when>
    <thetext>Committed revision 48365
http://trac.webkit.org/changeset/48365

Windows DRT build fix.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39407</attachid>
            <date>2009-09-10 20:56:44 -0700</date>
            <delta_ts>2009-09-11 13:09:39 -0700</delta_ts>
            <desc>Proposed fix (layout test is coming seperately)</desc>
            <filename>linksyspatch.txt</filename>
            <type>text/plain</type>
            <size>55010</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODI4MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODAgQEAKKzIwMDktMDktMTAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNh
ZmFyaSA0IGNhbm5vdCBiZSB1c2VkIHRvIHVwZGF0ZSBmaXJtd2FyZSBvbiBMaW5rc3lzIHJvdXRl
cnMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTc0MDUwPiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MTYwCisKKyAgICAgICAgSW4gaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvNDI0ODMsIHdlIGRpc2FibGVkIENGTmV0d29yaydzIHNlc3Np
b24gY3JlZGVudGlhbCBzdG9yYWdlIGFuZCAKKyAgICAgICAgaW1wbGVtZW50ZWQgb3VyIG93biBp
biBXZWJDb3JlLgorCisgICAgICAgIE9uZSBmZWF0dXJlIHdlIGxvc3QgaXMgdGhhdCBDRk5ldHdv
cmsgd291bGQgYXV0b21hdGljYWxseSBzZW5kIHByZXZpb3VzbHkgYXV0aGVudGljYXRlZCBjcmVk
ZW50aWFscworICAgICAgICB3aXRoIG5ldyBjb25uZWN0aW9ucyB3aGVuIHRoZSBwYXRocyBtYXRj
aCwgYXMgYWxsb3dlZCBieSBSRkMgMjYxNyBmb3IgSFRUUCBCYXNpYyBBdXRoZW50aWNhdGlvbi4g
IAorCisgICAgICAgIEV2ZW4gdGhvdWdoIGl0J3Mgb3B0aW9uYWwgZm9yIFVzZXIgQWdlbnRzIHRv
IGRvIHRoaXMsIChzb21lPykgTGlua3N5cyByb3V0ZXJzIHJlbHkgb24gdGhpcyBiZWhhdmlvci4K
KworICAgICAgICBTbyBub3cgV2ViQ29yZSdzIENyZWRlbnRpYWxTdG9yYWdlIHdpbGwgZG8gaXQg
YWxzby4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIFdlYkNv
cmUuYmFzZS5leHA6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRl
bnRpYWw6OmlzRW1wdHkpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5o
OgorCisgICAgICAgIEFkZCBhIHNsaWdodGx5IG1vcmUgZnVsbCBmZWF0dXJlZCBDcmVkZW50aWFs
U3RvcmUgdGhhdCB3aWxsIHRyYWNrIFVSTCBwYXRocyBhIGNyZWRlbnRpYWwgY2FtZSBmcm9tOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnByb3RlY3Rpb25TcGFjZVRvQ3JlZGVudGlhbE1hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpvcmlnaW5Ub0RlZmF1bHRDcmVkZW50aWFsTWFwKToKKyAgICAgICAgKFdl
YkNvcmU6Om9yaWdpblN0cmluZ0Zyb21VUkwpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlh
bFN0b3JhZ2U6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6Z2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpnZXREZWZhdWx0QXV0aGVu
dGljYXRpb25DcmVkZW50aWFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRp
YWxTdG9yYWdlLmg6IEFkZGVkLgorCisgICAgICAgIEFsbG93IFByb3RlY3Rpb25TcGFjZSB0byBi
ZSBhIGhhc2gga2V5OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZTo6UHJvdGVjdGlvblNwYWNl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAo
V2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VIYXNoLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlSGFzaDo6aGFzaCk6CisgICAgICAgIChXZWJD
b3JlOjpQcm90ZWN0aW9uU3BhY2VIYXNoOjplcXVhbCk6CisKKyAgICAgICAgUmVtb3ZlIFdlYkNv
cmVDcmVkZW50aWFsU3RvcmFnZToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhl
bnRpY2F0aW9uQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGlj
YXRpb25DRi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9u
TWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMu
bW06CisKKyAgICAgICAgQ2hhbmdlIFJlc291cmNlSGFuZGxlQ0ZOZXQgdG8gdHJ5IHRvIHVzZSBz
dG9yZWQgY3JlZGVudGlhbHMgb24gbmV3IGNvbm5lY3Rpb25zLCBpZiBhcHByb3ByaWF0ZToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6OmRpZFJlY2VpdmVDaGFsbGVu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyOjpsb2FkKToK
KworICAgICAgICBDaGFuZ2UgUmVzb3VyY2VIYW5kbGVNYWMgdG8gdHJ5IHRvIHVzZSBzdG9yZWQg
Y3JlZGVudGlhbHMgb24gbmV3IGNvbm5lY3Rpb25zLCBpZiBhcHByb3ByaWF0ZToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwpOgorICAgICAgICAoLVtX
ZWJDb3JlU3luY2hyb25vdXNMb2FkZXIgY29ubmVjdGlvbjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6XSk6CisgICAgICAgICgrW1dlYkNvcmVTeW5jaHJvbm91c0xvYWRlciBsb2Fk
UmVxdWVzdDphbGxvd1N0b3JlZENyZWRlbnRpYWxzOnJldHVybmluZ1Jlc3BvbnNlOmVycm9yOl0p
OgorCisgICAgICAgIEFkZCBiYXNlNjQtYWJpbGl0eSB0byBDU3RyaW5nOgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvQ1N0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU3RyaW5nQnVmZmVy
OjpiYXNlNjRFbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1N0cmluZzo6YmFzZTY0RW5jb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0NTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTdHJpbmdCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU3RyaW5nQnVmZmVy
OjpDU3RyaW5nQnVmZmVyKToKKwogMjAwOS0wOS0xMCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUu
Y29tPgogCiAgICAgICAgIEZpeCB0aGUgV2luZG93cyBidWlsZC4KSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS5iYXNlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJKHJl
dmlzaW9uIDQ4Mjc2KQorKysgV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMTEsMTEgKzMxMSwxMSBAQCBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMTJyZWxl
YXNlUHJvCiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMjBmb3JjZUNvbnRlbnRTbmlmZmlu
Z0V2CiBfX1pON1dlYkNvcmUxNFJlc291cmNlTG9hZGVyMTRjYW5jZWxsZWRFcnJvckV2CiBfX1pO
N1dlYkNvcmUxNFJlc291cmNlTG9hZGVyMTlzZXRTaG91bGRCdWZmZXJEYXRhRWIKLV9fWk43V2Vi
Q29yZTE0U2VjdXJpdHlPcmlnaW42Y3JlYXRlRVJLTlNfNEtVUkxFCiBfX1pON1dlYkNvcmUxNFNl
Y3VyaXR5T3JpZ2luMTZjcmVhdGVGcm9tU3RyaW5nRVJLTlNfNlN0cmluZ0UKIF9fWk43V2ViQ29y
ZTE0U2VjdXJpdHlPcmlnaW4yNHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbEVSS05TXzZTdHJpbmdF
CiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMjV3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2lu
RVJLUzBfUktOU182U3RyaW5nRVM1X2IKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4yN3Jl
c2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0c0V2CitfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2lu
NmNyZWF0ZUVSS05TXzRLVVJMRQogX19aTjdXZWJDb3JlMTVBcmNoaXZlUmVzb3VyY2U2Y3JlYXRl
RU4zV1RGMTBQYXNzUmVmUHRySU5TXzEyU2hhcmVkQnVmZmVyRUVFUktOU180S1VSTEVSS05TXzZT
dHJpbmdFU0FfU0FfUktOU18xNlJlc291cmNlUmVzcG9uc2VFCiBfX1pON1dlYkNvcmUxNUJhY2tG
b3J3YXJkTGlzdDEwcmVtb3ZlSXRlbUVQTlNfMTFIaXN0b3J5SXRlbUUKIF9fWk43V2ViQ29yZTE1
QmFja0ZvcndhcmRMaXN0MTBzZXRFbmFibGVkRWIKQEAgLTM5Niw2ICszOTYsNyBAQCBfX1pON1dl
YkNvcmUxNmNyZWF0ZUZ1bGxNYXJrdXBFUEtOU181UmFuCiBfX1pON1dlYkNvcmUxNmVuY2xvc2lu
Z0ludFJlY3RFUks3X05TUmVjdAogX19aTjdXZWJDb3JlMTZpc0VuZE9mUGFyYWdyYXBoRVJLTlNf
MTVWaXNpYmxlUG9zaXRpb25FCiBfX1pON1dlYkNvcmUxNnRocmVhZEdsb2JhbERhdGFFdgorX19a
TjdXZWJDb3JlMTdDcmVkZW50aWFsU3RvcmFnZTNnZXRFUktOU18xNVByb3RlY3Rpb25TcGFjZUUK
IF9fWk43V2ViQ29yZTE3RE9NSW1wbGVtZW50YXRpb24xNGlzVGV4dE1JTUVUeXBlRVJLTlNfNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTE3R2x5cGhQYWdlVHJlZU5vZGUxOHRyZWVHbHlwaFBhZ2VDb3Vu
dEV2CiBfX1pON1dlYkNvcmUxN0hUTUxQbHVnSW5FbGVtZW50MTFnZXROUE9iamVjdEV2CkBAIC00
NTYsNyArNDU3LDYgQEAgX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTVlbQog
X19aTjdXZWJDb3JlMjNSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZEMxRVBOU184RG9jdW1lbnRFTjNX
VEYxMFBhc3NSZWZQdHJJTlNfMTZEb2N1bWVudEZyYWdtZW50RUVFYmJiYmJOU18xMEVkaXRBY3Rp
b25FCiBfX1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBOU184RG9jdW1lbnRF
UktOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRQogX19aTjdXZWJDb3JlMjRCaW5hcnlQcm9w
ZXJ0eUxpc3RXcml0ZXIxN3dyaXRlUHJvcGVydHlMaXN0RXYKLV9fWk43V2ViQ29yZTI0V2ViQ29y
ZUNyZWRlbnRpYWxTdG9yYWdlOW1fc3RvcmFnZUUKIF9fWk43V2ViQ29yZTI0Y3JlYXRlRnJhZ21l
bnRGcm9tTWFya3VwRVBOU184RG9jdW1lbnRFUktOU182U3RyaW5nRVM0XwogX19aTjdXZWJDb3Jl
MjRkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNFUktOU182U3RyaW5nRQogX19aTjdXZWJDb3JlMjRu
b3RpZnlIaXN0b3J5SXRlbUNoYW5nZWRFCkBAIC00ODEsNiArNDgxLDcgQEAgX19aTjdXZWJDb3Jl
MzFhcHBsaWNhdGlvbklzTWljcm9zb2Z0TWVzcwogX19aTjdXZWJDb3JlMzJwbGFpblRleHRUb01h
bGxvY0FsbG9jYXRlZEJ1ZmZlckVQS05TXzVSYW5nZUVSamIKIF9fWk43V2ViQ29yZTMzc2V0RGVm
YXVsdFRocmVhZFZpb2xhdGlvbkJlaGF2aW9yRU5TXzIzVGhyZWFkVmlvbGF0aW9uQmVoYXZpb3JF
TlNfMjBUaHJlYWRWaW9sYXRpb25Sb3VuZEUKIF9fWk43V2ViQ29yZTM2SW5pdGlhbGl6ZUxvZ2dp
bmdDaGFubmVsc0lmTmVjZXNzYXJ5RXYKK19fWk43V2ViQ29yZTNtYWNFUktOU18xMENyZWRlbnRp
YWxFCiBfX1pON1dlYkNvcmUzbWFjRVJLTlNfMjNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUUKIF9f
Wk43V2ViQ29yZTRGb250MTFzZXRDb2RlUGF0aEVOUzBfOENvZGVQYXRoRQogX19aTjdXZWJDb3Jl
NEZvbnQxOHNob3VsZFVzZVNtb290aGluZ0V2CkBAIC01MTQsNiArNTE1LDcgQEAgX19aTjdXZWJD
b3JlNFBhZ2U5Z29Gb3J3YXJkRXYKIF9fWk43V2ViQ29yZTRQYWdlOWluaXRHcm91cEV2CiBfX1pO
N1dlYkNvcmU0UGFnZUMxRVBOU18xMkNocm9tZUNsaWVudEVQTlNfMTdDb250ZXh0TWVudUNsaWVu
dEVQTlNfMTJFZGl0b3JDbGllbnRFUE5TXzEwRHJhZ0NsaWVudEVQTlNfMTVJbnNwZWN0b3JDbGll
bnRFCiBfX1pON1dlYkNvcmU0UGFnZUQxRXYKK19fWk43V2ViQ29yZTRjb3JlRVAyME5TVVJMUHJv
dGVjdGlvblNwYWNlCiBfX1pON1dlYkNvcmU1Q2FjaGUxMXNldERpc2FibGVkRWIKIF9fWk43V2Vi
Q29yZTVDYWNoZTEzZ2V0U3RhdGlzdGljc0V2CiBfX1pON1dlYkNvcmU1Q2FjaGUxM3NldENhcGFj
aXRpZXNFampqCkBAIC03NDQsMTAgKzc0NiwxMCBAQCBfX1pON1dlYkNvcmU5SFRNTE5hbWVzOXNj
cmlwdFRhZ0UKIF9fWk43V2ViQ29yZTlQYWdlQ2FjaGUxMXNldENhcGFjaXR5RWkKIF9fWk43V2Vi
Q29yZTlQYWdlQ2FjaGUyN3JlbGVhc2VBdXRvcmVsZWFzZWRQYWdlc05vd0V2CiBfX1pON1dlYkNv
cmU5UGFnZUdyb3VwMTNhZGRVc2VyU2NyaXB0RVJLTlNfNlN0cmluZ0VSS05TXzRLVVJMRVJLTjNX
VEY2VmVjdG9ySVMxX0xtMEVFRWpOU18yM1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lRQotX19aTjdX
ZWJDb3JlOVBhZ2VHcm91cDE3YWRkVXNlclN0eWxlU2hlZXRFUktOU182U3RyaW5nRVJLTlNfNEtV
UkxFUktOM1dURjZWZWN0b3JJUzFfTG0wRUVFagogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDE0YWRk
VmlzaXRlZExpbmtFUEt0bQotX19aTjdXZWJDb3JlOVBhZ2VHcm91cDIwcmVtb3ZlQWxsVXNlckNv
bnRlbnRFdgorX19aTjdXZWJDb3JlOVBhZ2VHcm91cDE3YWRkVXNlclN0eWxlU2hlZXRFUktOU182
U3RyaW5nRVJLTlNfNEtVUkxFUktOM1dURjZWZWN0b3JJUzFfTG0wRUVFagogX19aTjdXZWJDb3Jl
OVBhZ2VHcm91cDE3Y2xvc2VMb2NhbFN0b3JhZ2VFdgorX19aTjdXZWJDb3JlOVBhZ2VHcm91cDIw
cmVtb3ZlQWxsVXNlckNvbnRlbnRFdgogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDIxcmVtb3ZlQWxs
VmlzaXRlZExpbmtzRXYKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAyNXJlbW92ZVVzZXJDb250ZW50
Rm9yV29ybGRFagogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDI2c2V0U2hvdWxkVHJhY2tWaXNpdGVk
TGlua3NFYgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lv
biA0ODI3NikKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtp
bmcgY29weSkKQEAgLTIwMDEzLDYgKzIwMDEzLDE0IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0K
IAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXENyZWRl
bnRpYWxTdG9yYWdlLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXENyZWRlbnRpYWxTdG9yYWdlLmgi
DQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cbmV0d29ya1xGb3JtRGF0YS5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4N
CkBAIC0yMDA2MSw2ICsyMDA2OSwxMCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZp
bGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xQcm90ZWN0aW9uU3Bh
Y2VIYXNoLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xSZXNvdXJjZUVycm9yQmFzZS5jcHAiDQogCQkJ
CQk+DQogCQkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gNDgyNzYpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAxOSw2ICsxMDE5LDkgQEAKIAkJ
NTE5NjExNzgwQ0FDNTZBODAwMTBBODBDIC8qIERhdGFiYXNlVGhyZWFkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTk2MTE2MjBDQUM1NjU3MDAxMEE4
MEMgLyogRGF0YWJhc2VUaHJlYWQuaCAqLzsgfTsKIAkJNTE5NjExRUEwQ0FDNzQ5QzAwMTBBODBD
IC8qIERhdGFiYXNlVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE5NjExRTgwQ0FDNzQ5QzAwMTBBODBDIC8qIERhdGFiYXNlVGFzay5oICovOyB9
OwogCQk1MTk2MTFFQjBDQUM3NDlDMDAxMEE4MEMgLyogRGF0YWJhc2VUYXNrLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOTYxMUU5MENBQzc0OUMw
MDEwQTgwQyAvKiBEYXRhYmFzZVRhc2suY3BwICovOyB9OworCQk1MUEwNTIzMzEwNTg3NzRGMDBD
QzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTA1MjMxMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFs
U3RvcmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTUxQTA1MjM0MTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUEwNTIzMjEwNTg3
NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuY3BwICovOyB9OworCQk1MUEwNTI1NjEw
NTg4NzQwMDBDQzlFOTUgLyogUHJvdGVjdGlvblNwYWNlSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBMDUyNTUxMDU4ODc0MDAwQ0M5RTk1IC8q
IFByb3RlY3Rpb25TcGFjZUhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MUE0NUI1NjBDQUQ3RkQ3MDAwRDJCRTkgLyogRGF0YWJhc2VBdXRo
b3JpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUE0NUI1NDBDQUQ3RkQ3MDAwRDJCRTkgLyogRGF0YWJhc2VBdXRob3JpemVyLmggKi87IH07CiAJ
CTUxQTQ1QjU3MENBRDdGRDcwMDBEMkJFOSAvKiBEYXRhYmFzZUF1dGhvcml6ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNDVCNTUwQ0FEN0ZE
NzAwMEQyQkU5IC8qIERhdGFiYXNlQXV0aG9yaXplci5jcHAgKi87IH07CiAJCTUxQTkyNjdDMEQ1
M0YwNTcwMDYzRUNDMiAvKiBPcmlnaW5RdW90YU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBOTI2NzgwRDUzRjA1NzAwNjNFQ0MyIC8q
IE9yaWdpblF1b3RhTWFuYWdlci5jcHAgKi87IH07CkBAIC02MjMyLDYgKzYyMzUsOSBAQAogCQk1
MTk2MTFFOTBDQUM3NDlDMDAxMEE4MEMgLyogRGF0YWJhc2VUYXNrLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxOUZFMEExMERBRDQ0NkUwMEEwOEYyMSAvKiBIVE1MQXR0cmlidXRl
TmFtZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEF0dHJpYnV0ZU5hbWVzLmluOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTlGRTBBMjBEQUQ0NDZFMDBBMDhGMjEgLyog
SFRNTFRhZ05hbWVzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxUYWdOYW1lcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8q
IENyZWRlbnRpYWxTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENy
ZWRlbnRpYWxTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQTA1MjMy
MTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxQTA1MjU1MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9u
U3BhY2VIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3RlY3Rpb25T
cGFjZUhhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBNDVCNTQwQ0FEN0ZE
NzAwMEQyQkU5IC8qIERhdGFiYXNlQXV0aG9yaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEYXRhYmFzZUF1dGhvcml6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFBNDVCNTUwQ0FEN0ZENzAwMEQyQkU5IC8qIERhdGFiYXNlQXV0aG9yaXplci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZUF1dGhvcml6ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE5MjY3ODBENTNGMDU3MDA2M0VD
QzIgLyogT3JpZ2luUXVvdGFNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE9yaWdpblF1b3RhTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMDgzNCwxNyArMTA4NDAsMTQgQEAKIAkJNjU2Qjg0RDcwQUVBMUNFOTAwQTA5NUI0
IC8qIG5ldHdvcmsgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAot
CQkJCTUxMEQ0QTJEMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3Bw
ICovLAotCQkJCTUxMEQ0QTJFMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJh
c2UuaCAqLywKLQkJCQk1MTBENEEzMDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZS5jcHAgKi8sCi0JCQkJNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0
cmVhbUhhbmRsZUJhc2UuaCAqLywKLQkJCQk1MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQgLyogU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggKi8sCiAJCQkJQjJGMzRGRTcwRTgyRjgxNzAwRjYyN0NE
IC8qIGNmICovLAogCQkJCTY1NkI4NEU3MEFFQTFEQUUwMEEwOTVCNCAvKiBtYWMgKi8sCiAJCQkJ
OTM0RjcxMzcwRDVBNkVGRjAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5j
cHAgKi8sCiAJCQkJOTM0RjcxMzkwRDVBNkYxMDAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQmFzZS5oICovLAogCQkJCTUxNEM3NjU4MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50
aWFsLmNwcCAqLywKIAkJCQk1MTRDNzY1OTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5o
ICovLAorCQkJCTUxQTA1MjMyMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5j
cHAgKi8sCisJCQkJNTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdl
LmggKi8sCiAJCQkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovLAogCQkJCTUx
NEM3NjVBMENFOTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5jcHAgKi8sCiAJCQkJNTE0Qzc2NUIw
Q0U5MjNBMTAwN0VGM0NEIC8qIEZvcm1EYXRhLmggKi8sCkBAIC0xMDg1OCw2ICsxMDg2MSw3IEBA
CiAJCQkJMUE3RkE2MTgwRERBM0IzQTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgg
Ki8sCiAJCQkJNTE0Qzc2NUYwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5jcHAg
Ki8sCiAJCQkJNTE0Qzc2NjAwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5oICov
LAorCQkJCTUxQTA1MjU1MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3BhY2VIYXNoLmgg
Ki8sCiAJCQkJOTM0RjcxM0QwRDVBNkYyODAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3JCYXNlLmNw
cCAqLywKIAkJCQk5MzRGNzEzQjBENUE2RjE5MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJhc2Uu
aCAqLywKIAkJCQk1MTRDNzY2MzBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGUuY3Bw
ICovLApAQCAtMTA4NjgsNiArMTA4NzIsMTEgQEAKIAkJCQk1MTRDNzY2ODBDRTkyM0ExMDA3RUYz
Q0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5oICovLAogCQkJCTUxNEM3NjY5MENFOTIzQTEwMDdF
RjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgKi8sCiAJCQkJNTE0Qzc2NkEwQ0U5MjNB
MTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmggKi8sCisJCQkJNTEwRDRBMkQxMDMx
NjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi8sCisJCQkJNTEwRDRB
MkUxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5oICovLAorCQkJCTUx
MEQ0QTMwMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCAqLywK
KwkJCQk1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5o
ICovLAorCQkJCTUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbmV0d29yazsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0xNzc5NCw2ICsxNzgwMyw4IEBACiAJCQkJNDlFRUQxNDUxMDUxOTY5NDAw
MDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0OUVFRDE0NzEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU5Qzc3RjJCMTA1NDVCM0IwMDUwNjEwNCAvKiBHZW9sb2Nh
dGlvblNlcnZpY2VNb2NrLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUEwNTIzMzEwNTg3NzRGMDBD
QzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQTA1MjU2
MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3BhY2VIYXNoLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzhCRjE1MTEwNTgxM0JGMDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDOEJGMTVBMTA1ODE0MTgwMEE0MEEwNyAvKiBVc2VyU3R5bGVTaGVldFR5
cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTBENEE0RjEwMzE3N0EyMDA0OUVBNTQgLyogV2Vi
U29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xOTkyMyw2ICsxOTkzNCw3IEBACiAJ
CQkJNDlFRUQxNEYxMDUxOTcxQTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNE
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUVEMTUwMTA1MTk3MUEwMDA5OUZBQiAv
KiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTlDNzdGMkExMDU0NUIzQjAwNTA2MTA0IC8qIEdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTFBMDUyMzQxMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxT
dG9yYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMEQ0QTRFMTAzMTc3QTIwMDQ5RUE1NCAv
KiBXZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQUJBRTQ0MTA0M0FC
NEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsLmNwcAkocmV2aXNpb24g
NDgyNzYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDYgKzQzLDExIEBAIENyZWRlbnRpYWw6OkNyZWRlbnRpYWwoY29uc3Qg
U3RyaW5nJiB1c2UKICAgICAsIG1fcGVyc2lzdGVuY2UocGVyc2lzdGVuY2UpCiB7CiB9CisKK2Jv
b2wgQ3JlZGVudGlhbDo6aXNFbXB0eSgpCit7CisgICAgcmV0dXJuIG1fdXNlci5pc0VtcHR5KCkg
JiYgbV9wYXNzd29yZC5pc0VtcHR5KCk7Cit9CiAgICAgCiBjb25zdCBTdHJpbmcmIENyZWRlbnRp
YWw6OnVzZXIoKSBjb25zdAogeyAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVk
ZW50aWFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRp
YWwuaAkocmV2aXNpb24gNDgyNzYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVu
dGlhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIHB1YmxpYzoKICAgICBDcmVk
ZW50aWFsKCk7CiAgICAgQ3JlZGVudGlhbChjb25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmlu
ZyYgcGFzc3dvcmQsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7CiAgICAgCisgICAgYm9vbCBpc0Vt
cHR5KCk7CisgICAgCiAgICAgY29uc3QgU3RyaW5nJiB1c2VyKCkgY29uc3Q7CiAgICAgY29uc3Qg
U3RyaW5nJiBwYXNzd29yZCgpIGNvbnN0OwogICAgIGJvb2wgaGFzUGFzc3dvcmQoKSBjb25zdDsK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNw
cAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3Rv
cmFnZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJDcmVkZW50aWFsU3RvcmFnZS5oIgorCisjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgorI2lu
Y2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiUHJvdGVjdGlv
blNwYWNlSGFzaC5oIgorI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKKworI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIEhhc2hNYXA8
UHJvdGVjdGlvblNwYWNlLCBDcmVkZW50aWFsPiBQcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxN
YXA7CitzdGF0aWMgUHJvdGVjdGlvblNwYWNlVG9DcmVkZW50aWFsTWFwJiBwcm90ZWN0aW9uU3Bh
Y2VUb0NyZWRlbnRpYWxNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUHJvdGVjdGlv
blNwYWNlVG9DcmVkZW50aWFsTWFwLCBtYXAsICgpKTsKKyAgICByZXR1cm4gbWFwOworfQorCit0
eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgQ3JlZGVudGlhbD4gPiBPcmln
aW5Ub0RlZmF1bHRDcmVkZW50aWFsTWFwOworc3RhdGljIE9yaWdpblRvRGVmYXVsdENyZWRlbnRp
YWxNYXAmIG9yaWdpblRvRGVmYXVsdENyZWRlbnRpYWxNYXAoKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoT3JpZ2luVG9EZWZhdWx0Q3JlZGVudGlhbE1hcCwgbWFwLCAoKSk7CisgICAgcmV0
dXJuIG1hcDsKK30KKyAgICAKK3N0YXRpYyBTdHJpbmcgb3JpZ2luU3RyaW5nRnJvbVVSTChjb25z
dCBLVVJMJiB1cmwpCit7CisgICAgaWYgKHVybC5wb3J0KCkpCisgICAgICAgIHJldHVybiB1cmwu
cHJvdG9jb2woKSArICI6Ly8iICsgdXJsLmhvc3QoKSArIFN0cmluZzo6Zm9ybWF0KCI6JWkvIiwg
dXJsLnBvcnQoKSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gdXJsLnByb3RvY29sKCkgKyAi
Oi8vIiArIHVybC5ob3N0KCkgKyAiLyI7Cit9CisKK3ZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNl
dChjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHBy
b3RlY3Rpb25TcGFjZSwgY29uc3QgS1VSTCYgdXJsKQoreworICAgIHByb3RlY3Rpb25TcGFjZVRv
Q3JlZGVudGlhbE1hcCgpLnNldChwcm90ZWN0aW9uU3BhY2UsIGNyZWRlbnRpYWwpOworICAgIAor
ICAgIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lIHNjaGVtZSA9IHByb3RlY3Rp
b25TcGFjZS5hdXRoZW50aWNhdGlvblNjaGVtZSgpOworICAgIGlmICh1cmwucHJvdG9jb2xJbkhU
VFBGYW1pbHkoKSAmJiAoc2NoZW1lID09IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2No
ZW1lSFRUUEJhc2ljIHx8IHNjaGVtZSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNj
aGVtZURlZmF1bHQpKSB7CisgICAgICAgIFN0cmluZyBvcmlnaW4gPSBvcmlnaW5TdHJpbmdGcm9t
VVJMKHVybCk7CisgICAgICAgIAorICAgICAgICBIYXNoTWFwPFN0cmluZywgQ3JlZGVudGlhbD4g
cGF0aFRvQ3JlZGVudGlhbE1hcDsKKyAgICAgICAgcGFpcjxIYXNoTWFwPFN0cmluZywgSGFzaE1h
cDxTdHJpbmcsIENyZWRlbnRpYWw+ID46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBvcmlnaW5U
b0RlZmF1bHRDcmVkZW50aWFsTWFwKCkuYWRkKG9yaWdpbiwgcGF0aFRvQ3JlZGVudGlhbE1hcCk7
CisgICAgICAgIAorICAgICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCk7CisgICAgICAgIGlm
ICghcGF0aC5lbmRzV2l0aCgiLyIpKSB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBwYXRoLnJl
dmVyc2VGaW5kKCcvJyk7CisgICAgICAgICAgICBpZiAoaW5kZXggIT0gLTEpCisgICAgICAgICAg
ICAgICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKDAsIGluZGV4KTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAocGF0aC5lbmRzV2l0aCgiLyIpICYmIHBhdGgubGVuZ3RoKCkgPiAxKQorICAgICAgICAg
ICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKDAsIHBhdGgubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAg
CisgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLnNldChwYXRoLCBjcmVkZW50aWFsKTsKKyAg
ICB9Cit9CisKK0NyZWRlbnRpYWwgQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChjb25zdCBQcm90ZWN0
aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKK3sKKyAgICByZXR1cm4gcHJvdGVjdGlvblNwYWNl
VG9DcmVkZW50aWFsTWFwKCkuZ2V0KHByb3RlY3Rpb25TcGFjZSk7Cit9CisKK0NyZWRlbnRpYWwg
Q3JlZGVudGlhbFN0b3JhZ2U6OmdldERlZmF1bHRBdXRoZW50aWNhdGlvbkNyZWRlbnRpYWwoY29u
c3QgS1VSTCYgdXJsKQoreworICAgIFN0cmluZyBvcmlnaW4gPSBvcmlnaW5TdHJpbmdGcm9tVVJM
KHVybCk7CisgICAgSGFzaE1hcDxTdHJpbmcsIENyZWRlbnRpYWw+IHBhdGhUb0NyZWRlbnRpYWxN
YXAgPSBvcmlnaW5Ub0RlZmF1bHRDcmVkZW50aWFsTWFwKCkuZ2V0KG9yaWdpbik7CisgICAgaWYg
KHBhdGhUb0NyZWRlbnRpYWxNYXAuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gQ3JlZGVudGlh
bCgpOworICAgIAorICAgIFN0cmluZyBwYXRoID0gdXJsLnBhdGgoKTsKKyAgICBDcmVkZW50aWFs
IGNyZWRlbnRpYWwgPSBwYXRoVG9DcmVkZW50aWFsTWFwLmdldChwYXRoKTsKKyAgICB3aGlsZSAo
Y3JlZGVudGlhbC5pc0VtcHR5KCkgJiYgIXBhdGguaXNOdWxsKCkpIHsKKyAgICAgICAgaW50IGlu
ZGV4ID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOworICAgICAgICBpZiAoaW5kZXggPT0gMCkgewor
ICAgICAgICAgICAgcGF0aCA9IFN0cmluZygpOworICAgICAgICAgICAgY3JlZGVudGlhbCA9IHBh
dGhUb0NyZWRlbnRpYWxNYXAuZ2V0KCIvIik7CisgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0g
LTEpIHsKKyAgICAgICAgICAgIGNyZWRlbnRpYWwgPSBwYXRoVG9DcmVkZW50aWFsTWFwLmdldChw
YXRoKTsKKyAgICAgICAgICAgIHBhdGggPSBTdHJpbmcoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBpbmRleCk7CisgICAgICAgICAgICBj
cmVkZW50aWFsID0gcGF0aFRvQ3JlZGVudGlhbE1hcC5nZXQocGF0aCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gY3JlZGVudGlhbDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3Jh
Z2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFNlc3Npb25DcmVkZW50aWFsU3RvcmFn
ZV9oCisjZGVmaW5lIFNlc3Npb25DcmVkZW50aWFsU3RvcmFnZV9oCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQ3JlZGVudGlhbDsKK2NsYXNzIEtVUkw7CitjbGFzcyBQcm90ZWN0aW9u
U3BhY2U7CisKK2NsYXNzIENyZWRlbnRpYWxTdG9yYWdlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
dm9pZCBzZXQoY29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0
IEtVUkwmKTsKKyAgICBzdGF0aWMgQ3JlZGVudGlhbCBnZXQoY29uc3QgUHJvdGVjdGlvblNwYWNl
Jik7CisgICAgc3RhdGljIENyZWRlbnRpYWwgZ2V0RGVmYXVsdEF1dGhlbnRpY2F0aW9uQ3JlZGVu
dGlhbChjb25zdCBLVVJMJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBTZXNzaW9uQ3JlZGVudGlhbFN0b3JhZ2VfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5jcHAJKHJldmlzaW9uIDQ4Mjc2KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDcgKzM3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIGNvbWJpbmVkIHdpdGggdGhl
IHNlbWFudGljcyBvZiB0aGUgU3RyaW5nKE5TU3RyaW5nKikgY29uc3RydWN0b3IKIFByb3RlY3Rp
b25TcGFjZTo6UHJvdGVjdGlvblNwYWNlKCkKICAgICA6IG1faG9zdCgiIikKKyAgICAsIG1fcG9y
dCgwKQorICAgICwgbV9zZXJ2ZXJUeXBlKFByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFApCiAgICAg
LCBtX3JlYWxtKCIiKQorICAgICwgbV9hdXRoZW50aWNhdGlvblNjaGVtZShQcm90ZWN0aW9uU3Bh
Y2VBdXRoZW50aWNhdGlvblNjaGVtZURlZmF1bHQpCisgICAgLCBtX2lzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKGZhbHNlKQogewogfQogIApAQCAtNDksNiArNTMsNyBAQCBQcm90ZWN0aW9uU3BhY2U6
OlByb3RlY3Rpb25TcGFjZShjb25zdCBTCiAgICAgLCBtX3NlcnZlclR5cGUoc2VydmVyVHlwZSkK
ICAgICAsIG1fcmVhbG0ocmVhbG0ubGVuZ3RoKCkgPyByZWFsbSA6ICIiKQogICAgICwgbV9hdXRo
ZW50aWNhdGlvblNjaGVtZShhdXRoZW50aWNhdGlvblNjaGVtZSkKKyAgICAsIG1faXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoZmFsc2UpCiB7ICAgIAogfQogICAgIApJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuaAkocmV2aXNpb24gNDgyNzYpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDYgKzU0LDEwIEBAIGNsYXNzIFByb3RlY3Rpb25TcGFjZSB7CiBwdWJsaWM6CiAgICAgUHJv
dGVjdGlvblNwYWNlKCk7CiAgICAgUHJvdGVjdGlvblNwYWNlKGNvbnN0IFN0cmluZyYgaG9zdCwg
aW50IHBvcnQsIFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUsIGNvbnN0IFN0cmluZyYgcmVhbG0s
IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lKTsKKworICAgIC8vIEhhc2ggdGFi
bGUgZGVsZXRlZCB2YWx1ZXMsIHdoaWNoIGFyZSBvbmx5IGNvbnN0cnVjdGVkIGFuZCBuZXZlciBj
b3BpZWQgb3IgZGVzdHJveWVkLgorICAgIFByb3RlY3Rpb25TcGFjZShXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZVR5cGUpIDogbV9pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSh0cnVlKSB7IH0KKyAg
ICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZTsgfQogICAgIAogICAgIGNvbnN0IFN0cmluZyYgaG9zdCgpIGNvbnN0
OwogICAgIGludCBwb3J0KCkgY29uc3Q7CkBAIC03MCwxMCArNzQsMTIgQEAgcHJpdmF0ZToKICAg
ICBQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlIG1fc2VydmVyVHlwZTsKICAgICBTdHJpbmcgbV9y
ZWFsbTsKICAgICBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSBtX2F1dGhlbnRp
Y2F0aW9uU2NoZW1lOworICAgIGJvb2wgbV9pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZTsKIH07CiAK
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGEsIGNvbnN0IFByb3RlY3Rp
b25TcGFjZSYgYik7CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYgYSwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KICAg
ICAKLX0KLSNlbmRpZgorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUHJvdGVj
dGlvblNwYWNlX2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3Bh
Y2VIYXNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rp
b25TcGFjZUhhc2guaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
cm90ZWN0aW9uU3BhY2VIYXNoLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQcm90ZWN0
aW9uU3BhY2VIYXNoX2gKKyNkZWZpbmUgUHJvdGVjdGlvblNwYWNlSGFzaF9oCisKKyNpbmNsdWRl
ICJQcm90ZWN0aW9uU3BhY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgUHJv
dGVjdGlvblNwYWNlSGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUHJvdGVj
dGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCisgICAgeyAKKyAgICAgICAgdW5zaWduZWQgaGFz
aENvZGVzWzVdID0geworICAgICAgICAgICAgcHJvdGVjdGlvblNwYWNlLmhvc3QoKS5pbXBsKCkg
PyBwcm90ZWN0aW9uU3BhY2UuaG9zdCgpLmltcGwoKS0+aGFzaCgpIDogMCwgCisgICAgICAgICAg
ICBwcm90ZWN0aW9uU3BhY2UucG9ydCgpLCAKKyAgICAgICAgICAgIHByb3RlY3Rpb25TcGFjZS5z
ZXJ2ZXJUeXBlKCksCisgICAgICAgICAgICBwcm90ZWN0aW9uU3BhY2UucmVhbG0oKS5pbXBsKCkg
PyBwcm90ZWN0aW9uU3BhY2UucmVhbG0oKS5pbXBsKCktPmhhc2goKSA6IDAsCisgICAgICAgICAg
ICBwcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25TY2hlbWUoKQorICAgICAgICB9OworCisg
ICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpjb21wdXRlSGFzaChyZWludGVycHJldF9jYXN0PFVD
aGFyKj4oaGFzaENvZGVzKSwgc2l6ZW9mKGhhc2hDb2RlcykgLyBzaXplb2YoVUNoYXIpKTsgICAg
CisgICAgfQorICAgIAorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYgYSwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBz
dGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKworICAgIC8v
IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUhhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3IgUHJv
dGVjdGlvblNwYWNlCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpQ
cm90ZWN0aW9uU3BhY2U+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6UHJvdGVjdGlvblNw
YWNlPiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVl
OworICAgICAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6UHJv
dGVjdGlvblNwYWNlJiBzbG90KSB7IG5ldyAoJnNsb3QpIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFj
ZShIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRl
ZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYgc2xvdCkgeyByZXR1cm4gc2xv
dC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CisgICAgfTsKKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZh
dWx0SGFzaDxXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2U+IHsKKyAgICAgICAgdHlwZWRlZiBXZWJD
b3JlOjpQcm90ZWN0aW9uU3BhY2VIYXNoIEhhc2g7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2Ug
V1RGCisKKworI2VuZGlmIC8vIFByb3RlY3Rpb25TcGFjZUhhc2hfaApJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAkocmV2aXNpb24g
NDgyNzYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1DRk11dGFibGVEaWN0aW9uYXJ5UmVmIFdlYkNvcmVDcmVkZW50aWFsU3RvcmFnZTo6bV9z
dG9yYWdlOwotCiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ3JlZGVudGlhbCYgcHJv
cG9zZWRDcmVkZW50aWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNvdW50LApJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCShyZXZpc2lvbiA0ODI3
NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDI2ICs0Myw2IEBAIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNy
ZWF0ZUNGKGNvbnN0IFAKIENyZWRlbnRpYWwgY29yZShDRlVSTENyZWRlbnRpYWxSZWYpOwogUHJv
dGVjdGlvblNwYWNlIGNvcmUoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpOwogCi1jbGFzcyBXZWJD
b3JlQ3JlZGVudGlhbFN0b3JhZ2UgewotcHVibGljOgotICAgIHN0YXRpYyB2b2lkIHNldChDRlVS
TFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2UsIENGVVJMQ3JlZGVudGlhbFJlZiBj
cmVkZW50aWFsKQotICAgIHsKLSAgICAgICAgaWYgKCFtX3N0b3JhZ2UpCi0gICAgICAgICAgICBt
X3N0b3JhZ2UgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFs
dWVDYWxsQmFja3MpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShtX3N0b3JhZ2UsIHBy
b3RlY3Rpb25TcGFjZSwgY3JlZGVudGlhbCk7Ci0gICAgfQotCi0gICAgc3RhdGljIENGVVJMQ3Jl
ZGVudGlhbFJlZiBnZXQoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlKQot
ICAgIHsKLSAgICAgICAgaWYgKCFtX3N0b3JhZ2UpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgcmV0dXJuIChDRlVSTENyZWRlbnRpYWxSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUobV9z
dG9yYWdlLCBwcm90ZWN0aW9uU3BhY2UpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMg
Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBtX3N0b3JhZ2U7Ci19OwotCiB9CiAKICNlbmRpZgpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
TmV0LmNwcAkocmV2aXNpb24gNDgyNzYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuaCIKICNpbmNsdWRlICJDb29raWVTdG9yYWdlV2luLmgiCisjaW5jbHVkZSAiQ3Jl
ZGVudGlhbFN0b3JhZ2UuaCIKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiRG9jTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTM3NCw2ICszNzUsMjAgQEAgYm9vbCBSZXNv
dXJjZUhhbmRsZTo6c3RhcnQoRnJhbWUqIGZyYW1lKQogICAgICAgICBkLT5tX3JlcXVlc3Quc2V0
VVJMKHVybFdpdGhDcmVkZW50aWFscyk7CiAgICAgfQogCisgICAgLy8gPHJkYXI6Ly9wcm9ibGVt
LzcxNzQwNTA+IC0gRm9yIFVSTHMgdGhhdCBtYXRjaCB0aGUgcGF0aHMgb2YgdGhvc2UgcHJldmlv
dXNseSBjaGFsbGVuZ2VkIGZvciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uLCAKKyAgICAvLyB3
ZSBuZWVkIHRvIHRyeSBhbmQgcmV1c2UgdGhlIGNyZWRlbnRpYWwgcHJlZW1wdGl2ZWx5LCBhcyBh
bGxvd2VkIGJ5IFJGQyAyNjE3LgorICAgIENyZWRlbnRpYWwgaW5pdGlhbENyZWRlbnRpYWw7Cisg
ICAgaWYgKCFjbGllbnQoKSB8fCBjbGllbnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Uo
dGhpcykgJiYgZC0+bV9yZXF1ZXN0LnVybCgpLnByb3RvY29sSW5IVFRQRmFtaWx5KCkpCisgICAg
ICAgIGluaXRpYWxDcmVkZW50aWFsID0gQ3JlZGVudGlhbFN0b3JhZ2U6OmdldERlZmF1bHRBdXRo
ZW50aWNhdGlvbkNyZWRlbnRpYWwoZC0+bV9yZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgCisgICAg
aWYgKCFpbml0aWFsQ3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gQXBwbHkgYmFz
aWMgYXV0aCBoZWFkZXIKKyAgICAgICAgU3RyaW5nIHVuZW5jb2RlZCA9IGluaXRpYWxDcmVkZW50
aWFsLnVzZXIoKSArICI6IiArIGluaXRpYWxDcmVkZW50aWFsLnBhc3N3b3JkKCk7CisgICAgICAg
IENTdHJpbmcgZW5jb2RlZCA9IHVuZW5jb2RlZC51dGY4KCkuYmFzZTY0RW5jb2RlKCk7CisgICAg
ICAgIFN0cmluZyBhdXRoSGVhZGVyID0gU3RyaW5nOjpmb3JtYXQoIkJhc2ljICVzIiwgZW5jb2Rl
ZC5kYXRhKCkpOworICAgICAgICBkLT5tX3JlcXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkKCJBdXRo
b3JpemF0aW9uIiwgYXV0aEhlYWRlcik7CisgICAgfQorCiAgICAgUmV0YWluUHRyPENGVVJMUmVx
dWVzdFJlZj4gcmVxdWVzdChBZG9wdENGLCBtYWtlRmluYWxSZXF1ZXN0KGQtPm1fcmVxdWVzdCwg
ZC0+bV9zaG91bGRDb250ZW50U25pZmYpKTsKIAogICAgIENGVVJMQ29ubmVjdGlvbkNsaWVudF9W
MyBjbGllbnQgPSB7IDMsIHRoaXMsIDAsIDAsIDAsIFdlYkNvcmU6OndpbGxTZW5kUmVxdWVzdCwg
ZGlkUmVjZWl2ZVJlc3BvbnNlLCBkaWRSZWNlaXZlRGF0YSwgTlVMTCwgZGlkRmluaXNoTG9hZGlu
ZywgZGlkRmFpbCwgd2lsbENhY2hlUmVzcG9uc2UsIGRpZFJlY2VpdmVDaGFsbGVuZ2UsIGRpZFNl
bmRCb2R5RGF0YSwgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VDYWxsYmFjaywgMH07CkBAIC00
NDEsNyArNDU2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpYwog
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhc3MoQWRvcHRDRiwgZC0+bV9wYXNzLmNy
ZWF0ZUNGU3RyaW5nKCkpOwogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBj
cmVkZW50aWFsKEFkb3B0Q0YsCiAgICAgICAgICAgICBDRlVSTENyZWRlbnRpYWxDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgdXNlci5nZXQoKSwgcGFzcy5nZXQoKSwgMCwga0NGVVJMQ3JlZGVu
dGlhbFBlcnNpc3RlbmNlTm9uZSkpOwotICAgICAgICBXZWJDb3JlQ3JlZGVudGlhbFN0b3JhZ2U6
OnNldChDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2hhbGxlbmdlLmNmVVJM
QXV0aENoYWxsZW5nZVJlZigpKSwgY3JlZGVudGlhbC5nZXQoKSk7CisgICAgICAgIENyZWRlbnRp
YWxTdG9yYWdlOjpzZXQoY29yZShjcmVkZW50aWFsLmdldCgpKSwgY2hhbGxlbmdlLnByb3RlY3Rp
b25TcGFjZSgpLCBkLT5tX3JlcXVlc3QudXJsKCkpOwogICAgICAgICBDRlVSTENvbm5lY3Rpb25V
c2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY3JlZGVudGlhbC5nZXQoKSwgY2hh
bGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICAgICAgZC0+bV91c2VyID0gU3Ry
aW5nKCk7CiAgICAgICAgIGQtPm1fcGFzcyA9IFN0cmluZygpOwpAQCAtNDUwLDEwICs0NjUsMTEg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpYwogICAgIH0KIAogICAg
IGlmICghY2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCkgJiYgKCFjbGllbnQoKSB8fCBj
bGllbnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UodGhpcykpKSB7Ci0gICAgICAgIENG
VVJMQ3JlZGVudGlhbFJlZiBjcmVkZW50aWFsID0gV2ViQ29yZUNyZWRlbnRpYWxTdG9yYWdlOjpn
ZXQoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNoYWxsZW5nZS5jZlVSTEF1
dGhDaGFsbGVuZ2VSZWYoKSkpOwotICAgICAgICBpZiAoY3JlZGVudGlhbCkgewotICAgICAgICAg
ICAgQVNTRVJUKENGVVJMQ3JlZGVudGlhbEdldFBlcnNpc3RlbmNlKGNyZWRlbnRpYWwpID09IGtD
RlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwotICAgICAgICAgICAgQ0ZVUkxDb25uZWN0
aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRpYWwsIGNoYWxs
ZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CisgICAgICAgIENyZWRlbnRpYWwgY3JlZGVu
dGlhbCA9IENyZWRlbnRpYWxTdG9yYWdlOjpnZXQoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgp
KTsKKyAgICAgICAgaWYgKCFjcmVkZW50aWFsLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgQVNT
RVJUKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25l
KTsKKyAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlh
bChBZG9wdENGLCBjcmVhdGVDRihjcmVkZW50aWFsKSk7CisgICAgICAgICAgICBDRlVSTENvbm5l
Y3Rpb25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdl
dCgpLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtNDc4LDcgKzQ5NCw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCgKICAgICAgICAgLy8gdG8gaWdub3JlIGl0IGZvciBh
IHBhcnRpY3VsYXIgcmVxdWVzdCAoc2hvcnQgb2YgcmVtb3ZpbmcgaXQgYWx0b2dldGhlcikuCiAg
ICAgICAgIENyZWRlbnRpYWwgd2ViQ3JlZGVudGlhbChjcmVkZW50aWFsLnVzZXIoKSwgY3JlZGVu
dGlhbC5wYXNzd29yZCgpLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKICAgICAgICAgUmV0
YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsKEFkb3B0Q0YsIGNyZWF0ZUNG
KHdlYkNyZWRlbnRpYWwpKTsKLSAgICAgICAgV2ViQ29yZUNyZWRlbnRpYWxTdG9yYWdlOjpzZXQo
Q0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNoYWxsZW5nZS5jZlVSTEF1dGhD
aGFsbGVuZ2VSZWYoKSksIGNmQ3JlZGVudGlhbC5nZXQoKSk7CisgICAgICAgIENyZWRlbnRpYWxT
dG9yYWdlOjpzZXQod2ViQ3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCBk
LT5tX3JlcXVlc3QudXJsKCkpOwogICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFs
KGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZV
UkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFJldGFpblB0cjxD
RlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbChBZG9wdENGLCBjcmVhdGVDRihjcmVkZW50
aWFsKSk7CkBAIC02NTksMTkgKzY3NSwyMCBAQCB2b2lkIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRl
cjo6ZGlkUmVjZWl2CiAgICAgV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyKiBsb2FkZXIgPSBzdGF0
aWNfY2FzdDxXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSk7CiAKICAgICBpZiAobG9hZGVyLT5tX3VzZXIgJiYgbG9hZGVyLT5tX3Bhc3MpIHsK
LSAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbChBZG9wdENG
LAotICAgICAgICAgICAgQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGxvYWRlci0+bV91c2VyLmdldCgpLCBsb2FkZXItPm1fcGFzcy5nZXQoKSwgMCwga0NGVVJMQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkpOwotICAgICAgICBXZWJDb3JlQ3JlZGVudGlhbFN0b3Jh
Z2U6OnNldChDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2hhbGxlbmdlKSwg
Y3JlZGVudGlhbC5nZXQoKSk7Ci0gICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwo
Y29ubiwgY3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlKTsKKyAgICAgICAgQ3JlZGVudGlhbCBj
cmVkZW50aWFsKGxvYWRlci0+bV91c2VyLmdldCgpLCBsb2FkZXItPm1fcGFzcy5nZXQoKSwgQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7CisgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRp
YWxSZWY+IGNmQ3JlZGVudGlhbChBZG9wdENGLCBjcmVhdGVDRihjcmVkZW50aWFsKSk7CisgICAg
ICAgIENyZWRlbnRpYWxTdG9yYWdlOjpzZXQoY3JlZGVudGlhbCwgY29yZShDRlVSTEF1dGhDaGFs
bGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2hhbGxlbmdlKSksIGxvYWRlci0+bV91cmwuZ2V0KCkp
OworICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGNvbm4sIGNmQ3JlZGVudGlh
bC5nZXQoKSwgY2hhbGxlbmdlKTsKICAgICAgICAgbG9hZGVyLT5tX3VzZXIgPSAwOwogICAgICAg
ICBsb2FkZXItPm1fcGFzcyA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKCFD
RlVSTEF1dGhDaGFsbGVuZ2VHZXRQcmV2aW91c0ZhaWx1cmVDb3VudChjaGFsbGVuZ2UpICYmIGxv
YWRlci0+bV9hbGxvd1N0b3JlZENyZWRlbnRpYWxzKSB7Ci0gICAgICAgIENGVVJMQ3JlZGVudGlh
bFJlZiBjcmVkZW50aWFsID0gV2ViQ29yZUNyZWRlbnRpYWxTdG9yYWdlOjpnZXQoQ0ZVUkxBdXRo
Q2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNoYWxsZW5nZSkpOwotICAgICAgICBpZiAoY3Jl
ZGVudGlhbCkgewotICAgICAgICAgICAgQVNTRVJUKENGVVJMQ3JlZGVudGlhbEdldFBlcnNpc3Rl
bmNlKGNyZWRlbnRpYWwpID09IGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwotICAg
ICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChjb25uLCBjcmVkZW50aWFsLCBj
aGFsbGVuZ2UpOworICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsU3Rv
cmFnZTo6Z2V0KGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNoYWxs
ZW5nZSkpKTsKKyAgICAgICAgaWYgKCFjcmVkZW50aWFsLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgQVNTRVJUKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBDcmVkZW50aWFsUGVyc2lzdGVu
Y2VOb25lKTsKKyAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3Jl
ZGVudGlhbChBZG9wdENGLCBjcmVhdGVDRihjcmVkZW50aWFsKSk7CisgICAgICAgICAgICBDRlVS
TENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGNvbm4sIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxl
bmdlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTcwNyw4ICs3
MjQsMjQgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gV2ViQ29yZVN5bmNocm9ub3VzTAogICAgICAg
ICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdFdpdGhvdXRDcmVkZW50aWFscyhyZXF1ZXN0KTsKICAg
ICAgICAgcmVxdWVzdFdpdGhvdXRDcmVkZW50aWFscy5yZW1vdmVDcmVkZW50aWFscygpOwogICAg
ICAgICBjZlJlcXVlc3QuYWRvcHRDRihtYWtlRmluYWxSZXF1ZXN0KHJlcXVlc3RXaXRob3V0Q3Jl
ZGVudGlhbHMsIFJlc291cmNlSGFuZGxlOjpzaG91bGRDb250ZW50U25pZmZVUkwocmVxdWVzdFdp
dGhvdXRDcmVkZW50aWFscy51cmwoKSkpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgY2ZSZXF1ZXN0
LmFkb3B0Q0YobWFrZUZpbmFsUmVxdWVzdChyZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxk
Q29udGVudFNuaWZmVVJMKHJlcXVlc3QudXJsKCkpKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Ly8gPHJkYXI6Ly9wcm9ibGVtLzcxNzQwNTA+IC0gRm9yIFVSTHMgdGhhdCBtYXRjaCB0aGUgcGF0
aHMgb2YgdGhvc2UgcHJldmlvdXNseSBjaGFsbGVuZ2VkIGZvciBIVFRQIEJhc2ljIGF1dGhlbnRp
Y2F0aW9uLCAKKyAgICAgICAgLy8gd2UgbmVlZCB0byB0cnkgYW5kIHJldXNlIHRoZSBjcmVkZW50
aWFsIHByZWVtcHRpdmVseSwgYXMgYWxsb3dlZCBieSBSRkMgMjYxNy4KKyAgICAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3RXaXRoSW5pdGlhbENyZWRlbnRpYWwocmVxdWVzdCk7CisgICAgICAg
IENyZWRlbnRpYWwgaW5pdGlhbENyZWRlbnRpYWw7CisgICAgICAgIGlmIChsb2FkZXIubV9hbGxv
d1N0b3JlZENyZWRlbnRpYWxzICYmIHVybC5wcm90b2NvbEluSFRUUEZhbWlseSgpKQorICAgICAg
ICAgICAgaW5pdGlhbENyZWRlbnRpYWwgPSBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RGVmYXVsdEF1
dGhlbnRpY2F0aW9uQ3JlZGVudGlhbCh1cmwpOworCisgICAgICAgIGlmICghaW5pdGlhbENyZWRl
bnRpYWwuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAvLyBBcHBseSBiYXNpYyBhdXRoIGhlYWRl
cgorICAgICAgICAgICAgU3RyaW5nIHVuZW5jb2RlZCA9IGluaXRpYWxDcmVkZW50aWFsLnVzZXIo
KSArICI6IiArIGluaXRpYWxDcmVkZW50aWFsLnBhc3N3b3JkKCk7CisgICAgICAgICAgICBDU3Ry
aW5nIGVuY29kZWQgPSB1bmVuY29kZWQudXRmOCgpLmJhc2U2NEVuY29kZSgpOworICAgICAgICAg
ICAgU3RyaW5nIGF1dGhIZWFkZXIgPSBTdHJpbmc6OmZvcm1hdCgiQmFzaWMgJXMiLCBlbmNvZGVk
LmRhdGEoKSk7CisgICAgICAgICAgICByZXF1ZXN0V2l0aEluaXRpYWxDcmVkZW50aWFsLmFkZEhU
VFBIZWFkZXJGaWVsZCgiQXV0aG9yaXphdGlvbiIsIGF1dGhIZWFkZXIpOworICAgICAgICB9CisK
KyAgICAgICAgY2ZSZXF1ZXN0LmFkb3B0Q0YobWFrZUZpbmFsUmVxdWVzdChyZXF1ZXN0V2l0aElu
aXRpYWxDcmVkZW50aWFsLCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxkQ29udGVudFNuaWZmVVJMKHJl
cXVlc3RXaXRoSW5pdGlhbENyZWRlbnRpYWwudXJsKCkpKSk7CisgICAgfQogCiAgICAgQ0ZVUkxD
b25uZWN0aW9uQ2xpZW50X1YzIGNsaWVudCA9IHsgMywgJmxvYWRlciwgMCwgMCwgMCwgd2lsbFNl
bmRSZXF1ZXN0LCBkaWRSZWNlaXZlUmVzcG9uc2UsIGRpZFJlY2VpdmVEYXRhLCAwLCBkaWRGaW5p
c2hMb2FkaW5nLCBkaWRGYWlsLCAwLCBkaWRSZWNlaXZlQ2hhbGxlbmdlLCAwLCBzaG91bGRVc2VD
cmVkZW50aWFsU3RvcmFnZSwgMCB9OwogICAgIFJldGFpblB0cjxDRlVSTENvbm5lY3Rpb25SZWY+
IGNvbm5lY3Rpb24oQWRvcHRDRiwgQ0ZVUkxDb25uZWN0aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGNmUmVxdWVzdC5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxDRlVSTENvbm5lY3Rpb25D
bGllbnQqPigmY2xpZW50KSkpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9B
dXRoZW50aWNhdGlvbk1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvQXV0aGVudGljYXRpb25NYWMuaAkocmV2aXNpb24gNDgyNzYpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDI0ICs0NSw2IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoTlNVUkxBdXRoZW4K
IFByb3RlY3Rpb25TcGFjZSBjb3JlKE5TVVJMUHJvdGVjdGlvblNwYWNlICopOwogQ3JlZGVudGlh
bCBjb3JlKE5TVVJMQ3JlZGVudGlhbCAqKTsKIAotY2xhc3MgV2ViQ29yZUNyZWRlbnRpYWxTdG9y
YWdlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBzZXQoTlNVUkxDcmVkZW50aWFsICpjcmVk
ZW50aWFsLCBOU1VSTFByb3RlY3Rpb25TcGFjZSAqcHJvdGVjdGlvblNwYWNlKQotICAgIHsKLSAg
ICAgICAgaWYgKCFtX3N0b3JhZ2UpCi0gICAgICAgICAgICBtX3N0b3JhZ2UgPSBbW05TTXV0YWJs
ZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotICAgICAgICBbbV9zdG9yYWdlIHNldE9iamVjdDpj
cmVkZW50aWFsIGZvcktleTpwcm90ZWN0aW9uU3BhY2VdOwotICAgIH0KLQotICAgIHN0YXRpYyBO
U1VSTENyZWRlbnRpYWwgKmdldChOU1VSTFByb3RlY3Rpb25TcGFjZSAqcHJvdGVjdGlvblNwYWNl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5TVVJMQ3JlZGVudGlhbCAqPihb
bV9zdG9yYWdlIG9iamVjdEZvcktleTpwcm90ZWN0aW9uU3BhY2VdKTsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgc3RhdGljIE5TTXV0YWJsZURpY3Rpb25hcnkqIG1fc3RvcmFnZTsKLX07Ci0KIH0K
ICNlbmRpZgogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0
aW9uTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0
aGVudGljYXRpb25NYWMubW0JKHJldmlzaW9uIDQ4Mjc2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsOSAr
MzYsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLQotTlNNdXRhYmxlRGljdGlvbmFyeSog
V2ViQ29yZUNyZWRlbnRpYWxTdG9yYWdlOjptX3N0b3JhZ2U7Ci0KIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHBy
b3RlY3Rpb25TcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHJldmlvdXNG
YWlsdXJlQ291bnQsCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
SGFuZGxlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlzaW9uIDQ4Mjc2KQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksOCBAQAogI2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQg
IkF1dGhlbnRpY2F0aW9uTWFjLmgiCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKKyNpbXBv
cnQgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCisjaW1wb3J0ICJDU3RyaW5nLmgiCiAjaW1wb3J0ICJE
b2NMb2FkZXIuaCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtTWFjLmgiCiAjaW1wb3J0ICJGcmFt
ZS5oIgpAQCAtMTY3LDYgKzE2OSwyMCBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydChGcmFt
ZSogZnJhbWUpCiAgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNzKGQtPm1fcGFzcyk7
CiAgICAgICAgIGQtPm1fcmVxdWVzdC5zZXRVUkwodXJsV2l0aENyZWRlbnRpYWxzKTsKICAgICB9
CisgICAgCisgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzcxNzQwNTA+IC0gRm9yIFVSTHMgdGhhdCBt
YXRjaCB0aGUgcGF0aHMgb2YgdGhvc2UgcHJldmlvdXNseSBjaGFsbGVuZ2VkIGZvciBIVFRQIEJh
c2ljIGF1dGhlbnRpY2F0aW9uLCAKKyAgICAvLyB3ZSBuZWVkIHRvIHRyeSBhbmQgcmV1c2UgdGhl
IGNyZWRlbnRpYWwgcHJlZW1wdGl2ZWx5LCBhcyBhbGxvd2VkIGJ5IFJGQyAyNjE3LgorICAgIENy
ZWRlbnRpYWwgaW5pdGlhbENyZWRlbnRpYWw7CisgICAgaWYgKCFjbGllbnQoKSB8fCBjbGllbnQo
KS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UodGhpcykgJiYgZC0+bV9yZXF1ZXN0LnVybCgp
LnByb3RvY29sSW5IVFRQRmFtaWx5KCkpCisgICAgICAgIGluaXRpYWxDcmVkZW50aWFsID0gQ3Jl
ZGVudGlhbFN0b3JhZ2U6OmdldERlZmF1bHRBdXRoZW50aWNhdGlvbkNyZWRlbnRpYWwoZC0+bV9y
ZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgCisgICAgaWYgKCFpbml0aWFsQ3JlZGVudGlhbC5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgLy8gQXBwbHkgYmFzaWMgYXV0aCBoZWFkZXIKKyAgICAgICAgU3Ry
aW5nIHVuZW5jb2RlZCA9IGluaXRpYWxDcmVkZW50aWFsLnVzZXIoKSArICI6IiArIGluaXRpYWxD
cmVkZW50aWFsLnBhc3N3b3JkKCk7CisgICAgICAgIENTdHJpbmcgZW5jb2RlZCA9IHVuZW5jb2Rl
ZC51dGY4KCkuYmFzZTY0RW5jb2RlKCk7CisgICAgICAgIFN0cmluZyBhdXRoSGVhZGVyID0gU3Ry
aW5nOjpmb3JtYXQoIkJhc2ljICVzIiwgZW5jb2RlZC5kYXRhKCkpOworICAgICAgICBkLT5tX3Jl
cXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkKCJBdXRob3JpemF0aW9uIiwgYXV0aEhlYWRlcik7Cisg
ICAgfQogCiAgICAgaWYgKCFSZXNvdXJjZUhhbmRsZTo6ZGlkU2VuZEJvZHlEYXRhRGVsZWdhdGVF
eGlzdHMoKSkKICAgICAgICAgYXNzb2NpYXRlU3RyZWFtV2l0aFJlc291cmNlSGFuZGxlKFtkLT5t
X3JlcXVlc3QubnNVUkxSZXF1ZXN0KCkgSFRUUEJvZHlTdHJlYW1dLCB0aGlzKTsKQEAgLTQ1OCw5
ICs0NzQsOSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAg
fQogCiAgICAgaWYgKCFjaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSAmJiAoIWNsaWVu
dCgpIHx8IGNsaWVudCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh0aGlzKSkpIHsKLSAg
ICAgICAgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsID0gV2ViQ29yZUNyZWRlbnRpYWxTdG9y
YWdlOjpnZXQoW21hYyhjaGFsbGVuZ2UpIHByb3RlY3Rpb25TcGFjZV0pOwotICAgICAgICBpZiAo
Y3JlZGVudGlhbCkgewotICAgICAgICAgICAgW2NoYWxsZW5nZS5zZW5kZXIoKSB1c2VDcmVkZW50
aWFsOmNyZWRlbnRpYWwgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bWFjKGNoYWxsZW5nZSld
OworICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0
KGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7CisgICAgICAgIGlmICghY3JlZGVudGlhbC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFtjaGFsbGVuZ2Uuc2VuZGVyKCkgdXNlQ3JlZGVudGlh
bDptYWMoY3JlZGVudGlhbCkgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bWFjKGNoYWxsZW5n
ZSldOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtNDk1LDcgKzUx
MSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCgKICAgICBpZiAo
Y3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpID09IENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpIHsK
ICAgICAgICAgLy8gTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lIGRvZXNuJ3Qgd29yayBv
biBUaWdlciwgc28gd2UgaGF2ZSB0byB1c2Ugc2Vzc2lvbiBwZXJzaXN0ZW5jZS4KICAgICAgICAg
Q3JlZGVudGlhbCB3ZWJDcmVkZW50aWFsKGNyZWRlbnRpYWwudXNlcigpLCBjcmVkZW50aWFsLnBh
c3N3b3JkKCksIENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb24pOwotICAgICAgICBXZWJD
b3JlQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChtYWMod2ViQ3JlZGVudGlhbCksIFtkLT5tX2N1cnJl
bnRNYWNDaGFsbGVuZ2UgcHJvdGVjdGlvblNwYWNlXSk7CisgICAgICAgIFdlYkNvcmVDcmVkZW50
aWFsU3RvcmFnZTo6c2V0KHdlYkNyZWRlbnRpYWwsIFtkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2Ug
cHJvdGVjdGlvblNwYWNlXSk7CiAgICAgICAgIFtbZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlIHNl
bmRlcl0gdXNlQ3JlZGVudGlhbDptYWMod2ViQ3JlZGVudGlhbCkgZm9yQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6ZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlXTsKICAgICB9IGVsc2UKICNlbHNlCkBA
IC01MDQsNyArNTIwLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFs
KAogICAgICAgICAvLyB0byBpZ25vcmUgaXQgZm9yIGEgcGFydGljdWxhciByZXF1ZXN0IChzaG9y
dCBvZiByZW1vdmluZyBpdCBhbHRvZ2V0aGVyKS4KICAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVt
LzY4Njc1OTg+IGdhbGxlcnkubWUuY29tIGlzIHRlbXBvcmFyaWx5IHdoaXRlbGlzdGVkLCBzbyB0
aGF0IFF1aWNrVGltZSBwbHVnLWluIGNvdWxkIHNlZSB0aGUgY3JlZGVudGlhbHMuCiAgICAgICAg
IENyZWRlbnRpYWwgd2ViQ3JlZGVudGlhbChjcmVkZW50aWFsLnVzZXIoKSwgY3JlZGVudGlhbC5w
YXNzd29yZCgpLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKLSAgICAgICAgV2ViQ29yZUNy
ZWRlbnRpYWxTdG9yYWdlOjpzZXQobWFjKHdlYkNyZWRlbnRpYWwpLCBbZC0+bV9jdXJyZW50TWFj
Q2hhbGxlbmdlIHByb3RlY3Rpb25TcGFjZV0pOworICAgICAgICBDcmVkZW50aWFsU3RvcmFnZTo6
c2V0KHdlYkNyZWRlbnRpYWwsIGNvcmUoW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBwcm90ZWN0
aW9uU3BhY2VdKSwgZC0+bV9yZXF1ZXN0LnVybCgpKTsKICAgICAgICAgW1tkLT5tX2N1cnJlbnRN
YWNDaGFsbGVuZ2Ugc2VuZGVyXSB1c2VDcmVkZW50aWFsOm1hYyh3ZWJDcmVkZW50aWFsKSBmb3JB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTpkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2VdOwogICAgIH0g
ZWxzZQogI2VuZGlmCkBAIC04OTgsNyArOTE0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVj
ZWl2ZWRDYW5jZWxsYXRpbwogICAgICAgICBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwgPSBb
W05TVVJMQ3JlZGVudGlhbCBhbGxvY10gaW5pdFdpdGhVc2VyOm1fdXNlcgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
c3N3b3JkOm1fcGFzcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3Rl
bmNlTm9uZV07Ci0gICAgICAgIFdlYkNvcmVDcmVkZW50aWFsU3RvcmFnZTo6c2V0KGNyZWRlbnRp
YWwsIFtjaGFsbGVuZ2UgcHJvdGVjdGlvblNwYWNlXSk7CisgICAgICAgIENyZWRlbnRpYWxTdG9y
YWdlOjpzZXQoY29yZShjcmVkZW50aWFsKSwgY29yZShbY2hhbGxlbmdlIHByb3RlY3Rpb25TcGFj
ZV0pLCBtX3VybCk7CiAgICAgICAgIFtbY2hhbGxlbmdlIHNlbmRlcl0gdXNlQ3JlZGVudGlhbDpj
cmVkZW50aWFsIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZV07CiAgICAgICAg
IFtjcmVkZW50aWFsIHJlbGVhc2VdOwogICAgICAgICBbbV91c2VyIHJlbGVhc2VdOwpAQCAtOTA4
LDEwICs5MjQsMTAgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpbwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChbY2hhbGxlbmdlIHByZXZpb3VzRmFpbHVy
ZUNvdW50XSA9PSAwICYmIG1fYWxsb3dTdG9yZWRDcmVkZW50aWFscykgewotICAgICAgICBOU1VS
TENyZWRlbnRpYWwgKmNyZWRlbnRpYWwgPSBXZWJDb3JlQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChb
Y2hhbGxlbmdlIHByb3RlY3Rpb25TcGFjZV0pOwotICAgICAgICBBU1NFUlQoW2NyZWRlbnRpYWwg
cGVyc2lzdGVuY2VdID09IE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7Ci0gICAgICAg
IGlmIChjcmVkZW50aWFsKSB7Ci0gICAgICAgICAgICBbW2NoYWxsZW5nZSBzZW5kZXJdIHVzZUNy
ZWRlbnRpYWw6Y3JlZGVudGlhbCBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2Vd
OworICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0
KGNvcmUoW2NoYWxsZW5nZSBwcm90ZWN0aW9uU3BhY2VdKSk7CisgICAgICAgIEFTU0VSVChjcmVk
ZW50aWFsLnBlcnNpc3RlbmNlKCkgPT0gQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7CisgICAg
ICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFtbY2hhbGxlbmdl
IHNlbmRlcl0gdXNlQ3JlZGVudGlhbDptYWMoY3JlZGVudGlhbCkgZm9yQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6Y2hhbGxlbmdlXTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KQEAgLTk3NSwyMiArOTkxLDM5IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ2Fu
Y2VsbGF0aW8KIHsKICAgICBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIgKmRlbGVnYXRlID0gW1tX
ZWJDb3JlU3luY2hyb25vdXNMb2FkZXIgYWxsb2NdIGluaXRdOwogCi0gICAgTlNVUkwgKnVybCA9
IFtyZXF1ZXN0IFVSTF07Ci0gICAgZGVsZWdhdGUtPm1fdXNlciA9IFtbdXJsIHVzZXJdIGNvcHld
OwotICAgIGRlbGVnYXRlLT5tX3Bhc3MgPSBbW3VybCBwYXNzd29yZF0gY29weV07CisgICAgS1VS
TCB1cmwoW3JlcXVlc3QgVVJMXSk7CisgICAgZGVsZWdhdGUtPm1fdXNlciA9IFtuc1N0cmluZ05p
bElmRW1wdHkodXJsLnVzZXIoKSkgcmV0YWluXTsKKyAgICBkZWxlZ2F0ZS0+bV9wYXNzID0gW25z
U3RyaW5nTmlsSWZFbXB0eSh1cmwucGFzcygpKSByZXRhaW5dOwogICAgIGRlbGVnYXRlLT5tX2Fs
bG93U3RvcmVkQ3JlZGVudGlhbHMgPSBhbGxvd1N0b3JlZENyZWRlbnRpYWxzOwogCiAgICAgTlNV
UkxDb25uZWN0aW9uICpjb25uZWN0aW9uOwogCiAgICAgLy8gVGFrZSB1c2VyL3Bhc3Mgb3V0IG9m
IHRoZSBVUkwuCiAgICAgLy8gQ3JlZGVudGlhbHMgZm9yIGZ0cCBjYW4gb25seSBiZSBwYXNzZWQg
aW4gVVJMLCB0aGUgY29ubmVjdGlvbjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
IGRlbGVnYXRlIGNhbGwgd29uJ3QgYmUgbWFkZS4KLSAgICBpZiAoKGRlbGVnYXRlLT5tX3VzZXIg
fHwgZGVsZWdhdGUtPm1fcGFzcykgJiYgS1VSTCh1cmwpLnByb3RvY29sSW5IVFRQRmFtaWx5KCkp
IHsKKyAgICBpZiAoKGRlbGVnYXRlLT5tX3VzZXIgfHwgZGVsZWdhdGUtPm1fcGFzcykgJiYgdXJs
LnByb3RvY29sSW5IVFRQRmFtaWx5KCkpIHsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3RXaXRob3V0Q3JlZGVudGlhbHMgPSByZXF1ZXN0OwogICAgICAgICByZXF1ZXN0V2l0aG91dENy
ZWRlbnRpYWxzLnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgICAgIGNvbm5lY3Rpb24gPSBbW05T
VVJMQ29ubmVjdGlvbiBhbGxvY10gaW5pdFdpdGhSZXF1ZXN0OnJlcXVlc3RXaXRob3V0Q3JlZGVu
dGlhbHMubnNVUkxSZXF1ZXN0KCkgZGVsZWdhdGU6ZGVsZWdhdGUgc3RhcnRJbW1lZGlhdGVseTpO
T107Ci0gICAgfSBlbHNlCisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVt
LzcxNzQwNTA+IC0gRm9yIFVSTHMgdGhhdCBtYXRjaCB0aGUgcGF0aHMgb2YgdGhvc2UgcHJldmlv
dXNseSBjaGFsbGVuZ2VkIGZvciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uLCAKKyAgICAgICAg
Ly8gd2UgbmVlZCB0byB0cnkgYW5kIHJldXNlIHRoZSBjcmVkZW50aWFsIHByZWVtcHRpdmVseSwg
YXMgYWxsb3dlZCBieSBSRkMgMjYxNy4KKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3RX
aXRoSW5pdGlhbENyZWRlbnRpYWxzID0gcmVxdWVzdDsKKyAgICAgICAgQ3JlZGVudGlhbCBpbml0
aWFsQ3JlZGVudGlhbDsKKyAgICAgICAgaWYgKGFsbG93U3RvcmVkQ3JlZGVudGlhbHMgJiYgdXJs
LnByb3RvY29sSW5IVFRQRmFtaWx5KCkpCisgICAgICAgICAgICBpbml0aWFsQ3JlZGVudGlhbCA9
IENyZWRlbnRpYWxTdG9yYWdlOjpnZXREZWZhdWx0QXV0aGVudGljYXRpb25DcmVkZW50aWFsKHVy
bCk7CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKCFpbml0aWFsQ3JlZGVudGlhbC5pc0VtcHR5
KCkpIHsKKyAgICAgICAgICAgIC8vIEFwcGx5IGJhc2ljIGF1dGggaGVhZGVyCisgICAgICAgICAg
ICBTdHJpbmcgdW5lbmNvZGVkID0gaW5pdGlhbENyZWRlbnRpYWwudXNlcigpICsgIjoiICsgaW5p
dGlhbENyZWRlbnRpYWwucGFzc3dvcmQoKTsKKyAgICAgICAgICAgIENTdHJpbmcgZW5jb2RlZCA9
IHVuZW5jb2RlZC51dGY4KCkuYmFzZTY0RW5jb2RlKCk7CisgICAgICAgICAgICBTdHJpbmcgYXV0
aEhlYWRlciA9IFN0cmluZzo6Zm9ybWF0KCJCYXNpYyAlcyIsIGVuY29kZWQuZGF0YSgpKTsKKyAg
ICAgICAgICAgIHJlcXVlc3RXaXRoSW5pdGlhbENyZWRlbnRpYWxzLmFkZEhUVFBIZWFkZXJGaWVs
ZCgiQXV0aG9yaXphdGlvbiIsIGF1dGhIZWFkZXIpOworICAgICAgICB9CisgICAgCiAgICAgICAg
IGNvbm5lY3Rpb24gPSBbW05TVVJMQ29ubmVjdGlvbiBhbGxvY10gaW5pdFdpdGhSZXF1ZXN0OnJl
cXVlc3QgZGVsZWdhdGU6ZGVsZWdhdGUgc3RhcnRJbW1lZGlhdGVseTpOT107CiAKKyAgICB9Cisg
ICAgCiAgICAgW2Nvbm5lY3Rpb24gc2NoZWR1bGVJblJ1bkxvb3A6W05TUnVuTG9vcCBjdXJyZW50
UnVuTG9vcF0gZm9yTW9kZTpXZWJDb3JlU3luY2hyb25vdXNMb2FkZXJSdW5Mb29wTW9kZV07CiAg
ICAgW2Nvbm5lY3Rpb24gc3RhcnRdOwogICAgIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0NTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9DU3RyaW5n
LmNwcAkocmV2aXNpb24gNDgyNzYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvQ1N0cmluZy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNiwgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDEwICsyNywxOSBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTdHJpbmcuaCIKIAorI2luY2x1ZGUg
IkJhc2U2NC5oIgorCiB1c2luZyBzdGQ6Om1pbjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitQ
YXNzUmVmUHRyPENTdHJpbmdCdWZmZXI+IENTdHJpbmdCdWZmZXI6OmJhc2U2NEVuY29kZSgpCit7
CisgICAgVmVjdG9yPGNoYXI+IGVuY29kZWQ7CisgICAgV2ViQ29yZSA6OmJhc2U2NEVuY29kZSht
X3ZlY3RvciwgZW5jb2RlZCk7CisgICAgcmV0dXJuIENTdHJpbmdCdWZmZXI6OmNyZWF0ZShlbmNv
ZGVkKTsKK30KKwogQ1N0cmluZzo6Q1N0cmluZyhjb25zdCBjaGFyKiBzdHIpCiB7CiAgICAgaW5p
dChzdHIsIHN0cmxlbihzdHIpKTsKQEAgLTkwLDYgKzk5LDExIEBAIHZvaWQgQ1N0cmluZzo6Y29w
eUJ1ZmZlcklmTmVlZGVkKCkKICAgICBtZW1jcHkobV9idWZmZXItPm11dGFibGVEYXRhKCksIG1f
dGVtcC0+ZGF0YSgpLCBsZW4pOwogfQogCitDU3RyaW5nIENTdHJpbmc6OmJhc2U2NEVuY29kZSgp
Cit7CisgICAgcmV0dXJuIENTdHJpbmcobV9idWZmZXItPmJhc2U2NEVuY29kZSgpLmdldCgpKTsK
K30KKwogYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIp
CiB7CiAgICAgaWYgKGEuaXNOdWxsKCkgIT0gYi5pc051bGwoKSkKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vdGV4dC9DU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0NTdHJpbmcuaAkocmV2aXNpb24gNDgyNzYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvQ1N0
cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw5ICs0Mywx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDU3RyaW5nOwog
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTdHJpbmdCdWZmZXI+IGNyZWF0ZSh1bnNpZ25l
ZCBsZW5ndGgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU3RyaW5nQnVmZmVyKGxlbmd0aCkpOyB9
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTdHJpbmdCdWZmZXI+IGNyZWF0ZShjb25zdCBW
ZWN0b3I8Y2hhcj4mIHZlY3RvclRvQWRvcHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU3RyaW5n
QnVmZmVyKHZlY3RvclRvQWRvcHQpKTsgfQogICAgICAgICBDU3RyaW5nQnVmZmVyKHVuc2lnbmVk
IGxlbmd0aCkgOiBtX3ZlY3RvcihsZW5ndGgpIHsgfQorICAgICAgICBDU3RyaW5nQnVmZmVyKGNv
bnN0IFZlY3RvcjxjaGFyPiYgdmVjdG9yVG9BZG9wdCkgOiBtX3ZlY3Rvcih2ZWN0b3JUb0Fkb3B0
KSB7IH0KICAgICAgICAgY2hhciogbXV0YWJsZURhdGEoKSB7IHJldHVybiBtX3ZlY3Rvci5kYXRh
KCk7IH0KIAorICAgICAgICBQYXNzUmVmUHRyPENTdHJpbmdCdWZmZXI+IGJhc2U2NEVuY29kZSgp
OwogICAgICAgICBWZWN0b3I8Y2hhcj4gbV92ZWN0b3I7CiAgICAgfTsKIApAQCAtNTksNiArNjIs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENTdHJpbmcoQ1N0cmluZ0J1ZmZlciog
YnVmZmVyKSA6IG1fYnVmZmVyKGJ1ZmZlcikgeyB9CiAgICAgICAgIHN0YXRpYyBDU3RyaW5nIG5l
d1VuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7CiAK
KyAgICAgICAgQ1N0cmluZyBiYXNlNjRFbmNvZGUoKTsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0
IGNoYXIqIGRhdGEoKSBjb25zdDsKICAgICAgICAgY2hhciogbXV0YWJsZURhdGEoKTsKICAgICAg
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNDgyODIpCisrKyBX
ZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDA5
LTA5LTEwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTYWZhcmkgNCBjYW5ub3QgYmUgdXNl
ZCB0byB1cGRhdGUgZmlybXdhcmUgb24gTGlua3N5cyByb3V0ZXJzLgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzE3NDA1MD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yOTE2MAorCisgICAgICAgIEFkb3B0IHRoZSBuZXcgV2ViQ29yZTo6Q3JlZGVudGlhbFN0
b3JhZ2UgaW4gV2ViS2l0L01hYy4KKworICAgICAgICAqIE1pc2MvV2ViRG93bmxvYWQubW06Cisg
ICAgICAgICgtW1dlYkRvd25sb2FkSW50ZXJuYWwgZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOl0pOgorICAgICAgICAqIFBsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1
Z2luVmlldy5tbToKKyAgICAgICAgKFdlYktpdDo6Z2V0QXV0aGVudGljYXRpb25JbmZvKToKKwog
MjAwOS0wOS0xMCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJl
ci1zdGFtcGVkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBXZWJLaXQvbWFjL01pc2MvV2ViRG93bmxv
YWQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tCShyZXZp
c2lvbiA0ODI3NCkKKysrIFdlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsOSBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMRG93bmxvYWQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25NYWMuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
Q3JlZGVudGlhbC5oPgorI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50aWFsU3RvcmFnZS5oPgorI2lt
cG9ydCA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJQYW5l
bEF1dGhlbnRpY2F0aW9uSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIApA
QCAtMTExLDcgKzExNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogewogICAgIC8vIFRy
eSBwcmV2aW91c2x5IHN0b3JlZCBjcmVkZW50aWFsIGZpcnN0LgogICAgIGlmICghW2NoYWxsZW5n
ZSBwcmV2aW91c0ZhaWx1cmVDb3VudF0pIHsKLSAgICAgICAgTlNVUkxDcmVkZW50aWFsICpjcmVk
ZW50aWFsID0gV2ViQ29yZUNyZWRlbnRpYWxTdG9yYWdlOjpnZXQoW2NoYWxsZW5nZSBwcm90ZWN0
aW9uU3BhY2VdKTsKKyAgICAgICAgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsID0gbWFjKENy
ZWRlbnRpYWxTdG9yYWdlOjpnZXQoY29yZShbY2hhbGxlbmdlIHByb3RlY3Rpb25TcGFjZV0pKSk7
CiAgICAgICAgIGlmIChjcmVkZW50aWFsKSB7CiAgICAgICAgICAgICBbW2NoYWxsZW5nZSBzZW5k
ZXJdIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlhbCBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpj
aGFsbGVuZ2VdOwogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogV2ViS2l0L21hYy9QbHVnaW5z
L1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9Q
bHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0JKHJldmlzaW9uIDQ4Mjc0KQorKysg
V2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDYgKzQzLDggQEAKIAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4
dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbk1hYy5oPgorI2ltcG9ydCA8
V2ViQ29yZS9DcmVkZW50aWFsLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NyZWRlbnRpYWxTdG9yYWdl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NTdHJpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWxlbWVudC5oPgpAQCAtNTAsNiArNTIsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MUGx1Z0lu
RWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1By
b3RlY3Rpb25TcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW1wb3J0
IDxXZWJLaXQvRE9NUHJpdmF0ZS5oPgogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFk
aW5nLmg+CkBAIC04NjgsNyArODcxLDcgQEAgYm9vbCBnZXRBdXRoZW50aWNhdGlvbkluZm8oY29u
c3QgY2hhciogcAogICAgIAogICAgIFJldGFpblB0cjxOU1VSTFByb3RlY3Rpb25TcGFjZT4gcHJv
dGVjdGlvblNwYWNlKEFkb3B0TlMsIFtbTlNVUkxQcm90ZWN0aW9uU3BhY2UgYWxsb2NdIGluaXRX
aXRoSG9zdDpob3N0IHBvcnQ6cG9ydCBwcm90b2NvbDpwcm90b2NvbCByZWFsbTpyZWFsbSBhdXRo
ZW50aWNhdGlvbk1ldGhvZDphdXRoZW50aWNhdGlvbk1ldGhvZF0pOwogICAgIAotICAgIE5TVVJM
Q3JlZGVudGlhbCAqY3JlZGVudGlhbCA9IFdlYkNvcmVDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KHBy
b3RlY3Rpb25TcGFjZS5nZXQoKSk7CisgICAgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsID0g
bWFjKENyZWRlbnRpYWxTdG9yYWdlOjpnZXQoY29yZShwcm90ZWN0aW9uU3BhY2UuZ2V0KCkpKSk7
CiAgICAgaWYgKCFjcmVkZW50aWFsKQogICAgICAgICBjcmVkZW50aWFsID0gW1tOU1VSTENyZWRl
bnRpYWxTdG9yYWdlIHNoYXJlZENyZWRlbnRpYWxTdG9yYWdlXSBkZWZhdWx0Q3JlZGVudGlhbEZv
clByb3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9uU3BhY2UuZ2V0KCldOwogICAgIGlmICghY3JlZGVu
dGlhbCkKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93
aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA0ODI4MikKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDktMTAgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNhZmFyaSA0IGNhbm5vdCBiZSB1c2VkIHRvIHVwZGF0ZSBmaXJtd2FyZSBv
biBMaW5rc3lzIHJvdXRlcnMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTc0MDUwPiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MTYwCisKKyAgICAgICAg
QWRvcHQgdGhlIG5ldyBXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZSBpbiBXZWJLaXQvV2luLgor
CisgICAgICAgICogV2ViRG93bmxvYWRDRk5ldC5jcHA6CisgICAgICAgIChXZWJEb3dubG9hZDo6
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKwogMjAwOS0wOS0wNyAgRHJldyBX
aWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlk
IExldmluLgpJbmRleDogV2ViS2l0L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCShyZXZpc2lvbiA0ODI3NCkKKysr
IFdlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYg
KzQ3LDcgQEAKICNwcmFnbWEgd2FybmluZyhwdXNoLCAwKQogI2luY2x1ZGUgPFdlYkNvcmUvQXV0
aGVudGljYXRpb25DRi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvQ3JlZGVudGlhbFN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
RXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KQEAgLTM4MSw5ICszODIsMTAgQEAgdm9pZCBXZWJE
b3dubG9hZDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aQogewogICAgIC8vIFRyeSBwcmV2aW91c2x5
IHN0b3JlZCBjcmVkZW50aWFsIGZpcnN0LgogICAgIGlmICghQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0
UHJldmlvdXNGYWlsdXJlQ291bnQoY2hhbGxlbmdlKSkgewotICAgICAgICBDRlVSTENyZWRlbnRp
YWxSZWYgY3JlZGVudGlhbCA9IFdlYkNvcmVDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KENGVVJMQXV0
aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjaGFsbGVuZ2UpKTsKLSAgICAgICAgaWYgKGNy
ZWRlbnRpYWwpIHsKLSAgICAgICAgICAgIENGVVJMRG93bmxvYWRVc2VDcmVkZW50aWFsKG1fZG93
bmxvYWQuZ2V0KCksIGNyZWRlbnRpYWwsIGNoYWxsZW5nZSk7CisgICAgICAgIENyZWRlbnRpYWwg
Y3JlZGVudGlhbCA9IENyZWRlbnRpYWxTdG9yYWdlOjpnZXQoY29yZShDRlVSTEF1dGhDaGFsbGVu
Z2VHZXRQcm90ZWN0aW9uU3BhY2UoY2hhbGxlbmdlKSkpOworICAgICAgICBpZiAoIWNyZWRlbnRp
YWwuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVm
PiBjZkNyZWRlbnRpYWwoQWRvcHRDRiwgY3JlYXRlQ0YoY3JlZGVudGlhbCkpOworICAgICAgICAg
ICAgQ0ZVUkxEb3dubG9hZFVzZUNyZWRlbnRpYWwobV9kb3dubG9hZC5nZXQoKSwgY2ZDcmVkZW50
aWFsLmdldCgpLCBjaGFsbGVuZ2UpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39469</attachid>
            <date>2009-09-11 13:09:39 -0700</date>
            <delta_ts>2009-09-12 15:36:59 -0700</delta_ts>
            <desc>Updated fix + DRT enhancements + Layout Test</desc>
            <filename>FinalPatch.txt</filename>
            <type>text/plain</type>
            <size>81168</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODMxMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODAgQEAKKzIwMDktMDktMTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNh
ZmFyaSA0IGNhbm5vdCBiZSB1c2VkIHRvIHVwZGF0ZSBmaXJtd2FyZSBvbiBMaW5rc3lzIHJvdXRl
cnMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTc0MDUwPiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MTYwCisKKyAgICAgICAgSW4gaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvNDI0ODMsIHdlIGRpc2FibGVkIENGTmV0d29yaydzIHNlc3Np
b24gY3JlZGVudGlhbCBzdG9yYWdlIGFuZCAKKyAgICAgICAgaW1wbGVtZW50ZWQgb3VyIG93biBp
biBXZWJDb3JlLgorCisgICAgICAgIE9uZSBmZWF0dXJlIHdlIGxvc3QgaXMgdGhhdCBDRk5ldHdv
cmsgd291bGQgYXV0b21hdGljYWxseSBzZW5kIHByZXZpb3VzbHkgYXV0aGVudGljYXRlZCBjcmVk
ZW50aWFscworICAgICAgICB3aXRoIG5ldyBjb25uZWN0aW9ucyB3aGVuIHRoZSBwYXRocyBtYXRj
aCwgYXMgYWxsb3dlZCBieSBSRkMgMjYxNyBmb3IgSFRUUCBCYXNpYyBBdXRoZW50aWNhdGlvbi4g
IAorCisgICAgICAgIEV2ZW4gdGhvdWdoIGl0J3Mgb3B0aW9uYWwgZm9yIFVzZXIgQWdlbnRzIHRv
IGRvIHRoaXMsIChzb21lPykgTGlua3N5cyByb3V0ZXJzIHJlbHkgb24gdGhpcyBiZWhhdmlvci4K
KworICAgICAgICBTbyBub3cgV2ViQ29yZSdzIENyZWRlbnRpYWxTdG9yYWdlIHdpbGwgZG8gaXQg
YWxzby4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtY3JlZGVudGlh
bHMtc2VudC1hdXRvbWF0aWNhbGx5Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9DcmVkZW50aWFsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OmlzRW1w
dHkpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5oOgorCisgICAgICAg
IEFkZCBhIHNsaWdodGx5IG1vcmUgZnVsbCBmZWF0dXJlZCBDcmVkZW50aWFsU3RvcmUgdGhhdCB3
aWxsIHRyYWNrIFVSTCBwYXRocyBhIGNyZWRlbnRpYWwgYmVsb25ncyB0bzoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpwcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6b3JpZ2luVG9EZWZhdWx0Q3JlZGVudGlhbE1hcCk6CisgICAgICAgIChXZWJDb3JlOjpvcmln
aW5TdHJpbmdGcm9tVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6OmdldCk6CisgICAgICAg
IChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RGVmYXVsdEF1dGhlbnRpY2F0aW9uQ3Jl
ZGVudGlhbCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5o
OiBBZGRlZC4KKworICAgICAgICBBbGxvdyBQcm90ZWN0aW9uU3BhY2UgdG8gYmUgYSBoYXNoIGtl
eToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2U6OlByb3RlY3Rpb25TcGFjZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlByb3RlY3Rpb25TcGFjZTo6UHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlBy
b3RlY3Rpb25TcGFjZTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlSGFzaC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlByb3RlY3Rpb25TcGFjZUhhc2g6Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVj
dGlvblNwYWNlSGFzaDo6ZXF1YWwpOgorCisgICAgICAgIFJlbW92ZSBXZWJDb3JlQ3JlZGVudGlh
bFN0b3JhZ2U6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNG
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tOgorCisgICAg
ICAgIENoYW5nZSBSZXNvdXJjZUhhbmRsZUNGTmV0IHRvIHRyeSB0byB1c2Ugc3RvcmVkIGNyZWRl
bnRpYWxzIG9uIG5ldyBjb25uZWN0aW9ucywgaWYgYXBwcm9wcmlhdGU6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVTeW5jaHJvbm91c0xvYWRlcjo6bG9hZCk6CisKKyAgICAgICAg
Q2hhbmdlIFJlc291cmNlSGFuZGxlTWFjIHRvIHRyeSB0byB1c2Ugc3RvcmVkIGNyZWRlbnRpYWxz
IG9uIG5ldyBjb25uZWN0aW9ucywgaWYgYXBwcm9wcmlhdGU6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKyAgICAgICAgKC1bV2ViQ29yZVN5bmNo
cm9ub3VzTG9hZGVyIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Ol0pOgorICAgICAgICAoK1tXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIgbG9hZFJlcXVlc3Q6YWxs
b3dTdG9yZWRDcmVkZW50aWFsczpyZXR1cm5pbmdSZXNwb25zZTplcnJvcjpdKToKKworICAgICAg
ICBBZGQgYmFzZTY0LWFiaWxpdHkgdG8gQ1N0cmluZzoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L0NTdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1N0cmluZ0J1ZmZlcjo6YmFzZTY0RW5j
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTdHJpbmc6OmJhc2U2NEVuY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9DU3RyaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpDU3RyaW5nQnVm
ZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1N0cmluZ0J1ZmZlcjo6Q1N0cmluZ0J1
ZmZlcik6CisKIDIwMDktMDktMTEgIENhbWVyb24gTWNDb3JtYWNrICA8Y2FtQG1jYy5pZC5hdT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS5iYXNlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJKHJldmlz
aW9uIDQ4MzExKQorKysgV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTEsMTEgKzMxMSwxMSBAQCBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMTJyZWxlYXNl
UHJvCiBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMjBmb3JjZUNvbnRlbnRTbmlmZmluZ0V2
CiBfX1pON1dlYkNvcmUxNFJlc291cmNlTG9hZGVyMTRjYW5jZWxsZWRFcnJvckV2CiBfX1pON1dl
YkNvcmUxNFJlc291cmNlTG9hZGVyMTlzZXRTaG91bGRCdWZmZXJEYXRhRWIKLV9fWk43V2ViQ29y
ZTE0U2VjdXJpdHlPcmlnaW42Y3JlYXRlRVJLTlNfNEtVUkxFCiBfX1pON1dlYkNvcmUxNFNlY3Vy
aXR5T3JpZ2luMTZjcmVhdGVGcm9tU3RyaW5nRVJLTlNfNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0
U2VjdXJpdHlPcmlnaW4yNHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbEVSS05TXzZTdHJpbmdFCiBf
X1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMjV3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luRVJL
UzBfUktOU182U3RyaW5nRVM1X2IKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4yN3Jlc2V0
T3JpZ2luQWNjZXNzV2hpdGVMaXN0c0V2CitfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNmNy
ZWF0ZUVSS05TXzRLVVJMRQogX19aTjdXZWJDb3JlMTVBcmNoaXZlUmVzb3VyY2U2Y3JlYXRlRU4z
V1RGMTBQYXNzUmVmUHRySU5TXzEyU2hhcmVkQnVmZmVyRUVFUktOU180S1VSTEVSS05TXzZTdHJp
bmdFU0FfU0FfUktOU18xNlJlc291cmNlUmVzcG9uc2VFCiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3
YXJkTGlzdDEwcmVtb3ZlSXRlbUVQTlNfMTFIaXN0b3J5SXRlbUUKIF9fWk43V2ViQ29yZTE1QmFj
a0ZvcndhcmRMaXN0MTBzZXRFbmFibGVkRWIKQEAgLTM5Niw2ICszOTYsNyBAQCBfX1pON1dlYkNv
cmUxNmNyZWF0ZUZ1bGxNYXJrdXBFUEtOU181UmFuCiBfX1pON1dlYkNvcmUxNmVuY2xvc2luZ0lu
dFJlY3RFUks3X05TUmVjdAogX19aTjdXZWJDb3JlMTZpc0VuZE9mUGFyYWdyYXBoRVJLTlNfMTVW
aXNpYmxlUG9zaXRpb25FCiBfX1pON1dlYkNvcmUxNnRocmVhZEdsb2JhbERhdGFFdgorX19aTjdX
ZWJDb3JlMTdDcmVkZW50aWFsU3RvcmFnZTNnZXRFUktOU18xNVByb3RlY3Rpb25TcGFjZUUKIF9f
Wk43V2ViQ29yZTE3RE9NSW1wbGVtZW50YXRpb24xNGlzVGV4dE1JTUVUeXBlRVJLTlNfNlN0cmlu
Z0UKIF9fWk43V2ViQ29yZTE3R2x5cGhQYWdlVHJlZU5vZGUxOHRyZWVHbHlwaFBhZ2VDb3VudEV2
CiBfX1pON1dlYkNvcmUxN0hUTUxQbHVnSW5FbGVtZW50MTFnZXROUE9iamVjdEV2CkBAIC00NTYs
NyArNDU3LDYgQEAgX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTVlbQogX19a
TjdXZWJDb3JlMjNSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZEMxRVBOU184RG9jdW1lbnRFTjNXVEYx
MFBhc3NSZWZQdHJJTlNfMTZEb2N1bWVudEZyYWdtZW50RUVFYmJiYmJOU18xMEVkaXRBY3Rpb25F
CiBfX1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBOU184RG9jdW1lbnRFUktO
M1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRQogX19aTjdXZWJDb3JlMjRCaW5hcnlQcm9wZXJ0
eUxpc3RXcml0ZXIxN3dyaXRlUHJvcGVydHlMaXN0RXYKLV9fWk43V2ViQ29yZTI0V2ViQ29yZUNy
ZWRlbnRpYWxTdG9yYWdlOW1fc3RvcmFnZUUKIF9fWk43V2ViQ29yZTI0Y3JlYXRlRnJhZ21lbnRG
cm9tTWFya3VwRVBOU184RG9jdW1lbnRFUktOU182U3RyaW5nRVM0XwogX19aTjdXZWJDb3JlMjRk
ZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNFUktOU182U3RyaW5nRQogX19aTjdXZWJDb3JlMjRub3Rp
ZnlIaXN0b3J5SXRlbUNoYW5nZWRFCkBAIC00ODEsNiArNDgxLDcgQEAgX19aTjdXZWJDb3JlMzFh
cHBsaWNhdGlvbklzTWljcm9zb2Z0TWVzcwogX19aTjdXZWJDb3JlMzJwbGFpblRleHRUb01hbGxv
Y0FsbG9jYXRlZEJ1ZmZlckVQS05TXzVSYW5nZUVSamIKIF9fWk43V2ViQ29yZTMzc2V0RGVmYXVs
dFRocmVhZFZpb2xhdGlvbkJlaGF2aW9yRU5TXzIzVGhyZWFkVmlvbGF0aW9uQmVoYXZpb3JFTlNf
MjBUaHJlYWRWaW9sYXRpb25Sb3VuZEUKIF9fWk43V2ViQ29yZTM2SW5pdGlhbGl6ZUxvZ2dpbmdD
aGFubmVsc0lmTmVjZXNzYXJ5RXYKK19fWk43V2ViQ29yZTNtYWNFUktOU18xMENyZWRlbnRpYWxF
CiBfX1pON1dlYkNvcmUzbWFjRVJLTlNfMjNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUUKIF9fWk43
V2ViQ29yZTRGb250MTFzZXRDb2RlUGF0aEVOUzBfOENvZGVQYXRoRQogX19aTjdXZWJDb3JlNEZv
bnQxOHNob3VsZFVzZVNtb290aGluZ0V2CkBAIC01MTQsNiArNTE1LDcgQEAgX19aTjdXZWJDb3Jl
NFBhZ2U5Z29Gb3J3YXJkRXYKIF9fWk43V2ViQ29yZTRQYWdlOWluaXRHcm91cEV2CiBfX1pON1dl
YkNvcmU0UGFnZUMxRVBOU18xMkNocm9tZUNsaWVudEVQTlNfMTdDb250ZXh0TWVudUNsaWVudEVQ
TlNfMTJFZGl0b3JDbGllbnRFUE5TXzEwRHJhZ0NsaWVudEVQTlNfMTVJbnNwZWN0b3JDbGllbnRF
CiBfX1pON1dlYkNvcmU0UGFnZUQxRXYKK19fWk43V2ViQ29yZTRjb3JlRVAyME5TVVJMUHJvdGVj
dGlvblNwYWNlCiBfX1pON1dlYkNvcmU1Q2FjaGUxMXNldERpc2FibGVkRWIKIF9fWk43V2ViQ29y
ZTVDYWNoZTEzZ2V0U3RhdGlzdGljc0V2CiBfX1pON1dlYkNvcmU1Q2FjaGUxM3NldENhcGFjaXRp
ZXNFampqCkBAIC03NDQsMTAgKzc0NiwxMCBAQCBfX1pON1dlYkNvcmU5SFRNTE5hbWVzOXNjcmlw
dFRhZ0UKIF9fWk43V2ViQ29yZTlQYWdlQ2FjaGUxMXNldENhcGFjaXR5RWkKIF9fWk43V2ViQ29y
ZTlQYWdlQ2FjaGUyN3JlbGVhc2VBdXRvcmVsZWFzZWRQYWdlc05vd0V2CiBfX1pON1dlYkNvcmU5
UGFnZUdyb3VwMTNhZGRVc2VyU2NyaXB0RVJLTlNfNlN0cmluZ0VSS05TXzRLVVJMRVJLTjNXVEY2
VmVjdG9ySVMxX0xtMEVFRWpOU18yM1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lRQotX19aTjdXZWJD
b3JlOVBhZ2VHcm91cDE3YWRkVXNlclN0eWxlU2hlZXRFUktOU182U3RyaW5nRVJLTlNfNEtVUkxF
UktOM1dURjZWZWN0b3JJUzFfTG0wRUVFagogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDE0YWRkVmlz
aXRlZExpbmtFUEt0bQotX19aTjdXZWJDb3JlOVBhZ2VHcm91cDIwcmVtb3ZlQWxsVXNlckNvbnRl
bnRFdgorX19aTjdXZWJDb3JlOVBhZ2VHcm91cDE3YWRkVXNlclN0eWxlU2hlZXRFUktOU182U3Ry
aW5nRVJLTlNfNEtVUkxFUktOM1dURjZWZWN0b3JJUzFfTG0wRUVFagogX19aTjdXZWJDb3JlOVBh
Z2VHcm91cDE3Y2xvc2VMb2NhbFN0b3JhZ2VFdgorX19aTjdXZWJDb3JlOVBhZ2VHcm91cDIwcmVt
b3ZlQWxsVXNlckNvbnRlbnRFdgogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDIxcmVtb3ZlQWxsVmlz
aXRlZExpbmtzRXYKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAyNXJlbW92ZVVzZXJDb250ZW50Rm9y
V29ybGRFagogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDI2c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlu
a3NFYgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA0
ODMxMSkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTIwMDEzLDYgKzIwMDEzLDE0IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJ
CQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXENyZWRlbnRp
YWxTdG9yYWdlLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXENyZWRlbnRpYWxTdG9yYWdlLmgiDQor
CQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cbmV0d29ya1xGb3JtRGF0YS5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkBA
IC0yMDA2MSw2ICsyMDA2OSwxMCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUN
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xQcm90ZWN0aW9uU3BhY2VI
YXNoLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xSZXNvdXJjZUVycm9yQmFzZS5jcHAiDQogCQkJCQk+
DQogCQkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gNDgzMTEpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAxOSw2ICsxMDE5LDkgQEAKIAkJNTE5
NjExNzgwQ0FDNTZBODAwMTBBODBDIC8qIERhdGFiYXNlVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTk2MTE2MjBDQUM1NjU3MDAxMEE4MEMg
LyogRGF0YWJhc2VUaHJlYWQuaCAqLzsgfTsKIAkJNTE5NjExRUEwQ0FDNzQ5QzAwMTBBODBDIC8q
IERhdGFiYXNlVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE5NjExRTgwQ0FDNzQ5QzAwMTBBODBDIC8qIERhdGFiYXNlVGFzay5oICovOyB9Owog
CQk1MTk2MTFFQjBDQUM3NDlDMDAxMEE4MEMgLyogRGF0YWJhc2VUYXNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOTYxMUU5MENBQzc0OUMwMDEw
QTgwQyAvKiBEYXRhYmFzZVRhc2suY3BwICovOyB9OworCQk1MUEwNTIzMzEwNTg3NzRGMDBDQzlF
OTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQTA1MjMxMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3Rv
cmFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTUxQTA1MjM0MTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUEwNTIzMjEwNTg3NzRG
MDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuY3BwICovOyB9OworCQk1MUEwNTI1NjEwNTg4
NzQwMDBDQzlFOTUgLyogUHJvdGVjdGlvblNwYWNlSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBMDUyNTUxMDU4ODc0MDAwQ0M5RTk1IC8qIFBy
b3RlY3Rpb25TcGFjZUhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MUE0NUI1NjBDQUQ3RkQ3MDAwRDJCRTkgLyogRGF0YWJhc2VBdXRob3Jp
emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE0
NUI1NDBDQUQ3RkQ3MDAwRDJCRTkgLyogRGF0YWJhc2VBdXRob3JpemVyLmggKi87IH07CiAJCTUx
QTQ1QjU3MENBRDdGRDcwMDBEMkJFOSAvKiBEYXRhYmFzZUF1dGhvcml6ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNDVCNTUwQ0FEN0ZENzAw
MEQyQkU5IC8qIERhdGFiYXNlQXV0aG9yaXplci5jcHAgKi87IH07CiAJCTUxQTkyNjdDMEQ1M0Yw
NTcwMDYzRUNDMiAvKiBPcmlnaW5RdW90YU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBOTI2NzgwRDUzRjA1NzAwNjNFQ0MyIC8qIE9y
aWdpblF1b3RhTWFuYWdlci5jcHAgKi87IH07CkBAIC02MjMyLDYgKzYyMzUsOSBAQAogCQk1MTk2
MTFFOTBDQUM3NDlDMDAxMEE4MEMgLyogRGF0YWJhc2VUYXNrLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxOUZFMEExMERBRDQ0NkUwMEEwOEYyMSAvKiBIVE1MQXR0cmlidXRlTmFt
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEF0dHJpYnV0ZU5hbWVzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTlGRTBBMjBEQUQ0NDZFMDBBMDhGMjEgLyogSFRN
TFRhZ05hbWVzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxUYWdOYW1lcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8qIENy
ZWRlbnRpYWxTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWRl
bnRpYWxTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQTA1MjMyMTA1
ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxQTA1MjU1MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3Bh
Y2VIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3RlY3Rpb25TcGFj
ZUhhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBNDVCNTQwQ0FEN0ZENzAw
MEQyQkU5IC8qIERhdGFiYXNlQXV0aG9yaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEYXRhYmFzZUF1dGhvcml6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTFBNDVCNTUwQ0FEN0ZENzAwMEQyQkU5IC8qIERhdGFiYXNlQXV0aG9yaXplci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZUF1dGhvcml6ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE5MjY3ODBENTNGMDU3MDA2M0VDQzIg
LyogT3JpZ2luUXVvdGFNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE9yaWdpblF1b3RhTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMDgzNCwxNyArMTA4NDAsMTQgQEAKIAkJNjU2Qjg0RDcwQUVBMUNFOTAwQTA5NUI0IC8q
IG5ldHdvcmsgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CTUxMEQ0QTJEMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwICov
LAotCQkJCTUxMEQ0QTJFMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2Uu
aCAqLywKLQkJCQk1MTBENEEzMDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxl
QmFzZS5jcHAgKi8sCi0JCQkJNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVh
bUhhbmRsZUJhc2UuaCAqLywKLQkJCQk1MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50LmggKi8sCiAJCQkJQjJGMzRGRTcwRTgyRjgxNzAwRjYyN0NEIC8q
IGNmICovLAogCQkJCTY1NkI4NEU3MEFFQTFEQUUwMEEwOTVCNCAvKiBtYWMgKi8sCiAJCQkJOTM0
RjcxMzcwRDVBNkVGRjAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAg
Ki8sCiAJCQkJOTM0RjcxMzkwRDVBNkYxMDAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQmFzZS5oICovLAogCQkJCTUxNEM3NjU4MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFs
LmNwcCAqLywKIAkJCQk1MTRDNzY1OTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oICov
LAorCQkJCTUxQTA1MjMyMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5jcHAg
Ki8sCisJCQkJNTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmgg
Ki8sCiAJCQkJQjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovLAogCQkJCTUxNEM3
NjVBMENFOTIzQTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5jcHAgKi8sCiAJCQkJNTE0Qzc2NUIwQ0U5
MjNBMTAwN0VGM0NEIC8qIEZvcm1EYXRhLmggKi8sCkBAIC0xMDg1OCw2ICsxMDg2MSw3IEBACiAJ
CQkJMUE3RkE2MTgwRERBM0IzQTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmggKi8s
CiAJCQkJNTE0Qzc2NUYwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5jcHAgKi8s
CiAJCQkJNTE0Qzc2NjAwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5oICovLAor
CQkJCTUxQTA1MjU1MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3BhY2VIYXNoLmggKi8s
CiAJCQkJOTM0RjcxM0QwRDVBNkYyODAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3JCYXNlLmNwcCAq
LywKIAkJCQk5MzRGNzEzQjBENUE2RjE5MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJhc2UuaCAq
LywKIAkJCQk1MTRDNzY2MzBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGUuY3BwICov
LApAQCAtMTA4NjgsNiArMTA4NzIsMTEgQEAKIAkJCQk1MTRDNzY2ODBDRTkyM0ExMDA3RUYzQ0Qg
LyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5oICovLAogCQkJCTUxNEM3NjY5MENFOTIzQTEwMDdFRjND
RCAvKiBSZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgKi8sCiAJCQkJNTE0Qzc2NkEwQ0U5MjNBMTAw
N0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmggKi8sCisJCQkJNTEwRDRBMkQxMDMxNjVF
RTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi8sCisJCQkJNTEwRDRBMkUx
MDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5oICovLAorCQkJCTUxMEQ0
QTMwMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCAqLywKKwkJ
CQk1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oICov
LAorCQkJCTUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbmV0d29yazsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC0xNzc5NCw2ICsxNzgwMyw4IEBACiAJCQkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5
RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk0
OUVFRDE0NzEwNTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0QuaCBp
biBIZWFkZXJzICovLAogCQkJCTU5Qzc3RjJCMTA1NDVCM0IwMDUwNjEwNCAvKiBHZW9sb2NhdGlv
blNlcnZpY2VNb2NrLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUEwNTIzMzEwNTg3NzRGMDBDQzlF
OTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQTA1MjU2MTA1
ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3BhY2VIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzhCRjE1MTEwNTgxM0JGMDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDOEJGMTVBMTA1ODE0MTgwMEE0MEEwNyAvKiBVc2VyU3R5bGVTaGVldFR5cGVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTBENEE0RjEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29j
a2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xOTkyMyw2ICsxOTkzNCw3IEBACiAJCQkJ
NDlFRUQxNEYxMDUxOTcxQTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUVEMTUwMTA1MTk3MUEwMDA5OUZBQiAvKiBK
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTlD
NzdGMkExMDU0NUIzQjAwNTA2MTA0IC8qIEdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNTFBMDUyMzQxMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9y
YWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMEQ0QTRFMTAzMTc3QTIwMDQ5RUE1NCAvKiBX
ZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQUJBRTQ0MTA0M0FCNEEw
MDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsLmNwcAkocmV2aXNpb24gNDgz
MTEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDYgKzQzLDExIEBAIENyZWRlbnRpYWw6OkNyZWRlbnRpYWwoY29uc3QgU3Ry
aW5nJiB1c2UKICAgICAsIG1fcGVyc2lzdGVuY2UocGVyc2lzdGVuY2UpCiB7CiB9CisKK2Jvb2wg
Q3JlZGVudGlhbDo6aXNFbXB0eSgpCit7CisgICAgcmV0dXJuIG1fdXNlci5pc0VtcHR5KCkgJiYg
bV9wYXNzd29yZC5pc0VtcHR5KCk7Cit9CiAgICAgCiBjb25zdCBTdHJpbmcmIENyZWRlbnRpYWw6
OnVzZXIoKSBjb25zdAogeyAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwu
aAkocmV2aXNpb24gNDgzMTEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlh
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIHB1YmxpYzoKICAgICBDcmVkZW50
aWFsKCk7CiAgICAgQ3JlZGVudGlhbChjb25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYg
cGFzc3dvcmQsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7CiAgICAgCisgICAgYm9vbCBpc0VtcHR5
KCk7CisgICAgCiAgICAgY29uc3QgU3RyaW5nJiB1c2VyKCkgY29uc3Q7CiAgICAgY29uc3QgU3Ry
aW5nJiBwYXNzd29yZCgpIGNvbnN0OwogICAgIGJvb2wgaGFzUGFzc3dvcmQoKSBjb25zdDsKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFn
ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDcmVkZW50aWFsU3RvcmFnZS5oIgorCisjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgorI2luY2x1
ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiUHJvdGVjdGlvblNw
YWNlSGFzaC5oIgorI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKKworI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIEhhc2hNYXA8UHJv
dGVjdGlvblNwYWNlLCBDcmVkZW50aWFsPiBQcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXA7
CitzdGF0aWMgUHJvdGVjdGlvblNwYWNlVG9DcmVkZW50aWFsTWFwJiBwcm90ZWN0aW9uU3BhY2VU
b0NyZWRlbnRpYWxNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUHJvdGVjdGlvblNw
YWNlVG9DcmVkZW50aWFsTWFwLCBtYXAsICgpKTsKKyAgICByZXR1cm4gbWFwOworfQorCit0eXBl
ZGVmIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgQ3JlZGVudGlhbD4gPiBPcmlnaW5U
b0RlZmF1bHRDcmVkZW50aWFsTWFwOworc3RhdGljIE9yaWdpblRvRGVmYXVsdENyZWRlbnRpYWxN
YXAmIG9yaWdpblRvRGVmYXVsdENyZWRlbnRpYWxNYXAoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoT3JpZ2luVG9EZWZhdWx0Q3JlZGVudGlhbE1hcCwgbWFwLCAoKSk7CisgICAgcmV0dXJu
IG1hcDsKK30KKyAgICAKK3N0YXRpYyBTdHJpbmcgb3JpZ2luU3RyaW5nRnJvbVVSTChjb25zdCBL
VVJMJiB1cmwpCit7CisgICAgaWYgKHVybC5wb3J0KCkpCisgICAgICAgIHJldHVybiB1cmwucHJv
dG9jb2woKSArICI6Ly8iICsgdXJsLmhvc3QoKSArIFN0cmluZzo6Zm9ybWF0KCI6JWkvIiwgdXJs
LnBvcnQoKSk7CisgICAgCisgICAgcmV0dXJuIHVybC5wcm90b2NvbCgpICsgIjovLyIgKyB1cmwu
aG9zdCgpICsgIi8iOworfQorCit2b2lkIENyZWRlbnRpYWxTdG9yYWdlOjpzZXQoY29uc3QgQ3Jl
ZGVudGlhbCYgY3JlZGVudGlhbCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3Bh
Y2UsIGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICBwcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxN
YXAoKS5zZXQocHJvdGVjdGlvblNwYWNlLCBjcmVkZW50aWFsKTsKKyAgICAKKyAgICBQcm90ZWN0
aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSBzY2hlbWUgPSBwcm90ZWN0aW9uU3BhY2UuYXV0
aGVudGljYXRpb25TY2hlbWUoKTsKKyAgICBpZiAodXJsLnByb3RvY29sSW5IVFRQRmFtaWx5KCkg
JiYgKHNjaGVtZSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhUVFBCYXNp
YyB8fCBzY2hlbWUgPT0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVEZWZhdWx0
KSkgeworICAgICAgICBTdHJpbmcgb3JpZ2luID0gb3JpZ2luU3RyaW5nRnJvbVVSTCh1cmwpOwor
ICAgICAgICAKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIENyZWRlbnRpYWw+IHBhdGhUb0NyZWRl
bnRpYWxNYXA7CisgICAgICAgIHBhaXI8SGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBD
cmVkZW50aWFsPiA+OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gb3JpZ2luVG9EZWZhdWx0Q3Jl
ZGVudGlhbE1hcCgpLmFkZChvcmlnaW4sIHBhdGhUb0NyZWRlbnRpYWxNYXApOworICAgICAgICAK
KyAgICAgICAgLy8gUmVtb3ZlIHRoZSBsYXN0IHBhdGggY29tcG9uZW50IHRoYXQgaXMgbm90IGEg
ZGlyZWN0b3J5IHRvIGRldGVybWluZSB0aGUgc3VicGF0aCBmb3Igd2hpY2ggdGhpcyBjcmVkZW50
aWFsIGFwcGxpZXMuCisgICAgICAgIFN0cmluZyBwYXRoID0gdXJsLnBhdGgoKTsKKyAgICAgICAg
aWYgKCFwYXRoLmVuZHNXaXRoKCIvIikpIHsKKyAgICAgICAgICAgIGludCBpbmRleCA9IHBhdGgu
cmV2ZXJzZUZpbmQoJy8nKTsKKyAgICAgICAgICAgIGlmIChpbmRleCAhPSAtMSkKKyAgICAgICAg
ICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcoMCwgaW5kZXgpOworICAgICAgICB9CisgICAg
ICAgIGlmIChwYXRoLmVuZHNXaXRoKCIvIikgJiYgcGF0aC5sZW5ndGgoKSA+IDEpCisgICAgICAg
ICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcoMCwgcGF0aC5sZW5ndGgoKSAtIDEpOworICAgICAg
ICAKKyAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQuc2V0KHBhdGgsIGNyZWRlbnRpYWwpOwor
ICAgIH0KK30KKworQ3JlZGVudGlhbCBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQoreworICAgIHJldHVybiBwcm90ZWN0aW9uU3Bh
Y2VUb0NyZWRlbnRpYWxNYXAoKS5nZXQocHJvdGVjdGlvblNwYWNlKTsKK30KKworQ3JlZGVudGlh
bCBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RGVmYXVsdEF1dGhlbnRpY2F0aW9uQ3JlZGVudGlhbChj
b25zdCBLVVJMJiB1cmwpCit7CisgICAgU3RyaW5nIG9yaWdpbiA9IG9yaWdpblN0cmluZ0Zyb21V
UkwodXJsKTsKKyAgICBIYXNoTWFwPFN0cmluZywgQ3JlZGVudGlhbD4gcGF0aFRvQ3JlZGVudGlh
bE1hcCA9IG9yaWdpblRvRGVmYXVsdENyZWRlbnRpYWxNYXAoKS5nZXQob3JpZ2luKTsKKyAgICBp
ZiAocGF0aFRvQ3JlZGVudGlhbE1hcC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBDcmVkZW50
aWFsKCk7CisgICAgCisgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGEgc3RvcmVkIGNy
ZWRlbnRpYWwgZm9yIHRoZSBzdWJwYXRoIGFuY2VzdHJ5IG9mIHRoaXMgdXJsLgorICAgIFN0cmlu
ZyBwYXRoID0gdXJsLnBhdGgoKTsKKyAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBwYXRoVG9D
cmVkZW50aWFsTWFwLmdldChwYXRoKTsKKyAgICB3aGlsZSAoY3JlZGVudGlhbC5pc0VtcHR5KCkg
JiYgIXBhdGguaXNOdWxsKCkpIHsKKyAgICAgICAgaW50IGluZGV4ID0gcGF0aC5yZXZlcnNlRmlu
ZCgnLycpOworICAgICAgICBpZiAoaW5kZXggPT0gMCkgeworICAgICAgICAgICAgcGF0aCA9IFN0
cmluZygpOworICAgICAgICAgICAgY3JlZGVudGlhbCA9IHBhdGhUb0NyZWRlbnRpYWxNYXAuZ2V0
KCIvIik7CisgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gLTEpIHsKKyAgICAgICAgICAgIC8v
IFRoaXMgY2FzZSBzaG91bGQgbmV2ZXIgaGFwcGVuLCBhcyBhbGwgVVJMIHBhdGhzIHNob3VsZCBz
dGFydCB3aXRoIGEgbGVhZGluZyAvCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIGNyZWRlbnRpYWwgPSBwYXRoVG9DcmVkZW50aWFsTWFwLmdldChwYXRoKTsK
KyAgICAgICAgICAgIHBhdGggPSBTdHJpbmcoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBpbmRleCk7CisgICAgICAgICAgICBjcmVkZW50
aWFsID0gcGF0aFRvQ3JlZGVudGlhbE1hcC5nZXQocGF0aCk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgcmV0dXJuIGNyZWRlbnRpYWw7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBTZXNzaW9uQ3JlZGVudGlhbFN0b3JhZ2VfaAorI2Rl
ZmluZSBTZXNzaW9uQ3JlZGVudGlhbFN0b3JhZ2VfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIENyZWRlbnRpYWw7CitjbGFzcyBLVVJMOworY2xhc3MgUHJvdGVjdGlvblNwYWNlOwor
CitjbGFzcyBDcmVkZW50aWFsU3RvcmFnZSB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgc2V0
KGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBLVVJMJik7
CisgICAgc3RhdGljIENyZWRlbnRpYWwgZ2V0KGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOworICAg
IHN0YXRpYyBDcmVkZW50aWFsIGdldERlZmF1bHRBdXRoZW50aWNhdGlvbkNyZWRlbnRpYWwoY29u
c3QgS1VSTCYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2Vz
c2lvbkNyZWRlbnRpYWxTdG9yYWdlX2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
cm90ZWN0aW9uU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Qcm90ZWN0aW9uU3BhY2UuY3BwCShyZXZpc2lvbiA0ODMxMSkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICsz
NywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBjb21iaW5lZCB3aXRoIHRoZSBzZW1hbnRp
Y3Mgb2YgdGhlIFN0cmluZyhOU1N0cmluZyopIGNvbnN0cnVjdG9yCiBQcm90ZWN0aW9uU3BhY2U6
OlByb3RlY3Rpb25TcGFjZSgpCiAgICAgOiBtX2hvc3QoIiIpCisgICAgLCBtX3BvcnQoMCkKKyAg
ICAsIG1fc2VydmVyVHlwZShQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJIVFRQKQogICAgICwgbV9yZWFs
bSgiIikKKyAgICAsIG1fYXV0aGVudGljYXRpb25TY2hlbWUoUHJvdGVjdGlvblNwYWNlQXV0aGVu
dGljYXRpb25TY2hlbWVEZWZhdWx0KQorICAgICwgbV9pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZShm
YWxzZSkKIHsKIH0KICAKQEAgLTQ5LDYgKzUzLDcgQEAgUHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0
aW9uU3BhY2UoY29uc3QgUwogICAgICwgbV9zZXJ2ZXJUeXBlKHNlcnZlclR5cGUpCiAgICAgLCBt
X3JlYWxtKHJlYWxtLmxlbmd0aCgpID8gcmVhbG0gOiAiIikKICAgICAsIG1fYXV0aGVudGljYXRp
b25TY2hlbWUoYXV0aGVudGljYXRpb25TY2hlbWUpCisgICAgLCBtX2lzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKGZhbHNlKQogeyAgICAKIH0KICAgICAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Qcm90ZWN0aW9uU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUHJvdGVjdGlvblNwYWNlLmgJKHJldmlzaW9uIDQ4MzExKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1
NCwxMCBAQCBjbGFzcyBQcm90ZWN0aW9uU3BhY2UgewogcHVibGljOgogICAgIFByb3RlY3Rpb25T
cGFjZSgpOwogICAgIFByb3RlY3Rpb25TcGFjZShjb25zdCBTdHJpbmcmIGhvc3QsIGludCBwb3J0
LCBQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlLCBjb25zdCBTdHJpbmcmIHJlYWxtLCBQcm90ZWN0
aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZSk7CisKKyAgICAvLyBIYXNoIHRhYmxlIGRlbGV0
ZWQgdmFsdWVzLCB3aGljaCBhcmUgb25seSBjb25zdHJ1Y3RlZCBhbmQgbmV2ZXIgY29waWVkIG9y
IGRlc3Ryb3llZC4KKyAgICBQcm90ZWN0aW9uU3BhY2UoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlKSA6IG1faXNIYXNoVGFibGVEZWxldGVkVmFsdWUodHJ1ZSkgeyB9CisgICAgYm9vbCBp
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNIYXNoVGFibGVEZWxl
dGVkVmFsdWU7IH0KICAgICAKICAgICBjb25zdCBTdHJpbmcmIGhvc3QoKSBjb25zdDsKICAgICBp
bnQgcG9ydCgpIGNvbnN0OwpAQCAtNzAsMTAgKzc0LDEyIEBAIHByaXZhdGU6CiAgICAgUHJvdGVj
dGlvblNwYWNlU2VydmVyVHlwZSBtX3NlcnZlclR5cGU7CiAgICAgU3RyaW5nIG1fcmVhbG07CiAg
ICAgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWUgbV9hdXRoZW50aWNhdGlvblNj
aGVtZTsKKyAgICBib29sIG1faXNIYXNoVGFibGVEZWxldGVkVmFsdWU7CiB9OwogCiBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUHJvdGVjdGlvblNwYWNlJiBhLCBjb25zdCBQcm90ZWN0aW9uU3BhY2Um
IGIpOwogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGEsIGNv
bnN0IFByb3RlY3Rpb25TcGFjZSYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CiAgICAgCi19Ci0j
ZW5kaWYKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFByb3RlY3Rpb25TcGFj
ZV9oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlSGFzaC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VI
YXNoLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlv
blNwYWNlSGFzaC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUHJvdGVjdGlvblNwYWNl
SGFzaF9oCisjZGVmaW5lIFByb3RlY3Rpb25TcGFjZUhhc2hfaAorCisjaW5jbHVkZSAiUHJvdGVj
dGlvblNwYWNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFByb3RlY3Rpb25T
cGFjZUhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYgcHJvdGVjdGlvblNwYWNlKQorICAgIHsgCisgICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1s1
XSA9IHsKKyAgICAgICAgICAgIHByb3RlY3Rpb25TcGFjZS5ob3N0KCkuaW1wbCgpID8gcHJvdGVj
dGlvblNwYWNlLmhvc3QoKS5pbXBsKCktPmhhc2goKSA6IDAsIAorICAgICAgICAgICAgcHJvdGVj
dGlvblNwYWNlLnBvcnQoKSwgCisgICAgICAgICAgICBwcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHlw
ZSgpLAorICAgICAgICAgICAgcHJvdGVjdGlvblNwYWNlLnJlYWxtKCkuaW1wbCgpID8gcHJvdGVj
dGlvblNwYWNlLnJlYWxtKCkuaW1wbCgpLT5oYXNoKCkgOiAwLAorICAgICAgICAgICAgcHJvdGVj
dGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkKKyAgICAgICAgfTsKKworICAgICAgICBy
ZXR1cm4gU3RyaW5nSW1wbDo6Y29tcHV0ZUhhc2gocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGhh
c2hDb2RlcyksIHNpemVvZihoYXNoQ29kZXMpIC8gc2l6ZW9mKFVDaGFyKSk7ICAgIAorICAgIH0K
KyAgICAKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGEsIGNv
bnN0IFByb3RlY3Rpb25TcGFjZSYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNv
bnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKKyAgICAvLyBXZWJDb3Jl
OjpQcm90ZWN0aW9uU3BhY2VIYXNoIGlzIHRoZSBkZWZhdWx0IGhhc2ggZm9yIFByb3RlY3Rpb25T
cGFjZQorICAgIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6UHJvdGVjdGlv
blNwYWNlPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZT4gewor
ICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKKyAgICAg
ICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlByb3RlY3Rpb25T
cGFjZSYgc2xvdCkgeyBuZXcgKCZzbG90KSBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UoSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShj
b25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIHNsb3QpIHsgcmV0dXJuIHNsb3QuaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKTsgfQorICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g7CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
V2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlPiB7CisgICAgICAgIHR5cGVkZWYgV2ViQ29yZTo6UHJv
dGVjdGlvblNwYWNlSGFzaCBIYXNoOworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisK
KyNlbmRpZiAvLyBQcm90ZWN0aW9uU3BhY2VIYXNoX2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAJKHJldmlzaW9uIDQ4MzExKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw4ICszNyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0ZN
dXRhYmxlRGljdGlvbmFyeVJlZiBXZWJDb3JlQ3JlZGVudGlhbFN0b3JhZ2U6Om1fc3RvcmFnZTsK
LQogQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0
IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3Jl
ZGVudGlhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCwKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaAkocmV2aXNpb24gNDgzMTEpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MywyNiArNDMsNiBAQCBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjcmVhdGVDRihj
b25zdCBQCiBDcmVkZW50aWFsIGNvcmUoQ0ZVUkxDcmVkZW50aWFsUmVmKTsKIFByb3RlY3Rpb25T
cGFjZSBjb3JlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKTsKIAotY2xhc3MgV2ViQ29yZUNyZWRl
bnRpYWxTdG9yYWdlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBzZXQoQ0ZVUkxQcm90ZWN0
aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlLCBDRlVSTENyZWRlbnRpYWxSZWYgY3JlZGVudGlh
bCkKLSAgICB7Ci0gICAgICAgIGlmICghbV9zdG9yYWdlKQotICAgICAgICAgICAgbV9zdG9yYWdl
ID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NG
VHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJh
Y2tzKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUobV9zdG9yYWdlLCBwcm90ZWN0aW9u
U3BhY2UsIGNyZWRlbnRpYWwpOwotICAgIH0KLQotICAgIHN0YXRpYyBDRlVSTENyZWRlbnRpYWxS
ZWYgZ2V0KENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSkKLSAgICB7Ci0g
ICAgICAgIGlmICghbV9zdG9yYWdlKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJl
dHVybiAoQ0ZVUkxDcmVkZW50aWFsUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKG1fc3RvcmFnZSwg
cHJvdGVjdGlvblNwYWNlKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIENGTXV0YWJs
ZURpY3Rpb25hcnlSZWYgbV9zdG9yYWdlOwotfTsKLQogfQogCiAjZW5kaWYKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAJ
KHJldmlzaW9uIDQ4MzExKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmgiCiAjaW5jbHVkZSAiQ29va2llU3RvcmFnZVdpbi5oIgorI2luY2x1ZGUgIkNyZWRlbnRpYWxT
dG9yYWdlLmgiCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0zNzQsNiArMzc1LDIwIEBAIGJvb2wgUmVzb3VyY2VIYW5k
bGU6OnN0YXJ0KEZyYW1lKiBmcmFtZSkKICAgICAgICAgZC0+bV9yZXF1ZXN0LnNldFVSTCh1cmxX
aXRoQ3JlZGVudGlhbHMpOwogICAgIH0KIAorICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83MTc0MDUw
PiAtIEZvciBVUkxzIHRoYXQgbWF0Y2ggdGhlIHBhdGhzIG9mIHRob3NlIHByZXZpb3VzbHkgY2hh
bGxlbmdlZCBmb3IgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbiwgCisgICAgLy8gd2UgbmVlZCB0
byB0cnkgYW5kIHJldXNlIHRoZSBjcmVkZW50aWFsIHByZWVtcHRpdmVseSwgYXMgYWxsb3dlZCBi
eSBSRkMgMjYxNy4KKyAgICBDcmVkZW50aWFsIGluaXRpYWxDcmVkZW50aWFsOworICAgIGlmICgh
Y2xpZW50KCkgfHwgY2xpZW50KCktPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMpICYm
IGQtPm1fcmVxdWVzdC51cmwoKS5wcm90b2NvbEluSFRUUEZhbWlseSgpKQorICAgICAgICBpbml0
aWFsQ3JlZGVudGlhbCA9IENyZWRlbnRpYWxTdG9yYWdlOjpnZXREZWZhdWx0QXV0aGVudGljYXRp
b25DcmVkZW50aWFsKGQtPm1fcmVxdWVzdC51cmwoKSk7CisgICAgICAgIAorICAgIGlmICghaW5p
dGlhbENyZWRlbnRpYWwuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEFwcGx5IGJhc2ljIGF1dGgg
aGVhZGVyCisgICAgICAgIFN0cmluZyB1bmVuY29kZWQgPSBpbml0aWFsQ3JlZGVudGlhbC51c2Vy
KCkgKyAiOiIgKyBpbml0aWFsQ3JlZGVudGlhbC5wYXNzd29yZCgpOworICAgICAgICBDU3RyaW5n
IGVuY29kZWQgPSB1bmVuY29kZWQudXRmOCgpLmJhc2U2NEVuY29kZSgpOworICAgICAgICBTdHJp
bmcgYXV0aEhlYWRlciA9IFN0cmluZzo6Zm9ybWF0KCJCYXNpYyAlcyIsIGVuY29kZWQuZGF0YSgp
KTsKKyAgICAgICAgZC0+bV9yZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZCgiQXV0aG9yaXphdGlv
biIsIGF1dGhIZWFkZXIpOworICAgIH0KKwogICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+
IHJlcXVlc3QoQWRvcHRDRiwgbWFrZUZpbmFsUmVxdWVzdChkLT5tX3JlcXVlc3QsIGQtPm1fc2hv
dWxkQ29udGVudFNuaWZmKSk7CiAKICAgICBDRlVSTENvbm5lY3Rpb25DbGllbnRfVjMgY2xpZW50
ID0geyAzLCB0aGlzLCAwLCAwLCAwLCBXZWJDb3JlOjp3aWxsU2VuZFJlcXVlc3QsIGRpZFJlY2Vp
dmVSZXNwb25zZSwgZGlkUmVjZWl2ZURhdGEsIE5VTEwsIGRpZEZpbmlzaExvYWRpbmcsIGRpZEZh
aWwsIHdpbGxDYWNoZVJlc3BvbnNlLCBkaWRSZWNlaXZlQ2hhbGxlbmdlLCBkaWRTZW5kQm9keURh
dGEsIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2ssIDB9OwpAQCAtNDQxLDcgKzQ1
Niw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWMKICAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXNzKEFkb3B0Q0YsIGQtPm1fcGFzcy5jcmVhdGVDRlN0
cmluZygpKTsKICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlh
bChBZG9wdENGLAogICAgICAgICAgICAgQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHVzZXIuZ2V0KCksIHBhc3MuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJz
aXN0ZW5jZU5vbmUpKTsKLSAgICAgICAgV2ViQ29yZUNyZWRlbnRpYWxTdG9yYWdlOjpzZXQoQ0ZV
UkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFs
bGVuZ2VSZWYoKSksIGNyZWRlbnRpYWwuZ2V0KCkpOworICAgICAgICBDcmVkZW50aWFsU3RvcmFn
ZTo6c2V0KGNvcmUoY3JlZGVudGlhbC5nZXQoKSksIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uo
KSwgZC0+bV9yZXF1ZXN0LnVybCgpKTsKICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVu
dGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5j
ZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAgICAgIGQtPm1fdXNlciA9IFN0cmluZygpOwog
ICAgICAgICBkLT5tX3Bhc3MgPSBTdHJpbmcoKTsKQEAgLTQ1MCwxMCArNDY1LDExIEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWMKICAgICB9CiAKICAgICBpZiAoIWNo
YWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpICYmICghY2xpZW50KCkgfHwgY2xpZW50KCkt
PnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMpKSkgewotICAgICAgICBDRlVSTENyZWRl
bnRpYWxSZWYgY3JlZGVudGlhbCA9IFdlYkNvcmVDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KENGVVJM
QXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxl
bmdlUmVmKCkpKTsKLSAgICAgICAgaWYgKGNyZWRlbnRpYWwpIHsKLSAgICAgICAgICAgIEFTU0VS
VChDRlVSTENyZWRlbnRpYWxHZXRQZXJzaXN0ZW5jZShjcmVkZW50aWFsKSA9PSBrQ0ZVUkxDcmVk
ZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKLSAgICAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNy
ZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjcmVkZW50aWFsLCBjaGFsbGVuZ2UuY2ZV
UkxBdXRoQ2hhbGxlbmdlUmVmKCkpOworICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBD
cmVkZW50aWFsU3RvcmFnZTo6Z2V0KGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSk7CisgICAg
ICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChjcmVk
ZW50aWFsLnBlcnNpc3RlbmNlKCkgPT0gQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7CisgICAg
ICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwoQWRvcHRD
RiwgY3JlYXRlQ0YoY3JlZGVudGlhbCkpOworICAgICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNl
Q3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hh
bGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQ3OCw3ICs0OTQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpy
ZWNlaXZlZENyZWRlbnRpYWwoCiAgICAgICAgIC8vIHRvIGlnbm9yZSBpdCBmb3IgYSBwYXJ0aWN1
bGFyIHJlcXVlc3QgKHNob3J0IG9mIHJlbW92aW5nIGl0IGFsdG9nZXRoZXIpLgogICAgICAgICBD
cmVkZW50aWFsIHdlYkNyZWRlbnRpYWwoY3JlZGVudGlhbC51c2VyKCksIGNyZWRlbnRpYWwucGFz
c3dvcmQoKSwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7CiAgICAgICAgIFJldGFpblB0cjxD
RlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbChBZG9wdENGLCBjcmVhdGVDRih3ZWJDcmVk
ZW50aWFsKSk7Ci0gICAgICAgIFdlYkNvcmVDcmVkZW50aWFsU3RvcmFnZTo6c2V0KENGVVJMQXV0
aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdl
UmVmKCkpLCBjZkNyZWRlbnRpYWwuZ2V0KCkpOworICAgICAgICBDcmVkZW50aWFsU3RvcmFnZTo6
c2V0KHdlYkNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgZC0+bV9yZXF1
ZXN0LnVybCgpKTsKICAgICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nv
bm5lY3Rpb24uZ2V0KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlLmNmVVJMQXV0aENo
YWxsZW5nZVJlZigpKTsKICAgICB9IGVsc2UgewogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVk
ZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwoQWRvcHRDRiwgY3JlYXRlQ0YoY3JlZGVudGlhbCkpOwpA
QCAtNjU5LDE5ICs2NzUsMjAgQEAgdm9pZCBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6OmRpZFJl
Y2VpdgogICAgIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRlciogbG9hZGVyID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
OwogCiAgICAgaWYgKGxvYWRlci0+bV91c2VyICYmIGxvYWRlci0+bV9wYXNzKSB7Ci0gICAgICAg
IFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwoQWRvcHRDRiwKLSAgICAg
ICAgICAgIENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBsb2FkZXIt
Pm1fdXNlci5nZXQoKSwgbG9hZGVyLT5tX3Bhc3MuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQ
ZXJzaXN0ZW5jZU5vbmUpKTsKLSAgICAgICAgV2ViQ29yZUNyZWRlbnRpYWxTdG9yYWdlOjpzZXQo
Q0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNoYWxsZW5nZSksIGNyZWRlbnRp
YWwuZ2V0KCkpOwotICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGNvbm4sIGNy
ZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZSk7CisgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlh
bChsb2FkZXItPm1fdXNlci5nZXQoKSwgbG9hZGVyLT5tX3Bhc3MuZ2V0KCksIENyZWRlbnRpYWxQ
ZXJzaXN0ZW5jZU5vbmUpOworICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBj
ZkNyZWRlbnRpYWwoQWRvcHRDRiwgY3JlYXRlQ0YoY3JlZGVudGlhbCkpOworICAgICAgICBDcmVk
ZW50aWFsU3RvcmFnZTo6c2V0KGNyZWRlbnRpYWwsIGNvcmUoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0
UHJvdGVjdGlvblNwYWNlKGNoYWxsZW5nZSkpLCBsb2FkZXItPm1fdXJsLmdldCgpKTsKKyAgICAg
ICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChjb25uLCBjZkNyZWRlbnRpYWwuZ2V0KCks
IGNoYWxsZW5nZSk7CiAgICAgICAgIGxvYWRlci0+bV91c2VyID0gMDsKICAgICAgICAgbG9hZGVy
LT5tX3Bhc3MgPSAwOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICghQ0ZVUkxBdXRo
Q2hhbGxlbmdlR2V0UHJldmlvdXNGYWlsdXJlQ291bnQoY2hhbGxlbmdlKSAmJiBsb2FkZXItPm1f
YWxsb3dTdG9yZWRDcmVkZW50aWFscykgewotICAgICAgICBDRlVSTENyZWRlbnRpYWxSZWYgY3Jl
ZGVudGlhbCA9IFdlYkNvcmVDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KENGVVJMQXV0aENoYWxsZW5n
ZUdldFByb3RlY3Rpb25TcGFjZShjaGFsbGVuZ2UpKTsKLSAgICAgICAgaWYgKGNyZWRlbnRpYWwp
IHsKLSAgICAgICAgICAgIEFTU0VSVChDRlVSTENyZWRlbnRpYWxHZXRQZXJzaXN0ZW5jZShjcmVk
ZW50aWFsKSA9PSBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKLSAgICAgICAgICAg
IENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoY29ubiwgY3JlZGVudGlhbCwgY2hhbGxlbmdl
KTsKKyAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gQ3JlZGVudGlhbFN0b3JhZ2U6Omdl
dChjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjaGFsbGVuZ2UpKSk7
CisgICAgICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEFTU0VS
VChjcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkgPT0gQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7
CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwo
QWRvcHRDRiwgY3JlYXRlQ0YoY3JlZGVudGlhbCkpOworICAgICAgICAgICAgQ0ZVUkxDb25uZWN0
aW9uVXNlQ3JlZGVudGlhbChjb25uLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC03MDcsOCArNzI0LDI0IEBA
IFJldGFpblB0cjxDRkRhdGFSZWY+IFdlYkNvcmVTeW5jaHJvbm91c0wKICAgICAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3RXaXRob3V0Q3JlZGVudGlhbHMocmVxdWVzdCk7CiAgICAgICAgIHJl
cXVlc3RXaXRob3V0Q3JlZGVudGlhbHMucmVtb3ZlQ3JlZGVudGlhbHMoKTsKICAgICAgICAgY2ZS
ZXF1ZXN0LmFkb3B0Q0YobWFrZUZpbmFsUmVxdWVzdChyZXF1ZXN0V2l0aG91dENyZWRlbnRpYWxz
LCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxkQ29udGVudFNuaWZmVVJMKHJlcXVlc3RXaXRob3V0Q3Jl
ZGVudGlhbHMudXJsKCkpKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGNmUmVxdWVzdC5hZG9wdENG
KG1ha2VGaW5hbFJlcXVlc3QocmVxdWVzdCwgUmVzb3VyY2VIYW5kbGU6OnNob3VsZENvbnRlbnRT
bmlmZlVSTChyZXF1ZXN0LnVybCgpKSkpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIDxyZGFy
Oi8vcHJvYmxlbS83MTc0MDUwPiAtIEZvciBVUkxzIHRoYXQgbWF0Y2ggdGhlIHBhdGhzIG9mIHRo
b3NlIHByZXZpb3VzbHkgY2hhbGxlbmdlZCBmb3IgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbiwg
CisgICAgICAgIC8vIHdlIG5lZWQgdG8gdHJ5IGFuZCByZXVzZSB0aGUgY3JlZGVudGlhbCBwcmVl
bXB0aXZlbHksIGFzIGFsbG93ZWQgYnkgUkZDIDI2MTcuCisgICAgICAgIFJlc291cmNlUmVxdWVz
dCByZXF1ZXN0V2l0aEluaXRpYWxDcmVkZW50aWFsKHJlcXVlc3QpOworICAgICAgICBDcmVkZW50
aWFsIGluaXRpYWxDcmVkZW50aWFsOworICAgICAgICBpZiAobG9hZGVyLm1fYWxsb3dTdG9yZWRD
cmVkZW50aWFscyAmJiB1cmwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkKKyAgICAgICAgICAgIGlu
aXRpYWxDcmVkZW50aWFsID0gQ3JlZGVudGlhbFN0b3JhZ2U6OmdldERlZmF1bHRBdXRoZW50aWNh
dGlvbkNyZWRlbnRpYWwodXJsKTsKKworICAgICAgICBpZiAoIWluaXRpYWxDcmVkZW50aWFsLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgLy8gQXBwbHkgYmFzaWMgYXV0aCBoZWFkZXIKKyAgICAg
ICAgICAgIFN0cmluZyB1bmVuY29kZWQgPSBpbml0aWFsQ3JlZGVudGlhbC51c2VyKCkgKyAiOiIg
KyBpbml0aWFsQ3JlZGVudGlhbC5wYXNzd29yZCgpOworICAgICAgICAgICAgQ1N0cmluZyBlbmNv
ZGVkID0gdW5lbmNvZGVkLnV0ZjgoKS5iYXNlNjRFbmNvZGUoKTsKKyAgICAgICAgICAgIFN0cmlu
ZyBhdXRoSGVhZGVyID0gU3RyaW5nOjpmb3JtYXQoIkJhc2ljICVzIiwgZW5jb2RlZC5kYXRhKCkp
OworICAgICAgICAgICAgcmVxdWVzdFdpdGhJbml0aWFsQ3JlZGVudGlhbC5hZGRIVFRQSGVhZGVy
RmllbGQoIkF1dGhvcml6YXRpb24iLCBhdXRoSGVhZGVyKTsKKyAgICAgICAgfQorCisgICAgICAg
IGNmUmVxdWVzdC5hZG9wdENGKG1ha2VGaW5hbFJlcXVlc3QocmVxdWVzdFdpdGhJbml0aWFsQ3Jl
ZGVudGlhbCwgUmVzb3VyY2VIYW5kbGU6OnNob3VsZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0V2l0
aEluaXRpYWxDcmVkZW50aWFsLnVybCgpKSkpOworICAgIH0KIAogICAgIENGVVJMQ29ubmVjdGlv
bkNsaWVudF9WMyBjbGllbnQgPSB7IDMsICZsb2FkZXIsIDAsIDAsIDAsIHdpbGxTZW5kUmVxdWVz
dCwgZGlkUmVjZWl2ZVJlc3BvbnNlLCBkaWRSZWNlaXZlRGF0YSwgMCwgZGlkRmluaXNoTG9hZGlu
ZywgZGlkRmFpbCwgMCwgZGlkUmVjZWl2ZUNoYWxsZW5nZSwgMCwgc2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2UsIDAgfTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxDb25uZWN0aW9uUmVmPiBjb25uZWN0
aW9uKEFkb3B0Q0YsIENGVVJMQ29ubmVjdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBj
ZlJlcXVlc3QuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxDb25uZWN0aW9uQ2xpZW50Kj4o
JmNsaWVudCkpKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGlj
YXRpb25NYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1
dGhlbnRpY2F0aW9uTWFjLmgJKHJldmlzaW9uIDQ4MzExKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwyNCAr
NDUsNiBAQCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKE5TVVJMQXV0aGVuCiBQcm90ZWN0
aW9uU3BhY2UgY29yZShOU1VSTFByb3RlY3Rpb25TcGFjZSAqKTsKIENyZWRlbnRpYWwgY29yZShO
U1VSTENyZWRlbnRpYWwgKik7CiAKLWNsYXNzIFdlYkNvcmVDcmVkZW50aWFsU3RvcmFnZSB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgc2V0KE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCwg
TlNVUkxQcm90ZWN0aW9uU3BhY2UgKnByb3RlY3Rpb25TcGFjZSkKLSAgICB7Ci0gICAgICAgIGlm
ICghbV9zdG9yYWdlKQotICAgICAgICAgICAgbV9zdG9yYWdlID0gW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0XTsKLSAgICAgICAgW21fc3RvcmFnZSBzZXRPYmplY3Q6Y3JlZGVudGlh
bCBmb3JLZXk6cHJvdGVjdGlvblNwYWNlXTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgTlNVUkxDcmVk
ZW50aWFsICpnZXQoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKnByb3RlY3Rpb25TcGFjZSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxOU1VSTENyZWRlbnRpYWwgKj4oW21fc3RvcmFn
ZSBvYmplY3RGb3JLZXk6cHJvdGVjdGlvblNwYWNlXSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAg
IHN0YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5KiBtX3N0b3JhZ2U7Ci19OwotCiB9CiAjZW5kaWYK
IApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0
aW9uTWFjLm1tCShyZXZpc2lvbiA0ODMxMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvQXV0aGVudGljYXRpb25NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0KLU5TTXV0YWJsZURpY3Rpb25hcnkqIFdlYkNvcmVD
cmVkZW50aWFsU3RvcmFnZTo6bV9zdG9yYWdlOwotCiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9u
U3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQ3JlZGVudGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNv
dW50LApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
SGFuZGxlTWFjLm1tCShyZXZpc2lvbiA0ODMxMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDgg
QEAKICNpbXBvcnQgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW1wb3J0ICJBdXRoZW50
aWNhdGlvbk1hYy5oIgogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCisjaW1wb3J0ICJDcmVk
ZW50aWFsU3RvcmFnZS5oIgorI2ltcG9ydCAiQ1N0cmluZy5oIgogI2ltcG9ydCAiRG9jTG9hZGVy
LmgiCiAjaW1wb3J0ICJGb3JtRGF0YVN0cmVhbU1hYy5oIgogI2ltcG9ydCAiRnJhbWUuaCIKQEAg
LTE2Nyw2ICsxNjksMjAgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoRnJhbWUqIGZyYW1l
KQogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhkLT5tX3Bhc3MpOwogICAgICAg
ICBkLT5tX3JlcXVlc3Quc2V0VVJMKHVybFdpdGhDcmVkZW50aWFscyk7CiAgICAgfQorICAgIAor
ICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83MTc0MDUwPiAtIEZvciBVUkxzIHRoYXQgbWF0Y2ggdGhl
IHBhdGhzIG9mIHRob3NlIHByZXZpb3VzbHkgY2hhbGxlbmdlZCBmb3IgSFRUUCBCYXNpYyBhdXRo
ZW50aWNhdGlvbiwgCisgICAgLy8gd2UgbmVlZCB0byB0cnkgYW5kIHJldXNlIHRoZSBjcmVkZW50
aWFsIHByZWVtcHRpdmVseSwgYXMgYWxsb3dlZCBieSBSRkMgMjYxNy4KKyAgICBDcmVkZW50aWFs
IGluaXRpYWxDcmVkZW50aWFsOworICAgIGlmICghY2xpZW50KCkgfHwgY2xpZW50KCktPnNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMpICYmIGQtPm1fcmVxdWVzdC51cmwoKS5wcm90b2Nv
bEluSFRUUEZhbWlseSgpKQorICAgICAgICBpbml0aWFsQ3JlZGVudGlhbCA9IENyZWRlbnRpYWxT
dG9yYWdlOjpnZXREZWZhdWx0QXV0aGVudGljYXRpb25DcmVkZW50aWFsKGQtPm1fcmVxdWVzdC51
cmwoKSk7CisgICAgICAgIAorICAgIGlmICghaW5pdGlhbENyZWRlbnRpYWwuaXNFbXB0eSgpKSB7
CisgICAgICAgIC8vIEFwcGx5IGJhc2ljIGF1dGggaGVhZGVyCisgICAgICAgIFN0cmluZyB1bmVu
Y29kZWQgPSBpbml0aWFsQ3JlZGVudGlhbC51c2VyKCkgKyAiOiIgKyBpbml0aWFsQ3JlZGVudGlh
bC5wYXNzd29yZCgpOworICAgICAgICBDU3RyaW5nIGVuY29kZWQgPSB1bmVuY29kZWQudXRmOCgp
LmJhc2U2NEVuY29kZSgpOworICAgICAgICBTdHJpbmcgYXV0aEhlYWRlciA9IFN0cmluZzo6Zm9y
bWF0KCJCYXNpYyAlcyIsIGVuY29kZWQuZGF0YSgpKTsKKyAgICAgICAgZC0+bV9yZXF1ZXN0LmFk
ZEhUVFBIZWFkZXJGaWVsZCgiQXV0aG9yaXphdGlvbiIsIGF1dGhIZWFkZXIpOworICAgIH0KIAog
ICAgIGlmICghUmVzb3VyY2VIYW5kbGU6OmRpZFNlbmRCb2R5RGF0YURlbGVnYXRlRXhpc3RzKCkp
CiAgICAgICAgIGFzc29jaWF0ZVN0cmVhbVdpdGhSZXNvdXJjZUhhbmRsZShbZC0+bV9yZXF1ZXN0
Lm5zVVJMUmVxdWVzdCgpIEhUVFBCb2R5U3RyZWFtXSwgdGhpcyk7CkBAIC00NTgsOSArNDc0LDkg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpYwogICAgIH0KIAogICAg
IGlmICghY2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCkgJiYgKCFjbGllbnQoKSB8fCBj
bGllbnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UodGhpcykpKSB7Ci0gICAgICAgIE5T
VVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCA9IFdlYkNvcmVDcmVkZW50aWFsU3RvcmFnZTo6Z2V0
KFttYWMoY2hhbGxlbmdlKSBwcm90ZWN0aW9uU3BhY2VdKTsKLSAgICAgICAgaWYgKGNyZWRlbnRp
YWwpIHsKLSAgICAgICAgICAgIFtjaGFsbGVuZ2Uuc2VuZGVyKCkgdXNlQ3JlZGVudGlhbDpjcmVk
ZW50aWFsIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1hYyhjaGFsbGVuZ2UpXTsKKyAgICAg
ICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChjaGFsbGVu
Z2UucHJvdGVjdGlvblNwYWNlKCkpOworICAgICAgICBpZiAoIWNyZWRlbnRpYWwuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICBbY2hhbGxlbmdlLnNlbmRlcigpIHVzZUNyZWRlbnRpYWw6bWFjKGNy
ZWRlbnRpYWwpIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1hYyhjaGFsbGVuZ2UpXTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTQ5NSw3ICs1MTEsNyBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoCiAgICAgaWYgKGNyZWRlbnRp
YWwucGVyc2lzdGVuY2UoKSA9PSBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSB7CiAgICAgICAg
IC8vIE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSBkb2Vzbid0IHdvcmsgb24gVGlnZXIs
IHNvIHdlIGhhdmUgdG8gdXNlIHNlc3Npb24gcGVyc2lzdGVuY2UuCiAgICAgICAgIENyZWRlbnRp
YWwgd2ViQ3JlZGVudGlhbChjcmVkZW50aWFsLnVzZXIoKSwgY3JlZGVudGlhbC5wYXNzd29yZCgp
LCBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsKLSAgICAgICAgV2ViQ29yZUNyZWRl
bnRpYWxTdG9yYWdlOjpzZXQobWFjKHdlYkNyZWRlbnRpYWwpLCBbZC0+bV9jdXJyZW50TWFjQ2hh
bGxlbmdlIHByb3RlY3Rpb25TcGFjZV0pOworICAgICAgICBDcmVkZW50aWFsU3RvcmFnZTo6c2V0
KHdlYkNyZWRlbnRpYWwsIGNvcmUoW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBwcm90ZWN0aW9u
U3BhY2VdKSwgZC0+bV9yZXF1ZXN0LnVybCgpKTsKICAgICAgICAgW1tkLT5tX2N1cnJlbnRNYWND
aGFsbGVuZ2Ugc2VuZGVyXSB1c2VDcmVkZW50aWFsOm1hYyh3ZWJDcmVkZW50aWFsKSBmb3JBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTpkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2VdOwogICAgIH0gZWxz
ZQogI2Vsc2UKQEAgLTUwNCw3ICs1MjAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZl
ZENyZWRlbnRpYWwoCiAgICAgICAgIC8vIHRvIGlnbm9yZSBpdCBmb3IgYSBwYXJ0aWN1bGFyIHJl
cXVlc3QgKHNob3J0IG9mIHJlbW92aW5nIGl0IGFsdG9nZXRoZXIpLgogICAgICAgICAvLyA8cmRh
cjovL3Byb2JsZW0vNjg2NzU5OD4gZ2FsbGVyeS5tZS5jb20gaXMgdGVtcG9yYXJpbHkgd2hpdGVs
aXN0ZWQsIHNvIHRoYXQgUXVpY2tUaW1lIHBsdWctaW4gY291bGQgc2VlIHRoZSBjcmVkZW50aWFs
cy4KICAgICAgICAgQ3JlZGVudGlhbCB3ZWJDcmVkZW50aWFsKGNyZWRlbnRpYWwudXNlcigpLCBj
cmVkZW50aWFsLnBhc3N3b3JkKCksIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwotICAgICAg
ICBXZWJDb3JlQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChtYWMod2ViQ3JlZGVudGlhbCksIFtkLT5t
X2N1cnJlbnRNYWNDaGFsbGVuZ2UgcHJvdGVjdGlvblNwYWNlXSk7CisgICAgICAgIENyZWRlbnRp
YWxTdG9yYWdlOjpzZXQod2ViQ3JlZGVudGlhbCwgY29yZShbZC0+bV9jdXJyZW50TWFjQ2hhbGxl
bmdlIHByb3RlY3Rpb25TcGFjZV0pLCBkLT5tX3JlcXVlc3QudXJsKCkpOwogICAgICAgICBbW2Qt
Pm1fY3VycmVudE1hY0NoYWxsZW5nZSBzZW5kZXJdIHVzZUNyZWRlbnRpYWw6bWFjKHdlYkNyZWRl
bnRpYWwpIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmQtPm1fY3VycmVudE1hY0NoYWxsZW5n
ZV07CiAgICAgfSBlbHNlCiAjZW5kaWYKQEAgLTg5OCw3ICs5MTQsNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvCiAgICAgICAgIE5TVVJMQ3JlZGVudGlhbCAqY3Jl
ZGVudGlhbCA9IFtbTlNVUkxDcmVkZW50aWFsIGFsbG9jXSBpbml0V2l0aFVzZXI6bV91c2VyCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFzc3dvcmQ6bV9wYXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyc2lzdGVuY2U6TlNVUkxDcmVkZW50
aWFsUGVyc2lzdGVuY2VOb25lXTsKLSAgICAgICAgV2ViQ29yZUNyZWRlbnRpYWxTdG9yYWdlOjpz
ZXQoY3JlZGVudGlhbCwgW2NoYWxsZW5nZSBwcm90ZWN0aW9uU3BhY2VdKTsKKyAgICAgICAgQ3Jl
ZGVudGlhbFN0b3JhZ2U6OnNldChjb3JlKGNyZWRlbnRpYWwpLCBjb3JlKFtjaGFsbGVuZ2UgcHJv
dGVjdGlvblNwYWNlXSksIG1fdXJsKTsKICAgICAgICAgW1tjaGFsbGVuZ2Ugc2VuZGVyXSB1c2VD
cmVkZW50aWFsOmNyZWRlbnRpYWwgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y2hhbGxlbmdl
XTsKICAgICAgICAgW2NyZWRlbnRpYWwgcmVsZWFzZV07CiAgICAgICAgIFttX3VzZXIgcmVsZWFz
ZV07CkBAIC05MDgsMTAgKzkyNCwxMCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENh
bmNlbGxhdGlvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKFtjaGFsbGVuZ2UgcHJl
dmlvdXNGYWlsdXJlQ291bnRdID09IDAgJiYgbV9hbGxvd1N0b3JlZENyZWRlbnRpYWxzKSB7Ci0g
ICAgICAgIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCA9IFdlYkNvcmVDcmVkZW50aWFsU3Rv
cmFnZTo6Z2V0KFtjaGFsbGVuZ2UgcHJvdGVjdGlvblNwYWNlXSk7Ci0gICAgICAgIEFTU0VSVChb
Y3JlZGVudGlhbCBwZXJzaXN0ZW5jZV0gPT0gTlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25l
KTsKLSAgICAgICAgaWYgKGNyZWRlbnRpYWwpIHsKLSAgICAgICAgICAgIFtbY2hhbGxlbmdlIHNl
bmRlcl0gdXNlQ3JlZGVudGlhbDpjcmVkZW50aWFsIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OmNoYWxsZW5nZV07CisgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IENyZWRlbnRpYWxT
dG9yYWdlOjpnZXQoY29yZShbY2hhbGxlbmdlIHByb3RlY3Rpb25TcGFjZV0pKTsKKyAgICAgICAg
QVNTRVJUKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBDcmVkZW50aWFsUGVyc2lzdGVuY2VO
b25lKTsKKyAgICAgICAgaWYgKCFjcmVkZW50aWFsLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
W1tjaGFsbGVuZ2Ugc2VuZGVyXSB1c2VDcmVkZW50aWFsOm1hYyhjcmVkZW50aWFsKSBmb3JBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2VdOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQpAQCAtOTc1LDIyICs5OTEsMzkgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6
cmVjZWl2ZWRDYW5jZWxsYXRpbwogewogICAgIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRlciAqZGVs
ZWdhdGUgPSBbW1dlYkNvcmVTeW5jaHJvbm91c0xvYWRlciBhbGxvY10gaW5pdF07CiAKLSAgICBO
U1VSTCAqdXJsID0gW3JlcXVlc3QgVVJMXTsKLSAgICBkZWxlZ2F0ZS0+bV91c2VyID0gW1t1cmwg
dXNlcl0gY29weV07Ci0gICAgZGVsZWdhdGUtPm1fcGFzcyA9IFtbdXJsIHBhc3N3b3JkXSBjb3B5
XTsKKyAgICBLVVJMIHVybChbcmVxdWVzdCBVUkxdKTsKKyAgICBkZWxlZ2F0ZS0+bV91c2VyID0g
W25zU3RyaW5nTmlsSWZFbXB0eSh1cmwudXNlcigpKSByZXRhaW5dOworICAgIGRlbGVnYXRlLT5t
X3Bhc3MgPSBbbnNTdHJpbmdOaWxJZkVtcHR5KHVybC5wYXNzKCkpIHJldGFpbl07CiAgICAgZGVs
ZWdhdGUtPm1fYWxsb3dTdG9yZWRDcmVkZW50aWFscyA9IGFsbG93U3RvcmVkQ3JlZGVudGlhbHM7
CiAKICAgICBOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb247CiAKICAgICAvLyBUYWtlIHVzZXIv
cGFzcyBvdXQgb2YgdGhlIFVSTC4KICAgICAvLyBDcmVkZW50aWFscyBmb3IgZnRwIGNhbiBvbmx5
IGJlIHBhc3NlZCBpbiBVUkwsIHRoZSBjb25uZWN0aW9uOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTogZGVsZWdhdGUgY2FsbCB3b24ndCBiZSBtYWRlLgotICAgIGlmICgoZGVsZWdh
dGUtPm1fdXNlciB8fCBkZWxlZ2F0ZS0+bV9wYXNzKSAmJiBLVVJMKHVybCkucHJvdG9jb2xJbkhU
VFBGYW1pbHkoKSkgeworICAgIGlmICgoZGVsZWdhdGUtPm1fdXNlciB8fCBkZWxlZ2F0ZS0+bV9w
YXNzKSAmJiB1cmwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICBSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdFdpdGhvdXRDcmVkZW50aWFscyA9IHJlcXVlc3Q7CiAgICAgICAgIHJlcXVl
c3RXaXRob3V0Q3JlZGVudGlhbHMucmVtb3ZlQ3JlZGVudGlhbHMoKTsKICAgICAgICAgY29ubmVj
dGlvbiA9IFtbTlNVUkxDb25uZWN0aW9uIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6cmVxdWVzdFdp
dGhvdXRDcmVkZW50aWFscy5uc1VSTFJlcXVlc3QoKSBkZWxlZ2F0ZTpkZWxlZ2F0ZSBzdGFydElt
bWVkaWF0ZWx5Ok5PXTsKLSAgICB9IGVsc2UKKyAgICB9IGVsc2UgeworICAgICAgICAvLyA8cmRh
cjovL3Byb2JsZW0vNzE3NDA1MD4gLSBGb3IgVVJMcyB0aGF0IG1hdGNoIHRoZSBwYXRocyBvZiB0
aG9zZSBwcmV2aW91c2x5IGNoYWxsZW5nZWQgZm9yIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24s
IAorICAgICAgICAvLyB3ZSBuZWVkIHRvIHRyeSBhbmQgcmV1c2UgdGhlIGNyZWRlbnRpYWwgcHJl
ZW1wdGl2ZWx5LCBhcyBhbGxvd2VkIGJ5IFJGQyAyNjE3LgorICAgICAgICBSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdFdpdGhJbml0aWFsQ3JlZGVudGlhbHMgPSByZXF1ZXN0OworICAgICAgICBDcmVk
ZW50aWFsIGluaXRpYWxDcmVkZW50aWFsOworICAgICAgICBpZiAoYWxsb3dTdG9yZWRDcmVkZW50
aWFscyAmJiB1cmwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkKKyAgICAgICAgICAgIGluaXRpYWxD
cmVkZW50aWFsID0gQ3JlZGVudGlhbFN0b3JhZ2U6OmdldERlZmF1bHRBdXRoZW50aWNhdGlvbkNy
ZWRlbnRpYWwodXJsKTsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoIWluaXRpYWxDcmVkZW50
aWFsLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gQXBwbHkgYmFzaWMgYXV0aCBoZWFkZXIK
KyAgICAgICAgICAgIFN0cmluZyB1bmVuY29kZWQgPSBpbml0aWFsQ3JlZGVudGlhbC51c2VyKCkg
KyAiOiIgKyBpbml0aWFsQ3JlZGVudGlhbC5wYXNzd29yZCgpOworICAgICAgICAgICAgQ1N0cmlu
ZyBlbmNvZGVkID0gdW5lbmNvZGVkLnV0ZjgoKS5iYXNlNjRFbmNvZGUoKTsKKyAgICAgICAgICAg
IFN0cmluZyBhdXRoSGVhZGVyID0gU3RyaW5nOjpmb3JtYXQoIkJhc2ljICVzIiwgZW5jb2RlZC5k
YXRhKCkpOworICAgICAgICAgICAgcmVxdWVzdFdpdGhJbml0aWFsQ3JlZGVudGlhbHMuYWRkSFRU
UEhlYWRlckZpZWxkKCJBdXRob3JpemF0aW9uIiwgYXV0aEhlYWRlcik7CisgICAgICAgIH0KKyAg
ICAKICAgICAgICAgY29ubmVjdGlvbiA9IFtbTlNVUkxDb25uZWN0aW9uIGFsbG9jXSBpbml0V2l0
aFJlcXVlc3Q6cmVxdWVzdCBkZWxlZ2F0ZTpkZWxlZ2F0ZSBzdGFydEltbWVkaWF0ZWx5Ok5PXTsK
IAorICAgIH0KKyAgICAKICAgICBbY29ubmVjdGlvbiBzY2hlZHVsZUluUnVuTG9vcDpbTlNSdW5M
b29wIGN1cnJlbnRSdW5Mb29wXSBmb3JNb2RlOldlYkNvcmVTeW5jaHJvbm91c0xvYWRlclJ1bkxv
b3BNb2RlXTsKICAgICBbY29ubmVjdGlvbiBzdGFydF07CiAgICAgCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL3RleHQvQ1N0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0NTdHJpbmcuY3BwCShyZXZpc2lvbiA0ODMxMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4
dC9DU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcs
MTAgKzI3LDE5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgog
CisjaW5jbHVkZSAiQmFzZTY0LmgiCisKIHVzaW5nIHN0ZDo6bWluOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK1Bhc3NSZWZQdHI8Q1N0cmluZ0J1ZmZlcj4gQ1N0cmluZ0J1ZmZlcjo6YmFzZTY0
RW5jb2RlKCkKK3sKKyAgICBWZWN0b3I8Y2hhcj4gZW5jb2RlZDsKKyAgICBXZWJDb3JlOjpiYXNl
NjRFbmNvZGUobV92ZWN0b3IsIGVuY29kZWQpOworICAgIHJldHVybiBDU3RyaW5nQnVmZmVyOjpj
cmVhdGUoZW5jb2RlZCk7Cit9CisKIENTdHJpbmc6OkNTdHJpbmcoY29uc3QgY2hhciogc3RyKQog
ewogICAgIGluaXQoc3RyLCBzdHJsZW4oc3RyKSk7CkBAIC05MCw2ICs5OSwxMSBAQCB2b2lkIENT
dHJpbmc6OmNvcHlCdWZmZXJJZk5lZWRlZCgpCiAgICAgbWVtY3B5KG1fYnVmZmVyLT5tdXRhYmxl
RGF0YSgpLCBtX3RlbXAtPmRhdGEoKSwgbGVuKTsKIH0KIAorQ1N0cmluZyBDU3RyaW5nOjpiYXNl
NjRFbmNvZGUoKQoreworICAgIHJldHVybiBDU3RyaW5nKG1fYnVmZmVyLT5iYXNlNjRFbmNvZGUo
KS5nZXQoKSk7Cit9CisKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU3RyaW5nJiBhLCBjb25zdCBD
U3RyaW5nJiBiKQogewogICAgIGlmIChhLmlzTnVsbCgpICE9IGIuaXNOdWxsKCkpCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL3RleHQvQ1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vdGV4dC9DU3RyaW5nLmgJKHJldmlzaW9uIDQ4MzExKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0NTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDMsOSArNDMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmcmllbmQgY2xhc3Mg
Q1N0cmluZzsKIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU3RyaW5nQnVmZmVyPiBjcmVh
dGUodW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ1N0cmluZ0J1ZmZlcihs
ZW5ndGgpKTsgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU3RyaW5nQnVmZmVyPiBjcmVh
dGUoY29uc3QgVmVjdG9yPGNoYXI+JiB2ZWN0b3JUb0Fkb3B0KSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgQ1N0cmluZ0J1ZmZlcih2ZWN0b3JUb0Fkb3B0KSk7IH0KICAgICAgICAgQ1N0cmluZ0J1ZmZl
cih1bnNpZ25lZCBsZW5ndGgpIDogbV92ZWN0b3IobGVuZ3RoKSB7IH0KKyAgICAgICAgQ1N0cmlu
Z0J1ZmZlcihjb25zdCBWZWN0b3I8Y2hhcj4mIHZlY3RvclRvQWRvcHQpIDogbV92ZWN0b3IodmVj
dG9yVG9BZG9wdCkgeyB9CiAgICAgICAgIGNoYXIqIG11dGFibGVEYXRhKCkgeyByZXR1cm4gbV92
ZWN0b3IuZGF0YSgpOyB9CiAKKyAgICAgICAgUGFzc1JlZlB0cjxDU3RyaW5nQnVmZmVyPiBiYXNl
NjRFbmNvZGUoKTsKICAgICAgICAgVmVjdG9yPGNoYXI+IG1fdmVjdG9yOwogICAgIH07CiAKQEAg
LTU5LDYgKzYyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDU3RyaW5nKENTdHJp
bmdCdWZmZXIqIGJ1ZmZlcikgOiBtX2J1ZmZlcihidWZmZXIpIHsgfQogICAgICAgICBzdGF0aWMg
Q1N0cmluZyBuZXdVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgsIGNoYXIqJiBjaGFyYWN0ZXJC
dWZmZXIpOwogCisgICAgICAgIENTdHJpbmcgYmFzZTY0RW5jb2RlKCk7CisgICAgICAgIAogICAg
ICAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7CiAgICAgICAgIGNoYXIqIG11dGFibGVEYXRh
KCk7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwpJbmRleDogV2ViS2l0L21hYy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ4
MzEyKQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NyBAQAorMjAwOS0wOS0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2FmYXJpIDQgY2Fu
bm90IGJlIHVzZWQgdG8gdXBkYXRlIGZpcm13YXJlIG9uIExpbmtzeXMgcm91dGVycy4KKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzcxNzQwNTA+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjkxNjAKKworICAgICAgICBBZG9wdCB0aGUgbmV3IFdlYkNvcmU6OkNy
ZWRlbnRpYWxTdG9yYWdlIGluIFdlYktpdC9NYWMuCisKKyAgICAgICAgKiBNaXNjL1dlYkRvd25s
b2FkLm1tOgorICAgICAgICAoLVtXZWJEb3dubG9hZEludGVybmFsIGRvd25sb2FkOmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpdKToKKyAgICAgICAgKiBQbHVnaW5zL1dlYkJhc2VO
ZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgIChXZWJLaXQ6OmdldEF1dGhlbnRpY2F0aW9u
SW5mbyk6CisKIDIwMDktMDktMTAgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSdWJiZXItc3RhbXBlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViS2l0L21hYy9NaXNj
L1dlYkRvd25sb2FkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9h
ZC5tbQkocmV2aXNpb24gNDgzMTEpCisrKyBXZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDkgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTERv
d25sb2FkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uTWFjLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ3JlZGVudGlhbFN0b3Jh
Z2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV2ViUGFuZWxBdXRoZW50aWNhdGlvbkhhbmRsZXIuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRp
b25zLmg+CiAKQEAgLTExMSw3ICsxMTQsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHsK
ICAgICAvLyBUcnkgcHJldmlvdXNseSBzdG9yZWQgY3JlZGVudGlhbCBmaXJzdC4KICAgICBpZiAo
IVtjaGFsbGVuZ2UgcHJldmlvdXNGYWlsdXJlQ291bnRdKSB7Ci0gICAgICAgIE5TVVJMQ3JlZGVu
dGlhbCAqY3JlZGVudGlhbCA9IFdlYkNvcmVDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KFtjaGFsbGVu
Z2UgcHJvdGVjdGlvblNwYWNlXSk7CisgICAgICAgIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlh
bCA9IG1hYyhDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KGNvcmUoW2NoYWxsZW5nZSBwcm90ZWN0aW9u
U3BhY2VdKSkpOwogICAgICAgICBpZiAoY3JlZGVudGlhbCkgewogICAgICAgICAgICAgW1tjaGFs
bGVuZ2Ugc2VuZGVyXSB1c2VDcmVkZW50aWFsOmNyZWRlbnRpYWwgZm9yQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6Y2hhbGxlbmdlXTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYktpdC9t
YWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCShyZXZpc2lvbiA0
ODMxMSkKKysrIFdlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw4IEBACiAKICNpbXBvcnQgPFdlYkNvcmUvV2Vi
Q29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25NYWMuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgorI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50
aWFsU3RvcmFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DU3RyaW5nLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VsZW1lbnQuaD4KQEAgLTUwLDYgKzUy
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SFRNTFBsdWdJbkVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgorI2ltcG9ydCA8
V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyVmlldy5o
PgogI2ltcG9ydCA8V2ViS2l0L0RPTVByaXZhdGUuaD4KICNpbXBvcnQgPHJ1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5oPgpAQCAtODY4LDcgKzg3MSw3IEBAIGJvb2wgZ2V0QXV0aGVudGljYXRp
b25JbmZvKGNvbnN0IGNoYXIqIHAKICAgICAKICAgICBSZXRhaW5QdHI8TlNVUkxQcm90ZWN0aW9u
U3BhY2U+IHByb3RlY3Rpb25TcGFjZShBZG9wdE5TLCBbW05TVVJMUHJvdGVjdGlvblNwYWNlIGFs
bG9jXSBpbml0V2l0aEhvc3Q6aG9zdCBwb3J0OnBvcnQgcHJvdG9jb2w6cHJvdG9jb2wgcmVhbG06
cmVhbG0gYXV0aGVudGljYXRpb25NZXRob2Q6YXV0aGVudGljYXRpb25NZXRob2RdKTsKICAgICAK
LSAgICBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwgPSBXZWJDb3JlQ3JlZGVudGlhbFN0b3Jh
Z2U6OmdldChwcm90ZWN0aW9uU3BhY2UuZ2V0KCkpOworICAgIE5TVVJMQ3JlZGVudGlhbCAqY3Jl
ZGVudGlhbCA9IG1hYyhDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KGNvcmUocHJvdGVjdGlvblNwYWNl
LmdldCgpKSkpOwogICAgIGlmICghY3JlZGVudGlhbCkKICAgICAgICAgY3JlZGVudGlhbCA9IFtb
TlNVUkxDcmVkZW50aWFsU3RvcmFnZSBzaGFyZWRDcmVkZW50aWFsU3RvcmFnZV0gZGVmYXVsdENy
ZWRlbnRpYWxGb3JQcm90ZWN0aW9uU3BhY2U6cHJvdGVjdGlvblNwYWNlLmdldCgpXTsKICAgICBp
ZiAoIWNyZWRlbnRpYWwpCkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNDgzMTIpCisrKyBXZWJLaXQvd2luL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDA5LTA5LTExICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTYWZhcmkgNCBjYW5ub3QgYmUgdXNlZCB0byB1cGRhdGUg
ZmlybXdhcmUgb24gTGlua3N5cyByb3V0ZXJzLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE3
NDA1MD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTE2MAor
CisgICAgICAgIEFkb3B0IHRoZSBuZXcgV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2UgaW4gV2Vi
S2l0L1dpbi4KKworICAgICAgICAqIFdlYkRvd25sb2FkQ0ZOZXQuY3BwOgorICAgICAgICAoV2Vi
RG93bmxvYWQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisKIDIwMDktMDkt
MTEgIFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAkocmV2aXNp
b24gNDgzMTEpCisrKyBXZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAjcHJhZ21hIHdhcm5pbmcocHVzaCwgMCkKICNpbmNsdWRl
IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ0YuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NyZWRlbnRpYWxTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CkBAIC0zODEsOSArMzgyLDEw
IEBAIHZvaWQgV2ViRG93bmxvYWQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGkKIHsKICAgICAvLyBU
cnkgcHJldmlvdXNseSBzdG9yZWQgY3JlZGVudGlhbCBmaXJzdC4KICAgICBpZiAoIUNGVVJMQXV0
aENoYWxsZW5nZUdldFByZXZpb3VzRmFpbHVyZUNvdW50KGNoYWxsZW5nZSkpIHsKLSAgICAgICAg
Q0ZVUkxDcmVkZW50aWFsUmVmIGNyZWRlbnRpYWwgPSBXZWJDb3JlQ3JlZGVudGlhbFN0b3JhZ2U6
OmdldChDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2hhbGxlbmdlKSk7Ci0g
ICAgICAgIGlmIChjcmVkZW50aWFsKSB7Ci0gICAgICAgICAgICBDRlVSTERvd25sb2FkVXNlQ3Jl
ZGVudGlhbChtX2Rvd25sb2FkLmdldCgpLCBjcmVkZW50aWFsLCBjaGFsbGVuZ2UpOworICAgICAg
ICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KGNvcmUoQ0ZV
UkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNoYWxsZW5nZSkpKTsKKyAgICAgICAg
aWYgKCFjcmVkZW50aWFsLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgUmV0YWluUHRyPENGVVJM
Q3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsKEFkb3B0Q0YsIGNyZWF0ZUNGKGNyZWRlbnRpYWwp
KTsKKyAgICAgICAgICAgIENGVVJMRG93bmxvYWRVc2VDcmVkZW50aWFsKG1fZG93bmxvYWQuZ2V0
KCksIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ4MzEyKQorKysgV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMDktMDktMTEg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNhZmFyaSA0IGNhbm5vdCBiZSB1c2VkIHRvIHVw
ZGF0ZSBmaXJtd2FyZSBvbiBMaW5rc3lzIHJvdXRlcnMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS83MTc0MDUwPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5
MTYwCisKKyAgICAgICAgQWRkIHRoZSBhYmlsaXR5IGZvciBEUlQgdG8gaGFuZGxlIGF1dGhlbnRp
Y2F0aW9uIGNoYWxsZW5nZXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChzZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkQ2FsbGJh
Y2spOgorICAgICAgICAoc2V0QXV0aGVudGljYXRpb25Vc2VybmFtZUNhbGxiYWNrKToKKyAgICAg
ICAgKHNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXNDYWxsYmFjayk6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6aGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyk6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyk6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6YXV0aGVudGljYXRpb25Vc2VybmFtZSk6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0aGVudGljYXRpb25Vc2VybmFt
ZSk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6YXV0aGVudGljYXRpb25QYXNzd29y
ZCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0aGVudGljYXRpb25QYXNz
d29yZCk6CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdh
dGUubW06CisgICAgICAgICgtW1Jlc291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2U6
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmZyb21EYXRhU291cmNlOl0pOgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcDoKKyAg
ICAgICAgKFJlc291cmNlTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5oOgorCiAyMDA5LTA5LTExICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNDgzMTEp
CisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU3NCw2ICs1NzQsNDQgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0
QXBwQ2FjaGVNYXhpbXVtU2l6ZQogCiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldEF1dGhlbnRp
Y2F0aW9uUGFzc3dvcmRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7Cisg
ICAgLy8gSGFzIG1hYyAmIHdpbmRvd3MgaW1wbGVtZW50YXRpb24KKyAgICBpZiAoYXJndW1lbnRD
b3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
KworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwYXNzd29yZChBZG9wdCwgSlNWYWx1ZVRv
U3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VS
VCghKmV4Y2VwdGlvbik7CisKKyAgICBzaXplX3QgbWF4TGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhp
bXVtVVRGOENTdHJpbmdTaXplKHBhc3N3b3JkLmdldCgpKTsKKyAgICBjaGFyIHBhc3N3b3JkQnVm
ZmVyW21heExlbmd0aCArIDFdOworICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcocGFzc3dvcmQu
Z2V0KCksIHBhc3N3b3JkQnVmZmVyLCBtYXhMZW5ndGggKyAxKTsKKyAgICAKKyAgICBMYXlvdXRU
ZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9s
bGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5z
ZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkKHBhc3N3b3JkQnVmZmVyKTsKKworICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgc2V0
QXV0aGVudGljYXRpb25Vc2VybmFtZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKK3sKKyAgICAvLyBIYXMgbWFjICYgd2luZG93cyBpbXBsZW1lbnRhdGlvbgorICAgIGlmIChh
cmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHVzZXJuYW1lKEFkb3B0LCBK
U1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7Cisg
ICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKworICAgIHNpemVfdCBtYXhMZW5ndGggPSBKU1N0cmlu
Z0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUodXNlcm5hbWUuZ2V0KCkpOworICAgIGNoYXIgdXNl
cm5hbWVCdWZmZXJbbWF4TGVuZ3RoICsgMV07CisgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyh1
c2VybmFtZS5nZXQoKSwgdXNlcm5hbWVCdWZmZXIsIG1heExlbmd0aCArIDEpOworICAgIAorICAg
IExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVz
dENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRy
b2xsZXItPnNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUodXNlcm5hbWVCdWZmZXIpOworCisgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1
ZVJlZiBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKIHsKICAgICAvLyBIYXMgbWFjICYgd2luZG93cyBpbXBsZW1lbnRhdGlv
bgpAQCAtNjcyLDYgKzcxMCwxOCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRHZW9sb2NhdGlvblBl
cm1pc3NpCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitz
dGF0aWMgSlNWYWx1ZVJlZiBzZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzQ2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIC8vIEhhcyBtYWMgJiB3aW5k
b3dzIGltcGxlbWVudGF0aW9uCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29u
dHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4o
SlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRIYW5k
bGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJn
dW1lbnRzWzBdKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldEljb25EYXRhYmFzZUVuYWJsZWRDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3Mg
aW1wbGVtZW50YXRpb24KQEAgLTExMDMsMjAgKzExNTMsMjMgQEAgSlNTdGF0aWNGdW5jdGlvbiog
TGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJyZXBhaW50U3dlZXBIb3Jpem9udGFs
bHkiLCByZXBhaW50U3dlZXBIb3Jpem9udGFsbHlDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJzZXRBY2NlcHRzRWRpdGluZyIsIHNldEFjY2VwdHNFZGl0aW5nQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAic2V0QWx3YXlzQWNjZXB0Q29va2llcyIsIHNldEFsd2F5c0FjY2VwdENvb2tp
ZXNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAotICAgICAgICB7ICJzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5h
YmxlZCIsIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAic2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSIsIHNldEFwcENhY2hlTWF4aW11bVNpemVD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LCAKKyAgICAgICAgeyAic2V0QXV0aGVudGljYXRpb25QYXNzd29yZCIs
IHNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJz
ZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lIiwgc2V0QXV0aGVudGljYXRpb25Vc2VybmFtZUNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCisgICAgICAgIHsgInNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkIiwg
c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJzZXRDYWxsQ2xvc2VPbldlYlZpZXdzIiwgc2V0Q2FsbENsb3NlT25XZWJWaWV3c0NhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgInNldENhbk9wZW5XaW5kb3dzIiwgc2V0Q2FuT3BlbldpbmRv
d3NDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRDYWNoZU1vZGVsIiwgc2V0Q2FjaGVN
b2RlbENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldENsb3NlUmVtYWluaW5nV2luZG93
c1doZW5Db21wbGV0ZSIsIHNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZUNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEN1c3RvbVBvbGljeURlbGVnYXRlIiwgc2V0Q3Vz
dG9tUG9saWN5RGVsZWdhdGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXREYXRhYmFz
ZVF1b3RhIiwgc2V0RGF0YWJhc2VRdW90YUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sIAotICAgICAgICB7ICJz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKLSAgICAgICAgeyAic2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IiLCBzZXRN
b2NrR2VvbG9jYXRpb25FcnJvckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEdlb2xv
Y2F0aW9uUGVybWlzc2lvbiIsIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCisgICAgICAgIHsgInNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMiLCBzZXRI
YW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic2V0SWNvbkRhdGFiYXNlRW5hYmxlZCIsIHNldEljb25EYXRhYmFzZUVuYWJsZWRDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZCIsIHNl
dEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
c2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRlciIsIHNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25k
ZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
biIsIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAg
eyAic2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IiLCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvckNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0
aW9uIiwgc2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb25DYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJzZXRQb3B1cEJsb2NraW5nRW5hYmxlZCIsIHNldFBvcHVwQmxvY2tpbmdF
bmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCIsIHNldFByaXZhdGVCcm93c2luZ0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDog
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CShyZXZpc2lvbiA0ODMxMSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsMTUgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBhbHdheXNBY2NlcHRDb29raWVzKCkgY29uc3QgeyByZXR1cm4gbV9hbHdh
eXNBY2NlcHRDb29raWVzOyB9CiAgICAgdm9pZCBzZXRBbHdheXNBY2NlcHRDb29raWVzKGJvb2wg
YWx3YXlzQWNjZXB0Q29va2llcyk7CisgICAgCisgICAgYm9vbCBoYW5kbGVzQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGVzQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VzOyB9CisgICAgdm9pZCBzZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKGJv
b2wgaGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcykgeyBtX2hhbmRsZXNBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZXMgPSBoYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzOyB9CisgICAg
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGF1dGhlbnRpY2F0aW9uVXNlcm5hbWUoKSBjb25zdCB7
IHJldHVybiBtX2F1dGhlbnRpY2F0aW9uVXNlcm5hbWU7IH0KKyAgICB2b2lkIHNldEF1dGhlbnRp
Y2F0aW9uVXNlcm5hbWUoc3RkOjpzdHJpbmcgdXNlcm5hbWUpIHsgbV9hdXRoZW50aWNhdGlvblVz
ZXJuYW1lID0gdXNlcm5hbWU7IH0KKyAgICAKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgYXV0aGVu
dGljYXRpb25QYXNzd29yZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0aGVudGljYXRpb25QYXNzd29y
ZDsgfQorICAgIHZvaWQgc2V0QXV0aGVudGljYXRpb25QYXNzd29yZChzdGQ6OnN0cmluZyBwYXNz
d29yZCkgeyBtX2F1dGhlbnRpY2F0aW9uUGFzc3dvcmQgPSBwYXNzd29yZDsgfQogCiAgICAgYm9v
bCBnbG9iYWxGbGFnKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxGbGFnOyB9CiAgICAgdm9pZCBz
ZXRHbG9iYWxGbGFnKGJvb2wgZ2xvYmFsRmxhZykgeyBtX2dsb2JhbEZsYWcgPSBnbG9iYWxGbGFn
OyB9CkBAIC0yMjUsNyArMjM0LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2dsb2JhbEZsYWc7
CiAgICAgYm9vbCBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0OwogICAgIGJvb2wgbV9nZW9s
b2NhdGlvblBlcm1pc3Npb247CisgICAgYm9vbCBtX2hhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZXM7CiAKKyAgICBzdGQ6OnN0cmluZyBtX2F1dGhlbnRpY2F0aW9uVXNlcm5hbWU7CisgICAg
c3RkOjpzdHJpbmcgbV9hdXRoZW50aWNhdGlvblBhc3N3b3JkOyAKICAgICBzdGQ6OnN0cmluZyBt
X3Rlc3RQYXRoT3JVUkw7CiAgICAgc3RkOjpzdHJpbmcgbV9leHBlY3RlZFBpeGVsSGFzaDsgICAg
Ly8gZW1wdHkgc3RyaW5nIGlmIG5vIGhhc2gKICAgICAKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0JKHJldmlz
aW9uIDQ4MzExKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9h
ZERlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDIwIEBACiAKIC0gKHZv
aWQpd2ViVmlldzooV2ViVmlldyAqKXd2IHJlc291cmNlOihpZClpZGVudGlmaWVyIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
KWNoYWxsZW5nZSBmcm9tRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKIHsK
KyAgICBpZiAoIWdMYXlvdXRUZXN0Q29udHJvbGxlci0+aGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlcygpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgY29uc3QgY2hhciogdXNlciA9
IGdMYXlvdXRUZXN0Q29udHJvbGxlci0+YXV0aGVudGljYXRpb25Vc2VybmFtZSgpLmNfc3RyKCk7
CisgICAgTlNTdHJpbmcgKm5zVXNlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXMi
LCB1c2VyID8gdXNlciA6ICIiXTsKKworICAgIGNvbnN0IGNoYXIqIHBhc3N3b3JkID0gZ0xheW91
dFRlc3RDb250cm9sbGVyLT5hdXRoZW50aWNhdGlvblBhc3N3b3JkKCkuY19zdHIoKTsKKyAgICBO
U1N0cmluZyAqbnNQYXNzd29yZCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXMiLCBw
YXNzd29yZCA/IHBhc3N3b3JkIDogIiJdOworCisgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgLSBSZXNwb25kaW5nIHdpdGggJUA6JUAiLCBpZGVudGlmaWVyLCBuc1VzZXIsIG5zUGFz
c3dvcmRdOworICAgIHByaW50ZigiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOworICAgIAor
ICAgIFtbY2hhbGxlbmdlIHNlbmRlcl0gdXNlQ3JlZGVudGlhbDpbTlNVUkxDcmVkZW50aWFsIGNy
ZWRlbnRpYWxXaXRoVXNlcjpuc1VzZXIgcGFzc3dvcmQ6bnNQYXNzd29yZCBwZXJzaXN0ZW5jZTpO
U1VSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb25dCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2VdOwogfQogCiAt
ICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3diByZXNvdXJjZTooaWQpaWRlbnRpZmllciBkaWRD
YW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAqKWNoYWxsZW5nZSBmcm9tRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UK
SW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291
cmNlTG9hZERlbGVnYXRlLmNwcAkocmV2aXNpb24gNDgzMTEpCisrKyBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSwxMCArMzEsMTMgQEAKIAogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlLmgiCiAjaW5jbHVk
ZSAiTGF5b3V0VGVzdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxjb211dGlsLmg+CisjaW5jbHVk
ZSA8V2ViS2l0L1dlYktpdENPTUFQSS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHNzdHJlYW0+CiAKKwogdXNpbmcgc3RkOjp3
c3RyaW5nOwogdXNpbmcgc3RkOjp3aW9zdHJlYW07CiAKQEAgLTI1MSw2ICsyNTQsMzMgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBSZXNvdXJjZUxvYWREZQogICAgIHJldHVybiBTX09LOwog
fQogCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFJlc291cmNlTG9hZERlbGVnYXRlOjpkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoIAorICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcg
KndlYlZpZXcsCisgICAgLyogW2luXSAqLyB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsCisgICAg
LyogW2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwKKyAg
ICAvKiBbaW5dICovIElXZWJEYXRhU291cmNlICpkYXRhU291cmNlKQoreworICAgIGlmICghZ0xh
eW91dFRlc3RDb250cm9sbGVyLT5oYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBjb25zdCBjaGFyKiB1c2VyID0gZ0xheW91dFRlc3RD
b250cm9sbGVyLT5hdXRoZW50aWNhdGlvblVzZXJuYW1lKCkuY19zdHIoKTsKKyAgICBjb25zdCBj
aGFyKiBwYXNzd29yZCA9IGdMYXlvdXRUZXN0Q29udHJvbGxlci0+YXV0aGVudGljYXRpb25QYXNz
d29yZCgpLmNfc3RyKCk7CisKKyAgICBwcmludGYoIiVzIC0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlIC0gUmVzcG9uZGluZyB3aXRoICVzOiVzXG4iLCBkZXNjcmlwdGlvblN1aXRh
YmxlRm9yVGVzdFJlc3VsdChpZGVudGlmaWVyKS5jX3N0cigpLCB1c2VyLCBwYXNzd29yZCk7Cisg
ICAgCisgICAgQ09NUHRyPElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcj4gc2Vu
ZGVyOworICAgIGlmICghY2hhbGxlbmdlIHx8IEZBSUxFRChjaGFsbGVuZ2UtPlF1ZXJ5SW50ZXJm
YWNlKCZzZW5kZXIpKSkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICAgICAgCisgICAgQ09N
UHRyPElXZWJVUkxDcmVkZW50aWFsPiBjcmVkZW50aWFsOworICAgIGlmIChGQUlMRUQoV2ViS2l0
Q3JlYXRlSW5zdGFuY2UoQ0xTSURfV2ViVVJMQ3JlZGVudGlhbCwgMCwgSUlEX0lXZWJVUkxDcmVk
ZW50aWFsLCAodm9pZCoqKSZjcmVkZW50aWFsKSkpCisgICAgICAgIHJldHVybiBFX0ZBSUw7Cisg
ICAgY3JlZGVudGlhbC0+aW5pdFdpdGhVc2VyKF9ic3RyX3QodXNlciksIF9ic3RyX3QocGFzc3dv
cmQpLCBXZWJVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsKKworICAgIHNlbmRl
ci0+dXNlQ3JlZGVudGlhbChjcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UpOworICAgIHJldHVy
biBTX09LOworfQorCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFJlc291cmNlTG9hZERlbGVn
YXRlOjpkaWRSZWNlaXZlUmVzcG9uc2UoCiAgICAgLyogW2luXSAqLyBJV2ViVmlldyogd2ViVmll
dywgCiAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIApJbmRleDogV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVn
YXRlLmgJKHJldmlzaW9uIDQ4MzExKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L1Jlc291cmNlTG9hZERlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAg
cHVibGljOgogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAogICAgICAgICAv
KiBbaW5dICovIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwKICAgICAgICAgLyogW2luXSAqLyBJ
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwKLSAgICAgICAgLyogW2lu
XSAqLyBJV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9Cisg
ICAgICAgIC8qIFtpbl0gKi8gSVdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UpOwogICAgICAgICAK
ICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkQ2FuY2VsQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoIAogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LApJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gNDgzMTIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAwOS0wOS0xMSAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2FmYXJpIDQgY2Fubm90IGJlIHVzZWQgdG8gdXBkYXRlIGZpcm13YXJlIG9uIExp
bmtzeXMgcm91dGVycy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxNzQwNTA+IGFuZCBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkxNjAKKworICAgICAgICAqIGh0
dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1jcmVkZW50aWFscy1zZW50LWF1dG9tYXRpY2FsbHktZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtY3Jl
ZGVudGlhbHMtc2VudC1hdXRvbWF0aWNhbGx5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvbG9hZGluZy9yZXNvdXJjZXMvb3RoZXJzdWJyZXNvdXJjZXM6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZXMvb3RoZXJzdWJyZXNvdXJjZXMvcHJvdGVj
dGVkLXJlc291cmNlLnBocDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL3Jl
c291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2xvYWRpbmcvcmVzb3VyY2VzL3N1YnJlc291cmNlczogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlcy9zdWJyZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNl
LnBocDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICog
cGxhdGZvcm0vcXQvU2tpcHBlZDoKKwogMjAwOS0wOS0xMSAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxj
YW1AbWNjLmlkLmF1PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWNyZWRlbnRpYWxzLXNlbnQtYXV0
b21hdGljYWxseS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9sb2FkaW5nL2Jhc2ljLWNyZWRlbnRpYWxzLXNlbnQtYXV0b21hdGljYWxseS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFz
aWMtY3JlZGVudGlhbHMtc2VudC1hdXRvbWF0aWNhbGx5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NyBAQAorbWFpbiBmcmFtZSAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0t
ZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lCittYWluIGZyYW1lIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKKzx1bmtu
b3duPiAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFJlc3BvbmRpbmcgd2l0
aCBmaXJzdDpmaXJzdC1wdworZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+
IiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJh
bWUwLS0+LS0+IiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0g
ZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEt
LWZyYW1lMS0tPi0tPiIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCitmcmFtZSAi
PCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRz
Rm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRG
aW5pc2hMb2FkRm9yRnJhbWUKKzx1bmtub3duPiAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAtIFJlc3BvbmRpbmcgd2l0aCBzZWNvbmQ6c2Vjb25kLXB3CitmcmFtZSAiPCEtLWZy
YW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCitmcmFt
ZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMi0tPi0tPiIgLSBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwh
LS1mcmFtZTEtLT4tLT4iIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKK2ZyYW1lICI8
IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUK
K2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMi0tPi0tPiIgLSBkaWRDb21taXRMb2Fk
Rm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMi0tPi0tPiIgLSBkaWRG
aW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJh
bWUzLS0+LS0+IiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0t
ZnJhbWVQYXRoIC8vPCEtLWZyYW1lMi0tPi0tPiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JG
cmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUyLS0+LS0+IiAtIGRpZEZpbmlz
aExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUzLS0+LS0+IiAt
IGRpZENvbW1pdExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUz
LS0+LS0+IiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1l
UGF0aCAvLzwhLS1mcmFtZTMtLT4tLT4iIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUK
K2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMy0tPi0tPiIgLSBkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKK1RoaXMgdGVzdCBt
YWtlcyBzdXJlIHRoYXQgb25jZSBhbiBIVFRQIEJhc2ljIEF1dGguIHByb3RlY3RlZCBwYXRoIGlz
IGF1dGhlbnRpY2F0ZWQgb25jZSwgdXJscyB0aGF0IGVtYW5hdGUgZnJvbSB0aGF0IHBhdGggYXV0
b21hdGljYWxseSBoYXZlIHRoZWlyIGNyZWRlbnRpYWxzIHNlbnQgd2l0aG91dCBhIGNoYWxsZW5n
ZS4KK1RoZSBmaXJzdCBmcmFtZSdzIHBhdGggaXMgL2xvYWRpbmcvcmVzb3VyY2VzL3N1YnJlc291
cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwLCBhbmQgd2Ugc2hvdWxkIGdldCBhIGNoYWxsZW5n
ZSBmb3IgaXQuCitJdCB3aWxsIGJlIGF1dGhvcml6ZWQgd2l0aCBmaXJzdC9maXJzdC1wdy4KK1Ro
ZSBzZWNvbmQgZnJhbWUncyBwYXRoIGlzIC9sb2FkaW5nL3Jlc291cmNlcy9wcm90ZWN0ZWQtcmVz
b3VyY2UucGhwLCBhbmQgd2Ugc2hvdWxkIGdldCBhIGNoYWxsZW5nZSBmb3IgaXQsIGJlY2F1c2Ug
aXQgZG9lcyBub3Qgc2hhcmUgYSBjb21tb24gc3VicGF0aCBvZiB0aGUgcHJldmlvdXNseSBhdXRo
b3JpemVkIHJlc291cmNlLgorSXQgd2lsbCBiZSBhdXRob3JpemVkIHdpdGggc2Vjb25kL3NlY29u
ZC1wdy4KK1RoZSB0aGlyZCBmcmFtZSdzIHBhdGggaXMgYWxzbyAvbG9hZGluZy9yZXNvdXJjZXMv
cHJvdGVjdGVkLXJlc291cmNlLnBocCwgYW5kIHdlIHNob3VsZCAqbm90KiBnZXQgYSBjaGFsbGVu
Z2UgZm9yIGl0IGJlY2F1c2Ugd2UgYXV0aG9yaXplZCB0byB0aGlzIHBhdGggZm9yIHRoZSBzZWNv
bmQgZnJhbWUuCitJdCB3aWxsIGJlIGF1dGhvcml6ZWQgd2l0aCBzZWNvbmQvc2Vjb25kLXB3Lgor
VGhlIGZvdXJ0aCBmcmFtZSdzIHBhdGggaXMgL2xvYWRpbmcvcmVzb3VyY2VzL290aGVyc3VicmVz
b3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAsIGFuZCB3ZSBzaG91bGQgKm5vdCogZ2V0IGEg
Y2hhbGxlbmdlIGZvciBpdCwgYmVjYXVzZSBpdCBoYXMgYSBjb21tb24gc3VicGF0aCB3aXRoIHRo
ZSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgc2Vjb25kIGFuZCB0aGlyZCBmcmFtZXMuCitJdCB3aWxs
IGJlIGF1dGhvcml6ZWQgd2l0aCBzZWNvbmQvc2Vjb25kLXB3LgorICAKKworLS0tLS0tLS0KK0Zy
YW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorQXV0aGVu
dGljYXRlZCBhcyB1c2VyOiBmaXJzdCBwYXNzd29yZDogZmlyc3QKKworLS0tLS0tLS0KK0ZyYW1l
OiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4nCistLS0tLS0tLQorQXV0aGVudGlj
YXRlZCBhcyB1c2VyOiBzZWNvbmQgcGFzc3dvcmQ6IHNlY29uZAorCistLS0tLS0tLQorRnJhbWU6
ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMi0tPi0tPicKKy0tLS0tLS0tCitBdXRoZW50aWNh
dGVkIGFzIHVzZXI6IHNlY29uZCBwYXNzd29yZDogc2Vjb25kCisKKy0tLS0tLS0tCitGcmFtZTog
JzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUzLS0+LS0+JworLS0tLS0tLS0KK0F1dGhlbnRpY2F0
ZWQgYXMgdXNlcjogc2Vjb25kIHBhc3N3b3JkOiBzZWNvbmQKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1jcmVkZW50aWFscy1zZW50LWF1dG9tYXRpY2FsbHkuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtY3Jl
ZGVudGlhbHMtc2VudC1hdXRvbWF0aWNhbGx5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtY3JlZGVudGlhbHMtc2VudC1hdXRvbWF0aWNh
bGx5Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
Q2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRIYW5kbGVz
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKHRydWUpOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUoImZpcnN0Iik7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0QXV0aGVudGljYXRpb25QYXNzd29yZCgiZmlyc3QtcHciKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGZpcnN0RnJhbWVM
b2FkZWQoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXV0aGVudGljYXRpb25Vc2VybmFtZSgic2Vjb25k
Iik7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEF1dGhlbnRpY2F0aW9uUGFzc3dv
cmQoInNlY29uZC1wdyIpOworICAgIH0KKyAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJpZnJhbWUiKTsKKyAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoInNyYyIsICJodHRwOi8v
MTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocCIp
OworICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgib25sb2FkIiwgInNlY29uZEZyYW1lTG9hZGVkKCki
KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKK30KKworZnVuY3Rpb24g
c2Vjb25kRnJhbWVMb2FkZWQoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXV0aGVudGljYXRpb25Vc2Vy
bmFtZSgidGhpcmQiKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXV0aGVudGlj
YXRpb25QYXNzd29yZCgidGhpcmQtcHciKTsKKyAgICB9CisgICAgdmFyIGZyYW1lID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgZnJhbWUuc2V0QXR0cmlidXRlKCJzcmMi
LCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNv
dXJjZS5waHAiKTsKKyAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoIm9ubG9hZCIsICJ0aGlyZEZyYW1l
TG9hZGVkKCkiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKK30KKwor
ZnVuY3Rpb24gdGhpcmRGcmFtZUxvYWRlZCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRoZW50aWNh
dGlvblVzZXJuYW1lKCJmb3VydGgiKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0
QXV0aGVudGljYXRpb25QYXNzd29yZCgiZm91cnRoLXB3Iik7CisgICAgfQorICAgIHZhciBmcmFt
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGZyYW1lLnNldEF0dHJp
YnV0ZSgic3JjIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9vdGhl
cnN1YnJlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwIik7CisgICAgZnJhbWUuc2V0QXR0
cmlidXRlKCJvbmxvYWQiLCAiZm91cnRoRnJhbWVMb2FkZWQoKSIpOworICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOworfQorCitmdW5jdGlvbiBmb3VydGhGcmFtZUxvYWRlZCgp
Cit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBvbmNlIGFuIEhUVFAgQmFzaWMgQXV0aC4g
cHJvdGVjdGVkIHBhdGggaXMgYXV0aGVudGljYXRlZCBvbmNlLCB1cmxzIHRoYXQgZW1hbmF0ZSBm
cm9tIHRoYXQgcGF0aCBhdXRvbWF0aWNhbGx5IGhhdmUgdGhlaXIgY3JlZGVudGlhbHMgc2VudCB3
aXRob3V0IGEgY2hhbGxlbmdlLjxicj4KK1RoZSBmaXJzdCBmcmFtZSdzIHBhdGggaXMgL2xvYWRp
bmcvcmVzb3VyY2VzL3N1YnJlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwLCBhbmQgd2Ug
c2hvdWxkIGdldCBhIGNoYWxsZW5nZSBmb3IgaXQuPGJyPgorSXQgd2lsbCBiZSBhdXRob3JpemVk
IHdpdGggZmlyc3QvZmlyc3QtcHcuPGJyPgorVGhlIHNlY29uZCBmcmFtZSdzIHBhdGggaXMgL2xv
YWRpbmcvcmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAsIGFuZCB3ZSBzaG91bGQgZ2V0
IGEgY2hhbGxlbmdlIGZvciBpdCwgYmVjYXVzZSBpdCBkb2VzIG5vdCBzaGFyZSBhIGNvbW1vbiBz
dWJwYXRoIG9mIHRoZSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgcmVzb3VyY2UuPGJyPgorSXQgd2ls
bCBiZSBhdXRob3JpemVkIHdpdGggc2Vjb25kL3NlY29uZC1wdy48YnI+CitUaGUgdGhpcmQgZnJh
bWUncyBwYXRoIGlzIGFsc28gL2xvYWRpbmcvcmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5w
aHAsIGFuZCB3ZSBzaG91bGQgKm5vdCogZ2V0IGEgY2hhbGxlbmdlIGZvciBpdCBiZWNhdXNlIHdl
IGF1dGhvcml6ZWQgdG8gdGhpcyBwYXRoIGZvciB0aGUgc2Vjb25kIGZyYW1lLjxicj4KK0l0IHdp
bGwgYmUgYXV0aG9yaXplZCB3aXRoIHNlY29uZC9zZWNvbmQtcHcuPGJyPgorVGhlIGZvdXJ0aCBm
cmFtZSdzIHBhdGggaXMgL2xvYWRpbmcvcmVzb3VyY2VzL290aGVyc3VicmVzb3VyY2VzL3Byb3Rl
Y3RlZC1yZXNvdXJjZS5waHAsIGFuZCB3ZSBzaG91bGQgKm5vdCogZ2V0IGEgY2hhbGxlbmdlIGZv
ciBpdCwgYmVjYXVzZSBpdCBoYXMgYSBjb21tb24gc3VicGF0aCB3aXRoIHRoZSBwcmV2aW91c2x5
IGF1dGhvcml6ZWQgc2Vjb25kIGFuZCB0aGlyZCBmcmFtZXMuPGJyPgorSXQgd2lsbCBiZSBhdXRo
b3JpemVkIHdpdGggc2Vjb25kL3NlY29uZC1wdy48YnI+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2Vz
L3N1YnJlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwIiBvbmxvYWQ9ImZpcnN0RnJhbWVM
b2FkZWQoKTsiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZXMvcHJvdGVj
dGVkLXJlc291cmNlLnBocAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bG9hZGluZy9yZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw5IEBACis8P3BocAoraGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1zdG9yZSIpOwor
aWYgKCFpc3NldCgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKSkgeworICAgIGhlYWRlcigiV1dX
LWF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09XCIiIC4gJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10g
LiAiXCIiKTsKKyAgICBoZWFkZXIoJ0hUVFAvMS4wIDQwMSBVbmF1dGhvcml6ZWQnKTsKKyAgICBl
eGl0OworfQorPz4KK0F1dGhlbnRpY2F0ZWQgYXMgdXNlcjogPD9waHAgcHJpbnQgKHN0cmluZykk
X1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddPz4gcGFzc3dvcmQ6IDw/cGhwIHByaW50IChzdHJpbmcp
JF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXT8+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2xvYWRpbmcvcmVzb3VyY2VzL290aGVyc3VicmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5w
aHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNl
cy9vdGhlcnN1YnJlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlcy9vdGhlcnN1YnJlc291
cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAK
Kzw/cGhwCitoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLXN0b3JlIik7CitpZiAoIWlzc2V0KCRf
U0VSVkVSWydQSFBfQVVUSF9VU0VSJ10pKSB7CisgICAgaGVhZGVyKCJXV1ctYXV0aGVudGljYXRl
OiBCYXNpYyByZWFsbT1cIiIgLiAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSAuICJcIiIpOworICAg
IGhlYWRlcignSFRUUC8xLjAgNDAxIFVuYXV0aG9yaXplZCcpOworICAgIGV4aXQ7Cit9Cis/Pgor
QXV0aGVudGljYXRlZCBhcyB1c2VyOiA8P3BocCBwcmludCAoc3RyaW5nKSRfU0VSVkVSWydQSFBf
QVVUSF9VU0VSJ10/PiBwYXNzd29yZDogPD9waHAgcHJpbnQgKHN0cmluZykkX1NFUlZFUlsnUEhQ
X0FVVEhfVVNFUiddPz4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNv
dXJjZXMvc3VicmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlcy9zdWJyZXNvdXJjZXMvcHJv
dGVjdGVkLXJlc291cmNlLnBocAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbG9hZGluZy9yZXNvdXJjZXMvc3VicmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorPD9waHAKK2hlYWRlcigiQ2FjaGUtQ29udHJv
bDogbm8tc3RvcmUiKTsKK2lmICghaXNzZXQoJF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXSkpIHsK
KyAgICBoZWFkZXIoIldXVy1hdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPVwiIiAuICRfU0VSVkVS
WydSRVFVRVNUX1VSSSddIC4gIlwiIik7CisgICAgaGVhZGVyKCdIVFRQLzEuMCA0MDEgVW5hdXRo
b3JpemVkJyk7CisgICAgZXhpdDsKK30KKz8+CitBdXRoZW50aWNhdGVkIGFzIHVzZXI6IDw/cGhw
IHByaW50IChzdHJpbmcpJF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXT8+IHBhc3N3b3JkOiA8P3Bo
cCBwcmludCAoc3RyaW5nKSRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10/PgpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1NraXBwZWQJKHJldmlzaW9uIDQ4MzExKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTU2OTksMyArNTY5OSw2IEBAIGh0dHAv
dGVzdHMvbmF2aWdhdGlvbi9iYWNrLXNlbmQtcmVmZXJyZXIKICMgWEhSIHNlbmRzIHNvbWV0aW1l
cyB5aWVsZCBudWxsIGJ5dGVzIHNlbnQgaW5zdGVhZCBvZiAwLgogaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItbWV0aG9kcy5odG1sCiBodHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1tZXRob2RzLWFzeW5jLmh0bWwKKwor
IyBObyBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UgaGFuZGxpbmcKK2h0dHAvdGVzdHMvbG9hZGlu
Zy9iYXNpYy1jcmVkZW50aWFscy1zZW50LWF1dG9tYXRpY2FsbHkuaHRtbApJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lvbiA0ODMxMSkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTQ4MzgsMyArNDgzOCw2IEBAIGZhc3Qvd29y
a2Vycy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0LmgKIAogIyBObyBVc2VyIFNjcmlwdHMKIHVz
ZXJzY3JpcHRzCisKKyMgTm8gYXV0aGVudGljYXRpb24gY2hhbGxlbmdlIGhhbmRsaW5nCitodHRw
L3Rlc3RzL2xvYWRpbmcvYmFzaWMtY3JlZGVudGlhbHMtc2VudC1hdXRvbWF0aWNhbGx5Lmh0bWwK
</data>
<flag name="review"
          id="20567"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39519</attachid>
            <date>2009-09-12 15:36:59 -0700</date>
            <delta_ts>2009-09-14 10:44:20 -0700</delta_ts>
            <desc>Patch with changes</desc>
            <filename>CurrentPatch.txt</filename>
            <type>text/plain</type>
            <size>71055</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODMzNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsOTMgQEAKKzIwMDktMDktMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNh
ZmFyaSA0IGNhbm5vdCBiZSB1c2VkIHRvIHVwZGF0ZSBmaXJtd2FyZSBvbiBMaW5rc3lzIHJvdXRl
cnMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTc0MDUwPiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MTYwCisKKyAgICAgICAgSW4gaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvNDI0ODMsIHdlIGRpc2FibGVkIENGTmV0d29yaydzIHNlc3Np
b24gY3JlZGVudGlhbCBzdG9yYWdlIGFuZCAKKyAgICAgICAgaW1wbGVtZW50ZWQgb3VyIG93biBp
biBXZWJDb3JlLgorCisgICAgICAgIE9uZSBmZWF0dXJlIHdlIGxvc3QgaXMgdGhhdCBDRk5ldHdv
cmsgd291bGQgYXV0b21hdGljYWxseSBzZW5kIHByZXZpb3VzbHkgYXV0aGVudGljYXRlZCBjcmVk
ZW50aWFscworICAgICAgICB3aXRoIG5ldyBjb25uZWN0aW9ucyB3aGVuIHRoZSBwYXRocyBtYXRj
aCwgYXMgYWxsb3dlZCBieSBSRkMgMjYxNyBmb3IgSFRUUCBCYXNpYyBhbmQgRGlnZXN0IEF1dGhl
bnRpY2F0aW9uLiAgCisKKyAgICAgICAgRXZlbiB0aG91Z2ggaXQncyBvcHRpb25hbCBmb3IgVXNl
ciBBZ2VudHMgdG8gZG8gdGhpcywgKHNvbWU/KSBMaW5rc3lzIHJvdXRlcnMgcmVseSBvbiB0aGlz
IGJlaGF2aW9yIGZvcgorICAgICAgICBIVFRQIEJhc2ljIEF1dGhlbnRpY2F0aW9uLiAgU28gbm93
IFdlYkNvcmUncyBDcmVkZW50aWFsU3RvcmFnZSB3aWxsIHRyYWNrIFVSTCBwYXRocyBmb3IgQmFz
aWMgY3JlZGVudGlhbHMuCisKKyAgICAgICAgV2UncmUgbm90IG1ha2luZyB0aGlzIGVuaGFuY2Vt
ZW50IGZvciBEaWdlc3QgYXQgdGhpcyB0aW1lLCBzaW5jZSB3ZSBkb24ndCBrbm93IG9mIGFueXRo
aW5nIHRoYXQgYnJva2UKKyAgICAgICAgZHVlIHRvIHRoZSBjaGFuZ2UgaW4gRGlnZXN0IGJlaGF2
aW9yLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1jcmVkZW50aWFs
cy1zZW50LWF1dG9tYXRpY2FsbHkuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5iYXNlLmV4cDoK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0NyZWRlbnRpYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbDo6aXNFbXB0
eSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsLmg6CisKKyAgICAgICAg
QWRkIGEgc2xpZ2h0bHkgbW9yZSBmdWxsIGZlYXR1cmVkIENyZWRlbnRpYWxTdG9yZSB0aGF0IHdp
bGwgdHJhY2sgVVJMIHBhdGhzIGEgY3JlZGVudGlhbCBiZWxvbmdzIHRvOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnByb3RlY3Rpb25TcGFjZVRvQ3JlZGVudGlhbE1hcCk6CisgICAgICAgIChXZWJDb3Jl
OjpvcmlnaW5Ub0RlZmF1bHRDcmVkZW50aWFsTWFwKToKKyAgICAgICAgKFdlYkNvcmU6Om9yaWdp
blN0cmluZ0Zyb21VUkwpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2U6OnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpnZXREZWZhdWx0QXV0aGVudGljYXRpb25DcmVk
ZW50aWFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmg6
IEFkZGVkLgorCisgICAgICAgIEFsbG93IFByb3RlY3Rpb25TcGFjZSB0byBiZSBhIGhhc2gga2V5
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZTo6UHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6UHJv
dGVjdGlvblNwYWNlOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VIYXNoLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UHJvdGVjdGlvblNwYWNlSGFzaDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpQcm90ZWN0
aW9uU3BhY2VIYXNoOjplcXVhbCk6CisKKyAgICAgICAgQWxsb3cgUmVzb3VyY2VIYW5kbGVzIHRv
IHJlbWVtYmVyIHRoZSBpbml0aWFsIGNyZWRlbnRpYWwgdGhleSB1c2VkOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oOgorCisgICAgICAgIEFsbG93
IG11dGFibGUgUmVzb3VyY2VSZXF1ZXN0cyB0byB1cGRhdGUgdGhlaXIgcGxhdGZvcm0gb2JqZWN0
IGlmIEhUVFAgaGVhZGVyIGZpZWxkcyBjaGFuZ2U6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdEJhc2U6OmFkZEhUVFBIZWFkZXJGaWVsZCk6CisKKyAgICAgICAgUmVtb3ZlIFdlYkNvcmVD
cmVkZW50aWFsU3RvcmFnZToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRp
Y2F0aW9uQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFj
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW06
CisKKyAgICAgICAgQ2hhbmdlIFJlc291cmNlSGFuZGxlQ0ZOZXQgdG8gdHJ5IHRvIHVzZSBzdG9y
ZWQgY3JlZGVudGlhbHMgb24gbmV3IGNvbm5lY3Rpb25zLCBpZiBhcHByb3ByaWF0ZToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOiBPbmx5IHRy
eSB0aGUgUHJvdGVjdGlvblNwYWNlIGtleSdlZAorICAgICAgICAgIENyZWRlbnRpYWwgaWYgaXQg
ZG9lcyBub3QgbWF0Y2ggdGhlIGluaXRpYWxseSB1c2VkIENyZWRlbnRpYWwuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvcmVTeW5jaHJvbm91c0xvYWRlcjo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSk6IE9u
bHkgdHJ5IHRoZSBQcm90ZWN0aW9uU3BhY2Uga2V5J2VkCisgICAgICAgICAgQ3JlZGVudGlhbCBp
ZiBpdCBkb2VzIG5vdCBtYXRjaCB0aGUgaW5pdGlhbGx5IHVzZWQgQ3JlZGVudGlhbC4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVTeW5jaHJvbm91c0xvYWRlcjo6bG9hZCk6CisKKyAgICAgICAg
Q2hhbmdlIFJlc291cmNlSGFuZGxlTWFjIHRvIHRyeSB0byB1c2Ugc3RvcmVkIGNyZWRlbnRpYWxz
IG9uIG5ldyBjb25uZWN0aW9ucywgaWYgYXBwcm9wcmlhdGU6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6IE9ubHkgdHJ5IHRoZSBQcm90ZWN0aW9u
U3BhY2Uga2V5J2VkCisgICAgICAgICAgQ3JlZGVudGlhbCBpZiBpdCBkb2VzIG5vdCBtYXRjaCB0
aGUgaW5pdGlhbGx5IHVzZWQgQ3JlZGVudGlhbC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwpOgorICAgICAgICAoLVtXZWJDb3JlU3luY2hyb25v
dXNMb2FkZXIgY29ubmVjdGlvbjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XSk6
IE9ubHkgdHJ5IHRoZSAKKyAgICAgICAgICBQcm90ZWN0aW9uU3BhY2Uga2V5J2VkIENyZWRlbnRp
YWwgaWYgaXQgZG9lcyBub3QgbWF0Y2ggdGhlIGluaXRpYWxseSB1c2VkIENyZWRlbnRpYWwuCisg
ICAgICAgICgrW1dlYkNvcmVTeW5jaHJvbm91c0xvYWRlciBsb2FkUmVxdWVzdDphbGxvd1N0b3Jl
ZENyZWRlbnRpYWxzOnJldHVybmluZ1Jlc3BvbnNlOmVycm9yOl0pOgorCisgICAgICAgIEFkZCBi
YXNlNjQtYWJpbGl0eSB0byBDU3RyaW5nOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvQ1N0cmlu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU3RyaW5nQnVmZmVyOjpiYXNlNjRFbmNvZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1N0cmluZzo6YmFzZTY0RW5jb2RlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L0NTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTdHJpbmdCdWZmZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU3RyaW5nQnVmZmVyOjpDU3RyaW5nQnVmZmVyKToK
KwogMjAwOS0wOS0xMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJKHJldmlzaW9uIDQ4MzM0
KQorKysgV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsMTEg
KzMxMSwxMSBAQCBfX1pON1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMTJyZWxlYXNlUHJvCiBfX1pO
N1dlYkNvcmUxNFJlc291cmNlSGFuZGxlMjBmb3JjZUNvbnRlbnRTbmlmZmluZ0V2CiBfX1pON1dl
YkNvcmUxNFJlc291cmNlTG9hZGVyMTRjYW5jZWxsZWRFcnJvckV2CiBfX1pON1dlYkNvcmUxNFJl
c291cmNlTG9hZGVyMTlzZXRTaG91bGRCdWZmZXJEYXRhRWIKLV9fWk43V2ViQ29yZTE0U2VjdXJp
dHlPcmlnaW42Y3JlYXRlRVJLTlNfNEtVUkxFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2lu
MTZjcmVhdGVGcm9tU3RyaW5nRVJLTlNfNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlP
cmlnaW4yNHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbEVSS05TXzZTdHJpbmdFCiBfX1pON1dlYkNv
cmUxNFNlY3VyaXR5T3JpZ2luMjV3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luRVJLUzBfUktOU182
U3RyaW5nRVM1X2IKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4yN3Jlc2V0T3JpZ2luQWNj
ZXNzV2hpdGVMaXN0c0V2CitfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNmNyZWF0ZUVSS05T
XzRLVVJMRQogX19aTjdXZWJDb3JlMTVBcmNoaXZlUmVzb3VyY2U2Y3JlYXRlRU4zV1RGMTBQYXNz
UmVmUHRySU5TXzEyU2hhcmVkQnVmZmVyRUVFUktOU180S1VSTEVSS05TXzZTdHJpbmdFU0FfU0Ff
UktOU18xNlJlc291cmNlUmVzcG9uc2VFCiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDEw
cmVtb3ZlSXRlbUVQTlNfMTFIaXN0b3J5SXRlbUUKIF9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRM
aXN0MTBzZXRFbmFibGVkRWIKQEAgLTM5Niw2ICszOTYsNyBAQCBfX1pON1dlYkNvcmUxNmNyZWF0
ZUZ1bGxNYXJrdXBFUEtOU181UmFuCiBfX1pON1dlYkNvcmUxNmVuY2xvc2luZ0ludFJlY3RFUks3
X05TUmVjdAogX19aTjdXZWJDb3JlMTZpc0VuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9z
aXRpb25FCiBfX1pON1dlYkNvcmUxNnRocmVhZEdsb2JhbERhdGFFdgorX19aTjdXZWJDb3JlMTdD
cmVkZW50aWFsU3RvcmFnZTNnZXRFUktOU18xNVByb3RlY3Rpb25TcGFjZUUKIF9fWk43V2ViQ29y
ZTE3RE9NSW1wbGVtZW50YXRpb24xNGlzVGV4dE1JTUVUeXBlRVJLTlNfNlN0cmluZ0UKIF9fWk43
V2ViQ29yZTE3R2x5cGhQYWdlVHJlZU5vZGUxOHRyZWVHbHlwaFBhZ2VDb3VudEV2CiBfX1pON1dl
YkNvcmUxN0hUTUxQbHVnSW5FbGVtZW50MTFnZXROUE9iamVjdEV2CkBAIC00NTYsNyArNDU3LDYg
QEAgX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTVlbQogX19aTjdXZWJDb3Jl
MjNSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZEMxRVBOU184RG9jdW1lbnRFTjNXVEYxMFBhc3NSZWZQ
dHJJTlNfMTZEb2N1bWVudEZyYWdtZW50RUVFYmJiYmJOU18xMEVkaXRBY3Rpb25FCiBfX1pON1dl
YkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBOU184RG9jdW1lbnRFUktOM1dURjZWZWN0
b3JJUE5TXzROb2RlRUxtMEVFRQogX19aTjdXZWJDb3JlMjRCaW5hcnlQcm9wZXJ0eUxpc3RXcml0
ZXIxN3dyaXRlUHJvcGVydHlMaXN0RXYKLV9fWk43V2ViQ29yZTI0V2ViQ29yZUNyZWRlbnRpYWxT
dG9yYWdlOW1fc3RvcmFnZUUKIF9fWk43V2ViQ29yZTI0Y3JlYXRlRnJhZ21lbnRGcm9tTWFya3Vw
RVBOU184RG9jdW1lbnRFUktOU182U3RyaW5nRVM0XwogX19aTjdXZWJDb3JlMjRkZWNvZGVVUkxF
c2NhcGVTZXF1ZW5jZXNFUktOU182U3RyaW5nRQogX19aTjdXZWJDb3JlMjRub3RpZnlIaXN0b3J5
SXRlbUNoYW5nZWRFCkBAIC00ODEsNiArNDgxLDcgQEAgX19aTjdXZWJDb3JlMzFhcHBsaWNhdGlv
bklzTWljcm9zb2Z0TWVzcwogX19aTjdXZWJDb3JlMzJwbGFpblRleHRUb01hbGxvY0FsbG9jYXRl
ZEJ1ZmZlckVQS05TXzVSYW5nZUVSamIKIF9fWk43V2ViQ29yZTMzc2V0RGVmYXVsdFRocmVhZFZp
b2xhdGlvbkJlaGF2aW9yRU5TXzIzVGhyZWFkVmlvbGF0aW9uQmVoYXZpb3JFTlNfMjBUaHJlYWRW
aW9sYXRpb25Sb3VuZEUKIF9fWk43V2ViQ29yZTM2SW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVsc0lm
TmVjZXNzYXJ5RXYKK19fWk43V2ViQ29yZTNtYWNFUktOU18xMENyZWRlbnRpYWxFCiBfX1pON1dl
YkNvcmUzbWFjRVJLTlNfMjNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUUKIF9fWk43V2ViQ29yZTRG
b250MTFzZXRDb2RlUGF0aEVOUzBfOENvZGVQYXRoRQogX19aTjdXZWJDb3JlNEZvbnQxOHNob3Vs
ZFVzZVNtb290aGluZ0V2CkBAIC01MTQsNiArNTE1LDcgQEAgX19aTjdXZWJDb3JlNFBhZ2U5Z29G
b3J3YXJkRXYKIF9fWk43V2ViQ29yZTRQYWdlOWluaXRHcm91cEV2CiBfX1pON1dlYkNvcmU0UGFn
ZUMxRVBOU18xMkNocm9tZUNsaWVudEVQTlNfMTdDb250ZXh0TWVudUNsaWVudEVQTlNfMTJFZGl0
b3JDbGllbnRFUE5TXzEwRHJhZ0NsaWVudEVQTlNfMTVJbnNwZWN0b3JDbGllbnRFCiBfX1pON1dl
YkNvcmU0UGFnZUQxRXYKK19fWk43V2ViQ29yZTRjb3JlRVAyME5TVVJMUHJvdGVjdGlvblNwYWNl
CiBfX1pON1dlYkNvcmU1Q2FjaGUxMXNldERpc2FibGVkRWIKIF9fWk43V2ViQ29yZTVDYWNoZTEz
Z2V0U3RhdGlzdGljc0V2CiBfX1pON1dlYkNvcmU1Q2FjaGUxM3NldENhcGFjaXRpZXNFampqCkBA
IC03NDQsMTAgKzc0NiwxMCBAQCBfX1pON1dlYkNvcmU5SFRNTE5hbWVzOXNjcmlwdFRhZ0UKIF9f
Wk43V2ViQ29yZTlQYWdlQ2FjaGUxMXNldENhcGFjaXR5RWkKIF9fWk43V2ViQ29yZTlQYWdlQ2Fj
aGUyN3JlbGVhc2VBdXRvcmVsZWFzZWRQYWdlc05vd0V2CiBfX1pON1dlYkNvcmU5UGFnZUdyb3Vw
MTNhZGRVc2VyU2NyaXB0RVJLTlNfNlN0cmluZ0VSS05TXzRLVVJMRVJLTjNXVEY2VmVjdG9ySVMx
X0xtMEVFRWpOU18yM1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lRQotX19aTjdXZWJDb3JlOVBhZ2VH
cm91cDE3YWRkVXNlclN0eWxlU2hlZXRFUktOU182U3RyaW5nRVJLTlNfNEtVUkxFUktOM1dURjZW
ZWN0b3JJUzFfTG0wRUVFagogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDE0YWRkVmlzaXRlZExpbmtF
UEt0bQotX19aTjdXZWJDb3JlOVBhZ2VHcm91cDIwcmVtb3ZlQWxsVXNlckNvbnRlbnRFdgorX19a
TjdXZWJDb3JlOVBhZ2VHcm91cDE3YWRkVXNlclN0eWxlU2hlZXRFUktOU182U3RyaW5nRVJLTlNf
NEtVUkxFUktOM1dURjZWZWN0b3JJUzFfTG0wRUVFagogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDE3
Y2xvc2VMb2NhbFN0b3JhZ2VFdgorX19aTjdXZWJDb3JlOVBhZ2VHcm91cDIwcmVtb3ZlQWxsVXNl
ckNvbnRlbnRFdgogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDIxcmVtb3ZlQWxsVmlzaXRlZExpbmtz
RXYKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAyNXJlbW92ZVVzZXJDb250ZW50Rm9yV29ybGRFagog
X19aTjdXZWJDb3JlOVBhZ2VHcm91cDI2c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3NFYgpJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA0ODMzNCkKKysr
IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAg
LTIwMDEzLDYgKzIwMDEzLDE0IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0K
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXENyZWRlbnRpYWxTdG9yYWdl
LmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXENyZWRlbnRpYWxTdG9yYWdlLmgiDQorCQkJCQk+DQor
CQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1c
bmV0d29ya1xGb3JtRGF0YS5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkBAIC0yMDA2MSw2
ICsyMDA2OSwxMCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xQcm90ZWN0aW9uU3BhY2VIYXNoLmgiDQor
CQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cbmV0d29ya1xSZXNvdXJjZUVycm9yQmFzZS5jcHAiDQogCQkJCQk+DQogCQkJCTwv
RmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gNDgzMzQpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAxOSw2ICsxMDE5LDkgQEAKIAkJNTE5NjExNzgwQ0FD
NTZBODAwMTBBODBDIC8qIERhdGFiYXNlVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTk2MTE2MjBDQUM1NjU3MDAxMEE4MEMgLyogRGF0YWJh
c2VUaHJlYWQuaCAqLzsgfTsKIAkJNTE5NjExRUEwQ0FDNzQ5QzAwMTBBODBDIC8qIERhdGFiYXNl
VGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE5
NjExRTgwQ0FDNzQ5QzAwMTBBODBDIC8qIERhdGFiYXNlVGFzay5oICovOyB9OwogCQk1MTk2MTFF
QjBDQUM3NDlDMDAxMEE4MEMgLyogRGF0YWJhc2VUYXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOTYxMUU5MENBQzc0OUMwMDEwQTgwQyAvKiBE
YXRhYmFzZVRhc2suY3BwICovOyB9OworCQk1MUEwNTIzMzEwNTg3NzRGMDBDQzlFOTUgLyogQ3Jl
ZGVudGlhbFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQTA1MjMxMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxQTA1MjM0
MTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUEwNTIzMjEwNTg3NzRGMDBDQzlFOTUg
LyogQ3JlZGVudGlhbFN0b3JhZ2UuY3BwICovOyB9OworCQk1MUEwNTI1NjEwNTg4NzQwMDBDQzlF
OTUgLyogUHJvdGVjdGlvblNwYWNlSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFBMDUyNTUxMDU4ODc0MDAwQ0M5RTk1IC8qIFByb3RlY3Rpb25T
cGFjZUhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MUE0NUI1NjBDQUQ3RkQ3MDAwRDJCRTkgLyogRGF0YWJhc2VBdXRob3JpemVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE0NUI1NDBDQUQ3
RkQ3MDAwRDJCRTkgLyogRGF0YWJhc2VBdXRob3JpemVyLmggKi87IH07CiAJCTUxQTQ1QjU3MENB
RDdGRDcwMDBEMkJFOSAvKiBEYXRhYmFzZUF1dGhvcml6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNDVCNTUwQ0FEN0ZENzAwMEQyQkU5IC8q
IERhdGFiYXNlQXV0aG9yaXplci5jcHAgKi87IH07CiAJCTUxQTkyNjdDMEQ1M0YwNTcwMDYzRUND
MiAvKiBPcmlnaW5RdW90YU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFBOTI2NzgwRDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblF1b3Rh
TWFuYWdlci5jcHAgKi87IH07CkBAIC02MjMyLDYgKzYyMzUsOSBAQAogCQk1MTk2MTFFOTBDQUM3
NDlDMDAxMEE4MEMgLyogRGF0YWJhc2VUYXNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERhdGFiYXNlVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxOUZFMEExMERBRDQ0NkUwMEEwOEYyMSAvKiBIVE1MQXR0cmlidXRlTmFtZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEF0dHJpYnV0ZU5hbWVzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTlGRTBBMjBEQUQ0NDZFMDBBMDhGMjEgLyogSFRNTFRhZ05hbWVz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxUYWdOYW1lcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxT
dG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWRlbnRpYWxTdG9y
YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQTA1MjMyMTA1ODc3NEYwMEND
OUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUxQTA1MjU1MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3BhY2VIYXNoLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3RlY3Rpb25TcGFjZUhhc2guaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBNDVCNTQwQ0FEN0ZENzAwMEQyQkU5IC8q
IERhdGFiYXNlQXV0aG9yaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
YXRhYmFzZUF1dGhvcml6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBNDVC
NTUwQ0FEN0ZENzAwMEQyQkU5IC8qIERhdGFiYXNlQXV0aG9yaXplci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZUF1dGhvcml6ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE5MjY3ODBENTNGMDU3MDA2M0VDQzIgLyogT3JpZ2lu
UXVvdGFNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9y
aWdpblF1b3RhTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDgz
NCwxNyArMTA4NDAsMTQgQEAKIAkJNjU2Qjg0RDcwQUVBMUNFOTAwQTA5NUI0IC8qIG5ldHdvcmsg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTUxMEQ0QTJE
MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwICovLAotCQkJCTUx
MEQ0QTJFMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuaCAqLywKLQkJ
CQk1MTBENEEzMDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAg
Ki8sCi0JCQkJNTEwRDRBMzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJh
c2UuaCAqLywKLQkJCQk1MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50LmggKi8sCiAJCQkJQjJGMzRGRTcwRTgyRjgxNzAwRjYyN0NEIC8qIGNmICovLAog
CQkJCTY1NkI4NEU3MEFFQTFEQUUwMEEwOTVCNCAvKiBtYWMgKi8sCiAJCQkJOTM0RjcxMzcwRDVB
NkVGRjAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5jcHAgKi8sCiAJCQkJ
OTM0RjcxMzkwRDVBNkYxMDAwMDE4RDY5IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5o
ICovLAogCQkJCTUxNEM3NjU4MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVkZW50aWFsLmNwcCAqLywK
IAkJCQk1MTRDNzY1OTBDRTkyM0ExMDA3RUYzQ0QgLyogQ3JlZGVudGlhbC5oICovLAorCQkJCTUx
QTA1MjMyMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5jcHAgKi8sCisJCQkJ
NTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi8sCiAJCQkJ
QjJGMzRGRTUwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oICovLAogCQkJCTUxNEM3NjVBMENFOTIz
QTEwMDdFRjNDRCAvKiBGb3JtRGF0YS5jcHAgKi8sCiAJCQkJNTE0Qzc2NUIwQ0U5MjNBMTAwN0VG
M0NEIC8qIEZvcm1EYXRhLmggKi8sCkBAIC0xMDg1OCw2ICsxMDg2MSw3IEBACiAJCQkJMUE3RkE2
MTgwRERBM0IzQTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmggKi8sCiAJCQkJNTE0
Qzc2NUYwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5jcHAgKi8sCiAJCQkJNTE0
Qzc2NjAwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5oICovLAorCQkJCTUxQTA1
MjU1MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3BhY2VIYXNoLmggKi8sCiAJCQkJOTM0
RjcxM0QwRDVBNkYyODAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3JCYXNlLmNwcCAqLywKIAkJCQk5
MzRGNzEzQjBENUE2RjE5MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJhc2UuaCAqLywKIAkJCQk1
MTRDNzY2MzBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGUuY3BwICovLApAQCAtMTA4
NjgsNiArMTA4NzIsMTEgQEAKIAkJCQk1MTRDNzY2ODBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5oICovLAogCQkJCTUxNEM3NjY5MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNv
dXJjZVJlc3BvbnNlQmFzZS5jcHAgKi8sCiAJCQkJNTE0Qzc2NkEwQ0U5MjNBMTAwN0VGM0NEIC8q
IFJlc291cmNlUmVzcG9uc2VCYXNlLmggKi8sCisJCQkJNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0
IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi8sCisJCQkJNTEwRDRBMkUxMDMxNjVFRTAw
NDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5oICovLAorCQkJCTUxMEQ0QTMwMTAzMTY1
RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCAqLywKKwkJCQk1MTBENEEz
MTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oICovLAorCQkJCTUx
MEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLywK
IAkJCSk7CiAJCQlwYXRoID0gbmV0d29yazsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC0xNzc5NCw2ICsxNzgwMyw4IEBACiAJCQkJNDlFRUQxNDUxMDUxOTY5NDAwMDk5RkFCIC8qIEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUVFRDE0NzEw
NTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0M0QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU5Qzc3RjJCMTA1NDVCM0IwMDUwNjEwNCAvKiBHZW9sb2NhdGlvblNlcnZpY2VN
b2NrLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUEwNTIzMzEwNTg3NzRGMDBDQzlFOTUgLyogQ3Jl
ZGVudGlhbFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQTA1MjU2MTA1ODg3NDAwMEND
OUU5NSAvKiBQcm90ZWN0aW9uU3BhY2VIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhCRjE1
MTEwNTgxM0JGMDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDOEJGMTVBMTA1ODE0MTgwMEE0MEEwNyAvKiBVc2VyU3R5bGVTaGVldFR5cGVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTBENEE0RjEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5l
bC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xOTkyMyw2ICsxOTkzNCw3IEBACiAJCQkJNDlFRUQxNEYx
MDUxOTcxQTAwMDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDNEQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQ5RUVEMTUwMTA1MTk3MUEwMDA5OUZBQiAvKiBKU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTlDNzdGMkExMDU0
NUIzQjAwNTA2MTA0IC8qIEdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTFBMDUyMzQxMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxMEQ0QTRFMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRD
aGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQUJBRTQ0MTA0M0FCNEEwMDhDNTI2MCAv
KiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsLmNwcAkocmV2aXNpb24gNDgzMzQpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDYgKzQzLDExIEBAIENyZWRlbnRpYWw6OkNyZWRlbnRpYWwoY29uc3QgU3RyaW5nJiB1c2UK
ICAgICAsIG1fcGVyc2lzdGVuY2UocGVyc2lzdGVuY2UpCiB7CiB9CisKK2Jvb2wgQ3JlZGVudGlh
bDo6aXNFbXB0eSgpCit7CisgICAgcmV0dXJuIG1fdXNlci5pc0VtcHR5KCkgJiYgbV9wYXNzd29y
ZC5pc0VtcHR5KCk7Cit9CiAgICAgCiBjb25zdCBTdHJpbmcmIENyZWRlbnRpYWw6OnVzZXIoKSBj
b25zdAogeyAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaAkocmV2aXNp
b24gNDgzMzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIHB1YmxpYzoKICAgICBDcmVkZW50aWFsKCk7CiAg
ICAgQ3JlZGVudGlhbChjb25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQs
IENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7CiAgICAgCisgICAgYm9vbCBpc0VtcHR5KCk7CisgICAg
CiAgICAgY29uc3QgU3RyaW5nJiB1c2VyKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBwYXNz
d29yZCgpIGNvbnN0OwogICAgIGJvb2wgaGFzUGFzc3dvcmQoKSBjb25zdDsKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcmVkZW50
aWFsU3RvcmFnZS5oIgorCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkNyZWRlbnRp
YWwuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlSGFzaC5o
IgorI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIEhhc2hNYXA8UHJvdGVjdGlvblNw
YWNlLCBDcmVkZW50aWFsPiBQcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXA7CitzdGF0aWMg
UHJvdGVjdGlvblNwYWNlVG9DcmVkZW50aWFsTWFwJiBwcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRp
YWxNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUHJvdGVjdGlvblNwYWNlVG9DcmVk
ZW50aWFsTWFwLCBtYXAsICgpKTsKKyAgICByZXR1cm4gbWFwOworfQorCit0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgQ3JlZGVudGlhbD4gPiBPcmlnaW5Ub0RlZmF1bHRC
YXNpY0NyZWRlbnRpYWxNYXA7CitzdGF0aWMgT3JpZ2luVG9EZWZhdWx0QmFzaWNDcmVkZW50aWFs
TWFwJiBvcmlnaW5Ub0RlZmF1bHRCYXNpY0NyZWRlbnRpYWxNYXAoKQoreworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoT3JpZ2luVG9EZWZhdWx0QmFzaWNDcmVkZW50aWFsTWFwLCBtYXAsICgpKTsK
KyAgICByZXR1cm4gbWFwOworfQorICAgIAorc3RhdGljIFN0cmluZyBvcmlnaW5TdHJpbmdGcm9t
VVJMKGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICBpZiAodXJsLnBvcnQoKSkKKyAgICAgICAgcmV0
dXJuIHVybC5wcm90b2NvbCgpICsgIjovLyIgKyB1cmwuaG9zdCgpICsgU3RyaW5nOjpmb3JtYXQo
IjolaS8iLCB1cmwucG9ydCgpKTsKKyAgICAKKyAgICByZXR1cm4gdXJsLnByb3RvY29sKCkgKyAi
Oi8vIiArIHVybC5ob3N0KCkgKyAiLyI7Cit9CisKK3ZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNl
dChjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHBy
b3RlY3Rpb25TcGFjZSwgY29uc3QgS1VSTCYgdXJsKQoreworICAgIHByb3RlY3Rpb25TcGFjZVRv
Q3JlZGVudGlhbE1hcCgpLnNldChwcm90ZWN0aW9uU3BhY2UsIGNyZWRlbnRpYWwpOworICAgIAor
ICAgIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lIHNjaGVtZSA9IHByb3RlY3Rp
b25TcGFjZS5hdXRoZW50aWNhdGlvblNjaGVtZSgpOworICAgIGlmICh1cmwucHJvdG9jb2xJbkhU
VFBGYW1pbHkoKSAmJiAoc2NoZW1lID09IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2No
ZW1lSFRUUEJhc2ljIHx8IHNjaGVtZSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNj
aGVtZURlZmF1bHQpKSB7CisgICAgICAgIFN0cmluZyBvcmlnaW4gPSBvcmlnaW5TdHJpbmdGcm9t
VVJMKHVybCk7CisgICAgICAgIAorICAgICAgICBIYXNoTWFwPFN0cmluZywgQ3JlZGVudGlhbD4g
cGF0aFRvQ3JlZGVudGlhbE1hcDsKKyAgICAgICAgcGFpcjxIYXNoTWFwPFN0cmluZywgSGFzaE1h
cDxTdHJpbmcsIENyZWRlbnRpYWw+ID46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBvcmlnaW5U
b0RlZmF1bHRCYXNpY0NyZWRlbnRpYWxNYXAoKS5hZGQob3JpZ2luLCBwYXRoVG9DcmVkZW50aWFs
TWFwKTsKKyAgICAgICAgCisgICAgICAgIC8vIFJlbW92ZSB0aGUgbGFzdCBwYXRoIGNvbXBvbmVu
dCB0aGF0IGlzIG5vdCBhIGRpcmVjdG9yeSB0byBkZXRlcm1pbmUgdGhlIHN1YnBhdGggZm9yIHdo
aWNoIHRoaXMgY3JlZGVudGlhbCBhcHBsaWVzLgorICAgICAgICBTdHJpbmcgcGF0aCA9IHVybC5w
YXRoKCk7CisgICAgICAgIGlmICghcGF0aC5lbmRzV2l0aCgiLyIpKSB7CisgICAgICAgICAgICBp
bnQgaW5kZXggPSBwYXRoLnJldmVyc2VGaW5kKCcvJyk7CisgICAgICAgICAgICBpZiAoaW5kZXgg
IT0gLTEpCisgICAgICAgICAgICAgICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKDAsIGluZGV4KTsK
KyAgICAgICAgfQorICAgICAgICBpZiAocGF0aC5lbmRzV2l0aCgiLyIpICYmIHBhdGgubGVuZ3Ro
KCkgPiAxKQorICAgICAgICAgICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKDAsIHBhdGgubGVuZ3Ro
KCkgLSAxKTsKKyAgICAgICAgCisgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLnNldChwYXRo
LCBjcmVkZW50aWFsKTsKKyAgICB9Cit9CisKK0NyZWRlbnRpYWwgQ3JlZGVudGlhbFN0b3JhZ2U6
OmdldChjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKK3sKKyAgICByZXR1
cm4gcHJvdGVjdGlvblNwYWNlVG9DcmVkZW50aWFsTWFwKCkuZ2V0KHByb3RlY3Rpb25TcGFjZSk7
Cit9CisKK0NyZWRlbnRpYWwgQ3JlZGVudGlhbFN0b3JhZ2U6OmdldERlZmF1bHRBdXRoZW50aWNh
dGlvbkNyZWRlbnRpYWwoY29uc3QgS1VSTCYgdXJsKQoreworICAgIEFTU0VSVCh1cmwucHJvdG9j
b2xJbkhUVFBGYW1pbHkoKSk7CisgICAgU3RyaW5nIG9yaWdpbiA9IG9yaWdpblN0cmluZ0Zyb21V
UkwodXJsKTsKKyAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgQ3JlZGVudGlhbD4mIHBhdGhUb0Ny
ZWRlbnRpYWxNYXAob3JpZ2luVG9EZWZhdWx0QmFzaWNDcmVkZW50aWFsTWFwKCkuZ2V0KG9yaWdp
bikpOworICAgIGlmIChwYXRoVG9DcmVkZW50aWFsTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIENyZWRlbnRpYWwoKTsKKyAgICAKKyAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlcmUgaXMg
YSBzdG9yZWQgY3JlZGVudGlhbCBmb3IgdGhlIHN1YnBhdGggYW5jZXN0cnkgb2YgdGhpcyB1cmwu
CisgICAgU3RyaW5nIHBhdGggPSB1cmwucGF0aCgpOworICAgIENyZWRlbnRpYWwgY3JlZGVudGlh
bCA9IHBhdGhUb0NyZWRlbnRpYWxNYXAuZ2V0KHBhdGgpOworICAgIHdoaWxlIChjcmVkZW50aWFs
LmlzRW1wdHkoKSAmJiAhcGF0aC5pc051bGwoKSkgeworICAgICAgICBpbnQgaW5kZXggPSBwYXRo
LnJldmVyc2VGaW5kKCcvJyk7CisgICAgICAgIGlmIChpbmRleCA9PSAwKSB7CisgICAgICAgICAg
ICBwYXRoID0gU3RyaW5nKCk7CisgICAgICAgICAgICBjcmVkZW50aWFsID0gcGF0aFRvQ3JlZGVu
dGlhbE1hcC5nZXQoIi8iKTsKKyAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSAtMSkgeworICAg
ICAgICAgICAgLy8gVGhpcyBjYXNlIHNob3VsZCBuZXZlciBoYXBwZW4sIGFzIGFsbCBIVFRQIFVS
TCBwYXRocyBzaG91bGQgc3RhcnQgd2l0aCBhIGxlYWRpbmcgLworICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBjcmVkZW50aWFsID0gcGF0aFRvQ3JlZGVudGlh
bE1hcC5nZXQocGF0aCk7CisgICAgICAgICAgICBwYXRoID0gU3RyaW5nKCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcoMCwgaW5kZXgpOworICAg
ICAgICAgICAgY3JlZGVudGlhbCA9IHBhdGhUb0NyZWRlbnRpYWxNYXAuZ2V0KHBhdGgpOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiBjcmVkZW50aWFsOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3Jh
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0
b3JhZ2UuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsU3RvcmFnZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgU2Vzc2lvbkNyZWRlbnRp
YWxTdG9yYWdlX2gKKyNkZWZpbmUgU2Vzc2lvbkNyZWRlbnRpYWxTdG9yYWdlX2gKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBDcmVkZW50aWFsOworY2xhc3MgS1VSTDsKK2NsYXNzIFBy
b3RlY3Rpb25TcGFjZTsKKworY2xhc3MgQ3JlZGVudGlhbFN0b3JhZ2UgeworcHVibGljOgorICAg
IHN0YXRpYyB2b2lkIHNldChjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgUHJvdGVjdGlvblNwYWNl
JiwgY29uc3QgS1VSTCYpOworICAgIHN0YXRpYyBDcmVkZW50aWFsIGdldChjb25zdCBQcm90ZWN0
aW9uU3BhY2UmKTsKKyAgICBzdGF0aWMgQ3JlZGVudGlhbCBnZXREZWZhdWx0QXV0aGVudGljYXRp
b25DcmVkZW50aWFsKGNvbnN0IEtVUkwmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFNlc3Npb25DcmVkZW50aWFsU3RvcmFnZV9oCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcAkocmV2aXNpb24gNDgzMzQpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNyArMzcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gY29tYmluZWQg
d2l0aCB0aGUgc2VtYW50aWNzIG9mIHRoZSBTdHJpbmcoTlNTdHJpbmcqKSBjb25zdHJ1Y3Rvcgog
UHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9uU3BhY2UoKQogICAgIDogbV9ob3N0KCIiKQorICAg
ICwgbV9wb3J0KDApCisgICAgLCBtX3NlcnZlclR5cGUoUHJvdGVjdGlvblNwYWNlU2VydmVySFRU
UCkKICAgICAsIG1fcmVhbG0oIiIpCisgICAgLCBtX2F1dGhlbnRpY2F0aW9uU2NoZW1lKFByb3Rl
Y3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lRGVmYXVsdCkKKyAgICAsIG1faXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoZmFsc2UpCiB7CiB9CiAgCkBAIC00OSw2ICs1Myw3IEBAIFByb3RlY3Rp
b25TcGFjZTo6UHJvdGVjdGlvblNwYWNlKGNvbnN0IFMKICAgICAsIG1fc2VydmVyVHlwZShzZXJ2
ZXJUeXBlKQogICAgICwgbV9yZWFsbShyZWFsbS5sZW5ndGgoKSA/IHJlYWxtIDogIiIpCiAgICAg
LCBtX2F1dGhlbnRpY2F0aW9uU2NoZW1lKGF1dGhlbnRpY2F0aW9uU2NoZW1lKQorICAgICwgbV9p
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZShmYWxzZSkKIHsgICAgCiB9CiAgICAgCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5oCShyZXZpc2lvbiA0ODMzNCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNTQsNiArNTQsMTAgQEAgY2xhc3MgUHJvdGVjdGlvblNwYWNlIHsKIHB1YmxpYzoK
ICAgICBQcm90ZWN0aW9uU3BhY2UoKTsKICAgICBQcm90ZWN0aW9uU3BhY2UoY29uc3QgU3RyaW5n
JiBob3N0LCBpbnQgcG9ydCwgUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZSwgY29uc3QgU3RyaW5n
JiByZWFsbSwgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWUpOworCisgICAgLy8g
SGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlcywgd2hpY2ggYXJlIG9ubHkgY29uc3RydWN0ZWQgYW5k
IG5ldmVyIGNvcGllZCBvciBkZXN0cm95ZWQuCisgICAgUHJvdGVjdGlvblNwYWNlKFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX2lzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKHRydWUp
IHsgfQorICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X2lzSGFzaFRhYmxlRGVsZXRlZFZhbHVlOyB9CiAgICAgCiAgICAgY29uc3QgU3RyaW5nJiBob3N0
KCkgY29uc3Q7CiAgICAgaW50IHBvcnQoKSBjb25zdDsKQEAgLTcwLDEwICs3NCwxMiBAQCBwcml2
YXRlOgogICAgIFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUgbV9zZXJ2ZXJUeXBlOwogICAgIFN0
cmluZyBtX3JlYWxtOwogICAgIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lIG1f
YXV0aGVudGljYXRpb25TY2hlbWU7CisgICAgYm9vbCBtX2lzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
OwogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgYSwgY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBiKTsKIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJvdGVj
dGlvblNwYWNlJiBhLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGIpIHsgcmV0dXJuICEoYSA9PSBi
KTsgfQogICAgIAotfQotI2VuZGlmCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBQcm90ZWN0aW9uU3BhY2VfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3Rl
Y3Rpb25TcGFjZUhhc2guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UHJvdGVjdGlvblNwYWNlSGFzaC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUhhc2guaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IFByb3RlY3Rpb25TcGFjZUhhc2hfaAorI2RlZmluZSBQcm90ZWN0aW9uU3BhY2VIYXNoX2gKKwor
I2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
cnVjdCBQcm90ZWN0aW9uU3BhY2VIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25z
dCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKKyAgICB7IAorICAgICAgICB1bnNp
Z25lZCBoYXNoQ29kZXNbNV0gPSB7CisgICAgICAgICAgICBwcm90ZWN0aW9uU3BhY2UuaG9zdCgp
LmltcGwoKSA/IHByb3RlY3Rpb25TcGFjZS5ob3N0KCkuaW1wbCgpLT5oYXNoKCkgOiAwLCAKKyAg
ICAgICAgICAgIHByb3RlY3Rpb25TcGFjZS5wb3J0KCksIAorICAgICAgICAgICAgcHJvdGVjdGlv
blNwYWNlLnNlcnZlclR5cGUoKSwKKyAgICAgICAgICAgIHByb3RlY3Rpb25TcGFjZS5yZWFsbSgp
LmltcGwoKSA/IHByb3RlY3Rpb25TcGFjZS5yZWFsbSgpLmltcGwoKS0+aGFzaCgpIDogMCwKKyAg
ICAgICAgICAgIHByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvblNjaGVtZSgpCisgICAgICAg
IH07CisKKyAgICAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNvbXB1dGVIYXNoKHJlaW50ZXJwcmV0
X2Nhc3Q8VUNoYXIqPihoYXNoQ29kZXMpLCBzaXplb2YoaGFzaENvZGVzKSAvIHNpemVvZihVQ2hh
cikpOyAgICAKKyAgICB9CisgICAgCisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUHJvdGVj
dGlvblNwYWNlJiBhLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGIpIHsgcmV0dXJuIGEgPT0gYjsg
fQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0g
ZmFsc2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgewor
CisgICAgLy8gV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlSGFzaCBpcyB0aGUgZGVmYXVsdCBoYXNo
IGZvciBQcm90ZWN0aW9uU3BhY2UKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdl
YkNvcmU6OlByb3RlY3Rpb25TcGFjZT4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpQcm90
ZWN0aW9uU3BhY2U+IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVy
byA9IHRydWU7CisgICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJD
b3JlOjpQcm90ZWN0aW9uU3BhY2UmIHNsb3QpIHsgbmV3ICgmc2xvdCkgV2ViQ29yZTo6UHJvdGVj
dGlvblNwYWNlKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KKyAgICAgICAgc3RhdGljIGJvb2wg
aXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJiBzbG90KSB7IHJl
dHVybiBzbG90LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KKyAgICB9OworCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOworICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZT4geworICAgICAgICB0eXBl
ZGVmIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZUhhc2ggSGFzaDsKKyAgICB9OworCit9IC8vIG5h
bWVzcGFjZSBXVEYKKworCisjZW5kaWYgLy8gUHJvdGVjdGlvblNwYWNlSGFzaF9oCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJ
KHJldmlzaW9uIDQ4MzM0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDYgKzE1MCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIG1fdXNlcjsKICAgICAgICAgU3RyaW5nIG1fcGFz
czsKICAgICAgICAgCisgICAgICAgIENyZWRlbnRpYWwgbV9pbml0aWFsQ3JlZGVudGlhbDsKKyAg
ICAgICAgCiAgICAgICAgIGludCBzdGF0dXM7CiAKICAgICAgICAgYm9vbCBtX2RlZmVyc0xvYWRp
bmc7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVz
dEJhc2UuY3BwCShyZXZpc2lvbiA0ODMzNCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCw5IEBA
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRkSFRUUEhlYWRlckYKICAgICBwYWlyPEhUVFBI
ZWFkZXJNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2h0dHBIZWFkZXJGaWVsZHMuYWRk
KG5hbWUsIHZhbHVlKTsgCiAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQogICAgICAgICByZXN1bHQu
Zmlyc3QtPnNlY29uZCArPSAiLCIgKyB2YWx1ZTsKKworICAgIGlmICh1cmwoKS5wcm90b2NvbElu
SFRUUEZhbWlseSgpKQorICAgICAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsK
IH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjphZGRIVFRQSGVhZGVyRmllbGRzKGNvbnN0
IEhUVFBIZWFkZXJNYXAmIGhlYWRlckZpZWxkcykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAJKHJldmlzaW9uIDQ4MzM0KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw4ICszNyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0ZNdXRh
YmxlRGljdGlvbmFyeVJlZiBXZWJDb3JlQ3JlZGVudGlhbFN0b3JhZ2U6Om1fc3RvcmFnZTsKLQog
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFBy
b3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3JlZGVu
dGlhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCwKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaAkocmV2aXNpb24gNDgzMzQpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MywyNiArNDMsNiBAQCBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjcmVhdGVDRihjb25z
dCBQCiBDcmVkZW50aWFsIGNvcmUoQ0ZVUkxDcmVkZW50aWFsUmVmKTsKIFByb3RlY3Rpb25TcGFj
ZSBjb3JlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKTsKIAotY2xhc3MgV2ViQ29yZUNyZWRlbnRp
YWxTdG9yYWdlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBzZXQoQ0ZVUkxQcm90ZWN0aW9u
U3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlLCBDRlVSTENyZWRlbnRpYWxSZWYgY3JlZGVudGlhbCkK
LSAgICB7Ci0gICAgICAgIGlmICghbV9zdG9yYWdlKQotICAgICAgICAgICAgbV9zdG9yYWdlID0g
Q0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUobV9zdG9yYWdlLCBwcm90ZWN0aW9uU3Bh
Y2UsIGNyZWRlbnRpYWwpOwotICAgIH0KLQotICAgIHN0YXRpYyBDRlVSTENyZWRlbnRpYWxSZWYg
Z2V0KENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSkKLSAgICB7Ci0gICAg
ICAgIGlmICghbV9zdG9yYWdlKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVy
biAoQ0ZVUkxDcmVkZW50aWFsUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKG1fc3RvcmFnZSwgcHJv
dGVjdGlvblNwYWNlKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIENGTXV0YWJsZURp
Y3Rpb25hcnlSZWYgbV9zdG9yYWdlOwotfTsKLQogfQogCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAJKHJl
dmlzaW9uIDQ4MzM0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw5IEBACiAKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNGLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCIKLSNpbmNsdWRlICJDb29raWVTdG9yYWdlV2luLmgiCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgor
I2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VXaW4uaCIKKyNpbmNsdWRlICJDcmVkZW50aWFsU3RvcmFn
ZS5oIgogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTc5LDYgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IG1fdXJsOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbV91c2VyOwog
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbV9wYXNzOworICAgIENyZWRlbnRpYWwgbV9pbml0
aWFsQ3JlZGVudGlhbDsKICAgICBib29sIG1fYWxsb3dTdG9yZWRDcmVkZW50aWFsczsKICAgICBS
ZXNvdXJjZVJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRh
UmVmPiBtX2RhdGE7CkBAIC0zNzQsNiArMzc2LDE5IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0
YXJ0KEZyYW1lKiBmcmFtZSkKICAgICAgICAgZC0+bV9yZXF1ZXN0LnNldFVSTCh1cmxXaXRoQ3Jl
ZGVudGlhbHMpOwogICAgIH0KIAorICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83MTc0MDUwPiAtIEZv
ciBVUkxzIHRoYXQgbWF0Y2ggdGhlIHBhdGhzIG9mIHRob3NlIHByZXZpb3VzbHkgY2hhbGxlbmdl
ZCBmb3IgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbiwgCisgICAgLy8gdHJ5IGFuZCByZXVzZSB0
aGUgY3JlZGVudGlhbCBwcmVlbXB0aXZlbHksIGFzIGFsbG93ZWQgYnkgUkZDIDI2MTcuCisgICAg
aWYgKCFjbGllbnQoKSB8fCBjbGllbnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UodGhp
cykgJiYgZC0+bV9yZXF1ZXN0LnVybCgpLnByb3RvY29sSW5IVFRQRmFtaWx5KCkpCisgICAgICAg
IGQtPm1faW5pdGlhbENyZWRlbnRpYWwgPSBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RGVmYXVsdEF1
dGhlbnRpY2F0aW9uQ3JlZGVudGlhbChkLT5tX3JlcXVlc3QudXJsKCkpOworICAgICAgICAKKyAg
ICBpZiAoIWQtPm1faW5pdGlhbENyZWRlbnRpYWwuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEFw
cGx5IGJhc2ljIGF1dGggaGVhZGVyCisgICAgICAgIFN0cmluZyB1bmVuY29kZWQgPSBkLT5tX2lu
aXRpYWxDcmVkZW50aWFsLnVzZXIoKSArICI6IiArIGQtPm1faW5pdGlhbENyZWRlbnRpYWwucGFz
c3dvcmQoKTsKKyAgICAgICAgQ1N0cmluZyBlbmNvZGVkID0gdW5lbmNvZGVkLnV0ZjgoKS5iYXNl
NjRFbmNvZGUoKTsKKyAgICAgICAgU3RyaW5nIGF1dGhIZWFkZXIgPSBTdHJpbmc6OmZvcm1hdCgi
QmFzaWMgJXMiLCBlbmNvZGVkLmRhdGEoKSk7CisgICAgICAgIGQtPm1fcmVxdWVzdC5hZGRIVFRQ
SGVhZGVyRmllbGQoIkF1dGhvcml6YXRpb24iLCBhdXRoSGVhZGVyKTsKKyAgICB9CisKICAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiByZXF1ZXN0KEFkb3B0Q0YsIG1ha2VGaW5hbFJlcXVl
c3QoZC0+bV9yZXF1ZXN0LCBkLT5tX3Nob3VsZENvbnRlbnRTbmlmZikpOwogCiAgICAgQ0ZVUkxD
b25uZWN0aW9uQ2xpZW50X1YzIGNsaWVudCA9IHsgMywgdGhpcywgMCwgMCwgMCwgV2ViQ29yZTo6
d2lsbFNlbmRSZXF1ZXN0LCBkaWRSZWNlaXZlUmVzcG9uc2UsIGRpZFJlY2VpdmVEYXRhLCBOVUxM
LCBkaWRGaW5pc2hMb2FkaW5nLCBkaWRGYWlsLCB3aWxsQ2FjaGVSZXNwb25zZSwgZGlkUmVjZWl2
ZUNoYWxsZW5nZSwgZGlkU2VuZEJvZHlEYXRhLCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUNh
bGxiYWNrLCAwfTsKQEAgLTQ0MSw3ICs0NTYsMTIgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlk
UmVjZWl2ZUF1dGhlbnRpYwogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhc3MoQWRv
cHRDRiwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCkpOwogICAgICAgICBSZXRhaW5QdHI8Q0ZV
UkxDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFsKEFkb3B0Q0YsCiAgICAgICAgICAgICBDRlVSTENy
ZWRlbnRpYWxDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXNlci5nZXQoKSwgcGFzcy5nZXQo
KSwgMCwga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkpOwotICAgICAgICBXZWJDb3Jl
Q3JlZGVudGlhbFN0b3JhZ2U6OnNldChDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3Bh
Y2UoY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKSwgY3JlZGVudGlhbC5nZXQoKSk7
CisgICAgICAgIAorICAgICAgICBLVVJMIHVybFRvU3RvcmU7CisgICAgICAgIGlmIChjaGFsbGVu
Z2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCisgICAgICAgICAg
ICB1cmxUb1N0b3JlID0gZC0+bV9yZXF1ZXN0LnVybCgpCisgICAgICAgIENyZWRlbnRpYWxTdG9y
YWdlOjpzZXQoY29yZShjcmVkZW50aWFsLmdldCgpKSwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFj
ZSgpLCB1cmxUb1N0b3JlKTsKKyAgICAgICAgCiAgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNy
ZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjcmVkZW50aWFsLmdldCgpLCBjaGFsbGVu
Z2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwogICAgICAgICBkLT5tX3VzZXIgPSBTdHJpbmco
KTsKICAgICAgICAgZC0+bV9wYXNzID0gU3RyaW5nKCk7CkBAIC00NTAsMTAgKzQ3MCwxMSBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAgfQogCiAgICAgaWYg
KCFjaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSAmJiAoIWNsaWVudCgpIHx8IGNsaWVu
dCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh0aGlzKSkpIHsKLSAgICAgICAgQ0ZVUkxD
cmVkZW50aWFsUmVmIGNyZWRlbnRpYWwgPSBXZWJDb3JlQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChD
RlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2hhbGxlbmdlLmNmVVJMQXV0aENo
YWxsZW5nZVJlZigpKSk7Ci0gICAgICAgIGlmIChjcmVkZW50aWFsKSB7Ci0gICAgICAgICAgICBB
U1NFUlQoQ0ZVUkxDcmVkZW50aWFsR2V0UGVyc2lzdGVuY2UoY3JlZGVudGlhbCkgPT0ga0NGVVJM
Q3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7Ci0gICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25V
c2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY3JlZGVudGlhbCwgY2hhbGxlbmdl
LmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKKyAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFs
ID0gQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOwor
ICAgICAgICBpZiAoIWNyZWRlbnRpYWwuaXNFbXB0eSgpICYmIGNyZWRlbnRpYWwgIT0gZC0+bV9p
bml0aWFsQ3JlZGVudGlhbCkgeworICAgICAgICAgICAgQVNTRVJUKGNyZWRlbnRpYWwucGVyc2lz
dGVuY2UoKSA9PSBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKKyAgICAgICAgICAgIFJldGFp
blB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbChBZG9wdENGLCBjcmVhdGVDRihj
cmVkZW50aWFsKSk7CisgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGQt
Pm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UuY2ZVUkxB
dXRoQ2hhbGxlbmdlUmVmKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQpAQCAtNDc4LDcgKzQ5OSwxMiBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRl
bnRpYWwoCiAgICAgICAgIC8vIHRvIGlnbm9yZSBpdCBmb3IgYSBwYXJ0aWN1bGFyIHJlcXVlc3Qg
KHNob3J0IG9mIHJlbW92aW5nIGl0IGFsdG9nZXRoZXIpLgogICAgICAgICBDcmVkZW50aWFsIHdl
YkNyZWRlbnRpYWwoY3JlZGVudGlhbC51c2VyKCksIGNyZWRlbnRpYWwucGFzc3dvcmQoKSwgQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7CiAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRp
YWxSZWY+IGNmQ3JlZGVudGlhbChBZG9wdENGLCBjcmVhdGVDRih3ZWJDcmVkZW50aWFsKSk7Ci0g
ICAgICAgIFdlYkNvcmVDcmVkZW50aWFsU3RvcmFnZTo6c2V0KENGVVJMQXV0aENoYWxsZW5nZUdl
dFByb3RlY3Rpb25TcGFjZShjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpLCBjZkNy
ZWRlbnRpYWwuZ2V0KCkpOworICAgICAgICAKKyAgICAgICAgS1VSTCB1cmxUb1N0b3JlOworICAg
ICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0g
NDAxKQorICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGQtPm1fcmVxdWVzdC51cmwoKSAgICAgICAg
CisgICAgICAgIENyZWRlbnRpYWxTdG9yYWdlOjpzZXQod2ViQ3JlZGVudGlhbCwgY2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZSgpLCB1cmxUb1N0b3JlKTsKKwogICAgICAgICBDRlVSTENvbm5lY3Rp
b25Vc2VDcmVkZW50aWFsKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgp
LCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbChBZG9wdENGLCBj
cmVhdGVDRihjcmVkZW50aWFsKSk7CkBAIC02NTksMTkgKzY4NSwyOCBAQCB2b2lkIFdlYkNvcmVT
eW5jaHJvbm91c0xvYWRlcjo6ZGlkUmVjZWl2CiAgICAgV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVy
KiBsb2FkZXIgPSBzdGF0aWNfY2FzdDxXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIqPihjb25zdF9j
YXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CiAKICAgICBpZiAobG9hZGVyLT5tX3VzZXIgJiYgbG9h
ZGVyLT5tX3Bhc3MpIHsKLSAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3Jl
ZGVudGlhbChBZG9wdENGLAotICAgICAgICAgICAgQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGxvYWRlci0+bV91c2VyLmdldCgpLCBsb2FkZXItPm1fcGFzcy5nZXQo
KSwgMCwga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkpOwotICAgICAgICBXZWJDb3Jl
Q3JlZGVudGlhbFN0b3JhZ2U6OnNldChDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3Bh
Y2UoY2hhbGxlbmdlKSwgY3JlZGVudGlhbC5nZXQoKSk7Ci0gICAgICAgIENGVVJMQ29ubmVjdGlv
blVzZUNyZWRlbnRpYWwoY29ubiwgY3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlKTsKKyAgICAg
ICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsKGxvYWRlci0+bV91c2VyLmdldCgpLCBsb2FkZXItPm1f
cGFzcy5nZXQoKSwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7CisgICAgICAgIFJldGFpblB0
cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbChBZG9wdENGLCBjcmVhdGVDRihjcmVk
ZW50aWFsKSk7CisgICAgICAgIAorICAgICAgICBDRlVSTFJlc3BvbnNlUmVmIHVybFJlc3BvbnNl
ID0gQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0RmFpbHVyZVJlc3BvbnNlKGNoYWxsZW5nZSk7CisgICAg
ICAgIENGSFRUUE1lc3NhZ2VSZWYgaHR0cFJlc3BvbnNlID0gdXJsUmVzcG9uc2UgPyBDRlVSTFJl
c3BvbnNlR2V0SFRUUFJlc3BvbnNlKHVybFJlc3BvbnNlKSA6IDA7CisgICAgICAgIEtVUkwgdXJs
VG9TdG9yZTsKKyAgICAgICAgaWYgKGh0dHBSZXNwb25zZSAmJiBDRkhUVFBNZXNzYWdlR2V0UmVz
cG9uc2VTdGF0dXNDb2RlKGh0dHBSZXNwb25zZSkgPT0gNDAxKQorICAgICAgICAgICAgdXJsVG9T
dG9yZSA9IGxvYWRlci0+bV91cmw7CisgICAgICAgICAgICAKKyAgICAgICAgQ3JlZGVudGlhbFN0
b3JhZ2U6OnNldChjcmVkZW50aWFsLCBjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rp
b25TcGFjZShjaGFsbGVuZ2UpKSwgdXJsVG9TdG9yZSk7CisgICAgICAgIAorICAgICAgICBDRlVS
TENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGNvbm4sIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxl
bmdlKTsKICAgICAgICAgbG9hZGVyLT5tX3VzZXIgPSAwOwogICAgICAgICBsb2FkZXItPm1fcGFz
cyA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKCFDRlVSTEF1dGhDaGFsbGVu
Z2VHZXRQcmV2aW91c0ZhaWx1cmVDb3VudChjaGFsbGVuZ2UpICYmIGxvYWRlci0+bV9hbGxvd1N0
b3JlZENyZWRlbnRpYWxzKSB7Ci0gICAgICAgIENGVVJMQ3JlZGVudGlhbFJlZiBjcmVkZW50aWFs
ID0gV2ViQ29yZUNyZWRlbnRpYWxTdG9yYWdlOjpnZXQoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJv
dGVjdGlvblNwYWNlKGNoYWxsZW5nZSkpOwotICAgICAgICBpZiAoY3JlZGVudGlhbCkgewotICAg
ICAgICAgICAgQVNTRVJUKENGVVJMQ3JlZGVudGlhbEdldFBlcnNpc3RlbmNlKGNyZWRlbnRpYWwp
ID09IGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwotICAgICAgICAgICAgQ0ZVUkxD
b25uZWN0aW9uVXNlQ3JlZGVudGlhbChjb25uLCBjcmVkZW50aWFsLCBjaGFsbGVuZ2UpOworICAg
ICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KGNvcmUo
Q0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNoYWxsZW5nZSkpKTsKKyAgICAg
ICAgaWYgKCFjcmVkZW50aWFsLmlzRW1wdHkoKSAmJiBjcmVkZW50aWFsICE9IGxvYWRlci0+bV9p
bml0aWFsQ3JlZGVudGlhbCkgeworICAgICAgICAgICAgQVNTRVJUKGNyZWRlbnRpYWwucGVyc2lz
dGVuY2UoKSA9PSBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKKyAgICAgICAgICAgIFJldGFp
blB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbChBZG9wdENGLCBjcmVhdGVDRihj
cmVkZW50aWFsKSk7CisgICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGNv
bm4sIGNmQ3JlZGVudGlhbC5nZXQoKSwgY2hhbGxlbmdlKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KQEAgLTcwNyw4ICs3NDIsMjMgQEAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gV2ViQ29yZVN5bmNocm9ub3VzTAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdFdp
dGhvdXRDcmVkZW50aWFscyhyZXF1ZXN0KTsKICAgICAgICAgcmVxdWVzdFdpdGhvdXRDcmVkZW50
aWFscy5yZW1vdmVDcmVkZW50aWFscygpOwogICAgICAgICBjZlJlcXVlc3QuYWRvcHRDRihtYWtl
RmluYWxSZXF1ZXN0KHJlcXVlc3RXaXRob3V0Q3JlZGVudGlhbHMsIFJlc291cmNlSGFuZGxlOjpz
aG91bGRDb250ZW50U25pZmZVUkwocmVxdWVzdFdpdGhvdXRDcmVkZW50aWFscy51cmwoKSkpKTsK
LSAgICB9IGVsc2UKLSAgICAgICAgY2ZSZXF1ZXN0LmFkb3B0Q0YobWFrZUZpbmFsUmVxdWVzdChy
ZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxkQ29udGVudFNuaWZmVVJMKHJlcXVlc3QudXJs
KCkpKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzcxNzQwNTA+
IC0gRm9yIFVSTHMgdGhhdCBtYXRjaCB0aGUgcGF0aHMgb2YgdGhvc2UgcHJldmlvdXNseSBjaGFs
bGVuZ2VkIGZvciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uLCAKKyAgICAgICAgLy8gdHJ5IGFu
ZCByZXVzZSB0aGUgY3JlZGVudGlhbCBwcmVlbXB0aXZlbHksIGFzIGFsbG93ZWQgYnkgUkZDIDI2
MTcuCisgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0V2l0aEluaXRpYWxDcmVkZW50aWFs
KHJlcXVlc3QpOworICAgICAgICBpZiAobG9hZGVyLm1fYWxsb3dTdG9yZWRDcmVkZW50aWFscyAm
JiB1cmwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkKKyAgICAgICAgICAgIG1faW5pdGlhbENyZWRl
bnRpYWwgPSBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RGVmYXVsdEF1dGhlbnRpY2F0aW9uQ3JlZGVu
dGlhbCh1cmwpOworCisgICAgICAgIGlmICghbV9pbml0aWFsQ3JlZGVudGlhbC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgIC8vIEFwcGx5IGJhc2ljIGF1dGggaGVhZGVyCisgICAgICAgICAgICBT
dHJpbmcgdW5lbmNvZGVkID0gbV9pbml0aWFsQ3JlZGVudGlhbC51c2VyKCkgKyAiOiIgKyBtX2lu
aXRpYWxDcmVkZW50aWFsLnBhc3N3b3JkKCk7CisgICAgICAgICAgICBDU3RyaW5nIGVuY29kZWQg
PSB1bmVuY29kZWQudXRmOCgpLmJhc2U2NEVuY29kZSgpOworICAgICAgICAgICAgU3RyaW5nIGF1
dGhIZWFkZXIgPSBTdHJpbmc6OmZvcm1hdCgiQmFzaWMgJXMiLCBlbmNvZGVkLmRhdGEoKSk7Cisg
ICAgICAgICAgICByZXF1ZXN0V2l0aEluaXRpYWxDcmVkZW50aWFsLmFkZEhUVFBIZWFkZXJGaWVs
ZCgiQXV0aG9yaXphdGlvbiIsIGF1dGhIZWFkZXIpOworICAgICAgICB9CisKKyAgICAgICAgY2ZS
ZXF1ZXN0LmFkb3B0Q0YobWFrZUZpbmFsUmVxdWVzdChyZXF1ZXN0V2l0aEluaXRpYWxDcmVkZW50
aWFsLCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxkQ29udGVudFNuaWZmVVJMKHJlcXVlc3RXaXRoSW5p
dGlhbENyZWRlbnRpYWwudXJsKCkpKSk7CisgICAgfQogCiAgICAgQ0ZVUkxDb25uZWN0aW9uQ2xp
ZW50X1YzIGNsaWVudCA9IHsgMywgJmxvYWRlciwgMCwgMCwgMCwgd2lsbFNlbmRSZXF1ZXN0LCBk
aWRSZWNlaXZlUmVzcG9uc2UsIGRpZFJlY2VpdmVEYXRhLCAwLCBkaWRGaW5pc2hMb2FkaW5nLCBk
aWRGYWlsLCAwLCBkaWRSZWNlaXZlQ2hhbGxlbmdlLCAwLCBzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZSwgMCB9OwogICAgIFJldGFpblB0cjxDRlVSTENvbm5lY3Rpb25SZWY+IGNvbm5lY3Rpb24o
QWRvcHRDRiwgQ0ZVUkxDb25uZWN0aW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNmUmVx
dWVzdC5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxDRlVSTENvbm5lY3Rpb25DbGllbnQqPigmY2xp
ZW50KSkpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlv
bk1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVu
dGljYXRpb25NYWMuaAkocmV2aXNpb24gNDgzMzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDI0ICs0NSw2
IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNvcmUoTlNVUkxBdXRoZW4KIFByb3RlY3Rpb25T
cGFjZSBjb3JlKE5TVVJMUHJvdGVjdGlvblNwYWNlICopOwogQ3JlZGVudGlhbCBjb3JlKE5TVVJM
Q3JlZGVudGlhbCAqKTsKIAotY2xhc3MgV2ViQ29yZUNyZWRlbnRpYWxTdG9yYWdlIHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgdm9pZCBzZXQoTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsLCBOU1VS
TFByb3RlY3Rpb25TcGFjZSAqcHJvdGVjdGlvblNwYWNlKQotICAgIHsKLSAgICAgICAgaWYgKCFt
X3N0b3JhZ2UpCi0gICAgICAgICAgICBtX3N0b3JhZ2UgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRdOwotICAgICAgICBbbV9zdG9yYWdlIHNldE9iamVjdDpjcmVkZW50aWFsIGZv
cktleTpwcm90ZWN0aW9uU3BhY2VdOwotICAgIH0KLQotICAgIHN0YXRpYyBOU1VSTENyZWRlbnRp
YWwgKmdldChOU1VSTFByb3RlY3Rpb25TcGFjZSAqcHJvdGVjdGlvblNwYWNlKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5TVVJMQ3JlZGVudGlhbCAqPihbbV9zdG9yYWdlIG9i
amVjdEZvcktleTpwcm90ZWN0aW9uU3BhY2VdKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3Rh
dGljIE5TTXV0YWJsZURpY3Rpb25hcnkqIG1fc3RvcmFnZTsKLX07Ci0KIH0KICNlbmRpZgogCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25N
YWMubW0JKHJldmlzaW9uIDQ4MzM0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9B
dXRoZW50aWNhdGlvbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLQotTlNNdXRhYmxlRGljdGlvbmFyeSogV2ViQ29yZUNyZWRl
bnRpYWxTdG9yYWdlOjptX3N0b3JhZ2U7Ci0KIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFj
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBDcmVkZW50aWFsJiBwcm9wb3NlZENyZWRlbnRpYWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcHJldmlvdXNGYWlsdXJlQ291bnQs
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW0JKHJldmlzaW9uIDQ4MzM0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOCBAQAog
I2ltcG9ydCAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIkF1dGhlbnRpY2F0
aW9uTWFjLmgiCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKKyNpbXBvcnQgIkNTdHJpbmcu
aCIKKyNpbXBvcnQgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAjaW1wb3J0ICJEb2NMb2FkZXIuaCIK
ICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtTWFjLmgiCiAjaW1wb3J0ICJGcmFtZS5oIgpAQCAtNzQs
NiArNzYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICBOU1VSTCAqbV91cmw7CiAg
ICAgTlNTdHJpbmcgKm1fdXNlcjsKICAgICBOU1N0cmluZyAqbV9wYXNzOworICAgIENyZWRlbnRp
YWwgbV9pbml0aWFsQ3JlZGVudGlhbDsKICAgICBCT09MIG1fYWxsb3dTdG9yZWRDcmVkZW50aWFs
czsKICAgICBOU1VSTFJlc3BvbnNlICptX3Jlc3BvbnNlOwogICAgIE5TTXV0YWJsZURhdGEgKm1f
ZGF0YTsKQEAgLTE2Nyw2ICsxNzAsMTkgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoRnJh
bWUqIGZyYW1lKQogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhkLT5tX3Bhc3Mp
OwogICAgICAgICBkLT5tX3JlcXVlc3Quc2V0VVJMKHVybFdpdGhDcmVkZW50aWFscyk7CiAgICAg
fQorICAgIAorICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83MTc0MDUwPiAtIEZvciBVUkxzIHRoYXQg
bWF0Y2ggdGhlIHBhdGhzIG9mIHRob3NlIHByZXZpb3VzbHkgY2hhbGxlbmdlZCBmb3IgSFRUUCBC
YXNpYyBhdXRoZW50aWNhdGlvbiwgCisgICAgLy8gdHJ5IGFuZCByZXVzZSB0aGUgY3JlZGVudGlh
bCBwcmVlbXB0aXZlbHksIGFzIGFsbG93ZWQgYnkgUkZDIDI2MTcuCisgICAgaWYgKCFjbGllbnQo
KSB8fCBjbGllbnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UodGhpcykgJiYgZC0+bV9y
ZXF1ZXN0LnVybCgpLnByb3RvY29sSW5IVFRQRmFtaWx5KCkpCisgICAgICAgIGQtPm1faW5pdGlh
bENyZWRlbnRpYWwgPSBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0RGVmYXVsdEF1dGhlbnRpY2F0aW9u
Q3JlZGVudGlhbChkLT5tX3JlcXVlc3QudXJsKCkpOworICAgICAgICAKKyAgICBpZiAoIWQtPm1f
aW5pdGlhbENyZWRlbnRpYWwuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIEFwcGx5IGJhc2ljIGF1
dGggaGVhZGVyCisgICAgICAgIFN0cmluZyB1bmVuY29kZWQgPSBkLT5tX2luaXRpYWxDcmVkZW50
aWFsLnVzZXIoKSArICI6IiArIGQtPm1faW5pdGlhbENyZWRlbnRpYWwucGFzc3dvcmQoKTsKKyAg
ICAgICAgQ1N0cmluZyBlbmNvZGVkID0gdW5lbmNvZGVkLnV0ZjgoKS5iYXNlNjRFbmNvZGUoKTsK
KyAgICAgICAgU3RyaW5nIGF1dGhIZWFkZXIgPSBTdHJpbmc6OmZvcm1hdCgiQmFzaWMgJXMiLCBl
bmNvZGVkLmRhdGEoKSk7CisgICAgICAgIGQtPm1fcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGQo
IkF1dGhvcml6YXRpb24iLCBhdXRoSGVhZGVyKTsKKyAgICB9CiAKICAgICBpZiAoIVJlc291cmNl
SGFuZGxlOjpkaWRTZW5kQm9keURhdGFEZWxlZ2F0ZUV4aXN0cygpKQogICAgICAgICBhc3NvY2lh
dGVTdHJlYW1XaXRoUmVzb3VyY2VIYW5kbGUoW2QtPm1fcmVxdWVzdC5uc1VSTFJlcXVlc3QoKSBI
VFRQQm9keVN0cmVhbV0sIHRoaXMpOwpAQCAtNDU4LDkgKzQ3NCw5IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWMKICAgICB9CiAKICAgICBpZiAoIWNoYWxsZW5nZS5w
cmV2aW91c0ZhaWx1cmVDb3VudCgpICYmICghY2xpZW50KCkgfHwgY2xpZW50KCktPnNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMpKSkgewotICAgICAgICBOU1VSTENyZWRlbnRpYWwgKmNy
ZWRlbnRpYWwgPSBXZWJDb3JlQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChbbWFjKGNoYWxsZW5nZSkg
cHJvdGVjdGlvblNwYWNlXSk7Ci0gICAgICAgIGlmIChjcmVkZW50aWFsKSB7Ci0gICAgICAgICAg
ICBbY2hhbGxlbmdlLnNlbmRlcigpIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlhbCBmb3JBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTptYWMoY2hhbGxlbmdlKV07CisgICAgICAgIENyZWRlbnRpYWwgY3Jl
ZGVudGlhbCA9IENyZWRlbnRpYWxTdG9yYWdlOjpnZXQoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFj
ZSgpKTsKKyAgICAgICAgaWYgKCFjcmVkZW50aWFsLmlzRW1wdHkoKSAmJiBjcmVkZW50aWFsICE9
IGQtPm1faW5pdGlhbENyZWRlbnRpYWwpIHsKKyAgICAgICAgICAgIFtjaGFsbGVuZ2Uuc2VuZGVy
KCkgdXNlQ3JlZGVudGlhbDptYWMoY3JlZGVudGlhbCkgZm9yQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6bWFjKGNoYWxsZW5nZSldOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQpAQCAtNDk1LDcgKzUxMSwxMSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRl
bnRpYWwoCiAgICAgaWYgKGNyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSA9PSBDcmVkZW50aWFsUGVy
c2lzdGVuY2VOb25lKSB7CiAgICAgICAgIC8vIE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9u
ZSBkb2Vzbid0IHdvcmsgb24gVGlnZXIsIHNvIHdlIGhhdmUgdG8gdXNlIHNlc3Npb24gcGVyc2lz
dGVuY2UuCiAgICAgICAgIENyZWRlbnRpYWwgd2ViQ3JlZGVudGlhbChjcmVkZW50aWFsLnVzZXIo
KSwgY3JlZGVudGlhbC5wYXNzd29yZCgpLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9u
KTsKLSAgICAgICAgV2ViQ29yZUNyZWRlbnRpYWxTdG9yYWdlOjpzZXQobWFjKHdlYkNyZWRlbnRp
YWwpLCBbZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlIHByb3RlY3Rpb25TcGFjZV0pOworICAgICAg
ICBLVVJMIHVybFRvU3RvcmU7CisgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNl
KCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCisgICAgICAgICAgICB1cmxUb1N0b3JlID0gZC0+
bV9yZXF1ZXN0LnVybCgpOworICAgICAgICBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KHdlYkNyZWRl
bnRpYWwsIGNvcmUoW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBwcm90ZWN0aW9uU3BhY2VdKSwg
dXJsVG9TdG9yZSk7CisgICAgICAgIAogICAgICAgICBbW2QtPm1fY3VycmVudE1hY0NoYWxsZW5n
ZSBzZW5kZXJdIHVzZUNyZWRlbnRpYWw6bWFjKHdlYkNyZWRlbnRpYWwpIGZvckF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOmQtPm1fY3VycmVudE1hY0NoYWxsZW5nZV07CiAgICAgfSBlbHNlCiAjZWxz
ZQpAQCAtNTA0LDcgKzUyNCwxMSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRl
bnRpYWwoCiAgICAgICAgIC8vIHRvIGlnbm9yZSBpdCBmb3IgYSBwYXJ0aWN1bGFyIHJlcXVlc3Qg
KHNob3J0IG9mIHJlbW92aW5nIGl0IGFsdG9nZXRoZXIpLgogICAgICAgICAvLyA8cmRhcjovL3By
b2JsZW0vNjg2NzU5OD4gZ2FsbGVyeS5tZS5jb20gaXMgdGVtcG9yYXJpbHkgd2hpdGVsaXN0ZWQs
IHNvIHRoYXQgUXVpY2tUaW1lIHBsdWctaW4gY291bGQgc2VlIHRoZSBjcmVkZW50aWFscy4KICAg
ICAgICAgQ3JlZGVudGlhbCB3ZWJDcmVkZW50aWFsKGNyZWRlbnRpYWwudXNlcigpLCBjcmVkZW50
aWFsLnBhc3N3b3JkKCksIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwotICAgICAgICBXZWJD
b3JlQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChtYWMod2ViQ3JlZGVudGlhbCksIFtkLT5tX2N1cnJl
bnRNYWNDaGFsbGVuZ2UgcHJvdGVjdGlvblNwYWNlXSk7CisgICAgICAgIEtVUkwgdXJsVG9TdG9y
ZTsKKyAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29k
ZSgpID09IDQwMSkKKyAgICAgICAgICAgIHVybFRvU3RvcmUgPSBkLT5tX3JlcXVlc3QudXJsKCk7
CisgICAgICAgIENyZWRlbnRpYWxTdG9yYWdlOjpzZXQod2ViQ3JlZGVudGlhbCwgY29yZShbZC0+
bV9jdXJyZW50TWFjQ2hhbGxlbmdlIHByb3RlY3Rpb25TcGFjZV0pLCB1cmxUb1N0b3JlKTsKKyAg
ICAgICAgCiAgICAgICAgIFtbZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlIHNlbmRlcl0gdXNlQ3Jl
ZGVudGlhbDptYWMod2ViQ3JlZGVudGlhbCkgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6ZC0+
bV9jdXJyZW50TWFjQ2hhbGxlbmdlXTsKICAgICB9IGVsc2UKICNlbmRpZgpAQCAtODk4LDcgKzky
MiwxMSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvCiAgICAgICAg
IE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCA9IFtbTlNVUkxDcmVkZW50aWFsIGFsbG9jXSBp
bml0V2l0aFVzZXI6bV91c2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ6bV9wYXNzCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVy
c2lzdGVuY2U6TlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lXTsKLSAgICAgICAgV2ViQ29y
ZUNyZWRlbnRpYWxTdG9yYWdlOjpzZXQoY3JlZGVudGlhbCwgW2NoYWxsZW5nZSBwcm90ZWN0aW9u
U3BhY2VdKTsKKyAgICAgICAgS1VSTCB1cmxUb1N0b3JlOworICAgICAgICBpZiAoW1tjaGFsbGVu
Z2UgZmFpbHVyZVJlc3BvbnNlXSBpc0tpbmRPZkNsYXNzOltOU0hUVFBVUkxSZXNwb25zZSBjbGFz
c11dICYmIFsoTlNIVFRQVVJMUmVzcG9uc2UqKVtjaGFsbGVuZ2UgZmFpbHVyZVJlc3BvbnNlXSBz
dGF0dXNDb2RlXSA9PSA0MDEpCisgICAgICAgICAgICB1cmxUb1N0b3JlID0gbV91cmw7CisgICAg
ICAgIENyZWRlbnRpYWxTdG9yYWdlOjpzZXQoY29yZShjcmVkZW50aWFsKSwgY29yZShbY2hhbGxl
bmdlIHByb3RlY3Rpb25TcGFjZV0pLCB1cmxUb1N0b3JlKTsKKyAgICAgICAgCiAgICAgICAgIFtb
Y2hhbGxlbmdlIHNlbmRlcl0gdXNlQ3JlZGVudGlhbDpjcmVkZW50aWFsIGZvckF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZV07CiAgICAgICAgIFtjcmVkZW50aWFsIHJlbGVhc2VdOwog
ICAgICAgICBbbV91c2VyIHJlbGVhc2VdOwpAQCAtOTA4LDEwICs5MzYsMTAgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpbwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGlmIChbY2hhbGxlbmdlIHByZXZpb3VzRmFpbHVyZUNvdW50XSA9PSAwICYmIG1fYWxsb3dT
dG9yZWRDcmVkZW50aWFscykgewotICAgICAgICBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwg
PSBXZWJDb3JlQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChbY2hhbGxlbmdlIHByb3RlY3Rpb25TcGFj
ZV0pOwotICAgICAgICBBU1NFUlQoW2NyZWRlbnRpYWwgcGVyc2lzdGVuY2VdID09IE5TVVJMQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7Ci0gICAgICAgIGlmIChjcmVkZW50aWFsKSB7Ci0gICAg
ICAgICAgICBbW2NoYWxsZW5nZSBzZW5kZXJdIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlhbCBmb3JB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2VdOworICAgICAgICBDcmVkZW50aWFsIGNy
ZWRlbnRpYWwgPSBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KGNvcmUoW2NoYWxsZW5nZSBwcm90ZWN0
aW9uU3BhY2VdKSk7CisgICAgICAgIEFTU0VSVChjcmVkZW50aWFsLnBlcnNpc3RlbmNlKCkgPT0g
Q3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7CisgICAgICAgIGlmICghY3JlZGVudGlhbC5pc0Vt
cHR5KCkgJiYgY3JlZGVudGlhbCAhPSBtX2luaXRpYWxDcmVkZW50aWFsKSB7CisgICAgICAgICAg
ICBbW2NoYWxsZW5nZSBzZW5kZXJdIHVzZUNyZWRlbnRpYWw6bWFjKGNyZWRlbnRpYWwpIGZvckF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZV07CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9CkBAIC05NzUsMjEgKzEwMDMsMzUgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZTo6cmVjZWl2ZWRDYW5jZWxsYXRpbwogewogICAgIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRlciAq
ZGVsZWdhdGUgPSBbW1dlYkNvcmVTeW5jaHJvbm91c0xvYWRlciBhbGxvY10gaW5pdF07CiAKLSAg
ICBOU1VSTCAqdXJsID0gW3JlcXVlc3QgVVJMXTsKLSAgICBkZWxlZ2F0ZS0+bV91c2VyID0gW1t1
cmwgdXNlcl0gY29weV07Ci0gICAgZGVsZWdhdGUtPm1fcGFzcyA9IFtbdXJsIHBhc3N3b3JkXSBj
b3B5XTsKKyAgICBLVVJMIHVybChbcmVxdWVzdCBVUkxdKTsKKyAgICBkZWxlZ2F0ZS0+bV91c2Vy
ID0gW25zU3RyaW5nTmlsSWZFbXB0eSh1cmwudXNlcigpKSByZXRhaW5dOworICAgIGRlbGVnYXRl
LT5tX3Bhc3MgPSBbbnNTdHJpbmdOaWxJZkVtcHR5KHVybC5wYXNzKCkpIHJldGFpbl07CiAgICAg
ZGVsZWdhdGUtPm1fYWxsb3dTdG9yZWRDcmVkZW50aWFscyA9IGFsbG93U3RvcmVkQ3JlZGVudGlh
bHM7CiAKICAgICBOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb247CiAKICAgICAvLyBUYWtlIHVz
ZXIvcGFzcyBvdXQgb2YgdGhlIFVSTC4KICAgICAvLyBDcmVkZW50aWFscyBmb3IgZnRwIGNhbiBv
bmx5IGJlIHBhc3NlZCBpbiBVUkwsIHRoZSBjb25uZWN0aW9uOmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTogZGVsZWdhdGUgY2FsbCB3b24ndCBiZSBtYWRlLgotICAgIGlmICgoZGVs
ZWdhdGUtPm1fdXNlciB8fCBkZWxlZ2F0ZS0+bV9wYXNzKSAmJiBLVVJMKHVybCkucHJvdG9jb2xJ
bkhUVFBGYW1pbHkoKSkgeworICAgIGlmICgoZGVsZWdhdGUtPm1fdXNlciB8fCBkZWxlZ2F0ZS0+
bV9wYXNzKSAmJiB1cmwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdFdpdGhvdXRDcmVkZW50aWFscyA9IHJlcXVlc3Q7CiAgICAgICAgIHJl
cXVlc3RXaXRob3V0Q3JlZGVudGlhbHMucmVtb3ZlQ3JlZGVudGlhbHMoKTsKICAgICAgICAgY29u
bmVjdGlvbiA9IFtbTlNVUkxDb25uZWN0aW9uIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6cmVxdWVz
dFdpdGhvdXRDcmVkZW50aWFscy5uc1VSTFJlcXVlc3QoKSBkZWxlZ2F0ZTpkZWxlZ2F0ZSBzdGFy
dEltbWVkaWF0ZWx5Ok5PXTsKLSAgICB9IGVsc2UKLSAgICAgICAgY29ubmVjdGlvbiA9IFtbTlNV
UkxDb25uZWN0aW9uIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6cmVxdWVzdCBkZWxlZ2F0ZTpkZWxl
Z2F0ZSBzdGFydEltbWVkaWF0ZWx5Ok5PXTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyA8cmRh
cjovL3Byb2JsZW0vNzE3NDA1MD4gLSBGb3IgVVJMcyB0aGF0IG1hdGNoIHRoZSBwYXRocyBvZiB0
aG9zZSBwcmV2aW91c2x5IGNoYWxsZW5nZWQgZm9yIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24s
IAorICAgICAgICAvLyB0cnkgYW5kIHJldXNlIHRoZSBjcmVkZW50aWFsIHByZWVtcHRpdmVseSwg
YXMgYWxsb3dlZCBieSBSRkMgMjYxNy4KKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3RX
aXRoSW5pdGlhbENyZWRlbnRpYWxzID0gcmVxdWVzdDsKKyAgICAgICAgaWYgKGFsbG93U3RvcmVk
Q3JlZGVudGlhbHMgJiYgdXJsLnByb3RvY29sSW5IVFRQRmFtaWx5KCkpCisgICAgICAgICAgICBk
ZWxlZ2F0ZS0+bV9pbml0aWFsQ3JlZGVudGlhbCA9IENyZWRlbnRpYWxTdG9yYWdlOjpnZXREZWZh
dWx0QXV0aGVudGljYXRpb25DcmVkZW50aWFsKHVybCk7CisgICAgICAgICAgICAKKyAgICAgICAg
aWYgKCFkZWxlZ2F0ZS0+bV9pbml0aWFsQ3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgIC8vIEFwcGx5IGJhc2ljIGF1dGggaGVhZGVyCisgICAgICAgICAgICBTdHJpbmcgdW5lbmNv
ZGVkID0gZGVsZWdhdGUtPm1faW5pdGlhbENyZWRlbnRpYWwudXNlcigpICsgIjoiICsgZGVsZWdh
dGUtPm1faW5pdGlhbENyZWRlbnRpYWwucGFzc3dvcmQoKTsKKyAgICAgICAgICAgIENTdHJpbmcg
ZW5jb2RlZCA9IHVuZW5jb2RlZC51dGY4KCkuYmFzZTY0RW5jb2RlKCk7CisgICAgICAgICAgICBT
dHJpbmcgYXV0aEhlYWRlciA9IFN0cmluZzo6Zm9ybWF0KCJCYXNpYyAlcyIsIGVuY29kZWQuZGF0
YSgpKTsKKyAgICAgICAgICAgIHJlcXVlc3RXaXRoSW5pdGlhbENyZWRlbnRpYWxzLmFkZEhUVFBI
ZWFkZXJGaWVsZCgiQXV0aG9yaXphdGlvbiIsIGF1dGhIZWFkZXIpOworICAgICAgICB9CisgICAg
ICAgIGNvbm5lY3Rpb24gPSBbW05TVVJMQ29ubmVjdGlvbiBhbGxvY10gaW5pdFdpdGhSZXF1ZXN0
OnJlcXVlc3RXaXRoSW5pdGlhbENyZWRlbnRpYWxzLm5zVVJMUmVxdWVzdCgpIGRlbGVnYXRlOmRl
bGVnYXRlIHN0YXJ0SW1tZWRpYXRlbHk6Tk9dOworICAgIH0KIAogICAgIFtjb25uZWN0aW9uIHNj
aGVkdWxlSW5SdW5Mb29wOltOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIGZvck1vZGU6V2ViQ29y
ZVN5bmNocm9ub3VzTG9hZGVyUnVuTG9vcE1vZGVdOwogICAgIFtjb25uZWN0aW9uIHN0YXJ0XTsK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9DU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL3RleHQvQ1N0cmluZy5jcHAJKHJldmlzaW9uIDQ4MzM0KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0NTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDgsIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNywxMCArMjcsMTkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDU3RyaW5nLmgiCiAKKyNpbmNsdWRlICJCYXNlNjQuaCIKKwogdXNpbmcgc3RkOjptaW47
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxDU3RyaW5nQnVmZmVyPiBDU3Ry
aW5nQnVmZmVyOjpiYXNlNjRFbmNvZGUoKQoreworICAgIFZlY3RvcjxjaGFyPiBlbmNvZGVkOwor
ICAgIFdlYkNvcmU6OmJhc2U2NEVuY29kZShtX3ZlY3RvciwgZW5jb2RlZCk7CisgICAgcmV0dXJu
IENTdHJpbmdCdWZmZXI6OmNyZWF0ZShlbmNvZGVkKTsKK30KKwogQ1N0cmluZzo6Q1N0cmluZyhj
b25zdCBjaGFyKiBzdHIpCiB7CiAgICAgaW5pdChzdHIsIHN0cmxlbihzdHIpKTsKQEAgLTkwLDYg
Kzk5LDExIEBAIHZvaWQgQ1N0cmluZzo6Y29weUJ1ZmZlcklmTmVlZGVkKCkKICAgICBtZW1jcHko
bV9idWZmZXItPm11dGFibGVEYXRhKCksIG1fdGVtcC0+ZGF0YSgpLCBsZW4pOwogfQogCitDU3Ry
aW5nIENTdHJpbmc6OmJhc2U2NEVuY29kZSgpCit7CisgICAgcmV0dXJuIENTdHJpbmcobV9idWZm
ZXItPmJhc2U2NEVuY29kZSgpLmdldCgpKTsKK30KKwogYm9vbCBvcGVyYXRvcj09KGNvbnN0IENT
dHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpCiB7CiAgICAgaWYgKGEuaXNOdWxsKCkgIT0gYi5p
c051bGwoKSkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9DU3RyaW5nLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0NTdHJpbmcuaAkocmV2aXNpb24gNDgzMzQpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvQ1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDgs
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00Myw5ICs0MywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBDU3RyaW5nOwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENT
dHJpbmdCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDU3RyaW5nQnVmZmVyKGxlbmd0aCkpOyB9CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENT
dHJpbmdCdWZmZXI+IGNyZWF0ZShjb25zdCBWZWN0b3I8Y2hhcj4mIHZlY3RvclRvQWRvcHQpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDU3RyaW5nQnVmZmVyKHZlY3RvclRvQWRvcHQpKTsgfQogICAg
ICAgICBDU3RyaW5nQnVmZmVyKHVuc2lnbmVkIGxlbmd0aCkgOiBtX3ZlY3RvcihsZW5ndGgpIHsg
fQorICAgICAgICBDU3RyaW5nQnVmZmVyKGNvbnN0IFZlY3RvcjxjaGFyPiYgdmVjdG9yVG9BZG9w
dCkgOiBtX3ZlY3Rvcih2ZWN0b3JUb0Fkb3B0KSB7IH0KICAgICAgICAgY2hhciogbXV0YWJsZURh
dGEoKSB7IHJldHVybiBtX3ZlY3Rvci5kYXRhKCk7IH0KIAorICAgICAgICBQYXNzUmVmUHRyPENT
dHJpbmdCdWZmZXI+IGJhc2U2NEVuY29kZSgpOwogICAgICAgICBWZWN0b3I8Y2hhcj4gbV92ZWN0
b3I7CiAgICAgfTsKIApAQCAtNTksNiArNjIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIENTdHJpbmcoQ1N0cmluZ0J1ZmZlciogYnVmZmVyKSA6IG1fYnVmZmVyKGJ1ZmZlcikgeyB9
CiAgICAgICAgIHN0YXRpYyBDU3RyaW5nIG5ld1VuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCwg
Y2hhciomIGNoYXJhY3RlckJ1ZmZlcik7CiAKKyAgICAgICAgQ1N0cmluZyBiYXNlNjRFbmNvZGUo
KTsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKICAgICAgICAg
Y2hhciogbXV0YWJsZURhdGEoKTsKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Cklu
ZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5n
ZUxvZwkocmV2aXNpb24gNDgzMzQpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDA5LTA5LTEyICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTYWZhcmkgNCBjYW5ub3QgYmUgdXNlZCB0byB1cGRhdGUgZmlybXdhcmUgb24gTGlua3N5
cyByb3V0ZXJzLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE3NDA1MD4gYW5kIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTE2MAorCisgICAgICAgIEFkb3B0IHRo
ZSBuZXcgV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2UgaW4gV2ViS2l0L01hYy4KKworICAgICAg
ICAqIE1pc2MvV2ViRG93bmxvYWQubW06CisgICAgICAgICgtW1dlYkRvd25sb2FkSW50ZXJuYWwg
ZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl0pOgorICAgICAgICAq
IFBsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKFdlYktpdDo6
Z2V0QXV0aGVudGljYXRpb25JbmZvKToKKwogMjAwOS0wOS0xMSAgTWFyayBSb3dlICA8bXJvd2VA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvbiBIb25leWN1dHQuCkluZGV4OiBX
ZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9N
aXNjL1dlYkRvd25sb2FkLm1tCShyZXZpc2lvbiA0ODMzNCkKKysrIFdlYktpdC9tYWMvTWlzYy9X
ZWJEb3dubG9hZC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOSBAQAogI2ltcG9ydCA8
Rm91bmRhdGlvbi9OU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxGb3Vu
ZGF0aW9uL05TVVJMRG93bmxvYWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25N
YWMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgorI2ltcG9ydCA8V2ViQ29yZS9D
cmVkZW50aWFsU3RvcmFnZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJQYW5lbEF1dGhlbnRpY2F0aW9uSGFuZGxlci5oPgogI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KIApAQCAtMTExLDcgKzExNCw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogewogICAgIC8vIFRyeSBwcmV2aW91c2x5IHN0b3JlZCBjcmVkZW50aWFsIGZp
cnN0LgogICAgIGlmICghW2NoYWxsZW5nZSBwcmV2aW91c0ZhaWx1cmVDb3VudF0pIHsKLSAgICAg
ICAgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsID0gV2ViQ29yZUNyZWRlbnRpYWxTdG9yYWdl
OjpnZXQoW2NoYWxsZW5nZSBwcm90ZWN0aW9uU3BhY2VdKTsKKyAgICAgICAgTlNVUkxDcmVkZW50
aWFsICpjcmVkZW50aWFsID0gbWFjKENyZWRlbnRpYWxTdG9yYWdlOjpnZXQoY29yZShbY2hhbGxl
bmdlIHByb3RlY3Rpb25TcGFjZV0pKSk7CiAgICAgICAgIGlmIChjcmVkZW50aWFsKSB7CiAgICAg
ICAgICAgICBbW2NoYWxsZW5nZSBzZW5kZXJdIHVzZUNyZWRlbnRpYWw6Y3JlZGVudGlhbCBmb3JB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2VdOwogICAgICAgICAgICAgcmV0dXJuOwpJ
bmRleDogV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcu
bW0JKHJldmlzaW9uIDQ4MzM0KQorKysgV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2Fw
ZVBsdWdpblZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDggQEAKIAogI2ltcG9y
dCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50
aWNhdGlvbk1hYy5oPgorI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0NyZWRlbnRpYWxTdG9yYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NTdHJpbmcuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWxlbWVudC5o
PgpAQCAtNTAsNiArNTIsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9IVE1MUGx1Z0luRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdl
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1Byb3RlY3Rpb25TcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9SZW5kZXJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQvRE9NUHJpdmF0ZS5oPgogI2ltcG9ydCA8
cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CkBAIC04NjgsNyArODcxLDcgQEAgYm9vbCBn
ZXRBdXRoZW50aWNhdGlvbkluZm8oY29uc3QgY2hhciogcAogICAgIAogICAgIFJldGFpblB0cjxO
U1VSTFByb3RlY3Rpb25TcGFjZT4gcHJvdGVjdGlvblNwYWNlKEFkb3B0TlMsIFtbTlNVUkxQcm90
ZWN0aW9uU3BhY2UgYWxsb2NdIGluaXRXaXRoSG9zdDpob3N0IHBvcnQ6cG9ydCBwcm90b2NvbDpw
cm90b2NvbCByZWFsbTpyZWFsbSBhdXRoZW50aWNhdGlvbk1ldGhvZDphdXRoZW50aWNhdGlvbk1l
dGhvZF0pOwogICAgIAotICAgIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCA9IFdlYkNvcmVD
cmVkZW50aWFsU3RvcmFnZTo6Z2V0KHByb3RlY3Rpb25TcGFjZS5nZXQoKSk7CisgICAgTlNVUkxD
cmVkZW50aWFsICpjcmVkZW50aWFsID0gbWFjKENyZWRlbnRpYWxTdG9yYWdlOjpnZXQoY29yZShw
cm90ZWN0aW9uU3BhY2UuZ2V0KCkpKSk7CiAgICAgaWYgKCFjcmVkZW50aWFsKQogICAgICAgICBj
cmVkZW50aWFsID0gW1tOU1VSTENyZWRlbnRpYWxTdG9yYWdlIHNoYXJlZENyZWRlbnRpYWxTdG9y
YWdlXSBkZWZhdWx0Q3JlZGVudGlhbEZvclByb3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9uU3BhY2Uu
Z2V0KCldOwogICAgIGlmICghY3JlZGVudGlhbCkKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA0ODMzNCkKKysr
IFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MDktMDktMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNhZmFyaSA0IGNhbm5vdCBiZSB1
c2VkIHRvIHVwZGF0ZSBmaXJtd2FyZSBvbiBMaW5rc3lzIHJvdXRlcnMuCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS83MTc0MDUwPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI5MTYwCisKKyAgICAgICAgQWRvcHQgdGhlIG5ldyBXZWJDb3JlOjpDcmVkZW50aWFs
U3RvcmFnZSBpbiBXZWJLaXQvV2luLgorCisgICAgICAgICogV2ViRG93bmxvYWRDRk5ldC5jcHA6
CisgICAgICAgIChXZWJEb3dubG9hZDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KToKKwogMjAwOS0wOS0xMSAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBXZWJLaXQvd2luL1dl
YkRvd25sb2FkQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRG93bmxvYWRD
Rk5ldC5jcHAJKHJldmlzaW9uIDQ4MzM0KQorKysgV2ViS2l0L3dpbi9XZWJEb3dubG9hZENGTmV0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI3ByYWdtYSB3YXJuaW5nKHB1
c2gsIDApCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNGLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9CU3RyaW5nLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsU3RvcmFnZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpA
QCAtMzgxLDkgKzM4MiwxMCBAQCB2b2lkIFdlYkRvd25sb2FkOjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpCiB7CiAgICAgLy8gVHJ5IHByZXZpb3VzbHkgc3RvcmVkIGNyZWRlbnRpYWwgZmlyc3QuCiAg
ICAgaWYgKCFDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcmV2aW91c0ZhaWx1cmVDb3VudChjaGFsbGVu
Z2UpKSB7Ci0gICAgICAgIENGVVJMQ3JlZGVudGlhbFJlZiBjcmVkZW50aWFsID0gV2ViQ29yZUNy
ZWRlbnRpYWxTdG9yYWdlOjpnZXQoQ0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNl
KGNoYWxsZW5nZSkpOwotICAgICAgICBpZiAoY3JlZGVudGlhbCkgewotICAgICAgICAgICAgQ0ZV
UkxEb3dubG9hZFVzZUNyZWRlbnRpYWwobV9kb3dubG9hZC5nZXQoKSwgY3JlZGVudGlhbCwgY2hh
bGxlbmdlKTsKKyAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gQ3JlZGVudGlhbFN0b3Jh
Z2U6OmdldChjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShjaGFsbGVu
Z2UpKSk7CisgICAgICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3JlZGVudGlhbChBZG9wdENGLCBjcmVh
dGVDRihjcmVkZW50aWFsKSk7CisgICAgICAgICAgICBDRlVSTERvd25sb2FkVXNlQ3JlZGVudGlh
bChtX2Rvd25sb2FkLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0ODMz
NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIw
IEBACisyMDA5LTA5LTEyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTYWZhcmkgNCBjYW5u
b3QgYmUgdXNlZCB0byB1cGRhdGUgZmlybXdhcmUgb24gTGlua3N5cyByb3V0ZXJzLgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNzE3NDA1MD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yOTE2MAorCisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2lj
LWNyZWRlbnRpYWxzLXNlbnQtYXV0b21hdGljYWxseS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1jcmVkZW50aWFscy1zZW50LWF1dG9tYXRp
Y2FsbHkuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNl
cy9vdGhlcnN1YnJlc291cmNlczogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5n
L3Jlc291cmNlcy9vdGhlcnN1YnJlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNv
dXJjZS5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZXMv
c3VicmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3Vy
Y2VzL3N1YnJlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgor
CiAyMDA5LTA5LTEyICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9s
b2FkaW5nL2Jhc2ljLWNyZWRlbnRpYWxzLXNlbnQtYXV0b21hdGljYWxseS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWNyZWRl
bnRpYWxzLXNlbnQtYXV0b21hdGljYWxseS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtY3JlZGVudGlhbHMtc2VudC1hdXRv
bWF0aWNhbGx5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorbWFp
biBmcmFtZSAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSBk
aWRDb21taXRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0t
Pi0tPiIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlk
RmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKKzx1bmtub3duPiAtIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSAtIFJlc3BvbmRpbmcgd2l0aCBmaXJzdDpmaXJzdC1wdworZnJhbWUg
IjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZENvbW1pdExvYWRGb3JGcmFt
ZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEZpbmlzaERv
Y3VtZW50TG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9y
RnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIgLSBkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFt
ZTAtLT4tLT4iIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJh
bWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKKzx1bmtu
b3duPiAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFJlc3BvbmRpbmcgd2l0
aCBzZWNvbmQ6c2Vjb25kLXB3CitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4t
LT4iIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1m
cmFtZTEtLT4tLT4iIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0t
ZnJhbWVQYXRoIC8vPCEtLWZyYW1lMi0tPi0tPiIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkSGFu
ZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1l
MS0tPi0tPiIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8v
PCEtLWZyYW1lMi0tPi0tPiIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJh
bWVQYXRoIC8vPCEtLWZyYW1lMi0tPi0tPiIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFt
ZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUzLS0+LS0+IiAtIGRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMi0t
Pi0tPiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBh
dGggLy88IS0tZnJhbWUyLS0+LS0+IiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorZnJhbWUgIjwh
LS1mcmFtZVBhdGggLy88IS0tZnJhbWUzLS0+LS0+IiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQor
ZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUzLS0+LS0+IiAtIGRpZEZpbmlzaERvY3Vt
ZW50TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTMtLT4tLT4i
IC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8v
PCEtLWZyYW1lMy0tPi0tPiIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSBk
aWRGaW5pc2hMb2FkRm9yRnJhbWUKK1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgb25jZSBhbiBI
VFRQIEJhc2ljIEF1dGguIHByb3RlY3RlZCBwYXRoIGlzIGF1dGhlbnRpY2F0ZWQgb25jZSwgdXJs
cyB0aGF0IGVtYW5hdGUgZnJvbSB0aGF0IHBhdGggYXV0b21hdGljYWxseSBoYXZlIHRoZWlyIGNy
ZWRlbnRpYWxzIHNlbnQgd2l0aG91dCBhIGNoYWxsZW5nZS4KK1RoZSBmaXJzdCBmcmFtZSdzIHBh
dGggaXMgL2xvYWRpbmcvcmVzb3VyY2VzL3N1YnJlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2Uu
cGhwLCBhbmQgd2Ugc2hvdWxkIGdldCBhIGNoYWxsZW5nZSBmb3IgaXQuCitJdCB3aWxsIGJlIGF1
dGhvcml6ZWQgd2l0aCBmaXJzdC9maXJzdC1wdy4KK1RoZSBzZWNvbmQgZnJhbWUncyBwYXRoIGlz
IC9sb2FkaW5nL3Jlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwLCBhbmQgd2Ugc2hvdWxk
IGdldCBhIGNoYWxsZW5nZSBmb3IgaXQsIGJlY2F1c2UgaXQgZG9lcyBub3Qgc2hhcmUgYSBjb21t
b24gc3VicGF0aCBvZiB0aGUgcHJldmlvdXNseSBhdXRob3JpemVkIHJlc291cmNlLgorSXQgd2ls
bCBiZSBhdXRob3JpemVkIHdpdGggc2Vjb25kL3NlY29uZC1wdy4KK1RoZSB0aGlyZCBmcmFtZSdz
IHBhdGggaXMgYWxzbyAvbG9hZGluZy9yZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocCwg
YW5kIHdlIHNob3VsZCAqbm90KiBnZXQgYSBjaGFsbGVuZ2UgZm9yIGl0IGJlY2F1c2Ugd2UgYXV0
aG9yaXplZCB0byB0aGlzIHBhdGggZm9yIHRoZSBzZWNvbmQgZnJhbWUuCitJdCB3aWxsIGJlIGF1
dGhvcml6ZWQgd2l0aCBzZWNvbmQvc2Vjb25kLXB3LgorVGhlIGZvdXJ0aCBmcmFtZSdzIHBhdGgg
aXMgL2xvYWRpbmcvcmVzb3VyY2VzL290aGVyc3VicmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJj
ZS5waHAsIGFuZCB3ZSBzaG91bGQgKm5vdCogZ2V0IGEgY2hhbGxlbmdlIGZvciBpdCwgYmVjYXVz
ZSBpdCBoYXMgYSBjb21tb24gc3VicGF0aCB3aXRoIHRoZSBwcmV2aW91c2x5IGF1dGhvcml6ZWQg
c2Vjb25kIGFuZCB0aGlyZCBmcmFtZXMuCitJdCB3aWxsIGJlIGF1dGhvcml6ZWQgd2l0aCBzZWNv
bmQvc2Vjb25kLXB3LgorICAKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwh
LS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorQXV0aGVudGljYXRlZCBhcyB1c2VyOiBmaXJzdCBw
YXNzd29yZDogZmlyc3QKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1m
cmFtZTEtLT4tLT4nCistLS0tLS0tLQorQXV0aGVudGljYXRlZCBhcyB1c2VyOiBzZWNvbmQgcGFz
c3dvcmQ6IHNlY29uZAorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZy
YW1lMi0tPi0tPicKKy0tLS0tLS0tCitBdXRoZW50aWNhdGVkIGFzIHVzZXI6IHNlY29uZCBwYXNz
d29yZDogc2Vjb25kCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJh
bWUzLS0+LS0+JworLS0tLS0tLS0KK0F1dGhlbnRpY2F0ZWQgYXMgdXNlcjogc2Vjb25kIHBhc3N3
b3JkOiBzZWNvbmQKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1j
cmVkZW50aWFscy1zZW50LWF1dG9tYXRpY2FsbHkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtY3JlZGVudGlhbHMtc2VudC1hdXRvbWF0aWNh
bGx5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcv
YmFzaWMtY3JlZGVudGlhbHMtc2VudC1hdXRvbWF0aWNhbGx5Lmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2Vz
KHRydWUpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEF1dGhlbnRpY2F0aW9uVXNlcm5h
bWUoImZpcnN0Iik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXV0aGVudGljYXRpb25Q
YXNzd29yZCgiZmlyc3QtcHciKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Cit9CisKK2Z1bmN0aW9uIGZpcnN0RnJhbWVMb2FkZWQoKQoreworICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0QXV0aGVudGljYXRpb25Vc2VybmFtZSgic2Vjb25kIik7CisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQoInNlY29uZC1wdyIpOworICAgIH0K
KyAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBm
cmFtZS5zZXRBdHRyaWJ1dGUoInNyYyIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9y
ZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocCIpOworICAgIGZyYW1lLnNldEF0dHJpYnV0
ZSgib25sb2FkIiwgInNlY29uZEZyYW1lTG9hZGVkKCkiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGZyYW1lKTsKK30KKworZnVuY3Rpb24gc2Vjb25kRnJhbWVMb2FkZWQoKQorewor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0QXV0aGVudGljYXRpb25Vc2VybmFtZSgidGhpcmQiKTsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXV0aGVudGljYXRpb25QYXNzd29yZCgidGhpcmQtcHci
KTsKKyAgICB9CisgICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1l
Iik7CisgICAgZnJhbWUuc2V0QXR0cmlidXRlKCJzcmMiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2xvYWRpbmcvcmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAiKTsKKyAgICBmcmFtZS5z
ZXRBdHRyaWJ1dGUoIm9ubG9hZCIsICJ0aGlyZEZyYW1lTG9hZGVkKCkiKTsKKyAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKK30KKworZnVuY3Rpb24gdGhpcmRGcmFtZUxvYWRl
ZCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJmb3VydGgiKTsK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXV0aGVudGljYXRpb25QYXNzd29yZCgi
Zm91cnRoLXB3Iik7CisgICAgfQorICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImlmcmFtZSIpOworICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgic3JjIiwgImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9vdGhlcnN1YnJlc291cmNlcy9wcm90ZWN0ZWQt
cmVzb3VyY2UucGhwIik7CisgICAgZnJhbWUuc2V0QXR0cmlidXRlKCJvbmxvYWQiLCAiZm91cnRo
RnJhbWVMb2FkZWQoKSIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOwor
fQorCitmdW5jdGlvbiBmb3VydGhGcmFtZUxvYWRlZCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IG1ha2VzIHN1
cmUgdGhhdCBvbmNlIGFuIEhUVFAgQmFzaWMgQXV0aC4gcHJvdGVjdGVkIHBhdGggaXMgYXV0aGVu
dGljYXRlZCBvbmNlLCB1cmxzIHRoYXQgZW1hbmF0ZSBmcm9tIHRoYXQgcGF0aCBhdXRvbWF0aWNh
bGx5IGhhdmUgdGhlaXIgY3JlZGVudGlhbHMgc2VudCB3aXRob3V0IGEgY2hhbGxlbmdlLjxicj4K
K1RoZSBmaXJzdCBmcmFtZSdzIHBhdGggaXMgL2xvYWRpbmcvcmVzb3VyY2VzL3N1YnJlc291cmNl
cy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwLCBhbmQgd2Ugc2hvdWxkIGdldCBhIGNoYWxsZW5nZSBm
b3IgaXQuPGJyPgorSXQgd2lsbCBiZSBhdXRob3JpemVkIHdpdGggZmlyc3QvZmlyc3QtcHcuPGJy
PgorVGhlIHNlY29uZCBmcmFtZSdzIHBhdGggaXMgL2xvYWRpbmcvcmVzb3VyY2VzL3Byb3RlY3Rl
ZC1yZXNvdXJjZS5waHAsIGFuZCB3ZSBzaG91bGQgZ2V0IGEgY2hhbGxlbmdlIGZvciBpdCwgYmVj
YXVzZSBpdCBkb2VzIG5vdCBzaGFyZSBhIGNvbW1vbiBzdWJwYXRoIG9mIHRoZSBwcmV2aW91c2x5
IGF1dGhvcml6ZWQgcmVzb3VyY2UuPGJyPgorSXQgd2lsbCBiZSBhdXRob3JpemVkIHdpdGggc2Vj
b25kL3NlY29uZC1wdy48YnI+CitUaGUgdGhpcmQgZnJhbWUncyBwYXRoIGlzIGFsc28gL2xvYWRp
bmcvcmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAsIGFuZCB3ZSBzaG91bGQgKm5vdCog
Z2V0IGEgY2hhbGxlbmdlIGZvciBpdCBiZWNhdXNlIHdlIGF1dGhvcml6ZWQgdG8gdGhpcyBwYXRo
IGZvciB0aGUgc2Vjb25kIGZyYW1lLjxicj4KK0l0IHdpbGwgYmUgYXV0aG9yaXplZCB3aXRoIHNl
Y29uZC9zZWNvbmQtcHcuPGJyPgorVGhlIGZvdXJ0aCBmcmFtZSdzIHBhdGggaXMgL2xvYWRpbmcv
cmVzb3VyY2VzL290aGVyc3VicmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAsIGFuZCB3
ZSBzaG91bGQgKm5vdCogZ2V0IGEgY2hhbGxlbmdlIGZvciBpdCwgYmVjYXVzZSBpdCBoYXMgYSBj
b21tb24gc3VicGF0aCB3aXRoIHRoZSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgc2Vjb25kIGFuZCB0
aGlyZCBmcmFtZXMuPGJyPgorSXQgd2lsbCBiZSBhdXRob3JpemVkIHdpdGggc2Vjb25kL3NlY29u
ZC1wdy48YnI+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3N1YnJlc291cmNlcy9wcm90ZWN0ZWQt
cmVzb3VyY2UucGhwIiBvbmxvYWQ9ImZpcnN0RnJhbWVMb2FkZWQoKTsiPjwvaWZyYW1lPgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291
cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZXMvcHJvdGVj
dGVkLXJlc291cmNlLnBocAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8P3BocAoraGVh
ZGVyKCJDYWNoZS1Db250cm9sOiBuby1zdG9yZSIpOworaWYgKCFpc3NldCgkX1NFUlZFUlsnUEhQ
X0FVVEhfVVNFUiddKSkgeworICAgIGhlYWRlcigiV1dXLWF1dGhlbnRpY2F0ZTogQmFzaWMgcmVh
bG09XCIiIC4gJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10gLiAiXCIiKTsKKyAgICBoZWFkZXIoJ0hU
VFAvMS4wIDQwMSBVbmF1dGhvcml6ZWQnKTsKKyAgICBleGl0OworfQorPz4KK0F1dGhlbnRpY2F0
ZWQgYXMgdXNlcjogPD9waHAgcHJpbnQgKHN0cmluZykkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUidd
Pz4gcGFzc3dvcmQ6IDw/cGhwIHByaW50IChzdHJpbmcpJF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVIn
XT8+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VzL290aGVy
c3VicmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlcy9vdGhlcnN1YnJlc291cmNlcy9wcm90
ZWN0ZWQtcmVzb3VyY2UucGhwCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9sb2FkaW5nL3Jlc291cmNlcy9vdGhlcnN1YnJlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2Uu
cGhwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKzw/cGhwCitoZWFkZXIoIkNhY2hlLUNv
bnRyb2w6IG5vLXN0b3JlIik7CitpZiAoIWlzc2V0KCRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10p
KSB7CisgICAgaGVhZGVyKCJXV1ctYXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT1cIiIgLiAkX1NF
UlZFUlsnUkVRVUVTVF9VUkknXSAuICJcIiIpOworICAgIGhlYWRlcignSFRUUC8xLjAgNDAxIFVu
YXV0aG9yaXplZCcpOworICAgIGV4aXQ7Cit9Cis/PgorQXV0aGVudGljYXRlZCBhcyB1c2VyOiA8
P3BocCBwcmludCAoc3RyaW5nKSRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10/PiBwYXNzd29yZDog
PD9waHAgcHJpbnQgKHN0cmluZykkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddPz4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZXMvc3VicmVzb3VyY2VzL3Byb3Rl
Y3RlZC1yZXNvdXJjZS5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9s
b2FkaW5nL3Jlc291cmNlcy9zdWJyZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZXMvc3Vi
cmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
OSBAQAorPD9waHAKK2hlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUiKTsKK2lmICghaXNz
ZXQoJF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXSkpIHsKKyAgICBoZWFkZXIoIldXVy1hdXRoZW50
aWNhdGU6IEJhc2ljIHJlYWxtPVwiIiAuICRfU0VSVkVSWydSRVFVRVNUX1VSSSddIC4gIlwiIik7
CisgICAgaGVhZGVyKCdIVFRQLzEuMCA0MDEgVW5hdXRob3JpemVkJyk7CisgICAgZXhpdDsKK30K
Kz8+CitBdXRoZW50aWNhdGVkIGFzIHVzZXI6IDw/cGhwIHByaW50IChzdHJpbmcpJF9TRVJWRVJb
J1BIUF9BVVRIX1VTRVInXT8+IHBhc3N3b3JkOiA8P3BocCBwcmludCAoc3RyaW5nKSRfU0VSVkVS
WydQSFBfQVVUSF9VU0VSJ10/PgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBw
ZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHJldmlz
aW9uIDQ4MzM0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtpbmcg
Y29weSkKQEAgLTU2OTksMyArNTY5OSw2IEBAIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXNl
bmQtcmVmZXJyZXIKICMgWEhSIHNlbmRzIHNvbWV0aW1lcyB5aWVsZCBudWxsIGJ5dGVzIHNlbnQg
aW5zdGVhZCBvZiAwLgogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC93b3JrZXJzL3NoYXJlZC13
b3JrZXItbWV0aG9kcy5odG1sCiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1tZXRob2RzLWFzeW5jLmh0bWwKKworIyBObyBhdXRoZW50aWNhdGlvbiBjaGFs
bGVuZ2UgaGFuZGxpbmcKK2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1jcmVkZW50aWFscy1zZW50
LWF1dG9tYXRpY2FsbHkuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBl
ZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lv
biA0ODMzNCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4MzgsMyArNDgzOCw2IEBAIGZhc3Qvd29ya2Vycy93b3JrZXItY29udGV4dC1tdWx0
aS1wb3J0LmgKIAogIyBObyBVc2VyIFNjcmlwdHMKIHVzZXJzY3JpcHRzCisKKyMgTm8gYXV0aGVu
dGljYXRpb24gY2hhbGxlbmdlIGhhbmRsaW5nCitodHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtY3Jl
ZGVudGlhbHMtc2VudC1hdXRvbWF0aWNhbGx5Lmh0bWwK
</data>
<flag name="commit-queue"
          id="20616"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39554</attachid>
            <date>2009-09-14 10:44:20 -0700</date>
            <delta_ts>2009-09-14 10:53:29 -0700</delta_ts>
            <desc>Updated fix - Same code changes as my Saturday patch, but a new layout test for the &quot;resending the same wrong credentials&quot; behavior.</desc>
            <filename>CurrentPatchMonday.txt</filename>
            <type>text/plain</type>
            <size>91157</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODM1NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsOTQgQEAKKzIwMDktMDktMTQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNh
ZmFyaSA0IGNhbm5vdCBiZSB1c2VkIHRvIHVwZGF0ZSBmaXJtd2FyZSBvbiBMaW5rc3lzIHJvdXRl
cnMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTc0MDUwPiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MTYwCisKKyAgICAgICAgSW4gaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvNDI0ODMsIHdlIGRpc2FibGVkIENGTmV0d29yaydzIHNlc3Np
b24gY3JlZGVudGlhbCBzdG9yYWdlIGFuZCAKKyAgICAgICAgaW1wbGVtZW50ZWQgb3VyIG93biBp
biBXZWJDb3JlLgorCisgICAgICAgIE9uZSBmZWF0dXJlIHdlIGxvc3QgaXMgdGhhdCBDRk5ldHdv
cmsgd291bGQgYXV0b21hdGljYWxseSBzZW5kIHByZXZpb3VzbHkgYXV0aGVudGljYXRlZCBjcmVk
ZW50aWFscworICAgICAgICB3aXRoIG5ldyBjb25uZWN0aW9ucyB3aGVuIHRoZSBwYXRocyBtYXRj
aCwgYXMgYWxsb3dlZCBieSBSRkMgMjYxNyBmb3IgSFRUUCBCYXNpYyBhbmQgRGlnZXN0IEF1dGhl
bnRpY2F0aW9uLiAgCisKKyAgICAgICAgRXZlbiB0aG91Z2ggaXQncyBvcHRpb25hbCBmb3IgVXNl
ciBBZ2VudHMgdG8gZG8gdGhpcywgKHNvbWU/KSBMaW5rc3lzIHJvdXRlcnMgcmVseSBvbiB0aGlz
IGJlaGF2aW9yIGZvcgorICAgICAgICBIVFRQIEJhc2ljIEF1dGhlbnRpY2F0aW9uLiAgU28gbm93
IFdlYkNvcmUncyBDcmVkZW50aWFsU3RvcmFnZSB3aWxsIHRyYWNrIFVSTCBwYXRocyBmb3IgQmFz
aWMgY3JlZGVudGlhbHMuCisKKyAgICAgICAgV2UncmUgbm90IG1ha2luZyB0aGlzIGVuaGFuY2Vt
ZW50IGZvciBEaWdlc3QgYXQgdGhpcyB0aW1lLCBzaW5jZSB3ZSBkb24ndCBrbm93IG9mIGFueXRo
aW5nIHRoYXQgYnJva2UKKyAgICAgICAgZHVlIHRvIHRoZSBjaGFuZ2UgaW4gRGlnZXN0IGJlaGF2
aW9yLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1jcmVkZW50aWFs
cy1zZW50LWF1dG9tYXRpY2FsbHkuaHRtbAorICAgICAgICAgICAgICBodHRwL3Rlc3RzL2xvYWRp
bmcvYmFzaWMtYXV0aC1yZXNlbmQtd3JvbmctY3JlZGVudGlhbHMuaHRtbAorCisgICAgICAgICog
V2ViQ29yZS5iYXNlLmV4cDoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3JlZGVudGlhbDo6aXNFbXB0eSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsLmg6CisKKyAgICAgICAgQWRkIGEgc2xpZ2h0bHkgbW9yZSBmdWxsIGZlYXR1cmVkIENyZWRl
bnRpYWxTdG9yZSB0aGF0IHdpbGwgdHJhY2sgVVJMIHBhdGhzIGEgY3JlZGVudGlhbCBiZWxvbmdz
IHRvOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnByb3RlY3Rpb25TcGFjZVRvQ3JlZGVudGlhbE1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpvcmlnaW5Ub0RlZmF1bHRDcmVkZW50aWFsTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6Om9yaWdpblN0cmluZ0Zyb21VUkwpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jl
ZGVudGlhbFN0b3JhZ2U6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFn
ZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWxTdG9yYWdlOjpnZXREZWZhdWx0
QXV0aGVudGljYXRpb25DcmVkZW50aWFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Ny
ZWRlbnRpYWxTdG9yYWdlLmg6IEFkZGVkLgorCisgICAgICAgIEFsbG93IFByb3RlY3Rpb25TcGFj
ZSB0byBiZSBhIGhhc2gga2V5OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlv
blNwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZTo6UHJvdGVjdGlv
blNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9uU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VIYXNoLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlSGFzaDo6aGFzaCk6CisgICAgICAg
IChXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VIYXNoOjplcXVhbCk6CisKKyAgICAgICAgQWxsb3cg
UmVzb3VyY2VIYW5kbGVzIHRvIHJlbWVtYmVyIHRoZSBpbml0aWFsIGNyZWRlbnRpYWwgdGhleSB1
c2VkOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
OgorCisgICAgICAgIEFsbG93IG11dGFibGUgUmVzb3VyY2VSZXF1ZXN0cyB0byB1cGRhdGUgdGhl
aXIgcGxhdGZvcm0gb2JqZWN0IGlmIEhUVFAgaGVhZGVyIGZpZWxkcyBjaGFuZ2U6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmFkZEhUVFBIZWFkZXJGaWVsZCk6CisKKyAgICAg
ICAgUmVtb3ZlIFdlYkNvcmVDcmVkZW50aWFsU3RvcmFnZToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvQXV0aGVudGljYXRpb25DRi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFj
L0F1dGhlbnRpY2F0aW9uTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0
aGVudGljYXRpb25NYWMubW06CisKKyAgICAgICAgQ2hhbmdlIFJlc291cmNlSGFuZGxlQ0ZOZXQg
dG8gdHJ5IHRvIHVzZSBzdG9yZWQgY3JlZGVudGlhbHMgb24gbmV3IGNvbm5lY3Rpb25zLCBpZiBh
cHByb3ByaWF0ZToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpOiBPbmx5IHRyeSB0aGUgUHJvdGVjdGlvblNwYWNlIGtleSdlZAorICAgICAgICAg
IENyZWRlbnRpYWwgaWYgaXQgZG9lcyBub3QgbWF0Y2ggdGhlIGluaXRpYWxseSB1c2VkIENyZWRl
bnRpYWwuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50
aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVTeW5jaHJvbm91c0xvYWRlcjo6ZGlkUmVj
ZWl2ZUNoYWxsZW5nZSk6IE9ubHkgdHJ5IHRoZSBQcm90ZWN0aW9uU3BhY2Uga2V5J2VkCisgICAg
ICAgICAgQ3JlZGVudGlhbCBpZiBpdCBkb2VzIG5vdCBtYXRjaCB0aGUgaW5pdGlhbGx5IHVzZWQg
Q3JlZGVudGlhbC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVTeW5jaHJvbm91c0xvYWRlcjo6
bG9hZCk6CisKKyAgICAgICAgQ2hhbmdlIFJlc291cmNlSGFuZGxlTWFjIHRvIHRyeSB0byB1c2Ug
c3RvcmVkIGNyZWRlbnRpYWxzIG9uIG5ldyBjb25uZWN0aW9ucywgaWYgYXBwcm9wcmlhdGU6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6IE9ubHkg
dHJ5IHRoZSBQcm90ZWN0aW9uU3BhY2Uga2V5J2VkCisgICAgICAgICAgQ3JlZGVudGlhbCBpZiBp
dCBkb2VzIG5vdCBtYXRjaCB0aGUgaW5pdGlhbGx5IHVzZWQgQ3JlZGVudGlhbC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwpOgorICAgICAgICAo
LVtXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIgY29ubmVjdGlvbjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6XSk6IE9ubHkgdHJ5IHRoZSAKKyAgICAgICAgICBQcm90ZWN0aW9uU3Bh
Y2Uga2V5J2VkIENyZWRlbnRpYWwgaWYgaXQgZG9lcyBub3QgbWF0Y2ggdGhlIGluaXRpYWxseSB1
c2VkIENyZWRlbnRpYWwuCisgICAgICAgICgrW1dlYkNvcmVTeW5jaHJvbm91c0xvYWRlciBsb2Fk
UmVxdWVzdDphbGxvd1N0b3JlZENyZWRlbnRpYWxzOnJldHVybmluZ1Jlc3BvbnNlOmVycm9yOl0p
OgorCisgICAgICAgIEFkZCBiYXNlNjQtYWJpbGl0eSB0byBDU3RyaW5nOgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvQ1N0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU3RyaW5nQnVmZmVy
OjpiYXNlNjRFbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1N0cmluZzo6YmFzZTY0RW5jb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0NTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTdHJpbmdCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU3RyaW5nQnVmZmVy
OjpDU3RyaW5nQnVmZmVyKToKKwogMjAwOS0wOS0xNCAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxjYW1A
bWNjLmlkLmF1PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2Vi
Q29yZS9XZWJDb3JlLmJhc2UuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5iYXNl
LmV4cAkocmV2aXNpb24gNDgzNTYpCisrKyBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxMSwxMSArMzExLDExIEBAIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5k
bGUxMnJlbGVhc2VQcm8KIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUyMGZvcmNlQ29udGVu
dFNuaWZmaW5nRXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIxNGNhbmNlbGxlZEVycm9y
RXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIxOXNldFNob3VsZEJ1ZmZlckRhdGFFYgot
X19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjZjcmVhdGVFUktOU180S1VSTEUKIF9fWk43V2Vi
Q29yZTE0U2VjdXJpdHlPcmlnaW4xNmNyZWF0ZUZyb21TdHJpbmdFUktOU182U3RyaW5nRQogX19a
TjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjI0cmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsRVJLTlNf
NlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4yNXdoaXRlTGlzdEFjY2Vzc0Zy
b21PcmlnaW5FUktTMF9SS05TXzZTdHJpbmdFUzVfYgogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9y
aWdpbjI3cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzRXYKK19fWk43V2ViQ29yZTE0U2VjdXJp
dHlPcmlnaW42Y3JlYXRlRVJLTlNfNEtVUkxFCiBfX1pON1dlYkNvcmUxNUFyY2hpdmVSZXNvdXJj
ZTZjcmVhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTaGFyZWRCdWZmZXJFRUVSS05TXzRLVVJM
RVJLTlNfNlN0cmluZ0VTQV9TQV9SS05TXzE2UmVzb3VyY2VSZXNwb25zZUUKIF9fWk43V2ViQ29y
ZTE1QmFja0ZvcndhcmRMaXN0MTByZW1vdmVJdGVtRVBOU18xMUhpc3RvcnlJdGVtRQogX19aTjdX
ZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMHNldEVuYWJsZWRFYgpAQCAtMzk2LDYgKzM5Niw3IEBA
IF9fWk43V2ViQ29yZTE2Y3JlYXRlRnVsbE1hcmt1cEVQS05TXzVSYW4KIF9fWk43V2ViQ29yZTE2
ZW5jbG9zaW5nSW50UmVjdEVSSzdfTlNSZWN0CiBfX1pON1dlYkNvcmUxNmlzRW5kT2ZQYXJhZ3Jh
cGhFUktOU18xNVZpc2libGVQb3NpdGlvbkUKIF9fWk43V2ViQ29yZTE2dGhyZWFkR2xvYmFsRGF0
YUV2CitfX1pON1dlYkNvcmUxN0NyZWRlbnRpYWxTdG9yYWdlM2dldEVSS05TXzE1UHJvdGVjdGlv
blNwYWNlRQogX19aTjdXZWJDb3JlMTdET01JbXBsZW1lbnRhdGlvbjE0aXNUZXh0TUlNRVR5cGVF
UktOU182U3RyaW5nRQogX19aTjdXZWJDb3JlMTdHbHlwaFBhZ2VUcmVlTm9kZTE4dHJlZUdseXBo
UGFnZUNvdW50RXYKIF9fWk43V2ViQ29yZTE3SFRNTFBsdWdJbkVsZW1lbnQxMWdldE5QT2JqZWN0
RXYKQEAgLTQ1Niw3ICs0NTcsNiBAQCBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlNWVtCiBfX1pON1dlYkNvcmUyM1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kQzFFUE5TXzhEb2N1
bWVudEVOM1dURjEwUGFzc1JlZlB0cklOU18xNkRvY3VtZW50RnJhZ21lbnRFRUViYmJiYk5TXzEw
RWRpdEFjdGlvbkUKIF9fWk43V2ViQ29yZTIzY3JlYXRlRnJhZ21lbnRGcm9tTm9kZXNFUE5TXzhE
b2N1bWVudEVSS04zV1RGNlZlY3RvcklQTlNfNE5vZGVFTG0wRUVFCiBfX1pON1dlYkNvcmUyNEJp
bmFyeVByb3BlcnR5TGlzdFdyaXRlcjE3d3JpdGVQcm9wZXJ0eUxpc3RFdgotX19aTjdXZWJDb3Jl
MjRXZWJDb3JlQ3JlZGVudGlhbFN0b3JhZ2U5bV9zdG9yYWdlRQogX19aTjdXZWJDb3JlMjRjcmVh
dGVGcmFnbWVudEZyb21NYXJrdXBFUE5TXzhEb2N1bWVudEVSS05TXzZTdHJpbmdFUzRfCiBfX1pO
N1dlYkNvcmUyNGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc0VSS05TXzZTdHJpbmdFCiBfX1pON1dl
YkNvcmUyNG5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZEUKQEAgLTQ4MSw2ICs0ODEsNyBAQCBfX1pO
N1dlYkNvcmUzMWFwcGxpY2F0aW9uSXNNaWNyb3NvZnRNZXNzCiBfX1pON1dlYkNvcmUzMnBsYWlu
VGV4dFRvTWFsbG9jQWxsb2NhdGVkQnVmZmVyRVBLTlNfNVJhbmdlRVJqYgogX19aTjdXZWJDb3Jl
MzNzZXREZWZhdWx0VGhyZWFkVmlvbGF0aW9uQmVoYXZpb3JFTlNfMjNUaHJlYWRWaW9sYXRpb25C
ZWhhdmlvckVOU18yMFRocmVhZFZpb2xhdGlvblJvdW5kRQogX19aTjdXZWJDb3JlMzZJbml0aWFs
aXplTG9nZ2luZ0NoYW5uZWxzSWZOZWNlc3NhcnlFdgorX19aTjdXZWJDb3JlM21hY0VSS05TXzEw
Q3JlZGVudGlhbEUKIF9fWk43V2ViQ29yZTNtYWNFUktOU18yM0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRQogX19aTjdXZWJDb3JlNEZvbnQxMXNldENvZGVQYXRoRU5TMF84Q29kZVBhdGhFCiBfX1pO
N1dlYkNvcmU0Rm9udDE4c2hvdWxkVXNlU21vb3RoaW5nRXYKQEAgLTUxNCw2ICs1MTUsNyBAQCBf
X1pON1dlYkNvcmU0UGFnZTlnb0ZvcndhcmRFdgogX19aTjdXZWJDb3JlNFBhZ2U5aW5pdEdyb3Vw
RXYKIF9fWk43V2ViQ29yZTRQYWdlQzFFUE5TXzEyQ2hyb21lQ2xpZW50RVBOU18xN0NvbnRleHRN
ZW51Q2xpZW50RVBOU18xMkVkaXRvckNsaWVudEVQTlNfMTBEcmFnQ2xpZW50RVBOU18xNUluc3Bl
Y3RvckNsaWVudEUKIF9fWk43V2ViQ29yZTRQYWdlRDFFdgorX19aTjdXZWJDb3JlNGNvcmVFUDIw
TlNVUkxQcm90ZWN0aW9uU3BhY2UKIF9fWk43V2ViQ29yZTVDYWNoZTExc2V0RGlzYWJsZWRFYgog
X19aTjdXZWJDb3JlNUNhY2hlMTNnZXRTdGF0aXN0aWNzRXYKIF9fWk43V2ViQ29yZTVDYWNoZTEz
c2V0Q2FwYWNpdGllc0VqamoKQEAgLTc0NCwxMCArNzQ2LDEwIEBAIF9fWk43V2ViQ29yZTlIVE1M
TmFtZXM5c2NyaXB0VGFnRQogX19aTjdXZWJDb3JlOVBhZ2VDYWNoZTExc2V0Q2FwYWNpdHlFaQog
X19aTjdXZWJDb3JlOVBhZ2VDYWNoZTI3cmVsZWFzZUF1dG9yZWxlYXNlZFBhZ2VzTm93RXYKIF9f
Wk43V2ViQ29yZTlQYWdlR3JvdXAxM2FkZFVzZXJTY3JpcHRFUktOU182U3RyaW5nRVJLTlNfNEtV
UkxFUktOM1dURjZWZWN0b3JJUzFfTG0wRUVFak5TXzIzVXNlclNjcmlwdEluamVjdGlvblRpbWVF
Ci1fX1pON1dlYkNvcmU5UGFnZUdyb3VwMTdhZGRVc2VyU3R5bGVTaGVldEVSS05TXzZTdHJpbmdF
UktOU180S1VSTEVSS04zV1RGNlZlY3RvcklTMV9MbTBFRUVqCiBfX1pON1dlYkNvcmU5UGFnZUdy
b3VwMTRhZGRWaXNpdGVkTGlua0VQS3RtCi1fX1pON1dlYkNvcmU5UGFnZUdyb3VwMjByZW1vdmVB
bGxVc2VyQ29udGVudEV2CitfX1pON1dlYkNvcmU5UGFnZUdyb3VwMTdhZGRVc2VyU3R5bGVTaGVl
dEVSS05TXzZTdHJpbmdFUktOU180S1VSTEVSS04zV1RGNlZlY3RvcklTMV9MbTBFRUVqCiBfX1pO
N1dlYkNvcmU5UGFnZUdyb3VwMTdjbG9zZUxvY2FsU3RvcmFnZUV2CitfX1pON1dlYkNvcmU5UGFn
ZUdyb3VwMjByZW1vdmVBbGxVc2VyQ29udGVudEV2CiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjFy
ZW1vdmVBbGxWaXNpdGVkTGlua3NFdgogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDI1cmVtb3ZlVXNl
ckNvbnRlbnRGb3JXb3JsZEVqCiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjZzZXRTaG91bGRUcmFj
a1Zpc2l0ZWRMaW5rc0ViCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJ
KHJldmlzaW9uIDQ4MzU2KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agkod29ya2luZyBjb3B5KQpAQCAtMjAwMTMsNiArMjAwMTMsMTQgQEAKIAkJCQkJPg0KIAkJCQk8
L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdv
cmtcQ3JlZGVudGlhbFN0b3JhZ2UuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxG
aWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcQ3JlZGVudGlhbFN0
b3JhZ2UuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXEZvcm1EYXRhLmNwcCINCiAJCQkJCT4NCiAJCQkJ
PC9GaWxlPg0KQEAgLTIwMDYxLDYgKzIwMDY5LDEwIEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0K
IAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXFByb3Rl
Y3Rpb25TcGFjZUhhc2guaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXFJlc291cmNlRXJyb3JCYXNlLmNw
cCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA0ODM1NikKKysrIFdlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE5LDYgKzEwMTks
OSBAQAogCQk1MTk2MTE3ODBDQUM1NkE4MDAxMEE4MEMgLyogRGF0YWJhc2VUaHJlYWQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOTYxMTYyMENBQzU2
NTcwMDEwQTgwQyAvKiBEYXRhYmFzZVRocmVhZC5oICovOyB9OwogCQk1MTk2MTFFQTBDQUM3NDlD
MDAxMEE4MEMgLyogRGF0YWJhc2VUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTk2MTFFODBDQUM3NDlDMDAxMEE4MEMgLyogRGF0YWJhc2VUYXNr
LmggKi87IH07CiAJCTUxOTYxMUVCMENBQzc0OUMwMDEwQTgwQyAvKiBEYXRhYmFzZVRhc2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE5NjExRTkw
Q0FDNzQ5QzAwMTBBODBDIC8qIERhdGFiYXNlVGFzay5jcHAgKi87IH07CisJCTUxQTA1MjMzMTA1
ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBMDUyMzExMDU4Nzc0RjAwQ0M5RTk1IC8qIENy
ZWRlbnRpYWxTdG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNTFBMDUyMzQxMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTA1
MjMyMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5jcHAgKi87IH07CisJCTUx
QTA1MjU2MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3BhY2VIYXNoLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUEwNTI1NTEwNTg4NzQwMDBD
QzlFOTUgLyogUHJvdGVjdGlvblNwYWNlSGFzaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQTQ1QjU2MENBRDdGRDcwMDBEMkJFOSAvKiBEYXRh
YmFzZUF1dGhvcml6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQTQ1QjU0MENBRDdGRDcwMDBEMkJFOSAvKiBEYXRhYmFzZUF1dGhvcml6ZXIuaCAq
LzsgfTsKIAkJNTFBNDVCNTcwQ0FEN0ZENzAwMEQyQkU5IC8qIERhdGFiYXNlQXV0aG9yaXplci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE0NUI1
NTBDQUQ3RkQ3MDAwRDJCRTkgLyogRGF0YWJhc2VBdXRob3JpemVyLmNwcCAqLzsgfTsKIAkJNTFB
OTI2N0MwRDUzRjA1NzAwNjNFQ0MyIC8qIE9yaWdpblF1b3RhTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE5MjY3ODBENTNGMDU3MDA2
M0VDQzIgLyogT3JpZ2luUXVvdGFNYW5hZ2VyLmNwcCAqLzsgfTsKQEAgLTYyMzIsNiArNjIzNSw5
IEBACiAJCTUxOTYxMUU5MENBQzc0OUMwMDEwQTgwQyAvKiBEYXRhYmFzZVRhc2suY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YWJhc2VUYXNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE5RkUwQTEwREFENDQ2RTAwQTA4RjIxIC8qIEhUTUxB
dHRyaWJ1dGVOYW1lcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MQXR0cmlidXRlTmFt
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOUZFMEEyMERBRDQ0NkUwMEEw
OEYyMSAvKiBIVE1MVGFnTmFtZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTFRhZ05h
bWVzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUEwNTIzMTEwNTg3NzRGMDBD
QzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ3JlZGVudGlhbFN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTFBMDUyMzIxMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyZWRlbnRpYWxTdG9yYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFBMDUyNTUxMDU4ODc0MDAwQ0M5RTk1IC8qIFBy
b3RlY3Rpb25TcGFjZUhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJv
dGVjdGlvblNwYWNlSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE0NUI1
NDBDQUQ3RkQ3MDAwRDJCRTkgLyogRGF0YWJhc2VBdXRob3JpemVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlQXV0aG9yaXplci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUE0NUI1NTBDQUQ3RkQ3MDAwRDJCRTkgLyogRGF0YWJhc2VBdXRob3Jp
emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlQXV0
aG9yaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQTkyNjc4MEQ1M0Yw
NTcwMDYzRUNDMiAvKiBPcmlnaW5RdW90YU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gT3JpZ2luUXVvdGFNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTEwODM0LDE3ICsxMDg0MCwxNCBAQAogCQk2NTZCODRENzBBRUExQ0U5
MDBBMDk1QjQgLyogbmV0d29yayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9y
QmFzZS5jcHAgKi8sCi0JCQkJNTEwRDRBMkUxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVh
bUVycm9yQmFzZS5oICovLAotCQkJCTUxMEQ0QTMwMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRT
dHJlYW1IYW5kbGVCYXNlLmNwcCAqLywKLQkJCQk1MTBENEEzMTEwMzE2NUVFMDA0OUVBNTQgLyog
U29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oICovLAotCQkJCTUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1
NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLywKIAkJCQlCMkYzNEZFNzBFODJGODE3
MDBGNjI3Q0QgLyogY2YgKi8sCiAJCQkJNjU2Qjg0RTcwQUVBMURBRTAwQTA5NUI0IC8qIG1hYyAq
LywKIAkJCQk5MzRGNzEzNzBENUE2RUZGMDAwMThENjkgLyogQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VCYXNlLmNwcCAqLywKIAkJCQk5MzRGNzEzOTBENUE2RjEwMDAwMThENjkgLyogQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VCYXNlLmggKi8sCiAJCQkJNTE0Qzc2NTgwQ0U5MjNBMTAwN0VGM0NEIC8q
IENyZWRlbnRpYWwuY3BwICovLAogCQkJCTUxNEM3NjU5MENFOTIzQTEwMDdFRjNDRCAvKiBDcmVk
ZW50aWFsLmggKi8sCisJCQkJNTFBMDUyMzIxMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxT
dG9yYWdlLmNwcCAqLywKKwkJCQk1MUEwNTIzMTEwNTg3NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlh
bFN0b3JhZ2UuaCAqLywKIAkJCQlCMkYzNEZFNTBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmggKi8s
CiAJCQkJNTE0Qzc2NUEwQ0U5MjNBMTAwN0VGM0NEIC8qIEZvcm1EYXRhLmNwcCAqLywKIAkJCQk1
MTRDNzY1QjBDRTkyM0ExMDA3RUYzQ0QgLyogRm9ybURhdGEuaCAqLywKQEAgLTEwODU4LDYgKzEw
ODYxLDcgQEAKIAkJCQkxQTdGQTYxODBEREEzQjNBMDAyOEY4QTUgLyogTmV0d29ya1N0YXRlTm90
aWZpZXIuaCAqLywKIAkJCQk1MTRDNzY1RjBDRTkyM0ExMDA3RUYzQ0QgLyogUHJvdGVjdGlvblNw
YWNlLmNwcCAqLywKIAkJCQk1MTRDNzY2MDBDRTkyM0ExMDA3RUYzQ0QgLyogUHJvdGVjdGlvblNw
YWNlLmggKi8sCisJCQkJNTFBMDUyNTUxMDU4ODc0MDAwQ0M5RTk1IC8qIFByb3RlY3Rpb25TcGFj
ZUhhc2guaCAqLywKIAkJCQk5MzRGNzEzRDBENUE2RjI4MDAwMThENjkgLyogUmVzb3VyY2VFcnJv
ckJhc2UuY3BwICovLAogCQkJCTkzNEY3MTNCMEQ1QTZGMTkwMDAxOEQ2OSAvKiBSZXNvdXJjZUVy
cm9yQmFzZS5oICovLAogCQkJCTUxNEM3NjYzMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhh
bmRsZS5jcHAgKi8sCkBAIC0xMDg2OCw2ICsxMDg3MiwxMSBAQAogCQkJCTUxNEM3NjY4MENFOTIz
QTEwMDdFRjNDRCAvKiBSZXNvdXJjZVJlcXVlc3RCYXNlLmggKi8sCiAJCQkJNTE0Qzc2NjkwQ0U5
MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9uc2VCYXNlLmNwcCAqLywKIAkJCQk1MTRDNzY2
QTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXNwb25zZUJhc2UuaCAqLywKKwkJCQk1MTBE
NEEyRDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCAqLywKKwkJ
CQk1MTBENEEyRTEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmggKi8s
CisJCQkJNTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2Uu
Y3BwICovLAorCQkJCTUxMEQ0QTMxMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5k
bGVCYXNlLmggKi8sCisJCQkJNTEwRDRBMzIxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBuZXR3b3JrOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE3Nzk0LDYgKzE3ODAzLDggQEAKIAkJCQk0OUVFRDE0NTEw
NTE5Njk0MDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ5RUVEMTQ3MTA1MTk2OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQzRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTlDNzdGMkIxMDU0NUIzQjAwNTA2MTA0IC8q
IEdlb2xvY2F0aW9uU2VydmljZU1vY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQTA1MjMzMTA1
ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTFBMDUyNTYxMDU4ODc0MDAwQ0M5RTk1IC8qIFByb3RlY3Rpb25TcGFjZUhhc2guaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDOEJGMTUxMTA1ODEzQkYwMEE0MEEwNyAvKiBVc2VyU3R5bGVTaGVldC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4QkYxNUExMDU4MTQxODAwQTQwQTA3IC8qIFVzZXJTdHls
ZVNoZWV0VHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMEQ0QTRGMTAzMTc3QTIwMDQ5RUE1
NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKQEAgLTE5OTIzLDYgKzE5OTM0
LDcgQEAKIAkJCQk0OUVFRDE0RjEwNTE5NzFBMDAwOTlGQUIgLyogSlNDYW52YXNSZW5kZXJpbmdD
b250ZXh0M0RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFRUQxNTAxMDUxOTcxQTAw
MDk5RkFCIC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1OUM3N0YyQTEwNTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2aWNlTW9j
ay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUEwNTIzNDEwNTg3NzRGMDBDQzlFOTUgLyogQ3Jl
ZGVudGlhbFN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwRDRBNEUxMDMxNzdBMjAw
NDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBQkFF
NDQxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuY3BwCShy
ZXZpc2lvbiA0ODM1NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsMTEgQEAgQ3JlZGVudGlhbDo6Q3JlZGVudGlh
bChjb25zdCBTdHJpbmcmIHVzZQogICAgICwgbV9wZXJzaXN0ZW5jZShwZXJzaXN0ZW5jZSkKIHsK
IH0KKworYm9vbCBDcmVkZW50aWFsOjppc0VtcHR5KCkKK3sKKyAgICByZXR1cm4gbV91c2VyLmlz
RW1wdHkoKSAmJiBtX3Bhc3N3b3JkLmlzRW1wdHkoKTsKK30KICAgICAKIGNvbnN0IFN0cmluZyYg
Q3JlZGVudGlhbDo6dXNlcigpIGNvbnN0CiB7IApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0NyZWRlbnRpYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Q3JlZGVudGlhbC5oCShyZXZpc2lvbiA0ODM1NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9DcmVkZW50aWFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAgcHVibGljOgog
ICAgIENyZWRlbnRpYWwoKTsKICAgICBDcmVkZW50aWFsKGNvbnN0IFN0cmluZyYgdXNlciwgY29u
c3QgU3RyaW5nJiBwYXNzd29yZCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlKTsKICAgICAKKyAgICBi
b29sIGlzRW1wdHkoKTsKKyAgICAKICAgICBjb25zdCBTdHJpbmcmIHVzZXIoKSBjb25zdDsKICAg
ICBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNQYXNzd29yZCgp
IGNvbnN0OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0
b3JhZ2UuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRl
bnRpYWxTdG9yYWdlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCisKKyNpbmNsdWRlICJDU3RyaW5nLmgi
CisjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJQ
cm90ZWN0aW9uU3BhY2VIYXNoLmgiCisjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgorCisjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYg
SGFzaE1hcDxQcm90ZWN0aW9uU3BhY2UsIENyZWRlbnRpYWw+IFByb3RlY3Rpb25TcGFjZVRvQ3Jl
ZGVudGlhbE1hcDsKK3N0YXRpYyBQcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXAmIHByb3Rl
Y3Rpb25TcGFjZVRvQ3JlZGVudGlhbE1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChQ
cm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXAsIG1hcCwgKCkpOworICAgIHJldHVybiBtYXA7
Cit9CisKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBDcmVkZW50aWFs
PiA+IE9yaWdpblRvRGVmYXVsdEJhc2ljQ3JlZGVudGlhbE1hcDsKK3N0YXRpYyBPcmlnaW5Ub0Rl
ZmF1bHRCYXNpY0NyZWRlbnRpYWxNYXAmIG9yaWdpblRvRGVmYXVsdEJhc2ljQ3JlZGVudGlhbE1h
cCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChPcmlnaW5Ub0RlZmF1bHRCYXNpY0NyZWRl
bnRpYWxNYXAsIG1hcCwgKCkpOworICAgIHJldHVybiBtYXA7Cit9CisgICAgCitzdGF0aWMgU3Ry
aW5nIG9yaWdpblN0cmluZ0Zyb21VUkwoY29uc3QgS1VSTCYgdXJsKQoreworICAgIGlmICh1cmwu
cG9ydCgpKQorICAgICAgICByZXR1cm4gdXJsLnByb3RvY29sKCkgKyAiOi8vIiArIHVybC5ob3N0
KCkgKyBTdHJpbmc6OmZvcm1hdCgiOiVpLyIsIHVybC5wb3J0KCkpOworICAgIAorICAgIHJldHVy
biB1cmwucHJvdG9jb2woKSArICI6Ly8iICsgdXJsLmhvc3QoKSArICIvIjsKK30KKwordm9pZCBD
cmVkZW50aWFsU3RvcmFnZTo6c2V0KGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwsIGNvbnN0
IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBLVVJMJiB1cmwpCit7Cisg
ICAgcHJvdGVjdGlvblNwYWNlVG9DcmVkZW50aWFsTWFwKCkuc2V0KHByb3RlY3Rpb25TcGFjZSwg
Y3JlZGVudGlhbCk7CisgICAgCisgICAgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hl
bWUgc2NoZW1lID0gcHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCk7CisgICAg
aWYgKHVybC5wcm90b2NvbEluSFRUUEZhbWlseSgpICYmIChzY2hlbWUgPT0gUHJvdGVjdGlvblNw
YWNlQXV0aGVudGljYXRpb25TY2hlbWVIVFRQQmFzaWMgfHwgc2NoZW1lID09IFByb3RlY3Rpb25T
cGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lRGVmYXVsdCkpIHsKKyAgICAgICAgU3RyaW5nIG9yaWdp
biA9IG9yaWdpblN0cmluZ0Zyb21VUkwodXJsKTsKKyAgICAgICAgCisgICAgICAgIEhhc2hNYXA8
U3RyaW5nLCBDcmVkZW50aWFsPiBwYXRoVG9DcmVkZW50aWFsTWFwOworICAgICAgICBwYWlyPEhh
c2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0cmluZywgQ3JlZGVudGlhbD4gPjo6aXRlcmF0b3IsIGJv
b2w+IHJlc3VsdCA9IG9yaWdpblRvRGVmYXVsdEJhc2ljQ3JlZGVudGlhbE1hcCgpLmFkZChvcmln
aW4sIHBhdGhUb0NyZWRlbnRpYWxNYXApOworICAgICAgICAKKyAgICAgICAgLy8gUmVtb3ZlIHRo
ZSBsYXN0IHBhdGggY29tcG9uZW50IHRoYXQgaXMgbm90IGEgZGlyZWN0b3J5IHRvIGRldGVybWlu
ZSB0aGUgc3VicGF0aCBmb3Igd2hpY2ggdGhpcyBjcmVkZW50aWFsIGFwcGxpZXMuCisgICAgICAg
IFN0cmluZyBwYXRoID0gdXJsLnBhdGgoKTsKKyAgICAgICAgaWYgKCFwYXRoLmVuZHNXaXRoKCIv
IikpIHsKKyAgICAgICAgICAgIGludCBpbmRleCA9IHBhdGgucmV2ZXJzZUZpbmQoJy8nKTsKKyAg
ICAgICAgICAgIGlmIChpbmRleCAhPSAtMSkKKyAgICAgICAgICAgICAgICBwYXRoID0gcGF0aC5z
dWJzdHJpbmcoMCwgaW5kZXgpOworICAgICAgICB9CisgICAgICAgIGlmIChwYXRoLmVuZHNXaXRo
KCIvIikgJiYgcGF0aC5sZW5ndGgoKSA+IDEpCisgICAgICAgICAgICBwYXRoID0gcGF0aC5zdWJz
dHJpbmcoMCwgcGF0aC5sZW5ndGgoKSAtIDEpOworICAgICAgICAKKyAgICAgICAgcmVzdWx0LmZp
cnN0LT5zZWNvbmQuc2V0KHBhdGgsIGNyZWRlbnRpYWwpOworICAgIH0KK30KKworQ3JlZGVudGlh
bCBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlv
blNwYWNlKQoreworICAgIHJldHVybiBwcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXAoKS5n
ZXQocHJvdGVjdGlvblNwYWNlKTsKK30KKworQ3JlZGVudGlhbCBDcmVkZW50aWFsU3RvcmFnZTo6
Z2V0RGVmYXVsdEF1dGhlbnRpY2F0aW9uQ3JlZGVudGlhbChjb25zdCBLVVJMJiB1cmwpCit7Cisg
ICAgQVNTRVJUKHVybC5wcm90b2NvbEluSFRUUEZhbWlseSgpKTsKKyAgICBTdHJpbmcgb3JpZ2lu
ID0gb3JpZ2luU3RyaW5nRnJvbVVSTCh1cmwpOworICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBD
cmVkZW50aWFsPiYgcGF0aFRvQ3JlZGVudGlhbE1hcChvcmlnaW5Ub0RlZmF1bHRCYXNpY0NyZWRl
bnRpYWxNYXAoKS5nZXQob3JpZ2luKSk7CisgICAgaWYgKHBhdGhUb0NyZWRlbnRpYWxNYXAuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gQ3JlZGVudGlhbCgpOworICAgIAorICAgIC8vIENoZWNr
IHRvIHNlZSBpZiB0aGVyZSBpcyBhIHN0b3JlZCBjcmVkZW50aWFsIGZvciB0aGUgc3VicGF0aCBh
bmNlc3RyeSBvZiB0aGlzIHVybC4KKyAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCk7CisgICAg
Q3JlZGVudGlhbCBjcmVkZW50aWFsID0gcGF0aFRvQ3JlZGVudGlhbE1hcC5nZXQocGF0aCk7Cisg
ICAgd2hpbGUgKGNyZWRlbnRpYWwuaXNFbXB0eSgpICYmICFwYXRoLmlzTnVsbCgpKSB7CisgICAg
ICAgIGludCBpbmRleCA9IHBhdGgucmV2ZXJzZUZpbmQoJy8nKTsKKyAgICAgICAgaWYgKGluZGV4
ID09IDApIHsKKyAgICAgICAgICAgIHBhdGggPSBTdHJpbmcoKTsKKyAgICAgICAgICAgIGNyZWRl
bnRpYWwgPSBwYXRoVG9DcmVkZW50aWFsTWFwLmdldCgiLyIpOworICAgICAgICB9IGVsc2UgaWYg
KGluZGV4ID09IC0xKSB7CisgICAgICAgICAgICAvLyBUaGlzIGNhc2Ugc2hvdWxkIG5ldmVyIGhh
cHBlbiwgYXMgYWxsIEhUVFAgVVJMIHBhdGhzIHNob3VsZCBzdGFydCB3aXRoIGEgbGVhZGluZyAv
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGNyZWRlbnRp
YWwgPSBwYXRoVG9DcmVkZW50aWFsTWFwLmdldChwYXRoKTsKKyAgICAgICAgICAgIHBhdGggPSBT
dHJpbmcoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhdGggPSBwYXRoLnN1YnN0
cmluZygwLCBpbmRleCk7CisgICAgICAgICAgICBjcmVkZW50aWFsID0gcGF0aFRvQ3JlZGVudGlh
bE1hcC5nZXQocGF0aCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGNyZWRlbnRpYWw7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBTZXNzaW9uQ3JlZGVudGlhbFN0b3JhZ2VfaAorI2RlZmluZSBTZXNzaW9uQ3JlZGVudGlh
bFN0b3JhZ2VfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENyZWRlbnRpYWw7Citj
bGFzcyBLVVJMOworY2xhc3MgUHJvdGVjdGlvblNwYWNlOworCitjbGFzcyBDcmVkZW50aWFsU3Rv
cmFnZSB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgc2V0KGNvbnN0IENyZWRlbnRpYWwmLCBj
b25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIENyZWRlbnRp
YWwgZ2V0KGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOworICAgIHN0YXRpYyBDcmVkZW50aWFsIGdl
dERlZmF1bHRBdXRoZW50aWNhdGlvbkNyZWRlbnRpYWwoY29uc3QgS1VSTCYpOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2Vzc2lvbkNyZWRlbnRpYWxTdG9yYWdl
X2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuY3Bw
CShyZXZpc2lvbiA0ODM1NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9u
U3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNywxMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAvLyBjb21iaW5lZCB3aXRoIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIFN0cmluZyhOU1N0
cmluZyopIGNvbnN0cnVjdG9yCiBQcm90ZWN0aW9uU3BhY2U6OlByb3RlY3Rpb25TcGFjZSgpCiAg
ICAgOiBtX2hvc3QoIiIpCisgICAgLCBtX3BvcnQoMCkKKyAgICAsIG1fc2VydmVyVHlwZShQcm90
ZWN0aW9uU3BhY2VTZXJ2ZXJIVFRQKQogICAgICwgbV9yZWFsbSgiIikKKyAgICAsIG1fYXV0aGVu
dGljYXRpb25TY2hlbWUoUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVEZWZhdWx0
KQorICAgICwgbV9pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZShmYWxzZSkKIHsKIH0KICAKQEAgLTQ5
LDYgKzUzLDcgQEAgUHJvdGVjdGlvblNwYWNlOjpQcm90ZWN0aW9uU3BhY2UoY29uc3QgUwogICAg
ICwgbV9zZXJ2ZXJUeXBlKHNlcnZlclR5cGUpCiAgICAgLCBtX3JlYWxtKHJlYWxtLmxlbmd0aCgp
ID8gcmVhbG0gOiAiIikKICAgICAsIG1fYXV0aGVudGljYXRpb25TY2hlbWUoYXV0aGVudGljYXRp
b25TY2hlbWUpCisgICAgLCBtX2lzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKGZhbHNlKQogeyAgICAK
IH0KICAgICAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNl
LmgJKHJldmlzaW9uIDQ4MzU2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rp
b25TcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCwxMCBAQCBjbGFzcyBQcm90ZWN0
aW9uU3BhY2UgewogcHVibGljOgogICAgIFByb3RlY3Rpb25TcGFjZSgpOwogICAgIFByb3RlY3Rp
b25TcGFjZShjb25zdCBTdHJpbmcmIGhvc3QsIGludCBwb3J0LCBQcm90ZWN0aW9uU3BhY2VTZXJ2
ZXJUeXBlLCBjb25zdCBTdHJpbmcmIHJlYWxtLCBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlv
blNjaGVtZSk7CisKKyAgICAvLyBIYXNoIHRhYmxlIGRlbGV0ZWQgdmFsdWVzLCB3aGljaCBhcmUg
b25seSBjb25zdHJ1Y3RlZCBhbmQgbmV2ZXIgY29waWVkIG9yIGRlc3Ryb3llZC4KKyAgICBQcm90
ZWN0aW9uU3BhY2UoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1faXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUodHJ1ZSkgeyB9CisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNIYXNoVGFibGVEZWxldGVkVmFsdWU7IH0KICAgICAKICAg
ICBjb25zdCBTdHJpbmcmIGhvc3QoKSBjb25zdDsKICAgICBpbnQgcG9ydCgpIGNvbnN0OwpAQCAt
NzAsMTAgKzc0LDEyIEBAIHByaXZhdGU6CiAgICAgUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZSBt
X3NlcnZlclR5cGU7CiAgICAgU3RyaW5nIG1fcmVhbG07CiAgICAgUHJvdGVjdGlvblNwYWNlQXV0
aGVudGljYXRpb25TY2hlbWUgbV9hdXRoZW50aWNhdGlvblNjaGVtZTsKKyAgICBib29sIG1faXNI
YXNoVGFibGVEZWxldGVkVmFsdWU7CiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJvdGVj
dGlvblNwYWNlJiBhLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGIpOwogaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGEsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYg
YikgeyByZXR1cm4gIShhID09IGIpOyB9CiAgICAgCi19Ci0jZW5kaWYKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIFByb3RlY3Rpb25TcGFjZV9oCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlSGFzaC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VIYXNoLmgJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlSGFzaC5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgUHJvdGVjdGlvblNwYWNlSGFzaF9oCisjZGVmaW5lIFByb3Rl
Y3Rpb25TcGFjZUhhc2hfaAorCisjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFByb3RlY3Rpb25TcGFjZUhhc2ggeworICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQor
ICAgIHsgCisgICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1s1XSA9IHsKKyAgICAgICAgICAgIHBy
b3RlY3Rpb25TcGFjZS5ob3N0KCkuaW1wbCgpID8gcHJvdGVjdGlvblNwYWNlLmhvc3QoKS5pbXBs
KCktPmhhc2goKSA6IDAsIAorICAgICAgICAgICAgcHJvdGVjdGlvblNwYWNlLnBvcnQoKSwgCisg
ICAgICAgICAgICBwcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHlwZSgpLAorICAgICAgICAgICAgcHJv
dGVjdGlvblNwYWNlLnJlYWxtKCkuaW1wbCgpID8gcHJvdGVjdGlvblNwYWNlLnJlYWxtKCkuaW1w
bCgpLT5oYXNoKCkgOiAwLAorICAgICAgICAgICAgcHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0
aW9uU2NoZW1lKCkKKyAgICAgICAgfTsKKworICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y29t
cHV0ZUhhc2gocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGhhc2hDb2RlcyksIHNpemVvZihoYXNo
Q29kZXMpIC8gc2l6ZW9mKFVDaGFyKSk7ICAgIAorICAgIH0KKyAgICAKKyAgICBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGEsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYg
YikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworbmFtZXNwYWNlIFdURiB7CisKKyAgICAvLyBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2VIYXNo
IGlzIHRoZSBkZWZhdWx0IGhhc2ggZm9yIFByb3RlY3Rpb25TcGFjZQorICAgIHRlbXBsYXRlPD4g
c3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlPiA6IEdlbmVyaWNIYXNo
VHJhaXRzPFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZT4geworICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKKyAgICAgICAgc3RhdGljIHZvaWQgY29uc3Ry
dWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYgc2xvdCkgeyBuZXcgKCZz
bG90KSBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQor
ICAgICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpQcm90ZWN0
aW9uU3BhY2UmIHNsb3QpIHsgcmV0dXJuIHNsb3QuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsg
fQorICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7
CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6UHJvdGVjdGlvblNw
YWNlPiB7CisgICAgICAgIHR5cGVkZWYgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlSGFzaCBIYXNo
OworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisKKyNlbmRpZiAvLyBQcm90ZWN0aW9u
U3BhY2VIYXNoX2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlSW50ZXJuYWwuaAkocmV2aXNpb24gNDgzNTYpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAs
NiArMTUwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTdHJpbmcgbV91c2VyOwog
ICAgICAgICBTdHJpbmcgbV9wYXNzOwogICAgICAgICAKKyAgICAgICAgQ3JlZGVudGlhbCBtX2lu
aXRpYWxDcmVkZW50aWFsOworICAgICAgICAKICAgICAgICAgaW50IHN0YXR1czsKIAogICAgICAg
ICBib29sIG1fZGVmZXJzTG9hZGluZzsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAJKHJldmlzaW9uIDQ4MzU2KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzQsNiArMjc0LDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjphZGRIVFRQSGVh
ZGVyRgogICAgIHBhaXI8SFRUUEhlYWRlck1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1f
aHR0cEhlYWRlckZpZWxkcy5hZGQobmFtZSwgdmFsdWUpOyAKICAgICBpZiAoIXJlc3VsdC5zZWNv
bmQpCiAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kICs9ICIsIiArIHZhbHVlOworCisgICAg
aWYgKHVybCgpLnByb3RvY29sSW5IVFRQRmFtaWx5KCkpCisgICAgICAgIG1fcGxhdGZvcm1SZXF1
ZXN0VXBkYXRlZCA9IGZhbHNlOwogfQogCiB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OmFkZEhU
VFBIZWFkZXJGaWVsZHMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVyRmllbGRzKQpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAko
cmV2aXNpb24gNDgzNTYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGlj
YXRpb25DRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1DRk11dGFibGVEaWN0aW9uYXJ5UmVmIFdlYkNvcmVDcmVkZW50aWFsU3Rv
cmFnZTo6bV9zdG9yYWdlOwotCiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ3JlZGVu
dGlhbCYgcHJvcG9zZWRDcmVkZW50aWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzRmFpbHVyZUNvdW50LApJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5oCShyZXZp
c2lvbiA0ODM1NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlv
bkNGLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDI2ICs0Myw2IEBAIENGVVJMUHJvdGVjdGlvblNw
YWNlUmVmIGNyZWF0ZUNGKGNvbnN0IFAKIENyZWRlbnRpYWwgY29yZShDRlVSTENyZWRlbnRpYWxS
ZWYpOwogUHJvdGVjdGlvblNwYWNlIGNvcmUoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpOwogCi1j
bGFzcyBXZWJDb3JlQ3JlZGVudGlhbFN0b3JhZ2UgewotcHVibGljOgotICAgIHN0YXRpYyB2b2lk
IHNldChDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBwcm90ZWN0aW9uU3BhY2UsIENGVVJMQ3JlZGVu
dGlhbFJlZiBjcmVkZW50aWFsKQotICAgIHsKLSAgICAgICAgaWYgKCFtX3N0b3JhZ2UpCi0gICAg
ICAgICAgICBtX3N0b3JhZ2UgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShtX3N0
b3JhZ2UsIHByb3RlY3Rpb25TcGFjZSwgY3JlZGVudGlhbCk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IENGVVJMQ3JlZGVudGlhbFJlZiBnZXQoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlv
blNwYWNlKQotICAgIHsKLSAgICAgICAgaWYgKCFtX3N0b3JhZ2UpCi0gICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgcmV0dXJuIChDRlVSTENyZWRlbnRpYWxSZWYpQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUobV9zdG9yYWdlLCBwcm90ZWN0aW9uU3BhY2UpOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBzdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBtX3N0b3JhZ2U7Ci19OwotCiB9CiAKICNl
bmRpZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZO
ZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGTmV0LmNwcAkocmV2aXNpb24gNDgzNTYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDgg
KzMxLDkgQEAKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNpbmNsdWRlICJBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oIgotI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VXaW4uaCIKICNp
bmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiQ29va2llU3RvcmFnZVdpbi5oIgorI2luY2x1
ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgpAQCAtNzksNiArODAsNyBAQCBw
cml2YXRlOgogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gbV91cmw7CiAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBtX3VzZXI7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtX3Bhc3M7Cisg
ICAgQ3JlZGVudGlhbCBtX2luaXRpYWxDcmVkZW50aWFsOwogICAgIGJvb2wgbV9hbGxvd1N0b3Jl
ZENyZWRlbnRpYWxzOwogICAgIFJlc291cmNlUmVzcG9uc2UmIG1fcmVzcG9uc2U7CiAgICAgUmV0
YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IG1fZGF0YTsKQEAgLTM3NCw2ICszNzYsMTkgQEAgYm9v
bCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoRnJhbWUqIGZyYW1lKQogICAgICAgICBkLT5tX3JlcXVl
c3Quc2V0VVJMKHVybFdpdGhDcmVkZW50aWFscyk7CiAgICAgfQogCisgICAgLy8gPHJkYXI6Ly9w
cm9ibGVtLzcxNzQwNTA+IC0gRm9yIFVSTHMgdGhhdCBtYXRjaCB0aGUgcGF0aHMgb2YgdGhvc2Ug
cHJldmlvdXNseSBjaGFsbGVuZ2VkIGZvciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uLCAKKyAg
ICAvLyB0cnkgYW5kIHJldXNlIHRoZSBjcmVkZW50aWFsIHByZWVtcHRpdmVseSwgYXMgYWxsb3dl
ZCBieSBSRkMgMjYxNy4KKyAgICBpZiAoIWNsaWVudCgpIHx8IGNsaWVudCgpLT5zaG91bGRVc2VD
cmVkZW50aWFsU3RvcmFnZSh0aGlzKSAmJiBkLT5tX3JlcXVlc3QudXJsKCkucHJvdG9jb2xJbkhU
VFBGYW1pbHkoKSkKKyAgICAgICAgZC0+bV9pbml0aWFsQ3JlZGVudGlhbCA9IENyZWRlbnRpYWxT
dG9yYWdlOjpnZXREZWZhdWx0QXV0aGVudGljYXRpb25DcmVkZW50aWFsKGQtPm1fcmVxdWVzdC51
cmwoKSk7CisgICAgICAgIAorICAgIGlmICghZC0+bV9pbml0aWFsQ3JlZGVudGlhbC5pc0VtcHR5
KCkpIHsKKyAgICAgICAgLy8gQXBwbHkgYmFzaWMgYXV0aCBoZWFkZXIKKyAgICAgICAgU3RyaW5n
IHVuZW5jb2RlZCA9IGQtPm1faW5pdGlhbENyZWRlbnRpYWwudXNlcigpICsgIjoiICsgZC0+bV9p
bml0aWFsQ3JlZGVudGlhbC5wYXNzd29yZCgpOworICAgICAgICBDU3RyaW5nIGVuY29kZWQgPSB1
bmVuY29kZWQudXRmOCgpLmJhc2U2NEVuY29kZSgpOworICAgICAgICBTdHJpbmcgYXV0aEhlYWRl
ciA9IFN0cmluZzo6Zm9ybWF0KCJCYXNpYyAlcyIsIGVuY29kZWQuZGF0YSgpKTsKKyAgICAgICAg
ZC0+bV9yZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZCgiQXV0aG9yaXphdGlvbiIsIGF1dGhIZWFk
ZXIpOworICAgIH0KKwogICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IHJlcXVlc3QoQWRv
cHRDRiwgbWFrZUZpbmFsUmVxdWVzdChkLT5tX3JlcXVlc3QsIGQtPm1fc2hvdWxkQ29udGVudFNu
aWZmKSk7CiAKICAgICBDRlVSTENvbm5lY3Rpb25DbGllbnRfVjMgY2xpZW50ID0geyAzLCB0aGlz
LCAwLCAwLCAwLCBXZWJDb3JlOjp3aWxsU2VuZFJlcXVlc3QsIGRpZFJlY2VpdmVSZXNwb25zZSwg
ZGlkUmVjZWl2ZURhdGEsIE5VTEwsIGRpZEZpbmlzaExvYWRpbmcsIGRpZEZhaWwsIHdpbGxDYWNo
ZVJlc3BvbnNlLCBkaWRSZWNlaXZlQ2hhbGxlbmdlLCBkaWRTZW5kQm9keURhdGEsIHNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2ssIDB9OwpAQCAtNDQxLDcgKzQ1NiwxMiBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljCiAgICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gcGFzcyhBZG9wdENGLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKSk7CiAg
ICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwoQWRvcHRDRiwK
ICAgICAgICAgICAgIENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1
c2VyLmdldCgpLCBwYXNzLmdldCgpLCAwLCBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25l
KSk7Ci0gICAgICAgIFdlYkNvcmVDcmVkZW50aWFsU3RvcmFnZTo6c2V0KENGVVJMQXV0aENoYWxs
ZW5nZUdldFByb3RlY3Rpb25TcGFjZShjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkp
LCBjcmVkZW50aWFsLmdldCgpKTsKKyAgICAgICAgCisgICAgICAgIEtVUkwgdXJsVG9TdG9yZTsK
KyAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgp
ID09IDQwMSkKKyAgICAgICAgICAgIHVybFRvU3RvcmUgPSBkLT5tX3JlcXVlc3QudXJsKCkKKyAg
ICAgICAgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChjb3JlKGNyZWRlbnRpYWwuZ2V0KCkpLCBjaGFs
bGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIHVybFRvU3RvcmUpOworICAgICAgICAKICAgICAgICAg
Q0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGNyZWRl
bnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAgICAg
IGQtPm1fdXNlciA9IFN0cmluZygpOwogICAgICAgICBkLT5tX3Bhc3MgPSBTdHJpbmcoKTsKQEAg
LTQ1MCwxMCArNDcwLDExIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50
aWMKICAgICB9CiAKICAgICBpZiAoIWNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpICYm
ICghY2xpZW50KCkgfHwgY2xpZW50KCktPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMp
KSkgewotICAgICAgICBDRlVSTENyZWRlbnRpYWxSZWYgY3JlZGVudGlhbCA9IFdlYkNvcmVDcmVk
ZW50aWFsU3RvcmFnZTo6Z2V0KENGVVJMQXV0aENoYWxsZW5nZUdldFByb3RlY3Rpb25TcGFjZShj
aGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpKTsKLSAgICAgICAgaWYgKGNyZWRlbnRp
YWwpIHsKLSAgICAgICAgICAgIEFTU0VSVChDRlVSTENyZWRlbnRpYWxHZXRQZXJzaXN0ZW5jZShj
cmVkZW50aWFsKSA9PSBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKLSAgICAgICAg
ICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBj
cmVkZW50aWFsLCBjaGFsbGVuZ2UuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOworICAgICAgICBD
cmVkZW50aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KGNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2UoKSk7CisgICAgICAgIGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkgJiYg
Y3JlZGVudGlhbCAhPSBkLT5tX2luaXRpYWxDcmVkZW50aWFsKSB7CisgICAgICAgICAgICBBU1NF
UlQoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpID09IENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUp
OworICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFs
KEFkb3B0Q0YsIGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKKyAgICAgICAgICAgIENGVVJMQ29ubmVj
dGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0
KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICB9CkBAIC00NzgsNyArNDk5LDEyIEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCgKICAgICAgICAgLy8gdG8gaWdub3JlIGl0IGZvciBh
IHBhcnRpY3VsYXIgcmVxdWVzdCAoc2hvcnQgb2YgcmVtb3ZpbmcgaXQgYWx0b2dldGhlcikuCiAg
ICAgICAgIENyZWRlbnRpYWwgd2ViQ3JlZGVudGlhbChjcmVkZW50aWFsLnVzZXIoKSwgY3JlZGVu
dGlhbC5wYXNzd29yZCgpLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKICAgICAgICAgUmV0
YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsKEFkb3B0Q0YsIGNyZWF0ZUNG
KHdlYkNyZWRlbnRpYWwpKTsKLSAgICAgICAgV2ViQ29yZUNyZWRlbnRpYWxTdG9yYWdlOjpzZXQo
Q0ZVUkxBdXRoQ2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNoYWxsZW5nZS5jZlVSTEF1dGhD
aGFsbGVuZ2VSZWYoKSksIGNmQ3JlZGVudGlhbC5nZXQoKSk7CisgICAgICAgIAorICAgICAgICBL
VVJMIHVybFRvU3RvcmU7CisgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCku
aHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCisgICAgICAgICAgICB1cmxUb1N0b3JlID0gZC0+bV9y
ZXF1ZXN0LnVybCgpICAgICAgICAKKyAgICAgICAgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldCh3ZWJD
cmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCksIHVybFRvU3RvcmUpOworCiAg
ICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoZC0+bV9jb25uZWN0aW9uLmdldCgp
LCBjZkNyZWRlbnRpYWwuZ2V0KCksIGNoYWxsZW5nZS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZD
cmVkZW50aWFsKEFkb3B0Q0YsIGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKQEAgLTY1OSwxOSArNjg1
LDI4IEBAIHZvaWQgV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyOjpkaWRSZWNlaXYKICAgICBXZWJD
b3JlU3luY2hyb25vdXNMb2FkZXIqIGxvYWRlciA9IHN0YXRpY19jYXN0PFdlYkNvcmVTeW5jaHJv
bm91c0xvYWRlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKIAogICAgIGlmIChs
b2FkZXItPm1fdXNlciAmJiBsb2FkZXItPm1fcGFzcykgewotICAgICAgICBSZXRhaW5QdHI8Q0ZV
UkxDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFsKEFkb3B0Q0YsCi0gICAgICAgICAgICBDRlVSTENy
ZWRlbnRpYWxDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbG9hZGVyLT5tX3VzZXIuZ2V0KCks
IGxvYWRlci0+bV9wYXNzLmdldCgpLCAwLCBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25l
KSk7Ci0gICAgICAgIFdlYkNvcmVDcmVkZW50aWFsU3RvcmFnZTo6c2V0KENGVVJMQXV0aENoYWxs
ZW5nZUdldFByb3RlY3Rpb25TcGFjZShjaGFsbGVuZ2UpLCBjcmVkZW50aWFsLmdldCgpKTsKLSAg
ICAgICAgQ0ZVUkxDb25uZWN0aW9uVXNlQ3JlZGVudGlhbChjb25uLCBjcmVkZW50aWFsLmdldCgp
LCBjaGFsbGVuZ2UpOworICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwobG9hZGVyLT5tX3Vz
ZXIuZ2V0KCksIGxvYWRlci0+bV9wYXNzLmdldCgpLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25l
KTsKKyAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsKEFk
b3B0Q0YsIGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKKyAgICAgICAgCisgICAgICAgIENGVVJMUmVz
cG9uc2VSZWYgdXJsUmVzcG9uc2UgPSBDRlVSTEF1dGhDaGFsbGVuZ2VHZXRGYWlsdXJlUmVzcG9u
c2UoY2hhbGxlbmdlKTsKKyAgICAgICAgQ0ZIVFRQTWVzc2FnZVJlZiBodHRwUmVzcG9uc2UgPSB1
cmxSZXNwb25zZSA/IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UodXJsUmVzcG9uc2UpIDog
MDsKKyAgICAgICAgS1VSTCB1cmxUb1N0b3JlOworICAgICAgICBpZiAoaHR0cFJlc3BvbnNlICYm
IENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0cFJlc3BvbnNlKSA9PSA0MDEp
CisgICAgICAgICAgICB1cmxUb1N0b3JlID0gbG9hZGVyLT5tX3VybDsKKyAgICAgICAgICAgIAor
ICAgICAgICBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KGNyZWRlbnRpYWwsIGNvcmUoQ0ZVUkxBdXRo
Q2hhbGxlbmdlR2V0UHJvdGVjdGlvblNwYWNlKGNoYWxsZW5nZSkpLCB1cmxUb1N0b3JlKTsKKyAg
ICAgICAgCisgICAgICAgIENGVVJMQ29ubmVjdGlvblVzZUNyZWRlbnRpYWwoY29ubiwgY2ZDcmVk
ZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UpOwogICAgICAgICBsb2FkZXItPm1fdXNlciA9IDA7CiAg
ICAgICAgIGxvYWRlci0+bV9wYXNzID0gMDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBp
ZiAoIUNGVVJMQXV0aENoYWxsZW5nZUdldFByZXZpb3VzRmFpbHVyZUNvdW50KGNoYWxsZW5nZSkg
JiYgbG9hZGVyLT5tX2FsbG93U3RvcmVkQ3JlZGVudGlhbHMpIHsKLSAgICAgICAgQ0ZVUkxDcmVk
ZW50aWFsUmVmIGNyZWRlbnRpYWwgPSBXZWJDb3JlQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChDRlVS
TEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2UoY2hhbGxlbmdlKSk7Ci0gICAgICAgIGlm
IChjcmVkZW50aWFsKSB7Ci0gICAgICAgICAgICBBU1NFUlQoQ0ZVUkxDcmVkZW50aWFsR2V0UGVy
c2lzdGVuY2UoY3JlZGVudGlhbCkgPT0ga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7
Ci0gICAgICAgICAgICBDRlVSTENvbm5lY3Rpb25Vc2VDcmVkZW50aWFsKGNvbm4sIGNyZWRlbnRp
YWwsIGNoYWxsZW5nZSk7CisgICAgICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbCA9IENyZWRlbnRp
YWxTdG9yYWdlOjpnZXQoY29yZShDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcm90ZWN0aW9uU3BhY2Uo
Y2hhbGxlbmdlKSkpOworICAgICAgICBpZiAoIWNyZWRlbnRpYWwuaXNFbXB0eSgpICYmIGNyZWRl
bnRpYWwgIT0gbG9hZGVyLT5tX2luaXRpYWxDcmVkZW50aWFsKSB7CisgICAgICAgICAgICBBU1NF
UlQoY3JlZGVudGlhbC5wZXJzaXN0ZW5jZSgpID09IENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUp
OworICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFs
KEFkb3B0Q0YsIGNyZWF0ZUNGKGNyZWRlbnRpYWwpKTsKKyAgICAgICAgICAgIENGVVJMQ29ubmVj
dGlvblVzZUNyZWRlbnRpYWwoY29ubiwgY2ZDcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtNzA3LDggKzc0MiwyMyBA
QCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBXZWJDb3JlU3luY2hyb25vdXNMCiAgICAgICAgIFJlc291
cmNlUmVxdWVzdCByZXF1ZXN0V2l0aG91dENyZWRlbnRpYWxzKHJlcXVlc3QpOwogICAgICAgICBy
ZXF1ZXN0V2l0aG91dENyZWRlbnRpYWxzLnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAgICAgICAgIGNm
UmVxdWVzdC5hZG9wdENGKG1ha2VGaW5hbFJlcXVlc3QocmVxdWVzdFdpdGhvdXRDcmVkZW50aWFs
cywgUmVzb3VyY2VIYW5kbGU6OnNob3VsZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0V2l0aG91dENy
ZWRlbnRpYWxzLnVybCgpKSkpOwotICAgIH0gZWxzZQotICAgICAgICBjZlJlcXVlc3QuYWRvcHRD
RihtYWtlRmluYWxSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNlSGFuZGxlOjpzaG91bGRDb250ZW50
U25pZmZVUkwocmVxdWVzdC51cmwoKSkpKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyA8cmRh
cjovL3Byb2JsZW0vNzE3NDA1MD4gLSBGb3IgVVJMcyB0aGF0IG1hdGNoIHRoZSBwYXRocyBvZiB0
aG9zZSBwcmV2aW91c2x5IGNoYWxsZW5nZWQgZm9yIEhUVFAgQmFzaWMgYXV0aGVudGljYXRpb24s
IAorICAgICAgICAvLyB0cnkgYW5kIHJldXNlIHRoZSBjcmVkZW50aWFsIHByZWVtcHRpdmVseSwg
YXMgYWxsb3dlZCBieSBSRkMgMjYxNy4KKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3RX
aXRoSW5pdGlhbENyZWRlbnRpYWwocmVxdWVzdCk7CisgICAgICAgIGlmIChsb2FkZXIubV9hbGxv
d1N0b3JlZENyZWRlbnRpYWxzICYmIHVybC5wcm90b2NvbEluSFRUUEZhbWlseSgpKQorICAgICAg
ICAgICAgbV9pbml0aWFsQ3JlZGVudGlhbCA9IENyZWRlbnRpYWxTdG9yYWdlOjpnZXREZWZhdWx0
QXV0aGVudGljYXRpb25DcmVkZW50aWFsKHVybCk7CisKKyAgICAgICAgaWYgKCFtX2luaXRpYWxD
cmVkZW50aWFsLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gQXBwbHkgYmFzaWMgYXV0aCBo
ZWFkZXIKKyAgICAgICAgICAgIFN0cmluZyB1bmVuY29kZWQgPSBtX2luaXRpYWxDcmVkZW50aWFs
LnVzZXIoKSArICI6IiArIG1faW5pdGlhbENyZWRlbnRpYWwucGFzc3dvcmQoKTsKKyAgICAgICAg
ICAgIENTdHJpbmcgZW5jb2RlZCA9IHVuZW5jb2RlZC51dGY4KCkuYmFzZTY0RW5jb2RlKCk7Cisg
ICAgICAgICAgICBTdHJpbmcgYXV0aEhlYWRlciA9IFN0cmluZzo6Zm9ybWF0KCJCYXNpYyAlcyIs
IGVuY29kZWQuZGF0YSgpKTsKKyAgICAgICAgICAgIHJlcXVlc3RXaXRoSW5pdGlhbENyZWRlbnRp
YWwuYWRkSFRUUEhlYWRlckZpZWxkKCJBdXRob3JpemF0aW9uIiwgYXV0aEhlYWRlcik7CisgICAg
ICAgIH0KKworICAgICAgICBjZlJlcXVlc3QuYWRvcHRDRihtYWtlRmluYWxSZXF1ZXN0KHJlcXVl
c3RXaXRoSW5pdGlhbENyZWRlbnRpYWwsIFJlc291cmNlSGFuZGxlOjpzaG91bGRDb250ZW50U25p
ZmZVUkwocmVxdWVzdFdpdGhJbml0aWFsQ3JlZGVudGlhbC51cmwoKSkpKTsKKyAgICB9CiAKICAg
ICBDRlVSTENvbm5lY3Rpb25DbGllbnRfVjMgY2xpZW50ID0geyAzLCAmbG9hZGVyLCAwLCAwLCAw
LCB3aWxsU2VuZFJlcXVlc3QsIGRpZFJlY2VpdmVSZXNwb25zZSwgZGlkUmVjZWl2ZURhdGEsIDAs
IGRpZEZpbmlzaExvYWRpbmcsIGRpZEZhaWwsIDAsIGRpZFJlY2VpdmVDaGFsbGVuZ2UsIDAsIHNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCAwIH07CiAgICAgUmV0YWluUHRyPENGVVJMQ29ubmVj
dGlvblJlZj4gY29ubmVjdGlvbihBZG9wdENGLCBDRlVSTENvbm5lY3Rpb25DcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgY2ZSZXF1ZXN0LmdldCgpLCByZWludGVycHJldF9jYXN0PENGVVJMQ29u
bmVjdGlvbkNsaWVudCo+KCZjbGllbnQpKSk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5oCShyZXZpc2lvbiA0ODM1NikKKysrIFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMuaAkod29ya2luZyBj
b3B5KQpAQCAtNDUsMjQgKzQ1LDYgQEAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY29yZShOU1VS
TEF1dGhlbgogUHJvdGVjdGlvblNwYWNlIGNvcmUoTlNVUkxQcm90ZWN0aW9uU3BhY2UgKik7CiBD
cmVkZW50aWFsIGNvcmUoTlNVUkxDcmVkZW50aWFsICopOwogCi1jbGFzcyBXZWJDb3JlQ3JlZGVu
dGlhbFN0b3JhZ2UgewotcHVibGljOgotICAgIHN0YXRpYyB2b2lkIHNldChOU1VSTENyZWRlbnRp
YWwgKmNyZWRlbnRpYWwsIE5TVVJMUHJvdGVjdGlvblNwYWNlICpwcm90ZWN0aW9uU3BhY2UpCi0g
ICAgewotICAgICAgICBpZiAoIW1fc3RvcmFnZSkKLSAgICAgICAgICAgIG1fc3RvcmFnZSA9IFtb
TlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgICAgIFttX3N0b3JhZ2Ugc2V0
T2JqZWN0OmNyZWRlbnRpYWwgZm9yS2V5OnByb3RlY3Rpb25TcGFjZV07Ci0gICAgfQotCi0gICAg
c3RhdGljIE5TVVJMQ3JlZGVudGlhbCAqZ2V0KE5TVVJMUHJvdGVjdGlvblNwYWNlICpwcm90ZWN0
aW9uU3BhY2UpCi0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TlNVUkxDcmVkZW50
aWFsICo+KFttX3N0b3JhZ2Ugb2JqZWN0Rm9yS2V5OnByb3RlY3Rpb25TcGFjZV0pOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBzdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSogbV9zdG9yYWdlOwot
fTsKLQogfQogI2VuZGlmCiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0
aGVudGljYXRpb25NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbQkocmV2aXNpb24gNDgzNTYpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw5ICszNiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotCi1OU011dGFibGVEaWN0
aW9uYXJ5KiBXZWJDb3JlQ3JlZGVudGlhbFN0b3JhZ2U6Om1fc3RvcmFnZTsKLQogQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYgcHJvdGVjdGlvblNwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENyZWRlbnRpYWwmIHByb3Bvc2VkQ3JlZGVudGlhbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBw
cmV2aW91c0ZhaWx1cmVDb3VudCwKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VIYW5kbGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkocmV2aXNpb24gNDgzNTYpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw4IEBACiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgog
I2ltcG9ydCAiQXV0aGVudGljYXRpb25NYWMuaCIKICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5o
IgorI2ltcG9ydCAiQ1N0cmluZy5oIgorI2ltcG9ydCAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKICNp
bXBvcnQgIkRvY0xvYWRlci5oIgogI2ltcG9ydCAiRm9ybURhdGFTdHJlYW1NYWMuaCIKICNpbXBv
cnQgIkZyYW1lLmgiCkBAIC03NCw2ICs3Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
ICAgIE5TVVJMICptX3VybDsKICAgICBOU1N0cmluZyAqbV91c2VyOwogICAgIE5TU3RyaW5nICpt
X3Bhc3M7CisgICAgQ3JlZGVudGlhbCBtX2luaXRpYWxDcmVkZW50aWFsOwogICAgIEJPT0wgbV9h
bGxvd1N0b3JlZENyZWRlbnRpYWxzOwogICAgIE5TVVJMUmVzcG9uc2UgKm1fcmVzcG9uc2U7CiAg
ICAgTlNNdXRhYmxlRGF0YSAqbV9kYXRhOwpAQCAtMTY3LDYgKzE3MCwxOSBAQCBib29sIFJlc291
cmNlSGFuZGxlOjpzdGFydChGcmFtZSogZnJhbWUpCiAgICAgICAgIHVybFdpdGhDcmVkZW50aWFs
cy5zZXRQYXNzKGQtPm1fcGFzcyk7CiAgICAgICAgIGQtPm1fcmVxdWVzdC5zZXRVUkwodXJsV2l0
aENyZWRlbnRpYWxzKTsKICAgICB9CisgICAgCisgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzcxNzQw
NTA+IC0gRm9yIFVSTHMgdGhhdCBtYXRjaCB0aGUgcGF0aHMgb2YgdGhvc2UgcHJldmlvdXNseSBj
aGFsbGVuZ2VkIGZvciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uLCAKKyAgICAvLyB0cnkgYW5k
IHJldXNlIHRoZSBjcmVkZW50aWFsIHByZWVtcHRpdmVseSwgYXMgYWxsb3dlZCBieSBSRkMgMjYx
Ny4KKyAgICBpZiAoIWNsaWVudCgpIHx8IGNsaWVudCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZSh0aGlzKSAmJiBkLT5tX3JlcXVlc3QudXJsKCkucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkK
KyAgICAgICAgZC0+bV9pbml0aWFsQ3JlZGVudGlhbCA9IENyZWRlbnRpYWxTdG9yYWdlOjpnZXRE
ZWZhdWx0QXV0aGVudGljYXRpb25DcmVkZW50aWFsKGQtPm1fcmVxdWVzdC51cmwoKSk7CisgICAg
ICAgIAorICAgIGlmICghZC0+bV9pbml0aWFsQ3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgLy8gQXBwbHkgYmFzaWMgYXV0aCBoZWFkZXIKKyAgICAgICAgU3RyaW5nIHVuZW5jb2RlZCA9
IGQtPm1faW5pdGlhbENyZWRlbnRpYWwudXNlcigpICsgIjoiICsgZC0+bV9pbml0aWFsQ3JlZGVu
dGlhbC5wYXNzd29yZCgpOworICAgICAgICBDU3RyaW5nIGVuY29kZWQgPSB1bmVuY29kZWQudXRm
OCgpLmJhc2U2NEVuY29kZSgpOworICAgICAgICBTdHJpbmcgYXV0aEhlYWRlciA9IFN0cmluZzo6
Zm9ybWF0KCJCYXNpYyAlcyIsIGVuY29kZWQuZGF0YSgpKTsKKyAgICAgICAgZC0+bV9yZXF1ZXN0
LmFkZEhUVFBIZWFkZXJGaWVsZCgiQXV0aG9yaXphdGlvbiIsIGF1dGhIZWFkZXIpOworICAgIH0K
IAogICAgIGlmICghUmVzb3VyY2VIYW5kbGU6OmRpZFNlbmRCb2R5RGF0YURlbGVnYXRlRXhpc3Rz
KCkpCiAgICAgICAgIGFzc29jaWF0ZVN0cmVhbVdpdGhSZXNvdXJjZUhhbmRsZShbZC0+bV9yZXF1
ZXN0Lm5zVVJMUmVxdWVzdCgpIEhUVFBCb2R5U3RyZWFtXSwgdGhpcyk7CkBAIC00NTgsOSArNDc0
LDkgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpYwogICAgIH0KIAog
ICAgIGlmICghY2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCkgJiYgKCFjbGllbnQoKSB8
fCBjbGllbnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UodGhpcykpKSB7Ci0gICAgICAg
IE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCA9IFdlYkNvcmVDcmVkZW50aWFsU3RvcmFnZTo6
Z2V0KFttYWMoY2hhbGxlbmdlKSBwcm90ZWN0aW9uU3BhY2VdKTsKLSAgICAgICAgaWYgKGNyZWRl
bnRpYWwpIHsKLSAgICAgICAgICAgIFtjaGFsbGVuZ2Uuc2VuZGVyKCkgdXNlQ3JlZGVudGlhbDpj
cmVkZW50aWFsIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1hYyhjaGFsbGVuZ2UpXTsKKyAg
ICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChjaGFs
bGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpOworICAgICAgICBpZiAoIWNyZWRlbnRpYWwuaXNFbXB0
eSgpICYmIGNyZWRlbnRpYWwgIT0gZC0+bV9pbml0aWFsQ3JlZGVudGlhbCkgeworICAgICAgICAg
ICAgW2NoYWxsZW5nZS5zZW5kZXIoKSB1c2VDcmVkZW50aWFsOm1hYyhjcmVkZW50aWFsKSBmb3JB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTptYWMoY2hhbGxlbmdlKV07CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICB9CkBAIC00OTUsNyArNTExLDExIEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbCgKICAgICBpZiAoY3JlZGVudGlhbC5wZXJzaXN0ZW5j
ZSgpID09IENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpIHsKICAgICAgICAgLy8gTlNVUkxDcmVk
ZW50aWFsUGVyc2lzdGVuY2VOb25lIGRvZXNuJ3Qgd29yayBvbiBUaWdlciwgc28gd2UgaGF2ZSB0
byB1c2Ugc2Vzc2lvbiBwZXJzaXN0ZW5jZS4KICAgICAgICAgQ3JlZGVudGlhbCB3ZWJDcmVkZW50
aWFsKGNyZWRlbnRpYWwudXNlcigpLCBjcmVkZW50aWFsLnBhc3N3b3JkKCksIENyZWRlbnRpYWxQ
ZXJzaXN0ZW5jZUZvclNlc3Npb24pOwotICAgICAgICBXZWJDb3JlQ3JlZGVudGlhbFN0b3JhZ2U6
OnNldChtYWMod2ViQ3JlZGVudGlhbCksIFtkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2UgcHJvdGVj
dGlvblNwYWNlXSk7CisgICAgICAgIEtVUkwgdXJsVG9TdG9yZTsKKyAgICAgICAgaWYgKGNoYWxs
ZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkKKyAgICAgICAg
ICAgIHVybFRvU3RvcmUgPSBkLT5tX3JlcXVlc3QudXJsKCk7CisgICAgICAgIENyZWRlbnRpYWxT
dG9yYWdlOjpzZXQod2ViQ3JlZGVudGlhbCwgY29yZShbZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdl
IHByb3RlY3Rpb25TcGFjZV0pLCB1cmxUb1N0b3JlKTsKKyAgICAgICAgCiAgICAgICAgIFtbZC0+
bV9jdXJyZW50TWFjQ2hhbGxlbmdlIHNlbmRlcl0gdXNlQ3JlZGVudGlhbDptYWMod2ViQ3JlZGVu
dGlhbCkgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6ZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdl
XTsKICAgICB9IGVsc2UKICNlbHNlCkBAIC01MDQsMTIgKzUyNCwxOSBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoCiAgICAgICAgIC8vIHRvIGlnbm9yZSBpdCBmb3Ig
YSBwYXJ0aWN1bGFyIHJlcXVlc3QgKHNob3J0IG9mIHJlbW92aW5nIGl0IGFsdG9nZXRoZXIpLgog
ICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNjg2NzU5OD4gZ2FsbGVyeS5tZS5jb20gaXMgdGVt
cG9yYXJpbHkgd2hpdGVsaXN0ZWQsIHNvIHRoYXQgUXVpY2tUaW1lIHBsdWctaW4gY291bGQgc2Vl
IHRoZSBjcmVkZW50aWFscy4KICAgICAgICAgQ3JlZGVudGlhbCB3ZWJDcmVkZW50aWFsKGNyZWRl
bnRpYWwudXNlcigpLCBjcmVkZW50aWFsLnBhc3N3b3JkKCksIENyZWRlbnRpYWxQZXJzaXN0ZW5j
ZU5vbmUpOwotICAgICAgICBXZWJDb3JlQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChtYWMod2ViQ3Jl
ZGVudGlhbCksIFtkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2UgcHJvdGVjdGlvblNwYWNlXSk7Cisg
ICAgICAgIEtVUkwgdXJsVG9TdG9yZTsKKyAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVz
cG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkKKyAgICAgICAgICAgIHVybFRvU3RvcmUg
PSBkLT5tX3JlcXVlc3QudXJsKCk7CisgICAgICAgIENyZWRlbnRpYWxTdG9yYWdlOjpzZXQod2Vi
Q3JlZGVudGlhbCwgY29yZShbZC0+bV9jdXJyZW50TWFjQ2hhbGxlbmdlIHByb3RlY3Rpb25TcGFj
ZV0pLCB1cmxUb1N0b3JlKTsKKyAgICAgICAgTlNMb2coQCJUZWxsaW5nIHNlbmQgdG8gdXNlICVA
IGZvciBjaGFsbGVuZ2UgJUAiLCBtYWMod2ViQ3JlZGVudGlhbCksIGQtPm1fY3VycmVudE1hY0No
YWxsZW5nZSk7CisKICAgICAgICAgW1tkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2Ugc2VuZGVyXSB1
c2VDcmVkZW50aWFsOm1hYyh3ZWJDcmVkZW50aWFsKSBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTpkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2VdOwotICAgIH0gZWxzZQorICAgIH0gZWxzZSB7CiAj
ZW5kaWYKLSAgICAgICAgW1tkLT5tX2N1cnJlbnRNYWNDaGFsbGVuZ2Ugc2VuZGVyXSB1c2VDcmVk
ZW50aWFsOm1hYyhjcmVkZW50aWFsKSBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpkLT5tX2N1
cnJlbnRNYWNDaGFsbGVuZ2VdOworICAgICAgICBOU0xvZyhAIlRlbGxpbmcgc2VuZCB0byB1c2Ug
JUAgZm9yIGNoYWxsZW5nZSAlQCIsIG1hYyhjcmVkZW50aWFsKSwgZC0+bV9jdXJyZW50TWFjQ2hh
bGxlbmdlKTsKIAorICAgICAgICBbW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBzZW5kZXJdIHVz
ZUNyZWRlbnRpYWw6bWFjKGNyZWRlbnRpYWwpIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmQt
Pm1fY3VycmVudE1hY0NoYWxsZW5nZV07CisgICAgfQogICAgIGNsZWFyQXV0aGVudGljYXRpb24o
KTsKIH0KIApAQCAtODk4LDcgKzkyNSwxMSBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZl
ZENhbmNlbGxhdGlvCiAgICAgICAgIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCA9IFtbTlNV
UkxDcmVkZW50aWFsIGFsbG9jXSBpbml0V2l0aFVzZXI6bV91c2VyCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dv
cmQ6bV9wYXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGVyc2lzdGVuY2U6TlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VO
b25lXTsKLSAgICAgICAgV2ViQ29yZUNyZWRlbnRpYWxTdG9yYWdlOjpzZXQoY3JlZGVudGlhbCwg
W2NoYWxsZW5nZSBwcm90ZWN0aW9uU3BhY2VdKTsKKyAgICAgICAgS1VSTCB1cmxUb1N0b3JlOwor
ICAgICAgICBpZiAoW1tjaGFsbGVuZ2UgZmFpbHVyZVJlc3BvbnNlXSBpc0tpbmRPZkNsYXNzOltO
U0hUVFBVUkxSZXNwb25zZSBjbGFzc11dICYmIFsoTlNIVFRQVVJMUmVzcG9uc2UqKVtjaGFsbGVu
Z2UgZmFpbHVyZVJlc3BvbnNlXSBzdGF0dXNDb2RlXSA9PSA0MDEpCisgICAgICAgICAgICB1cmxU
b1N0b3JlID0gbV91cmw7CisgICAgICAgIENyZWRlbnRpYWxTdG9yYWdlOjpzZXQoY29yZShjcmVk
ZW50aWFsKSwgY29yZShbY2hhbGxlbmdlIHByb3RlY3Rpb25TcGFjZV0pLCB1cmxUb1N0b3JlKTsK
KyAgICAgICAgCiAgICAgICAgIFtbY2hhbGxlbmdlIHNlbmRlcl0gdXNlQ3JlZGVudGlhbDpjcmVk
ZW50aWFsIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZV07CiAgICAgICAgIFtj
cmVkZW50aWFsIHJlbGVhc2VdOwogICAgICAgICBbbV91c2VyIHJlbGVhc2VdOwpAQCAtOTA4LDEw
ICs5MzksMTAgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpbwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChbY2hhbGxlbmdlIHByZXZpb3VzRmFpbHVyZUNv
dW50XSA9PSAwICYmIG1fYWxsb3dTdG9yZWRDcmVkZW50aWFscykgewotICAgICAgICBOU1VSTENy
ZWRlbnRpYWwgKmNyZWRlbnRpYWwgPSBXZWJDb3JlQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChbY2hh
bGxlbmdlIHByb3RlY3Rpb25TcGFjZV0pOwotICAgICAgICBBU1NFUlQoW2NyZWRlbnRpYWwgcGVy
c2lzdGVuY2VdID09IE5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7Ci0gICAgICAgIGlm
IChjcmVkZW50aWFsKSB7Ci0gICAgICAgICAgICBbW2NoYWxsZW5nZSBzZW5kZXJdIHVzZUNyZWRl
bnRpYWw6Y3JlZGVudGlhbCBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2VdOwor
ICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KGNv
cmUoW2NoYWxsZW5nZSBwcm90ZWN0aW9uU3BhY2VdKSk7CisgICAgICAgIEFTU0VSVChjcmVkZW50
aWFsLnBlcnNpc3RlbmNlKCkgPT0gQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7CisgICAgICAg
IGlmICghY3JlZGVudGlhbC5pc0VtcHR5KCkgJiYgY3JlZGVudGlhbCAhPSBtX2luaXRpYWxDcmVk
ZW50aWFsKSB7CisgICAgICAgICAgICBbW2NoYWxsZW5nZSBzZW5kZXJdIHVzZUNyZWRlbnRpYWw6
bWFjKGNyZWRlbnRpYWwpIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZV07CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC05NzUsMjEgKzEwMDYsMzUg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpbwogewogICAgIFdlYkNv
cmVTeW5jaHJvbm91c0xvYWRlciAqZGVsZWdhdGUgPSBbW1dlYkNvcmVTeW5jaHJvbm91c0xvYWRl
ciBhbGxvY10gaW5pdF07CiAKLSAgICBOU1VSTCAqdXJsID0gW3JlcXVlc3QgVVJMXTsKLSAgICBk
ZWxlZ2F0ZS0+bV91c2VyID0gW1t1cmwgdXNlcl0gY29weV07Ci0gICAgZGVsZWdhdGUtPm1fcGFz
cyA9IFtbdXJsIHBhc3N3b3JkXSBjb3B5XTsKKyAgICBLVVJMIHVybChbcmVxdWVzdCBVUkxdKTsK
KyAgICBkZWxlZ2F0ZS0+bV91c2VyID0gW25zU3RyaW5nTmlsSWZFbXB0eSh1cmwudXNlcigpKSBy
ZXRhaW5dOworICAgIGRlbGVnYXRlLT5tX3Bhc3MgPSBbbnNTdHJpbmdOaWxJZkVtcHR5KHVybC5w
YXNzKCkpIHJldGFpbl07CiAgICAgZGVsZWdhdGUtPm1fYWxsb3dTdG9yZWRDcmVkZW50aWFscyA9
IGFsbG93U3RvcmVkQ3JlZGVudGlhbHM7CiAKICAgICBOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rp
b247CiAKICAgICAvLyBUYWtlIHVzZXIvcGFzcyBvdXQgb2YgdGhlIFVSTC4KICAgICAvLyBDcmVk
ZW50aWFscyBmb3IgZnRwIGNhbiBvbmx5IGJlIHBhc3NlZCBpbiBVUkwsIHRoZSBjb25uZWN0aW9u
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTogZGVsZWdhdGUgY2FsbCB3b24ndCBi
ZSBtYWRlLgotICAgIGlmICgoZGVsZWdhdGUtPm1fdXNlciB8fCBkZWxlZ2F0ZS0+bV9wYXNzKSAm
JiBLVVJMKHVybCkucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkgeworICAgIGlmICgoZGVsZWdhdGUt
Pm1fdXNlciB8fCBkZWxlZ2F0ZS0+bV9wYXNzKSAmJiB1cmwucHJvdG9jb2xJbkhUVFBGYW1pbHko
KSkgewogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdFdpdGhvdXRDcmVkZW50aWFscyA9
IHJlcXVlc3Q7CiAgICAgICAgIHJlcXVlc3RXaXRob3V0Q3JlZGVudGlhbHMucmVtb3ZlQ3JlZGVu
dGlhbHMoKTsKICAgICAgICAgY29ubmVjdGlvbiA9IFtbTlNVUkxDb25uZWN0aW9uIGFsbG9jXSBp
bml0V2l0aFJlcXVlc3Q6cmVxdWVzdFdpdGhvdXRDcmVkZW50aWFscy5uc1VSTFJlcXVlc3QoKSBk
ZWxlZ2F0ZTpkZWxlZ2F0ZSBzdGFydEltbWVkaWF0ZWx5Ok5PXTsKLSAgICB9IGVsc2UKLSAgICAg
ICAgY29ubmVjdGlvbiA9IFtbTlNVUkxDb25uZWN0aW9uIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6
cmVxdWVzdCBkZWxlZ2F0ZTpkZWxlZ2F0ZSBzdGFydEltbWVkaWF0ZWx5Ok5PXTsKKyAgICB9IGVs
c2UgeworICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzE3NDA1MD4gLSBGb3IgVVJMcyB0aGF0
IG1hdGNoIHRoZSBwYXRocyBvZiB0aG9zZSBwcmV2aW91c2x5IGNoYWxsZW5nZWQgZm9yIEhUVFAg
QmFzaWMgYXV0aGVudGljYXRpb24sIAorICAgICAgICAvLyB0cnkgYW5kIHJldXNlIHRoZSBjcmVk
ZW50aWFsIHByZWVtcHRpdmVseSwgYXMgYWxsb3dlZCBieSBSRkMgMjYxNy4KKyAgICAgICAgUmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3RXaXRoSW5pdGlhbENyZWRlbnRpYWxzID0gcmVxdWVzdDsKKyAg
ICAgICAgaWYgKGFsbG93U3RvcmVkQ3JlZGVudGlhbHMgJiYgdXJsLnByb3RvY29sSW5IVFRQRmFt
aWx5KCkpCisgICAgICAgICAgICBkZWxlZ2F0ZS0+bV9pbml0aWFsQ3JlZGVudGlhbCA9IENyZWRl
bnRpYWxTdG9yYWdlOjpnZXREZWZhdWx0QXV0aGVudGljYXRpb25DcmVkZW50aWFsKHVybCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgaWYgKCFkZWxlZ2F0ZS0+bV9pbml0aWFsQ3JlZGVudGlhbC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIEFwcGx5IGJhc2ljIGF1dGggaGVhZGVyCisgICAg
ICAgICAgICBTdHJpbmcgdW5lbmNvZGVkID0gZGVsZWdhdGUtPm1faW5pdGlhbENyZWRlbnRpYWwu
dXNlcigpICsgIjoiICsgZGVsZWdhdGUtPm1faW5pdGlhbENyZWRlbnRpYWwucGFzc3dvcmQoKTsK
KyAgICAgICAgICAgIENTdHJpbmcgZW5jb2RlZCA9IHVuZW5jb2RlZC51dGY4KCkuYmFzZTY0RW5j
b2RlKCk7CisgICAgICAgICAgICBTdHJpbmcgYXV0aEhlYWRlciA9IFN0cmluZzo6Zm9ybWF0KCJC
YXNpYyAlcyIsIGVuY29kZWQuZGF0YSgpKTsKKyAgICAgICAgICAgIHJlcXVlc3RXaXRoSW5pdGlh
bENyZWRlbnRpYWxzLmFkZEhUVFBIZWFkZXJGaWVsZCgiQXV0aG9yaXphdGlvbiIsIGF1dGhIZWFk
ZXIpOworICAgICAgICB9CisgICAgICAgIGNvbm5lY3Rpb24gPSBbW05TVVJMQ29ubmVjdGlvbiBh
bGxvY10gaW5pdFdpdGhSZXF1ZXN0OnJlcXVlc3RXaXRoSW5pdGlhbENyZWRlbnRpYWxzLm5zVVJM
UmVxdWVzdCgpIGRlbGVnYXRlOmRlbGVnYXRlIHN0YXJ0SW1tZWRpYXRlbHk6Tk9dOworICAgIH0K
IAogICAgIFtjb25uZWN0aW9uIHNjaGVkdWxlSW5SdW5Mb29wOltOU1J1bkxvb3AgY3VycmVudFJ1
bkxvb3BdIGZvck1vZGU6V2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyUnVuTG9vcE1vZGVdOwogICAg
IFtjb25uZWN0aW9uIHN0YXJ0XTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9DU3RyaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvQ1N0cmluZy5jcHAJKHJl
dmlzaW9uIDQ4MzU2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0NTdHJpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAw
NiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDYsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywxMCArMjcsMTkgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAKKyNpbmNsdWRlICJCYXNlNjQu
aCIKKwogdXNpbmcgc3RkOjptaW47CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0
cjxDU3RyaW5nQnVmZmVyPiBDU3RyaW5nQnVmZmVyOjpiYXNlNjRFbmNvZGUoKQoreworICAgIFZl
Y3RvcjxjaGFyPiBlbmNvZGVkOworICAgIFdlYkNvcmU6OmJhc2U2NEVuY29kZShtX3ZlY3Rvciwg
ZW5jb2RlZCk7CisgICAgcmV0dXJuIENTdHJpbmdCdWZmZXI6OmNyZWF0ZShlbmNvZGVkKTsKK30K
KwogQ1N0cmluZzo6Q1N0cmluZyhjb25zdCBjaGFyKiBzdHIpCiB7CiAgICAgaW5pdChzdHIsIHN0
cmxlbihzdHIpKTsKQEAgLTkwLDYgKzk5LDExIEBAIHZvaWQgQ1N0cmluZzo6Y29weUJ1ZmZlcklm
TmVlZGVkKCkKICAgICBtZW1jcHkobV9idWZmZXItPm11dGFibGVEYXRhKCksIG1fdGVtcC0+ZGF0
YSgpLCBsZW4pOwogfQogCitDU3RyaW5nIENTdHJpbmc6OmJhc2U2NEVuY29kZSgpCit7CisgICAg
cmV0dXJuIENTdHJpbmcobV9idWZmZXItPmJhc2U2NEVuY29kZSgpLmdldCgpKTsKK30KKwogYm9v
bCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpCiB7CiAgICAg
aWYgKGEuaXNOdWxsKCkgIT0gYi5pc051bGwoKSkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4
dC9DU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0NTdHJpbmcu
aAkocmV2aXNpb24gNDgzNTYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvQ1N0cmluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMDYsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw5ICs0MywxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDU3RyaW5nOwogCiAgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPENTdHJpbmdCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU3RyaW5nQnVmZmVyKGxlbmd0aCkpOyB9CisgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPENTdHJpbmdCdWZmZXI+IGNyZWF0ZShjb25zdCBWZWN0b3I8Y2hh
cj4mIHZlY3RvclRvQWRvcHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU3RyaW5nQnVmZmVyKHZl
Y3RvclRvQWRvcHQpKTsgfQogICAgICAgICBDU3RyaW5nQnVmZmVyKHVuc2lnbmVkIGxlbmd0aCkg
OiBtX3ZlY3RvcihsZW5ndGgpIHsgfQorICAgICAgICBDU3RyaW5nQnVmZmVyKGNvbnN0IFZlY3Rv
cjxjaGFyPiYgdmVjdG9yVG9BZG9wdCkgOiBtX3ZlY3Rvcih2ZWN0b3JUb0Fkb3B0KSB7IH0KICAg
ICAgICAgY2hhciogbXV0YWJsZURhdGEoKSB7IHJldHVybiBtX3ZlY3Rvci5kYXRhKCk7IH0KIAor
ICAgICAgICBQYXNzUmVmUHRyPENTdHJpbmdCdWZmZXI+IGJhc2U2NEVuY29kZSgpOwogICAgICAg
ICBWZWN0b3I8Y2hhcj4gbV92ZWN0b3I7CiAgICAgfTsKIApAQCAtNTksNiArNjIsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENTdHJpbmcoQ1N0cmluZ0J1ZmZlciogYnVmZmVyKSA6
IG1fYnVmZmVyKGJ1ZmZlcikgeyB9CiAgICAgICAgIHN0YXRpYyBDU3RyaW5nIG5ld1VuaW5pdGlh
bGl6ZWQoc2l6ZV90IGxlbmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7CiAKKyAgICAgICAg
Q1N0cmluZyBiYXNlNjRFbmNvZGUoKTsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IGNoYXIqIGRh
dGEoKSBjb25zdDsKICAgICAgICAgY2hhciogbXV0YWJsZURhdGEoKTsKICAgICAgICAgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3Q7CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNDgzNTYpCisrKyBXZWJLaXQvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDA5LTA5LTE0ICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTYWZhcmkgNCBjYW5ub3QgYmUgdXNlZCB0byB1cGRh
dGUgZmlybXdhcmUgb24gTGlua3N5cyByb3V0ZXJzLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzE3NDA1MD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTE2
MAorCisgICAgICAgIEFkb3B0IHRoZSBuZXcgV2ViQ29yZTo6Q3JlZGVudGlhbFN0b3JhZ2UgaW4g
V2ViS2l0L01hYy4KKworICAgICAgICAqIE1pc2MvV2ViRG93bmxvYWQubW06CisgICAgICAgICgt
W1dlYkRvd25sb2FkSW50ZXJuYWwgZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOl0pOgorICAgICAgICAqIFBsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5t
bToKKyAgICAgICAgKFdlYktpdDo6Z2V0QXV0aGVudGljYXRpb25JbmZvKToKKwogMjAwOS0wOS0x
MSAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpv
biBIb25leWN1dHQuCkluZGV4OiBXZWJLaXQvbWFjL01pc2MvV2ViRG93bmxvYWQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L21hYy9NaXNjL1dlYkRvd25sb2FkLm1tCShyZXZpc2lvbiA0ODM1NikK
KysrIFdlYktpdC9tYWMvTWlzYy9XZWJEb3dubG9hZC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEs
NiArMzEsOSBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMRG93bmxvYWQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvQXV0aGVudGljYXRpb25NYWMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ3JlZGVudGlhbC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50aWFsU3RvcmFnZS5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJQYW5lbEF1dGhlbnRpY2F0
aW9uSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIApAQCAtMTExLDcgKzEx
NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogewogICAgIC8vIFRyeSBwcmV2aW91c2x5
IHN0b3JlZCBjcmVkZW50aWFsIGZpcnN0LgogICAgIGlmICghW2NoYWxsZW5nZSBwcmV2aW91c0Zh
aWx1cmVDb3VudF0pIHsKLSAgICAgICAgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsID0gV2Vi
Q29yZUNyZWRlbnRpYWxTdG9yYWdlOjpnZXQoW2NoYWxsZW5nZSBwcm90ZWN0aW9uU3BhY2VdKTsK
KyAgICAgICAgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsID0gbWFjKENyZWRlbnRpYWxTdG9y
YWdlOjpnZXQoY29yZShbY2hhbGxlbmdlIHByb3RlY3Rpb25TcGFjZV0pKSk7CiAgICAgICAgIGlm
IChjcmVkZW50aWFsKSB7CiAgICAgICAgICAgICBbW2NoYWxsZW5nZSBzZW5kZXJdIHVzZUNyZWRl
bnRpYWw6Y3JlZGVudGlhbCBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2VdOwog
ICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRz
Y2FwZVBsdWdpblZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJh
c2VOZXRzY2FwZVBsdWdpblZpZXcubW0JKHJldmlzaW9uIDQ4MzU2KQorKysgV2ViS2l0L21hYy9Q
bHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQz
LDYgKzQzLDggQEAKIAogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbk1hYy5oPgorI2ltcG9ydCA8V2ViQ29yZS9DcmVk
ZW50aWFsLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NyZWRlbnRpYWxTdG9yYWdlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0NTdHJpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRWxlbWVudC5oPgpAQCAtNTAsNiArNTIsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9GcmFtZUxvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MUGx1Z0luRWxlbWVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Byb3RlY3Rpb25TcGFj
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQvRE9N
UHJpdmF0ZS5oPgogI2ltcG9ydCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CkBAIC04
NjgsNyArODcxLDcgQEAgYm9vbCBnZXRBdXRoZW50aWNhdGlvbkluZm8oY29uc3QgY2hhciogcAog
ICAgIAogICAgIFJldGFpblB0cjxOU1VSTFByb3RlY3Rpb25TcGFjZT4gcHJvdGVjdGlvblNwYWNl
KEFkb3B0TlMsIFtbTlNVUkxQcm90ZWN0aW9uU3BhY2UgYWxsb2NdIGluaXRXaXRoSG9zdDpob3N0
IHBvcnQ6cG9ydCBwcm90b2NvbDpwcm90b2NvbCByZWFsbTpyZWFsbSBhdXRoZW50aWNhdGlvbk1l
dGhvZDphdXRoZW50aWNhdGlvbk1ldGhvZF0pOwogICAgIAotICAgIE5TVVJMQ3JlZGVudGlhbCAq
Y3JlZGVudGlhbCA9IFdlYkNvcmVDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KHByb3RlY3Rpb25TcGFj
ZS5nZXQoKSk7CisgICAgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsID0gbWFjKENyZWRlbnRp
YWxTdG9yYWdlOjpnZXQoY29yZShwcm90ZWN0aW9uU3BhY2UuZ2V0KCkpKSk7CiAgICAgaWYgKCFj
cmVkZW50aWFsKQogICAgICAgICBjcmVkZW50aWFsID0gW1tOU1VSTENyZWRlbnRpYWxTdG9yYWdl
IHNoYXJlZENyZWRlbnRpYWxTdG9yYWdlXSBkZWZhdWx0Q3JlZGVudGlhbEZvclByb3RlY3Rpb25T
cGFjZTpwcm90ZWN0aW9uU3BhY2UuZ2V0KCldOwogICAgIGlmICghY3JlZGVudGlhbCkKSW5kZXg6
IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODM1NikKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDktMTQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNhZmFyaSA0IGNhbm5vdCBiZSB1c2VkIHRvIHVwZGF0ZSBmaXJtd2FyZSBvbiBMaW5rc3lzIHJv
dXRlcnMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTc0MDUwPiBhbmQgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MTYwCisKKyAgICAgICAgQWRvcHQgdGhlIG5l
dyBXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZSBpbiBXZWJLaXQvV2luLgorCisgICAgICAgICog
V2ViRG93bmxvYWRDRk5ldC5jcHA6CisgICAgICAgIChXZWJEb3dubG9hZDo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKwogMjAwOS0wOS0xMSAgU3RldmUgRmFsa2VuYnVyZyAg
PHNmYWxrZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4u
CkluZGV4OiBXZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAJKHJldmlzaW9uIDQ4MzU2KQorKysgV2ViS2l0
L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBA
QAogI3ByYWdtYSB3YXJuaW5nKHB1c2gsIDApCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNh
dGlvbkNGLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9DcmVkZW50aWFsU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtMzgxLDkgKzM4MiwxMCBAQCB2b2lkIFdlYkRvd25sb2Fk
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpCiB7CiAgICAgLy8gVHJ5IHByZXZpb3VzbHkgc3RvcmVk
IGNyZWRlbnRpYWwgZmlyc3QuCiAgICAgaWYgKCFDRlVSTEF1dGhDaGFsbGVuZ2VHZXRQcmV2aW91
c0ZhaWx1cmVDb3VudChjaGFsbGVuZ2UpKSB7Ci0gICAgICAgIENGVVJMQ3JlZGVudGlhbFJlZiBj
cmVkZW50aWFsID0gV2ViQ29yZUNyZWRlbnRpYWxTdG9yYWdlOjpnZXQoQ0ZVUkxBdXRoQ2hhbGxl
bmdlR2V0UHJvdGVjdGlvblNwYWNlKGNoYWxsZW5nZSkpOwotICAgICAgICBpZiAoY3JlZGVudGlh
bCkgewotICAgICAgICAgICAgQ0ZVUkxEb3dubG9hZFVzZUNyZWRlbnRpYWwobV9kb3dubG9hZC5n
ZXQoKSwgY3JlZGVudGlhbCwgY2hhbGxlbmdlKTsKKyAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50
aWFsID0gQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChjb3JlKENGVVJMQXV0aENoYWxsZW5nZUdldFBy
b3RlY3Rpb25TcGFjZShjaGFsbGVuZ2UpKSk7CisgICAgICAgIGlmICghY3JlZGVudGlhbC5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNmQ3Jl
ZGVudGlhbChBZG9wdENGLCBjcmVhdGVDRihjcmVkZW50aWFsKSk7CisgICAgICAgICAgICBDRlVS
TERvd25sb2FkVXNlQ3JlZGVudGlhbChtX2Rvd25sb2FkLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0
KCksIGNoYWxsZW5nZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Cklu
ZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA0ODMzNCkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDA5LTA5LTE0ICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTYWZhcmkgNCBjYW5ub3QgYmUgdXNlZCB0byB1cGRhdGUgZmlybXdhcmUgb24gTGlu
a3N5cyByb3V0ZXJzLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzE3NDA1MD4gYW5kIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTE2MAorCisgICAgICAgIEFkZCB0
aGUgYWJpbGl0eSBmb3IgRFJUIHRvIGhhbmRsZSBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2VzLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoc2V0QXV0aGVudGljYXRpb25QYXNzd29yZENhbGxiYWNrKToKKyAgICAgICAgKHNldEF1
dGhlbnRpY2F0aW9uVXNlcm5hbWVDYWxsYmFjayk6CisgICAgICAgIChzZXRIYW5kbGVzQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VzQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmhhbmRsZXNB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZXMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMpOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmF1dGhlbnRpY2F0aW9uVXNlcm5hbWUpOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUpOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmF1dGhlbnRpY2F0aW9uUGFzc3dvcmQpOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQpOgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tOgorICAgICAgICAoLVtS
ZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OnJlc291cmNlOmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTpmcm9tRGF0YVNvdXJjZTpdKToKKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHA6CisgICAgICAgIChSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuaDoKKwogMjAwOS0wOS0xMSAg
S2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICB3eCBi
dWlsZCBmaXguIE1hcmsgZGVwZW5kZW5jaWVzIGFzIG1hbmRhdG9yeSBhbmQgZGVjbGFyZSB3aGlj
aCBNU1ZDIHZlcnNpb25zIGFuZApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNDgzNTYpCisrKyBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU3NCw2ICs1NzQsNDQgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0QXBwQ2FjaGVN
YXhpbXVtU2l6ZQogCiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldEF1dGhlbnRpY2F0aW9uUGFz
c3dvcmRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24s
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgLy8gSGFz
IG1hYyAmIHdpbmRvd3MgaW1wbGVtZW50YXRpb24KKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwYXNzd29yZChBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29w
eShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghKmV4Y2Vw
dGlvbik7CisKKyAgICBzaXplX3QgbWF4TGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENT
dHJpbmdTaXplKHBhc3N3b3JkLmdldCgpKTsKKyAgICBjaGFyIHBhc3N3b3JkQnVmZmVyW21heExl
bmd0aCArIDFdOworICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcocGFzc3dvcmQuZ2V0KCksIHBh
c3N3b3JkQnVmZmVyLCBtYXhMZW5ndGggKyAxKTsKKyAgICAKKyAgICBMYXlvdXRUZXN0Q29udHJv
bGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNP
YmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRBdXRoZW50
aWNhdGlvblBhc3N3b3JkKHBhc3N3b3JkQnVmZmVyKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgc2V0QXV0aGVudGlj
YXRpb25Vc2VybmFtZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAg
ICAvLyBIYXMgbWFjICYgd2luZG93cyBpbXBsZW1lbnRhdGlvbgorICAgIGlmIChhcmd1bWVudENv
dW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwor
CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHVzZXJuYW1lKEFkb3B0LCBKU1ZhbHVlVG9T
dHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAgQVNTRVJU
KCEqZXhjZXB0aW9uKTsKKworICAgIHNpemVfdCBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGlt
dW1VVEY4Q1N0cmluZ1NpemUodXNlcm5hbWUuZ2V0KCkpOworICAgIGNoYXIgdXNlcm5hbWVCdWZm
ZXJbbWF4TGVuZ3RoICsgMV07CisgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyh1c2VybmFtZS5n
ZXQoKSwgdXNlcm5hbWVCdWZmZXIsIG1heExlbmd0aCArIDEpOworICAgIAorICAgIExheW91dFRl
c3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xs
ZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNl
dEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUodXNlcm5hbWVCdWZmZXIpOworCisgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRB
dXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKIHsKICAgICAvLyBIYXMgbWFjICYgd2luZG93cyBpbXBsZW1lbnRhdGlvbgpAQCAtNjcy
LDYgKzcxMCwxOCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRHZW9sb2NhdGlvblBlcm1pc3NpCiAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNW
YWx1ZVJlZiBzZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzQ2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGltcGxl
bWVudGF0aW9uCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciog
Y29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RH
ZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRIYW5kbGVzQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VzKEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzBd
KSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0
YXRpYyBKU1ZhbHVlUmVmIHNldEljb25EYXRhYmFzZUVuYWJsZWRDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3MgaW1wbGVtZW50
YXRpb24KQEAgLTExMDMsMjAgKzExNTMsMjMgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVz
dENvbnRyb2xsZXI6OgogICAgICAgICB7ICJyZXBhaW50U3dlZXBIb3Jpem9udGFsbHkiLCByZXBh
aW50U3dlZXBIb3Jpem9udGFsbHlDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRBY2Nl
cHRzRWRpdGluZyIsIHNldEFjY2VwdHNFZGl0aW5nQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic2V0QWx3YXlzQWNjZXB0Q29va2llcyIsIHNldEFsd2F5c0FjY2VwdENvb2tpZXNDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAotICAgICAgICB7ICJzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZCIsIHNl
dEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
c2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSIsIHNldEFwcENhY2hlTWF4aW11bVNpemVDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LCAKKyAgICAgICAgeyAic2V0QXV0aGVudGljYXRpb25QYXNzd29yZCIsIHNldEF1dGhl
bnRpY2F0aW9uUGFzc3dvcmRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRBdXRoZW50
aWNhdGlvblVzZXJuYW1lIiwgc2V0QXV0aGVudGljYXRpb25Vc2VybmFtZUNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCisgICAgICAgIHsgInNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkIiwgc2V0QXV0aG9y
QW5kVXNlclN0eWxlc0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRDYWxs
Q2xvc2VPbldlYlZpZXdzIiwgc2V0Q2FsbENsb3NlT25XZWJWaWV3c0NhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgInNldENhbk9wZW5XaW5kb3dzIiwgc2V0Q2FuT3BlbldpbmRvd3NDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRDYWNoZU1vZGVsIiwgc2V0Q2FjaGVNb2RlbENhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21w
bGV0ZSIsIHNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZUNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgInNldEN1c3RvbVBvbGljeURlbGVnYXRlIiwgc2V0Q3VzdG9tUG9saWN5
RGVsZWdhdGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXREYXRhYmFzZVF1b3RhIiwg
c2V0RGF0YWJhc2VRdW90YUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sIAotICAgICAgICB7ICJzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvbiIsIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKLSAgICAgICAgeyAic2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IiLCBzZXRNb2NrR2VvbG9j
YXRpb25FcnJvckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEdlb2xvY2F0aW9uUGVy
bWlzc2lvbiIsIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAg
ICAgIHsgInNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMiLCBzZXRIYW5kbGVzQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0SWNv
bkRhdGFiYXNlRW5hYmxlZCIsIHNldEljb25EYXRhYmFzZUVuYWJsZWRDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZCIsIHNldEphdmFTY3Jp
cHRQcm9maWxpbmdFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TWFpbkZy
YW1lSXNGaXJzdFJlc3BvbmRlciIsIHNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXJDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsIHNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0TW9j
a0dlb2xvY2F0aW9uRXJyb3IiLCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvckNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgInNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uIiwgc2V0
UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJzZXRQb3B1cEJsb2NraW5nRW5hYmxlZCIsIHNldFBvcHVwQmxvY2tpbmdFbmFibGVkQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCIsIHNl
dFByaXZhdGVCcm93c2luZ0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDogV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lv
biA0ODM1NikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsMTUgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBhbHdheXNBY2NlcHRDb29raWVzKCkgY29uc3QgeyByZXR1cm4gbV9hbHdheXNBY2NlcHRD
b29raWVzOyB9CiAgICAgdm9pZCBzZXRBbHdheXNBY2NlcHRDb29raWVzKGJvb2wgYWx3YXlzQWNj
ZXB0Q29va2llcyk7CisgICAgCisgICAgYm9vbCBoYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VzKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzOyB9
CisgICAgdm9pZCBzZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKGJvb2wgaGFuZGxl
c0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcykgeyBtX2hhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZXMgPSBoYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzOyB9CisgICAgCisgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIGF1dGhlbnRpY2F0aW9uVXNlcm5hbWUoKSBjb25zdCB7IHJldHVybiBt
X2F1dGhlbnRpY2F0aW9uVXNlcm5hbWU7IH0KKyAgICB2b2lkIHNldEF1dGhlbnRpY2F0aW9uVXNl
cm5hbWUoc3RkOjpzdHJpbmcgdXNlcm5hbWUpIHsgbV9hdXRoZW50aWNhdGlvblVzZXJuYW1lID0g
dXNlcm5hbWU7IH0KKyAgICAKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgYXV0aGVudGljYXRpb25Q
YXNzd29yZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0aGVudGljYXRpb25QYXNzd29yZDsgfQorICAg
IHZvaWQgc2V0QXV0aGVudGljYXRpb25QYXNzd29yZChzdGQ6OnN0cmluZyBwYXNzd29yZCkgeyBt
X2F1dGhlbnRpY2F0aW9uUGFzc3dvcmQgPSBwYXNzd29yZDsgfQogCiAgICAgYm9vbCBnbG9iYWxG
bGFnKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxGbGFnOyB9CiAgICAgdm9pZCBzZXRHbG9iYWxG
bGFnKGJvb2wgZ2xvYmFsRmxhZykgeyBtX2dsb2JhbEZsYWcgPSBnbG9iYWxGbGFnOyB9CkBAIC0y
MjUsNyArMjM0LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2dsb2JhbEZsYWc7CiAgICAgYm9v
bCBtX2lzR2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0OwogICAgIGJvb2wgbV9nZW9sb2NhdGlvblBl
cm1pc3Npb247CisgICAgYm9vbCBtX2hhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXM7CiAK
KyAgICBzdGQ6OnN0cmluZyBtX2F1dGhlbnRpY2F0aW9uVXNlcm5hbWU7CisgICAgc3RkOjpzdHJp
bmcgbV9hdXRoZW50aWNhdGlvblBhc3N3b3JkOyAKICAgICBzdGQ6OnN0cmluZyBtX3Rlc3RQYXRo
T3JVUkw7CiAgICAgc3RkOjpzdHJpbmcgbV9leHBlY3RlZFBpeGVsSGFzaDsgICAgLy8gZW1wdHkg
c3RyaW5nIGlmIG5vIGhhc2gKICAgICAKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0JKHJldmlzaW9uIDQ4MzU2
KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRl
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDIwIEBACiAKIC0gKHZvaWQpd2ViVmll
dzooV2ViVmlldyAqKXd2IHJlc291cmNlOihpZClpZGVudGlmaWVyIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5n
ZSBmcm9tRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKIHsKKyAgICBpZiAo
IWdMYXlvdXRUZXN0Q29udHJvbGxlci0+aGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcygp
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgY29uc3QgY2hhciogdXNlciA9IGdMYXlvdXRU
ZXN0Q29udHJvbGxlci0+YXV0aGVudGljYXRpb25Vc2VybmFtZSgpLmNfc3RyKCk7CisgICAgTlNT
dHJpbmcgKm5zVXNlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXMiLCB1c2VyID8g
dXNlciA6ICIiXTsKKworICAgIGNvbnN0IGNoYXIqIHBhc3N3b3JkID0gZ0xheW91dFRlc3RDb250
cm9sbGVyLT5hdXRoZW50aWNhdGlvblBhc3N3b3JkKCkuY19zdHIoKTsKKyAgICBOU1N0cmluZyAq
bnNQYXNzd29yZCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXMiLCBwYXNzd29yZCA/
IHBhc3N3b3JkIDogIiJdOworCisgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiJUAgLSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgLSBS
ZXNwb25kaW5nIHdpdGggJUA6JUAiLCBpZGVudGlmaWVyLCBuc1VzZXIsIG5zUGFzc3dvcmRdOwor
ICAgIHByaW50ZigiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOworICAgIAorICAgIFtbY2hh
bGxlbmdlIHNlbmRlcl0gdXNlQ3JlZGVudGlhbDpbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxX
aXRoVXNlcjpuc1VzZXIgcGFzc3dvcmQ6bnNQYXNzd29yZCBwZXJzaXN0ZW5jZTpOU1VSTENyZWRl
bnRpYWxQZXJzaXN0ZW5jZUZvclNlc3Npb25dCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2VdOwogfQogCiAtICh2b2lkKXdl
YlZpZXc6KFdlYlZpZXcgKil3diByZXNvdXJjZTooaWQpaWRlbnRpZmllciBkaWRDYW5jZWxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxs
ZW5nZSBmcm9tRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKSW5kZXg6IFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERl
bGVnYXRlLmNwcAkocmV2aXNpb24gNDgzNTYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMCAr
MzEsMTMgQEAKIAogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlLmgiCiAjaW5jbHVkZSAiTGF5b3V0
VGVzdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxjb211dGlsLmg+CisjaW5jbHVkZSA8V2ViS2l0
L1dlYktpdENPTUFQSS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHNzdHJlYW0+CiAKKwogdXNpbmcgc3RkOjp3c3RyaW5nOwog
dXNpbmcgc3RkOjp3aW9zdHJlYW07CiAKQEAgLTI1MSw2ICsyNTQsMzMgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBSZXNvdXJjZUxvYWREZQogICAgIHJldHVybiBTX09LOwogfQogCitIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFJlc291cmNlTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoIAorICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcs
CisgICAgLyogW2luXSAqLyB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsCisgICAgLyogW2luXSAq
LyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwKKyAgICAvKiBbaW5d
ICovIElXZWJEYXRhU291cmNlICpkYXRhU291cmNlKQoreworICAgIGlmICghZ0xheW91dFRlc3RD
b250cm9sbGVyLT5oYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBjb25zdCBjaGFyKiB1c2VyID0gZ0xheW91dFRlc3RDb250cm9sbGVy
LT5hdXRoZW50aWNhdGlvblVzZXJuYW1lKCkuY19zdHIoKTsKKyAgICBjb25zdCBjaGFyKiBwYXNz
d29yZCA9IGdMYXlvdXRUZXN0Q29udHJvbGxlci0+YXV0aGVudGljYXRpb25QYXNzd29yZCgpLmNf
c3RyKCk7CisKKyAgICBwcmludGYoIiVzIC0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIC0gUmVzcG9uZGluZyB3aXRoICVzOiVzXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVz
dFJlc3VsdChpZGVudGlmaWVyKS5jX3N0cigpLCB1c2VyLCBwYXNzd29yZCk7CisgICAgCisgICAg
Q09NUHRyPElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcj4gc2VuZGVyOworICAg
IGlmICghY2hhbGxlbmdlIHx8IEZBSUxFRChjaGFsbGVuZ2UtPlF1ZXJ5SW50ZXJmYWNlKCZzZW5k
ZXIpKSkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICAgICAgCisgICAgQ09NUHRyPElXZWJV
UkxDcmVkZW50aWFsPiBjcmVkZW50aWFsOworICAgIGlmIChGQUlMRUQoV2ViS2l0Q3JlYXRlSW5z
dGFuY2UoQ0xTSURfV2ViVVJMQ3JlZGVudGlhbCwgMCwgSUlEX0lXZWJVUkxDcmVkZW50aWFsLCAo
dm9pZCoqKSZjcmVkZW50aWFsKSkpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgY3JlZGVu
dGlhbC0+aW5pdFdpdGhVc2VyKF9ic3RyX3QodXNlciksIF9ic3RyX3QocGFzc3dvcmQpLCBXZWJV
UkxDcmVkZW50aWFsUGVyc2lzdGVuY2VGb3JTZXNzaW9uKTsKKworICAgIHNlbmRlci0+dXNlQ3Jl
ZGVudGlhbChjcmVkZW50aWFsLmdldCgpLCBjaGFsbGVuZ2UpOworICAgIHJldHVybiBTX09LOwor
fQorCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFJlc291cmNlTG9hZERlbGVnYXRlOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoCiAgICAgLyogW2luXSAqLyBJV2ViVmlldyogd2ViVmlldywgCiAgICAg
LyogW2luXSAqLyB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIApJbmRleDogV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmgJKHJl
dmlzaW9uIDQ4MzU2KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNl
TG9hZERlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgog
ICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAogICAgICAgICAvKiBbaW5dICov
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwKLSAgICAgICAgLyogW2luXSAqLyBJV2Vi
RGF0YVNvdXJjZSAqZGF0YVNvdXJjZSkgeyByZXR1cm4gRV9OT1RJTVBMOyB9CisgICAgICAgIC8q
IFtpbl0gKi8gSVdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UpOwogICAgICAgICAKICAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoIAogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LApJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gNDgzNTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMyBAQAorMjAwOS0wOS0xNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2FmYXJpIDQgY2Fubm90IGJlIHVzZWQgdG8gdXBkYXRlIGZpcm13YXJlIG9uIExpbmtzeXMgcm91
dGVycy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcxNzQwNTA+IGFuZCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkxNjAKKworICAgICAgICAqIGh0dHAvdGVzdHMv
bG9hZGluZy9iYXNpYy1hdXRoLXJlc2VuZC13cm9uZy1jcmVkZW50aWFscy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1hdXRoLXJlc2VuZC13
cm9uZy1jcmVkZW50aWFscy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRp
bmcvYmFzaWMtY3JlZGVudGlhbHMtc2VudC1hdXRvbWF0aWNhbGx5LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWNyZWRlbnRpYWxzLXNlbnQt
YXV0b21hdGljYWxseS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcv
cmVzb3VyY2VzL2Jhc2ljLWF1dGgtdGVzdGluZy5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvbG9hZGluZy9yZXNvdXJjZXMvb3RoZXJzdWJyZXNvdXJjZXM6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZXMvb3RoZXJzdWJyZXNvdXJjZXMvcHJvdGVj
dGVkLXJlc291cmNlLnBocDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL3Jl
c291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2xvYWRpbmcvcmVzb3VyY2VzL3N1YnJlc291cmNlczogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlcy9zdWJyZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNl
LnBocDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICog
cGxhdGZvcm0vcXQvU2tpcHBlZDoKKwogMjAwOS0wOS0xMiAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVzZW5kLXdyb25n
LWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZXNlbmQtd3JvbmctY3JlZGVudGlhbHMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jh
c2ljLWF1dGgtcmVzZW5kLXdyb25nLWNyZWRlbnRpYWxzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyOSBAQAorbWFpbiBmcmFtZSAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0t
ZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lCittYWluIGZyYW1lIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKKzx1bmtu
b3duPiAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFJlc3BvbmRpbmcgd2l0
aCB3cm9uZ3VzZXJuYW1lOndyb25ncGFzc3dvcmQKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEt
LWZyYW1lMC0tPi0tPiIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQ
YXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQor
bWFpbiBmcmFtZSAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCitmcmFtZSAiPCEtLWZy
YW1lUGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEhhbmRs
ZU9ubG9hZEV2ZW50c0ZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAt
LT4tLT4iIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCis8dW5rbm93bj4gLSBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgLSBSZXNwb25kaW5nIHdpdGggY29ycmVjdHVzZXJuYW1lOmNv
cnJlY3RwYXNzd29yZAorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+IiAt
IGRpZENvbW1pdExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUx
LS0+LS0+IiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1l
UGF0aCAvLzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUK
K2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIgLSBkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKK1RoaXMgdGVzdCBt
YWtlcyBzdXJlIHRoYXQgb25jZSBXZWJDb3JlIHByZWVtcHRpdmVseSBzZW5kcyBvdXQgQmFzaWMg
Y3JlZGVudGlhbHMgaXQgdGhpbmtzIGFwcGx5IHRvIGEgbmV3IHJlc291cmNlLCBhbmQgdGhhdCBy
ZXNvdXJjZSByZXNwb25zZSB3aXRoIGEgNDAxIGNoYWxsZW5nZSwgdGhhdCBpdCBkb2Vzbid0IHRy
eSB0byBzZW5kIHRoZSBzYW1lIHdyb25nIGNyZWRlbnRpYWxzIGEgc2Vjb25kIHRpbWUuCisgIAor
CistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0t
LS0tLS0tCitBdXRoZW50aWNhdGVkIGFzIHVzZXI6IHdyb25ndXNlcm5hbWUgcGFzc3dvcmQ6IHdy
b25ncGFzc3dvcmQKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFt
ZTEtLT4tLT4nCistLS0tLS0tLQorQXV0aGVudGljYXRlZCBhcyB1c2VyOiBjb3JyZWN0dXNlcm5h
bWUgcGFzc3dvcmQ6IGNvcnJlY3RwYXNzd29yZApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVzZW5kLXdyb25nLWNyZWRlbnRpYWxzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWF1dGgtcmVzZW5k
LXdyb25nLWNyZWRlbnRpYWxzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2xvYWRpbmcvYmFzaWMtYXV0aC1yZXNlbmQtd3JvbmctY3JlZGVudGlhbHMuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisK
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJh
bWVzQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0SGFuZGxlc0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlcyh0cnVlKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRo
ZW50aWNhdGlvblVzZXJuYW1lKCJ3cm9uZ3VzZXJuYW1lIik7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0QXV0aGVudGljYXRpb25QYXNzd29yZCgid3JvbmdwYXNzd29yZCIpOworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gZmlyc3RG
cmFtZUxvYWRlZCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUoImNv
cnJlY3R1c2VybmFtZSIpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRoZW50
aWNhdGlvblBhc3N3b3JkKCJjb3JyZWN0cGFzc3dvcmQiKTsKKyAgICB9CisgICAgdmFyIGZyYW1l
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgZnJhbWUuc2V0QXR0cmli
dXRlKCJzcmMiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL2Jhc2lj
LWF1dGgtdGVzdGluZy5waHA/dXNlcm5hbWU9Y29ycmVjdHVzZXJuYW1lJnBhc3N3b3JkPWNvcnJl
Y3RwYXNzd29yZCIpOworICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgib25sb2FkIiwgInNlY29uZEZy
YW1lTG9hZGVkKCkiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYW1lKTsKK30K
KworZnVuY3Rpb24gc2Vjb25kRnJhbWVMb2FkZWQoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IG1ha2VzIHN1cmUg
dGhhdCBvbmNlIFdlYkNvcmUgcHJlZW1wdGl2ZWx5IHNlbmRzIG91dCBCYXNpYyBjcmVkZW50aWFs
cyBpdCB0aGlua3MgYXBwbHkgdG8gYSBuZXcgcmVzb3VyY2UsIGFuZCB0aGF0IHJlc291cmNlIHJl
c3BvbnNlIHdpdGggYSA0MDEgY2hhbGxlbmdlLCB0aGF0IGl0IGRvZXNuJ3QgdHJ5IHRvIHNlbmQg
dGhlIHNhbWUgd3JvbmcgY3JlZGVudGlhbHMgYSBzZWNvbmQgdGltZS48YnI+Cis8aWZyYW1lIHNy
Yz0icmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAiIG9ubG9hZD0iZmlyc3RGcmFtZUxv
YWRlZCgpOyI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2xvYWRpbmcvYmFzaWMtY3JlZGVudGlhbHMtc2VudC1hdXRvbWF0aWNhbGx5LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcv
YmFzaWMtY3JlZGVudGlhbHMtc2VudC1hdXRvbWF0aWNhbGx5LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1jcmVkZW50aWFs
cy1zZW50LWF1dG9tYXRpY2FsbHktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDU3IEBACittYWluIGZyYW1lIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQorbWFp
biBmcmFtZSAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88
IS0tZnJhbWUwLS0+LS0+IiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKK21haW4g
ZnJhbWUgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQorPHVua25vd24+IC0gZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gUmVzcG9uZGluZyB3aXRoIGZpcnN0OmZpcnN0
LXB3CitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkQ29tbWl0
TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0g
ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRIYW5kbGVPbmxv
YWRFdmVudHNGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUxLS0+LS0+
IiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRo
IC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQorZnJh
bWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEZpbmlzaExvYWRGb3JG
cmFtZQorPHVua25vd24+IC0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gUmVz
cG9uZGluZyB3aXRoIHNlY29uZDpzZWNvbmQtcHcKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEt
LWZyYW1lMS0tPi0tPiIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQ
YXRoIC8vPCEtLWZyYW1lMS0tPi0tPiIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQor
ZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUyLS0+LS0+IiAtIGRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMS0tPi0t
PiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGgg
Ly88IS0tZnJhbWUxLS0+LS0+IiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1m
cmFtZVBhdGggLy88IS0tZnJhbWUyLS0+LS0+IiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQorZnJh
bWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUyLS0+LS0+IiAtIGRpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTMtLT4tLT4iIC0g
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88
IS0tZnJhbWUyLS0+LS0+IiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCitmcmFtZSAi
PCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTItLT4tLT4iIC0gZGlkRmluaXNoTG9hZEZvckZyYW1l
CitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTMtLT4tLT4iIC0gZGlkQ29tbWl0TG9h
ZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTMtLT4tLT4iIC0gZGlk
RmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZy
YW1lMy0tPi0tPiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQorZnJhbWUgIjwhLS1m
cmFtZVBhdGggLy88IS0tZnJhbWUzLS0+LS0+IiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorbWFp
biBmcmFtZSAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhh
dCBvbmNlIGFuIEhUVFAgQmFzaWMgQXV0aC4gcHJvdGVjdGVkIHBhdGggaXMgYXV0aGVudGljYXRl
ZCBvbmNlLCB1cmxzIHRoYXQgZW1hbmF0ZSBmcm9tIHRoYXQgcGF0aCBhdXRvbWF0aWNhbGx5IGhh
dmUgdGhlaXIgY3JlZGVudGlhbHMgc2VudCB3aXRob3V0IGEgY2hhbGxlbmdlLgorVGhlIGZpcnN0
IGZyYW1lJ3MgcGF0aCBpcyAvbG9hZGluZy9yZXNvdXJjZXMvc3VicmVzb3VyY2VzL3Byb3RlY3Rl
ZC1yZXNvdXJjZS5waHAsIGFuZCB3ZSBzaG91bGQgZ2V0IGEgY2hhbGxlbmdlIGZvciBpdC4KK0l0
IHdpbGwgYmUgYXV0aG9yaXplZCB3aXRoIGZpcnN0L2ZpcnN0LXB3LgorVGhlIHNlY29uZCBmcmFt
ZSdzIHBhdGggaXMgL2xvYWRpbmcvcmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAsIGFu
ZCB3ZSBzaG91bGQgZ2V0IGEgY2hhbGxlbmdlIGZvciBpdCwgYmVjYXVzZSBpdCBkb2VzIG5vdCBz
aGFyZSBhIGNvbW1vbiBzdWJwYXRoIG9mIHRoZSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgcmVzb3Vy
Y2UuCitJdCB3aWxsIGJlIGF1dGhvcml6ZWQgd2l0aCBzZWNvbmQvc2Vjb25kLXB3LgorVGhlIHRo
aXJkIGZyYW1lJ3MgcGF0aCBpcyBhbHNvIC9sb2FkaW5nL3Jlc291cmNlcy9wcm90ZWN0ZWQtcmVz
b3VyY2UucGhwLCBhbmQgd2Ugc2hvdWxkICpub3QqIGdldCBhIGNoYWxsZW5nZSBmb3IgaXQgYmVj
YXVzZSB3ZSBhdXRob3JpemVkIHRvIHRoaXMgcGF0aCBmb3IgdGhlIHNlY29uZCBmcmFtZS4KK0l0
IHdpbGwgYmUgYXV0aG9yaXplZCB3aXRoIHNlY29uZC9zZWNvbmQtcHcuCitUaGUgZm91cnRoIGZy
YW1lJ3MgcGF0aCBpcyAvbG9hZGluZy9yZXNvdXJjZXMvb3RoZXJzdWJyZXNvdXJjZXMvcHJvdGVj
dGVkLXJlc291cmNlLnBocCwgYW5kIHdlIHNob3VsZCAqbm90KiBnZXQgYSBjaGFsbGVuZ2UgZm9y
IGl0LCBiZWNhdXNlIGl0IGhhcyBhIGNvbW1vbiBzdWJwYXRoIHdpdGggdGhlIHByZXZpb3VzbHkg
YXV0aG9yaXplZCBzZWNvbmQgYW5kIHRoaXJkIGZyYW1lcy4KK0l0IHdpbGwgYmUgYXV0aG9yaXpl
ZCB3aXRoIHNlY29uZC9zZWNvbmQtcHcuCisgIAorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJh
bWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitBdXRoZW50aWNhdGVkIGFzIHVz
ZXI6IGZpcnN0IHBhc3N3b3JkOiBmaXJzdAorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQ
YXRoIC8vPCEtLWZyYW1lMS0tPi0tPicKKy0tLS0tLS0tCitBdXRoZW50aWNhdGVkIGFzIHVzZXI6
IHNlY29uZCBwYXNzd29yZDogc2Vjb25kCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBh
dGggLy88IS0tZnJhbWUyLS0+LS0+JworLS0tLS0tLS0KK0F1dGhlbnRpY2F0ZWQgYXMgdXNlcjog
c2Vjb25kIHBhc3N3b3JkOiBzZWNvbmQKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0
aCAvLzwhLS1mcmFtZTMtLT4tLT4nCistLS0tLS0tLQorQXV0aGVudGljYXRlZCBhcyB1c2VyOiBz
ZWNvbmQgcGFzc3dvcmQ6IHNlY29uZApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2Fk
aW5nL2Jhc2ljLWNyZWRlbnRpYWxzLXNlbnQtYXV0b21hdGljYWxseS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1jcmVkZW50aWFscy1zZW50
LWF1dG9tYXRpY2FsbHkuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbG9hZGluZy9iYXNpYy1jcmVkZW50aWFscy1zZW50LWF1dG9tYXRpY2FsbHkuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0Fz
VGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEhhbmRsZXNBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZXModHJ1ZSk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXV0aGVudGlj
YXRpb25Vc2VybmFtZSgiZmlyc3QiKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRo
ZW50aWNhdGlvblBhc3N3b3JkKCJmaXJzdC1wdyIpOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gZmlyc3RGcmFtZUxvYWRlZCgpCit7Cisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJzZWNvbmQiKTsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXV0aGVudGljYXRpb25QYXNzd29yZCgic2Vjb25kLXB3
Iik7CisgICAgfQorICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFt
ZSIpOworICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgic3JjIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9sb2FkaW5nL3Jlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwIik7CisgICAgZnJhbWUu
c2V0QXR0cmlidXRlKCJvbmxvYWQiLCAic2Vjb25kRnJhbWVMb2FkZWQoKSIpOworICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOworfQorCitmdW5jdGlvbiBzZWNvbmRGcmFtZUxv
YWRlZCgpCit7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJ0aGlyZCIp
OworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRoZW50aWNhdGlvblBhc3N3b3Jk
KCJ0aGlyZC1wdyIpOworICAgIH0KKyAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpZnJhbWUiKTsKKyAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoInNyYyIsICJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocCIpOwor
ICAgIGZyYW1lLnNldEF0dHJpYnV0ZSgib25sb2FkIiwgInRoaXJkRnJhbWVMb2FkZWQoKSIpOwor
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhbWUpOworfQorCitmdW5jdGlvbiB0aGly
ZEZyYW1lTG9hZGVkKCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUo
ImZvdXJ0aCIpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBdXRoZW50aWNhdGlv
blBhc3N3b3JkKCJmb3VydGgtcHciKTsKKyAgICB9CisgICAgdmFyIGZyYW1lID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgZnJhbWUuc2V0QXR0cmlidXRlKCJzcmMiLCAi
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL290aGVyc3VicmVzb3VyY2Vz
L3Byb3RlY3RlZC1yZXNvdXJjZS5waHAiKTsKKyAgICBmcmFtZS5zZXRBdHRyaWJ1dGUoIm9ubG9h
ZCIsICJmb3VydGhGcmFtZUxvYWRlZCgpIik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChmcmFtZSk7Cit9CisKK2Z1bmN0aW9uIGZvdXJ0aEZyYW1lTG9hZGVkKCkKK3sKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRl
c3QgbWFrZXMgc3VyZSB0aGF0IG9uY2UgYW4gSFRUUCBCYXNpYyBBdXRoLiBwcm90ZWN0ZWQgcGF0
aCBpcyBhdXRoZW50aWNhdGVkIG9uY2UsIHVybHMgdGhhdCBlbWFuYXRlIGZyb20gdGhhdCBwYXRo
IGF1dG9tYXRpY2FsbHkgaGF2ZSB0aGVpciBjcmVkZW50aWFscyBzZW50IHdpdGhvdXQgYSBjaGFs
bGVuZ2UuPGJyPgorVGhlIGZpcnN0IGZyYW1lJ3MgcGF0aCBpcyAvbG9hZGluZy9yZXNvdXJjZXMv
c3VicmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAsIGFuZCB3ZSBzaG91bGQgZ2V0IGEg
Y2hhbGxlbmdlIGZvciBpdC48YnI+CitJdCB3aWxsIGJlIGF1dGhvcml6ZWQgd2l0aCBmaXJzdC9m
aXJzdC1wdy48YnI+CitUaGUgc2Vjb25kIGZyYW1lJ3MgcGF0aCBpcyAvbG9hZGluZy9yZXNvdXJj
ZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocCwgYW5kIHdlIHNob3VsZCBnZXQgYSBjaGFsbGVuZ2Ug
Zm9yIGl0LCBiZWNhdXNlIGl0IGRvZXMgbm90IHNoYXJlIGEgY29tbW9uIHN1YnBhdGggb2YgdGhl
IHByZXZpb3VzbHkgYXV0aG9yaXplZCByZXNvdXJjZS48YnI+CitJdCB3aWxsIGJlIGF1dGhvcml6
ZWQgd2l0aCBzZWNvbmQvc2Vjb25kLXB3Ljxicj4KK1RoZSB0aGlyZCBmcmFtZSdzIHBhdGggaXMg
YWxzbyAvbG9hZGluZy9yZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNlLnBocCwgYW5kIHdlIHNo
b3VsZCAqbm90KiBnZXQgYSBjaGFsbGVuZ2UgZm9yIGl0IGJlY2F1c2Ugd2UgYXV0aG9yaXplZCB0
byB0aGlzIHBhdGggZm9yIHRoZSBzZWNvbmQgZnJhbWUuPGJyPgorSXQgd2lsbCBiZSBhdXRob3Jp
emVkIHdpdGggc2Vjb25kL3NlY29uZC1wdy48YnI+CitUaGUgZm91cnRoIGZyYW1lJ3MgcGF0aCBp
cyAvbG9hZGluZy9yZXNvdXJjZXMvb3RoZXJzdWJyZXNvdXJjZXMvcHJvdGVjdGVkLXJlc291cmNl
LnBocCwgYW5kIHdlIHNob3VsZCAqbm90KiBnZXQgYSBjaGFsbGVuZ2UgZm9yIGl0LCBiZWNhdXNl
IGl0IGhhcyBhIGNvbW1vbiBzdWJwYXRoIHdpdGggdGhlIHByZXZpb3VzbHkgYXV0aG9yaXplZCBz
ZWNvbmQgYW5kIHRoaXJkIGZyYW1lcy48YnI+CitJdCB3aWxsIGJlIGF1dGhvcml6ZWQgd2l0aCBz
ZWNvbmQvc2Vjb25kLXB3Ljxicj4KKzxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc3VicmVzb3VyY2Vz
L3Byb3RlY3RlZC1yZXNvdXJjZS5waHAiIG9ubG9hZD0iZmlyc3RGcmFtZUxvYWRlZCgpOyI+PC9p
ZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xv
YWRpbmcvcmVzb3VyY2VzL2Jhc2ljLWF1dGgtdGVzdGluZy5waHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlcy9iYXNpYy1hdXRoLXRlc3Rpbmcu
cGhwCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291
cmNlcy9iYXNpYy1hdXRoLXRlc3RpbmcucGhwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBA
Cis8P3BocAorJGV4cGVjdGVkVXNlcm5hbWUgPSBpc3NldCgkX0dFVFsndXNlcm5hbWUnXSkgPyAk
X0dFVFsndXNlcm5hbWUnXSA6ICd1c2VybmFtZSc7CiskZXhwZWN0ZWRQYXNzd29yZCA9IGlzc2V0
KCRfR0VUWydwYXNzd29yZCddKSA/ICRfR0VUWydwYXNzd29yZCddIDogJ3Bhc3N3b3JkJzsKKyRy
ZWFsbSA9IGlzc2V0KCRfR0VUWydyZWFsbSddKSA/ICRfR0VUWydyZWFsbSddIDogJF9TRVJWRVJb
J1JFUVVFU1RfVVJJJ107CisKK2hlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUiKTsKK2lm
ICghaXNzZXQoJF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXSkgfHwgJF9TRVJWRVJbJ1BIUF9BVVRI
X1VTRVInXSAhPSAkZXhwZWN0ZWRVc2VybmFtZSB8fCAgCisgICAgIWlzc2V0KCRfU0VSVkVSWydQ
SFBfQVVUSF9QVyddKSB8fCAkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXSAhPSAkZXhwZWN0ZWRQYXNz
d29yZCkgeworICAgIGhlYWRlcigiV1dXLUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09XCIiIC4g
JHJlYWxtIC4gIlwiIik7CisgICAgaGVhZGVyKCdIVFRQLzEuMCA0MDEgVW5hdXRob3JpemVkJyk7
CisgICAgcHJpbnQgJ1NlbnQgdXNlcm5hbWU6cGFzc3dvcmQgb2YgKCcgLiAkX1NFUlZFUlsnUEhQ
X0FVVEhfVVNFUiddIC4gJzonIC4gJF9TRVJWRVJbJ1BIUF9BVVRIX1BXJ10gLiAnKSB3aGljaCBp
cyBub3Qgd2hhdCB3YXMgZXhwZWN0ZWQnOworICAgIGV4aXQ7Cit9Cis/PgorQXV0aGVudGljYXRl
ZCBhcyB1c2VyOiA8P3BocCBwcmludCAoc3RyaW5nKSRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10/
PiBwYXNzd29yZDogPD9waHAgcHJpbnQgKHN0cmluZykkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXT8+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VzL3Byb3RlY3Rl
ZC1yZXNvdXJjZS5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2Fk
aW5nL3Jlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2Uu
cGhwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKzw/cGhwCitoZWFkZXIoIkNhY2hlLUNv
bnRyb2w6IG5vLXN0b3JlIik7CitpZiAoIWlzc2V0KCRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10p
KSB7CisgICAgaGVhZGVyKCJXV1ctYXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT1cIiIgLiAkX1NF
UlZFUlsnUkVRVUVTVF9VUkknXSAuICJcIiIpOworICAgIGhlYWRlcignSFRUUC8xLjAgNDAxIFVu
YXV0aG9yaXplZCcpOworICAgIGV4aXQ7Cit9Cis/PgorQXV0aGVudGljYXRlZCBhcyB1c2VyOiA8
P3BocCBwcmludCAoc3RyaW5nKSRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10/PiBwYXNzd29yZDog
PD9waHAgcHJpbnQgKHN0cmluZykkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXT8+CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VzL290aGVyc3VicmVzb3VyY2VzL3By
b3RlY3RlZC1yZXNvdXJjZS5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9sb2FkaW5nL3Jlc291cmNlcy9vdGhlcnN1YnJlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2Uu
cGhwCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291
cmNlcy9vdGhlcnN1YnJlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDkgQEAKKzw/cGhwCitoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLXN0b3Jl
Iik7CitpZiAoIWlzc2V0KCRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10pKSB7CisgICAgaGVhZGVy
KCJXV1ctYXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT1cIiIgLiAkX1NFUlZFUlsnUkVRVUVTVF9V
UkknXSAuICJcIiIpOworICAgIGhlYWRlcignSFRUUC8xLjAgNDAxIFVuYXV0aG9yaXplZCcpOwor
ICAgIGV4aXQ7Cit9Cis/PgorQXV0aGVudGljYXRlZCBhcyB1c2VyOiA8P3BocCBwcmludCAoc3Ry
aW5nKSRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10/PiBwYXNzd29yZDogPD9waHAgcHJpbnQgKHN0
cmluZykkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXT8+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2xvYWRpbmcvcmVzb3VyY2VzL3N1YnJlc291cmNlcy9wcm90ZWN0ZWQtcmVzb3VyY2UucGhw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZXNvdXJjZXMv
c3VicmVzb3VyY2VzL3Byb3RlY3RlZC1yZXNvdXJjZS5waHAJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VzL3N1YnJlc291cmNlcy9wcm90ZWN0
ZWQtcmVzb3VyY2UucGhwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKzw/cGhwCitoZWFk
ZXIoIkNhY2hlLUNvbnRyb2w6IG5vLXN0b3JlIik7CitpZiAoIWlzc2V0KCRfU0VSVkVSWydQSFBf
QVVUSF9VU0VSJ10pKSB7CisgICAgaGVhZGVyKCJXV1ctYXV0aGVudGljYXRlOiBCYXNpYyByZWFs
bT1cIiIgLiAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSAuICJcIiIpOworICAgIGhlYWRlcignSFRU
UC8xLjAgNDAxIFVuYXV0aG9yaXplZCcpOworICAgIGV4aXQ7Cit9Cis/PgorQXV0aGVudGljYXRl
ZCBhcyB1c2VyOiA8P3BocCBwcmludCAoc3RyaW5nKSRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10/
PiBwYXNzd29yZDogPD9waHAgcHJpbnQgKHN0cmluZykkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXT8+
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkocmV2aXNpb24gNDgzNTYpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNTY5OSwzICs1
Njk5LDYgQEAgaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2JhY2stc2VuZC1yZWZlcnJlcgogIyBYSFIg
c2VuZHMgc29tZXRpbWVzIHlpZWxkIG51bGwgYnl0ZXMgc2VudCBpbnN0ZWFkIG9mIDAuCiBodHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1tZXRob2RzLmh0bWwK
IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLW1ldGhvZHMt
YXN5bmMuaHRtbAorCisjIE5vIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSBoYW5kbGluZworaHR0
cC90ZXN0cy9sb2FkaW5nL2Jhc2ljLWNyZWRlbnRpYWxzLXNlbnQtYXV0b21hdGljYWxseS5odG1s
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDQ4MzU2KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNDgzOCwzICs0ODM4
LDYgQEAgZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQuaAogCiAjIE5vIFVz
ZXIgU2NyaXB0cwogdXNlcnNjcmlwdHMKKworIyBObyBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2Ug
aGFuZGxpbmcKK2h0dHAvdGVzdHMvbG9hZGluZy9iYXNpYy1jcmVkZW50aWFscy1zZW50LWF1dG9t
YXRpY2FsbHkuaHRtbAo=
</data>
<flag name="review"
          id="20656"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="20657"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>