<?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>236254</bug_id>
          
          <creation_ts>2022-02-07 13:16:14 -0800</creation_ts>
          <short_desc>Permit simultaneous Apple Pay and script injection</short_desc>
          <delta_ts>2022-02-10 14:24:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1838319</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-07 13:16:14 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838320</commentid>
    <comment_count>1</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-07 13:16:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/87736727&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838321</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-07 13:18:02 -0800</bug_when>
    <thetext>&lt;rdar://problem/88590628&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838323</commentid>
    <comment_count>3</comment_count>
      <attachid>451143</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-07 13:19:53 -0800</bug_when>
    <thetext>Created attachment 451143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838326</commentid>
    <comment_count>4</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-07 13:21:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/87736727&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838862</commentid>
    <comment_count>5</comment_count>
      <attachid>451143</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2022-02-08 13:42:52 -0800</bug_when>
    <thetext>Comment on attachment 451143
Patch

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

code change looks good, only concern is about dropping the weakThis in PaymentCoordinator::canMakePaymentsWithActiveCard

&gt; Source/WebCore/Modules/applepay/PaymentCoordinator.cpp:69
&gt; +bool PaymentCoordinator::canMakePayments(Document&amp;)

Why keep Document around?

&gt; Source/WebCore/Modules/applepay/PaymentCoordinator.cpp:78
&gt; +    m_client.canMakePaymentsWithActiveCard(merchantIdentifier, document.domain(), [this, completionHandler = WTFMove(completionHandler)](bool canMakePayments) {

Seems like we shouldn&apos;t drop weakThis, unless I&apos;m missing something

&gt; Source/WebCore/Modules/applepay/PaymentCoordinatorClient.h:69
&gt;      virtual String userAgentScriptsBlockedErrorMessage() const { return { }; }

I think this can be removed too

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ApplePay.mm:-243
&gt; -TEST(ApplePay, ActiveSessionBlocksUserAgentScripts)

Is there a reason we got rid of the ActiveSession test instead if changing it to ActiveSessionDoesNotBlockUserAgentScripts? Might be useful to include in the ChangeLog if so.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/apple-pay-availability-existing-object.html:17
&gt; +        window.wkPaymentRequest ??= new PaymentRequest([applePayMethod()], applePayDetails);

getting fancy with some nullish coalescing operators :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838867</commentid>
    <comment_count>6</comment_count>
      <attachid>451143</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-08 14:00:10 -0800</bug_when>
    <thetext>Comment on attachment 451143
Patch

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

&gt;&gt; Source/WebCore/Modules/applepay/PaymentCoordinator.cpp:69
&gt;&gt; +bool PaymentCoordinator::canMakePayments(Document&amp;)
&gt; 
&gt; Why keep Document around?

I figured just in case it was needed in the future (just like how `supportsVersion` has it).  I&apos;ll remove it.

&gt;&gt; Source/WebCore/Modules/applepay/PaymentCoordinator.cpp:78
&gt;&gt; +    m_client.canMakePaymentsWithActiveCard(merchantIdentifier, document.domain(), [this, completionHandler = WTFMove(completionHandler)](bool canMakePayments) {
&gt; 
&gt; Seems like we shouldn&apos;t drop weakThis, unless I&apos;m missing something

Eh, yeah probably.  The only reason we capture `this` is cause `PAYMENT_COORDINATOR_RELEASE_LOG` uses it, and it just logs the raw pointer value (i.e. location).  Nothing actually dereferences `this` inside here.  But probably couldn&apos;t hurt to keep it :)

&gt;&gt; Source/WebCore/Modules/applepay/PaymentCoordinatorClient.h:69
&gt;&gt;      virtual String userAgentScriptsBlockedErrorMessage() const { return { }; }
&gt; 
&gt; I think this can be removed too

Oh oops good catch!

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ApplePay.mm:-243
&gt;&gt; -TEST(ApplePay, ActiveSessionBlocksUserAgentScripts)
&gt; 
&gt; Is there a reason we got rid of the ActiveSession test instead if changing it to ActiveSessionDoesNotBlockUserAgentScripts? Might be useful to include in the ChangeLog if so.

`apple-pay-active-session.html` only simulated that an active session actually took place (via `Internals.prototype.setApplePayIsActive`).  The rest of the tests actually create an active session, so there&apos;s not really a benefit to keeping it (it would basically just be a copy of the other tests).

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/apple-pay-availability-existing-object.html:17
&gt;&gt; +        window.wkPaymentRequest ??= new PaymentRequest([applePayMethod()], applePayDetails);
&gt; 
&gt; getting fancy with some nullish coalescing operators :P

(☞ﾟヮﾟ)☞</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838912</commentid>
    <comment_count>7</comment_count>
      <attachid>451312</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-08 15:15:18 -0800</bug_when>
    <thetext>Created attachment 451312
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839835</commentid>
    <comment_count>8</comment_count>
      <attachid>451580</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-10 11:17:05 -0800</bug_when>
    <thetext>Created attachment 451580
[fast-cq] Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839949</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-10 14:24:37 -0800</bug_when>
    <thetext>Committed r289578 (247095@main): &lt;https://commits.webkit.org/247095@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451580.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451143</attachid>
            <date>2022-02-07 13:19:53 -0800</date>
            <delta_ts>2022-02-08 15:15:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236254-20220207141952.patch</filename>
            <type>text/plain</type>
            <size>53771</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyM2YyM2NmNzNmMzI4MDA4ZDM3MWQyNDU3NDhiYzQ4MzIzNDk5YjM1Li4z
ZTVhYTYxNWQ0YWRiMjhhMDgzYjBiZDdhODJlYmNiZDhhYjEwNDdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNzUgQEAKKzIwMjItMDItMDcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFBlcm1pdCBzaW11bHRhbmVvdXMgQXBwbGUgUGF5IGFuZCBzY3JpcHQgaW5q
ZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYyNTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3NzM2NzI3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBBcHBsZVBheS5BcHBsZVBh
eUF2YWlsYWJsZUJ5RGVmYXVsdAorICAgICAgICAgICAgICAgQXBwbGVQYXkuQXBwbGVQYXlBdmFp
bGFibGVJbkZyYW1lCisgICAgICAgICAgICAgICBBcHBsZVBheS5Vc2VyU2NyaXB0QXREb2N1bWVu
dFN0YXJ0RG9lc05vdERpc2FibGVBcHBsZVBheQorICAgICAgICAgICAgICAgQXBwbGVQYXkuVXNl
clNjcmlwdEF0RG9jdW1lbnRFbmREb2VzTm90RGlzYWJsZUFwcGxlUGF5CisgICAgICAgICAgICAg
ICBBcHBsZVBheS5Vc2VyQWdlbnRTY3JpcHRFdmFsdWF0aW9uRG9lc05vdERpc2FibGVBcHBsZVBh
eQorICAgICAgICAgICAgICAgQXBwbGVQYXkuVXNlckFnZW50U2NyaXB0RXZhbHVhdGlvbkRvZXNO
b3REaXNhYmxlQXBwbGVQYXlJbkV4aXN0aW5nT2JqZWN0cworICAgICAgICAgICAgICAgQXBwbGVQ
YXkuQ2FuTWFrZVBheW1lbnRzRG9lc05vdEJsb2NrVXNlckFnZW50U2NyaXB0cworICAgICAgICAg
ICAgICAgQXBwbGVQYXkuQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmREb2VzTm90QmxvY2tV
c2VyQWdlbnRTY3JpcHRzCisgICAgICAgICAgICAgICBBcHBsZVBheS5DYW5NYWtlUGF5bWVudERv
ZXNOb3RCbG9ja1VzZXJBZ2VudFNjcmlwdHMKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
ZW5zdXJlUGx1Z0luc0luamVjdGVkU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpoYXNFdmFsdWF0ZWRVc2VyQWdlbnRTY3JpcHRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpzZXRIYXNFdmFsdWF0ZWRVc2VyQWdlbnRTY3JpcHRzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppc0FwcGxlUGF5QWN0aXZlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRBcHBsZVBheUlzQWN0
aXZlKTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIGxvZ2ljIHRoYXQgdHJhY2tzIHNjcmlwdCBp
bmplY3Rpb24gYWN0aXZpdHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlQXN5bmNo
cm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNlckFn
ZW50U2NyaXB0cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVBheW1lbnRDb29yZGluYXRvckNsaWVudDo6
c3VwcG9ydHNVbnJlc3RyaWN0ZWRBcHBsZVBheSk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9G
cmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVk
aWF0ZWx5KToKKyAgICAgICAgUmVtb3ZlIGxvZ2ljIHRoYXQgZGlzYWJsZXMgc2NyaXB0IGluamVj
dGlvbiBhZnRlciBhbiBBcHBsZSBQYXkgc2Vzc2lvbiBpcyBzdGFydGVkLgorCisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXlt
ZW50Q29vcmRpbmF0b3I6OmNhbk1ha2VQYXltZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpQYXlt
ZW50Q29vcmRpbmF0b3I6OmNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKToKKyAgICAgICAg
KFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvcjo6YmVnaW5QYXltZW50U2Vzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0b3I6OnNob3VsZEVuYWJsZUFwcGxlUGF5QVBJ
cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0b3I6
OnNldEFwcGxlUGF5SXNBY3RpdmVJZkFsbG93ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yOjpzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50Lmg6CisgICAgICAgIFJlbW92ZSBsb2dpYyB0aGF0IHRyYWNrcyBBcHBsZSBQ
YXkgYWN0aXZpdHkuCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5pZGw6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U2Vzc2lvbi5oOgorICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGF5bWVudFNlc3Npb246OmVuYWJsZWRGb3JDb250ZXh0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBheW1lbnRIYW5kbGVyOjplbmFibGVkRm9yQ29udGV4dCk6IERlbGV0ZWQuCisg
ICAgICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5pZGw6CisgICAg
ICAgICogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oOgorICAgICAgICAq
IE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGF5bWVudFJlcXVlc3Q6OmVuYWJsZWRGb3JDb250ZXh0KTogRGVsZXRlZC4KKyAgICAg
ICAgUmVtb3ZlIGxvZ2ljIHRoYXQgZGlzYWJsZXMgYEFwcGxlUGF5U2Vzc2lvbmAvYFBheW1lbnRS
ZXF1ZXN0YCBhZnRlciBzY3JpcHQgaW5qZWN0aW9uLgorCisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaWRsOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRBcHBs
ZVBheUlzQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tQYXltZW50Q29v
cmRpbmF0b3IuaWRsOgorICAgICAgICAqIHRlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5o
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja1BheW1lbnRDb29yZGluYXRvcjo6c3VwcG9ydHNVbnJl
c3RyaWN0ZWRBcHBsZVBheSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrUGF5bWVu
dENvb3JkaW5hdG9yOjpzZXRTdXBwb3J0c1VucmVzdHJpY3RlZEFwcGxlUGF5KTogRGVsZXRlZC4K
KyAgICAgICAgUmVtb3ZlIHRlc3Rpbmcgc3VwcG9ydCBzaW5jZSBhbGwgdXNlcyBvZiB0aGVzZSBo
YXZlIGJlZW4gcmVtb3ZlZCAoYWJvdmUpLgorCiAyMDIyLTAyLTA3ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBQYWdlQ2xpZW50IHBsdW1iaW5n
IGZvciB2aWRlbyBmcmFtZSBleHRyYWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDllMTZmOTBhMGZhZDY5MmUx
MDA5ZTkyZDNlNDQzNDg4ZTJiZGJlMDkuLmYxNDZkMGVjY2E2NTBiZmU3YWI1ZmVkZDE4YTZiM2Qx
ZjNlYzQxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDItMDcgIERldmluIFJv
dXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFBlcm1pdCBzaW11bHRhbmVvdXMg
QXBwbGUgUGF5IGFuZCBzY3JpcHQgaW5qZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYyNTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3
NzM2NzI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvcjo6c3VwcG9ydHNVbnJlc3RyaWN0ZWRBcHBs
ZVBheSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSBsb2dpYyB0aGF0IHRyYWNrcyBB
cHBsZSBQYXkgYWN0aXZpdHkuCisKIDIwMjItMDItMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFBhZ2VDbGllbnQgcGx1bWJpbmcgZm9yIHZp
ZGVvIGZyYW1lIGV4dHJhY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBiNjdk
YmNjYjMxNjZkZTY3MzgxODA1ODdlMjg4MTkzODFlNWVkOGQ2Li5kYjMzMDQ0MzAyMTJkN2FiY2Zk
MThkNDQ1NTIwNTZiYmI0NWZiNjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMjItMDItMDcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFBlcm1pdCBzaW11bHRhbmVvdXMgQXBwbGUgUGF5IGFuZCBzY3JpcHQgaW5q
ZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYyNTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3NzM2NzI3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViUGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50OjpzdXBwb3J0c1VucmVzdHJpY3RlZEFwcGxlUGF5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgUmVtb3ZlIGxvZ2ljIHRoYXQgdHJhY2tzIEFwcGxlIFBheSBhY3Rpdml0eS4KKwogMjAy
Mi0wMi0wNiAgVHlsZXIgV2lsY29jayAgPHR5bGVyX3dAYXBwbGUuY29tPgogCiAgICAgICAgIEFY
OiBBZGQgaW50ZXJuYWwtb25seSBmbGFnIHRvIGVuYWJsZSBXSVAgZGlzcGxheTogY29udGVudHMg
c3VwcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNlc3Npb24uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNlc3Npb24uaWRsCmluZGV4IGYyNzk4NzA3M2EwZjczNTJiMzRjZDY1YzhkMDVjZDEwYzYyNjNj
ODYuLjNlNjEyMjRiYWRkYzk0NGU1NzhiOGViZWZlYThkZWU4NDI4YWNjMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5pZGwKQEAg
LTI3LDcgKzI3LDYgQEAKICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9QVBQ
TEVfUEFZLAogICAgIEVuYWJsZWRCeVNldHRpbmc9QXBwbGVQYXlFbmFibGVkLAotICAgIEVuYWJs
ZWRGb3JDb250ZXh0LAogICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBBcHBsZVBheVNl
c3Npb24gOiBFdmVudFRhcmdldCB7CiAgICAgW0NhbGxXaXRoPUN1cnJlbnREb2N1bWVudF0gY29u
c3RydWN0b3IodW5zaWduZWQgbG9uZyB2ZXJzaW9uLCBBcHBsZVBheVBheW1lbnRSZXF1ZXN0IHBh
eW1lbnRSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcAppbmRleCBlOTk1YTJiMWU0NTZjZDlmZDM5ZDI0ODA5
NzUwZjYwYmE3MWZjM2FmLi4wZDgxNzdhYWY2NzBiMzBhNmJmMTc5NDQzMzI0OGM2M2YxMDEzZjlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29y
ZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
Q29vcmRpbmF0b3IuY3BwCkBAIC02NiwzNSArNjYsMTggQEAgYm9vbCBQYXltZW50Q29vcmRpbmF0
b3I6OnN1cHBvcnRzVmVyc2lvbihEb2N1bWVudCYsIHVuc2lnbmVkIHZlcnNpb24pIGNvbnN0CiAg
ICAgcmV0dXJuIHN1cHBvcnRzVmVyc2lvbjsKIH0KIAotYm9vbCBQYXltZW50Q29vcmRpbmF0b3I6
OmNhbk1ha2VQYXltZW50cyhEb2N1bWVudCYgZG9jdW1lbnQpCitib29sIFBheW1lbnRDb29yZGlu
YXRvcjo6Y2FuTWFrZVBheW1lbnRzKERvY3VtZW50JikKIHsKICAgICBhdXRvIGNhbk1ha2VQYXlt
ZW50cyA9IG1fY2xpZW50LmNhbk1ha2VQYXltZW50cygpOwogICAgIFBBWU1FTlRfQ09PUkRJTkFU
T1JfUkVMRUFTRV9MT0coImNhbk1ha2VQYXltZW50cygpIC0+ICVkIiwgY2FuTWFrZVBheW1lbnRz
KTsKLQotICAgIGlmICghY2FuTWFrZVBheW1lbnRzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBpZiAoIXNldEFwcGxlUGF5SXNBY3RpdmVJZkFsbG93ZWQoZG9jdW1lbnQpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gY2FuTWFrZVBh
eW1lbnRzOwogfQogCiB2b2lkIFBheW1lbnRDb29yZGluYXRvcjo6Y2FuTWFrZVBheW1lbnRzV2l0
aEFjdGl2ZUNhcmQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRl
bnRpZmllciwgRnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBtX2NsaWVudC5jYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChtZXJjaGFudElkZW50aWZp
ZXIsIGRvY3VtZW50LmRvbWFpbigpLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgZG9jdW1lbnQgPSBXZWFrUHRyIHsgZG9jdW1lbnQgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBjYW5NYWtlUGF5bWVudHMpIHsKLSAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7Ci0KKyAgICBtX2NsaWVudC5jYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChtZXJj
aGFudElkZW50aWZpZXIsIGRvY3VtZW50LmRvbWFpbigpLCBbdGhpcywgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBjYW5NYWtlUGF5bWVudHMpIHsK
ICAgICAgICAgUEFZTUVOVF9DT09SRElOQVRPUl9SRUxFQVNFX0xPRygiY2FuTWFrZVBheW1lbnRz
V2l0aEFjdGl2ZUNhcmQoKSAtPiAlZCIsIGNhbk1ha2VQYXltZW50cyk7Ci0KLSAgICAgICAgaWYg
KCFjYW5NYWtlUGF5bWVudHMpCi0gICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
ZmFsc2UpOwotCi0gICAgICAgIGlmICghZG9jdW1lbnQgfHwgIXNldEFwcGxlUGF5SXNBY3RpdmVJ
ZkFsbG93ZWQoKmRvY3VtZW50KSkKLSAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7Ci0KLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGNhbk1ha2VQYXltZW50cyk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOCw5
ICs5MSw2IEBAIGJvb2wgUGF5bWVudENvb3JkaW5hdG9yOjpiZWdpblBheW1lbnRTZXNzaW9uKERv
Y3VtZW50JiBkb2N1bWVudCwgUGF5bWVudFNlc3Npb24mCiB7CiAgICAgQVNTRVJUKCFtX2FjdGl2
ZVNlc3Npb24pOwogCi0gICAgaWYgKCFzZXRBcHBsZVBheUlzQWN0aXZlSWZBbGxvd2VkKGRvY3Vt
ZW50KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgVmVjdG9yPFVSTD4gbGlua0ljb25V
UkxzOwogICAgIGZvciAoYXV0byYgaWNvbiA6IExpbmtJY29uQ29sbGVjdG9yIHsgZG9jdW1lbnQg
fS5pY29uc09mVHlwZXMoeyBMaW5rSWNvblR5cGU6OlRvdWNoSWNvbiwgTGlua0ljb25UeXBlOjpU
b3VjaFByZWNvbXBvc2VkSWNvbiB9KSkKICAgICAgICAgbGlua0ljb25VUkxzLmFwcGVuZChpY29u
LnVybCk7CkBAIC0yODUsNDkgKzI2NSw2IEBAIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBQYXltZW50
Q29vcmRpbmF0b3I6OnZhbGlkYXRlZFBheW1lbnROZXR3b3JrKERvY3VtZW50JiwgdW5zCiAgICAg
cmV0dXJuIG1fY2xpZW50LnZhbGlkYXRlZFBheW1lbnROZXR3b3JrKHBheW1lbnROZXR3b3JrKTsK
IH0KIAotYm9vbCBQYXltZW50Q29vcmRpbmF0b3I6OnNob3VsZEVuYWJsZUFwcGxlUGF5QVBJcyhE
b2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0Ci17Ci0gICAgaWYgKG1fY2xpZW50LnN1cHBvcnRzVW5y
ZXN0cmljdGVkQXBwbGVQYXkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBib29sIHNo
b3VsZEVuYWJsZUFQSXMgPSB0cnVlOwotICAgIGRvY3VtZW50LnBhZ2UoKS0+dXNlckNvbnRlbnRQ
cm92aWRlcigpLmZvckVhY2hVc2VyU2NyaXB0KFsmXShET01XcmFwcGVyV29ybGQmLCBjb25zdCBV
c2VyU2NyaXB0JikgewotICAgICAgICBzaG91bGRFbmFibGVBUElzID0gZmFsc2U7Ci0gICAgfSk7
Ci0KLSAgICBpZiAoIXNob3VsZEVuYWJsZUFQSXMpCi0gICAgICAgIFBBWU1FTlRfQ09PUkRJTkFU
T1JfUkVMRUFTRV9MT0coInNob3VsZEVuYWJsZUFwcGxlUGF5QVBJcygpIC0+IGZhbHNlICh1c2Vy
IHNjcmlwdHMpIik7Ci0KLSAgICByZXR1cm4gc2hvdWxkRW5hYmxlQVBJczsKLX0KLQotYm9vbCBQ
YXltZW50Q29vcmRpbmF0b3I6OnNldEFwcGxlUGF5SXNBY3RpdmVJZkFsbG93ZWQoRG9jdW1lbnQm
IGRvY3VtZW50KSBjb25zdAotewotICAgIGF1dG8gaGFzRXZhbHVhdGVkVXNlckFnZW50U2NyaXB0
cyA9IGRvY3VtZW50Lmhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMoKTsKLSAgICBhdXRvIGlz
UnVubmluZ1VzZXJTY3JpcHRzID0gZG9jdW1lbnQuaXNSdW5uaW5nVXNlclNjcmlwdHMoKTsKLSAg
ICBhdXRvIHN1cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXkgPSBtX2NsaWVudC5zdXBwb3J0c1Vu
cmVzdHJpY3RlZEFwcGxlUGF5KCk7Ci0KLSAgICBpZiAoIXN1cHBvcnRzVW5yZXN0cmljdGVkQXBw
bGVQYXkgJiYgKGhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMgfHwgaXNSdW5uaW5nVXNlclNj
cmlwdHMpKSB7Ci0gICAgICAgIEFTU0VSVCghZG9jdW1lbnQuaXNBcHBsZVBheUFjdGl2ZSgpKTsK
LSAgICAgICAgUEFZTUVOVF9DT09SRElOQVRPUl9SRUxFQVNFX0xPRygic2V0QXBwbGVQYXlJc0Fj
dGl2ZUlmQWxsb3dlZCgpIC0+IGZhbHNlIChoYXNFdmFsdWF0ZWRVc2VyQWdlbnRTY3JpcHRzOiAl
ZCwgaXNSdW5uaW5nVXNlclNjcmlwdHM6ICVkKSIsIGhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlw
dHMsIGlzUnVubmluZ1VzZXJTY3JpcHRzKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIGRvY3VtZW50LnNldEFwcGxlUGF5SXNBY3RpdmUoKTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotRXhwZWN0ZWQ8dm9pZCwgRXhjZXB0aW9uRGV0YWlscz4gUGF5bWVudENvb3JkaW5hdG9y
OjpzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAot
ewotICAgIGlmIChtX2NsaWVudC5zdXBwb3J0c1VucmVzdHJpY3RlZEFwcGxlUGF5KCkgfHwgIWRv
Y3VtZW50LmlzQXBwbGVQYXlBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIEFT
U0VSVCghZG9jdW1lbnQuaGFzRXZhbHVhdGVkVXNlckFnZW50U2NyaXB0cygpKTsKLSAgICBBU1NF
UlQoIWRvY3VtZW50LmlzUnVubmluZ1VzZXJTY3JpcHRzKCkpOwotICAgIFBBWU1FTlRfQ09PUkRJ
TkFUT1JfUkVMRUFTRV9MT0dfRVJST1IoInNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cygpIC0+
IGZhbHNlIChhY3RpdmUgc2Vzc2lvbikiKTsKLSAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhj
ZXB0aW9uRGV0YWlscyB7IG1fY2xpZW50LnVzZXJBZ2VudFNjcmlwdHNCbG9ja2VkRXJyb3JNZXNz
YWdlKCkgfSk7Ci19Ci0KIHZvaWQgUGF5bWVudENvb3JkaW5hdG9yOjpnZXRTZXR1cEZlYXR1cmVz
KGNvbnN0IEFwcGxlUGF5U2V0dXBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBjb25zdCBV
UkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UmVmPEFwcGxlUGF5U2V0dXBG
ZWF0dXJlPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUEFZTUVOVF9DT09SRElO
QVRPUl9SRUxFQVNFX0xPRygiZ2V0U2V0dXBGZWF0dXJlcygpIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaAppbmRleCAzODJl
ZmI2MzlmOWNkMzk3NzRiYTBlOWI0NzM4OWY3MDE1MTlkZjM0Li5kNDJlNDgzNDYyZWVhNmZlYjlj
NTljN2Q1OGRjNzQxMGZiYzAwN2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgKQEAgLTkxLDE2ICs5MSwxMSBAQCBwdWJs
aWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdmFsaWRhdGVkUGF5bWVudE5ldHdvcmso
RG9jdW1lbnQmLCB1bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKIAotICAg
IGJvb2wgc2hvdWxkRW5hYmxlQXBwbGVQYXlBUElzKERvY3VtZW50JikgY29uc3Q7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgRXhwZWN0ZWQ8dm9pZCwgRXhjZXB0aW9uRGV0YWlscz4gc2hvdWxkQWxsb3dV
c2VyQWdlbnRTY3JpcHRzKERvY3VtZW50JikgY29uc3Q7Ci0KICAgICB2b2lkIGdldFNldHVwRmVh
dHVyZXMoY29uc3QgQXBwbGVQYXlTZXR1cENvbmZpZ3VyYXRpb24mLCBjb25zdCBVUkwmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWY8QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmKT4m
Jik7CiAgICAgdm9pZCBiZWdpbkFwcGxlUGF5U2V0dXAoY29uc3QgQXBwbGVQYXlTZXR1cENvbmZp
Z3VyYXRpb24mLCBjb25zdCBVUkwmLCBWZWN0b3I8UmVmUHRyPEFwcGxlUGF5U2V0dXBGZWF0dXJl
Pj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBlbmRBcHBs
ZVBheVNldHVwKCk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBzZXRBcHBsZVBheUlzQWN0aXZlSWZB
bGxvd2VkKERvY3VtZW50JikgY29uc3Q7Ci0KICAgICBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQm
IG1fY2xpZW50OwogICAgIFJlZlB0cjxQYXltZW50U2Vzc2lvbj4gbV9hY3RpdmVTZXNzaW9uOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENv
b3JkaW5hdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1l
bnRDb29yZGluYXRvckNsaWVudC5oCmluZGV4IGZjYTRjNTYzODY5NDdjNzc2NTA5ODA0YTk1NDkz
NjViZDQxNTdlMzQuLjE5Nzk5MjcyZmE1MmVjOGRlNGM1NzU5MGRmZGE0ODA0NmQxNjE3ZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
Q29vcmRpbmF0b3JDbGllbnQuaApAQCAtNjUsNyArNjUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGFib3J0UGF5bWVudFNlc3Npb24oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNl
bFBheW1lbnRTZXNzaW9uKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYXltZW50Q29vcmRpbmF0
b3JEZXN0cm95ZWQoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzVW5yZXN0cmljdGVk
QXBwbGVQYXkoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnRTY3Jp
cHRzQmxvY2tlZEVycm9yTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uY3BwCmluZGV4
IDMwMWYyOGRiMTdlNTU1YmRiYWUxMjc2MDc0OWRhMjE1ZDYzMmNmZTAuLjk0Zjk0NTliOWI0NDhh
OTg0MmViMGY0MDIzYzY0MmEwNjhlODNjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uY3BwCkBAIC0zMSw4ICszMSw2IEBACiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUg
IkZlYXR1cmVQb2xpY3kuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUGF5bWVudENv
b3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNzgsMTUgKzc2LDYgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGF5bWVudFNlc3Np
b246OmNhbkNyZWF0ZVNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiB7IH07
CiB9CiAKLWJvb2wgUGF5bWVudFNlc3Npb246OmVuYWJsZWRGb3JDb250ZXh0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxE
b2N1bWVudD4oY29udGV4dCk7Ci0gICAgaWYgKGF1dG8gcGFnZSA9IGRvY3VtZW50LnBhZ2UoKSkK
LSAgICAgICAgcmV0dXJuIHBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigpLnNob3VsZEVuYWJsZUFw
cGxlUGF5QVBJcyhkb2N1bWVudCk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmgKaW5kZXggZGY0MmE1
ZTE0NzM0MDdkMTM3Zjc3ZjBlNmFlODQ2YWYyMGI1NWNjYy4uNzU2MjVhNDdkN2NkMmMxZDQ2YTFk
NmYwYzQwNGIzNTA3NzE3NTU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudFNlc3Npb24uaApAQCAtNDMsNyArNDMsNiBAQCBzdHJ1Y3QgQXBwbGVQYXlT
aGlwcGluZ01ldGhvZDsKIGNsYXNzIFBheW1lbnRTZXNzaW9uIDogcHVibGljIHZpcnR1YWwgUGF5
bWVudFNlc3Npb25CYXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4g
Y2FuQ3JlYXRlU2Vzc2lvbihEb2N1bWVudCYpOwotICAgIHN0YXRpYyBib29sIGVuYWJsZWRGb3JD
b250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQg
dmVyc2lvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVNZXJjaGFudChV
UkwmJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnRIYW5kbGVyLmNwcAppbmRleCA2MzBjNjA5NmM1N2NjYTgwNGQxYTFlMzAx
ZGZkOWNmOTE1MDRkZDM5Li45OGVkMzNmODg2ZGZkOTBlYzI1MTU0MmNhNDhjODU0YmNjMjBhZGUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L1BheW1lbnRIYW5kbGVyLmNwcApAQCAtODcsMTYgKzg3LDYgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
UGF5bWVudEhhbmRsZXI6OnZhbGlkYXRlRGF0YShEb2N1bWVudCYgZG9jdW1lbnQsIEpTQzo6SlNW
YWx1ZQogICAgIHJldHVybiB7IH07CiB9CiAKLWJvb2wgUGF5bWVudEhhbmRsZXI6OmVuYWJsZWRG
b3JDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCi17Ci0jaWYgRU5BQkxF
KEFQUExFX1BBWSkKLSAgICByZXR1cm4gUGF5bWVudFNlc3Npb246OmVuYWJsZWRGb3JDb250ZXh0
KGNvbnRleHQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotI2VuZGlmCi19Ci0KIGJvb2wgUGF5bWVudEhhbmRsZXI6Omhhc0FjdGl2ZVNlc3Np
b24oRG9jdW1lbnQmIGRvY3VtZW50KQogewogI2lmIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVl
c3QuY3BwCmluZGV4IDIzZTI3ODlkYjI3ZWE2ZTg3NjJmYzc0MjAzMjQ1NjJjNDE2ZmQwZDMuLjU2
OWE4ODhmZDBlYjMzNDRhNDA2MGMyMjNjNDU4OWIyOThlZWNhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuY3Bw
CkBAIC0zNDksMTEgKzM0OSw2IEBAIEV4Y2VwdGlvbk9yPFJlZjxQYXltZW50UmVxdWVzdD4+IFBh
eW1lbnRSZXF1ZXN0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBWZWN0CiAgICAgcmV0dXJu
IHJlcXVlc3Q7CiB9CiAKLWJvb2wgUGF5bWVudFJlcXVlc3Q6OmVuYWJsZWRGb3JDb250ZXh0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgcmV0dXJuIFBheW1lbnRIYW5k
bGVyOjplbmFibGVkRm9yQ29udGV4dChjb250ZXh0KTsKLX0KLQogUGF5bWVudFJlcXVlc3Q6OlBh
eW1lbnRSZXF1ZXN0KERvY3VtZW50JiBkb2N1bWVudCwgUGF5bWVudE9wdGlvbnMmJiBvcHRpb25z
LCBQYXltZW50RGV0YWlsc0luaXQmJiBkZXRhaWxzLCBWZWN0b3I8U3RyaW5nPiYmIHNlcmlhbGl6
ZWRNb2RpZmllckRhdGEsIFZlY3RvcjxNZXRob2Q+JiYgc2VyaWFsaXplZE1ldGhvZERhdGEsIFN0
cmluZyYmIHNlbGVjdGVkU2hpcHBpbmdPcHRpb24pCiAgICAgOiBBY3RpdmVET01PYmplY3QgeyBk
b2N1bWVudCB9CiAgICAgLCBtX29wdGlvbnMgeyBXVEZNb3ZlKG9wdGlvbnMpIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3Qu
aAppbmRleCA2N2QyMDg1MGE0MzRmNjgxMDVjMGIzMzc4NWQ5NzNjZDA4ZGRlMGI5Li41YjA3YmI1
NjUzYmNkOTE2NDNhMTQ4NDBiYmUwYjA4NDg5NjE1MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5oCkBAIC02MCw3
ICs2MCw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBTaG93UHJvbWlzZSA9IERPTVByb21pc2VEZWZl
cnJlZDxJRExJbnRlcmZhY2U8UGF5bWVudFJlc3BvbnNlPj47CiAKICAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8UmVmPFBheW1lbnRSZXF1ZXN0Pj4gY3JlYXRlKERvY3VtZW50JiwgVmVjdG9yPFBheW1l
bnRNZXRob2REYXRhPiYmLCBQYXltZW50RGV0YWlsc0luaXQmJiwgUGF5bWVudE9wdGlvbnMmJik7
Ci0gICAgc3RhdGljIGJvb2wgZW5hYmxlZEZvckNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpOwogICAgIH5QYXltZW50UmVxdWVzdCgpOwogCiAgICAgdm9pZCBzaG93KERvY3VtZW50Jiwg
UmVmUHRyPERPTVByb21pc2U+JiYgZGV0YWlsc1Byb21pc2UsIFNob3dQcm9taXNlJiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVx
dWVzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRS
ZXF1ZXN0LmlkbAppbmRleCA3ZmRlMDIwOTgxZTY1MDM3NTU2MDllYmM4ZGMxZDQ1Njc2MzE1ZWFm
Li40ZDcwMzAxZWJmMGQzNmIwM2ExYzEwOTM2ZTNhMDk1ZGFiNWYwZTdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0
LmlkbApAQCAtMjcsNyArMjcsNiBAQAogICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRp
b25hbD1QQVlNRU5UX1JFUVVFU1QsCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1QYXltZW50UmVxdWVz
dEVuYWJsZWQsCi0gICAgRW5hYmxlZEZvckNvbnRleHQsCiAgICAgU2VjdXJlQ29udGV4dCwKICAg
ICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgUGF5bWVudFJlcXVlc3QgOiBFdmVudFRhcmdl
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
CmluZGV4IDI1NDM1NzM0ZDg2NWIwMGIyNGFkNThiZWI2MTUyYzVlZTYwMDdlNzcuLjE3YWJkNDQ1
NjAwNDFhYjlkMzQyZmFmYzViMjRiNTA0ODFjNzYxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC02OTEsMjMgKzY5MSwxMiBAQCBK
U0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29y
bGRJZ25vcmluZ0V4Y2VwdGlvbihETwogfQogVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9s
bGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxk
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogewotICAgIHJl
dHVybiBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKHdvcmxkLCB7IHNjcmlw
dCwgVVJMIHsgfSwgZmFsc2UsIHN0ZDo6bnVsbG9wdCwgZm9yY2VVc2VyR2VzdHVyZSB9KTsKLX0K
LQotVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2Ny
aXB0SW5Xb3JsZEludGVybmFsKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKLXsKLSAgICBhdXRvJiBkb2N1bWVudCA9ICptX2ZyYW1l
LmRvY3VtZW50KCk7Ci0gICAgYXV0byBhbGxvd2VkID0gc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3Jp
cHRzKGRvY3VtZW50KTsKLSAgICBpZiAoIWFsbG93ZWQpCi0gICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChhbGxvd2VkLmVycm9yKCkpOwotCi0gICAgZG9jdW1lbnQuc2V0SGFzRXZhbHVhdGVk
VXNlckFnZW50U2NyaXB0cygpOwotICAgIHJldHVybiBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3Js
ZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldvcmxk
KHdvcmxkLCB7IHNjcmlwdCwgVVJMIHsgfSwgZmFsc2UsIHN0ZDo6bnVsbG9wdCwgZm9yY2VVc2Vy
R2VzdHVyZSB9KTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlQXN5bmNocm9u
b3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIFJlc29sdmVGdW5jdGlvbiYmIHJlc29sdmVD
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVVc2VyQWdlbnRT
Y3JpcHRJbldvcmxkSW50ZXJuYWwod29ybGQsIFdURk1vdmUocGFyYW1ldGVycykpOworICAgIGF1
dG8gcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIFdURk1vdmUocGFyYW1ldGVy
cykpOwogICAgIAogICAgIGlmIChwYXJhbWV0ZXJzLnJ1bkFzQXN5bmNGdW5jdGlvbiA9PSBSdW5B
c0FzeW5jRnVuY3Rpb246Ok5vIHx8ICFyZXN1bHQgfHwgIXJlc3VsdC52YWx1ZSgpLmlzT2JqZWN0
KCkpIHsKICAgICAgICAgcmVzb2x2ZUNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CkBAIC03Njcs
MTcgKzc1Niw2IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1Vz
ZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkCiAgICAgY2FsbCgmZ2xvYmFsT2Jq
ZWN0LCB0aGVuRnVuY3Rpb24sIGNhbGxEYXRhLCByZXN1bHQudmFsdWUoKSwgYXJndW1lbnRzKTsK
IH0KIAotRXhwZWN0ZWQ8dm9pZCwgRXhjZXB0aW9uRGV0YWlscz4gU2NyaXB0Q29udHJvbGxlcjo6
c2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKLXsK
LSNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgIGlmIChhdXRvIHBhZ2UgPSBtX2ZyYW1lLnBhZ2Uo
KSkKLSAgICAgICAgcmV0dXJuIHBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigpLnNob3VsZEFsbG93
VXNlckFnZW50U2NyaXB0cyhkb2N1bWVudCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkb2N1
bWVudCk7Ci0jZW5kaWYKLSAgICByZXR1cm4geyB9OwotfQotCiBib29sIFNjcmlwdENvbnRyb2xs
ZXI6OmNhbkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5FeGVjdXRlU2NyaXB0cyBy
ZWFzb24pCiB7CiAgICAgaWYgKHJlYXNvbiA9PSBBYm91dFRvRXhlY3V0ZVNjcmlwdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCAwY2EyMDJk
NDY1Zjk0MmE0YmE4YzhkMWYzNTM1YTdhZjQ4YzgwNzAzLi5lNzNiYjkyZGQzZmViMGJlNTNiZjJk
OTA4ZWQzYWIyY2EwZWVhMTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5oCkBAIC0xMDYsOCArMTA2LDYgQEAgcHVibGljOgogICAgIEpTQzo6SlNW
YWx1ZSBldmFsdWF0ZUlnbm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsK
ICAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oY29uc3Qg
U2NyaXB0U291cmNlQ29kZSYsIERPTVdyYXBwZXJXb3JsZCYpOwogCi0gICAgRXhwZWN0ZWQ8dm9p
ZCwgRXhjZXB0aW9uRGV0YWlscz4gc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKERvY3VtZW50
JikgY29uc3Q7Ci0KICAgICAvLyBUaGlzIGFzc2VydHMgdGhhdCBVUkwgYXJndW1lbnQgaXMgYSBK
YXZhU2NyaXB0IFVSTC4KICAgICB2b2lkIGV4ZWN1dGVKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYs
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPSBudWxscHRyLCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJ
ZkphdmFTY3JpcHRVUkwgPSBSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpOwogCkBAIC0x
NzIsNyArMTcwLDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVwb3J0RXhjZXB0aW9uRnJvbVNjcmlw
dEVycm9yKExvYWRhYmxlU2NyaXB0OjpFcnJvciwgYm9vbCk7CiAKIHByaXZhdGU6Ci0gICAgVmFs
dWVPckV4Y2VwdGlvbiBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKERPTVdy
YXBwZXJXb3JsZCYsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYpOwogICAgIFZhbHVlT3JFeGNl
cHRpb24gZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiwgUnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMmJik7CiAgICAgVmFsdWVPckV4Y2VwdGlvbiBjYWxsSW5Xb3JsZChSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycyYmLCBET01XcmFwcGVyV29ybGQmKTsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IGIwODY3MWZhNzhhYmFmMzM3Nzk2YjQyODU0MThhZTcwZTRhNDY4OGQu
Ljc2MGVjNDQzMmMwZDAyNjc0MjFlMzQ0MWY4MzkxYWU4YTYxMDIxYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNzY0NCwxMCArNzY0NCw5IEBAIHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBs
dWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogCiAgICAgLy8gVXNl
IHRoZSBKUyBmaWxlIHByb3ZpZGVkIGJ5IHRoZSBDaHJvbWUgY2xpZW50LCBvciBmYWxsYmFjayB0
byB0aGUgZGVmYXVsdCBvbmUuCiAgICAgU3RyaW5nIGpzU3RyaW5nID0gcGFnZSgpLT5jaHJvbWUo
KS5jbGllbnQoKS5wbHVnSW5FeHRyYVNjcmlwdCgpOwotICAgIGlmICghanNTdHJpbmcgfHwgIXNj
cmlwdENvbnRyb2xsZXIuc2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKCp0aGlzKSkKKyAgICBp
ZiAoIWpzU3RyaW5nKQogICAgICAgICBqc1N0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhv
dXRDb3B5aW5nKHBsdWdJbnNKYXZhU2NyaXB0LCBzaXplb2YocGx1Z0luc0phdmFTY3JpcHQpKTsK
IAotICAgIHNldEhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMoKTsKICAgICBzY3JpcHRDb250
cm9sbGVyLmV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKFNjcmlwdFNvdXJjZUNvZGUo
anNTdHJpbmcpLCB3b3JsZCk7CiAKICAgICBtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdCA9IHRy
dWU7CkBAIC04ODU4LDEyICs4ODU3LDYgQEAgRE9NVGltZXJIb2xkaW5nVGFuayYgRG9jdW1lbnQ6
OmRvbVRpbWVySG9sZGluZ1RhbmsoKQogCiAjZW5kaWYKIAotYm9vbCBEb2N1bWVudDo6aGFzRXZh
bHVhdGVkVXNlckFnZW50U2NyaXB0cygpIGNvbnN0Ci17Ci0gICAgYXV0byYgdG9wID0gdG9wRG9j
dW1lbnQoKTsKLSAgICByZXR1cm4gdGhpcyA9PSAmdG9wID8gbV9oYXNFdmFsdWF0ZWRVc2VyQWdl
bnRTY3JpcHRzIDogdG9wLmhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMoKTsKLX0KLQogYm9v
bCBEb2N1bWVudDo6aXNSdW5uaW5nVXNlclNjcmlwdHMoKSBjb25zdAogewogICAgIGF1dG8mIHRv
cCA9IHRvcERvY3VtZW50KCk7CkBAIC04ODc5LDE1ICs4ODcyLDYgQEAgdm9pZCBEb2N1bWVudDo6
c2V0QXNSdW5uaW5nVXNlclNjcmlwdHMoKQogICAgICAgICB0b3Auc2V0QXNSdW5uaW5nVXNlclNj
cmlwdHMoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2V0SGFzRXZhbHVhdGVkVXNlckFnZW50U2Ny
aXB0cygpCi17Ci0gICAgYXV0byYgdG9wID0gdG9wRG9jdW1lbnQoKTsKLSAgICBpZiAodGhpcyA9
PSAmdG9wKQotICAgICAgICBtX2hhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMgPSB0cnVlOwot
ICAgIGVsc2UKLSAgICAgICAgdG9wLnNldEhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMoKTsK
LX0KLQogdm9pZCBEb2N1bWVudDo6ZGlkUmVqZWN0U3luY1hIUkR1cmluZ1BhZ2VEaXNtaXNzYWwo
KQogewogICAgICsrbV9udW1iZXJPZlJlamVjdGVkU3luY1hIUnM7CkBAIC04OTA2LDI1ICs4ODkw
LDYgQEAgYm9vbCBEb2N1bWVudDo6c2hvdWxkSWdub3JlU3luY1hIUnMoKSBjb25zdAogICAgIHJl
dHVybiBtX251bWJlck9mUmVqZWN0ZWRTeW5jWEhScyA+IG1heFJlamVjdGVkU3luY1hIUnNQZXJF
dmVudExvb3BJdGVyYXRpb247CiB9CiAKLSNpZiBFTkFCTEUoQVBQTEVfUEFZKQotCi1ib29sIERv
Y3VtZW50Ojppc0FwcGxlUGF5QWN0aXZlKCkgY29uc3QKLXsKLSAgICBhdXRvJiB0b3AgPSB0b3BE
b2N1bWVudCgpOwotICAgIHJldHVybiB0aGlzID09ICZ0b3AgPyBtX2hhc1N0YXJ0ZWRBcHBsZVBh
eVNlc3Npb24gOiB0b3AuaXNBcHBsZVBheUFjdGl2ZSgpOwotfQotCi12b2lkIERvY3VtZW50Ojpz
ZXRBcHBsZVBheUlzQWN0aXZlKCkKLXsKLSAgICBhdXRvJiB0b3AgPSB0b3BEb2N1bWVudCgpOwot
ICAgIGlmICh0aGlzID09ICZ0b3ApCi0gICAgICAgIG1faGFzU3RhcnRlZEFwcGxlUGF5U2Vzc2lv
biA9IHRydWU7Ci0gICAgZWxzZQotICAgICAgICB0b3Auc2V0QXBwbGVQYXlJc0FjdGl2ZSgpOwot
fQotCi0jZW5kaWYKLQogTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIERvY3VtZW50OjptZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcigpCiB7CiAgICAgcmV0dXJuIE1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOjpzaW5nbGV0b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNGRkN2QzNmNl
MjQ4YzBmNTY3NmEwZDU4ZTk4MGQ4MDZlNjEwNmI3MC4uMzQ3NzAxNGMyMTkxZTJjMjdmMGY5ODJm
NWZiNzk4NzgxMTkxNWQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1OTcsMTQgKzE1OTcs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYWludFdvcmtsZXRHbG9iYWxTY29wZUZvck5hbWUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBSZWY8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+JiYpOwogI2Vu
ZGlmCiAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlw
dHMoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzUnVubmluZ1VzZXJTY3JpcHRz
KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBc1J1bm5pbmdVc2VyU2NyaXB0
cygpOwotICAgIHZvaWQgc2V0SGFzRXZhbHVhdGVkVXNlckFnZW50U2NyaXB0cygpOwotI2lmIEVO
QUJMRShBUFBMRV9QQVkpCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0FwcGxlUGF5QWN0aXZl
KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcHBsZVBheUlzQWN0aXZlKCk7
Ci0jZW5kaWYKIAogICAgIHZvaWQgZnJhbWVXYXNEaXNjb25uZWN0ZWRGcm9tT3duZXIoKTsKIApA
QCAtMjIyNywxNSArMjIyMSwxMSBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWY8
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+PiBtX3BhaW50V29ya2xldEdsb2JhbFNjb3BlczsKICNl
bmRpZgogICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZSZWplY3RlZFN5bmNYSFJzIHsgMCB9OwotICAg
IGJvb2wgbV9oYXNFdmFsdWF0ZWRVc2VyQWdlbnRTY3JpcHRzIHsgZmFsc2UgfTsKICAgICBib29s
IG1faXNSdW5uaW5nVXNlclNjcmlwdHMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tYXlCZURldGFj
aGVkRnJvbUZyYW1lIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9zaG91bGRQcmV2ZW50RW50ZXJpbmdC
YWNrRm9yd2FyZENhY2hlRm9yVGVzdGluZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc0xvYWRl
ZFRoaXJkUGFydHlTY3JpcHQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNMb2FkZWRUaGlyZFBh
cnR5RnJhbWUgeyBmYWxzZSB9OwotI2lmIEVOQUJMRShBUFBMRV9QQVkpCi0gICAgYm9vbCBtX2hh
c1N0YXJ0ZWRBcHBsZVBheVNlc3Npb24geyBmYWxzZSB9OwotI2VuZGlmCiAgICAgYm9vbCBtX2hh
c1Zpc3VhbGx5Tm9uRW1wdHlDdXN0b21Db250ZW50IHsgZmFsc2UgfTsKIAogICAgIGJvb2wgbV92
aXNpYmlsaXR5SGlkZGVuRHVlVG9EaXNtaXNzYWwgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCAxOTNjYzdmNmNhMWFmYTdhYTM0NTY2NTEwOTVmNWZk
Y2RiYzNjNTE2Li4zNDUzZmQ1YTY4YWFiYmY2MzFjMGZiYWJlYmI5ZGNmNDA3ZDE5ZmM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtNDMwLDcgKzQzMCw2IEBAIGNs
YXNzIEVtcHR5UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFBheW1lbnRD
b29yZGluYXRvckNsaWVudCB7CiAgICAgdm9pZCBjYW5jZWxQYXltZW50U2Vzc2lvbigpIGZpbmFs
IHsgfQogICAgIHZvaWQgYWJvcnRQYXltZW50U2Vzc2lvbigpIGZpbmFsIHsgfQogICAgIHZvaWQg
cGF5bWVudENvb3JkaW5hdG9yRGVzdHJveWVkKCkgZmluYWwgeyB9Ci0gICAgYm9vbCBzdXBwb3J0
c1VucmVzdHJpY3RlZEFwcGxlUGF5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIH07
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAyOGFiMjc1YjhhMDA2NmFiMTE5NGMw
ZGRhYjEyMTQyNGY0ZWJiN2YzLi40YWExZTc3YTNhYjJkMGVjNzk2MWI2NjFkNWNlN2ZiOGZjMTkw
Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNjk0LDggKzY5NCw2IEBAIHZvaWQgRnJhbWU6
OmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25z
dCBVc2VyU2NyaXB0CiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIVVzZXJDb250ZW50VVJMUGF0
dGVybjo6bWF0Y2hlc1BhdHRlcm5zKGRvY3VtZW50LT51cmwoKSwgc2NyaXB0LmFsbG93bGlzdCgp
LCBzY3JpcHQuYmxvY2tsaXN0KCkpKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFtX3Njcmlw
dC0+c2hvdWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKCpkb2N1bWVudCkpCi0gICAgICAgIHJldHVy
bjsKIAogICAgIGRvY3VtZW50LT5zZXRBc1J1bm5pbmdVc2VyU2NyaXB0cygpOwogICAgIGxvYWRl
cigpLmNsaWVudCgpLndpbGxJbmplY3RVc2VyU2NyaXB0KHdvcmxkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAppbmRleCA0MTMyOTQ2MWU2Y2IwY2M3YjdhNzg1ZWQxOTRhMDFhMjRm
OTljYjhmLi4wNzBiYzQyYWYzOGM4ODNkZmJiMDQ4MzFjZTU2N2E3NTM1NjQ1NjgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01MzE2LDEzICs1MzE2LDYgQEAgdm9pZCBJ
bnRlcm5hbHM6OnNldEFzUnVubmluZ1VzZXJTY3JpcHRzKERvY3VtZW50JiBkb2N1bWVudCkKICAg
ICBkb2N1bWVudC5zZXRBc1J1bm5pbmdVc2VyU2NyaXB0cygpOwogfQogCi0jaWYgRU5BQkxFKEFQ
UExFX1BBWSkKLXZvaWQgSW50ZXJuYWxzOjpzZXRBcHBsZVBheUlzQWN0aXZlKERvY3VtZW50JiBk
b2N1bWVudCkKLXsKLSAgICBkb2N1bWVudC5zZXRBcHBsZVBheUlzQWN0aXZlKCk7Ci19Ci0jZW5k
aWYKLQogI2lmIEVOQUJMRShXRUJHTCkKIHZvaWQgSW50ZXJuYWxzOjpzaW11bGF0ZUV2ZW50Rm9y
V2ViR0xDb250ZXh0KFNpbXVsYXRlZFdlYkdMQ29udGV4dEV2ZW50IGV2ZW50LCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQmIGNvbnRleHQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRl
eCAzMDNlNDcyNTNmODFiNWQ2MjY3MTQyMDdmMzA2YTljOGE2MGRiYzhlLi41Nzc2ZWE5MTNmNTE4
NDU2OGUxZGFiMGY0ZDY4M2VkZWM4NGVjNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKQEAgLTgyMyw5ICs4MjMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRRdWlja0xvb2tQYXNz
d29yZChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgc2V0QXNSdW5uaW5nVXNlclNjcmlwdHMo
RG9jdW1lbnQmKTsKLSNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgIHZvaWQgc2V0QXBwbGVQYXlJ
c0FjdGl2ZShEb2N1bWVudCYpOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgZW51
bSBjbGFzcyBTaW11bGF0ZWRXZWJHTENvbnRleHRFdmVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKaW5kZXggN2M1ZGZhOWYxYTM2MzhkYmIxNzQyNDIzZTVkZDBmMjIyODY2NjY4
Ni4uMzM5YTA0NWVlMDljNTliMDlkMGNjYzM3YzY4NTA2N2YzODBmOTljNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtODg0LDcgKzg4NCw2IEBAIHR5cGVkZWYgKEZldGNo
UmVxdWVzdCBvciBGZXRjaFJlc3BvbnNlKSBGZXRjaE9iamVjdDsKICAgICB1bmRlZmluZWQgc2V0
UXVpY2tMb29rUGFzc3dvcmQoRE9NU3RyaW5nIHBhc3N3b3JkKTsKIAogICAgIFtDYWxsV2l0aD1D
dXJyZW50RG9jdW1lbnRdIHVuZGVmaW5lZCBzZXRBc1J1bm5pbmdVc2VyU2NyaXB0cygpOwotICAg
IFtDYWxsV2l0aD1DdXJyZW50RG9jdW1lbnQsIENvbmRpdGlvbmFsPUFQUExFX1BBWV0gdW5kZWZp
bmVkIHNldEFwcGxlUGF5SXNBY3RpdmUoKTsKIAogICAgIHVuZGVmaW5lZCBkaXNhYmxlVGlsZVNp
emVVcGRhdGVEZWxheSgpOwogICAgIHVuZGVmaW5lZCBzZXRTcGVjdWxhdGl2ZVRpbGluZ0RlbGF5
RGlzYWJsZWRGb3JUZXN0aW5nKGJvb2xlYW4gZGlzYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuaAppbmRleCA1NGIzZjI1YzA2NGY0YTIy
ZjhhMjdlZDJjMjM0ODcwY2YxMTlmNWQ3Li5kMzM0Y2NkMGM5NGY5MDU3Y2Y2MjdmNjhlNjk5MWM5
ZTg1ZWY3MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50
Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29v
cmRpbmF0b3IuaApAQCAtNzUsOSArNzUsNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgTW9ja1BheW1l
bnRDb250YWN0RmllbGRzJiByZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzOyB9CiAgICAgY29uc3QgTW9ja1Bh
eW1lbnRDb250YWN0RmllbGRzJiByZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkcygpIGNvbnN0
IHsgcmV0dXJuIG1fcmVxdWlyZWRTaGlwcGluZ0NvbnRhY3RGaWVsZHM7IH0KIAotICAgIGJvb2wg
c3VwcG9ydHNVbnJlc3RyaWN0ZWRBcHBsZVBheSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc3Vw
cG9ydHNVbnJlc3RyaWN0ZWRBcHBsZVBheTsgfQotICAgIHZvaWQgc2V0U3VwcG9ydHNVbnJlc3Ry
aWN0ZWRBcHBsZVBheShib29sIHN1cHBvcnRzKSB7IG1fc3VwcG9ydHNVbnJlc3RyaWN0ZWRBcHBs
ZVBheSA9IHN1cHBvcnRzOyB9Ci0gICAgCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNUQUxMTUVO
VFMpCiAgICAgQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gaW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YWxsbWVudENvbmZpZ3VyYXRpb247IH0K
ICNlbmRpZgpAQCAtMTMzLDcgKzEzMCw2IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3M7CiAg
ICAgTW9ja1BheW1lbnRDb250YWN0RmllbGRzIG1fcmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxk
czsKICAgICBNb2NrUGF5bWVudENvbnRhY3RGaWVsZHMgbV9yZXF1aXJlZFNoaXBwaW5nQ29udGFj
dEZpZWxkczsKLSAgICBib29sIG1fc3VwcG9ydHNVbnJlc3RyaWN0ZWRBcHBsZVBheSB7IHRydWUg
fTsKICNpZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExNRU5UUykKICAgICBBcHBsZVBheUluc3Rh
bGxtZW50Q29uZmlndXJhdGlvbiBtX2luc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9y
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5pZGwK
aW5kZXggZDI3ZDJiNWU5NGU4MzMzNjkyZGM1MjMxMTM5OWJhOTRmMTNhNTZhYS4uYzU4ZjAzNjQy
YzdjOWQ4ZDZmMDQ2MmI4NTY0ZDkzNjU0Yjc5MTVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuaWRsCkBAIC00Nyw4ICs0Nyw2IEBACiAK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgQXBwbGVQYXlTZXR1cENvbmZpZ3VyYXRpb24gc2V0dXBD
b25maWd1cmF0aW9uOwogCi0gICAgYXR0cmlidXRlIGJvb2xlYW4gc3VwcG9ydHNVbnJlc3RyaWN0
ZWRBcHBsZVBheTsKLQogICAgIFtDb25kaXRpb25hbD1BUFBMRV9QQVlfSU5TVEFMTE1FTlRTXSBy
ZWFkb25seSBhdHRyaWJ1dGUgQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gaW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uOwogCiAgICAgW0NvbmRpdGlvbmFsPUFQUExFX1BBWV9DT1VQT05f
Q09ERV0gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4/IHN1cHBvcnRzQ291cG9uQ29kZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvci5jcHAKaW5kZXggMWM3MDI2NTBiNzljY2JmYWUwMWRmN2ZjOTAxMDBiNWY3
NmRhNzAwOS4uNmQ3ZjAxYTFkNGM0ZDAyNTdjY2JlOTY4ZWI4OGU3OTYxYWU2Mjc1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvci5jcHAKQEAgLTE1OCwxNiArMTU4LDYgQEAgdm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3I6OnBheW1lbnRDb29yZGluYXRvckRlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRoaXM7
CiB9CiAKLWJvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpzdXBwb3J0c1VucmVzdHJpY3RlZEFw
cGxlUGF5KCkgY29uc3QKLXsKLSNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKLSAgICBz
dGF0aWMgYm9vbCBoYXNFbnRpdGxlbWVudCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NIYXNFbnRpdGxlbWVudCgiY29tLmFwcGxlLnByaXZhdGUuV2ViS2l0LlVucmVzdHJp
Y3RlZEFwcGxlUGF5Iik7Ci0gICAgcmV0dXJuIGhhc0VudGl0bGVtZW50OwotI2Vsc2UKLSAgICBy
ZXR1cm4gdHJ1ZTsKLSNlbmRpZgotfQotCiBTdHJpbmcgV2ViUGF5bWVudENvb3JkaW5hdG9yOjp1
c2VyQWdlbnRTY3JpcHRzQmxvY2tlZEVycm9yTWVzc2FnZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
ICJVbmFibGUgdG8gcnVuIHVzZXIgYWdlbnQgc2NyaXB0cyBiZWNhdXNlIHRoaXMgZG9jdW1lbnQg
aGFzIHByZXZpb3VzbHkgYWNjZXNzZWQgQXBwbGUgUGF5LiBEb2N1bWVudHMgY2FuIGJlIHByZXZl
bnRlZCBmcm9tIGFjY2Vzc2luZyBBcHBsZSBQYXkgYnkgYWRkaW5nIGEgV0tVc2VyU2NyaXB0IHRv
IHRoZSBXS1dlYlZpZXcncyBXS1VzZXJDb250ZW50Q29udHJvbGxlci4iX3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmgKaW5kZXggYTc2YTNhYzYzZjhhNGE1OTQ1NmM4MWM5NDQ5ZGI0ODcxZWVhMjRlYy4uNWEx
ZDc5NGFmZTE1MzAzMzM4Yjg1ODczNjc5NzE0N2QzNzdhMzEyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3Iu
aApAQCAtODAsOCArODAsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc1dlYlBheW1lbnRDb29y
ZGluYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIGJvb2wgc3Vw
cG9ydHNVbnJlc3RyaWN0ZWRBcHBsZVBheSgpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgU3RyaW5n
IHVzZXJBZ2VudFNjcmlwdHNCbG9ja2VkRXJyb3JNZXNzYWdlKCkgY29uc3QgZmluYWw7CiAKICAg
ICB2b2lkIGdldFNldHVwRmVhdHVyZXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXR1cENvbmZp
Z3VyYXRpb24mLCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZWY8
V2ViQ29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmKT4mJikgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRp
bmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCmluZGV4IDgyMzQ0NmRlZGQzNWRlOGVkNzQyNmFm
MzZjZjJmN2U3NmY3YTJlZDIuLjU2YWNlMTUyNzVmNjZlM2QyNjZlZDk5Y2E5YWFhYjIzYmE1NTJj
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5oCkBAIC01Miw3ICs1
Miw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhYm9ydFBheW1lbnRTZXNzaW9uKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjYW5jZWxQYXltZW50U2Vzc2lvbigpIG92ZXJyaWRlOwogICAgIHZvaWQgcGF5
bWVudENvb3JkaW5hdG9yRGVzdHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0c1Vu
cmVzdHJpY3RlZEFwcGxlUGF5KCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRD
b29yZGluYXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbQppbmRleCBkZDBhNzE4YjcyZjcxMzlk
M2FmZmNlNjk1YTY2MzI3ZTA0MmM2YjQ5Li41ODhmYzU2NGRlMTQzZTFmMTc3MDI1ZWI3NjIzNGUw
MTdlZTg1NzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCkBA
IC0xMDksOSArMTA5LDQgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OnBheW1l
bnRDb29yZGluYXRvckRlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLWJvb2wgV2Vi
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpzdXBwb3J0c1VucmVzdHJpY3RlZEFwcGxlUGF5KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU2ZDJlODkxZWIxMjg2OTU1NWI5
ZGM5MzZjYjA5NTUwZmZmODA5NmQuLmM4MTgxMDYyZjE2MWU0ZjQ3YTdiZWJiNGM2MGVkYTBjYzEw
NTgxZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMiBAQAorMjAyMi0wMi0wNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgUGVybWl0IHNpbXVsdGFuZW91cyBBcHBsZSBQYXkgYW5kIHNjcmlw
dCBpbmplY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNjI1NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc3MzY3Mjc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0FwcGxlUGF5Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VC5BcHBsZVBheS5BcHBsZVBheUF2YWlsYWJsZUJ5RGVmYXVsdCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNULkFwcGxlUGF5LkFwcGxlUGF5QXZhaWxhYmxlSW5GcmFtZSk6IFJlbmFtZWQg
ZnJvbSBBcHBsZVBheS5BcHBsZVBheUF2YWlsYWJsZUluVW5yZXN0cmljdGVkQ2xpZW50cy4KKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QuQXBwbGVQYXkuVXNlclNjcmlwdEF0RG9jdW1lbnRT
dGFydERvZXNOb3REaXNhYmxlQXBwbGVQYXkpOiBSZW5hbWVkIGZyb20gQXBwbGVQYXkuVXNlclNj
cmlwdEF0RG9jdW1lbnRTdGFydERpc2FibGVzQXBwbGVQYXkuCisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNULkFwcGxlUGF5LlVzZXJTY3JpcHRBdERvY3VtZW50RW5kRG9lc05vdERpc2FibGVB
cHBsZVBheSk6IFJlbmFtZWQgZnJvbSBBcHBsZVBheS5Vc2VyU2NyaXB0QXREb2N1bWVudEVuZERp
c2FibGVzQXBwbGVQYXkuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNULkFwcGxlUGF5LlVz
ZXJBZ2VudFNjcmlwdEV2YWx1YXRpb25Eb2VzTm90RGlzYWJsZUFwcGxlUGF5KTogUmVuYW1lZCBm
cm9tIEFwcGxlUGF5LlVzZXJBZ2VudFNjcmlwdEV2YWx1YXRpb25EaXNhYmxlc0FwcGxlUGF5Lgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVC5BcHBsZVBheS5Vc2VyQWdlbnRTY3JpcHRFdmFs
dWF0aW9uRG9lc05vdERpc2FibGVBcHBsZVBheUluRXhpc3RpbmdPYmplY3RzKTogUmVuYW1lZCBm
cm9tIEFwcGxlUGF5LlVzZXJBZ2VudFNjcmlwdEV2YWx1YXRpb25EaXNhYmxlc0FwcGxlUGF5SW5F
eGlzdGluZ09iamVjdHMuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNULkFwcGxlUGF5LkNh
bk1ha2VQYXltZW50c0RvZXNOb3RCbG9ja1VzZXJBZ2VudFNjcmlwdHMpOiBSZW5hbWVkIGZyb20g
QXBwbGVQYXkuQ2FuTWFrZVBheW1lbnRzQmxvY2tzVXNlckFnZW50U2NyaXB0cy4KKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QuQXBwbGVQYXkuQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNh
cmREb2VzTm90QmxvY2tVc2VyQWdlbnRTY3JpcHRzKTogUmVuYW1lZCBmcm9tIEFwcGxlUGF5LkNh
bk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkQmxvY2tzVXNlckFnZW50U2NyaXB0cy4KKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QuQXBwbGVQYXkuQ2FuTWFrZVBheW1lbnREb2VzTm90Qmxv
Y2tVc2VyQWdlbnRTY3JpcHRzKTogUmVuYW1lZCBmcm9tIEFwcGxlUGF5LkNhbk1ha2VQYXltZW50
QmxvY2tzVXNlckFnZW50U2NyaXB0cy4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QuQXBw
bGVQYXkuQWN0aXZlU2Vzc2lvbkJsb2Nrc1VzZXJBZ2VudFNjcmlwdHMpOiBEZWxldGVkLgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwbGUtcGF5LWFjdGl2ZS1z
ZXNzaW9uLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9hcHBsZS1wYXktYXZhaWxhYmlsaXR5Lmh0bWw6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXktYXZhaWxhYmlsaXR5LWV4aXN0aW5nLW9i
amVjdC5odG1sOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBw
bGUtcGF5LWF2YWlsYWJpbGl0eS1pbi1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1jYW4tbWFrZS1wYXltZW50Lmh0bWw6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXktY2FuLW1h
a2UtcGF5bWVudHMuaHRtbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL2FwcGxlLXBheS1jYW4tbWFrZS1wYXltZW50cy13aXRoLWFjdGl2ZS1jYXJkLmh0bWw6CisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKwogMjAyMi0wMi0wNyAgUm95IFJlYXBvciAgPHJyZWFwb3JAYXBwbGUuY29tPgog
CiAgICAgICAgIFt3ZWJraXRjb3JlcHldIEF1dG9pbnN0YWxsZXIgbWF5IGZhaWwgdG8gaW5zdGFs
bCB3aGVlbHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWI0YzNiMjgyZjk1YzQxZTM0NGM4
MGM1NDE3YmViYjUzMjg1ZjkzNC4uOGE5N2ZkZjZlYzk5MWFhOWU3YzdhZTQzMWI4YTNhYjQ2NTVm
Yjc4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgyMCw3ICs4MjAsNiBAQAogCQlBMTc5
OEI4NTIyNDMzNjQ3MDAwNzY0QkQgLyogV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTc5OEI4NDIy
NDMzNjQ3MDAwNzY0QkQgLyogV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMubW0gKi87IH07
CiAJCUExNzk4Qjg3MjI0MzQ0OUIwMDA3NjRCRCAvKiBhcHBsZS1wYXktYXZhaWxhYmlsaXR5Lmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTE3OThCODYyMjQzNDQ2QjAwMDc2NEJEIC8qIGFwcGxlLXBheS1hdmFpbGFiaWxpdHkuaHRtbCAq
LzsgfTsKIAkJQTE3OThCODkyMjQzNUUyOTAwMDc2NEJEIC8qIGFwcGxlLXBheS1hdmFpbGFiaWxp
dHktaW4taWZyYW1lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTE3OThCODgyMjQzNUQyRTAwMDc2NEJEIC8qIGFwcGxlLXBheS1hdmFp
bGFiaWxpdHktaW4taWZyYW1lLmh0bWwgKi87IH07Ci0JCUExNzk4QjhCMjI0MzYxQTQwMDA3NjRC
RCAvKiBhcHBsZS1wYXktYWN0aXZlLXNlc3Npb24uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTc5OEI4QTIyNDM2MTFBMDAwNzY0QkQg
LyogYXBwbGUtcGF5LWFjdGl2ZS1zZXNzaW9uLmh0bWwgKi87IH07CiAJCUExNzk5MTg4MUUxQzk5
NEUwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMTc5OTE4NjFFMUM5OTRFMDBBNTA1RUQgLyogU2hhcmVkQnVm
ZmVyLm1tICovOyB9OwogCQlBMTc5OTE4QjFFMUNBMjQxMDBBNTA1RUQgLyogU2hhcmVkQnVmZmVy
VGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MTc5OTE4OTFFMUNBMjQxMDBBNTA1RUQgLyogU2hhcmVkQnVmZmVyVGVzdC5jcHAgKi87IH07CiAJ
CUExN0VBQzU1MjA4MzA1QTAwMDg0QjQxQiAvKiBmaW5kLnBkZiBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTdFQUM1NDIwODMwNTZFMDA4NEI0
MUIgLyogZmluZC5wZGYgKi87IH07CkBAIC0xMjIxLDcgKzEyMjAsNiBAQAogCQkJCTFBNjM0NzlG
MTgzRDcyQTQwMDVCMTcwNyAvKiBhbGwtY29udGVudC1pbi1vbmUtaWZyYW1lLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJQzI1Q0NBMEQxRTUxNDE4NDAwMjZDQjhBIC8qIEFsbEFoZW0u
c3ZnIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0QTkyMDJGMUZFRTM0RTkwMEY1OTU5MCAv
KiBhcHBsZS1kYXRhLXVybC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAotCQkJCUExNzk4QjhC
MjI0MzYxQTQwMDA3NjRCRCAvKiBhcHBsZS1wYXktYWN0aXZlLXNlc3Npb24uaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQlBMUZCNTAzRDIyQTFDQkUyMDBENEQ5NzkgLyogYXBwbGUtcGF5
LWF2YWlsYWJpbGl0eS1leGlzdGluZy1vYmplY3QuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQlBMTc5OEI4OTIyNDM1RTI5MDAwNzY0QkQgLyogYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS1p
bi1pZnJhbWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlBMTc5OEI4NzIyNDM0NDlC
MDAwNzY0QkQgLyogYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLApAQCAtMjY1NCw3ICsyNjUyLDYgQEAKIAkJQTE3OThCODQyMjQzMzY0NzAwMDc2NEJEIC8q
IFdlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExNzk4Qjg2MjI0MzQ0NkIwMDA3NjRCRCAvKiBhcHBsZS1wYXktYXZhaWxhYmlsaXR5
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAiYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3OThCODgyMjQzNUQyRTAwMDc2NEJEIC8qIGFwcGxlLXBh
eS1hdmFpbGFiaWxpdHktaW4taWZyYW1lLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXBwbGUtcGF5LWF2YWls
YWJpbGl0eS1pbi1pZnJhbWUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUEx
Nzk4QjhBMjI0MzYxMUEwMDA3NjRCRCAvKiBhcHBsZS1wYXktYWN0aXZlLXNlc3Npb24uaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJhcHBsZS1wYXktYWN0aXZlLXNlc3Npb24uaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUExNzk5MTg2MUUxQzk5NEUwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaGFyZWRCdWZmZXIu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzk5MTg5MUUxQ0EyNDEwMEE1MDVF
RCAvKiBTaGFyZWRCdWZmZXJUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNoYXJlZEJ1ZmZlclRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTc5OTE4QTFFMUNBMjQxMDBBNTA1RUQgLyogU2hhcmVkQnVmZmVyVGVzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRCdWZmZXJUZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00MDMzLDcgKzQwMzAsNiBAQAogCQkJCTQ2QzFFQTk3MjU3NTg4
MDUwMDVFNDA5RSAvKiBhbGVydC5odG1sICovLAogCQkJCUMyNUNDQTBDMUU1MTQwRTUwMDI2Q0I4
QSAvKiBBbGxBaGVtLnN2ZyAqLywKIAkJCQlGNEE5MjAyRTFGRUUzNEM4MDBGNTk1OTAgLyogYXBw
bGUtZGF0YS11cmwuaHRtbCAqLywKLQkJCQlBMTc5OEI4QTIyNDM2MTFBMDAwNzY0QkQgLyogYXBw
bGUtcGF5LWFjdGl2ZS1zZXNzaW9uLmh0bWwgKi8sCiAJCQkJQTFGQjUwM0MyMkExQzI0NDAwRDRE
OTc5IC8qIGFwcGxlLXBheS1hdmFpbGFiaWxpdHktZXhpc3Rpbmctb2JqZWN0Lmh0bWwgKi8sCiAJ
CQkJQTE3OThCODgyMjQzNUQyRTAwMDc2NEJEIC8qIGFwcGxlLXBheS1hdmFpbGFiaWxpdHktaW4t
aWZyYW1lLmh0bWwgKi8sCiAJCQkJQTE3OThCODYyMjQzNDQ2QjAwMDc2NEJEIC8qIGFwcGxlLXBh
eS1hdmFpbGFiaWxpdHkuaHRtbCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvQXBwbGVQYXkubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0FwcGxlUGF5Lm1tCmluZGV4IGNlMzdmYmQwMmZjNDA2NTk4ZWVlMDhkOTlm
ODljZjFiOTI4ZDM0ZGIuLjE3OWVkNmQxNzEwNWJlYjljNGYzNTNkY2MyODk1NzE0MzUwZDc3OTQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwbGVQ
YXkubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBsZVBh
eS5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIFRFU1QoQXBwbGVQYXksIEFwcGxlUGF5QXZhaWxhYmxl
QnlEZWZhdWx0KQogICAgIFtUZXN0UHJvdG9jb2wgdW5yZWdpc3Rlcl07CiB9CiAKLVRFU1QoQXBw
bGVQYXksIEFwcGxlUGF5QXZhaWxhYmxlSW5VbnJlc3RyaWN0ZWRDbGllbnRzKQorVEVTVChBcHBs
ZVBheSwgQXBwbGVQYXlBdmFpbGFibGVJbkZyYW1lKQogewogICAgIFtUZXN0UHJvdG9jb2wgcmVn
aXN0ZXJXaXRoU2NoZW1lOkAiaHR0cHMiXTsKIApAQCAtMTE2LDcgKzExNiw3IEBAIFRFU1QoQXBw
bGVQYXksIEFwcGxlUGF5QXZhaWxhYmxlSW5VbnJlc3RyaWN0ZWRDbGllbnRzKQogICAgIFtjb25m
aWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpt
ZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEFwcGxlUGF5Il07CiAKICAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwotICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJodHRwczovL2J1bmRsZS1maWxlL2FwcGxlLXBheS1hdmFpbGFiaWxpdHktaW4taWZyYW1lLmh0
bWw/dW5yZXN0cmljdGVkIl1dXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9idW5kbGUt
ZmlsZS9hcHBsZS1wYXktYXZhaWxhYmlsaXR5LWluLWlmcmFtZS5odG1sIl1dXTsKICAgICBbd2Vi
VmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAgICAgW3dlYlZpZXcgZXZh
bHVhdGVKYXZhU2NyaXB0OkAibG9hZEFwcGxlUGF5RnJhbWUoKTsiIGNvbXBsZXRpb25IYW5kbGVy
Om5pbF07CiAKQEAgLTEyNywxMSArMTI3LDExIEBAIFRFU1QoQXBwbGVQYXksIEFwcGxlUGF5QXZh
aWxhYmxlSW5VbnJlc3RyaWN0ZWRDbGllbnRzKQogICAgIFtUZXN0UHJvdG9jb2wgdW5yZWdpc3Rl
cl07CiB9CiAKLVRFU1QoQXBwbGVQYXksIFVzZXJTY3JpcHRBdERvY3VtZW50U3RhcnREaXNhYmxl
c0FwcGxlUGF5KQorVEVTVChBcHBsZVBheSwgVXNlclNjcmlwdEF0RG9jdW1lbnRTdGFydERvZXNO
b3REaXNhYmxlQXBwbGVQYXkpCiB7CiAgICAgW1Rlc3RQcm90b2NvbCByZWdpc3RlcldpdGhTY2hl
bWU6QCJodHRwcyJdOwogCi0gICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0
QXBwbGVQYXlBdmFpbGFibGVTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhBUElz
QXZhaWxhYmxlRXhwZWN0YXRpb246Tk8gY2FuTWFrZVBheW1lbnRzRXhwZWN0YXRpb246Tk9dKTsK
KyAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RBcHBsZVBheUF2YWlsYWJs
ZVNjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aEFQSXNBdmFpbGFibGVFeHBlY3Rh
dGlvbjpZRVMgY2FuTWFrZVBheW1lbnRzRXhwZWN0YXRpb246WUVTXSk7CiAgICAgYXV0byB1c2Vy
U2NyaXB0ID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6dXNl
clNjcmlwdFNvdXJjZSBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERv
Y3VtZW50U3RhcnQgZm9yTWFpbkZyYW1lT25seTpZRVNdKTsKIAogICAgIFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9j
b25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0
aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOwpAQCAtMTQ4LDExICsxNDgs
MTEgQEAgVEVTVChBcHBsZVBheSwgVXNlclNjcmlwdEF0RG9jdW1lbnRTdGFydERpc2FibGVzQXBw
bGVQYXkpCiAgICAgW1Rlc3RQcm90b2NvbCB1bnJlZ2lzdGVyXTsKIH0KIAotVEVTVChBcHBsZVBh
eSwgVXNlclNjcmlwdEF0RG9jdW1lbnRFbmREaXNhYmxlc0FwcGxlUGF5KQorVEVTVChBcHBsZVBh
eSwgVXNlclNjcmlwdEF0RG9jdW1lbnRFbmREb2VzTm90RGlzYWJsZUFwcGxlUGF5KQogewogICAg
IFtUZXN0UHJvdG9jb2wgcmVnaXN0ZXJXaXRoU2NoZW1lOkAiaHR0cHMiXTsKICAgICAKLSAgICBh
dXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RBcHBsZVBheUF2YWlsYWJsZVNjcmlw
dE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aEFQSXNBdmFpbGFibGVFeHBlY3RhdGlvbjpO
TyBjYW5NYWtlUGF5bWVudHNFeHBlY3RhdGlvbjpOT10pOworICAgIGF1dG8gbWVzc2FnZUhhbmRs
ZXIgPSBhZG9wdE5TKFtbVGVzdEFwcGxlUGF5QXZhaWxhYmxlU2NyaXB0TWVzc2FnZUhhbmRsZXIg
YWxsb2NdIGluaXRXaXRoQVBJc0F2YWlsYWJsZUV4cGVjdGF0aW9uOllFUyBjYW5NYWtlUGF5bWVu
dHNFeHBlY3RhdGlvbjpZRVNdKTsKICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtbV0tV
c2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTp1c2VyU2NyaXB0U291cmNlIGluamVjdGlv
blRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRFbmQgZm9yTWFpbkZyYW1l
T25seTpZRVNdKTsKICAgICAKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0
aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0
UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3Vy
ZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKQEAgLTE2OSwxMSArMTY5LDExIEBAIFRFU1QoQXBwbGVQYXks
IFVzZXJTY3JpcHRBdERvY3VtZW50RW5kRGlzYWJsZXNBcHBsZVBheSkKICAgICBbVGVzdFByb3Rv
Y29sIHVucmVnaXN0ZXJdOwogfQogCi1URVNUKEFwcGxlUGF5LCBVc2VyQWdlbnRTY3JpcHRFdmFs
dWF0aW9uRGlzYWJsZXNBcHBsZVBheSkKK1RFU1QoQXBwbGVQYXksIFVzZXJBZ2VudFNjcmlwdEV2
YWx1YXRpb25Eb2VzTm90RGlzYWJsZUFwcGxlUGF5KQogewogICAgIFtUZXN0UHJvdG9jb2wgcmVn
aXN0ZXJXaXRoU2NoZW1lOkAiaHR0cHMiXTsKIAotICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBh
ZG9wdE5TKFtbVGVzdEFwcGxlUGF5QXZhaWxhYmxlU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2Nd
IGluaXRXaXRoQVBJc0F2YWlsYWJsZUV4cGVjdGF0aW9uOllFUyBjYW5NYWtlUGF5bWVudHNFeHBl
Y3RhdGlvbjpOT10pOworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdEFw
cGxlUGF5QXZhaWxhYmxlU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoQVBJc0F2
YWlsYWJsZUV4cGVjdGF0aW9uOllFUyBjYW5NYWtlUGF5bWVudHNFeHBlY3RhdGlvbjpZRVNdKTsK
IAogICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6
QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZ
RVNdOwogICAgIFtjb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRN
ZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEFwcGxlUGF5Il07
CkBAIC0xOTAsMTEgKzE5MCwxMSBAQCBURVNUKEFwcGxlUGF5LCBVc2VyQWdlbnRTY3JpcHRFdmFs
dWF0aW9uRGlzYWJsZXNBcHBsZVBheSkKICAgICBbVGVzdFByb3RvY29sIHVucmVnaXN0ZXJdOwog
fQogCi1URVNUKEFwcGxlUGF5LCBVc2VyQWdlbnRTY3JpcHRFdmFsdWF0aW9uRGlzYWJsZXNBcHBs
ZVBheUluRXhpc3RpbmdPYmplY3RzKQorVEVTVChBcHBsZVBheSwgVXNlckFnZW50U2NyaXB0RXZh
bHVhdGlvbkRvZXNOb3REaXNhYmxlQXBwbGVQYXlJbkV4aXN0aW5nT2JqZWN0cykKIHsKICAgICBb
VGVzdFByb3RvY29sIHJlZ2lzdGVyV2l0aFNjaGVtZTpAImh0dHBzIl07CiAKLSAgICBhdXRvIG1l
c3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RBcHBsZVBheUF2YWlsYWJsZVNjcmlwdE1lc3Nh
Z2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aEFQSXNBdmFpbGFibGVFeHBlY3RhdGlvbjpZRVMgY2Fu
TWFrZVBheW1lbnRzRXhwZWN0YXRpb246Tk9dKTsKKyAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0g
YWRvcHROUyhbW1Rlc3RBcHBsZVBheUF2YWlsYWJsZVNjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9j
XSBpbml0V2l0aEFQSXNBdmFpbGFibGVFeHBlY3RhdGlvbjpZRVMgY2FuTWFrZVBheW1lbnRzRXhw
ZWN0YXRpb246WUVTXSk7CiAKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0
aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0
UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3Vy
ZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKICAgICBbY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRy
b2xsZXIgYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpA
InRlc3RBcHBsZVBheSJdOwpAQCAtMjA1LDcgKzIwNSw3IEBAIFRFU1QoQXBwbGVQYXksIFVzZXJB
Z2VudFNjcmlwdEV2YWx1YXRpb25EaXNhYmxlc0FwcGxlUGF5SW5FeGlzdGluZ09iamVjdHMpCiAg
ICAgVXRpbDo6cnVuKCZpc0RvbmUpOwogCiAgICAgaXNEb25lID0gZmFsc2U7Ci0gICAgW21lc3Nh
Z2VIYW5kbGVyIHNldENhbk1ha2VQYXltZW50c0V4cGVjdGF0aW9uOk5PXTsKKyAgICBbbWVzc2Fn
ZUhhbmRsZXIgc2V0Q2FuTWFrZVBheW1lbnRzRXhwZWN0YXRpb246WUVTXTsKICAgICBbd2ViVmll
dyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gJyN0ZXN0JyIg
Y29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIAogICAgIFV0aWw6OnJ1bigmaXNEb25lKTsKQEAgLTI0
MCwxNCArMjQwLDkgQEAgc3RhdGljIHZvaWQgcnVuQWN0aXZlU2Vzc2lvblRlc3QoTlNVUkwgKnVy
bCwgQk9PTCBzaG91bGRCbG9ja1NjcmlwdHMpCiAgICAgW1Rlc3RQcm90b2NvbCB1bnJlZ2lzdGVy
XTsKIH0KIAotVEVTVChBcHBsZVBheSwgQWN0aXZlU2Vzc2lvbkJsb2Nrc1VzZXJBZ2VudFNjcmlw
dHMpCitURVNUKEFwcGxlUGF5LCBDYW5NYWtlUGF5bWVudHNEb2VzTm90QmxvY2tVc2VyQWdlbnRT
Y3JpcHRzKQogewotICAgIHJ1bkFjdGl2ZVNlc3Npb25UZXN0KFtOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cHM6Ly9idW5kbGUtZmlsZS9hcHBsZS1wYXktYWN0aXZlLXNlc3Npb24uaHRtbCJdLCBZ
RVMpOwotfQotCi1URVNUKEFwcGxlUGF5LCBDYW5NYWtlUGF5bWVudHNCbG9ja3NVc2VyQWdlbnRT
Y3JpcHRzKQotewotICAgIHJ1bkFjdGl2ZVNlc3Npb25UZXN0KFtOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cHM6Ly9idW5kbGUtZmlsZS9hcHBsZS1wYXktY2FuLW1ha2UtcGF5bWVudHMuaHRtbCJd
LCBZRVMpOworICAgIHJ1bkFjdGl2ZVNlc3Npb25UZXN0KFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
aHR0cHM6Ly9idW5kbGUtZmlsZS9hcHBsZS1wYXktY2FuLW1ha2UtcGF5bWVudHMuaHRtbCJdLCBO
Tyk7CiB9CiAKIFRFU1QoQXBwbGVQYXksIENhbk1ha2VQYXltZW50c0ZhbHNlRG9lc05vdEJsb2Nr
VXNlckFnZW50U2NyaXB0cykKQEAgLTI1NSw5ICsyNTAsOSBAQCBURVNUKEFwcGxlUGF5LCBDYW5N
YWtlUGF5bWVudHNGYWxzZURvZXNOb3RCbG9ja1VzZXJBZ2VudFNjcmlwdHMpCiAgICAgcnVuQWN0
aXZlU2Vzc2lvblRlc3QoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2J1bmRsZS1maWxl
L2FwcGxlLXBheS1jYW4tbWFrZS1wYXltZW50cy5odG1sP2ZhbHNlIl0sIE5PKTsKIH0KIAotVEVT
VChBcHBsZVBheSwgQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmRCbG9ja3NVc2VyQWdlbnRT
Y3JpcHRzKQorVEVTVChBcHBsZVBheSwgQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmREb2Vz
Tm90QmxvY2tVc2VyQWdlbnRTY3JpcHRzKQogewotICAgIHJ1bkFjdGl2ZVNlc3Npb25UZXN0KFtO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9idW5kbGUtZmlsZS9hcHBsZS1wYXktY2FuLW1h
a2UtcGF5bWVudHMtd2l0aC1hY3RpdmUtY2FyZC5odG1sIl0sIFlFUyk7CisgICAgcnVuQWN0aXZl
U2Vzc2lvblRlc3QoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2J1bmRsZS1maWxlL2Fw
cGxlLXBheS1jYW4tbWFrZS1wYXltZW50cy13aXRoLWFjdGl2ZS1jYXJkLmh0bWwiXSwgTk8pOwog
fQogCiBURVNUKEFwcGxlUGF5LCBDYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZEZhbHNlRG9l
c05vdEJsb2NrVXNlckFnZW50U2NyaXB0cykKQEAgLTI2NSw5ICsyNjAsOSBAQCBURVNUKEFwcGxl
UGF5LCBDYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZEZhbHNlRG9lc05vdEJsb2NrVXNlckFn
ZW50U2NyaXB0cykKICAgICBydW5BY3RpdmVTZXNzaW9uVGVzdChbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImh0dHBzOi8vYnVuZGxlLWZpbGUvYXBwbGUtcGF5LWNhbi1tYWtlLXBheW1lbnRzLXdpdGgt
YWN0aXZlLWNhcmQuaHRtbD9mYWxzZSJdLCBOTyk7CiB9CiAKLVRFU1QoQXBwbGVQYXksIENhbk1h
a2VQYXltZW50QmxvY2tzVXNlckFnZW50U2NyaXB0cykKK1RFU1QoQXBwbGVQYXksIENhbk1ha2VQ
YXltZW50RG9lc05vdEJsb2NrVXNlckFnZW50U2NyaXB0cykKIHsKLSAgICBydW5BY3RpdmVTZXNz
aW9uVGVzdChbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vYnVuZGxlLWZpbGUvYXBwbGUt
cGF5LWNhbi1tYWtlLXBheW1lbnQuaHRtbCJdLCBZRVMpOworICAgIHJ1bkFjdGl2ZVNlc3Npb25U
ZXN0KFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9idW5kbGUtZmlsZS9hcHBsZS1wYXkt
Y2FuLW1ha2UtcGF5bWVudC5odG1sIl0sIE5PKTsKIH0KIAogVEVTVChBcHBsZVBheSwgQ2FuTWFr
ZVBheW1lbnRGYWxzZURvZXNOb3RCbG9ja1VzZXJBZ2VudFNjcmlwdHMpCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1hY3RpdmUtc2Vz
c2lvbi5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1w
YXktYWN0aXZlLXNlc3Npb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY5
NjYwYzU1OTU4NWMzYzIxZTJiZjAxMmU0YzhiNWJhMjdiZGI1Zi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL2FwcGxlLXBheS1hY3RpdmUtc2Vzc2lvbi5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsNyArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxib2R5PgotPHNjcmlwdD4KLSAgICBpbnRl
cm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5zdXBwb3J0c1VucmVzdHJpY3RlZEFwcGxlUGF5
ID0gZmFsc2U7Ci0gICAgaW50ZXJuYWxzLnNldEFwcGxlUGF5SXNBY3RpdmUoKTsKLSAgICB3aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0QXBwbGVQYXkucG9zdE1lc3NhZ2UoImRvbmUi
KTsKLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9hcHBsZS1wYXktYXZhaWxhYmlsaXR5LWV4aXN0aW5nLW9iamVjdC5odG1sIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXktYXZhaWxhYmlsaXR5
LWV4aXN0aW5nLW9iamVjdC5odG1sCmluZGV4IGUzNTkyMDdiOTU3M2EzOTdkYzRlZTkyOWMxYjBj
NTllMjUzN2YyYWYuLjY1YTgwNzdmMjRhYjU0YjY2YzdmZDRmZTRkZDQ3NjU0NmExYzU5ZmMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwbGUtcGF5
LWF2YWlsYWJpbGl0eS1leGlzdGluZy1vYmplY3QuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1hdmFpbGFiaWxpdHktZXhpc3Rpbmctb2Jq
ZWN0Lmh0bWwKQEAgLTMsMzAgKzMsMjYgQEAKIDxzY3JpcHQgc3JjPSJhcHBsZS1wYXkuanMiPjwv
c2NyaXB0PgogPHNjcmlwdD4KICAgICBjb25zdCBldmVudExpc3RlbmVyID0gYXN5bmMgKCkgPT4g
ewotICAgICAgICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5zdXBwb3J0c1VucmVz
dHJpY3RlZEFwcGxlUGF5ID0gZmFsc2U7Ci0KICAgICAgICAgY29uc3QgYXBwbGVQYXlTZXNzaW9u
QXZhaWxhYmxlID0gISF3aW5kb3cuQXBwbGVQYXlTZXNzaW9uOwogICAgICAgICBjb25zdCBwYXlt
ZW50UmVxdWVzdEF2YWlsYWJsZSA9ICEhd2luZG93LlBheW1lbnRSZXF1ZXN0OwotICAgICAgICBj
b25zdCBzdXBwb3J0c1ZlcnNpb24gPSBBcHBsZVBheVNlc3Npb24uc3VwcG9ydHNWZXJzaW9uKDEp
OwotCi0gICAgICAgIGlmICghd2luZG93LndrUGF5bWVudFJlcXVlc3QpIHsKLSAgICAgICAgICAg
IHdrUGF5bWVudFJlcXVlc3QgPSBuZXcgUGF5bWVudFJlcXVlc3QoW2FwcGxlUGF5TWV0aG9kKCld
LCBhcHBsZVBheURldGFpbHMpOwotCi0gICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VI
YW5kbGVycy50ZXN0QXBwbGVQYXkucG9zdE1lc3NhZ2UoewotICAgICAgICAgICAgICAgIGFwcGxl
UGF5U2Vzc2lvbkF2YWlsYWJsZSwKLSAgICAgICAgICAgICAgICBwYXltZW50UmVxdWVzdEF2YWls
YWJsZSwKLSAgICAgICAgICAgICAgICBzdXBwb3J0c1ZlcnNpb24sCi0gICAgICAgICAgICB9KTsK
LQorICAgICAgICBpZiAoIWFwcGxlUGF5U2Vzc2lvbkF2YWlsYWJsZSB8fCAhcGF5bWVudFJlcXVl
c3RBdmFpbGFibGUpIHsKKyAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
LnRlc3RBcHBsZVBheS5wb3N0TWVzc2FnZSh7IGFwcGxlUGF5U2Vzc2lvbkF2YWlsYWJsZSwgcGF5
bWVudFJlcXVlc3RBdmFpbGFibGUgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAorICAgICAgICBjb25zdCBzdXBwb3J0c1ZlcnNpb24gPSBBcHBsZVBheVNlc3Npb24uc3VwcG9y
dHNWZXJzaW9uKDEpOworICAgICAgICBjb25zdCBjYW5NYWtlUGF5bWVudHMgPSBBcHBsZVBheVNl
c3Npb24uY2FuTWFrZVBheW1lbnRzKCk7CisgICAgICAgIGNvbnN0IGNhbk1ha2VQYXltZW50c1dp
dGhBY3RpdmVDYXJkID0gYXdhaXQgQXBwbGVQYXlTZXNzaW9uLmNhbk1ha2VQYXltZW50c1dpdGhB
Y3RpdmVDYXJkKCcnKTsKKworICAgICAgICB3aW5kb3cud2tQYXltZW50UmVxdWVzdCA/Pz0gbmV3
IFBheW1lbnRSZXF1ZXN0KFthcHBsZVBheU1ldGhvZCgpXSwgYXBwbGVQYXlEZXRhaWxzKTsKICAg
ICAgICAgY29uc3QgY2FuTWFrZVBheW1lbnQgPSBhd2FpdCB3a1BheW1lbnRSZXF1ZXN0LmNhbk1h
a2VQYXltZW50KCk7CiAKICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVz
dEFwcGxlUGF5LnBvc3RNZXNzYWdlKHsKICAgICAgICAgICAgIGFwcGxlUGF5U2Vzc2lvbkF2YWls
YWJsZSwKICAgICAgICAgICAgIHBheW1lbnRSZXF1ZXN0QXZhaWxhYmxlLAogICAgICAgICAgICAg
c3VwcG9ydHNWZXJzaW9uLAorICAgICAgICAgICAgY2FuTWFrZVBheW1lbnRzLAorICAgICAgICAg
ICAgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQsCiAgICAgICAgICAgICBjYW5NYWtlUGF5
bWVudCwKICAgICAgICAgfSk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS1pbi1pZnJhbWUuaHRt
bCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwbGUtcGF5LWF2YWls
YWJpbGl0eS1pbi1pZnJhbWUuaHRtbAppbmRleCBmOTBhNmY2YzczNTNiZmVjODc1MTJkYTM5OGZl
MWVjZGQ4MjhlN2M2Li45YmM4NzQwYTE4ZjUwNTlmMThkZDllM2VmY2QwOWVmY2JmYTQ1ODc3IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBh
eS1hdmFpbGFiaWxpdHktaW4taWZyYW1lLmh0bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXktYXZhaWxhYmlsaXR5LWluLWlmcmFtZS5odG1sCkBA
IC0xLDcgKzEsNiBAQAogPCFET0NUWVBFIGh0bWw+CiA8Ym9keT4KIDxzY3JpcHQ+Ci0gICAgaW50
ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3Iuc3VwcG9ydHNVbnJlc3RyaWN0ZWRBcHBsZVBh
eSA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggPT09ICI/dW5yZXN0cmljdGVkIiA/IHRydWUgOiBm
YWxzZTsKICAgICBsb2FkQXBwbGVQYXlGcmFtZSA9ICgpID0+IHsKICAgICAgICAgY29uc3QgaWZy
YW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CiAgICAgICAgIGlmcmFtZS5z
cmMgPSAnYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS5odG1sJyArIHdpbmRvdy5sb2NhdGlvbi5zZWFy
Y2g7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2Fw
cGxlLXBheS1hdmFpbGFiaWxpdHkuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS5odG1sCmluZGV4IDE4MmM2MmZjYTc0NGUw
ZWMzOGM4OWY2YTA0MjM4YzRkNzhhNTRmM2UuLmU4YjhjMzUwMzNjMzdiN2MzYzY4NmNhY2VkMTM5
YjVhMDNkZjQxZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS5odG1sCkBAIC0zLDgg
KzMsNiBAQAogPHNjcmlwdCBzcmM9ImFwcGxlLXBheS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0Pgog
ICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgKCkgPT4gewotICAgICAg
ICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5zdXBwb3J0c1VucmVzdHJpY3RlZEFw
cGxlUGF5ID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PT0gIj91bnJlc3RyaWN0ZWQiID8gdHJ1
ZSA6IGZhbHNlOwotCiAgICAgICAgIGNvbnN0IGFwcGxlUGF5U2Vzc2lvbkF2YWlsYWJsZSA9ICEh
d2luZG93LkFwcGxlUGF5U2Vzc2lvbjsKICAgICAgICAgY29uc3QgcGF5bWVudFJlcXVlc3RBdmFp
bGFibGUgPSAhIXdpbmRvdy5QYXltZW50UmVxdWVzdDsKICAgICAgICAgaWYgKCFhcHBsZVBheVNl
c3Npb25BdmFpbGFibGUgfHwgIXBheW1lbnRSZXF1ZXN0QXZhaWxhYmxlKSB7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1jYW4tbWFr
ZS1wYXltZW50Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2Fw
cGxlLXBheS1jYW4tbWFrZS1wYXltZW50Lmh0bWwKaW5kZXggOTg5MzAyMWIzZGRmMTM1NTQxNmQy
YjcwZTFjZmZjYTM2MTljYTRjYS4uNGE4NzQ2MWYzZWIwNDliMDM1NTdmNzA3NTQ2NDg5MzI3OGI3
MGQ4YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9h
cHBsZS1wYXktY2FuLW1ha2UtcGF5bWVudC5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvYXBwbGUtcGF5LWNhbi1tYWtlLXBheW1lbnQuaHRtbApAQCAtMiw3
ICsyLDYgQEAKIDxib2R5PgogPHNjcmlwdCBzcmM9ImFwcGxlLXBheS5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0PgotICAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLnN1cHBvcnRzVW5y
ZXN0cmljdGVkQXBwbGVQYXkgPSBmYWxzZTsKICAgICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29y
ZGluYXRvci5zZXRDYW5NYWtlUGF5bWVudHMod2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PT0gIj9m
YWxzZSIgPyBmYWxzZSA6IHRydWUpOwogCiAgICAgY29uc3QgcGF5bWVudFJlcXVlc3QgPSBuZXcg
UGF5bWVudFJlcXVlc3QoW2FwcGxlUGF5TWV0aG9kKCldLCBhcHBsZVBheURldGFpbHMpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXkt
Y2FuLW1ha2UtcGF5bWVudHMtd2l0aC1hY3RpdmUtY2FyZC5odG1sIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXktY2FuLW1ha2UtcGF5bWVudHMtd2l0aC1h
Y3RpdmUtY2FyZC5odG1sCmluZGV4IGM0N2MzZmFjNWYzYjU1YzU1ZmI0OTlmY2Y2OGJjYTc3N2U2
NjJkYjcuLjNhMjRmNDY3ZTRjNGY2MTk5ZmM5ZTIxNzUwNWRlOGU0MTBhYmYxNDkgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwbGUtcGF5LWNhbi1t
YWtlLXBheW1lbnRzLXdpdGgtYWN0aXZlLWNhcmQuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1jYW4tbWFrZS1wYXltZW50cy13aXRoLWFj
dGl2ZS1jYXJkLmh0bWwKQEAgLTEsNyArMSw2IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxib2R5Pgog
PHNjcmlwdD4KLSAgICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5zdXBwb3J0c1Vu
cmVzdHJpY3RlZEFwcGxlUGF5ID0gZmFsc2U7CiAgICAgaW50ZXJuYWxzLm1vY2tQYXltZW50Q29v
cmRpbmF0b3Iuc2V0Q2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQod2luZG93LmxvY2F0aW9u
LnNlYXJjaCA9PT0gIj9mYWxzZSIgPyBmYWxzZSA6IHRydWUpOwogICAgIEFwcGxlUGF5U2Vzc2lv
bi5jYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCgiIikudGhlbigoKSA9PiB7CiAgICAgICAg
IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RBcHBsZVBheS5wb3N0TWVzc2FnZSgi
ZG9uZSIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9hcHBsZS1wYXktY2FuLW1ha2UtcGF5bWVudHMuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvYXBwbGUtcGF5LWNhbi1tYWtlLXBheW1lbnRzLmh0bWwKaW5kZXgg
MmFlYTFkOGI0MmE4ZWI0YTg3MDVlNjhlMDc3MWFiNjM2ZjY3OTVhNy4uNzNlYmMwYmIzN2JhZTY3
YzNjYWE0ZDcyMzRkYzhhY2I3NGY1ZDc1YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXktY2FuLW1ha2UtcGF5bWVudHMuaHRtbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1jYW4tbWFr
ZS1wYXltZW50cy5odG1sCkBAIC0xLDcgKzEsNiBAQAogPCFET0NUWVBFIGh0bWw+CiA8Ym9keT4K
IDxzY3JpcHQ+Ci0gICAgaW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3Iuc3VwcG9ydHNV
bnJlc3RyaWN0ZWRBcHBsZVBheSA9IGZhbHNlOwogICAgIGludGVybmFscy5tb2NrUGF5bWVudENv
b3JkaW5hdG9yLnNldENhbk1ha2VQYXltZW50cyh3aW5kb3cubG9jYXRpb24uc2VhcmNoID09PSAi
P2ZhbHNlIiA/IGZhbHNlIDogdHJ1ZSk7CiAgICAgQXBwbGVQYXlTZXNzaW9uLmNhbk1ha2VQYXlt
ZW50cygpOwogICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RBcHBsZVBheS5w
b3N0TWVzc2FnZSgiZG9uZSIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451312</attachid>
            <date>2022-02-08 15:15:18 -0800</date>
            <delta_ts>2022-02-10 11:17:05 -0800</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>bug-236254-20220208161517.patch</filename>
            <type>text/plain</type>
            <size>56704</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmYTFiYWM2YTgzZDUzMjA4NDY3Nzk1ZDE4MWM1ZDQ4ZmE3Zjc0ZjU3Li5k
NjJhMTRkOWUzMmY0YzBkZGQyM2Y2YWEwODUxMDNlNzA1NzJkZjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNzYgQEAKKzIwMjItMDItMDggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFBlcm1pdCBzaW11bHRhbmVvdXMgQXBwbGUgUGF5IGFuZCBzY3JpcHQgaW5q
ZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYyNTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3NzM2NzI3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBBcHBsZVBheS5BcHBsZVBh
eUF2YWlsYWJsZUJ5RGVmYXVsdAorICAgICAgICAgICAgICAgQXBwbGVQYXkuQXBwbGVQYXlBdmFp
bGFibGVJbkZyYW1lCisgICAgICAgICAgICAgICBBcHBsZVBheS5Vc2VyU2NyaXB0QXREb2N1bWVu
dFN0YXJ0RG9lc05vdERpc2FibGVBcHBsZVBheQorICAgICAgICAgICAgICAgQXBwbGVQYXkuVXNl
clNjcmlwdEF0RG9jdW1lbnRFbmREb2VzTm90RGlzYWJsZUFwcGxlUGF5CisgICAgICAgICAgICAg
ICBBcHBsZVBheS5Vc2VyQWdlbnRTY3JpcHRFdmFsdWF0aW9uRG9lc05vdERpc2FibGVBcHBsZVBh
eQorICAgICAgICAgICAgICAgQXBwbGVQYXkuVXNlckFnZW50U2NyaXB0RXZhbHVhdGlvbkRvZXNO
b3REaXNhYmxlQXBwbGVQYXlJbkV4aXN0aW5nT2JqZWN0cworICAgICAgICAgICAgICAgQXBwbGVQ
YXkuQ2FuTWFrZVBheW1lbnRzRG9lc05vdEJsb2NrVXNlckFnZW50U2NyaXB0cworICAgICAgICAg
ICAgICAgQXBwbGVQYXkuQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmREb2VzTm90QmxvY2tV
c2VyQWdlbnRTY3JpcHRzCisgICAgICAgICAgICAgICBBcHBsZVBheS5DYW5NYWtlUGF5bWVudERv
ZXNOb3RCbG9ja1VzZXJBZ2VudFNjcmlwdHMKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
ZW5zdXJlUGx1Z0luc0luamVjdGVkU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpoYXNFdmFsdWF0ZWRVc2VyQWdlbnRTY3JpcHRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpzZXRIYXNFdmFsdWF0ZWRVc2VyQWdlbnRTY3JpcHRzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppc0FwcGxlUGF5QWN0aXZlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRBcHBsZVBheUlzQWN0
aXZlKTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIGxvZ2ljIHRoYXQgdHJhY2tzIHNjcmlwdCBp
bmplY3Rpb24gYWN0aXZpdHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlQXN5bmNo
cm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNlckFn
ZW50U2NyaXB0cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVBheW1lbnRDb29yZGluYXRvckNsaWVudDo6
c3VwcG9ydHNVbnJlc3RyaWN0ZWRBcHBsZVBheSk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9G
cmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVk
aWF0ZWx5KToKKyAgICAgICAgUmVtb3ZlIGxvZ2ljIHRoYXQgZGlzYWJsZXMgc2NyaXB0IGluamVj
dGlvbiBhZnRlciBhbiBBcHBsZSBQYXkgc2Vzc2lvbiBpcyBzdGFydGVkLgorCisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXlt
ZW50Q29vcmRpbmF0b3I6OmNhbk1ha2VQYXltZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpQYXlt
ZW50Q29vcmRpbmF0b3I6OmNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKToKKyAgICAgICAg
KFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvcjo6YmVnaW5QYXltZW50U2Vzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0b3I6OnNob3VsZEVuYWJsZUFwcGxlUGF5QVBJ
cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0b3I6
OnNldEFwcGxlUGF5SXNBY3RpdmVJZkFsbG93ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yOjpzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGll
bnQ6OnVzZXJBZ2VudFNjcmlwdHNCbG9ja2VkRXJyb3JNZXNzYWdlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgUmVtb3ZlIGxvZ2ljIHRoYXQgdHJhY2tzIEFwcGxlIFBheSBhY3Rpdml0eS4KKwor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50U2Vz
c2lvbjo6ZW5hYmxlZEZvckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvcGF5
bWVudHJlcXVlc3QvUGF5bWVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVu
dEhhbmRsZXI6OmVuYWJsZWRGb3JDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0Lmg6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVx
dWVzdDo6ZW5hYmxlZEZvckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgbG9naWMg
dGhhdCBkaXNhYmxlcyBgQXBwbGVQYXlTZXNzaW9uYC9gUGF5bWVudFJlcXVlc3RgIGFmdGVyIHNj
cmlwdCBpbmplY3Rpb24uCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEFwcGxlUGF5SXNBY3RpdmUpOiBE
ZWxldGVkLgorICAgICAgICAqIHRlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5pZGw6Cisg
ICAgICAgICogdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpzdXBwb3J0c1VucmVzdHJpY3RlZEFwcGxlUGF5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tQYXltZW50Q29vcmRpbmF0b3I6OnNl
dFN1cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXkpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUg
dGVzdGluZyBzdXBwb3J0IHNpbmNlIGFsbCB1c2VzIG9mIHRoZXNlIGhhdmUgYmVlbiByZW1vdmVk
IChhYm92ZSkuCisKIDIwMjItMDItMDggIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgog
CiAgICAgICAgIENvbnZlcnNpb24gdG8gYSBjb2xvciBzcGFjZSB3aXRoIGEgc21hbGxlciBnYW11
dCBzaG91bGQgcGVyZm9ybSBnYW11dCBtYXBwaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI5MzZkYzVmMjBmMWJj
N2E4OTQyODVkN2E0MDhkOWQwODc0MDQ4YzYuLjI3ZDdhYTg3Zjc0OGVmZWJhYWUxZTllMzk4MDQ4
OGNhZGI5YWNkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDItMDggIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFBlcm1pdCBzaW11bHRhbmVv
dXMgQXBwbGUgUGF5IGFuZCBzY3JpcHQgaW5qZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYyNTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
Lzg3NzM2NzI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvcjo6c3VwcG9ydHNVbnJlc3RyaWN0ZWRB
cHBsZVBheSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29y
ZGluYXRvcjo6dXNlckFnZW50U2NyaXB0c0Jsb2NrZWRFcnJvck1lc3NhZ2UgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICBSZW1vdmUgbG9naWMgdGhhdCB0cmFja3MgQXBwbGUgUGF5IGFjdGl2aXR5
LgorCiAyMDIyLTAyLTA4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBMaWJXZWJSVENDb2RlY3MgU2hhcmVkVmlkZW9GcmFtZVdyaXRlcnMgY2FuIGRlYWRsb2Nr
IGluIGNhc2Ugb2YgR1BVUHJvY2VzcyBjcmFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IGI2N2RiY2NiMzE2NmRlNjczODE4MDU4N2UyODgxOTM4MWU1ZWQ4ZDYuLjUzYWVhZmU2NTY4
NGZmNGRhYWZiOTllNmIyYzJkNGI1MmFhNDBlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMi0wOCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgUGVybWl0IHNpbXVsdGFuZW91cyBBcHBsZSBQYXkgYW5kIHNj
cmlwdCBpbmplY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNjI1NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc3MzY3Mjc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW06CisgICAgICAgIChXZWJQYXltZW50Q29v
cmRpbmF0b3JDbGllbnQ6OnN1cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXkgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICBSZW1vdmUgbG9naWMgdGhhdCB0cmFja3MgQXBwbGUgUGF5IGFjdGl2aXR5
LgorCiAyMDIyLTAyLTA2ICBUeWxlciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CiAKICAg
ICAgICAgQVg6IEFkZCBpbnRlcm5hbC1vbmx5IGZsYWcgdG8gZW5hYmxlIFdJUCBkaXNwbGF5OiBj
b250ZW50cyBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2Vzc2lvbi5jcHAKaW5kZXggMjBmOTJiYTI1M2JlODQ5OTc4N2NkMjFlMGQyNWVi
MDhkYWJlN2Q5ZC4uNmNiZmNmMDc5NzUwMWE5OTYyOWZjYzY5MzZiNmYwNTBmMGNmYzg5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9u
LmNwcApAQCAtMzY5LDcgKzM2OSw3IEBAIEV4Y2VwdGlvbk9yPGJvb2w+IEFwcGxlUGF5U2Vzc2lv
bjo6Y2FuTWFrZVBheW1lbnRzKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAoIXBhZ2UpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIAotICAgIHJl
dHVybiBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jYW5NYWtlUGF5bWVudHMoZG9jdW1lbnQp
OworICAgIHJldHVybiBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jYW5NYWtlUGF5bWVudHMo
KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlTZXNzaW9uOjpjYW5NYWtlUGF5bWVu
dHNXaXRoQWN0aXZlQ2FyZChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWVyY2hh
bnRJZGVudGlmaWVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBhc3NlZFByb21pc2UpCkBAIC0z
ODUsNyArMzg1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlTZXNzaW9uOjpjYW5NYWtl
UGF5bWVudHNXaXRoQWN0aXZlQ2FyZChEb2N1bWVudCYgZG9jdW0KICAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIAogICAgICAgICBhdXRvJiBwYXlt
ZW50Q29vcmRpbmF0b3IgPSBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKTsKLSAgICAgICAgYm9v
bCBjYW5NYWtlUGF5bWVudHMgPSBwYXltZW50Q29vcmRpbmF0b3IuY2FuTWFrZVBheW1lbnRzKGRv
Y3VtZW50KTsKKyAgICAgICAgYm9vbCBjYW5NYWtlUGF5bWVudHMgPSBwYXltZW50Q29vcmRpbmF0
b3IuY2FuTWFrZVBheW1lbnRzKCk7CiAKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtwcm9taXNlLCBjYW5NYWtlUGF5bWVudHNdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm9t
aXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KGNhbk1ha2VQYXltZW50cyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5pZGwKaW5kZXggZjI3
OTg3MDczYTBmNzM1MmIzNGNkNjVjOGQwNWNkMTBjNjI2M2M4Ni4uM2U2MTIyNGJhZGRjOTQ0ZTU3
OGI4ZWJlZmVhOGRlZTg0MjhhY2MwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmlkbApAQCAtMjcsNyArMjcsNiBAQAogICAgIEFj
dGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCiAgICAgRW5hYmxlZEJ5
U2V0dGluZz1BcHBsZVBheUVuYWJsZWQsCi0gICAgRW5hYmxlZEZvckNvbnRleHQsCiAgICAgRXhw
b3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIEFwcGxlUGF5U2Vzc2lvbiA6IEV2ZW50VGFyZ2V0IHsK
ICAgICBbQ2FsbFdpdGg9Q3VycmVudERvY3VtZW50XSBjb25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25n
IHZlcnNpb24sIEFwcGxlUGF5UGF5bWVudFJlcXVlc3QgcGF5bWVudFJlcXVlc3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3Iu
Y3BwCmluZGV4IGU5OTVhMmIxZTQ1NmNkOWZkMzlkMjQ4MDk3NTBmNjBiYTcxZmMzYWYuLjFhMzI3
YTk0YjBiNzFkNGVjNzVlYWNjOGQ0YWQ3OGE5MWI5ZmY2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKQEAgLTY2
LDE4ICs2NiwxMSBAQCBib29sIFBheW1lbnRDb29yZGluYXRvcjo6c3VwcG9ydHNWZXJzaW9uKERv
Y3VtZW50JiwgdW5zaWduZWQgdmVyc2lvbikgY29uc3QKICAgICByZXR1cm4gc3VwcG9ydHNWZXJz
aW9uOwogfQogCi1ib29sIFBheW1lbnRDb29yZGluYXRvcjo6Y2FuTWFrZVBheW1lbnRzKERvY3Vt
ZW50JiBkb2N1bWVudCkKK2Jvb2wgUGF5bWVudENvb3JkaW5hdG9yOjpjYW5NYWtlUGF5bWVudHMo
KQogewogICAgIGF1dG8gY2FuTWFrZVBheW1lbnRzID0gbV9jbGllbnQuY2FuTWFrZVBheW1lbnRz
KCk7CiAgICAgUEFZTUVOVF9DT09SRElOQVRPUl9SRUxFQVNFX0xPRygiY2FuTWFrZVBheW1lbnRz
KCkgLT4gJWQiLCBjYW5NYWtlUGF5bWVudHMpOwotCi0gICAgaWYgKCFjYW5NYWtlUGF5bWVudHMp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghc2V0QXBwbGVQYXlJc0FjdGl2ZUlm
QWxsb3dlZChkb2N1bWVudCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiBjYW5NYWtlUGF5bWVudHM7CiB9CiAKIHZvaWQgUGF5bWVudENvb3Jk
aW5hdG9yOjpjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtOTEsNyArODQsNyBAQCB2b2lkIFBheW1lbnRDb29yZGlu
YXRvcjo6Y2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdAogICAgICAgICBpZiAoIWNhbk1ha2VQYXltZW50cykKICAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAKLSAgICAgICAgaWYgKCFkb2N1bWVudCB8fCAhc2V0
QXBwbGVQYXlJc0FjdGl2ZUlmQWxsb3dlZCgqZG9jdW1lbnQpKQorICAgICAgICBpZiAoIWRvY3Vt
ZW50KQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIAogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKQEAgLTEwOCw5ICsxMDEsNiBAQCBib29sIFBh
eW1lbnRDb29yZGluYXRvcjo6YmVnaW5QYXltZW50U2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQs
IFBheW1lbnRTZXNzaW9uJgogewogICAgIEFTU0VSVCghbV9hY3RpdmVTZXNzaW9uKTsKIAotICAg
IGlmICghc2V0QXBwbGVQYXlJc0FjdGl2ZUlmQWxsb3dlZChkb2N1bWVudCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQogICAgIFZlY3RvcjxVUkw+IGxpbmtJY29uVVJMczsKICAgICBmb3IgKGF1
dG8mIGljb24gOiBMaW5rSWNvbkNvbGxlY3RvciB7IGRvY3VtZW50IH0uaWNvbnNPZlR5cGVzKHsg
TGlua0ljb25UeXBlOjpUb3VjaEljb24sIExpbmtJY29uVHlwZTo6VG91Y2hQcmVjb21wb3NlZElj
b24gfSkpCiAgICAgICAgIGxpbmtJY29uVVJMcy5hcHBlbmQoaWNvbi51cmwpOwpAQCAtMjg1LDQ5
ICsyNzUsNiBAQCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gUGF5bWVudENvb3JkaW5hdG9yOjp2YWxp
ZGF0ZWRQYXltZW50TmV0d29yayhEb2N1bWVudCYsIHVucwogICAgIHJldHVybiBtX2NsaWVudC52
YWxpZGF0ZWRQYXltZW50TmV0d29yayhwYXltZW50TmV0d29yayk7CiB9CiAKLWJvb2wgUGF5bWVu
dENvb3JkaW5hdG9yOjpzaG91bGRFbmFibGVBcHBsZVBheUFQSXMoRG9jdW1lbnQmIGRvY3VtZW50
KSBjb25zdAotewotICAgIGlmIChtX2NsaWVudC5zdXBwb3J0c1VucmVzdHJpY3RlZEFwcGxlUGF5
KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgYm9vbCBzaG91bGRFbmFibGVBUElzID0g
dHJ1ZTsKLSAgICBkb2N1bWVudC5wYWdlKCktPnVzZXJDb250ZW50UHJvdmlkZXIoKS5mb3JFYWNo
VXNlclNjcmlwdChbJl0oRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgVXNlclNjcmlwdCYpIHsKLSAg
ICAgICAgc2hvdWxkRW5hYmxlQVBJcyA9IGZhbHNlOwotICAgIH0pOwotCi0gICAgaWYgKCFzaG91
bGRFbmFibGVBUElzKQotICAgICAgICBQQVlNRU5UX0NPT1JESU5BVE9SX1JFTEVBU0VfTE9HKCJz
aG91bGRFbmFibGVBcHBsZVBheUFQSXMoKSAtPiBmYWxzZSAodXNlciBzY3JpcHRzKSIpOwotCi0g
ICAgcmV0dXJuIHNob3VsZEVuYWJsZUFQSXM7Ci19Ci0KLWJvb2wgUGF5bWVudENvb3JkaW5hdG9y
OjpzZXRBcHBsZVBheUlzQWN0aXZlSWZBbGxvd2VkKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QK
LXsKLSAgICBhdXRvIGhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMgPSBkb2N1bWVudC5oYXNF
dmFsdWF0ZWRVc2VyQWdlbnRTY3JpcHRzKCk7Ci0gICAgYXV0byBpc1J1bm5pbmdVc2VyU2NyaXB0
cyA9IGRvY3VtZW50LmlzUnVubmluZ1VzZXJTY3JpcHRzKCk7Ci0gICAgYXV0byBzdXBwb3J0c1Vu
cmVzdHJpY3RlZEFwcGxlUGF5ID0gbV9jbGllbnQuc3VwcG9ydHNVbnJlc3RyaWN0ZWRBcHBsZVBh
eSgpOwotCi0gICAgaWYgKCFzdXBwb3J0c1VucmVzdHJpY3RlZEFwcGxlUGF5ICYmIChoYXNFdmFs
dWF0ZWRVc2VyQWdlbnRTY3JpcHRzIHx8IGlzUnVubmluZ1VzZXJTY3JpcHRzKSkgewotICAgICAg
ICBBU1NFUlQoIWRvY3VtZW50LmlzQXBwbGVQYXlBY3RpdmUoKSk7Ci0gICAgICAgIFBBWU1FTlRf
Q09PUkRJTkFUT1JfUkVMRUFTRV9MT0coInNldEFwcGxlUGF5SXNBY3RpdmVJZkFsbG93ZWQoKSAt
PiBmYWxzZSAoaGFzRXZhbHVhdGVkVXNlckFnZW50U2NyaXB0czogJWQsIGlzUnVubmluZ1VzZXJT
Y3JpcHRzOiAlZCkiLCBoYXNFdmFsdWF0ZWRVc2VyQWdlbnRTY3JpcHRzLCBpc1J1bm5pbmdVc2Vy
U2NyaXB0cyk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBkb2N1bWVudC5z
ZXRBcHBsZVBheUlzQWN0aXZlKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUV4cGVjdGVkPHZv
aWQsIEV4Y2VwdGlvbkRldGFpbHM+IFBheW1lbnRDb29yZGluYXRvcjo6c2hvdWxkQWxsb3dVc2Vy
QWdlbnRTY3JpcHRzKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKLXsKLSAgICBpZiAobV9jbGll
bnQuc3VwcG9ydHNVbnJlc3RyaWN0ZWRBcHBsZVBheSgpIHx8ICFkb2N1bWVudC5pc0FwcGxlUGF5
QWN0aXZlKCkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBBU1NFUlQoIWRvY3VtZW50Lmhh
c0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMoKSk7Ci0gICAgQVNTRVJUKCFkb2N1bWVudC5pc1J1
bm5pbmdVc2VyU2NyaXB0cygpKTsKLSAgICBQQVlNRU5UX0NPT1JESU5BVE9SX1JFTEVBU0VfTE9H
X0VSUk9SKCJzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoKSAtPiBmYWxzZSAoYWN0aXZlIHNl
c3Npb24pIik7Ci0gICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyBt
X2NsaWVudC51c2VyQWdlbnRTY3JpcHRzQmxvY2tlZEVycm9yTWVzc2FnZSgpIH0pOwotfQotCiB2
b2lkIFBheW1lbnRDb29yZGluYXRvcjo6Z2V0U2V0dXBGZWF0dXJlcyhjb25zdCBBcHBsZVBheVNl
dHVwQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFJlZjxBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIFBBWU1FTlRfQ09PUkRJTkFUT1JfUkVMRUFTRV9MT0co
ImdldFNldHVwRmVhdHVyZXMoKSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggMzgyZWZiNjM5ZjljZDM5Nzc0YmEw
ZTliNDczODlmNzAxNTE5ZGYzNC4uNDJiNjUyMTQ3ZWFlMDQ1YmY0ZjUyMTUyZWQ1MDAzMDYwMTcy
NTM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1l
bnRDb29yZGluYXRvci5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBQYXltZW50Q29v
cmRpbmF0b3JDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKICAgICBib29s
IHN1cHBvcnRzVmVyc2lvbihEb2N1bWVudCYsIHVuc2lnbmVkIHZlcnNpb24pIGNvbnN0OwotICAg
IGJvb2wgY2FuTWFrZVBheW1lbnRzKERvY3VtZW50Jik7CisgICAgYm9vbCBjYW5NYWtlUGF5bWVu
dHMoKTsKICAgICB2b2lkIGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKERvY3VtZW50Jiwg
Y29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChEb2N1bWVudCYs
IGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKTsKIApAQCAtOTEsMTYgKzkxLDExIEBAIHB1YmxpYzoKIAogICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB2YWxpZGF0ZWRQYXltZW50TmV0d29yayhEb2N1bWVudCYs
IHVuc2lnbmVkIHZlcnNpb24sIGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCi0gICAgYm9vbCBzaG91
bGRFbmFibGVBcHBsZVBheUFQSXMoRG9jdW1lbnQmKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBFeHBlY3RlZDx2b2lkLCBFeGNlcHRpb25EZXRhaWxzPiBzaG91bGRBbGxvd1VzZXJBZ2VudFNj
cmlwdHMoRG9jdW1lbnQmKSBjb25zdDsKLQogICAgIHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhjb25z
dCBBcHBsZVBheVNldHVwQ29uZmlndXJhdGlvbiYsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFJlZjxBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYpPiYmKTsKICAgICB2
b2lkIGJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBBcHBsZVBheVNldHVwQ29uZmlndXJhdGlvbiYs
IGNvbnN0IFVSTCYsIFZlY3RvcjxSZWZQdHI8QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGVuZEFwcGxlUGF5U2V0dXAo
KTsKIAogcHJpdmF0ZToKLSAgICBib29sIHNldEFwcGxlUGF5SXNBY3RpdmVJZkFsbG93ZWQoRG9j
dW1lbnQmKSBjb25zdDsKLQogICAgIFBheW1lbnRDb29yZGluYXRvckNsaWVudCYgbV9jbGllbnQ7
CiAgICAgUmVmUHRyPFBheW1lbnRTZXNzaW9uPiBtX2FjdGl2ZVNlc3Npb247CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50LmgKaW5kZXggZmNhNGM1NjM4Njk0N2M3NzY1MDk4MDRhOTU0OTM2NWJkNDE1N2Uz
NC4uNTQ1ZDhjNzk1NjdmYzg1YzQ0YWJiNzFkZTI2ZDUwYTcyMmUxOTcxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRv
ckNsaWVudC5oCkBAIC02NSw5ICs2NSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWJv
cnRQYXltZW50U2Vzc2lvbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGF5bWVudFNl
c3Npb24oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBheW1lbnRDb29yZGluYXRvckRlc3Ryb3ll
ZCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNVbnJlc3RyaWN0ZWRBcHBsZVBheSgp
IGNvbnN0ID0gMDsKLQotICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudFNjcmlwdHNCbG9ja2Vk
RXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wg
aXNNb2NrUGF5bWVudENvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaXNXZWJQYXltZW50Q29vcmRpbmF0b3IoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNz
aW9uLmNwcAppbmRleCAzMDFmMjhkYjE3ZTU1NWJkYmFlMTI3NjA3NDlkYTIxNWQ2MzJjZmUwLi45
NGY5NDU5YjliNDQ4YTk4NDJlYjBmNDAyM2M2NDJhMDY4ZTgzYzcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmNwcApAQCAtMzEsOCAr
MzEsNiBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIu
aCIKICNpbmNsdWRlICJGZWF0dXJlUG9saWN5LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1
ZGUgIlBheW1lbnRDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc4LDE1ICs3Niw2IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IFBheW1lbnRTZXNzaW9uOjpjYW5DcmVhdGVTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCkKICAg
ICByZXR1cm4geyB9OwogfQogCi1ib29sIFBheW1lbnRTZXNzaW9uOjplbmFibGVkRm9yQ29udGV4
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotewotICAgIGF1dG8mIGRvY3VtZW50
ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwotICAgIGlmIChhdXRvIHBhZ2UgPSBkb2N1
bWVudC5wYWdlKCkpCi0gICAgICAgIHJldHVybiBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5z
aG91bGRFbmFibGVBcHBsZVBheUFQSXMoZG9jdW1lbnQpOwotCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U2Vz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U2Vzc2lvbi5o
CmluZGV4IGRmNDJhNWUxNDczNDA3ZDEzN2Y3N2YwZTZhZTg0NmFmMjBiNTVjY2MuLjc1NjI1YTQ3
ZDdjZDJjMWQ0NmExZDZmMGM0MDRiMzUwNzcxNzU1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmgKQEAgLTQzLDcgKzQzLDYgQEAgc3Ry
dWN0IEFwcGxlUGF5U2hpcHBpbmdNZXRob2Q7CiBjbGFzcyBQYXltZW50U2Vzc2lvbiA6IHB1Ymxp
YyB2aXJ0dWFsIFBheW1lbnRTZXNzaW9uQmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2Vw
dGlvbk9yPHZvaWQ+IGNhbkNyZWF0ZVNlc3Npb24oRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgYm9v
bCBlbmFibGVkRm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKICAgICB2aXJ0
dWFsIHVuc2lnbmVkIHZlcnNpb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZhbGlk
YXRlTWVyY2hhbnQoVVJMJiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5
bWVudEhhbmRsZXIuY3BwCmluZGV4IDkwZmI4ZmM2M2FhNjFjODc4NDgyODUwYTljZjA4YTM1YTg4
MWQ3Y2YuLjcwNTUxYWU4NjQ0ODljOWU2NzdjZDkyMTUzZjVkMWUyMjdhNDAyNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQ
YXlQYXltZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcApAQCAtMzA0LDkgKzMw
NCw5IEBAIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6aGlkZSgpCiAgICAgcGF5bWVudENv
b3JkaW5hdG9yKCkuYWJvcnRQYXltZW50U2Vzc2lvbigpOwogfQogCi12b2lkIEFwcGxlUGF5UGF5
bWVudEhhbmRsZXI6OmNhbk1ha2VQYXltZW50KERvY3VtZW50JiBkb2N1bWVudCwgRnVuY3Rpb248
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQXBwbGVQYXlQYXltZW50SGFu
ZGxlcjo6Y2FuTWFrZVBheW1lbnQoRG9jdW1lbnQmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKHBheW1lbnRDb29yZGlu
YXRvcigpLmNhbk1ha2VQYXltZW50cyhkb2N1bWVudCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVy
KHBheW1lbnRDb29yZGluYXRvcigpLmNhbk1ha2VQYXltZW50cygpKTsKIH0KIAogRXhjZXB0aW9u
T3I8VmVjdG9yPEFwcGxlUGF5U2hpcHBpbmdNZXRob2Q+PiBBcHBsZVBheVBheW1lbnRIYW5kbGVy
Ojpjb21wdXRlU2hpcHBpbmdNZXRob2RzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5jcHAKaW5kZXggNjMw
YzYwOTZjNTdjY2E4MDRkMWExZTMwMWRmZDljZjkxNTA0ZGQzOS4uOThlZDMzZjg4NmRmZDkwZWMy
NTE1NDJjYTQ4Yzg1NGJjYzIwYWRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5jcHAKQEAgLTg3LDE2ICs4Nyw2
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBheW1lbnRIYW5kbGVyOjp2YWxpZGF0ZURhdGEoRG9jdW1l
bnQmIGRvY3VtZW50LCBKU0M6OkpTVmFsdWUKICAgICByZXR1cm4geyB9OwogfQogCi1ib29sIFBh
eW1lbnRIYW5kbGVyOjplbmFibGVkRm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KQotewotI2lmIEVOQUJMRShBUFBMRV9QQVkpCi0gICAgcmV0dXJuIFBheW1lbnRTZXNz
aW9uOjplbmFibGVkRm9yQ29udGV4dChjb250ZXh0KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KGNvbnRleHQpOwotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCiBib29sIFBheW1lbnRI
YW5kbGVyOjpoYXNBY3RpdmVTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICNpZiBFTkFC
TEUoQVBQTEVfUEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcAppbmRleCAyM2UyNzg5ZGIyN2VhNmU4NzYyZmM3
NDIwMzI0NTYyYzQxNmZkMGQzLi41NjlhODg4ZmQwZWIzMzQ0YTQwNjBjMjIzYzQ1ODliMjk4ZWVj
YWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1Bh
eW1lbnRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1
ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcApAQCAtMzQ5LDExICszNDksNiBAQCBFeGNlcHRpb25PcjxS
ZWY8UGF5bWVudFJlcXVlc3Q+PiBQYXltZW50UmVxdWVzdDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgVmVjdAogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1ib29sIFBheW1lbnRSZXF1ZXN0
OjplbmFibGVkRm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotewot
ICAgIHJldHVybiBQYXltZW50SGFuZGxlcjo6ZW5hYmxlZEZvckNvbnRleHQoY29udGV4dCk7Ci19
Ci0KIFBheW1lbnRSZXF1ZXN0OjpQYXltZW50UmVxdWVzdChEb2N1bWVudCYgZG9jdW1lbnQsIFBh
eW1lbnRPcHRpb25zJiYgb3B0aW9ucywgUGF5bWVudERldGFpbHNJbml0JiYgZGV0YWlscywgVmVj
dG9yPFN0cmluZz4mJiBzZXJpYWxpemVkTW9kaWZpZXJEYXRhLCBWZWN0b3I8TWV0aG9kPiYmIHNl
cmlhbGl6ZWRNZXRob2REYXRhLCBTdHJpbmcmJiBzZWxlY3RlZFNoaXBwaW5nT3B0aW9uKQogICAg
IDogQWN0aXZlRE9NT2JqZWN0IHsgZG9jdW1lbnQgfQogICAgICwgbV9vcHRpb25zIHsgV1RGTW92
ZShvcHRpb25zKSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRy
ZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmgKaW5kZXggNjdkMjA4NTBhNDM0ZjY4MTA1YzBiMzM3ODVk
OTczY2QwOGRkZTBiOS4uNWIwN2JiNTY1M2JjZDkxNjQzYTE0ODQwYmJlMGIwODQ4OTYxNTBkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5
bWVudFJlcXVlc3QuaApAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgU2hvd1By
b21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPFBheW1lbnRSZXNwb25zZT4+
OwogCiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxQYXltZW50UmVxdWVzdD4+IGNyZWF0ZShE
b2N1bWVudCYsIFZlY3RvcjxQYXltZW50TWV0aG9kRGF0YT4mJiwgUGF5bWVudERldGFpbHNJbml0
JiYsIFBheW1lbnRPcHRpb25zJiYpOwotICAgIHN0YXRpYyBib29sIGVuYWJsZWRGb3JDb250ZXh0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICB+UGF5bWVudFJlcXVlc3QoKTsKIAogICAg
IHZvaWQgc2hvdyhEb2N1bWVudCYsIFJlZlB0cjxET01Qcm9taXNlPiYmIGRldGFpbHNQcm9taXNl
LCBTaG93UHJvbWlzZSYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5
bWVudHJlcXVlc3QvUGF5bWVudFJlcXVlc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5pZGwKaW5kZXggN2ZkZTAyMDk4MWU2NTAzNzU1
NjA5ZWJjOGRjMWQ0NTY3NjMxNWVhZi4uNGQ3MDMwMWViZjBkMzZiMDNhMWMxMDkzNmUzYTA5NWRh
YjVmMGU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVz
dC9QYXltZW50UmVxdWVzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50UmVxdWVzdC5pZGwKQEAgLTI3LDcgKzI3LDYgQEAKICAgICBBY3RpdmVE
T01PYmplY3QsCiAgICAgQ29uZGl0aW9uYWw9UEFZTUVOVF9SRVFVRVNULAogICAgIEVuYWJsZWRC
eVNldHRpbmc9UGF5bWVudFJlcXVlc3RFbmFibGVkLAotICAgIEVuYWJsZWRGb3JDb250ZXh0LAog
ICAgIFNlY3VyZUNvbnRleHQsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIFBheW1l
bnRSZXF1ZXN0IDogRXZlbnRUYXJnZXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAyNTQzNTczNGQ4NjViMDBiMjRhZDU4YmViNjE1
MmM1ZWU2MDA3ZTc3Li4xN2FiZDQ0NTYwMDQxYWI5ZDM0MmZhZmM1YjI0YjUwNDgxYzc2MTc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApA
QCAtNjkxLDIzICs2OTEsMTIgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1
dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE8KIH0KIFZhbHVlT3JF
eGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VV
c2VyR2VzdHVyZSkKIHsKLSAgICByZXR1cm4gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJ
bnRlcm5hbCh3b3JsZCwgeyBzY3JpcHQsIFVSTCB7IH0sIGZhbHNlLCBzdGQ6Om51bGxvcHQsIGZv
cmNlVXNlckdlc3R1cmUgfSk7Ci19Ci0KLVZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbChET01XcmFwcGVyV29ybGQm
IHdvcmxkLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi17Ci0gICAgYXV0
byYgZG9jdW1lbnQgPSAqbV9mcmFtZS5kb2N1bWVudCgpOwotICAgIGF1dG8gYWxsb3dlZCA9IHNo
b3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhkb2N1bWVudCk7Ci0gICAgaWYgKCFhbGxvd2VkKQot
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYWxsb3dlZC5lcnJvcigpKTsKLQotICAgIGRv
Y3VtZW50LnNldEhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMoKTsKLSAgICByZXR1cm4gZXhl
Y3V0ZVNjcmlwdEluV29ybGQod29ybGQsIFdURk1vdmUocGFyYW1ldGVycykpOworICAgIHJldHVy
biBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgeyBzY3JpcHQsIFVSTCB7IH0sIGZhbHNlLCBz
dGQ6Om51bGxvcHQsIGZvcmNlVXNlckdlc3R1cmUgfSk7CiB9CiAKIHZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBSZXNv
bHZlRnVuY3Rpb24mJiByZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byByZXN1
bHQgPSBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKHdvcmxkLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdv
cmxkLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICAgICAKICAgICBpZiAocGFyYW1ldGVycy5ydW5B
c0FzeW5jRnVuY3Rpb24gPT0gUnVuQXNBc3luY0Z1bmN0aW9uOjpObyB8fCAhcmVzdWx0IHx8ICFy
ZXN1bHQudmFsdWUoKS5pc09iamVjdCgpKSB7CiAgICAgICAgIHJlc29sdmVDb21wbGV0aW9uSGFu
ZGxlcihyZXN1bHQpOwpAQCAtNzY3LDE3ICs3NTYsNiBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3Js
ZAogICAgIGNhbGwoJmdsb2JhbE9iamVjdCwgdGhlbkZ1bmN0aW9uLCBjYWxsRGF0YSwgcmVzdWx0
LnZhbHVlKCksIGFyZ3VtZW50cyk7CiB9CiAKLUV4cGVjdGVkPHZvaWQsIEV4Y2VwdGlvbkRldGFp
bHM+IFNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhEb2N1bWVu
dCYgZG9jdW1lbnQpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICBpZiAoYXV0
byBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCi0gICAgICAgIHJldHVybiBwYWdlLT5wYXltZW50Q29v
cmRpbmF0b3IoKS5zaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoZG9jdW1lbnQpOwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOwotI2VuZGlmCi0gICAgcmV0dXJuIHsgfTsKLX0K
LQogYm9vbCBTY3JpcHRDb250cm9sbGVyOjpjYW5FeGVjdXRlU2NyaXB0cyhSZWFzb25Gb3JDYWxs
aW5nQ2FuRXhlY3V0ZVNjcmlwdHMgcmVhc29uKQogewogICAgIGlmIChyZWFzb24gPT0gQWJvdXRU
b0V4ZWN1dGVTY3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmgKaW5kZXggMGNhMjAyZDQ2NWY5NDJhNGJhOGM4ZDFmMzUzNWE3YWY0OGM4MDcwMy4u
ZTczYmI5MmRkM2ZlYjBiZTUzYmYyZDkwOGVkM2FiMmNhMGVlYTExYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMTA2LDggKzEwNiw2IEBA
IHB1YmxpYzoKICAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihjb25z
dCBTY3JpcHRTb3VyY2VDb2RlJik7CiAgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3JsZEln
bm9yaW5nRXhjZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQm
KTsKIAotICAgIEV4cGVjdGVkPHZvaWQsIEV4Y2VwdGlvbkRldGFpbHM+IHNob3VsZEFsbG93VXNl
ckFnZW50U2NyaXB0cyhEb2N1bWVudCYpIGNvbnN0OwotCiAgICAgLy8gVGhpcyBhc3NlcnRzIHRo
YXQgVVJMIGFyZ3VtZW50IGlzIGEgSmF2YVNjcmlwdCBVUkwuCiAgICAgdm9pZCBleGVjdXRlSmF2
YVNjcmlwdFVSTChjb25zdCBVUkwmLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID0gbnVsbHB0ciwg
U2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMID0gUmVwbGFjZURvY3VtZW50SWZK
YXZhU2NyaXB0VVJMKTsKIApAQCAtMTcyLDcgKzE3MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
cG9ydEV4Y2VwdGlvbkZyb21TY3JpcHRFcnJvcihMb2FkYWJsZVNjcmlwdDo6RXJyb3IsIGJvb2wp
OwogCiBwcml2YXRlOgotICAgIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVVzZXJBZ2VudFNjcmlw
dEluV29ybGRJbnRlcm5hbChET01XcmFwcGVyV29ybGQmLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVy
cyYmKTsKICAgICBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBw
ZXJXb3JsZCYsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYpOwogICAgIFZhbHVlT3JFeGNlcHRp
b24gY2FsbEluV29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgRE9NV3JhcHBlcldvcmxk
Jik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBhOWI3YzU2NDFjZTJmMGYyZjY3
ZWVmM2RlOGRkZTdmNmQ0ZmJkY2Y2Li5mOWI3NDhhZjRiMzgyZDc2ZGQ5MDY3MzgxYWNkMmM1OTUy
YTA2NzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTc2NDQsMTAgKzc2NDQsOSBAQCB2
b2lkIERvY3VtZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCkKIAogICAgIC8vIFVzZSB0aGUgSlMgZmlsZSBwcm92aWRlZCBieSB0aGUgQ2hyb21l
IGNsaWVudCwgb3IgZmFsbGJhY2sgdG8gdGhlIGRlZmF1bHQgb25lLgogICAgIFN0cmluZyBqc1N0
cmluZyA9IHBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkucGx1Z0luRXh0cmFTY3JpcHQoKTsKLSAg
ICBpZiAoIWpzU3RyaW5nIHx8ICFzY3JpcHRDb250cm9sbGVyLnNob3VsZEFsbG93VXNlckFnZW50
U2NyaXB0cygqdGhpcykpCisgICAgaWYgKCFqc1N0cmluZykKICAgICAgICAganNTdHJpbmcgPSBT
dHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhwbHVnSW5zSmF2YVNjcmlwdCwgc2l6ZW9m
KHBsdWdJbnNKYXZhU2NyaXB0KSk7CiAKLSAgICBzZXRIYXNFdmFsdWF0ZWRVc2VyQWdlbnRTY3Jp
cHRzKCk7CiAgICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2Vw
dGlvbihTY3JpcHRTb3VyY2VDb2RlKGpzU3RyaW5nKSwgd29ybGQpOwogCiAgICAgbV9oYXNJbmpl
Y3RlZFBsdWdJbnNTY3JpcHQgPSB0cnVlOwpAQCAtODg1OCwxMiArODg1Nyw2IEBAIERPTVRpbWVy
SG9sZGluZ1RhbmsmIERvY3VtZW50Ojpkb21UaW1lckhvbGRpbmdUYW5rKCkKIAogI2VuZGlmCiAK
LWJvb2wgRG9jdW1lbnQ6Omhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMoKSBjb25zdAotewot
ICAgIGF1dG8mIHRvcCA9IHRvcERvY3VtZW50KCk7Ci0gICAgcmV0dXJuIHRoaXMgPT0gJnRvcCA/
IG1faGFzRXZhbHVhdGVkVXNlckFnZW50U2NyaXB0cyA6IHRvcC5oYXNFdmFsdWF0ZWRVc2VyQWdl
bnRTY3JpcHRzKCk7Ci19Ci0KIGJvb2wgRG9jdW1lbnQ6OmlzUnVubmluZ1VzZXJTY3JpcHRzKCkg
Y29uc3QKIHsKICAgICBhdXRvJiB0b3AgPSB0b3BEb2N1bWVudCgpOwpAQCAtODg3OSwxNSArODg3
Miw2IEBAIHZvaWQgRG9jdW1lbnQ6OnNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCkKICAgICAgICAg
dG9wLnNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldEhh
c0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMoKQotewotICAgIGF1dG8mIHRvcCA9IHRvcERvY3Vt
ZW50KCk7Ci0gICAgaWYgKHRoaXMgPT0gJnRvcCkKLSAgICAgICAgbV9oYXNFdmFsdWF0ZWRVc2Vy
QWdlbnRTY3JpcHRzID0gdHJ1ZTsKLSAgICBlbHNlCi0gICAgICAgIHRvcC5zZXRIYXNFdmFsdWF0
ZWRVc2VyQWdlbnRTY3JpcHRzKCk7Ci19Ci0KIHZvaWQgRG9jdW1lbnQ6OmRpZFJlamVjdFN5bmNY
SFJEdXJpbmdQYWdlRGlzbWlzc2FsKCkKIHsKICAgICArK21fbnVtYmVyT2ZSZWplY3RlZFN5bmNY
SFJzOwpAQCAtODkwNiwyNSArODg5MCw2IEBAIGJvb2wgRG9jdW1lbnQ6OnNob3VsZElnbm9yZVN5
bmNYSFJzKCkgY29uc3QKICAgICByZXR1cm4gbV9udW1iZXJPZlJlamVjdGVkU3luY1hIUnMgPiBt
YXhSZWplY3RlZFN5bmNYSFJzUGVyRXZlbnRMb29wSXRlcmF0aW9uOwogfQogCi0jaWYgRU5BQkxF
KEFQUExFX1BBWSkKLQotYm9vbCBEb2N1bWVudDo6aXNBcHBsZVBheUFjdGl2ZSgpIGNvbnN0Ci17
Ci0gICAgYXV0byYgdG9wID0gdG9wRG9jdW1lbnQoKTsKLSAgICByZXR1cm4gdGhpcyA9PSAmdG9w
ID8gbV9oYXNTdGFydGVkQXBwbGVQYXlTZXNzaW9uIDogdG9wLmlzQXBwbGVQYXlBY3RpdmUoKTsK
LX0KLQotdm9pZCBEb2N1bWVudDo6c2V0QXBwbGVQYXlJc0FjdGl2ZSgpCi17Ci0gICAgYXV0byYg
dG9wID0gdG9wRG9jdW1lbnQoKTsKLSAgICBpZiAodGhpcyA9PSAmdG9wKQotICAgICAgICBtX2hh
c1N0YXJ0ZWRBcHBsZVBheVNlc3Npb24gPSB0cnVlOwotICAgIGVsc2UKLSAgICAgICAgdG9wLnNl
dEFwcGxlUGF5SXNBY3RpdmUoKTsKLX0KLQotI2VuZGlmCi0KIE1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyJiBEb2N1bWVudDo6bWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKQogewogICAgIHJl
dHVybiBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCmluZGV4IDRkZDdkMzZjZTI0OGMwZjU2NzZhMGQ1OGU5ODBkODA2ZTYxMDZiNzAuLjM0
NzcwMTRjMjE5MWUyYzI3ZjBmOTgyZjVmYjc5ODc4MTE5MTVkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCkBAIC0xNTk3LDE0ICsxNTk3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgUmVmPFBhaW50V29ya2xl
dEdsb2JhbFNjb3BlPiYmKTsKICNlbmRpZgogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNF
dmFsdWF0ZWRVc2VyQWdlbnRTY3JpcHRzKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc1J1bm5pbmdVc2VyU2NyaXB0cygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0QXNSdW5uaW5nVXNlclNjcmlwdHMoKTsKLSAgICB2b2lkIHNldEhhc0V2YWx1YXRlZFVzZXJB
Z2VudFNjcmlwdHMoKTsKLSNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaXNBcHBsZVBheUFjdGl2ZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0QXBwbGVQYXlJc0FjdGl2ZSgpOwotI2VuZGlmCiAKICAgICB2b2lkIGZyYW1lV2FzRGlzY29u
bmVjdGVkRnJvbU93bmVyKCk7CiAKQEAgLTIyMjcsMTUgKzIyMjEsMTEgQEAgcHJpdmF0ZToKICAg
ICBIYXNoTWFwPFN0cmluZywgUmVmPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPj4gbV9wYWludFdv
cmtsZXRHbG9iYWxTY29wZXM7CiAjZW5kaWYKICAgICB1bnNpZ25lZCBtX251bWJlck9mUmVqZWN0
ZWRTeW5jWEhScyB7IDAgfTsKLSAgICBib29sIG1faGFzRXZhbHVhdGVkVXNlckFnZW50U2NyaXB0
cyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzUnVubmluZ1VzZXJTY3JpcHRzIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fbWF5QmVEZXRhY2hlZEZyb21GcmFtZSB7IHRydWUgfTsKICAgICBib29sIG1f
c2hvdWxkUHJldmVudEVudGVyaW5nQmFja0ZvcndhcmRDYWNoZUZvclRlc3RpbmcgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9oYXNMb2FkZWRUaGlyZFBhcnR5U2NyaXB0IHsgZmFsc2UgfTsKICAgICBi
b29sIG1faGFzTG9hZGVkVGhpcmRQYXJ0eUZyYW1lIHsgZmFsc2UgfTsKLSNpZiBFTkFCTEUoQVBQ
TEVfUEFZKQotICAgIGJvb2wgbV9oYXNTdGFydGVkQXBwbGVQYXlTZXNzaW9uIHsgZmFsc2UgfTsK
LSNlbmRpZgogICAgIGJvb2wgbV9oYXNWaXN1YWxseU5vbkVtcHR5Q3VzdG9tQ29udGVudCB7IGZh
bHNlIH07CiAKICAgICBib29sIG1fdmlzaWJpbGl0eUhpZGRlbkR1ZVRvRGlzbWlzc2FsIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggMTkzY2M3ZjZj
YTFhZmE3YWEzNDU2NjUxMDk1ZjVmZGNkYmMzYzUxNi4uMzQ1M2ZkNWE2OGFhYmJmNjMxYzBmYmFi
ZWJiOWRjZjQwN2QxOWZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
QEAgLTQzMCw3ICs0MzAsNiBAQCBjbGFzcyBFbXB0eVBheW1lbnRDb29yZGluYXRvckNsaWVudCBm
aW5hbCA6IHB1YmxpYyBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQgewogICAgIHZvaWQgY2FuY2Vs
UGF5bWVudFNlc3Npb24oKSBmaW5hbCB7IH0KICAgICB2b2lkIGFib3J0UGF5bWVudFNlc3Npb24o
KSBmaW5hbCB7IH0KICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvckRlc3Ryb3llZCgpIGZpbmFs
IHsgfQotICAgIGJvb2wgc3VwcG9ydHNVbnJlc3RyaWN0ZWRBcHBsZVBheSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXgg
MjhhYjI3NWI4YTAwNjZhYjExOTRjMGRkYWIxMjE0MjRmNGViYjdmMy4uNGFhMWU3N2EzYWIyZDBl
Yzc5NjFiNjYxZDVjZTdmYjhmYzE5MGNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTY5NCw4
ICs2OTQsNiBAQCB2b2lkIEZyYW1lOjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNlclNjcmlwdAogICAgICAgICByZXR1cm47CiAgICAg
aWYgKCFVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhkb2N1bWVudC0+dXJs
KCksIHNjcmlwdC5hbGxvd2xpc3QoKSwgc2NyaXB0LmJsb2NrbGlzdCgpKSkKICAgICAgICAgcmV0
dXJuOwotICAgIGlmICghbV9zY3JpcHQtPnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cygqZG9j
dW1lbnQpKQotICAgICAgICByZXR1cm47CiAKICAgICBkb2N1bWVudC0+c2V0QXNSdW5uaW5nVXNl
clNjcmlwdHMoKTsKICAgICBsb2FkZXIoKS5jbGllbnQoKS53aWxsSW5qZWN0VXNlclNjcmlwdCh3
b3JsZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNDEzMjk0NjFlNmNi
MGNjN2I3YTc4NWVkMTk0YTAxYTI0Zjk5Y2I4Zi4uMDcwYmM0MmFmMzhjODgzZGZiYjA0ODMxY2U1
NjdhNzUzNTY0NTY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTMx
NiwxMyArNTMxNiw2IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRBc1J1bm5pbmdVc2VyU2NyaXB0cyhE
b2N1bWVudCYgZG9jdW1lbnQpCiAgICAgZG9jdW1lbnQuc2V0QXNSdW5uaW5nVXNlclNjcmlwdHMo
KTsKIH0KIAotI2lmIEVOQUJMRShBUFBMRV9QQVkpCi12b2lkIEludGVybmFsczo6c2V0QXBwbGVQ
YXlJc0FjdGl2ZShEb2N1bWVudCYgZG9jdW1lbnQpCi17Ci0gICAgZG9jdW1lbnQuc2V0QXBwbGVQ
YXlJc0FjdGl2ZSgpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0VCR0wpCiB2b2lkIEludGVy
bmFsczo6c2ltdWxhdGVFdmVudEZvcldlYkdMQ29udGV4dChTaW11bGF0ZWRXZWJHTENvbnRleHRF
dmVudCBldmVudCwgV2ViR0xSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMzAzZTQ3MjUzZjgxYjVkNjI2NzE0MjA3ZjMwNmE5Yzhh
NjBkYmM4ZS4uNTc3NmVhOTEzZjUxODQ1NjhlMWRhYjBmNGQ2ODNlZGVjODRlYzc3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC04MjMsOSArODIzLDYgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0UXVpY2tMb29rUGFzc3dvcmQoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIHNl
dEFzUnVubmluZ1VzZXJTY3JpcHRzKERvY3VtZW50Jik7Ci0jaWYgRU5BQkxFKEFQUExFX1BBWSkK
LSAgICB2b2lkIHNldEFwcGxlUGF5SXNBY3RpdmUoRG9jdW1lbnQmKTsKLSNlbmRpZgogCiAjaWYg
RU5BQkxFKFdFQkdMKQogICAgIGVudW0gY2xhc3MgU2ltdWxhdGVkV2ViR0xDb250ZXh0RXZlbnQg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDdjNWRmYTlmMWEzNjM4ZGJi
MTc0MjQyM2U1ZGQwZjIyMjg2NjY2ODYuLjMzOWEwNDVlZTA5YzU5YjA5ZDBjY2MzN2M2ODUwNjdm
MzgwZjk5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTg4NCw3ICs4
ODQsNiBAQCB0eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNwb25zZSkgRmV0Y2hPYmpl
Y3Q7CiAgICAgdW5kZWZpbmVkIHNldFF1aWNrTG9va1Bhc3N3b3JkKERPTVN0cmluZyBwYXNzd29y
ZCk7CiAKICAgICBbQ2FsbFdpdGg9Q3VycmVudERvY3VtZW50XSB1bmRlZmluZWQgc2V0QXNSdW5u
aW5nVXNlclNjcmlwdHMoKTsKLSAgICBbQ2FsbFdpdGg9Q3VycmVudERvY3VtZW50LCBDb25kaXRp
b25hbD1BUFBMRV9QQVldIHVuZGVmaW5lZCBzZXRBcHBsZVBheUlzQWN0aXZlKCk7CiAKICAgICB1
bmRlZmluZWQgZGlzYWJsZVRpbGVTaXplVXBkYXRlRGVsYXkoKTsKICAgICB1bmRlZmluZWQgc2V0
U3BlY3VsYXRpdmVUaWxpbmdEZWxheURpc2FibGVkRm9yVGVzdGluZyhib29sZWFuIGRpc2FibGVk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGlu
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmgK
aW5kZXggNTRiM2YyNWMwNjRmNGEyMmY4YTI3ZWQyYzIzNDg3MGNmMTE5ZjVkNy4uZDMzNGNjZDBj
OTRmOTA1N2NmNjI3ZjY4ZTY5OTFjOWU4NWVmNzM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmgKQEAgLTc1LDkgKzc1LDYgQEAgcHVibGlj
OgogICAgIGNvbnN0IE1vY2tQYXltZW50Q29udGFjdEZpZWxkcyYgcmVxdWlyZWRCaWxsaW5nQ29u
dGFjdEZpZWxkcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxk
czsgfQogICAgIGNvbnN0IE1vY2tQYXltZW50Q29udGFjdEZpZWxkcyYgcmVxdWlyZWRTaGlwcGlu
Z0NvbnRhY3RGaWVsZHMoKSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVkU2hpcHBpbmdDb250YWN0
RmllbGRzOyB9CiAKLSAgICBib29sIHN1cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXkoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3N1cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXk7IH0KLSAgICB2
b2lkIHNldFN1cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXkoYm9vbCBzdXBwb3J0cykgeyBtX3N1
cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXkgPSBzdXBwb3J0czsgfQotICAgIAogI2lmIEVOQUJM
RShBUFBMRV9QQVlfSU5TVEFMTE1FTlRTKQogICAgIEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1
cmF0aW9uIGluc3RhbGxtZW50Q29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uOyB9CiAjZW5kaWYKQEAgLTEzMyw3ICsxMzAsNiBAQCBwcml2YXRl
OgogICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fYXZhaWxh
YmxlUGF5bWVudE5ldHdvcmtzOwogICAgIE1vY2tQYXltZW50Q29udGFjdEZpZWxkcyBtX3JlcXVp
cmVkQmlsbGluZ0NvbnRhY3RGaWVsZHM7CiAgICAgTW9ja1BheW1lbnRDb250YWN0RmllbGRzIG1f
cmVxdWlyZWRTaGlwcGluZ0NvbnRhY3RGaWVsZHM7Ci0gICAgYm9vbCBtX3N1cHBvcnRzVW5yZXN0
cmljdGVkQXBwbGVQYXkgeyB0cnVlIH07CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNUQUxMTUVO
VFMpCiAgICAgQXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gbV9pbnN0YWxsbWVudENv
bmZpZ3VyYXRpb247CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja1BheW1lbnRDb29yZGluYXRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQ
YXltZW50Q29vcmRpbmF0b3IuaWRsCmluZGV4IGQyN2QyYjVlOTRlODMzMzY5MmRjNTIzMTEzOTli
YTk0ZjEzYTU2YWEuLmM1OGYwMzY0MmM3YzlkOGQ2ZjA0NjJiODU2NGQ5MzY1NGI3OTE1YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmlk
bApAQCAtNDcsOCArNDcsNiBAQAogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEFwcGxlUGF5U2V0
dXBDb25maWd1cmF0aW9uIHNldHVwQ29uZmlndXJhdGlvbjsKIAotICAgIGF0dHJpYnV0ZSBib29s
ZWFuIHN1cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXk7Ci0KICAgICBbQ29uZGl0aW9uYWw9QVBQ
TEVfUEFZX0lOU1RBTExNRU5UU10gcmVhZG9ubHkgYXR0cmlidXRlIEFwcGxlUGF5SW5zdGFsbG1l
bnRDb25maWd1cmF0aW9uIGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKIAogICAgIFtDb25kaXRp
b25hbD1BUFBMRV9QQVlfQ09VUE9OX0NPREVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuPyBz
dXBwb3J0c0NvdXBvbkNvZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4IDFjNzAyNjUwYjc5
Y2NiZmFlMDFkZjdmYzkwMTAwYjVmNzZkYTcwMDkuLjczNTc2YTI0N2NlMTE3NTI3NTY1ZmIxZDI2
YjRjZDA5YjI0NzJlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC0xNTgsMjEgKzE1OCw2
IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpwYXltZW50Q29vcmRpbmF0b3JEZXN0cm95
ZWQoKQogICAgIGRlbGV0ZSB0aGlzOwogfQogCi1ib29sIFdlYlBheW1lbnRDb29yZGluYXRvcjo6
c3VwcG9ydHNVbnJlc3RyaWN0ZWRBcHBsZVBheSgpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKEFQUExF
X1BBWV9SRU1PVEVfVUkpCi0gICAgc3RhdGljIGJvb2wgaGFzRW50aXRsZW1lbnQgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzSGFzRW50aXRsZW1lbnQoImNvbS5hcHBsZS5w
cml2YXRlLldlYktpdC5VbnJlc3RyaWN0ZWRBcHBsZVBheSIpOwotICAgIHJldHVybiBoYXNFbnRp
dGxlbWVudDsKLSNlbHNlCi0gICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLX0KLQotU3RyaW5nIFdl
YlBheW1lbnRDb29yZGluYXRvcjo6dXNlckFnZW50U2NyaXB0c0Jsb2NrZWRFcnJvck1lc3NhZ2Uo
KSBjb25zdAotewotICAgIHJldHVybiAiVW5hYmxlIHRvIHJ1biB1c2VyIGFnZW50IHNjcmlwdHMg
YmVjYXVzZSB0aGlzIGRvY3VtZW50IGhhcyBwcmV2aW91c2x5IGFjY2Vzc2VkIEFwcGxlIFBheS4g
RG9jdW1lbnRzIGNhbiBiZSBwcmV2ZW50ZWQgZnJvbSBhY2Nlc3NpbmcgQXBwbGUgUGF5IGJ5IGFk
ZGluZyBhIFdLVXNlclNjcmlwdCB0byB0aGUgV0tXZWJWaWV3J3MgV0tVc2VyQ29udGVudENvbnRy
b2xsZXIuIl9zOwotfQotCiBJUEM6OkNvbm5lY3Rpb24qIFdlYlBheW1lbnRDb29yZGluYXRvcjo6
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAogewogI2lmIEVOQUJMRShBUFBMRV9QQVlf
UkVNT1RFX1VJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCmluZGV4IGE3NmEzYWM2M2Y4YTRhNTk0NTZjODFj
OTQ0OWRiNDg3MWVlYTI0ZWMuLjIyYzYwYTk0ZDMzMmU0YThjNzg2ZTk3MDU0M2E0MWRjNDU4NTU3
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yLmgKQEAgLTgwLDEwICs4MCw2IEBAIHByaXZhdGU6CiAKICAg
ICBib29sIGlzV2ViUGF5bWVudENvb3JkaW5hdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogCi0gICAgYm9vbCBzdXBwb3J0c1VucmVzdHJpY3RlZEFwcGxlUGF5KCkgY29uc3Qg
b3ZlcnJpZGU7Ci0KLSAgICBTdHJpbmcgdXNlckFnZW50U2NyaXB0c0Jsb2NrZWRFcnJvck1lc3Nh
Z2UoKSBjb25zdCBmaW5hbDsKLQogICAgIHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhjb25zdCBXZWJD
b3JlOjpBcHBsZVBheVNldHVwQ29uZmlndXJhdGlvbiYsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFJlZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYp
PiYmKSBmaW5hbDsKICAgICB2b2lkIGJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBXZWJDb3JlOjpB
cHBsZVBheVNldHVwQ29uZmlndXJhdGlvbiYsIGNvbnN0IFVSTCYsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKSBmaW5hbDsKICAgICB2b2lkIGVuZEFwcGxlUGF5U2V0dXAoKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRD
b29yZGluYXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXggODIzNDQ2ZGVkZDM1ZGU4ZWQ3
NDI2YWYzNmNmMmY3ZTc2ZjdhMmVkMi4uNTZhY2UxNTI3NWY2NmUzZDI2NmVkOTljYTlhYWFiMjNi
YTU1MmNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTUy
LDcgKzUyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFib3J0UGF5bWVudFNlc3Npb24oKSBvdmVy
cmlkZTsKICAgICB2b2lkIGNhbmNlbFBheW1lbnRTZXNzaW9uKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBwYXltZW50Q29vcmRpbmF0b3JEZXN0cm95ZWQoKSBvdmVycmlkZTsKLSAgICBib29sIHN1cHBv
cnRzVW5yZXN0cmljdGVkQXBwbGVQYXkoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCmluZGV4IGRkMGE3MThiNzJm
NzEzOWQzYWZmY2U2OTVhNjYzMjdlMDQyYzZiNDkuLjU4OGZjNTY0ZGUxNDNlMWYxNzcwMjVlYjc2
MjM0ZTAxN2VlODU3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQu
bW0KQEAgLTEwOSw5ICsxMDksNCBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6
cGF5bWVudENvb3JkaW5hdG9yRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAotYm9v
bCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6OnN1cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQ
YXkoKSBjb25zdAotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmVmZDg4MTkyYzA5Mzk3
ZjMwNzIwNTFiMjAwYTE1NjhhZGUyOTJmZS4uMTMxZTQ5MDQzYjY0YWY3NjUzYzJlMDg4M2I2MTA2
OTcyYjA1OTBkMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIyLTAyLTA4ICBEZXZpbiBSb3Vzc28gIDxkcm91c3Nv
QGFwcGxlLmNvbT4KKworICAgICAgICBQZXJtaXQgc2ltdWx0YW5lb3VzIEFwcGxlIFBheSBhbmQg
c2NyaXB0IGluamVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2MjU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzczNjcyNz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwbGVQYXkubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNULkFwcGxlUGF5LkFwcGxlUGF5QXZhaWxhYmxlQnlEZWZhdWx0KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QuQXBwbGVQYXkuQXBwbGVQYXlBdmFpbGFibGVJbkZyYW1lKTogUmVu
YW1lZCBmcm9tIEFwcGxlUGF5LkFwcGxlUGF5QXZhaWxhYmxlSW5VbnJlc3RyaWN0ZWRDbGllbnRz
LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVC5BcHBsZVBheS5Vc2VyU2NyaXB0QXREb2N1
bWVudFN0YXJ0RG9lc05vdERpc2FibGVBcHBsZVBheSk6IFJlbmFtZWQgZnJvbSBBcHBsZVBheS5V
c2VyU2NyaXB0QXREb2N1bWVudFN0YXJ0RGlzYWJsZXNBcHBsZVBheS4KKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QuQXBwbGVQYXkuVXNlclNjcmlwdEF0RG9jdW1lbnRFbmREb2VzTm90RGlz
YWJsZUFwcGxlUGF5KTogUmVuYW1lZCBmcm9tIEFwcGxlUGF5LlVzZXJTY3JpcHRBdERvY3VtZW50
RW5kRGlzYWJsZXNBcHBsZVBheS4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QuQXBwbGVQ
YXkuVXNlckFnZW50U2NyaXB0RXZhbHVhdGlvbkRvZXNOb3REaXNhYmxlQXBwbGVQYXkpOiBSZW5h
bWVkIGZyb20gQXBwbGVQYXkuVXNlckFnZW50U2NyaXB0RXZhbHVhdGlvbkRpc2FibGVzQXBwbGVQ
YXkuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNULkFwcGxlUGF5LlVzZXJBZ2VudFNjcmlw
dEV2YWx1YXRpb25Eb2VzTm90RGlzYWJsZUFwcGxlUGF5SW5FeGlzdGluZ09iamVjdHMpOiBSZW5h
bWVkIGZyb20gQXBwbGVQYXkuVXNlckFnZW50U2NyaXB0RXZhbHVhdGlvbkRpc2FibGVzQXBwbGVQ
YXlJbkV4aXN0aW5nT2JqZWN0cy4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QuQXBwbGVQ
YXkuQ2FuTWFrZVBheW1lbnRzRG9lc05vdEJsb2NrVXNlckFnZW50U2NyaXB0cyk6IFJlbmFtZWQg
ZnJvbSBBcHBsZVBheS5DYW5NYWtlUGF5bWVudHNCbG9ja3NVc2VyQWdlbnRTY3JpcHRzLgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVC5BcHBsZVBheS5DYW5NYWtlUGF5bWVudHNXaXRoQWN0
aXZlQ2FyZERvZXNOb3RCbG9ja1VzZXJBZ2VudFNjcmlwdHMpOiBSZW5hbWVkIGZyb20gQXBwbGVQ
YXkuQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmRCbG9ja3NVc2VyQWdlbnRTY3JpcHRzLgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVC5BcHBsZVBheS5DYW5NYWtlUGF5bWVudERvZXNO
b3RCbG9ja1VzZXJBZ2VudFNjcmlwdHMpOiBSZW5hbWVkIGZyb20gQXBwbGVQYXkuQ2FuTWFrZVBh
eW1lbnRCbG9ja3NVc2VyQWdlbnRTY3JpcHRzLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VC5BcHBsZVBheS5BY3RpdmVTZXNzaW9uQmxvY2tzVXNlckFnZW50U2NyaXB0cyk6IERlbGV0ZWQu
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXktYWN0
aXZlLXNlc3Npb24uaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL2FwcGxlLXBheS1hdmFpbGFiaWxpdHkuaHRtbDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1hdmFpbGFiaWxpdHktZXhpc3Rp
bmctb2JqZWN0Lmh0bWw6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9hcHBsZS1wYXktYXZhaWxhYmlsaXR5LWluLWlmcmFtZS5odG1sOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwbGUtcGF5LWNhbi1tYWtlLXBheW1lbnQuaHRt
bDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1j
YW4tbWFrZS1wYXltZW50cy5odG1sOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvYXBwbGUtcGF5LWNhbi1tYWtlLXBheW1lbnRzLXdpdGgtYWN0aXZlLWNhcmQuaHRt
bDoKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCiAyMDIyLTAyLTA4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNv
bT4KIAogICAgICAgICBDb252ZXJzaW9uIHRvIGEgY29sb3Igc3BhY2Ugd2l0aCBhIHNtYWxsZXIg
Z2FtdXQgc2hvdWxkIHBlcmZvcm0gZ2FtdXQgbWFwcGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA5YjRjM2IyODJmOTVjNDFlMzQ0YzgwYzU0MTdiZWJiNTMyODVmOTM0Li44YTk3ZmRmNmVj
OTkxYWE5ZTdjN2FlNDMxYjhhM2FiNDY1NWZiNzhkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtODIwLDcgKzgyMCw2IEBACiAJCUExNzk4Qjg1MjI0MzM2NDcwMDA3NjRCRCAvKiBXZWJQcm9j
ZXNzUGx1Z0luV2l0aEludGVybmFscy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExNzk4Qjg0MjI0MzM2NDcwMDA3NjRCRCAvKiBXZWJQcm9jZXNzUGx1
Z0luV2l0aEludGVybmFscy5tbSAqLzsgfTsKIAkJQTE3OThCODcyMjQzNDQ5QjAwMDc2NEJEIC8q
IGFwcGxlLXBheS1hdmFpbGFiaWxpdHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTc5OEI4NjIyNDM0NDZCMDAwNzY0QkQgLyogYXBw
bGUtcGF5LWF2YWlsYWJpbGl0eS5odG1sICovOyB9OwogCQlBMTc5OEI4OTIyNDM1RTI5MDAwNzY0
QkQgLyogYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS1pbi1pZnJhbWUuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTc5OEI4ODIyNDM1RDJF
MDAwNzY0QkQgLyogYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS1pbi1pZnJhbWUuaHRtbCAqLzsgfTsK
LQkJQTE3OThCOEIyMjQzNjFBNDAwMDc2NEJEIC8qIGFwcGxlLXBheS1hY3RpdmUtc2Vzc2lvbi5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExNzk4QjhBMjI0MzYxMUEwMDA3NjRCRCAvKiBhcHBsZS1wYXktYWN0aXZlLXNlc3Npb24uaHRt
bCAqLzsgfTsKIAkJQTE3OTkxODgxRTFDOTk0RTAwQTUwNUVEIC8qIFNoYXJlZEJ1ZmZlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzk5MTg2MUUx
Qzk5NEUwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXIubW0gKi87IH07CiAJCUExNzk5MThCMUUxQ0Ey
NDEwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXJUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzk5MTg5MUUxQ0EyNDEwMEE1MDVFRCAvKiBTaGFy
ZWRCdWZmZXJUZXN0LmNwcCAqLzsgfTsKIAkJQTE3RUFDNTUyMDgzMDVBMDAwODRCNDFCIC8qIGZp
bmQucGRmIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExN0VBQzU0MjA4MzA1NkUwMDg0QjQxQiAvKiBmaW5kLnBkZiAqLzsgfTsKQEAgLTEyMjEs
NyArMTIyMCw2IEBACiAJCQkJMUE2MzQ3OUYxODNENzJBNDAwNUIxNzA3IC8qIGFsbC1jb250ZW50
LWluLW9uZS1pZnJhbWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDMjVDQ0EwRDFF
NTE0MTg0MDAyNkNCOEEgLyogQWxsQWhlbS5zdmcgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
RjRBOTIwMkYxRkVFMzRFOTAwRjU5NTkwIC8qIGFwcGxlLWRhdGEtdXJsLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCi0JCQkJQTE3OThCOEIyMjQzNjFBNDAwMDc2NEJEIC8qIGFwcGxlLXBheS1h
Y3RpdmUtc2Vzc2lvbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUExRkI1MDNEMjJB
MUNCRTIwMEQ0RDk3OSAvKiBhcHBsZS1wYXktYXZhaWxhYmlsaXR5LWV4aXN0aW5nLW9iamVjdC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUExNzk4Qjg5MjI0MzVFMjkwMDA3NjRCRCAv
KiBhcHBsZS1wYXktYXZhaWxhYmlsaXR5LWluLWlmcmFtZS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCUExNzk4Qjg3MjI0MzQ0OUIwMDA3NjRCRCAvKiBhcHBsZS1wYXktYXZhaWxhYmls
aXR5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0yNjU0LDcgKzI2NTIsNiBAQAogCQlB
MTc5OEI4NDIyNDMzNjQ3MDAwNzY0QkQgLyogV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3OThCODYyMjQzNDQ2QjAwMDc2NEJE
IC8qIGFwcGxlLXBheS1hdmFpbGFiaWxpdHkuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJhcHBsZS1wYXktYXZh
aWxhYmlsaXR5Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTc5OEI4ODIy
NDM1RDJFMDAwNzY0QkQgLyogYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS1pbi1pZnJhbWUuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJhcHBsZS1wYXktYXZhaWxhYmlsaXR5LWluLWlmcmFtZS5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTE3OThCOEEyMjQzNjExQTAwMDc2NEJEIC8qIGFwcGxl
LXBheS1hY3RpdmUtc2Vzc2lvbi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImFwcGxlLXBheS1hY3RpdmUtc2Vz
c2lvbi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3OTkxODYxRTFDOTk0
RTAwQTUwNUVEIC8qIFNoYXJlZEJ1ZmZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFNoYXJlZEJ1ZmZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTE3OTkxODkxRTFDQTI0MTAwQTUwNUVEIC8qIFNoYXJlZEJ1ZmZlclRlc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkQnVmZmVyVGVzdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzk5MThBMUUxQ0EyNDEwMEE1MDVFRCAvKiBT
aGFyZWRCdWZmZXJUZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJl
ZEJ1ZmZlclRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwMzMsNyArNDAz
MCw2IEBACiAJCQkJNDZDMUVBOTcyNTc1ODgwNTAwNUU0MDlFIC8qIGFsZXJ0Lmh0bWwgKi8sCiAJ
CQkJQzI1Q0NBMEMxRTUxNDBFNTAwMjZDQjhBIC8qIEFsbEFoZW0uc3ZnICovLAogCQkJCUY0QTky
MDJFMUZFRTM0QzgwMEY1OTU5MCAvKiBhcHBsZS1kYXRhLXVybC5odG1sICovLAotCQkJCUExNzk4
QjhBMjI0MzYxMUEwMDA3NjRCRCAvKiBhcHBsZS1wYXktYWN0aXZlLXNlc3Npb24uaHRtbCAqLywK
IAkJCQlBMUZCNTAzQzIyQTFDMjQ0MDBENEQ5NzkgLyogYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS1l
eGlzdGluZy1vYmplY3QuaHRtbCAqLywKIAkJCQlBMTc5OEI4ODIyNDM1RDJFMDAwNzY0QkQgLyog
YXBwbGUtcGF5LWF2YWlsYWJpbGl0eS1pbi1pZnJhbWUuaHRtbCAqLywKIAkJCQlBMTc5OEI4NjIy
NDM0NDZCMDAwNzY0QkQgLyogYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS5odG1sICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBsZVBheS5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwbGVQYXkubW0KaW5kZXgg
Y2UzN2ZiZDAyZmM0MDY1OThlZWUwOGQ5OWY4OWNmMWI5MjhkMzRkYi4uMTc5ZWQ2ZDE3MTA1YmVi
OWM0ZjM1M2RjYzI4OTU3MTQzNTBkNzc5NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBsZVBheS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0FwcGxlUGF5Lm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgVEVTVChB
cHBsZVBheSwgQXBwbGVQYXlBdmFpbGFibGVCeURlZmF1bHQpCiAgICAgW1Rlc3RQcm90b2NvbCB1
bnJlZ2lzdGVyXTsKIH0KIAotVEVTVChBcHBsZVBheSwgQXBwbGVQYXlBdmFpbGFibGVJblVucmVz
dHJpY3RlZENsaWVudHMpCitURVNUKEFwcGxlUGF5LCBBcHBsZVBheUF2YWlsYWJsZUluRnJhbWUp
CiB7CiAgICAgW1Rlc3RQcm90b2NvbCByZWdpc3RlcldpdGhTY2hlbWU6QCJodHRwcyJdOwogCkBA
IC0xMTYsNyArMTE2LDcgQEAgVEVTVChBcHBsZVBheSwgQXBwbGVQYXlBdmFpbGFibGVJblVucmVz
dHJpY3RlZENsaWVudHMpCiAgICAgW2NvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVy
IGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0
QXBwbGVQYXkiXTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uXSk7Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vYnVuZGxlLWZpbGUvYXBwbGUtcGF5
LWF2YWlsYWJpbGl0eS1pbi1pZnJhbWUuaHRtbD91bnJlc3RyaWN0ZWQiXV1dOworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJodHRwczovL2J1bmRsZS1maWxlL2FwcGxlLXBheS1hdmFpbGFiaWxpdHktaW4t
aWZyYW1lLmh0bWwiXV1dOwogICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZp
Z2F0aW9uXTsKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJsb2FkQXBwbGVQYXlG
cmFtZSgpOyIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIApAQCAtMTI3LDExICsxMjcsMTEgQEAg
VEVTVChBcHBsZVBheSwgQXBwbGVQYXlBdmFpbGFibGVJblVucmVzdHJpY3RlZENsaWVudHMpCiAg
ICAgW1Rlc3RQcm90b2NvbCB1bnJlZ2lzdGVyXTsKIH0KIAotVEVTVChBcHBsZVBheSwgVXNlclNj
cmlwdEF0RG9jdW1lbnRTdGFydERpc2FibGVzQXBwbGVQYXkpCitURVNUKEFwcGxlUGF5LCBVc2Vy
U2NyaXB0QXREb2N1bWVudFN0YXJ0RG9lc05vdERpc2FibGVBcHBsZVBheSkKIHsKICAgICBbVGVz
dFByb3RvY29sIHJlZ2lzdGVyV2l0aFNjaGVtZTpAImh0dHBzIl07CiAKLSAgICBhdXRvIG1lc3Nh
Z2VIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RBcHBsZVBheUF2YWlsYWJsZVNjcmlwdE1lc3NhZ2VI
YW5kbGVyIGFsbG9jXSBpbml0V2l0aEFQSXNBdmFpbGFibGVFeHBlY3RhdGlvbjpOTyBjYW5NYWtl
UGF5bWVudHNFeHBlY3RhdGlvbjpOT10pOworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9w
dE5TKFtbVGVzdEFwcGxlUGF5QXZhaWxhYmxlU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGlu
aXRXaXRoQVBJc0F2YWlsYWJsZUV4cGVjdGF0aW9uOllFUyBjYW5NYWtlUGF5bWVudHNFeHBlY3Rh
dGlvbjpZRVNdKTsKICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0
IGFsbG9jXSBpbml0V2l0aFNvdXJjZTp1c2VyU2NyaXB0U291cmNlIGluamVjdGlvblRpbWU6V0tV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5OllF
U10pOwogCiAgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dl
YlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNz
TmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0
aW5nOllFU107CkBAIC0xNDgsMTEgKzE0OCwxMSBAQCBURVNUKEFwcGxlUGF5LCBVc2VyU2NyaXB0
QXREb2N1bWVudFN0YXJ0RGlzYWJsZXNBcHBsZVBheSkKICAgICBbVGVzdFByb3RvY29sIHVucmVn
aXN0ZXJdOwogfQogCi1URVNUKEFwcGxlUGF5LCBVc2VyU2NyaXB0QXREb2N1bWVudEVuZERpc2Fi
bGVzQXBwbGVQYXkpCitURVNUKEFwcGxlUGF5LCBVc2VyU2NyaXB0QXREb2N1bWVudEVuZERvZXNO
b3REaXNhYmxlQXBwbGVQYXkpCiB7CiAgICAgW1Rlc3RQcm90b2NvbCByZWdpc3RlcldpdGhTY2hl
bWU6QCJodHRwcyJdOwogICAgIAotICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtb
VGVzdEFwcGxlUGF5QXZhaWxhYmxlU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRo
QVBJc0F2YWlsYWJsZUV4cGVjdGF0aW9uOk5PIGNhbk1ha2VQYXltZW50c0V4cGVjdGF0aW9uOk5P
XSk7CisgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0QXBwbGVQYXlBdmFp
bGFibGVTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhBUElzQXZhaWxhYmxlRXhw
ZWN0YXRpb246WUVTIGNhbk1ha2VQYXltZW50c0V4cGVjdGF0aW9uOllFU10pOwogICAgIGF1dG8g
dXNlclNjcmlwdCA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2NdIGluaXRXaXRoU291cmNl
OnVzZXJTY3JpcHRTb3VyY2UgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1l
QXREb2N1bWVudEVuZCBmb3JNYWluRnJhbWVPbmx5OllFU10pOwogICAgIAogICAgIFdLV2ViVmll
d0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBf
dGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1
Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOwpAQCAtMTY5LDEx
ICsxNjksMTEgQEAgVEVTVChBcHBsZVBheSwgVXNlclNjcmlwdEF0RG9jdW1lbnRFbmREaXNhYmxl
c0FwcGxlUGF5KQogICAgIFtUZXN0UHJvdG9jb2wgdW5yZWdpc3Rlcl07CiB9CiAKLVRFU1QoQXBw
bGVQYXksIFVzZXJBZ2VudFNjcmlwdEV2YWx1YXRpb25EaXNhYmxlc0FwcGxlUGF5KQorVEVTVChB
cHBsZVBheSwgVXNlckFnZW50U2NyaXB0RXZhbHVhdGlvbkRvZXNOb3REaXNhYmxlQXBwbGVQYXkp
CiB7CiAgICAgW1Rlc3RQcm90b2NvbCByZWdpc3RlcldpdGhTY2hlbWU6QCJodHRwcyJdOwogCi0g
ICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0QXBwbGVQYXlBdmFpbGFibGVT
Y3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhBUElzQXZhaWxhYmxlRXhwZWN0YXRp
b246WUVTIGNhbk1ha2VQYXltZW50c0V4cGVjdGF0aW9uOk5PXSk7CisgICAgYXV0byBtZXNzYWdl
SGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0QXBwbGVQYXlBdmFpbGFibGVTY3JpcHRNZXNzYWdlSGFu
ZGxlciBhbGxvY10gaW5pdFdpdGhBUElzQXZhaWxhYmxlRXhwZWN0YXRpb246WUVTIGNhbk1ha2VQ
YXltZW50c0V4cGVjdGF0aW9uOllFU10pOwogCiAgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAq
Y29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRp
b25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxz
IiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CiAgICAgW2NvbmZpZ3VyYXRpb24udXNlckNv
bnRlbnRDb250cm9sbGVyIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdl
dCgpIG5hbWU6QCJ0ZXN0QXBwbGVQYXkiXTsKQEAgLTE5MCwxMSArMTkwLDExIEBAIFRFU1QoQXBw
bGVQYXksIFVzZXJBZ2VudFNjcmlwdEV2YWx1YXRpb25EaXNhYmxlc0FwcGxlUGF5KQogICAgIFtU
ZXN0UHJvdG9jb2wgdW5yZWdpc3Rlcl07CiB9CiAKLVRFU1QoQXBwbGVQYXksIFVzZXJBZ2VudFNj
cmlwdEV2YWx1YXRpb25EaXNhYmxlc0FwcGxlUGF5SW5FeGlzdGluZ09iamVjdHMpCitURVNUKEFw
cGxlUGF5LCBVc2VyQWdlbnRTY3JpcHRFdmFsdWF0aW9uRG9lc05vdERpc2FibGVBcHBsZVBheUlu
RXhpc3RpbmdPYmplY3RzKQogewogICAgIFtUZXN0UHJvdG9jb2wgcmVnaXN0ZXJXaXRoU2NoZW1l
OkAiaHR0cHMiXTsKIAotICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdEFw
cGxlUGF5QXZhaWxhYmxlU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoQVBJc0F2
YWlsYWJsZUV4cGVjdGF0aW9uOllFUyBjYW5NYWtlUGF5bWVudHNFeHBlY3RhdGlvbjpOT10pOwor
ICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdEFwcGxlUGF5QXZhaWxhYmxl
U2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoQVBJc0F2YWlsYWJsZUV4cGVjdGF0
aW9uOllFUyBjYW5NYWtlUGF5bWVudHNFeHBlY3RhdGlvbjpZRVNdKTsKIAogICAgIFdLV2ViVmll
d0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBf
dGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1
Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOwogICAgIFtjb25m
aWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpt
ZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEFwcGxlUGF5Il07CkBAIC0yMDUsNyArMjA1
LDcgQEAgVEVTVChBcHBsZVBheSwgVXNlckFnZW50U2NyaXB0RXZhbHVhdGlvbkRpc2FibGVzQXBw
bGVQYXlJbkV4aXN0aW5nT2JqZWN0cykKICAgICBVdGlsOjpydW4oJmlzRG9uZSk7CiAKICAgICBp
c0RvbmUgPSBmYWxzZTsKLSAgICBbbWVzc2FnZUhhbmRsZXIgc2V0Q2FuTWFrZVBheW1lbnRzRXhw
ZWN0YXRpb246Tk9dOworICAgIFttZXNzYWdlSGFuZGxlciBzZXRDYW5NYWtlUGF5bWVudHNFeHBl
Y3RhdGlvbjpZRVNdOwogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50
LmxvY2F0aW9uLmhhc2ggPSAnI3Rlc3QnIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogCiAgICAg
VXRpbDo6cnVuKCZpc0RvbmUpOwpAQCAtMjQwLDE0ICsyNDAsOSBAQCBzdGF0aWMgdm9pZCBydW5B
Y3RpdmVTZXNzaW9uVGVzdChOU1VSTCAqdXJsLCBCT09MIHNob3VsZEJsb2NrU2NyaXB0cykKICAg
ICBbVGVzdFByb3RvY29sIHVucmVnaXN0ZXJdOwogfQogCi1URVNUKEFwcGxlUGF5LCBBY3RpdmVT
ZXNzaW9uQmxvY2tzVXNlckFnZW50U2NyaXB0cykKK1RFU1QoQXBwbGVQYXksIENhbk1ha2VQYXlt
ZW50c0RvZXNOb3RCbG9ja1VzZXJBZ2VudFNjcmlwdHMpCiB7Ci0gICAgcnVuQWN0aXZlU2Vzc2lv
blRlc3QoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2J1bmRsZS1maWxlL2FwcGxlLXBh
eS1hY3RpdmUtc2Vzc2lvbi5odG1sIl0sIFlFUyk7Ci19Ci0KLVRFU1QoQXBwbGVQYXksIENhbk1h
a2VQYXltZW50c0Jsb2Nrc1VzZXJBZ2VudFNjcmlwdHMpCi17Ci0gICAgcnVuQWN0aXZlU2Vzc2lv
blRlc3QoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2J1bmRsZS1maWxlL2FwcGxlLXBh
eS1jYW4tbWFrZS1wYXltZW50cy5odG1sIl0sIFlFUyk7CisgICAgcnVuQWN0aXZlU2Vzc2lvblRl
c3QoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2J1bmRsZS1maWxlL2FwcGxlLXBheS1j
YW4tbWFrZS1wYXltZW50cy5odG1sIl0sIE5PKTsKIH0KIAogVEVTVChBcHBsZVBheSwgQ2FuTWFr
ZVBheW1lbnRzRmFsc2VEb2VzTm90QmxvY2tVc2VyQWdlbnRTY3JpcHRzKQpAQCAtMjU1LDkgKzI1
MCw5IEBAIFRFU1QoQXBwbGVQYXksIENhbk1ha2VQYXltZW50c0ZhbHNlRG9lc05vdEJsb2NrVXNl
ckFnZW50U2NyaXB0cykKICAgICBydW5BY3RpdmVTZXNzaW9uVGVzdChbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImh0dHBzOi8vYnVuZGxlLWZpbGUvYXBwbGUtcGF5LWNhbi1tYWtlLXBheW1lbnRzLmh0
bWw/ZmFsc2UiXSwgTk8pOwogfQogCi1URVNUKEFwcGxlUGF5LCBDYW5NYWtlUGF5bWVudHNXaXRo
QWN0aXZlQ2FyZEJsb2Nrc1VzZXJBZ2VudFNjcmlwdHMpCitURVNUKEFwcGxlUGF5LCBDYW5NYWtl
UGF5bWVudHNXaXRoQWN0aXZlQ2FyZERvZXNOb3RCbG9ja1VzZXJBZ2VudFNjcmlwdHMpCiB7Ci0g
ICAgcnVuQWN0aXZlU2Vzc2lvblRlc3QoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2J1
bmRsZS1maWxlL2FwcGxlLXBheS1jYW4tbWFrZS1wYXltZW50cy13aXRoLWFjdGl2ZS1jYXJkLmh0
bWwiXSwgWUVTKTsKKyAgICBydW5BY3RpdmVTZXNzaW9uVGVzdChbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImh0dHBzOi8vYnVuZGxlLWZpbGUvYXBwbGUtcGF5LWNhbi1tYWtlLXBheW1lbnRzLXdpdGgt
YWN0aXZlLWNhcmQuaHRtbCJdLCBOTyk7CiB9CiAKIFRFU1QoQXBwbGVQYXksIENhbk1ha2VQYXlt
ZW50c1dpdGhBY3RpdmVDYXJkRmFsc2VEb2VzTm90QmxvY2tVc2VyQWdlbnRTY3JpcHRzKQpAQCAt
MjY1LDkgKzI2MCw5IEBAIFRFU1QoQXBwbGVQYXksIENhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVD
YXJkRmFsc2VEb2VzTm90QmxvY2tVc2VyQWdlbnRTY3JpcHRzKQogICAgIHJ1bkFjdGl2ZVNlc3Np
b25UZXN0KFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9idW5kbGUtZmlsZS9hcHBsZS1w
YXktY2FuLW1ha2UtcGF5bWVudHMtd2l0aC1hY3RpdmUtY2FyZC5odG1sP2ZhbHNlIl0sIE5PKTsK
IH0KIAotVEVTVChBcHBsZVBheSwgQ2FuTWFrZVBheW1lbnRCbG9ja3NVc2VyQWdlbnRTY3JpcHRz
KQorVEVTVChBcHBsZVBheSwgQ2FuTWFrZVBheW1lbnREb2VzTm90QmxvY2tVc2VyQWdlbnRTY3Jp
cHRzKQogewotICAgIHJ1bkFjdGl2ZVNlc3Npb25UZXN0KFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
aHR0cHM6Ly9idW5kbGUtZmlsZS9hcHBsZS1wYXktY2FuLW1ha2UtcGF5bWVudC5odG1sIl0sIFlF
Uyk7CisgICAgcnVuQWN0aXZlU2Vzc2lvblRlc3QoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRw
czovL2J1bmRsZS1maWxlL2FwcGxlLXBheS1jYW4tbWFrZS1wYXltZW50Lmh0bWwiXSwgTk8pOwog
fQogCiBURVNUKEFwcGxlUGF5LCBDYW5NYWtlUGF5bWVudEZhbHNlRG9lc05vdEJsb2NrVXNlckFn
ZW50U2NyaXB0cykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvYXBwbGUtcGF5LWFjdGl2ZS1zZXNzaW9uLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1hY3RpdmUtc2Vzc2lvbi5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjk2NjBjNTU5NTg1YzNjMjFlMmJmMDEyZTRjOGI1YmEy
N2JkYjVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwbGUtcGF5LWFjdGl2ZS1zZXNz
aW9uLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgot
PGJvZHk+Ci08c2NyaXB0PgotICAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLnN1
cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXkgPSBmYWxzZTsKLSAgICBpbnRlcm5hbHMuc2V0QXBw
bGVQYXlJc0FjdGl2ZSgpOwotICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RB
cHBsZVBheS5wb3N0TWVzc2FnZSgiZG9uZSIpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1hdmFpbGFiaWxpdHkt
ZXhpc3Rpbmctb2JqZWN0Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL2FwcGxlLXBheS1hdmFpbGFiaWxpdHktZXhpc3Rpbmctb2JqZWN0Lmh0bWwKaW5kZXggZTM1
OTIwN2I5NTczYTM5N2RjNGVlOTI5YzFiMGM1OWUyNTM3ZjJhZi4uNjVhODA3N2YyNGFiNTRiNjZj
N2ZkNGZlNGRkNDc2NTQ2YTFjNTlmYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXktYXZhaWxhYmlsaXR5LWV4aXN0aW5nLW9iamVjdC5o
dG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwbGUtcGF5
LWF2YWlsYWJpbGl0eS1leGlzdGluZy1vYmplY3QuaHRtbApAQCAtMywzMCArMywyNiBAQAogPHNj
cmlwdCBzcmM9ImFwcGxlLXBheS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIGNvbnN0IGV2
ZW50TGlzdGVuZXIgPSBhc3luYyAoKSA9PiB7Ci0gICAgICAgIGludGVybmFscy5tb2NrUGF5bWVu
dENvb3JkaW5hdG9yLnN1cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXkgPSBmYWxzZTsKLQogICAg
ICAgICBjb25zdCBhcHBsZVBheVNlc3Npb25BdmFpbGFibGUgPSAhIXdpbmRvdy5BcHBsZVBheVNl
c3Npb247CiAgICAgICAgIGNvbnN0IHBheW1lbnRSZXF1ZXN0QXZhaWxhYmxlID0gISF3aW5kb3cu
UGF5bWVudFJlcXVlc3Q7Ci0gICAgICAgIGNvbnN0IHN1cHBvcnRzVmVyc2lvbiA9IEFwcGxlUGF5
U2Vzc2lvbi5zdXBwb3J0c1ZlcnNpb24oMSk7Ci0KLSAgICAgICAgaWYgKCF3aW5kb3cud2tQYXlt
ZW50UmVxdWVzdCkgewotICAgICAgICAgICAgd2tQYXltZW50UmVxdWVzdCA9IG5ldyBQYXltZW50
UmVxdWVzdChbYXBwbGVQYXlNZXRob2QoKV0sIGFwcGxlUGF5RGV0YWlscyk7Ci0KLSAgICAgICAg
ICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RBcHBsZVBheS5wb3N0TWVzc2Fn
ZSh7Ci0gICAgICAgICAgICAgICAgYXBwbGVQYXlTZXNzaW9uQXZhaWxhYmxlLAotICAgICAgICAg
ICAgICAgIHBheW1lbnRSZXF1ZXN0QXZhaWxhYmxlLAotICAgICAgICAgICAgICAgIHN1cHBvcnRz
VmVyc2lvbiwKLSAgICAgICAgICAgIH0pOwotCisgICAgICAgIGlmICghYXBwbGVQYXlTZXNzaW9u
QXZhaWxhYmxlIHx8ICFwYXltZW50UmVxdWVzdEF2YWlsYWJsZSkgeworICAgICAgICAgICAgd2lu
ZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEFwcGxlUGF5LnBvc3RNZXNzYWdlKHsgYXBw
bGVQYXlTZXNzaW9uQXZhaWxhYmxlLCBwYXltZW50UmVxdWVzdEF2YWlsYWJsZSB9KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIGNvbnN0IHN1cHBvcnRzVmVyc2lv
biA9IEFwcGxlUGF5U2Vzc2lvbi5zdXBwb3J0c1ZlcnNpb24oMSk7CisgICAgICAgIGNvbnN0IGNh
bk1ha2VQYXltZW50cyA9IEFwcGxlUGF5U2Vzc2lvbi5jYW5NYWtlUGF5bWVudHMoKTsKKyAgICAg
ICAgY29uc3QgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQgPSBhd2FpdCBBcHBsZVBheVNl
c3Npb24uY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoJycpOworCisgICAgICAgIHdpbmRv
dy53a1BheW1lbnRSZXF1ZXN0ID8/PSBuZXcgUGF5bWVudFJlcXVlc3QoW2FwcGxlUGF5TWV0aG9k
KCldLCBhcHBsZVBheURldGFpbHMpOwogICAgICAgICBjb25zdCBjYW5NYWtlUGF5bWVudCA9IGF3
YWl0IHdrUGF5bWVudFJlcXVlc3QuY2FuTWFrZVBheW1lbnQoKTsKIAogICAgICAgICB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0QXBwbGVQYXkucG9zdE1lc3NhZ2UoewogICAgICAg
ICAgICAgYXBwbGVQYXlTZXNzaW9uQXZhaWxhYmxlLAogICAgICAgICAgICAgcGF5bWVudFJlcXVl
c3RBdmFpbGFibGUsCiAgICAgICAgICAgICBzdXBwb3J0c1ZlcnNpb24sCisgICAgICAgICAgICBj
YW5NYWtlUGF5bWVudHMsCisgICAgICAgICAgICBjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2Fy
ZCwKICAgICAgICAgICAgIGNhbk1ha2VQYXltZW50LAogICAgICAgICB9KTsKICAgICB9OwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXkt
YXZhaWxhYmlsaXR5LWluLWlmcmFtZS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9hcHBsZS1wYXktYXZhaWxhYmlsaXR5LWluLWlmcmFtZS5odG1sCmluZGV4IGY5
MGE2ZjZjNzM1M2JmZWM4NzUxMmRhMzk4ZmUxZWNkZDgyOGU3YzYuLjliYzg3NDBhMThmNTA1OWYx
OGRkOWUzZWZjZDA5ZWZjYmZhNDU4NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS1pbi1pZnJhbWUuaHRtbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1hdmFp
bGFiaWxpdHktaW4taWZyYW1lLmh0bWwKQEAgLTEsNyArMSw2IEBACiA8IURPQ1RZUEUgaHRtbD4K
IDxib2R5PgogPHNjcmlwdD4KLSAgICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5z
dXBwb3J0c1VucmVzdHJpY3RlZEFwcGxlUGF5ID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PT0g
Ij91bnJlc3RyaWN0ZWQiID8gdHJ1ZSA6IGZhbHNlOwogICAgIGxvYWRBcHBsZVBheUZyYW1lID0g
KCkgPT4gewogICAgICAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdp
ZnJhbWUnKTsKICAgICAgICAgaWZyYW1lLnNyYyA9ICdhcHBsZS1wYXktYXZhaWxhYmlsaXR5Lmh0
bWwnICsgd2luZG93LmxvY2F0aW9uLnNlYXJjaDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS5odG1sIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXktYXZhaWxhYmlsaXR5
Lmh0bWwKaW5kZXggMTgyYzYyZmNhNzQ0ZTBlYzM4Yzg5ZjZhMDQyMzhjNGQ3OGE1NGYzZS4uZThi
OGMzNTAzM2MzN2I3YzNjNjg2Y2FjZWQxMzliNWEwM2RmNDFlNSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXktYXZhaWxhYmlsaXR5Lmh0
bWwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXkt
YXZhaWxhYmlsaXR5Lmh0bWwKQEAgLTMsOCArMyw2IEBACiA8c2NyaXB0IHNyYz0iYXBwbGUtcGF5
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xv
YWQnLCBhc3luYyAoKSA9PiB7Ci0gICAgICAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5h
dG9yLnN1cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXkgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNo
ID09PSAiP3VucmVzdHJpY3RlZCIgPyB0cnVlIDogZmFsc2U7Ci0KICAgICAgICAgY29uc3QgYXBw
bGVQYXlTZXNzaW9uQXZhaWxhYmxlID0gISF3aW5kb3cuQXBwbGVQYXlTZXNzaW9uOwogICAgICAg
ICBjb25zdCBwYXltZW50UmVxdWVzdEF2YWlsYWJsZSA9ICEhd2luZG93LlBheW1lbnRSZXF1ZXN0
OwogICAgICAgICBpZiAoIWFwcGxlUGF5U2Vzc2lvbkF2YWlsYWJsZSB8fCAhcGF5bWVudFJlcXVl
c3RBdmFpbGFibGUpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvYXBwbGUtcGF5LWNhbi1tYWtlLXBheW1lbnQuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwbGUtcGF5LWNhbi1tYWtlLXBheW1lbnQuaHRtbApp
bmRleCA5ODkzMDIxYjNkZGYxMzU1NDE2ZDJiNzBlMWNmZmNhMzYxOWNhNGNhLi40YTg3NDYxZjNl
YjA0OWIwMzU1N2Y3MDc1NDY0ODkzMjc4YjcwZDhjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1jYW4tbWFrZS1wYXltZW50Lmh0bWwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXktY2Fu
LW1ha2UtcGF5bWVudC5odG1sCkBAIC0yLDcgKzIsNiBAQAogPGJvZHk+CiA8c2NyaXB0IHNyYz0i
YXBwbGUtcGF5LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0gICAgaW50ZXJuYWxzLm1vY2tQYXlt
ZW50Q29vcmRpbmF0b3Iuc3VwcG9ydHNVbnJlc3RyaWN0ZWRBcHBsZVBheSA9IGZhbHNlOwogICAg
IGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLnNldENhbk1ha2VQYXltZW50cyh3aW5k
b3cubG9jYXRpb24uc2VhcmNoID09PSAiP2ZhbHNlIiA/IGZhbHNlIDogdHJ1ZSk7CiAKICAgICBj
b25zdCBwYXltZW50UmVxdWVzdCA9IG5ldyBQYXltZW50UmVxdWVzdChbYXBwbGVQYXlNZXRob2Qo
KV0sIGFwcGxlUGF5RGV0YWlscyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1jYW4tbWFrZS1wYXltZW50cy13aXRoLWFjdGl2ZS1j
YXJkLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBh
eS1jYW4tbWFrZS1wYXltZW50cy13aXRoLWFjdGl2ZS1jYXJkLmh0bWwKaW5kZXggYzQ3YzNmYWM1
ZjNiNTVjNTVmYjQ5OWZjZjY4YmNhNzc3ZTY2MmRiNy4uM2EyNGY0NjdlNGM0ZjYxOTlmYzllMjE3
NTA1ZGU4ZTQxMGFiZjE0OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9hcHBsZS1wYXktY2FuLW1ha2UtcGF5bWVudHMtd2l0aC1hY3RpdmUtY2FyZC5o
dG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwbGUtcGF5
LWNhbi1tYWtlLXBheW1lbnRzLXdpdGgtYWN0aXZlLWNhcmQuaHRtbApAQCAtMSw3ICsxLDYgQEAK
IDwhRE9DVFlQRSBodG1sPgogPGJvZHk+CiA8c2NyaXB0PgotICAgIGludGVybmFscy5tb2NrUGF5
bWVudENvb3JkaW5hdG9yLnN1cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXkgPSBmYWxzZTsKICAg
ICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5zZXRDYW5NYWtlUGF5bWVudHNXaXRo
QWN0aXZlQ2FyZCh3aW5kb3cubG9jYXRpb24uc2VhcmNoID09PSAiP2ZhbHNlIiA/IGZhbHNlIDog
dHJ1ZSk7CiAgICAgQXBwbGVQYXlTZXNzaW9uLmNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJk
KCIiKS50aGVuKCgpID0+IHsKICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMu
dGVzdEFwcGxlUGF5LnBvc3RNZXNzYWdlKCJkb25lIik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1jYW4tbWFrZS1wYXltZW50cy5o
dG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXktY2Fu
LW1ha2UtcGF5bWVudHMuaHRtbAppbmRleCAyYWVhMWQ4YjQyYThlYjRhODcwNWU2OGUwNzcxYWI2
MzZmNjc5NWE3Li43M2ViYzBiYjM3YmFlNjdjM2NhYTRkNzIzNGRjOGFjYjc0ZjVkNzViIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1j
YW4tbWFrZS1wYXltZW50cy5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvYXBwbGUtcGF5LWNhbi1tYWtlLXBheW1lbnRzLmh0bWwKQEAgLTEsNyArMSw2IEBA
CiA8IURPQ1RZUEUgaHRtbD4KIDxib2R5PgogPHNjcmlwdD4KLSAgICBpbnRlcm5hbHMubW9ja1Bh
eW1lbnRDb29yZGluYXRvci5zdXBwb3J0c1VucmVzdHJpY3RlZEFwcGxlUGF5ID0gZmFsc2U7CiAg
ICAgaW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0b3Iuc2V0Q2FuTWFrZVBheW1lbnRzKHdp
bmRvdy5sb2NhdGlvbi5zZWFyY2ggPT09ICI/ZmFsc2UiID8gZmFsc2UgOiB0cnVlKTsKICAgICBB
cHBsZVBheVNlc3Npb24uY2FuTWFrZVBheW1lbnRzKCk7CiAgICAgd2luZG93LndlYmtpdC5tZXNz
YWdlSGFuZGxlcnMudGVzdEFwcGxlUGF5LnBvc3RNZXNzYWdlKCJkb25lIik7Cg==
</data>
<flag name="review"
          id="478015"
          type_id="1"
          status="+"
          setter="katherine_cheney"
    />
    <flag name="commit-queue"
          id="478016"
          type_id="3"
          status="+"
          setter="hi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451580</attachid>
            <date>2022-02-10 11:17:05 -0800</date>
            <delta_ts>2022-02-10 14:24:39 -0800</delta_ts>
            <desc>[fast-cq] Patch</desc>
            <filename>236254.diff</filename>
            <type>text/plain</type>
            <size>56692</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmYTFiYWM2YTgzZDUzMjA4NDY3Nzk1ZDE4MWM1ZDQ4ZmE3Zjc0ZjU3Li5k
NjJhMTRkOWUzMmY0YzBkZGQyM2Y2YWEwODUxMDNlNzA1NzJkZjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNzYgQEAKKzIwMjItMDItMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFBlcm1pdCBzaW11bHRhbmVvdXMgQXBwbGUgUGF5IGFuZCBzY3JpcHQgaW5q
ZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYyNTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3NzM2NzI3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IEthdGUgQ2hlbmV5LgorCisgICAgICAgIFRlc3RzOiBBcHBsZVBheS5BcHBsZVBheUF2
YWlsYWJsZUJ5RGVmYXVsdAorICAgICAgICAgICAgICAgQXBwbGVQYXkuQXBwbGVQYXlBdmFpbGFi
bGVJbkZyYW1lCisgICAgICAgICAgICAgICBBcHBsZVBheS5Vc2VyU2NyaXB0QXREb2N1bWVudFN0
YXJ0RG9lc05vdERpc2FibGVBcHBsZVBheQorICAgICAgICAgICAgICAgQXBwbGVQYXkuVXNlclNj
cmlwdEF0RG9jdW1lbnRFbmREb2VzTm90RGlzYWJsZUFwcGxlUGF5CisgICAgICAgICAgICAgICBB
cHBsZVBheS5Vc2VyQWdlbnRTY3JpcHRFdmFsdWF0aW9uRG9lc05vdERpc2FibGVBcHBsZVBheQor
ICAgICAgICAgICAgICAgQXBwbGVQYXkuVXNlckFnZW50U2NyaXB0RXZhbHVhdGlvbkRvZXNOb3RE
aXNhYmxlQXBwbGVQYXlJbkV4aXN0aW5nT2JqZWN0cworICAgICAgICAgICAgICAgQXBwbGVQYXku
Q2FuTWFrZVBheW1lbnRzRG9lc05vdEJsb2NrVXNlckFnZW50U2NyaXB0cworICAgICAgICAgICAg
ICAgQXBwbGVQYXkuQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmREb2VzTm90QmxvY2tVc2Vy
QWdlbnRTY3JpcHRzCisgICAgICAgICAgICAgICBBcHBsZVBheS5DYW5NYWtlUGF5bWVudERvZXNO
b3RCbG9ja1VzZXJBZ2VudFNjcmlwdHMKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZW5z
dXJlUGx1Z0luc0luamVjdGVkU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpo
YXNFdmFsdWF0ZWRVc2VyQWdlbnRTY3JpcHRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpzZXRIYXNFdmFsdWF0ZWRVc2VyQWdlbnRTY3JpcHRzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppc0FwcGxlUGF5QWN0aXZlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRBcHBsZVBheUlzQWN0aXZl
KTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIGxvZ2ljIHRoYXQgdHJhY2tzIHNjcmlwdCBpbmpl
Y3Rpb24gYWN0aXZpdHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlQXN5bmNocm9u
b3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250
cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNlckFnZW50
U2NyaXB0cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVBheW1lbnRDb29yZGluYXRvckNsaWVudDo6c3Vw
cG9ydHNVbnJlc3RyaWN0ZWRBcHBsZVBheSk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9GcmFt
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdEltbWVkaWF0
ZWx5KToKKyAgICAgICAgUmVtb3ZlIGxvZ2ljIHRoYXQgZGlzYWJsZXMgc2NyaXB0IGluamVjdGlv
biBhZnRlciBhbiBBcHBsZSBQYXkgc2Vzc2lvbiBpcyBzdGFydGVkLgorCisgICAgICAgICogTW9k
dWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL2Fw
cGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50
Q29vcmRpbmF0b3I6OmNhbk1ha2VQYXltZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50
Q29vcmRpbmF0b3I6OmNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKToKKyAgICAgICAgKFdl
YkNvcmU6OlBheW1lbnRDb29yZGluYXRvcjo6YmVnaW5QYXltZW50U2Vzc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0b3I6OnNob3VsZEVuYWJsZUFwcGxlUGF5QVBJcyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0b3I6OnNl
dEFwcGxlUGF5SXNBY3RpdmVJZkFsbG93ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UGF5bWVudENvb3JkaW5hdG9yOjpzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6
OnVzZXJBZ2VudFNjcmlwdHNCbG9ja2VkRXJyb3JNZXNzYWdlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgUmVtb3ZlIGxvZ2ljIHRoYXQgdHJhY2tzIEFwcGxlIFBheSBhY3Rpdml0eS4KKworICAg
ICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50U2Vzc2lv
bjo6ZW5hYmxlZEZvckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvcGF5bWVu
dHJlcXVlc3QvUGF5bWVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudEhh
bmRsZXI6OmVuYWJsZWRGb3JDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3Bh
eW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3BheW1l
bnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0Lmg6CisgICAgICAgICogTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50UmVxdWVz
dDo6ZW5hYmxlZEZvckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgbG9naWMgdGhh
dCBkaXNhYmxlcyBgQXBwbGVQYXlTZXNzaW9uYC9gUGF5bWVudFJlcXVlc3RgIGFmdGVyIHNjcmlw
dCBpbmplY3Rpb24uCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEFwcGxlUGF5SXNBY3RpdmUpOiBEZWxl
dGVkLgorICAgICAgICAqIHRlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5pZGw6CisgICAg
ICAgICogdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpzdXBwb3J0c1VucmVzdHJpY3RlZEFwcGxlUGF5KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tQYXltZW50Q29vcmRpbmF0b3I6OnNldFN1
cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXkpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgdGVz
dGluZyBzdXBwb3J0IHNpbmNlIGFsbCB1c2VzIG9mIHRoZXNlIGhhdmUgYmVlbiByZW1vdmVkIChh
Ym92ZSkuCisKIDIwMjItMDItMDggIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAg
ICAgICAgIENvbnZlcnNpb24gdG8gYSBjb2xvciBzcGFjZSB3aXRoIGEgc21hbGxlciBnYW11dCBz
aG91bGQgcGVyZm9ybSBnYW11dCBtYXBwaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI5MzZkYzVmMjBmMWJjN2E4
OTQyODVkN2E0MDhkOWQwODc0MDQ4YzYuLjI3ZDdhYTg3Zjc0OGVmZWJhYWUxZTllMzk4MDQ4OGNh
ZGI5YWNkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDItMTAgIERldmluIFJv
dXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFBlcm1pdCBzaW11bHRhbmVvdXMg
QXBwbGUgUGF5IGFuZCBzY3JpcHQgaW5qZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYyNTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg3
NzM2NzI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEthdGUgQ2hlbmV5LgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvcjo6c3VwcG9ydHNVbnJlc3RyaWN0ZWRBcHBsZVBh
eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRv
cjo6dXNlckFnZW50U2NyaXB0c0Jsb2NrZWRFcnJvck1lc3NhZ2UgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICBSZW1vdmUgbG9naWMgdGhhdCB0cmFja3MgQXBwbGUgUGF5IGFjdGl2aXR5LgorCiAy
MDIyLTAyLTA4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBM
aWJXZWJSVENDb2RlY3MgU2hhcmVkVmlkZW9GcmFtZVdyaXRlcnMgY2FuIGRlYWRsb2NrIGluIGNh
c2Ugb2YgR1BVUHJvY2VzcyBjcmFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGI2
N2RiY2NiMzE2NmRlNjczODE4MDU4N2UyODgxOTM4MWU1ZWQ4ZDYuLjUzYWVhZmU2NTY4NGZmNGRh
YWZiOTllNmIyYzJkNGI1MmFhNDBlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMi0wMi0xMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CisKKyAgICAgICAgUGVybWl0IHNpbXVsdGFuZW91cyBBcHBsZSBQYXkgYW5kIHNjcmlwdCBp
bmplY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNjI1NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc3MzY3Mjc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgS2F0ZSBDaGVuZXkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JDbGllbnQubW06CisgICAgICAgIChXZWJQYXltZW50Q29vcmRpbmF0b3JD
bGllbnQ6OnN1cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICBSZW1vdmUgbG9naWMgdGhhdCB0cmFja3MgQXBwbGUgUGF5IGFjdGl2aXR5LgorCiAyMDIy
LTAyLTA2ICBUeWxlciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6
IEFkZCBpbnRlcm5hbC1vbmx5IGZsYWcgdG8gZW5hYmxlIFdJUCBkaXNwbGF5OiBjb250ZW50cyBz
dXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5
U2Vzc2lvbi5jcHAKaW5kZXggMjBmOTJiYTI1M2JlODQ5OTc4N2NkMjFlMGQyNWViMDhkYWJlN2Q5
ZC4uNmNiZmNmMDc5NzUwMWE5OTYyOWZjYzY5MzZiNmYwNTBmMGNmYzg5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcApAQCAt
MzY5LDcgKzM2OSw3IEBAIEV4Y2VwdGlvbk9yPGJvb2w+IEFwcGxlUGF5U2Vzc2lvbjo6Y2FuTWFr
ZVBheW1lbnRzKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIAotICAgIHJldHVybiBwYWdl
LT5wYXltZW50Q29vcmRpbmF0b3IoKS5jYW5NYWtlUGF5bWVudHMoZG9jdW1lbnQpOworICAgIHJl
dHVybiBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5jYW5NYWtlUGF5bWVudHMoKTsKIH0KIAog
RXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlTZXNzaW9uOjpjYW5NYWtlUGF5bWVudHNXaXRoQWN0
aXZlQ2FyZChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlm
aWVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBhc3NlZFByb21pc2UpCkBAIC0zODUsNyArMzg1
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlTZXNzaW9uOjpjYW5NYWtlUGF5bWVudHNX
aXRoQWN0aXZlQ2FyZChEb2N1bWVudCYgZG9jdW0KICAgICAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIAogICAgICAgICBhdXRvJiBwYXltZW50Q29vcmRp
bmF0b3IgPSBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKTsKLSAgICAgICAgYm9vbCBjYW5NYWtl
UGF5bWVudHMgPSBwYXltZW50Q29vcmRpbmF0b3IuY2FuTWFrZVBheW1lbnRzKGRvY3VtZW50KTsK
KyAgICAgICAgYm9vbCBjYW5NYWtlUGF5bWVudHMgPSBwYXltZW50Q29vcmRpbmF0b3IuY2FuTWFr
ZVBheW1lbnRzKCk7CiAKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm9taXNl
LCBjYW5NYWtlUGF5bWVudHNdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm9taXNlLT5yZXNv
bHZlPElETEJvb2xlYW4+KGNhbk1ha2VQYXltZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5pZGwKaW5kZXggZjI3OTg3MDczYTBm
NzM1MmIzNGNkNjVjOGQwNWNkMTBjNjI2M2M4Ni4uM2U2MTIyNGJhZGRjOTQ0ZTU3OGI4ZWJlZmVh
OGRlZTg0MjhhY2MwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNlc3Npb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlTZXNzaW9uLmlkbApAQCAtMjcsNyArMjcsNiBAQAogICAgIEFjdGl2ZURPTU9i
amVjdCwKICAgICBDb25kaXRpb25hbD1BUFBMRV9QQVksCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1B
cHBsZVBheUVuYWJsZWQsCi0gICAgRW5hYmxlZEZvckNvbnRleHQsCiAgICAgRXhwb3NlZD1XaW5k
b3cKIF0gaW50ZXJmYWNlIEFwcGxlUGF5U2Vzc2lvbiA6IEV2ZW50VGFyZ2V0IHsKICAgICBbQ2Fs
bFdpdGg9Q3VycmVudERvY3VtZW50XSBjb25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIHZlcnNpb24s
IEFwcGxlUGF5UGF5bWVudFJlcXVlc3QgcGF5bWVudFJlcXVlc3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4
IGU5OTVhMmIxZTQ1NmNkOWZkMzlkMjQ4MDk3NTBmNjBiYTcxZmMzYWYuLjFhMzI3YTk0YjBiNzFk
NGVjNzVlYWNjOGQ0YWQ3OGE5MWI5ZmY2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKQEAgLTY2LDE4ICs2Niwx
MSBAQCBib29sIFBheW1lbnRDb29yZGluYXRvcjo6c3VwcG9ydHNWZXJzaW9uKERvY3VtZW50Jiwg
dW5zaWduZWQgdmVyc2lvbikgY29uc3QKICAgICByZXR1cm4gc3VwcG9ydHNWZXJzaW9uOwogfQog
Ci1ib29sIFBheW1lbnRDb29yZGluYXRvcjo6Y2FuTWFrZVBheW1lbnRzKERvY3VtZW50JiBkb2N1
bWVudCkKK2Jvb2wgUGF5bWVudENvb3JkaW5hdG9yOjpjYW5NYWtlUGF5bWVudHMoKQogewogICAg
IGF1dG8gY2FuTWFrZVBheW1lbnRzID0gbV9jbGllbnQuY2FuTWFrZVBheW1lbnRzKCk7CiAgICAg
UEFZTUVOVF9DT09SRElOQVRPUl9SRUxFQVNFX0xPRygiY2FuTWFrZVBheW1lbnRzKCkgLT4gJWQi
LCBjYW5NYWtlUGF5bWVudHMpOwotCi0gICAgaWYgKCFjYW5NYWtlUGF5bWVudHMpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGlmICghc2V0QXBwbGVQYXlJc0FjdGl2ZUlmQWxsb3dlZChk
b2N1bWVudCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOworICAg
IHJldHVybiBjYW5NYWtlUGF5bWVudHM7CiB9CiAKIHZvaWQgUGF5bWVudENvb3JkaW5hdG9yOjpj
YW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0
cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQpAQCAtOTEsNyArODQsNyBAQCB2b2lkIFBheW1lbnRDb29yZGluYXRvcjo6Y2Fu
TWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdAogICAg
ICAgICBpZiAoIWNhbk1ha2VQYXltZW50cykKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihmYWxzZSk7CiAKLSAgICAgICAgaWYgKCFkb2N1bWVudCB8fCAhc2V0QXBwbGVQYXlJ
c0FjdGl2ZUlmQWxsb3dlZCgqZG9jdW1lbnQpKQorICAgICAgICBpZiAoIWRvY3VtZW50KQogICAg
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIAogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih0cnVlKTsKQEAgLTEwOCw5ICsxMDEsNiBAQCBib29sIFBheW1lbnRDb29y
ZGluYXRvcjo6YmVnaW5QYXltZW50U2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFBheW1lbnRT
ZXNzaW9uJgogewogICAgIEFTU0VSVCghbV9hY3RpdmVTZXNzaW9uKTsKIAotICAgIGlmICghc2V0
QXBwbGVQYXlJc0FjdGl2ZUlmQWxsb3dlZChkb2N1bWVudCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQogICAgIFZlY3RvcjxVUkw+IGxpbmtJY29uVVJMczsKICAgICBmb3IgKGF1dG8mIGljb24g
OiBMaW5rSWNvbkNvbGxlY3RvciB7IGRvY3VtZW50IH0uaWNvbnNPZlR5cGVzKHsgTGlua0ljb25U
eXBlOjpUb3VjaEljb24sIExpbmtJY29uVHlwZTo6VG91Y2hQcmVjb21wb3NlZEljb24gfSkpCiAg
ICAgICAgIGxpbmtJY29uVVJMcy5hcHBlbmQoaWNvbi51cmwpOwpAQCAtMjg1LDQ5ICsyNzUsNiBA
QCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gUGF5bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZWRQYXlt
ZW50TmV0d29yayhEb2N1bWVudCYsIHVucwogICAgIHJldHVybiBtX2NsaWVudC52YWxpZGF0ZWRQ
YXltZW50TmV0d29yayhwYXltZW50TmV0d29yayk7CiB9CiAKLWJvb2wgUGF5bWVudENvb3JkaW5h
dG9yOjpzaG91bGRFbmFibGVBcHBsZVBheUFQSXMoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAot
ewotICAgIGlmIChtX2NsaWVudC5zdXBwb3J0c1VucmVzdHJpY3RlZEFwcGxlUGF5KCkpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgYm9vbCBzaG91bGRFbmFibGVBUElzID0gdHJ1ZTsKLSAg
ICBkb2N1bWVudC5wYWdlKCktPnVzZXJDb250ZW50UHJvdmlkZXIoKS5mb3JFYWNoVXNlclNjcmlw
dChbJl0oRE9NV3JhcHBlcldvcmxkJiwgY29uc3QgVXNlclNjcmlwdCYpIHsKLSAgICAgICAgc2hv
dWxkRW5hYmxlQVBJcyA9IGZhbHNlOwotICAgIH0pOwotCi0gICAgaWYgKCFzaG91bGRFbmFibGVB
UElzKQotICAgICAgICBQQVlNRU5UX0NPT1JESU5BVE9SX1JFTEVBU0VfTE9HKCJzaG91bGRFbmFi
bGVBcHBsZVBheUFQSXMoKSAtPiBmYWxzZSAodXNlciBzY3JpcHRzKSIpOwotCi0gICAgcmV0dXJu
IHNob3VsZEVuYWJsZUFQSXM7Ci19Ci0KLWJvb2wgUGF5bWVudENvb3JkaW5hdG9yOjpzZXRBcHBs
ZVBheUlzQWN0aXZlSWZBbGxvd2VkKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKLXsKLSAgICBh
dXRvIGhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMgPSBkb2N1bWVudC5oYXNFdmFsdWF0ZWRV
c2VyQWdlbnRTY3JpcHRzKCk7Ci0gICAgYXV0byBpc1J1bm5pbmdVc2VyU2NyaXB0cyA9IGRvY3Vt
ZW50LmlzUnVubmluZ1VzZXJTY3JpcHRzKCk7Ci0gICAgYXV0byBzdXBwb3J0c1VucmVzdHJpY3Rl
ZEFwcGxlUGF5ID0gbV9jbGllbnQuc3VwcG9ydHNVbnJlc3RyaWN0ZWRBcHBsZVBheSgpOwotCi0g
ICAgaWYgKCFzdXBwb3J0c1VucmVzdHJpY3RlZEFwcGxlUGF5ICYmIChoYXNFdmFsdWF0ZWRVc2Vy
QWdlbnRTY3JpcHRzIHx8IGlzUnVubmluZ1VzZXJTY3JpcHRzKSkgewotICAgICAgICBBU1NFUlQo
IWRvY3VtZW50LmlzQXBwbGVQYXlBY3RpdmUoKSk7Ci0gICAgICAgIFBBWU1FTlRfQ09PUkRJTkFU
T1JfUkVMRUFTRV9MT0coInNldEFwcGxlUGF5SXNBY3RpdmVJZkFsbG93ZWQoKSAtPiBmYWxzZSAo
aGFzRXZhbHVhdGVkVXNlckFnZW50U2NyaXB0czogJWQsIGlzUnVubmluZ1VzZXJTY3JpcHRzOiAl
ZCkiLCBoYXNFdmFsdWF0ZWRVc2VyQWdlbnRTY3JpcHRzLCBpc1J1bm5pbmdVc2VyU2NyaXB0cyk7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBkb2N1bWVudC5zZXRBcHBsZVBh
eUlzQWN0aXZlKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUV4cGVjdGVkPHZvaWQsIEV4Y2Vw
dGlvbkRldGFpbHM+IFBheW1lbnRDb29yZGluYXRvcjo6c2hvdWxkQWxsb3dVc2VyQWdlbnRTY3Jp
cHRzKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKLXsKLSAgICBpZiAobV9jbGllbnQuc3VwcG9y
dHNVbnJlc3RyaWN0ZWRBcHBsZVBheSgpIHx8ICFkb2N1bWVudC5pc0FwcGxlUGF5QWN0aXZlKCkp
Ci0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBBU1NFUlQoIWRvY3VtZW50Lmhhc0V2YWx1YXRl
ZFVzZXJBZ2VudFNjcmlwdHMoKSk7Ci0gICAgQVNTRVJUKCFkb2N1bWVudC5pc1J1bm5pbmdVc2Vy
U2NyaXB0cygpKTsKLSAgICBQQVlNRU5UX0NPT1JESU5BVE9SX1JFTEVBU0VfTE9HX0VSUk9SKCJz
aG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoKSAtPiBmYWxzZSAoYWN0aXZlIHNlc3Npb24pIik7
Ci0gICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyBtX2NsaWVudC51
c2VyQWdlbnRTY3JpcHRzQmxvY2tlZEVycm9yTWVzc2FnZSgpIH0pOwotfQotCiB2b2lkIFBheW1l
bnRDb29yZGluYXRvcjo6Z2V0U2V0dXBGZWF0dXJlcyhjb25zdCBBcHBsZVBheVNldHVwQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbiwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFJlZjxBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFBBWU1FTlRfQ09PUkRJTkFUT1JfUkVMRUFTRV9MT0coImdldFNldHVw
RmVhdHVyZXMoKSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9QYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
UGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggMzgyZWZiNjM5ZjljZDM5Nzc0YmEwZTliNDczODlm
NzAxNTE5ZGYzNC4uNDJiNjUyMTQ3ZWFlMDQ1YmY0ZjUyMTUyZWQ1MDAzMDYwMTcyNTM4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGlu
YXRvci5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBQYXltZW50Q29vcmRpbmF0b3JD
bGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKICAgICBib29sIHN1cHBvcnRz
VmVyc2lvbihEb2N1bWVudCYsIHVuc2lnbmVkIHZlcnNpb24pIGNvbnN0OwotICAgIGJvb2wgY2Fu
TWFrZVBheW1lbnRzKERvY3VtZW50Jik7CisgICAgYm9vbCBjYW5NYWtlUGF5bWVudHMoKTsKICAg
ICB2b2lkIGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKERvY3VtZW50JiwgY29uc3QgU3Ry
aW5nJiBtZXJjaGFudElkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpOwogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChEb2N1bWVudCYsIGNvbnN0IFN0
cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKTsKIApAQCAtOTEsMTYgKzkxLDExIEBAIHB1YmxpYzoKIAogICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiB2YWxpZGF0ZWRQYXltZW50TmV0d29yayhEb2N1bWVudCYsIHVuc2lnbmVk
IHZlcnNpb24sIGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCi0gICAgYm9vbCBzaG91bGRFbmFibGVB
cHBsZVBheUFQSXMoRG9jdW1lbnQmKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBFeHBlY3Rl
ZDx2b2lkLCBFeGNlcHRpb25EZXRhaWxzPiBzaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9j
dW1lbnQmKSBjb25zdDsKLQogICAgIHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhjb25zdCBBcHBsZVBh
eVNldHVwQ29uZmlndXJhdGlvbiYsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFJlZjxBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYpPiYmKTsKICAgICB2b2lkIGJlZ2lu
QXBwbGVQYXlTZXR1cChjb25zdCBBcHBsZVBheVNldHVwQ29uZmlndXJhdGlvbiYsIGNvbnN0IFVS
TCYsIFZlY3RvcjxSZWZQdHI8QXBwbGVQYXlTZXR1cEZlYXR1cmU+PiYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGVuZEFwcGxlUGF5U2V0dXAoKTsKIAogcHJp
dmF0ZToKLSAgICBib29sIHNldEFwcGxlUGF5SXNBY3RpdmVJZkFsbG93ZWQoRG9jdW1lbnQmKSBj
b25zdDsKLQogICAgIFBheW1lbnRDb29yZGluYXRvckNsaWVudCYgbV9jbGllbnQ7CiAgICAgUmVm
UHRyPFBheW1lbnRTZXNzaW9uPiBtX2FjdGl2ZVNlc3Npb247CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50
LmgKaW5kZXggZmNhNGM1NjM4Njk0N2M3NzY1MDk4MDRhOTU0OTM2NWJkNDE1N2UzNC4uNTQ1ZDhj
Nzk1NjdmYzg1YzQ0YWJiNzFkZTI2ZDUwYTcyMmUxOTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5o
CkBAIC02NSw5ICs2NSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnRQYXltZW50
U2Vzc2lvbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGF5bWVudFNlc3Npb24oKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHBheW1lbnRDb29yZGluYXRvckRlc3Ryb3llZCgpID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNVbnJlc3RyaWN0ZWRBcHBsZVBheSgpIGNvbnN0ID0g
MDsKLQotICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudFNjcmlwdHNCbG9ja2VkRXJyb3JNZXNz
YWdlKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNNb2NrUGF5
bWVudENvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaXNXZWJQYXltZW50Q29vcmRpbmF0b3IoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmNwcApp
bmRleCAzMDFmMjhkYjE3ZTU1NWJkYmFlMTI3NjA3NDlkYTIxNWQ2MzJjZmUwLi45NGY5NDU5Yjli
NDQ4YTk4NDJlYjBmNDAyM2M2NDJhMDY4ZTgzYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmNwcApAQCAtMzEsOCArMzEsNiBAQAog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNs
dWRlICJGZWF0dXJlUG9saWN5LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBheW1l
bnRDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTc4LDE1ICs3Niw2IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBheW1lbnRT
ZXNzaW9uOjpjYW5DcmVhdGVTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCkKICAgICByZXR1cm4g
eyB9OwogfQogCi1ib29sIFBheW1lbnRTZXNzaW9uOjplbmFibGVkRm9yQ29udGV4dChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotewotICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNh
c3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwotICAgIGlmIChhdXRvIHBhZ2UgPSBkb2N1bWVudC5wYWdl
KCkpCi0gICAgICAgIHJldHVybiBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5zaG91bGRFbmFi
bGVBcHBsZVBheUFQSXMoZG9jdW1lbnQpOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U2Vzc2lvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U2Vzc2lvbi5oCmluZGV4IGRm
NDJhNWUxNDczNDA3ZDEzN2Y3N2YwZTZhZTg0NmFmMjBiNTVjY2MuLjc1NjI1YTQ3ZDdjZDJjMWQ0
NmExZDZmMGM0MDRiMzUwNzcxNzU1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L1BheW1lbnRTZXNzaW9uLmgKQEAgLTQzLDcgKzQzLDYgQEAgc3RydWN0IEFwcGxl
UGF5U2hpcHBpbmdNZXRob2Q7CiBjbGFzcyBQYXltZW50U2Vzc2lvbiA6IHB1YmxpYyB2aXJ0dWFs
IFBheW1lbnRTZXNzaW9uQmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPHZv
aWQ+IGNhbkNyZWF0ZVNlc3Npb24oRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgYm9vbCBlbmFibGVk
Rm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKICAgICB2aXJ0dWFsIHVuc2ln
bmVkIHZlcnNpb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlTWVyY2hh
bnQoVVJMJiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRs
ZXIuY3BwCmluZGV4IDkwZmI4ZmM2M2FhNjFjODc4NDgyODUwYTljZjA4YTM1YTg4MWQ3Y2YuLjcw
NTUxYWU4NjQ0ODljOWU2NzdjZDkyMTUzZjVkMWUyMjdhNDAyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50
cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcApAQCAtMzA0LDkgKzMwNCw5IEBAIHZv
aWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6aGlkZSgpCiAgICAgcGF5bWVudENvb3JkaW5hdG9y
KCkuYWJvcnRQYXltZW50U2Vzc2lvbigpOwogfQogCi12b2lkIEFwcGxlUGF5UGF5bWVudEhhbmRs
ZXI6OmNhbk1ha2VQYXltZW50KERvY3VtZW50JiBkb2N1bWVudCwgRnVuY3Rpb248dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y2Fu
TWFrZVBheW1lbnQoRG9jdW1lbnQmLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKHBheW1lbnRDb29yZGluYXRvcigpLmNh
bk1ha2VQYXltZW50cyhkb2N1bWVudCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHBheW1lbnRD
b29yZGluYXRvcigpLmNhbk1ha2VQYXltZW50cygpKTsKIH0KIAogRXhjZXB0aW9uT3I8VmVjdG9y
PEFwcGxlUGF5U2hpcHBpbmdNZXRob2Q+PiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRl
U2hpcHBpbmdNZXRob2RzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5jcHAKaW5kZXggNjMwYzYwOTZjNTdj
Y2E4MDRkMWExZTMwMWRmZDljZjkxNTA0ZGQzOS4uOThlZDMzZjg4NmRmZDkwZWMyNTE1NDJjYTQ4
Yzg1NGJjYzIwYWRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50
cmVxdWVzdC9QYXltZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
YXltZW50cmVxdWVzdC9QYXltZW50SGFuZGxlci5jcHAKQEAgLTg3LDE2ICs4Nyw2IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFBheW1lbnRIYW5kbGVyOjp2YWxpZGF0ZURhdGEoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBKU0M6OkpTVmFsdWUKICAgICByZXR1cm4geyB9OwogfQogCi1ib29sIFBheW1lbnRIYW5k
bGVyOjplbmFibGVkRm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQot
ewotI2lmIEVOQUJMRShBUFBMRV9QQVkpCi0gICAgcmV0dXJuIFBheW1lbnRTZXNzaW9uOjplbmFi
bGVkRm9yQ29udGV4dChjb250ZXh0KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHQp
OwotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCiBib29sIFBheW1lbnRIYW5kbGVyOjpo
YXNBY3RpdmVTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICNpZiBFTkFCTEUoQVBQTEVf
UEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9Q
YXltZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0
L1BheW1lbnRSZXF1ZXN0LmNwcAppbmRleCAyM2UyNzg5ZGIyN2VhNmU4NzYyZmM3NDIwMzI0NTYy
YzQxNmZkMGQzLi41NjlhODg4ZmQwZWIzMzQ0YTQwNjBjMjIzYzQ1ODliMjk4ZWVjYWU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1l
bnRSZXF1ZXN0LmNwcApAQCAtMzQ5LDExICszNDksNiBAQCBFeGNlcHRpb25PcjxSZWY8UGF5bWVu
dFJlcXVlc3Q+PiBQYXltZW50UmVxdWVzdDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgVmVj
dAogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1ib29sIFBheW1lbnRSZXF1ZXN0OjplbmFibGVk
Rm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotewotICAgIHJldHVy
biBQYXltZW50SGFuZGxlcjo6ZW5hYmxlZEZvckNvbnRleHQoY29udGV4dCk7Ci19Ci0KIFBheW1l
bnRSZXF1ZXN0OjpQYXltZW50UmVxdWVzdChEb2N1bWVudCYgZG9jdW1lbnQsIFBheW1lbnRPcHRp
b25zJiYgb3B0aW9ucywgUGF5bWVudERldGFpbHNJbml0JiYgZGV0YWlscywgVmVjdG9yPFN0cmlu
Zz4mJiBzZXJpYWxpemVkTW9kaWZpZXJEYXRhLCBWZWN0b3I8TWV0aG9kPiYmIHNlcmlhbGl6ZWRN
ZXRob2REYXRhLCBTdHJpbmcmJiBzZWxlY3RlZFNoaXBwaW5nT3B0aW9uKQogICAgIDogQWN0aXZl
RE9NT2JqZWN0IHsgZG9jdW1lbnQgfQogICAgICwgbV9vcHRpb25zIHsgV1RGTW92ZShvcHRpb25z
KSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1Bh
eW1lbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1Bh
eW1lbnRSZXF1ZXN0LmgKaW5kZXggNjdkMjA4NTBhNDM0ZjY4MTA1YzBiMzM3ODVkOTczY2QwOGRk
ZTBiOS4uNWIwN2JiNTY1M2JjZDkxNjQzYTE0ODQwYmJlMGIwODQ4OTYxNTBkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVl
c3QuaApAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgU2hvd1Byb21pc2UgPSBE
T01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPFBheW1lbnRSZXNwb25zZT4+OwogCiAgICAg
c3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxQYXltZW50UmVxdWVzdD4+IGNyZWF0ZShEb2N1bWVudCYs
IFZlY3RvcjxQYXltZW50TWV0aG9kRGF0YT4mJiwgUGF5bWVudERldGFpbHNJbml0JiYsIFBheW1l
bnRPcHRpb25zJiYpOwotICAgIHN0YXRpYyBib29sIGVuYWJsZWRGb3JDb250ZXh0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKTsKICAgICB+UGF5bWVudFJlcXVlc3QoKTsKIAogICAgIHZvaWQgc2hv
dyhEb2N1bWVudCYsIFJlZlB0cjxET01Qcm9taXNlPiYmIGRldGFpbHNQcm9taXNlLCBTaG93UHJv
bWlzZSYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVl
c3QvUGF5bWVudFJlcXVlc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50UmVxdWVzdC5pZGwKaW5kZXggN2ZkZTAyMDk4MWU2NTAzNzU1NjA5ZWJjOGRj
MWQ0NTY3NjMxNWVhZi4uNGQ3MDMwMWViZjBkMzZiMDNhMWMxMDkzNmUzYTA5NWRhYjVmMGU3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
UmVxdWVzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9Q
YXltZW50UmVxdWVzdC5pZGwKQEAgLTI3LDcgKzI3LDYgQEAKICAgICBBY3RpdmVET01PYmplY3Qs
CiAgICAgQ29uZGl0aW9uYWw9UEFZTUVOVF9SRVFVRVNULAogICAgIEVuYWJsZWRCeVNldHRpbmc9
UGF5bWVudFJlcXVlc3RFbmFibGVkLAotICAgIEVuYWJsZWRGb3JDb250ZXh0LAogICAgIFNlY3Vy
ZUNvbnRleHQsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIFBheW1lbnRSZXF1ZXN0
IDogRXZlbnRUYXJnZXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAppbmRleCAyNTQzNTczNGQ4NjViMDBiMjRhZDU4YmViNjE1MmM1ZWU2MDA3
ZTc3Li4xN2FiZDQ0NTYwMDQxYWI5ZDM0MmZhZmM1YjI0YjUwNDgxYzc2MTc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNjkxLDIz
ICs2OTEsMTIgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdl
bnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE8KIH0KIFZhbHVlT3JFeGNlcHRpb24g
U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSkKIHsKLSAgICByZXR1cm4gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbCh3
b3JsZCwgeyBzY3JpcHQsIFVSTCB7IH0sIGZhbHNlLCBzdGQ6Om51bGxvcHQsIGZvcmNlVXNlckdl
c3R1cmUgfSk7Ci19Ci0KLVZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCi17Ci0gICAgYXV0byYgZG9jdW1l
bnQgPSAqbV9mcmFtZS5kb2N1bWVudCgpOwotICAgIGF1dG8gYWxsb3dlZCA9IHNob3VsZEFsbG93
VXNlckFnZW50U2NyaXB0cyhkb2N1bWVudCk7Ci0gICAgaWYgKCFhbGxvd2VkKQotICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoYWxsb3dlZC5lcnJvcigpKTsKLQotICAgIGRvY3VtZW50LnNl
dEhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMoKTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlw
dEluV29ybGQod29ybGQsIFdURk1vdmUocGFyYW1ldGVycykpOworICAgIHJldHVybiBleGVjdXRl
U2NyaXB0SW5Xb3JsZCh3b3JsZCwgeyBzY3JpcHQsIFVSTCB7IH0sIGZhbHNlLCBzdGQ6Om51bGxv
cHQsIGZvcmNlVXNlckdlc3R1cmUgfSk7CiB9CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBSZXNvbHZlRnVuY3Rp
b24mJiByZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBleGVj
dXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKHdvcmxkLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpKTsKICAgICAKICAgICBpZiAocGFyYW1ldGVycy5ydW5Bc0FzeW5jRnVu
Y3Rpb24gPT0gUnVuQXNBc3luY0Z1bmN0aW9uOjpObyB8fCAhcmVzdWx0IHx8ICFyZXN1bHQudmFs
dWUoKS5pc09iamVjdCgpKSB7CiAgICAgICAgIHJlc29sdmVDb21wbGV0aW9uSGFuZGxlcihyZXN1
bHQpOwpAQCAtNzY3LDE3ICs3NTYsNiBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVB
c3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZAogICAgIGNh
bGwoJmdsb2JhbE9iamVjdCwgdGhlbkZ1bmN0aW9uLCBjYWxsRGF0YSwgcmVzdWx0LnZhbHVlKCks
IGFyZ3VtZW50cyk7CiB9CiAKLUV4cGVjdGVkPHZvaWQsIEV4Y2VwdGlvbkRldGFpbHM+IFNjcmlw
dENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cyhEb2N1bWVudCYgZG9jdW1l
bnQpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICBpZiAoYXV0byBwYWdlID0g
bV9mcmFtZS5wYWdlKCkpCi0gICAgICAgIHJldHVybiBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3Io
KS5zaG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoZG9jdW1lbnQpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oZG9jdW1lbnQpOwotI2VuZGlmCi0gICAgcmV0dXJuIHsgfTsKLX0KLQogYm9vbCBT
Y3JpcHRDb250cm9sbGVyOjpjYW5FeGVjdXRlU2NyaXB0cyhSZWFzb25Gb3JDYWxsaW5nQ2FuRXhl
Y3V0ZVNjcmlwdHMgcmVhc29uKQogewogICAgIGlmIChyZWFzb24gPT0gQWJvdXRUb0V4ZWN1dGVT
Y3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgK
aW5kZXggMGNhMjAyZDQ2NWY5NDJhNGJhOGM4ZDFmMzUzNWE3YWY0OGM4MDcwMy4uZTczYmI5MmRk
M2ZlYjBiZTUzYmYyZDkwOGVkM2FiMmNhMGVlYTExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMTA2LDggKzEwNiw2IEBAIHB1YmxpYzoK
ICAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTY3JpcHRT
b3VyY2VDb2RlJik7CiAgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSW5Xb3JsZElnbm9yaW5nRXhj
ZXB0aW9uKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBET01XcmFwcGVyV29ybGQmKTsKIAotICAg
IEV4cGVjdGVkPHZvaWQsIEV4Y2VwdGlvbkRldGFpbHM+IHNob3VsZEFsbG93VXNlckFnZW50U2Ny
aXB0cyhEb2N1bWVudCYpIGNvbnN0OwotCiAgICAgLy8gVGhpcyBhc3NlcnRzIHRoYXQgVVJMIGFy
Z3VtZW50IGlzIGEgSmF2YVNjcmlwdCBVUkwuCiAgICAgdm9pZCBleGVjdXRlSmF2YVNjcmlwdFVS
TChjb25zdCBVUkwmLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID0gbnVsbHB0ciwgU2hvdWxkUmVw
bGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMID0gUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0
VVJMKTsKIApAQCAtMTcyLDcgKzE3MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcG9ydEV4Y2Vw
dGlvbkZyb21TY3JpcHRFcnJvcihMb2FkYWJsZVNjcmlwdDo6RXJyb3IsIGJvb2wpOwogCiBwcml2
YXRlOgotICAgIFZhbHVlT3JFeGNlcHRpb24gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJ
bnRlcm5hbChET01XcmFwcGVyV29ybGQmLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmKTsKICAg
ICBWYWx1ZU9yRXhjZXB0aW9uIGV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYs
IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYpOwogICAgIFZhbHVlT3JFeGNlcHRpb24gY2FsbElu
V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgRE9NV3JhcHBlcldvcmxkJik7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBhOWI3YzU2NDFjZTJmMGYyZjY3ZWVmM2RlOGRk
ZTdmNmQ0ZmJkY2Y2Li5mOWI3NDhhZjRiMzgyZDc2ZGQ5MDY3MzgxYWNkMmM1OTUyYTA2NzBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTc2NDQsMTAgKzc2NDQsOSBAQCB2b2lkIERvY3Vt
ZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkK
IAogICAgIC8vIFVzZSB0aGUgSlMgZmlsZSBwcm92aWRlZCBieSB0aGUgQ2hyb21lIGNsaWVudCwg
b3IgZmFsbGJhY2sgdG8gdGhlIGRlZmF1bHQgb25lLgogICAgIFN0cmluZyBqc1N0cmluZyA9IHBh
Z2UoKS0+Y2hyb21lKCkuY2xpZW50KCkucGx1Z0luRXh0cmFTY3JpcHQoKTsKLSAgICBpZiAoIWpz
U3RyaW5nIHx8ICFzY3JpcHRDb250cm9sbGVyLnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cygq
dGhpcykpCisgICAgaWYgKCFqc1N0cmluZykKICAgICAgICAganNTdHJpbmcgPSBTdHJpbmdJbXBs
OjpjcmVhdGVXaXRob3V0Q29weWluZyhwbHVnSW5zSmF2YVNjcmlwdCwgc2l6ZW9mKHBsdWdJbnNK
YXZhU2NyaXB0KSk7CiAKLSAgICBzZXRIYXNFdmFsdWF0ZWRVc2VyQWdlbnRTY3JpcHRzKCk7CiAg
ICAgc2NyaXB0Q29udHJvbGxlci5ldmFsdWF0ZUluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihTY3Jp
cHRTb3VyY2VDb2RlKGpzU3RyaW5nKSwgd29ybGQpOwogCiAgICAgbV9oYXNJbmplY3RlZFBsdWdJ
bnNTY3JpcHQgPSB0cnVlOwpAQCAtODg1OCwxMiArODg1Nyw2IEBAIERPTVRpbWVySG9sZGluZ1Rh
bmsmIERvY3VtZW50Ojpkb21UaW1lckhvbGRpbmdUYW5rKCkKIAogI2VuZGlmCiAKLWJvb2wgRG9j
dW1lbnQ6Omhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlwdHMoKSBjb25zdAotewotICAgIGF1dG8m
IHRvcCA9IHRvcERvY3VtZW50KCk7Ci0gICAgcmV0dXJuIHRoaXMgPT0gJnRvcCA/IG1faGFzRXZh
bHVhdGVkVXNlckFnZW50U2NyaXB0cyA6IHRvcC5oYXNFdmFsdWF0ZWRVc2VyQWdlbnRTY3JpcHRz
KCk7Ci19Ci0KIGJvb2wgRG9jdW1lbnQ6OmlzUnVubmluZ1VzZXJTY3JpcHRzKCkgY29uc3QKIHsK
ICAgICBhdXRvJiB0b3AgPSB0b3BEb2N1bWVudCgpOwpAQCAtODg3OSwxNSArODg3Miw2IEBAIHZv
aWQgRG9jdW1lbnQ6OnNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCkKICAgICAgICAgdG9wLnNldEFz
UnVubmluZ1VzZXJTY3JpcHRzKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldEhhc0V2YWx1YXRl
ZFVzZXJBZ2VudFNjcmlwdHMoKQotewotICAgIGF1dG8mIHRvcCA9IHRvcERvY3VtZW50KCk7Ci0g
ICAgaWYgKHRoaXMgPT0gJnRvcCkKLSAgICAgICAgbV9oYXNFdmFsdWF0ZWRVc2VyQWdlbnRTY3Jp
cHRzID0gdHJ1ZTsKLSAgICBlbHNlCi0gICAgICAgIHRvcC5zZXRIYXNFdmFsdWF0ZWRVc2VyQWdl
bnRTY3JpcHRzKCk7Ci19Ci0KIHZvaWQgRG9jdW1lbnQ6OmRpZFJlamVjdFN5bmNYSFJEdXJpbmdQ
YWdlRGlzbWlzc2FsKCkKIHsKICAgICArK21fbnVtYmVyT2ZSZWplY3RlZFN5bmNYSFJzOwpAQCAt
ODkwNiwyNSArODg5MCw2IEBAIGJvb2wgRG9jdW1lbnQ6OnNob3VsZElnbm9yZVN5bmNYSFJzKCkg
Y29uc3QKICAgICByZXR1cm4gbV9udW1iZXJPZlJlamVjdGVkU3luY1hIUnMgPiBtYXhSZWplY3Rl
ZFN5bmNYSFJzUGVyRXZlbnRMb29wSXRlcmF0aW9uOwogfQogCi0jaWYgRU5BQkxFKEFQUExFX1BB
WSkKLQotYm9vbCBEb2N1bWVudDo6aXNBcHBsZVBheUFjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgYXV0
byYgdG9wID0gdG9wRG9jdW1lbnQoKTsKLSAgICByZXR1cm4gdGhpcyA9PSAmdG9wID8gbV9oYXNT
dGFydGVkQXBwbGVQYXlTZXNzaW9uIDogdG9wLmlzQXBwbGVQYXlBY3RpdmUoKTsKLX0KLQotdm9p
ZCBEb2N1bWVudDo6c2V0QXBwbGVQYXlJc0FjdGl2ZSgpCi17Ci0gICAgYXV0byYgdG9wID0gdG9w
RG9jdW1lbnQoKTsKLSAgICBpZiAodGhpcyA9PSAmdG9wKQotICAgICAgICBtX2hhc1N0YXJ0ZWRB
cHBsZVBheVNlc3Npb24gPSB0cnVlOwotICAgIGVsc2UKLSAgICAgICAgdG9wLnNldEFwcGxlUGF5
SXNBY3RpdmUoKTsKLX0KLQotI2VuZGlmCi0KIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyJiBE
b2N1bWVudDo6bWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKQogewogICAgIHJldHVybiBNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IDRkZDdkMzZjZTI0OGMwZjU2NzZhMGQ1OGU5ODBkODA2ZTYxMDZiNzAuLjM0NzcwMTRjMjE5
MWUyYzI3ZjBmOTgyZjVmYjc5ODc4MTE5MTVkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0x
NTk3LDE0ICsxNTk3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGVGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgUmVmPFBhaW50V29ya2xldEdsb2JhbFNj
b3BlPiYmKTsKICNlbmRpZgogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNFdmFsdWF0ZWRV
c2VyQWdlbnRTY3JpcHRzKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1J1bm5p
bmdVc2VyU2NyaXB0cygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXNSdW5u
aW5nVXNlclNjcmlwdHMoKTsKLSAgICB2b2lkIHNldEhhc0V2YWx1YXRlZFVzZXJBZ2VudFNjcmlw
dHMoKTsKLSNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNB
cHBsZVBheUFjdGl2ZSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXBwbGVQ
YXlJc0FjdGl2ZSgpOwotI2VuZGlmCiAKICAgICB2b2lkIGZyYW1lV2FzRGlzY29ubmVjdGVkRnJv
bU93bmVyKCk7CiAKQEAgLTIyMjcsMTUgKzIyMjEsMTEgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFw
PFN0cmluZywgUmVmPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPj4gbV9wYWludFdvcmtsZXRHbG9i
YWxTY29wZXM7CiAjZW5kaWYKICAgICB1bnNpZ25lZCBtX251bWJlck9mUmVqZWN0ZWRTeW5jWEhS
cyB7IDAgfTsKLSAgICBib29sIG1faGFzRXZhbHVhdGVkVXNlckFnZW50U2NyaXB0cyB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2lzUnVubmluZ1VzZXJTY3JpcHRzIHsgZmFsc2UgfTsKICAgICBib29s
IG1fbWF5QmVEZXRhY2hlZEZyb21GcmFtZSB7IHRydWUgfTsKICAgICBib29sIG1fc2hvdWxkUHJl
dmVudEVudGVyaW5nQmFja0ZvcndhcmRDYWNoZUZvclRlc3RpbmcgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9oYXNMb2FkZWRUaGlyZFBhcnR5U2NyaXB0IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFz
TG9hZGVkVGhpcmRQYXJ0eUZyYW1lIHsgZmFsc2UgfTsKLSNpZiBFTkFCTEUoQVBQTEVfUEFZKQot
ICAgIGJvb2wgbV9oYXNTdGFydGVkQXBwbGVQYXlTZXNzaW9uIHsgZmFsc2UgfTsKLSNlbmRpZgog
ICAgIGJvb2wgbV9oYXNWaXN1YWxseU5vbkVtcHR5Q3VzdG9tQ29udGVudCB7IGZhbHNlIH07CiAK
ICAgICBib29sIG1fdmlzaWJpbGl0eUhpZGRlbkR1ZVRvRGlzbWlzc2FsIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggMTkzY2M3ZjZjYTFhZmE3YWEz
NDU2NjUxMDk1ZjVmZGNkYmMzYzUxNi4uMzQ1M2ZkNWE2OGFhYmJmNjMxYzBmYmFiZWJiOWRjZjQw
N2QxOWZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTQzMCw3
ICs0MzAsNiBAQCBjbGFzcyBFbXB0eVBheW1lbnRDb29yZGluYXRvckNsaWVudCBmaW5hbCA6IHB1
YmxpYyBQYXltZW50Q29vcmRpbmF0b3JDbGllbnQgewogICAgIHZvaWQgY2FuY2VsUGF5bWVudFNl
c3Npb24oKSBmaW5hbCB7IH0KICAgICB2b2lkIGFib3J0UGF5bWVudFNlc3Npb24oKSBmaW5hbCB7
IH0KICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvckRlc3Ryb3llZCgpIGZpbmFsIHsgfQotICAg
IGJvb2wgc3VwcG9ydHNVbnJlc3RyaWN0ZWRBcHBsZVBheSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMjhhYjI3NWI4
YTAwNjZhYjExOTRjMGRkYWIxMjE0MjRmNGViYjdmMy4uNGFhMWU3N2EzYWIyZDBlYzc5NjFiNjYx
ZDVjZTdmYjhmYzE5MGNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTY5NCw4ICs2OTQsNiBA
QCB2b2lkIEZyYW1lOjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCwgY29uc3QgVXNlclNjcmlwdAogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFVc2Vy
Q29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhkb2N1bWVudC0+dXJsKCksIHNjcmlw
dC5hbGxvd2xpc3QoKSwgc2NyaXB0LmJsb2NrbGlzdCgpKSkKICAgICAgICAgcmV0dXJuOwotICAg
IGlmICghbV9zY3JpcHQtPnNob3VsZEFsbG93VXNlckFnZW50U2NyaXB0cygqZG9jdW1lbnQpKQot
ICAgICAgICByZXR1cm47CiAKICAgICBkb2N1bWVudC0+c2V0QXNSdW5uaW5nVXNlclNjcmlwdHMo
KTsKICAgICBsb2FkZXIoKS5jbGllbnQoKS53aWxsSW5qZWN0VXNlclNjcmlwdCh3b3JsZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNDEzMjk0NjFlNmNiMGNjN2I3YTc4
NWVkMTk0YTAxYTI0Zjk5Y2I4Zi4uMDcwYmM0MmFmMzhjODgzZGZiYjA0ODMxY2U1NjdhNzUzNTY0
NTY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTMxNiwxMyArNTMx
Niw2IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRBc1J1bm5pbmdVc2VyU2NyaXB0cyhEb2N1bWVudCYg
ZG9jdW1lbnQpCiAgICAgZG9jdW1lbnQuc2V0QXNSdW5uaW5nVXNlclNjcmlwdHMoKTsKIH0KIAot
I2lmIEVOQUJMRShBUFBMRV9QQVkpCi12b2lkIEludGVybmFsczo6c2V0QXBwbGVQYXlJc0FjdGl2
ZShEb2N1bWVudCYgZG9jdW1lbnQpCi17Ci0gICAgZG9jdW1lbnQuc2V0QXBwbGVQYXlJc0FjdGl2
ZSgpOwotfQotI2VuZGlmCi0KICNpZiBFTkFCTEUoV0VCR0wpCiB2b2lkIEludGVybmFsczo6c2lt
dWxhdGVFdmVudEZvcldlYkdMQ29udGV4dChTaW11bGF0ZWRXZWJHTENvbnRleHRFdmVudCBldmVu
dCwgV2ViR0xSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKaW5kZXggMzAzZTQ3MjUzZjgxYjVkNjI2NzE0MjA3ZjMwNmE5YzhhNjBkYmM4ZS4u
NTc3NmVhOTEzZjUxODQ1NjhlMWRhYjBmNGQ2ODNlZGVjODRlYzc3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCkBAIC04MjMsOSArODIzLDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
UXVpY2tMb29rUGFzc3dvcmQoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIHNldEFzUnVubmlu
Z1VzZXJTY3JpcHRzKERvY3VtZW50Jik7Ci0jaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICB2b2lk
IHNldEFwcGxlUGF5SXNBY3RpdmUoRG9jdW1lbnQmKTsKLSNlbmRpZgogCiAjaWYgRU5BQkxFKFdF
QkdMKQogICAgIGVudW0gY2xhc3MgU2ltdWxhdGVkV2ViR0xDb250ZXh0RXZlbnQgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDdjNWRmYTlmMWEzNjM4ZGJiMTc0MjQyM2U1
ZGQwZjIyMjg2NjY2ODYuLjMzOWEwNDVlZTA5YzU5YjA5ZDBjY2MzN2M2ODUwNjdmMzgwZjk5Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTg4NCw3ICs4ODQsNiBAQCB0
eXBlZGVmIChGZXRjaFJlcXVlc3Qgb3IgRmV0Y2hSZXNwb25zZSkgRmV0Y2hPYmplY3Q7CiAgICAg
dW5kZWZpbmVkIHNldFF1aWNrTG9va1Bhc3N3b3JkKERPTVN0cmluZyBwYXNzd29yZCk7CiAKICAg
ICBbQ2FsbFdpdGg9Q3VycmVudERvY3VtZW50XSB1bmRlZmluZWQgc2V0QXNSdW5uaW5nVXNlclNj
cmlwdHMoKTsKLSAgICBbQ2FsbFdpdGg9Q3VycmVudERvY3VtZW50LCBDb25kaXRpb25hbD1BUFBM
RV9QQVldIHVuZGVmaW5lZCBzZXRBcHBsZVBheUlzQWN0aXZlKCk7CiAKICAgICB1bmRlZmluZWQg
ZGlzYWJsZVRpbGVTaXplVXBkYXRlRGVsYXkoKTsKICAgICB1bmRlZmluZWQgc2V0U3BlY3VsYXRp
dmVUaWxpbmdEZWxheURpc2FibGVkRm9yVGVzdGluZyhib29sZWFuIGRpc2FibGVkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggNTRi
M2YyNWMwNjRmNGEyMmY4YTI3ZWQyYzIzNDg3MGNmMTE5ZjVkNy4uZDMzNGNjZDBjOTRmOTA1N2Nm
NjI3ZjY4ZTY5OTFjOWU4NWVmNzM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrUGF5bWVudENvb3JkaW5hdG9yLmgKQEAgLTc1LDkgKzc1LDYgQEAgcHVibGljOgogICAgIGNv
bnN0IE1vY2tQYXltZW50Q29udGFjdEZpZWxkcyYgcmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxk
cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkczsgfQogICAg
IGNvbnN0IE1vY2tQYXltZW50Q29udGFjdEZpZWxkcyYgcmVxdWlyZWRTaGlwcGluZ0NvbnRhY3RG
aWVsZHMoKSBjb25zdCB7IHJldHVybiBtX3JlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzOyB9
CiAKLSAgICBib29sIHN1cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXkoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3N1cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXk7IH0KLSAgICB2b2lkIHNldFN1
cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXkoYm9vbCBzdXBwb3J0cykgeyBtX3N1cHBvcnRzVW5y
ZXN0cmljdGVkQXBwbGVQYXkgPSBzdXBwb3J0czsgfQotICAgIAogI2lmIEVOQUJMRShBUFBMRV9Q
QVlfSU5TVEFMTE1FTlRTKQogICAgIEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uIGlu
c3RhbGxtZW50Q29uZmlndXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faW5zdGFsbG1lbnRDb25m
aWd1cmF0aW9uOyB9CiAjZW5kaWYKQEAgLTEzMyw3ICsxMzAsNiBAQCBwcml2YXRlOgogICAgIEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fYXZhaWxhYmxlUGF5bWVu
dE5ldHdvcmtzOwogICAgIE1vY2tQYXltZW50Q29udGFjdEZpZWxkcyBtX3JlcXVpcmVkQmlsbGlu
Z0NvbnRhY3RGaWVsZHM7CiAgICAgTW9ja1BheW1lbnRDb250YWN0RmllbGRzIG1fcmVxdWlyZWRT
aGlwcGluZ0NvbnRhY3RGaWVsZHM7Ci0gICAgYm9vbCBtX3N1cHBvcnRzVW5yZXN0cmljdGVkQXBw
bGVQYXkgeyB0cnVlIH07CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNUQUxMTUVOVFMpCiAgICAg
QXBwbGVQYXlJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24gbV9pbnN0YWxsbWVudENvbmZpZ3VyYXRp
b247CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1l
bnRDb29yZGluYXRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29v
cmRpbmF0b3IuaWRsCmluZGV4IGQyN2QyYjVlOTRlODMzMzY5MmRjNTIzMTEzOTliYTk0ZjEzYTU2
YWEuLmM1OGYwMzY0MmM3YzlkOGQ2ZjA0NjJiODU2NGQ5MzY1NGI3OTE1YzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmlkbApAQCAtNDcs
OCArNDcsNiBAQAogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEFwcGxlUGF5U2V0dXBDb25maWd1
cmF0aW9uIHNldHVwQ29uZmlndXJhdGlvbjsKIAotICAgIGF0dHJpYnV0ZSBib29sZWFuIHN1cHBv
cnRzVW5yZXN0cmljdGVkQXBwbGVQYXk7Ci0KICAgICBbQ29uZGl0aW9uYWw9QVBQTEVfUEFZX0lO
U1RBTExNRU5UU10gcmVhZG9ubHkgYXR0cmlidXRlIEFwcGxlUGF5SW5zdGFsbG1lbnRDb25maWd1
cmF0aW9uIGluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKIAogICAgIFtDb25kaXRpb25hbD1BUFBM
RV9QQVlfQ09VUE9OX0NPREVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuPyBzdXBwb3J0c0Nv
dXBvbkNvZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4IDFjNzAyNjUwYjc5Y2NiZmFlMDFk
ZjdmYzkwMTAwYjVmNzZkYTcwMDkuLjczNTc2YTI0N2NlMTE3NTI3NTY1ZmIxZDI2YjRjZDA5YjI0
NzJlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC0xNTgsMjEgKzE1OCw2IEBAIHZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yOjpwYXltZW50Q29vcmRpbmF0b3JEZXN0cm95ZWQoKQogICAg
IGRlbGV0ZSB0aGlzOwogfQogCi1ib29sIFdlYlBheW1lbnRDb29yZGluYXRvcjo6c3VwcG9ydHNV
bnJlc3RyaWN0ZWRBcHBsZVBheSgpIGNvbnN0Ci17Ci0jaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1P
VEVfVUkpCi0gICAgc3RhdGljIGJvb2wgaGFzRW50aXRsZW1lbnQgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzSGFzRW50aXRsZW1lbnQoImNvbS5hcHBsZS5wcml2YXRlLldl
YktpdC5VbnJlc3RyaWN0ZWRBcHBsZVBheSIpOwotICAgIHJldHVybiBoYXNFbnRpdGxlbWVudDsK
LSNlbHNlCi0gICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLX0KLQotU3RyaW5nIFdlYlBheW1lbnRD
b29yZGluYXRvcjo6dXNlckFnZW50U2NyaXB0c0Jsb2NrZWRFcnJvck1lc3NhZ2UoKSBjb25zdAot
ewotICAgIHJldHVybiAiVW5hYmxlIHRvIHJ1biB1c2VyIGFnZW50IHNjcmlwdHMgYmVjYXVzZSB0
aGlzIGRvY3VtZW50IGhhcyBwcmV2aW91c2x5IGFjY2Vzc2VkIEFwcGxlIFBheS4gRG9jdW1lbnRz
IGNhbiBiZSBwcmV2ZW50ZWQgZnJvbSBhY2Nlc3NpbmcgQXBwbGUgUGF5IGJ5IGFkZGluZyBhIFdL
VXNlclNjcmlwdCB0byB0aGUgV0tXZWJWaWV3J3MgV0tVc2VyQ29udGVudENvbnRyb2xsZXIuIl9z
OwotfQotCiBJUEM6OkNvbm5lY3Rpb24qIFdlYlBheW1lbnRDb29yZGluYXRvcjo6bWVzc2FnZVNl
bmRlckNvbm5lY3Rpb24oKSBjb25zdAogewogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvci5oCmluZGV4IGE3NmEzYWM2M2Y4YTRhNTk0NTZjODFjOTQ0OWRiNDg3
MWVlYTI0ZWMuLjIyYzYwYTk0ZDMzMmU0YThjNzg2ZTk3MDU0M2E0MWRjNDU4NTU3N2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yLmgKQEAgLTgwLDEwICs4MCw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlz
V2ViUGF5bWVudENvb3JkaW5hdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
Ci0gICAgYm9vbCBzdXBwb3J0c1VucmVzdHJpY3RlZEFwcGxlUGF5KCkgY29uc3Qgb3ZlcnJpZGU7
Ci0KLSAgICBTdHJpbmcgdXNlckFnZW50U2NyaXB0c0Jsb2NrZWRFcnJvck1lc3NhZ2UoKSBjb25z
dCBmaW5hbDsKLQogICAgIHZvaWQgZ2V0U2V0dXBGZWF0dXJlcyhjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNldHVwQ29uZmlndXJhdGlvbiYsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFJlZjxXZWJDb3JlOjpBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYpPiYmKSBmaW5h
bDsKICAgICB2b2lkIGJlZ2luQXBwbGVQYXlTZXR1cChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNl
dHVwQ29uZmlndXJhdGlvbiYsIGNvbnN0IFVSTCYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QXBw
bGVQYXlTZXR1cEZlYXR1cmU+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBm
aW5hbDsKICAgICB2b2lkIGVuZEFwcGxlUGF5U2V0dXAoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXggODIzNDQ2ZGVkZDM1ZGU4ZWQ3NDI2YWYzNmNm
MmY3ZTc2ZjdhMmVkMi4uNTZhY2UxNTI3NWY2NmUzZDI2NmVkOTljYTlhYWFiMjNiYTU1MmNjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTUyLDcgKzUyLDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGFib3J0UGF5bWVudFNlc3Npb24oKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNhbmNlbFBheW1lbnRTZXNzaW9uKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYXltZW50
Q29vcmRpbmF0b3JEZXN0cm95ZWQoKSBvdmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzVW5yZXN0
cmljdGVkQXBwbGVQYXkoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3Jk
aW5hdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCmluZGV4IGRkMGE3MThiNzJmNzEzOWQzYWZm
Y2U2OTVhNjYzMjdlMDQyYzZiNDkuLjU4OGZjNTY0ZGUxNDNlMWYxNzcwMjVlYjc2MjM0ZTAxN2Vl
ODU3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW0KQEAgLTEw
OSw5ICsxMDksNCBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6cGF5bWVudENv
b3JkaW5hdG9yRGVzdHJveWVkKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAotYm9vbCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JDbGllbnQ6OnN1cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXkoKSBjb25z
dAotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmVmZDg4MTkyYzA5Mzk3ZjMwNzIwNTFi
MjAwYTE1NjhhZGUyOTJmZS4uMTMxZTQ5MDQzYjY0YWY3NjUzYzJlMDg4M2I2MTA2OTcyYjA1OTBk
MiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMyIEBACisyMDIyLTAyLTEwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KKworICAgICAgICBQZXJtaXQgc2ltdWx0YW5lb3VzIEFwcGxlIFBheSBhbmQgc2NyaXB0IGlu
amVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM2MjU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzczNjcyNz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBLYXRlIENoZW5leS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQXBwbGVQYXkubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNULkFwcGxl
UGF5LkFwcGxlUGF5QXZhaWxhYmxlQnlEZWZhdWx0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QuQXBwbGVQYXkuQXBwbGVQYXlBdmFpbGFibGVJbkZyYW1lKTogUmVuYW1lZCBmcm9tIEFw
cGxlUGF5LkFwcGxlUGF5QXZhaWxhYmxlSW5VbnJlc3RyaWN0ZWRDbGllbnRzLgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVC5BcHBsZVBheS5Vc2VyU2NyaXB0QXREb2N1bWVudFN0YXJ0RG9l
c05vdERpc2FibGVBcHBsZVBheSk6IFJlbmFtZWQgZnJvbSBBcHBsZVBheS5Vc2VyU2NyaXB0QXRE
b2N1bWVudFN0YXJ0RGlzYWJsZXNBcHBsZVBheS4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QuQXBwbGVQYXkuVXNlclNjcmlwdEF0RG9jdW1lbnRFbmREb2VzTm90RGlzYWJsZUFwcGxlUGF5
KTogUmVuYW1lZCBmcm9tIEFwcGxlUGF5LlVzZXJTY3JpcHRBdERvY3VtZW50RW5kRGlzYWJsZXNB
cHBsZVBheS4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QuQXBwbGVQYXkuVXNlckFnZW50
U2NyaXB0RXZhbHVhdGlvbkRvZXNOb3REaXNhYmxlQXBwbGVQYXkpOiBSZW5hbWVkIGZyb20gQXBw
bGVQYXkuVXNlckFnZW50U2NyaXB0RXZhbHVhdGlvbkRpc2FibGVzQXBwbGVQYXkuCisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNULkFwcGxlUGF5LlVzZXJBZ2VudFNjcmlwdEV2YWx1YXRpb25E
b2VzTm90RGlzYWJsZUFwcGxlUGF5SW5FeGlzdGluZ09iamVjdHMpOiBSZW5hbWVkIGZyb20gQXBw
bGVQYXkuVXNlckFnZW50U2NyaXB0RXZhbHVhdGlvbkRpc2FibGVzQXBwbGVQYXlJbkV4aXN0aW5n
T2JqZWN0cy4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QuQXBwbGVQYXkuQ2FuTWFrZVBh
eW1lbnRzRG9lc05vdEJsb2NrVXNlckFnZW50U2NyaXB0cyk6IFJlbmFtZWQgZnJvbSBBcHBsZVBh
eS5DYW5NYWtlUGF5bWVudHNCbG9ja3NVc2VyQWdlbnRTY3JpcHRzLgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVC5BcHBsZVBheS5DYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZERvZXNO
b3RCbG9ja1VzZXJBZ2VudFNjcmlwdHMpOiBSZW5hbWVkIGZyb20gQXBwbGVQYXkuQ2FuTWFrZVBh
eW1lbnRzV2l0aEFjdGl2ZUNhcmRCbG9ja3NVc2VyQWdlbnRTY3JpcHRzLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVC5BcHBsZVBheS5DYW5NYWtlUGF5bWVudERvZXNOb3RCbG9ja1VzZXJB
Z2VudFNjcmlwdHMpOiBSZW5hbWVkIGZyb20gQXBwbGVQYXkuQ2FuTWFrZVBheW1lbnRCbG9ja3NV
c2VyQWdlbnRTY3JpcHRzLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVC5BcHBsZVBheS5B
Y3RpdmVTZXNzaW9uQmxvY2tzVXNlckFnZW50U2NyaXB0cyk6IERlbGV0ZWQuCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXktYWN0aXZlLXNlc3Npb24u
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L2FwcGxlLXBheS1hdmFpbGFiaWxpdHkuaHRtbDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1hdmFpbGFiaWxpdHktZXhpc3Rpbmctb2JqZWN0Lmh0
bWw6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXkt
YXZhaWxhYmlsaXR5LWluLWlmcmFtZS5odG1sOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvYXBwbGUtcGF5LWNhbi1tYWtlLXBheW1lbnQuaHRtbDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1jYW4tbWFrZS1wYXlt
ZW50cy5odG1sOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBw
bGUtcGF5LWNhbi1tYWtlLXBheW1lbnRzLXdpdGgtYWN0aXZlLWNhcmQuaHRtbDoKKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDIyLTAyLTA4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDb252ZXJzaW9uIHRvIGEgY29sb3Igc3BhY2Ugd2l0aCBhIHNtYWxsZXIgZ2FtdXQgc2hvdWxk
IHBlcmZvcm0gZ2FtdXQgbWFwcGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5YjRjM2Iy
ODJmOTVjNDFlMzQ0YzgwYzU0MTdiZWJiNTMyODVmOTM0Li44YTk3ZmRmNmVjOTkxYWE5ZTdjN2Fl
NDMxYjhhM2FiNDY1NWZiNzhkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODIwLDcgKzgy
MCw2IEBACiAJCUExNzk4Qjg1MjI0MzM2NDcwMDA3NjRCRCAvKiBXZWJQcm9jZXNzUGx1Z0luV2l0
aEludGVybmFscy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExNzk4Qjg0MjI0MzM2NDcwMDA3NjRCRCAvKiBXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVy
bmFscy5tbSAqLzsgfTsKIAkJQTE3OThCODcyMjQzNDQ5QjAwMDc2NEJEIC8qIGFwcGxlLXBheS1h
dmFpbGFiaWxpdHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTc5OEI4NjIyNDM0NDZCMDAwNzY0QkQgLyogYXBwbGUtcGF5LWF2YWls
YWJpbGl0eS5odG1sICovOyB9OwogCQlBMTc5OEI4OTIyNDM1RTI5MDAwNzY0QkQgLyogYXBwbGUt
cGF5LWF2YWlsYWJpbGl0eS1pbi1pZnJhbWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTc5OEI4ODIyNDM1RDJFMDAwNzY0QkQgLyog
YXBwbGUtcGF5LWF2YWlsYWJpbGl0eS1pbi1pZnJhbWUuaHRtbCAqLzsgfTsKLQkJQTE3OThCOEIy
MjQzNjFBNDAwMDc2NEJEIC8qIGFwcGxlLXBheS1hY3RpdmUtc2Vzc2lvbi5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzk4QjhBMjI0
MzYxMUEwMDA3NjRCRCAvKiBhcHBsZS1wYXktYWN0aXZlLXNlc3Npb24uaHRtbCAqLzsgfTsKIAkJ
QTE3OTkxODgxRTFDOTk0RTAwQTUwNUVEIC8qIFNoYXJlZEJ1ZmZlci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzk5MTg2MUUxQzk5NEUwMEE1MDVF
RCAvKiBTaGFyZWRCdWZmZXIubW0gKi87IH07CiAJCUExNzk5MThCMUUxQ0EyNDEwMEE1MDVFRCAv
KiBTaGFyZWRCdWZmZXJUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExNzk5MTg5MUUxQ0EyNDEwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXJUZXN0
LmNwcCAqLzsgfTsKIAkJQTE3RUFDNTUyMDgzMDVBMDAwODRCNDFCIC8qIGZpbmQucGRmIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExN0VBQzU0
MjA4MzA1NkUwMDg0QjQxQiAvKiBmaW5kLnBkZiAqLzsgfTsKQEAgLTEyMjEsNyArMTIyMCw2IEBA
CiAJCQkJMUE2MzQ3OUYxODNENzJBNDAwNUIxNzA3IC8qIGFsbC1jb250ZW50LWluLW9uZS1pZnJh
bWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDMjVDQ0EwRDFFNTE0MTg0MDAyNkNC
OEEgLyogQWxsQWhlbS5zdmcgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRBOTIwMkYxRkVF
MzRFOTAwRjU5NTkwIC8qIGFwcGxlLWRhdGEtdXJsLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
Ci0JCQkJQTE3OThCOEIyMjQzNjFBNDAwMDc2NEJEIC8qIGFwcGxlLXBheS1hY3RpdmUtc2Vzc2lv
bi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUExRkI1MDNEMjJBMUNCRTIwMEQ0RDk3
OSAvKiBhcHBsZS1wYXktYXZhaWxhYmlsaXR5LWV4aXN0aW5nLW9iamVjdC5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCUExNzk4Qjg5MjI0MzVFMjkwMDA3NjRCRCAvKiBhcHBsZS1wYXkt
YXZhaWxhYmlsaXR5LWluLWlmcmFtZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUEx
Nzk4Qjg3MjI0MzQ0OUIwMDA3NjRCRCAvKiBhcHBsZS1wYXktYXZhaWxhYmlsaXR5Lmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCkBAIC0yNjU0LDcgKzI2NTIsNiBAQAogCQlBMTc5OEI4NDIyNDMz
NjQ3MDAwNzY0QkQgLyogV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3OThCODYyMjQzNDQ2QjAwMDc2NEJEIC8qIGFwcGxlLXBh
eS1hdmFpbGFiaWxpdHkuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJhcHBsZS1wYXktYXZhaWxhYmlsaXR5Lmh0
bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTc5OEI4ODIyNDM1RDJFMDAwNzY0
QkQgLyogYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS1pbi1pZnJhbWUuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJh
cHBsZS1wYXktYXZhaWxhYmlsaXR5LWluLWlmcmFtZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQTE3OThCOEEyMjQzNjExQTAwMDc2NEJEIC8qIGFwcGxlLXBheS1hY3RpdmUt
c2Vzc2lvbi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gImFwcGxlLXBheS1hY3RpdmUtc2Vzc2lvbi5odG1sIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3OTkxODYxRTFDOTk0RTAwQTUwNUVEIC8q
IFNoYXJlZEJ1ZmZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFNoYXJlZEJ1ZmZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3OTkxODkx
RTFDQTI0MTAwQTUwNUVEIC8qIFNoYXJlZEJ1ZmZlclRlc3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkQnVmZmVyVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUExNzk5MThBMUUxQ0EyNDEwMEE1MDVFRCAvKiBTaGFyZWRCdWZmZXJU
ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZEJ1ZmZlclRlc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQwMzMsNyArNDAzMCw2IEBACiAJCQkJ
NDZDMUVBOTcyNTc1ODgwNTAwNUU0MDlFIC8qIGFsZXJ0Lmh0bWwgKi8sCiAJCQkJQzI1Q0NBMEMx
RTUxNDBFNTAwMjZDQjhBIC8qIEFsbEFoZW0uc3ZnICovLAogCQkJCUY0QTkyMDJFMUZFRTM0Qzgw
MEY1OTU5MCAvKiBhcHBsZS1kYXRhLXVybC5odG1sICovLAotCQkJCUExNzk4QjhBMjI0MzYxMUEw
MDA3NjRCRCAvKiBhcHBsZS1wYXktYWN0aXZlLXNlc3Npb24uaHRtbCAqLywKIAkJCQlBMUZCNTAz
QzIyQTFDMjQ0MDBENEQ5NzkgLyogYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS1leGlzdGluZy1vYmpl
Y3QuaHRtbCAqLywKIAkJCQlBMTc5OEI4ODIyNDM1RDJFMDAwNzY0QkQgLyogYXBwbGUtcGF5LWF2
YWlsYWJpbGl0eS1pbi1pZnJhbWUuaHRtbCAqLywKIAkJCQlBMTc5OEI4NjIyNDM0NDZCMDAwNzY0
QkQgLyogYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBsZVBheS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwbGVQYXkubW0KaW5kZXggY2UzN2ZiZDAyZmM0
MDY1OThlZWUwOGQ5OWY4OWNmMWI5MjhkMzRkYi4uMTc5ZWQ2ZDE3MTA1YmViOWM0ZjM1M2RjYzI4
OTU3MTQzNTBkNzc5NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9BcHBsZVBheS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0FwcGxlUGF5Lm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgVEVTVChBcHBsZVBheSwgQXBw
bGVQYXlBdmFpbGFibGVCeURlZmF1bHQpCiAgICAgW1Rlc3RQcm90b2NvbCB1bnJlZ2lzdGVyXTsK
IH0KIAotVEVTVChBcHBsZVBheSwgQXBwbGVQYXlBdmFpbGFibGVJblVucmVzdHJpY3RlZENsaWVu
dHMpCitURVNUKEFwcGxlUGF5LCBBcHBsZVBheUF2YWlsYWJsZUluRnJhbWUpCiB7CiAgICAgW1Rl
c3RQcm90b2NvbCByZWdpc3RlcldpdGhTY2hlbWU6QCJodHRwcyJdOwogCkBAIC0xMTYsNyArMTE2
LDcgQEAgVEVTVChBcHBsZVBheSwgQXBwbGVQYXlBdmFpbGFibGVJblVucmVzdHJpY3RlZENsaWVu
dHMpCiAgICAgW2NvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0QXBwbGVQYXkiXTsK
IAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Ci0gICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImh0dHBzOi8vYnVuZGxlLWZpbGUvYXBwbGUtcGF5LWF2YWlsYWJpbGl0
eS1pbi1pZnJhbWUuaHRtbD91bnJlc3RyaWN0ZWQiXV1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwczovL2J1bmRsZS1maWxlL2FwcGxlLXBheS1hdmFpbGFiaWxpdHktaW4taWZyYW1lLmh0bWwi
XV1dOwogICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKICAg
ICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJsb2FkQXBwbGVQYXlGcmFtZSgpOyIgY29t
cGxldGlvbkhhbmRsZXI6bmlsXTsKIApAQCAtMTI3LDExICsxMjcsMTEgQEAgVEVTVChBcHBsZVBh
eSwgQXBwbGVQYXlBdmFpbGFibGVJblVucmVzdHJpY3RlZENsaWVudHMpCiAgICAgW1Rlc3RQcm90
b2NvbCB1bnJlZ2lzdGVyXTsKIH0KIAotVEVTVChBcHBsZVBheSwgVXNlclNjcmlwdEF0RG9jdW1l
bnRTdGFydERpc2FibGVzQXBwbGVQYXkpCitURVNUKEFwcGxlUGF5LCBVc2VyU2NyaXB0QXREb2N1
bWVudFN0YXJ0RG9lc05vdERpc2FibGVBcHBsZVBheSkKIHsKICAgICBbVGVzdFByb3RvY29sIHJl
Z2lzdGVyV2l0aFNjaGVtZTpAImh0dHBzIl07CiAKLSAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0g
YWRvcHROUyhbW1Rlc3RBcHBsZVBheUF2YWlsYWJsZVNjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9j
XSBpbml0V2l0aEFQSXNBdmFpbGFibGVFeHBlY3RhdGlvbjpOTyBjYW5NYWtlUGF5bWVudHNFeHBl
Y3RhdGlvbjpOT10pOworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdEFw
cGxlUGF5QXZhaWxhYmxlU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoQVBJc0F2
YWlsYWJsZUV4cGVjdGF0aW9uOllFUyBjYW5NYWtlUGF5bWVudHNFeHBlY3RhdGlvbjpZRVNdKTsK
ICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0
V2l0aFNvdXJjZTp1c2VyU2NyaXB0U291cmNlIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5OllFU10pOwogCiAgICAg
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlBy
b2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CkBA
IC0xNDgsMTEgKzE0OCwxMSBAQCBURVNUKEFwcGxlUGF5LCBVc2VyU2NyaXB0QXREb2N1bWVudFN0
YXJ0RGlzYWJsZXNBcHBsZVBheSkKICAgICBbVGVzdFByb3RvY29sIHVucmVnaXN0ZXJdOwogfQog
Ci1URVNUKEFwcGxlUGF5LCBVc2VyU2NyaXB0QXREb2N1bWVudEVuZERpc2FibGVzQXBwbGVQYXkp
CitURVNUKEFwcGxlUGF5LCBVc2VyU2NyaXB0QXREb2N1bWVudEVuZERvZXNOb3REaXNhYmxlQXBw
bGVQYXkpCiB7CiAgICAgW1Rlc3RQcm90b2NvbCByZWdpc3RlcldpdGhTY2hlbWU6QCJodHRwcyJd
OwogICAgIAotICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdEFwcGxlUGF5
QXZhaWxhYmxlU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoQVBJc0F2YWlsYWJs
ZUV4cGVjdGF0aW9uOk5PIGNhbk1ha2VQYXltZW50c0V4cGVjdGF0aW9uOk5PXSk7CisgICAgYXV0
byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0QXBwbGVQYXlBdmFpbGFibGVTY3JpcHRN
ZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhBUElzQXZhaWxhYmxlRXhwZWN0YXRpb246WUVT
IGNhbk1ha2VQYXltZW50c0V4cGVjdGF0aW9uOllFU10pOwogICAgIGF1dG8gdXNlclNjcmlwdCA9
IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2NdIGluaXRXaXRoU291cmNlOnVzZXJTY3JpcHRT
b3VyY2UgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudEVu
ZCBmb3JNYWluRnJhbWVPbmx5OllFU10pOwogICAgIAogICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1
cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVy
bmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOwpAQCAtMTY5LDExICsxNjksMTEgQEAg
VEVTVChBcHBsZVBheSwgVXNlclNjcmlwdEF0RG9jdW1lbnRFbmREaXNhYmxlc0FwcGxlUGF5KQog
ICAgIFtUZXN0UHJvdG9jb2wgdW5yZWdpc3Rlcl07CiB9CiAKLVRFU1QoQXBwbGVQYXksIFVzZXJB
Z2VudFNjcmlwdEV2YWx1YXRpb25EaXNhYmxlc0FwcGxlUGF5KQorVEVTVChBcHBsZVBheSwgVXNl
ckFnZW50U2NyaXB0RXZhbHVhdGlvbkRvZXNOb3REaXNhYmxlQXBwbGVQYXkpCiB7CiAgICAgW1Rl
c3RQcm90b2NvbCByZWdpc3RlcldpdGhTY2hlbWU6QCJodHRwcyJdOwogCi0gICAgYXV0byBtZXNz
YWdlSGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0QXBwbGVQYXlBdmFpbGFibGVTY3JpcHRNZXNzYWdl
SGFuZGxlciBhbGxvY10gaW5pdFdpdGhBUElzQXZhaWxhYmxlRXhwZWN0YXRpb246WUVTIGNhbk1h
a2VQYXltZW50c0V4cGVjdGF0aW9uOk5PXSk7CisgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFk
b3B0TlMoW1tUZXN0QXBwbGVQYXlBdmFpbGFibGVTY3JpcHRNZXNzYWdlSGFuZGxlciBhbGxvY10g
aW5pdFdpdGhBUElzQXZhaWxhYmxlRXhwZWN0YXRpb246WUVTIGNhbk1ha2VQYXltZW50c0V4cGVj
dGF0aW9uOllFU10pOwogCiAgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlv
biA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBs
dWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVK
U0NGb3JUZXN0aW5nOllFU107CiAgICAgW2NvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9s
bGVyIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJ0
ZXN0QXBwbGVQYXkiXTsKQEAgLTE5MCwxMSArMTkwLDExIEBAIFRFU1QoQXBwbGVQYXksIFVzZXJB
Z2VudFNjcmlwdEV2YWx1YXRpb25EaXNhYmxlc0FwcGxlUGF5KQogICAgIFtUZXN0UHJvdG9jb2wg
dW5yZWdpc3Rlcl07CiB9CiAKLVRFU1QoQXBwbGVQYXksIFVzZXJBZ2VudFNjcmlwdEV2YWx1YXRp
b25EaXNhYmxlc0FwcGxlUGF5SW5FeGlzdGluZ09iamVjdHMpCitURVNUKEFwcGxlUGF5LCBVc2Vy
QWdlbnRTY3JpcHRFdmFsdWF0aW9uRG9lc05vdERpc2FibGVBcHBsZVBheUluRXhpc3RpbmdPYmpl
Y3RzKQogewogICAgIFtUZXN0UHJvdG9jb2wgcmVnaXN0ZXJXaXRoU2NoZW1lOkAiaHR0cHMiXTsK
IAotICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdEFwcGxlUGF5QXZhaWxh
YmxlU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoQVBJc0F2YWlsYWJsZUV4cGVj
dGF0aW9uOllFUyBjYW5NYWtlUGF5bWVudHNFeHBlY3RhdGlvbjpOT10pOworICAgIGF1dG8gbWVz
c2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdEFwcGxlUGF5QXZhaWxhYmxlU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoQVBJc0F2YWlsYWJsZUV4cGVjdGF0aW9uOllFUyBjYW5N
YWtlUGF5bWVudHNFeHBlY3RhdGlvbjpZRVNdKTsKIAogICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1
cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVy
bmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOwogICAgIFtjb25maWd1cmF0aW9uLnVz
ZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxl
ci5nZXQoKSBuYW1lOkAidGVzdEFwcGxlUGF5Il07CkBAIC0yMDUsNyArMjA1LDcgQEAgVEVTVChB
cHBsZVBheSwgVXNlckFnZW50U2NyaXB0RXZhbHVhdGlvbkRpc2FibGVzQXBwbGVQYXlJbkV4aXN0
aW5nT2JqZWN0cykKICAgICBVdGlsOjpydW4oJmlzRG9uZSk7CiAKICAgICBpc0RvbmUgPSBmYWxz
ZTsKLSAgICBbbWVzc2FnZUhhbmRsZXIgc2V0Q2FuTWFrZVBheW1lbnRzRXhwZWN0YXRpb246Tk9d
OworICAgIFttZXNzYWdlSGFuZGxlciBzZXRDYW5NYWtlUGF5bWVudHNFeHBlY3RhdGlvbjpZRVNd
OwogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmxvY2F0aW9uLmhh
c2ggPSAnI3Rlc3QnIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogCiAgICAgVXRpbDo6cnVuKCZp
c0RvbmUpOwpAQCAtMjQwLDE0ICsyNDAsOSBAQCBzdGF0aWMgdm9pZCBydW5BY3RpdmVTZXNzaW9u
VGVzdChOU1VSTCAqdXJsLCBCT09MIHNob3VsZEJsb2NrU2NyaXB0cykKICAgICBbVGVzdFByb3Rv
Y29sIHVucmVnaXN0ZXJdOwogfQogCi1URVNUKEFwcGxlUGF5LCBBY3RpdmVTZXNzaW9uQmxvY2tz
VXNlckFnZW50U2NyaXB0cykKK1RFU1QoQXBwbGVQYXksIENhbk1ha2VQYXltZW50c0RvZXNOb3RC
bG9ja1VzZXJBZ2VudFNjcmlwdHMpCiB7Ci0gICAgcnVuQWN0aXZlU2Vzc2lvblRlc3QoW05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2J1bmRsZS1maWxlL2FwcGxlLXBheS1hY3RpdmUtc2Vz
c2lvbi5odG1sIl0sIFlFUyk7Ci19Ci0KLVRFU1QoQXBwbGVQYXksIENhbk1ha2VQYXltZW50c0Js
b2Nrc1VzZXJBZ2VudFNjcmlwdHMpCi17Ci0gICAgcnVuQWN0aXZlU2Vzc2lvblRlc3QoW05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2J1bmRsZS1maWxlL2FwcGxlLXBheS1jYW4tbWFrZS1w
YXltZW50cy5odG1sIl0sIFlFUyk7CisgICAgcnVuQWN0aXZlU2Vzc2lvblRlc3QoW05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwczovL2J1bmRsZS1maWxlL2FwcGxlLXBheS1jYW4tbWFrZS1wYXlt
ZW50cy5odG1sIl0sIE5PKTsKIH0KIAogVEVTVChBcHBsZVBheSwgQ2FuTWFrZVBheW1lbnRzRmFs
c2VEb2VzTm90QmxvY2tVc2VyQWdlbnRTY3JpcHRzKQpAQCAtMjU1LDkgKzI1MCw5IEBAIFRFU1Qo
QXBwbGVQYXksIENhbk1ha2VQYXltZW50c0ZhbHNlRG9lc05vdEJsb2NrVXNlckFnZW50U2NyaXB0
cykKICAgICBydW5BY3RpdmVTZXNzaW9uVGVzdChbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBz
Oi8vYnVuZGxlLWZpbGUvYXBwbGUtcGF5LWNhbi1tYWtlLXBheW1lbnRzLmh0bWw/ZmFsc2UiXSwg
Tk8pOwogfQogCi1URVNUKEFwcGxlUGF5LCBDYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZEJs
b2Nrc1VzZXJBZ2VudFNjcmlwdHMpCitURVNUKEFwcGxlUGF5LCBDYW5NYWtlUGF5bWVudHNXaXRo
QWN0aXZlQ2FyZERvZXNOb3RCbG9ja1VzZXJBZ2VudFNjcmlwdHMpCiB7Ci0gICAgcnVuQWN0aXZl
U2Vzc2lvblRlc3QoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2J1bmRsZS1maWxlL2Fw
cGxlLXBheS1jYW4tbWFrZS1wYXltZW50cy13aXRoLWFjdGl2ZS1jYXJkLmh0bWwiXSwgWUVTKTsK
KyAgICBydW5BY3RpdmVTZXNzaW9uVGVzdChbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8v
YnVuZGxlLWZpbGUvYXBwbGUtcGF5LWNhbi1tYWtlLXBheW1lbnRzLXdpdGgtYWN0aXZlLWNhcmQu
aHRtbCJdLCBOTyk7CiB9CiAKIFRFU1QoQXBwbGVQYXksIENhbk1ha2VQYXltZW50c1dpdGhBY3Rp
dmVDYXJkRmFsc2VEb2VzTm90QmxvY2tVc2VyQWdlbnRTY3JpcHRzKQpAQCAtMjY1LDkgKzI2MCw5
IEBAIFRFU1QoQXBwbGVQYXksIENhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkRmFsc2VEb2Vz
Tm90QmxvY2tVc2VyQWdlbnRTY3JpcHRzKQogICAgIHJ1bkFjdGl2ZVNlc3Npb25UZXN0KFtOU1VS
TCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9idW5kbGUtZmlsZS9hcHBsZS1wYXktY2FuLW1ha2Ut
cGF5bWVudHMtd2l0aC1hY3RpdmUtY2FyZC5odG1sP2ZhbHNlIl0sIE5PKTsKIH0KIAotVEVTVChB
cHBsZVBheSwgQ2FuTWFrZVBheW1lbnRCbG9ja3NVc2VyQWdlbnRTY3JpcHRzKQorVEVTVChBcHBs
ZVBheSwgQ2FuTWFrZVBheW1lbnREb2VzTm90QmxvY2tVc2VyQWdlbnRTY3JpcHRzKQogewotICAg
IHJ1bkFjdGl2ZVNlc3Npb25UZXN0KFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9idW5k
bGUtZmlsZS9hcHBsZS1wYXktY2FuLW1ha2UtcGF5bWVudC5odG1sIl0sIFlFUyk7CisgICAgcnVu
QWN0aXZlU2Vzc2lvblRlc3QoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2J1bmRsZS1m
aWxlL2FwcGxlLXBheS1jYW4tbWFrZS1wYXltZW50Lmh0bWwiXSwgTk8pOwogfQogCiBURVNUKEFw
cGxlUGF5LCBDYW5NYWtlUGF5bWVudEZhbHNlRG9lc05vdEJsb2NrVXNlckFnZW50U2NyaXB0cykK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwbGUt
cGF5LWFjdGl2ZS1zZXNzaW9uLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL2FwcGxlLXBheS1hY3RpdmUtc2Vzc2lvbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxZjk2NjBjNTU5NTg1YzNjMjFlMmJmMDEyZTRjOGI1YmEyN2JkYjVmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwbGUtcGF5LWFjdGl2ZS1zZXNzaW9uLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGJvZHk+Ci08c2Ny
aXB0PgotICAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLnN1cHBvcnRzVW5yZXN0
cmljdGVkQXBwbGVQYXkgPSBmYWxzZTsKLSAgICBpbnRlcm5hbHMuc2V0QXBwbGVQYXlJc0FjdGl2
ZSgpOwotICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RBcHBsZVBheS5wb3N0
TWVzc2FnZSgiZG9uZSIpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1hdmFpbGFiaWxpdHktZXhpc3Rpbmctb2Jq
ZWN0Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBh
eS1hdmFpbGFiaWxpdHktZXhpc3Rpbmctb2JqZWN0Lmh0bWwKaW5kZXggZTM1OTIwN2I5NTczYTM5
N2RjNGVlOTI5YzFiMGM1OWUyNTM3ZjJhZi4uNjVhODA3N2YyNGFiNTRiNjZjN2ZkNGZlNGRkNDc2
NTQ2YTFjNTlmYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9hcHBsZS1wYXktYXZhaWxhYmlsaXR5LWV4aXN0aW5nLW9iamVjdC5odG1sCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwbGUtcGF5LWF2YWlsYWJpbGl0
eS1leGlzdGluZy1vYmplY3QuaHRtbApAQCAtMywzMCArMywyNiBAQAogPHNjcmlwdCBzcmM9ImFw
cGxlLXBheS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogICAgIGNvbnN0IGV2ZW50TGlzdGVuZXIg
PSBhc3luYyAoKSA9PiB7Ci0gICAgICAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9y
LnN1cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXkgPSBmYWxzZTsKLQogICAgICAgICBjb25zdCBh
cHBsZVBheVNlc3Npb25BdmFpbGFibGUgPSAhIXdpbmRvdy5BcHBsZVBheVNlc3Npb247CiAgICAg
ICAgIGNvbnN0IHBheW1lbnRSZXF1ZXN0QXZhaWxhYmxlID0gISF3aW5kb3cuUGF5bWVudFJlcXVl
c3Q7Ci0gICAgICAgIGNvbnN0IHN1cHBvcnRzVmVyc2lvbiA9IEFwcGxlUGF5U2Vzc2lvbi5zdXBw
b3J0c1ZlcnNpb24oMSk7Ci0KLSAgICAgICAgaWYgKCF3aW5kb3cud2tQYXltZW50UmVxdWVzdCkg
ewotICAgICAgICAgICAgd2tQYXltZW50UmVxdWVzdCA9IG5ldyBQYXltZW50UmVxdWVzdChbYXBw
bGVQYXlNZXRob2QoKV0sIGFwcGxlUGF5RGV0YWlscyk7Ci0KLSAgICAgICAgICAgIHdpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RBcHBsZVBheS5wb3N0TWVzc2FnZSh7Ci0gICAgICAg
ICAgICAgICAgYXBwbGVQYXlTZXNzaW9uQXZhaWxhYmxlLAotICAgICAgICAgICAgICAgIHBheW1l
bnRSZXF1ZXN0QXZhaWxhYmxlLAotICAgICAgICAgICAgICAgIHN1cHBvcnRzVmVyc2lvbiwKLSAg
ICAgICAgICAgIH0pOwotCisgICAgICAgIGlmICghYXBwbGVQYXlTZXNzaW9uQXZhaWxhYmxlIHx8
ICFwYXltZW50UmVxdWVzdEF2YWlsYWJsZSkgeworICAgICAgICAgICAgd2luZG93LndlYmtpdC5t
ZXNzYWdlSGFuZGxlcnMudGVzdEFwcGxlUGF5LnBvc3RNZXNzYWdlKHsgYXBwbGVQYXlTZXNzaW9u
QXZhaWxhYmxlLCBwYXltZW50UmVxdWVzdEF2YWlsYWJsZSB9KTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCisgICAgICAgIGNvbnN0IHN1cHBvcnRzVmVyc2lvbiA9IEFwcGxlUGF5
U2Vzc2lvbi5zdXBwb3J0c1ZlcnNpb24oMSk7CisgICAgICAgIGNvbnN0IGNhbk1ha2VQYXltZW50
cyA9IEFwcGxlUGF5U2Vzc2lvbi5jYW5NYWtlUGF5bWVudHMoKTsKKyAgICAgICAgY29uc3QgY2Fu
TWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQgPSBhd2FpdCBBcHBsZVBheVNlc3Npb24uY2FuTWFr
ZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoJycpOworCisgICAgICAgIHdpbmRvdy53a1BheW1lbnRS
ZXF1ZXN0ID8/PSBuZXcgUGF5bWVudFJlcXVlc3QoW2FwcGxlUGF5TWV0aG9kKCldLCBhcHBsZVBh
eURldGFpbHMpOwogICAgICAgICBjb25zdCBjYW5NYWtlUGF5bWVudCA9IGF3YWl0IHdrUGF5bWVu
dFJlcXVlc3QuY2FuTWFrZVBheW1lbnQoKTsKIAogICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3Nh
Z2VIYW5kbGVycy50ZXN0QXBwbGVQYXkucG9zdE1lc3NhZ2UoewogICAgICAgICAgICAgYXBwbGVQ
YXlTZXNzaW9uQXZhaWxhYmxlLAogICAgICAgICAgICAgcGF5bWVudFJlcXVlc3RBdmFpbGFibGUs
CiAgICAgICAgICAgICBzdXBwb3J0c1ZlcnNpb24sCisgICAgICAgICAgICBjYW5NYWtlUGF5bWVu
dHMsCisgICAgICAgICAgICBjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCwKICAgICAgICAg
ICAgIGNhbk1ha2VQYXltZW50LAogICAgICAgICB9KTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXktYXZhaWxhYmlsaXR5
LWluLWlmcmFtZS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9h
cHBsZS1wYXktYXZhaWxhYmlsaXR5LWluLWlmcmFtZS5odG1sCmluZGV4IGY5MGE2ZjZjNzM1M2Jm
ZWM4NzUxMmRhMzk4ZmUxZWNkZDgyOGU3YzYuLjliYzg3NDBhMThmNTA1OWYxOGRkOWUzZWZjZDA5
ZWZjYmZhNDU4NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS1pbi1pZnJhbWUuaHRtbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1hdmFpbGFiaWxpdHktaW4t
aWZyYW1lLmh0bWwKQEAgLTEsNyArMSw2IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxib2R5PgogPHNj
cmlwdD4KLSAgICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGluYXRvci5zdXBwb3J0c1VucmVz
dHJpY3RlZEFwcGxlUGF5ID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PT0gIj91bnJlc3RyaWN0
ZWQiID8gdHJ1ZSA6IGZhbHNlOwogICAgIGxvYWRBcHBsZVBheUZyYW1lID0gKCkgPT4gewogICAg
ICAgICBjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKICAg
ICAgICAgaWZyYW1lLnNyYyA9ICdhcHBsZS1wYXktYXZhaWxhYmlsaXR5Lmh0bWwnICsgd2luZG93
LmxvY2F0aW9uLnNlYXJjaDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvYXBwbGUtcGF5LWF2YWlsYWJpbGl0eS5odG1sIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXktYXZhaWxhYmlsaXR5Lmh0bWwKaW5kZXgg
MTgyYzYyZmNhNzQ0ZTBlYzM4Yzg5ZjZhMDQyMzhjNGQ3OGE1NGYzZS4uZThiOGMzNTAzM2MzN2I3
YzNjNjg2Y2FjZWQxMzliNWEwM2RmNDFlNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXktYXZhaWxhYmlsaXR5Lmh0bWwKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXktYXZhaWxhYmlsaXR5
Lmh0bWwKQEAgLTMsOCArMyw2IEBACiA8c2NyaXB0IHNyYz0iYXBwbGUtcGF5LmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQ+CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyAo
KSA9PiB7Ci0gICAgICAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5hdG9yLnN1cHBvcnRz
VW5yZXN0cmljdGVkQXBwbGVQYXkgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoID09PSAiP3VucmVz
dHJpY3RlZCIgPyB0cnVlIDogZmFsc2U7Ci0KICAgICAgICAgY29uc3QgYXBwbGVQYXlTZXNzaW9u
QXZhaWxhYmxlID0gISF3aW5kb3cuQXBwbGVQYXlTZXNzaW9uOwogICAgICAgICBjb25zdCBwYXlt
ZW50UmVxdWVzdEF2YWlsYWJsZSA9ICEhd2luZG93LlBheW1lbnRSZXF1ZXN0OwogICAgICAgICBp
ZiAoIWFwcGxlUGF5U2Vzc2lvbkF2YWlsYWJsZSB8fCAhcGF5bWVudFJlcXVlc3RBdmFpbGFibGUp
IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBw
bGUtcGF5LWNhbi1tYWtlLXBheW1lbnQuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvYXBwbGUtcGF5LWNhbi1tYWtlLXBheW1lbnQuaHRtbAppbmRleCA5ODkzMDIx
YjNkZGYxMzU1NDE2ZDJiNzBlMWNmZmNhMzYxOWNhNGNhLi40YTg3NDYxZjNlYjA0OWIwMzU1N2Y3
MDc1NDY0ODkzMjc4YjcwZDhjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL2FwcGxlLXBheS1jYW4tbWFrZS1wYXltZW50Lmh0bWwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXktY2FuLW1ha2UtcGF5bWVu
dC5odG1sCkBAIC0yLDcgKzIsNiBAQAogPGJvZHk+CiA8c2NyaXB0IHNyYz0iYXBwbGUtcGF5Lmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0gICAgaW50ZXJuYWxzLm1vY2tQYXltZW50Q29vcmRpbmF0
b3Iuc3VwcG9ydHNVbnJlc3RyaWN0ZWRBcHBsZVBheSA9IGZhbHNlOwogICAgIGludGVybmFscy5t
b2NrUGF5bWVudENvb3JkaW5hdG9yLnNldENhbk1ha2VQYXltZW50cyh3aW5kb3cubG9jYXRpb24u
c2VhcmNoID09PSAiP2ZhbHNlIiA/IGZhbHNlIDogdHJ1ZSk7CiAKICAgICBjb25zdCBwYXltZW50
UmVxdWVzdCA9IG5ldyBQYXltZW50UmVxdWVzdChbYXBwbGVQYXlNZXRob2QoKV0sIGFwcGxlUGF5
RGV0YWlscyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL2FwcGxlLXBheS1jYW4tbWFrZS1wYXltZW50cy13aXRoLWFjdGl2ZS1jYXJkLmh0bWwgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1jYW4tbWFrZS1w
YXltZW50cy13aXRoLWFjdGl2ZS1jYXJkLmh0bWwKaW5kZXggYzQ3YzNmYWM1ZjNiNTVjNTVmYjQ5
OWZjZjY4YmNhNzc3ZTY2MmRiNy4uM2EyNGY0NjdlNGM0ZjYxOTlmYzllMjE3NTA1ZGU4ZTQxMGFi
ZjE0OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9h
cHBsZS1wYXktY2FuLW1ha2UtcGF5bWVudHMtd2l0aC1hY3RpdmUtY2FyZC5odG1sCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwbGUtcGF5LWNhbi1tYWtlLXBh
eW1lbnRzLXdpdGgtYWN0aXZlLWNhcmQuaHRtbApAQCAtMSw3ICsxLDYgQEAKIDwhRE9DVFlQRSBo
dG1sPgogPGJvZHk+CiA8c2NyaXB0PgotICAgIGludGVybmFscy5tb2NrUGF5bWVudENvb3JkaW5h
dG9yLnN1cHBvcnRzVW5yZXN0cmljdGVkQXBwbGVQYXkgPSBmYWxzZTsKICAgICBpbnRlcm5hbHMu
bW9ja1BheW1lbnRDb29yZGluYXRvci5zZXRDYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZCh3
aW5kb3cubG9jYXRpb24uc2VhcmNoID09PSAiP2ZhbHNlIiA/IGZhbHNlIDogdHJ1ZSk7CiAgICAg
QXBwbGVQYXlTZXNzaW9uLmNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKCIiKS50aGVuKCgp
ID0+IHsKICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEFwcGxlUGF5
LnBvc3RNZXNzYWdlKCJkb25lIik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1jYW4tbWFrZS1wYXltZW50cy5odG1sIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHBsZS1wYXktY2FuLW1ha2UtcGF5bWVu
dHMuaHRtbAppbmRleCAyYWVhMWQ4YjQyYThlYjRhODcwNWU2OGUwNzcxYWI2MzZmNjc5NWE3Li43
M2ViYzBiYjM3YmFlNjdjM2NhYTRkNzIzNGRjOGFjYjc0ZjVkNzViIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL2FwcGxlLXBheS1jYW4tbWFrZS1wYXlt
ZW50cy5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBw
bGUtcGF5LWNhbi1tYWtlLXBheW1lbnRzLmh0bWwKQEAgLTEsNyArMSw2IEBACiA8IURPQ1RZUEUg
aHRtbD4KIDxib2R5PgogPHNjcmlwdD4KLSAgICBpbnRlcm5hbHMubW9ja1BheW1lbnRDb29yZGlu
YXRvci5zdXBwb3J0c1VucmVzdHJpY3RlZEFwcGxlUGF5ID0gZmFsc2U7CiAgICAgaW50ZXJuYWxz
Lm1vY2tQYXltZW50Q29vcmRpbmF0b3Iuc2V0Q2FuTWFrZVBheW1lbnRzKHdpbmRvdy5sb2NhdGlv
bi5zZWFyY2ggPT09ICI/ZmFsc2UiID8gZmFsc2UgOiB0cnVlKTsKICAgICBBcHBsZVBheVNlc3Np
b24uY2FuTWFrZVBheW1lbnRzKCk7CiAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMu
dGVzdEFwcGxlUGF5LnBvc3RNZXNzYWdlKCJkb25lIik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>