<?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>225397</bug_id>
          
          <creation_ts>2021-05-05 10:19:32 -0700</creation_ts>
          <short_desc>[JSC] Don&apos;t use JSScope instances as `this` value when calling functions</short_desc>
          <delta_ts>2024-10-21 10:48:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></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>
          <dependson>276788</dependson>
    
    <dependson>281214</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>commit-queue</cc>
    
    <cc>com.webkit.iidmsa</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipj</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1756981</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-05 10:19:32 -0700</bug_when>
    <thetext>[JSC] Abolish using resolved scope as |this| value when calling functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756982</commentid>
    <comment_count>1</comment_count>
      <attachid>427777</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-05 10:24:04 -0700</bug_when>
    <thetext>Created attachment 427777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757001</commentid>
    <comment_count>2</comment_count>
      <attachid>427784</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-05 11:29:48 -0700</bug_when>
    <thetext>Created attachment 427784
Patch

Add missing prediction for GetThisValueForCall and call operationToObject with JSValueRegs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757232</commentid>
    <comment_count>3</comment_count>
      <attachid>427844</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-05 20:00:21 -0700</bug_when>
    <thetext>Created attachment 427844
Patch

Call getters / setters with JSProxy as |this| value, fix SpeculativeJIT::compileGetThisValueForCall(), fix EvalFunctionCallNode, fix 32-bit builds, remove JSObject::isEnvironment().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759289</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-12 10:20:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/77915872&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763202</commentid>
    <comment_count>5</comment_count>
      <attachid>429549</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-24 11:38:03 -0700</bug_when>
    <thetext>Created attachment 429549
Patch

Remove loadVariable() from 32-bit to_this LLInt op to fix segfaults, rebase on top of r277830, and adjust some LayoutTests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763437</commentid>
    <comment_count>6</comment_count>
      <attachid>429630</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-24 21:42:45 -0700</bug_when>
    <thetext>Created attachment 429630
Patch

Remove incorrect exception check after toGlobalThis(), fix JSErrorHandler to pass JSProxy as |this| value, and adjust more LayoutTests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764294</commentid>
    <comment_count>7</comment_count>
      <attachid>429869</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-27 05:07:08 -0700</bug_when>
    <thetext>Created attachment 429869
Patch

Adjust flaky test, tweak JS API avoid any behavior change (+ add coverage), and fix multiple cases of WebCore using raw GlobalObject as |this| value for [[Call]] (+ add ASSERTs for that).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764306</commentid>
    <comment_count>8</comment_count>
      <attachid>429873</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-27 06:11:37 -0700</bug_when>
    <thetext>Created attachment 429873
Patch

Fix build and rename JSScope::receiverForScope() to JSObject::toPublicThisValue().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764693</commentid>
    <comment_count>9</comment_count>
      <attachid>429991</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-27 23:10:20 -0700</bug_when>
    <thetext>Created attachment 429991
Patch

Test [PutForwards] WebIDL attribute on global interface, turn JSObject::toPublicThisValue() into a function to fix --debug buil, and utilize it to fix plugins &amp; SparseArrayEntry::put() (+ improve coverage).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764698</commentid>
    <comment_count>10</comment_count>
      <attachid>429993</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-05-27 23:45:53 -0700</bug_when>
    <thetext>Created attachment 429993
Patch

Rebase patch and use std::nullopt to fix the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768614</commentid>
    <comment_count>11</comment_count>
      <attachid>429993</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-06-10 11:08:40 -0700</bug_when>
    <thetext>Comment on attachment 429993
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        * API/APICallbackFunction.h:

Can you write some stuff about what you did?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:13497
&gt; +    addSlowPathGenerator(slowPathCall(slowCases, this, operationToObject, valueGPR, TrustedImmPtr::weakPointer(m_graph, globalObject), valueRegs, TrustedImmPtr(nullptr)));

What are some example programs where the slow path would be taken?

&gt; Source/JavaScriptCore/jit/JITOpcodes.cpp:2097
&gt; +void JIT::emit_op_get_this_value_for_call(const Instruction* currentInstruction)
&gt; +{
&gt; +    auto bytecode = currentInstruction-&gt;as&lt;OpGetThisValueForCall&gt;();
&gt; +#if USE(JSVALUE64)
&gt; +    JSValueRegs valueRegs(regT0);
&gt; +#else
&gt; +    JSValueRegs valueRegs(regT1, regT0);
&gt; +#endif
&gt; +    emitGetVirtualRegister(bytecode.m_scope, valueRegs);
&gt; +
&gt; +    Jump isWithScope = branchIfNotType(valueRegs.payloadGPR(), JSTypeRange { FirstJSScopeType, LastJSScopeType });
&gt; +    moveTrustedValue(jsUndefined(), valueRegs);
&gt; +    isWithScope.link(this);
&gt; +
&gt; +    emitPutVirtualRegister(bytecode.m_dst, valueRegs);
&gt; +}

I really like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768633</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-06-10 11:40:48 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #11)
&gt; Comment on attachment 429993 [details]
&gt; Patch

Thank you for reviewing so quickly, Filip! And sorry for missing ChangeLog.

&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:13497
&gt; &gt; +    addSlowPathGenerator(slowPathCall(slowCases, this, operationToObject, valueGPR, TrustedImmPtr::weakPointer(m_graph, globalObject), valueRegs, TrustedImmPtr(nullptr)));
&gt; 
&gt; What are some example programs where the slow path would be taken?

Sloppy mode functions called with |this| value of a primitive string/number/boolean/bigint, which requires allocation: `(function() { return this; }.call(42);`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1896023</commentid>
    <comment_count>13</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-09-03 06:22:59 -0700</bug_when>
    <thetext>I checked and it seems this r+ patch didn&apos;t landed yet and also this FIXME is still present:

https://github.com/WebKit/WebKit/blob/6bb75cf119f4cf3c077ec234af476fb575b28509/Source/WebCore/bindings/js/JSDOMOperation.h#L38

Is something pending or this is no longer required? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2049976</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2024-07-31 19:18:05 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/31572</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2066671</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-10-09 15:26:47 -0700</bug_when>
    <thetext>Committed 284931@main (ee167b8fe4fd): &lt;https://commits.webkit.org/284931@main&gt;

Reviewed commits have been landed. Closing PR #31572 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2066741</commentid>
    <comment_count>16</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2024-10-09 18:39:58 -0700</bug_when>
    <thetext>Re-opening for pull request https://github.com/WebKit/WebKit/pull/34946</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2066743</commentid>
    <comment_count>17</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2024-10-09 18:42:13 -0700</bug_when>
    <thetext>The test is failing.
https://results.webkit.org/?suite=layout-tests&amp;test=imported%2Fw3c%2Fweb-platform-tests%2FWebIDL%2Fecmascript-binding%2Fglobal-object-implicit-this-value.any.serviceworker.html&amp;flavor=wk2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2066744</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-10-09 18:42:28 -0700</bug_when>
    <thetext>Test gardening commit 284940@main (b692c5aeee32): &lt;https://commits.webkit.org/284940@main&gt;

Reviewed commits have been landed. Closing PR #34946 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2066853</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2024-10-10 03:35:17 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 281214</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2066888</commentid>
    <comment_count>20</comment_count>
    <who name="Fady Farag">com.webkit.iidmsa</who>
    <bug_when>2024-10-10 06:36:34 -0700</bug_when>
    <thetext>*** Bug 281193 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2069603</commentid>
    <comment_count>21</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2024-10-21 10:48:53 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/35527</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427777</attachid>
            <date>2021-05-05 10:24:04 -0700</date>
            <delta_ts>2021-05-05 11:29:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225397-20210505202402.patch</filename>
            <type>text/plain</type>
            <size>119530</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzcwMjYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTA1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBBYm9saXNoIHVzaW5nIHJlc29sdmVkIHNjb3Bl
IGFzIHx0aGlzfCB2YWx1ZSB3aGVuIGNhbGxpbmcgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9iaWctaW50LXNwZWMtdG8t
dGhpcy5qczoKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1zdHJpY3Qtc3BlYy10by10aGlzLmpz
OgorICAgICAgICAqIHN0cmVzcy92YXJpYWJsZS1uYW1lZC1ldmFsLmpzOiBBZGRlZC4KKwogMjAy
MS0wNS0wMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHN5
bnRheCBlcnJvciBtZXNzYWdlIGZvciBBVVRPUExVU1BMVVMgdG9rZW4uCkluZGV4OiBKU1Rlc3Rz
L3N0cmVzcy9iaWctaW50LXNwZWMtdG8tdGhpcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0
cmVzcy9iaWctaW50LXNwZWMtdG8tdGhpcy5qcwkocmV2aXNpb24gMjc3MDI2KQorKysgSlNUZXN0
cy9zdHJlc3MvYmlnLWludC1zcGVjLXRvLXRoaXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSwzIEBACi0vL0Agc2tpcCBpZiBub3QgJGppdFRlc3RzCi0vL0AgcnVuRGVmYXVsdCgiLS11c2VD
b25jdXJyZW50SklUPWZhbHNlIikKLQogZnVuY3Rpb24gYXNzZXJ0KGEpIHsKICAgICBpZiAoIWEp
CiAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIpOwpAQCAtMTgsNiArMTUs
MyBAQCBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDA7IGkrKykgewogICAgIGFzc2VydChmb28uYXBwbHkoMzAwKSA9PT0gIm9iamVjdCIp
OwogfQotCi1hc3NlcnQobnVtYmVyT2ZERkdDb21waWxlcyhmb28pID09PSAxKTsKLQpJbmRleDog
SlNUZXN0cy9zdHJlc3MvYmlnLWludC1zdHJpY3Qtc3BlYy10by10aGlzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEpTVGVzdHMvc3RyZXNzL2JpZy1pbnQtc3RyaWN0LXNwZWMtdG8tdGhpcy5qcwkocmV2aXNp
b24gMjc3MDI2KQorKysgSlNUZXN0cy9zdHJlc3MvYmlnLWludC1zdHJpY3Qtc3BlYy10by10aGlz
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMyBAQAotLy9AIHJ1bkRlZmF1bHQoIi0tdXNl
Q29uY3VycmVudEpJVD1mYWxzZSIpCi0KIGZ1bmN0aW9uIGFzc2VydChhKSB7CiAgICAgaWYgKCFh
KQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKTsKQEAgLTE4LDYgKzE2
LDMgQEAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CiBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDAwOyBpKyspIHsKICAgICBhc3NlcnQoZm9vLmFwcGx5KDMwMCkgPT09ICJudW1iZXIi
KTsKIH0KLQotYXNzZXJ0KG51bWJlck9mREZHQ29tcGlsZXMoZm9vKSA+IDEpOwotCkluZGV4OiBK
U1Rlc3RzL3N0cmVzcy92YXJpYWJsZS1uYW1lZC1ldmFsLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVz
dHMvc3RyZXNzL3ZhcmlhYmxlLW5hbWVkLWV2YWwuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0
cy9zdHJlc3MvdmFyaWFibGUtbmFtZWQtZXZhbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE5IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgQmFkIHZhbHVlOiAk
e2FjdHVhbH0uYCk7Cit9CisKK2xldCBldmFsOworCisoZnVuY3Rpb24gdGhpc1ZhbHVlKCkgewor
ICAgIGV2YWwgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH07CisgICAgc2hvdWxkQmUoZXZh
bCgpLCBnbG9iYWxUaGlzKTsKKworICAgIGV2YWwgPSBmdW5jdGlvbigpIHsgInVzZSBzdHJpY3Qi
OyByZXR1cm4gdGhpczsgfTsKKyAgICBzaG91bGRCZShldmFsKCksIHVuZGVmaW5lZCk7CisKKyAg
ICBjb25zdCBiaW5kaW5nT2JqZWN0ID0geyBldmFsIH07CisgICAgd2l0aCAoYmluZGluZ09iamVj
dCkgeworICAgICAgICBzaG91bGRCZShldmFsKCksIGJpbmRpbmdPYmplY3QpOworICAgIH0KK30p
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzAyNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NDEgQEAKKzIwMjEtMDUtMDUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdIEFib2xpc2ggdXNpbmcgcmVzb2x2ZWQgc2NvcGUgYXMgfHRoaXN8
IHZhbHVlIHdoZW4gY2FsbGluZyBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTM5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaDoKKyAgICAg
ICAgKEpTQzo6QVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbEltcGwpOgorICAgICAgICAqIEFQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6Y2FsbEltcGwpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgor
ICAgICAgICAoSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChK
U0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNo
ZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1RvVGhpc1N0YXR1cy5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmg6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRHZXRGdW5jdGlvbkZyb21TY29wZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpoYXNQYXJlbnRXaXRoU2NvcGUgY29uc3QpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFRvVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgIChKU0M6OlRhZ2dlZFRlbXBsYXRlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxs
RnJhbWU6OnRoaXNWYWx1ZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKEpTQzo6REZHOjpp
c1RvVGhpc0FuSWRlbnRpdHkpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sp
OgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpm
b2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6
OkZpeHVwUGhhc2U6OmZpeHVwVG9UaGlzKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAg
ICAgICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNFQ01BTW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6ZWNtYU1vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAg
ICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVj
dXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VGhpc1ZhbHVlRm9yQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1RoaXMpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwv
RlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlVG9UaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZUdldFRoaXNWYWx1ZUZvckNhbGwpOgorICAgICAgICAqIGdlbmVyYXRvci9EU0wucmI6Cisg
ICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKElu
c3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1lKToK
KyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGls
ZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29k
ZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3RoaXNfdmFsdWVfZm9yX2Nh
bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fdGhpcyk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b190aGlz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6Cisg
ICAgICAgIChKU0M6OmNyZWF0ZUFycmF5SXRlcmF0b3JPYmplY3QpOgorICAgICAgICAqIHJ1bnRp
bWUvQ2xhc3NJbmZvLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OnRvR2xvYmFsVGhpcyk6CisgICAg
ICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1
bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1RoaXNTbG93Q2Fz
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAg
ICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
Ojp0b1Nsb3BweU1vZGVUaGlzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UaGlz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6dG9UaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ2Vs
bC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5
Y2xlQ2hlY2spOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dG9UaGlzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6dG9UaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTU2NvcGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNTdHJpbmc6OnRvVGhpcyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9K
U1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9KU1R5cGVJbmZvLmg6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpwZXJDZWxsQml0KToKKyAg
ICAgICAgKEpTQzo6VHlwZUluZm86Om92ZXJyaWRlc1RvVGhpcyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b3R5cGVIYXNP
d25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04p
OgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sLmg6CisKIDIwMjEtMDUtMDMgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBzeW50YXggZXJyb3IgbWVzc2FnZSBm
b3IgQVVUT1BMVVNQTFVTIHRva2VuLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01ODMsNyArNTgzLDYgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQQogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgK
ICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5o
Ci0gICAgYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmgKICAgICBieXRlY29kZS9UeXBlTG9jYXRpb24u
aAogICAgIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKICAgICBieXRlY29kZS9Vbmxpbmtl
ZEV2YWxDb2RlQmxvY2suaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNp
b24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yODEsNyArMjgxLDYgQEAgYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5n
V2F0Y2hwb2ludAogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCiBieXRlY29kZS9TdHVi
SW5mb1N1bW1hcnkuY3BwCiBieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCi1ieXRlY29kZS9Ub1Ro
aXNTdGF0dXMuY3BwCiBieXRlY29kZS9UcmFja2VkUmVmZXJlbmNlcy5jcHAKIGJ5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3Iu
Y3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVu
Y3Rpb24uaAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9B
UElDYWxsYmFja0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgRW5j
b2RlZEpTVmFsdWUgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbAogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVm
KGdsb2JhbE9iamVjdCk7CiAgICAgSlNPYmplY3RSZWYgZnVuY3Rpb25SZWYgPSB0b1JlZihjYWxs
RnJhbWUtPmpzQ2FsbGVlKCkpOwotICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihq
c0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpKTsKKyAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0g
dG9SZWYoY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Nsb3BweU1vZGVUaGlzKGdsb2JhbE9iamVj
dCkpOwogCiAgICAgaW50IGFyZ3VtZW50Q291bnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBWZWN0b3I8SlNWYWx1ZVJlZiwgMTY+IGFyZ3VtZW50
czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
NTUwLDcgKzU1MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50PjoK
IAogICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZ2xvYmFsT2JqZWN0KTsKICAgICBK
U09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Ci0g
ICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgp
KSkpOworICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvU2xvcHB5TW9kZVRoaXMoZ2xvYmFsT2JqZWN0KSk7CiAgICAgCiAgICAgZm9yIChK
U0NsYXNzUmVmIGpzQ2xhc3MgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Kj4odG9K
UyhmdW5jdGlvblJlZikpLT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+
cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFj
ayBjYWxsQXNGdW5jdGlvbiA9IGpzQ2xhc3MtPmNhbGxBc0Z1bmN0aW9uKSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCShyZXZpc2lvbiAyNzcwMjYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE5MSw3ICsxOTEsNyBAQCBKU09iamVjdFJlZiBKU0NvbnRleHRHZXRHbG9iYWxP
YmplY3QoSlNDCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hv
bGRlciBsb2NrZXIodm0pOwogCi0gICAgcmV0dXJuIHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGds
b2JhbE9iamVjdC0+bWV0aG9kVGFibGUodm0pLT50b1RoaXMoZ2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpKTsKKyAgICByZXR1cm4gdG9SZWYoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxUaGlzKCkpOwogfQogCiBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHZXRH
cm91cChKU0NvbnRleHRSZWYgY3R4KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsNyArMjY1
LDYgQEAKIAkJMEYyQzYzQzIxRTY2NEE1QzAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNDMTFFNjY0
QTVBMDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCAqLzsgfTsKIAkJMEYyQzYzQzQxRTY5RUY5
NDAwQzEzODM5IC8qIEIzTWVtb3J5VmFsdWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNDMzFFNjlFRjkyMDBDMTM4MzkgLyogQjNN
ZW1vcnlWYWx1ZUlubGluZXMuaCAqLzsgfTsKIAkJMEYyRDREREUxOTgzMkQzNDAwN0Q0QjE5IC8q
IERlYnVnZ2VyU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEYyRDRERTkxOTgz
MkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRDRERTYxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0
YXR1cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGMkQ0REVBMTk4MzJEQUMwMDdENEIxOSAvKiBUeXBlTG9jYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0REU3MTk4MzJEQUMwMDdENEIx
OSAvKiBUeXBlTG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjJENERFQzE5ODMyREM0MDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERF
MDE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyRDRERjAxOTgzMkRENjAwN0Q0QjE5
IC8qIFR5cGVTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMkQ0REU0MTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI1MjMsOCArMjUyMiw2IEBACiAJ
CTBGMkQ0REUwMTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVHlwZVByb2ZpbGVyTG9nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MkQ0REUzMTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFR5cGVTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENERFNDE5ODMy
RDkxMDA3RDRCMTkgLyogVHlwZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlU2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGMkQ0REU1MTk4MzJEQUMwMDdENEIxOSAvKiBUb1Ro
aXNTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVG9UaGlz
U3RhdHVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYyRDRERTYxOTgzMkRB
QzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUb1RoaXNTdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDRE
RTcxOTgzMkRBQzAwN0Q0QjE5IC8qIFR5cGVMb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUeXBlTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYyREQ4MEMxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhh
c2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQXJndW1lbnRz
RWxpbWluYXRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25Q
aGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkREODBEMUFCM0Q4QkUw
MEJCQjhFOCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuaDsgcGF0aCA9
IGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC04NjY0LDggKzg2NjEsNiBAQAogCQkJCTBGNEEzOEY3MUM4RTEzREYwMDE5MDMx
OCAvKiBTdXBlclNhbXBsZXIuY3BwICovLAogCQkJCTBGNEEzOEY4MUM4RTEzREYwMDE5MDMxOCAv
KiBTdXBlclNhbXBsZXIuaCAqLywKIAkJCQkwRjQ0QTdBODIwQkY2ODVFMDAyMkIxNzEgLyogVGVy
bWluYXRlZENvZGVPcmlnaW4uaCAqLywKLQkJCQkwRjJENERFNTE5ODMyREFDMDA3RDRCMTkgLyog
VG9UaGlzU3RhdHVzLmNwcCAqLywKLQkJCQkwRjJENERFNjE5ODMyREFDMDA3RDRCMTkgLyogVG9U
aGlzU3RhdHVzLmggKi8sCiAJCQkJMEY5NTJBQkExQjQ4N0E3NzAwQzM2N0M1IC8qIFRyYWNrZWRS
ZWZlcmVuY2VzLmNwcCAqLywKIAkJCQkwRjk1MkFCQjFCNDg3QTc3MDBDMzY3QzUgLyogVHJhY2tl
ZFJlZmVyZW5jZXMuaCAqLywKIAkJCQkwRjJENERFNzE5ODMyREFDMDA3RDRCMTkgLyogVHlwZUxv
Y2F0aW9uLmggKi8sCkBAIC05NDUzLDcgKzk0NDgsNiBAQAogCQkJCUJDMThDNDVFMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBDTG9vcFN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MxRUFGMDE3OTg3
QUI2MDAyOTlEQjIgLyogQ0xvb3BTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2
OUEwNzk3MEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAotCQkJ
CUZFRjVCNDI5MjYyOEI1MjQwMDE2RTc3NiAvKiBKU1NldElubGluZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOEY5NDQxMTY2NzYzMzIwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkM5N0YzNDE4MjAyMEQ3MDAyQzlCMjYgLyogQ29kZUJsb2NrSmV0dGlz
b25pbmdXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMxNDE3RDQzMjZDMDBD
QTJDNDAgLyogQ29kZUJsb2NrU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTk2NTIsNyArOTY0Niw2
IEBACiAJCQkJMEZEODJFNTcxNDFEQUYxMDAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkQ4QTMyNjE3RDUxRjU3MDBDQTJDNDAgLyogREZHT1NSRW50cnlwb2lu
dENyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5NzZBMTQ2OEE2RjcwMENG
MjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKLQkJCQlGRUY1QjQyNzI2MjhBQkQ5
MDAxNkU3NzYgLyogSlNXZWFrTWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVC
RUMxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MDI1QUExNzE0QjBGQzAwMzgyQzBFIC8qIERGR09TUkV4
aXRDb21waWxlckNvbW1vbi5oIGluIEhlYWRlcnMgKi8sCkBAIC05NzQ3LDYgKzk3NDAsNyBAQAog
CQkJCTE0NzM0MUQyMURDMDJFMkUwMEFBMjlCQSAvKiBFdmFsRXhlY3V0YWJsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkUxQzBGRkQxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkU2MDI5RDkxRDZFMUU0RjAwMzAyMDREIC8qIEV4Y2VwdGlvbkV2ZW50
TG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUZFRjVCNDMwMjYyQTMzOEIwMDE2RTc3NiAv
KiBFeGNlcHRpb25FeHBlY3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMkRFMTAxOTc5
RDVGRDAwMDZGRjRFIC8qIEV4Y2VwdGlvbkZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
NDAwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBFeGNlcHRpb25IZWxwZXJzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRTY0OTEzNzFENzhGMDFEMDBBNjk0RDQgLyogRXhjZXB0aW9uU2NvcGUuaCBpbiBIZWFk
ZXJzICovLApAQCAtOTc4Myw3ICs5Nzc3LDYgQEAKIAkJCQkwRkVBMEEwQzE3MDUxM0RCMDBCQjcy
MkMgLyogRlRMQ29tcGlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RDRDMEQxQzNFMUMxMTAw
NkNEOTg0IC8qIEZUTEV4Y2VwdGlvblRhcmdldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVC
RDQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJRkVGNUI0MjMyNjI4QTBFRTAwMTZFNzc2IC8qIEhhc2hNYXBJbXBsSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyMzVCRDYxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVu
dEZvck9wZXJhbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0Y1MTlEMEJBQzEwMEIxRDFC
NSAvKiBGVExFeGl0UHJvcGVydHlWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRjcx
OUQwQkFDMTAwQjFEMUI1IC8qIEZUTEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uLmggaW4g
SGVhZGVycyAqLywKQEAgLTk4MjcsNyArOTgyMCw2IEBACiAJCQkJMkE4MzYzOEExOEQ3RDBGRTAw
MDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTUy
RUVENzk0MjQ5MkI4NzAwMDhGNEM5MyAvKiBGdW5jdGlvbkFsbG93bGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTRBRDkxMEQxRENBOTI5NDAwMTRGOUZFIC8qIEZ1bmN0aW9uQ29kZUJsb2NrLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlGRUY1QjQyQzI2MjhDQkM4MDAxNkU3NzYgLyogVk1UcmFwc0lu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDA0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBG
dW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDczNDFEODFEQzAyRjk5
MDBBQTI5QkEgLyogRnVuY3Rpb25FeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkYw
RjFBMDE2QjcyQTFBMDA1REY5NUIgLyogRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5oIGluIEhlYWRl
cnMgKi8sCkBAIC05OTA2LDYgKzk4OTgsNyBAQAogCQkJCTE0MkUzMTM2MTM0RkYwQTYwMEFGQURC
NSAvKiBIYW5kbGVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzgyOTdCMTM3OUU4QTgwMEE3
QzJBMyAvKiBIYW5kbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlBMDkwODAxRDc2ODQ2
NTAwOEI4ODlCIC8qIEhhc2hNYXBJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUY1QjQyMzI2
MjhBMEVFMDAxNkU3NzYgLyogSGFzaE1hcEltcGxJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3OURGQ0JEQjFEODhDNTk2MDA1MjdEMDMgLyogSGFzT3duUHJvcGVydHlDYWNoZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTRCQTdBOTgxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkxNzdBMURDMjJGOTU4RDUwMEIzNENBMiAvKiBIZWFwQW5hbHl6ZXIuaCBp
biBIZWFkZXJzICovLApAQCAtMTAxNzksNiArMTAxNzIsNyBAQAogCQkJCUMyNUQ3MDlDMTZERTk5
RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkE0QkI3
RjMxOEE0MTE3OTAwOEEwRkNEIC8qIEpTTWFuYWdlZFZhbHVlSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3MDA4NzQyMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRkVGNUI0MjUyNjI4QTg1MDAwMTZFNzc2IC8qIEpTTWFwSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTc0REVGOTYxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEIyODZEMUVCOEU2RDUwMDBFQjVEMiAvKiBKU01hcmtp
bmdDb25zdHJhaW50UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzAxM0NBOEMxQjQ5MUE5
NDAwQ0FFNjEzIC8qIEpTTWljcm90YXNrLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMjE0LDYgKzEw
MjA4LDcgQEAKIAkJCQkxNEQwMUE3NzIxRkIzNTFGMDBCQzU0RTkgLyogSlNTY3JpcHRTb3VyY2VQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMTExNTdGMzMyQzAwNEE0RTdEIC8q
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5RDlF
MTdEMTI4MzcwMDVGNUZGOSAvKiBKU1NldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVGNUI0Mjky
NjI4QjUyNDAwMTZFNzc2IC8qIEpTU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENzAxODJGNDk5NzAwNTg4ODA3IC8qIEpTU2V0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJERkNCMkJCRTkwRjQxMzQ5RTFCMEJFRCAvKiBKU1NvdXJjZUNvZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDI3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMDI0Nyw2ICsxMDI0Miw3IEBACiAJCQkJODZFM0M2MUQxNjdCQUJFRTAwNkQ3
NjBBIC8qIEpTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzk1
QUM2MTgyMEEyMzU1RTAwNTJDNzZDIC8qIEpTVmlydHVhbE1hY2hpbmVQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBN0NBM0FFODE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggaW4g
SGVhZGVycyAqLywKKwkJCQlGRUY1QjQyNzI2MjhBQkQ5MDAxNkU3NzYgLyogSlNXZWFrTWFwSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0ODJFOTMxMTZBN0NBRDAwM0IwNzEyIC8qIEpT
V2Vha09iamVjdE1hcFJlZkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQ4MkI5MzEx
NjcxMTQ3MDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTM5QkZCQjAyMkFEM0NEQzAwMjNGNEMwIC8qIEpTV2Vha09iamVjdFJlZi5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMDU2Miw3ICsxMDU1OCw2IEBACiAJCQkJQkNERTNBQjgwRTZDODJG
NTAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzk4Njk0M0IxRjhD
MEFDQzAwOTIzMkFFIC8qIFN0cnVjdHVyZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTRF
RTcwOTBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovLAot
CQkJCUZFRjVCNDI1MjYyOEE4NTAwMDE2RTc3NiAvKiBKU01hcElubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJBQUFBMzEyMThCRDQ5RDEwMDM5NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCBp
biBIZWFkZXJzICovLAogCQkJCTJBRjczODJEMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJ
RFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQyQzkyNDE2RDAxRUU5MDBDNzgwM0YgLyog
U3RydWN0dXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDYwMSw3ICsxMDU5Niw2IEBA
CiAJCQkJQTczODY1NTYxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTQxNDQ4Q0QxM0ExNzgzNzAwRjVCQTFBIC8qIFRpbnlCbG9vbUZpbHRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NTk4OTgxN0M4NkM1ODAwQTFFNTQzIC8qIFRvTmF0
aXZlRnJvbVZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjJENERFOTE5ODMyREFDMDA3RDRC
MTkgLyogVG9UaGlzU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk1MkFCRDFCNDg3QTc3
MDBDMzY3QzUgLyogVHJhY2tlZFJlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2
NzA2MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5QWRhcHRvcnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMkI2NzA4MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMDY1NSw2ICsxMDY0OSw3IEBACiAJCQkJRkUzMDIyRDcxRTQy
ODU3MzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUM1Nzk3
MzIzMTA1QjUxMDBCQ0E4M0YgLyogVk1JbnNwZWN0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRTZGNTZERTFFNjRFQUQ2MDBEMTc4MDEgLyogVk1UcmFwcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRkVGNUI0MkMyNjI4Q0JDODAwMTZFNzc2IC8qIFZNVHJhcHNJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Mjg0N0FEQzIxRkZCODY5MDA2MUE5REIgLyogV2FzbUFpcklSR2VuZXJh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYgLyogV2Fz
bUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzQ0E3MzBBMUVBNTMzRDgwMDc2
MDQ5RCAvKiBXYXNtQkJRUGxhbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDc0Nyw3ICsxMDc0Miw2
IEBACiAJCQkJQURFODAyOUExRTA4RjFERTAwNThERTc4IC8qIFdlYkFzc2VtYmx5TGlua0Vycm9y
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUFERTgwMjlDMUUwOEYxREUwMDU4REU3
OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QUQyRkNCRjUxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAotCQkJCUZFRjVCNDMwMjYyQTMzOEIwMDE2RTc3NiAvKiBFeGNlcHRp
b25FeHBlY3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNDMUExREI1OUNCMjAwQjNF
NzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBRDJGQ0JGNzFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQzFCMURCNTlDQjIwMEIzRTczNiAvKiBXZWJB
c3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCShyZXZpc2lvbiAy
NzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw2IEBAIHR5cGVzIFsKICAgICA6U3RydWN0dXJl
Q2hhaW4sCiAgICAgOlN5bWJvbFRhYmxlLAogICAgIDpTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aCwK
LSAgICA6VG9UaGlzU3RhdHVzLAogICAgIDpUeXBlTG9jYXRpb24sCiAgICAgOldhc21Cb3VuZExh
YmVsLAogICAgIDpXYXRjaHBvaW50U2V0LApAQCAtMTc3LDExICsxNzYsOCBAQCBvcCA6YXJndW1l
bnRfY291bnQsCiBvcCA6dG9fdGhpcywKICAgICBhcmdzOiB7CiAgICAgICAgIHNyY0RzdDogVmly
dHVhbFJlZ2lzdGVyLAotICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBt
ZXRhZGF0YTogewotICAgICAgICBjYWNoZWRTdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCi0gICAg
ICAgIHRvVGhpc1N0YXR1czogVG9UaGlzU3RhdHVzLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUsCiAgICAgfQogCkBAIC0xMDIxLDYgKzEwMTcsMTIgQEAgb3AgOmdldF9mcm9tX3Njb3Bl
LAogICAgICAgICBvcGVyYW5kOiA6b2Zmc2V0LAogICAgIH0KIAorb3AgOmdldF90aGlzX3ZhbHVl
X2Zvcl9jYWxsLAorICAgIGFyZ3M6IHsKKyAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisg
ICAgICAgIHNjb3BlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfQorCiBvcCA6cHV0X3RvX3Njb3Bl
LAogICAgIGFyZ3M6IHsKICAgICAgICAgc2NvcGU6IFZpcnR1YWxSZWdpc3RlciwgIyBvZmZzZXQg
MQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNiArMTczLDcg
QEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcgogICAgIFVTRVMoT3BS
ZXNvbHZlU2NvcGUsIHNjb3BlKQogICAgIFVTRVMoT3BSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1
bmNEZWNsSW5FdmFsLCBzY29wZSkKICAgICBVU0VTKE9wR2V0RnJvbVNjb3BlLCBzY29wZSkKKyAg
ICBVU0VTKE9wR2V0VGhpc1ZhbHVlRm9yQ2FsbCwgc2NvcGUpCiAgICAgVVNFUyhPcFRvUHJpbWl0
aXZlLCBzcmMpCiAgICAgVVNFUyhPcFRvUHJvcGVydHlLZXksIHNyYykKICAgICBVU0VTKE9wVHJ5
R2V0QnlJZCwgYmFzZSkKQEAgLTQ3OCw2ICs0NzksNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVJbmRleEltcGwodW5zCiAKICAgICBERUZTKE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRz
LCBkc3QpCiAgICAgREVGUyhPcEdldEZyb21TY29wZSwgZHN0KQorICAgIERFRlMoT3BHZXRUaGlz
VmFsdWVGb3JDYWxsLCBkc3QpCiAgICAgREVGUyhPcENhbGwsIGRzdCkKICAgICBERUZTKE9wVGFp
bENhbGwsIGRzdCkKICAgICBERUZTKE9wQ2FsbEV2YWwsIGRzdCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyNzcwMjYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQwNCwxNyArMTQwNCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50
SW5saW5lQ2FjaGUKICAgICAgICAgICAgIG1ldGFkYXRhLm1fYnJhbmQuY2xlYXIoKTsKICAgICAg
ICAgfSk7CiAKLSAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFRvVGhpcz4oWyZdIChhdXRv
JiBtZXRhZGF0YSkgewotICAgICAgICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVy
ZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1l
dGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQpKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKSB7Ci0gICAgICAgICAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobWV0
YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCk7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNs
ZWFyaW5nIExMSW50IHRvX3RoaXMgd2l0aCBzdHJ1Y3R1cmUgJXAuXG4iLCBzdHJ1Y3R1cmUpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCA9
IDA7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX3RvVGhpc1N0YXR1cyA9IG1lcmdlKG1ldGFkYXRh
Lm1fdG9UaGlzU3RhdHVzLCBUb1RoaXNDbGVhcmVkQnlHQyk7Ci0gICAgICAgIH0pOwotCiAgICAg
ICAgIGF1dG8gaGFuZGxlQ3JlYXRlQnl0ZWNvZGUgPSBbJl0gKGF1dG8mIG1ldGFkYXRhLCBBU0NJ
SUxpdGVyYWwgbmFtZSkgewogICAgICAgICAgICAgYXV0byYgY2FjaGVXcml0ZUJhcnJpZXIgPSBt
ZXRhZGF0YS5tX2NhY2hlZENhbGxlZTsKICAgICAgICAgICAgIGlmICghY2FjaGVXcml0ZUJhcnJp
ZXIgfHwgY2FjaGVXcml0ZUJhcnJpZXIudW52YWxpZGF0ZWRHZXQoKSA9PSBKU0NlbGw6OnNlZW5N
dWx0aXBsZUNhbGxlZU9iamVjdHMoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Ub1RoaXNTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Ub1RoaXNTdGF0dXMuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmNwcAkobm9uZXhpc3RlbnQpCkBA
IC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgotCi1u
YW1lc3BhY2UgSlNDIHsKLQotVG9UaGlzU3RhdHVzIG1lcmdlKFRvVGhpc1N0YXR1cyBhLCBUb1Ro
aXNTdGF0dXMgYikKLXsKLSAgICBzd2l0Y2ggKGEpIHsKLSAgICBjYXNlIFRvVGhpc09LOgotICAg
ICAgICByZXR1cm4gYjsKLSAgICBjYXNlIFRvVGhpc0NvbmZsaWN0ZWQ6Ci0gICAgICAgIHJldHVy
biBUb1RoaXNDb25mbGljdGVkOwotICAgIGNhc2UgVG9UaGlzQ2xlYXJlZEJ5R0M6Ci0gICAgICAg
IGlmIChiID09IFRvVGhpc0NvbmZsaWN0ZWQpCi0gICAgICAgICAgICByZXR1cm4gVG9UaGlzQ29u
ZmxpY3RlZDsKLSAgICAgICAgcmV0dXJuIFRvVGhpc0NsZWFyZWRCeUdDOwotICAgIH0KLSAgICAK
LSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUb1RoaXNDb25m
bGljdGVkOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXVz
aW5nIG5hbWVzcGFjZSBKU0M7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0
LCBUb1RoaXNTdGF0dXMgc3RhdHVzKQotewotICAgIHN3aXRjaCAoc3RhdHVzKSB7Ci0gICAgY2Fz
ZSBUb1RoaXNPSzoKLSAgICAgICAgb3V0LnByaW50KCJPSyIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBUb1RoaXNDb25mbGljdGVkOgotICAgICAgICBvdXQucHJpbnQoIkNvbmZsaWN0ZWQi
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgVG9UaGlzQ2xlYXJlZEJ5R0M6Ci0gICAgICAg
IG91dC5wcmludCgiQ2xlYXJlZEJ5R0MiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAK
LSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
VEYKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1RvVGhpc1N0YXR1cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Ub1RoaXNTdGF0
dXMuaAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1RvVGhpc1N0YXR1cy5oCShub25leGlzdGVudCkKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotZW51bSBUb1Ro
aXNTdGF0dXMgewotICAgIFRvVGhpc09LLAotICAgIFRvVGhpc0NvbmZsaWN0ZWQsCi0gICAgVG9U
aGlzQ2xlYXJlZEJ5R0MKLX07Ci0KLVRvVGhpc1N0YXR1cyBtZXJnZShUb1RoaXNTdGF0dXMsIFRv
VGhpc1N0YXR1cyk7Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQot
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpUb1RoaXNTdGF0dXMpOwotCi19
IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyNzcwMjYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1OCw2ICsyNDU4LDMxIEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0RnIKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEZ1bmN0aW9u
RnJvbVNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgVmFyaWFibGUmIHZhcmlhYmxlLCBSZWdp
c3RlcklEKiB0aGlzVmFsdWVGb3JDYWxsKQoreworICAgIEFTU0VSVCghdmFyaWFibGUubG9jYWwo
KSk7CisKKyAgICBSZWdpc3RlcklEKiBzY29wZSA9IGVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwg
dmFyaWFibGUpOworICAgIGVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZSwgdmFyaWFibGUsIFRo
cm93SWZOb3RGb3VuZCk7CisgICAgZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkodmFyaWFibGUsIGRz
dCwgbnVsbHB0cik7CisgICAgaWYgKGhhc1BhcmVudFdpdGhTY29wZSh2YXJpYWJsZSkpCisgICAg
ICAgIE9wR2V0VGhpc1ZhbHVlRm9yQ2FsbDo6ZW1pdCh0aGlzLCBraWxsKHRoaXNWYWx1ZUZvckNh
bGwpLCBzY29wZSk7CisgICAgcmV0dXJuIGRzdDsKK30KKworYm9vbCBCeXRlY29kZUdlbmVyYXRv
cjo6aGFzUGFyZW50V2l0aFNjb3BlKGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSkgY29uc3QKK3sK
KyAgICBpZiAodmFyaWFibGUub2Zmc2V0KCkuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2xleGljYWxTY29wZVN0YWNrLnNpemUoKTsg
aS0tOyApIHsKKyAgICAgICAgaWYgKG1fbGV4aWNhbFNjb3BlU3RhY2tbaV0ubV9pc1dpdGhTY29w
ZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFRvU2NvcGUoUmVnaXN0
ZXJJRCogc2NvcGUsIGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSwgUmVnaXN0ZXJJRCogdmFsdWUs
IFJlc29sdmVNb2RlIHJlc29sdmVNb2RlLCBJbml0aWFsaXphdGlvbk1vZGUgaW5pdGlhbGl6YXRp
b25Nb2RlKQogewogICAgIHN3aXRjaCAodmFyaWFibGUub2Zmc2V0KCkua2luZCgpKSB7CkBAIC01
NDM2LDcgKzU0NjEsOCBAQCB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OnJlY29yZCgpCiAK
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUb1RoaXMoKQogewotICAgIE9wVG9UaGlzOjpl
bWl0KHRoaXMsIGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSwgZWNtYU1vZGUoKSk7CisgICAgaWYgKCFl
Y21hTW9kZSgpLmlzU3RyaWN0KCkpCisgICAgICAgIE9wVG9UaGlzOjplbWl0KHRoaXMsIGtpbGwo
Jm1fdGhpc1JlZ2lzdGVyKSk7CiB9CiAKIFN0cnVjdHVyZUZvckluQ29udGV4dCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmZpbmRTdHJ1Y3R1cmVGb3JJbkNvbnRleHQoUmVnaXN0ZXJJRCogcHJvcGVydHkp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTkwMiw2ICs5MDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFJlc29sdmVDb25zdGFudExvY2FsKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgVmFyaWFibGUmKTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmVTY29wZShSZWdpc3RlcklEKiBkc3QsIGNv
bnN0IFZhcmlhYmxlJik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRGcm9tU2NvcGUoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSwgY29uc3QgVmFyaWFibGUmLCBSZXNvbHZl
TW9kZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRGdW5jdGlvbkZyb21TY29wZShSZWdp
c3RlcklEKiBkc3QsIGNvbnN0IFZhcmlhYmxlJiwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlRm9yQ2Fs
bCk7CisgICAgICAgIGJvb2wgaGFzUGFyZW50V2l0aFNjb3BlKGNvbnN0IFZhcmlhYmxlJikgY29u
c3Q7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRUb1Njb3BlKFJlZ2lzdGVySUQqIHNjb3Bl
LCBjb25zdCBWYXJpYWJsZSYsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZXNvbHZlTW9kZSwgSW5pdGlh
bGl6YXRpb25Nb2RlKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVzb2x2ZVNjb3BlRm9y
SG9pc3RpbmdGdW5jRGVjbEluRXZhbChSZWdpc3RlcklEKiBkc3QsIGNvbnN0IElkZW50aWZpZXIm
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUwLDEz
ICszNTAsMTEgQEAgUmVnaXN0ZXJJRCogVGFnZ2VkVGVtcGxhdGVOb2RlOjplbWl0Qnl0ZQogICAg
ICAgICAgICAgdGFnID0gZ2VuZXJhdG9yLm1vdmUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBs
b2NhbCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB0YWcgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBiYXNlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OworICAgICAgICAgICAgYmFzZSA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIGpzVW5kZWZpbmVkKCkpOwogCiAgICAgICAgICAgICBKU1RleHRQb3NpdGlvbiBu
ZXdEaXZvdCA9IGRpdm90U3RhcnQoKSArIGlkZW50aWZpZXIubGVuZ3RoKCk7CiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCksIG5l
d0Rpdm90KTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGJhc2UuZ2V0KCksIGdlbmVyYXRv
ci5lbWl0UmVzb2x2ZVNjb3BlKGJhc2UuZ2V0KCksIHZhcikpOwotICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRHZXRGcm9tU2NvcGUodGFnLmdldCgpLCBiYXNlLmdldCgpLCB2YXIsIFRocm93SWZO
b3RGb3VuZCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrSWZOZWNlc3Nhcnko
dmFyLCB0YWcuZ2V0KCksIG51bGxwdHIpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRG
dW5jdGlvbkZyb21TY29wZSh0YWcuZ2V0KCksIHZhciwgYmFzZS5nZXQoKSk7CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgaWYgKG1fdGFnLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAg
ICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vz
c29yTm9kZSo+KG1fdGFnKTsKQEAgLTExODYsMTEgKzExODQsNyBAQCBSZWdpc3RlcklEKiBFdmFs
RnVuY3Rpb25DYWxsTm9kZTo6ZW1pdEJ5CiAgICAgZWxzZSB7CiAgICAgICAgIEpTVGV4dFBvc2l0
aW9uIG5ld0Rpdm90ID0gZGl2b3RTdGFydCgpICsgNDsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRF
eHByZXNzaW9uSW5mbyhuZXdEaXZvdCwgZGl2b3RTdGFydCgpLCBuZXdEaXZvdCk7Ci0gICAgICAg
IGdlbmVyYXRvci5tb3ZlKAotICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIHZhcikpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29w
ZShmdW5jLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCB2YXIsIFRocm93SWZO
b3RGb3VuZCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0VERaQ2hlY2tJZk5lY2Vzc2FyeSh2YXIs
IGZ1bmMuZ2V0KCksIG51bGxwdHIpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZ1bmN0aW9u
RnJvbVNjb3BlKGZ1bmMuZ2V0KCksIHZhciwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSk7
CiAgICAgfQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9y
LmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jLmdldCgpKTsKQEAgLTEyNzYsMjAgKzEyNzAsMTYg
QEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaQogICAgIH0gZWxzZQog
ICAgICAgICBmdW5jID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIENhbGxBcmd1bWVu
dHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CisgICAgZ2VuZXJhdG9yLmVtaXRM
b2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogCiAgICAg
aWYgKGxvY2FsKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgLy8gVGhpcyBwYXNzZXMgTm9F
eHBlY3RlZEZ1bmN0aW9uIGJlY2F1c2Ugd2UgZXhwZWN0IHRoYXQgaWYgdGhlIGZ1bmN0aW9uIGlz
IGluIGEKICAgICAgICAgLy8gbG9jYWwgdmFyaWFibGUsIHRoZW4gaXQncyBub3Qgb25lIG9mIG91
ciBidWlsdC1pbiBjb25zdHJ1Y3RvcnMuCiAgICAgICAgIGV4cGVjdGVkRnVuY3Rpb24gPSBOb0V4
cGVjdGVkRnVuY3Rpb247CiAgICAgfSBlbHNlIHsKICAgICAgICAgSlNUZXh0UG9zaXRpb24gbmV3
RGl2b3QgPSBkaXZvdFN0YXJ0KCkgKyBtX2lkZW50Lmxlbmd0aCgpOwogICAgICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCksIG5ld0Rpdm90KTsK
LSAgICAgICAgZ2VuZXJhdG9yLm1vdmUoCi0gICAgICAgICAgICBjYWxsQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLAotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgdmFyKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0
RnJvbVNjb3BlKGZ1bmMuZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIHZhciwg
VGhyb3dJZk5vdEZvdW5kKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVja0lmTmVjZXNz
YXJ5KHZhciwgZnVuYy5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0
RnVuY3Rpb25Gcm9tU2NvcGUoZnVuYy5nZXQoKSwgdmFyLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpKTsKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBn
ZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmMuZ2V0KCkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3Bw
CShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksMTAgKzIwOSw5IEBAIEpT
VmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OnRoaXNWYWx1ZShWTSYKICAgICBpZiAoIXRoaXNWYWx1
ZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBFQ01BTW9kZSBlY21hTW9k
ZSA9IEVDTUFNb2RlOjpzbG9wcHkoKTsKICAgICBpZiAoY29kZUJsb2NrICYmIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkpCi0gICAgICAgIGVjbWFNb2Rl
ID0gRUNNQU1vZGU6OnN0cmljdCgpOwotICAgIHJldHVybiB0aGlzVmFsdWUudG9UaGlzKG1fdmFs
aWRNYWNoaW5lRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pLCBlY21hTW9kZSk7CisgICAg
ICAgIHJldHVybiB0aGlzVmFsdWU7CisgICAgcmV0dXJuIHRoaXNWYWx1ZS50b1Nsb3BweU1vZGVU
aGlzKG1fdmFsaWRNYWNoaW5lRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pKTsKIH0KIAog
Ly8gRXZhbHVhdGUgc29tZSBKYXZhU2NyaXB0IGNvZGUgaW4gdGhlIHNjb3BlIG9mIHRoaXMgZnJh
bWUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE3OSw2NSArMTc5LDYgQEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG5vZGUs
IHZlcmlmeUVkZ2UpOwogfQogCi1lbnVtIGNsYXNzIFRvVGhpc1Jlc3VsdCB7Ci0gICAgSWRlbnRp
dHksCi0gICAgVW5kZWZpbmVkLAotICAgIEdsb2JhbFRoaXMsCi0gICAgRHluYW1pYywKLX07Ci1p
bmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYgdm0sIEVDTUFNb2RlIGVj
bWFNb2RlLCBBYnN0cmFjdFZhbHVlJiB2YWx1ZUZvck5vZGUpCi17Ci0gICAgLy8gV2UgbG9vayBh
dCB0aGUgdHlwZSBmaXJzdCBzaW5jZSB0aGF0IHdpbGwgY292ZXIgbW9zdCBjYXNlcyBhbmQgZG9l
cyBub3QgcmVxdWlyZSBpdGVyYXRpbmcgYWxsIHRoZSBzdHJ1Y3R1cmVzLgotICAgIGlmIChlY21h
TW9kZS5pc1N0cmljdCgpKSB7Ci0gICAgICAgIGlmICh2YWx1ZUZvck5vZGUubV90eXBlICYmICEo
dmFsdWVGb3JOb2RlLm1fdHlwZSAmIFNwZWNPYmplY3RPdGhlcikpCi0gICAgICAgICAgICByZXR1
cm4gVG9UaGlzUmVzdWx0OjpJZGVudGl0eTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAodmFs
dWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiAoflNwZWNPYmplY3Qg
fCBTcGVjT2JqZWN0T3RoZXIpKSkKLSAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6Oklk
ZW50aXR5OwotICAgIH0KLQotICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gdmFsdWVGb3JOb2RlLnZh
bHVlKCkpIHsKLSAgICAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKSB7Ci0gICAgICAgICAgICBhdXRv
KiB0b1RoaXNNZXRob2QgPSB2YWx1ZS5hc0NlbGwoKS0+Y2xhc3NJbmZvKHZtKS0+bWV0aG9kVGFi
bGUudG9UaGlzOwotICAgICAgICAgICAgaWYgKHRvVGhpc01ldGhvZCA9PSAmSlNPYmplY3Q6OnRv
VGhpcykKLSAgICAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpJZGVudGl0eTsKLSAg
ICAgICAgICAgIGlmICh0b1RoaXNNZXRob2QgPT0gJkpTU2NvcGU6OnRvVGhpcykgewotICAgICAg
ICAgICAgICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gVG9UaGlzUmVzdWx0OjpVbmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRv
VGhpc1Jlc3VsdDo6R2xvYmFsVGhpczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQotICAgIGlmICgoZWNtYU1vZGUuaXNTdHJpY3QoKSB8fCAodmFsdWVGb3JOb2RlLm1fdHlwZSAm
JiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpKSAmJiB2YWx1ZUZvck5vZGUu
bV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewotICAgICAgICBib29sIGFsbFN0cnVjdHVyZXNBcmVK
U1Njb3BlID0gIXZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5pc0NsZWFyKCk7Ci0gICAgICAgIGJv
b2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7Ci0gICAgICAgIHZhbHVlRm9yTm9kZS5tX3N0cnVj
dHVyZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewotICAgICAg
ICAgICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKLSAgICAgICAgICAg
IEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0
eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEhlYXBCaWdJbnRUeXBl
KTsKLSAgICAgICAgICAgIGlmICghZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgICAgICAg
ICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsKLSAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQg
dG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1ib2xzIGhlcmUgc2luY2UgZWl0aGVyOgotICAgICAg
ICAgICAgLy8gMSkgV2UgYXJlIGluIHN0cmljdCBtb2RlIGFuZCBzdHJpbmdzL3N5bWJvbHMgYXJl
IG5vdCB3cmFwcGVkCi0gICAgICAgICAgICAvLyAyKSBUaGUgQUkgaGFzIHByb3ZlbiB0aGF0IHRo
ZSB0eXBlIG9mIHRoaXMgaXMgYSBzdWJ0eXBlIG9mIG9iamVjdAotICAgICAgICAgICAgaWYgKHR5
cGUuaXNPYmplY3QoKSAmJiB0eXBlLm92ZXJyaWRlc1RvVGhpcygpKQotICAgICAgICAgICAgICAg
IG92ZXJyaWRlc1RvVGhpcyA9IHRydWU7Ci0KLSAgICAgICAgICAgIC8vIElmIGFsbCB0aGUgc3Ry
dWN0dXJlcyBhcmUgSlNTY29wZSdzIG9uZXMsIHdlIGtub3cgdGhlIGRldGFpbHMgb2YgSlNTY29w
ZTo6dG9UaGlzKCkgb3BlcmF0aW9uLgotICAgICAgICAgICAgYWxsU3RydWN0dXJlc0FyZUpTU2Nv
cGUgJj0gc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUudG9UaGlzID09IEpTU2Nv
cGU6OmluZm8oKS0+bWV0aG9kVGFibGUudG9UaGlzOwotICAgICAgICB9KTsKLSAgICAgICAgaWYg
KCFvdmVycmlkZXNUb1RoaXMpCi0gICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpJZGVu
dGl0eTsKLSAgICAgICAgaWYgKGFsbFN0cnVjdHVyZXNBcmVKU1Njb3BlKSB7Ci0gICAgICAgICAg
ICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gVG9UaGlz
UmVzdWx0OjpVbmRlZmluZWQ7Ci0gICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpHbG9i
YWxUaGlzOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6RHlu
YW1pYzsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CiBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpoYW5kbGVDb25zdGFudEJpbmFy
eUJpdHdpc2VPcChOb2RlKiBub2RlKQogewpAQCAtMjk3MiwzMSArMjkxMywyMiBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAKICAgICBjYXNl
IFRvVGhpczogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSBmb3JOb2Rl
KG5vZGUpOwotICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG5vZGUtPmVjbWFNb2RlKCk7CiAK
LSAgICAgICAgVG9UaGlzUmVzdWx0IHJlc3VsdCA9IGlzVG9UaGlzQW5JZGVudGl0eShtX3ZtLCBl
Y21hTW9kZSwgc291cmNlKTsKLSAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKLSAgICAgICAgY2Fz
ZSBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OgorICAgICAgICBpZiAoIShzb3VyY2UubV90eXBlICYg
flNwZWNPYmplY3QpKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnNldFNob3VsZFRyeUNvbnN0YW50
Rm9sZGluZyh0cnVlKTsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gc291cmNlOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVG9UaGlzUmVzdWx0OjpVbmRlZmluZWQ6Ci0gICAg
ICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGRp
ZEZvbGRDbG9iYmVyV29ybGQoKTsKKyAgICAgICAgICAgIHNldEZvck5vZGUobm9kZSwgc291cmNl
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRvVGhpc1Jlc3VsdDo6R2xvYmFs
VGhpczoKKyAgICAgICAgfQorCisgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNPYmpl
Y3QpOworCisgICAgICAgIGlmICghKHNvdXJjZS5tX3R5cGUgJiB+U3BlY090aGVyKSkgewogICAg
ICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7Ci0gICAg
ICAgICAgICBkZXN0aW5hdGlvbi5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3QpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVG9UaGlzUmVzdWx0OjpEeW5hbWljOgotICAgICAg
ICAgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCi0gICAgICAgICAgICAgICAgZGVzdGluYXRp
b24ubWFrZUhlYXBUb3AoKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGRl
c3RpbmF0aW9uID0gc291cmNlOwotICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLm1lcmdlKFNw
ZWNPYmplY3QpOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
KworICAgICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0z
MzE1LDYgKzMyNDcsMTMgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjT2JqZWN0T3RoZXIpOwogICAgICAg
ICBicmVhazsKIAorICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDoKKyAgICAgICAgaWYgKEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpKQorICAgICAgICAg
ICAgc2V0Q29uc3RhbnQobm9kZSwgY2hpbGQuaW5oZXJpdHM8SlNTY29wZT4obV92bSkgPyBqc1Vu
ZGVmaW5lZCgpIDogY2hpbGQpOworCisgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNP
YmplY3QgfCBTcGVjT3RoZXIpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgU2tpcFNjb3Bl
OiB7CiAgICAgICAgIGlmIChKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
dmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKEpTU2NvcGUqIHNjb3BlID0ganNEeW5hbWljQ2Fz
dDxKU1Njb3BlKj4obV92bSwgY2hpbGQpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjc3MDI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU0MjUsMjYgKzU0MjUsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkCiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX3RvX3Ro
aXM6IHsKLSAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldFRoaXMoKTsKLSAgICAgICAgICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpOwotICAgICAg
ICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAg
ICAgICAgICAgU3RydWN0dXJlSUQgY2FjaGVkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX2NhY2hl
ZFN0cnVjdHVyZUlEOwotICAgICAgICAgICAgU3RydWN0dXJlKiBjYWNoZWRTdHJ1Y3R1cmUgPSBu
dWxscHRyOwotICAgICAgICAgICAgaWYgKGNhY2hlZFN0cnVjdHVyZUlEKQotICAgICAgICAgICAg
ICAgIGNhY2hlZFN0cnVjdHVyZSA9IG1fdm0tPmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChj
YWNoZWRTdHJ1Y3R1cmVJRCk7Ci0gICAgICAgICAgICBpZiAobWV0YWRhdGEubV90b1RoaXNTdGF0
dXMgIT0gVG9UaGlzT0sKLSAgICAgICAgICAgICAgICB8fCAhY2FjaGVkU3RydWN0dXJlCi0gICAg
ICAgICAgICAgICAgfHwgY2FjaGVkU3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUu
dG9UaGlzICE9IEpTT2JqZWN0OjppbmZvKCktPm1ldGhvZFRhYmxlLnRvVGhpcwotICAgICAgICAg
ICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xv
d0Nhc2UobV9jdXJyZW50SW5kZXgpCi0gICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpCi0g
ICAgICAgICAgICAgICAgfHwgKG9wMS0+b3AoKSA9PSBHZXRMb2NhbCAmJiBvcDEtPnZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5zdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKCkpKSB7Ci0gICAgICAg
ICAgICAgICAgc2V0VGhpcyhhZGRUb0dyYXBoKFRvVGhpcywgT3BJbmZvKGJ5dGVjb2RlLm1fZWNt
YU1vZGUpLCBPcEluZm8oZ2V0UHJlZGljdGlvbigpKSwgb3AxKSk7Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoCi0gICAgICAgICAgICAgICAgICAgIENo
ZWNrU3RydWN0dXJlLAotICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1
Y3R1cmVTZXQoY2FjaGVkU3RydWN0dXJlKSksCi0gICAgICAgICAgICAgICAgICAgIG9wMSk7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBzZXRUaGlzKGFkZFRvR3JhcGgoVG9UaGlzLCBPcElu
Zm8oZ2V0UHJlZGljdGlvbigpKSwgZ2V0VGhpcygpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF90b190aGlzKTsKICAgICAgICAgfQogCkBAIC03ODg0LDYgKzc4NjUsMTIgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfZ2V0X2Zyb21fc2NvcGUpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9nZXRf
dGhpc192YWx1ZV9mb3JfY2FsbDogeworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRUaGlzVmFsdWVGb3JDYWxsPigpOworICAgICAgICAgICAg
c2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEdldFRoaXNWYWx1ZUZvckNhbGwsIGdldChi
eXRlY29kZS5tX3Njb3BlKSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X3RoaXNf
dmFsdWVfZm9yX2NhbGwpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2Nv
cGU6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wUHV0VG9TY29wZT4oKTsKICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEoY29kZUJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDYg
KzI1Miw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQKICAgICBj
YXNlIG9wX2luX2J5X2lkOgogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0
X2Zyb21fc2NvcGU6CisgICAgY2FzZSBvcF9nZXRfdGhpc192YWx1ZV9mb3JfY2FsbDoKICAgICBj
YXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDoKICAgICBjYXNlIG9wX2hhc19lbnVtZXJhYmxl
X2luZGV4ZWRfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9oYXNfZW51bWVyYWJsZV9zdHJ1Y3R1cmVf
cHJvcGVydHk6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOCw2ICsyMTgsNyBAQCB2b2lkIGNsb2JiZXJp
emUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBBcml0aE1heDoKICAgICBjYXNl
IEFyaXRoUG93OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JD
YWxsOgogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OgogICAg
IGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKQEAgLTU5MSwxMiArNTkyLDYgQEAgdm9pZCBjbG9iYmVy
aXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICB3cml0ZShIZWFwT2JqZWN0Q291
bnQpOwogICAgICAgICByZXR1cm47CiAKLSAgICBjYXNlIFRvVGhpczoKLSAgICAgICAgcmVhZChN
aXNjRmllbGRzKTsKLSAgICAgICAgcmVhZChIZWFwT2JqZWN0Q291bnQpOwotICAgICAgICB3cml0
ZShIZWFwT2JqZWN0Q291bnQpOwotICAgICAgICByZXR1cm47Ci0KICAgICBjYXNlIFR5cGVPZklz
T2JqZWN0OgogICAgICAgICByZWFkKE1pc2NGaWVsZHMpOwogICAgICAgICBkZWYoSGVhcExvY2F0
aW9uKFR5cGVPZklzT2JqZWN0TG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlO
b2RlKG5vZGUpKTsKQEAgLTcxNCw2ICs3MDksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNs
SW5FdmFsOgogICAgIGNhc2UgUmVzb2x2ZVNjb3BlOgogICAgIGNhc2UgVG9PYmplY3Q6CisgICAg
Y2FzZSBUb1RoaXM6CiAgICAgY2FzZSBIYXNFbnVtZXJhYmxlU3RydWN0dXJlUHJvcGVydHk6CiAg
ICAgY2FzZSBIYXNFbnVtZXJhYmxlUHJvcGVydHk6CiAgICAgY2FzZSBIYXNPd25TdHJ1Y3R1cmVQ
cm9wZXJ0eToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzE0LDEzICs3MTQsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgY2FzZSBUb1RoaXM6IHsKLSAgICAgICAgICAgICAgICBUb1RoaXNSZXN1bHQgcmVzdWx0
ID0gaXNUb1RoaXNBbklkZW50aXR5KG1fZ3JhcGgubV92bSwgbm9kZS0+ZWNtYU1vZGUoKSwgbV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dCA9PSBUb1RoaXNSZXN1bHQ6OklkZW50aXR5KSB7CisgICAgICAgICAgICAgICAgQWJzdHJhY3RW
YWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgICAgIGlmICghKHZhbHVlLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSkgewogICAgICAgICAgICAg
ICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gVG9UaGlzUmVzdWx0OjpHbG9iYWxU
aGlzKSB7CisgICAgICAgICAgICAgICAgaWYgKCEodmFsdWUubV90eXBlICYgflNwZWNPdGhlcikp
IHsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvR2V0R2xvYmFsVGhpcygpOwog
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZp
c2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExOSw2ICsxMTksNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja0FycmF5T3JFbXB0eToKICAgICBjYXNlIENo
ZWNrRGV0YWNoZWQ6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIEdldFRoaXNWYWx1ZUZv
ckNhbGw6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6CiAg
ICAgY2FzZSBHZXRHbG9iYWxUaGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODA2LDYgKzE4
MDYsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjYXNl
IEdldFNjb3BlOgorICAgICAgICBjYXNlIEdldFRoaXNWYWx1ZUZvckNhbGw6CiAgICAgICAgIGNh
c2UgR2V0R2V0dGVyOgogICAgICAgICBjYXNlIEdldFNldHRlcjoKICAgICAgICAgY2FzZSBHZXRH
bG9iYWxPYmplY3Q6IHsKQEAgLTMxMzcsOTYgKzMxMzgsMTggQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgZml4dXBUb1RoaXMoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIGJvb2wgaXNTdHJpY3RN
b2RlID0gbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpOwotCi0gICAgICAgIGlmIChpc1N0cmlj
dE1vZGUpIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRl
Qm9vbGVhbigpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkgewotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBub2Rl
LT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJ
bnQ1MigpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7Ci0gICAg
ICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRn
ZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBub2RlLT5j
b252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2Rl
UmVzdWx0RG91YmxlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3ltYm9sKCkp
IHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKLSAgICAgICAgICAgICAgICBmaXhF
ZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgbm9k
ZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRl
U3RyaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7Ci0jaWYg
VVNFKEJJR0lOVDMyKQotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlQmlnSW50MzIoKSkKLSAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQz
MlVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpCi0gICAgICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihu
b2RlLT5jaGlsZDEoKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9J
ZGVudGl0eSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT3RoZXIo
KSkgewotICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkgewotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8T3RoZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBub2RlLT5j
b252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLQogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAg
ICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrLCBub2RlLT5vcmlnaW4sCiAgICAg
ICAgICAgICAgICAgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIE90aGVyVXNlKSk7CiAgICAg
ICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxPdGhlclVzZT4obm9kZS0+Y2hpbGQxKCkubm9k
ZSgpKTsKICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQoCi0gICAgICAgICAg
ICAgICAgbm9kZSwgbV9ncmFwaC5nbG9iYWxUaGlzT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpOworICAgICAgICAgICAgICAgIG5vZGUsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdsb2JhbFRoaXMoKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgY292ZXIgb3RoZXIg
dXNlIGNhc2VzIGJ1dCB3ZSBkb24ndCBoYXZlIHVzZSBraW5kcyBmb3IgdGhlbS4gSXQncyBub3Qg
Y3JpdGljYWwsCi0gICAgICAgIC8vIGhvd2V2ZXIsIHNpbmNlIHdlIGNvdmVyIGFsbCB0aGUgbWlz
c2luZyBjYXNlcyBpbiBjb25zdGFudCBmb2xkaW5nLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MjEzCi0gICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIGZpeEVk
Z2U8U3RyaW5nT2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBub2RlLT5j
b252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKGlzRmluYWxPYmplY3RTcGVjdWxhdGlvbihub2RlLT5jaGlsZDEoKS0+cHJlZGlj
dGlvbigpKSkgewotICAgICAgICAgICAgZml4RWRnZTxGaW5hbE9iamVjdFVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU9iamVj
dCgpKSB7CisgICAgICAgICAgICBmaXhFZGdlPE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2
aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NzAsMTIgKzQ3MCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbik7CiAgICAgfQogICAgIAot
ICAgIEpTT2JqZWN0KiBnbG9iYWxUaGlzT2JqZWN0Rm9yKENvZGVPcmlnaW4gY29kZU9yaWdpbikK
LSAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBvYmplY3QgPSBnbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbik7Ci0gICAgICAgIHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihvYmplY3QtPm1l
dGhvZFRhYmxlKG1fdm0pLT50b1RoaXMob2JqZWN0LCBvYmplY3QsIEVDTUFNb2RlOjpzbG9wcHko
KSkpOwotICAgIH0KLSAgICAKICAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlRm9yKElu
bGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgaWYgKCFpbmxp
bmVDYWxsRnJhbWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5j
cHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5
RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDcgQEAgRXhpdE1vZGUgbWF5RXhp
dEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgU2V0QXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXM6CiAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgogICAgIGNhc2UgR2V0U2NvcGU6Cisg
ICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxsOgogICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAg
IGNhc2UgQ291bnRFeGVjdXRpb246CiAgICAgY2FzZSBTdXBlclNhbXBsZXJCZWdpbjoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjI2NCw3
ICsyMjY0LDYgQEAgcHVibGljOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgICAg
ICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKLSAg
ICAgICAgY2FzZSBUb1RoaXM6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIyNzgsNyArMjI3Nyw2IEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBDYWxsRXZhbDoKICAgICAgICAgY2FzZSBEZWxldGVCeVZhbDoK
ICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgotICAgICAgICBjYXNlIFRvVGhpczoKICAg
ICAgICAgICAgIHJldHVybiBFQ01BTW9kZTo6ZnJvbUJ5dGUobV9vcEluZm8uYXM8dWludDhfdD4o
KSk7CiAgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICAgICAgY2FzZSBQdXRCeUlkOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjc3MDI2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzUsNiArMjc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIG1hY3JvKEdldEdsb2JhbExleGljYWxWYXJpYWJsZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAg
bWFjcm8oUHV0R2xvYmFsVmFyaWFibGUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhH
ZXREeW5hbWljVmFyLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFj
cm8oR2V0VGhpc1ZhbHVlRm9yQ2FsbCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0RHlu
YW1pY1ZhciwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE5vdGlmeVdyaXRlLCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4LCBOb2Rl
UmVzdWx0SlMpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDI0ICsyMTcsNiBAQCBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsT2JqCiAgICAgcmV0dXJuIGJhc2UtPmdl
dChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25Ub1RoaXMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKSkKLXsKLSAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3Bw
eSgpKSk7Ci19Ci0KLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Ub1RoaXNTdHJp
Y3QsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wKSkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
Ci0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRP
cCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKSk7Ci19Ci0KIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25PYmplY3RLZXlzLCBKU0FycmF5KiwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPYmplY3QpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTgs
OCArNTgsNiBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUludGVybmFsUHJvbWlzZSwgSlND
ZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvciwgSlNDZWxsKiwgKEpT
R2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yKSk7CiBKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUFzeW5jR2VuZXJhdG9yLCBKU0NlbGwqLCAoSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdCogY29uc3RydWN0b3IpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uVG9UaGlzLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25Ub1RoaXNTdHJpY3QsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblZhbHVlTW9kLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25WYWx1ZUJpdE5vdCwgRW5jb2RlZEpTVmFsdWUs
IChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVmFsdWVCaXRBbmQsIEVuY29kZWRKU1ZhbHVlLCAo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjc3
MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNyw3MSArNTI3LDEzIEBAIHByaXZhdGU6
CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFRvVGhpczogewotICAgICAg
ICAgICAgLy8gVG9UaGlzIGluIG1ldGhvZHMgZm9yIHByaW1pdGl2ZSB0eXBlcyBzaG91bGQgc3Bl
Y3VsYXRlIHByaW1pdGl2ZSB0eXBlcyBpbiBzdHJpY3QgbW9kZS4KLSAgICAgICAgICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpOwotICAgICAgICAgICAg
aWYgKGlzU3RyaWN0TW9kZSkgewotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlQm9vbGVhbigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDUyQW55KTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkgewotICAgICAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQnl0ZWNvZGVOdW1iZXIpOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN5bWJvbCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTeW1ib2wpOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSNpZiBVU0Uo
QklHSU5UMzIpCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVj
dWxhdGVCaWdJbnQzMigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFNwZWNCaWdJbnQzMik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0hlYXBCaWdJbnQpOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCaWdJbnQpOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N0cmluZ0lkZW50
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkg
ewotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjU3Ry
aW5nKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZVN0cmluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKFNwZWNTdHJpbmdPYmplY3QpOwotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKSB7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24oU3BlY1N0cmluZ09iamVjdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24g
PSBub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpOwotICAgICAgICAgICAgaWYgKGlzU3RyaWN0
TW9kZSkKLSAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLT5n
ZXRIZWFwUHJlZGljdGlvbigpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHByZWRpY3Rpb24pIHsK
KyAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgb3JpZ2luYWxQcmVkaWN0aW9uID0gcHJlZGljdGlvbjsKICAgICAgICAgICAgICAgICBp
ZiAocHJlZGljdGlvbiAmIH5TcGVjT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdy
YXBwZXIgb2JqZWN0cyBhcmUgY3JlYXRlZCBvbmx5IGluIHNsb3BweSBtb2RlLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDI3
NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzIsNiArMjMyLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICBjYXNlIENoZWNrQXJy
YXlPckVtcHR5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JD
YWxsOgogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OgogICAg
IGNhc2UgR2V0R2xvYmFsVGhpczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjc3MDI2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDIxMSw2ICs0MjExLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRU
aGlzVmFsdWVGb3JDYWxsOiB7CisgICAgICAgIGNvbXBpbGVHZXRUaGlzVmFsdWVGb3JDYWxsKG5v
ZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFJlc29sdmVTY29wZUZvckhv
aXN0aW5nRnVuY0RlY2xJbkV2YWw6IHsKICAgICAgICAgY29tcGlsZVJlc29sdmVTY29wZUZvckhv
aXN0aW5nRnVuY0RlY2xJbkV2YWwobm9kZSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZp
c2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjY3LDYgKzQyNjcsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0RHluYW1p
Y1Zhcihub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBHZXRUaGlzVmFs
dWVGb3JDYWxsOiB7CisgICAgICAgIGNvbXBpbGVHZXRUaGlzVmFsdWVGb3JDYWxsKG5vZGUpOwor
ICAgICAgICBicmVhazsKKyAgICB9CiAgICAgCiAgICAgY2FzZSBSZXNvbHZlU2NvcGVGb3JIb2lz
dGluZ0Z1bmNEZWNsSW5FdmFsOiB7CiAgICAgICAgIGNvbXBpbGVSZXNvbHZlU2NvcGVGb3JIb2lz
dGluZ0Z1bmNEZWNsSW5FdmFsKG5vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjA4Miw2ICsxMjA4MiwyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
RHluYW1pY1ZhCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KIAordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFRoaXNWYWx1ZUZvckNhbGwoTm9kZSogbm9kZSkK
K3sKKyAgICBKU1ZhbHVlT3BlcmFuZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBzY29wZSk7CisKKyAgICBK
U1ZhbHVlUmVncyBzY29wZVJlZ3MgPSBzY29wZS5qc1ZhbHVlUmVncygpOworICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgbV9qaXQubW92ZVZhbHVlUmVn
cyhzY29wZVJlZ3MsIHJlc3VsdFJlZ3MpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzV2l0
aFNjb3BlID0gbV9qaXQuYnJhbmNoSWZOb3RUeXBlKHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCBK
U1R5cGVSYW5nZSB7IEZpcnN0SlNTY29wZVR5cGUsIExhc3RKU1Njb3BlVHlwZSB9KTsKKyAgICBt
X2ppdC5tb3ZlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIHJlc3VsdFJlZ3MpOworICAgIGlz
V2l0aFNjb3BlLmxpbmsoJm1faml0KTsKKworICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywg
bm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXREeW5hbWljVmFyKE5v
ZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwpAQCAtMTM0MTYsMjkgKzEzNDMyLDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVOZXdUeXBlZEFycmEKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1RoaXMo
Tm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVu
dHlwZWRVc2UpOwotICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7Ci0gICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKIAotICAgIEpTVmFsdWVSZWdzIHRoaXNWYWx1ZVJlZ3MgPSB0aGlzVmFs
dWUuanNWYWx1ZVJlZ3MoKTsKLSAgICBKU1ZhbHVlUmVncyB0ZW1wUmVncyA9IHRlbXAucmVncygp
OworICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
ID0gdGhpc1ZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWVS
ZWdzLnBheWxvYWRHUFIoKTsKIAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBt
X2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWVSZWdzKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3Qgc2xvd0Nhc2VzOwotICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RD
ZWxsKHRoaXNWYWx1ZVJlZ3MpKTsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKAotICAgICAgICBtX2pp
dC5icmFuY2hUZXN0OCgKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLAotICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGhpc1ZhbHVlUmVncy5wYXlsb2FkR1BS
KCksIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwKLSAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoT3ZlcnJpZGVzVG9UaGlzKSkpOwotICAgIG1faml0Lm1vdmVW
YWx1ZVJlZ3ModGhpc1ZhbHVlUmVncywgdGVtcFJlZ3MpOwotCi0gICAgSl9KSVRPcGVyYXRpb25f
R0ogZnVuY3Rpb247Ci0gICAgaWYgKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKLSAgICAg
ICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXNTdHJpY3Q7Ci0gICAgZWxzZQotICAgICAgICBm
dW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpczsKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBmdW5jdGlvbiwgdGVtcFJlZ3MsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCB0aGlzVmFsdWVSZWdzKSk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hJZk5vdE9iamVjdCh2YWx1ZUdQUikpOworICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisKKyAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKKyAg
ICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90T3RoZXIodmFsdWVSZWdzLCBzY3Jh
dGNoLmdwcigpKSk7CisgICAgbV9qaXQubG9hZFB0cihnbG9iYWxPYmplY3QtPmFkZHJlc3NPZkds
b2JhbFRoaXMoKSwgdmFsdWVHUFIpOwogCi0gICAganNWYWx1ZVJlc3VsdCh0ZW1wUmVncywgbm9k
ZSk7CisgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uVG9PYmplY3QsIHZhbHVlR1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCB2YWx1ZUdQ
UiwgVHJ1c3RlZEltbVB0cihudWxscHRyKSkpOworICAgIGNlbGxSZXN1bHQodmFsdWVHUFIsIG5v
ZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0
R2V0T3duUHJvcGVydHlOYW1lcyhOb2RlKiBub2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjc3MDI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDUwLDYgKzE0NTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlR2V0R2xvYmFs
VmFyaWFibGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVB1dEdsb2JhbFZhcmlhYmxlKE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVHZXREeW5hbWljVmFyKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBp
bGVHZXRUaGlzVmFsdWVGb3JDYWxsKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXREeW5hbWlj
VmFyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRDbG9zdXJlVmFyKE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVQdXRDbG9zdXJlVmFyKE5vZGUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUwLDYgKzM1MCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShO
b2RlKiAKICAgICBjYXNlIFJlc29sdmVTY29wZToKICAgICBjYXNlIFJlc29sdmVTY29wZUZvckhv
aXN0aW5nRnVuY0RlY2xJbkV2YWw6CiAgICAgY2FzZSBHZXREeW5hbWljVmFyOgorICAgIGNhc2Ug
R2V0VGhpc1ZhbHVlRm9yQ2FsbDoKICAgICBjYXNlIFB1dER5bmFtaWNWYXI6CiAgICAgY2FzZSBD
b21wYXJlRXE6CiAgICAgY2FzZSBDb21wYXJlRXFQdHI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2MTUsNiArMTYxNSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0RHluYW1p
Y1ZhcjoKICAgICAgICAgICAgIGNvbXBpbGVHZXREeW5hbWljVmFyKCk7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxsOgorICAgICAgICAgICAgY29t
cGlsZUdldFRoaXNWYWx1ZUZvckNhbGwoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFB1dER5bmFtaWNWYXI6CiAgICAgICAgICAgICBjb21waWxlUHV0RHluYW1pY1ZhcigpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjAzLDMzICsyMjA2LDI5IEBAIHByaXZhdGU6CiAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX29yaWdpbi5zZW1hbnRpYyk7CiAKICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlZFR5cGUgdmFsdWVUeXBlID0g
cHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Js
b2NrIGlzQ2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBu
b3RDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9u
ID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgCi0gICAgICAgIG1fb3V0LmJyYW5jaCgKLSAg
ICAgICAgICAgIGlzQ2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVz
dWFsbHkoaXNDZWxsQ2FzZSksIHJhcmVseShzbG93Q2FzZSkpOwotICAgICAgICAKLSAgICAgICAg
TEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc0NlbGxDYXNlLCBzbG93Q2Fz
ZSk7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IodmFs
dWUpOwotICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICBtX291dC50ZXN0SXNaZXJv
MzIoCi0gICAgICAgICAgICAgICAgbV9vdXQubG9hZDhaZXJvRXh0MzIodmFsdWUsIG1faGVhcHMu
SlNDZWxsX3R5cGVJbmZvRmxhZ3MpLAotICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIo
T3ZlcnJpZGVzVG9UaGlzKSksCi0gICAgICAgICAgICB1c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJh
cmVseShzbG93Q2FzZSkpOworICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKHZhbHVlLCB2YWx1
ZVR5cGUpLCB1c3VhbGx5KGlzQ2VsbENhc2UpLCByYXJlbHkobm90Q2VsbENhc2UpKTsKICAgICAg
ICAgCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNDZWxs
Q2FzZSwgbm90Q2VsbENhc2UpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBpc09iamVjdFJlc3Vs
dCA9IG1fb3V0LmFuY2hvcih2YWx1ZSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc09iamVjdCh2
YWx1ZSwgdmFsdWVUeXBlKSwgdXN1YWxseShjb250aW51YXRpb24pLCByYXJlbHkoc2xvd0Nhc2Up
KTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhub3RDZWxsQ2FzZSwgc2xvd0Nhc2UpOworICAg
ICAgICBWYWx1ZUZyb21CbG9jayBpc090aGVyUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0Lmxv
YWRQdHIobV9vdXQuYWJzb2x1dGUoZ2xvYmFsT2JqZWN0LT5hZGRyZXNzT2ZHbG9iYWxUaGlzKCkp
KSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc090aGVyKHZhbHVlLCB2YWx1ZVR5cGUpLCB1c3Vh
bGx5KGNvbnRpbnVhdGlvbiksIHJhcmVseShzbG93Q2FzZSkpOworCiAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwotICAgICAgICBKX0pJVE9wZXJhdGlvbl9H
SiBmdW5jdGlvbjsKLSAgICAgICAgaWYgKG1fbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpKQot
ICAgICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXNTdHJpY3Q7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzOwotICAgICAgICBWYWx1
ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwgZnVuY3Rp
b24sIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIHZhbHVlKSk7CisgICAgICAgIFZhbHVlRnJv
bUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBvcGVyYXRpb25U
b09iamVjdCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgdmFsdWUsIG1fb3V0LmNvbnN0SW50
UHRyKDApKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICBz
ZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAg
ICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgaXNPYmplY3RSZXN1bHQsIGlzT3RoZXJS
ZXN1bHQsIHNsb3dSZXN1bHQpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUFkZCgp
CkBAIC0xNDQzNSw2ICsxNDQzNCwyNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0KSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuY29uc3RJ
bnRQdHIodWlkKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmdldFB1dEluZm8oKSkpKTsKICAg
ICB9CiAKKyAgICB2b2lkIGNvbXBpbGVHZXRUaGlzVmFsdWVGb3JDYWxsKCkKKyAgICB7CisgICAg
ICAgIExWYWx1ZSBzY29wZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAg
TEJhc2ljQmxvY2sgd2l0aFNjb3BlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExC
YXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgVmFs
dWVGcm9tQmxvY2sgZW52aXJvbm1lbnRSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuY29uc3RJ
bnQ2NChKU1ZhbHVlOjpWYWx1ZVVuZGVmaW5lZCkpOworICAgICAgICBtX291dC5icmFuY2goCisg
ICAgICAgICAgICBpc0NlbGxXaXRoVHlwZShzY29wZSwgSlNUeXBlUmFuZ2UgeyBGaXJzdEpTU2Nv
cGVUeXBlLCBMYXN0SlNTY29wZVR5cGUgfSwgV1RGOjpudWxsb3B0LCBwcm92ZW5UeXBlKG1fbm9k
ZS0+Y2hpbGQxKCkpKSwKKyAgICAgICAgICAgIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5
KHdpdGhTY29wZUNhc2UpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0
LmFwcGVuZFRvKHdpdGhTY29wZUNhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJv
bUJsb2NrIHdpdGhTY29wZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihzY29wZSk7CisgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51
YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGVu
dmlyb25tZW50UmVzdWx0LCB3aXRoU2NvcGVSZXN1bHQpKTsKKyAgICB9CisKICAgICB2b2lkIGNv
bXBpbGVQdXREeW5hbWljVmFyKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgkocmV2aXNpb24gMjc3MDI2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIJKHdvcmtpbmcgY29w
eSkKQEAgLTE0Miw3ICsxNDIsNiBAQCBtb2R1bGUgRFNMCiAjaW5jbHVkZSAiUHJpdmF0ZUZpZWxk
UHV0S2luZC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRCeUlk
RmxhZ3MuaCIKLSNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhv
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJ
bmplY3RlZFNjcmlwdEhvc3QuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM3LDcgKzEzNyw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVy
bmFsQ28KICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+
KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnNsb3BweSgpKSk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoMCkudG9TbG9wcHlNb2RlVGhpcyhnbG9iYWxPYmplY3QpOwogICAgIHJl
dHVybiBqc1N0cmluZyh2bSwgSlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUob2JqZWN0KSk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDI3NzAyNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDY3LDYgKzQ2Nyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKIAogICAg
ICAgICBERUZJTkVfT1Aob3BfcmVzb2x2ZV9zY29wZSkKICAgICAgICAgREVGSU5FX09QKG9wX2dl
dF9mcm9tX3Njb3BlKQorICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3RoaXNfdmFsdWVfZm9yX2Nh
bGwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfdG9fc2NvcGUpCiAgICAgICAgIERFRklORV9P
UChvcF9nZXRfZnJvbV9hcmd1bWVudHMpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfdG9fYXJn
dW1lbnRzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyNzcwMjYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MjAs
NiArNzIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0X29wX3Jlc29s
dmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9m
cm9tX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRf
dGhpc192YWx1ZV9mb3JfY2FsbChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9nZXRfZnJvbV9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX3B1dF90b19hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9u
IDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTExNywyMiArMTExNyw2IEBAIHZvaWQgSklUOjplbWl0X29w
X2NyZWF0ZV90aGlzKGNvbnN0IEluc3QKICAgICBlbWl0U3RvcmVDZWxsKGJ5dGVjb2RlLm1fZHN0
LCByZXN1bHRSZWcpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRl
Y29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgU3RydWN0dXJlSUQqIGNhY2hlZFN0cnVj
dHVyZUlEID0gJm1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQ7Ci0gICAgVmlydHVhbFJlZ2lz
dGVyIHRoaXNSZWdpc3RlciA9IGJ5dGVjb2RlLm1fc3JjRHN0OwotCi0gICAgZW1pdExvYWQodGhp
c1JlZ2lzdGVyLCByZWdUMywgcmVnVDIpOwotCi0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RD
ZWxsKHJlZ1QzKSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RUeXBlKHJlZ1QyLCBGaW5h
bE9iamVjdFR5cGUpKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICBsb2FkMzIoY2FjaGVkU3RydWN0dXJlSUQsIHJl
Z1QyKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QwLCByZWdUMikp
OwotfQotCiB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190ZHooY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcENoZWNrVGR6PigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUzLDE4ICsxMDUzLDQyIEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShjb25zdCBJbnN0cnUKICAgICBlbWl0U3RvcmVD
ZWxsKGRzdCwgcmVnVDApOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfdGhpc192YWx1ZV9m
b3JfY2FsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0VGhpc1ZhbHVlRm9yQ2Fs
bD4oKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyhyZWdU
MCk7CisjZWxzZQorICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyhyZWdUMSwgcmVnVDApOworI2Vu
ZGlmCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3Njb3BlLCB2YWx1ZVJl
Z3MpOworCisgICAgSnVtcCBpc1dpdGhTY29wZSA9IGJyYW5jaElmTm90VHlwZSh2YWx1ZVJlZ3Mu
cGF5bG9hZEdQUigpLCBKU1R5cGVSYW5nZSB7IEZpcnN0SlNTY29wZVR5cGUsIExhc3RKU1Njb3Bl
VHlwZSB9KTsKKyAgICBtb3ZlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIHZhbHVlUmVncyk7
CisgICAgaXNXaXRoU2NvcGUubGluayh0aGlzKTsKKworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9kc3QsIHZhbHVlUmVncyk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX3Rv
X3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRv
IGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvVGhpcz4oKTsKLSAgICBhdXRv
JiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBTdHJ1Y3R1
cmVJRCogY2FjaGVkU3RydWN0dXJlSUQgPSAmbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRDsK
LSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fc3JjRHN0LCByZWdUMSk7Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MocmVnVDApOworI2Vs
c2UKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKKyNlbmRpZgorICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9zcmNEc3QsIHZhbHVlUmVncyk7CiAK
LSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEpOworICAgIEp1bXAgbm90Q2Vs
bCA9IGJyYW5jaElmTm90Q2VsbCh2YWx1ZVJlZ3MpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElm
Tm90T2JqZWN0KHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpKTsKKyAgICBKdW1wIGRvbmUgPSBqdW1w
KCk7CiAKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdFR5cGUocmVnVDEsIEZpbmFsT2JqZWN0
VHlwZSkpOwotICAgIGxvYWQzMihjYWNoZWRTdHJ1Y3R1cmVJRCwgcmVnVDIpOwotICAgIGFkZFNs
b3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCByZWdUMikpOworICAgIG5vdENlbGwubGluayh0aGlzKTsKKyAgICBhZGRT
bG93Q2FzZShicmFuY2hJZk5vdE90aGVyKHZhbHVlUmVncywgcmVnVDMpKTsKKyAgICBzdG9yZVRy
dXN0ZWRWYWx1ZShtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFRoaXMoKSwgYWRk
cmVzc0ZvcihieXRlY29kZS5tX3NyY0RzdCkpOworCisgICAgZG9uZS5saW5rKHRoaXMpOwogfQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDI3NzAyNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CSh3b3JraW5nIGNvcHkpCkBAIC04MTgsMTQgKzgxOCwyNCBAQCBsbGludE9wV2l0aFJldHVybihv
cF9nZXRfc2NvcGUsIE9wR2V0U2NvCiBlbmQpCiAKIAotbGxpbnRPcFdpdGhNZXRhZGF0YShvcF90
b190aGlzLCBPcFRvVGhpcywgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCBy
ZXR1cm4pCi0gICAgZ2V0KG1fc3JjRHN0LCB0MCkKLSAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIENlbGxUYWcsIC5vcFRvVGhpc1Nsb3cKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MAotICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgRmluYWxPYmplY3RU
eXBlLCAub3BUb1RoaXNTbG93Ci0gICAgbWV0YWRhdGEodDIsIHQzKQotICAgIGxvYWRpIE9wVG9U
aGlzOjpNZXRhZGF0YTo6bV9jYWNoZWRTdHJ1Y3R1cmVJRFt0Ml0sIHQyCi0gICAgYmluZXEgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDIsIC5vcFRvVGhpc1Nsb3cKK2xsaW50T3Aob3BfdG9f
dGhpcywgT3BUb1RoaXMsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQorICAgIGxvYWRWYXJp
YWJsZShnZXQsIG1fc3JjRHN0LCB0MiwgdDEsIHQwKQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
b3BUb1RoaXNOb3RDZWxsCisgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwg
Lm9wVG9UaGlzU2xvdworICAgIGRpc3BhdGNoKCkKKworLm9wVG9UaGlzTm90Q2VsbDoKKyAgICBv
cmkgMSwgdDEKKyAgICBiaWVxIHQxLCBOdWxsVGFnLCAub3BUb1RoaXNVbmRlZmluZWRPck51bGwK
KyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF90b190aGlzKQorICAgIGRpc3BhdGNoKCkKKwor
Lm9wVG9UaGlzVW5kZWZpbmVkT3JOdWxsOgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0Mgor
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDJdLCB0MgorICAgIGxvYWRwIEpT
R2xvYmFsT2JqZWN0OjptX2dsb2JhbFRoaXNbdDJdLCB0MgorICAgIHN0b3JlaSBDZWxsVGFnLCBU
YWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0KICAgICBkaXNwYXRjaCgpCiAKIC5vcFRvVGhpc1Nsb3c6CkBAIC0yNTU0LDYgKzI1NjQs
MTggQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgTwogZW5kKQogCiAK
K2xsaW50T3BXaXRoUmV0dXJuKG9wX2dldF90aGlzX3ZhbHVlX2Zvcl9jYWxsLCBPcEdldFRoaXNW
YWx1ZUZvckNhbGwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCisgICAgZ2V0
KG1fc2NvcGUsIHQwKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisg
ICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QwXSwgRmlyc3RKU1Njb3BlVHlwZSwgLmlzV2l0aFNjb3Bl
CisgICAgYmJhIEpTQ2VsbDo6bV90eXBlW3QwXSwgTGFzdEpTU2NvcGVUeXBlLCAuaXNXaXRoU2Nv
cGUKKyAgICByZXR1cm4oVW5kZWZpbmVkVGFnLCAwKQorCisuaXNXaXRoU2NvcGU6CisgICAgcmV0
dXJuKENlbGxUYWcsIHQwKQorZW5kKQorCisKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3Rv
X3Njb3BlLCBPcFB1dFRvU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0
YSwgcmV0dXJuKQogICAgIG1hY3JvIHB1dFByb3BlcnR5KCkKICAgICAgICAgZ2V0KG1fdmFsdWUs
IHQxKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBA
IC04MjgsMTUgKzgyOCwyNiBAQCBsbGludE9wV2l0aFJldHVybihvcF9nZXRfc2NvcGUsIE9wR2V0
U2NvCiBlbmQpCiAKIAotbGxpbnRPcFdpdGhNZXRhZGF0YShvcF90b190aGlzLCBPcFRvVGhpcywg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCitsbGludE9wKG9w
X3RvX3RoaXMsIE9wVG9UaGlzLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKICAgICBnZXQo
bV9zcmNEc3QsIHQwKQotICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKLSAgICBidHFueiB0MCwg
bm90Q2VsbE1hc2ssIC5vcFRvVGhpc1Nsb3cKLSAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0s
IEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdwotICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVJRFt0MF0sIHQxCi0gICAgbWV0YWRhdGEodDIsIHQzKQotICAgIGxvYWRpIE9wVG9UaGlz
OjpNZXRhZGF0YTo6bV9jYWNoZWRTdHJ1Y3R1cmVJRFt0Ml0sIHQyCi0gICAgYmluZXEgdDEsIHQy
LCAub3BUb1RoaXNTbG93CisgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MQorICAgIGJ0cW56IHQx
LCBub3RDZWxsTWFzaywgLm9wVG9UaGlzTm90Q2VsbAorICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0
MV0sIE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgpCisKKy5vcFRvVGhp
c05vdENlbGw6CisgICAgYW5kcSB+VGFnVW5kZWZpbmVkLCB0MQorICAgIGJxZXEgdDEsIFZhbHVl
TnVsbCwgLm9wVG9UaGlzVW5kZWZpbmVkT3JOdWxsCisgICAgIyBicWVxIHQxLCBWYWx1ZVVuZGVm
aW5lZCwgLm9wVG9UaGlzVW5kZWZpbmVkT3JOdWxsCisgICAgIyBicWVxIHQxLCBWYWx1ZU51bGws
IC5vcFRvVGhpc1VuZGVmaW5lZE9yTnVsbAorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Rv
X3RoaXMpCisgICAgZGlzcGF0Y2goKQorCisub3BUb1RoaXNVbmRlZmluZWRPck51bGw6CisgICAg
bG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9i
amVjdFt0MV0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fZ2xvYmFsVGhpc1t0MV0s
IHQxCisgICAgc3RvcmVxIHQxLCBbY2ZyLCB0MCwgOF0KICAgICBkaXNwYXRjaCgpCiAKIC5vcFRv
VGhpc1Nsb3c6CkBAIC0yNjg0LDYgKzI2OTUsMTcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfZnJvbV9zY29wZSwgTwogZW5kKQogCiAKK2xsaW50T3BXaXRoUmV0dXJuKG9wX2dldF90aGlz
X3ZhbHVlX2Zvcl9jYWxsLCBPcEdldFRoaXNWYWx1ZUZvckNhbGwsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCByZXR1cm4pCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV9zY29wZSwgdDApCisg
ICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QwXSwgRmlyc3RKU1Njb3BlVHlwZSwgLmlzV2l0aFNjb3Bl
CisgICAgYmJhIEpTQ2VsbDo6bV90eXBlW3QwXSwgTGFzdEpTU2NvcGVUeXBlLCAuaXNXaXRoU2Nv
cGUKKyAgICByZXR1cm4oVmFsdWVVbmRlZmluZWQpCisKKy5pc1dpdGhTY29wZToKKyAgICByZXR1
cm4odDApCitlbmQpCisKKwogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9w
UHV0VG9TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4p
CiAgICAgbWFjcm8gcHV0UHJvcGVydHkoKQogICAgICAgICBnZXQobV92YWx1ZSwgdDEpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTU0MSw2ICs1NDEsOCBA
QCBjb25zdCBGaW5hbE9iamVjdFR5cGUgPSBjb25zdGV4cHIgRmluYWxPCiBjb25zdCBKU0Z1bmN0
aW9uVHlwZSA9IGNvbnN0ZXhwciBKU0Z1bmN0aW9uVHlwZQogY29uc3QgQXJyYXlUeXBlID0gY29u
c3RleHByIEFycmF5VHlwZQogY29uc3QgRGVyaXZlZEFycmF5VHlwZSA9IGNvbnN0ZXhwciBEZXJp
dmVkQXJyYXlUeXBlCitjb25zdCBGaXJzdEpTU2NvcGVUeXBlID0gY29uc3RleHByIEZpcnN0SlNT
Y29wZVR5cGUKK2NvbnN0IExhc3RKU1Njb3BlVHlwZSA9IGNvbnN0ZXhwciBMYXN0SlNTY29wZVR5
cGUKIGNvbnN0IFByb3h5T2JqZWN0VHlwZSA9IGNvbnN0ZXhwciBQcm94eU9iamVjdFR5cGUKIGNv
bnN0IEhlYXBCaWdJbnRUeXBlID0gY29uc3RleHByIEhlYXBCaWdJbnRUeXBlCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA0LDcgKzYwNCw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKIAogICAgIC8vIDEuIExldCBhcnJheSBiZSB0aGUgcmVzdWx0
IG9mIGNhbGxpbmcgVG9PYmplY3Qgb24gdGhlIHRoaXMgdmFsdWUuCiAgICAgSlNPYmplY3QqIHRo
aXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKQEAgLTY4Miw5ICs2
ODIsOCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNUCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAotICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Cisg
ICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAgICAgdWludDY0X3QgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRv
TGVuZ3RoKGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtNzc3LDcgKzc3Niw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY0oKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxLiBMZXQgTyBiZSA/IFRvT2JqZWN0KHRoaXMg
dmFsdWUpLgotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3Bl
LmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmpl
Y3QpKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTgzMyw3ICs4MzIsNyBA
QCBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY3JlYXRlQXJyYXlJdGVyYXRvCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3Bl
LmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBVTlVTRURfUEFSQU0oc2NvcGUpOwog
ICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCkBAIC04NjIsNyArODYxLDcgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jUAogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGds
b2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAKICAgICBpZiAoaXNKU0FycmF5KHRoaXNWYWx1ZSkp
CiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGFzQXJy
YXkodGhpc1ZhbHVlKS0+cG9wKGdsb2JhbE9iamVjdCkpKTsKQEAgLTkwMCw3ICs4OTksNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNQCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAKICAgICBpZiAoTElLRUxZKGlzSlNBcnJh
eSh0aGlzVmFsdWUpICYmIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID09IDEpKSB7CiAgICAg
ICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0aGlzVmFsdWUpOwpAQCAtOTM2LDcgKzkzNSw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1IKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2Nv
cGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09i
amVjdCkpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTAzOCw3ICsxMDM3
LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jUwogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUu
ZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAg
ICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTA2NSw3ICsxMDY0LDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jUwogICAgIC8vIGh0dHBzOi8vdGMz
OS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5zbGljZQogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFs
T2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhj
ZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAg
ICAgIHJldHVybiB7IH07CkBAIC0xMTI5LDcgKzExMjgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oYXJyYXlQcm90b0Z1bmNTCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0
KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBF
Q01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3Qq
IHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFs
dWUoKTsKQEAgLTEyMzUsNyArMTIzNCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJh
eVByb3RvRnVuY1UKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgLy8gMTUuNC40LjEzCiAKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVj
dChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFz
Y29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2Jq
KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xMzcwLDcgKzEzNjksNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNJCiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTUuNC40LjE0Ci0gICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxP
YmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBK
U09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJl
dHVybiB7IH07CkBAIC0xNDEwLDcgKzE0MDksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
YXJyYXlQcm90b0Z1bmNMCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgLy8gMTUuNC40LjE1Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSku
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05f
QVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJ
S0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiB7IH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkocmV2aXNpb24gMjc3MDI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY4LDkgKzY4LDYgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICB1c2luZyBHZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4RnVuY3Rpb25QdHIgPSBib29sICgqKShKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQsIFByb3BlcnR5U2xvdCYpOwogICAgIEdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXhGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoZ2V0T3duUHJvcGVydHlTbG90
QnlJbmRleCk7CiAKLSAgICB1c2luZyBUb1RoaXNGdW5jdGlvblB0ciA9IEpTVmFsdWUgKCopKEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUpOwotICAgIFRvVGhpc0Z1bmN0aW9uUHRy
IE1FVEhPRF9UQUJMRV9FTlRSWSh0b1RoaXMpOwotCiAgICAgdXNpbmcgR2V0T3duUHJvcGVydHlO
YW1lc0Z1bmN0aW9uUHRyID0gdm9pZCAoKikoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSk7CiAgICAgR2V0T3duUHJv
cGVydHlOYW1lc0Z1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShnZXRPd25Qcm9wZXJ0eU5h
bWVzKTsKICAgICBHZXRPd25Qcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VO
VFJZKGdldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzKTsKQEAgLTE1Miw3ICsxNDksNiBAQCBzdHJ1
Y3QgTWV0aG9kVGFibGUgewogICAgICAgICAmQ2xhc3NOYW1lOjpkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duUHJvcGVydHlTbG90LCBcCiAgICAgICAg
ICZDbGFzc05hbWU6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgsIFwKLSAgICAgICAgJkNsYXNz
TmFtZTo6dG9UaGlzLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmdldE93blByb3BlcnR5TmFtZXMs
IFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMsIFwKICAg
ICAgICAgJkNsYXNzTmFtZTo6Y3VzdG9tSGFzSW5zdGFuY2UsIFwKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24g
Mjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ2LDI4ICszNDYsOCBAQCBKU0NfREVGSU5FX0NPTU1P
Tl9TTE9XX1BBVEgoc2xvd19wYXRoX3RvCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVj
b2RlID0gcGMtPmFzPE9wVG9UaGlzPigpOwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICBKU1ZhbHVlIHYxID0gR0VUKGJ5dGVjb2RlLm1fc3Jj
RHN0KS5qc1ZhbHVlKCk7Ci0gICAgaWYgKHYxLmlzQ2VsbCgpKSB7Ci0gICAgICAgIFN0cnVjdHVy
ZUlEIG15U3RydWN0dXJlSUQgPSB2MS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKTsKLSAgICAgICAg
U3RydWN0dXJlSUQgb3RoZXJTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJl
SUQ7Ci0gICAgICAgIGlmIChteVN0cnVjdHVyZUlEICE9IG90aGVyU3RydWN0dXJlSUQpIHsKLSAg
ICAgICAgICAgIGlmIChvdGhlclN0cnVjdHVyZUlEKQotICAgICAgICAgICAgICAgIG1ldGFkYXRh
Lm1fdG9UaGlzU3RhdHVzID0gVG9UaGlzQ29uZmxpY3RlZDsKLSAgICAgICAgICAgIG1ldGFkYXRh
Lm1fY2FjaGVkU3RydWN0dXJlSUQgPSBteVN0cnVjdHVyZUlEOwotICAgICAgICAgICAgdm0uaGVh
cC53cml0ZUJhcnJpZXIoY29kZUJsb2NrLCB2bS5nZXRTdHJ1Y3R1cmUobXlTdHJ1Y3R1cmVJRCkp
OwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0
dXMgPSBUb1RoaXNDb25mbGljdGVkOwotICAgICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVy
ZUlEID0gMDsKLSAgICB9Ci0gICAgLy8gTm90ZTogV2Ugb25seSBuZWVkIHRvIGRvIHRoaXMgdmFs
dWUgcHJvZmlsaW5nIGhlcmUgb24gdGhlIHNsb3cgcGF0aC4gVGhlIGZhc3QgcGF0aAotICAgIC8v
IGp1c3QgcmV0dXJucyB0aGUgaW5wdXQgdG8gdG9fdGhpcyBpZiB0aGUgc3RydWN0dXJlIGNoZWNr
IHN1Y2NlZWRzLiBJZiB0aGUgc3RydWN0dXJlCi0gICAgLy8gY2hlY2sgc3VjY2VlZHMsIGRvaW5n
IHZhbHVlIHByb2ZpbGluZyBoZXJlIGlzIGVxdWl2YWxlbnQgdG8gZG9pbmcgaXQgd2l0aCBhIHBv
dGVudGlhbGx5Ci0gICAgLy8gZGlmZmVyZW50IG9iamVjdCB0aGF0IHN0aWxsIGhhcyB0aGUgc2Ft
ZSBzdHJ1Y3R1cmUgb24gdGhlIGZhc3QgcGF0aCBzaW5jZSBpdCdsbCBwcm9kdWNlCi0gICAgLy8g
dGhlIHNhbWUgU3BlY3VsYXRlZFR5cGUuIFRoZXJlZm9yZSwgd2UgZG9uJ3QgbmVlZCB0byB3b3Jy
eSBhYm91dCB2YWx1ZSBwcm9maWxpbmcgb24gdGhlCi0gICAgLy8gZmFzdCBwYXRoLgotICAgIGF1
dG8gdmFsdWUgPSB2MS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBieXRlY29kZS5tX2VjbWFNb2RlKTsK
KyAgICBKU09iamVjdCogdmFsdWUgPSB2MS50b1Nsb3BweU1vZGVUaGlzKGdsb2JhbE9iamVjdCk7
CiAgICAgUkVUVVJOX1dJVEhfUFJPRklMSU5HX0NVU1RPTShieXRlY29kZS5tX3NyY0RzdCwgdmFs
dWUsIFBST0ZJTEVfVkFMVUUodmFsdWUpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjMsNiArMTIzLDE1IEBAIFJlZlB0cjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVNb2R1bGVC
eXQKICAgICByZXR1cm4gc2VyaWFsaXplQnl0ZWNvZGUodm0sIHVubGlua2VkQ29kZUJsb2NrLCBz
b3VyY2UsIFNvdXJjZUNvZGVUeXBlOjpNb2R1bGVUeXBlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2Rl
LCBmZCwgZXJyb3IsIHsgfSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNPYmplY3QqIHRvR2xvYmFs
VGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAg
IGlmICghdmFsdWUgfHwgdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpOworICAgIGlmICh2YWx1ZS5pc09iamVjdCgpICYm
IGFzT2JqZWN0KHZhbHVlKS0+aXNHbG9iYWxPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KHZhbHVlKS0+Z2xvYmFsVGhpcygpOworICAgIHJldHVybiB2YWx1
ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworfQorCiBKU1ZhbHVlIGV2YWx1YXRlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSB0
aGlzVmFsdWUsIE5ha2VkUHRyPEV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTEzMSw5ICsxNDAsOCBAQCBKU1ZhbHVl
IGV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgUkVMRUFTRV9BU1NFUlQodm0u
YXRvbVN0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbVN0cmluZ1RhYmxlKCkp
OwogICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRUaHJlYWQo
KSk7CiAKLSAgICBpZiAoIXRoaXNWYWx1ZSB8fCB0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KSkKLSAgICAgICAgdGhpc1ZhbHVlID0gZ2xvYmFsT2JqZWN0OwotICAgIEpTT2JqZWN0KiB0aGlz
T2JqID0ganNDYXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzbG9wcHkoKSkpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdG9HbG9iYWxUaGlz
KGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKTsKKyAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGVQcm9ncmFtKHNv
dXJjZSwgZ2xvYmFsT2JqZWN0LCB0aGlzT2JqKTsKIAogICAgIGlmIChzY29wZS5leGNlcHRpb24o
KSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTIsNyArMzUyLDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGRhdGVQcm90b0Z1bmNUbwogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
VGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2Jq
ZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJEYXRlLnByb3RvdHlwZVtTeW1ib2wudG9QcmltaXRpdmVdIGV4cGVjdGVkIHx0aGlzfCB0
byBiZSBhbiBvYmplY3QuIik7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNP
YmplY3QqPih0aGlzVmFsdWUpOwpAQCAtODY2LDggKzg2Niw3IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihkYXRlUHJvdG9GdW5jR2UKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKLSAgICBhdXRvKiB0aGlzRGF0
ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CisgICAg
YXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKQEAg
LTg4Myw4ICs4ODIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZGF0ZVByb3RvRnVuY1Rv
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsK
LSAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgdGltZVZhbHVlID0gb2JqZWN0LT50b1ByaW1pdGl2ZShn
bG9iYWxPYmplY3QsIFByZWZlck51bWJlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTczLDcgKzczLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGVycm9yUHJv
dG9GdW5jVAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IC8vIDEuIExldCBPIGJlIHRoZSB0aGlzIHZhbHVlLgotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3Ry
aWN0KCkpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsK
IAogICAgIC8vIDIuIElmIFR5cGUoTykgaXMgbm90IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJyb3Ig
ZXhjZXB0aW9uLgogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgJKHJldmlzaW9uIDI3NzAyNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0NlbGw7CiAgICAgdXNp
bmcgRGlnaXQgPSBVQ1BVUmVnaXN0ZXI7CiAKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9y
dGFsIHwgT3ZlcnJpZGVzVG9UaGlzOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7
CiAgICAgZnJpZW5kIGNsYXNzIENhY2hlZEJpZ0ludDsKIAogICAgIERFQ0xBUkVfVklTSVRfQ0hJ
TERSRU47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCwyNiArMTY0LDYgQEAgSlNPYmpl
Y3QqIEpTVmFsdWU6OnRvT2JqZWN0U2xvd0Nhc2UoSlNHbAogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1KU1ZhbHVlIEpTVmFsdWU6OnRvVGhpc1Nsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKSBjb25zdAotewotICAgIEFTU0VSVCghaXNDZWxs
KCkpOwotCi0gICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCi0gICAgICAgIHJldHVybiAqdGhp
czsKLQotICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSkKLSAgICAgICAgcmV0dXJuIGNv
bnN0cnVjdE51bWJlcihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7Ci0gICAgaWYgKGlzVHJ1ZSgp
IHx8IGlzRmFsc2UoKSkKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRp
YXRlQm9vbGVhbihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7Ci0jaWYgVVNFKEJJR0lOVDMyKQot
ICAgIGlmIChpc0JpZ0ludDMyKCkpCi0gICAgICAgIHJldHVybiBCaWdJbnRPYmplY3Q6OmNyZWF0
ZShnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCwgKnRoaXMpOwotI2VuZGlmCi0KLSAg
ICBBU1NFUlQoaXNVbmRlZmluZWRPck51bGwoKSk7Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+
Z2xvYmFsVGhpcygpOwotfQotCiBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlw
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDcgKzMzMiw3IEBAIHB1
YmxpYzoKICAgICBib29sIHB1dEJ5SW5kZXgoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgSlNWYWx1ZSBnZXRQ
cm90b3R5cGUoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKLSAgICBKU1ZhbHVlIHRvVGhpcyhKU0ds
b2JhbE9iamVjdCosIEVDTUFNb2RlKSBjb25zdDsKKyAgICBKU09iamVjdCogdG9TbG9wcHlNb2Rl
VGhpcyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogCiAgICAgc3RhdGljIGJvb2wgZXF1YWwoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKICAgICBzdGF0aWMgYm9vbCBl
cXVhbFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CkBA
IC01MjIsNyArNTIyLDYgQEAgcHJpdmF0ZToKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1N0cmlu
ZyogdG9TdHJpbmdTbG93Q2FzZShKU0dsb2JhbE9iamVjdCosIGJvb2wgcmV0dXJuRW1wdHlTdHJp
bmdPbkVycm9yKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBXVEY6OlN0cmluZyB0b1dU
RlN0cmluZ1Nsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNPYmplY3QqIHRvT2JqZWN0U2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRvVGhpc1Nsb3dDYXNlKEpTR2xvYmFsT2Jq
ZWN0KiwgRUNNQU1vZGUpIGNvbnN0OwogCiAgICAgRW5jb2RlZFZhbHVlRGVzY3JpcHRvciB1Owog
fTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZUlubGluZXMuaAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtOTI5LDkgKzkyOSw5
IEBAIGlubGluZSBjb25zdCBDbGFzc0luZm8qIEpTVmFsdWU6OmNsYXNzSW4KICAgICByZXR1cm4g
aXNDZWxsKCkgPyBhc0NlbGwoKS0+Y2xhc3NJbmZvKHZtKSA6IG51bGxwdHI7CiB9CiAKLWlubGlu
ZSBKU1ZhbHVlIEpTVmFsdWU6OnRvVGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBF
Q01BTW9kZSBlY21hTW9kZSkgY29uc3QKK2lubGluZSBKU09iamVjdCogSlNWYWx1ZTo6dG9TbG9w
cHlNb2RlVGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewotICAgIHJl
dHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT5tZXRob2RUYWJsZShnZXRWTShnbG9iYWxPYmplY3Qp
KS0+dG9UaGlzKGFzQ2VsbCgpLCBnbG9iYWxPYmplY3QsIGVjbWFNb2RlKSA6IHRvVGhpc1Nsb3dD
YXNlKGdsb2JhbE9iamVjdCwgZWNtYU1vZGUpOworICAgIHJldHVybiBpc1VuZGVmaW5lZE9yTnVs
bCgpID8gZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCkgOiB0b09iamVjdChnbG9iYWxPYmplY3Qp
OwogfQogCiBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDI3NzAyNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNywxMyArMTM3LDYgQEAgYm9vbCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5QnlJbmRl
eChKU0NlbAogICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3Qt
PnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBp
ZGVudGlmaWVyKTsKIH0KIAotSlNWYWx1ZSBKU0NlbGw6OnRvVGhpcyhKU0NlbGwqIGNlbGwsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQotewotICAgIGlm
IChlY21hTW9kZS5pc1N0cmljdCgpKQotICAgICAgICByZXR1cm4gY2VsbDsKLSAgICByZXR1cm4g
Y2VsbC0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLX0KLQogSlNWYWx1ZSBKU0NlbGw6OnRvUHJp
bWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByZWZlcnJlZFByaW1pdGl2ZVR5
cGUgcHJlZmVycmVkVHlwZSkgY29uc3QKIHsKICAgICBpZiAoaXNTdHJpbmcoKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAyNzcwMjYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAt
MTg0LDggKzE4NCw2IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7
CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAotICAgIHN0YXRpYyBKU1ZhbHVlIHRv
VGhpcyhKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKTsKLQogICAgIHN0YXRpYyBi
b29sIGNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0eShjb25zdCBTdHJ1Y3R1cmUmKTsKICAgICBKU1Zh
bHVlIGZhc3RHZXRPd25Qcm9wZXJ0eShWTSYsIFN0cnVjdHVyZSYsIFByb3BlcnR5TmFtZSk7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzAwLDggKzcwMCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxG
dW5jTWFrZVQKIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNQcm90b0dldHRl
ciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
IHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlz
KGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRoaXNWYWx1ZS5nZXRQcm90b3R5cGUoZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLmdldFByb3RvdHlwZShnbG9i
YWxPYmplY3QpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNQcm90
b1NldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKQEAgLTcwOSw3ICs3MDgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZ2xvYmFs
RnVuY1Byb3RvCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3Ry
aWN0KCkpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIE9iamVjdFByb3RvQ2FsbGVkT25O
dWxsT3JVbmRlZmluZWRFcnJvcik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkwMCw3ICsxOTAw
LDcgQEAgYm9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlYwogICAgICAgICBy
ZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHNob3VsZFRocm93SWZDYW50U2V0
LCAiQ2Fubm90IHNldCBwcm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlwZSBvYmplY3QiX3Mp
OwogICAgIH0KIAotICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPnRvVGhpcyh0aGlzLCBnbG9i
YWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkgPT0gdGhpcyk7CisgICAgQVNTRVJUKCFpbmhl
cml0czxKU1Njb3BlPih2bSkpOwogCiAgICAgaWYgKHRoaXMtPmdldFByb3RvdHlwZURpcmVjdCh2
bSkgPT0gcHJvdG90eXBlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI1NTksMTEgKzI1NTks
NiBAQCBKU1N0cmluZyogSlNPYmplY3Q6OnRvU3RyaW5nKEpTR2xvYmFsT2JqCiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBwcmltaXRpdmUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KSk7CiB9
CiAKLUpTVmFsdWUgSlNPYmplY3Q6OnRvVGhpcyhKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiwgRUNNQU1vZGUpCi17Ci0gICAgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwotfQot
CiB2b2lkIEpTT2JqZWN0OjpzZWFsKFZNJiB2bSkKIHsKICAgICBpZiAoaXNTZWFsZWQodm0pKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAy
NzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02ODcsOCArNjg3LDYgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklW
QVRFIGRvdWJsZSB0b051bWJlcihKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIEpTU3RyaW5nKiB0b1N0cmluZyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogCi0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEpTR2xv
YmFsT2JqZWN0KiwgRUNNQU1vZGUpOwotCiAgICAgLy8gVGhpcyBnZXQgZnVuY3Rpb24gb25seSBs
b29rcyBhdCB0aGUgcHJvcGVydHkgbWFwLgogICAgIEpTVmFsdWUgZ2V0RGlyZWN0KFZNJiB2bSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAkocmV2aXNpb24gMjc3MDI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQxNywxMSArNDE3LDQgQEAgU3ltYm9sVGFibGUqIEpTU2NvcGU6OnN5bWJvbFRhYmxlKFZNJiB2
bQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1KU1ZhbHVlIEpTU2NvcGU6OnRvVGhpcyhKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKLXsK
LSAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpOwotfQotCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgJ
KHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Nv
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCB1c2luZyBURFpFbnZpcm9ubWVu
dCA9IEhhc2hTZXQ8UmVmUHRyPFVuCiBjbGFzcyBKU1Njb3BlIDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgewogcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OwotICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IE92ZXJyaWRlc1RvVGhpczsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIHZvaWQgc3Vic3BhY2VGb3IoVk0m
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkocmV2
aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTAsMTMgKzQxMCw2IEBAIEpTT2JqZWN0KiBKU1N0cmlu
Zzo6dG9PYmplY3QoSlNHbG9iYWxPYmoKICAgICByZXR1cm4gU3RyaW5nT2JqZWN0OjpjcmVhdGUo
Z2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIGNvbnN0X2Nhc3Q8SlNTdHJpbmcqPih0
aGlzKSk7CiB9CiAKLUpTVmFsdWUgSlNTdHJpbmc6OnRvVGhpcyhKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQotewotICAgIGlmIChl
Y21hTW9kZS5pc1N0cmljdCgpKQotICAgICAgICByZXR1cm4gY2VsbDsKLSAgICByZXR1cm4gU3Ry
aW5nT2JqZWN0OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIGFzU3Ry
aW5nKGNlbGwpKTsKLX0KLQogYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlEZXNjcmlw
dG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAg
IC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyOTU2
CiAgICAgLy8gRG8gd2UgcmVhbGx5IG5lZWQgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5
SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybz8KICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjk1OAotICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgT3ZlcnJpZGVz
VG9UaGlzOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVy
Y2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBT
dHJ1Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVz
dHJ1Y3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZGVzdHJveShK
U0NlbGwqIGNlbGwpCkBAIC0yMzcsOCArMjM3LDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi0gICAgc3RhdGljIEpTVmFs
dWUgdG9UaGlzKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUpOwotCiAgICAgU3Ry
aW5nVmlldyB1bnNhZmVWaWV3KEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKICAgICBmcmllbmQg
SlNTdHJpbmcqIGpzU3RyaW5nKFZNJiwgY29uc3QgU3RyaW5nJik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsx
MDcsOCBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIC8vIEVuZCBlbnZpcm9ubWVudCBy
ZWNvcmQgdHlwZXMuCiAgICAgV2l0aFNjb3BlVHlwZSwKICAgICAvLyBFbmQgSlNTY29wZSB0eXBl
cy4KKyAgICBGaXJzdEpTU2NvcGVUeXBlID0gR2xvYmFsT2JqZWN0VHlwZSwKKyAgICBMYXN0SlNT
Y29wZVR5cGUgPSBXaXRoU2NvcGVUeXBlLAogCiAgICAgTW9kdWxlTmFtZXNwYWNlT2JqZWN0VHlw
ZSwKICAgICBSZWdFeHBPYmplY3RUeXBlLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZUluZm8uaAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw2
IEBAIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgTWFzcXVlcmFkZXNBc1UKIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDEgPDwgMTsKIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgT3ZlcnJpZGVzR2V0Q2FsbERhdGEgPSAxIDw8IDI7IC8v
IE5lZWQgdGhpcyBmbGFnIGlmIHlvdSBpbXBsZW1lbnQgW1tDYWxsYWJsZV1dIGludGVyZmFjZSwg
d2hpY2ggbWVhbnMgb3ZlcnJpZGluZyBnZXRDYWxsRGF0YS4gVGhlIG9iamVjdCBtYXkgbm90IGJl
IGNhbGxhYmxlIHNpbmNlIGdldENhbGxEYXRhIGNhbiBzYXkgaXQgaXMgbm90IGNhbGxhYmxlLgog
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgPSAx
IDw8IDM7Ci1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE92ZXJyaWRlc1RvVGhpcyA9IDEgPDwg
NDsgLy8gSWYgdGhpcyBpcyBmYWxzZSB0aGVuIHRoaXMgcmV0dXJucyBzb21ldGhpbmcgb3RoZXIg
dGhhbiAndGhpcycuIE5vbi1vYmplY3QgY2VsbHMgdGhhdCBhcmUgdmlzaWJsZSB0byBKUyBoYXZl
IHRoaXMgc2V0IGFzIGRvIHNvbWUgZXhvdGljIG9iamVjdHMuCiBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIEhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSAxIDw8IDU7CiBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIFR5cGVJbmZvUGVyQ2VsbEJpdCA9IDEgPDwgNzsgLy8gVW5saWtlIG90aGVyIGlu
bGluZSBmbGFncywgdGhpcyB3aWxsIG9ubHkgYmUgc2V0IG9uIHRoZSBjZWxsIGl0c2VsZiBhbmQg
d2lsbCBub3QgYmUgc2V0IG9uIHRoZSBTdHJ1Y3R1cmUuCiAKQEAgLTk4LDcgKzk3LDYgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBib29sIG92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdChJbmxpbmVU
eXBlRmxhZ3MgZmxhZ3MpIHsgcmV0dXJuIGZsYWdzICYgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90OyB9CiAgICAgc3RhdGljIGJvb2wgaGFzU3RhdGljUHJvcGVydHlUYWJsZShJbmxpbmVUeXBl
RmxhZ3MgZmxhZ3MpIHsgcmV0dXJuIGZsYWdzICYgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsgfQog
ICAgIHN0YXRpYyBib29sIHBlckNlbGxCaXQoSW5saW5lVHlwZUZsYWdzIGZsYWdzKSB7IHJldHVy
biBmbGFncyAmIFR5cGVJbmZvUGVyQ2VsbEJpdDsgfQotICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlz
KCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMTxPdmVycmlkZXNUb1RoaXM+KCk7IH0KICAg
ICBib29sIHN0cnVjdHVyZUlzSW1tb3J0YWwoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3My
PFN0cnVjdHVyZUlzSW1tb3J0YWw+KCk7IH0KICAgICBib29sIG92ZXJyaWRlc0dldE93blByb3Bl
cnR5TmFtZXMoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyPE92ZXJyaWRlc0dldE93blBy
b3BlcnR5TmFtZXM+KCk7IH0KICAgICBib29sIG92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9wZXJ0
eU5hbWVzKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMjxPdmVycmlkZXNHZXRPd25TcGVj
aWFsUHJvcGVydHlOYW1lcz4oKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MSw3ICs4MSw3IEBAIE9iamVjdFByb3RvdHlwZSogT2JqZWN0UHJvdG90eXBlOjpj
cmVhdGUKIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuY1ZhbHVlT2Ys
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhn
bG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTT2JqZWN0KiB2YWx1ZU9iaiA9IHRoaXNW
YWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdmFsdWVPYmop
KQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTkzLDggKzkzLDcgQEAgYm9v
bCBvYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eShKU0dsbwogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBiYXNlLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzdHJpY3QoKSk7Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUu
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGJhc2Uu
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhj
ZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNSw4ICsxMzQsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jCiAgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KGZhbHNlKSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKLSAgICBKU09iamVj
dCogdGhpc09iaiA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmpl
Y3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09i
aik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRK
U1ZhbHVlKCk7CkBAIC0xNTksNyArMTU3LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9i
amVjdFByb3RvRnVuYwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlz
T2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAg
SlNWYWx1ZSBnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwpAQCAtMTg2LDcgKzE4NCw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmMKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFs
T2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgc2V0ID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgxKTsKQEAgLTIxMyw3ICsyMTEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2Jq
ZWN0UHJvdG9GdW5jCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9k
ZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBh
dXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShn
bG9iYWxPYmplY3QpOwpAQCAtMjQzLDcgKzI0MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihvYmplY3RQcm90b0Z1bmMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRo
aXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCog
dGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5
S2V5KGdsb2JhbE9iamVjdCk7CkBAIC0yNzYsNyArMjc0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKG9iamVjdFByb3RvRnVuYwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0
aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3Qp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgc2NvcGUucmVsZWFzZSgpOwpAQCAtMjk3LDcgKzI5NSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihvYmplY3RQcm90b0Z1bmMKICAgICAvLyAyLiBJbnZva2UoViwgInRvU3RyaW5nIikK
IAogICAgIC8vIExldCBPIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb09iamVjdCBwYXNzaW5n
IHRoZSB0aGlzIHZhbHVlIGFzIHRoZSBhcmd1bWVudC4KLSAgICBKU09iamVjdCogb2JqZWN0ID0g
dGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICAvLyBMZXQgdG9TdHJpbmcgYmUgdGhlIE8uW1tHZXRdXSgidG9T
dHJpbmciLCBWKQpAQCAtMzk2LDggKzM5NCw3IEBAIEpTU3RyaW5nKiBvYmplY3RQcm90b3R5cGVU
b1N0cmluZyhKU0dsb2IKIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVu
Y1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQogewotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUob2JqZWN0UHJvdG90eXBlVG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdFByb3RvdHlwZVRvU3Ry
aW5nKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94
eU9iamVjdC5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3h5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI1LDcgKzUyNSw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihwZXJmb3JtUHJveHlDYWwKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwotICAgIGFyZ3Vt
ZW50cy5hcHBlbmQoY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBF
Q01BTW9kZTo6c3RyaWN0KCkpKTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJnQXJyYXkpOwogICAgIEFTU0VSVCgh
YXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIGFwcGx5TWV0aG9kLCBjYWxsRGF0
YSwgaGFuZGxlciwgYXJndW1lbnRzKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTIsNyArMjEyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4
cFByb3RvRnVuYwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0
cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbC5oCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN5bWJvbCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogcHVi
bGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJ
bW1vcnRhbCB8IE92ZXJyaWRlc1RvVGhpczsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9y
dGFsOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMjc3MDI2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjEtMDUtMDUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hA
Z21haWwuY29tPgorCisgICAgICAgIFtKU0NdIEFib2xpc2ggdXNpbmcgcmVzb2x2ZWQgc2NvcGUg
YXMgfHRoaXN8IHZhbHVlIHdoZW4gY2FsbGluZyBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTM5NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURMT3BlcmF0aW9uPEpTRE9NV2luZG93Pjo6
Y2FzdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SURMT3BlcmF0aW9uPEpTRXZlbnRUYXJnZXQ+OjpjYWxsKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVy
YXRlSW1wbGVtZW50YXRpb24pOgorCiAyMDIxLTA1LTA1ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3Igc3BlY2lmeWlu
ZyBhIGNvbG9yIHNwYWNlIGZvciAyRCBjYW52YXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTgwLDcgKzU4MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc0RPTVcKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNET01XaW5kb3cqIElETE9wZXJhdGlv
bjxKU0RPTVdpbmRvdz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSYgY2FsbEZyYW1lKQogewotICAgIHJldHVybiB0b0pTRE9NV2luZG93KGxleGlj
YWxHbG9iYWxPYmplY3Qudm0oKSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpFQ01BTW9kZTo6c2xvcHB5KCkpKTsKKyAgICByZXR1cm4gdG9K
U0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGNhbGxGcmFtZS50aGlzVmFsdWUo
KS50b1Nsb3BweU1vZGVUaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fb3BlbkRhdGFiYXNl
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0
b20uaAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudFRhcmdldEN1c3RvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1Ymxp
YzoKICAgICAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICAgICAgYXV0byB0aGlzT2JqZWN0ID0ganNFdmVudFRhcmdldENhc3Qodm0sIGNhbGxGcmFtZS50
aGlzVmFsdWUoKS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6RUNNQU1vZGU6OnNs
b3BweSgpKSk7CisgICAgICAgIGF1dG8gdGhpc09iamVjdCA9IGpzRXZlbnRUYXJnZXRDYXN0KHZt
LCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9TbG9wcHlNb2RlVGhpcygmbGV4aWNhbEdsb2JhbE9i
amVjdCkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCAiRXZlbnRUYXJnZXQiLCBvcGVyYXRpb25OYW1lKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI3
NzAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCSh3b3JraW5nIGNvcHkpCkBAIC00ODI1LDcgKzQ4MjUsNyBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7XG4iKTsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGF1dG8gZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoZGVjb2RlZFRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKVxuIik7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWUo
JmxleGljYWxHbG9iYWxPYmplY3QpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnNsb3BweSgpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlKCZsZXhpY2FsR2xvYmFsT2JqZWN0KS50b1Ns
b3BweU1vZGVUaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTtcbiIpOwogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICRjYXN0aW5nRnVuY3Rpb24odm0sIGRlY29kZWRU
aGlzVmFsdWUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7
CiAgICAgICAgIH0gZWxzZSB7CkBAIC00ODQyLDcgKzQ4NDIsNyBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAjIEZJWE1FOiBNYWtlIGNvbnNpc3RlbnQgSURMQXR0cmlidXRl
PD46OmNhc3QgYW5kIElETE9wZXJhdGlvbjw+OjpjYXN0IGluIGNhc2Ugb2YgQ3VzdG9tUHJveHlU
b0pTT2JqZWN0LgogICAgICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjM3NTgKICAgICAgICAgbXkgJGNhc3RpbmdGdW5jdGlvbiA9ICRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVByb3h5VG9KU09iamVjdH0gPyAidG8ke2NsYXNzTmFt
ZX0iIDogR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSk7Ci0gICAgICAg
IG15ICR0aGlzVmFsdWUgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21Q
cm94eVRvSlNPYmplY3R9ID8gImNhbGxGcmFtZS50aGlzVmFsdWUoKS50b1RoaXMoJmxleGljYWxH
bG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkiIDogImNhbGxGcmFtZS50aGlzVmFsdWUo
KSI7CisgICAgICAgIG15ICR0aGlzVmFsdWUgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDdXN0b21Qcm94eVRvSlNPYmplY3R9ID8gImNhbGxGcmFtZS50aGlzVmFsdWUoKS50b1Ns
b3BweU1vZGVUaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSIgOiAiY2FsbEZyYW1lLnRoaXNWYWx1
ZSgpIjsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ0ZW1wbGF0ZTw+IGlubGluZSAke2Ns
YXNzTmFtZX0qIElETE9wZXJhdGlvbjwke2NsYXNzTmFtZX0+OjpjYXN0KEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSlcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICByZXR1cm4gJGNhc3RpbmdGdW5jdGlvbihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSwgJHRoaXNWYWx1ZSk7XG4iKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzAyNikKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIx
LTA1LTA1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAg
ICBbSlNDXSBBYm9saXNoIHVzaW5nIHJlc29sdmVkIHNjb3BlIGFzIHx0aGlzfCB2YWx1ZSB3aGVu
IGNhbGxpbmcgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjUzOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGpzL29iamVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24tZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9vYmplY3QtbGl0ZXJhbC1zaG9y
dGhhbmQtY29uc3RydWN0aW9uLmpzOgorCiAyMDIxLTA1LTA1ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3Igc3BlY2lm
eWluZyBhIGNvbG9yIHNwYWNlIGZvciAyRCBjYW52YXMKSW5kZXg6IExheW91dFRlc3RzL2pzL29i
amVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2pzL29iamVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rp
b24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzcwMjYpCisrKyBMYXlvdXRUZXN0cy9qcy9vYmpl
Y3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNjMsOCArNjMsMTAgQEAgUEFTUyAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoewogUEFTUyAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioe3NldCA0Mih2
YWx1ZSl7fX0sICc0MicpLnNldCBpcyB0cnVlCiBQQVNTIHRoaXMuX19wcm90b19fID0gW10gdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90IHNldCBwcm90b3R5cGUgb2YgaW1tdXRhYmxl
IHByb3RvdHlwZSBvYmplY3QuCiBQQVNTICh7X19wcm90b19fOiB0aGlzLl9fcHJvdG9fX30pIGlu
c3RhbmNlb2YgQXJyYXkgaXMgZmFsc2UKLVBBU1MgX19wcm90b19fID0gW10gdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51bGwg
b3IgdW5kZWZpbmVkLgotUEFTUyAoe19fcHJvdG9fXzogX19wcm90b19ffSkgaW5zdGFuY2VvZiBB
cnJheSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVj
dCAoZXZhbHVhdGluZyAnX19wcm90b19fJykuCitQQVNTIF9fcHJvdG9fXyA9IFtdIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90
b3R5cGUgb2JqZWN0LgorUEFTUyAoe19fcHJvdG9fXzogX19wcm90b19ffSkgaW5zdGFuY2VvZiBB
cnJheSBpcyBmYWxzZQorUEFTUyBfX3Byb3RvX18gaXMgT2JqZWN0LmdldFByb3RvdHlwZU9mKGds
b2JhbFRoaXMpCitQQVNTIF9fcHJvdG9fXyA9IF9fcHJvdG9fXyBpcyBPYmplY3QuZ2V0UHJvdG90
eXBlT2YoZ2xvYmFsVGhpcykKIFN5bnRheEVycm9ycwogUEFTUyAoe2JyZWFrfSkgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICdicmVhaycgYXMgYSBz
aG9ydGhhbmQgcHJvcGVydHkgbmFtZS4uCiBQQVNTICh7Y2FzZX0pIHRocmV3IGV4Y2VwdGlvbiBT
eW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAnY2FzZScgYXMgYSBzaG9ydGhhbmQg
cHJvcGVydHkgbmFtZS4uCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvb2JqZWN0
LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlv
bi5qcwkocmV2aXNpb24gMjc3MDI2KQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL29i
amVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24uanMJKHdvcmtpbmcgY29weSkKQEAg
LTExMiw4ICsxMTIsMTIgQEAgc2hvdWxkQmVUcnVlKCIhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
cwogLy8gX19wcm90b19fIHNob3J0aGFuZCBzaG91bGQgbm90IG1vZGlmeSB0aGUgcHJvdG90eXBl
Lgogc2hvdWxkVGhyb3coInRoaXMuX19wcm90b19fID0gW10iKTsKIHNob3VsZEJlRmFsc2UoIih7
X19wcm90b19fOiB0aGlzLl9fcHJvdG9fX30pIGluc3RhbmNlb2YgQXJyYXkiKTsKLXNob3VsZFRo
cm93KCJfX3Byb3RvX18gPSBbXSIsICciVHlwZUVycm9yOiBPYmplY3QucHJvdG90eXBlLl9fcHJv
dG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQiJyk7Ci1zaG91bGRUaHJvdygiKHtfX3By
b3RvX186IF9fcHJvdG9fX30pIGluc3RhbmNlb2YgQXJyYXkiLCAnIlR5cGVFcnJvcjogdW5kZWZp
bmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgXCdfX3Byb3RvX19cJykiJyk7CisKKy8v
IF9fcHJvdG9fXyBnZXR0ZXIgLyBzZXR0ZXIgY2FsbGVkIG9uIGdsb2JhbCBvYmplY3QKK3Nob3Vs
ZFRocm93KCJfX3Byb3RvX18gPSBbXSIsICciVHlwZUVycm9yOiBDYW5ub3Qgc2V0IHByb3RvdHlw
ZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdCInKTsKK3Nob3VsZEJlRmFsc2UoIih7X19w
cm90b19fOiBfX3Byb3RvX199KSBpbnN0YW5jZW9mIEFycmF5Iik7CitzaG91bGRCZSgiX19wcm90
b19fIiwgIk9iamVjdC5nZXRQcm90b3R5cGVPZihnbG9iYWxUaGlzKSIpOworc2hvdWxkQmUoIl9f
cHJvdG9fXyA9IF9fcHJvdG9fXyIsICJPYmplY3QuZ2V0UHJvdG90eXBlT2YoZ2xvYmFsVGhpcyki
KTsKIAogLy8gS2V5d29yZHMgLSBTeW50YXggRXJyb3JzCiBkZWJ1ZygiU3ludGF4RXJyb3JzIik7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427784</attachid>
            <date>2021-05-05 11:29:48 -0700</date>
            <delta_ts>2021-05-05 20:00:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225397-20210505212945.patch</filename>
            <type>text/plain</type>
            <size>119825</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzcwMjYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTA1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBBYm9saXNoIHVzaW5nIHJlc29sdmVkIHNjb3Bl
IGFzIHx0aGlzfCB2YWx1ZSB3aGVuIGNhbGxpbmcgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9iaWctaW50LXNwZWMtdG8t
dGhpcy5qczoKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1zdHJpY3Qtc3BlYy10by10aGlzLmpz
OgorICAgICAgICAqIHN0cmVzcy92YXJpYWJsZS1uYW1lZC1ldmFsLmpzOiBBZGRlZC4KKwogMjAy
MS0wNS0wMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHN5
bnRheCBlcnJvciBtZXNzYWdlIGZvciBBVVRPUExVU1BMVVMgdG9rZW4uCkluZGV4OiBKU1Rlc3Rz
L3N0cmVzcy9iaWctaW50LXNwZWMtdG8tdGhpcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0
cmVzcy9iaWctaW50LXNwZWMtdG8tdGhpcy5qcwkocmV2aXNpb24gMjc3MDI2KQorKysgSlNUZXN0
cy9zdHJlc3MvYmlnLWludC1zcGVjLXRvLXRoaXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSwzIEBACi0vL0Agc2tpcCBpZiBub3QgJGppdFRlc3RzCi0vL0AgcnVuRGVmYXVsdCgiLS11c2VD
b25jdXJyZW50SklUPWZhbHNlIikKLQogZnVuY3Rpb24gYXNzZXJ0KGEpIHsKICAgICBpZiAoIWEp
CiAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIpOwpAQCAtMTgsNiArMTUs
MyBAQCBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDA7IGkrKykgewogICAgIGFzc2VydChmb28uYXBwbHkoMzAwKSA9PT0gIm9iamVjdCIp
OwogfQotCi1hc3NlcnQobnVtYmVyT2ZERkdDb21waWxlcyhmb28pID09PSAxKTsKLQpJbmRleDog
SlNUZXN0cy9zdHJlc3MvYmlnLWludC1zdHJpY3Qtc3BlYy10by10aGlzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEpTVGVzdHMvc3RyZXNzL2JpZy1pbnQtc3RyaWN0LXNwZWMtdG8tdGhpcy5qcwkocmV2aXNp
b24gMjc3MDI2KQorKysgSlNUZXN0cy9zdHJlc3MvYmlnLWludC1zdHJpY3Qtc3BlYy10by10aGlz
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMyBAQAotLy9AIHJ1bkRlZmF1bHQoIi0tdXNl
Q29uY3VycmVudEpJVD1mYWxzZSIpCi0KIGZ1bmN0aW9uIGFzc2VydChhKSB7CiAgICAgaWYgKCFh
KQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKTsKQEAgLTE4LDYgKzE2
LDMgQEAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CiBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDAwOyBpKyspIHsKICAgICBhc3NlcnQoZm9vLmFwcGx5KDMwMCkgPT09ICJudW1iZXIi
KTsKIH0KLQotYXNzZXJ0KG51bWJlck9mREZHQ29tcGlsZXMoZm9vKSA+IDEpOwotCkluZGV4OiBK
U1Rlc3RzL3N0cmVzcy92YXJpYWJsZS1uYW1lZC1ldmFsLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVz
dHMvc3RyZXNzL3ZhcmlhYmxlLW5hbWVkLWV2YWwuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0
cy9zdHJlc3MvdmFyaWFibGUtbmFtZWQtZXZhbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE5IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgQmFkIHZhbHVlOiAk
e2FjdHVhbH0uYCk7Cit9CisKK2xldCBldmFsOworCisoZnVuY3Rpb24gdGhpc1ZhbHVlKCkgewor
ICAgIGV2YWwgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH07CisgICAgc2hvdWxkQmUoZXZh
bCgpLCBnbG9iYWxUaGlzKTsKKworICAgIGV2YWwgPSBmdW5jdGlvbigpIHsgInVzZSBzdHJpY3Qi
OyByZXR1cm4gdGhpczsgfTsKKyAgICBzaG91bGRCZShldmFsKCksIHVuZGVmaW5lZCk7CisKKyAg
ICBjb25zdCBiaW5kaW5nT2JqZWN0ID0geyBldmFsIH07CisgICAgd2l0aCAoYmluZGluZ09iamVj
dCkgeworICAgICAgICBzaG91bGRCZShldmFsKCksIGJpbmRpbmdPYmplY3QpOworICAgIH0KK30p
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzAyNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NDEgQEAKKzIwMjEtMDUtMDUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29t
PgorCisgICAgICAgIFtKU0NdIEFib2xpc2ggdXNpbmcgcmVzb2x2ZWQgc2NvcGUgYXMgfHRoaXN8
IHZhbHVlIHdoZW4gY2FsbGluZyBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTM5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaDoKKyAgICAg
ICAgKEpTQzo6QVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbEltcGwpOgorICAgICAgICAqIEFQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6Y2FsbEltcGwpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgor
ICAgICAgICAoSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChK
U0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNo
ZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1RvVGhpc1N0YXR1cy5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmg6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRHZXRGdW5jdGlvbkZyb21TY29wZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpoYXNQYXJlbnRXaXRoU2NvcGUgY29uc3QpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFRvVGhpcyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgIChKU0M6OlRhZ2dlZFRlbXBsYXRlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxs
RnJhbWU6OnRoaXNWYWx1ZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKEpTQzo6REZHOjpp
c1RvVGhpc0FuSWRlbnRpdHkpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sp
OgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpm
b2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6
OkZpeHVwUGhhc2U6OmZpeHVwVG9UaGlzKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAg
ICAgICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNFQ01BTW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6ZWNtYU1vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAg
ICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVj
dXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0VGhpc1ZhbHVlRm9yQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1RoaXMpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwv
RlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlVG9UaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZUdldFRoaXNWYWx1ZUZvckNhbGwpOgorICAgICAgICAqIGdlbmVyYXRvci9EU0wucmI6Cisg
ICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKElu
c3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1lKToK
KyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGls
ZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29k
ZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3RoaXNfdmFsdWVfZm9yX2Nh
bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fdGhpcyk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b190aGlz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6Cisg
ICAgICAgIChKU0M6OmNyZWF0ZUFycmF5SXRlcmF0b3JPYmplY3QpOgorICAgICAgICAqIHJ1bnRp
bWUvQ2xhc3NJbmZvLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OnRvR2xvYmFsVGhpcyk6CisgICAg
ICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1
bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1RoaXNTbG93Q2Fz
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAg
ICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVl
Ojp0b1Nsb3BweU1vZGVUaGlzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UaGlz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6dG9UaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ2Vs
bC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5
Y2xlQ2hlY2spOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dG9UaGlzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6dG9UaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTU2NvcGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNTdHJpbmc6OnRvVGhpcyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9K
U1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGlt
ZS9KU1R5cGVJbmZvLmg6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpwZXJDZWxsQml0KToKKyAg
ICAgICAgKEpTQzo6VHlwZUluZm86Om92ZXJyaWRlc1RvVGhpcyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b3R5cGVIYXNP
d25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04p
OgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sLmg6CisKIDIwMjEtMDUtMDMgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBzeW50YXggZXJyb3IgbWVzc2FnZSBm
b3IgQVVUT1BMVVNQTFVTIHRva2VuLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01ODMsNyArNTgzLDYgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQQogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgK
ICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5o
Ci0gICAgYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmgKICAgICBieXRlY29kZS9UeXBlTG9jYXRpb24u
aAogICAgIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKICAgICBieXRlY29kZS9Vbmxpbmtl
ZEV2YWxDb2RlQmxvY2suaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNp
b24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yODEsNyArMjgxLDYgQEAgYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5n
V2F0Y2hwb2ludAogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCiBieXRlY29kZS9TdHVi
SW5mb1N1bW1hcnkuY3BwCiBieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCi1ieXRlY29kZS9Ub1Ro
aXNTdGF0dXMuY3BwCiBieXRlY29kZS9UcmFja2VkUmVmZXJlbmNlcy5jcHAKIGJ5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3Iu
Y3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVu
Y3Rpb24uaAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9B
UElDYWxsYmFja0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgRW5j
b2RlZEpTVmFsdWUgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbAogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVm
KGdsb2JhbE9iamVjdCk7CiAgICAgSlNPYmplY3RSZWYgZnVuY3Rpb25SZWYgPSB0b1JlZihjYWxs
RnJhbWUtPmpzQ2FsbGVlKCkpOwotICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihq
c0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpKTsKKyAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0g
dG9SZWYoY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Nsb3BweU1vZGVUaGlzKGdsb2JhbE9iamVj
dCkpOwogCiAgICAgaW50IGFyZ3VtZW50Q291bnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBWZWN0b3I8SlNWYWx1ZVJlZiwgMTY+IGFyZ3VtZW50
czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
NTUwLDcgKzU1MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50PjoK
IAogICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZ2xvYmFsT2JqZWN0KTsKICAgICBK
U09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Ci0g
ICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgp
KSkpOworICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvU2xvcHB5TW9kZVRoaXMoZ2xvYmFsT2JqZWN0KSk7CiAgICAgCiAgICAgZm9yIChK
U0NsYXNzUmVmIGpzQ2xhc3MgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Kj4odG9K
UyhmdW5jdGlvblJlZikpLT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+
cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFj
ayBjYWxsQXNGdW5jdGlvbiA9IGpzQ2xhc3MtPmNhbGxBc0Z1bmN0aW9uKSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCShyZXZpc2lvbiAyNzcwMjYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE5MSw3ICsxOTEsNyBAQCBKU09iamVjdFJlZiBKU0NvbnRleHRHZXRHbG9iYWxP
YmplY3QoSlNDCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hv
bGRlciBsb2NrZXIodm0pOwogCi0gICAgcmV0dXJuIHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGds
b2JhbE9iamVjdC0+bWV0aG9kVGFibGUodm0pLT50b1RoaXMoZ2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpKTsKKyAgICByZXR1cm4gdG9SZWYoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxUaGlzKCkpOwogfQogCiBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHZXRH
cm91cChKU0NvbnRleHRSZWYgY3R4KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsNyArMjY1
LDYgQEAKIAkJMEYyQzYzQzIxRTY2NEE1QzAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNDMTFFNjY0
QTVBMDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCAqLzsgfTsKIAkJMEYyQzYzQzQxRTY5RUY5
NDAwQzEzODM5IC8qIEIzTWVtb3J5VmFsdWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjNDMzFFNjlFRjkyMDBDMTM4MzkgLyogQjNN
ZW1vcnlWYWx1ZUlubGluZXMuaCAqLzsgfTsKIAkJMEYyRDREREUxOTgzMkQzNDAwN0Q0QjE5IC8q
IERlYnVnZ2VyU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEYyRDRERTkxOTgz
MkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRDRERTYxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0
YXR1cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGMkQ0REVBMTk4MzJEQUMwMDdENEIxOSAvKiBUeXBlTG9jYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0REU3MTk4MzJEQUMwMDdENEIx
OSAvKiBUeXBlTG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjJENERFQzE5ODMyREM0MDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERF
MDE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyRDRERjAxOTgzMkRENjAwN0Q0QjE5
IC8qIFR5cGVTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMkQ0REU0MTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI1MjMsOCArMjUyMiw2IEBACiAJ
CTBGMkQ0REUwMTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVHlwZVByb2ZpbGVyTG9nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MkQ0REUzMTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFR5cGVTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJENERFNDE5ODMy
RDkxMDA3RDRCMTkgLyogVHlwZVNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlU2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGMkQ0REU1MTk4MzJEQUMwMDdENEIxOSAvKiBUb1Ro
aXNTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVG9UaGlz
U3RhdHVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYyRDRERTYxOTgzMkRB
QzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUb1RoaXNTdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDRE
RTcxOTgzMkRBQzAwN0Q0QjE5IC8qIFR5cGVMb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUeXBlTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYyREQ4MEMxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhh
c2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQXJndW1lbnRz
RWxpbWluYXRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25Q
aGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkREODBEMUFCM0Q4QkUw
MEJCQjhFOCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuaDsgcGF0aCA9
IGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC04NjY0LDggKzg2NjEsNiBAQAogCQkJCTBGNEEzOEY3MUM4RTEzREYwMDE5MDMx
OCAvKiBTdXBlclNhbXBsZXIuY3BwICovLAogCQkJCTBGNEEzOEY4MUM4RTEzREYwMDE5MDMxOCAv
KiBTdXBlclNhbXBsZXIuaCAqLywKIAkJCQkwRjQ0QTdBODIwQkY2ODVFMDAyMkIxNzEgLyogVGVy
bWluYXRlZENvZGVPcmlnaW4uaCAqLywKLQkJCQkwRjJENERFNTE5ODMyREFDMDA3RDRCMTkgLyog
VG9UaGlzU3RhdHVzLmNwcCAqLywKLQkJCQkwRjJENERFNjE5ODMyREFDMDA3RDRCMTkgLyogVG9U
aGlzU3RhdHVzLmggKi8sCiAJCQkJMEY5NTJBQkExQjQ4N0E3NzAwQzM2N0M1IC8qIFRyYWNrZWRS
ZWZlcmVuY2VzLmNwcCAqLywKIAkJCQkwRjk1MkFCQjFCNDg3QTc3MDBDMzY3QzUgLyogVHJhY2tl
ZFJlZmVyZW5jZXMuaCAqLywKIAkJCQkwRjJENERFNzE5ODMyREFDMDA3RDRCMTkgLyogVHlwZUxv
Y2F0aW9uLmggKi8sCkBAIC05NDUzLDcgKzk0NDgsNiBAQAogCQkJCUJDMThDNDVFMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBDTG9vcFN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MxRUFGMDE3OTg3
QUI2MDAyOTlEQjIgLyogQ0xvb3BTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2
OUEwNzk3MEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAotCQkJ
CUZFRjVCNDI5MjYyOEI1MjQwMDE2RTc3NiAvKiBKU1NldElubGluZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOEY5NDQxMTY2NzYzMzIwMEQ2MTk3MSAvKiBDb2RlQmxvY2tIYXNoLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkM5N0YzNDE4MjAyMEQ3MDAyQzlCMjYgLyogQ29kZUJsb2NrSmV0dGlz
b25pbmdXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMxNDE3RDQzMjZDMDBD
QTJDNDAgLyogQ29kZUJsb2NrU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTk2NTIsNyArOTY0Niw2
IEBACiAJCQkJMEZEODJFNTcxNDFEQUYxMDAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkQ4QTMyNjE3RDUxRjU3MDBDQTJDNDAgLyogREZHT1NSRW50cnlwb2lu
dENyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5NzZBMTQ2OEE2RjcwMENG
MjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKLQkJCQlGRUY1QjQyNzI2MjhBQkQ5
MDAxNkU3NzYgLyogSlNXZWFrTWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVC
RUMxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MDI1QUExNzE0QjBGQzAwMzgyQzBFIC8qIERGR09TUkV4
aXRDb21waWxlckNvbW1vbi5oIGluIEhlYWRlcnMgKi8sCkBAIC05NzQ3LDYgKzk3NDAsNyBAQAog
CQkJCTE0NzM0MUQyMURDMDJFMkUwMEFBMjlCQSAvKiBFdmFsRXhlY3V0YWJsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkUxQzBGRkQxQjE5M0U5ODAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkU2MDI5RDkxRDZFMUU0RjAwMzAyMDREIC8qIEV4Y2VwdGlvbkV2ZW50
TG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUZFRjVCNDMwMjYyQTMzOEIwMDE2RTc3NiAv
KiBFeGNlcHRpb25FeHBlY3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMkRFMTAxOTc5
RDVGRDAwMDZGRjRFIC8qIEV4Y2VwdGlvbkZ1enouaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
NDAwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBFeGNlcHRpb25IZWxwZXJzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRTY0OTEzNzFENzhGMDFEMDBBNjk0RDQgLyogRXhjZXB0aW9uU2NvcGUuaCBpbiBIZWFk
ZXJzICovLApAQCAtOTc4Myw3ICs5Nzc3LDYgQEAKIAkJCQkwRkVBMEEwQzE3MDUxM0RCMDBCQjcy
MkMgLyogRlRMQ29tcGlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RDRDMEQxQzNFMUMxMTAw
NkNEOTg0IC8qIEZUTEV4Y2VwdGlvblRhcmdldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVC
RDQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJRkVGNUI0MjMyNjI4QTBFRTAwMTZFNzc2IC8qIEhhc2hNYXBJbXBsSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyMzVCRDYxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVu
dEZvck9wZXJhbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0Y1MTlEMEJBQzEwMEIxRDFC
NSAvKiBGVExFeGl0UHJvcGVydHlWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRjcx
OUQwQkFDMTAwQjFEMUI1IC8qIEZUTEV4aXRUaW1lT2JqZWN0TWF0ZXJpYWxpemF0aW9uLmggaW4g
SGVhZGVycyAqLywKQEAgLTk4MjcsNyArOTgyMCw2IEBACiAJCQkJMkE4MzYzOEExOEQ3RDBGRTAw
MDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTUy
RUVENzk0MjQ5MkI4NzAwMDhGNEM5MyAvKiBGdW5jdGlvbkFsbG93bGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTRBRDkxMEQxRENBOTI5NDAwMTRGOUZFIC8qIEZ1bmN0aW9uQ29kZUJsb2NrLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlGRUY1QjQyQzI2MjhDQkM4MDAxNkU3NzYgLyogVk1UcmFwc0lu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDA0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBG
dW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDczNDFEODFEQzAyRjk5
MDBBQTI5QkEgLyogRnVuY3Rpb25FeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkYw
RjFBMDE2QjcyQTFBMDA1REY5NUIgLyogRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5oIGluIEhlYWRl
cnMgKi8sCkBAIC05OTA2LDYgKzk4OTgsNyBAQAogCQkJCTE0MkUzMTM2MTM0RkYwQTYwMEFGQURC
NSAvKiBIYW5kbGVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzgyOTdCMTM3OUU4QTgwMEE3
QzJBMyAvKiBIYW5kbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlBMDkwODAxRDc2ODQ2
NTAwOEI4ODlCIC8qIEhhc2hNYXBJbXBsLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUY1QjQyMzI2
MjhBMEVFMDAxNkU3NzYgLyogSGFzaE1hcEltcGxJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3OURGQ0JEQjFEODhDNTk2MDA1MjdEMDMgLyogSGFzT3duUHJvcGVydHlDYWNoZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTRCQTdBOTgxM0FBREZGODAwNUI3QzJDIC8qIEhlYXAuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkxNzdBMURDMjJGOTU4RDUwMEIzNENBMiAvKiBIZWFwQW5hbHl6ZXIuaCBp
biBIZWFkZXJzICovLApAQCAtMTAxNzksNiArMTAxNzIsNyBAQAogCQkJCUMyNUQ3MDlDMTZERTk5
RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkE0QkI3
RjMxOEE0MTE3OTAwOEEwRkNEIC8qIEpTTWFuYWdlZFZhbHVlSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3MDA4NzQyMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRkVGNUI0MjUyNjI4QTg1MDAwMTZFNzc2IC8qIEpTTWFwSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTc0REVGOTYxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEIyODZEMUVCOEU2RDUwMDBFQjVEMiAvKiBKU01hcmtp
bmdDb25zdHJhaW50UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzAxM0NBOEMxQjQ5MUE5
NDAwQ0FFNjEzIC8qIEpTTWljcm90YXNrLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMjE0LDYgKzEw
MjA4LDcgQEAKIAkJCQkxNEQwMUE3NzIxRkIzNTFGMDBCQzU0RTkgLyogSlNTY3JpcHRTb3VyY2VQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MTlEMTExNTdGMzMyQzAwNEE0RTdEIC8q
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5RDlF
MTdEMTI4MzcwMDVGNUZGOSAvKiBKU1NldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVGNUI0Mjky
NjI4QjUyNDAwMTZFNzc2IC8qIEpTU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5
MERENzAxODJGNDk5NzAwNTg4ODA3IC8qIEpTU2V0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJERkNCMkJCRTkwRjQxMzQ5RTFCMEJFRCAvKiBKU1NvdXJjZUNvZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNDI3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMDI0Nyw2ICsxMDI0Miw3IEBACiAJCQkJODZFM0M2MUQxNjdCQUJFRTAwNkQ3
NjBBIC8qIEpTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzk1
QUM2MTgyMEEyMzU1RTAwNTJDNzZDIC8qIEpTVmlydHVhbE1hY2hpbmVQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBN0NBM0FFODE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggaW4g
SGVhZGVycyAqLywKKwkJCQlGRUY1QjQyNzI2MjhBQkQ5MDAxNkU3NzYgLyogSlNXZWFrTWFwSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0ODJFOTMxMTZBN0NBRDAwM0IwNzEyIC8qIEpT
V2Vha09iamVjdE1hcFJlZkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQ4MkI5MzEx
NjcxMTQ3MDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTM5QkZCQjAyMkFEM0NEQzAwMjNGNEMwIC8qIEpTV2Vha09iamVjdFJlZi5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMDU2Miw3ICsxMDU1OCw2IEBACiAJCQkJQkNERTNBQjgwRTZDODJG
NTAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzk4Njk0M0IxRjhD
MEFDQzAwOTIzMkFFIC8qIFN0cnVjdHVyZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTRF
RTcwOTBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovLAot
CQkJCUZFRjVCNDI1MjYyOEE4NTAwMDE2RTc3NiAvKiBKU01hcElubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJBQUFBMzEyMThCRDQ5RDEwMDM5NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCBp
biBIZWFkZXJzICovLAogCQkJCTJBRjczODJEMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJ
RFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQyQzkyNDE2RDAxRUU5MDBDNzgwM0YgLyog
U3RydWN0dXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDYwMSw3ICsxMDU5Niw2IEBA
CiAJCQkJQTczODY1NTYxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTQxNDQ4Q0QxM0ExNzgzNzAwRjVCQTFBIC8qIFRpbnlCbG9vbUZpbHRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NTk4OTgxN0M4NkM1ODAwQTFFNTQzIC8qIFRvTmF0
aXZlRnJvbVZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjJENERFOTE5ODMyREFDMDA3RDRC
MTkgLyogVG9UaGlzU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk1MkFCRDFCNDg3QTc3
MDBDMzY3QzUgLyogVHJhY2tlZFJlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2
NzA2MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5QWRhcHRvcnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMkI2NzA4MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMDY1NSw2ICsxMDY0OSw3IEBACiAJCQkJRkUzMDIyRDcxRTQy
ODU3MzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUM1Nzk3
MzIzMTA1QjUxMDBCQ0E4M0YgLyogVk1JbnNwZWN0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRTZGNTZERTFFNjRFQUQ2MDBEMTc4MDEgLyogVk1UcmFwcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRkVGNUI0MkMyNjI4Q0JDODAwMTZFNzc2IC8qIFZNVHJhcHNJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Mjg0N0FEQzIxRkZCODY5MDA2MUE5REIgLyogV2FzbUFpcklSR2VuZXJh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYgLyogV2Fz
bUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzQ0E3MzBBMUVBNTMzRDgwMDc2
MDQ5RCAvKiBXYXNtQkJRUGxhbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDc0Nyw3ICsxMDc0Miw2
IEBACiAJCQkJQURFODAyOUExRTA4RjFERTAwNThERTc4IC8qIFdlYkFzc2VtYmx5TGlua0Vycm9y
Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUFERTgwMjlDMUUwOEYxREUwMDU4REU3
OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QUQyRkNCRjUxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAotCQkJCUZFRjVCNDMwMjYyQTMzOEIwMDE2RTc3NiAvKiBFeGNlcHRp
b25FeHBlY3RhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNDMUExREI1OUNCMjAwQjNF
NzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBRDJGQ0JGNzFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQzFCMURCNTlDQjIwMEIzRTczNiAvKiBXZWJB
c3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCShyZXZpc2lvbiAy
NzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw2IEBAIHR5cGVzIFsKICAgICA6U3RydWN0dXJl
Q2hhaW4sCiAgICAgOlN5bWJvbFRhYmxlLAogICAgIDpTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aCwK
LSAgICA6VG9UaGlzU3RhdHVzLAogICAgIDpUeXBlTG9jYXRpb24sCiAgICAgOldhc21Cb3VuZExh
YmVsLAogICAgIDpXYXRjaHBvaW50U2V0LApAQCAtMTc3LDExICsxNzYsOCBAQCBvcCA6YXJndW1l
bnRfY291bnQsCiBvcCA6dG9fdGhpcywKICAgICBhcmdzOiB7CiAgICAgICAgIHNyY0RzdDogVmly
dHVhbFJlZ2lzdGVyLAotICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCiAgICAgfSwKICAgICBt
ZXRhZGF0YTogewotICAgICAgICBjYWNoZWRTdHJ1Y3R1cmVJRDogU3RydWN0dXJlSUQsCi0gICAg
ICAgIHRvVGhpc1N0YXR1czogVG9UaGlzU3RhdHVzLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVBy
b2ZpbGUsCiAgICAgfQogCkBAIC0xMDIxLDYgKzEwMTcsMTIgQEAgb3AgOmdldF9mcm9tX3Njb3Bl
LAogICAgICAgICBvcGVyYW5kOiA6b2Zmc2V0LAogICAgIH0KIAorb3AgOmdldF90aGlzX3ZhbHVl
X2Zvcl9jYWxsLAorICAgIGFyZ3M6IHsKKyAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisg
ICAgICAgIHNjb3BlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfQorCiBvcCA6cHV0X3RvX3Njb3Bl
LAogICAgIGFyZ3M6IHsKICAgICAgICAgc2NvcGU6IFZpcnR1YWxSZWdpc3RlciwgIyBvZmZzZXQg
MQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNiArMTczLDcg
QEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcgogICAgIFVTRVMoT3BS
ZXNvbHZlU2NvcGUsIHNjb3BlKQogICAgIFVTRVMoT3BSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1
bmNEZWNsSW5FdmFsLCBzY29wZSkKICAgICBVU0VTKE9wR2V0RnJvbVNjb3BlLCBzY29wZSkKKyAg
ICBVU0VTKE9wR2V0VGhpc1ZhbHVlRm9yQ2FsbCwgc2NvcGUpCiAgICAgVVNFUyhPcFRvUHJpbWl0
aXZlLCBzcmMpCiAgICAgVVNFUyhPcFRvUHJvcGVydHlLZXksIHNyYykKICAgICBVU0VTKE9wVHJ5
R2V0QnlJZCwgYmFzZSkKQEAgLTQ3OCw2ICs0NzksNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVJbmRleEltcGwodW5zCiAKICAgICBERUZTKE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRz
LCBkc3QpCiAgICAgREVGUyhPcEdldEZyb21TY29wZSwgZHN0KQorICAgIERFRlMoT3BHZXRUaGlz
VmFsdWVGb3JDYWxsLCBkc3QpCiAgICAgREVGUyhPcENhbGwsIGRzdCkKICAgICBERUZTKE9wVGFp
bENhbGwsIGRzdCkKICAgICBERUZTKE9wQ2FsbEV2YWwsIGRzdCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyNzcwMjYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQwNCwxNyArMTQwNCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50
SW5saW5lQ2FjaGUKICAgICAgICAgICAgIG1ldGFkYXRhLm1fYnJhbmQuY2xlYXIoKTsKICAgICAg
ICAgfSk7CiAKLSAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFRvVGhpcz4oWyZdIChhdXRv
JiBtZXRhZGF0YSkgewotICAgICAgICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVy
ZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1l
dGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQpKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKSB7Ci0gICAgICAgICAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobWV0
YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCk7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNs
ZWFyaW5nIExMSW50IHRvX3RoaXMgd2l0aCBzdHJ1Y3R1cmUgJXAuXG4iLCBzdHJ1Y3R1cmUpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCA9
IDA7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX3RvVGhpc1N0YXR1cyA9IG1lcmdlKG1ldGFkYXRh
Lm1fdG9UaGlzU3RhdHVzLCBUb1RoaXNDbGVhcmVkQnlHQyk7Ci0gICAgICAgIH0pOwotCiAgICAg
ICAgIGF1dG8gaGFuZGxlQ3JlYXRlQnl0ZWNvZGUgPSBbJl0gKGF1dG8mIG1ldGFkYXRhLCBBU0NJ
SUxpdGVyYWwgbmFtZSkgewogICAgICAgICAgICAgYXV0byYgY2FjaGVXcml0ZUJhcnJpZXIgPSBt
ZXRhZGF0YS5tX2NhY2hlZENhbGxlZTsKICAgICAgICAgICAgIGlmICghY2FjaGVXcml0ZUJhcnJp
ZXIgfHwgY2FjaGVXcml0ZUJhcnJpZXIudW52YWxpZGF0ZWRHZXQoKSA9PSBKU0NlbGw6OnNlZW5N
dWx0aXBsZUNhbGxlZU9iamVjdHMoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Ub1RoaXNTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Ub1RoaXNTdGF0dXMuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmNwcAkobm9uZXhpc3RlbnQpCkBA
IC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgotCi1u
YW1lc3BhY2UgSlNDIHsKLQotVG9UaGlzU3RhdHVzIG1lcmdlKFRvVGhpc1N0YXR1cyBhLCBUb1Ro
aXNTdGF0dXMgYikKLXsKLSAgICBzd2l0Y2ggKGEpIHsKLSAgICBjYXNlIFRvVGhpc09LOgotICAg
ICAgICByZXR1cm4gYjsKLSAgICBjYXNlIFRvVGhpc0NvbmZsaWN0ZWQ6Ci0gICAgICAgIHJldHVy
biBUb1RoaXNDb25mbGljdGVkOwotICAgIGNhc2UgVG9UaGlzQ2xlYXJlZEJ5R0M6Ci0gICAgICAg
IGlmIChiID09IFRvVGhpc0NvbmZsaWN0ZWQpCi0gICAgICAgICAgICByZXR1cm4gVG9UaGlzQ29u
ZmxpY3RlZDsKLSAgICAgICAgcmV0dXJuIFRvVGhpc0NsZWFyZWRCeUdDOwotICAgIH0KLSAgICAK
LSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBUb1RoaXNDb25m
bGljdGVkOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXVz
aW5nIG5hbWVzcGFjZSBKU0M7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0
LCBUb1RoaXNTdGF0dXMgc3RhdHVzKQotewotICAgIHN3aXRjaCAoc3RhdHVzKSB7Ci0gICAgY2Fz
ZSBUb1RoaXNPSzoKLSAgICAgICAgb3V0LnByaW50KCJPSyIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBUb1RoaXNDb25mbGljdGVkOgotICAgICAgICBvdXQucHJpbnQoIkNvbmZsaWN0ZWQi
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgVG9UaGlzQ2xlYXJlZEJ5R0M6Ci0gICAgICAg
IG91dC5wcmludCgiQ2xlYXJlZEJ5R0MiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAK
LSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
VEYKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1RvVGhpc1N0YXR1cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Ub1RoaXNTdGF0
dXMuaAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1RvVGhpc1N0YXR1cy5oCShub25leGlzdGVudCkKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotZW51bSBUb1Ro
aXNTdGF0dXMgewotICAgIFRvVGhpc09LLAotICAgIFRvVGhpc0NvbmZsaWN0ZWQsCi0gICAgVG9U
aGlzQ2xlYXJlZEJ5R0MKLX07Ci0KLVRvVGhpc1N0YXR1cyBtZXJnZShUb1RoaXNTdGF0dXMsIFRv
VGhpc1N0YXR1cyk7Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQot
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpUb1RoaXNTdGF0dXMpOwotCi19
IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyNzcwMjYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1OCw2ICsyNDU4LDMxIEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0RnIKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEZ1bmN0aW9u
RnJvbVNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgVmFyaWFibGUmIHZhcmlhYmxlLCBSZWdp
c3RlcklEKiB0aGlzVmFsdWVGb3JDYWxsKQoreworICAgIEFTU0VSVCghdmFyaWFibGUubG9jYWwo
KSk7CisKKyAgICBSZWdpc3RlcklEKiBzY29wZSA9IGVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwg
dmFyaWFibGUpOworICAgIGVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZSwgdmFyaWFibGUsIFRo
cm93SWZOb3RGb3VuZCk7CisgICAgZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkodmFyaWFibGUsIGRz
dCwgbnVsbHB0cik7CisgICAgaWYgKGhhc1BhcmVudFdpdGhTY29wZSh2YXJpYWJsZSkpCisgICAg
ICAgIE9wR2V0VGhpc1ZhbHVlRm9yQ2FsbDo6ZW1pdCh0aGlzLCBraWxsKHRoaXNWYWx1ZUZvckNh
bGwpLCBzY29wZSk7CisgICAgcmV0dXJuIGRzdDsKK30KKworYm9vbCBCeXRlY29kZUdlbmVyYXRv
cjo6aGFzUGFyZW50V2l0aFNjb3BlKGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSkgY29uc3QKK3sK
KyAgICBpZiAodmFyaWFibGUub2Zmc2V0KCkuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2xleGljYWxTY29wZVN0YWNrLnNpemUoKTsg
aS0tOyApIHsKKyAgICAgICAgaWYgKG1fbGV4aWNhbFNjb3BlU3RhY2tbaV0ubV9pc1dpdGhTY29w
ZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFRvU2NvcGUoUmVnaXN0
ZXJJRCogc2NvcGUsIGNvbnN0IFZhcmlhYmxlJiB2YXJpYWJsZSwgUmVnaXN0ZXJJRCogdmFsdWUs
IFJlc29sdmVNb2RlIHJlc29sdmVNb2RlLCBJbml0aWFsaXphdGlvbk1vZGUgaW5pdGlhbGl6YXRp
b25Nb2RlKQogewogICAgIHN3aXRjaCAodmFyaWFibGUub2Zmc2V0KCkua2luZCgpKSB7CkBAIC01
NDM2LDcgKzU0NjEsOCBAQCB2b2lkIFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM6OnJlY29yZCgpCiAK
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUb1RoaXMoKQogewotICAgIE9wVG9UaGlzOjpl
bWl0KHRoaXMsIGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSwgZWNtYU1vZGUoKSk7CisgICAgaWYgKCFl
Y21hTW9kZSgpLmlzU3RyaWN0KCkpCisgICAgICAgIE9wVG9UaGlzOjplbWl0KHRoaXMsIGtpbGwo
Jm1fdGhpc1JlZ2lzdGVyKSk7CiB9CiAKIFN0cnVjdHVyZUZvckluQ29udGV4dCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmZpbmRTdHJ1Y3R1cmVGb3JJbkNvbnRleHQoUmVnaXN0ZXJJRCogcHJvcGVydHkp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTkwMiw2ICs5MDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFJlc29sdmVDb25zdGFudExvY2FsKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgVmFyaWFibGUmKTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmVTY29wZShSZWdpc3RlcklEKiBkc3QsIGNv
bnN0IFZhcmlhYmxlJik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRGcm9tU2NvcGUoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSwgY29uc3QgVmFyaWFibGUmLCBSZXNvbHZl
TW9kZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRGdW5jdGlvbkZyb21TY29wZShSZWdp
c3RlcklEKiBkc3QsIGNvbnN0IFZhcmlhYmxlJiwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlRm9yQ2Fs
bCk7CisgICAgICAgIGJvb2wgaGFzUGFyZW50V2l0aFNjb3BlKGNvbnN0IFZhcmlhYmxlJikgY29u
c3Q7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRUb1Njb3BlKFJlZ2lzdGVySUQqIHNjb3Bl
LCBjb25zdCBWYXJpYWJsZSYsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZXNvbHZlTW9kZSwgSW5pdGlh
bGl6YXRpb25Nb2RlKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVzb2x2ZVNjb3BlRm9y
SG9pc3RpbmdGdW5jRGVjbEluRXZhbChSZWdpc3RlcklEKiBkc3QsIGNvbnN0IElkZW50aWZpZXIm
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUwLDEz
ICszNTAsMTEgQEAgUmVnaXN0ZXJJRCogVGFnZ2VkVGVtcGxhdGVOb2RlOjplbWl0Qnl0ZQogICAg
ICAgICAgICAgdGFnID0gZ2VuZXJhdG9yLm1vdmUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBs
b2NhbCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB0YWcgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBiYXNlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OworICAgICAgICAgICAgYmFzZSA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIGpzVW5kZWZpbmVkKCkpOwogCiAgICAgICAgICAgICBKU1RleHRQb3NpdGlvbiBu
ZXdEaXZvdCA9IGRpdm90U3RhcnQoKSArIGlkZW50aWZpZXIubGVuZ3RoKCk7CiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCksIG5l
d0Rpdm90KTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGJhc2UuZ2V0KCksIGdlbmVyYXRv
ci5lbWl0UmVzb2x2ZVNjb3BlKGJhc2UuZ2V0KCksIHZhcikpOwotICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRHZXRGcm9tU2NvcGUodGFnLmdldCgpLCBiYXNlLmdldCgpLCB2YXIsIFRocm93SWZO
b3RGb3VuZCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrSWZOZWNlc3Nhcnko
dmFyLCB0YWcuZ2V0KCksIG51bGxwdHIpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRG
dW5jdGlvbkZyb21TY29wZSh0YWcuZ2V0KCksIHZhciwgYmFzZS5nZXQoKSk7CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgaWYgKG1fdGFnLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAg
ICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vz
c29yTm9kZSo+KG1fdGFnKTsKQEAgLTExODYsMTEgKzExODQsNyBAQCBSZWdpc3RlcklEKiBFdmFs
RnVuY3Rpb25DYWxsTm9kZTo6ZW1pdEJ5CiAgICAgZWxzZSB7CiAgICAgICAgIEpTVGV4dFBvc2l0
aW9uIG5ld0Rpdm90ID0gZGl2b3RTdGFydCgpICsgNDsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRF
eHByZXNzaW9uSW5mbyhuZXdEaXZvdCwgZGl2b3RTdGFydCgpLCBuZXdEaXZvdCk7Ci0gICAgICAg
IGdlbmVyYXRvci5tb3ZlKAotICAgICAgICAgICAgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIHZhcikpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29w
ZShmdW5jLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCB2YXIsIFRocm93SWZO
b3RGb3VuZCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0VERaQ2hlY2tJZk5lY2Vzc2FyeSh2YXIs
IGZ1bmMuZ2V0KCksIG51bGxwdHIpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZ1bmN0aW9u
RnJvbVNjb3BlKGZ1bmMuZ2V0KCksIHZhciwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSk7
CiAgICAgfQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9y
LmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jLmdldCgpKTsKQEAgLTEyNzYsMjAgKzEyNzAsMTYg
QEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaQogICAgIH0gZWxzZQog
ICAgICAgICBmdW5jID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIENhbGxBcmd1bWVu
dHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CisgICAgZ2VuZXJhdG9yLmVtaXRM
b2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogCiAgICAg
aWYgKGxvY2FsKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgLy8gVGhpcyBwYXNzZXMgTm9F
eHBlY3RlZEZ1bmN0aW9uIGJlY2F1c2Ugd2UgZXhwZWN0IHRoYXQgaWYgdGhlIGZ1bmN0aW9uIGlz
IGluIGEKICAgICAgICAgLy8gbG9jYWwgdmFyaWFibGUsIHRoZW4gaXQncyBub3Qgb25lIG9mIG91
ciBidWlsdC1pbiBjb25zdHJ1Y3RvcnMuCiAgICAgICAgIGV4cGVjdGVkRnVuY3Rpb24gPSBOb0V4
cGVjdGVkRnVuY3Rpb247CiAgICAgfSBlbHNlIHsKICAgICAgICAgSlNUZXh0UG9zaXRpb24gbmV3
RGl2b3QgPSBkaXZvdFN0YXJ0KCkgKyBtX2lkZW50Lmxlbmd0aCgpOwogICAgICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCksIG5ld0Rpdm90KTsK
LSAgICAgICAgZ2VuZXJhdG9yLm1vdmUoCi0gICAgICAgICAgICBjYWxsQXJndW1lbnRzLnRoaXNS
ZWdpc3RlcigpLAotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgdmFyKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0
RnJvbVNjb3BlKGZ1bmMuZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIHZhciwg
VGhyb3dJZk5vdEZvdW5kKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVja0lmTmVjZXNz
YXJ5KHZhciwgZnVuYy5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0
RnVuY3Rpb25Gcm9tU2NvcGUoZnVuYy5nZXQoKSwgdmFyLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpKTsKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBn
ZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmMuZ2V0KCkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3Bw
CShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksMTAgKzIwOSw5IEBAIEpT
VmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OnRoaXNWYWx1ZShWTSYKICAgICBpZiAoIXRoaXNWYWx1
ZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBFQ01BTW9kZSBlY21hTW9k
ZSA9IEVDTUFNb2RlOjpzbG9wcHkoKTsKICAgICBpZiAoY29kZUJsb2NrICYmIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkpCi0gICAgICAgIGVjbWFNb2Rl
ID0gRUNNQU1vZGU6OnN0cmljdCgpOwotICAgIHJldHVybiB0aGlzVmFsdWUudG9UaGlzKG1fdmFs
aWRNYWNoaW5lRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pLCBlY21hTW9kZSk7CisgICAg
ICAgIHJldHVybiB0aGlzVmFsdWU7CisgICAgcmV0dXJuIHRoaXNWYWx1ZS50b1Nsb3BweU1vZGVU
aGlzKG1fdmFsaWRNYWNoaW5lRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pKTsKIH0KIAog
Ly8gRXZhbHVhdGUgc29tZSBKYXZhU2NyaXB0IGNvZGUgaW4gdGhlIHNjb3BlIG9mIHRoaXMgZnJh
bWUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE3OSw2NSArMTc5LDYgQEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG5vZGUs
IHZlcmlmeUVkZ2UpOwogfQogCi1lbnVtIGNsYXNzIFRvVGhpc1Jlc3VsdCB7Ci0gICAgSWRlbnRp
dHksCi0gICAgVW5kZWZpbmVkLAotICAgIEdsb2JhbFRoaXMsCi0gICAgRHluYW1pYywKLX07Ci1p
bmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYgdm0sIEVDTUFNb2RlIGVj
bWFNb2RlLCBBYnN0cmFjdFZhbHVlJiB2YWx1ZUZvck5vZGUpCi17Ci0gICAgLy8gV2UgbG9vayBh
dCB0aGUgdHlwZSBmaXJzdCBzaW5jZSB0aGF0IHdpbGwgY292ZXIgbW9zdCBjYXNlcyBhbmQgZG9l
cyBub3QgcmVxdWlyZSBpdGVyYXRpbmcgYWxsIHRoZSBzdHJ1Y3R1cmVzLgotICAgIGlmIChlY21h
TW9kZS5pc1N0cmljdCgpKSB7Ci0gICAgICAgIGlmICh2YWx1ZUZvck5vZGUubV90eXBlICYmICEo
dmFsdWVGb3JOb2RlLm1fdHlwZSAmIFNwZWNPYmplY3RPdGhlcikpCi0gICAgICAgICAgICByZXR1
cm4gVG9UaGlzUmVzdWx0OjpJZGVudGl0eTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAodmFs
dWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiAoflNwZWNPYmplY3Qg
fCBTcGVjT2JqZWN0T3RoZXIpKSkKLSAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6Oklk
ZW50aXR5OwotICAgIH0KLQotICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gdmFsdWVGb3JOb2RlLnZh
bHVlKCkpIHsKLSAgICAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKSB7Ci0gICAgICAgICAgICBhdXRv
KiB0b1RoaXNNZXRob2QgPSB2YWx1ZS5hc0NlbGwoKS0+Y2xhc3NJbmZvKHZtKS0+bWV0aG9kVGFi
bGUudG9UaGlzOwotICAgICAgICAgICAgaWYgKHRvVGhpc01ldGhvZCA9PSAmSlNPYmplY3Q6OnRv
VGhpcykKLSAgICAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpJZGVudGl0eTsKLSAg
ICAgICAgICAgIGlmICh0b1RoaXNNZXRob2QgPT0gJkpTU2NvcGU6OnRvVGhpcykgewotICAgICAg
ICAgICAgICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gVG9UaGlzUmVzdWx0OjpVbmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRv
VGhpc1Jlc3VsdDo6R2xvYmFsVGhpczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQotICAgIGlmICgoZWNtYU1vZGUuaXNTdHJpY3QoKSB8fCAodmFsdWVGb3JOb2RlLm1fdHlwZSAm
JiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpKSAmJiB2YWx1ZUZvck5vZGUu
bV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewotICAgICAgICBib29sIGFsbFN0cnVjdHVyZXNBcmVK
U1Njb3BlID0gIXZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5pc0NsZWFyKCk7Ci0gICAgICAgIGJv
b2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7Ci0gICAgICAgIHZhbHVlRm9yTm9kZS5tX3N0cnVj
dHVyZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewotICAgICAg
ICAgICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKLSAgICAgICAgICAg
IEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0
eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEhlYXBCaWdJbnRUeXBl
KTsKLSAgICAgICAgICAgIGlmICghZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgICAgICAg
ICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsKLSAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQg
dG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1ib2xzIGhlcmUgc2luY2UgZWl0aGVyOgotICAgICAg
ICAgICAgLy8gMSkgV2UgYXJlIGluIHN0cmljdCBtb2RlIGFuZCBzdHJpbmdzL3N5bWJvbHMgYXJl
IG5vdCB3cmFwcGVkCi0gICAgICAgICAgICAvLyAyKSBUaGUgQUkgaGFzIHByb3ZlbiB0aGF0IHRo
ZSB0eXBlIG9mIHRoaXMgaXMgYSBzdWJ0eXBlIG9mIG9iamVjdAotICAgICAgICAgICAgaWYgKHR5
cGUuaXNPYmplY3QoKSAmJiB0eXBlLm92ZXJyaWRlc1RvVGhpcygpKQotICAgICAgICAgICAgICAg
IG92ZXJyaWRlc1RvVGhpcyA9IHRydWU7Ci0KLSAgICAgICAgICAgIC8vIElmIGFsbCB0aGUgc3Ry
dWN0dXJlcyBhcmUgSlNTY29wZSdzIG9uZXMsIHdlIGtub3cgdGhlIGRldGFpbHMgb2YgSlNTY29w
ZTo6dG9UaGlzKCkgb3BlcmF0aW9uLgotICAgICAgICAgICAgYWxsU3RydWN0dXJlc0FyZUpTU2Nv
cGUgJj0gc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUudG9UaGlzID09IEpTU2Nv
cGU6OmluZm8oKS0+bWV0aG9kVGFibGUudG9UaGlzOwotICAgICAgICB9KTsKLSAgICAgICAgaWYg
KCFvdmVycmlkZXNUb1RoaXMpCi0gICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpJZGVu
dGl0eTsKLSAgICAgICAgaWYgKGFsbFN0cnVjdHVyZXNBcmVKU1Njb3BlKSB7Ci0gICAgICAgICAg
ICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gVG9UaGlz
UmVzdWx0OjpVbmRlZmluZWQ7Ci0gICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpHbG9i
YWxUaGlzOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6RHlu
YW1pYzsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CiBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpoYW5kbGVDb25zdGFudEJpbmFy
eUJpdHdpc2VPcChOb2RlKiBub2RlKQogewpAQCAtMjk3MiwzMSArMjkxMywyMiBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAKICAgICBjYXNl
IFRvVGhpczogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSBmb3JOb2Rl
KG5vZGUpOwotICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG5vZGUtPmVjbWFNb2RlKCk7CiAK
LSAgICAgICAgVG9UaGlzUmVzdWx0IHJlc3VsdCA9IGlzVG9UaGlzQW5JZGVudGl0eShtX3ZtLCBl
Y21hTW9kZSwgc291cmNlKTsKLSAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKLSAgICAgICAgY2Fz
ZSBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OgorICAgICAgICBpZiAoIShzb3VyY2UubV90eXBlICYg
flNwZWNPYmplY3QpKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnNldFNob3VsZFRyeUNvbnN0YW50
Rm9sZGluZyh0cnVlKTsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gc291cmNlOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVG9UaGlzUmVzdWx0OjpVbmRlZmluZWQ6Ci0gICAg
ICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGRp
ZEZvbGRDbG9iYmVyV29ybGQoKTsKKyAgICAgICAgICAgIHNldEZvck5vZGUobm9kZSwgc291cmNl
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRvVGhpc1Jlc3VsdDo6R2xvYmFs
VGhpczoKKyAgICAgICAgfQorCisgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNPYmpl
Y3QpOworCisgICAgICAgIGlmICghKHNvdXJjZS5tX3R5cGUgJiB+U3BlY090aGVyKSkgewogICAg
ICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7Ci0gICAg
ICAgICAgICBkZXN0aW5hdGlvbi5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3QpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVG9UaGlzUmVzdWx0OjpEeW5hbWljOgotICAgICAg
ICAgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCi0gICAgICAgICAgICAgICAgZGVzdGluYXRp
b24ubWFrZUhlYXBUb3AoKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGRl
c3RpbmF0aW9uID0gc291cmNlOwotICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLm1lcmdlKFNw
ZWNPYmplY3QpOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
KworICAgICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0z
MzE1LDYgKzMyNDcsMTMgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjT2JqZWN0T3RoZXIpOwogICAgICAg
ICBicmVhazsKIAorICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDoKKyAgICAgICAgaWYgKEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpKQorICAgICAgICAg
ICAgc2V0Q29uc3RhbnQobm9kZSwgY2hpbGQuaW5oZXJpdHM8SlNTY29wZT4obV92bSkgPyBqc1Vu
ZGVmaW5lZCgpIDogY2hpbGQpOworCisgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNP
YmplY3QgfCBTcGVjT3RoZXIpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgU2tpcFNjb3Bl
OiB7CiAgICAgICAgIGlmIChKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
dmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKEpTU2NvcGUqIHNjb3BlID0ganNEeW5hbWljQ2Fz
dDxKU1Njb3BlKj4obV92bSwgY2hpbGQpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjc3MDI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU0MjUsMjYgKzU0MjUsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkCiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX3RvX3Ro
aXM6IHsKLSAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldFRoaXMoKTsKLSAgICAgICAgICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpOwotICAgICAg
ICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAg
ICAgICAgICAgU3RydWN0dXJlSUQgY2FjaGVkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX2NhY2hl
ZFN0cnVjdHVyZUlEOwotICAgICAgICAgICAgU3RydWN0dXJlKiBjYWNoZWRTdHJ1Y3R1cmUgPSBu
dWxscHRyOwotICAgICAgICAgICAgaWYgKGNhY2hlZFN0cnVjdHVyZUlEKQotICAgICAgICAgICAg
ICAgIGNhY2hlZFN0cnVjdHVyZSA9IG1fdm0tPmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChj
YWNoZWRTdHJ1Y3R1cmVJRCk7Ci0gICAgICAgICAgICBpZiAobWV0YWRhdGEubV90b1RoaXNTdGF0
dXMgIT0gVG9UaGlzT0sKLSAgICAgICAgICAgICAgICB8fCAhY2FjaGVkU3RydWN0dXJlCi0gICAg
ICAgICAgICAgICAgfHwgY2FjaGVkU3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUu
dG9UaGlzICE9IEpTT2JqZWN0OjppbmZvKCktPm1ldGhvZFRhYmxlLnRvVGhpcwotICAgICAgICAg
ICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xv
d0Nhc2UobV9jdXJyZW50SW5kZXgpCi0gICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpCi0g
ICAgICAgICAgICAgICAgfHwgKG9wMS0+b3AoKSA9PSBHZXRMb2NhbCAmJiBvcDEtPnZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5zdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKCkpKSB7Ci0gICAgICAg
ICAgICAgICAgc2V0VGhpcyhhZGRUb0dyYXBoKFRvVGhpcywgT3BJbmZvKGJ5dGVjb2RlLm1fZWNt
YU1vZGUpLCBPcEluZm8oZ2V0UHJlZGljdGlvbigpKSwgb3AxKSk7Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoCi0gICAgICAgICAgICAgICAgICAgIENo
ZWNrU3RydWN0dXJlLAotICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1
Y3R1cmVTZXQoY2FjaGVkU3RydWN0dXJlKSksCi0gICAgICAgICAgICAgICAgICAgIG9wMSk7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBzZXRUaGlzKGFkZFRvR3JhcGgoVG9UaGlzLCBPcElu
Zm8oZ2V0UHJlZGljdGlvbigpKSwgZ2V0VGhpcygpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF90b190aGlzKTsKICAgICAgICAgfQogCkBAIC03ODg0LDYgKzc4NjUsMTIgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfZ2V0X2Zyb21fc2NvcGUpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9nZXRf
dGhpc192YWx1ZV9mb3JfY2FsbDogeworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRUaGlzVmFsdWVGb3JDYWxsPigpOworICAgICAgICAgICAg
c2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEdldFRoaXNWYWx1ZUZvckNhbGwsIGdldChi
eXRlY29kZS5tX3Njb3BlKSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X3RoaXNf
dmFsdWVfZm9yX2NhbGwpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2Nv
cGU6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFz
PE9wUHV0VG9TY29wZT4oKTsKICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEoY29kZUJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDYg
KzI1Miw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQKICAgICBj
YXNlIG9wX2luX2J5X2lkOgogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0
X2Zyb21fc2NvcGU6CisgICAgY2FzZSBvcF9nZXRfdGhpc192YWx1ZV9mb3JfY2FsbDoKICAgICBj
YXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDoKICAgICBjYXNlIG9wX2hhc19lbnVtZXJhYmxl
X2luZGV4ZWRfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9oYXNfZW51bWVyYWJsZV9zdHJ1Y3R1cmVf
cHJvcGVydHk6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOCw2ICsyMTgsNyBAQCB2b2lkIGNsb2JiZXJp
emUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBBcml0aE1heDoKICAgICBjYXNl
IEFyaXRoUG93OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JD
YWxsOgogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OgogICAg
IGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKQEAgLTU5MSwxMiArNTkyLDYgQEAgdm9pZCBjbG9iYmVy
aXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICB3cml0ZShIZWFwT2JqZWN0Q291
bnQpOwogICAgICAgICByZXR1cm47CiAKLSAgICBjYXNlIFRvVGhpczoKLSAgICAgICAgcmVhZChN
aXNjRmllbGRzKTsKLSAgICAgICAgcmVhZChIZWFwT2JqZWN0Q291bnQpOwotICAgICAgICB3cml0
ZShIZWFwT2JqZWN0Q291bnQpOwotICAgICAgICByZXR1cm47Ci0KICAgICBjYXNlIFR5cGVPZklz
T2JqZWN0OgogICAgICAgICByZWFkKE1pc2NGaWVsZHMpOwogICAgICAgICBkZWYoSGVhcExvY2F0
aW9uKFR5cGVPZklzT2JqZWN0TG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlO
b2RlKG5vZGUpKTsKQEAgLTcxNCw2ICs3MDksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNs
SW5FdmFsOgogICAgIGNhc2UgUmVzb2x2ZVNjb3BlOgogICAgIGNhc2UgVG9PYmplY3Q6CisgICAg
Y2FzZSBUb1RoaXM6CiAgICAgY2FzZSBIYXNFbnVtZXJhYmxlU3RydWN0dXJlUHJvcGVydHk6CiAg
ICAgY2FzZSBIYXNFbnVtZXJhYmxlUHJvcGVydHk6CiAgICAgY2FzZSBIYXNPd25TdHJ1Y3R1cmVQ
cm9wZXJ0eToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzE0LDEzICs3MTQsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgY2FzZSBUb1RoaXM6IHsKLSAgICAgICAgICAgICAgICBUb1RoaXNSZXN1bHQgcmVzdWx0
ID0gaXNUb1RoaXNBbklkZW50aXR5KG1fZ3JhcGgubV92bSwgbm9kZS0+ZWNtYU1vZGUoKSwgbV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dCA9PSBUb1RoaXNSZXN1bHQ6OklkZW50aXR5KSB7CisgICAgICAgICAgICAgICAgQWJzdHJhY3RW
YWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgICAgIGlmICghKHZhbHVlLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSkgewogICAgICAgICAgICAg
ICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gVG9UaGlzUmVzdWx0OjpHbG9iYWxU
aGlzKSB7CisgICAgICAgICAgICAgICAgaWYgKCEodmFsdWUubV90eXBlICYgflNwZWNPdGhlcikp
IHsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvR2V0R2xvYmFsVGhpcygpOwog
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZp
c2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExOSw2ICsxMTksNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja0FycmF5T3JFbXB0eToKICAgICBjYXNlIENo
ZWNrRGV0YWNoZWQ6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIEdldFRoaXNWYWx1ZUZv
ckNhbGw6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6CiAg
ICAgY2FzZSBHZXRHbG9iYWxUaGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODA2LDYgKzE4
MDYsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjYXNl
IEdldFNjb3BlOgorICAgICAgICBjYXNlIEdldFRoaXNWYWx1ZUZvckNhbGw6CiAgICAgICAgIGNh
c2UgR2V0R2V0dGVyOgogICAgICAgICBjYXNlIEdldFNldHRlcjoKICAgICAgICAgY2FzZSBHZXRH
bG9iYWxPYmplY3Q6IHsKQEAgLTMxMzcsOTYgKzMxMzgsMTggQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgZml4dXBUb1RoaXMoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIGJvb2wgaXNTdHJpY3RN
b2RlID0gbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpOwotCi0gICAgICAgIGlmIChpc1N0cmlj
dE1vZGUpIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRl
Qm9vbGVhbigpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkgewotICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBub2Rl
LT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJ
bnQ1MigpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7Ci0gICAg
ICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRn
ZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBub2RlLT5j
b252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2Rl
UmVzdWx0RG91YmxlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3ltYm9sKCkp
IHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKLSAgICAgICAgICAgICAgICBmaXhF
ZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgbm9k
ZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRl
U3RyaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7Ci0jaWYg
VVNFKEJJR0lOVDMyKQotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlQmlnSW50MzIoKSkKLSAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQz
MlVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpCi0gICAgICAgICAgICAgICAgICAg
IGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihu
b2RlLT5jaGlsZDEoKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9J
ZGVudGl0eSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT3RoZXIo
KSkgewotICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkgewotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8T3RoZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBub2RlLT5j
b252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLQogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAg
ICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrLCBub2RlLT5vcmlnaW4sCiAgICAg
ICAgICAgICAgICAgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIE90aGVyVXNlKSk7CiAgICAg
ICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxPdGhlclVzZT4obm9kZS0+Y2hpbGQxKCkubm9k
ZSgpKTsKICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQoCi0gICAgICAgICAg
ICAgICAgbm9kZSwgbV9ncmFwaC5nbG9iYWxUaGlzT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpOworICAgICAgICAgICAgICAgIG5vZGUsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdsb2JhbFRoaXMoKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgY292ZXIgb3RoZXIg
dXNlIGNhc2VzIGJ1dCB3ZSBkb24ndCBoYXZlIHVzZSBraW5kcyBmb3IgdGhlbS4gSXQncyBub3Qg
Y3JpdGljYWwsCi0gICAgICAgIC8vIGhvd2V2ZXIsIHNpbmNlIHdlIGNvdmVyIGFsbCB0aGUgbWlz
c2luZyBjYXNlcyBpbiBjb25zdGFudCBmb2xkaW5nLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MjEzCi0gICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIGZpeEVk
Z2U8U3RyaW5nT2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBub2RlLT5j
b252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKGlzRmluYWxPYmplY3RTcGVjdWxhdGlvbihub2RlLT5jaGlsZDEoKS0+cHJlZGlj
dGlvbigpKSkgewotICAgICAgICAgICAgZml4RWRnZTxGaW5hbE9iamVjdFVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU9iamVj
dCgpKSB7CisgICAgICAgICAgICBmaXhFZGdlPE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2
aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NzAsMTIgKzQ3MCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbik7CiAgICAgfQogICAgIAot
ICAgIEpTT2JqZWN0KiBnbG9iYWxUaGlzT2JqZWN0Rm9yKENvZGVPcmlnaW4gY29kZU9yaWdpbikK
LSAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBvYmplY3QgPSBnbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbik7Ci0gICAgICAgIHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihvYmplY3QtPm1l
dGhvZFRhYmxlKG1fdm0pLT50b1RoaXMob2JqZWN0LCBvYmplY3QsIEVDTUFNb2RlOjpzbG9wcHko
KSkpOwotICAgIH0KLSAgICAKICAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlRm9yKElu
bGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgaWYgKCFpbmxp
bmVDYWxsRnJhbWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5j
cHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5
RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDcgQEAgRXhpdE1vZGUgbWF5RXhp
dEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgU2V0QXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXM6CiAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgogICAgIGNhc2UgR2V0U2NvcGU6Cisg
ICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxsOgogICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAg
IGNhc2UgQ291bnRFeGVjdXRpb246CiAgICAgY2FzZSBTdXBlclNhbXBsZXJCZWdpbjoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjI2NCw3
ICsyMjY0LDYgQEAgcHVibGljOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgICAg
ICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKLSAg
ICAgICAgY2FzZSBUb1RoaXM6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIyNzgsNyArMjI3Nyw2IEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBDYWxsRXZhbDoKICAgICAgICAgY2FzZSBEZWxldGVCeVZhbDoK
ICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgotICAgICAgICBjYXNlIFRvVGhpczoKICAg
ICAgICAgICAgIHJldHVybiBFQ01BTW9kZTo6ZnJvbUJ5dGUobV9vcEluZm8uYXM8dWludDhfdD4o
KSk7CiAgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICAgICAgY2FzZSBQdXRCeUlkOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjc3MDI2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzUsNiArMjc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIG1hY3JvKEdldEdsb2JhbExleGljYWxWYXJpYWJsZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAg
bWFjcm8oUHV0R2xvYmFsVmFyaWFibGUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhH
ZXREeW5hbWljVmFyLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFj
cm8oR2V0VGhpc1ZhbHVlRm9yQ2FsbCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0RHlu
YW1pY1ZhciwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE5vdGlmeVdyaXRlLCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4LCBOb2Rl
UmVzdWx0SlMpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDI0ICsyMTcsNiBAQCBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsT2JqCiAgICAgcmV0dXJuIGJhc2UtPmdl
dChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25Ub1RoaXMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKSkKLXsKLSAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOwotICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3Bw
eSgpKSk7Ci19Ci0KLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Ub1RoaXNTdHJp
Y3QsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wKSkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
Ci0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRP
cCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKSk7Ci19Ci0KIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25PYmplY3RLZXlzLCBKU0FycmF5KiwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPYmplY3QpKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTgs
OCArNTgsNiBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUludGVybmFsUHJvbWlzZSwgSlND
ZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvciwgSlNDZWxsKiwgKEpT
R2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yKSk7CiBKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUFzeW5jR2VuZXJhdG9yLCBKU0NlbGwqLCAoSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdCogY29uc3RydWN0b3IpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uVG9UaGlzLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25Ub1RoaXNTdHJpY3QsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblZhbHVlTW9kLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25WYWx1ZUJpdE5vdCwgRW5jb2RlZEpTVmFsdWUs
IChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpKTsKIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVmFsdWVCaXRBbmQsIEVuY29kZWRKU1ZhbHVlLCAo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjc3
MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNyw3MSArNTI3LDEzIEBAIHByaXZhdGU6
CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFRvVGhpczogewotICAgICAg
ICAgICAgLy8gVG9UaGlzIGluIG1ldGhvZHMgZm9yIHByaW1pdGl2ZSB0eXBlcyBzaG91bGQgc3Bl
Y3VsYXRlIHByaW1pdGl2ZSB0eXBlcyBpbiBzdHJpY3QgbW9kZS4KLSAgICAgICAgICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpOwotICAgICAgICAgICAg
aWYgKGlzU3RyaWN0TW9kZSkgewotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlQm9vbGVhbigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDUyQW55KTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkgewotICAgICAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQnl0ZWNvZGVOdW1iZXIpOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN5bWJvbCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTeW1ib2wpOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSNpZiBVU0Uo
QklHSU5UMzIpCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVj
dWxhdGVCaWdJbnQzMigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFNwZWNCaWdJbnQzMik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0hlYXBCaWdJbnQpOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCaWdJbnQpOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N0cmluZ0lkZW50
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkg
ewotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjU3Ry
aW5nKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZVN0cmluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKFNwZWNTdHJpbmdPYmplY3QpOwotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKSB7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24oU3BlY1N0cmluZ09iamVjdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24g
PSBub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpOwotICAgICAgICAgICAgaWYgKGlzU3RyaWN0
TW9kZSkKLSAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLT5n
ZXRIZWFwUHJlZGljdGlvbigpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHByZWRpY3Rpb24pIHsK
KyAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgb3JpZ2luYWxQcmVkaWN0aW9uID0gcHJlZGljdGlvbjsKICAgICAgICAgICAgICAgICBp
ZiAocHJlZGljdGlvbiAmIH5TcGVjT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdy
YXBwZXIgb2JqZWN0cyBhcmUgY3JlYXRlZCBvbmx5IGluIHNsb3BweSBtb2RlLgpAQCAtMTIwNCw2
ICsxMTQ2LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNPYmpl
Y3RPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIEdldFRoaXNWYWx1
ZUZvckNhbGw6CisgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3QgfCBTcGVjT3Ro
ZXIpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBJbkJ5VmFsOgogICAgICAg
ICBjYXNlIEluQnlJZDoKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0Jvb2xlYW4pOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJl
dmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNiArMjMyLDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICBjYXNl
IENoZWNrQXJyYXlPckVtcHR5OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2FzZSBHZXRUaGlz
VmFsdWVGb3JDYWxsOgogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgIGNhc2UgR2V0R2xvYmFsT2Jq
ZWN0OgogICAgIGNhc2UgR2V0R2xvYmFsVGhpczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjc3
MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIxMSw2ICs0MjExLDExIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
Y2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxsOiB7CisgICAgICAgIGNvbXBpbGVHZXRUaGlzVmFsdWVG
b3JDYWxsKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFJlc29sdmVT
Y29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWw6IHsKICAgICAgICAgY29tcGlsZVJlc29sdmVT
Y29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwobm9kZSk7CiAgICAgICAgIGJyZWFrOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjY3LDYgKzQyNjcsMTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxl
R2V0RHluYW1pY1Zhcihub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBH
ZXRUaGlzVmFsdWVGb3JDYWxsOiB7CisgICAgICAgIGNvbXBpbGVHZXRUaGlzVmFsdWVGb3JDYWxs
KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgCiAgICAgY2FzZSBSZXNvbHZlU2Nv
cGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOiB7CiAgICAgICAgIGNvbXBpbGVSZXNvbHZlU2Nv
cGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsKG5vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI3NzAyNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjA4Miw2ICsxMjA4MiwyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0RHluYW1pY1ZhCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsK
IH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFRoaXNWYWx1ZUZvckNhbGwoTm9k
ZSogbm9kZSkKK3sKKyAgICBKU1ZhbHVlT3BlcmFuZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBzY29wZSk7
CisKKyAgICBKU1ZhbHVlUmVncyBzY29wZVJlZ3MgPSBzY29wZS5qc1ZhbHVlUmVncygpOworICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgbV9qaXQubW92
ZVZhbHVlUmVncyhzY29wZVJlZ3MsIHJlc3VsdFJlZ3MpOworICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIGlzV2l0aFNjb3BlID0gbV9qaXQuYnJhbmNoSWZOb3RUeXBlKHJlc3VsdFJlZ3MucGF5bG9h
ZEdQUigpLCBKU1R5cGVSYW5nZSB7IEZpcnN0SlNTY29wZVR5cGUsIExhc3RKU1Njb3BlVHlwZSB9
KTsKKyAgICBtX2ppdC5tb3ZlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIHJlc3VsdFJlZ3Mp
OworICAgIGlzV2l0aFNjb3BlLmxpbmsoJm1faml0KTsKKworICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0UmVncywgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXREeW5h
bWljVmFyKE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTM0MTYsMjkgKzEzNDMyLDI1IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmEKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVUb1RoaXMoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IFVudHlwZWRVc2UpOwotICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7Ci0gICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAotICAgIEpTVmFsdWVSZWdzIHRoaXNWYWx1ZVJlZ3Mg
PSB0aGlzVmFsdWUuanNWYWx1ZVJlZ3MoKTsKLSAgICBKU1ZhbHVlUmVncyB0ZW1wUmVncyA9IHRl
bXAucmVncygpOworICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgSlNWYWx1ZVJlZ3Mg
dmFsdWVSZWdzID0gdGhpc1ZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgR1BSUmVnIHZhbHVlR1BS
ID0gdmFsdWVSZWdzLnBheWxvYWRHUFIoKTsKIAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5v
dENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWVSZWdzKTsKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwotICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoSWZOb3RDZWxsKHRoaXNWYWx1ZVJlZ3MpKTsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKAotICAg
ICAgICBtX2ppdC5icmFuY2hUZXN0OCgKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGhpc1ZhbHVlUmVncy5w
YXlsb2FkR1BSKCksIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwKLSAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoT3ZlcnJpZGVzVG9UaGlzKSkpOwotICAgIG1f
aml0Lm1vdmVWYWx1ZVJlZ3ModGhpc1ZhbHVlUmVncywgdGVtcFJlZ3MpOwotCi0gICAgSl9KSVRP
cGVyYXRpb25fR0ogZnVuY3Rpb247Ci0gICAgaWYgKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3Qo
KSkKLSAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXNTdHJpY3Q7Ci0gICAgZWxzZQot
ICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpczsKLSAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBmdW5jdGlvbiwgdGVtcFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB0aGlzVmFsdWVSZWdzKSk7CisgICAgc2xvd0Nhc2Vz
LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdE9iamVjdCh2YWx1ZUdQUikpOworICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisKKyAgICBub3RDZWxsLmxpbmsoJm1f
aml0KTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90T3RoZXIodmFsdWVS
ZWdzLCBzY3JhdGNoLmdwcigpKSk7CisgICAgbV9qaXQubG9hZFB0cihnbG9iYWxPYmplY3QtPmFk
ZHJlc3NPZkdsb2JhbFRoaXMoKSwgdmFsdWVHUFIpOwogCi0gICAganNWYWx1ZVJlc3VsdCh0ZW1w
UmVncywgbm9kZSk7CisgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uVG9PYmplY3QsIHZh
bHVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3Qp
LCB2YWx1ZVJlZ3MsIFRydXN0ZWRJbW1QdHIobnVsbHB0cikpKTsKKyAgICBjZWxsUmVzdWx0KHZh
bHVlR1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtl
eXNPck9iamVjdEdldE93blByb3BlcnR5TmFtZXMoTm9kZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDI3NzAy
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQ1MCw2ICsxNDUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGls
ZUdldEdsb2JhbFZhcmlhYmxlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXRHbG9iYWxWYXJp
YWJsZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0RHluYW1pY1ZhcihOb2RlKik7CisgICAg
dm9pZCBjb21waWxlR2V0VGhpc1ZhbHVlRm9yQ2FsbChOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
UHV0RHluYW1pY1ZhcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0Q2xvc3VyZVZhcihOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlUHV0Q2xvc3VyZVZhcihOb2RlKik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNzcw
MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1MCw2ICszNTAsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNh
bkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBSZXNvbHZlU2NvcGU6CiAgICAgY2FzZSBSZXNvbHZl
U2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOgogICAgIGNhc2UgR2V0RHluYW1pY1ZhcjoK
KyAgICBjYXNlIEdldFRoaXNWYWx1ZUZvckNhbGw6CiAgICAgY2FzZSBQdXREeW5hbWljVmFyOgog
ICAgIGNhc2UgQ29tcGFyZUVxOgogICAgIGNhc2UgQ29tcGFyZUVxUHRyOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjc3
MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjE1LDYgKzE2MTUsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IEdldER5bmFtaWNWYXI6CiAgICAgICAgICAgICBjb21waWxlR2V0RHluYW1pY1ZhcigpOwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDoKKyAgICAg
ICAgICAgIGNvbXBpbGVHZXRUaGlzVmFsdWVGb3JDYWxsKCk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBQdXREeW5hbWljVmFyOgogICAgICAgICAgICAgY29tcGlsZVB1dER5bmFt
aWNWYXIoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjIwMywzMyArMjIwNiwyOSBAQCBwcml2
YXRlOgogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwogCiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHZh
bHVlVHlwZSA9IHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIAogICAgICAg
ICBMQmFzaWNCbG9jayBpc0NlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJh
c2ljQmxvY2sgbm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNC
bG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNv
bnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIAotICAgICAgICBtX291dC5i
cmFuY2goCi0gICAgICAgICAgICBpc0NlbGwodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGls
ZDEoKSkpLCB1c3VhbGx5KGlzQ2VsbENhc2UpLCByYXJlbHkoc2xvd0Nhc2UpKTsKLSAgICAgICAg
Ci0gICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNDZWxsQ2Fz
ZSwgc2xvd0Nhc2UpOwotICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQu
YW5jaG9yKHZhbHVlKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgbV9vdXQu
dGVzdElzWmVybzMyKAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQ4WmVyb0V4dDMyKHZhbHVl
LCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdzKSwKLSAgICAgICAgICAgICAgICBtX291dC5j
b25zdEludDMyKE92ZXJyaWRlc1RvVGhpcykpLAotICAgICAgICAgICAgdXN1YWxseShjb250aW51
YXRpb24pLCByYXJlbHkoc2xvd0Nhc2UpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbCh2
YWx1ZSwgdmFsdWVUeXBlKSwgdXN1YWxseShpc0NlbGxDYXNlKSwgcmFyZWx5KG5vdENlbGxDYXNl
KSk7CiAgICAgICAgIAorICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVu
ZFRvKGlzQ2VsbENhc2UsIG5vdENlbGxDYXNlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgaXNP
YmplY3RSZXN1bHQgPSBtX291dC5hbmNob3IodmFsdWUpOworICAgICAgICBtX291dC5icmFuY2go
aXNPYmplY3QodmFsdWUsIHZhbHVlVHlwZSksIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5
KHNsb3dDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90Q2VsbENhc2UsIHNsb3dD
YXNlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgaXNPdGhlclJlc3VsdCA9IG1fb3V0LmFuY2hv
cihtX291dC5sb2FkUHRyKG1fb3V0LmFic29sdXRlKGdsb2JhbE9iamVjdC0+YWRkcmVzc09mR2xv
YmFsVGhpcygpKSkpOworICAgICAgICBtX291dC5icmFuY2goaXNPdGhlcih2YWx1ZSwgdmFsdWVU
eXBlKSwgdXN1YWxseShjb250aW51YXRpb24pLCByYXJlbHkoc2xvd0Nhc2UpKTsKKwogICAgICAg
ICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgSl9KSVRP
cGVyYXRpb25fR0ogZnVuY3Rpb247Ci0gICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNT
dHJpY3QoKSkKLSAgICAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzU3RyaWN0Owot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpczsKLSAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50
NjQsIGZ1bmN0aW9uLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCB2YWx1ZSkpOworICAgICAg
ICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwg
b3BlcmF0aW9uVG9PYmplY3QsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIHZhbHVlLCBtX291
dC5jb25zdEludFB0cigwKSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAg
ICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsK
LSAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1
bHQpKTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGlzT2JqZWN0UmVzdWx0
LCBpc090aGVyUmVzdWx0LCBzbG93UmVzdWx0KSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxl
VmFsdWVBZGQoKQpAQCAtMTQ0MzUsNiArMTQ0MzQsMjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1f
b3V0LmNvbnN0SW50UHRyKHVpZCksIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5nZXRQdXRJbmZv
KCkpKSk7CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlR2V0VGhpc1ZhbHVlRm9yQ2FsbCgpCisg
ICAgeworICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwor
CisgICAgICAgIExCYXNpY0Jsb2NrIHdpdGhTY29wZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIGVudmlyb25tZW50UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1f
b3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6VmFsdWVVbmRlZmluZWQpKTsKKyAgICAgICAgbV9vdXQu
YnJhbmNoKAorICAgICAgICAgICAgaXNDZWxsV2l0aFR5cGUoc2NvcGUsIEpTVHlwZVJhbmdlIHsg
Rmlyc3RKU1Njb3BlVHlwZSwgTGFzdEpTU2NvcGVUeXBlIH0sIFdURjo6bnVsbG9wdCwgcHJvdmVu
VHlwZShtX25vZGUtPmNoaWxkMSgpKSksCisgICAgICAgICAgICB1c3VhbGx5KGNvbnRpbnVhdGlv
biksIHJhcmVseSh3aXRoU2NvcGVDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5l
eHQgPSBtX291dC5hcHBlbmRUbyh3aXRoU2NvcGVDYXNlLCBjb250aW51YXRpb24pOworICAgICAg
ICBWYWx1ZUZyb21CbG9jayB3aXRoU2NvcGVSZXN1bHQgPSBtX291dC5hbmNob3Ioc2NvcGUpOwor
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5k
VG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhp
KEludDY0LCBlbnZpcm9ubWVudFJlc3VsdCwgd2l0aFNjb3BlUmVzdWx0KSk7CisgICAgfQorCiAg
ICAgdm9pZCBjb21waWxlUHV0RHluYW1pY1ZhcigpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2Vt
YW50aWMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIJKHJldmlz
aW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDIsNyArMTQyLDYgQEAgbW9kdWxlIERTTAogI2luY2x1ZGUgIlBy
aXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVk
ZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVkZSAiVG9UaGlzU3RhdHVzLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkocmV2aXNpb24gMjc3MDI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzNyw3ICsxMzcsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0OjppbnRlcm5hbENvCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0Nhc3Q8
SlNPYmplY3QqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvVGhpcyhnbG9iYWxP
YmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU2xvcHB5TW9kZVRoaXMoZ2xvYmFsT2JqZWN0
KTsKICAgICByZXR1cm4ganNTdHJpbmcodm0sIEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1l
KG9iamVjdCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lv
biAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2Nyw2ICs0NjcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAKICAgICAgICAgREVGSU5FX09QKG9wX3Jlc29sdmVfc2NvcGUpCiAgICAgICAgIERFRklO
RV9PUChvcF9nZXRfZnJvbV9zY29wZSkKKyAgICAgICAgREVGSU5FX09QKG9wX2dldF90aGlzX3Zh
bHVlX2Zvcl9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3RvX3Njb3BlKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZ2V0X2Zyb21fYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3Bf
cHV0X3RvX2FyZ3VtZW50cykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24g
Mjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5
KQpAQCAtNzIwLDYgKzcyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgZW1p
dF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9nZXRfZnJvbV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfZ2V0X3RoaXNfdmFsdWVfZm9yX2NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0aW9uKik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMTcsMjIgKzExMTcsNiBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0CiAgICAgZW1pdFN0b3JlQ2VsbChieXRl
Y29kZS5tX2RzdCwgcmVzdWx0UmVnKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpOwotICAgIGF1dG8mIG1ldGFk
YXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIFN0cnVjdHVyZUlEKiBj
YWNoZWRTdHJ1Y3R1cmVJRCA9ICZtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEOwotICAgIFZp
cnR1YWxSZWdpc3RlciB0aGlzUmVnaXN0ZXIgPSBieXRlY29kZS5tX3NyY0RzdDsKLQotICAgIGVt
aXRMb2FkKHRoaXNSZWdpc3RlciwgcmVnVDMsIHJlZ1QyKTsKLQotICAgIGFkZFNsb3dDYXNlKGJy
YW5jaElmTm90Q2VsbChyZWdUMykpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90VHlwZShy
ZWdUMiwgRmluYWxPYmplY3RUeXBlKSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAgbG9hZDMyKGNhY2hlZFN0cnVj
dHVyZUlELCByZWdUMik7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdU
MCwgcmVnVDIpKTsKLX0KLQogdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BDaGVja1Rkej4oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1MywxOCAr
MTA1Myw0MiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGUoY29uc3QgSW5zdHJ1CiAgICAg
ZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Ro
aXNfdmFsdWVfZm9yX2NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFRoaXNW
YWx1ZUZvckNhbGw+KCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBKU1ZhbHVlUmVncyB2YWx1
ZVJlZ3MocmVnVDApOworI2Vsc2UKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MocmVnVDEsIHJl
Z1QwKTsKKyNlbmRpZgorICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9zY29w
ZSwgdmFsdWVSZWdzKTsKKworICAgIEp1bXAgaXNXaXRoU2NvcGUgPSBicmFuY2hJZk5vdFR5cGUo
dmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgSlNUeXBlUmFuZ2UgeyBGaXJzdEpTU2NvcGVUeXBlLCBM
YXN0SlNTY29wZVR5cGUgfSk7CisgICAgbW92ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCB2
YWx1ZVJlZ3MpOworICAgIGlzV2l0aFNjb3BlLmxpbmsodGhpcyk7CisKKyAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCB2YWx1ZVJlZ3MpOworfQorCiB2b2lkIEpJVDo6
ZW1pdF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCk7
Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0g
ICAgU3RydWN0dXJlSUQqIGNhY2hlZFN0cnVjdHVyZUlEID0gJm1ldGFkYXRhLm1fY2FjaGVkU3Ry
dWN0dXJlSUQ7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3NyY0RzdCwg
cmVnVDEpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzKHJl
Z1QwKTsKKyNlbHNlCisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7Cisj
ZW5kaWYKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fc3JjRHN0LCB2YWx1
ZVJlZ3MpOwogCi0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxKTsKKyAgICBK
dW1wIG5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwodmFsdWVSZWdzKTsKKyAgICBhZGRTbG93Q2Fz
ZShicmFuY2hJZk5vdE9iamVjdCh2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKSk7CisgICAgSnVtcCBk
b25lID0ganVtcCgpOwogCi0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RUeXBlKHJlZ1QxLCBG
aW5hbE9iamVjdFR5cGUpKTsKLSAgICBsb2FkMzIoY2FjaGVkU3RydWN0dXJlSUQsIHJlZ1QyKTsK
LSAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMSwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpKTsKKyAgICBub3RDZWxsLmxpbmsodGhpcyk7
CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RPdGhlcih2YWx1ZVJlZ3MsIHJlZ1QzKSk7Cisg
ICAgc3RvcmVUcnVzdGVkVmFsdWUobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxU
aGlzKCksIGFkZHJlc3NGb3IoYnl0ZWNvZGUubV9zcmNEc3QpKTsKKworICAgIGRvbmUubGluayh0
aGlzKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAy
NzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtODE4LDE0ICs4MTgsMjQgQEAgbGxpbnRPcFdp
dGhSZXR1cm4ob3BfZ2V0X3Njb3BlLCBPcEdldFNjbwogZW5kKQogCiAKLWxsaW50T3BXaXRoTWV0
YWRhdGEob3BfdG9fdGhpcywgT3BUb1RoaXMsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZGF0YSwgcmV0dXJuKQotICAgIGdldChtX3NyY0RzdCwgdDApCi0gICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BUb1RoaXNTbG93Ci0gICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKLSAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEZp
bmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdwotICAgIG1ldGFkYXRhKHQyLCB0MykKLSAgICBs
b2FkaSBPcFRvVGhpczo6TWV0YWRhdGE6Om1fY2FjaGVkU3RydWN0dXJlSURbdDJdLCB0MgotICAg
IGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyLCAub3BUb1RoaXNTbG93CitsbGlu
dE9wKG9wX3RvX3RoaXMsIE9wVG9UaGlzLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKKyAg
ICBsb2FkVmFyaWFibGUoZ2V0LCBtX3NyY0RzdCwgdDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwg
Q2VsbFRhZywgLm9wVG9UaGlzTm90Q2VsbAorICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MF0sIE9i
amVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgpCisKKy5vcFRvVGhpc05vdENl
bGw6CisgICAgb3JpIDEsIHQxCisgICAgYmllcSB0MSwgTnVsbFRhZywgLm9wVG9UaGlzVW5kZWZp
bmVkT3JOdWxsCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdG9fdGhpcykKKyAgICBkaXNw
YXRjaCgpCisKKy5vcFRvVGhpc1VuZGVmaW5lZE9yTnVsbDoKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QyXSwgdDIKKyAg
ICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9nbG9iYWxUaGlzW3QyXSwgdDIKKyAgICBzdG9yZWkg
Q2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCiAgICAgZGlzcGF0Y2goKQogCiAub3BUb1RoaXNTbG93OgpAQCAtMjU1
NCw2ICsyNTY0LDE4IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE8K
IGVuZCkKIAogCitsbGludE9wV2l0aFJldHVybihvcF9nZXRfdGhpc192YWx1ZV9mb3JfY2FsbCwg
T3BHZXRUaGlzVmFsdWVGb3JDYWxsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJu
KQorICAgIGdldChtX3Njb3BlLCB0MCkKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MAorICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MF0sIEZpcnN0SlNTY29wZVR5cGUsIC5p
c1dpdGhTY29wZQorICAgIGJiYSBKU0NlbGw6Om1fdHlwZVt0MF0sIExhc3RKU1Njb3BlVHlwZSwg
LmlzV2l0aFNjb3BlCisgICAgcmV0dXJuKFVuZGVmaW5lZFRhZywgMCkKKworLmlzV2l0aFNjb3Bl
OgorICAgIHJldHVybihDZWxsVGFnLCB0MCkKK2VuZCkKKworCiBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX3B1dF90b19zY29wZSwgT3BQdXRUb1Njb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWRhdGEsIHJldHVybikKICAgICBtYWNybyBwdXRQcm9wZXJ0eSgpCiAgICAgICAgIGdl
dChtX3ZhbHVlLCB0MSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtODI4LDE1ICs4MjgsMjYgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Nj
b3BlLCBPcEdldFNjbwogZW5kKQogCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3BfdG9fdGhpcywg
T3BUb1RoaXMsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQor
bGxpbnRPcChvcF90b190aGlzLCBPcFRvVGhpcywgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gp
CiAgICAgZ2V0KG1fc3JjRHN0LCB0MCkKLSAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCi0gICAg
YnRxbnogdDAsIG5vdENlbGxNYXNrLCAub3BUb1RoaXNTbG93Ci0gICAgYmJuZXEgSlNDZWxsOjpt
X3R5cGVbdDBdLCBGaW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKLSAgICBsb2FkaSBKU0Nl
bGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MQotICAgIG1ldGFkYXRhKHQyLCB0MykKLSAgICBsb2Fk
aSBPcFRvVGhpczo6TWV0YWRhdGE6Om1fY2FjaGVkU3RydWN0dXJlSURbdDJdLCB0MgotICAgIGJp
bmVxIHQxLCB0MiwgLm9wVG9UaGlzU2xvdworICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDEKKyAg
ICBidHFueiB0MSwgbm90Q2VsbE1hc2ssIC5vcFRvVGhpc05vdENlbGwKKyAgICBiYmIgSlNDZWxs
OjptX3R5cGVbdDFdLCBPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93CisgICAgZGlzcGF0Y2goKQor
Cisub3BUb1RoaXNOb3RDZWxsOgorICAgIGFuZHEgflRhZ1VuZGVmaW5lZCwgdDEKKyAgICBicWVx
IHQxLCBWYWx1ZU51bGwsIC5vcFRvVGhpc1VuZGVmaW5lZE9yTnVsbAorICAgICMgYnFlcSB0MSwg
VmFsdWVVbmRlZmluZWQsIC5vcFRvVGhpc1VuZGVmaW5lZE9yTnVsbAorICAgICMgYnFlcSB0MSwg
VmFsdWVOdWxsLCAub3BUb1RoaXNVbmRlZmluZWRPck51bGwKKyAgICBjYWxsU2xvd1BhdGgoX3Ns
b3dfcGF0aF90b190aGlzKQorICAgIGRpc3BhdGNoKCkKKworLm9wVG9UaGlzVW5kZWZpbmVkT3JO
dWxsOgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6
bV9nbG9iYWxPYmplY3RbdDFdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2dsb2Jh
bFRoaXNbdDFdLCB0MQorICAgIHN0b3JlcSB0MSwgW2NmciwgdDAsIDhdCiAgICAgZGlzcGF0Y2go
KQogCiAub3BUb1RoaXNTbG93OgpAQCAtMjY4NCw2ICsyNjk1LDE3IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE8KIGVuZCkKIAogCitsbGludE9wV2l0aFJldHVybihv
cF9nZXRfdGhpc192YWx1ZV9mb3JfY2FsbCwgT3BHZXRUaGlzVmFsdWVGb3JDYWxsLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQorICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fc2Nv
cGUsIHQwKQorICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MF0sIEZpcnN0SlNTY29wZVR5cGUsIC5p
c1dpdGhTY29wZQorICAgIGJiYSBKU0NlbGw6Om1fdHlwZVt0MF0sIExhc3RKU1Njb3BlVHlwZSwg
LmlzV2l0aFNjb3BlCisgICAgcmV0dXJuKFZhbHVlVW5kZWZpbmVkKQorCisuaXNXaXRoU2NvcGU6
CisgICAgcmV0dXJuKHQwKQorZW5kKQorCisKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3Rv
X3Njb3BlLCBPcFB1dFRvU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0
YSwgcmV0dXJuKQogICAgIG1hY3JvIHB1dFByb3BlcnR5KCkKICAgICAgICAgZ2V0KG1fdmFsdWUs
IHQxKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC01NDEs
NiArNTQxLDggQEAgY29uc3QgRmluYWxPYmplY3RUeXBlID0gY29uc3RleHByIEZpbmFsTwogY29u
c3QgSlNGdW5jdGlvblR5cGUgPSBjb25zdGV4cHIgSlNGdW5jdGlvblR5cGUKIGNvbnN0IEFycmF5
VHlwZSA9IGNvbnN0ZXhwciBBcnJheVR5cGUKIGNvbnN0IERlcml2ZWRBcnJheVR5cGUgPSBjb25z
dGV4cHIgRGVyaXZlZEFycmF5VHlwZQorY29uc3QgRmlyc3RKU1Njb3BlVHlwZSA9IGNvbnN0ZXhw
ciBGaXJzdEpTU2NvcGVUeXBlCitjb25zdCBMYXN0SlNTY29wZVR5cGUgPSBjb25zdGV4cHIgTGFz
dEpTU2NvcGVUeXBlCiBjb25zdCBQcm94eU9iamVjdFR5cGUgPSBjb25zdGV4cHIgUHJveHlPYmpl
Y3RUeXBlCiBjb25zdCBIZWFwQmlnSW50VHlwZSA9IGNvbnN0ZXhwciBIZWFwQmlnSW50VHlwZQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNCw3ICs2MDQsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNUCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAKICAgICAvLyAxLiBMZXQgYXJyYXkgYmUg
dGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2JqZWN0IG9uIHRoZSB0aGlzIHZhbHVlLgogICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CkBA
IC02ODIsOSArNjgyLDggQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5j
VAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7
CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxP
YmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHVpbnQ2NF90IGxlbmd0aCA9IHN0YXRpY19jYXN0PHVp
bnQ2NF90Pih0b0xlbmd0aChnbG9iYWxPYmplY3QsIHRoaXNPYmplY3QpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTc3Nyw3ICs3NzYsNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNKCiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gTGV0IE8gYmUgPyBUb09i
amVjdCh0aGlzIHZhbHVlKS4KLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09i
amVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NF
UlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZ
KCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC04MzMs
NyArODMyLDcgQEAgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNyZWF0ZUFycmF5SXRlcmF0bwogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09i
amVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NF
UlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgVU5VU0VEX1BBUkFN
KHNjb3BlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQpAQCAtODYyLDcgKzg2MSw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1AKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogCiAgICAgaWYgKGlzSlNBcnJheSh0
aGlzVmFsdWUpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShhc0FycmF5KHRoaXNWYWx1ZSktPnBvcChnbG9iYWxPYmplY3QpKSk7CkBAIC05MDAsNyAr
ODk5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jUAogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogCiAgICAgaWYgKExJS0VM
WShpc0pTQXJyYXkodGhpc1ZhbHVlKSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAx
KSkgewogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc1ZhbHVlKTsKQEAgLTkz
Niw3ICs5MzUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNSCiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FT
U0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtF
TFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEw
MzgsNyArMTAzNyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1MK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VS
VCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRo
aXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEwNjUsNyArMTA2
NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1MKICAgICAvLyBo
dHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuc2xpY2UK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCgh
IXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNP
YmopKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTEyOSw3ICsxMTI4LDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jUwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2Jh
bE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAg
IEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9i
YWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAh
dGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVu
Y29kZWRKU1ZhbHVlKCk7CkBAIC0xMjM1LDcgKzEyMzQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oYXJyYXlQcm90b0Z1bmNVCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIC8vIDE1LjQuNC4xMwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3Qo
KSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05f
QVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VM
WSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTM3MCw3
ICsxMzY5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jSQogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDE1LjQuNC4x
NAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2Vw
dGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQog
ICAgICAgICByZXR1cm4geyB9OwpAQCAtMTQxMCw3ICsxNDA5LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jTAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAogICAgIC8vIDE1LjQuNC4xNQotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6
c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAg
RVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAg
ICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4geyB9OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHJldmlzaW9uIDI3NzAy
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCSh3b3JraW5n
IGNvcHkpCkBAIC02OCw5ICs2OCw2IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgdXNpbmcg
R2V0T3duUHJvcGVydHlTbG90QnlJbmRleEZ1bmN0aW9uUHRyID0gYm9vbCAoKikoSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBHZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4RnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgpOwogCi0gICAgdXNpbmcgVG9UaGlzRnVuY3Rpb25QdHIgPSBKU1Zh
bHVlICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKTsKLSAgICBUb1RoaXNG
dW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkodG9UaGlzKTsKLQogICAgIHVzaW5nIEdldE93
blByb3BlcnR5TmFtZXNGdW5jdGlvblB0ciA9IHZvaWQgKCopKEpTT2JqZWN0KiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIERvbnRFbnVtUHJvcGVydGllc01vZGUpOwogICAg
IEdldE93blByb3BlcnR5TmFtZXNGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoZ2V0T3du
UHJvcGVydHlOYW1lcyk7CiAgICAgR2V0T3duUHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRyIE1FVEhP
RF9UQUJMRV9FTlRSWShnZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcyk7CkBAIC0xNTIsNyArMTQ5
LDYgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICAgICAgJkNsYXNzTmFtZTo6ZGVsZXRlUHJv
cGVydHlCeUluZGV4LCBcCiAgICAgICAgICZDbGFzc05hbWU6OmdldE93blByb3BlcnR5U2xvdCwg
XAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4LCBcCi0gICAg
ICAgICZDbGFzc05hbWU6OnRvVGhpcywgXAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmdldE93blNwZWNpYWxQcm9wZXJ0eU5h
bWVzLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmN1c3RvbUhhc0luc3RhbmNlLCBcCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJ
KHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0NiwyOCArMzQ2LDggQEAgSlNDX0RF
RklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF90bwogewogICAgIEJFR0lOKCk7CiAgICAg
YXV0byBieXRlY29kZSA9IHBjLT5hczxPcFRvVGhpcz4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9
IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CiAgICAgSlNWYWx1ZSB2MSA9IEdFVChieXRl
Y29kZS5tX3NyY0RzdCkuanNWYWx1ZSgpOwotICAgIGlmICh2MS5pc0NlbGwoKSkgewotICAgICAg
ICBTdHJ1Y3R1cmVJRCBteVN0cnVjdHVyZUlEID0gdjEuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCk7
Ci0gICAgICAgIFN0cnVjdHVyZUlEIG90aGVyU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX2NhY2hl
ZFN0cnVjdHVyZUlEOwotICAgICAgICBpZiAobXlTdHJ1Y3R1cmVJRCAhPSBvdGhlclN0cnVjdHVy
ZUlEKSB7Ci0gICAgICAgICAgICBpZiAob3RoZXJTdHJ1Y3R1cmVJRCkKLSAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5tX3RvVGhpc1N0YXR1cyA9IFRvVGhpc0NvbmZsaWN0ZWQ7Ci0gICAgICAgICAg
ICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEID0gbXlTdHJ1Y3R1cmVJRDsKLSAgICAgICAg
ICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jaywgdm0uZ2V0U3RydWN0dXJlKG15U3Ry
dWN0dXJlSUQpKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1ldGFkYXRhLm1f
dG9UaGlzU3RhdHVzID0gVG9UaGlzQ29uZmxpY3RlZDsKLSAgICAgICAgbWV0YWRhdGEubV9jYWNo
ZWRTdHJ1Y3R1cmVJRCA9IDA7Ci0gICAgfQotICAgIC8vIE5vdGU6IFdlIG9ubHkgbmVlZCB0byBk
byB0aGlzIHZhbHVlIHByb2ZpbGluZyBoZXJlIG9uIHRoZSBzbG93IHBhdGguIFRoZSBmYXN0IHBh
dGgKLSAgICAvLyBqdXN0IHJldHVybnMgdGhlIGlucHV0IHRvIHRvX3RoaXMgaWYgdGhlIHN0cnVj
dHVyZSBjaGVjayBzdWNjZWVkcy4gSWYgdGhlIHN0cnVjdHVyZQotICAgIC8vIGNoZWNrIHN1Y2Nl
ZWRzLCBkb2luZyB2YWx1ZSBwcm9maWxpbmcgaGVyZSBpcyBlcXVpdmFsZW50IHRvIGRvaW5nIGl0
IHdpdGggYSBwb3RlbnRpYWxseQotICAgIC8vIGRpZmZlcmVudCBvYmplY3QgdGhhdCBzdGlsbCBo
YXMgdGhlIHNhbWUgc3RydWN0dXJlIG9uIHRoZSBmYXN0IHBhdGggc2luY2UgaXQnbGwgcHJvZHVj
ZQotICAgIC8vIHRoZSBzYW1lIFNwZWN1bGF0ZWRUeXBlLiBUaGVyZWZvcmUsIHdlIGRvbid0IG5l
ZWQgdG8gd29ycnkgYWJvdXQgdmFsdWUgcHJvZmlsaW5nIG9uIHRoZQotICAgIC8vIGZhc3QgcGF0
aC4KLSAgICBhdXRvIHZhbHVlID0gdjEudG9UaGlzKGdsb2JhbE9iamVjdCwgYnl0ZWNvZGUubV9l
Y21hTW9kZSk7CisgICAgSlNPYmplY3QqIHZhbHVlID0gdjEudG9TbG9wcHlNb2RlVGhpcyhnbG9i
YWxPYmplY3QpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElOR19DVVNUT00oYnl0ZWNvZGUubV9z
cmNEc3QsIHZhbHVlLCBQUk9GSUxFX1ZBTFVFKHZhbHVlKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCShyZXZpc2lvbiAyNzcwMjYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIzLDYgKzEyMywxNSBAQCBSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGdlbmVy
YXRlTW9kdWxlQnl0CiAgICAgcmV0dXJuIHNlcmlhbGl6ZUJ5dGVjb2RlKHZtLCB1bmxpbmtlZENv
ZGVCbG9jaywgc291cmNlLCBTb3VyY2VDb2RlVHlwZTo6TW9kdWxlVHlwZSwgc3RyaWN0TW9kZSwg
c2NyaXB0TW9kZSwgZmQsIGVycm9yLCB7IH0pOwogfQogCitzdGF0aWMgaW5saW5lIEpTT2JqZWN0
KiB0b0dsb2JhbFRoaXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAg
ICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKTsKKyAgICBpZiAodmFsdWUuaXNP
YmplY3QoKSAmJiBhc09iamVjdCh2YWx1ZSktPmlzR2xvYmFsT2JqZWN0KCkpCisgICAgICAgIHJl
dHVybiBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPih2YWx1ZSktPmdsb2JhbFRoaXMoKTsKKyAgICBy
ZXR1cm4gdmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKK30KKwogSlNWYWx1ZSBldmFsdWF0
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlv
bikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0xMzEsOSArMTQwLDgg
QEAgSlNWYWx1ZSBldmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFJFTEVBU0Vf
QVNTRVJUKHZtLmF0b21TdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21TdHJp
bmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJy
ZW50VGhyZWFkKCkpOwogCi0gICAgaWYgKCF0aGlzVmFsdWUgfHwgdGhpc1ZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpCi0gICAgICAgIHRoaXNWYWx1ZSA9IGdsb2JhbE9iamVjdDsKLSAgICBKU09i
amVjdCogdGhpc09iaiA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1ZS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IHRv
R2xvYmFsVGhpcyhnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSk7CisgICAgc2NvcGUuYXNzZXJ0Tm9F
eGNlcHRpb24oKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHZtLmludGVycHJldGVyLT5leGVjdXRl
UHJvZ3JhbShzb3VyY2UsIGdsb2JhbE9iamVjdCwgdGhpc09iaik7CiAKICAgICBpZiAoc2NvcGUu
ZXhjZXB0aW9uKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUyLDcg
KzM1Miw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRlUHJvdG9GdW5jVG8KIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNW
YWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRGF0ZS5wcm90b3R5cGVbU3ltYm9sLnRvUHJpbWl0aXZlXSBleHBlY3Rl
ZCB8dGhpc3wgdG8gYmUgYW4gb2JqZWN0LiIpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlKTsKQEAgLTg2Niw4ICs4NjYsNyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oZGF0ZVByb3RvRnVuY0dlCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
LSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7Ci0gICAgYXV0
byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFs
dWUpOworICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2Uq
Pih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0
ZU9iaikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUpOwogCkBAIC04ODMsOCArODgyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGRhdGVQ
cm90b0Z1bmNUbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpz
dHJpY3QoKSk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9i
YWxPYmplY3QpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIHRpbWVWYWx1ZSA9IG9iamVjdC0+dG9Q
cmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc3
MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihlcnJvclByb3RvRnVuY1QKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKICAgICAvLyAxLiBMZXQgTyBiZSB0aGUgdGhpcyB2YWx1ZS4KLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnN0cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCk7CiAKICAgICAvLyAyLiBJZiBUeXBlKE8pIGlzIG5vdCBPYmplY3QsIHRocm93IGEg
VHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCShyZXZpc2lvbiAyNzcw
MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDZWxs
OwogICAgIHVzaW5nIERpZ2l0ID0gVUNQVVJlZ2lzdGVyOwogCi0gICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0
dXJlSXNJbW1vcnRhbCB8IE92ZXJyaWRlc1RvVGhpczsKKyAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJ
c0ltbW9ydGFsOwogICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRCaWdJbnQ7CiAKICAgICBERUNMQVJF
X1ZJU0lUX0NISUxEUkVOOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsMjYgKzE2NCw2
IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlKEpTR2wKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotSlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkgY29uc3QKLXsKLSAgICBBU1NF
UlQoIWlzQ2VsbCgpKTsKLQotICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQotICAgICAgICBy
ZXR1cm4gKnRoaXM7Ci0KLSAgICBpZiAoaXNJbnQzMigpIHx8IGlzRG91YmxlKCkpCi0gICAgICAg
IHJldHVybiBjb25zdHJ1Y3ROdW1iZXIoZ2xvYmFsT2JqZWN0LCBhc1ZhbHVlKCkpOwotICAgIGlm
IChpc1RydWUoKSB8fCBpc0ZhbHNlKCkpCi0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RCb29sZWFu
RnJvbUltbWVkaWF0ZUJvb2xlYW4oZ2xvYmFsT2JqZWN0LCBhc1ZhbHVlKCkpOwotI2lmIFVTRShC
SUdJTlQzMikKLSAgICBpZiAoaXNCaWdJbnQzMigpKQotICAgICAgICByZXR1cm4gQmlnSW50T2Jq
ZWN0OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsICp0aGlzKTsKLSNl
bmRpZgotCi0gICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOwotICAgIHJldHVybiBnbG9i
YWxPYmplY3QtPmdsb2JhbFRoaXMoKTsKLX0KLQogSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNp
emVQcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5oCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzMiw3ICsz
MzIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwdXRCeUluZGV4KEpTR2xvYmFsT2JqZWN0KiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKIAogICAgIEpT
VmFsdWUgZ2V0UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAgSlNWYWx1ZSB0
b1RoaXMoSlNHbG9iYWxPYmplY3QqLCBFQ01BTW9kZSkgY29uc3Q7CisgICAgSlNPYmplY3QqIHRv
U2xvcHB5TW9kZVRoaXMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAogICAgIHN0YXRpYyBib29s
IGVxdWFsKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAgICAgc3Rh
dGljIGJvb2wgZXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFs
dWUgdjIpOwpAQCAtNTIyLDcgKzUyMiw2IEBAIHByaXZhdGU6CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNTdHJpbmcqIHRvU3RyaW5nU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqLCBib29sIHJldHVy
bkVtcHR5U3RyaW5nT25FcnJvcikgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgV1RGOjpT
dHJpbmcgdG9XVEZTdHJpbmdTbG93Q2FzZShKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0b09iamVjdFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0
KikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0b1RoaXNTbG93Q2FzZShK
U0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKSBjb25zdDsKIAogICAgIEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IgdTsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTky
OSw5ICs5MjksOSBAQCBpbmxpbmUgY29uc3QgQ2xhc3NJbmZvKiBKU1ZhbHVlOjpjbGFzc0luCiAg
ICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPmNsYXNzSW5mbyh2bSkgOiBudWxscHRyOwog
fQogCi1pbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpIGNvbnN0CitpbmxpbmUgSlNPYmplY3QqIEpTVmFs
dWU6OnRvU2xvcHB5TW9kZVRoaXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QK
IHsKLSAgICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+bWV0aG9kVGFibGUoZ2V0Vk0oZ2xv
YmFsT2JqZWN0KSktPnRvVGhpcyhhc0NlbGwoKSwgZ2xvYmFsT2JqZWN0LCBlY21hTW9kZSkgOiB0
b1RoaXNTbG93Q2FzZShnbG9iYWxPYmplY3QsIGVjbWFNb2RlKTsKKyAgICByZXR1cm4gaXNVbmRl
ZmluZWRPck51bGwoKSA/IGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpIDogdG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKIH0KIAogQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6OmdldChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25z
dApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lv
biAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzcsMTMgKzEzNyw2IEBAIGJvb2wgSlNDZWxsOjpkZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgoSlNDZWwKICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xv
YmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGdsb2Jh
bE9iamVjdCwgaWRlbnRpZmllcik7CiB9CiAKLUpTVmFsdWUgSlNDZWxsOjp0b1RoaXMoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkK
LXsKLSAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgcmV0dXJuIGNlbGw7Ci0g
ICAgcmV0dXJuIGNlbGwtPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Ci19Ci0KIEpTVmFsdWUgSlND
ZWxsOjp0b1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcmVmZXJyZWRQ
cmltaXRpdmVUeXBlIHByZWZlcnJlZFR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKGlzU3RyaW5nKCkp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMjc3
MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE4NCw4ICsxODQsNiBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAKLSAgICBzdGF0aWMg
SlNWYWx1ZSB0b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBFQ01BTW9kZSk7Ci0KICAg
ICBzdGF0aWMgYm9vbCBjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoY29uc3QgU3RydWN0dXJlJik7
CiAgICAgSlNWYWx1ZSBmYXN0R2V0T3duUHJvcGVydHkoVk0mLCBTdHJ1Y3R1cmUmLCBQcm9wZXJ0
eU5hbWUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcwMCw4ICs3MDAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oZ2xvYmFsRnVuY01ha2VUCiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5j
UHJvdG9HZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUuZ2V0UHJvdG90eXBlKGdsb2JhbE9iamVjdCkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT50aGlzVmFsdWUoKS5nZXRQcm90
b3R5cGUoZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9i
YWxGdW5jUHJvdG9TZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCkBAIC03MDksNyArNzA4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGdsb2JhbEZ1bmNQcm90bwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnN0cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBPYmplY3RQcm90
b0NhbGxlZE9uTnVsbE9yVW5kZWZpbmVkRXJyb3IpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
MDAsNyArMTkwMCw3IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWMK
ICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzaG91bGRUaHJv
d0lmQ2FudFNldCwgIkNhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUg
b2JqZWN0Il9zKTsKICAgICB9CiAKLSAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT50b1RoaXMo
dGhpcywgZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpID09IHRoaXMpOworICAgIEFT
U0VSVCghaW5oZXJpdHM8SlNTY29wZT4odm0pKTsKIAogICAgIGlmICh0aGlzLT5nZXRQcm90b3R5
cGVEaXJlY3Qodm0pID09IHByb3RvdHlwZSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yNTU5
LDExICsyNTU5LDYgQEAgSlNTdHJpbmcqIEpTT2JqZWN0Ojp0b1N0cmluZyhKU0dsb2JhbE9iagog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHJpbWl0aXZlLnRvU3RyaW5nKGdsb2JhbE9i
amVjdCkpOwogfQogCi1KU1ZhbHVlIEpTT2JqZWN0Ojp0b1RoaXMoSlNDZWxsKiBjZWxsLCBKU0ds
b2JhbE9iamVjdCosIEVDTUFNb2RlKQotewotICAgIHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihj
ZWxsKTsKLX0KLQogdm9pZCBKU09iamVjdDo6c2VhbChWTSYgdm0pCiB7CiAgICAgaWYgKGlzU2Vh
bGVkKHZtKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAko
cmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjg3LDggKzY4Nyw2IEBAIHB1YmxpYzoKICAgICBKU19F
WFBPUlRfUFJJVkFURSBkb3VibGUgdG9OdW1iZXIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU1N0cmluZyogdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqKSBj
b25zdDsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKTsKLQogICAgIC8vIFRoaXMgZ2V0IGZ1bmN0
aW9uIG9ubHkgbG9va3MgYXQgdGhlIHByb3BlcnR5IG1hcC4KICAgICBKU1ZhbHVlIGdldERpcmVj
dChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJKHJldmlzaW9uIDI3NzAy
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MTcsMTEgKzQxNyw0IEBAIFN5bWJvbFRhYmxlKiBKU1Njb3BlOjpzeW1ib2xU
YWJsZShWTSYgdm0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSlNWYWx1ZSBKU1Njb3BlOjp0
b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNt
YU1vZGUpCi17Ci0gICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCi0gICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwotICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTY29wZS5oCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Njb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgdXNpbmcgVERa
RW52aXJvbm1lbnQgPSBIYXNoU2V0PFJlZlB0cjxVbgogY2xhc3MgSlNTY29wZSA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9i
amVjdDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNUb1RoaXM7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyB2b2lkIHN1YnNw
YWNlRm9yKFZNJikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEwLDEzICs0MTAsNiBAQCBKU09iamVj
dCogSlNTdHJpbmc6OnRvT2JqZWN0KEpTR2xvYmFsT2JqCiAgICAgcmV0dXJuIFN0cmluZ09iamVj
dDo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBjb25zdF9jYXN0PEpT
U3RyaW5nKj4odGhpcykpOwogfQogCi1KU1ZhbHVlIEpTU3RyaW5nOjp0b1RoaXMoSlNDZWxsKiBj
ZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKLXsK
LSAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgcmV0dXJuIGNlbGw7Ci0gICAg
cmV0dXJuIFN0cmluZ09iamVjdDo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2Jq
ZWN0LCBhc1N0cmluZyhjZWxsKSk7Ci19Ci0KIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3Bl
cnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHB1
YmxpYzoKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMjk1NgogICAgIC8vIERvIHdlIHJlYWxseSBuZWVkIEludGVyY2VwdHNHZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8/CiAgICAgLy8gRklYTUU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI5NTgKLSAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlT
bG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgU3RydWN0dXJlSXNJbW1vcnRhbCB8
IE92ZXJyaWRlc1RvVGhpczsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNO
b3RaZXJvIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lk
IGRlc3Ryb3koSlNDZWxsKiBjZWxsKQpAQCAtMjM3LDggKzIzNyw2IEBAIHByb3RlY3RlZDoKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAotICAgIHN0
YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKTsK
LQogICAgIFN0cmluZ1ZpZXcgdW5zYWZlVmlldyhKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogCiAg
ICAgZnJpZW5kIEpTU3RyaW5nKiBqc1N0cmluZyhWTSYsIGNvbnN0IFN0cmluZyYpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJKHJldmlzaW9uIDI3NzAyNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDcsNiArMTA3LDggQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICAvLyBFbmQgZW52
aXJvbm1lbnQgcmVjb3JkIHR5cGVzLgogICAgIFdpdGhTY29wZVR5cGUsCiAgICAgLy8gRW5kIEpT
U2NvcGUgdHlwZXMuCisgICAgRmlyc3RKU1Njb3BlVHlwZSA9IEdsb2JhbE9iamVjdFR5cGUsCisg
ICAgTGFzdEpTU2NvcGVUeXBlID0gV2l0aFNjb3BlVHlwZSwKIAogICAgIE1vZHVsZU5hbWVzcGFj
ZU9iamVjdFR5cGUsCiAgICAgUmVnRXhwT2JqZWN0VHlwZSwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNyArNDEsNiBAQCBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE1hc3F1ZXJhZGVzQXNVCiBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSAx
IDw8IDE7CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE92ZXJyaWRlc0dldENhbGxEYXRhID0g
MSA8PCAyOyAvLyBOZWVkIHRoaXMgZmxhZyBpZiB5b3UgaW1wbGVtZW50IFtbQ2FsbGFibGVdXSBp
bnRlcmZhY2UsIHdoaWNoIG1lYW5zIG92ZXJyaWRpbmcgZ2V0Q2FsbERhdGEuIFRoZSBvYmplY3Qg
bWF5IG5vdCBiZSBjYWxsYWJsZSBzaW5jZSBnZXRDYWxsRGF0YSBjYW4gc2F5IGl0IGlzIG5vdCBj
YWxsYWJsZS4KIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90ID0gMSA8PCAzOwotc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNUb1Ro
aXMgPSAxIDw8IDQ7IC8vIElmIHRoaXMgaXMgZmFsc2UgdGhlbiB0aGlzIHJldHVybnMgc29tZXRo
aW5nIG90aGVyIHRoYW4gJ3RoaXMnLiBOb24tb2JqZWN0IGNlbGxzIHRoYXQgYXJlIHZpc2libGUg
dG8gSlMgaGF2ZSB0aGlzIHNldCBhcyBkbyBzb21lIGV4b3RpYyBvYmplY3RzLgogc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlID0gMSA8PCA1Owogc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBUeXBlSW5mb1BlckNlbGxCaXQgPSAxIDw8IDc7IC8vIFVubGlr
ZSBvdGhlciBpbmxpbmUgZmxhZ3MsIHRoaXMgd2lsbCBvbmx5IGJlIHNldCBvbiB0aGUgY2VsbCBp
dHNlbGYgYW5kIHdpbGwgbm90IGJlIHNldCBvbiB0aGUgU3RydWN0dXJlLgogCkBAIC05OCw3ICs5
Nyw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBvdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QoSW5saW5lVHlwZUZsYWdzIGZsYWdzKSB7IHJldHVybiBmbGFncyAmIE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdDsgfQogICAgIHN0YXRpYyBib29sIGhhc1N0YXRpY1Byb3BlcnR5VGFibGUo
SW5saW5lVHlwZUZsYWdzIGZsYWdzKSB7IHJldHVybiBmbGFncyAmIEhhc1N0YXRpY1Byb3BlcnR5
VGFibGU7IH0KICAgICBzdGF0aWMgYm9vbCBwZXJDZWxsQml0KElubGluZVR5cGVGbGFncyBmbGFn
cykgeyByZXR1cm4gZmxhZ3MgJiBUeXBlSW5mb1BlckNlbGxCaXQ7IH0KLSAgICBib29sIG92ZXJy
aWRlc1RvVGhpcygpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczE8T3ZlcnJpZGVzVG9UaGlz
PigpOyB9CiAgICAgYm9vbCBzdHJ1Y3R1cmVJc0ltbW9ydGFsKCkgY29uc3QgeyByZXR1cm4gaXNT
ZXRPbkZsYWdzMjxTdHJ1Y3R1cmVJc0ltbW9ydGFsPigpOyB9CiAgICAgYm9vbCBvdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMjxPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eU5hbWVzPigpOyB9CiAgICAgYm9vbCBvdmVycmlkZXNHZXRPd25TcGVj
aWFsUHJvcGVydHlOYW1lcygpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczI8T3ZlcnJpZGVz
R2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXM+KCk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc3MDI2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBPYmplY3RQcm90b3R5cGUqIE9iamVjdFBy
b3RvdHlwZTo6Y3JlYXRlCiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1
bmNWYWx1ZU9mLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQogewotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBKU09iamVjdCogdmFsdWVP
YmogPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFko
IXZhbHVlT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC05Myw4ICs5
Myw3IEBAIGJvb2wgb2JqZWN0UHJvdG90eXBlSGFzT3duUHJvcGVydHkoSlNHbG8KIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gYmFzZS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
dGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBiYXNlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCgh
IXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRo
aXNPYmplY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzUsOCArMTM0LDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuYwogICAgIGlmICghY2FsbEZyYW1l
LT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbihmYWxzZSkpOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7Ci0g
ICAgSlNPYmplY3QqIHRoaXNPYmogPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
KyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkg
PT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVy
biBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTU5LDcgKzE1Nyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihvYmplY3RQcm90b0Z1bmMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFs
T2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAogICAgIEpTVmFsdWUgZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKQEAgLTE4Niw3
ICsxODQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jCiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIHNldCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMSk7CkBAIC0yMTMsNyArMjExLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKG9iamVjdFByb3RvRnVuYwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJv
cGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKQEAgLTI0Myw3ICsyNDEsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCku
dG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwpAQCAtMjc2LDcgKzI3NCw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmMKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxP
YmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBK
U09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKQEAgLTI5Nyw3ICsyOTUsNyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jCiAgICAgLy8gMi4gSW52b2tlKFYsICJ0
b1N0cmluZyIpCiAKICAgICAvLyBMZXQgTyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgVG9PYmpl
Y3QgcGFzc2luZyB0aGUgdGhpcyB2YWx1ZSBhcyB0aGUgYXJndW1lbnQuCi0gICAgSlNPYmplY3Qq
IG9iamVjdCA9IHRoaXNWYWx1ZS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0
KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXNW
YWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgLy8gTGV0IHRvU3RyaW5nIGJlIHRoZSBPLltb
R2V0XV0oInRvU3RyaW5nIiwgVikKQEAgLTM5Niw4ICszOTQsNyBAQCBKU1N0cmluZyogb2JqZWN0
UHJvdG90eXBlVG9TdHJpbmcoSlNHbG9iCiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmpl
Y3RQcm90b0Z1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdFByb3RvdHlwZVRvU3RyaW5nKGdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3RQcm90
b3R5cGVUb1N0cmluZyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm94eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJveHlPYmplY3QuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNSw3
ICs1MjUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocGVyZm9ybVByb3h5Q2FsCiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsK
LSAgICBhcmd1bWVudHMuYXBwZW5kKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2Jh
bE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKSk7CisgICAgYXJndW1lbnRzLmFwcGVuZChjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBhcmd1bWVudHMuYXBwZW5kKGFyZ0FycmF5KTsKICAg
ICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwogICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZ2xvYmFsT2JqZWN0LCBhcHBseU1ldGhv
ZCwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cykpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc3
MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDcgKzIxMiw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihyZWdFeHBQcm90b0Z1bmMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzdHJpY3QoKSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuaAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcg
KzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBTeW1ib2wgZmluYWwgOiBwdWJsaWMgSlND
ZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0
cnVjdHVyZUlzSW1tb3J0YWwgfCBPdmVycmlkZXNUb1RoaXM7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0
dXJlSXNJbW1vcnRhbDsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA1LTA1ICBBbGV4ZXkgU2h2YXlrYSAgPHNo
dmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBBYm9saXNoIHVzaW5nIHJlc29s
dmVkIHNjb3BlIGFzIHx0aGlzfCB2YWx1ZSB3aGVuIGNhbGxpbmcgZnVuY3Rpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklETE9wZXJhdGlvbjxKU0RP
TVdpbmRvdz46OmNhc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0
b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OklETE9wZXJhdGlvbjxKU0V2ZW50VGFyZ2V0Pjo6Y2Fs
bCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAg
ICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKwogMjAyMS0wNS0wNSAgU2FtIFdlaW5pZyAg
PHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHByZWxpbWluYXJ5IHN1cHBvcnQgZm9y
IHNwZWNpZnlpbmcgYSBjb2xvciBzcGFjZSBmb3IgMkQgY2FudmFzCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAy
NzcwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNET01XCiAKIHRlbXBsYXRlPD4gaW5saW5lIEpTRE9NV2luZG93KiBJ
RExPcGVyYXRpb248SlNET01XaW5kb3c+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKIHsKLSAgICByZXR1cm4gdG9KU0RPTVdp
bmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKS50b1Ro
aXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6RUNNQU1vZGU6OnNsb3BweSgpKSk7CisgICAg
cmV0dXJuIHRvSlNET01XaW5kb3cobGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCBjYWxsRnJhbWUu
dGhpc1ZhbHVlKCkudG9TbG9wcHlNb2RlVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCkpOwogfQog
CiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX29w
ZW5EYXRhYmFzZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRD
dXN0b20uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
VGFyZ2V0Q3VzdG9tLmgJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgICAgIGF1dG8gdGhpc09iamVjdCA9IGpzRXZlbnRUYXJnZXRDYXN0KHZtLCBj
YWxsRnJhbWUudGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVD
TUFNb2RlOjpzbG9wcHkoKSkpOworICAgICAgICBhdXRvIHRoaXNPYmplY3QgPSBqc0V2ZW50VGFy
Z2V0Q2FzdCh2bSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvU2xvcHB5TW9kZVRoaXMoJmxleGlj
YWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAg
ICAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgIkV2ZW50VGFyZ2V0Iiwgb3BlcmF0aW9uTmFtZSk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShy
ZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtNDgyNSw3ICs0ODI1LDcgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IFZNJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpO1xuIik7CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIGRlY29kZWRUaGlzVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKGRlY29kZWRUaGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSlcbiIpOwot
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGRlY29kZWRUaGlzVmFsdWUg
PSBKU1ZhbHVlKCZsZXhpY2FsR2xvYmFsT2JqZWN0KS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlOjpzbG9wcHkoKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZSgmbGV4aWNhbEdsb2JhbE9i
amVjdCkudG9TbG9wcHlNb2RlVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCk7XG4iKTsKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAkY2FzdGluZ0Z1bmN0aW9uKHZt
LCBkZWNvZGVkVGhpc1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ9XG5cbiIpOwogICAgICAgICB9IGVsc2UgewpAQCAtNDg0Miw3ICs0ODQyLDcgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgIyBGSVhNRTogTWFrZSBjb25zaXN0ZW50IElE
TEF0dHJpYnV0ZTw+OjpjYXN0IGFuZCBJRExPcGVyYXRpb248Pjo6Y2FzdCBpbiBjYXNlIG9mIEN1
c3RvbVByb3h5VG9KU09iamVjdC4KICAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIzNzU4CiAgICAgICAgIG15ICRjYXN0aW5nRnVuY3Rpb24gPSAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21Qcm94eVRvSlNPYmplY3R9ID8gInRv
JHtjbGFzc05hbWV9IiA6IEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2Up
OwotICAgICAgICBteSAkdGhpc1ZhbHVlID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q3VzdG9tUHJveHlUb0pTT2JqZWN0fSA/ICJjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9UaGlz
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpIiA6ICJjYWxsRnJhbWUu
dGhpc1ZhbHVlKCkiOworICAgICAgICBteSAkdGhpc1ZhbHVlID0gJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHJveHlUb0pTT2JqZWN0fSA/ICJjYWxsRnJhbWUudGhpc1Zh
bHVlKCkudG9TbG9wcHlNb2RlVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCkiIDogImNhbGxGcmFt
ZS50aGlzVmFsdWUoKSI7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidGVtcGxhdGU8PiBp
bmxpbmUgJHtjbGFzc05hbWV9KiBJRExPcGVyYXRpb248JHtjbGFzc05hbWV9Pjo6Y2FzdChKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUpXG4i
KTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgcmV0dXJuICRjYXN0aW5nRnVuY3Rpb24oSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCksICR0aGlzVmFsdWUpO1xuIik7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzcw
MjYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAyMS0wNS0wNSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+
CisKKyAgICAgICAgW0pTQ10gQWJvbGlzaCB1c2luZyByZXNvbHZlZCBzY29wZSBhcyB8dGhpc3wg
dmFsdWUgd2hlbiBjYWxsaW5nIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1Mzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBqcy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3Ry
dWN0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWxp
dGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi5qczoKKwogMjAyMS0wNS0wNSAgU2FtIFdlaW5p
ZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHByZWxpbWluYXJ5IHN1cHBvcnQg
Zm9yIHNwZWNpZnlpbmcgYSBjb2xvciBzcGFjZSBmb3IgMkQgY2FudmFzCkluZGV4OiBMYXlvdXRU
ZXN0cy9qcy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQt
Y29uc3RydWN0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc3MDI2KQorKysgTGF5b3V0VGVz
dHMvanMvb2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTYzLDggKzYzLDEwIEBAIFBBU1MgISFPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHsKIFBBU1MgISFPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KHtzZXQgNDIodmFsdWUpe319LCAnNDInKS5zZXQgaXMgdHJ1ZQogUEFTUyB0aGlzLl9fcHJvdG9f
XyA9IFtdIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBzZXQgcHJvdG90eXBlIG9m
IGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0LgogUEFTUyAoe19fcHJvdG9fXzogdGhpcy5fX3By
b3RvX199KSBpbnN0YW5jZW9mIEFycmF5IGlzIGZhbHNlCi1QQVNTIF9fcHJvdG9fXyA9IFtdIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5cGUuX19wcm90b19fIGNhbGxl
ZCBvbiBudWxsIG9yIHVuZGVmaW5lZC4KLVBBU1MgKHtfX3Byb3RvX186IF9fcHJvdG9fX30pIGlu
c3RhbmNlb2YgQXJyYXkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5v
dCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ19fcHJvdG9fXycpLgorUEFTUyBfX3Byb3RvX18gPSBb
XSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiBpbW11
dGFibGUgcHJvdG90eXBlIG9iamVjdC4KK1BBU1MgKHtfX3Byb3RvX186IF9fcHJvdG9fX30pIGlu
c3RhbmNlb2YgQXJyYXkgaXMgZmFsc2UKK1BBU1MgX19wcm90b19fIGlzIE9iamVjdC5nZXRQcm90
b3R5cGVPZihnbG9iYWxUaGlzKQorUEFTUyBfX3Byb3RvX18gPSBfX3Byb3RvX18gaXMgT2JqZWN0
LmdldFByb3RvdHlwZU9mKGdsb2JhbFRoaXMpCiBTeW50YXhFcnJvcnMKIFBBU1MgKHticmVha30p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAnYnJl
YWsnIGFzIGEgc2hvcnRoYW5kIHByb3BlcnR5IG5hbWUuLgogUEFTUyAoe2Nhc2V9KSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ2Nhc2UnIGFzIGEg
c2hvcnRoYW5kIHByb3BlcnR5IG5hbWUuLgpJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL29iamVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24uanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL29iamVjdC1saXRlcmFsLXNob3J0aGFuZC1j
b25zdHJ1Y3Rpb24uanMJKHJldmlzaW9uIDI3NzAyNikKKysrIExheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTIsOCArMTEyLDEyIEBAIHNob3VsZEJlVHJ1ZSgiISFPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXMKIC8vIF9fcHJvdG9fXyBzaG9ydGhhbmQgc2hvdWxkIG5vdCBtb2RpZnkgdGhl
IHByb3RvdHlwZS4KIHNob3VsZFRocm93KCJ0aGlzLl9fcHJvdG9fXyA9IFtdIik7CiBzaG91bGRC
ZUZhbHNlKCIoe19fcHJvdG9fXzogdGhpcy5fX3Byb3RvX199KSBpbnN0YW5jZW9mIEFycmF5Iik7
Ci1zaG91bGRUaHJvdygiX19wcm90b19fID0gW10iLCAnIlR5cGVFcnJvcjogT2JqZWN0LnByb3Rv
dHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkIicpOwotc2hvdWxkVGhy
b3coIih7X19wcm90b19fOiBfX3Byb3RvX199KSBpbnN0YW5jZW9mIEFycmF5IiwgJyJUeXBlRXJy
b3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nIFwnX19wcm90b19fXCcp
IicpOworCisvLyBfX3Byb3RvX18gZ2V0dGVyIC8gc2V0dGVyIGNhbGxlZCBvbiBnbG9iYWwgb2Jq
ZWN0CitzaG91bGRUaHJvdygiX19wcm90b19fID0gW10iLCAnIlR5cGVFcnJvcjogQ2Fubm90IHNl
dCBwcm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlwZSBvYmplY3QiJyk7CitzaG91bGRCZUZh
bHNlKCIoe19fcHJvdG9fXzogX19wcm90b19ffSkgaW5zdGFuY2VvZiBBcnJheSIpOworc2hvdWxk
QmUoIl9fcHJvdG9fXyIsICJPYmplY3QuZ2V0UHJvdG90eXBlT2YoZ2xvYmFsVGhpcykiKTsKK3No
b3VsZEJlKCJfX3Byb3RvX18gPSBfX3Byb3RvX18iLCAiT2JqZWN0LmdldFByb3RvdHlwZU9mKGds
b2JhbFRoaXMpIik7CiAKIC8vIEtleXdvcmRzIC0gU3ludGF4IEVycm9ycwogZGVidWcoIlN5bnRh
eEVycm9ycyIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427844</attachid>
            <date>2021-05-05 20:00:21 -0700</date>
            <delta_ts>2021-05-24 11:37:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225397-20210506060019.patch</filename>
            <type>text/plain</type>
            <size>134721</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzcwMjYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTA1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBBYm9saXNoIHVzaW5nIHJlc29sdmVkIHNjb3Bl
IGFzIHx0aGlzfCB2YWx1ZSB3aGVuIGNhbGxpbmcgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9iaWctaW50LXNwZWMtdG8t
dGhpcy5qczoKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1zdHJpY3Qtc3BlYy10by10aGlzLmpz
OgorICAgICAgICAqIHN0cmVzcy92YXJpYWJsZS1uYW1lZC1ldmFsLmpzOiBBZGRlZC4KKwogMjAy
MS0wNS0wMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHN5
bnRheCBlcnJvciBtZXNzYWdlIGZvciBBVVRPUExVU1BMVVMgdG9rZW4uCkluZGV4OiBKU1Rlc3Rz
L3N0cmVzcy9iaWctaW50LXNwZWMtdG8tdGhpcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0
cmVzcy9iaWctaW50LXNwZWMtdG8tdGhpcy5qcwkocmV2aXNpb24gMjc3MDI2KQorKysgSlNUZXN0
cy9zdHJlc3MvYmlnLWludC1zcGVjLXRvLXRoaXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSwzIEBACi0vL0Agc2tpcCBpZiBub3QgJGppdFRlc3RzCi0vL0AgcnVuRGVmYXVsdCgiLS11c2VD
b25jdXJyZW50SklUPWZhbHNlIikKLQogZnVuY3Rpb24gYXNzZXJ0KGEpIHsKICAgICBpZiAoIWEp
CiAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIpOwpAQCAtMTgsNiArMTUs
MyBAQCBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDA7IGkrKykgewogICAgIGFzc2VydChmb28uYXBwbHkoMzAwKSA9PT0gIm9iamVjdCIp
OwogfQotCi1hc3NlcnQobnVtYmVyT2ZERkdDb21waWxlcyhmb28pID09PSAxKTsKLQpJbmRleDog
SlNUZXN0cy9zdHJlc3MvYmlnLWludC1zdHJpY3Qtc3BlYy10by10aGlzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEpTVGVzdHMvc3RyZXNzL2JpZy1pbnQtc3RyaWN0LXNwZWMtdG8tdGhpcy5qcwkocmV2aXNp
b24gMjc3MDI2KQorKysgSlNUZXN0cy9zdHJlc3MvYmlnLWludC1zdHJpY3Qtc3BlYy10by10aGlz
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMyBAQAotLy9AIHJ1bkRlZmF1bHQoIi0tdXNl
Q29uY3VycmVudEpJVD1mYWxzZSIpCi0KIGZ1bmN0aW9uIGFzc2VydChhKSB7CiAgICAgaWYgKCFh
KQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKTsKQEAgLTE4LDYgKzE2
LDMgQEAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CiBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDAwOyBpKyspIHsKICAgICBhc3NlcnQoZm9vLmFwcGx5KDMwMCkgPT09ICJudW1iZXIi
KTsKIH0KLQotYXNzZXJ0KG51bWJlck9mREZHQ29tcGlsZXMoZm9vKSA+IDEpOwotCkluZGV4OiBK
U1Rlc3RzL3N0cmVzcy9nbG9iYWwtb2JqZWN0LWFjY2Vzc29yLXByb3BlcnR5LXRoaXMtdmFsdWUu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZ2xvYmFsLW9iamVjdC1hY2Nlc3Nvci1w
cm9wZXJ0eS10aGlzLXZhbHVlLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL2ds
b2JhbC1vYmplY3QtYWNjZXNzb3ItcHJvcGVydHktdGhpcy12YWx1ZS5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihg
QmFkIHZhbHVlOiAke2FjdHVhbH0uYCk7Cit9CisKK3ZhciBfX2Zvb19fID0gLTE7CisoZnVuY3Rp
b24gc2FtZVJlYWxtKCkgeworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShnbG9iYWxUaGlzLCAi
Zm9vIiwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICBzaG91bGRCZSh0aGlzLCBnbG9i
YWxUaGlzKTsKKyAgICAgICAgICAgIHJldHVybiBfX2Zvb19fOworICAgICAgICB9LAorICAgICAg
ICBzZXQodmFsdWUpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKHRoaXMsIGdsb2JhbFRoaXMpOwor
ICAgICAgICAgICAgX19mb29fXyA9IHZhbHVlOworICAgICAgICB9LAorICAgIH0pOworCisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxZTY7IGkrKykgeworICAgICAgICBzaG91bGRCZShmb28sIGkg
LSAxKTsKKyAgICAgICAgZm9vID0gaTsKKyAgICAgICAgc2hvdWxkQmUoZm9vLCBpKTsKKyAgICB9
Cit9KSgpOworCisoZnVuY3Rpb24gY3Jvc3NSZWFsbSgpIHsKKyAgICBjb25zdCBPdGhlckZ1bmN0
aW9uID0gJHZtLmNyZWF0ZUdsb2JhbE9iamVjdCgpLkZ1bmN0aW9uOworCisgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KGdsb2JhbFRoaXMsICJiYXIiLCB7CisgICAgICAgIGdldDogbmV3IE90aGVy
RnVuY3Rpb24oInJldHVybiB0aGlzOyIpLAorICAgICAgICBzZXQ6IG5ldyBPdGhlckZ1bmN0aW9u
KCJ2YWx1ZSIsICJ2YWx1ZS50aGlzVmFsdWUgPSB0aGlzOyIpLAorICAgIH0pOworCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxZTY7IGkrKykgeworICAgICAgICBzaG91bGRCZShiYXIsIGdsb2Jh
bFRoaXMpOworCisgICAgICAgIGxldCB2YWx1ZSA9IHt9OworICAgICAgICBiYXIgPSB2YWx1ZTsK
KyAgICAgICAgc2hvdWxkQmUodmFsdWUudGhpc1ZhbHVlLCBnbG9iYWxUaGlzKTsKKyAgICB9Cit9
KSgpOwpJbmRleDogSlNUZXN0cy9zdHJlc3MvdmFyaWFibGUtbmFtZWQtZXZhbC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy92YXJpYWJsZS1uYW1lZC1ldmFsLmpzCShub25leGlzdGVu
dCkKKysrIEpTVGVzdHMvc3RyZXNzL3ZhcmlhYmxlLW5hbWVkLWV2YWwuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxOSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YEJhZCB2YWx1ZTogJHthY3R1YWx9LmApOworfQorCitsZXQgZXZhbDsKKworKGZ1bmN0aW9uIHRo
aXNWYWx1ZSgpIHsKKyAgICBldmFsID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9OworICAg
IHNob3VsZEJlKGV2YWwoKSwgZ2xvYmFsVGhpcyk7CisKKyAgICBldmFsID0gZnVuY3Rpb24oKSB7
ICJ1c2Ugc3RyaWN0IjsgcmV0dXJuIHRoaXM7IH07CisgICAgc2hvdWxkQmUoZXZhbCgpLCB1bmRl
ZmluZWQpOworCisgICAgY29uc3QgYmluZGluZ09iamVjdCA9IHsgZXZhbCB9OworICAgIHdpdGgg
KGJpbmRpbmdPYmplY3QpIHsKKyAgICAgICAgc2hvdWxkQmUoZXZhbCgpLCBiaW5kaW5nT2JqZWN0
KTsKKyAgICB9Cit9KSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTQxIEBACisyMDIxLTA1LTA1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2Fs
ZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBBYm9saXNoIHVzaW5nIHJlc29sdmVkIHNj
b3BlIGFzIHx0aGlzfCB2YWx1ZSB3aGVuIGNhbGxpbmcgZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9BUElDYWxsYmFja0Z1bmN0
aW9uLmg6CisgICAgICAgIChKU0M6OkFQSUNhbGxiYWNrRnVuY3Rpb246OmNhbGxJbXBsKToKKyAg
ICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxJbXBsKToKKyAgICAgICAgKiBBUEkvSlNDb250
ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTQ29udGV4dEdldEdsb2JhbE9iamVjdCk6CisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3Bw
OgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZUxM
SW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKiBieXRlY29kZS9Ub1RoaXNTdGF0dXMuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1RvVGhpc1N0YXR1cy5oOiBSZW1vdmVkLgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0RnVuY3Rpb25Gcm9tU2NvcGUpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aGFzUGFyZW50V2l0aFNjb3BlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUb1RoaXMpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpUYWdnZWRUZW1wbGF0ZU5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkV2YWxGdW5jdGlvbkNhbGxOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6
OkRlYnVnZ2VyQ2FsbEZyYW1lOjp0aGlzVmFsdWUgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
IChKU0M6OkRGRzo6aXNUb1RoaXNBbklkZW50aXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVy
aXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZv
bGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cFRvVGhpcyk6CisgICAgICAgICogZGZnL0RG
R0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAqIGRmZy9E
RkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzRUNNQU1vZGUpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmVjbWFNb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUu
aDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFRoaXNWYWx1ZUZv
ckNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9UaGlz
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6Cisg
ICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVRvVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVHZXRUaGlzVmFsdWVGb3JDYWxsKToKKyAgICAgICAgKiBnZW5lcmF0
b3IvRFNMLnJiOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHA6
CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENvbnN0
cnVjdG9yTmFtZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAq
IGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF90aGlz
X3ZhbHVlX2Zvcl9jYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3RoaXMpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfdG9fdGhpcyk6IERlbGV0ZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpjcmVhdGVBcnJheUl0ZXJhdG9yT2JqZWN0KToKKyAg
ICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKToK
KyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjp0b0dsb2Jh
bFRoaXMpOgorICAgICAgICAoSlNDOjpldmFsdWF0ZSk6CisgICAgICAgICogcnVudGltZS9EYXRl
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToK
KyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6
dG9UaGlzU2xvd0Nhc2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNW
YWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6dG9TbG9wcHlNb2RlVGhpcyBjb25zdCk6CisgICAgICAgIChKU0M6OkpT
VmFsdWU6OnRvVGhpcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0NlbGwu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvVGhpcyk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAg
ICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldFBy
b3RvdHlwZVdpdGhDeWNsZUNoZWNrKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRvVGhpcyk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkpTU2NvcGU6OnRvVGhpcyk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmlu
Zy5jcHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp0b1RoaXMpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6cGVy
Q2VsbEJpdCk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpvdmVycmlkZXNUb1RoaXMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6b2JqZWN0
UHJvdG90eXBlSGFzT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbC5oOgorCiAyMDIxLTA1LTAz
ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggc3ludGF4IGVy
cm9yIG1lc3NhZ2UgZm9yIEFVVE9QTFVTUExVUyB0b2tlbi4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTgzLDcgKzU4Myw2IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUEKICAgICBieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5oCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKICAgICBieXRlY29kZS9T
dXBlclNhbXBsZXIuaAotICAgIGJ5dGVjb2RlL1RvVGhpc1N0YXR1cy5oCiAgICAgYnl0ZWNvZGUv
VHlwZUxvY2F0aW9uLmgKICAgICBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCiAgICAgYnl0
ZWNvZGUvVW5saW5rZWRFdmFsQ29kZUJsb2NrLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw2IEBAIGJ5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQKIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAog
Ynl0ZWNvZGUvU3R1YkluZm9TdW1tYXJ5LmNwcAogYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAot
Ynl0ZWNvZGUvVG9UaGlzU3RhdHVzLmNwcAogYnl0ZWNvZGUvVHJhY2tlZFJlZmVyZW5jZXMuY3Bw
CiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYWxs
YmFja0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9B
UElDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3
ICs0Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEFQSUNhbGxiYWNrRnVuY3Rpb246OmNhbGwKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNDb250ZXh0UmVmIGV4
ZWNSZWYgPSB0b1JlZihnbG9iYWxPYmplY3QpOwogICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVm
ID0gdG9SZWYoY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKLSAgICBKU09iamVjdFJlZiB0aGlzT2Jq
UmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKSk7CisgICAgSlNPYmplY3RSZWYg
dGhpc09ialJlZiA9IHRvUmVmKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9TbG9wcHlNb2RlVGhp
cyhnbG9iYWxPYmplY3QpKTsKIAogICAgIGludCBhcmd1bWVudENvdW50ID0gc3RhdGljX2Nhc3Q8
aW50PihjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgVmVjdG9yPEpTVmFsdWVSZWYs
IDE2PiBhcmd1bWVudHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkocmV2aXNpb24gMjc3MDI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU1MCw3ICs1NTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46CiAKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGdsb2JhbE9i
amVjdCk7CiAgICAgSlNPYmplY3RSZWYgZnVuY3Rpb25SZWYgPSB0b1JlZihjYWxsRnJhbWUtPmpz
Q2FsbGVlKCkpOwotICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNP
YmplY3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFN
b2RlOjpzbG9wcHkoKSkpKTsKKyAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKS50b1Nsb3BweU1vZGVUaGlzKGdsb2JhbE9iamVjdCkpOwogICAg
IAogICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pio+KHRvSlMoZnVuY3Rpb25SZWYpKS0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFz
cyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlmIChKU09iamVjdENhbGxBc0Z1
bmN0aW9uQ2FsbGJhY2sgY2FsbEFzRnVuY3Rpb24gPSBqc0NsYXNzLT5jYWxsQXNGdW5jdGlvbikg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAkocmV2
aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNyArMTkxLDcgQEAgSlNPYmplY3RSZWYgSlNDb250
ZXh0R2V0R2xvYmFsT2JqZWN0KEpTQwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIHJldHVybiB0b1JlZihqc0Nhc3Q8
SlNPYmplY3QqPihnbG9iYWxPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKSk7CisgICAgcmV0dXJuIHRv
UmVmKGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpKTsKIH0KIAogSlNDb250ZXh0R3JvdXBSZWYg
SlNDb250ZXh0R2V0R3JvdXAoSlNDb250ZXh0UmVmIGN0eCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjY1LDcgKzI2NSw2IEBACiAJCTBGMkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAvKiBCM05hdGl2
ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYyQzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi87IH07CiAJCTBG
MkM2M0M0MUU2OUVGOTQwMEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQzMxRTY5RUY5MjAw
QzEzODM5IC8qIEIzTWVtb3J5VmFsdWVJbmxpbmVzLmggKi87IH07CiAJCTBGMkQ0RERFMTk4MzJE
MzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENEREQzE5ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJT
Y29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTBGMkQ0REU5MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0dXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0REU2MTk4MzJEQUMwMDdENEIx
OSAvKiBUb1RoaXNTdGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjJENERFQTE5ODMyREFDMDA3RDRCMTkgLyogVHlwZUxvY2F0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNzE5
ODMyREFDMDA3RDRCMTkgLyogVHlwZUxvY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyRDRERUMxOTgzMkRDNDAwN0Q0QjE5IC8qIFR5
cGVQcm9maWxlckxvZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyRDRERTAxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkQ0REYwMTk4
MzJERDYwMDdENEIxOSAvKiBUeXBlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNDE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVNldC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNTIzLDgg
KzI1MjIsNiBAQAogCQkwRjJENERFMDE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVQcm9maWxlckxvZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjJENERFMzE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVNldC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUeXBlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYyRDRERTQxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlw
ZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjJENERFNTE5ODMyREFDMDA3
RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRvVGhpc1N0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBG
MkQ0REU2MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVG9UaGlzU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMkQ0REU3MTk4MzJEQUMwMDdENEIxOSAvKiBUeXBlTG9jYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMkREODBDMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNF
bGltaW5hdGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0FyZ3VtZW50
c0VsaW1pbmF0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJE
RDgwRDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBcmd1bWVudHNFbGltaW5hdGlvblBo
YXNlLmg7IHBhdGggPSBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtODY2NCw4ICs4NjYxLDYgQEAKIAkJCQkwRjRBMzhGNzFD
OEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmNwcCAqLywKIAkJCQkwRjRBMzhGODFDOEUx
M0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmggKi8sCiAJCQkJMEY0NEE3QTgyMEJGNjg1RTAw
MjJCMTcxIC8qIFRlcm1pbmF0ZWRDb2RlT3JpZ2luLmggKi8sCi0JCQkJMEYyRDRERTUxOTgzMkRB
QzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8sCi0JCQkJMEYyRDRERTYxOTgzMkRBQzAw
N0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5oICovLAogCQkJCTBGOTUyQUJBMUI0ODdBNzcwMEMzNjdD
NSAvKiBUcmFja2VkUmVmZXJlbmNlcy5jcHAgKi8sCiAJCQkJMEY5NTJBQkIxQjQ4N0E3NzAwQzM2
N0M1IC8qIFRyYWNrZWRSZWZlcmVuY2VzLmggKi8sCiAJCQkJMEYyRDRERTcxOTgzMkRBQzAwN0Q0
QjE5IC8qIFR5cGVMb2NhdGlvbi5oICovLApAQCAtOTQ1Myw3ICs5NDQ4LDYgQEAKIAkJCQlCQzE4
QzQ1RTBFMTZGNUNEMDBCMzQ0NjAgLyogQ0xvb3BTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTdDMUVBRjAxNzk4N0FCNjAwMjk5REIyIC8qIENMb29wU3RhY2tJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5NjlBMDc5NzBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlGRUY1QjQyOTI2MjhCNTI0MDAxNkU3NzYgLyogSlNTZXRJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjhGOTQ0MTE2Njc2MzMyMDBENjE5NzEgLyogQ29kZUJsb2Nr
SGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDOTdGMzQxODIwMjBENzAwMkM5QjI2IC8qIENv
ZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEz
MTQxN0Q0MzI2QzAwQ0EyQzQwIC8qIENvZGVCbG9ja1NldC5oIGluIEhlYWRlcnMgKi8sCkBAIC05
NjUyLDcgKzk2NDYsNiBAQAogCQkJCTBGRDgyRTU3MTQxREFGMTAwMDE3OUM5NCAvKiBERkdPU1JF
bnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMjYxN0Q1MUY1NzAwQ0EyQzQwIC8qIERG
R09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc2
QTE0NjhBNkY3MDBDRjI0NDIgLyogREZHT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkVG
NUI0MjcyNjI4QUJEOTAwMTZFNzc2IC8qIEpTV2Vha01hcElubGluZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0QmFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQwMkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21w
aWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMw
RSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLApAQCAtOTc0Nyw2
ICs5NzQwLDcgQEAKIAkJCQkxNDczNDFEMjFEQzAyRTJFMDBBQTI5QkEgLyogRXZhbEV4ZWN1dGFi
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMUMwRkZEMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNl
cHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNjAyOUQ5MUQ2RTFFNEYwMDMwMjA0RCAvKiBF
eGNlcHRpb25FdmVudExvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUY1QjQzMDI2MkEz
MzhCMDAxNkU3NzYgLyogRXhjZXB0aW9uRXhwZWN0YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMTJERTEwMTk3OUQ1RkQwMDA2RkY0RSAvKiBFeGNlcHRpb25GdXp6LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzE4QzQwMDBFMTZGNUNEMDBCMzQ0NjAgLyogRXhjZXB0aW9uSGVscGVycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkU2NDkxMzcxRDc4RjAxRDAwQTY5NEQ0IC8qIEV4Y2VwdGlvblNj
b3BlLmggaW4gSGVhZGVycyAqLywKQEAgLTk3ODMsNyArOTc3Nyw2IEBACiAJCQkJMEZFQTBBMEMx
NzA1MTNEQjAwQkI3MjJDIC8qIEZUTENvbXBpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUQ0
QzBEMUMzRTFDMTEwMDZDRDk4NCAvKiBGVExFeGNlcHRpb25UYXJnZXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMjM1QkQ0MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnQuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUZFRjVCNDIzMjYyOEEwRUUwMDE2RTc3NiAvKiBIYXNoTWFwSW1wbElu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkQ2MTcxNzhFMUMwMDY5MEM3RiAvKiBG
VExFeGl0QXJndW1lbnRGb3JPcGVyYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNGNTE5
RDBCQUMxMDBCMUQxQjUgLyogRlRMRXhpdFByb3BlcnR5VmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMkI5Q0Y3MTlEMEJBQzEwMEIxRDFCNSAvKiBGVExFeGl0VGltZU9iamVjdE1hdGVyaWFs
aXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC05ODI3LDcgKzk4MjAsNiBAQAogCQkJCTJBODM2
MzhBMThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MkVFRDc5NDI0OTJCODcwMDA4RjRDOTMgLyogRnVuY3Rpb25BbGxvd2xpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0QUQ5MTBEMURDQTkyOTQwMDE0RjlGRSAvKiBGdW5jdGlv
bkNvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkVGNUI0MkMyNjI4Q0JDODAwMTZFNzc2
IC8qIFZNVHJhcHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQwNDBFMTZGNUNE
MDBCMzQ0NjAgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3
MzQxRDgxREMwMkY5OTAwQUEyOUJBIC8qIEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGMEYxQTAxNkI3MkExQTAwNURGOTVCIC8qIEZ1bmN0aW9uRXhlY3V0YWJsZUR1
bXAuaCBpbiBIZWFkZXJzICovLApAQCAtOTkwNiw2ICs5ODk4LDcgQEAKIAkJCQkxNDJFMzEzNjEz
NEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc4Mjk3
QjEzNzlFOEE4MDBBN0MyQTMgLyogSGFuZGxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5
QTA5MDgwMUQ3Njg0NjUwMDhCODg5QiAvKiBIYXNoTWFwSW1wbC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRkVGNUI0MjMyNjI4QTBFRTAwMTZFNzc2IC8qIEhhc2hNYXBJbXBsSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzlERkNCREIxRDg4QzU5NjAwNTI3RDAzIC8qIEhhc093blByb3BlcnR5
Q2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QkE3QTk4MTNBQURGRjgwMDVCN0MyQyAvKiBI
ZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MTc3QTFEQzIyRjk1OEQ1MDBCMzRDQTIgLyogSGVh
cEFuYWx5emVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMTc5LDYgKzEwMTcyLDcgQEAKIAkJCQlD
MjVENzA5QzE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJBNEJCN0YzMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzAwODc0MjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAu
aCBpbiBIZWFkZXJzICovLAorCQkJCUZFRjVCNDI1MjYyOEE4NTAwMDE2RTc3NiAvKiBKU01hcElu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NERFRjk2MTgyRDk5MTQwMDUyMkMyMiAvKiBK
U01hcEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCMjg2RDFFQjhFNkQ1MDAwRUI1
RDIgLyogSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcw
MTNDQThDMUI0OTFBOTQwMENBRTYxMyAvKiBKU01pY3JvdGFzay5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMDIxNCw2ICsxMDIwOCw3IEBACiAJCQkJMTREMDFBNzcyMUZCMzUxRjAwQkM1NEU5IC8qIEpT
U2NyaXB0U291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDExMTU3RjMz
MkMwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzI5OUQ5RTE3RDEyODM3MDA1RjVGRjkgLyogSlNTZXQuaCBpbiBIZWFkZXJzICovLAor
CQkJCUZFRjVCNDI5MjYyOEI1MjQwMDE2RTc3NiAvKiBKU1NldElubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3OTBERDcwMTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCREZDQjJCQkU5MEY0MTM0OUUxQjBCRUQgLyogSlNTb3VyY2VDb2Rl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyNzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNTdHJp
bmcuaCBpbiBIZWFkZXJzICovLApAQCAtMTAyNDcsNiArMTAyNDIsNyBAQAogCQkJCTg2RTNDNjFE
MTY3QkFCRUUwMDZENzYwQSAvKiBKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTc5NUFDNjE4MjBBMjM1NUUwMDUyQzc2QyAvKiBKU1ZpcnR1YWxNYWNoaW5lUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDQTNBRTgxN0RBNDFBRTAwNjUzOEFGIC8qIEpT
V2Vha01hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVGNUI0MjcyNjI4QUJEOTAwMTZFNzc2IC8q
IEpTV2Vha01hcElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDgyRTkzMTE2QTdDQUQw
MDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTc0ODJCOTMxMTY3MTE0NzAwM0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUzOUJGQkIwMjJBRDNDREMwMDIzRjRDMCAvKiBKU1dlYWtP
YmplY3RSZWYuaCBpbiBIZWFkZXJzICovLApAQCAtMTA1NjIsNyArMTA1NTgsNiBAQAogCQkJCUJD
REUzQUI4MEU2QzgyRjUwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTc5ODY5NDNCMUY4QzBBQ0MwMDkyMzJBRSAvKiBTdHJ1Y3R1cmVDYWNoZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0U0RUU3MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggaW4g
SGVhZGVycyAqLywKLQkJCQlGRUY1QjQyNTI2MjhBODUwMDAxNkU3NzYgLyogSlNNYXBJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFBQTMxMjE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0
dXJlSURCbG9iLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcg
LyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEMkM5MjQxNkQwMUVF
OTAwQzc4MDNGIC8qIFN0cnVjdHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTA2MDEs
NyArMTA1OTYsNiBAQAogCQkJCUE3Mzg2NTU2MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVy
YXRvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTQ0OENEMTNBMTc4MzcwMEY1QkExQSAvKiBU
aW55Qmxvb21GaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTU5ODk4MTdDODZDNTgwMEEx
RTU0MyAvKiBUb05hdGl2ZUZyb21WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYyRDRERTkx
OTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5
NTJBQkQxQjQ4N0E3NzAwQzM2N0M1IC8qIFRyYWNrZWRSZWZlcmVuY2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjJCNjcwNjE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJheUFkYXB0b3JzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjcwODE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJh
eUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTA2NTUsNiArMTA2NDksNyBAQAogCQkJ
CUZFMzAyMkQ3MUU0Mjg1NzMwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkVDNTc5NzMyMzEwNUI1MTAwQkNBODNGIC8qIFZNSW5zcGVjdG9ySW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkU2RjU2REUxRTY0RUFENjAwRDE3ODAxIC8qIFZNVHJhcHMuaCBp
biBIZWFkZXJzICovLAorCQkJCUZFRjVCNDJDMjYyOENCQzgwMDE2RTc3NiAvKiBWTVRyYXBzSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI4NDdBREMyMUZGQjg2OTAwNjFBOURCIC8qIFdh
c21BaXJJUkdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNGNDBFOTMxRDVBNEFCMzAw
OTlBMUI2IC8qIFdhc21CM0lSR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0NBNzMw
QTFFQTUzM0Q4MDA3NjA0OUQgLyogV2FzbUJCUVBsYW4uaCBpbiBIZWFkZXJzICovLApAQCAtMTA3
NDcsNyArMTA3NDIsNiBAQAogCQkJCUFERTgwMjlBMUUwOEYxREUwMDU4REU3OCAvKiBXZWJBc3Nl
bWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBREU4MDI5QzFF
MDhGMURFMDA1OERFNzggLyogV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUFEMkZDQkY1MURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9y
eUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRUY1QjQzMDI2MkEzMzhCMDAxNkU3
NzYgLyogRXhjZXB0aW9uRXhwZWN0YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQzFB
MURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmx1dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRjcxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5
TWVtb3J5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0MxQjFEQjU5Q0IyMDBC
M0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
YgkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNiBAQCB0eXBlcyBbCiAg
ICAgOlN0cnVjdHVyZUNoYWluLAogICAgIDpTeW1ib2xUYWJsZSwKICAgICA6U3ltYm9sVGFibGVP
clNjb3BlRGVwdGgsCi0gICAgOlRvVGhpc1N0YXR1cywKICAgICA6VHlwZUxvY2F0aW9uLAogICAg
IDpXYXNtQm91bmRMYWJlbCwKICAgICA6V2F0Y2hwb2ludFNldCwKQEAgLTE3NywxMSArMTc2LDgg
QEAgb3AgOmFyZ3VtZW50X2NvdW50LAogb3AgOnRvX3RoaXMsCiAgICAgYXJnczogewogICAgICAg
ICBzcmNEc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAog
ICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgY2FjaGVkU3RydWN0dXJlSUQ6IFN0cnVj
dHVyZUlELAotICAgICAgICB0b1RoaXNTdGF0dXM6IFRvVGhpc1N0YXR1cywKICAgICAgICAgcHJv
ZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0KIApAQCAtMTAyMSw2ICsxMDE3LDEyIEBAIG9wIDpn
ZXRfZnJvbV9zY29wZSwKICAgICAgICAgb3BlcmFuZDogOm9mZnNldCwKICAgICB9CiAKK29wIDpn
ZXRfdGhpc192YWx1ZV9mb3JfY2FsbCwKKyAgICBhcmdzOiB7CisgICAgICAgIGRzdDogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICBzY29wZTogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0KKwogb3Ag
OnB1dF90b19zY29wZSwKICAgICBhcmdzOiB7CiAgICAgICAgIHNjb3BlOiBWaXJ0dWFsUmVnaXN0
ZXIsICMgb2Zmc2V0IDEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmNwcAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTczLDYgKzE3Myw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXIK
ICAgICBVU0VTKE9wUmVzb2x2ZVNjb3BlLCBzY29wZSkKICAgICBVU0VTKE9wUmVzb2x2ZVNjb3Bl
Rm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbCwgc2NvcGUpCiAgICAgVVNFUyhPcEdldEZyb21TY29w
ZSwgc2NvcGUpCisgICAgVVNFUyhPcEdldFRoaXNWYWx1ZUZvckNhbGwsIHNjb3BlKQogICAgIFVT
RVMoT3BUb1ByaW1pdGl2ZSwgc3JjKQogICAgIFVTRVMoT3BUb1Byb3BlcnR5S2V5LCBzcmMpCiAg
ICAgVVNFUyhPcFRyeUdldEJ5SWQsIGJhc2UpCkBAIC00NzgsNiArNDc5LDcgQEAgdm9pZCBjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVucwogCiAgICAgREVGUyhPcFRhaWxDYWxsRm9y
d2FyZEFyZ3VtZW50cywgZHN0KQogICAgIERFRlMoT3BHZXRGcm9tU2NvcGUsIGRzdCkKKyAgICBE
RUZTKE9wR2V0VGhpc1ZhbHVlRm9yQ2FsbCwgZHN0KQogICAgIERFRlMoT3BDYWxsLCBkc3QpCiAg
ICAgREVGUyhPcFRhaWxDYWxsLCBkc3QpCiAgICAgREVGUyhPcENhbGxFdmFsLCBkc3QpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNp
b24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MDQsMTcgKzE0MDQsNiBAQCB2b2lkIENvZGVCbG9jazo6
ZmluYWxpemVMTEludElubGluZUNhY2hlCiAgICAgICAgICAgICBtZXRhZGF0YS5tX2JyYW5kLmNs
ZWFyKCk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BUb1Ro
aXM+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGlmICghbWV0YWRhdGEubV9j
YWNoZWRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURU
YWJsZSgpLmdldChtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEKSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewotICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRh
YmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQpOwotICAgICAgICAgICAgICAg
IGRhdGFMb2dGKCJDbGVhcmluZyBMTEludCB0b190aGlzIHdpdGggc3RydWN0dXJlICVwLlxuIiwg
c3RydWN0dXJlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1ldGFkYXRhLm1fY2FjaGVk
U3RydWN0dXJlSUQgPSAwOwotICAgICAgICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMgPSBt
ZXJnZShtZXRhZGF0YS5tX3RvVGhpc1N0YXR1cywgVG9UaGlzQ2xlYXJlZEJ5R0MpOwotICAgICAg
ICB9KTsKLQogICAgICAgICBhdXRvIGhhbmRsZUNyZWF0ZUJ5dGVjb2RlID0gWyZdIChhdXRvJiBt
ZXRhZGF0YSwgQVNDSUlMaXRlcmFsIG5hbWUpIHsKICAgICAgICAgICAgIGF1dG8mIGNhY2hlV3Jp
dGVCYXJyaWVyID0gbWV0YWRhdGEubV9jYWNoZWRDYWxsZWU7CiAgICAgICAgICAgICBpZiAoIWNh
Y2hlV3JpdGVCYXJyaWVyIHx8IGNhY2hlV3JpdGVCYXJyaWVyLnVudmFsaWRhdGVkR2V0KCkgPT0g
SlNDZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmNwcAkocmV2aXNpb24gMjc3MDI2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1RvVGhpc1N0YXR1cy5jcHAJKG5v
bmV4aXN0ZW50KQpAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUb1RoaXNT
dGF0dXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLVRvVGhpc1N0YXR1cyBtZXJnZShUb1RoaXNT
dGF0dXMgYSwgVG9UaGlzU3RhdHVzIGIpCi17Ci0gICAgc3dpdGNoIChhKSB7Ci0gICAgY2FzZSBU
b1RoaXNPSzoKLSAgICAgICAgcmV0dXJuIGI7Ci0gICAgY2FzZSBUb1RoaXNDb25mbGljdGVkOgot
ICAgICAgICByZXR1cm4gVG9UaGlzQ29uZmxpY3RlZDsKLSAgICBjYXNlIFRvVGhpc0NsZWFyZWRC
eUdDOgotICAgICAgICBpZiAoYiA9PSBUb1RoaXNDb25mbGljdGVkKQotICAgICAgICAgICAgcmV0
dXJuIFRvVGhpc0NvbmZsaWN0ZWQ7Ci0gICAgICAgIHJldHVybiBUb1RoaXNDbGVhcmVkQnlHQzsK
LSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gVG9UaGlzQ29uZmxpY3RlZDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFj
ZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJp
bnRTdHJlYW0mIG91dCwgVG9UaGlzU3RhdHVzIHN0YXR1cykKLXsKLSAgICBzd2l0Y2ggKHN0YXR1
cykgewotICAgIGNhc2UgVG9UaGlzT0s6Ci0gICAgICAgIG91dC5wcmludCgiT0siKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgVG9UaGlzQ29uZmxpY3RlZDoKLSAgICAgICAgb3V0LnByaW50
KCJDb25mbGljdGVkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFRvVGhpc0NsZWFyZWRC
eUdDOgotICAgICAgICBvdXQucHJpbnQoIkNsZWFyZWRCeUdDIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV1RGCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9U
b1RoaXNTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVG9UaGlzU3RhdHVzLmgJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Ub1RoaXNTdGF0dXMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIEpTQyB7
Ci0KLWVudW0gVG9UaGlzU3RhdHVzIHsKLSAgICBUb1RoaXNPSywKLSAgICBUb1RoaXNDb25mbGlj
dGVkLAotICAgIFRvVGhpc0NsZWFyZWRCeUdDCi19OwotCi1Ub1RoaXNTdGF0dXMgbWVyZ2UoVG9U
aGlzU3RhdHVzLCBUb1RoaXNTdGF0dXMpOwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNw
YWNlIFdURiB7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6VG9UaGlz
U3RhdHVzKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2
aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NTgsNiArMjQ1OCwzMSBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEZyCiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRHZXRGdW5jdGlvbkZyb21TY29wZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFZhcmlhYmxlJiB2
YXJpYWJsZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlRm9yQ2FsbCkKK3sKKyAgICBBU1NFUlQoIXZh
cmlhYmxlLmxvY2FsKCkpOworCisgICAgUmVnaXN0ZXJJRCogc2NvcGUgPSBlbWl0UmVzb2x2ZVNj
b3BlKG51bGxwdHIsIHZhcmlhYmxlKTsKKyAgICBlbWl0R2V0RnJvbVNjb3BlKGRzdCwgc2NvcGUs
IHZhcmlhYmxlLCBUaHJvd0lmTm90Rm91bmQpOworICAgIGVtaXRURFpDaGVja0lmTmVjZXNzYXJ5
KHZhcmlhYmxlLCBkc3QsIG51bGxwdHIpOworICAgIGlmIChoYXNQYXJlbnRXaXRoU2NvcGUodmFy
aWFibGUpKQorICAgICAgICBPcEdldFRoaXNWYWx1ZUZvckNhbGw6OmVtaXQodGhpcywga2lsbCh0
aGlzVmFsdWVGb3JDYWxsKSwgc2NvcGUpOworICAgIHJldHVybiBkc3Q7Cit9CisKK2Jvb2wgQnl0
ZWNvZGVHZW5lcmF0b3I6Omhhc1BhcmVudFdpdGhTY29wZShjb25zdCBWYXJpYWJsZSYgdmFyaWFi
bGUpIGNvbnN0Cit7CisgICAgaWYgKHZhcmlhYmxlLm9mZnNldCgpLmlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9sZXhpY2FsU2NvcGVT
dGFjay5zaXplKCk7IGktLTsgKSB7CisgICAgICAgIGlmIChtX2xleGljYWxTY29wZVN0YWNrW2ld
Lm1faXNXaXRoU2NvcGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRU
b1Njb3BlKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBWYXJpYWJsZSYgdmFyaWFibGUsIFJlZ2lz
dGVySUQqIHZhbHVlLCBSZXNvbHZlTW9kZSByZXNvbHZlTW9kZSwgSW5pdGlhbGl6YXRpb25Nb2Rl
IGluaXRpYWxpemF0aW9uTW9kZSkKIHsKICAgICBzd2l0Y2ggKHZhcmlhYmxlLm9mZnNldCgpLmtp
bmQoKSkgewpAQCAtNTQzNiw3ICs1NDYxLDggQEAgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lz
OjpyZWNvcmQoKQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9UaGlzKCkKIHsKLSAg
ICBPcFRvVGhpczo6ZW1pdCh0aGlzLCBraWxsKCZtX3RoaXNSZWdpc3RlciksIGVjbWFNb2RlKCkp
OworICAgIGlmICghZWNtYU1vZGUoKS5pc1N0cmljdCgpKQorICAgICAgICBPcFRvVGhpczo6ZW1p
dCh0aGlzLCBraWxsKCZtX3RoaXNSZWdpc3RlcikpOwogfQogCiBTdHJ1Y3R1cmVGb3JJbkNvbnRl
eHQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpmaW5kU3RydWN0dXJlRm9ySW5Db250ZXh0KFJlZ2lzdGVy
SUQqIHByb3BlcnR5KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMjc3MDI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MDIsNiArOTAyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRSZXNvbHZlQ29uc3RhbnRMb2NhbChSZWdpc3RlcklEKiBkc3QsIGNvbnN0
IFZhcmlhYmxlJik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlU2NvcGUoUmVnaXN0
ZXJJRCogZHN0LCBjb25zdCBWYXJpYWJsZSYpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0
RnJvbVNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUsIGNvbnN0IFZhcmlh
YmxlJiwgUmVzb2x2ZU1vZGUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0RnVuY3Rpb25G
cm9tU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBWYXJpYWJsZSYsIFJlZ2lzdGVySUQqIHRo
aXNWYWx1ZUZvckNhbGwpOworICAgICAgICBib29sIGhhc1BhcmVudFdpdGhTY29wZShjb25zdCBW
YXJpYWJsZSYpIGNvbnN0OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0VG9TY29wZShSZWdp
c3RlcklEKiBzY29wZSwgY29uc3QgVmFyaWFibGUmLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVzb2x2
ZU1vZGUsIEluaXRpYWxpemF0aW9uTW9kZSk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJl
c29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwoUmVnaXN0ZXJJRCogZHN0LCBjb25z
dCBJZGVudGlmaWVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1MCwxMyArMzUwLDExIEBAIFJlZ2lzdGVySUQqIFRhZ2dlZFRlbXBsYXRlTm9kZTo6
ZW1pdEJ5dGUKICAgICAgICAgICAgIHRhZyA9IGdlbmVyYXRvci5tb3ZlKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgbG9jYWwpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdGFnID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgYmFzZSA9IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIGJhc2UgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBqc1VuZGVmaW5lZCgpKTsKIAogICAgICAgICAgICAgSlNU
ZXh0UG9zaXRpb24gbmV3RGl2b3QgPSBkaXZvdFN0YXJ0KCkgKyBpZGVudGlmaWVyLmxlbmd0aCgp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhuZXdEaXZvdCwgZGl2
b3RTdGFydCgpLCBuZXdEaXZvdCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IubW92ZShiYXNlLmdl
dCgpLCBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShiYXNlLmdldCgpLCB2YXIpKTsKLSAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHRhZy5nZXQoKSwgYmFzZS5nZXQoKSwg
dmFyLCBUaHJvd0lmTm90Rm91bmQpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVj
a0lmTmVjZXNzYXJ5KHZhciwgdGFnLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0R2V0RnVuY3Rpb25Gcm9tU2NvcGUodGFnLmdldCgpLCB2YXIsIGJhc2UuZ2V0KCkp
OwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX3RhZy0+aXNCcmFja2V0QWNjZXNzb3JOb2Rl
KCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19jYXN0
PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihtX3RhZyk7CkBAIC0xMTgwLDE3ICsxMTc4LDEyIEBAIFJl
Z2lzdGVySUQqIEV2YWxGdW5jdGlvbkNhbGxOb2RlOjplbWl0QnkKICAgICB9IGVsc2UKICAgICAg
ICAgZnVuYyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBDYWxsQXJndW1lbnRzIGNh
bGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgIGdlbmVyYXRvci5lbWl0TG9hZChj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKIAotICAgIGlmIChs
b2NhbCkKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIGpzVW5kZWZpbmVkKCkpOwotICAgIGVsc2UgeworICAgIGlmICghbG9jYWwpIHsKICAg
ICAgICAgSlNUZXh0UG9zaXRpb24gbmV3RGl2b3QgPSBkaXZvdFN0YXJ0KCkgKyA0OwogICAgICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCksIG5l
d0Rpdm90KTsKLSAgICAgICAgZ2VuZXJhdG9yLm1vdmUoCi0gICAgICAgICAgICBjYWxsQXJndW1l
bnRzLnRoaXNSZWdpc3RlcigpLAotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2Nv
cGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgdmFyKSk7Ci0gICAgICAgIGdlbmVyYXRv
ci5lbWl0R2V0RnJvbVNjb3BlKGZ1bmMuZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVj
a0lmTmVjZXNzYXJ5KHZhciwgZnVuYy5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0R2V0RnVuY3Rpb25Gcm9tU2NvcGUoZnVuYy5nZXQoKSwgdmFyLCBjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpKTsKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJu
VmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmMuZ2V0KCkpOwpAQCAt
MTI3NiwyMCArMTI2OSwxNiBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6
ZW1pCiAgICAgfSBlbHNlCiAgICAgICAgIGZ1bmMgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7
CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAg
ICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRl
ZmluZWQoKSk7CiAKICAgICBpZiAobG9jYWwpIHsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2Fk
KGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAv
LyBUaGlzIHBhc3NlcyBOb0V4cGVjdGVkRnVuY3Rpb24gYmVjYXVzZSB3ZSBleHBlY3QgdGhhdCBp
ZiB0aGUgZnVuY3Rpb24gaXMgaW4gYQogICAgICAgICAvLyBsb2NhbCB2YXJpYWJsZSwgdGhlbiBp
dCdzIG5vdCBvbmUgb2Ygb3VyIGJ1aWx0LWluIGNvbnN0cnVjdG9ycy4KICAgICAgICAgZXhwZWN0
ZWRGdW5jdGlvbiA9IE5vRXhwZWN0ZWRGdW5jdGlvbjsKICAgICB9IGVsc2UgewogICAgICAgICBK
U1RleHRQb3NpdGlvbiBuZXdEaXZvdCA9IGRpdm90U3RhcnQoKSArIG1faWRlbnQubGVuZ3RoKCk7
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8obmV3RGl2b3QsIGRpdm90U3Rh
cnQoKSwgbmV3RGl2b3QpOwotICAgICAgICBnZW5lcmF0b3IubW92ZSgKLSAgICAgICAgICAgIGNh
bGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksCi0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJl
c29sdmVTY29wZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCB2YXIpKTsKLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlz
UmVnaXN0ZXIoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwotICAgICAgICBnZW5lcmF0b3IuZW1p
dFREWkNoZWNrSWZOZWNlc3NhcnkodmFyLCBmdW5jLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRHZXRGdW5jdGlvbkZyb21TY29wZShmdW5jLmdldCgpLCB2YXIsIGNhbGxB
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCkpOwogICAgIH0KIAogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuYy5nZXQo
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJh
bWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlckNhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
OSwxMCArMjA5LDkgQEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVlKFZNJgog
ICAgIGlmICghdGhpc1ZhbHVlKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAg
IEVDTUFNb2RlIGVjbWFNb2RlID0gRUNNQU1vZGU6OnNsb3BweSgpOwogICAgIGlmIChjb2RlQmxv
Y2sgJiYgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmljdENvbnRleHQoKSkK
LSAgICAgICAgZWNtYU1vZGUgPSBFQ01BTW9kZTo6c3RyaWN0KCk7Ci0gICAgcmV0dXJuIHRoaXNW
YWx1ZS50b1RoaXMobV92YWxpZE1hY2hpbmVGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCh2bSks
IGVjbWFNb2RlKTsKKyAgICAgICAgcmV0dXJuIHRoaXNWYWx1ZTsKKyAgICByZXR1cm4gdGhpc1Zh
bHVlLnRvU2xvcHB5TW9kZVRoaXMobV92YWxpZE1hY2hpbmVGcmFtZS0+bGV4aWNhbEdsb2JhbE9i
amVjdCh2bSkpOwogfQogCiAvLyBFdmFsdWF0ZSBzb21lIEphdmFTY3JpcHQgY29kZSBpbiB0aGUg
c2NvcGUgb2YgdGhpcyBmcmFtZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDI3
NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDY1ICsxNzksNiBAQCB2b2lkIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgREZHX05PREVfRE9fVE9fQ0hJTERS
RU4obV9ncmFwaCwgbm9kZSwgdmVyaWZ5RWRnZSk7CiB9CiAKLWVudW0gY2xhc3MgVG9UaGlzUmVz
dWx0IHsKLSAgICBJZGVudGl0eSwKLSAgICBVbmRlZmluZWQsCi0gICAgR2xvYmFsVGhpcywKLSAg
ICBEeW5hbWljLAotfTsKLWlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNBbklkZW50aXR5KFZN
JiB2bSwgRUNNQU1vZGUgZWNtYU1vZGUsIEFic3RyYWN0VmFsdWUmIHZhbHVlRm9yTm9kZSkKLXsK
LSAgICAvLyBXZSBsb29rIGF0IHRoZSB0eXBlIGZpcnN0IHNpbmNlIHRoYXQgd2lsbCBjb3ZlciBt
b3N0IGNhc2VzIGFuZCBkb2VzIG5vdCByZXF1aXJlIGl0ZXJhdGluZyBhbGwgdGhlIHN0cnVjdHVy
ZXMuCi0gICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpIHsKLSAgICAgICAgaWYgKHZhbHVlRm9y
Tm9kZS5tX3R5cGUgJiYgISh2YWx1ZUZvck5vZGUubV90eXBlICYgU3BlY09iamVjdE90aGVyKSkK
LSAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIGlmICh2YWx1ZUZvck5vZGUubV90eXBlICYmICEodmFsdWVGb3JOb2RlLm1fdHlw
ZSAmICh+U3BlY09iamVjdCB8IFNwZWNPYmplY3RPdGhlcikpKQotICAgICAgICAgICAgcmV0dXJu
IFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk7Ci0gICAgfQotCi0gICAgaWYgKEpTVmFsdWUgdmFsdWUg
PSB2YWx1ZUZvck5vZGUudmFsdWUoKSkgewotICAgICAgICBpZiAodmFsdWUuaXNDZWxsKCkpIHsK
LSAgICAgICAgICAgIGF1dG8qIHRvVGhpc01ldGhvZCA9IHZhbHVlLmFzQ2VsbCgpLT5jbGFzc0lu
Zm8odm0pLT5tZXRob2RUYWJsZS50b1RoaXM7Ci0gICAgICAgICAgICBpZiAodG9UaGlzTWV0aG9k
ID09ICZKU09iamVjdDo6dG9UaGlzKQotICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1
bHQ6OklkZW50aXR5OwotICAgICAgICAgICAgaWYgKHRvVGhpc01ldGhvZCA9PSAmSlNTY29wZTo6
dG9UaGlzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OlVuZGVmaW5lZDsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpHbG9iYWxUaGlzOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKChlY21hTW9kZS5pc1N0cmljdCgpIHx8ICh2YWx1
ZUZvck5vZGUubV90eXBlICYmICEodmFsdWVGb3JOb2RlLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSkp
ICYmIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7Ci0gICAgICAgIGJvb2wg
YWxsU3RydWN0dXJlc0FyZUpTU2NvcGUgPSAhdmFsdWVGb3JOb2RlLm1fc3RydWN0dXJlLmlzQ2xl
YXIoKTsKLSAgICAgICAgYm9vbCBvdmVycmlkZXNUb1RoaXMgPSBmYWxzZTsKLSAgICAgICAgdmFs
dWVGb3JOb2RlLm1fc3RydWN0dXJlLmZvckVhY2goWyZdKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlKSB7Ci0gICAgICAgICAgICBUeXBlSW5mbyB0eXBlID0gc3RydWN0dXJlLT50eXBlSW5m
bygpOwotICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9
PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUgfHwgdHlwZS50eXBlKCkg
PT0gSGVhcEJpZ0ludFR5cGUpOwotICAgICAgICAgICAgaWYgKCFlY21hTW9kZS5pc1N0cmljdCgp
KQotICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkpOwotICAgICAgICAgICAg
Ly8gV2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBzdHJpbmdzL3N5bWJvbHMgaGVyZSBzaW5j
ZSBlaXRoZXI6Ci0gICAgICAgICAgICAvLyAxKSBXZSBhcmUgaW4gc3RyaWN0IG1vZGUgYW5kIHN0
cmluZ3Mvc3ltYm9scyBhcmUgbm90IHdyYXBwZWQKLSAgICAgICAgICAgIC8vIDIpIFRoZSBBSSBo
YXMgcHJvdmVuIHRoYXQgdGhlIHR5cGUgb2YgdGhpcyBpcyBhIHN1YnR5cGUgb2Ygb2JqZWN0Ci0g
ICAgICAgICAgICBpZiAodHlwZS5pc09iamVjdCgpICYmIHR5cGUub3ZlcnJpZGVzVG9UaGlzKCkp
Ci0gICAgICAgICAgICAgICAgb3ZlcnJpZGVzVG9UaGlzID0gdHJ1ZTsKLQotICAgICAgICAgICAg
Ly8gSWYgYWxsIHRoZSBzdHJ1Y3R1cmVzIGFyZSBKU1Njb3BlJ3Mgb25lcywgd2Uga25vdyB0aGUg
ZGV0YWlscyBvZiBKU1Njb3BlOjp0b1RoaXMoKSBvcGVyYXRpb24uCi0gICAgICAgICAgICBhbGxT
dHJ1Y3R1cmVzQXJlSlNTY29wZSAmPSBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5tZXRob2RUYWJs
ZS50b1RoaXMgPT0gSlNTY29wZTo6aW5mbygpLT5tZXRob2RUYWJsZS50b1RoaXM7Ci0gICAgICAg
IH0pOwotICAgICAgICBpZiAoIW92ZXJyaWRlc1RvVGhpcykKLSAgICAgICAgICAgIHJldHVybiBU
b1RoaXNSZXN1bHQ6OklkZW50aXR5OwotICAgICAgICBpZiAoYWxsU3RydWN0dXJlc0FyZUpTU2Nv
cGUpIHsKLSAgICAgICAgICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OlVuZGVmaW5lZDsKLSAgICAgICAgICAgIHJldHVybiBU
b1RoaXNSZXN1bHQ6Okdsb2JhbFRoaXM7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
VG9UaGlzUmVzdWx0OjpEeW5hbWljOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0
YXRlVHlwZT4KIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46Omhh
bmRsZUNvbnN0YW50QmluYXJ5Qml0d2lzZU9wKE5vZGUqIG5vZGUpCiB7CkBAIC0yOTcyLDMxICsy
OTEzLDIyIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAg
ICAgICAgIAogICAgIGNhc2UgVG9UaGlzOiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHNvdXJj
ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBBYnN0cmFjdFZhbHVlJiBkZXN0
aW5hdGlvbiA9IGZvck5vZGUobm9kZSk7Ci0gICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gbm9k
ZS0+ZWNtYU1vZGUoKTsKIAotICAgICAgICBUb1RoaXNSZXN1bHQgcmVzdWx0ID0gaXNUb1RoaXNB
bklkZW50aXR5KG1fdm0sIGVjbWFNb2RlLCBzb3VyY2UpOwotICAgICAgICBzd2l0Y2ggKHJlc3Vs
dCkgewotICAgICAgICBjYXNlIFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk6CisgICAgICAgIGlmICgh
KHNvdXJjZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpIHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0
U2hvdWxkVHJ5Q29uc3RhbnRGb2xkaW5nKHRydWUpOwotICAgICAgICAgICAgZGVzdGluYXRpb24g
PSBzb3VyY2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUb1RoaXNSZXN1bHQ6
OlVuZGVmaW5lZDoKLSAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzVW5kZWZpbmVkKCkp
OworICAgICAgICAgICAgZGlkRm9sZENsb2JiZXJXb3JsZCgpOworICAgICAgICAgICAgc2V0Rm9y
Tm9kZShub2RlLCBzb3VyY2UpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVG9U
aGlzUmVzdWx0OjpHbG9iYWxUaGlzOgorICAgICAgICB9CisKKyAgICAgICAgc2V0VHlwZUZvck5v
ZGUobm9kZSwgU3BlY09iamVjdCk7CisKKyAgICAgICAgaWYgKCEoc291cmNlLm1fdHlwZSAmIH5T
cGVjT3RoZXIpKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnNldFNob3VsZFRyeUNvbnN0YW50Rm9s
ZGluZyh0cnVlKTsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uLnNldFR5cGUobV9ncmFwaCwgU3Bl
Y09iamVjdCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUb1RoaXNSZXN1bHQ6
OkR5bmFtaWM6Ci0gICAgICAgICAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAg
ICAgICAgICBkZXN0aW5hdGlvbi5tYWtlSGVhcFRvcCgpOwotICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgZGVzdGluYXRpb24gPSBzb3VyY2U7Ci0gICAgICAgICAgICAgICAgZGVz
dGluYXRpb24ubWVyZ2UoU3BlY09iamVjdCk7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorCisgICAgICAgIGNsb2JiZXJXb3JsZCgpOwogICAgICAgICBicmVh
azsKICAgICB9CiAKQEAgLTMzMTUsNiArMzI0NywxMyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNPYmpl
Y3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxs
OgorICAgICAgICBpZiAoSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZh
bHVlKCkpCisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBjaGlsZC5pbmhlcml0czxKU1Nj
b3BlPihtX3ZtKSA/IGpzVW5kZWZpbmVkKCkgOiBjaGlsZCk7CisKKyAgICAgICAgc2V0VHlwZUZv
ck5vZGUobm9kZSwgU3BlY09iamVjdCB8IFNwZWNPdGhlcik7CisgICAgICAgIGJyZWFrOworCiAg
ICAgY2FzZSBTa2lwU2NvcGU6IHsKICAgICAgICAgaWYgKEpTVmFsdWUgY2hpbGQgPSBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpKSB7CiAgICAgICAgICAgICBpZiAoSlNTY29wZSogc2Nv
cGUgPSBqc0R5bmFtaWNDYXN0PEpTU2NvcGUqPihtX3ZtLCBjaGlsZCkpIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lv
biAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQyNSwyNiArNTQyNSw3IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAg
ICAgIGNhc2Ugb3BfdG9fdGhpczogewotICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0VGhpcygp
OwotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BU
b1RoaXM+KCk7Ci0gICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KGNvZGVCbG9jayk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVJRCBjYWNoZWRTdHJ1Y3R1cmVJRCA9
IG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQ7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIGNh
Y2hlZFN0cnVjdHVyZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBpZiAoY2FjaGVkU3RydWN0dXJl
SUQpCi0gICAgICAgICAgICAgICAgY2FjaGVkU3RydWN0dXJlID0gbV92bS0+aGVhcC5zdHJ1Y3R1
cmVJRFRhYmxlKCkuZ2V0KGNhY2hlZFN0cnVjdHVyZUlEKTsKLSAgICAgICAgICAgIGlmIChtZXRh
ZGF0YS5tX3RvVGhpc1N0YXR1cyAhPSBUb1RoaXNPSwotICAgICAgICAgICAgICAgIHx8ICFjYWNo
ZWRTdHJ1Y3R1cmUKLSAgICAgICAgICAgICAgICB8fCBjYWNoZWRTdHJ1Y3R1cmUtPmNsYXNzSW5m
bygpLT5tZXRob2RUYWJsZS50b1RoaXMgIT0gSlNPYmplY3Q6OmluZm8oKS0+bWV0aG9kVGFibGUu
dG9UaGlzCi0gICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLT5jb3VsZFRha2VTbG93Q2FzZShtX2N1cnJlbnRJbmRleCkKLSAgICAgICAgICAgICAgICB8
fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudElu
ZGV4LCBCYWRDYWNoZSkKLSAgICAgICAgICAgICAgICB8fCAob3AxLT5vcCgpID09IEdldExvY2Fs
ICYmIG9wMS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnN0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWls
ZWQoKSkpIHsKLSAgICAgICAgICAgICAgICBzZXRUaGlzKGFkZFRvR3JhcGgoVG9UaGlzLCBPcElu
Zm8oYnl0ZWNvZGUubV9lY21hTW9kZSksIE9wSW5mbyhnZXRQcmVkaWN0aW9uKCkpLCBvcDEpKTsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYWRkVG9HcmFwaCgKLSAgICAg
ICAgICAgICAgICAgICAgQ2hlY2tTdHJ1Y3R1cmUsCi0gICAgICAgICAgICAgICAgICAgIE9wSW5m
byhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChjYWNoZWRTdHJ1Y3R1cmUpKSwKLSAgICAgICAgICAg
ICAgICAgICAgb3AxKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNldFRoaXMoYWRkVG9H
cmFwaChUb1RoaXMsIE9wSW5mbyhnZXRQcmVkaWN0aW9uKCkpLCBnZXRUaGlzKCkpKTsKICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX3RvX3RoaXMpOwogICAgICAgICB9CiAKQEAgLTc3NjAsNyAr
Nzc0MSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAg
ICAgICAgICAgICBpZiAoc3RhdHVzLnN0YXRlKCkgIT0gR2V0QnlTdGF0dXM6OlNpbXBsZQogICAg
ICAgICAgICAgICAgICAgICB8fCBzdGF0dXMubnVtVmFyaWFudHMoKSAhPSAxCiAgICAgICAgICAg
ICAgICAgICAgIHx8IHN0YXR1c1swXS5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkgIT0gMSkgewotICAg
ICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoR2V0QnlJZEZs
dXNoLCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgdWlkKSksIE9w
SW5mbyhwcmVkaWN0aW9uKSwgZ2V0KGJ5dGVjb2RlLm1fc2NvcGUpKSk7CisgICAgICAgICAgICAg
ICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChHZXRCeUlkRmx1c2gsIE9wSW5m
byhDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpKSwgT3BJbmZvKHByZWRp
Y3Rpb24pLCB3ZWFrSlNDb25zdGFudChnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKSkpKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogCkBAIC03ODg0LDYg
Kzc4NjUsMTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2Zyb21fc2NvcGUpOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBvcF9nZXRfdGhpc192YWx1ZV9mb3JfY2FsbDogeworICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRUaGlzVmFsdWVGb3JDYWxs
PigpOworICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEdldFRoaXNW
YWx1ZUZvckNhbGwsIGdldChieXRlY29kZS5tX3Njb3BlKSkpOworICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfZ2V0X3RoaXNfdmFsdWVfZm9yX2NhbGwpOworICAgICAgICB9CisKICAgICAgICAg
Y2FzZSBvcF9wdXRfdG9fc2NvcGU6IHsKICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0VG9TY29wZT4oKTsKICAgICAgICAgICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKQEAgLTc5MzUsNyArNzkyMiw3
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAg
ICAgICBpZiAoc3RhdHVzLm51bVZhcmlhbnRzKCkgIT0gMQogICAgICAgICAgICAgICAgICAgICB8
fCBzdGF0dXNbMF0ua2luZCgpICE9IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlCiAgICAgICAgICAg
ICAgICAgICAgIHx8IHN0YXR1c1swXS5zdHJ1Y3R1cmUoKS5zaXplKCkgIT0gMSkgewotICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWQsIE9wSW5mbyhDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1Rv
cC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5l
Y21hTW9kZSgpKSwgZ2V0KGJ5dGVjb2RlLm1fc2NvcGUpLCBnZXQoYnl0ZWNvZGUubV92YWx1ZSkp
OworICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEJ5SWQsIE9wSW5mbyhDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZ2V0
UHV0SW5mby5lY21hTW9kZSgpKSwgd2Vha0pTQ29uc3RhbnQoZ2xvYmFsT2JqZWN0LT5nbG9iYWxU
aGlzKCkpLCBnZXQoYnl0ZWNvZGUubV92YWx1ZSkpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IHdlYWtK
U0NvbnN0YW50KGdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1
Miw2ICsyNTIsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlECiAg
ICAgY2FzZSBvcF9pbl9ieV9pZDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOgorICAgIGNhc2Ugb3BfZ2V0X3RoaXNfdmFsdWVfZm9yX2NhbGw6CiAg
ICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9oYXNfZW51bWVy
YWJsZV9pbmRleGVkX3Byb3BlcnR5OgogICAgIGNhc2Ugb3BfaGFzX2VudW1lcmFibGVfc3RydWN0
dXJlX3Byb3BlcnR5OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsNiArMjE4LDcgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgQXJpdGhNYXg6CiAgICAg
Y2FzZSBBcml0aFBvdzoKICAgICBjYXNlIEdldFNjb3BlOgorICAgIGNhc2UgR2V0VGhpc1ZhbHVl
Rm9yQ2FsbDoKICAgICBjYXNlIFNraXBTY29wZToKICAgICBjYXNlIEdldEdsb2JhbE9iamVjdDoK
ICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CkBAIC01OTEsMTIgKzU5Miw2IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgd3JpdGUoSGVhcE9iamVj
dENvdW50KTsKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2FzZSBUb1RoaXM6Ci0gICAgICAgIHJl
YWQoTWlzY0ZpZWxkcyk7Ci0gICAgICAgIHJlYWQoSGVhcE9iamVjdENvdW50KTsKLSAgICAgICAg
d3JpdGUoSGVhcE9iamVjdENvdW50KTsKLSAgICAgICAgcmV0dXJuOwotCiAgICAgY2FzZSBUeXBl
T2ZJc09iamVjdDoKICAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKICAgICAgICAgZGVmKEhlYXBM
b2NhdGlvbihUeXBlT2ZJc09iamVjdExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBM
YXp5Tm9kZShub2RlKSk7CkBAIC03MTQsNiArNzA5LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5j
RGVjbEluRXZhbDoKICAgICBjYXNlIFJlc29sdmVTY29wZToKICAgICBjYXNlIFRvT2JqZWN0Ogor
ICAgIGNhc2UgVG9UaGlzOgogICAgIGNhc2UgSGFzRW51bWVyYWJsZVN0cnVjdHVyZVByb3BlcnR5
OgogICAgIGNhc2UgSGFzRW51bWVyYWJsZVByb3BlcnR5OgogICAgIGNhc2UgSGFzT3duU3RydWN0
dXJlUHJvcGVydHk6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcxNCwxMyArNzE0LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGNhc2UgVG9UaGlzOiB7Ci0gICAgICAgICAgICAgICAgVG9UaGlzUmVzdWx0IHJl
c3VsdCA9IGlzVG9UaGlzQW5JZGVudGl0eShtX2dyYXBoLm1fdm0sIG5vZGUtPmVjbWFNb2RlKCks
IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkpOwotICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQgPT0gVG9UaGlzUmVzdWx0OjpJZGVudGl0eSkgeworICAgICAgICAgICAgICAgIEFic3Ry
YWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgICAgICBpZiAoISh2YWx1ZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAgICAgICAg
ICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFRvVGhpc1Jlc3VsdDo6R2xv
YmFsVGhpcykgeworICAgICAgICAgICAgICAgIGlmICghKHZhbHVlLm1fdHlwZSAmIH5TcGVjT3Ro
ZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0dldEdsb2JhbFRoaXMo
KTsKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAko
cmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiArMTE5LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tBcnJheU9yRW1wdHk6CiAgICAgY2Fz
ZSBDaGVja0RldGFjaGVkOgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2FzZSBHZXRUaGlzVmFs
dWVGb3JDYWxsOgogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0
OgogICAgIGNhc2UgR2V0R2xvYmFsVGhpczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwNiw2
ICsxODA2LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBjYXNlIFNraXBTY29wZToKICAgICAgICAg
Y2FzZSBHZXRTY29wZToKKyAgICAgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxsOgogICAgICAg
ICBjYXNlIEdldEdldHRlcjoKICAgICAgICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAgICAgIGNhc2Ug
R2V0R2xvYmFsT2JqZWN0OiB7CkBAIC0zMTM3LDk2ICszMTM4LDE4IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGZpeHVwVG9UaGlzKE5vZGUqIG5vZGUpCiAgICAgewotICAgICAgICBib29sIGlzU3Ry
aWN0TW9kZSA9IG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKLQotICAgICAgICBpZiAoaXNT
dHJpY3RNb2RlKSB7Ci0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZUJvb2xlYW4oKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9vbGVhblVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKLSAgICAgICAgICAg
ICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAg
bm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlSW50NTIoKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwot
ICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50NTIpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkgewotICAgICAgICAgICAgICAgIGZp
eEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgbm9k
ZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKLSAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQo
Tm9kZVJlc3VsdERvdWJsZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN5bWJv
bCgpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmdJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAg
Zml4RWRnZTxTdHJpbmdJZGVudFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAg
IG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZVN0cmluZygpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewot
I2lmIFVTRShCSUdJTlQzMikKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpCi0gICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qmln
SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKQotICAgICAgICAgICAgICAg
ICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2Rl
LT5jaGlsZDEoKSk7Ci0jZWxzZQotICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVy
dFRvSWRlbnRpdHkoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU90
aGVyKCkpIHsKLSAgICAgICAgICAgIGlmIChpc1N0cmljdE1vZGUpIHsKLSAgICAgICAgICAgICAg
ICBmaXhFZGdlPE90aGVyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgbm9k
ZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0KICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAg
ICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywgbm9kZS0+b3JpZ2luLAog
ICAgICAgICAgICAgICAgIEVkZ2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBPdGhlclVzZSkpOwog
ICAgICAgICAgICAgb2JzZXJ2ZVVzZUtpbmRPbk5vZGU8T3RoZXJVc2U+KG5vZGUtPmNoaWxkMSgp
Lm5vZGUoKSk7CiAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KAotICAgICAg
ICAgICAgICAgIG5vZGUsIG1fZ3JhcGguZ2xvYmFsVGhpc09iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKTsKKyAgICAgICAgICAgICAgICBub2RlLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nbG9iYWxUaGlzKCkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGNvdmVyIG90
aGVyIHVzZSBjYXNlcyBidXQgd2UgZG9uJ3QgaGF2ZSB1c2Uga2luZHMgZm9yIHRoZW0uIEl0J3Mg
bm90IGNyaXRpY2FsLAotICAgICAgICAvLyBob3dldmVyLCBzaW5jZSB3ZSBjb3ZlciBhbGwgdGhl
IG1pc3NpbmcgY2FzZXMgaW4gY29uc3RhbnQgZm9sZGluZy4KLSAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzIxMwotICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ09iamVjdCgpKSB7Ci0gICAgICAgICAgICBm
aXhFZGdlPFN0cmluZ09iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgbm9k
ZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChpc0ZpbmFsT2JqZWN0U3BlY3VsYXRpb24obm9kZS0+Y2hpbGQxKCktPnBy
ZWRpY3Rpb24oKSkpIHsKLSAgICAgICAgICAgIGZpeEVkZ2U8RmluYWxPYmplY3RVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVP
YmplY3QoKSkgeworICAgICAgICAgICAgZml4RWRnZTxPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJ
KHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcwLDEyICs0NzAsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pOwogICAgIH0KICAg
ICAKLSAgICBKU09iamVjdCogZ2xvYmFsVGhpc09iamVjdEZvcihDb2RlT3JpZ2luIGNvZGVPcmln
aW4pCi0gICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogb2JqZWN0ID0gZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pOwotICAgICAgICByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4ob2JqZWN0
LT5tZXRob2RUYWJsZShtX3ZtKS0+dG9UaGlzKG9iamVjdCwgb2JqZWN0LCBFQ01BTW9kZTo6c2xv
cHB5KCkpKTsKLSAgICB9Ci0gICAgCiAgICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZUZv
cihJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIGlmICgh
aW5saW5lQ2FsbEZyYW1lKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlF
eGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4
aXQuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R01heUV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw3IEBAIEV4aXRNb2RlIG1h
eUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSoKICAgICBjYXNlIFNldEFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzOgogICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKICAgICBjYXNlIEdldFNjb3Bl
OgorICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDoKICAgICBjYXNlIFBoYW50b21Mb2NhbDoK
ICAgICBjYXNlIENvdW50RXhlY3V0aW9uOgogICAgIGNhc2UgU3VwZXJTYW1wbGVyQmVnaW46Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjc3MDI2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIy
NjQsNyArMjI2NCw2IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAg
ICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dER5bmFtaWNWYXI6
Ci0gICAgICAgIGNhc2UgVG9UaGlzOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjc4LDcgKzIyNzcsNiBA
QCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQ2FsbEV2YWw6CiAgICAgICAgIGNhc2UgRGVsZXRlQnlW
YWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKLSAgICAgICAgY2FzZSBUb1RoaXM6
CiAgICAgICAgICAgICByZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvLmFzPHVpbnQ4
X3Q+KCkpOwogICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0QnlJZDoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDI3
NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjc1LDYgKzI3NSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKICAgICBtYWNybyhHZXRHbG9iYWxMZXhpY2FsVmFyaWFibGUsIE5vZGVSZXN1bHRKUykgXAog
ICAgIG1hY3JvKFB1dEdsb2JhbFZhcmlhYmxlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFj
cm8oR2V0RHluYW1pY1ZhciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAg
IG1hY3JvKEdldFRoaXNWYWx1ZUZvckNhbGwsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFB1
dER5bmFtaWNWYXIsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhOb3RpZnlXcml0ZSwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldFJlZ0V4cE9iamVjdExhc3RJbmRleCwg
Tm9kZVJlc3VsdEpTKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNywyNCArMjE3LDYgQEAg
QUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbE9iagogICAgIHJldHVybiBiYXNl
LT5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwogfQogCi1KU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uVG9UaGlzLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkpCi17Ci0gICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpz
bG9wcHkoKSkpOwotfQotCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVG9UaGlz
U3RyaWN0LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcCkpCi17Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
LSAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3ApLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkpOwotfQotCiBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uT2JqZWN0S2V5cywgSlNBcnJheSosIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT2JqZWN0
KSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0zMTgxLDcgKzMxNjMs
OCBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0RHluCiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBJZGVudGlmaWVyIGlk
ZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaW1wbCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZShzY29wZS0+Z2V0UHJvcGVydHlTbG90KGds
b2JhbE9iamVjdCwgaWRlbnQsIFsmXSAoYm9vbCBmb3VuZCwgUHJvcGVydHlTbG90JiBzbG90KSAt
PiBKU1ZhbHVlIHsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChKU1Njb3BlOjpyZWNlaXZlckZvclNj
b3BlKHNjb3BlKSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZShzY29wZS0+Z2V0
UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QsIFsmXSAoYm9vbCBmb3VuZCwg
UHJvcGVydHlTbG90JikgLT4gSlNWYWx1ZSB7CiAgICAgICAgIGlmICghZm91bmQpIHsKICAgICAg
ICAgICAgIEdldFB1dEluZm8gZ2V0UHV0SW5mbyhnZXRQdXRJbmZvQml0cyk7CiAgICAgICAgICAg
ICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCkKQEAgLTMy
MjgsNyArMzIxMSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgcHV0RHluYW1pY1ZhcigK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHNjb3Bl
LCBpc1N0cmljdE1vZGUsIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlh
bGl6YXRpb24oZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpOworICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KEpTU2NvcGU6OnJlY2VpdmVyRm9yU2NvcGUoc2NvcGUpLCBpc1N0cmljdE1v
ZGUsIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlhbGl6YXRpb24oZ2V0
UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpOwogICAgIHRocm93U2NvcGUucmVsZWFzZSgp
OwogICAgIHNjb3BlLT5tZXRob2RUYWJsZSh2bSktPnB1dChzY29wZSwgZ2xvYmFsT2JqZWN0LCBp
ZGVudCwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSwgc2xvdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMjc3MDI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU4LDggKzU4LDYgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DcmVhdAog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DcmVhdGVJbnRlcm5hbFByb21pc2Us
IEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvcikpOwogSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DcmVhdGVHZW5lcmF0b3IsIEpTQ2VsbCos
IChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvcikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25DcmVhdGVBc3luY0dlbmVyYXRvciwgSlNDZWxsKiwgKEpT
R2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yKSk7Ci1KU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblRvVGhpcywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVj
dCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uVG9UaGlzU3RyaWN0LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25WYWx1ZU1vZCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpKTsKIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVmFsdWVCaXROb3QsIEVuY29kZWRKU1Zh
bHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblZhbHVlQml0QW5kLCBFbmNvZGVkSlNWYWx1
ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjcsNzEgKzUyNywxMyBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBUb1RoaXM6IHsKLSAg
ICAgICAgICAgIC8vIFRvVGhpcyBpbiBtZXRob2RzIGZvciBwcmltaXRpdmUgdHlwZXMgc2hvdWxk
IHNwZWN1bGF0ZSBwcmltaXRpdmUgdHlwZXMgaW4gc3RyaWN0IG1vZGUuCi0gICAgICAgICAgICBi
b29sIGlzU3RyaWN0TW9kZSA9IG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKLSAgICAgICAg
ICAgIGlmIChpc1N0cmljdE1vZGUpIHsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZUJvb2xlYW4oKSkgewotICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQm9vbGVhbik7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkgewotICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQ1MkFueSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0J5dGVjb2RlTnVtYmVyKTsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkgewot
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjU3ltYm9s
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0jaWYg
VVNFKEJJR0lOVDMyKQotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlQmlnSW50MzIoKSkgewotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlUHJlZGljdGlvbihTcGVjQmlnSW50MzIpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNIZWFwQmlnSW50KTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewotICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQmlnSW50KTsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmdJZGVudCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTdHJpbmdJ
ZGVudCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5n
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3Bl
Y1N0cmluZyk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlUHJlZGljdGlvbihTcGVjU3RyaW5nT2JqZWN0KTsKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkgeworICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTdHJpbmdPYmplY3QpOworICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uID0gbm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKTsKLSAgICAgICAgICAgIGlmIChpc1N0
cmljdE1vZGUpCi0gICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9k
ZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChwcmVkaWN0aW9u
KSB7CisgICAgICAgICAgICBpZiAocHJlZGljdGlvbikgewogICAgICAgICAgICAgICAgIFNwZWN1
bGF0ZWRUeXBlIG9yaWdpbmFsUHJlZGljdGlvbiA9IHByZWRpY3Rpb247CiAgICAgICAgICAgICAg
ICAgaWYgKHByZWRpY3Rpb24gJiB+U3BlY09iamVjdCkgewogICAgICAgICAgICAgICAgICAgICAv
LyBXcmFwcGVyIG9iamVjdHMgYXJlIGNyZWF0ZWQgb25seSBpbiBzbG9wcHkgbW9kZS4KQEAgLTEy
MDQsNiArMTE0NiwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVj
T2JqZWN0T3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBHZXRUaGlz
VmFsdWVGb3JDYWxsOgorICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0IHwgU3Bl
Y090aGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgSW5CeVZhbDoKICAg
ICAgICAgY2FzZSBJbkJ5SWQ6CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNCb29sZWFu
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMyLDYgKzIzMiw3IEBAIGJvb2wgc2FmZVRv
RXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAg
Y2FzZSBDaGVja0FycmF5T3JFbXB0eToKICAgICBjYXNlIEdldFNjb3BlOgorICAgIGNhc2UgR2V0
VGhpc1ZhbHVlRm9yQ2FsbDoKICAgICBjYXNlIFNraXBTY29wZToKICAgICBjYXNlIEdldEdsb2Jh
bE9iamVjdDoKICAgICBjYXNlIEdldEdsb2JhbFRoaXM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9u
IDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMTEsNiArNDIxMSwxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAor
ICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDogeworICAgICAgICBjb21waWxlR2V0VGhpc1Zh
bHVlRm9yQ2FsbChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBSZXNv
bHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOiB7CiAgICAgICAgIGNvbXBpbGVSZXNv
bHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsKG5vZGUpOwogICAgICAgICBicmVhazsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI2Nyw2ICs0MjY3LDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29t
cGlsZUdldER5bmFtaWNWYXIobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNh
c2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDogeworICAgICAgICBjb21waWxlR2V0VGhpc1ZhbHVlRm9y
Q2FsbChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIAogICAgIGNhc2UgUmVzb2x2
ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbDogewogICAgICAgICBjb21waWxlUmVzb2x2
ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbChub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyNzcw
MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIwODIsNiArMTIwODIsMjUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldER5bmFtaWNWYQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUaGlzVmFsdWVGb3JDYWxs
KE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOworICAgIEdQUlJlZyBzY29wZUdQUiA9IHNjb3BlLmdwcigpOworCisgICAg
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgbV9qaXQubW92ZVRydXN0ZWRWYWx1ZShqc1Vu
ZGVmaW5lZCgpLCByZXN1bHRSZWdzKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RXaXRo
U2NvcGUgPSBtX2ppdC5icmFuY2hJZlR5cGUoc2NvcGVHUFIsIEpTVHlwZVJhbmdlIHsgRmlyc3RK
U1Njb3BlVHlwZSwgTGFzdEpTU2NvcGVUeXBlIH0pOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHJlc3VsdFJlZ3Mu
dGFnR1BSKCkpOworI2VuZGlmCisgICAgbV9qaXQubW92ZShzY29wZUdQUiwgcmVzdWx0UmVncy5w
YXlsb2FkR1BSKCkpOworICAgIG5vdFdpdGhTY29wZS5saW5rKCZtX2ppdCk7CisKKyAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0RHluYW1pY1ZhcihOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHNjb3BlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTEzNDE2LDI5ICsxMzQzNSwyNSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJhCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlVG9UaGlzKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCB0aGlz
VmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHRl
bXAodGhpcyk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKLSAgICBKU1ZhbHVlUmVncyB0
aGlzVmFsdWVSZWdzID0gdGhpc1ZhbHVlLmpzVmFsdWVSZWdzKCk7Ci0gICAgSlNWYWx1ZVJlZ3Mg
dGVtcFJlZ3MgPSB0ZW1wLnJlZ3MoKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAg
IEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHRoaXNWYWx1ZS5qc1ZhbHVlUmVncygpOworICAgIEdQ
UlJlZyB2YWx1ZUdQUiA9IHZhbHVlUmVncy5wYXlsb2FkR1BSKCk7CiAKKyAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKHZhbHVlUmVncyk7CiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKLSAgICBzbG93Q2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbCh0aGlzVmFsdWVSZWdzKSk7Ci0gICAgc2xvd0Nhc2Vz
LmFwcGVuZCgKLSAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCi0gICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRo
aXNWYWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSks
Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE92ZXJyaWRlc1RvVGhp
cykpKTsKLSAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKHRoaXNWYWx1ZVJlZ3MsIHRlbXBSZWdzKTsK
LQotICAgIEpfSklUT3BlcmF0aW9uX0dKIGZ1bmN0aW9uOwotICAgIGlmIChub2RlLT5lY21hTW9k
ZSgpLmlzU3RyaWN0KCkpCi0gICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzU3RyaWN0
OwotICAgIGVsc2UKLSAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXM7Ci0gICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgZnVuY3Rpb24s
IHRlbXBSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdGhpc1ZhbHVlUmVncykpOwor
ICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RPYmplY3QodmFsdWVHUFIpKTsK
KyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogCi0gICAganNW
YWx1ZVJlc3VsdCh0ZW1wUmVncywgbm9kZSk7CisgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7Cisg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdE90aGVyKHZhbHVlUmVncywgc2Ny
YXRjaC5ncHIoKSkpOworICAgIG1faml0LmxvYWRQdHIoZ2xvYmFsT2JqZWN0LT5hZGRyZXNzT2ZH
bG9iYWxUaGlzKCksIHZhbHVlR1BSKTsKKworICAgIGRvbmUubGluaygmbV9qaXQpOworICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
blRvT2JqZWN0LCB2YWx1ZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
Z2xvYmFsT2JqZWN0KSwgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKSk7CisgICAg
Y2VsbFJlc3VsdCh2YWx1ZUdQUiwgbm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVPYmplY3RLZXlzT3JPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzKE5vZGUqIG5vZGUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShy
ZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NTAsNiArMTQ1MCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNvbXBpbGVHZXRHbG9iYWxWYXJpYWJsZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
UHV0R2xvYmFsVmFyaWFibGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldER5bmFtaWNWYXIo
Tm9kZSopOworICAgIHZvaWQgY29tcGlsZUdldFRoaXNWYWx1ZUZvckNhbGwoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZVB1dER5bmFtaWNWYXIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldENs
b3N1cmVWYXIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVB1dENsb3N1cmVWYXIoTm9kZSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAko
cmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTAsNiArMzUwLDcgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgUmVzb2x2ZVNjb3BlOgogICAg
IGNhc2UgUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbDoKICAgICBjYXNlIEdl
dER5bmFtaWNWYXI6CisgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxsOgogICAgIGNhc2UgUHV0
RHluYW1pY1ZhcjoKICAgICBjYXNlIENvbXBhcmVFcToKICAgICBjYXNlIENvbXBhcmVFcVB0cjoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxNSw2ICsxNjE1LDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBHZXREeW5hbWljVmFyOgogICAgICAgICAgICAgY29tcGlsZUdldER5bmFt
aWNWYXIoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldFRoaXNWYWx1ZUZv
ckNhbGw6CisgICAgICAgICAgICBjb21waWxlR2V0VGhpc1ZhbHVlRm9yQ2FsbCgpOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKICAgICAgICAgICAgIGNv
bXBpbGVQdXREeW5hbWljVmFyKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIyMDMsMzMgKzIy
MDYsMjkgQEAgcHJpdmF0ZToKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKIAogICAgICAgICBM
VmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVj
dWxhdGVkVHlwZSB2YWx1ZVR5cGUgPSBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgIExCYXNpY0Jsb2NrIG5vdENlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAg
ICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBM
QmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAKLSAg
ICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgaXNDZWxsKHZhbHVlLCBwcm92ZW5UeXBl
KG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShpc0NlbGxDYXNlKSwgcmFyZWx5KHNsb3dDYXNl
KSk7Ci0gICAgICAgIAotICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVu
ZFRvKGlzQ2VsbENhc2UsIHNsb3dDYXNlKTsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJl
c3VsdCA9IG1fb3V0LmFuY2hvcih2YWx1ZSk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAg
ICAgICAgIG1fb3V0LnRlc3RJc1plcm8zMigKLSAgICAgICAgICAgICAgICBtX291dC5sb2FkOFpl
cm9FeHQzMih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfdHlwZUluZm9GbGFncyksCi0gICAgICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnQzMihPdmVycmlkZXNUb1RoaXMpKSwKLSAgICAgICAgICAgIHVz
dWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7CisgICAgICAgIG1fb3V0LmJy
YW5jaChpc0NlbGwodmFsdWUsIHZhbHVlVHlwZSksIHVzdWFsbHkoaXNDZWxsQ2FzZSksIHJhcmVs
eShub3RDZWxsQ2FzZSkpOwogICAgICAgICAKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5hcHBlbmRUbyhpc0NlbGxDYXNlLCBub3RDZWxsQ2FzZSk7CisgICAgICAgIFZhbHVl
RnJvbUJsb2NrIGlzT2JqZWN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZhbHVlKTsKKyAgICAgICAg
bV9vdXQuYnJhbmNoKGlzT2JqZWN0KHZhbHVlLCB2YWx1ZVR5cGUpLCB1c3VhbGx5KGNvbnRpbnVh
dGlvbiksIHJhcmVseShzbG93Q2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdENl
bGxDYXNlLCBzbG93Q2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGlzT3RoZXJSZXN1bHQg
PSBtX291dC5hbmNob3IobV9vdXQubG9hZFB0cihtX291dC5hYnNvbHV0ZShnbG9iYWxPYmplY3Qt
PmFkZHJlc3NPZkdsb2JhbFRoaXMoKSkpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzT3RoZXIo
dmFsdWUsIHZhbHVlVHlwZSksIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNl
KSk7CisKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0g
ICAgICAgIEpfSklUT3BlcmF0aW9uX0dKIGZ1bmN0aW9uOwotICAgICAgICBpZiAobV9ub2RlLT5l
Y21hTW9kZSgpLmlzU3RyaWN0KCkpCi0gICAgICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRv
VGhpc1N0cmljdDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRp
b25Ub1RoaXM7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNo
b3Iodm1DYWxsKEludDY0LCBmdW5jdGlvbiwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgdmFs
dWUpKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2
bUNhbGwoSW50NjQsIG9wZXJhdGlvblRvT2JqZWN0LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3Qp
LCB2YWx1ZSwgbV9vdXQuY29uc3RJbnRQdHIoMCkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9u
LCBsYXN0TmV4dCk7Ci0gICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBmYXN0UmVz
dWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBp
c09iamVjdFJlc3VsdCwgaXNPdGhlclJlc3VsdCwgc2xvd1Jlc3VsdCkpOwogICAgIH0KIAogICAg
IHZvaWQgY29tcGlsZVZhbHVlQWRkKCkKQEAgLTE0NDM1LDYgKzE0NDM0LDI2IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsb3dDZWxsKG1fbm9kZS0+
Y2hpbGQxKCkpLCBtX291dC5jb25zdEludFB0cih1aWQpLCBtX291dC5jb25zdEludDMyKG1fbm9k
ZS0+Z2V0UHV0SW5mbygpKSkpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUdldFRoaXNWYWx1
ZUZvckNhbGwoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHNjb3BlID0gbG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKTsKKworICAgICAgICBMQmFzaWNCbG9jayB3aXRoU2NvcGVDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3
QmxvY2soKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayB1bmRlZmluZWRSZXN1bHQgPSBtX291
dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZVVuZGVmaW5lZCkpOworICAg
ICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBpc0NlbGxXaXRoVHlwZShzY29wZSwgSlNU
eXBlUmFuZ2UgeyBGaXJzdEpTU2NvcGVUeXBlLCBMYXN0SlNTY29wZVR5cGUgfSwgV1RGOjpudWxs
b3B0LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwKKyAgICAgICAgICAgIHVzdWFsbHko
Y29udGludWF0aW9uKSwgcmFyZWx5KHdpdGhTY29wZUNhc2UpKTsKKworICAgICAgICBMQmFzaWNC
bG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHdpdGhTY29wZUNhc2UsIGNvbnRpbnVhdGlv
bik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHdpdGhTY29wZVJlc3VsdCA9IG1fb3V0LmFuY2hv
cihzY29wZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBt
X291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1
ZShtX291dC5waGkoSW50NjQsIHVuZGVmaW5lZFJlc3VsdCwgd2l0aFNjb3BlUmVzdWx0KSk7Cisg
ICAgfQorCiAgICAgdm9pZCBjb21waWxlUHV0RHluYW1pY1ZhcigpCiAgICAgewogICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9v
cmlnaW4uc2VtYW50aWMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9E
U0wucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wu
cmIJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3Iv
RFNMLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNyArMTQyLDYgQEAgbW9kdWxlIERTTAogI2lu
Y2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgi
CiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVkZSAiVG9UaGlzU3RhdHVzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkocmV2aXNpb24gMjc3MDI2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9z
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw3ICsxMzcsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0
ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENvCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBqc0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvVGhp
cyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpOworICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU2xvcHB5TW9kZVRoaXMoZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4ganNTdHJpbmcodm0sIEpTT2JqZWN0OjpjYWxjdWxhdGVk
Q2xhc3NOYW1lKG9iamVjdCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2Nyw2ICs0NjcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcygpCiAKICAgICAgICAgREVGSU5FX09QKG9wX3Jlc29sdmVfc2NvcGUpCiAgICAg
ICAgIERFRklORV9PUChvcF9nZXRfZnJvbV9zY29wZSkKKyAgICAgICAgREVGSU5FX09QKG9wX2dl
dF90aGlzX3ZhbHVlX2Zvcl9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3RvX3Njb3Bl
KQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2Zyb21fYXJndW1lbnRzKQogICAgICAgICBERUZJ
TkVfT1Aob3BfcHV0X3RvX2FyZ3VtZW50cykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAko
cmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtNzIwLDYgKzcyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHZvaWQgZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9nZXRfZnJvbV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfZ2V0X3RoaXNfdmFsdWVfZm9yX2NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKGNvbnN0IEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKGNvbnN0IEluc3Ry
dWN0aW9uKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMTcsMjIgKzExMTcsNiBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0CiAgICAgZW1pdFN0b3Jl
Q2VsbChieXRlY29kZS5tX2RzdCwgcmVzdWx0UmVnKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
dG9fdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpOwotICAgIGF1
dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIFN0cnVj
dHVyZUlEKiBjYWNoZWRTdHJ1Y3R1cmVJRCA9ICZtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlE
OwotICAgIFZpcnR1YWxSZWdpc3RlciB0aGlzUmVnaXN0ZXIgPSBieXRlY29kZS5tX3NyY0RzdDsK
LQotICAgIGVtaXRMb2FkKHRoaXNSZWdpc3RlciwgcmVnVDMsIHJlZ1QyKTsKLQotICAgIGFkZFNs
b3dDYXNlKGJyYW5jaElmTm90Q2VsbChyZWdUMykpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElm
Tm90VHlwZShyZWdUMiwgRmluYWxPYmplY3RUeXBlKSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QyLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAgbG9hZDMyKGNh
Y2hlZFN0cnVjdHVyZUlELCByZWdUMik7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVx
dWFsLCByZWdUMCwgcmVnVDIpKTsKLX0KLQogdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfdGR6KGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDaGVja1Rkej4oKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjc3MDI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA1MywyMCArMTA1Myw2IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShjb25zdCBJbnN0
cnUKICAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOwogfQogCi12b2lkIEpJVDo6ZW1pdF9v
cF90b190aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAg
YXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCk7Ci0gICAg
YXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgU3Ry
dWN0dXJlSUQqIGNhY2hlZFN0cnVjdHVyZUlEID0gJm1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJl
SUQ7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3NyY0RzdCwgcmVnVDEp
OwotCi0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxKTsKLQotICAgIGFkZFNs
b3dDYXNlKGJyYW5jaElmTm90VHlwZShyZWdUMSwgRmluYWxPYmplY3RUeXBlKSk7Ci0gICAgbG9h
ZDMyKGNhY2hlZFN0cnVjdHVyZUlELCByZWdUMik7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIo
Tm90RXF1YWwsIEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJl
Z1QyKSk7Ci19Ci0KIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BDcmVhdGVUaGlzPigpOwpAQCAtMTgwMyw2ICsxNzg5LDQ0IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9wcm90b3R5cGVfb2YoY29uc3QKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCByZXN1bHRSZWdzKTsKIH0KIAordm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X3RoaXNfdmFsdWVfZm9yX2NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEdldFRoaXNWYWx1ZUZvckNhbGw+KCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MocmVnVDApOworI2Vsc2UKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJl
Z3MocmVnVDEsIHJlZ1QwKTsKKyNlbmRpZgorICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV9zY29wZSwgdmFsdWVSZWdzKTsKKworICAgIEp1bXAgaXNXaXRoU2NvcGUgPSBicmFu
Y2hJZk5vdFR5cGUodmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgSlNUeXBlUmFuZ2UgeyBGaXJzdEpT
U2NvcGVUeXBlLCBMYXN0SlNTY29wZVR5cGUgfSk7CisgICAgbW92ZVRydXN0ZWRWYWx1ZShqc1Vu
ZGVmaW5lZCgpLCB2YWx1ZVJlZ3MpOworICAgIGlzV2l0aFNjb3BlLmxpbmsodGhpcyk7CisKKyAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCB2YWx1ZVJlZ3MpOworfQor
Cit2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BUb1RoaXM+KCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJl
Z3MocmVnVDApOworI2Vsc2UKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MocmVnVDEsIHJlZ1Qw
KTsKKyNlbmRpZgorICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9zcmNEc3Qs
IHZhbHVlUmVncyk7CisKKyAgICBKdW1wIG5vdENlbGwgPSBicmFuY2hJZk5vdENlbGwodmFsdWVS
ZWdzKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdE9iamVjdCh2YWx1ZVJlZ3MucGF5bG9h
ZEdQUigpKSk7CisgICAgSnVtcCBkb25lID0ganVtcCgpOworCisgICAgbm90Q2VsbC5saW5rKHRo
aXMpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90T3RoZXIodmFsdWVSZWdzLCByZWdUMykp
OworICAgIHN0b3JlVHJ1c3RlZFZhbHVlKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xv
YmFsVGhpcygpLCBhZGRyZXNzRm9yKGJ5dGVjb2RlLm1fc3JjRHN0KSk7CisKKyAgICBkb25lLmxp
bmsodGhpcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4Miw3ICsyODgyLDggQEAgSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEZybwogICAgIC8vIE1vZHVsZVZhciBpcyBhbHdheXMg
Y29udmVydGVkIHRvIENsb3N1cmVWYXIgZm9yIGdldF9mcm9tX3Njb3BlLgogICAgIEFTU0VSVChn
ZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkgIT0gTW9kdWxlVmFyKTsKIAotICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2NvcGUtPmdldFByb3BlcnR5U2xv
dChnbG9iYWxPYmplY3QsIGlkZW50LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xvdCYgc2xv
dCkgLT4gSlNWYWx1ZSB7CisgICAgUHJvcGVydHlTbG90IHNsb3QoSlNTY29wZTo6cmVjZWl2ZXJG
b3JTY29wZShzY29wZSksIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2NvcGUt
PmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90LCBbJl0gKGJvb2wgZm91
bmQsIFByb3BlcnR5U2xvdCYpIC0+IEpTVmFsdWUgewogICAgICAgICBpZiAoIWZvdW5kKSB7CiAg
ICAgICAgICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3Vu
ZCkKICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZ2xvYmFsT2JqZWN0LCBpZGVudCkpOwpA
QCAtMjk1Myw3ICsyOTU0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1
dFRvUwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Qo
c2NvcGUsIGdldFB1dEluZm8uZWNtYU1vZGUoKS5pc1N0cmljdCgpLCBQdXRQcm9wZXJ0eVNsb3Q6
OlVua25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKGdldFB1dEluZm8uaW5pdGlhbGl6YXRp
b25Nb2RlKCkpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChKU1Njb3BlOjpyZWNlaXZlckZv
clNjb3BlKHNjb3BlKSwgZ2V0UHV0SW5mby5lY21hTW9kZSgpLmlzU3RyaWN0KCksIFB1dFByb3Bl
cnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlhbGl6YXRpb24oZ2V0UHV0SW5mby5pbml0
aWFsaXphdGlvbk1vZGUoKSkpOwogICAgIHNjb3BlLT5tZXRob2RUYWJsZSh2bSktPnB1dChzY29w
ZSwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgdm9pZCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjc3MDI2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjExNiw3ICsyMTE2LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2dldF9mcm9tXwogICAgIC8vIE1vZHVsZVZhciBpcyBhbHdheXMgY29udmVydGVkIHRvIENsb3N1
cmVWYXIgZm9yIGdldF9mcm9tX3Njb3BlLgogICAgIEFTU0VSVChtZXRhZGF0YS5tX2dldFB1dElu
Zm8ucmVzb2x2ZVR5cGUoKSAhPSBNb2R1bGVWYXIpOwogCi0gICAgTExJTlRfUkVUVVJOKHNjb3Bl
LT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgWyZdIChib29sIGZvdW5kLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgeworICAgIFByb3BlcnR5U2xvdCBzbG90KEpT
U2NvcGU6OnJlY2VpdmVyRm9yU2NvcGUoc2NvcGUpLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6R2V0KTsKKyAgICBMTElOVF9SRVRVUk4oc2NvcGUtPmdldFByb3BlcnR5U2xvdChn
bG9iYWxPYmplY3QsIGlkZW50LCBzbG90LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xvdCYp
IC0+IEpTVmFsdWUgewogICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAobWV0
YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZ2xvYmFsT2JqZWN0LCBpZGVudCkpOwpA
QCAtMjE3NSw3ICsyMTc2LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF90
b19zYwogICAgIGlmIChtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJv
d0lmTm90Rm91bmQgJiYgIWhhc1Byb3BlcnR5KQogICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVV
bmRlZmluZWRWYXJpYWJsZUVycm9yKGdsb2JhbE9iamVjdCwgaWRlbnQpKTsKIAotICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KHNjb3BlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKS5p
c1N0cmljdCgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0
aW9uKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpOworICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KEpTU2NvcGU6OnJlY2VpdmVyRm9yU2NvcGUoc2NvcGUpLCBtZXRh
ZGF0YS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKS5pc1N0cmljdCgpLCBQdXRQcm9wZXJ0eVNsb3Q6
OlVua25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5p
bml0aWFsaXphdGlvbk1vZGUoKSkpOwogICAgIHNjb3BlLT5tZXRob2RUYWJsZSh2bSktPnB1dChz
Y29wZSwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAogICAgIENvbW1v
blNsb3dQYXRoczo6dHJ5Q2FjaGVQdXRUb1Njb3BlR2xvYmFsKGdsb2JhbE9iamVjdCwgY29kZUJs
b2NrLCBieXRlY29kZSwgc2NvcGUsIHNsb3QsIGlkZW50KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtODE4LDE0ICs4MTgsMjQg
QEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Njb3BlLCBPcEdldFNjbwogZW5kKQogCiAKLWxs
aW50T3BXaXRoTWV0YWRhdGEob3BfdG9fdGhpcywgT3BUb1RoaXMsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQotICAgIGdldChtX3NyY0RzdCwgdDApCi0gICAg
YmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BUb1RoaXNTbG93Ci0gICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKLSAgICBiYm5lcSBKU0NlbGw6Om1f
dHlwZVt0MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdwotICAgIG1ldGFkYXRhKHQy
LCB0MykKLSAgICBsb2FkaSBPcFRvVGhpczo6TWV0YWRhdGE6Om1fY2FjaGVkU3RydWN0dXJlSURb
dDJdLCB0MgotICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyLCAub3BUb1Ro
aXNTbG93CitsbGludE9wKG9wX3RvX3RoaXMsIE9wVG9UaGlzLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCkKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3NyY0RzdCwgdDIsIHQxLCB0MCkKKyAg
ICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9UaGlzTm90Q2VsbAorICAgIGJiYiBKU0NlbGw6Om1f
dHlwZVt0MF0sIE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgpCisKKy5v
cFRvVGhpc05vdENlbGw6CisgICAgb3JpIDEsIHQxCisgICAgYmllcSB0MSwgTnVsbFRhZywgLm9w
VG9UaGlzVW5kZWZpbmVkT3JOdWxsCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdG9fdGhp
cykKKyAgICBkaXNwYXRjaCgpCisKKy5vcFRvVGhpc1VuZGVmaW5lZE9yTnVsbDoKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0
W3QyXSwgdDIKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9nbG9iYWxUaGlzW3QyXSwgdDIK
KyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQy
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCiAgICAgZGlzcGF0Y2goKQogCiAub3BUb1RoaXNT
bG93OgpAQCAtMjU1NCw2ICsyNTY0LDE4IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zy
b21fc2NvcGUsIE8KIGVuZCkKIAogCitsbGludE9wV2l0aFJldHVybihvcF9nZXRfdGhpc192YWx1
ZV9mb3JfY2FsbCwgT3BHZXRUaGlzVmFsdWVGb3JDYWxsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgcmV0dXJuKQorICAgIGdldChtX3Njb3BlLCB0MCkKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MF0sIEZpcnN0SlNT
Y29wZVR5cGUsIC5pc1dpdGhTY29wZQorICAgIGJiYSBKU0NlbGw6Om1fdHlwZVt0MF0sIExhc3RK
U1Njb3BlVHlwZSwgLmlzV2l0aFNjb3BlCisgICAgcmV0dXJuKFVuZGVmaW5lZFRhZywgMCkKKwor
LmlzV2l0aFNjb3BlOgorICAgIHJldHVybihDZWxsVGFnLCB0MCkKK2VuZCkKKworCiBsbGludE9w
V2l0aE1ldGFkYXRhKG9wX3B1dF90b19zY29wZSwgT3BQdXRUb1Njb3BlLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBtYWNybyBwdXRQcm9wZXJ0eSgp
CiAgICAgICAgIGdldChtX3ZhbHVlLCB0MSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyNzcw
MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQkod29ya2luZyBjb3B5KQpAQCAtODI4LDE1ICs4MjgsMjYgQEAgbGxpbnRPcFdpdGhSZXR1
cm4ob3BfZ2V0X3Njb3BlLCBPcEdldFNjbwogZW5kKQogCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfdG9fdGhpcywgT3BUb1RoaXMsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0
YSwgcmV0dXJuKQorbGxpbnRPcChvcF90b190aGlzLCBPcFRvVGhpcywgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gpCiAgICAgZ2V0KG1fc3JjRHN0LCB0MCkKLSAgICBsb2FkcSBbY2ZyLCB0MCwg
OF0sIHQwCi0gICAgYnRxbnogdDAsIG5vdENlbGxNYXNrLCAub3BUb1RoaXNTbG93Ci0gICAgYmJu
ZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBGaW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKLSAg
ICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MQotICAgIG1ldGFkYXRhKHQyLCB0
MykKLSAgICBsb2FkaSBPcFRvVGhpczo6TWV0YWRhdGE6Om1fY2FjaGVkU3RydWN0dXJlSURbdDJd
LCB0MgotICAgIGJpbmVxIHQxLCB0MiwgLm9wVG9UaGlzU2xvdworICAgIGxvYWRxIFtjZnIsIHQw
LCA4XSwgdDEKKyAgICBidHFueiB0MSwgbm90Q2VsbE1hc2ssIC5vcFRvVGhpc05vdENlbGwKKyAg
ICBiYmIgSlNDZWxsOjptX3R5cGVbdDFdLCBPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93CisgICAg
ZGlzcGF0Y2goKQorCisub3BUb1RoaXNOb3RDZWxsOgorICAgIGFuZHEgflRhZ1VuZGVmaW5lZCwg
dDEKKyAgICBicWVxIHQxLCBWYWx1ZU51bGwsIC5vcFRvVGhpc1VuZGVmaW5lZE9yTnVsbAorICAg
ICMgYnFlcSB0MSwgVmFsdWVVbmRlZmluZWQsIC5vcFRvVGhpc1VuZGVmaW5lZE9yTnVsbAorICAg
ICMgYnFlcSB0MSwgVmFsdWVOdWxsLCAub3BUb1RoaXNVbmRlZmluZWRPck51bGwKKyAgICBjYWxs
U2xvd1BhdGgoX3Nsb3dfcGF0aF90b190aGlzKQorICAgIGRpc3BhdGNoKCkKKworLm9wVG9UaGlz
VW5kZWZpbmVkT3JOdWxsOgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRw
IENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDFdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsT2Jq
ZWN0OjptX2dsb2JhbFRoaXNbdDFdLCB0MQorICAgIHN0b3JlcSB0MSwgW2NmciwgdDAsIDhdCiAg
ICAgZGlzcGF0Y2goKQogCiAub3BUb1RoaXNTbG93OgpAQCAtMjY4NCw2ICsyNjk1LDE3IEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE8KIGVuZCkKIAogCitsbGludE9w
V2l0aFJldHVybihvcF9nZXRfdGhpc192YWx1ZV9mb3JfY2FsbCwgT3BHZXRUaGlzVmFsdWVGb3JD
YWxsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQorICAgIGxvYWRWYXJpYWJs
ZShnZXQsIG1fc2NvcGUsIHQwKQorICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MF0sIEZpcnN0SlNT
Y29wZVR5cGUsIC5pc1dpdGhTY29wZQorICAgIGJiYSBKU0NlbGw6Om1fdHlwZVt0MF0sIExhc3RK
U1Njb3BlVHlwZSwgLmlzV2l0aFNjb3BlCisgICAgcmV0dXJuKFZhbHVlVW5kZWZpbmVkKQorCisu
aXNXaXRoU2NvcGU6CisgICAgcmV0dXJuKHQwKQorZW5kKQorCisKIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfcHV0X3RvX3Njb3BlLCBPcFB1dFRvU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIG1hY3JvIHB1dFByb3BlcnR5KCkKICAgICAgICAg
Z2V0KG1fdmFsdWUsIHQxKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNv
cHkpCkBAIC01NDEsNiArNTQxLDggQEAgY29uc3QgRmluYWxPYmplY3RUeXBlID0gY29uc3RleHBy
IEZpbmFsTwogY29uc3QgSlNGdW5jdGlvblR5cGUgPSBjb25zdGV4cHIgSlNGdW5jdGlvblR5cGUK
IGNvbnN0IEFycmF5VHlwZSA9IGNvbnN0ZXhwciBBcnJheVR5cGUKIGNvbnN0IERlcml2ZWRBcnJh
eVR5cGUgPSBjb25zdGV4cHIgRGVyaXZlZEFycmF5VHlwZQorY29uc3QgRmlyc3RKU1Njb3BlVHlw
ZSA9IGNvbnN0ZXhwciBGaXJzdEpTU2NvcGVUeXBlCitjb25zdCBMYXN0SlNTY29wZVR5cGUgPSBj
b25zdGV4cHIgTGFzdEpTU2NvcGVUeXBlCiBjb25zdCBQcm94eU9iamVjdFR5cGUgPSBjb25zdGV4
cHIgUHJveHlPYmplY3RUeXBlCiBjb25zdCBIZWFwQmlnSW50VHlwZSA9IGNvbnN0ZXhwciBIZWFw
QmlnSW50VHlwZQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNCw3
ICs2MDQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNUCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAKICAgICAvLyAxLiBM
ZXQgYXJyYXkgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2JqZWN0IG9uIHRoZSB0aGlzIHZh
bHVlLgogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CkBAIC02ODIsOSArNjgyLDggQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFy
cmF5UHJvdG9GdW5jVAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2Rl
OjpzdHJpY3QoKSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09i
amVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHVpbnQ2NF90IGxlbmd0aCA9IHN0
YXRpY19jYXN0PHVpbnQ2NF90Pih0b0xlbmd0aChnbG9iYWxPYmplY3QsIHRoaXNPYmplY3QpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTc3
Nyw3ICs3NzYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNKCiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gTGV0
IE8gYmUgPyBUb09iamVjdCh0aGlzIHZhbHVlKS4KLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0
cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVY
Q0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAg
aWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVl
KCk7CkBAIC04MzMsNyArODMyLDcgQEAgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNyZWF0ZUFycmF5
SXRlcmF0bwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0
cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVY
Q0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAg
VU5VU0VEX1BBUkFNKHNjb3BlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQpAQCAt
ODYyLDcgKzg2MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1AK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7Cisg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogCiAgICAgaWYg
KGlzSlNBcnJheSh0aGlzVmFsdWUpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShhc0FycmF5KHRoaXNWYWx1ZSktPnBvcChnbG9iYWxPYmplY3QpKSk7
CkBAIC05MDAsNyArODk5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9G
dW5jUAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3Qo
KSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogCiAg
ICAgaWYgKExJS0VMWShpc0pTQXJyYXkodGhpc1ZhbHVlKSAmJiBjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnQoKSA9PSAxKSkgewogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc1Zh
bHVlKTsKQEAgLTkzNiw3ICs5MzUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQ
cm90b0Z1bmNSCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6
c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAg
RVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAg
ICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFs
dWUoKTsKQEAgLTEwMzgsNyArMTAzNyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJh
eVByb3RvRnVuY1MKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6
c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmog
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhD
RVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAo
VU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAg
LTEwNjUsNyArMTA2NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVu
Y1MKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90
b3R5cGUuc2xpY2UKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3Ry
aWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBU
SU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5M
SUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTEyOSw3ICsxMTI4LDcg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jUwogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxP
YmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNl
cHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAg
ICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xMjM1LDcgKzEyMzQsNyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNVCiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8vIDE1LjQuNC4xMwogCi0gICAgSlNPYmplY3QqIHRo
aXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFN
b2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhp
c09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAg
ICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAg
IGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgp
OwpAQCAtMTM3MCw3ICsxMzY5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJv
dG9GdW5jSQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IC8vIDE1LjQuNC4xNAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0
KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCgh
IXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRo
aXNPYmplY3QpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTQxMCw3ICsxNDA5LDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jTAogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDE1LjQuNC4xNQotICAgIEpTT2JqZWN0
KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlz
T2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4g
eyB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHJl
dmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5m
by5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw5ICs2OCw2IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7
CiAgICAgdXNpbmcgR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEZ1bmN0aW9uUHRyID0gYm9vbCAo
KikoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkLCBQcm9wZXJ0eVNsb3QmKTsK
ICAgICBHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VO
VFJZKGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOwogCi0gICAgdXNpbmcgVG9UaGlzRnVuY3Rp
b25QdHIgPSBKU1ZhbHVlICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKTsK
LSAgICBUb1RoaXNGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkodG9UaGlzKTsKLQogICAg
IHVzaW5nIEdldE93blByb3BlcnR5TmFtZXNGdW5jdGlvblB0ciA9IHZvaWQgKCopKEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIERvbnRFbnVtUHJvcGVydGll
c01vZGUpOwogICAgIEdldE93blByb3BlcnR5TmFtZXNGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVf
RU5UUlkoZ2V0T3duUHJvcGVydHlOYW1lcyk7CiAgICAgR2V0T3duUHJvcGVydHlOYW1lc0Z1bmN0
aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShnZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcyk7CkBA
IC0xNTIsNyArMTQ5LDYgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICAgICAgJkNsYXNzTmFt
ZTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4LCBcCiAgICAgICAgICZDbGFzc05hbWU6OmdldE93blBy
b3BlcnR5U2xvdCwgXAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4LCBcCi0gICAgICAgICZDbGFzc05hbWU6OnRvVGhpcywgXAogICAgICAgICAmQ2xhc3NOYW1l
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmdldE93blNwZWNp
YWxQcm9wZXJ0eU5hbWVzLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmN1c3RvbUhhc0luc3RhbmNl
LCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0NiwyOCArMzQ2
LDggQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF90bwogewogICAgIEJF
R0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcFRvVGhpcz4oKTsKLSAgICBhdXRv
JiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CiAgICAgSlNWYWx1ZSB2
MSA9IEdFVChieXRlY29kZS5tX3NyY0RzdCkuanNWYWx1ZSgpOwotICAgIGlmICh2MS5pc0NlbGwo
KSkgewotICAgICAgICBTdHJ1Y3R1cmVJRCBteVN0cnVjdHVyZUlEID0gdjEuYXNDZWxsKCktPnN0
cnVjdHVyZUlEKCk7Ci0gICAgICAgIFN0cnVjdHVyZUlEIG90aGVyU3RydWN0dXJlSUQgPSBtZXRh
ZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEOwotICAgICAgICBpZiAobXlTdHJ1Y3R1cmVJRCAhPSBv
dGhlclN0cnVjdHVyZUlEKSB7Ci0gICAgICAgICAgICBpZiAob3RoZXJTdHJ1Y3R1cmVJRCkKLSAg
ICAgICAgICAgICAgICBtZXRhZGF0YS5tX3RvVGhpc1N0YXR1cyA9IFRvVGhpc0NvbmZsaWN0ZWQ7
Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEID0gbXlTdHJ1Y3R1cmVJ
RDsKLSAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jaywgdm0uZ2V0U3Ry
dWN0dXJlKG15U3RydWN0dXJlSUQpKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAg
IG1ldGFkYXRhLm1fdG9UaGlzU3RhdHVzID0gVG9UaGlzQ29uZmxpY3RlZDsKLSAgICAgICAgbWV0
YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCA9IDA7Ci0gICAgfQotICAgIC8vIE5vdGU6IFdlIG9u
bHkgbmVlZCB0byBkbyB0aGlzIHZhbHVlIHByb2ZpbGluZyBoZXJlIG9uIHRoZSBzbG93IHBhdGgu
IFRoZSBmYXN0IHBhdGgKLSAgICAvLyBqdXN0IHJldHVybnMgdGhlIGlucHV0IHRvIHRvX3RoaXMg
aWYgdGhlIHN0cnVjdHVyZSBjaGVjayBzdWNjZWVkcy4gSWYgdGhlIHN0cnVjdHVyZQotICAgIC8v
IGNoZWNrIHN1Y2NlZWRzLCBkb2luZyB2YWx1ZSBwcm9maWxpbmcgaGVyZSBpcyBlcXVpdmFsZW50
IHRvIGRvaW5nIGl0IHdpdGggYSBwb3RlbnRpYWxseQotICAgIC8vIGRpZmZlcmVudCBvYmplY3Qg
dGhhdCBzdGlsbCBoYXMgdGhlIHNhbWUgc3RydWN0dXJlIG9uIHRoZSBmYXN0IHBhdGggc2luY2Ug
aXQnbGwgcHJvZHVjZQotICAgIC8vIHRoZSBzYW1lIFNwZWN1bGF0ZWRUeXBlLiBUaGVyZWZvcmUs
IHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdmFsdWUgcHJvZmlsaW5nIG9uIHRoZQotICAg
IC8vIGZhc3QgcGF0aC4KLSAgICBhdXRvIHZhbHVlID0gdjEudG9UaGlzKGdsb2JhbE9iamVjdCwg
Ynl0ZWNvZGUubV9lY21hTW9kZSk7CisgICAgSlNPYmplY3QqIHZhbHVlID0gdjEudG9TbG9wcHlN
b2RlVGhpcyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9XSVRIX1BST0ZJTElOR19DVVNUT00o
Ynl0ZWNvZGUubV9zcmNEc3QsIHZhbHVlLCBQUk9GSUxFX1ZBTFVFKHZhbHVlKSk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCShyZXZp
c2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMywxNSBAQCBSZWZQdHI8Q2FjaGVkQnl0
ZWNvZGU+IGdlbmVyYXRlTW9kdWxlQnl0CiAgICAgcmV0dXJuIHNlcmlhbGl6ZUJ5dGVjb2RlKHZt
LCB1bmxpbmtlZENvZGVCbG9jaywgc291cmNlLCBTb3VyY2VDb2RlVHlwZTo6TW9kdWxlVHlwZSwg
c3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgZmQsIGVycm9yLCB7IH0pOwogfQogCitzdGF0aWMgaW5s
aW5lIEpTT2JqZWN0KiB0b0dsb2JhbFRoaXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpCisgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKTsKKyAgICBp
ZiAodmFsdWUuaXNPYmplY3QoKSAmJiBhc09iamVjdCh2YWx1ZSktPmlzR2xvYmFsT2JqZWN0KCkp
CisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPih2YWx1ZSktPmdsb2JhbFRo
aXMoKTsKKyAgICByZXR1cm4gdmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKK30KKwogSlNW
YWx1ZSBldmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIEpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1
cm5lZEV4Y2VwdGlvbikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0x
MzEsOSArMTQwLDggQEAgSlNWYWx1ZSBldmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwog
ICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21TdHJpbmdUYWJsZSgpID09IFRocmVhZDo6Y3VycmVu
dCgpLmF0b21TdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghdm0uaXNDb2xsZWN0
b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCi0gICAgaWYgKCF0aGlzVmFsdWUgfHwgdGhpc1Zh
bHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHRoaXNWYWx1ZSA9IGdsb2JhbE9iamVj
dDsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1ZS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKKyAgICBKU09iamVjdCog
dGhpc09iaiA9IHRvR2xvYmFsVGhpcyhnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSk7CisgICAgc2Nv
cGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHZtLmludGVycHJl
dGVyLT5leGVjdXRlUHJvZ3JhbShzb3VyY2UsIGdsb2JhbE9iamVjdCwgdGhpc09iaik7CiAKICAg
ICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUyLDcgKzM1Miw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRlUHJvdG9G
dW5jVG8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0
KCkpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0ZS5wcm90b3R5cGVbU3ltYm9sLnRvUHJpbWl0
aXZlXSBleHBlY3RlZCB8dGhpc3wgdG8gYmUgYW4gb2JqZWN0LiIpOwogICAgIEpTT2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlKTsKQEAgLTg2Niw4ICs4NjYs
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZGF0ZVByb3RvRnVuY0dlCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCk7Ci0gICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+
KHZtLCB0aGlzVmFsdWUpOworICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxE
YXRlSW5zdGFuY2UqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKFVOTElL
RUxZKCF0aGlzRGF0ZU9iaikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUpOwogCkBAIC04ODMsOCArODgyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGRhdGVQcm90b0Z1bmNUbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlOjpzdHJpY3QoKSk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXNWYWx1ZS50
b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIHRpbWVWYWx1ZSA9
IG9iamVjdC0+dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAko
cmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQ
cm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihlcnJvclByb3RvRnVuY1QKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxLiBMZXQgTyBiZSB0aGUgdGhpcyB2YWx1ZS4KLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2Jh
bE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAKICAgICAvLyAyLiBJZiBUeXBlKE8pIGlzIG5vdCBPYmpl
Y3QsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICBpZiAoIXRoaXNWYWx1ZS5pc09i
amVjdCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCShy
ZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0lu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBC
YXNlID0gSlNDZWxsOwogICAgIHVzaW5nIERpZ2l0ID0gVUNQVVJlZ2lzdGVyOwogCi0gICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbCB8IE92ZXJyaWRlc1RvVGhpczsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRCaWdJbnQ7CiAK
ICAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjQsMjYgKzE2NCw2IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlKEpTR2wK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXNTbG93Q2Fz
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkgY29uc3QK
LXsKLSAgICBBU1NFUlQoIWlzQ2VsbCgpKTsKLQotICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgp
KQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0KLSAgICBpZiAoaXNJbnQzMigpIHx8IGlzRG91Ymxl
KCkpCi0gICAgICAgIHJldHVybiBjb25zdHJ1Y3ROdW1iZXIoZ2xvYmFsT2JqZWN0LCBhc1ZhbHVl
KCkpOwotICAgIGlmIChpc1RydWUoKSB8fCBpc0ZhbHNlKCkpCi0gICAgICAgIHJldHVybiBjb25z
dHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4oZ2xvYmFsT2JqZWN0LCBhc1ZhbHVlKCkp
OwotI2lmIFVTRShCSUdJTlQzMikKLSAgICBpZiAoaXNCaWdJbnQzMigpKQotICAgICAgICByZXR1
cm4gQmlnSW50T2JqZWN0OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3Qs
ICp0aGlzKTsKLSNlbmRpZgotCi0gICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOwotICAg
IHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKTsKLX0KLQogSlNPYmplY3QqIEpTVmFs
dWU6OnN5bnRoZXNpemVQcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29u
c3QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCShyZXZpc2lvbiAyNzcwMjYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzMiw3ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwdXRCeUluZGV4KEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93
KTsKIAogICAgIEpTVmFsdWUgZ2V0UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0g
ICAgSlNWYWx1ZSB0b1RoaXMoSlNHbG9iYWxPYmplY3QqLCBFQ01BTW9kZSkgY29uc3Q7CisgICAg
SlNPYmplY3QqIHRvU2xvcHB5TW9kZVRoaXMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAogICAg
IHN0YXRpYyBib29sIGVxdWFsKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2
Mik7CiAgICAgc3RhdGljIGJvb2wgZXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgdjEsIEpTVmFsdWUgdjIpOwpAQCAtNTIyLDcgKzUyMiw2IEBAIHByaXZhdGU6CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNTdHJpbmcqIHRvU3RyaW5nU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3Qq
LCBib29sIHJldHVybkVtcHR5U3RyaW5nT25FcnJvcikgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgV1RGOjpTdHJpbmcgdG9XVEZTdHJpbmdTbG93Q2FzZShKU0dsb2JhbE9iamVjdCopIGNv
bnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0b09iamVjdFNsb3dDYXNlKEpT
R2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0b1Ro
aXNTbG93Q2FzZShKU0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKSBjb25zdDsKIAogICAgIEVuY29k
ZWRWYWx1ZURlc2NyaXB0b3IgdTsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHJldmlzaW9uIDI3NzAyNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTkyOSw5ICs5MjksOSBAQCBpbmxpbmUgY29uc3QgQ2xhc3NJbmZvKiBKU1ZhbHVl
OjpjbGFzc0luCiAgICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPmNsYXNzSW5mbyh2bSkg
OiBudWxscHRyOwogfQogCi1pbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpIGNvbnN0CitpbmxpbmUgSlNP
YmplY3QqIEpTVmFsdWU6OnRvU2xvcHB5TW9kZVRoaXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+bWV0aG9kVGFi
bGUoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSktPnRvVGhpcyhhc0NlbGwoKSwgZ2xvYmFsT2JqZWN0LCBl
Y21hTW9kZSkgOiB0b1RoaXNTbG93Q2FzZShnbG9iYWxPYmplY3QsIGVjbWFNb2RlKTsKKyAgICBy
ZXR1cm4gaXNVbmRlZmluZWRPck51bGwoKSA/IGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpIDog
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKIH0KIAogQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFs
dWU6OmdldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
Y3BwCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsMTMgKzEzNyw2IEBAIGJvb2wgSlNDZWxs
OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWwKICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0
aG9kVGFibGUoZ2xvYmFsT2JqZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNP
YmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnRpZmllcik7CiB9CiAKLUpTVmFsdWUgSlNDZWxsOjp0
b1RoaXMoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9k
ZSBlY21hTW9kZSkKLXsKLSAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgcmV0
dXJuIGNlbGw7Ci0gICAgcmV0dXJuIGNlbGwtPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Ci19Ci0K
IEpTVmFsdWUgSlNDZWxsOjp0b1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHByZWZlcnJlZFR5cGUpIGNvbnN0CiB7CiAgICAgaWYg
KGlzU3RyaW5nKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAko
cmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw4ICsxODQsNiBAQCBwdWJsaWM6CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxP
YmplY3QqLCBQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJ
bmRleChKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAK
LSAgICBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBFQ01B
TW9kZSk7Ci0KICAgICBzdGF0aWMgYm9vbCBjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoY29uc3Qg
U3RydWN0dXJlJik7CiAgICAgSlNWYWx1ZSBmYXN0R2V0T3duUHJvcGVydHkoVk0mLCBTdHJ1Y3R1
cmUmLCBQcm9wZXJ0eU5hbWUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
MTQsOSArMTIxNCwxMSBAQCBpbmxpbmUgSlNBcnJheSogY29uc3RydWN0QXJyYXlOZWdhdGl2ZUlu
CiAgICAgcmV0dXJuIEFycmF5QWxsb2NhdGlvblByb2ZpbGU6OnVwZGF0ZUxhc3RBbGxvY2F0aW9u
Rm9yKHByb2ZpbGUsIGNvbnN0cnVjdEFycmF5TmVnYXRpdmVJbmRleGVkKGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCB2YWx1ZXMsIGxlbmd0aCkpOwogfQogCi1pbmxpbmUgSlNPYmplY3QqIEpTU2Nv
cGU6Omdsb2JhbFRoaXMoKQoteyAKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0KCktPmdsb2JhbFRo
aXMoKTsKK2lubGluZSBKU09iamVjdCogSlNTY29wZTo6cmVjZWl2ZXJGb3JTY29wZShKU09iamVj
dCogc2NvcGUpCit7CisgICAgaWYgKHNjb3BlLT50eXBlKCkgPT0gR2xvYmFsT2JqZWN0VHlwZSkK
KyAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KHNjb3BlKS0+Z2xvYmFsVGhp
cygpOworICAgIHJldHVybiBzY29wZTsKIH0KIAogaW5saW5lIEpTT2JqZWN0KiBKU0dsb2JhbE9i
amVjdDo6Z2xvYmFsVGhpcygpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCShyZXZpc2lv
biAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwMCw4ICs3MDAsNyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY01ha2VUCiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihnbG9iYWxGdW5jUHJvdG9HZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3Qo
KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUuZ2V0UHJvdG90eXBlKGds
b2JhbE9iamVjdCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS5nZXRQcm90b3R5cGUoZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihnbG9iYWxGdW5jUHJvdG9TZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03MDksNyArNzA4LDcgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNQcm90bwogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGds
b2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCBPYmplY3RQcm90b0NhbGxlZE9uTnVsbE9yVW5kZWZpbmVkRXJyb3IpOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyNzcw
MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5MDAsNyArMTkwMCw3IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlw
ZVdpdGhDeWNsZUNoZWMKICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCBzaG91bGRUaHJvd0lmQ2FudFNldCwgIkNhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0
YWJsZSBwcm90b3R5cGUgb2JqZWN0Il9zKTsKICAgICB9CiAKLSAgICBBU1NFUlQobWV0aG9kVGFi
bGUodm0pLT50b1RoaXModGhpcywgZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpID09
IHRoaXMpOworICAgIEFTU0VSVCghaW5oZXJpdHM8SlNTY29wZT4odm0pKTsKIAogICAgIGlmICh0
aGlzLT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pID09IHByb3RvdHlwZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC0yNTU5LDExICsyNTU5LDYgQEAgSlNTdHJpbmcqIEpTT2JqZWN0Ojp0b1N0cmlu
ZyhKU0dsb2JhbE9iagogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHJpbWl0aXZlLnRv
U3RyaW5nKGdsb2JhbE9iamVjdCkpOwogfQogCi1KU1ZhbHVlIEpTT2JqZWN0Ojp0b1RoaXMoSlND
ZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKQotewotICAgIHJldHVybiBqc0Nh
c3Q8SlNPYmplY3QqPihjZWxsKTsKLX0KLQogdm9pZCBKU09iamVjdDo6c2VhbChWTSYgdm0pCiB7
CiAgICAgaWYgKGlzU2VhbGVkKHZtKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjg3LDggKzY4Nyw2IEBAIHB1
YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9OdW1iZXIoSlNHbG9iYWxPYmpl
Y3QqKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1N0cmluZyogdG9TdHJpbmcoSlNH
bG9iYWxPYmplY3QqKSBjb25zdDsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU1Zh
bHVlIHRvVGhpcyhKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKTsKLQogICAgIC8v
IFRoaXMgZ2V0IGZ1bmN0aW9uIG9ubHkgbG9va3MgYXQgdGhlIHByb3BlcnR5IG1hcC4KICAgICBK
U1ZhbHVlIGdldERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0
CiAgICAgewpAQCAtODAyLDExICs4MDAsOSBAQCBwdWJsaWM6CiAKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3Vs
ZFRocm93KTsKIAotICAgIGJvb2wgaXNFbnZpcm9ubWVudCgpIGNvbnN0OwogICAgIGJvb2wgaXNH
bG9iYWxPYmplY3QoKSBjb25zdDsKICAgICBib29sIGlzSlNMZXhpY2FsRW52aXJvbm1lbnQoKSBj
b25zdDsKICAgICBib29sIGlzR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkgY29uc3Q7Ci0gICAg
Ym9vbCBpc1N0cmljdEV2YWxBY3RpdmF0aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc1dpdGhTY29w
ZSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc0Vycm9ySW5zdGFuY2UoKSBjb25zdDsKQEAgLTEyNzYs
MTggKzEyNzIsNiBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNHbG9iYWxMZXhpY2FsRW52CiAg
ICAgcmV0dXJuIHR5cGUoKSA9PSBHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnRUeXBlOwogfQogCi1p
bmxpbmUgYm9vbCBKU09iamVjdDo6aXNTdHJpY3RFdmFsQWN0aXZhdGlvbigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHR5cGUoKSA9PSBTdHJpY3RFdmFsQWN0aXZhdGlvblR5cGU7Ci19Ci0KLWlubGlu
ZSBib29sIEpTT2JqZWN0Ojppc0Vudmlyb25tZW50KCkgY29uc3QKLXsKLSAgICBib29sIHJlc3Vs
dCA9IEdsb2JhbE9iamVjdFR5cGUgPD0gdHlwZSgpICYmIHR5cGUoKSA8PSBTdHJpY3RFdmFsQWN0
aXZhdGlvblR5cGU7Ci0gICAgQVNTRVJUKChpc0dsb2JhbE9iamVjdCgpIHx8IGlzSlNMZXhpY2Fs
RW52aXJvbm1lbnQoKSB8fCBpc0dsb2JhbExleGljYWxFbnZpcm9ubWVudCgpIHx8IGlzU3RyaWN0
RXZhbEFjdGl2YXRpb24oKSkgPT0gcmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBp
bmxpbmUgYm9vbCBKU09iamVjdDo6aXNFcnJvckluc3RhbmNlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gdHlwZSgpID09IEVycm9ySW5zdGFuY2VUeXBlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTcsMTEg
KzQxNyw0IEBAIFN5bWJvbFRhYmxlKiBKU1Njb3BlOjpzeW1ib2xUYWJsZShWTSYgdm0KICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotSlNWYWx1ZSBKU1Njb3BlOjp0b1RoaXMoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCi17Ci0gICAgaWYg
KGVjbWFNb2RlLmlzU3RyaWN0KCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAg
IHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCShyZXZpc2lv
biAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgdXNpbmcgVERaRW52aXJvbm1lbnQgPSBIYXNo
U2V0PFJlZlB0cjxVbgogY2xhc3MgSlNTY29wZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
IHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBPdmVycmlkZXNUb1RoaXM7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUs
IFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyB2b2lkIHN1YnNwYWNlRm9yKFZNJikKQEAgLTU0
LDYgKzU0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZOZXh0KCk7CiAK
ICAgICBzdGF0aWMgSlNPYmplY3QqIG9iamVjdEF0U2NvcGUoSlNTY29wZSopOworICAgIHN0YXRp
YyBKU09iamVjdCogcmVjZWl2ZXJGb3JTY29wZShKU09iamVjdCopOwogCiAgICAgc3RhdGljIEpT
T2JqZWN0KiByZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiwgSlNTY29wZSosIGNvbnN0IElkZW50aWZp
ZXImKTsKICAgICBzdGF0aWMgSlNWYWx1ZSByZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNs
SW5FdmFsKEpTR2xvYmFsT2JqZWN0KiwgSlNTY29wZSosIGNvbnN0IElkZW50aWZpZXImKTsKQEAg
LTc4LDEyICs3OSw4IEBAIHB1YmxpYzoKICAgICBTY29wZUNoYWluSXRlcmF0b3IgZW5kKCk7CiAg
ICAgSlNTY29wZSogbmV4dCgpOwogCi0gICAgSlNPYmplY3QqIGdsb2JhbFRoaXMoKTsKLQogICAg
IFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZShWTSYpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUp
OwotCiBwcm90ZWN0ZWQ6CiAgICAgSlNTY29wZShWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqIG5l
eHQpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3Bw
CShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMCwxMyArNDEwLDYgQEAgSlNPYmplY3QqIEpT
U3RyaW5nOjp0b09iamVjdChKU0dsb2JhbE9iagogICAgIHJldHVybiBTdHJpbmdPYmplY3Q6OmNy
ZWF0ZShnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCwgY29uc3RfY2FzdDxKU1N0cmlu
Zyo+KHRoaXMpKTsKIH0KIAotSlNWYWx1ZSBKU1N0cmluZzo6dG9UaGlzKEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCi17Ci0gICAg
aWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCi0gICAgICAgIHJldHVybiBjZWxsOwotICAgIHJldHVy
biBTdHJpbmdPYmplY3Q6OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCwg
YXNTdHJpbmcoY2VsbCkpOwotfQotCiBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eURl
c2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6
CiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTI5NTYKICAgICAvLyBEbyB3ZSByZWFsbHkgbmVlZCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlT
bG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvPwogICAgIC8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyOTU4Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5
SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBPdmVy
cmlkZXNUb1RoaXM7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVy
byB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVl
ZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBkZXN0
cm95KEpTQ2VsbCogY2VsbCkKQEAgLTIzNyw4ICsyMzcsNiBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICBzdGF0aWMg
SlNWYWx1ZSB0b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBFQ01BTW9kZSk7Ci0KICAg
ICBTdHJpbmdWaWV3IHVuc2FmZVZpZXcoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAogICAgIGZy
aWVuZCBKU1N0cmluZyoganNTdHJpbmcoVk0mLCBjb25zdCBTdHJpbmcmKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3
LDYgKzEwNyw4IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgLy8gRW5kIGVudmlyb25t
ZW50IHJlY29yZCB0eXBlcy4KICAgICBXaXRoU2NvcGVUeXBlLAogICAgIC8vIEVuZCBKU1Njb3Bl
IHR5cGVzLgorICAgIEZpcnN0SlNTY29wZVR5cGUgPSBHbG9iYWxPYmplY3RUeXBlLAorICAgIExh
c3RKU1Njb3BlVHlwZSA9IFdpdGhTY29wZVR5cGUsCiAKICAgICBNb2R1bGVOYW1lc3BhY2VPYmpl
Y3RUeXBlLAogICAgIFJlZ0V4cE9iamVjdFR5cGUsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcg
KzQxLDYgQEAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBNYXNxdWVyYWRlc0FzVQogc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID0gMSA8PCAx
Owogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNHZXRDYWxsRGF0YSA9IDEgPDwg
MjsgLy8gTmVlZCB0aGlzIGZsYWcgaWYgeW91IGltcGxlbWVudCBbW0NhbGxhYmxlXV0gaW50ZXJm
YWNlLCB3aGljaCBtZWFucyBvdmVycmlkaW5nIGdldENhbGxEYXRhLiBUaGUgb2JqZWN0IG1heSBu
b3QgYmUgY2FsbGFibGUgc2luY2UgZ2V0Q2FsbERhdGEgY2FuIHNheSBpdCBpcyBub3QgY2FsbGFi
bGUuCiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCA9IDEgPDwgMzsKLXN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgT3ZlcnJpZGVzVG9UaGlzID0g
MSA8PCA0OyAvLyBJZiB0aGlzIGlzIGZhbHNlIHRoZW4gdGhpcyByZXR1cm5zIHNvbWV0aGluZyBv
dGhlciB0aGFuICd0aGlzJy4gTm9uLW9iamVjdCBjZWxscyB0aGF0IGFyZSB2aXNpYmxlIHRvIEpT
IGhhdmUgdGhpcyBzZXQgYXMgZG8gc29tZSBleG90aWMgb2JqZWN0cy4KIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgSGFzU3RhdGljUHJvcGVydHlUYWJsZSA9IDEgPDwgNTsKIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgVHlwZUluZm9QZXJDZWxsQml0ID0gMSA8PCA3OyAvLyBVbmxpa2Ugb3Ro
ZXIgaW5saW5lIGZsYWdzLCB0aGlzIHdpbGwgb25seSBiZSBzZXQgb24gdGhlIGNlbGwgaXRzZWxm
IGFuZCB3aWxsIG5vdCBiZSBzZXQgb24gdGhlIFN0cnVjdHVyZS4KIApAQCAtOTgsNyArOTcsNiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgb3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KElu
bGluZVR5cGVGbGFncyBmbGFncykgeyByZXR1cm4gZmxhZ3MgJiBPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3Q7IH0KICAgICBzdGF0aWMgYm9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlKElubGlu
ZVR5cGVGbGFncyBmbGFncykgeyByZXR1cm4gZmxhZ3MgJiBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxl
OyB9CiAgICAgc3RhdGljIGJvb2wgcGVyQ2VsbEJpdChJbmxpbmVUeXBlRmxhZ3MgZmxhZ3MpIHsg
cmV0dXJuIGZsYWdzICYgVHlwZUluZm9QZXJDZWxsQml0OyB9Ci0gICAgYm9vbCBvdmVycmlkZXNU
b1RoaXMoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MxPE92ZXJyaWRlc1RvVGhpcz4oKTsg
fQogICAgIGJvb2wgc3RydWN0dXJlSXNJbW1vcnRhbCgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25G
bGFnczI8U3RydWN0dXJlSXNJbW1vcnRhbD4oKTsgfQogICAgIGJvb2wgb3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlOYW1lcygpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczI8T3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlOYW1lcz4oKTsgfQogICAgIGJvb2wgb3ZlcnJpZGVzR2V0T3duU3BlY2lhbFBy
b3BlcnR5TmFtZXMoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyPE92ZXJyaWRlc0dldE93
blNwZWNpYWxQcm9wZXJ0eU5hbWVzPigpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3NzAyNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgT2JqZWN0UHJvdG90eXBlKiBPYmplY3RQcm90b3R5
cGU6OmNyZWF0ZQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jVmFs
dWVPZiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNPYmplY3QqIHZhbHVlT2JqID0g
dGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF2YWx1
ZU9iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtOTMsOCArOTMsNyBA
QCBib29sIG9iamVjdFByb3RvdHlwZUhhc093blByb3BlcnR5KEpTR2xvCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGJhc2UudG9UaGlzKGdsb2JhbE9iamVj
dCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNW
YWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
YmFzZS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29w
ZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2Jq
ZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM1LDggKzEzNCw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmMKICAgICBpZiAoIWNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oZmFsc2UpKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwotICAgIEpT
T2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAg
SlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0
aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5j
b2RlZEpTVmFsdWUoKTsKQEAgLTE1OSw3ICsxNTcsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04ob2JqZWN0UHJvdG9GdW5jCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0
aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBF
Q01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3Qq
IHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
ICAgICBKU1ZhbHVlIGdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CkBAIC0xODYsNyArMTg0
LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuYwogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChn
bG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBzZXQgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDEpOwpAQCAtMjEzLDcgKzIxMSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihvYmplY3RQcm90b0Z1bmMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRo
aXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCog
dGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5
S2V5KGdsb2JhbE9iamVjdCk7CkBAIC0yNDMsNyArMjQxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKG9iamVjdFByb3RvRnVuYwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJv
cGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKQEAgLTI3Niw3ICsyNzQsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTT2JqZWN0
KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAKICAgICBzY29wZS5yZWxlYXNlKCk7CkBAIC0yOTcsNyArMjk1LDcgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuYwogICAgIC8vIDIuIEludm9rZShWLCAidG9TdHJp
bmciKQogCiAgICAgLy8gTGV0IE8gYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2JqZWN0IHBh
c3NpbmcgdGhlIHRoaXMgdmFsdWUgYXMgdGhlIGFyZ3VtZW50LgotICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSB0aGlzVmFsdWUudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50
b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzVmFsdWUu
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIExldCB0b1N0cmluZyBiZSB0aGUgTy5bW0dldF1d
KCJ0b1N0cmluZyIsIFYpCkBAIC0zOTYsOCArMzk0LDcgQEAgSlNTdHJpbmcqIG9iamVjdFByb3Rv
dHlwZVRvU3RyaW5nKEpTR2xvYgogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJv
dG9GdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3RQcm90b3R5cGVUb1N0cmluZyhnbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0UHJvdG90eXBl
VG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
eHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3h5T2JqZWN0LmNwcAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjUsNyArNTI1
LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHBlcmZvcm1Qcm94eUNhbAogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7Ci0gICAg
YXJndW1lbnRzLmFwcGVuZChjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkpOworICAgIGFyZ3VtZW50cy5hcHBlbmQoY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChhcmdBcnJheSk7CiAgICAgQVNT
RVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZsb3dlZCgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYWxsKGdsb2JhbE9iamVjdCwgYXBwbHlNZXRob2QsIGNh
bGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3NzAyNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxMiw3ICsyMTIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
cmVnRXhwUHJvdG9GdW5jCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9k
ZTo6c3RyaWN0KCkpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAy
NzcwMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzksOSArODM5LDYgQEAgc3RhdGljIGlubGluZSBib29s
IGNoZWNrT2JqZWN0Q29lcmNpYmxlKAogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKHRoaXNWYWx1ZS5pc09iamVj
dCgpICYmIGFzT2JqZWN0KHRoaXNWYWx1ZSktPmlzRW52aXJvbm1lbnQoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbC5oCShyZXZpc2lvbiAyNzcwMjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFN5bWJvbCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewog
cHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJl
SXNJbW1vcnRhbCB8IE92ZXJyaWRlc1RvVGhpczsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0lt
bW9ydGFsOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMjc3MDI2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDUtMDUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxl
c2hAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIEFib2xpc2ggdXNpbmcgcmVzb2x2ZWQgc2Nv
cGUgYXMgfHRoaXN8IHZhbHVlIHdoZW4gY2FsbGluZyBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTM5NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURMT3BlcmF0aW9uPEpTRE9NV2luZG93
Pjo6Y2FzdCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oOgor
ICAgICAgICAoV2ViQ29yZTo6SURMT3BlcmF0aW9uPEpTRXZlbnRUYXJnZXQ+OjpjYWxsKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdl
bmVyYXRlSW1wbGVtZW50YXRpb24pOgorCiAyMDIxLTA1LTA1ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3Igc3BlY2lm
eWluZyBhIGNvbG9yIHNwYWNlIGZvciAyRCBjYW52YXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDI3NzAyNikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTgwLDcgKzU4MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc0RPTVcKIAogdGVtcGxhdGU8PiBpbmxpbmUgSlNET01XaW5kb3cqIElETE9wZXJh
dGlvbjxKU0RPTVdpbmRvdz46OmNhc3QoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQogewotICAgIHJldHVybiB0b0pTRE9NV2luZG93KGxl
eGljYWxHbG9iYWxPYmplY3Qudm0oKSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRvVGhpcygmbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpFQ01BTW9kZTo6c2xvcHB5KCkpKTsKKyAgICByZXR1cm4g
dG9KU0RPTVdpbmRvdyhsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCksIGNhbGxGcmFtZS50aGlzVmFs
dWUoKS50b1Nsb3BweU1vZGVUaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiB9CiAKIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fb3BlbkRhdGFi
YXNlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRD
dXN0b20uaAkocmV2aXNpb24gMjc3MDI2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudFRhcmdldEN1c3RvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1
YmxpYzoKICAgICAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICAgICAgYXV0byB0aGlzT2JqZWN0ID0ganNFdmVudFRhcmdldENhc3Qodm0sIGNhbGxGcmFt
ZS50aGlzVmFsdWUoKS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6RUNNQU1vZGU6
OnNsb3BweSgpKSk7CisgICAgICAgIGF1dG8gdGhpc09iamVjdCA9IGpzRXZlbnRUYXJnZXRDYXN0
KHZtLCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9TbG9wcHlNb2RlVGhpcygmbGV4aWNhbEdsb2Jh
bE9iamVjdCkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCAiRXZlbnRUYXJnZXQiLCBvcGVyYXRpb25OYW1lKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9u
IDI3NzAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC00ODI1LDcgKzQ4MjUsNyBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7XG4iKTsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoZGVjb2RlZFRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKVxuIik7Ci0gICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFs
dWUoJmxleGljYWxHbG9iYWxPYmplY3QpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnNsb3BweSgpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlKCZsZXhpY2FsR2xvYmFsT2JqZWN0KS50
b1Nsb3BweU1vZGVUaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTtcbiIpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICRjYXN0aW5nRnVuY3Rpb24odm0sIGRlY29k
ZWRUaGlzVmFsdWUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7CiAgICAgICAgIH0gZWxzZSB7CkBAIC00ODQyLDcgKzQ4NDIsNyBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAjIEZJWE1FOiBNYWtlIGNvbnNpc3RlbnQgSURMQXR0cmli
dXRlPD46OmNhc3QgYW5kIElETE9wZXJhdGlvbjw+OjpjYXN0IGluIGNhc2Ugb2YgQ3VzdG9tUHJv
eHlUb0pTT2JqZWN0LgogICAgICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjM3NTgKICAgICAgICAgbXkgJGNhc3RpbmdGdW5jdGlvbiA9ICRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVByb3h5VG9KU09iamVjdH0gPyAidG8ke2NsYXNz
TmFtZX0iIDogR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSk7Ci0gICAg
ICAgIG15ICR0aGlzVmFsdWUgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0
b21Qcm94eVRvSlNPYmplY3R9ID8gImNhbGxGcmFtZS50aGlzVmFsdWUoKS50b1RoaXMoJmxleGlj
YWxHbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkiIDogImNhbGxGcmFtZS50aGlzVmFs
dWUoKSI7CisgICAgICAgIG15ICR0aGlzVmFsdWUgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntDdXN0b21Qcm94eVRvSlNPYmplY3R9ID8gImNhbGxGcmFtZS50aGlzVmFsdWUoKS50
b1Nsb3BweU1vZGVUaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSIgOiAiY2FsbEZyYW1lLnRoaXNW
YWx1ZSgpIjsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ0ZW1wbGF0ZTw+IGlubGluZSAk
e2NsYXNzTmFtZX0qIElETE9wZXJhdGlvbjwke2NsYXNzTmFtZX0+OjpjYXN0KEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSlcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICByZXR1cm4gJGNhc3RpbmdGdW5jdGlvbihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSwgJHRoaXNWYWx1ZSk7XG4iKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzAyNikKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisy
MDIxLTA1LTA1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAg
ICAgICBbSlNDXSBBYm9saXNoIHVzaW5nIHJlc29sdmVkIHNjb3BlIGFzIHx0aGlzfCB2YWx1ZSB3
aGVuIGNhbGxpbmcgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjUzOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGpzL29iamVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24t
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9vYmplY3QtbGl0ZXJhbC1z
aG9ydGhhbmQtY29uc3RydWN0aW9uLmpzOgorCiAyMDIxLTA1LTA1ICBTYW0gV2VpbmlnICA8d2Vp
bmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3Igc3Bl
Y2lmeWluZyBhIGNvbG9yIHNwYWNlIGZvciAyRCBjYW52YXMKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1odG1sZWxlbG1lbnQtd2l0aC1pZnJhbWUtcHJv
dG8tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkveHNzLURFTklFRC1odG1sZWxlbG1lbnQtd2l0aC1pZnJhbWUtcHJvdG8tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAyNzcwMjYpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3hzcy1ERU5JRUQtaHRtbGVsZWxtZW50LXdpdGgtaWZyYW1lLXByb3RvLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVGVzdHMgdGhhdCBtYWtpbmcgb3RoZXIgZnJh
bWUgd2luZG93IGEgcAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgX19wcm90
b19fID0gdGFyZ2V0V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdC5wcm90
b3R5cGUuX19wcm90b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZC4KK1BBU1MgX19wcm90
b19fID0gdGFyZ2V0V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBzZXQg
cHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0LgogUEFTUyB0YXJnZXRXaW5k
b3cubXlpbnB1dCB0aHJldyBleGNlcHRpb24gU2VjdXJpdHlFcnJvcjogQmxvY2tlZCBhIGZyYW1l
IHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgY3Jv
c3Mtb3JpZ2luIGZyYW1lLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNo
Li4KIFBBU1M6IHN1Y2Nlc3NmdWxseVBhcnNlZCBzaG91bGQgYmUgJ3RydWUnIGFuZCBpcy4KIApJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELW1ldGhvZC13
aXRoLWlmcmFtZS1wcm90by1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELW1ldGhvZC13aXRoLWlmcmFtZS1wcm90by1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDI3NzAyNikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkveHNzLURFTklFRC1tZXRob2Qtd2l0aC1pZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQCBUZXN0cyB0aGF0IG1ha2luZyBvdGhlciBm
cmFtZSB3aW5kb3cgYSBwCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBfX3By
b3RvX18gPSB0YXJnZXRXaW5kb3cgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0LnBy
b3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkLgorUEFTUyBfX3By
b3RvX18gPSB0YXJnZXRXaW5kb3cgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90IHNl
dCBwcm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlwZSBvYmplY3QuCiBQQVNTOiBzdWNjZXNz
ZnVsbHlQYXJzZWQgc2hvdWxkIGJlICd0cnVlJyBhbmQgaXMuCiAKIFRFU1QgQ09NUExFVEUKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1ub24tc2hhZG93
YWJsZS1wcm9wdGVydHktd2l0aC1pZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1ub24tc2hhZG93
YWJsZS1wcm9wdGVydHktd2l0aC1pZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAy
NzcwMjYpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtbm9u
LXNoYWRvd2FibGUtcHJvcHRlcnR5LXdpdGgtaWZyYW1lLXByb3RvLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVGVzdHMgdGhhdCBtYWtpbmcgb3RoZXIgZnJhbWUg
d2luZG93IGEgcAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgX19wcm90b19f
ID0gdGFyZ2V0V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5
cGUuX19wcm90b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZC4KK1BBU1MgX19wcm90b19f
ID0gdGFyZ2V0V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBzZXQgcHJv
dG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0LgogUEFTUzogbG9jYXRpb24gPT09
IG9yaWdpbmFsTG9jYXRpb24gc2hvdWxkIGJlICd0cnVlJyBhbmQgaXMuCiBQQVNTOiB0aGlzLmxv
Y2F0aW9uID09PSBvcmlnaW5hbExvY2F0aW9uIHNob3VsZCBiZSAndHJ1ZScgYW5kIGlzLgogUEFT
Uzogc3VjY2Vzc2Z1bGx5UGFyc2VkIHNob3VsZCBiZSAndHJ1ZScgYW5kIGlzLgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXJlZ3VsYXItcHJvcHRlcnR5
LXdpdGgtaWZyYW1lLXByb3RvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtcmVndWxhci1wcm9wdGVydHktd2l0aC1p
ZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzcwMjYpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtcmVndWxhci1wcm9wdGVydHktd2l0aC1p
ZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQCBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiAKIAogUEFTUyB0aGlzLl9f
cHJvdG9fXyA9IHRhcmdldFdpbmRvdyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3Qg
c2V0IHByb3RvdHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdC4KLVBBU1MgX19wcm90
b19fID0gdGFyZ2V0V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdC5wcm90
b3R5cGUuX19wcm90b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZC4KK1BBU1MgX19wcm90
b19fID0gdGFyZ2V0V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBzZXQg
cHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0LgogUEFTUzogaW5uZXJIZWln
aHQgPT09IG9yaWdpbmFsSW5uZXJIZWlnaHQgc2hvdWxkIGJlICd0cnVlJyBhbmQgaXMuCiBQQVNT
OiB0aGlzLmlubmVySGVpZ2h0ID09PSBvcmlnaW5hbElubmVySGVpZ2h0IHNob3VsZCBiZSAndHJ1
ZScgYW5kIGlzLgogUEFTUzogc3VjY2Vzc2Z1bGx5UGFyc2VkIHNob3VsZCBiZSAndHJ1ZScgYW5k
IGlzLgpJbmRleDogTGF5b3V0VGVzdHMvanMvb2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0
cnVjdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvb2JqZWN0
LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3
NzAyNikKKysrIExheW91dFRlc3RzL2pzL29iamVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1
Y3Rpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02Myw4ICs2MywxMCBAQCBQQVNT
ICEhT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih7CiBQQVNTICEhT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcih7c2V0IDQyKHZhbHVlKXt9fSwgJzQyJykuc2V0IGlzIHRydWUK
IFBBU1MgdGhpcy5fX3Byb3RvX18gPSBbXSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5u
b3Qgc2V0IHByb3RvdHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdC4KIFBBU1MgKHtf
X3Byb3RvX186IHRoaXMuX19wcm90b19ffSkgaW5zdGFuY2VvZiBBcnJheSBpcyBmYWxzZQotUEFT
UyBfX3Byb3RvX18gPSBbXSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPYmplY3QucHJvdG90
eXBlLl9fcHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQuCi1QQVNTICh7X19wcm90
b19fOiBfX3Byb3RvX199KSBpbnN0YW5jZW9mIEFycmF5IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdfX3Byb3RvX18nKS4K
K1BBU1MgX19wcm90b19fID0gW10gdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90IHNl
dCBwcm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlwZSBvYmplY3QuCitQQVNTICh7X19wcm90
b19fOiBfX3Byb3RvX199KSBpbnN0YW5jZW9mIEFycmF5IGlzIGZhbHNlCitQQVNTIF9fcHJvdG9f
XyBpcyBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZ2xvYmFsVGhpcykKK1BBU1MgX19wcm90b19fID0g
X19wcm90b19fIGlzIE9iamVjdC5nZXRQcm90b3R5cGVPZihnbG9iYWxUaGlzKQogU3ludGF4RXJy
b3JzCiBQQVNTICh7YnJlYWt9KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IENhbm5vdCB1
c2UgdGhlIGtleXdvcmQgJ2JyZWFrJyBhcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBuYW1lLi4KIFBB
U1MgKHtjYXNlfSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBr
ZXl3b3JkICdjYXNlJyBhcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBuYW1lLi4KSW5kZXg6IExheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0
aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9vYmplY3Qt
bGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLmpzCShyZXZpc2lvbiAyNzcwMjYpCisrKyBM
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0
cnVjdGlvbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMTEyLDggKzExMiwxMiBAQCBzaG91bGRCZVRy
dWUoIiEhT2JqZWN0LmdldE93blByb3BlcnR5RGVzCiAvLyBfX3Byb3RvX18gc2hvcnRoYW5kIHNo
b3VsZCBub3QgbW9kaWZ5IHRoZSBwcm90b3R5cGUuCiBzaG91bGRUaHJvdygidGhpcy5fX3Byb3Rv
X18gPSBbXSIpOwogc2hvdWxkQmVGYWxzZSgiKHtfX3Byb3RvX186IHRoaXMuX19wcm90b19ffSkg
aW5zdGFuY2VvZiBBcnJheSIpOwotc2hvdWxkVGhyb3coIl9fcHJvdG9fXyA9IFtdIiwgJyJUeXBl
RXJyb3I6IE9iamVjdC5wcm90b3R5cGUuX19wcm90b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVm
aW5lZCInKTsKLXNob3VsZFRocm93KCIoe19fcHJvdG9fXzogX19wcm90b19ffSkgaW5zdGFuY2Vv
ZiBBcnJheSIsICciVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyBcJ19fcHJvdG9fX1wnKSInKTsKKworLy8gX19wcm90b19fIGdldHRlciAvIHNldHRlciBj
YWxsZWQgb24gZ2xvYmFsIG9iamVjdAorc2hvdWxkVGhyb3coIl9fcHJvdG9fXyA9IFtdIiwgJyJU
eXBlRXJyb3I6IENhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2Jq
ZWN0IicpOworc2hvdWxkQmVGYWxzZSgiKHtfX3Byb3RvX186IF9fcHJvdG9fX30pIGluc3RhbmNl
b2YgQXJyYXkiKTsKK3Nob3VsZEJlKCJfX3Byb3RvX18iLCAiT2JqZWN0LmdldFByb3RvdHlwZU9m
KGdsb2JhbFRoaXMpIik7CitzaG91bGRCZSgiX19wcm90b19fID0gX19wcm90b19fIiwgIk9iamVj
dC5nZXRQcm90b3R5cGVPZihnbG9iYWxUaGlzKSIpOwogCiAvLyBLZXl3b3JkcyAtIFN5bnRheCBF
cnJvcnMKIGRlYnVnKCJTeW50YXhFcnJvcnMiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429549</attachid>
            <date>2021-05-24 11:38:03 -0700</date>
            <delta_ts>2021-05-24 21:42:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225397-20210524213801.patch</filename>
            <type>text/plain</type>
            <size>140408</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzc5NTMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisgMjAyMS0wNS0yNCAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVz
aEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gQWJvbGlzaCB1c2luZyByZXNvbHZlZCBzY29w
ZSBhcyB8dGhpc3wgdmFsdWUgd2hlbiBjYWxsaW5nIGZ1bmN0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1Mzk3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1zcGVjLXRv
LXRoaXMuanM6CisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtc3RyaWN0LXNwZWMtdG8tdGhpcy5q
czoKKyAgICAgICAgKiBzdHJlc3MvdmFyaWFibGUtbmFtZWQtZXZhbC5qczogQWRkZWQuCisKIDIw
MjEtMDUtMjIgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAg
ICAgIFN1cHBvcnQgRXJnb25vbWljIEJyYW5kIENoZWNrcyBwcm9wb3NhbCAoYCN4IGluIG9iamAp
CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9iaWctaW50LXNwZWMtdG8tdGhpcy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKU1Rlc3RzL3N0cmVzcy9iaWctaW50LXNwZWMtdG8tdGhpcy5qcwkocmV2aXNpb24gMjc3
OTUzKQorKysgSlNUZXN0cy9zdHJlc3MvYmlnLWludC1zcGVjLXRvLXRoaXMuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSwzIEBACi0vL0Agc2tpcCBpZiBub3QgJGppdFRlc3RzCi0vL0AgcnVu
RGVmYXVsdCgiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIikKLQogZnVuY3Rpb24gYXNzZXJ0KGEp
IHsKICAgICBpZiAoIWEpCiAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIp
OwpAQCAtMTgsNiArMTUsMyBAQCBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogICAgIGFzc2VydChmb28uYXBwbHkoMzAw
KSA9PT0gIm9iamVjdCIpOwogfQotCi1hc3NlcnQobnVtYmVyT2ZERkdDb21waWxlcyhmb28pID09
PSAxKTsKLQpJbmRleDogSlNUZXN0cy9zdHJlc3MvYmlnLWludC1zdHJpY3Qtc3BlYy10by10aGlz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2JpZy1pbnQtc3RyaWN0LXNwZWMtdG8t
dGhpcy5qcwkocmV2aXNpb24gMjc3OTUzKQorKysgSlNUZXN0cy9zdHJlc3MvYmlnLWludC1zdHJp
Y3Qtc3BlYy10by10aGlzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMyBAQAotLy9AIHJ1
bkRlZmF1bHQoIi0tdXNlQ29uY3VycmVudEpJVD1mYWxzZSIpCi0KIGZ1bmN0aW9uIGFzc2VydChh
KSB7CiAgICAgaWYgKCFhKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24i
KTsKQEAgLTE4LDYgKzE2LDMgQEAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CiBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKICAgICBhc3NlcnQoZm9vLmFwcGx5KDMw
MCkgPT09ICJudW1iZXIiKTsKIH0KLQotYXNzZXJ0KG51bWJlck9mREZHQ29tcGlsZXMoZm9vKSA+
IDEpOwotCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9nbG9iYWwtb2JqZWN0LWFjY2Vzc29yLXByb3Bl
cnR5LXRoaXMtdmFsdWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvZ2xvYmFsLW9i
amVjdC1hY2Nlc3Nvci1wcm9wZXJ0eS10aGlzLXZhbHVlLmpzCShub25leGlzdGVudCkKKysrIEpT
VGVzdHMvc3RyZXNzL2dsb2JhbC1vYmplY3QtYWNjZXNzb3ItcHJvcGVydHktdGhpcy12YWx1ZS5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgQmFkIHZhbHVlOiAke2FjdHVhbH0uYCk7Cit9CisKK3ZhciBfX2Zvb19f
ID0gLTE7CisoZnVuY3Rpb24gc2FtZVJlYWxtKCkgeworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShnbG9iYWxUaGlzLCAiZm9vIiwgeworICAgICAgICBnZXQoKSB7CisgICAgICAgICAgICBzaG91
bGRCZSh0aGlzLCBnbG9iYWxUaGlzKTsKKyAgICAgICAgICAgIHJldHVybiBfX2Zvb19fOworICAg
ICAgICB9LAorICAgICAgICBzZXQodmFsdWUpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKHRoaXMs
IGdsb2JhbFRoaXMpOworICAgICAgICAgICAgX19mb29fXyA9IHZhbHVlOworICAgICAgICB9LAor
ICAgIH0pOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTY7IGkrKykgeworICAgICAgICBz
aG91bGRCZShmb28sIGkgLSAxKTsKKyAgICAgICAgZm9vID0gaTsKKyAgICAgICAgc2hvdWxkQmUo
Zm9vLCBpKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24gY3Jvc3NSZWFsbSgpIHsKKyAgICBj
b25zdCBPdGhlckZ1bmN0aW9uID0gJHZtLmNyZWF0ZUdsb2JhbE9iamVjdCgpLkZ1bmN0aW9uOwor
CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGdsb2JhbFRoaXMsICJiYXIiLCB7CisgICAgICAg
IGdldDogbmV3IE90aGVyRnVuY3Rpb24oInJldHVybiB0aGlzOyIpLAorICAgICAgICBzZXQ6IG5l
dyBPdGhlckZ1bmN0aW9uKCJ2YWx1ZSIsICJ2YWx1ZS50aGlzVmFsdWUgPSB0aGlzOyIpLAorICAg
IH0pOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTY7IGkrKykgeworICAgICAgICBzaG91
bGRCZShiYXIsIGdsb2JhbFRoaXMpOworCisgICAgICAgIGxldCB2YWx1ZSA9IHt9OworICAgICAg
ICBiYXIgPSB2YWx1ZTsKKyAgICAgICAgc2hvdWxkQmUodmFsdWUudGhpc1ZhbHVlLCBnbG9iYWxU
aGlzKTsKKyAgICB9Cit9KSgpOwpJbmRleDogSlNUZXN0cy9zdHJlc3MvdmFyaWFibGUtbmFtZWQt
ZXZhbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy92YXJpYWJsZS1uYW1lZC1ldmFs
LmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL3ZhcmlhYmxlLW5hbWVkLWV2YWwu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYEJhZCB2YWx1ZTogJHthY3R1YWx9LmApOworfQorCitsZXQgZXZhbDsK
KworKGZ1bmN0aW9uIHRoaXNWYWx1ZSgpIHsKKyAgICBldmFsID0gZnVuY3Rpb24oKSB7IHJldHVy
biB0aGlzOyB9OworICAgIHNob3VsZEJlKGV2YWwoKSwgZ2xvYmFsVGhpcyk7CisKKyAgICBldmFs
ID0gZnVuY3Rpb24oKSB7ICJ1c2Ugc3RyaWN0IjsgcmV0dXJuIHRoaXM7IH07CisgICAgc2hvdWxk
QmUoZXZhbCgpLCB1bmRlZmluZWQpOworCisgICAgY29uc3QgYmluZGluZ09iamVjdCA9IHsgZXZh
bCB9OworICAgIHdpdGggKGJpbmRpbmdPYmplY3QpIHsKKyAgICAgICAgc2hvdWxkQmUoZXZhbCgp
LCBiaW5kaW5nT2JqZWN0KTsKKyAgICB9Cit9KSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQxIEBACisyMDIxLTA1LTI0ICBBbGV4ZXkgU2h2
YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBBYm9saXNoIHVz
aW5nIHJlc29sdmVkIHNjb3BlIGFzIHx0aGlzfCB2YWx1ZSB3aGVuIGNhbGxpbmcgZnVuY3Rpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9B
UElDYWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkFQSUNhbGxiYWNrRnVuY3Rpb246
OmNhbGxJbXBsKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxJbXBsKToKKyAgICAg
ICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTQ29udGV4dEdldEdsb2JhbE9i
amVjdCk6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5k
ZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKiBieXRlY29kZS9Ub1Ro
aXNTdGF0dXMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1RvVGhpc1N0YXR1cy5o
OiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0RnVuY3Rpb25Gcm9tU2Nv
cGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aGFzUGFyZW50V2l0aFNjb3Bl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUb1RoaXMpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpUYWdnZWRUZW1wbGF0
ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV2YWxGdW5jdGlvbkNhbGxOb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6
CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjp0aGlzVmFsdWUgY29uc3QpOgorICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlND
OjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyk6CisgICAgICAgIChKU0M6OkRGRzo6aXNUb1RoaXNBbklkZW50aXR5KTogRGVsZXRlZC4K
KyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAq
IGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6Cisg
ICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZn
L0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBk
ZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4
dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cFRvVGhpcyk6Cisg
ICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR01heUV4aXQuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzRUNN
QU1vZGUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmVjbWFNb2RlKToKKyAgICAgICAgKiBk
ZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldFRoaXNWYWx1ZUZvckNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVG9UaGlzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvVGhpcyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUaGlzVmFsdWVGb3JDYWxsKToKKyAg
ICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVk
U2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0
OjppbnRlcm5hbENvbnN0cnVjdG9yTmFtZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJ
VC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2dldF90aGlzX3ZhbHVlX2Zvcl9jYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3RvX3RoaXMpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fdGhpcyk6IERlbGV0ZWQuCisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
OgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpjcmVhdGVBcnJheUl0ZXJh
dG9yT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DT01N
T05fU0xPV19QQVRIKToKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAg
ICAoSlNDOjp0b0dsb2JhbFRoaXMpOgorICAgICAgICAoSlNDOjpldmFsdWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1l
L0pTQmlnSW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6dG9UaGlzU2xvd0Nhc2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9TbG9wcHlNb2RlVGhpcyBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OnRvVGhpcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvVGhpcyk6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnRvVGhpcyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkpTU2NvcGU6OnRv
VGhpcyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmg6CisgICAgICAgICog
cnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp0b1RoaXMpOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAoSlND
OjpUeXBlSW5mbzo6cGVyQ2VsbEJpdCk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpvdmVycmlk
ZXNUb1RoaXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0UHJvdG90eXBlSGFzT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRp
bWUvUHJveHlPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04pOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbC5o
OgorCiAyMDIxLTA1LTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgTWFrZSBDaGVja2VkTG9jayB0aGUgZGVmYXVsdCBMb2NrCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTU4Myw3ICs1ODMsNiBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgYnl0ZWNvZGUvU3Bl
Y3VsYXRlZFR5cGUuaAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5oCiAgICAgYnl0ZWNvZGUv
U3VwZXJTYW1wbGVyLmgKLSAgICBieXRlY29kZS9Ub1RoaXNTdGF0dXMuaAogICAgIGJ5dGVjb2Rl
L1R5cGVMb2NhdGlvbi5oCiAgICAgYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAogICAgIGJ5
dGVjb2RlL1VubGlua2VkRXZhbENvZGVCbG9jay5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw3ICsyODEsNiBAQCBieXRlY29kZS9TdHJ1Y3R1
cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50CiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAK
IGJ5dGVjb2RlL1N0dWJJbmZvU3VtbWFyeS5jcHAKIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5jcHAK
LWJ5dGVjb2RlL1RvVGhpc1N0YXR1cy5jcHAKIGJ5dGVjb2RlL1RyYWNrZWRSZWZlcmVuY2VzLmNw
cAogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCiBieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9ja0dlbmVyYXRvci5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2Fs
bGJhY2tGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
QVBJQ2FsbGJhY2tGdW5jdGlvbi5oCShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDYs
NyArNDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsCiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTQ29udGV4dFJlZiBl
eGVjUmVmID0gdG9SZWYoZ2xvYmFsT2JqZWN0KTsKICAgICBKU09iamVjdFJlZiBmdW5jdGlvblJl
ZiA9IHRvUmVmKGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Ci0gICAgSlNPYmplY3RSZWYgdGhpc09i
alJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSkpOworICAgIEpTT2JqZWN0UmVm
IHRoaXNPYmpSZWYgPSB0b1JlZihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvU2xvcHB5TW9kZVRo
aXMoZ2xvYmFsT2JqZWN0KSk7CiAKICAgICBpbnQgYXJndW1lbnRDb3VudCA9IHN0YXRpY19jYXN0
PGludD4oY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpOwogICAgIFZlY3RvcjxKU1ZhbHVlUmVm
LCAxNj4gYXJndW1lbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHJldmlzaW9uIDI3Nzk1MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NDcsNyArNTQ3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OgogCiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihnbG9iYWxP
YmplY3QpOwogICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVmID0gdG9SZWYoY2FsbEZyYW1lLT5q
c0NhbGxlZSgpKTsKLSAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpT
T2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01B
TW9kZTo6c2xvcHB5KCkpKSk7CisgICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9TbG9wcHlNb2RlVGhpcyhnbG9iYWxPYmplY3QpKTsKICAg
ICAKICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD4qPih0b0pTKGZ1bmN0aW9uUmVmKSktPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xh
c3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAoSlNPYmplY3RDYWxsQXNG
dW5jdGlvbkNhbGxiYWNrIGNhbGxBc0Z1bmN0aW9uID0ganNDbGFzcy0+Y2FsbEFzRnVuY3Rpb24p
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAJKHJl
dmlzaW9uIDI3Nzk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVm
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDcgKzE5MSw3IEBAIEpTT2JqZWN0UmVmIEpTQ29u
dGV4dEdldEdsb2JhbE9iamVjdChKU0MKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAKLSAgICByZXR1cm4gdG9SZWYoanNDYXN0
PEpTT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnRvVGhpcyhnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSkpOworICAgIHJldHVybiB0
b1JlZihnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKSk7CiB9CiAKIEpTQ29udGV4dEdyb3VwUmVm
IEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBjdHgpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTI2NSw3ICsyNjUsNiBAQAogCQkwRjJDNjNDMjFFNjY0QTVDMDBDMTM4MzkgLyogQjNOYXRp
dmVUcmFpdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0MxMUU2NjRBNUEwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oICovOyB9OwogCQkw
RjJDNjNDNDFFNjlFRjk0MDBDMTM4MzkgLyogQjNNZW1vcnlWYWx1ZUlubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0MzMUU2OUVGOTIw
MEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5oICovOyB9OwogCQkwRjJENERERTE5ODMy
RDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRDREREMxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2Vy
U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQkwRjJENERFOTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNjE5ODMyREFDMDA3RDRC
MTkgLyogVG9UaGlzU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEYyRDRERUExOTgzMkRBQzAwN0Q0QjE5IC8qIFR5cGVMb2NhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRDRERTcx
OTgzMkRBQzAwN0Q0QjE5IC8qIFR5cGVMb2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkQ0REVDMTk4MzJEQzQwMDdENEIxOSAvKiBU
eXBlUHJvZmlsZXJMb2cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMkQ0REUwMTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJENERGMDE5
ODMyREQ2MDA3RDRCMTkgLyogVHlwZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyRDRERTQxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVTZXQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjUyNCw4
ICsyNTIzLDYgQEAKIAkJMEYyRDRERTAxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxv
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYyRDRERTMxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVTZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVHlwZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMkQ0REU0MTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5
cGVTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYyRDRERTUxOTgzMkRBQzAw
N0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUb1RoaXNTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
RjJENERFNjE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRvVGhpc1N0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjJENERFNzE5ODMyREFDMDA3RDRCMTkgLyogVHlwZUxvY2F0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjJERDgwQzFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRz
RWxpbWluYXRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdBcmd1bWVu
dHNFbGltaW5hdGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYy
REQ4MEQxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQXJndW1lbnRzRWxpbWluYXRpb25Q
aGFzZS5oOyBwYXRoID0gZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2NjksOCArODY2Niw2IEBACiAJCQkJMEY0QTM4Rjcx
QzhFMTNERjAwMTkwMzE4IC8qIFN1cGVyU2FtcGxlci5jcHAgKi8sCiAJCQkJMEY0QTM4RjgxQzhF
MTNERjAwMTkwMzE4IC8qIFN1cGVyU2FtcGxlci5oICovLAogCQkJCTBGNDRBN0E4MjBCRjY4NUUw
MDIyQjE3MSAvKiBUZXJtaW5hdGVkQ29kZU9yaWdpbi5oICovLAotCQkJCTBGMkQ0REU1MTk4MzJE
QUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0dXMuY3BwICovLAotCQkJCTBGMkQ0REU2MTk4MzJEQUMw
MDdENEIxOSAvKiBUb1RoaXNTdGF0dXMuaCAqLywKIAkJCQkwRjk1MkFCQTFCNDg3QTc3MDBDMzY3
QzUgLyogVHJhY2tlZFJlZmVyZW5jZXMuY3BwICovLAogCQkJCTBGOTUyQUJCMUI0ODdBNzcwMEMz
NjdDNSAvKiBUcmFja2VkUmVmZXJlbmNlcy5oICovLAogCQkJCTBGMkQ0REU3MTk4MzJEQUMwMDdE
NEIxOSAvKiBUeXBlTG9jYXRpb24uaCAqLywKQEAgLTk0NTgsNyArOTQ1Myw2IEBACiAJCQkJQkMx
OEM0NUUwRTE2RjVDRDAwQjM0NDYwIC8qIENMb29wU3RhY2suaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3QzFFQUYwMTc5ODdBQjYwMDI5OURCMiAvKiBDTG9vcFN0YWNrSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTY5QTA3OTcwRUQxRDNBRTAwRjFGNjgxIC8qIENvZGVCbG9jay5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJRkVGNUI0MjkyNjI4QjUyNDAwMTZFNzc2IC8qIEpTU2V0SW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4Rjk0NDExNjY3NjMzMjAwRDYxOTcxIC8qIENvZGVCbG9j
a0hhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzk3RjM0MTgyMDIwRDcwMDJDOUIyNiAvKiBD
b2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhB
MzE0MTdENDMyNkMwMENBMkM0MCAvKiBDb2RlQmxvY2tTZXQuaCBpbiBIZWFkZXJzICovLApAQCAt
OTY1Nyw3ICs5NjUxLDYgQEAKIAkJCQkwRkQ4MkU1NzE0MURBRjEwMDAxNzlDOTQgLyogREZHT1NS
RW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBE
RkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3
NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCBpbiBIZWFkZXJzICovLAotCQkJCUZF
RjVCNDI3MjYyOEFCRDkwMDE2RTc3NiAvKiBKU1dlYWtNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjIzNUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAvKiBERkdPU1JFeGl0Q29t
cGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjcwMjVBQTE3MTRCMEZDMDAzODJD
MEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTk3NTIs
NiArOTc0NSw3IEBACiAJCQkJMTQ3MzQxRDIxREMwMkUyRTAwQUEyOUJBIC8qIEV2YWxFeGVjdXRh
YmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTFDMEZGRDFCMTkzRTk4MDBCNTNGQ0EgLyogRXhj
ZXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTYwMjlEOTFENkUxRTRGMDAzMDIwNEQgLyog
RXhjZXB0aW9uRXZlbnRMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVGNUI0MzAyNjJB
MzM4QjAwMTZFNzc2IC8qIEV4Y2VwdGlvbkV4cGVjdGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjEyREUxMDE5NzlENUZEMDAwNkZGNEUgLyogRXhjZXB0aW9uRnV6ei5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0MDAwRTE2RjVDRDAwQjM0NDYwIC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCUZFNjQ5MTM3MUQ3OEYwMUQwMEE2OTRENCAvKiBFeGNlcHRpb25T
Y29wZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05Nzg4LDcgKzk3ODIsNiBAQAogCQkJCTBGRUEwQTBD
MTcwNTEzREIwMEJCNzIyQyAvKiBGVExDb21waWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlE
NEMwRDFDM0UxQzExMDA2Q0Q5ODQgLyogRlRMRXhjZXB0aW9uVGFyZ2V0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjIzNUJENDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmggaW4g
SGVhZGVycyAqLywKLQkJCQlGRUY1QjQyMzI2MjhBMEVFMDAxNkU3NzYgLyogSGFzaE1hcEltcGxJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJENjE3MTc4RTFDMDA2OTBDN0YgLyog
RlRMRXhpdEFyZ3VtZW50Rm9yT3BlcmFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRjUx
OUQwQkFDMTAwQjFEMUI1IC8qIEZUTEV4aXRQcm9wZXJ0eVZhbHVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJCOUNGNzE5RDBCQUMxMDBCMUQxQjUgLyogRlRMRXhpdFRpbWVPYmplY3RNYXRlcmlh
bGl6YXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtOTgzMiw3ICs5ODI1LDYgQEAKIAkJCQkyQTgz
NjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTJFRUQ3OTQyNDkyQjg3MDAwOEY0QzkzIC8qIEZ1bmN0aW9uQWxsb3dsaXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEFEOTEwRDFEQ0E5Mjk0MDAxNEY5RkUgLyogRnVuY3Rp
b25Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAotCQkJCUZFRjVCNDJDMjYyOENCQzgwMDE2RTc3
NiAvKiBWTVRyYXBzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MDQwRTE2RjVD
RDAwQjM0NDYwIC8qIEZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
NzM0MUQ4MURDMDJGOTkwMEFBMjlCQSAvKiBGdW5jdGlvbkV4ZWN1dGFibGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRjBGMUEwMTZCNzJBMUEwMDVERjk1QiAvKiBGdW5jdGlvbkV4ZWN1dGFibGVE
dW1wLmggaW4gSGVhZGVycyAqLywKQEAgLTk5MTEsNiArOTkwMyw3IEBACiAJCQkJMTQyRTMxMzYx
MzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3ODI5
N0IxMzc5RThBODAwQTdDMkEzIC8qIEhhbmRsZVR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
OUEwOTA4MDFENzY4NDY1MDA4Qjg4OUIgLyogSGFzaE1hcEltcGwuaCBpbiBIZWFkZXJzICovLAor
CQkJCUZFRjVCNDIzMjYyOEEwRUUwMDE2RTc3NiAvKiBIYXNoTWFwSW1wbElubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTc5REZDQkRCMUQ4OEM1OTYwMDUyN0QwMyAvKiBIYXNPd25Qcm9wZXJ0
eUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEJBN0E5ODEzQUFERkY4MDA1QjdDMkMgLyog
SGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE3N0ExREMyMkY5NThENTAwQjM0Q0EyIC8qIEhl
YXBBbmFseXplci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDE4NCw2ICsxMDE3Nyw3IEBACiAJCQkJ
QzI1RDcwOUMxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyQTRCQjdGMzE4QTQxMTc5MDA4QTBGQ0QgLyogSlNNYW5hZ2VkVmFsdWVJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwMDg3NDIxN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFw
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUY1QjQyNTI2MjhBODUwMDAxNkU3NzYgLyogSlNNYXBJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzRERUY5NjE4MkQ5OTE0MDA1MjJDMjIgLyog
SlNNYXBJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjI4NkQxRUI4RTZENTAwMEVC
NUQyIC8qIEpTTWFya2luZ0NvbnN0cmFpbnRQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
MDEzQ0E4QzFCNDkxQTk0MDBDQUU2MTMgLyogSlNNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovLApA
QCAtMTAyMTksNiArMTAyMTMsNyBAQAogCQkJCTE0RDAxQTc3MjFGQjM1MUYwMEJDNTRFOSAvKiBK
U1NjcmlwdFNvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkxOUQxMTE1N0Yz
MzJDMDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTcyOTlEOUUxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRUY1QjQyOTI2MjhCNTI0MDAxNkU3NzYgLyogSlNTZXRJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzkwREQ3MDE4MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkRGQ0IyQkJFOTBGNDEzNDlFMUIwQkVEIC8qIEpTU291cmNlQ29k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjcwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3Ry
aW5nLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMjQ3LDEyICsxMDI0MiwxMiBAQAogCQkJCTg2RTND
NjEyMTY3QkFCRDcwMDZENzYwQSAvKiBKU1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkUz
QzYxQjE2N0JBQkVFMDA2RDc2MEEgLyogSlNWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1M0UxRjhGODIxNTQ3MTVBMDAwMUREQkMgLyogSlNWYWx1ZVByaXZhdGUuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUZFOEMwMzEyMjY0QTY5MTEwMDFBNDRBRCAvKiBTbG93UGF0aEZ1bmN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyQzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNWYWx1
ZVJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFM0M2MTUxNjdCQUJENzAwNkQ3NjBBIC8qIEpT
VmlydHVhbE1hY2hpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjFEMTY3QkFCRUUwMDZE
NzYwQSAvKiBKU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5
NUFDNjE4MjBBMjM1NUUwMDUyQzc2QyAvKiBKU1ZpcnR1YWxNYWNoaW5lUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTdDQTNBRTgxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRkVGNUI0MjcyNjI4QUJEOTAwMTZFNzc2IC8qIEpTV2Vha01hcElu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDgyRTkzMTE2QTdDQUQwMDNCMDcxMiAvKiBK
U1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0ODJCOTMx
MTY3MTE0NzAwM0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUzOUJGQkIwMjJBRDNDREMwMDIzRjRDMCAvKiBKU1dlYWtPYmplY3RSZWYuaCBp
biBIZWFkZXJzICovLApAQCAtMTA1MzEsNiArMTA1MjYsNyBAQAogCQkJCUMyMTYwRkU3MTVGN0U5
NUUwMDk0MkRGQyAvKiBTbG90VmlzaXRvcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZF
MDQxNTUzMjUyRUMwNzMwMDkxRUI1RCAvKiBTbG90VmlzaXRvck1hY3Jvcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTcwOUYyRjAxN0EwQUMwNDAwNTEyRTk4IC8qIFNsb3dQYXRoQ2FsbC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkU4QzAzMTIyNjRBNjkxMTAwMUE0NEFEIC8qIFNsb3dQYXRoRnVuY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUI0QTMzMUM4NEYwRDYwMEYxQjE3RSAvKiBTbG93
UGF0aFJldHVyblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA0MDA0MEU2QTc0OTQwMDc4
NkU2QSAvKiBTbWFsbFN0cmluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzRjIzQTgyMUVDRjEz
RkUwMDk3OEQ5OSAvKiBTbmlwcGV0LmggaW4gSGVhZGVycyAqLywKQEAgLTEwNTY4LDcgKzEwNTY0
LDYgQEAKIAkJCQlCQ0RFM0FCODBFNkM4MkY1MDAxNDUzQTcgLyogU3RydWN0dXJlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3OTg2OTQzQjFGOEMwQUNDMDA5MjMyQUUgLyogU3RydWN0dXJlQ2FjaGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdFNEVFNzA5MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1Y3R1
cmVDaGFpbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkVGNUI0MjUyNjI4QTg1MDAwMTZFNzc2IC8q
IEpTTWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQUEzMTIxOEJENDlEMTAwMzk0
Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFGNzM4MkQxOEJC
QkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RDJDOTI0MTZEMDFFRTkwMEM3ODAzRiAvKiBTdHJ1Y3R1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKQEAgLTEwNjA3LDcgKzEwNjAyLDYgQEAKIAkJCQlBNzM4NjU1NjExODY5N0I0MDA1NDAyNzkg
LyogVGh1bmtHZW5lcmF0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDE0NDhDRDEzQTE3ODM3
MDBGNUJBMUEgLyogVGlueUJsb29tRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1OTg5
ODE3Qzg2QzU4MDBBMUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUuaCBpbiBIZWFkZXJzICovLAot
CQkJCTBGMkQ0REU5MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0dXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGOTUyQUJEMUI0ODdBNzcwMEMzNjdDNSAvKiBUcmFja2VkUmVmZXJlbmNlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDYxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJy
YXlBZGFwdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDgxN0I2QjVBQjAwQTdBRTNG
IC8qIFR5cGVkQXJyYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNjYxLDYgKzEw
NjU1LDcgQEAKIAkJCQlGRTMwMjJENzFFNDI4NTczMDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUZFQzU3OTczMjMxMDVCNTEwMEJDQTgzRiAvKiBWTUluc3BlY3Rv
cklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNkY1NkRFMUU2NEVBRDYwMEQxNzgwMSAv
KiBWTVRyYXBzLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUY1QjQyQzI2MjhDQkM4MDAxNkU3NzYg
LyogVk1UcmFwc0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyODQ3QURDMjFGRkI4Njkw
MDYxQTlEQiAvKiBXYXNtQWlySVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzRjQw
RTkzMUQ1QTRBQjMwMDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTNDQTczMEExRUE1MzNEODAwNzYwNDlEIC8qIFdhc21CQlFQbGFuLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEwNzUzLDcgKzEwNzQ4LDYgQEAKIAkJCQlBREU4MDI5QTFFMDhGMURFMDA1OERF
NzggLyogV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQURFODAyOUMxRTA4RjFERTAwNThERTc4IC8qIFdlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0JGNTFEQjU4REFEMDBCM0U3MzYgLyogV2Vi
QXNzZW1ibHlNZW1vcnlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkVGNUI0MzAy
NjJBMzM4QjAwMTZFNzc2IC8qIEV4Y2VwdGlvbkV4cGVjdGF0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBRDJGQ0MxQTFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlDb25zdHJ1
Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQkY3MURCNThEQUQwMEIzRTczNiAv
KiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkND
MUIxREI1OUNCMjAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmx1dC5oIGlu
IEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIJKHJldmlzaW9uIDI3Nzk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDYg
QEAgdHlwZXMgWwogICAgIDpTdHJ1Y3R1cmVDaGFpbiwKICAgICA6U3ltYm9sVGFibGUsCiAgICAg
OlN5bWJvbFRhYmxlT3JTY29wZURlcHRoLAotICAgIDpUb1RoaXNTdGF0dXMsCiAgICAgOlR5cGVM
b2NhdGlvbiwKICAgICA6V2FzbUJvdW5kTGFiZWwsCiAgICAgOldhdGNocG9pbnRTZXQsCkBAIC0x
NzcsMTEgKzE3Niw4IEBAIG9wIDphcmd1bWVudF9jb3VudCwKIG9wIDp0b190aGlzLAogICAgIGFy
Z3M6IHsKICAgICAgICAgc3JjRHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGVjbWFNb2Rl
OiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGNhY2hlZFN0cnVj
dHVyZUlEOiBTdHJ1Y3R1cmVJRCwKLSAgICAgICAgdG9UaGlzU3RhdHVzOiBUb1RoaXNTdGF0dXMs
CiAgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CiAKQEAgLTEwMzQsNiArMTAz
MCwxMiBAQCBvcCA6Z2V0X2Zyb21fc2NvcGUsCiAgICAgICAgIG9wZXJhbmQ6IDpvZmZzZXQsCiAg
ICAgfQogCitvcCA6Z2V0X3RoaXNfdmFsdWVfZm9yX2NhbGwsCisgICAgYXJnczogeworICAgICAg
ICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgc2NvcGU6IFZpcnR1YWxSZWdpc3RlciwK
KyAgICB9CisKIG9wIDpwdXRfdG9fc2NvcGUsCiAgICAgYXJnczogewogICAgICAgICBzY29wZTog
VmlydHVhbFJlZ2lzdGVyLCAjIG9mZnNldCAxCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAJKHJldmlzaW9uIDI3Nzk1MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3Myw2ICsxNzMsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJ
bmRleEltcGwoVmlyCiAgICAgVVNFUyhPcFJlc29sdmVTY29wZSwgc2NvcGUpCiAgICAgVVNFUyhP
cFJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwsIHNjb3BlKQogICAgIFVTRVMo
T3BHZXRGcm9tU2NvcGUsIHNjb3BlKQorICAgIFVTRVMoT3BHZXRUaGlzVmFsdWVGb3JDYWxsLCBz
Y29wZSkKICAgICBVU0VTKE9wVG9QcmltaXRpdmUsIHNyYykKICAgICBVU0VTKE9wVG9Qcm9wZXJ0
eUtleSwgc3JjKQogICAgIFVTRVMoT3BUcnlHZXRCeUlkLCBiYXNlKQpAQCAtNDgwLDYgKzQ4MSw3
IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnMKIAogICAgIERFRlMo
T3BUYWlsQ2FsbEZvcndhcmRBcmd1bWVudHMsIGRzdCkKICAgICBERUZTKE9wR2V0RnJvbVNjb3Bl
LCBkc3QpCisgICAgREVGUyhPcEdldFRoaXNWYWx1ZUZvckNhbGwsIGRzdCkKICAgICBERUZTKE9w
Q2FsbCwgZHN0KQogICAgIERFRlMoT3BUYWlsQ2FsbCwgZHN0KQogICAgIERFRlMoT3BDYWxsRXZh
bCwgZHN0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAJKHJldmlzaW9uIDI3Nzk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAxLDE3ICsxNDAxLDYgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZQogICAgICAgICAgICAgbWV0YWRh
dGEubV9icmFuZC5jbGVhcigpOwogICAgICAgICB9KTsKIAotICAgICAgICBtX21ldGFkYXRhLT5m
b3JFYWNoPE9wVG9UaGlzPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgICAgICBpZiAo
IW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFw
LnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCkpKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3Nl
T1NSKCkpIHsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZtLmhlYXAu
c3RydWN0dXJlSURUYWJsZSgpLmdldChtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEKTsKLSAg
ICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgTExJbnQgdG9fdGhpcyB3aXRoIHN0cnVj
dHVyZSAlcC5cbiIsIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtZXRh
ZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEID0gMDsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fdG9U
aGlzU3RhdHVzID0gbWVyZ2UobWV0YWRhdGEubV90b1RoaXNTdGF0dXMsIFRvVGhpc0NsZWFyZWRC
eUdDKTsKLSAgICAgICAgfSk7Ci0KICAgICAgICAgYXV0byBoYW5kbGVDcmVhdGVCeXRlY29kZSA9
IFsmXSAoYXV0byYgbWV0YWRhdGEsIEFTQ0lJTGl0ZXJhbCBuYW1lKSB7CiAgICAgICAgICAgICBh
dXRvJiBjYWNoZVdyaXRlQmFycmllciA9IG1ldGFkYXRhLm1fY2FjaGVkQ2FsbGVlOwogICAgICAg
ICAgICAgaWYgKCFjYWNoZVdyaXRlQmFycmllciB8fCBjYWNoZVdyaXRlQmFycmllci51bnZhbGlk
YXRlZEdldCgpID09IEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1RvVGhpc1N0YXR1cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1RvVGhpc1N0YXR1cy5jcHAJKHJl
dmlzaW9uIDI3Nzk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Ub1RoaXNT
dGF0dXMuY3BwCShub25leGlzdGVudCkKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiVG9UaGlzU3RhdHVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1Ub1RoaXNTdGF0dXMg
bWVyZ2UoVG9UaGlzU3RhdHVzIGEsIFRvVGhpc1N0YXR1cyBiKQotewotICAgIHN3aXRjaCAoYSkg
ewotICAgIGNhc2UgVG9UaGlzT0s6Ci0gICAgICAgIHJldHVybiBiOwotICAgIGNhc2UgVG9UaGlz
Q29uZmxpY3RlZDoKLSAgICAgICAgcmV0dXJuIFRvVGhpc0NvbmZsaWN0ZWQ7Ci0gICAgY2FzZSBU
b1RoaXNDbGVhcmVkQnlHQzoKLSAgICAgICAgaWYgKGIgPT0gVG9UaGlzQ29uZmxpY3RlZCkKLSAg
ICAgICAgICAgIHJldHVybiBUb1RoaXNDb25mbGljdGVkOwotICAgICAgICByZXR1cm4gVG9UaGlz
Q2xlYXJlZEJ5R0M7Ci0gICAgfQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIFRvVGhpc0NvbmZsaWN0ZWQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpT
QwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFRvVGhpc1N0YXR1cyBzdGF0dXMpCi17Ci0gICAg
c3dpdGNoIChzdGF0dXMpIHsKLSAgICBjYXNlIFRvVGhpc09LOgotICAgICAgICBvdXQucHJpbnQo
Ik9LIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFRvVGhpc0NvbmZsaWN0ZWQ6Ci0gICAg
ICAgIG91dC5wcmludCgiQ29uZmxpY3RlZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBU
b1RoaXNDbGVhcmVkQnlHQzoKLSAgICAgICAgb3V0LnByaW50KCJDbGVhcmVkQnlHQyIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1RvVGhpc1N0YXR1cy5oCShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmgJKG5vbmV4aXN0ZW50KQpA
QCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0KLW5h
bWVzcGFjZSBKU0MgewotCi1lbnVtIFRvVGhpc1N0YXR1cyB7Ci0gICAgVG9UaGlzT0ssCi0gICAg
VG9UaGlzQ29uZmxpY3RlZCwKLSAgICBUb1RoaXNDbGVhcmVkQnlHQwotfTsKLQotVG9UaGlzU3Rh
dHVzIG1lcmdlKFRvVGhpc1N0YXR1cywgVG9UaGlzU3RhdHVzKTsKLQotfSAvLyBuYW1lc3BhY2Ug
SlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
LCBKU0M6OlRvVGhpc1N0YXR1cyk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAJKHJldmlzaW9uIDI3Nzk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDU4LDYg
KzI0NTgsMzEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRGcgogICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0R2V0RnVuY3Rpb25Gcm9tU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBjb25z
dCBWYXJpYWJsZSYgdmFyaWFibGUsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZUZvckNhbGwpCit7Cisg
ICAgQVNTRVJUKCF2YXJpYWJsZS5sb2NhbCgpKTsKKworICAgIFJlZ2lzdGVySUQqIHNjb3BlID0g
ZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXJpYWJsZSk7CisgICAgZW1pdEdldEZyb21TY29w
ZShkc3QsIHNjb3BlLCB2YXJpYWJsZSwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICBlbWl0VERaQ2hl
Y2tJZk5lY2Vzc2FyeSh2YXJpYWJsZSwgZHN0LCBudWxscHRyKTsKKyAgICBpZiAoaGFzUGFyZW50
V2l0aFNjb3BlKHZhcmlhYmxlKSkKKyAgICAgICAgT3BHZXRUaGlzVmFsdWVGb3JDYWxsOjplbWl0
KHRoaXMsIGtpbGwodGhpc1ZhbHVlRm9yQ2FsbCksIHNjb3BlKTsKKyAgICByZXR1cm4gZHN0Owor
fQorCitib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpoYXNQYXJlbnRXaXRoU2NvcGUoY29uc3QgVmFy
aWFibGUmIHZhcmlhYmxlKSBjb25zdAoreworICAgIGlmICh2YXJpYWJsZS5vZmZzZXQoKS5pc1Zh
bGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IG1f
bGV4aWNhbFNjb3BlU3RhY2suc2l6ZSgpOyBpLS07ICkgeworICAgICAgICBpZiAobV9sZXhpY2Fs
U2NvcGVTdGFja1tpXS5tX2lzV2l0aFNjb3BlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UHV0VG9TY29wZShSZWdpc3RlcklEKiBzY29wZSwgY29uc3QgVmFyaWFibGUmIHZh
cmlhYmxlLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVzb2x2ZU1vZGUgcmVzb2x2ZU1vZGUsIEluaXRp
YWxpemF0aW9uTW9kZSBpbml0aWFsaXphdGlvbk1vZGUpCiB7CiAgICAgc3dpdGNoICh2YXJpYWJs
ZS5vZmZzZXQoKS5raW5kKCkpIHsKQEAgLTU0NTUsNyArNTQ4MCw4IEBAIHZvaWQgU3RhdGljUHJv
cGVydHlBbmFseXNpczo6cmVjb3JkKCkKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRv
VGhpcygpCiB7Ci0gICAgT3BUb1RoaXM6OmVtaXQodGhpcywga2lsbCgmbV90aGlzUmVnaXN0ZXIp
LCBlY21hTW9kZSgpKTsKKyAgICBpZiAoIWVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKKyAgICAgICAg
T3BUb1RoaXM6OmVtaXQodGhpcywga2lsbCgmbV90aGlzUmVnaXN0ZXIpKTsKIH0KIAogU3RydWN0
dXJlRm9ySW5Db250ZXh0KiBCeXRlY29kZUdlbmVyYXRvcjo6ZmluZFN0cnVjdHVyZUZvckluQ29u
dGV4dChSZWdpc3RlcklEKiBwcm9wZXJ0eSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDI3
Nzk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtOTA0LDYgKzkwNCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVzb2x2ZUNvbnN0YW50TG9jYWwoUmVnaXN0ZXJJ
RCogZHN0LCBjb25zdCBWYXJpYWJsZSYpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVzb2x2
ZVNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgVmFyaWFibGUmKTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEdldEZyb21TY29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3Bl
LCBjb25zdCBWYXJpYWJsZSYsIFJlc29sdmVNb2RlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEdldEZ1bmN0aW9uRnJvbVNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgVmFyaWFibGUmLCBS
ZWdpc3RlcklEKiB0aGlzVmFsdWVGb3JDYWxsKTsKKyAgICAgICAgYm9vbCBoYXNQYXJlbnRXaXRo
U2NvcGUoY29uc3QgVmFyaWFibGUmKSBjb25zdDsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1
dFRvU2NvcGUoUmVnaXN0ZXJJRCogc2NvcGUsIGNvbnN0IFZhcmlhYmxlJiwgUmVnaXN0ZXJJRCog
dmFsdWUsIFJlc29sdmVNb2RlLCBJbml0aWFsaXphdGlvbk1vZGUpOwogCiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsKFJlZ2lzdGVy
SUQqIGRzdCwgY29uc3QgSWRlbnRpZmllciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMjc3OTUz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTAsMTMgKzM1MCwxMSBAQCBSZWdpc3RlcklEKiBUYWdnZWRU
ZW1wbGF0ZU5vZGU6OmVtaXRCeXRlCiAgICAgICAgICAgICB0YWcgPSBnZW5lcmF0b3IubW92ZShn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGxvY2FsKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIHRhZyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgICAgIGJhc2Ug
PSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBiYXNlID0gZ2VuZXJhdG9y
LmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwganNVbmRlZmluZWQoKSk7CiAKICAg
ICAgICAgICAgIEpTVGV4dFBvc2l0aW9uIG5ld0Rpdm90ID0gZGl2b3RTdGFydCgpICsgaWRlbnRp
Zmllci5sZW5ndGgoKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8o
bmV3RGl2b3QsIGRpdm90U3RhcnQoKSwgbmV3RGl2b3QpOwotICAgICAgICAgICAgZ2VuZXJhdG9y
Lm1vdmUoYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoYmFzZS5nZXQoKSwg
dmFyKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZSh0YWcuZ2V0KCks
IGJhc2UuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKLSAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0VERaQ2hlY2tJZk5lY2Vzc2FyeSh2YXIsIHRhZy5nZXQoKSwgbnVsbHB0cik7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZ1bmN0aW9uRnJvbVNjb3BlKHRhZy5nZXQoKSwgdmFy
LCBiYXNlLmdldCgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV90YWctPmlzQnJhY2tl
dEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGJyYWNrZXQg
PSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4obV90YWcpOwpAQCAtMTE4MCwxNyAr
MTE3OCwxMiBAQCBSZWdpc3RlcklEKiBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6ZW1pdEJ5CiAgICAg
fSBlbHNlCiAgICAgICAgIGZ1bmMgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgQ2Fs
bEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICBnZW5lcmF0
b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7
CiAKLSAgICBpZiAobG9jYWwpCi0gICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1l
bnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKLSAgICBlbHNlIHsKKyAgICBpZiAo
IWxvY2FsKSB7CiAgICAgICAgIEpTVGV4dFBvc2l0aW9uIG5ld0Rpdm90ID0gZGl2b3RTdGFydCgp
ICsgNDsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhuZXdEaXZvdCwgZGl2
b3RTdGFydCgpLCBuZXdEaXZvdCk7Ci0gICAgICAgIGdlbmVyYXRvci5tb3ZlKAotICAgICAgICAg
ICAgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwKLSAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0UmVzb2x2ZVNjb3BlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIHZhcikpOwotICAg
ICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShmdW5jLmdldCgpLCBjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7Ci0gICAgICAgIGdlbmVyYXRv
ci5lbWl0VERaQ2hlY2tJZk5lY2Vzc2FyeSh2YXIsIGZ1bmMuZ2V0KCksIG51bGxwdHIpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdEdldEZ1bmN0aW9uRnJvbVNjb3BlKGZ1bmMuZ2V0KCksIHZhciwg
Y2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSk7CiAgICAgfQogCiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5j
LmdldCgpKTsKQEAgLTEyNzYsMjAgKzEyNjksMTYgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxs
UmVzb2x2ZU5vZGU6OmVtaQogICAgIH0gZWxzZQogICAgICAgICBmdW5jID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOwogICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3Is
IG1fYXJncyk7CisgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIGpzVW5kZWZpbmVkKCkpOwogCiAgICAgaWYgKGxvY2FsKSB7Ci0gICAgICAgIGdlbmVy
YXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgp
KTsKICAgICAgICAgLy8gVGhpcyBwYXNzZXMgTm9FeHBlY3RlZEZ1bmN0aW9uIGJlY2F1c2Ugd2Ug
ZXhwZWN0IHRoYXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGluIGEKICAgICAgICAgLy8gbG9jYWwgdmFy
aWFibGUsIHRoZW4gaXQncyBub3Qgb25lIG9mIG91ciBidWlsdC1pbiBjb25zdHJ1Y3RvcnMuCiAg
ICAgICAgIGV4cGVjdGVkRnVuY3Rpb24gPSBOb0V4cGVjdGVkRnVuY3Rpb247CiAgICAgfSBlbHNl
IHsKICAgICAgICAgSlNUZXh0UG9zaXRpb24gbmV3RGl2b3QgPSBkaXZvdFN0YXJ0KCkgKyBtX2lk
ZW50Lmxlbmd0aCgpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rp
dm90LCBkaXZvdFN0YXJ0KCksIG5ld0Rpdm90KTsKLSAgICAgICAgZ2VuZXJhdG9yLm1vdmUoCi0g
ICAgICAgICAgICBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLAotICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgdmFy
KSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGZ1bmMuZ2V0KCksIGNhbGxB
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXRURFpDaGVja0lmTmVjZXNzYXJ5KHZhciwgZnVuYy5nZXQoKSwgbnVsbHB0
cik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnVuY3Rpb25Gcm9tU2NvcGUoZnVuYy5nZXQo
KSwgdmFyLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpKTsKICAgICB9CiAKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QsIGZ1bmMuZ2V0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDksMTAgKzIwOSw5IEBAIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OnRo
aXNWYWx1ZShWTSYKICAgICBpZiAoIXRoaXNWYWx1ZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAKLSAgICBFQ01BTW9kZSBlY21hTW9kZSA9IEVDTUFNb2RlOjpzbG9wcHkoKTsKICAg
ICBpZiAoY29kZUJsb2NrICYmIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJp
Y3RDb250ZXh0KCkpCi0gICAgICAgIGVjbWFNb2RlID0gRUNNQU1vZGU6OnN0cmljdCgpOwotICAg
IHJldHVybiB0aGlzVmFsdWUudG9UaGlzKG1fdmFsaWRNYWNoaW5lRnJhbWUtPmxleGljYWxHbG9i
YWxPYmplY3Qodm0pLCBlY21hTW9kZSk7CisgICAgICAgIHJldHVybiB0aGlzVmFsdWU7CisgICAg
cmV0dXJuIHRoaXNWYWx1ZS50b1Nsb3BweU1vZGVUaGlzKG1fdmFsaWRNYWNoaW5lRnJhbWUtPmxl
eGljYWxHbG9iYWxPYmplY3Qodm0pKTsKIH0KIAogLy8gRXZhbHVhdGUgc29tZSBKYXZhU2NyaXB0
IGNvZGUgaW4gdGhlIHNjb3BlIG9mIHRoaXMgZnJhbWUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OSw2NSArMTc5LDYg
QEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIERGR19OT0RF
X0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG5vZGUsIHZlcmlmeUVkZ2UpOwogfQogCi1lbnVtIGNs
YXNzIFRvVGhpc1Jlc3VsdCB7Ci0gICAgSWRlbnRpdHksCi0gICAgVW5kZWZpbmVkLAotICAgIEds
b2JhbFRoaXMsCi0gICAgRHluYW1pYywKLX07Ci1pbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlz
QW5JZGVudGl0eShWTSYgdm0sIEVDTUFNb2RlIGVjbWFNb2RlLCBBYnN0cmFjdFZhbHVlJiB2YWx1
ZUZvck5vZGUpCi17Ci0gICAgLy8gV2UgbG9vayBhdCB0aGUgdHlwZSBmaXJzdCBzaW5jZSB0aGF0
IHdpbGwgY292ZXIgbW9zdCBjYXNlcyBhbmQgZG9lcyBub3QgcmVxdWlyZSBpdGVyYXRpbmcgYWxs
IHRoZSBzdHJ1Y3R1cmVzLgotICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKSB7Ci0gICAgICAg
IGlmICh2YWx1ZUZvck5vZGUubV90eXBlICYmICEodmFsdWVGb3JOb2RlLm1fdHlwZSAmIFNwZWNP
YmplY3RPdGhlcikpCi0gICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpJZGVudGl0eTsK
LSAgICB9IGVsc2UgewotICAgICAgICBpZiAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVl
Rm9yTm9kZS5tX3R5cGUgJiAoflNwZWNPYmplY3QgfCBTcGVjT2JqZWN0T3RoZXIpKSkKLSAgICAg
ICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OwotICAgIH0KLQotICAgIGlmIChK
U1ZhbHVlIHZhbHVlID0gdmFsdWVGb3JOb2RlLnZhbHVlKCkpIHsKLSAgICAgICAgaWYgKHZhbHVl
LmlzQ2VsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvKiB0b1RoaXNNZXRob2QgPSB2YWx1ZS5hc0Nl
bGwoKS0+Y2xhc3NJbmZvKHZtKS0+bWV0aG9kVGFibGUudG9UaGlzOwotICAgICAgICAgICAgaWYg
KHRvVGhpc01ldGhvZCA9PSAmSlNPYmplY3Q6OnRvVGhpcykKLSAgICAgICAgICAgICAgICByZXR1
cm4gVG9UaGlzUmVzdWx0OjpJZGVudGl0eTsKLSAgICAgICAgICAgIGlmICh0b1RoaXNNZXRob2Qg
PT0gJkpTU2NvcGU6OnRvVGhpcykgewotICAgICAgICAgICAgICAgIGlmIChlY21hTW9kZS5pc1N0
cmljdCgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpVbmRlZmlu
ZWQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6R2xvYmFsVGhpczsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICgoZWNtYU1vZGUuaXNTdHJp
Y3QoKSB8fCAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiB+
U3BlY09iamVjdCkpKSAmJiB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewot
ICAgICAgICBib29sIGFsbFN0cnVjdHVyZXNBcmVKU1Njb3BlID0gIXZhbHVlRm9yTm9kZS5tX3N0
cnVjdHVyZS5pc0NsZWFyKCk7Ci0gICAgICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7
Ci0gICAgICAgIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVk
U3RydWN0dXJlIHN0cnVjdHVyZSkgewotICAgICAgICAgICAgVHlwZUluZm8gdHlwZSA9IHN0cnVj
dHVyZS0+dHlwZUluZm8oKTsKLSAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwg
dHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8
IHR5cGUudHlwZSgpID09IEhlYXBCaWdJbnRUeXBlKTsKLSAgICAgICAgICAgIGlmICghZWNtYU1v
ZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsK
LSAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1i
b2xzIGhlcmUgc2luY2UgZWl0aGVyOgotICAgICAgICAgICAgLy8gMSkgV2UgYXJlIGluIHN0cmlj
dCBtb2RlIGFuZCBzdHJpbmdzL3N5bWJvbHMgYXJlIG5vdCB3cmFwcGVkCi0gICAgICAgICAgICAv
LyAyKSBUaGUgQUkgaGFzIHByb3ZlbiB0aGF0IHRoZSB0eXBlIG9mIHRoaXMgaXMgYSBzdWJ0eXBl
IG9mIG9iamVjdAotICAgICAgICAgICAgaWYgKHR5cGUuaXNPYmplY3QoKSAmJiB0eXBlLm92ZXJy
aWRlc1RvVGhpcygpKQotICAgICAgICAgICAgICAgIG92ZXJyaWRlc1RvVGhpcyA9IHRydWU7Ci0K
LSAgICAgICAgICAgIC8vIElmIGFsbCB0aGUgc3RydWN0dXJlcyBhcmUgSlNTY29wZSdzIG9uZXMs
IHdlIGtub3cgdGhlIGRldGFpbHMgb2YgSlNTY29wZTo6dG9UaGlzKCkgb3BlcmF0aW9uLgotICAg
ICAgICAgICAgYWxsU3RydWN0dXJlc0FyZUpTU2NvcGUgJj0gc3RydWN0dXJlLT5jbGFzc0luZm8o
KS0+bWV0aG9kVGFibGUudG9UaGlzID09IEpTU2NvcGU6OmluZm8oKS0+bWV0aG9kVGFibGUudG9U
aGlzOwotICAgICAgICB9KTsKLSAgICAgICAgaWYgKCFvdmVycmlkZXNUb1RoaXMpCi0gICAgICAg
ICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpJZGVudGl0eTsKLSAgICAgICAgaWYgKGFsbFN0cnVj
dHVyZXNBcmVKU1Njb3BlKSB7Ci0gICAgICAgICAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpVbmRlZmluZWQ7Ci0gICAgICAg
ICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpHbG9iYWxUaGlzOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6RHluYW1pYzsKLX0KLQogdGVtcGxhdGU8dHlwZW5h
bWUgQWJzdHJhY3RTdGF0ZVR5cGU+CiBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpoYW5kbGVDb25zdGFudEJpbmFyeUJpdHdpc2VPcChOb2RlKiBub2RlKQogewpA
QCAtMjk3MiwzMSArMjkxMywyMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5CiAgICAgICAgICAgICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBYnN0cmFj
dFZhbHVlJiBzb3VyY2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgQWJzdHJh
Y3RWYWx1ZSYgZGVzdGluYXRpb24gPSBmb3JOb2RlKG5vZGUpOwotICAgICAgICBFQ01BTW9kZSBl
Y21hTW9kZSA9IG5vZGUtPmVjbWFNb2RlKCk7CiAKLSAgICAgICAgVG9UaGlzUmVzdWx0IHJlc3Vs
dCA9IGlzVG9UaGlzQW5JZGVudGl0eShtX3ZtLCBlY21hTW9kZSwgc291cmNlKTsKLSAgICAgICAg
c3dpdGNoIChyZXN1bHQpIHsKLSAgICAgICAgY2FzZSBUb1RoaXNSZXN1bHQ6OklkZW50aXR5Ogor
ICAgICAgICBpZiAoIShzb3VyY2UubV90eXBlICYgflNwZWNPYmplY3QpKSB7CiAgICAgICAgICAg
ICBtX3N0YXRlLnNldFNob3VsZFRyeUNvbnN0YW50Rm9sZGluZyh0cnVlKTsKLSAgICAgICAgICAg
IGRlc3RpbmF0aW9uID0gc291cmNlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
VG9UaGlzUmVzdWx0OjpVbmRlZmluZWQ6Ci0gICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBq
c1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyV29ybGQoKTsKKyAgICAg
ICAgICAgIHNldEZvck5vZGUobm9kZSwgc291cmNlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFRvVGhpc1Jlc3VsdDo6R2xvYmFsVGhpczoKKyAgICAgICAgfQorCisgICAgICAg
IHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNPYmplY3QpOworCisgICAgICAgIGlmICghKHNvdXJj
ZS5tX3R5cGUgJiB+U3BlY090aGVyKSkgewogICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRU
cnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7Ci0gICAgICAgICAgICBkZXN0aW5hdGlvbi5zZXRUeXBl
KG1fZ3JhcGgsIFNwZWNPYmplY3QpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
VG9UaGlzUmVzdWx0OjpEeW5hbWljOgotICAgICAgICAgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0
KCkpCi0gICAgICAgICAgICAgICAgZGVzdGluYXRpb24ubWFrZUhlYXBUb3AoKTsKLSAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gc291cmNlOwotICAgICAg
ICAgICAgICAgIGRlc3RpbmF0aW9uLm1lcmdlKFNwZWNPYmplY3QpOwotICAgICAgICAgICAgfQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBjbG9iYmVyV29ybGQoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0zMzE1LDYgKzMyNDcsMTMgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBzZXRUeXBlRm9yTm9kZShu
b2RlLCBTcGVjT2JqZWN0T3RoZXIpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgR2V0VGhp
c1ZhbHVlRm9yQ2FsbDoKKyAgICAgICAgaWYgKEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS52YWx1ZSgpKQorICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hpbGQu
aW5oZXJpdHM8SlNTY29wZT4obV92bSkgPyBqc1VuZGVmaW5lZCgpIDogY2hpbGQpOworCisgICAg
ICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNPYmplY3QgfCBTcGVjT3RoZXIpOworICAgICAg
ICBicmVhazsKKwogICAgIGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIGlmIChKU1ZhbHVlIGNo
aWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKSkgewogICAgICAgICAgICAgaWYg
KEpTU2NvcGUqIHNjb3BlID0ganNEeW5hbWljQ2FzdDxKU1Njb3BlKj4obV92bSwgY2hpbGQpKSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAkocmV2aXNpb24gMjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0MDksMjUgKzU0MDksNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIG9wX3RvX3RoaXM6IHsKLSAgICAgICAgICAgIE5vZGUqIG9w
MSA9IGdldFRoaXMoKTsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb24tPmFzPE9wVG9UaGlzPigpOwotICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRl
Y29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAgICAgICAgU3RydWN0dXJlSUQgY2FjaGVk
U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEOwotICAgICAgICAgICAg
U3RydWN0dXJlKiBjYWNoZWRTdHJ1Y3R1cmUgPSBudWxscHRyOwotICAgICAgICAgICAgaWYgKGNh
Y2hlZFN0cnVjdHVyZUlEKQotICAgICAgICAgICAgICAgIGNhY2hlZFN0cnVjdHVyZSA9IG1fdm0t
PmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChjYWNoZWRTdHJ1Y3R1cmVJRCk7Ci0gICAgICAg
ICAgICBpZiAobWV0YWRhdGEubV90b1RoaXNTdGF0dXMgIT0gVG9UaGlzT0sKLSAgICAgICAgICAg
ICAgICB8fCAhY2FjaGVkU3RydWN0dXJlCi0gICAgICAgICAgICAgICAgfHwgY2FjaGVkU3RydWN0
dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUudG9UaGlzICE9IEpTT2JqZWN0OjppbmZvKCkt
Pm1ldGhvZFRhYmxlLnRvVGhpcwotICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKQotICAg
ICAgICAgICAgICAgIHx8IChvcDEtPm9wKCkgPT0gR2V0TG9jYWwgJiYgb3AxLT52YXJpYWJsZUFj
Y2Vzc0RhdGEoKS0+c3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgpKSkgewotICAgICAgICAg
ICAgICAgIHNldFRoaXMoYWRkVG9HcmFwaChUb1RoaXMsIE9wSW5mbyhieXRlY29kZS5tX2VjbWFN
b2RlKSwgT3BJbmZvKGdldFByZWRpY3Rpb24oKSksIG9wMSkpOwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKAotICAgICAgICAgICAgICAgICAgICBDaGVj
a1N0cnVjdHVyZSwKLSAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0
dXJlU2V0KGNhY2hlZFN0cnVjdHVyZSkpLAotICAgICAgICAgICAgICAgICAgICBvcDEpOwotICAg
ICAgICAgICAgfQorICAgICAgICAgICAgc2V0VGhpcyhhZGRUb0dyYXBoKFRvVGhpcywgT3BJbmZv
KGdldFByZWRpY3Rpb24oKSksIGdldFRoaXMoKSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfdG9fdGhpcyk7CiAgICAgICAgIH0KIApAQCAtNzc0Miw3ICs3NzI0LDcgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIGlmIChzdGF0
dXMuc3RhdGUoKSAhPSBHZXRCeVN0YXR1czo6U2ltcGxlCiAgICAgICAgICAgICAgICAgICAgIHx8
IHN0YXR1cy5udW1WYXJpYW50cygpICE9IDEKICAgICAgICAgICAgICAgICAgICAgfHwgc3RhdHVz
WzBdLnN0cnVjdHVyZVNldCgpLnNpemUoKSAhPSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNl
dChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChHZXRCeUlkRmx1c2gsIE9wSW5mbyhDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBn
ZXQoYnl0ZWNvZGUubV9zY29wZSkpKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2Rl
Lm1fZHN0LCBhZGRUb0dyYXBoKEdldEJ5SWRGbHVzaCwgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBPcEluZm8ocHJlZGljdGlvbiksIHdlYWtKU0NvbnN0
YW50KGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpKSkpOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTc4NjYsNiArNzg0OCwxMiBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9nZXRfZnJvbV9zY29wZSk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2dldF90
aGlzX3ZhbHVlX2Zvcl9jYWxsOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEdldFRoaXNWYWx1ZUZvckNhbGw+KCk7CisgICAgICAgICAgICBz
ZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoR2V0VGhpc1ZhbHVlRm9yQ2FsbCwgZ2V0KGJ5
dGVjb2RlLm1fc2NvcGUpKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfdGhpc192
YWx1ZV9mb3JfY2FsbCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3B1dF90b19zY29w
ZTogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BQdXRUb1Njb3BlPigpOwogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5t
ZXRhZGF0YShjb2RlQmxvY2spOwpAQCAtNzkxNyw3ICs3OTA1LDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMubnVt
VmFyaWFudHMoKSAhPSAxCiAgICAgICAgICAgICAgICAgICAgIHx8IHN0YXR1c1swXS5raW5kKCkg
IT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UKICAgICAgICAgICAgICAgICAgICAgfHwgc3RhdHVz
WzBdLnN0cnVjdHVyZSgpLnNpemUoKSAhPSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoUHV0QnlJZCwgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVu
dGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ss
IHVpZCkpLCBPcEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpLCBnZXQoYnl0
ZWNvZGUubV9zY29wZSksIGdldChieXRlY29kZS5tX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoUHV0QnlJZCwgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0
ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2ssIHVpZCkpLCBPcEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkp
LCB3ZWFrSlNDb25zdGFudChnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKSksIGdldChieXRlY29k
ZS5tX3ZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBOb2RlKiBiYXNlID0gd2Vha0pTQ29uc3RhbnQoZ2xvYmFsT2Jq
ZWN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAJKHJldmlzaW9uIDI3Nzk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU0LDYgKzI1NCw3IEBAIENhcGFi
aWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX2hhc19wcml2
YXRlX2JyYW5kOgogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
c2NvcGU6CisgICAgY2FzZSBvcF9nZXRfdGhpc192YWx1ZV9mb3JfY2FsbDoKICAgICBjYXNlIG9w
X2dldF9lbnVtZXJhYmxlX2xlbmd0aDoKICAgICBjYXNlIG9wX2hhc19lbnVtZXJhYmxlX2luZGV4
ZWRfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9oYXNfZW51bWVyYWJsZV9zdHJ1Y3R1cmVfcHJvcGVy
dHk6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2
aXNpb24gMjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOCw2ICsyMTgsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBBcml0aE1heDoKICAgICBjYXNlIEFyaXRo
UG93OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxsOgog
ICAgIGNhc2UgU2tpcFNjb3BlOgogICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OgogICAgIGNhc2Ug
U3RyaW5nQ2hhckNvZGVBdDoKQEAgLTU5MSwxMiArNTkyLDYgQEAgdm9pZCBjbG9iYmVyaXplKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICB3cml0ZShIZWFwT2JqZWN0Q291bnQpOwog
ICAgICAgICByZXR1cm47CiAKLSAgICBjYXNlIFRvVGhpczoKLSAgICAgICAgcmVhZChNaXNjRmll
bGRzKTsKLSAgICAgICAgcmVhZChIZWFwT2JqZWN0Q291bnQpOwotICAgICAgICB3cml0ZShIZWFw
T2JqZWN0Q291bnQpOwotICAgICAgICByZXR1cm47Ci0KICAgICBjYXNlIFR5cGVPZklzT2JqZWN0
OgogICAgICAgICByZWFkKE1pc2NGaWVsZHMpOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5
cGVPZklzT2JqZWN0TG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5v
ZGUpKTsKQEAgLTcxNiw2ICs3MTEsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlCiAgICAgY2FzZSBSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFs
OgogICAgIGNhc2UgUmVzb2x2ZVNjb3BlOgogICAgIGNhc2UgVG9PYmplY3Q6CisgICAgY2FzZSBU
b1RoaXM6CiAgICAgY2FzZSBIYXNFbnVtZXJhYmxlU3RydWN0dXJlUHJvcGVydHk6CiAgICAgY2Fz
ZSBIYXNFbnVtZXJhYmxlUHJvcGVydHk6CiAgICAgY2FzZSBIYXNPd25TdHJ1Y3R1cmVQcm9wZXJ0
eToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzE0LDEzICs3MTQsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
Y2FzZSBUb1RoaXM6IHsKLSAgICAgICAgICAgICAgICBUb1RoaXNSZXN1bHQgcmVzdWx0ID0gaXNU
b1RoaXNBbklkZW50aXR5KG1fZ3JhcGgubV92bSwgbm9kZS0+ZWNtYU1vZGUoKSwgbV9zdGF0ZS5m
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBU
b1RoaXNSZXN1bHQ6OklkZW50aXR5KSB7CisgICAgICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYg
dmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAg
IGlmICghKHZhbHVlLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSkgewogICAgICAgICAgICAgICAgICAg
ICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vk
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gVG9UaGlzUmVzdWx0OjpHbG9iYWxUaGlzKSB7
CisgICAgICAgICAgICAgICAgaWYgKCEodmFsdWUubV90eXBlICYgflNwZWNPdGhlcikpIHsKICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvR2V0R2xvYmFsVGhpcygpOwogICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAy
Nzc5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExOSw2ICsxMTksNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja0FycmF5T3JFbXB0eToKICAgICBjYXNlIENoZWNrRGV0
YWNoZWQ6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIEdldFRoaXNWYWx1ZUZvckNhbGw6
CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6CiAgICAgY2Fz
ZSBHZXRHbG9iYWxUaGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODA2LDYgKzE4MDYsNyBA
QCBwcml2YXRlOgogCiAgICAgICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjYXNlIEdldFNj
b3BlOgorICAgICAgICBjYXNlIEdldFRoaXNWYWx1ZUZvckNhbGw6CiAgICAgICAgIGNhc2UgR2V0
R2V0dGVyOgogICAgICAgICBjYXNlIEdldFNldHRlcjoKICAgICAgICAgY2FzZSBHZXRHbG9iYWxP
YmplY3Q6IHsKQEAgLTMxNDQsOTYgKzMxNDUsMTggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZml4
dXBUb1RoaXMoTm9kZSogbm9kZSkKICAgICB7Ci0gICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0g
bm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpOwotCi0gICAgICAgIGlmIChpc1N0cmljdE1vZGUp
IHsKLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQm9vbGVh
bigpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkgewotICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252
ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1Migp
KSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7Ci0gICAgICAgICAg
ICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxEb3Vi
bGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0
VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0
RG91YmxlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3ltYm9sKCkpIHsKLSAg
ICAgICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFN0
cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29u
dmVydFRvSWRlbnRpdHkoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5n
KCkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7Ci0jaWYgVVNFKEJJ
R0lOVDMyKQotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlQmlnSW50MzIoKSkKLSAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4o
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgp
LT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpCi0gICAgICAgICAgICAgICAgICAgIGZpeEVk
Z2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5j
aGlsZDEoKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0
eSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT3RoZXIoKSkgewot
ICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8
T3RoZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0
VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQog
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICBt
X2luZGV4SW5CbG9jaywgU3BlY05vbmUsIENoZWNrLCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAg
ICAgICAgRWRnZShub2RlLT5jaGlsZDEoKS5ub2RlKCksIE90aGVyVXNlKSk7CiAgICAgICAgICAg
ICBvYnNlcnZlVXNlS2luZE9uTm9kZTxPdGhlclVzZT4obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsK
ICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQoCi0gICAgICAgICAgICAgICAg
bm9kZSwgbV9ncmFwaC5nbG9iYWxUaGlzT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
OworICAgICAgICAgICAgICAgIG5vZGUsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyktPmdsb2JhbFRoaXMoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgY292ZXIgb3RoZXIgdXNlIGNh
c2VzIGJ1dCB3ZSBkb24ndCBoYXZlIHVzZSBraW5kcyBmb3IgdGhlbS4gSXQncyBub3QgY3JpdGlj
YWwsCi0gICAgICAgIC8vIGhvd2V2ZXIsIHNpbmNlIHdlIGNvdmVyIGFsbCB0aGUgbWlzc2luZyBj
YXNlcyBpbiBjb25zdGFudCBmb2xkaW5nLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MjEzCi0gICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlU3RyaW5nT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIGZpeEVkZ2U8U3Ry
aW5nT2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBub2RlLT5jb252ZXJ0
VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKGlzRmluYWxPYmplY3RTcGVjdWxhdGlvbihub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigp
KSkgewotICAgICAgICAgICAgZml4RWRnZTxGaW5hbE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpKSB7
CisgICAgICAgICAgICBmaXhFZGdlPE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24g
Mjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NzAsMTIgKzQ3MCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbik7CiAgICAgfQogICAgIAotICAgIEpT
T2JqZWN0KiBnbG9iYWxUaGlzT2JqZWN0Rm9yKENvZGVPcmlnaW4gY29kZU9yaWdpbikKLSAgICB7
Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBvYmplY3QgPSBnbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbik7Ci0gICAgICAgIHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihvYmplY3QtPm1ldGhvZFRh
YmxlKG1fdm0pLT50b1RoaXMob2JqZWN0LCBvYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpOwot
ICAgIH0KLSAgICAKICAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlRm9yKElubGluZUNh
bGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgaWYgKCFpbmxpbmVDYWxs
RnJhbWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJl
dmlzaW9uIDI3Nzk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwo
R3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXM6CiAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2Fz
ZSBHZXRUaGlzVmFsdWVGb3JDYWxsOgogICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgIGNhc2Ug
Q291bnRFeGVjdXRpb246CiAgICAgY2FzZSBTdXBlclNhbXBsZXJCZWdpbjoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjI2NCw3ICsyMjY0
LDYgQEAgcHVibGljOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgICAgICBjYXNl
IFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKLSAgICAgICAg
Y2FzZSBUb1RoaXM6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIyNzgsNyArMjI3Nyw2IEBAIHB1YmxpYzoK
ICAgICAgICAgY2FzZSBDYWxsRXZhbDoKICAgICAgICAgY2FzZSBEZWxldGVCeVZhbDoKICAgICAg
ICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgotICAgICAgICBjYXNlIFRvVGhpczoKICAgICAgICAg
ICAgIHJldHVybiBFQ01BTW9kZTo6ZnJvbUJ5dGUobV9vcEluZm8uYXM8dWludDhfdD4oKSk7CiAg
ICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICAgICAgY2FzZSBQdXRCeUlkOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjc3OTUzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzUsNiArMjc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1h
Y3JvKEdldEdsb2JhbExleGljYWxWYXJpYWJsZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8o
UHV0R2xvYmFsVmFyaWFibGUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXREeW5h
bWljVmFyLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0
VGhpc1ZhbHVlRm9yQ2FsbCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0RHluYW1pY1Zh
ciwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE5vdGlmeVdyaXRlLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4LCBOb2RlUmVzdWx0
SlMpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAkocmV2aXNpb24gMjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDI0ICsyMTcsNiBAQCBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFsT2JqCiAgICAgcmV0dXJuIGJhc2UtPmdldChnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25Ub1RoaXMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKSkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSk7
Ci19Ci0KLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Ub1RoaXNTdHJpY3QsIEVu
Y29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wKSkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLQot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKSk7Ci19Ci0KIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25PYmplY3RLZXlzLCBKU0FycmF5KiwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPYmplY3QpKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTMxODEsNyArMzE2Myw4IEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXREeW4KICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVu
dGlmaWVyOjpmcm9tVWlkKHZtLCBpbXBsKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNjb3BlLT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0
LCBpZGVudCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUg
eworICAgIFByb3BlcnR5U2xvdCBzbG90KEpTU2NvcGU6OnJlY2VpdmVyRm9yU2NvcGUoc2NvcGUp
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNjb3BlLT5nZXRQcm9wZXJ0eVNs
b3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNs
b3QmKSAtPiBKU1ZhbHVlIHsKICAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgR2V0
UHV0SW5mbyBnZXRQdXRJbmZvKGdldFB1dEluZm9CaXRzKTsKICAgICAgICAgICAgIGlmIChnZXRQ
dXRJbmZvLnJlc29sdmVNb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kKQpAQCAtMzIyOCw3ICszMjEx
LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXREeW5hbWljVmFyKAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGlzU3RyaWN0
TW9kZSwgUHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihn
ZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QoSlNTY29wZTo6cmVjZWl2ZXJGb3JTY29wZShzY29wZSksIGlzU3RyaWN0TW9kZSwgUHV0UHJv
cGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihnZXRQdXRJbmZvLmlu
aXRpYWxpemF0aW9uTW9kZSgpKSk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgc2Nv
cGUtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHNjb3BlLCBnbG9iYWxPYmplY3QsIGlkZW50LCBKU1Zh
bHVlOjpkZWNvZGUodmFsdWUpLCBzbG90KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsOCArNTgs
NiBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0CiBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUludGVybmFsUHJvbWlzZSwgSlNDZWxsKiwg
KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvciwgSlNDZWxsKiwgKEpTR2xvYmFs
T2JqZWN0KiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbkNyZWF0ZUFzeW5jR2VuZXJhdG9yLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBKU09iamVjdCogY29uc3RydWN0b3IpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uVG9UaGlzLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25Ub1RoaXNTdHJpY3QsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
blZhbHVlTW9kLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikpOwogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25WYWx1ZUJpdE5vdCwgRW5jb2RlZEpTVmFsdWUsIChKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpKTsKIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uVmFsdWVCaXRBbmQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkT3AyKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjc3OTUzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNyw3MSArNTI3LDEzIEBAIHByaXZhdGU6CiAgICAg
ICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFRvVGhpczogewotICAgICAgICAgICAg
Ly8gVG9UaGlzIGluIG1ldGhvZHMgZm9yIHByaW1pdGl2ZSB0eXBlcyBzaG91bGQgc3BlY3VsYXRl
IHByaW1pdGl2ZSB0eXBlcyBpbiBzdHJpY3QgbW9kZS4KLSAgICAgICAgICAgIGJvb2wgaXNTdHJp
Y3RNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpOwotICAgICAgICAgICAgaWYgKGlz
U3RyaWN0TW9kZSkgewotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlQm9vbGVhbigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVJbnQzMigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDUyQW55KTsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkgewotICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQnl0ZWNvZGVOdW1iZXIpOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN5bWJvbCgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTeW1ib2wpOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSNpZiBVU0UoQklHSU5U
MzIpCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVC
aWdJbnQzMigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0
aW9uKFNwZWNCaWdJbnQzMik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0hlYXBCaWdJbnQpOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCaWdJbnQpOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N0cmluZ0lkZW50KTsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkgewotICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjU3RyaW5nKTsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNw
ZWN1bGF0ZVN0cmluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFNwZWNTdHJpbmdPYmplY3QpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3Vs
ZFNwZWN1bGF0ZVN0cmluZygpKSB7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVBy
ZWRpY3Rpb24oU3BlY1N0cmluZ09iamVjdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBub2Rl
LT5jaGlsZDEoKS0+cHJlZGljdGlvbigpOwotICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkK
LSAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLT5nZXRIZWFw
UHJlZGljdGlvbigpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHByZWRpY3Rpb24pIHsKKyAgICAg
ICAgICAgIGlmIChwcmVkaWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUg
b3JpZ2luYWxQcmVkaWN0aW9uID0gcHJlZGljdGlvbjsKICAgICAgICAgICAgICAgICBpZiAocHJl
ZGljdGlvbiAmIH5TcGVjT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdyYXBwZXIg
b2JqZWN0cyBhcmUgY3JlYXRlZCBvbmx5IGluIHNsb3BweSBtb2RlLgpAQCAtMTIwNCw2ICsxMTQ2
LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhl
cik7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIEdldFRoaXNWYWx1ZUZvckNh
bGw6IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY09iamVjdCB8IFNwZWNPdGhlcik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIEdldEVudW1lcmFi
bGVMZW5ndGg6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CiAg
ICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMyLDYgKzIzMiw3
IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIENo
ZWNrQXJyYXk6CiAgICAgY2FzZSBDaGVja0FycmF5T3JFbXB0eToKICAgICBjYXNlIEdldFNjb3Bl
OgorICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDoKICAgICBjYXNlIFNraXBTY29wZToKICAg
ICBjYXNlIEdldEdsb2JhbE9iamVjdDoKICAgICBjYXNlIEdldEdsb2JhbFRoaXM6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAJKHJldmlzaW9uIDI3Nzk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMjAsNiArNDIyMCwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDogeworICAgICAgICBj
b21waWxlR2V0VGhpc1ZhbHVlRm9yQ2FsbChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CiAgICAgY2FzZSBSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOiB7CiAgICAg
ICAgIGNvbXBpbGVSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsKG5vZGUpOwog
ICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjc3OTUzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDI1OSw2ICs0MjU5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgY29tcGlsZUdldER5bmFtaWNWYXIobm9kZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KKworICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDogeworICAgICAgICBjb21waWxl
R2V0VGhpc1ZhbHVlRm9yQ2FsbChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIAog
ICAgIGNhc2UgUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbDogewogICAgICAg
ICBjb21waWxlUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbChub2RlKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxMjQsNiArMTIxMjQsMjUgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldER5bmFtaWNWYQogICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0UmVncywgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRU
aGlzVmFsdWVGb3JDYWxsKE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
c2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlJlZyBzY29wZUdQUiA9IHNjb3Bl
LmdwcigpOworCisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgbV9qaXQubW92ZVRy
dXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCByZXN1bHRSZWdzKTsKKyAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBub3RXaXRoU2NvcGUgPSBtX2ppdC5icmFuY2hJZlR5cGUoc2NvcGVHUFIsIEpTVHlw
ZVJhbmdlIHsgRmlyc3RKU1Njb3BlVHlwZSwgTGFzdEpTU2NvcGVUeXBlIH0pOworI2lmIFVTRShK
U1ZBTFVFMzJfNjQpCisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZyksIHJlc3VsdFJlZ3MudGFnR1BSKCkpOworI2VuZGlmCisgICAgbV9qaXQubW92ZShzY29wZUdQ
UiwgcmVzdWx0UmVncy5wYXlsb2FkR1BSKCkpOworICAgIG5vdFdpdGhTY29wZS5saW5rKCZtX2pp
dCk7CisKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworfQorCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUHV0RHluYW1pY1ZhcihOb2RlKiBub2RlKQogewogICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIHNjb3BlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTEzNDU4
LDI5ICsxMzQ3NywyNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9UaGlzKE5vZGUqIG5vZGUpCiB7CiAgICAg
QVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKLSAgICBKU1Zh
bHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEpTVmFsdWVS
ZWdzVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKLSAg
ICBKU1ZhbHVlUmVncyB0aGlzVmFsdWVSZWdzID0gdGhpc1ZhbHVlLmpzVmFsdWVSZWdzKCk7Ci0g
ICAgSlNWYWx1ZVJlZ3MgdGVtcFJlZ3MgPSB0ZW1wLnJlZ3MoKTsKKyAgICBKU1ZhbHVlT3BlcmFu
ZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMpOworICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHRoaXNWYWx1ZS5qc1ZhbHVl
UmVncygpOworICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlUmVncy5wYXlsb2FkR1BSKCk7CiAK
KyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxs
KHZhbHVlUmVncyk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKLSAg
ICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbCh0aGlzVmFsdWVSZWdzKSk7
Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZCgKLSAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCi0gICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywKLSAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHRoaXNWYWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6OnR5cGVJbmZv
RmxhZ3NPZmZzZXQoKSksCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KE92ZXJyaWRlc1RvVGhpcykpKTsKLSAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKHRoaXNWYWx1ZVJl
Z3MsIHRlbXBSZWdzKTsKLQotICAgIEpfSklUT3BlcmF0aW9uX0dKIGZ1bmN0aW9uOwotICAgIGlm
IChub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCi0gICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0
aW9uVG9UaGlzU3RyaWN0OwotICAgIGVsc2UKLSAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25U
b1RoaXM7Ci0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywg
dGhpcywgZnVuY3Rpb24sIHRlbXBSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdGhp
c1ZhbHVlUmVncykpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RPYmpl
Y3QodmFsdWVHUFIpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVt
cCgpOwogCi0gICAganNWYWx1ZVJlc3VsdCh0ZW1wUmVncywgbm9kZSk7CisgICAgbm90Q2VsbC5s
aW5rKCZtX2ppdCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdE90aGVy
KHZhbHVlUmVncywgc2NyYXRjaC5ncHIoKSkpOworICAgIG1faml0LmxvYWRQdHIoZ2xvYmFsT2Jq
ZWN0LT5hZGRyZXNzT2ZHbG9iYWxUaGlzKCksIHZhbHVlR1BSKTsKKworICAgIGRvbmUubGluaygm
bV9qaXQpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMs
IHRoaXMsIG9wZXJhdGlvblRvT2JqZWN0LCB2YWx1ZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKG51
bGxwdHIpKSk7CisgICAgY2VsbFJlc3VsdCh2YWx1ZUdQUiwgbm9kZSk7CiB9CiAKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RLZXlzT3JPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVz
KE5vZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NTIsNiArMTQ1Miw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVHZXRHbG9iYWxWYXJpYWJsZShOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlUHV0R2xvYmFsVmFyaWFibGUoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUdldER5bmFtaWNWYXIoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUdldFRoaXNWYWx1ZUZvckNh
bGwoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVB1dER5bmFtaWNWYXIoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZUdldENsb3N1cmVWYXIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVB1dENsb3N1
cmVWYXIoTm9kZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTIsNiArMzUyLDcg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgUmVz
b2x2ZVNjb3BlOgogICAgIGNhc2UgUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZh
bDoKICAgICBjYXNlIEdldER5bmFtaWNWYXI6CisgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxs
OgogICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKICAgICBjYXNlIENvbXBhcmVFcToKICAgICBjYXNl
IENvbXBhcmVFcVB0cjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI3Nzk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyMSw2ICsxNjIx
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXREeW5hbWljVmFyOgogICAgICAgICAgICAg
Y29tcGlsZUdldER5bmFtaWNWYXIoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEdldFRoaXNWYWx1ZUZvckNhbGw6CisgICAgICAgICAgICBjb21waWxlR2V0VGhpc1ZhbHVlRm9y
Q2FsbCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoK
ICAgICAgICAgICAgIGNvbXBpbGVQdXREeW5hbWljVmFyKCk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTIyMDksMzMgKzIyMTIsMjkgQEAgcHJpdmF0ZToKICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGlj
KTsKIAogICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICBTcGVjdWxhdGVkVHlwZSB2YWx1ZVR5cGUgPSBwcm92ZW5UeXBlKG1fbm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIG5vdENlbGxDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9j
aygpOwogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygp
OwogICAgICAgICAKLSAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgaXNDZWxsKHZh
bHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShpc0NlbGxDYXNlKSwg
cmFyZWx5KHNsb3dDYXNlKSk7Ci0gICAgICAgIAotICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4
dCA9IG1fb3V0LmFwcGVuZFRvKGlzQ2VsbENhc2UsIHNsb3dDYXNlKTsKLSAgICAgICAgVmFsdWVG
cm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcih2YWx1ZSk7Ci0gICAgICAgIG1fb3V0
LmJyYW5jaCgKLSAgICAgICAgICAgIG1fb3V0LnRlc3RJc1plcm8zMigKLSAgICAgICAgICAgICAg
ICBtX291dC5sb2FkOFplcm9FeHQzMih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfdHlwZUluZm9GbGFn
cyksCi0gICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihPdmVycmlkZXNUb1RoaXMpKSwK
LSAgICAgICAgICAgIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7Cisg
ICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFsdWUsIHZhbHVlVHlwZSksIHVzdWFsbHkoaXND
ZWxsQ2FzZSksIHJhcmVseShub3RDZWxsQ2FzZSkpOwogICAgICAgICAKKyAgICAgICAgTEJhc2lj
QmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc0NlbGxDYXNlLCBub3RDZWxsQ2FzZSk7
CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGlzT2JqZWN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZh
bHVlKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzT2JqZWN0KHZhbHVlLCB2YWx1ZVR5cGUpLCB1
c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJhcmVseShzbG93Q2FzZSkpOworCisgICAgICAgIG1fb3V0
LmFwcGVuZFRvKG5vdENlbGxDYXNlLCBzbG93Q2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IGlzT3RoZXJSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQubG9hZFB0cihtX291dC5hYnNvbHV0
ZShnbG9iYWxPYmplY3QtPmFkZHJlc3NPZkdsb2JhbFRoaXMoKSkpKTsKKyAgICAgICAgbV9vdXQu
YnJhbmNoKGlzT3RoZXIodmFsdWUsIHZhbHVlVHlwZSksIHVzdWFsbHkoY29udGludWF0aW9uKSwg
cmFyZWx5KHNsb3dDYXNlKSk7CisKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNv
bnRpbnVhdGlvbik7Ci0gICAgICAgIEpfSklUT3BlcmF0aW9uX0dKIGZ1bmN0aW9uOwotICAgICAg
ICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCi0gICAgICAgICAgICBmdW5jdGlv
biA9IG9wZXJhdGlvblRvVGhpc1N0cmljdDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZnVu
Y3Rpb24gPSBvcGVyYXRpb25Ub1RoaXM7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1
bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBmdW5jdGlvbiwgd2Vha1BvaW50ZXIoZ2xv
YmFsT2JqZWN0KSwgdmFsdWUpKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9
IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG9wZXJhdGlvblRvT2JqZWN0LCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCB2YWx1ZSwgbV9vdXQuY29uc3RJbnRQdHIoMCkpKTsKICAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhp
KEludDY0LCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHNldEpTVmFsdWUobV9v
dXQucGhpKEludDY0LCBpc09iamVjdFJlc3VsdCwgaXNPdGhlclJlc3VsdCwgc2xvd1Jlc3VsdCkp
OwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZVZhbHVlQWRkKCkKQEAgLTE0NDAzLDYgKzE0NDAy
LDI2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBs
b3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX291dC5jb25zdEludFB0cih1aWQpLCBtX291dC5j
b25zdEludDMyKG1fbm9kZS0+Z2V0UHV0SW5mbygpKSkpOwogICAgIH0KIAorICAgIHZvaWQgY29t
cGlsZUdldFRoaXNWYWx1ZUZvckNhbGwoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHNjb3BlID0g
bG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICBMQmFzaWNCbG9jayB3aXRoU2Nv
cGVDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0
aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayB1bmRlZmlu
ZWRSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZVVu
ZGVmaW5lZCkpOworICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBpc0NlbGxXaXRo
VHlwZShzY29wZSwgSlNUeXBlUmFuZ2UgeyBGaXJzdEpTU2NvcGVUeXBlLCBMYXN0SlNTY29wZVR5
cGUgfSwgV1RGOjpudWxsb3B0LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwKKyAgICAg
ICAgICAgIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHdpdGhTY29wZUNhc2UpKTsKKwor
ICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHdpdGhTY29wZUNh
c2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHdpdGhTY29wZVJlc3Vs
dCA9IG1fb3V0LmFuY2hvcihzY29wZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAg
ICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIHVuZGVmaW5lZFJlc3VsdCwgd2l0aFNj
b3BlUmVzdWx0KSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlUHV0RHluYW1pY1ZhcigpCiAg
ICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9EU0wucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRvci9EU0wucmIJKHJldmlzaW9uIDI3Nzk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0b3IvRFNMLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNyArMTQyLDYgQEAg
bW9kdWxlIERTTAogI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQ
dXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVkZSAiVG9U
aGlzU3RhdHVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAko
cmV2aXNpb24gMjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw3ICsxMzcsNyBAQCBK
U1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENvCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpOworICAg
IEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU2xv
cHB5TW9kZVRoaXMoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4ganNTdHJpbmcodm0sIEpTT2Jq
ZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKG9iamVjdCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2Miw2ICs0NjIsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAKICAgICAgICAgREVGSU5FX09QKG9wX3Jlc29s
dmVfc2NvcGUpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfZnJvbV9zY29wZSkKKyAgICAgICAg
REVGSU5FX09QKG9wX2dldF90aGlzX3ZhbHVlX2Zvcl9jYWxsKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X3RvX3Njb3BlKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2Zyb21fYXJndW1lbnRz
KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3RvX2FyZ3VtZW50cykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNzI3LDYgKzcyNyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHZvaWQgZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfZnJvbV9zY29wZShjb25zdCBJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3RoaXNfdmFsdWVfZm9yX2NhbGwoY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF90b19zY29wZShjb25z
dCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRz
KGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfdG9fYXJndW1l
bnRzKGNvbnN0IEluc3RydWN0aW9uKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
MTcsMjIgKzExMTcsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0
CiAgICAgZW1pdFN0b3JlQ2VsbChieXRlY29kZS5tX2RzdCwgcmVzdWx0UmVnKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQotewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9U
aGlzPigpOwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spOwotICAgIFN0cnVjdHVyZUlEKiBjYWNoZWRTdHJ1Y3R1cmVJRCA9ICZtZXRhZGF0YS5tX2Nh
Y2hlZFN0cnVjdHVyZUlEOwotICAgIFZpcnR1YWxSZWdpc3RlciB0aGlzUmVnaXN0ZXIgPSBieXRl
Y29kZS5tX3NyY0RzdDsKLQotICAgIGVtaXRMb2FkKHRoaXNSZWdpc3RlciwgcmVnVDMsIHJlZ1Qy
KTsKLQotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChyZWdUMykpOwotICAgIGFkZFNs
b3dDYXNlKGJyYW5jaElmTm90VHlwZShyZWdUMiwgRmluYWxPYmplY3RUeXBlKSk7Ci0gICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMCk7
Ci0gICAgbG9hZDMyKGNhY2hlZFN0cnVjdHVyZUlELCByZWdUMik7Ci0gICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIpKTsKLX0KLQogdm9pZCBKSVQ6OmVtaXRf
b3BfY2hlY2tfdGR6KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDaGVja1Rkej4oKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24g
Mjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTIxNiwyMCArMTIxNiw2IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9z
Y29wZShjb25zdCBJbnN0cnUKICAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOwogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCi17Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BU
b1RoaXM+KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVC
bG9jayk7Ci0gICAgU3RydWN0dXJlSUQqIGNhY2hlZFN0cnVjdHVyZUlEID0gJm1ldGFkYXRhLm1f
Y2FjaGVkU3RydWN0dXJlSUQ7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X3NyY0RzdCwgcmVnVDEpOwotCi0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1Qx
KTsKLQotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90VHlwZShyZWdUMSwgRmluYWxPYmplY3RU
eXBlKSk7Ci0gICAgbG9hZDMyKGNhY2hlZFN0cnVjdHVyZUlELCByZWdUMik7Ci0gICAgYWRkU2xv
d0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIHJlZ1QyKSk7Ci19Ci0KIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlz
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDcmVhdGVUaGlzPigpOwpAQCAtMjAxNCw2
ICsyMDAwLDQ0IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wcm90b3R5cGVfb2YoY29uc3QKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCByZXN1bHRSZWdzKTsKIH0K
IAordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3RoaXNfdmFsdWVfZm9yX2NhbGwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEdldFRoaXNWYWx1ZUZvckNhbGw+KCk7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MocmVnVDApOworI2Vsc2UKKyAgICBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKKyNlbmRpZgorICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9zY29wZSwgdmFsdWVSZWdzKTsKKworICAgIEp1bXAgaXNX
aXRoU2NvcGUgPSBicmFuY2hJZk5vdFR5cGUodmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgSlNUeXBl
UmFuZ2UgeyBGaXJzdEpTU2NvcGVUeXBlLCBMYXN0SlNTY29wZVR5cGUgfSk7CisgICAgbW92ZVRy
dXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCB2YWx1ZVJlZ3MpOworICAgIGlzV2l0aFNjb3BlLmxp
bmsodGhpcyk7CisKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCB2
YWx1ZVJlZ3MpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MocmVnVDApOworI2Vsc2UKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJl
Z3MocmVnVDEsIHJlZ1QwKTsKKyNlbmRpZgorICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV9zcmNEc3QsIHZhbHVlUmVncyk7CisKKyAgICBKdW1wIG5vdENlbGwgPSBicmFuY2hJ
Zk5vdENlbGwodmFsdWVSZWdzKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdE9iamVjdCh2
YWx1ZVJlZ3MucGF5bG9hZEdQUigpKSk7CisgICAgSnVtcCBkb25lID0ganVtcCgpOworCisgICAg
bm90Q2VsbC5saW5rKHRoaXMpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90T3RoZXIodmFs
dWVSZWdzLCByZWdUMykpOworICAgIHN0b3JlVHJ1c3RlZFZhbHVlKG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKS0+Z2xvYmFsVGhpcygpLCBhZGRyZXNzRm9yKGJ5dGVjb2RlLm1fc3JjRHN0KSk7
CisKKyAgICBkb25lLmxpbmsodGhpcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkxNSw3ICsyOTE1LDgg
QEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEZybwogICAgIC8vIE1vZHVs
ZVZhciBpcyBhbHdheXMgY29udmVydGVkIHRvIENsb3N1cmVWYXIgZm9yIGdldF9mcm9tX3Njb3Bl
LgogICAgIEFTU0VSVChnZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkgIT0gTW9kdWxlVmFyKTsKIAot
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2NvcGUt
PmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBbJl0gKGJvb2wgZm91bmQsIFBy
b3BlcnR5U2xvdCYgc2xvdCkgLT4gSlNWYWx1ZSB7CisgICAgUHJvcGVydHlTbG90IHNsb3QoSlNT
Y29wZTo6cmVjZWl2ZXJGb3JTY29wZShzY29wZSksIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpHZXQpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUoc2NvcGUtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90
LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xvdCYpIC0+IEpTVmFsdWUgewogICAgICAgICBp
ZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09
IFRocm93SWZOb3RGb3VuZCkKICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBpZGVudCkpOwpAQCAtMjk4Niw3ICsyOTg3LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvblB1dFRvUwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUHV0UHJv
cGVydHlTbG90IHNsb3Qoc2NvcGUsIGdldFB1dEluZm8uZWNtYU1vZGUoKS5pc1N0cmljdCgpLCBQ
dXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKGdldFB1dElu
Zm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChKU1Nj
b3BlOjpyZWNlaXZlckZvclNjb3BlKHNjb3BlKSwgZ2V0UHV0SW5mby5lY21hTW9kZSgpLmlzU3Ry
aWN0KCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlhbGl6YXRpb24o
Z2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpOwogICAgIHNjb3BlLT5tZXRob2RUYWJs
ZSh2bSktPnB1dChzY29wZSwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAg
IAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdm9pZCgpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNp
b24gMjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzOSw3ICsyMTM5LDggQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2dldF9mcm9tXwogICAgIC8vIE1vZHVsZVZhciBpcyBhbHdheXMgY29u
dmVydGVkIHRvIENsb3N1cmVWYXIgZm9yIGdldF9mcm9tX3Njb3BlLgogICAgIEFTU0VSVChtZXRh
ZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSAhPSBNb2R1bGVWYXIpOwogCi0gICAgTExJ
TlRfUkVUVVJOKHNjb3BlLT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgWyZd
IChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgeworICAgIFByb3Bl
cnR5U2xvdCBzbG90KEpTU2NvcGU6OnJlY2VpdmVyRm9yU2NvcGUoc2NvcGUpLCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKKyAgICBMTElOVF9SRVRVUk4oc2NvcGUtPmdl
dFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90LCBbJl0gKGJvb2wgZm91bmQs
IFByb3BlcnR5U2xvdCYpIC0+IEpTVmFsdWUgewogICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAg
ICAgICAgICBpZiAobWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCkgPT0gVGhyb3dJ
Zk5vdEZvdW5kKQogICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBpZGVudCkpOwpAQCAtMjE5OCw3ICsyMTk5LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3B1dF90b19zYwogICAgIGlmIChtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2
ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQgJiYgIWhhc1Byb3BlcnR5KQogICAgICAgICBMTElO
VF9USFJPVyhjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGdsb2JhbE9iamVjdCwgaWRlbnQp
KTsKIAotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHNjb3BlLCBtZXRhZGF0YS5tX2dldFB1dElu
Zm8uZWNtYU1vZGUoKS5pc1N0cmljdCgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0
LCBpc0luaXRpYWxpemF0aW9uKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1v
ZGUoKSkpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KEpTU2NvcGU6OnJlY2VpdmVyRm9yU2Nv
cGUoc2NvcGUpLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKS5pc1N0cmljdCgpLCBQ
dXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKG1ldGFkYXRh
Lm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpOwogICAgIHNjb3BlLT5tZXRob2RU
YWJsZSh2bSktPnB1dChzY29wZSwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3QpOwog
ICAgIAogICAgIENvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVQdXRUb1Njb3BlR2xvYmFsKGdsb2Jh
bE9iamVjdCwgY29kZUJsb2NrLCBieXRlY29kZSwgc2NvcGUsIHNsb3QsIGlkZW50KTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAt
ODE4LDE0ICs4MTgsMjYgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Njb3BlLCBPcEdldFNj
bwogZW5kKQogCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3BfdG9fdGhpcywgT3BUb1RoaXMsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorbGxpbnRPcChvcF90
b190aGlzLCBPcFRvVGhpcywgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCiAgICAgZ2V0KG1f
c3JjRHN0LCB0MCkKLSAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5v
cFRvVGhpc1Nsb3cKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYmlu
ZXEgdDEsIENlbGxUYWcsIC5vcFRvVGhpc05vdENlbGwKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MAotICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgRmluYWxPYmpl
Y3RUeXBlLCAub3BUb1RoaXNTbG93Ci0gICAgbWV0YWRhdGEodDIsIHQzKQotICAgIGxvYWRpIE9w
VG9UaGlzOjpNZXRhZGF0YTo6bV9jYWNoZWRTdHJ1Y3R1cmVJRFt0Ml0sIHQyCi0gICAgYmluZXEg
SlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDIsIC5vcFRvVGhpc1Nsb3cKKyAgICBiYmIgSlND
ZWxsOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93CisgICAgZGlzcGF0Y2go
KQorCisub3BUb1RoaXNOb3RDZWxsOgorICAgIG9yaSAxLCB0MQorICAgIGJpZXEgdDEsIE51bGxU
YWcsIC5vcFRvVGhpc1VuZGVmaW5lZE9yTnVsbAorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRo
X3RvX3RoaXMpCisgICAgZGlzcGF0Y2goKQorCisub3BUb1RoaXNVbmRlZmluZWRPck51bGw6Cisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2Jh
bE9iamVjdFt0Ml0sIHQyCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fZ2xvYmFsVGhpc1t0
Ml0sIHQyCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0
b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQogICAgIGRpc3BhdGNoKCkKIAogLm9w
VG9UaGlzU2xvdzoKQEAgLTI1NTQsNiArMjU2NiwxOCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9mcm9tX3Njb3BlLCBPCiBlbmQpCiAKIAorbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Ro
aXNfdmFsdWVfZm9yX2NhbGwsIE9wR2V0VGhpc1ZhbHVlRm9yQ2FsbCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIHJldHVybikKKyAgICBnZXQobV9zY29wZSwgdDApCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiYmIgSlNDZWxsOjptX3R5cGVbdDBdLCBG
aXJzdEpTU2NvcGVUeXBlLCAuaXNXaXRoU2NvcGUKKyAgICBiYmEgSlNDZWxsOjptX3R5cGVbdDBd
LCBMYXN0SlNTY29wZVR5cGUsIC5pc1dpdGhTY29wZQorICAgIHJldHVybihVbmRlZmluZWRUYWcs
IDApCisKKy5pc1dpdGhTY29wZToKKyAgICByZXR1cm4oQ2VsbFRhZywgdDApCitlbmQpCisKKwog
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9wUHV0VG9TY29wZSwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWFjcm8gcHV0UHJv
cGVydHkoKQogICAgICAgICBnZXQobV92YWx1ZSwgdDEpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNp
b24gMjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTgyOCwxNSArODI4LDI2IEBAIGxsaW50T3BX
aXRoUmV0dXJuKG9wX2dldF9zY29wZSwgT3BHZXRTY28KIGVuZCkKIAogCi1sbGludE9wV2l0aE1l
dGFkYXRhKG9wX3RvX3RoaXMsIE9wVG9UaGlzLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWRhdGEsIHJldHVybikKK2xsaW50T3Aob3BfdG9fdGhpcywgT3BUb1RoaXMsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoKQogICAgIGdldChtX3NyY0RzdCwgdDApCi0gICAgbG9hZHEgW2Nm
ciwgdDAsIDhdLCB0MAotICAgIGJ0cW56IHQwLCBub3RDZWxsTWFzaywgLm9wVG9UaGlzU2xvdwot
ICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgRmluYWxPYmplY3RUeXBlLCAub3BUb1RoaXNT
bG93Ci0gICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDEKLSAgICBtZXRhZGF0
YSh0MiwgdDMpCi0gICAgbG9hZGkgT3BUb1RoaXM6Ok1ldGFkYXRhOjptX2NhY2hlZFN0cnVjdHVy
ZUlEW3QyXSwgdDIKLSAgICBiaW5lcSB0MSwgdDIsIC5vcFRvVGhpc1Nsb3cKKyAgICBsb2FkcSBb
Y2ZyLCB0MCwgOF0sIHQxCisgICAgYnRxbnogdDEsIG5vdENlbGxNYXNrLCAub3BUb1RoaXNOb3RD
ZWxsCisgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xv
dworICAgIGRpc3BhdGNoKCkKKworLm9wVG9UaGlzTm90Q2VsbDoKKyAgICBhbmRxIH5UYWdVbmRl
ZmluZWQsIHQxCisgICAgYnFlcSB0MSwgVmFsdWVOdWxsLCAub3BUb1RoaXNVbmRlZmluZWRPck51
bGwKKyAgICAjIGJxZXEgdDEsIFZhbHVlVW5kZWZpbmVkLCAub3BUb1RoaXNVbmRlZmluZWRPck51
bGwKKyAgICAjIGJxZXEgdDEsIFZhbHVlTnVsbCwgLm9wVG9UaGlzVW5kZWZpbmVkT3JOdWxsCisg
ICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdG9fdGhpcykKKyAgICBkaXNwYXRjaCgpCisKKy5v
cFRvVGhpc1VuZGVmaW5lZE9yTnVsbDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QxXSwgdDEKKyAgICBsb2FkcCBKU0ds
b2JhbE9iamVjdDo6bV9nbG9iYWxUaGlzW3QxXSwgdDEKKyAgICBzdG9yZXEgdDEsIFtjZnIsIHQw
LCA4XQogICAgIGRpc3BhdGNoKCkKIAogLm9wVG9UaGlzU2xvdzoKQEAgLTI2ODQsNiArMjY5NSwx
NyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPCiBlbmQpCiAKIAor
bGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3RoaXNfdmFsdWVfZm9yX2NhbGwsIE9wR2V0VGhpc1Zh
bHVlRm9yQ2FsbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKKyAgICBsb2Fk
VmFyaWFibGUoZ2V0LCBtX3Njb3BlLCB0MCkKKyAgICBiYmIgSlNDZWxsOjptX3R5cGVbdDBdLCBG
aXJzdEpTU2NvcGVUeXBlLCAuaXNXaXRoU2NvcGUKKyAgICBiYmEgSlNDZWxsOjptX3R5cGVbdDBd
LCBMYXN0SlNTY29wZVR5cGUsIC5pc1dpdGhTY29wZQorICAgIHJldHVybihWYWx1ZVVuZGVmaW5l
ZCkKKworLmlzV2l0aFNjb3BlOgorICAgIHJldHVybih0MCkKK2VuZCkKKworCiBsbGludE9wV2l0
aE1ldGFkYXRhKG9wX3B1dF90b19zY29wZSwgT3BQdXRUb1Njb3BlLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBtYWNybyBwdXRQcm9wZXJ0eSgpCiAg
ICAgICAgIGdldChtX3ZhbHVlLCB0MSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDI3Nzk1MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29y
a2luZyBjb3B5KQpAQCAtNTQxLDYgKzU0MSw4IEBAIGNvbnN0IEZpbmFsT2JqZWN0VHlwZSA9IGNv
bnN0ZXhwciBGaW5hbE8KIGNvbnN0IEpTRnVuY3Rpb25UeXBlID0gY29uc3RleHByIEpTRnVuY3Rp
b25UeXBlCiBjb25zdCBBcnJheVR5cGUgPSBjb25zdGV4cHIgQXJyYXlUeXBlCiBjb25zdCBEZXJp
dmVkQXJyYXlUeXBlID0gY29uc3RleHByIERlcml2ZWRBcnJheVR5cGUKK2NvbnN0IEZpcnN0SlNT
Y29wZVR5cGUgPSBjb25zdGV4cHIgRmlyc3RKU1Njb3BlVHlwZQorY29uc3QgTGFzdEpTU2NvcGVU
eXBlID0gY29uc3RleHByIExhc3RKU1Njb3BlVHlwZQogY29uc3QgUHJveHlPYmplY3RUeXBlID0g
Y29uc3RleHByIFByb3h5T2JqZWN0VHlwZQogY29uc3QgSGVhcEJpZ0ludFR5cGUgPSBjb25zdGV4
cHIgSGVhcEJpZ0ludFR5cGUKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc3OTUzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01OTEsNyArNTkxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5j
VAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7
CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogCiAgICAg
Ly8gMS4gTGV0IGFycmF5IGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb09iamVjdCBvbiB0aGUg
dGhpcyB2YWx1ZS4KICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVj
dChnbG9iYWxPYmplY3QpOwpAQCAtNjY5LDkgKzY2OSw4IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihhcnJheVByb3RvRnVuY1QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBF
Q01BTW9kZTo6c3RyaWN0KCkpOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFs
dWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB1aW50NjRfdCBsZW5n
dGggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4odG9MZW5ndGgoZ2xvYmFsT2JqZWN0LCB0aGlzT2Jq
ZWN0KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CkBAIC03NjQsNyArNzYzLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9G
dW5jSgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8v
IDEuIExldCBPIGJlID8gVG9PYmplY3QodGhpcyB2YWx1ZSkuCi0gICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFN
b2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
ICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3Qp
OwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiBlbmNvZGVk
SlNWYWx1ZSgpOwpAQCAtODIwLDcgKzgxOSw3IEBAIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjcmVh
dGVBcnJheUl0ZXJhdG8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFN
b2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
ICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3Qp
OwogICAgIFVOVVNFRF9QQVJBTShzY29wZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0
KSkKQEAgLTg0OSw3ICs4NDgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90
b0Z1bmNQCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0
KCkpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKIAog
ICAgIGlmIChpc0pTQXJyYXkodGhpc1ZhbHVlKSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYXNBcnJheSh0aGlzVmFsdWUpLT5wb3AoZ2xvYmFsT2Jq
ZWN0KSkpOwpAQCAtODg3LDcgKzg4Niw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJh
eVByb3RvRnVuY1AKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6
c3RyaWN0KCkpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KTsKIAogICAgIGlmIChMSUtFTFkoaXNKU0FycmF5KHRoaXNWYWx1ZSkgJiYgY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50KCkgPT0gMSkpIHsKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5
KHRoaXNWYWx1ZSk7CkBAIC05MjMsNyArOTIyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGFycmF5UHJvdG9GdW5jUgogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0
aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3Qp
OwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVj
dCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGVuY29k
ZWRKU1ZhbHVlKCk7CkBAIC0xMDI1LDcgKzEwMjQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oYXJyYXlQcm90b0Z1bmNTCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCog
dGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0
aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwog
ICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAg
ICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVl
KCk7CkBAIC0xMDUyLDcgKzEwNTEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQ
cm90b0Z1bmNTCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJy
YXkucHJvdG90eXBlLnNsaWNlCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU09iamVjdCogdGhp
c09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlz
T2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAg
IEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAg
aWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTExMTYsNyAr
MTExNSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1MKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2Nv
cGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikp
CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTIyMiw3ICsxMjIxLDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jVQogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAvLyAxNS40LjQuMTMKIAotICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmpl
Y3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2Jq
KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpT
VmFsdWUoKTsKQEAgLTEzNTcsNyArMTM1Niw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihh
cnJheVByb3RvRnVuY0kKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICAvLyAxNS40LjQuMTQKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50
b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9B
U1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElL
RUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTEzOTcsNyArMTM5Niw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY0wKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxNS40LjQuMTUKLSAgICBK
U09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2Jh
bE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChn
bG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9
PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAg
cmV0dXJuIHsgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5m
by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5m
by5oCShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bGFzc0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNzEsOSArNzEsNiBAQCBzdHJ1Y3QgTWV0aG9k
VGFibGUgewogICAgIHVzaW5nIERvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrRnVuY3Rpb25QdHIg
PSB2b2lkICgqKShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKICAgICBEb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVja0Z1bmN0aW9uUHRy
IE1FVEhPRF9UQUJMRV9FTlRSWShkb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjayk7CiAKLSAgICB1
c2luZyBUb1RoaXNGdW5jdGlvblB0ciA9IEpTVmFsdWUgKCopKEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgRUNNQU1vZGUpOwotICAgIFRvVGhpc0Z1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRS
WSh0b1RoaXMpOwotCiAgICAgdXNpbmcgR2V0T3duUHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRyID0g
dm9pZCAoKikoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RG9udEVudW1Qcm9wZXJ0aWVzTW9kZSk7CiAgICAgR2V0T3duUHJvcGVydHlOYW1lc0Z1bmN0aW9u
UHRyIE1FVEhPRF9UQUJMRV9FTlRSWShnZXRPd25Qcm9wZXJ0eU5hbWVzKTsKICAgICBHZXRPd25Q
cm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGdldE93blNwZWNpYWxQ
cm9wZXJ0eU5hbWVzKTsKQEAgLTE1Niw3ICsxNTMsNiBAQCBzdHJ1Y3QgTWV0aG9kVGFibGUgewog
ICAgICAgICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eVNsb3QsIFwKICAgICAgICAgJkNsYXNz
TmFtZTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCwgXAogICAgICAgICAmQ2xhc3NOYW1lOjpk
b1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjaywgXAotICAgICAgICAmQ2xhc3NOYW1lOjp0b1RoaXMs
IFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duUHJvcGVydHlOYW1lcywgXAogICAgICAgICAm
Q2xhc3NOYW1lOjpnZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcywgXAogICAgICAgICAmQ2xhc3NO
YW1lOjpjdXN0b21IYXNJbnN0YW5jZSwgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyNzc5NTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNDYsMjggKzM0Niw4IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChz
bG93X3BhdGhfdG8KIHsKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8
T3BUb1RoaXM+KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2Rl
QmxvY2spOwogICAgIEpTVmFsdWUgdjEgPSBHRVQoYnl0ZWNvZGUubV9zcmNEc3QpLmpzVmFsdWUo
KTsKLSAgICBpZiAodjEuaXNDZWxsKCkpIHsKLSAgICAgICAgU3RydWN0dXJlSUQgbXlTdHJ1Y3R1
cmVJRCA9IHYxLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpOwotICAgICAgICBTdHJ1Y3R1cmVJRCBv
dGhlclN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRDsKLSAgICAgICAg
aWYgKG15U3RydWN0dXJlSUQgIT0gb3RoZXJTdHJ1Y3R1cmVJRCkgewotICAgICAgICAgICAgaWYg
KG90aGVyU3RydWN0dXJlSUQpCi0gICAgICAgICAgICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0
dXMgPSBUb1RoaXNDb25mbGljdGVkOwotICAgICAgICAgICAgbWV0YWRhdGEubV9jYWNoZWRTdHJ1
Y3R1cmVJRCA9IG15U3RydWN0dXJlSUQ7Ci0gICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmll
cihjb2RlQmxvY2ssIHZtLmdldFN0cnVjdHVyZShteVN0cnVjdHVyZUlEKSk7Ci0gICAgICAgIH0K
LSAgICB9IGVsc2UgewotICAgICAgICBtZXRhZGF0YS5tX3RvVGhpc1N0YXR1cyA9IFRvVGhpc0Nv
bmZsaWN0ZWQ7Ci0gICAgICAgIG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgPSAwOwotICAg
IH0KLSAgICAvLyBOb3RlOiBXZSBvbmx5IG5lZWQgdG8gZG8gdGhpcyB2YWx1ZSBwcm9maWxpbmcg
aGVyZSBvbiB0aGUgc2xvdyBwYXRoLiBUaGUgZmFzdCBwYXRoCi0gICAgLy8ganVzdCByZXR1cm5z
IHRoZSBpbnB1dCB0byB0b190aGlzIGlmIHRoZSBzdHJ1Y3R1cmUgY2hlY2sgc3VjY2VlZHMuIElm
IHRoZSBzdHJ1Y3R1cmUKLSAgICAvLyBjaGVjayBzdWNjZWVkcywgZG9pbmcgdmFsdWUgcHJvZmls
aW5nIGhlcmUgaXMgZXF1aXZhbGVudCB0byBkb2luZyBpdCB3aXRoIGEgcG90ZW50aWFsbHkKLSAg
ICAvLyBkaWZmZXJlbnQgb2JqZWN0IHRoYXQgc3RpbGwgaGFzIHRoZSBzYW1lIHN0cnVjdHVyZSBv
biB0aGUgZmFzdCBwYXRoIHNpbmNlIGl0J2xsIHByb2R1Y2UKLSAgICAvLyB0aGUgc2FtZSBTcGVj
dWxhdGVkVHlwZS4gVGhlcmVmb3JlLCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHZhbHVl
IHByb2ZpbGluZyBvbiB0aGUKLSAgICAvLyBmYXN0IHBhdGguCi0gICAgYXV0byB2YWx1ZSA9IHYx
LnRvVGhpcyhnbG9iYWxPYmplY3QsIGJ5dGVjb2RlLm1fZWNtYU1vZGUpOworICAgIEpTT2JqZWN0
KiB2YWx1ZSA9IHYxLnRvU2xvcHB5TW9kZVRoaXMoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5f
V0lUSF9QUk9GSUxJTkdfQ1VTVE9NKGJ5dGVjb2RlLm1fc3JjRHN0LCB2YWx1ZSwgUFJPRklMRV9W
QUxVRSh2YWx1ZSkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21wbGV0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21wbGV0aW9uLmNwcAkocmV2aXNpb24gMjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMs
MTUgQEAgUmVmUHRyPENhY2hlZEJ5dGVjb2RlPiBnZW5lcmF0ZU1vZHVsZUJ5dAogICAgIHJldHVy
biBzZXJpYWxpemVCeXRlY29kZSh2bSwgdW5saW5rZWRDb2RlQmxvY2ssIHNvdXJjZSwgU291cmNl
Q29kZVR5cGU6Ok1vZHVsZVR5cGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGZkLCBlcnJvciwg
eyB9KTsKIH0KIAorc3RhdGljIGlubGluZSBKU09iamVjdCogdG9HbG9iYWxUaGlzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZSB8
fCB2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
LT5nbG9iYWxUaGlzKCk7CisgICAgaWYgKHZhbHVlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QodmFs
dWUpLT5pc0dsb2JhbE9iamVjdCgpKQorICAgICAgICByZXR1cm4ganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4odmFsdWUpLT5nbG9iYWxUaGlzKCk7CisgICAgcmV0dXJuIHZhbHVlLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7Cit9CisKIEpTVmFsdWUgZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFr
ZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwpAQCAtMTMxLDkgKzE0MCw4IEBAIEpTVmFsdWUgZXZhbHVhdGUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9tU3RyaW5nVGFi
bGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAotICAgIGlm
ICghdGhpc1ZhbHVlIHx8IHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICB0
aGlzVmFsdWUgPSBnbG9iYWxPYmplY3Q7Ci0gICAgSlNPYmplY3QqIHRoaXNPYmogPSBqc0Nhc3Q8
SlNPYmplY3QqPih0aGlzVmFsdWUudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3Bw
eSgpKSk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSB0b0dsb2JhbFRoaXMoZ2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUpOworICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSB2bS5pbnRlcnByZXRlci0+ZXhlY3V0ZVByb2dyYW0oc291cmNlLCBnbG9iYWxP
YmplY3QsIHRoaXNPYmopOwogCiAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKSB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkocmV2
aXNpb24gMjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Miw3ICszNTIsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oZGF0ZVByb3RvRnVuY1RvCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkRhdGUucHJv
dG90eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgfHRoaXN8IHRvIGJlIGFuIG9iamVj
dC4iKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNW
YWx1ZSk7CkBAIC04NjYsOCArODY2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGRhdGVQ
cm90b0Z1bmNHZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwotICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5h
bWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKKyAgICBhdXRvKiB0aGlzRGF0
ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIApAQCAtODgzLDggKzg4Miw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRlUHJvdG9GdW5jVG8KIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwotICAgIEpTT2JqZWN0
KiBvYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVj
dCogb2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3Qp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgSlNWYWx1ZSB0aW1lVmFsdWUgPSBvYmplY3QtPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwg
UHJlZmVyTnVtYmVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3Nzk1MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMs
NyArNzMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZXJyb3JQcm90b0Z1bmNUCiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gTGV0IE8g
YmUgdGhlIHRoaXMgdmFsdWUuCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogCiAgICAgLy8gMi4g
SWYgVHlwZShPKSBpcyBub3QgT2JqZWN0LCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAg
ICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCaWdJbnQuaAkocmV2aXNpb24gMjc3OTUzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQ2VsbDsKICAgICB1c2luZyBEaWdpdCA9IFVD
UFVSZWdpc3RlcjsKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBPdmVycmlk
ZXNUb1RoaXM7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKICAgICBmcmllbmQg
Y2xhc3MgQ2FjaGVkQmlnSW50OwogCiAgICAgREVDTEFSRV9WSVNJVF9DSElMRFJFTjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCShyZXZpc2lv
biAyNzc5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDI2ICsxNjQsNiBAQCBKU09iamVjdCogSlNWYWx1ZTo6
dG9PYmplY3RTbG93Q2FzZShKU0dsCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpTVmFsdWUg
SlNWYWx1ZTo6dG9UaGlzU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNN
QU1vZGUgZWNtYU1vZGUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFpc0NlbGwoKSk7Ci0KLSAgICBp
ZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAgaWYg
KGlzSW50MzIoKSB8fCBpc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gY29uc3RydWN0TnVtYmVy
KGdsb2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKLSAgICBpZiAoaXNUcnVlKCkgfHwgaXNGYWxzZSgp
KQotICAgICAgICByZXR1cm4gY29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlhdGVCb29sZWFuKGds
b2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKLSNpZiBVU0UoQklHSU5UMzIpCi0gICAgaWYgKGlzQmln
SW50MzIoKSkKLSAgICAgICAgcmV0dXJuIEJpZ0ludE9iamVjdDo6Y3JlYXRlKGdsb2JhbE9iamVj
dC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCAqdGhpcyk7Ci0jZW5kaWYKLQotICAgIEFTU0VSVChpc1Vu
ZGVmaW5lZE9yTnVsbCgpKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7
Ci19Ci0KIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAko
cmV2aXNpb24gMjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsNyArMzMyLDcgQEAgcHVibGljOgogICAgIGJv
b2wgcHV0QnlJbmRleChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICBKU1ZhbHVlIGdldFByb3RvdHlwZShKU0ds
b2JhbE9iamVjdCopIGNvbnN0OwotICAgIEpTVmFsdWUgdG9UaGlzKEpTR2xvYmFsT2JqZWN0Kiwg
RUNNQU1vZGUpIGNvbnN0OworICAgIEpTT2JqZWN0KiB0b1Nsb3BweU1vZGVUaGlzKEpTR2xvYmFs
T2JqZWN0KikgY29uc3Q7CiAKICAgICBzdGF0aWMgYm9vbCBlcXVhbChKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogICAgIHN0YXRpYyBib29sIGVxdWFsU2xvd0Nhc2Uo
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKQEAgLTUyMSw3ICs1MjEs
NiBAQCBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nKiB0b1N0cmluZ1Ns
b3dDYXNlKEpTR2xvYmFsT2JqZWN0KiwgYm9vbCByZXR1cm5FbXB0eVN0cmluZ09uRXJyb3IpIGNv
bnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFdURjo6U3RyaW5nIHRvV1RGU3RyaW5nU2xvd0Nh
c2UoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVj
dCogdG9PYmplY3RTbG93Q2FzZShKU0dsb2JhbE9iamVjdCopIGNvbnN0OwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIEpTVmFsdWUgdG9UaGlzU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqLCBFQ01BTW9k
ZSkgY29uc3Q7CiAKICAgICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yIHU7CiB9OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShy
ZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MjksOSArOTI5LDkgQEAgaW5saW5lIGNv
bnN0IENsYXNzSW5mbyogSlNWYWx1ZTo6Y2xhc3NJbgogICAgIHJldHVybiBpc0NlbGwoKSA/IGFz
Q2VsbCgpLT5jbGFzc0luZm8odm0pIDogbnVsbHB0cjsKIH0KIAotaW5saW5lIEpTVmFsdWUgSlNW
YWx1ZTo6dG9UaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFN
b2RlKSBjb25zdAoraW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b1Nsb3BweU1vZGVUaGlzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzQ2VsbCgp
ID8gYXNDZWxsKCktPm1ldGhvZFRhYmxlKGdldFZNKGdsb2JhbE9iamVjdCkpLT50b1RoaXMoYXND
ZWxsKCksIGdsb2JhbE9iamVjdCwgZWNtYU1vZGUpIDogdG9UaGlzU2xvd0Nhc2UoZ2xvYmFsT2Jq
ZWN0LCBlY21hTW9kZSk7CisgICAgcmV0dXJuIGlzVW5kZWZpbmVkT3JOdWxsKCkgPyBnbG9iYWxP
YmplY3QtPmdsb2JhbFRoaXMoKSA6IHRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiB9CiAKIEFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMjc3OTUzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDEz
ICsxNDIsNiBAQCBib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsCiAgICAg
cmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0
ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIpOwog
fQogCi1KU1ZhbHVlIEpTQ2VsbDo6dG9UaGlzKEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCi17Ci0gICAgaWYgKGVjbWFNb2RlLmlz
U3RyaWN0KCkpCi0gICAgICAgIHJldHVybiBjZWxsOwotICAgIHJldHVybiBjZWxsLT50b09iamVj
dChnbG9iYWxPYmplY3QpOwotfQotCiBKU1ZhbHVlIEpTQ2VsbDo6dG9QcmltaXRpdmUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBwcmVmZXJyZWRU
eXBlKSBjb25zdAogewogICAgIGlmIChpc1N0cmluZygpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDI3Nzk1MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsOCArMTg1LDYg
QEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUpOwogCi0gICAgc3RhdGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUpOwotCiAgICAgc3RhdGljIGJvb2wgY2FuVXNlRmFz
dEdldE93blByb3BlcnR5KGNvbnN0IFN0cnVjdHVyZSYpOwogICAgIEpTVmFsdWUgZmFzdEdldE93
blByb3BlcnR5KFZNJiwgU3RydWN0dXJlJiwgUHJvcGVydHlOYW1lKTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAy
Nzc5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjE0LDkgKzEyMTQsMTEgQEAgaW5saW5lIEpTQXJyYXkqIGNv
bnN0cnVjdEFycmF5TmVnYXRpdmVJbgogICAgIHJldHVybiBBcnJheUFsbG9jYXRpb25Qcm9maWxl
Ojp1cGRhdGVMYXN0QWxsb2NhdGlvbkZvcihwcm9maWxlLCBjb25zdHJ1Y3RBcnJheU5lZ2F0aXZl
SW5kZXhlZChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdmFsdWVzLCBsZW5ndGgpKTsKIH0KIAot
aW5saW5lIEpTT2JqZWN0KiBKU1Njb3BlOjpnbG9iYWxUaGlzKCkKLXsgCi0gICAgcmV0dXJuIGds
b2JhbE9iamVjdCgpLT5nbG9iYWxUaGlzKCk7CitpbmxpbmUgSlNPYmplY3QqIEpTU2NvcGU6OnJl
Y2VpdmVyRm9yU2NvcGUoSlNPYmplY3QqIHNjb3BlKQoreworICAgIGlmIChzY29wZS0+dHlwZSgp
ID09IEdsb2JhbE9iamVjdFR5cGUpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihzY29wZSktPmdsb2JhbFRoaXMoKTsKKyAgICByZXR1cm4gc2NvcGU7CiB9CiAKIGlubGlu
ZSBKU09iamVjdCogSlNHbG9iYWxPYmplY3Q6Omdsb2JhbFRoaXMoKSBjb25zdApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MDAsOCArNzAwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNNYWtlVAog
CiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY1Byb3RvR2V0dGVyLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2Jq
ZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhp
c1ZhbHVlLmdldFByb3RvdHlwZShnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkuZ2V0UHJvdG90eXBlKGdsb2JhbE9iamVjdCkp
OwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY1Byb3RvU2V0dGVyLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAt
NzA5LDcgKzcwOCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jUHJvdG8K
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7Cisg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICh0
aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgT2JqZWN0UHJvdG9DYWxsZWRPbk51bGxPclVuZGVm
aW5lZEVycm9yKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODAzLDcgKzE4MDMsNyBAQCBib29s
IEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjCiAgICAgICAgIHJldHVybiB0eXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQsICJDYW5ub3Qg
c2V0IHByb3RvdHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdCJfcyk7CiAgICAgfQog
Ci0gICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGdsb2JhbE9iamVjdCwg
RUNNQU1vZGU6OnNsb3BweSgpKSA9PSB0aGlzKTsKKyAgICBBU1NFUlQoIWluaGVyaXRzPEpTU2Nv
cGU+KHZtKSk7CiAKICAgICBpZiAodGhpcy0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKSA9PSBwcm90
b3R5cGUpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjQ2MiwxMSArMjQ2Miw2IEBAIEpTU3Ry
aW5nKiBKU09iamVjdDo6dG9TdHJpbmcoSlNHbG9iYWxPYmoKICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIHByaW1pdGl2ZS50b1N0cmluZyhnbG9iYWxPYmplY3QpKTsKIH0KIAotSlNWYWx1
ZSBKU09iamVjdDo6dG9UaGlzKEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqLCBFQ01BTW9k
ZSkKLXsKLSAgICByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7Ci19Ci0KIHZvaWQgSlNP
YmplY3Q6OnNlYWwoVk0mIHZtKQogewogICAgIGlmIChpc1NlYWxlZCh2bSkpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDI3Nzk1MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTY4OSw4ICs2ODksNiBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91Ymxl
IHRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNTdHJpbmcqIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3Qq
LCBFQ01BTW9kZSk7Ci0KICAgICAvLyBUaGlzIGdldCBmdW5jdGlvbiBvbmx5IGxvb2tzIGF0IHRo
ZSBwcm9wZXJ0eSBtYXAuCiAgICAgSlNWYWx1ZSBnZXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKSBjb25zdAogICAgIHsKQEAgLTc5OSwxMSArNzk3LDkgQEAgcHVibGlj
OgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKLSAgICBib29sIGlzRW52aXJvbm1lbnQo
KSBjb25zdDsKICAgICBib29sIGlzR2xvYmFsT2JqZWN0KCkgY29uc3Q7CiAgICAgYm9vbCBpc0pT
TGV4aWNhbEVudmlyb25tZW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc0dsb2JhbExleGljYWxFbnZp
cm9ubWVudCgpIGNvbnN0OwotICAgIGJvb2wgaXNTdHJpY3RFdmFsQWN0aXZhdGlvbigpIGNvbnN0
OwogICAgIGJvb2wgaXNXaXRoU2NvcGUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNFcnJvckluc3Rh
bmNlKCkgY29uc3Q7CkBAIC0xMjcyLDE4ICsxMjY4LDYgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6
OmlzR2xvYmFsTGV4aWNhbEVudgogICAgIHJldHVybiB0eXBlKCkgPT0gR2xvYmFsTGV4aWNhbEVu
dmlyb25tZW50VHlwZTsKIH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OmlzU3RyaWN0RXZhbEFj
dGl2YXRpb24oKSBjb25zdAotewotICAgIHJldHVybiB0eXBlKCkgPT0gU3RyaWN0RXZhbEFjdGl2
YXRpb25UeXBlOwotfQotCi1pbmxpbmUgYm9vbCBKU09iamVjdDo6aXNFbnZpcm9ubWVudCgpIGNv
bnN0Ci17Ci0gICAgYm9vbCByZXN1bHQgPSBHbG9iYWxPYmplY3RUeXBlIDw9IHR5cGUoKSAmJiB0
eXBlKCkgPD0gU3RyaWN0RXZhbEFjdGl2YXRpb25UeXBlOwotICAgIEFTU0VSVCgoaXNHbG9iYWxP
YmplY3QoKSB8fCBpc0pTTGV4aWNhbEVudmlyb25tZW50KCkgfHwgaXNHbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQoKSB8fCBpc1N0cmljdEV2YWxBY3RpdmF0aW9uKCkpID09IHJlc3VsdCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQogaW5saW5lIGJvb2wgSlNPYmplY3Q6OmlzRXJyb3JJbnN0YW5j
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHR5cGUoKSA9PSBFcnJvckluc3RhbmNlVHlwZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCShyZXZpc2lvbiAy
Nzc5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDE3LDExICs0MTcsNCBAQCBTeW1ib2xUYWJsZSogSlNTY29wZTo6c3lt
Ym9sVGFibGUoVk0mIHZtCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpTVmFsdWUgSlNTY29w
ZTo6dG9UaGlzKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2Rl
IGVjbWFNb2RlKQotewotICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQotICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU2NvcGUuaAkocmV2aXNpb24gMjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHVzaW5n
IFREWkVudmlyb25tZW50ID0gSGFzaFNldDxSZWZQdHI8VW4KIGNsYXNzIEpTU2NvcGUgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmlu
YWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzVG9UaGlzOworICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgdm9pZCBz
dWJzcGFjZUZvcihWTSYpCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc2l6
ZV90IG9mZnNldE9mTmV4dCgpOwogCiAgICAgc3RhdGljIEpTT2JqZWN0KiBvYmplY3RBdFNjb3Bl
KEpTU2NvcGUqKTsKKyAgICBzdGF0aWMgSlNPYmplY3QqIHJlY2VpdmVyRm9yU2NvcGUoSlNPYmpl
Y3QqKTsKIAogICAgIHN0YXRpYyBKU09iamVjdCogcmVzb2x2ZShKU0dsb2JhbE9iamVjdCosIEpT
U2NvcGUqLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgc3RhdGljIEpTVmFsdWUgcmVzb2x2ZVNj
b3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbChKU0dsb2JhbE9iamVjdCosIEpTU2NvcGUqLCBj
b25zdCBJZGVudGlmaWVyJik7CkBAIC03OCwxMiArNzksOCBAQCBwdWJsaWM6CiAgICAgU2NvcGVD
aGFpbkl0ZXJhdG9yIGVuZCgpOwogICAgIEpTU2NvcGUqIG5leHQoKTsKIAotICAgIEpTT2JqZWN0
KiBnbG9iYWxUaGlzKCk7Ci0KICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUoVk0mKTsKIAot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIEVDTUFNb2RlKTsKLQogcHJvdGVjdGVkOgogICAgIEpTU2NvcGUoVk0mLCBT
dHJ1Y3R1cmUqLCBKU1Njb3BlKiBuZXh0KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkocmV2aXNpb24gMjc3OTUzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTAsMTMg
KzQxMCw2IEBAIEpTT2JqZWN0KiBKU1N0cmluZzo6dG9PYmplY3QoSlNHbG9iYWxPYmoKICAgICBy
ZXR1cm4gU3RyaW5nT2JqZWN0OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmpl
Y3QsIGNvbnN0X2Nhc3Q8SlNTdHJpbmcqPih0aGlzKSk7CiB9CiAKLUpTVmFsdWUgSlNTdHJpbmc6
OnRvVGhpcyhKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFN
b2RlIGVjbWFNb2RlKQotewotICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQotICAgICAgICBy
ZXR1cm4gY2VsbDsKLSAgICByZXR1cm4gU3RyaW5nT2JqZWN0OjpjcmVhdGUoZ2xvYmFsT2JqZWN0
LT52bSgpLCBnbG9iYWxPYmplY3QsIGFzU3RyaW5nKGNlbGwpKTsKLX0KLQogYm9vbCBKU1N0cmlu
Zzo6Z2V0U3RyaW5nUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDI3Nzk1MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyOTU2CiAgICAgLy8gRG8gd2UgcmVhbGx5IG5lZWQgSW50
ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybz8K
ICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Mjk1OAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2Vw
dHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBTdHJ1
Y3R1cmVJc0ltbW9ydGFsIHwgT3ZlcnJpZGVzVG9UaGlzOworICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyBB
TFdBWVNfSU5MSU5FIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCkBAIC0yMzcsOCArMjM3LDYg
QEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogCi0gICAgc3RhdGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgRUNNQU1vZGUpOwotCiAgICAgU3RyaW5nVmlldyB1bnNhZmVWaWV3KEpTR2xvYmFsT2Jq
ZWN0KikgY29uc3Q7CiAKICAgICBmcmllbmQgSlNTdHJpbmcqIGpzU3RyaW5nKFZNJiwgY29uc3Qg
U3RyaW5nJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkocmV2
aXNpb24gMjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsOCBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3Qg
ewogICAgIC8vIEVuZCBlbnZpcm9ubWVudCByZWNvcmQgdHlwZXMuCiAgICAgV2l0aFNjb3BlVHlw
ZSwKICAgICAvLyBFbmQgSlNTY29wZSB0eXBlcy4KKyAgICBGaXJzdEpTU2NvcGVUeXBlID0gR2xv
YmFsT2JqZWN0VHlwZSwKKyAgICBMYXN0SlNTY29wZVR5cGUgPSBXaXRoU2NvcGVUeXBlLAogCiAg
ICAgTW9kdWxlTmFtZXNwYWNlT2JqZWN0VHlwZSwKICAgICBSZWdFeHBPYmplY3RUeXBlLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2aXNpb24g
Mjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw2IEBAIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
TWFzcXVlcmFkZXNBc1UKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgSW1wbGVtZW50c0RlZmF1
bHRIYXNJbnN0YW5jZSA9IDEgPDwgMTsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgT3ZlcnJp
ZGVzR2V0Q2FsbERhdGEgPSAxIDw8IDI7IC8vIE5lZWQgdGhpcyBmbGFnIGlmIHlvdSBpbXBsZW1l
bnQgW1tDYWxsYWJsZV1dIGludGVyZmFjZSwgd2hpY2ggbWVhbnMgb3ZlcnJpZGluZyBnZXRDYWxs
RGF0YS4gVGhlIG9iamVjdCBtYXkgbm90IGJlIGNhbGxhYmxlIHNpbmNlIGdldENhbGxEYXRhIGNh
biBzYXkgaXQgaXMgbm90IGNhbGxhYmxlLgogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgPSAxIDw8IDM7Ci1zdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIE92ZXJyaWRlc1RvVGhpcyA9IDEgPDwgNDsgLy8gSWYgdGhpcyBpcyBmYWxzZSB0aGVuIHRo
aXMgcmV0dXJucyBzb21ldGhpbmcgb3RoZXIgdGhhbiAndGhpcycuIE5vbi1vYmplY3QgY2VsbHMg
dGhhdCBhcmUgdmlzaWJsZSB0byBKUyBoYXZlIHRoaXMgc2V0IGFzIGRvIHNvbWUgZXhvdGljIG9i
amVjdHMuCiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIEhhc1N0YXRpY1Byb3BlcnR5VGFibGUg
PSAxIDw8IDU7CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFR5cGVJbmZvUGVyQ2VsbEJpdCA9
IDEgPDwgNzsgLy8gVW5saWtlIG90aGVyIGlubGluZSBmbGFncywgdGhpcyB3aWxsIG9ubHkgYmUg
c2V0IG9uIHRoZSBjZWxsIGl0c2VsZiBhbmQgd2lsbCBub3QgYmUgc2V0IG9uIHRoZSBTdHJ1Y3R1
cmUuCiAKQEAgLTk3LDcgKzk2LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIG92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdChJbmxpbmVUeXBlRmxhZ3MgZmxhZ3MpIHsgcmV0dXJuIGZsYWdz
ICYgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OyB9CiAgICAgc3RhdGljIGJvb2wgaGFzU3Rh
dGljUHJvcGVydHlUYWJsZShJbmxpbmVUeXBlRmxhZ3MgZmxhZ3MpIHsgcmV0dXJuIGZsYWdzICYg
SGFzU3RhdGljUHJvcGVydHlUYWJsZTsgfQogICAgIHN0YXRpYyBib29sIHBlckNlbGxCaXQoSW5s
aW5lVHlwZUZsYWdzIGZsYWdzKSB7IHJldHVybiBmbGFncyAmIFR5cGVJbmZvUGVyQ2VsbEJpdDsg
fQotICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdz
MTxPdmVycmlkZXNUb1RoaXM+KCk7IH0KICAgICBib29sIHN0cnVjdHVyZUlzSW1tb3J0YWwoKSBj
b25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyPFN0cnVjdHVyZUlzSW1tb3J0YWw+KCk7IH0KICAg
ICBib29sIG92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMoKSBjb25zdCB7IHJldHVybiBpc1Nl
dE9uRmxhZ3MyPE92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXM+KCk7IH0KICAgICBib29sIG92
ZXJyaWRlc0dldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1cm4gaXNTZXRP
bkZsYWdzMjxPdmVycmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcz4oKTsgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIE9iamVjdFBy
b3RvdHlwZSogT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUKIAogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKG9iamVjdFByb3RvRnVuY1ZhbHVlT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3Qo
KSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAg
IEpTT2JqZWN0KiB2YWx1ZU9iaiA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwog
ICAgIGlmIChVTkxJS0VMWSghdmFsdWVPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFs
dWUoKTsKQEAgLTkzLDggKzkzLDcgQEAgYm9vbCBvYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0
eShKU0dsbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBi
YXNlLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7Ci0gICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBK
U09iamVjdCogdGhpc09iamVjdCA9IGJhc2UudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBF
WENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAg
IGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEz
NSw4ICsxMzQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jCiAg
ICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnN0cmljdCgpKTsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IHRoaXNWYWx1ZS50b09iamVj
dChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFz
Y29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2Jq
KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xNTksNyArMTU3LDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuYwogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxP
YmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBnZXQgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpOwpAQCAtMTg2LDcgKzE4NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmpl
Y3RQcm90b0Z1bmMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2Rl
OjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpT
VmFsdWUgc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKQEAgLTIxMyw3ICsyMTEsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jCiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwpAQCAtMjQzLDcgKzI0MSw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmMKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CkBAIC0yNzYsNyAr
Mjc0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuYwogICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGds
b2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9i
YWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwpAQCAtMjk3LDcg
KzI5NSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmMKICAgICAv
LyAyLiBJbnZva2UoViwgInRvU3RyaW5nIikKIAogICAgIC8vIExldCBPIGJlIHRoZSByZXN1bHQg
b2YgY2FsbGluZyBUb09iamVjdCBwYXNzaW5nIHRoZSB0aGlzIHZhbHVlIGFzIHRoZSBhcmd1bWVu
dC4KLSAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVj
dCogb2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAvLyBMZXQgdG9T
dHJpbmcgYmUgdGhlIE8uW1tHZXRdXSgidG9TdHJpbmciLCBWKQpAQCAtMzk2LDggKzM5NCw3IEBA
IEpTU3RyaW5nKiBvYmplY3RQcm90b3R5cGVUb1N0cmluZyhKU0dsb2IKIAogSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewotICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9k
ZTo6c3RyaWN0KCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0UHJvdG90eXBl
VG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKG9iamVjdFByb3RvdHlwZVRvU3RyaW5nKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHJldmlzaW9uIDI3Nzk1MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI0LDcgKzUyNCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihwZXJm
b3JtUHJveHlDYWwKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRz
LmFwcGVuZCh0YXJnZXQpOwotICAgIGFyZ3VtZW50cy5hcHBlbmQoY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpKTsKKyAgICBhcmd1
bWVudHMuYXBwZW5kKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGFyZ3VtZW50cy5hcHBl
bmQoYXJnQXJyYXkpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChnbG9iYWxP
YmplY3QsIGFwcGx5TWV0aG9kLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKSkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNyArMjEyLDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvRnVuYwogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlz
KGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3Qo
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcAkocmV2aXNpb24gMjc3OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQxLDkgKzg0MSw2
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja09iamVjdENvZXJjaWJsZSgKICAgICBpZiAodGhp
c1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGlmICh0aGlzVmFsdWUuaXNPYmplY3QoKSAmJiBhc09iamVjdCh0aGlzVmFsdWUpLT5pc0Vudmly
b25tZW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIHJldHVybiB0cnVlOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuaAkocmV2aXNpb24gMjc3
OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBTeW1ib2wgZmlu
YWwgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBPdmVycmlkZXNUb1RoaXM7CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3Nzk1MykKKysrIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA1LTI0ICBBbGV4
ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBBYm9s
aXNoIHVzaW5nIHJlc29sdmVkIHNjb3BlIGFzIHx0aGlzfCB2YWx1ZSB3aGVuIGNhbGxpbmcgZnVu
Y3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjUzOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
TE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46OmNhc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OklETE9wZXJhdGlvbjxKU0V2
ZW50VGFyZ2V0Pjo6Y2FsbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKwogMjAyMS0wNS0y
NCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
KHIyNTY3MTUpOiBYU0xUUHJvY2Vzc29yIGRvZXMgbm90IHBhcnNlIHNjcmlwdCB3aGVuIHRyYW5z
Zm9ybWluZyB0byBkb2N1bWVudApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01PcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTU9wZXJhdGlvbi5oCShyZXZpc2lvbiAyNzc5NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTU9wZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwyMiArMzUsMTIg
QEAgcHVibGljOgogICAgIHVzaW5nIE9wZXJhdGlvbiA9IEpTQzo6RW5jb2RlZEpTVmFsdWUoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKiwgQ2xhc3NQYXJhbWV0ZXIpOwogICAg
IHVzaW5nIFN0YXRpY09wZXJhdGlvbiA9IEpTQzo6RW5jb2RlZEpTVmFsdWUoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
YWZ0ZXIgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUgaXMgZml4ZWQgbm90IHRvIHBhc3MgcmVzb2x2
ZWQgc2NvcGUgYXMgfHRoaXN8IHZhbHVlLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcKLSAgICBzdGF0aWMgSlNDbGFzcyogY2FzdChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSYgY2FsbEZy
YW1lKQotICAgIHsKLSAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0RP
TUdsb2JhbE9iamVjdCwgSlNDbGFzcz4pCi0gICAgICAgICAgICByZXR1cm4gY2FzdFRoaXNWYWx1
ZTxKU0NsYXNzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9U
aGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVDTUFNb2RlOjpzdHJpY3QoKSkpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gY2FzdFRoaXNWYWx1ZTxKU0NsYXNzPihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwotICAgIH0KLQogICAgIHRl
bXBsYXRlPE9wZXJhdGlvbiBvcGVyYXRpb24sIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yIHNob3Vs
ZFRocm93ID0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlRocm93PgogICAgIHN0YXRpYyBKU0M6
OkVuY29kZWRKU1ZhbHVlIGNhbGwoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpDYWxsRnJhbWUmIGNhbGxGcmFtZSwgY29uc3QgY2hhciogb3BlcmF0aW9uTmFt
ZSkKICAgICB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICAKLSAgICAgICAgYXV0
byogdGhpc09iamVjdCA9IGNhc3QobGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKKyAg
ICAgICAgYXV0byogdGhpc09iamVjdCA9IGNhc3RUaGlzVmFsdWU8SlNDbGFzcz4obGV4aWNhbEds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKICAgICAgICAgaWYgY29uc3RleHBy
IChzaG91bGRUaHJvdyAhPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0KSB7CiAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgSlND
bGFzczo6aW5mbygpLT5jbGFzc05hbWUsIG9wZXJhdGlvbk5hbWUpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01PcGVyYXRpb25SZXR1cm5p
bmdQcm9taXNlLmgJKHJldmlzaW9uIDI3Nzk1MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBjYWxs
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1l
JiBjYWxsRnJhbWUsIGNvbnN0IGNoYXIqIG9wZXJhdGlvbk5hbWUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUoY2FsbFByb21pc2VGdW5jdGlvbihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUsIFsmb3BlcmF0aW9uTmFtZV0gKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lJiBjYWxsRnJhbWUsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkgewotICAgICAgICAgICAgYXV0byogdGhpc09iamVj
dCA9IElETE9wZXJhdGlvbjxKU0NsYXNzPjo6Y2FzdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUpOworICAgICAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGNhc3RUaGlzVmFsdWU8SlND
bGFzcz4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKICAgICAg
ICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgIT0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydCkgewogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3RQcm9taXNlV2l0aFRoaXNUeXBlRXJy
b3IocHJvbWlzZS5nZXQoKSwgSlNDbGFzczo6aW5mbygpLT5jbGFzc05hbWUsIG9wZXJhdGlvbk5h
bWUpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSURM
T3BlcmF0aW9uPEpTQ2xhc3M+OjpPcGVyYXRpb24gb3BlcmF0aW9uLCBDYXN0ZWRUaGlzRXJyb3JC
ZWhhdmlvciBzaG91bGRUaHJvdyA9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpSZWplY3RQcm9t
aXNlPgogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIGNhbGxSZXR1cm5pbmdPd25Qcm9t
aXNlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZy
YW1lJiBjYWxsRnJhbWUsIGNvbnN0IGNoYXIqIG9wZXJhdGlvbk5hbWUpCiAgICAgewotICAgICAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0gSURMT3BlcmF0aW9uPEpTQ2xhc3M+OjpjYXN0KGxleGljYWxH
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CisgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0
VGhpc1ZhbHVlPEpTQ2xhc3M+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZS50aGlzVmFs
dWUoKSk7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgIT0gQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydCkgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2Jq
ZWN0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0UHJvbWlzZVdpdGhUaGlzVHlwZUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ2xhc3M6OmluZm8oKS0+Y2xhc3NOYW1lLCBvcGVy
YXRpb25OYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJn
ZXRDdXN0b20uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50VGFyZ2V0Q3VzdG9tLmgJKHJldmlzaW9uIDI3Nzk1MykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyAr
NjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgICAgIGF1dG8gdGhpc1ZhbHVlID0gY2FsbEZyYW1lLnRoaXNWYWx1ZSgp
LnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpFQ01BTW9kZTo6c3RyaWN0KCkpOwor
ICAgICAgICBhdXRvIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS50aGlzVmFsdWUoKTsKICAgICAgICAg
YXV0byB0aGlzT2JqZWN0ID0ganNFdmVudFRhcmdldENhc3Qodm0sIHRoaXNWYWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpID8gSlNDOjpKU1ZhbHVlKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSA6IHRoaXNW
YWx1ZSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
ICJFdmVudFRhcmdldCIsIG9wZXJhdGlvbk5hbWUpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTUz
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMjEtMDUtMjQgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgor
CisgICAgICAgIFtKU0NdIEFib2xpc2ggdXNpbmcgcmVzb2x2ZWQgc2NvcGUgYXMgfHRoaXN8IHZh
bHVlIHdoZW4gY2FsbGluZyBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNTM5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICoganMvb2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVj
dGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL29iamVjdC1saXRl
cmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24uanM6CisKIDIwMjEtMDUtMjQgIEthdGUgQ2hlbmV5
ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgWyB3azIgXSBodHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXBvcnQtb25seS1jb25uZWN0LXNy
Yy14bWxodHRwcmVxdWVzdC1yZWRpcmVjdC10by1ibG9ja2VkLnB5IGlzIGEgY29uc3RhbnQgdGV4
dCBmYWlsdXJlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZG9tLWFjY2Vzcy1m
cm9tLWNsb3N1cmUtaWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9XaW5kb3cvZG9tLWFjY2Vzcy1mcm9tLWNsb3N1cmUtaWZyYW1lLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMjc3OTUzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2Rv
bS1hY2Nlc3MtZnJvbS1jbG9zdXJlLWlmcmFtZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiBkb2N1bWVudC5VUkw6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRv
dy9yZXNvdXJjZXMvZG9tLWFjY2Vzcy1mcm9tLWNsb3N1cmUtaWZyYW1lLWNoaWxkLmh0bWwKIHdp
bmRvdy5kb2N1bWVudC5VUkw6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9yZXNvdXJjZXMv
bm90aWZ5LXBhcmVudC1kb25lLmh0bWwKLW5hbWU6CituYW1lOiBjaGlsZAogd2luZG93Lm5hbWU6
IGNoaWxkCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9kb20tYWNjZXNzLWZy
b20tY2xvc3VyZS13aW5kb3ctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy9kb20tYWNjZXNzLWZyb20tY2xvc3VyZS13aW5kb3ctZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAyNzc5NTMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZG9t
LWFjY2Vzcy1mcm9tLWNsb3N1cmUtd2luZG93LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIGRvY3VtZW50LlVSTDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L3Jlc291cmNlcy9kb20tYWNjZXNzLWZyb20tY2xvc3VyZS13aW5kb3ctY2hpbGQuaHRtbAogd2lu
ZG93LmRvY3VtZW50LlVSTDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3Jlc291cmNlcy9u
b3RpZnktb3BlbmVyLWRvbmUuaHRtbAotbmFtZToKK25hbWU6IGNoaWxkCiB3aW5kb3cubmFtZTog
Y2hpbGQKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2RvbS1hY2Nlc3MtZnJv
bS1jbG9zdXJlLXdpbmRvdy13aXRoLWdjLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZG9tLWFjY2Vzcy1mcm9tLWNsb3N1cmUtd2luZG93LXdp
dGgtZ2MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzc5NTMpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9XaW5kb3cvZG9tLWFjY2Vzcy1mcm9tLWNsb3N1cmUtd2luZG93LXdpdGgtZ2MtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogZG9jdW1lbnQuVVJMOiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvcmVzb3VyY2VzL2RvbS1hY2Nlc3MtZnJvbS1jbG9zdXJl
LXdpbmRvdy1jaGlsZC5odG1sCiB3aW5kb3cuZG9jdW1lbnQuVVJMOiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9XaW5kb3cvcmVzb3VyY2VzL25vdGlmeS1vcGVuZXItZG9uZS5odG1sCi1uYW1lOgorbmFt
ZTogY2hpbGQKIHdpbmRvdy5uYW1lOiBjaGlsZAogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtaHRtbGVsZWxtZW50LXdpdGgtaWZyYW1lLXByb3RvLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3hzcy1ERU5JRUQtaHRtbGVsZWxtZW50LXdpdGgtaWZyYW1lLXByb3RvLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMjc3OTUzKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3Mt
REVOSUVELWh0bWxlbGVsbWVudC13aXRoLWlmcmFtZS1wcm90by1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRlc3RzIHRoYXQgbWFraW5nIG90aGVyIGZyYW1lIHdp
bmRvdyBhIHAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIF9fcHJvdG9fXyA9
IHRhcmdldFdpbmRvdyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPYmplY3QucHJvdG90eXBl
Ll9fcHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQuCitQQVNTIF9fcHJvdG9fXyA9
IHRhcmdldFdpbmRvdyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3Qgc2V0IHByb3Rv
dHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdC4KIFBBU1MgdGFyZ2V0V2luZG93Lm15
aW5wdXQgdGhyZXcgZXhjZXB0aW9uIFNlY3VyaXR5RXJyb3I6IEJsb2NrZWQgYSBmcmFtZSB3aXRo
IG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2luZyBhIGNyb3NzLW9y
aWdpbiBmcmFtZS4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4uCiBQ
QVNTOiBzdWNjZXNzZnVsbHlQYXJzZWQgc2hvdWxkIGJlICd0cnVlJyBhbmQgaXMuCiAKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1tZXRob2Qtd2l0aC1p
ZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1tZXRob2Qtd2l0aC1pZnJhbWUtcHJvdG8tZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAyNzc5NTMpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzcy1ERU5JRUQtbWV0aG9kLXdpdGgtaWZyYW1lLXByb3RvLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNyw3ICs3LDcgQEAgVGVzdHMgdGhhdCBtYWtpbmcgb3RoZXIgZnJhbWUg
d2luZG93IGEgcAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgX19wcm90b19f
ID0gdGFyZ2V0V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5
cGUuX19wcm90b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZC4KK1BBU1MgX19wcm90b19f
ID0gdGFyZ2V0V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBzZXQgcHJv
dG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0LgogUEFTUzogc3VjY2Vzc2Z1bGx5
UGFyc2VkIHNob3VsZCBiZSAndHJ1ZScgYW5kIGlzLgogCiBURVNUIENPTVBMRVRFCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtbm9uLXNoYWRvd2FibGUt
cHJvcHRlcnR5LXdpdGgtaWZyYW1lLXByb3RvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtbm9uLXNoYWRvd2FibGUt
cHJvcHRlcnR5LXdpdGgtaWZyYW1lLXByb3RvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc3OTUz
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELW5vbi1zaGFk
b3dhYmxlLXByb3B0ZXJ0eS13aXRoLWlmcmFtZS1wcm90by1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTQsNyArNCw3IEBAIFRlc3RzIHRoYXQgbWFraW5nIG90aGVyIGZyYW1lIHdpbmRv
dyBhIHAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIF9fcHJvdG9fXyA9IHRh
cmdldFdpbmRvdyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPYmplY3QucHJvdG90eXBlLl9f
cHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQuCitQQVNTIF9fcHJvdG9fXyA9IHRh
cmdldFdpbmRvdyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3Qgc2V0IHByb3RvdHlw
ZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdC4KIFBBU1M6IGxvY2F0aW9uID09PSBvcmln
aW5hbExvY2F0aW9uIHNob3VsZCBiZSAndHJ1ZScgYW5kIGlzLgogUEFTUzogdGhpcy5sb2NhdGlv
biA9PT0gb3JpZ2luYWxMb2NhdGlvbiBzaG91bGQgYmUgJ3RydWUnIGFuZCBpcy4KIFBBU1M6IHN1
Y2Nlc3NmdWxseVBhcnNlZCBzaG91bGQgYmUgJ3RydWUnIGFuZCBpcy4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1yZWd1bGFyLXByb3B0ZXJ0eS13aXRo
LWlmcmFtZS1wcm90by1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXJlZ3VsYXItcHJvcHRlcnR5LXdpdGgtaWZyYW1l
LXByb3RvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc3OTUzKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXJlZ3VsYXItcHJvcHRlcnR5LXdpdGgtaWZyYW1l
LXByb3RvLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAgT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogCiAKIFBBU1MgdGhpcy5fX3Byb3Rv
X18gPSB0YXJnZXRXaW5kb3cgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90IHNldCBw
cm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlwZSBvYmplY3QuCi1QQVNTIF9fcHJvdG9fXyA9
IHRhcmdldFdpbmRvdyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPYmplY3QucHJvdG90eXBl
Ll9fcHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQuCitQQVNTIF9fcHJvdG9fXyA9
IHRhcmdldFdpbmRvdyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3Qgc2V0IHByb3Rv
dHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdC4KIFBBU1M6IGlubmVySGVpZ2h0ID09
PSBvcmlnaW5hbElubmVySGVpZ2h0IHNob3VsZCBiZSAndHJ1ZScgYW5kIGlzLgogUEFTUzogdGhp
cy5pbm5lckhlaWdodCA9PT0gb3JpZ2luYWxJbm5lckhlaWdodCBzaG91bGQgYmUgJ3RydWUnIGFu
ZCBpcy4KIFBBU1M6IHN1Y2Nlc3NmdWxseVBhcnNlZCBzaG91bGQgYmUgJ3RydWUnIGFuZCBpcy4K
SW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9i
cm93c2Vycy93aW5kb3dzL2VtYmVkZGVkLW9wZW5lci1yZW1vdmUtZnJhbWUtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9icm93c2Vycy93aW5kb3dzL2VtYmVkZGVkLW9wZW5lci1yZW1vdmUtZnJhbWUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAyNzc5NTMpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvd2luZG93cy9lbWJlZGRlZC1vcGVuZXIt
cmVtb3ZlLWZyYW1lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAK
IAotRkFJTCBvcGVuZXIgb2YgZGlzY2FyZGVkIG5lc3RlZCBicm93c2luZyBjb250ZXh0IFRoZSBX
aW5kb3cub3BlbmVyIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXaW5k
b3cKLUZBSUwgb3BlbmVyIG9mIGRpc2NhcmRlZCBhdXhpbGlhcnkgYnJvd3NpbmcgY29udGV4dCBU
aGUgV2luZG93Lm9wZW5lciBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2Yg
V2luZG93CitQQVNTIG9wZW5lciBvZiBkaXNjYXJkZWQgbmVzdGVkIGJyb3dzaW5nIGNvbnRleHQK
K1BBU1Mgb3BlbmVyIG9mIGRpc2NhcmRlZCBhdXhpbGlhcnkgYnJvd3NpbmcgY29udGV4dAogCklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9leGVjdXRpb24tdGltaW5nLzA4
My1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVs
ZW1lbnQvZXhlY3V0aW9uLXRpbWluZy8wODMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzc5NTMp
CisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9leGVjdXRpb24tdGltaW5nLzA4
My1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw0IEBACi1DT05TT0xFIE1F
U1NBR0U6IFR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd0b3Au
bG9nJykKIEZBSUxFRCAoVGhpcyBUQyByZXF1aXJlcyBKYXZhU2NyaXB0IGVuYWJsZWQpCiAKLUhh
cm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gVHlwZUVycm9yOiBudWxsIGlzIG5vdCBhbiBv
YmplY3QgKGV2YWx1YXRpbmcgJ3RvcC5sb2cnKQotCi1GQUlMICBzY2hlZHVsZXI6IGV2ZW50IGxp
c3RlbmVyIGRlZmluZWQgYnkgc2NyaXB0IGluIGEgZG9jdW1lbnQgaW4gaGlzdG9yeSBhc3NlcnRf
YXJyYXlfZXF1YWxzOiBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgWyJpbmxpbmUgc2Ny
aXB0ICMxIiwgIklGUkFNRSBzY3JpcHQiLCAiZW5kIHNjcmlwdCAjMSIsICJldmVudDogZm9vIiwg
ImlubGluZSBzY3JpcHQgIzIiXSBsZW5ndGggNSwgZ290IFsiaW5saW5lIHNjcmlwdCAjMSIsICJJ
RlJBTUUgc2NyaXB0IiwgImVuZCBzY3JpcHQgIzEiLCAiZXZlbnQ6IGZvbyIsICJldmVudDogZm9v
IiwgImlubGluZSBzY3JpcHQgIzIiXSBsZW5ndGggNgorRkFJTCAgc2NoZWR1bGVyOiBldmVudCBs
aXN0ZW5lciBkZWZpbmVkIGJ5IHNjcmlwdCBpbiBhIGRvY3VtZW50IGluIGhpc3RvcnkgYXNzZXJ0
X2FycmF5X2VxdWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsiaW5saW5lIHNj
cmlwdCAjMSIsICJJRlJBTUUgc2NyaXB0IiwgImVuZCBzY3JpcHQgIzEiLCAiZXZlbnQ6IGZvbyIs
ICJpbmxpbmUgc2NyaXB0ICMyIl0gbGVuZ3RoIDUsIGdvdCBbImlubGluZSBzY3JpcHQgIzEiLCAi
SUZSQU1FIHNjcmlwdCIsICJlbmQgc2NyaXB0ICMxIiwgImV2ZW50OiBmb28iLCAiZXZlbnQ6IGZv
byIsICJpbmxpbmUgc2NyaXB0ICMyIiwgImV2ZW50OiBmb28iXSBsZW5ndGggNwogCkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9vYmplY3QtbGl0ZXJhbC1zaG9y
dGhhbmQtY29uc3RydWN0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc3OTUzKQorKysgTGF5
b3V0VGVzdHMvanMvb2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYzLDggKzYzLDEwIEBAIFBBU1MgISFPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKHsKIFBBU1MgISFPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKHtzZXQgNDIodmFsdWUpe319LCAnNDInKS5zZXQgaXMgdHJ1ZQogUEFTUyB0aGlzLl9f
cHJvdG9fXyA9IFtdIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBzZXQgcHJvdG90
eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0LgogUEFTUyAoe19fcHJvdG9fXzogdGhp
cy5fX3Byb3RvX199KSBpbnN0YW5jZW9mIEFycmF5IGlzIGZhbHNlCi1QQVNTIF9fcHJvdG9fXyA9
IFtdIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5cGUuX19wcm90b19f
IGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZC4KLVBBU1MgKHtfX3Byb3RvX186IF9fcHJvdG9f
X30pIGluc3RhbmNlb2YgQXJyYXkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVk
IGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ19fcHJvdG9fXycpLgorUEFTUyBfX3Byb3Rv
X18gPSBbXSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3Qgc2V0IHByb3RvdHlwZSBv
ZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdC4KK1BBU1MgKHtfX3Byb3RvX186IF9fcHJvdG9f
X30pIGluc3RhbmNlb2YgQXJyYXkgaXMgZmFsc2UKK1BBU1MgX19wcm90b19fIGlzIE9iamVjdC5n
ZXRQcm90b3R5cGVPZihnbG9iYWxUaGlzKQorUEFTUyBfX3Byb3RvX18gPSBfX3Byb3RvX18gaXMg
T2JqZWN0LmdldFByb3RvdHlwZU9mKGdsb2JhbFRoaXMpCiBTeW50YXhFcnJvcnMKIFBBU1MgKHti
cmVha30pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29y
ZCAnYnJlYWsnIGFzIGEgc2hvcnRoYW5kIHByb3BlcnR5IG5hbWUuLgogUEFTUyAoe2Nhc2V9KSB0
aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ2Nhc2Un
IGFzIGEgc2hvcnRoYW5kIHByb3BlcnR5IG5hbWUuLgpJbmRleDogTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL29iamVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24uanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL29iamVjdC1saXRlcmFsLXNob3J0
aGFuZC1jb25zdHJ1Y3Rpb24uanMJKHJldmlzaW9uIDI3Nzk1MykKKysrIExheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTIsOCArMTEyLDEyIEBAIHNob3VsZEJlVHJ1ZSgiISFPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXMKIC8vIF9fcHJvdG9fXyBzaG9ydGhhbmQgc2hvdWxkIG5vdCBtb2Rp
ZnkgdGhlIHByb3RvdHlwZS4KIHNob3VsZFRocm93KCJ0aGlzLl9fcHJvdG9fXyA9IFtdIik7CiBz
aG91bGRCZUZhbHNlKCIoe19fcHJvdG9fXzogdGhpcy5fX3Byb3RvX199KSBpbnN0YW5jZW9mIEFy
cmF5Iik7Ci1zaG91bGRUaHJvdygiX19wcm90b19fID0gW10iLCAnIlR5cGVFcnJvcjogT2JqZWN0
LnByb3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkIicpOwotc2hv
dWxkVGhyb3coIih7X19wcm90b19fOiBfX3Byb3RvX199KSBpbnN0YW5jZW9mIEFycmF5IiwgJyJU
eXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nIFwnX19wcm90
b19fXCcpIicpOworCisvLyBfX3Byb3RvX18gZ2V0dGVyIC8gc2V0dGVyIGNhbGxlZCBvbiBnbG9i
YWwgb2JqZWN0CitzaG91bGRUaHJvdygiX19wcm90b19fID0gW10iLCAnIlR5cGVFcnJvcjogQ2Fu
bm90IHNldCBwcm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlwZSBvYmplY3QiJyk7CitzaG91
bGRCZUZhbHNlKCIoe19fcHJvdG9fXzogX19wcm90b19ffSkgaW5zdGFuY2VvZiBBcnJheSIpOwor
c2hvdWxkQmUoIl9fcHJvdG9fXyIsICJPYmplY3QuZ2V0UHJvdG90eXBlT2YoZ2xvYmFsVGhpcyki
KTsKK3Nob3VsZEJlKCJfX3Byb3RvX18gPSBfX3Byb3RvX18iLCAiT2JqZWN0LmdldFByb3RvdHlw
ZU9mKGdsb2JhbFRoaXMpIik7CiAKIC8vIEtleXdvcmRzIC0gU3ludGF4IEVycm9ycwogZGVidWco
IlN5bnRheEVycm9ycyIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429630</attachid>
            <date>2021-05-24 21:42:45 -0700</date>
            <delta_ts>2021-05-27 05:07:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225397-20210525074243.patch</filename>
            <type>text/plain</type>
            <size>146789</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzc5NjQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTI0ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBBYm9saXNoIHVzaW5nIHJlc29sdmVkIHNjb3Bl
IGFzIHx0aGlzfCB2YWx1ZSB3aGVuIGNhbGxpbmcgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9iaWctaW50LXNwZWMtdG8t
dGhpcy5qczoKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1zdHJpY3Qtc3BlYy10by10aGlzLmpz
OgorICAgICAgICAqIHN0cmVzcy92YXJpYWJsZS1uYW1lZC1ldmFsLmpzOiBBZGRlZC4KKwogMjAy
MS0wNS0yMiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAg
ICAgU3VwcG9ydCBFcmdvbm9taWMgQnJhbmQgQ2hlY2tzIHByb3Bvc2FsIChgI3ggaW4gb2JqYCkK
SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2JpZy1pbnQtc3BlYy10by10aGlzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEpTVGVzdHMvc3RyZXNzL2JpZy1pbnQtc3BlYy10by10aGlzLmpzCShyZXZpc2lvbiAyNzc5
NDgpCisrKyBKU1Rlc3RzL3N0cmVzcy9iaWctaW50LXNwZWMtdG8tdGhpcy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDMgQEAKLS8vQCBza2lwIGlmIG5vdCAkaml0VGVzdHMKLS8vQCBydW5E
ZWZhdWx0KCItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFsc2UiKQotCiBmdW5jdGlvbiBhc3NlcnQoYSkg
ewogICAgIGlmICghYSkKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7
CkBAIC0xOCw2ICsxNSwzIEBAIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CiAgICAgYXNzZXJ0KGZvby5hcHBseSgzMDAp
ID09PSAib2JqZWN0Iik7CiB9Ci0KLWFzc2VydChudW1iZXJPZkRGR0NvbXBpbGVzKGZvbykgPT09
IDEpOwotCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9iaWctaW50LXN0cmljdC1zcGVjLXRvLXRoaXMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvYmlnLWludC1zdHJpY3Qtc3BlYy10by10
aGlzLmpzCShyZXZpc2lvbiAyNzc5NDgpCisrKyBKU1Rlc3RzL3N0cmVzcy9iaWctaW50LXN0cmlj
dC1zcGVjLXRvLXRoaXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSwzIEBACi0vL0AgcnVu
RGVmYXVsdCgiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIikKLQogZnVuY3Rpb24gYXNzZXJ0KGEp
IHsKICAgICBpZiAoIWEpCiAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIp
OwpAQCAtMTgsNiArMTYsMyBAQCBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogICAgIGFzc2VydChmb28uYXBwbHkoMzAw
KSA9PT0gIm51bWJlciIpOwogfQotCi1hc3NlcnQobnVtYmVyT2ZERkdDb21waWxlcyhmb28pID4g
MSk7Ci0KSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2dsb2JhbC1vYmplY3QtYWNjZXNzb3ItcHJvcGVy
dHktdGhpcy12YWx1ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9nbG9iYWwtb2Jq
ZWN0LWFjY2Vzc29yLXByb3BlcnR5LXRoaXMtdmFsdWUuanMJKG5vbmV4aXN0ZW50KQorKysgSlNU
ZXN0cy9zdHJlc3MvZ2xvYmFsLW9iamVjdC1hY2Nlc3Nvci1wcm9wZXJ0eS10aGlzLXZhbHVlLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBCYWQgdmFsdWU6ICR7YWN0dWFsfS5gKTsKK30KKwordmFyIF9fZm9vX18g
PSAtMTsKKyhmdW5jdGlvbiBzYW1lUmVhbG0oKSB7CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5
KGdsb2JhbFRoaXMsICJmb28iLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKHRoaXMsIGdsb2JhbFRoaXMpOworICAgICAgICAgICAgcmV0dXJuIF9fZm9vX187CisgICAg
ICAgIH0sCisgICAgICAgIHNldCh2YWx1ZSkgeworICAgICAgICAgICAgc2hvdWxkQmUodGhpcywg
Z2xvYmFsVGhpcyk7CisgICAgICAgICAgICBfX2Zvb19fID0gdmFsdWU7CisgICAgICAgIH0sCisg
ICAgfSk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNjsgaSsrKSB7CisgICAgICAgIHNo
b3VsZEJlKGZvbywgaSAtIDEpOworICAgICAgICBmb28gPSBpOworICAgICAgICBzaG91bGRCZShm
b28sIGkpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBjcm9zc1JlYWxtKCkgeworICAgIGNv
bnN0IE90aGVyRnVuY3Rpb24gPSAkdm0uY3JlYXRlR2xvYmFsT2JqZWN0KCkuRnVuY3Rpb247CisK
KyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2xvYmFsVGhpcywgImJhciIsIHsKKyAgICAgICAg
Z2V0OiBuZXcgT3RoZXJGdW5jdGlvbigicmV0dXJuIHRoaXM7IiksCisgICAgICAgIHNldDogbmV3
IE90aGVyRnVuY3Rpb24oInZhbHVlIiwgInZhbHVlLnRoaXNWYWx1ZSA9IHRoaXM7IiksCisgICAg
fSk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNjsgaSsrKSB7CisgICAgICAgIHNob3Vs
ZEJlKGJhciwgZ2xvYmFsVGhpcyk7CisKKyAgICAgICAgbGV0IHZhbHVlID0ge307CisgICAgICAg
IGJhciA9IHZhbHVlOworICAgICAgICBzaG91bGRCZSh2YWx1ZS50aGlzVmFsdWUsIGdsb2JhbFRo
aXMpOworICAgIH0KK30pKCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy92YXJpYWJsZS1uYW1lZC1l
dmFsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3ZhcmlhYmxlLW5hbWVkLWV2YWwu
anMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvdmFyaWFibGUtbmFtZWQtZXZhbC5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgQmFkIHZhbHVlOiAke2FjdHVhbH0uYCk7Cit9CisKK2xldCBldmFsOwor
CisoZnVuY3Rpb24gdGhpc1ZhbHVlKCkgeworICAgIGV2YWwgPSBmdW5jdGlvbigpIHsgcmV0dXJu
IHRoaXM7IH07CisgICAgc2hvdWxkQmUoZXZhbCgpLCBnbG9iYWxUaGlzKTsKKworICAgIGV2YWwg
PSBmdW5jdGlvbigpIHsgInVzZSBzdHJpY3QiOyByZXR1cm4gdGhpczsgfTsKKyAgICBzaG91bGRC
ZShldmFsKCksIHVuZGVmaW5lZCk7CisKKyAgICBjb25zdCBiaW5kaW5nT2JqZWN0ID0geyBldmFs
IH07CisgICAgd2l0aCAoYmluZGluZ09iamVjdCkgeworICAgICAgICBzaG91bGRCZShldmFsKCks
IGJpbmRpbmdPYmplY3QpOworICAgIH0KK30pKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNDEgQEAKKzIwMjEtMDUtMjQgIEFsZXhleSBTaHZh
eWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIEFib2xpc2ggdXNp
bmcgcmVzb2x2ZWQgc2NvcGUgYXMgfHRoaXN8IHZhbHVlIHdoZW4gY2FsbGluZyBmdW5jdGlvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTM5Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0FQ
SUNhbGxiYWNrRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6QVBJQ2FsbGJhY2tGdW5jdGlvbjo6
Y2FsbEltcGwpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbEltcGwpOgorICAgICAg
ICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgorICAgICAgICAoSlNDb250ZXh0R2V0R2xvYmFsT2Jq
ZWN0KToKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1RvVGhp
c1N0YXR1cy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmg6
IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRGdW5jdGlvbkZyb21TY29w
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpoYXNQYXJlbnRXaXRoU2NvcGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRvVGhpcyk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlRhZ2dlZFRlbXBsYXRl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoK
KyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OnRoaXNWYWx1ZSBjb25zdCk6CisgICAg
ICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKToKKyAgICAgICAgKEpTQzo6REZHOjppc1RvVGhpc0FuSWRlbnRpdHkpOiBEZWxldGVkLgor
ICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRp
ZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICog
ZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAg
ICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcv
REZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRm
Zy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1
cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwVG9UaGlzKToKKyAg
ICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNFQ01B
TW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZWNtYU1vZGUpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0VGhpc1ZhbHVlRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVUb1RoaXMpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpj
YW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9UaGlzKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFRoaXNWYWx1ZUZvckNhbGwpOgorICAg
ICAgICAqIGdlbmVyYXRvci9EU0wucmI6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6
OmludGVybmFsQ29uc3RydWN0b3JOYW1lKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklU
Lmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X3RoaXNfdmFsdWVfZm9yX2NhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfdG9fdGhpcyk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF90b190aGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206
CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6OmNyZWF0ZUFycmF5SXRlcmF0
b3JPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NPTU1P
Tl9TTE9XX1BBVEgpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAg
IChKU0M6OnRvR2xvYmFsVGhpcyk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAg
KiBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNCaWdJbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1Nsb3BweU1vZGVUaGlzIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UaGlzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9UaGlzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2spOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6dG9UaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6dG9U
aGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OnRvVGhpcyk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgIChKU0M6
OlR5cGVJbmZvOjpwZXJDZWxsQml0KToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86Om92ZXJyaWRl
c1RvVGhpcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAoSlNDOjpvYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGlt
ZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tik6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sLmg6
CisKIDIwMjEtMDUtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBNYWtlIENoZWNrZWRMb2NrIHRoZSBkZWZhdWx0IExvY2sKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTgzLDcgKzU4Myw2IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUEKICAgICBieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5oCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKICAgICBieXRlY29kZS9T
dXBlclNhbXBsZXIuaAotICAgIGJ5dGVjb2RlL1RvVGhpc1N0YXR1cy5oCiAgICAgYnl0ZWNvZGUv
VHlwZUxvY2F0aW9uLmgKICAgICBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCiAgICAgYnl0
ZWNvZGUvVW5saW5rZWRFdmFsQ29kZUJsb2NrLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQJKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw2IEBAIGJ5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQKIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAog
Ynl0ZWNvZGUvU3R1YkluZm9TdW1tYXJ5LmNwcAogYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAot
Ynl0ZWNvZGUvVG9UaGlzU3RhdHVzLmNwcAogYnl0ZWNvZGUvVHJhY2tlZFJlZmVyZW5jZXMuY3Bw
CiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrR2VuZXJhdG9yLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYWxs
YmFja0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9B
UElDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3
ICs0Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEFQSUNhbGxiYWNrRnVuY3Rpb246OmNhbGwKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNDb250ZXh0UmVmIGV4
ZWNSZWYgPSB0b1JlZihnbG9iYWxPYmplY3QpOwogICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVm
ID0gdG9SZWYoY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKLSAgICBKU09iamVjdFJlZiB0aGlzT2Jq
UmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKSk7CisgICAgSlNPYmplY3RSZWYg
dGhpc09ialJlZiA9IHRvUmVmKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9TbG9wcHlNb2RlVGhp
cyhnbG9iYWxPYmplY3QpKTsKIAogICAgIGludCBhcmd1bWVudENvdW50ID0gc3RhdGljX2Nhc3Q8
aW50PihjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgVmVjdG9yPEpTVmFsdWVSZWYs
IDE2PiBhcmd1bWVudHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkocmV2aXNpb24gMjc3OTQ4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU0Nyw3ICs1NDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46CiAKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGdsb2JhbE9i
amVjdCk7CiAgICAgSlNPYmplY3RSZWYgZnVuY3Rpb25SZWYgPSB0b1JlZihjYWxsRnJhbWUtPmpz
Q2FsbGVlKCkpOwotICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNP
YmplY3QqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFN
b2RlOjpzbG9wcHkoKSkpKTsKKyAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKS50b1Nsb3BweU1vZGVUaGlzKGdsb2JhbE9iamVjdCkpOwogICAg
IAogICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pio+KHRvSlMoZnVuY3Rpb25SZWYpKS0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFz
cyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlmIChKU09iamVjdENhbGxBc0Z1
bmN0aW9uQ2FsbGJhY2sgY2FsbEFzRnVuY3Rpb24gPSBqc0NsYXNzLT5jYWxsQXNGdW5jdGlvbikg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAkocmV2
aXNpb24gMjc3OTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNyArMTkxLDcgQEAgSlNPYmplY3RSZWYgSlNDb250
ZXh0R2V0R2xvYmFsT2JqZWN0KEpTQwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIHJldHVybiB0b1JlZihqc0Nhc3Q8
SlNPYmplY3QqPihnbG9iYWxPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKSk7CisgICAgcmV0dXJuIHRv
UmVmKGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpKTsKIH0KIAogSlNDb250ZXh0R3JvdXBSZWYg
SlNDb250ZXh0R2V0R3JvdXAoSlNDb250ZXh0UmVmIGN0eCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNzc5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjY1LDcgKzI2NSw2IEBACiAJCTBGMkM2M0MyMUU2NjRBNUMwMEMxMzgzOSAvKiBCM05hdGl2
ZVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYyQzYzQzExRTY2NEE1QTAwQzEzODM5IC8qIEIzTmF0aXZlVHJhaXRzLmggKi87IH07CiAJCTBG
MkM2M0M0MUU2OUVGOTQwMEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzYzQzMxRTY5RUY5MjAw
QzEzODM5IC8qIEIzTWVtb3J5VmFsdWVJbmxpbmVzLmggKi87IH07CiAJCTBGMkQ0RERFMTk4MzJE
MzQwMDdENEIxOSAvKiBEZWJ1Z2dlclNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENEREQzE5ODMyRDM0MDA3RDRCMTkgLyogRGVidWdnZXJT
Y29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTBGMkQ0REU5MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0dXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0REU2MTk4MzJEQUMwMDdENEIx
OSAvKiBUb1RoaXNTdGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjJENERFQTE5ODMyREFDMDA3RDRCMTkgLyogVHlwZUxvY2F0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNzE5
ODMyREFDMDA3RDRCMTkgLyogVHlwZUxvY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyRDRERUMxOTgzMkRDNDAwN0Q0QjE5IC8qIFR5
cGVQcm9maWxlckxvZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyRDRERTAxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkQ0REYwMTk4
MzJERDYwMDdENEIxOSAvKiBUeXBlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNDE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVNldC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNTI0LDgg
KzI1MjMsNiBAQAogCQkwRjJENERFMDE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVQcm9maWxlckxvZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjJENERFMzE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVNldC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUeXBlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYyRDRERTQxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlw
ZVNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjJENERFNTE5ODMyREFDMDA3
RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRvVGhpc1N0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBG
MkQ0REU2MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVG9UaGlzU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMkQ0REU3MTk4MzJEQUMwMDdENEIxOSAvKiBUeXBlTG9jYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMkREODBDMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNF
bGltaW5hdGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0FyZ3VtZW50
c0VsaW1pbmF0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJE
RDgwRDFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBcmd1bWVudHNFbGltaW5hdGlvblBo
YXNlLmg7IHBhdGggPSBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtODY2OSw4ICs4NjY2LDYgQEAKIAkJCQkwRjRBMzhGNzFD
OEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmNwcCAqLywKIAkJCQkwRjRBMzhGODFDOEUx
M0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmggKi8sCiAJCQkJMEY0NEE3QTgyMEJGNjg1RTAw
MjJCMTcxIC8qIFRlcm1pbmF0ZWRDb2RlT3JpZ2luLmggKi8sCi0JCQkJMEYyRDRERTUxOTgzMkRB
QzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8sCi0JCQkJMEYyRDRERTYxOTgzMkRBQzAw
N0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5oICovLAogCQkJCTBGOTUyQUJBMUI0ODdBNzcwMEMzNjdD
NSAvKiBUcmFja2VkUmVmZXJlbmNlcy5jcHAgKi8sCiAJCQkJMEY5NTJBQkIxQjQ4N0E3NzAwQzM2
N0M1IC8qIFRyYWNrZWRSZWZlcmVuY2VzLmggKi8sCiAJCQkJMEYyRDRERTcxOTgzMkRBQzAwN0Q0
QjE5IC8qIFR5cGVMb2NhdGlvbi5oICovLApAQCAtOTQ1OCw3ICs5NDUzLDYgQEAKIAkJCQlCQzE4
QzQ1RTBFMTZGNUNEMDBCMzQ0NjAgLyogQ0xvb3BTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTdDMUVBRjAxNzk4N0FCNjAwMjk5REIyIC8qIENMb29wU3RhY2tJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5NjlBMDc5NzBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJsb2NrLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlGRUY1QjQyOTI2MjhCNTI0MDAxNkU3NzYgLyogSlNTZXRJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjhGOTQ0MTE2Njc2MzMyMDBENjE5NzEgLyogQ29kZUJsb2Nr
SGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDOTdGMzQxODIwMjBENzAwMkM5QjI2IC8qIENv
ZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEz
MTQxN0Q0MzI2QzAwQ0EyQzQwIC8qIENvZGVCbG9ja1NldC5oIGluIEhlYWRlcnMgKi8sCkBAIC05
NjU3LDcgKzk2NTEsNiBAQAogCQkJCTBGRDgyRTU3MTQxREFGMTAwMDE3OUM5NCAvKiBERkdPU1JF
bnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMjYxN0Q1MUY1NzAwQ0EyQzQwIC8qIERG
R09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc2
QTE0NjhBNkY3MDBDRjI0NDIgLyogREZHT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkVG
NUI0MjcyNjI4QUJEOTAwMTZFNzc2IC8qIEpTV2Vha01hcElubGluZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0QmFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQwMkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21w
aWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMw
RSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLApAQCAtOTc1Miw2
ICs5NzQ1LDcgQEAKIAkJCQkxNDczNDFEMjFEQzAyRTJFMDBBQTI5QkEgLyogRXZhbEV4ZWN1dGFi
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMUMwRkZEMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNl
cHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNjAyOUQ5MUQ2RTFFNEYwMDMwMjA0RCAvKiBF
eGNlcHRpb25FdmVudExvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUY1QjQzMDI2MkEz
MzhCMDAxNkU3NzYgLyogRXhjZXB0aW9uRXhwZWN0YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMTJERTEwMTk3OUQ1RkQwMDA2RkY0RSAvKiBFeGNlcHRpb25GdXp6LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzE4QzQwMDBFMTZGNUNEMDBCMzQ0NjAgLyogRXhjZXB0aW9uSGVscGVycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkU2NDkxMzcxRDc4RjAxRDAwQTY5NEQ0IC8qIEV4Y2VwdGlvblNj
b3BlLmggaW4gSGVhZGVycyAqLywKQEAgLTk3ODgsNyArOTc4Miw2IEBACiAJCQkJMEZFQTBBMEMx
NzA1MTNEQjAwQkI3MjJDIC8qIEZUTENvbXBpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUQ0
QzBEMUMzRTFDMTEwMDZDRDk4NCAvKiBGVExFeGNlcHRpb25UYXJnZXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMjM1QkQ0MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnQuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUZFRjVCNDIzMjYyOEEwRUUwMDE2RTc3NiAvKiBIYXNoTWFwSW1wbElu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkQ2MTcxNzhFMUMwMDY5MEM3RiAvKiBG
VExFeGl0QXJndW1lbnRGb3JPcGVyYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNGNTE5
RDBCQUMxMDBCMUQxQjUgLyogRlRMRXhpdFByb3BlcnR5VmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMkI5Q0Y3MTlEMEJBQzEwMEIxRDFCNSAvKiBGVExFeGl0VGltZU9iamVjdE1hdGVyaWFs
aXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC05ODMyLDcgKzk4MjUsNiBAQAogCQkJCTJBODM2
MzhBMThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MkVFRDc5NDI0OTJCODcwMDA4RjRDOTMgLyogRnVuY3Rpb25BbGxvd2xpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0QUQ5MTBEMURDQTkyOTQwMDE0RjlGRSAvKiBGdW5jdGlv
bkNvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkVGNUI0MkMyNjI4Q0JDODAwMTZFNzc2
IC8qIFZNVHJhcHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQwNDBFMTZGNUNE
MDBCMzQ0NjAgLyogRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3
MzQxRDgxREMwMkY5OTAwQUEyOUJBIC8qIEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGMEYxQTAxNkI3MkExQTAwNURGOTVCIC8qIEZ1bmN0aW9uRXhlY3V0YWJsZUR1
bXAuaCBpbiBIZWFkZXJzICovLApAQCAtOTkxMSw2ICs5OTAzLDcgQEAKIAkJCQkxNDJFMzEzNjEz
NEZGMEE2MDBBRkFEQjUgLyogSGFuZGxlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc4Mjk3
QjEzNzlFOEE4MDBBN0MyQTMgLyogSGFuZGxlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5
QTA5MDgwMUQ3Njg0NjUwMDhCODg5QiAvKiBIYXNoTWFwSW1wbC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRkVGNUI0MjMyNjI4QTBFRTAwMTZFNzc2IC8qIEhhc2hNYXBJbXBsSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzlERkNCREIxRDg4QzU5NjAwNTI3RDAzIC8qIEhhc093blByb3BlcnR5
Q2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QkE3QTk4MTNBQURGRjgwMDVCN0MyQyAvKiBI
ZWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MTc3QTFEQzIyRjk1OEQ1MDBCMzRDQTIgLyogSGVh
cEFuYWx5emVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMTg0LDYgKzEwMTc3LDcgQEAKIAkJCQlD
MjVENzA5QzE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJBNEJCN0YzMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzAwODc0MjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAu
aCBpbiBIZWFkZXJzICovLAorCQkJCUZFRjVCNDI1MjYyOEE4NTAwMDE2RTc3NiAvKiBKU01hcElu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NERFRjk2MTgyRDk5MTQwMDUyMkMyMiAvKiBK
U01hcEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCMjg2RDFFQjhFNkQ1MDAwRUI1
RDIgLyogSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcw
MTNDQThDMUI0OTFBOTQwMENBRTYxMyAvKiBKU01pY3JvdGFzay5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMDIxOSw2ICsxMDIxMyw3IEBACiAJCQkJMTREMDFBNzcyMUZCMzUxRjAwQkM1NEU5IC8qIEpT
U2NyaXB0U291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDExMTU3RjMz
MkMwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzI5OUQ5RTE3RDEyODM3MDA1RjVGRjkgLyogSlNTZXQuaCBpbiBIZWFkZXJzICovLAor
CQkJCUZFRjVCNDI5MjYyOEI1MjQwMDE2RTc3NiAvKiBKU1NldElubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3OTBERDcwMTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCREZDQjJCQkU5MEY0MTM0OUUxQjBCRUQgLyogSlNTb3VyY2VDb2Rl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyNzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNTdHJp
bmcuaCBpbiBIZWFkZXJzICovLApAQCAtMTAyNDcsMTIgKzEwMjQyLDEyIEBACiAJCQkJODZFM0M2
MTIxNjdCQUJENzAwNkQ3NjBBIC8qIEpTVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTND
NjFCMTY3QkFCRUUwMDZENzYwQSAvKiBKU1ZhbHVlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUzRTFGOEY4MjE1NDcxNUEwMDAxRERCQyAvKiBKU1ZhbHVlUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJRkU4QzAzMTIyNjRBNjkxMTAwMUE0NEFEIC8qIFNsb3dQYXRoRnVuY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDJDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1ZhbHVl
UmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkUzQzYxNTE2N0JBQkQ3MDA2RDc2MEEgLyogSlNW
aXJ0dWFsTWFjaGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFM0M2MUQxNjdCQUJFRTAwNkQ3
NjBBIC8qIEpTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzk1
QUM2MTgyMEEyMzU1RTAwNTJDNzZDIC8qIEpTVmlydHVhbE1hY2hpbmVQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBN0NBM0FFODE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggaW4g
SGVhZGVycyAqLywKKwkJCQlGRUY1QjQyNzI2MjhBQkQ5MDAxNkU3NzYgLyogSlNXZWFrTWFwSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0ODJFOTMxMTZBN0NBRDAwM0IwNzEyIC8qIEpT
V2Vha09iamVjdE1hcFJlZkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQ4MkI5MzEx
NjcxMTQ3MDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTM5QkZCQjAyMkFEM0NEQzAwMjNGNEMwIC8qIEpTV2Vha09iamVjdFJlZi5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMDUzMSw2ICsxMDUyNiw3IEBACiAJCQkJQzIxNjBGRTcxNUY3RTk1
RTAwOTQyREZDIC8qIFNsb3RWaXNpdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUw
NDE1NTMyNTJFQzA3MzAwOTFFQjVEIC8qIFNsb3RWaXNpdG9yTWFjcm9zLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNzA5RjJGMDE3QTBBQzA0MDA1MTJFOTggLyogU2xvd1BhdGhDYWxsLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGRThDMDMxMjI2NEE2OTExMDAxQTQ0QUQgLyogU2xvd1BhdGhGdW5jdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QjRBMzMxQzg0RjBENjAwRjFCMTdFIC8qIFNsb3dQ
YXRoUmV0dXJuVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDQwMDQwRTZBNzQ5NDAwNzg2
RTZBIC8qIFNtYWxsU3RyaW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNGMjNBODIxRUNGMTNG
RTAwOTc4RDk5IC8qIFNuaXBwZXQuaCBpbiBIZWFkZXJzICovLApAQCAtMTA1NjgsNyArMTA1NjQs
NiBAQAogCQkJCUJDREUzQUI4MEU2QzgyRjUwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTc5ODY5NDNCMUY4QzBBQ0MwMDkyMzJBRSAvKiBTdHJ1Y3R1cmVDYWNoZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0U0RUU3MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVy
ZUNoYWluLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRUY1QjQyNTI2MjhBODUwMDAxNkU3NzYgLyog
SlNNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFBQTMxMjE4QkQ0OUQxMDAzOTRD
QzggLyogU3RydWN0dXJlSURCbG9iLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUY3MzgyRDE4QkJC
RjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZE
MkM5MjQxNkQwMUVFOTAwQzc4MDNGIC8qIFN0cnVjdHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtMTA2MDcsNyArMTA2MDIsNiBAQAogCQkJCUE3Mzg2NTU2MTE4Njk3QjQwMDU0MDI3OSAv
KiBUaHVua0dlbmVyYXRvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTQ0OENEMTNBMTc4Mzcw
MEY1QkExQSAvKiBUaW55Qmxvb21GaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTU5ODk4
MTdDODZDNTgwMEExRTU0MyAvKiBUb05hdGl2ZUZyb21WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMEYyRDRERTkxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY5NTJBQkQxQjQ4N0E3NzAwQzM2N0M1IC8qIFRyYWNrZWRSZWZlcmVuY2VzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjcwNjE3QjZCNUFCMDBBN0FFM0YgLyogVHlwZWRBcnJh
eUFkYXB0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjcwODE3QjZCNUFCMDBBN0FFM0Yg
LyogVHlwZWRBcnJheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTA2NjEsNiArMTA2
NTUsNyBAQAogCQkJCUZFMzAyMkQ3MUU0Mjg1NzMwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkVDNTc5NzMyMzEwNUI1MTAwQkNBODNGIC8qIFZNSW5zcGVjdG9y
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU2RjU2REUxRTY0RUFENjAwRDE3ODAxIC8q
IFZNVHJhcHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFRjVCNDJDMjYyOENCQzgwMDE2RTc3NiAv
KiBWTVRyYXBzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI4NDdBREMyMUZGQjg2OTAw
NjFBOURCIC8qIFdhc21BaXJJUkdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNGNDBF
OTMxRDVBNEFCMzAwOTlBMUI2IC8qIFdhc21CM0lSR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1M0NBNzMwQTFFQTUzM0Q4MDA3NjA0OUQgLyogV2FzbUJCUVBsYW4uaCBpbiBIZWFkZXJz
ICovLApAQCAtMTA3NTMsNyArMTA3NDgsNiBAQAogCQkJCUFERTgwMjlBMUUwOEYxREUwMDU4REU3
OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBREU4MDI5QzFFMDhGMURFMDA1OERFNzggLyogV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQkY1MURCNThEQUQwMEIzRTczNiAvKiBXZWJB
c3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRUY1QjQzMDI2
MkEzMzhCMDAxNkU3NzYgLyogRXhjZXB0aW9uRXhwZWN0YXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCUFEMkZDQzFBMURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVj
dG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRjcxREI1OERBRDAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0Mx
QjFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUubHV0LmggaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgkocmV2aXNpb24gMjc3OTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNiBA
QCB0eXBlcyBbCiAgICAgOlN0cnVjdHVyZUNoYWluLAogICAgIDpTeW1ib2xUYWJsZSwKICAgICA6
U3ltYm9sVGFibGVPclNjb3BlRGVwdGgsCi0gICAgOlRvVGhpc1N0YXR1cywKICAgICA6VHlwZUxv
Y2F0aW9uLAogICAgIDpXYXNtQm91bmRMYWJlbCwKICAgICA6V2F0Y2hwb2ludFNldCwKQEAgLTE3
NywxMSArMTc2LDggQEAgb3AgOmFyZ3VtZW50X2NvdW50LAogb3AgOnRvX3RoaXMsCiAgICAgYXJn
czogewogICAgICAgICBzcmNEc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgZWNtYU1vZGU6
IEVDTUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgY2FjaGVkU3RydWN0
dXJlSUQ6IFN0cnVjdHVyZUlELAotICAgICAgICB0b1RoaXNTdGF0dXM6IFRvVGhpc1N0YXR1cywK
ICAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0KIApAQCAtMTAzNCw2ICsxMDMw
LDEyIEBAIG9wIDpnZXRfZnJvbV9zY29wZSwKICAgICAgICAgb3BlcmFuZDogOm9mZnNldCwKICAg
ICB9CiAKK29wIDpnZXRfdGhpc192YWx1ZV9mb3JfY2FsbCwKKyAgICBhcmdzOiB7CisgICAgICAg
IGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBzY29wZTogVmlydHVhbFJlZ2lzdGVyLAor
ICAgIH0KKwogb3AgOnB1dF90b19zY29wZSwKICAgICBhcmdzOiB7CiAgICAgICAgIHNjb3BlOiBW
aXJ0dWFsUmVnaXN0ZXIsICMgb2Zmc2V0IDEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAkocmV2aXNpb24gMjc3OTQ4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTczLDYgKzE3Myw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUlu
ZGV4SW1wbChWaXIKICAgICBVU0VTKE9wUmVzb2x2ZVNjb3BlLCBzY29wZSkKICAgICBVU0VTKE9w
UmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbCwgc2NvcGUpCiAgICAgVVNFUyhP
cEdldEZyb21TY29wZSwgc2NvcGUpCisgICAgVVNFUyhPcEdldFRoaXNWYWx1ZUZvckNhbGwsIHNj
b3BlKQogICAgIFVTRVMoT3BUb1ByaW1pdGl2ZSwgc3JjKQogICAgIFVTRVMoT3BUb1Byb3BlcnR5
S2V5LCBzcmMpCiAgICAgVVNFUyhPcFRyeUdldEJ5SWQsIGJhc2UpCkBAIC00ODAsNiArNDgxLDcg
QEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVucwogCiAgICAgREVGUyhP
cFRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cywgZHN0KQogICAgIERFRlMoT3BHZXRGcm9tU2NvcGUs
IGRzdCkKKyAgICBERUZTKE9wR2V0VGhpc1ZhbHVlRm9yQ2FsbCwgZHN0KQogICAgIERFRlMoT3BD
YWxsLCBkc3QpCiAgICAgREVGUyhPcFRhaWxDYWxsLCBkc3QpCiAgICAgREVGUyhPcENhbGxFdmFs
LCBkc3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkocmV2aXNpb24gMjc3OTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MDEsMTcgKzE0MDEsNiBAQCB2b2lk
IENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlCiAgICAgICAgICAgICBtZXRhZGF0
YS5tX2JyYW5kLmNsZWFyKCk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIG1fbWV0YWRhdGEtPmZv
ckVhY2g8T3BUb1RoaXM+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGlmICgh
bWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAu
c3RydWN0dXJlSURUYWJsZSgpLmdldChtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEKSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VP
U1IoKSkgewotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uaGVhcC5z
dHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQpOwotICAg
ICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTEludCB0b190aGlzIHdpdGggc3RydWN0
dXJlICVwLlxuIiwgc3RydWN0dXJlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1ldGFk
YXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgPSAwOwotICAgICAgICAgICAgbWV0YWRhdGEubV90b1Ro
aXNTdGF0dXMgPSBtZXJnZShtZXRhZGF0YS5tX3RvVGhpc1N0YXR1cywgVG9UaGlzQ2xlYXJlZEJ5
R0MpOwotICAgICAgICB9KTsKLQogICAgICAgICBhdXRvIGhhbmRsZUNyZWF0ZUJ5dGVjb2RlID0g
WyZdIChhdXRvJiBtZXRhZGF0YSwgQVNDSUlMaXRlcmFsIG5hbWUpIHsKICAgICAgICAgICAgIGF1
dG8mIGNhY2hlV3JpdGVCYXJyaWVyID0gbWV0YWRhdGEubV9jYWNoZWRDYWxsZWU7CiAgICAgICAg
ICAgICBpZiAoIWNhY2hlV3JpdGVCYXJyaWVyIHx8IGNhY2hlV3JpdGVCYXJyaWVyLnVudmFsaWRh
dGVkR2V0KCkgPT0gSlNDZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmNwcAkocmV2
aXNpb24gMjc3OTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1RvVGhpc1N0
YXR1cy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJUb1RoaXNTdGF0dXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLVRvVGhpc1N0YXR1cyBt
ZXJnZShUb1RoaXNTdGF0dXMgYSwgVG9UaGlzU3RhdHVzIGIpCi17Ci0gICAgc3dpdGNoIChhKSB7
Ci0gICAgY2FzZSBUb1RoaXNPSzoKLSAgICAgICAgcmV0dXJuIGI7Ci0gICAgY2FzZSBUb1RoaXND
b25mbGljdGVkOgotICAgICAgICByZXR1cm4gVG9UaGlzQ29uZmxpY3RlZDsKLSAgICBjYXNlIFRv
VGhpc0NsZWFyZWRCeUdDOgotICAgICAgICBpZiAoYiA9PSBUb1RoaXNDb25mbGljdGVkKQotICAg
ICAgICAgICAgcmV0dXJuIFRvVGhpc0NvbmZsaWN0ZWQ7Ci0gICAgICAgIHJldHVybiBUb1RoaXND
bGVhcmVkQnlHQzsKLSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gVG9UaGlzQ29uZmxpY3RlZDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlND
Ci0KLW5hbWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi12b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVG9UaGlzU3RhdHVzIHN0YXR1cykKLXsKLSAgICBz
d2l0Y2ggKHN0YXR1cykgewotICAgIGNhc2UgVG9UaGlzT0s6Ci0gICAgICAgIG91dC5wcmludCgi
T0siKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgVG9UaGlzQ29uZmxpY3RlZDoKLSAgICAg
ICAgb3V0LnByaW50KCJDb25mbGljdGVkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFRv
VGhpc0NsZWFyZWRCeUdDOgotICAgICAgICBvdXQucHJpbnQoIkNsZWFyZWRCeUdDIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Ub1RoaXNTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmgJKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Ub1RoaXNTdGF0dXMuaAkobm9uZXhpc3RlbnQpCkBA
IC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KLQotbmFt
ZXNwYWNlIEpTQyB7Ci0KLWVudW0gVG9UaGlzU3RhdHVzIHsKLSAgICBUb1RoaXNPSywKLSAgICBU
b1RoaXNDb25mbGljdGVkLAotICAgIFRvVGhpc0NsZWFyZWRCeUdDCi19OwotCi1Ub1RoaXNTdGF0
dXMgbWVyZ2UoVG9UaGlzU3RhdHVzLCBUb1RoaXNTdGF0dXMpOwotCi19IC8vIG5hbWVzcGFjZSBK
U0MKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYs
IEpTQzo6VG9UaGlzU3RhdHVzKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAkocmV2aXNpb24gMjc3OTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NTgsNiAr
MjQ1OCwzMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEZyCiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRHZXRGdW5jdGlvbkZyb21TY29wZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0
IFZhcmlhYmxlJiB2YXJpYWJsZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlRm9yQ2FsbCkKK3sKKyAg
ICBBU1NFUlQoIXZhcmlhYmxlLmxvY2FsKCkpOworCisgICAgUmVnaXN0ZXJJRCogc2NvcGUgPSBl
bWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcmlhYmxlKTsKKyAgICBlbWl0R2V0RnJvbVNjb3Bl
KGRzdCwgc2NvcGUsIHZhcmlhYmxlLCBUaHJvd0lmTm90Rm91bmQpOworICAgIGVtaXRURFpDaGVj
a0lmTmVjZXNzYXJ5KHZhcmlhYmxlLCBkc3QsIG51bGxwdHIpOworICAgIGlmIChoYXNQYXJlbnRX
aXRoU2NvcGUodmFyaWFibGUpKQorICAgICAgICBPcEdldFRoaXNWYWx1ZUZvckNhbGw6OmVtaXQo
dGhpcywga2lsbCh0aGlzVmFsdWVGb3JDYWxsKSwgc2NvcGUpOworICAgIHJldHVybiBkc3Q7Cit9
CisKK2Jvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omhhc1BhcmVudFdpdGhTY29wZShjb25zdCBWYXJp
YWJsZSYgdmFyaWFibGUpIGNvbnN0Cit7CisgICAgaWYgKHZhcmlhYmxlLm9mZnNldCgpLmlzVmFs
aWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9s
ZXhpY2FsU2NvcGVTdGFjay5zaXplKCk7IGktLTsgKSB7CisgICAgICAgIGlmIChtX2xleGljYWxT
Y29wZVN0YWNrW2ldLm1faXNXaXRoU2NvcGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRQdXRUb1Njb3BlKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBWYXJpYWJsZSYgdmFy
aWFibGUsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZXNvbHZlTW9kZSByZXNvbHZlTW9kZSwgSW5pdGlh
bGl6YXRpb25Nb2RlIGluaXRpYWxpemF0aW9uTW9kZSkKIHsKICAgICBzd2l0Y2ggKHZhcmlhYmxl
Lm9mZnNldCgpLmtpbmQoKSkgewpAQCAtNTQ1NSw3ICs1NDgwLDggQEAgdm9pZCBTdGF0aWNQcm9w
ZXJ0eUFuYWx5c2lzOjpyZWNvcmQoKQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9U
aGlzKCkKIHsKLSAgICBPcFRvVGhpczo6ZW1pdCh0aGlzLCBraWxsKCZtX3RoaXNSZWdpc3Rlciks
IGVjbWFNb2RlKCkpOworICAgIGlmICghZWNtYU1vZGUoKS5pc1N0cmljdCgpKQorICAgICAgICBP
cFRvVGhpczo6ZW1pdCh0aGlzLCBraWxsKCZtX3RoaXNSZWdpc3RlcikpOwogfQogCiBTdHJ1Y3R1
cmVGb3JJbkNvbnRleHQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpmaW5kU3RydWN0dXJlRm9ySW5Db250
ZXh0KFJlZ2lzdGVySUQqIHByb3BlcnR5KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMjc3
OTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC05MDQsNiArOTA0LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlQ29uc3RhbnRMb2NhbChSZWdpc3RlcklE
KiBkc3QsIGNvbnN0IFZhcmlhYmxlJik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZl
U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBWYXJpYWJsZSYpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0R2V0RnJvbVNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUs
IGNvbnN0IFZhcmlhYmxlJiwgUmVzb2x2ZU1vZGUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0
R2V0RnVuY3Rpb25Gcm9tU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBWYXJpYWJsZSYsIFJl
Z2lzdGVySUQqIHRoaXNWYWx1ZUZvckNhbGwpOworICAgICAgICBib29sIGhhc1BhcmVudFdpdGhT
Y29wZShjb25zdCBWYXJpYWJsZSYpIGNvbnN0OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0
VG9TY29wZShSZWdpc3RlcklEKiBzY29wZSwgY29uc3QgVmFyaWFibGUmLCBSZWdpc3RlcklEKiB2
YWx1ZSwgUmVzb2x2ZU1vZGUsIEluaXRpYWxpemF0aW9uTW9kZSk7CiAKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdFJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwoUmVnaXN0ZXJJ
RCogZHN0LCBjb25zdCBJZGVudGlmaWVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAyNzc5NDgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1MCwxMyArMzUwLDExIEBAIFJlZ2lzdGVySUQqIFRhZ2dlZFRl
bXBsYXRlTm9kZTo6ZW1pdEJ5dGUKICAgICAgICAgICAgIHRhZyA9IGdlbmVyYXRvci5tb3ZlKGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgbG9jYWwpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgdGFnID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgYmFzZSA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIGJhc2UgPSBnZW5lcmF0b3Iu
ZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBqc1VuZGVmaW5lZCgpKTsKIAogICAg
ICAgICAgICAgSlNUZXh0UG9zaXRpb24gbmV3RGl2b3QgPSBkaXZvdFN0YXJ0KCkgKyBpZGVudGlm
aWVyLmxlbmd0aCgpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhu
ZXdEaXZvdCwgZGl2b3RTdGFydCgpLCBuZXdEaXZvdCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3Iu
bW92ZShiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShiYXNlLmdldCgpLCB2
YXIpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHRhZy5nZXQoKSwg
YmFzZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwotICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRURFpDaGVja0lmTmVjZXNzYXJ5KHZhciwgdGFnLmdldCgpLCBudWxscHRyKTsKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnVuY3Rpb25Gcm9tU2NvcGUodGFnLmdldCgpLCB2YXIs
IGJhc2UuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX3RhZy0+aXNCcmFja2V0
QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9
IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihtX3RhZyk7CkBAIC0xMTgwLDE3ICsx
MTc4LDEyIEBAIFJlZ2lzdGVySUQqIEV2YWxGdW5jdGlvbkNhbGxOb2RlOjplbWl0QnkKICAgICB9
IGVsc2UKICAgICAgICAgZnVuYyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBDYWxs
QXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgIGdlbmVyYXRv
ci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsK
IAotICAgIGlmIChsb2NhbCkKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVu
dHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwotICAgIGVsc2UgeworICAgIGlmICgh
bG9jYWwpIHsKICAgICAgICAgSlNUZXh0UG9zaXRpb24gbmV3RGl2b3QgPSBkaXZvdFN0YXJ0KCkg
KyA0OwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBkaXZv
dFN0YXJ0KCksIG5ld0Rpdm90KTsKLSAgICAgICAgZ2VuZXJhdG9yLm1vdmUoCi0gICAgICAgICAg
ICBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLAotICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRSZXNvbHZlU2NvcGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgdmFyKSk7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGZ1bmMuZ2V0KCksIGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKLSAgICAgICAgZ2VuZXJhdG9y
LmVtaXRURFpDaGVja0lmTmVjZXNzYXJ5KHZhciwgZnVuYy5nZXQoKSwgbnVsbHB0cik7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0R2V0RnVuY3Rpb25Gcm9tU2NvcGUoZnVuYy5nZXQoKSwgdmFyLCBj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpKTsKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmMu
Z2V0KCkpOwpAQCAtMTI3NiwyMCArMTI2OSwxNiBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxS
ZXNvbHZlTm9kZTo6ZW1pCiAgICAgfSBlbHNlCiAgICAgICAgIGZ1bmMgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwg
bV9hcmdzKTsKKyAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwganNVbmRlZmluZWQoKSk7CiAKICAgICBpZiAobG9jYWwpIHsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkp
OwogICAgICAgICAvLyBUaGlzIHBhc3NlcyBOb0V4cGVjdGVkRnVuY3Rpb24gYmVjYXVzZSB3ZSBl
eHBlY3QgdGhhdCBpZiB0aGUgZnVuY3Rpb24gaXMgaW4gYQogICAgICAgICAvLyBsb2NhbCB2YXJp
YWJsZSwgdGhlbiBpdCdzIG5vdCBvbmUgb2Ygb3VyIGJ1aWx0LWluIGNvbnN0cnVjdG9ycy4KICAg
ICAgICAgZXhwZWN0ZWRGdW5jdGlvbiA9IE5vRXhwZWN0ZWRGdW5jdGlvbjsKICAgICB9IGVsc2Ug
ewogICAgICAgICBKU1RleHRQb3NpdGlvbiBuZXdEaXZvdCA9IGRpdm90U3RhcnQoKSArIG1faWRl
bnQubGVuZ3RoKCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8obmV3RGl2
b3QsIGRpdm90U3RhcnQoKSwgbmV3RGl2b3QpOwotICAgICAgICBnZW5lcmF0b3IubW92ZSgKLSAg
ICAgICAgICAgIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksCi0gICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdFJlc29sdmVTY29wZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCB2YXIp
KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZnVuYy5nZXQoKSwgY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwotICAgICAgICBn
ZW5lcmF0b3IuZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkodmFyLCBmdW5jLmdldCgpLCBudWxscHRy
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGdW5jdGlvbkZyb21TY29wZShmdW5jLmdldCgp
LCB2YXIsIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCkpOwogICAgIH0KIAogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCwgZnVuYy5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJDYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwOSwxMCArMjA5LDkgQEAgSlNWYWx1ZSBEZWJ1Z2dlckNhbGxGcmFtZTo6dGhp
c1ZhbHVlKFZNJgogICAgIGlmICghdGhpc1ZhbHVlKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIAotICAgIEVDTUFNb2RlIGVjbWFNb2RlID0gRUNNQU1vZGU6OnNsb3BweSgpOwogICAg
IGlmIChjb2RlQmxvY2sgJiYgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0cmlj
dENvbnRleHQoKSkKLSAgICAgICAgZWNtYU1vZGUgPSBFQ01BTW9kZTo6c3RyaWN0KCk7Ci0gICAg
cmV0dXJuIHRoaXNWYWx1ZS50b1RoaXMobV92YWxpZE1hY2hpbmVGcmFtZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCh2bSksIGVjbWFNb2RlKTsKKyAgICAgICAgcmV0dXJuIHRoaXNWYWx1ZTsKKyAgICBy
ZXR1cm4gdGhpc1ZhbHVlLnRvU2xvcHB5TW9kZVRoaXMobV92YWxpZE1hY2hpbmVGcmFtZS0+bGV4
aWNhbEdsb2JhbE9iamVjdCh2bSkpOwogfQogCiAvLyBFdmFsdWF0ZSBzb21lIEphdmFTY3JpcHQg
Y29kZSBpbiB0aGUgc2NvcGUgb2YgdGhpcyBmcmFtZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJ
KHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDY1ICsxNzksNiBA
QCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgREZHX05PREVf
RE9fVE9fQ0hJTERSRU4obV9ncmFwaCwgbm9kZSwgdmVyaWZ5RWRnZSk7CiB9CiAKLWVudW0gY2xh
c3MgVG9UaGlzUmVzdWx0IHsKLSAgICBJZGVudGl0eSwKLSAgICBVbmRlZmluZWQsCi0gICAgR2xv
YmFsVGhpcywKLSAgICBEeW5hbWljLAotfTsKLWlubGluZSBUb1RoaXNSZXN1bHQgaXNUb1RoaXNB
bklkZW50aXR5KFZNJiB2bSwgRUNNQU1vZGUgZWNtYU1vZGUsIEFic3RyYWN0VmFsdWUmIHZhbHVl
Rm9yTm9kZSkKLXsKLSAgICAvLyBXZSBsb29rIGF0IHRoZSB0eXBlIGZpcnN0IHNpbmNlIHRoYXQg
d2lsbCBjb3ZlciBtb3N0IGNhc2VzIGFuZCBkb2VzIG5vdCByZXF1aXJlIGl0ZXJhdGluZyBhbGwg
dGhlIHN0cnVjdHVyZXMuCi0gICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpIHsKLSAgICAgICAg
aWYgKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiYgISh2YWx1ZUZvck5vZGUubV90eXBlICYgU3BlY09i
amVjdE90aGVyKSkKLSAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OklkZW50aXR5Owot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICh2YWx1ZUZvck5vZGUubV90eXBlICYmICEodmFsdWVG
b3JOb2RlLm1fdHlwZSAmICh+U3BlY09iamVjdCB8IFNwZWNPYmplY3RPdGhlcikpKQotICAgICAg
ICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk7Ci0gICAgfQotCi0gICAgaWYgKEpT
VmFsdWUgdmFsdWUgPSB2YWx1ZUZvck5vZGUudmFsdWUoKSkgewotICAgICAgICBpZiAodmFsdWUu
aXNDZWxsKCkpIHsKLSAgICAgICAgICAgIGF1dG8qIHRvVGhpc01ldGhvZCA9IHZhbHVlLmFzQ2Vs
bCgpLT5jbGFzc0luZm8odm0pLT5tZXRob2RUYWJsZS50b1RoaXM7Ci0gICAgICAgICAgICBpZiAo
dG9UaGlzTWV0aG9kID09ICZKU09iamVjdDo6dG9UaGlzKQotICAgICAgICAgICAgICAgIHJldHVy
biBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OwotICAgICAgICAgICAgaWYgKHRvVGhpc01ldGhvZCA9
PSAmSlNTY29wZTo6dG9UaGlzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVjbWFNb2RlLmlzU3Ry
aWN0KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OlVuZGVmaW5l
ZDsKLSAgICAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpHbG9iYWxUaGlzOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKChlY21hTW9kZS5pc1N0cmlj
dCgpIHx8ICh2YWx1ZUZvck5vZGUubV90eXBlICYmICEodmFsdWVGb3JOb2RlLm1fdHlwZSAmIH5T
cGVjT2JqZWN0KSkpICYmIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7Ci0g
ICAgICAgIGJvb2wgYWxsU3RydWN0dXJlc0FyZUpTU2NvcGUgPSAhdmFsdWVGb3JOb2RlLm1fc3Ry
dWN0dXJlLmlzQ2xlYXIoKTsKLSAgICAgICAgYm9vbCBvdmVycmlkZXNUb1RoaXMgPSBmYWxzZTsK
LSAgICAgICAgdmFsdWVGb3JOb2RlLm1fc3RydWN0dXJlLmZvckVhY2goWyZdKFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlKSB7Ci0gICAgICAgICAgICBUeXBlSW5mbyB0eXBlID0gc3RydWN0
dXJlLT50eXBlSW5mbygpOwotICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0
eXBlLnR5cGUoKSA9PSBTdHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUgfHwg
dHlwZS50eXBlKCkgPT0gSGVhcEJpZ0ludFR5cGUpOwotICAgICAgICAgICAgaWYgKCFlY21hTW9k
ZS5pc1N0cmljdCgpKQotICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkpOwot
ICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBzdHJpbmdzL3N5bWJv
bHMgaGVyZSBzaW5jZSBlaXRoZXI6Ci0gICAgICAgICAgICAvLyAxKSBXZSBhcmUgaW4gc3RyaWN0
IG1vZGUgYW5kIHN0cmluZ3Mvc3ltYm9scyBhcmUgbm90IHdyYXBwZWQKLSAgICAgICAgICAgIC8v
IDIpIFRoZSBBSSBoYXMgcHJvdmVuIHRoYXQgdGhlIHR5cGUgb2YgdGhpcyBpcyBhIHN1YnR5cGUg
b2Ygb2JqZWN0Ci0gICAgICAgICAgICBpZiAodHlwZS5pc09iamVjdCgpICYmIHR5cGUub3ZlcnJp
ZGVzVG9UaGlzKCkpCi0gICAgICAgICAgICAgICAgb3ZlcnJpZGVzVG9UaGlzID0gdHJ1ZTsKLQot
ICAgICAgICAgICAgLy8gSWYgYWxsIHRoZSBzdHJ1Y3R1cmVzIGFyZSBKU1Njb3BlJ3Mgb25lcywg
d2Uga25vdyB0aGUgZGV0YWlscyBvZiBKU1Njb3BlOjp0b1RoaXMoKSBvcGVyYXRpb24uCi0gICAg
ICAgICAgICBhbGxTdHJ1Y3R1cmVzQXJlSlNTY29wZSAmPSBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygp
LT5tZXRob2RUYWJsZS50b1RoaXMgPT0gSlNTY29wZTo6aW5mbygpLT5tZXRob2RUYWJsZS50b1Ro
aXM7Ci0gICAgICAgIH0pOwotICAgICAgICBpZiAoIW92ZXJyaWRlc1RvVGhpcykKLSAgICAgICAg
ICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OwotICAgICAgICBpZiAoYWxsU3RydWN0
dXJlc0FyZUpTU2NvcGUpIHsKLSAgICAgICAgICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6OlVuZGVmaW5lZDsKLSAgICAgICAg
ICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6Okdsb2JhbFRoaXM7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpEeW5hbWljOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBYnN0cmFjdFN0YXRlVHlwZT4KIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmhhbmRsZUNvbnN0YW50QmluYXJ5Qml0d2lzZU9wKE5vZGUqIG5vZGUpCiB7CkBA
IC0yOTcyLDMxICsyOTEzLDIyIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHkKICAgICAgICAgICAgIAogICAgIGNhc2UgVG9UaGlzOiB7CiAgICAgICAgIEFic3RyYWN0
VmFsdWUmIHNvdXJjZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBBYnN0cmFj
dFZhbHVlJiBkZXN0aW5hdGlvbiA9IGZvck5vZGUobm9kZSk7Ci0gICAgICAgIEVDTUFNb2RlIGVj
bWFNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKTsKIAotICAgICAgICBUb1RoaXNSZXN1bHQgcmVzdWx0
ID0gaXNUb1RoaXNBbklkZW50aXR5KG1fdm0sIGVjbWFNb2RlLCBzb3VyY2UpOwotICAgICAgICBz
d2l0Y2ggKHJlc3VsdCkgewotICAgICAgICBjYXNlIFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk6Cisg
ICAgICAgIGlmICghKHNvdXJjZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpIHsKICAgICAgICAgICAg
IG1fc3RhdGUuc2V0U2hvdWxkVHJ5Q29uc3RhbnRGb2xkaW5nKHRydWUpOwotICAgICAgICAgICAg
ZGVzdGluYXRpb24gPSBzb3VyY2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBU
b1RoaXNSZXN1bHQ6OlVuZGVmaW5lZDoKLSAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpz
VW5kZWZpbmVkKCkpOworICAgICAgICAgICAgZGlkRm9sZENsb2JiZXJXb3JsZCgpOworICAgICAg
ICAgICAgc2V0Rm9yTm9kZShub2RlLCBzb3VyY2UpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgVG9UaGlzUmVzdWx0OjpHbG9iYWxUaGlzOgorICAgICAgICB9CisKKyAgICAgICAg
c2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY09iamVjdCk7CisKKyAgICAgICAgaWYgKCEoc291cmNl
Lm1fdHlwZSAmIH5TcGVjT3RoZXIpKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnNldFNob3VsZFRy
eUNvbnN0YW50Rm9sZGluZyh0cnVlKTsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uLnNldFR5cGUo
bV9ncmFwaCwgU3BlY09iamVjdCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBU
b1RoaXNSZXN1bHQ6OkR5bmFtaWM6Ci0gICAgICAgICAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3Qo
KSkKLSAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5tYWtlSGVhcFRvcCgpOwotICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZGVzdGluYXRpb24gPSBzb3VyY2U7Ci0gICAgICAg
ICAgICAgICAgZGVzdGluYXRpb24ubWVyZ2UoU3BlY09iamVjdCk7Ci0gICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCisgICAgICAgIGNsb2JiZXJXb3JsZCgpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTMzMTUsNiArMzI0NywxMyBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5v
ZGUsIFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBHZXRUaGlz
VmFsdWVGb3JDYWxsOgorICAgICAgICBpZiAoSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLnZhbHVlKCkpCisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBjaGlsZC5p
bmhlcml0czxKU1Njb3BlPihtX3ZtKSA/IGpzVW5kZWZpbmVkKCkgOiBjaGlsZCk7CisKKyAgICAg
ICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY09iamVjdCB8IFNwZWNPdGhlcik7CisgICAgICAg
IGJyZWFrOworCiAgICAgY2FzZSBTa2lwU2NvcGU6IHsKICAgICAgICAgaWYgKEpTVmFsdWUgY2hp
bGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpKSB7CiAgICAgICAgICAgICBpZiAo
SlNTY29wZSogc2NvcGUgPSBqc0R5bmFtaWNDYXN0PEpTU2NvcGUqPihtX3ZtLCBjaGlsZCkpIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCShyZXZpc2lvbiAyNzc5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQwOSwyNSArNTQwOSw3IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2Ugb3BfdG9fdGhpczogewotICAgICAgICAgICAgTm9kZSogb3Ax
ID0gZ2V0VGhpcygpOwotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BUb1RoaXM+KCk7Ci0gICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVJRCBjYWNoZWRT
dHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQ7Ci0gICAgICAgICAgICBT
dHJ1Y3R1cmUqIGNhY2hlZFN0cnVjdHVyZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBpZiAoY2Fj
aGVkU3RydWN0dXJlSUQpCi0gICAgICAgICAgICAgICAgY2FjaGVkU3RydWN0dXJlID0gbV92bS0+
aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KGNhY2hlZFN0cnVjdHVyZUlEKTsKLSAgICAgICAg
ICAgIGlmIChtZXRhZGF0YS5tX3RvVGhpc1N0YXR1cyAhPSBUb1RoaXNPSwotICAgICAgICAgICAg
ICAgIHx8ICFjYWNoZWRTdHJ1Y3R1cmUKLSAgICAgICAgICAgICAgICB8fCBjYWNoZWRTdHJ1Y3R1
cmUtPmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZS50b1RoaXMgIT0gSlNPYmplY3Q6OmluZm8oKS0+
bWV0aG9kVGFibGUudG9UaGlzCi0gICAgICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpCi0gICAg
ICAgICAgICAgICAgfHwgKG9wMS0+b3AoKSA9PSBHZXRMb2NhbCAmJiBvcDEtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpLT5zdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgc2V0VGhpcyhhZGRUb0dyYXBoKFRvVGhpcywgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1v
ZGUpLCBPcEluZm8oZ2V0UHJlZGljdGlvbigpKSwgb3AxKSk7Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoCi0gICAgICAgICAgICAgICAgICAgIENoZWNr
U3RydWN0dXJlLAotICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1
cmVTZXQoY2FjaGVkU3RydWN0dXJlKSksCi0gICAgICAgICAgICAgICAgICAgIG9wMSk7Ci0gICAg
ICAgICAgICB9CisgICAgICAgICAgICBzZXRUaGlzKGFkZFRvR3JhcGgoVG9UaGlzLCBPcEluZm8o
Z2V0UHJlZGljdGlvbigpKSwgZ2V0VGhpcygpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF90b190aGlzKTsKICAgICAgICAgfQogCkBAIC03NzQyLDcgKzc3MjQsNyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1
cy5zdGF0ZSgpICE9IEdldEJ5U3RhdHVzOjpTaW1wbGUKICAgICAgICAgICAgICAgICAgICAgfHwg
c3RhdHVzLm51bVZhcmlhbnRzKCkgIT0gMQogICAgICAgICAgICAgICAgICAgICB8fCBzdGF0dXNb
MF0uc3RydWN0dXJlU2V0KCkuc2l6ZSgpICE9IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgc2V0
KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEdldEJ5SWRGbHVzaCwgT3BJbmZvKENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBPcEluZm8ocHJlZGljdGlvbiksIGdl
dChieXRlY29kZS5tX3Njb3BlKSkpOworICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUu
bV9kc3QsIGFkZFRvR3JhcGgoR2V0QnlJZEZsdXNoLCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jaywgdWlkKSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgd2Vha0pTQ29uc3Rh
bnQoZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCkpKSk7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KIApAQCAtNzg2Niw2ICs3ODQ4LDEyIEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX2dldF9mcm9tX3Njb3BlKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfZ2V0X3Ro
aXNfdmFsdWVfZm9yX2NhbGw6IHsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0VGhpc1ZhbHVlRm9yQ2FsbD4oKTsKKyAgICAgICAgICAgIHNl
dChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChHZXRUaGlzVmFsdWVGb3JDYWxsLCBnZXQoYnl0
ZWNvZGUubV9zY29wZSkpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF90aGlzX3Zh
bHVlX2Zvcl9jYWxsKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3Bl
OiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxP
cFB1dFRvU2NvcGU+KCk7CiAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1l
dGFkYXRhKGNvZGVCbG9jayk7CkBAIC03OTE3LDcgKzc5MDUsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5udW1W
YXJpYW50cygpICE9IDEKICAgICAgICAgICAgICAgICAgICAgfHwgc3RhdHVzWzBdLmtpbmQoKSAh
PSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZQogICAgICAgICAgICAgICAgICAgICB8fCBzdGF0dXNb
MF0uc3RydWN0dXJlKCkuc2l6ZSgpICE9IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChQdXRCeUlkLCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50
aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywg
dWlkKSksIE9wSW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSksIGdldChieXRl
Y29kZS5tX3Njb3BlKSwgZ2V0KGJ5dGVjb2RlLm1fdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYWRkVG9HcmFwaChQdXRCeUlkLCBPcEluZm8oQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jaywgdWlkKSksIE9wSW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKSks
IHdlYWtKU0NvbnN0YW50KGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpKSwgZ2V0KGJ5dGVjb2Rl
Lm1fdmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSB3ZWFrSlNDb25zdGFudChnbG9iYWxPYmpl
Y3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcAkocmV2aXNpb24gMjc3OTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTQsNiArMjU0LDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRAogICAgIGNhc2Ugb3BfaGFzX3ByaXZh
dGVfYnJhbmQ6CiAgICAgY2FzZSBvcF9nZXRfc2NvcGU6CiAgICAgY2FzZSBvcF9nZXRfZnJvbV9z
Y29wZToKKyAgICBjYXNlIG9wX2dldF90aGlzX3ZhbHVlX2Zvcl9jYWxsOgogICAgIGNhc2Ugb3Bf
Z2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAgIGNhc2Ugb3BfaGFzX2VudW1lcmFibGVfaW5kZXhl
ZF9wcm9wZXJ0eToKICAgICBjYXNlIG9wX2hhc19lbnVtZXJhYmxlX3N0cnVjdHVyZV9wcm9wZXJ0
eToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZp
c2lvbiAyNzc5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjE4LDYgKzIxOCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIEFyaXRoTWF4OgogICAgIGNhc2UgQXJpdGhQ
b3c6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNlIEdldFRoaXNWYWx1ZUZvckNhbGw6CiAg
ICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6CiAgICAgY2FzZSBT
dHJpbmdDaGFyQ29kZUF0OgpAQCAtNTkxLDEyICs1OTIsNiBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIHdyaXRlKEhlYXBPYmplY3RDb3VudCk7CiAg
ICAgICAgIHJldHVybjsKIAotICAgIGNhc2UgVG9UaGlzOgotICAgICAgICByZWFkKE1pc2NGaWVs
ZHMpOwotICAgICAgICByZWFkKEhlYXBPYmplY3RDb3VudCk7Ci0gICAgICAgIHdyaXRlKEhlYXBP
YmplY3RDb3VudCk7Ci0gICAgICAgIHJldHVybjsKLQogICAgIGNhc2UgVHlwZU9mSXNPYmplY3Q6
CiAgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVHlw
ZU9mSXNPYmplY3RMb2MsIE1pc2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9k
ZSkpOwpAQCAtNzE2LDYgKzcxMSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUKICAgICBjYXNlIFJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWw6
CiAgICAgY2FzZSBSZXNvbHZlU2NvcGU6CiAgICAgY2FzZSBUb09iamVjdDoKKyAgICBjYXNlIFRv
VGhpczoKICAgICBjYXNlIEhhc0VudW1lcmFibGVTdHJ1Y3R1cmVQcm9wZXJ0eToKICAgICBjYXNl
IEhhc0VudW1lcmFibGVQcm9wZXJ0eToKICAgICBjYXNlIEhhc093blN0cnVjdHVyZVByb3BlcnR5
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFu
dEZvbGRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MTQsMTMgKzcxNCwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBj
YXNlIFRvVGhpczogewotICAgICAgICAgICAgICAgIFRvVGhpc1Jlc3VsdCByZXN1bHQgPSBpc1Rv
VGhpc0FuSWRlbnRpdHkobV9ncmFwaC5tX3ZtLCBub2RlLT5lY21hTW9kZSgpLCBtX3N0YXRlLmZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFRv
VGhpc1Jlc3VsdDo6SWRlbnRpdHkpIHsKKyAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiB2
YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAg
aWYgKCEodmFsdWUubV90eXBlICYgflNwZWNPYmplY3QpKSB7CiAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQg
PSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBUb1RoaXNSZXN1bHQ6Okdsb2JhbFRoaXMpIHsK
KyAgICAgICAgICAgICAgICBpZiAoISh2YWx1ZS5tX3R5cGUgJiB+U3BlY090aGVyKSkgewogICAg
ICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9HZXRHbG9iYWxUaGlzKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDI3
Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE5LDYgKzExOSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkKICAgICBjYXNlIENoZWNrQXJyYXlPckVtcHR5OgogICAgIGNhc2UgQ2hlY2tEZXRh
Y2hlZDoKICAgICBjYXNlIEdldFNjb3BlOgorICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDoK
ICAgICBjYXNlIFNraXBTY29wZToKICAgICBjYXNlIEdldEdsb2JhbE9iamVjdDoKICAgICBjYXNl
IEdldEdsb2JhbFRoaXM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAJKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MDYsNiArMTgwNiw3IEBA
IHByaXZhdGU6CiAKICAgICAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgICAgIGNhc2UgR2V0U2Nv
cGU6CisgICAgICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDoKICAgICAgICAgY2FzZSBHZXRH
ZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0U2V0dGVyOgogICAgICAgICBjYXNlIEdldEdsb2JhbE9i
amVjdDogewpAQCAtMzE0NCw5NiArMzE0NSwxOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmaXh1
cFRvVGhpcyhOb2RlKiBub2RlKQogICAgIHsKLSAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBu
b2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCk7Ci0KLSAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkg
ewotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCb29sZWFu
KCkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEJvb2xlYW5Vc2U+KG5vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZl
cnRUb0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkp
IHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKLSAgICAgICAgICAg
ICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEludDUyKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPERvdWJs
ZVJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRE
b3VibGUpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTeW1ib2woKSkgewotICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hv
dWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3Ry
aW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252
ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmco
KSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKLSNpZiBVU0UoQklH
SU5UMzIpCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVCaWdJbnQzMigpKQotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEJpZ0ludDMyVXNlPihu
b2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEFueUJpZ0ludFVzZT4obm9kZS0+Y2hpbGQxKCkp
OwotI2Vsc2UKLSAgICAgICAgICAgICAgICBmaXhFZGdlPEhlYXBCaWdJbnRVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5
KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPdGhlcigpKSB7Ci0g
ICAgICAgICAgICBpZiAoaXNTdHJpY3RNb2RlKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxP
dGhlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCiAg
ICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgIG1f
aW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUtPm9yaWdpbiwKICAgICAgICAgICAg
ICAgICBFZGdlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgT3RoZXJVc2UpKTsKICAgICAgICAgICAg
IG9ic2VydmVVc2VLaW5kT25Ob2RlPE90aGVyVXNlPihub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwog
ICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudCgKLSAgICAgICAgICAgICAgICBu
b2RlLCBtX2dyYXBoLmdsb2JhbFRoaXNPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSk7
CisgICAgICAgICAgICAgICAgbm9kZSwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+Z2xvYmFsVGhpcygpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBjb3ZlciBvdGhlciB1c2UgY2Fz
ZXMgYnV0IHdlIGRvbid0IGhhdmUgdXNlIGtpbmRzIGZvciB0aGVtLiBJdCdzIG5vdCBjcml0aWNh
bCwKLSAgICAgICAgLy8gaG93ZXZlciwgc2luY2Ugd2UgY292ZXIgYWxsIHRoZSBtaXNzaW5nIGNh
c2VzIGluIGNvbnN0YW50IGZvbGRpbmcuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcyMTMKLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5z
aG91bGRTcGVjdWxhdGVTdHJpbmdPYmplY3QoKSkgewotICAgICAgICAgICAgZml4RWRnZTxTdHJp
bmdPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b0lkZW50aXR5KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoaXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkp
KSB7Ci0gICAgICAgICAgICBmaXhFZGdlPEZpbmFsT2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkpIHsK
KyAgICAgICAgICAgIGZpeEVkZ2U8T2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAy
Nzc5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3MCwxMiArNDcwLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9jb2Rl
QmxvY2stPmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKTsKICAgICB9CiAgICAgCi0gICAgSlNP
YmplY3QqIGdsb2JhbFRoaXNPYmplY3RGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQotICAgIHsK
LSAgICAgICAgSlNHbG9iYWxPYmplY3QqIG9iamVjdCA9IGdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKTsKLSAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KG9iamVjdC0+bWV0aG9kVGFi
bGUobV92bSktPnRvVGhpcyhvYmplY3QsIG9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSk7Ci0g
ICAgfQotICAgIAogICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGVGb3IoSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpCiAgICAgewogICAgICAgICBpZiAoIWlubGluZUNhbGxG
cmFtZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkocmV2
aXNpb24gMjc3OTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksNyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChH
cmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBTZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
czoKICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CiAgICAgY2FzZSBHZXRTY29wZToKKyAgICBjYXNl
IEdldFRoaXNWYWx1ZUZvckNhbGw6CiAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgY2FzZSBD
b3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIFN1cGVyU2FtcGxlckJlZ2luOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjY0LDcgKzIyNjQs
NiBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgICAgIGNhc2Ug
UHV0QnlWYWxXaXRoVGhpczoKICAgICAgICAgY2FzZSBQdXREeW5hbWljVmFyOgotICAgICAgICBj
YXNlIFRvVGhpczoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI3OCw3ICsyMjc3LDYgQEAgcHVibGljOgog
ICAgICAgICBjYXNlIENhbGxFdmFsOgogICAgICAgICBjYXNlIERlbGV0ZUJ5VmFsOgogICAgICAg
ICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6Ci0gICAgICAgIGNhc2UgVG9UaGlzOgogICAgICAgICAg
ICAgcmV0dXJuIEVDTUFNb2RlOjpmcm9tQnl0ZShtX29wSW5mby5hczx1aW50OF90PigpKTsKICAg
ICAgICAgY2FzZSBEZWxldGVCeUlkOgogICAgICAgICBjYXNlIFB1dEJ5SWQ6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyNzc5NDgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3NSw2ICsyNzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oR2V0R2xvYmFsTGV4aWNhbFZhcmlhYmxlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhQ
dXRHbG9iYWxWYXJpYWJsZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldER5bmFt
aWNWYXIsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRU
aGlzVmFsdWVGb3JDYWxsLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhQdXREeW5hbWljVmFy
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTm90aWZ5V3JpdGUsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXgsIE5vZGVSZXN1bHRK
UykgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAyNzc5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsMjQgKzIxNyw2IEBAIEFMV0FZU19JTkxJ
TkUgc3RhdGljIEpTVmFsdWUgZ2V0QnlWYWxPYmoKICAgICByZXR1cm4gYmFzZS0+Z2V0KGdsb2Jh
bE9iamVjdCwgcHJvcGVydHlOYW1lKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblRvVGhpcywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3ApKQotewotICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7Ci0gICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKTsK
LX0KLQotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRvVGhpc1N0cmljdCwgRW5j
b2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3ApKQotewotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Ci0gICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotCi0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpKTsKLX0KLQogSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk9iamVjdEtleXMsIEpTQXJyYXkqLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9iamVjdCkpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMzE4MSw3ICszMTYzLDggQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldER5bgogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50
aWZpZXI6OmZyb21VaWQodm0sIGltcGwpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoc2NvcGUtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3Qs
IGlkZW50LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xvdCYgc2xvdCkgLT4gSlNWYWx1ZSB7
CisgICAgUHJvcGVydHlTbG90IHNsb3QoSlNTY29wZTo6cmVjZWl2ZXJGb3JTY29wZShzY29wZSks
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2NvcGUtPmdldFByb3BlcnR5U2xv
dChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xv
dCYpIC0+IEpTVmFsdWUgewogICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBHZXRQ
dXRJbmZvIGdldFB1dEluZm8oZ2V0UHV0SW5mb0JpdHMpOwogICAgICAgICAgICAgaWYgKGdldFB1
dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQpCkBAIC0zMjI4LDcgKzMyMTEs
NyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHB1dER5bmFtaWNWYXIoCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgaXNTdHJpY3RN
b2RlLCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKGdl
dFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dChKU1Njb3BlOjpyZWNlaXZlckZvclNjb3BlKHNjb3BlKSwgaXNTdHJpY3RNb2RlLCBQdXRQcm9w
ZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKGdldFB1dEluZm8uaW5p
dGlhbGl6YXRpb25Nb2RlKCkpKTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBzY29w
ZS0+bWV0aG9kVGFibGUodm0pLT5wdXQoc2NvcGUsIGdsb2JhbE9iamVjdCwgaWRlbnQsIEpTVmFs
dWU6OmRlY29kZSh2YWx1ZSksIHNsb3QpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw4ICs1OCw2
IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXQKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlSW50ZXJuYWxQcm9taXNlLCBKU0NlbGwqLCAo
SlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogY29uc3RydWN0b3IpKTsKIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlR2VuZXJhdG9yLCBKU0NlbGwqLCAoSlNHbG9iYWxP
YmplY3QqLCBKU09iamVjdCogY29uc3RydWN0b3IpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uQ3JlYXRlQXN5bmNHZW5lcmF0b3IsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVj
dCosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvcikpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25Ub1RoaXMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AxKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
blRvVGhpc1N0cmljdCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
VmFsdWVNb2QsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvblZhbHVlQml0Tm90LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkpOwogSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25WYWx1ZUJpdEFuZCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyNzc5NDgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI3LDcxICs1MjcsMTMgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVG9UaGlzOiB7Ci0gICAgICAgICAgICAv
LyBUb1RoaXMgaW4gbWV0aG9kcyBmb3IgcHJpbWl0aXZlIHR5cGVzIHNob3VsZCBzcGVjdWxhdGUg
cHJpbWl0aXZlIHR5cGVzIGluIHN0cmljdCBtb2RlLgotICAgICAgICAgICAgYm9vbCBpc1N0cmlj
dE1vZGUgPSBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCk7Ci0gICAgICAgICAgICBpZiAoaXNT
dHJpY3RNb2RlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVCb29sZWFuKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24oU3BlY0Jvb2xlYW4pOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkgewotICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50NTJBbnkpOwotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCeXRlY29kZU51bWJlcik7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3ltYm9sKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N5bWJvbCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotI2lmIFVTRShCSUdJTlQz
MikKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJp
Z0ludDMyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rp
b24oU3BlY0JpZ0ludDMyKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkgewotICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSGVhcEJpZ0ludCk7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0JpZ0ludCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkgewotICAgICAgICAgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjU3RyaW5nSWRlbnQpOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTdHJpbmcpOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3Bl
Y3VsYXRlU3RyaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVBy
ZWRpY3Rpb24oU3BlY1N0cmluZ09iamVjdCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlU3RyaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihTcGVjU3RyaW5nT2JqZWN0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IG5vZGUt
PmNoaWxkMSgpLT5wcmVkaWN0aW9uKCk7Ci0gICAgICAgICAgICBpZiAoaXNTdHJpY3RNb2RlKQot
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKG5vZGUtPmdldEhlYXBQ
cmVkaWN0aW9uKCkpOwotICAgICAgICAgICAgZWxzZSBpZiAocHJlZGljdGlvbikgeworICAgICAg
ICAgICAgaWYgKHByZWRpY3Rpb24pIHsKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBv
cmlnaW5hbFByZWRpY3Rpb24gPSBwcmVkaWN0aW9uOwogICAgICAgICAgICAgICAgIGlmIChwcmVk
aWN0aW9uICYgflNwZWNPYmplY3QpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gV3JhcHBlciBv
YmplY3RzIGFyZSBjcmVhdGVkIG9ubHkgaW4gc2xvcHB5IG1vZGUuCkBAIC0xMjA0LDYgKzExNDYs
MTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY09iamVjdE90aGVy
KTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9yQ2Fs
bDogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0IHwgU3BlY090aGVyKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2UgR2V0RW51bWVyYWJs
ZUxlbmd0aDogewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjSW50MzJPbmx5KTsKICAg
ICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNiArMjMyLDcg
QEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgQ2hl
Y2tBcnJheToKICAgICBjYXNlIENoZWNrQXJyYXlPckVtcHR5OgogICAgIGNhc2UgR2V0U2NvcGU6
CisgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxsOgogICAgIGNhc2UgU2tpcFNjb3BlOgogICAg
IGNhc2UgR2V0R2xvYmFsT2JqZWN0OgogICAgIGNhc2UgR2V0R2xvYmFsVGhpczoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAkocmV2aXNpb24gMjc3OTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIyMCw2ICs0MjIwLDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxsOiB7CisgICAgICAgIGNv
bXBpbGVHZXRUaGlzVmFsdWVGb3JDYWxsKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisK
ICAgICBjYXNlIFJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWw6IHsKICAgICAg
ICAgY29tcGlsZVJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwobm9kZSk7CiAg
ICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyNzc5NDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MjU5LDYgKzQyNTksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBjb21waWxlR2V0RHluYW1pY1Zhcihub2RlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQorCisgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxsOiB7CisgICAgICAgIGNvbXBpbGVH
ZXRUaGlzVmFsdWVGb3JDYWxsKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgCiAg
ICAgY2FzZSBSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOiB7CiAgICAgICAg
IGNvbXBpbGVSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsKG5vZGUpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEyNCw2ICsxMjEyNCwyNSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0RHluYW1pY1ZhCiAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFRo
aXNWYWx1ZUZvckNhbGwoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBz
Y29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUu
Z3ByKCk7CisKKyAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICBtX2ppdC5tb3ZlVHJ1
c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIHJlc3VsdFJlZ3MpOworICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIG5vdFdpdGhTY29wZSA9IG1faml0LmJyYW5jaElmVHlwZShzY29wZUdQUiwgSlNUeXBl
UmFuZ2UgeyBGaXJzdEpTU2NvcGVUeXBlLCBMYXN0SlNTY29wZVR5cGUgfSk7CisjaWYgVVNFKEpT
VkFMVUUzMl82NCkKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFn
KSwgcmVzdWx0UmVncy50YWdHUFIoKSk7CisjZW5kaWYKKyAgICBtX2ppdC5tb3ZlKHNjb3BlR1BS
LCByZXN1bHRSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgbm90V2l0aFNjb3BlLmxpbmsoJm1faml0
KTsKKworICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7Cit9CisKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXREeW5hbWljVmFyKE5vZGUqIG5vZGUpCiB7CiAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTM0NTgs
MjkgKzEzNDc3LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmEK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1RoaXMoTm9kZSogbm9kZSkKIHsKICAgICBB
U1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwotICAgIEpTVmFs
dWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgSlNWYWx1ZVJl
Z3NUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAotICAg
IEpTVmFsdWVSZWdzIHRoaXNWYWx1ZVJlZ3MgPSB0aGlzVmFsdWUuanNWYWx1ZVJlZ3MoKTsKLSAg
ICBKU1ZhbHVlUmVncyB0ZW1wUmVncyA9IHRlbXAucmVncygpOworICAgIEpTVmFsdWVPcGVyYW5k
IHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0
Y2godGhpcyk7CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdGhpc1ZhbHVlLmpzVmFsdWVS
ZWdzKCk7CisgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWVSZWdzLnBheWxvYWRHUFIoKTsKIAor
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwo
dmFsdWVSZWdzKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwotICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKHRoaXNWYWx1ZVJlZ3MpKTsK
LSAgICBzbG93Q2FzZXMuYXBwZW5kKAotICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKLSAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3ModGhpc1ZhbHVlUmVncy5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6dHlwZUluZm9G
bGFnc09mZnNldCgpKSwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIo
T3ZlcnJpZGVzVG9UaGlzKSkpOwotICAgIG1faml0Lm1vdmVWYWx1ZVJlZ3ModGhpc1ZhbHVlUmVn
cywgdGVtcFJlZ3MpOwotCi0gICAgSl9KSVRPcGVyYXRpb25fR0ogZnVuY3Rpb247Ci0gICAgaWYg
KG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKLSAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRp
b25Ub1RoaXNTdHJpY3Q7Ci0gICAgZWxzZQotICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRv
VGhpczsKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0
aGlzLCBmdW5jdGlvbiwgdGVtcFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB0aGlz
VmFsdWVSZWdzKSk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdE9iamVj
dCh2YWx1ZUdQUikpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1w
KCk7CiAKLSAgICBqc1ZhbHVlUmVzdWx0KHRlbXBSZWdzLCBub2RlKTsKKyAgICBub3RDZWxsLmxp
bmsoJm1faml0KTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90T3RoZXIo
dmFsdWVSZWdzLCBzY3JhdGNoLmdwcigpKSk7CisgICAgbV9qaXQubG9hZFB0cihnbG9iYWxPYmpl
Y3QtPmFkZHJlc3NPZkdsb2JhbFRoaXMoKSwgdmFsdWVHUFIpOworCisgICAgZG9uZS5saW5rKCZt
X2ppdCk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywg
dGhpcywgb3BlcmF0aW9uVG9PYmplY3QsIHZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCB2YWx1ZVJlZ3MsIFRydXN0ZWRJbW1QdHIobnVs
bHB0cikpKTsKKyAgICBjZWxsUmVzdWx0KHZhbHVlR1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtleXNPck9iamVjdEdldE93blByb3BlcnR5TmFtZXMo
Tm9kZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgJKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ1Miw2ICsxNDUyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdldEdsb2JhbFZhcmlhYmxlKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVQdXRHbG9iYWxWYXJpYWJsZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
R2V0RHluYW1pY1ZhcihOb2RlKik7CisgICAgdm9pZCBjb21waWxlR2V0VGhpc1ZhbHVlRm9yQ2Fs
bChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUHV0RHluYW1pY1ZhcihOb2RlKik7CiAgICAgdm9p
ZCBjb21waWxlR2V0Q2xvc3VyZVZhcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUHV0Q2xvc3Vy
ZVZhcihOb2RlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNzc5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Miw2ICszNTIsNyBA
QCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBSZXNv
bHZlU2NvcGU6CiAgICAgY2FzZSBSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFs
OgogICAgIGNhc2UgR2V0RHluYW1pY1ZhcjoKKyAgICBjYXNlIEdldFRoaXNWYWx1ZUZvckNhbGw6
CiAgICAgY2FzZSBQdXREeW5hbWljVmFyOgogICAgIGNhc2UgQ29tcGFyZUVxOgogICAgIGNhc2Ug
Q29tcGFyZUVxUHRyOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjc3OTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIxLDYgKzE2MjEs
OSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldER5bmFtaWNWYXI6CiAgICAgICAgICAgICBj
b21waWxlR2V0RHluYW1pY1ZhcigpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
R2V0VGhpc1ZhbHVlRm9yQ2FsbDoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRUaGlzVmFsdWVGb3JD
YWxsKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQdXREeW5hbWljVmFyOgog
ICAgICAgICAgICAgY29tcGlsZVB1dER5bmFtaWNWYXIoKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMjIwOSwzMyArMjIxMiwyOSBAQCBwcml2YXRlOgogICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMp
OwogCiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHZhbHVlVHlwZSA9IHByb3ZlblR5cGUobV9ub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBpc0NlbGxDYXNlID0gbV9v
dXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgbm90Q2VsbENhc2UgPSBtX291dC5u
ZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CiAgICAgICAgIAotICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICBpc0NlbGwodmFs
dWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1c3VhbGx5KGlzQ2VsbENhc2UpLCBy
YXJlbHkoc2xvd0Nhc2UpKTsKLSAgICAgICAgCi0gICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0
ID0gbV9vdXQuYXBwZW5kVG8oaXNDZWxsQ2FzZSwgc2xvd0Nhc2UpOwotICAgICAgICBWYWx1ZUZy
b21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZhbHVlKTsKLSAgICAgICAgbV9vdXQu
YnJhbmNoKAotICAgICAgICAgICAgbV9vdXQudGVzdElzWmVybzMyKAotICAgICAgICAgICAgICAg
IG1fb3V0LmxvYWQ4WmVyb0V4dDMyKHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdz
KSwKLSAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKE92ZXJyaWRlc1RvVGhpcykpLAot
ICAgICAgICAgICAgdXN1YWxseShjb250aW51YXRpb24pLCByYXJlbHkoc2xvd0Nhc2UpKTsKKyAg
ICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgdmFsdWVUeXBlKSwgdXN1YWxseShpc0Nl
bGxDYXNlKSwgcmFyZWx5KG5vdENlbGxDYXNlKSk7CiAgICAgICAgIAorICAgICAgICBMQmFzaWNC
bG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzQ2VsbENhc2UsIG5vdENlbGxDYXNlKTsK
KyAgICAgICAgVmFsdWVGcm9tQmxvY2sgaXNPYmplY3RSZXN1bHQgPSBtX291dC5hbmNob3IodmFs
dWUpOworICAgICAgICBtX291dC5icmFuY2goaXNPYmplY3QodmFsdWUsIHZhbHVlVHlwZSksIHVz
dWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7CisKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8obm90Q2VsbENhc2UsIHNsb3dDYXNlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sg
aXNPdGhlclJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5sb2FkUHRyKG1fb3V0LmFic29sdXRl
KGdsb2JhbE9iamVjdC0+YWRkcmVzc09mR2xvYmFsVGhpcygpKSkpOworICAgICAgICBtX291dC5i
cmFuY2goaXNPdGhlcih2YWx1ZSwgdmFsdWVUeXBlKSwgdXN1YWxseShjb250aW51YXRpb24pLCBy
YXJlbHkoc2xvd0Nhc2UpKTsKKwogICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29u
dGludWF0aW9uKTsKLSAgICAgICAgSl9KSVRPcGVyYXRpb25fR0ogZnVuY3Rpb247Ci0gICAgICAg
IGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKLSAgICAgICAgICAgIGZ1bmN0aW9u
ID0gb3BlcmF0aW9uVG9UaGlzU3RyaWN0OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmdW5j
dGlvbiA9IG9wZXJhdGlvblRvVGhpczsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3Vs
dCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIGZ1bmN0aW9uLCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCB2YWx1ZSkpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0g
bV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uVG9PYmplY3QsIHdlYWtQb2ludGVy
KGdsb2JhbE9iamVjdCksIHZhbHVlLCBtX291dC5jb25zdEludFB0cigwKSkpOwogICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRU
byhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGko
SW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291
dC5waGkoSW50NjQsIGlzT2JqZWN0UmVzdWx0LCBpc090aGVyUmVzdWx0LCBzbG93UmVzdWx0KSk7
CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlVmFsdWVBZGQoKQpAQCAtMTQ0MDMsNiArMTQ0MDIs
MjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxv
d0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmNvbnN0SW50UHRyKHVpZCksIG1fb3V0LmNv
bnN0SW50MzIobV9ub2RlLT5nZXRQdXRJbmZvKCkpKSk7CiAgICAgfQogCisgICAgdm9pZCBjb21w
aWxlR2V0VGhpc1ZhbHVlRm9yQ2FsbCgpCisgICAgeworICAgICAgICBMVmFsdWUgc2NvcGUgPSBs
b3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIHdpdGhTY29w
ZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRp
b24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHVuZGVmaW5l
ZFJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlVW5k
ZWZpbmVkKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAgICAgICAgICAgIGlzQ2VsbFdpdGhU
eXBlKHNjb3BlLCBKU1R5cGVSYW5nZSB7IEZpcnN0SlNTY29wZVR5cGUsIExhc3RKU1Njb3BlVHlw
ZSB9LCBXVEY6Om51bGxvcHQsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLAorICAgICAg
ICAgICAgdXN1YWxseShjb250aW51YXRpb24pLCByYXJlbHkod2l0aFNjb3BlQ2FzZSkpOworCisg
ICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8od2l0aFNjb3BlQ2Fz
ZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgd2l0aFNjb3BlUmVzdWx0
ID0gbV9vdXQuYW5jaG9yKHNjb3BlKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAg
ICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgdW5kZWZpbmVkUmVzdWx0LCB3aXRoU2Nv
cGVSZXN1bHQpKTsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVQdXREeW5hbWljVmFyKCkKICAg
ICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdG9yL0RTTC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Z2VuZXJhdG9yL0RTTC5yYgkocmV2aXNpb24gMjc3OTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9EU0wucmIJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsNiBAQCBt
b2R1bGUgRFNMCiAjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0S2luZC5oIgogI2luY2x1ZGUgIlB1
dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKLSNpbmNsdWRlICJUb1Ro
aXNTdGF0dXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCShy
ZXZpc2lvbiAyNzc5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5q
ZWN0ZWRTY3JpcHRIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDcgKzEzNyw3IEBAIEpT
VmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ28KICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgSlNP
YmplY3QqIG9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSk7CisgICAg
SlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TbG9w
cHlNb2RlVGhpcyhnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBqc1N0cmluZyh2bSwgSlNPYmpl
Y3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUob2JqZWN0KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYyLDYgKzQ2Miw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKIAogICAgICAgICBERUZJTkVfT1Aob3BfcmVzb2x2
ZV9zY29wZSkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9mcm9tX3Njb3BlKQorICAgICAgICBE
RUZJTkVfT1Aob3BfZ2V0X3RoaXNfdmFsdWVfZm9yX2NhbGwpCiAgICAgICAgIERFRklORV9PUChv
cF9wdXRfdG9fc2NvcGUpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfZnJvbV9hcmd1bWVudHMp
CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfdG9fYXJndW1lbnRzKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCShyZXZpc2lvbiAyNzc5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MjcsNiArNzI3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgdm9pZCBlbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9mcm9tX3Njb3BlKGNvbnN0IEluc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfdGhpc192YWx1ZV9mb3JfY2FsbChjb25z
dCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3RvX3Njb3BlKGNvbnN0
IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVudHMo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF90b19hcmd1bWVu
dHMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEx
NywyMiArMTExNyw2IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0IEluc3QK
ICAgICBlbWl0U3RvcmVDZWxsKGJ5dGVjb2RlLm1fZHN0LCByZXN1bHRSZWcpOwogfQogCi12b2lk
IEpJVDo6ZW1pdF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCi17Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1Ro
aXM+KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
ayk7Ci0gICAgU3RydWN0dXJlSUQqIGNhY2hlZFN0cnVjdHVyZUlEID0gJm1ldGFkYXRhLm1fY2Fj
aGVkU3RydWN0dXJlSUQ7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHRoaXNSZWdpc3RlciA9IGJ5dGVj
b2RlLm1fc3JjRHN0OwotCi0gICAgZW1pdExvYWQodGhpc1JlZ2lzdGVyLCByZWdUMywgcmVnVDIp
OwotCi0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RDZWxsKHJlZ1QzKSk7Ci0gICAgYWRkU2xv
d0Nhc2UoYnJhbmNoSWZOb3RUeXBlKHJlZ1QyLCBGaW5hbE9iamVjdFR5cGUpKTsKLSAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsK
LSAgICBsb2FkMzIoY2FjaGVkU3RydWN0dXJlSUQsIHJlZ1QyKTsKLSAgICBhZGRTbG93Q2FzZShi
cmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QwLCByZWdUMikpOwotfQotCiB2b2lkIEpJVDo6ZW1pdF9v
cF9jaGVja190ZHooY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENoZWNrVGR6PigpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAy
Nzc5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjE2LDIwICsxMjE2LDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Nj
b3BlKGNvbnN0IEluc3RydQogICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZWdUMCk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKLXsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRv
VGhpcz4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJs
b2NrKTsKLSAgICBTdHJ1Y3R1cmVJRCogY2FjaGVkU3RydWN0dXJlSUQgPSAmbWV0YWRhdGEubV9j
YWNoZWRTdHJ1Y3R1cmVJRDsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1f
c3JjRHN0LCByZWdUMSk7Ci0KLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEp
OwotCi0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RUeXBlKHJlZ1QxLCBGaW5hbE9iamVjdFR5
cGUpKTsKLSAgICBsb2FkMzIoY2FjaGVkU3RydWN0dXJlSUQsIHJlZ1QyKTsKLSAgICBhZGRTbG93
Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgcmVnVDIpKTsKLX0KLQogdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcENyZWF0ZVRoaXM+KCk7CkBAIC0yMDE0LDYg
KzIwMDAsNDQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9vZihjb25zdAogICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIHJlc3VsdFJlZ3MpOwogfQog
Cit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfdGhpc192YWx1ZV9mb3JfY2FsbChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0VGhpc1ZhbHVlRm9yQ2FsbD4oKTsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyhyZWdUMCk7CisjZWxzZQorICAgIEpTVmFs
dWVSZWdzIHZhbHVlUmVncyhyZWdUMSwgcmVnVDApOworI2VuZGlmCisgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihieXRlY29kZS5tX3Njb3BlLCB2YWx1ZVJlZ3MpOworCisgICAgSnVtcCBpc1dp
dGhTY29wZSA9IGJyYW5jaElmTm90VHlwZSh2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBKU1R5cGVS
YW5nZSB7IEZpcnN0SlNTY29wZVR5cGUsIExhc3RKU1Njb3BlVHlwZSB9KTsKKyAgICBtb3ZlVHJ1
c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIHZhbHVlUmVncyk7CisgICAgaXNXaXRoU2NvcGUubGlu
ayh0aGlzKTsKKworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIHZh
bHVlUmVncyk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcFRvVGhpcz4oKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEpTVmFs
dWVSZWdzIHZhbHVlUmVncyhyZWdUMCk7CisjZWxzZQorICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVn
cyhyZWdUMSwgcmVnVDApOworI2VuZGlmCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX3NyY0RzdCwgdmFsdWVSZWdzKTsKKworICAgIEp1bXAgbm90Q2VsbCA9IGJyYW5jaElm
Tm90Q2VsbCh2YWx1ZVJlZ3MpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90T2JqZWN0KHZh
bHVlUmVncy5wYXlsb2FkR1BSKCkpKTsKKyAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisKKyAgICBu
b3RDZWxsLmxpbmsodGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RPdGhlcih2YWx1
ZVJlZ3MsIHJlZ1QzKSk7CisgICAgc3RvcmVUcnVzdGVkVmFsdWUobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpLT5nbG9iYWxUaGlzKCksIGFkZHJlc3NGb3IoYnl0ZWNvZGUubV9zcmNEc3QpKTsK
KworICAgIGRvbmUubGluayh0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRp
ZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNzc5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTE1LDcgKzI5MTUsOCBA
QCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0RnJvCiAgICAgLy8gTW9kdWxl
VmFyIGlzIGFsd2F5cyBjb252ZXJ0ZWQgdG8gQ2xvc3VyZVZhciBmb3IgZ2V0X2Zyb21fc2NvcGUu
CiAgICAgQVNTRVJUKGdldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSAhPSBNb2R1bGVWYXIpOwogCi0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZShzY29wZS0+
Z2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgaWRlbnQsIFsmXSAoYm9vbCBmb3VuZCwgUHJv
cGVydHlTbG90JiBzbG90KSAtPiBKU1ZhbHVlIHsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChKU1Nj
b3BlOjpyZWNlaXZlckZvclNjb3BlKHNjb3BlKSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OkdldCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZShzY29wZS0+Z2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3Qs
IFsmXSAoYm9vbCBmb3VuZCwgUHJvcGVydHlTbG90JikgLT4gSlNWYWx1ZSB7CiAgICAgICAgIGlm
ICghZm91bmQpIHsKICAgICAgICAgICAgIGlmIChnZXRQdXRJbmZvLnJlc29sdmVNb2RlKCkgPT0g
VGhyb3dJZk5vdEZvdW5kKQogICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihnbG9iYWxPYmpl
Y3QsIGlkZW50KSk7CkBAIC0yOTg2LDcgKzI5ODcsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uUHV0VG9TCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChzY29wZSwgZ2V0UHV0SW5mby5lY21hTW9kZSgpLmlzU3RyaWN0KCksIFB1
dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlhbGl6YXRpb24oZ2V0UHV0SW5m
by5pbml0aWFsaXphdGlvbk1vZGUoKSkpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KEpTU2Nv
cGU6OnJlY2VpdmVyRm9yU2NvcGUoc2NvcGUpLCBnZXRQdXRJbmZvLmVjbWFNb2RlKCkuaXNTdHJp
Y3QoKSwgUHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihn
ZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7CiAgICAgc2NvcGUtPm1ldGhvZFRhYmxl
KHZtKS0+cHV0KHNjb3BlLCBnbG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAg
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB2b2lkKCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lv
biAyNzc5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTM5LDcgKzIxMzksOCBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZ2V0X2Zyb21fCiAgICAgLy8gTW9kdWxlVmFyIGlzIGFsd2F5cyBjb252
ZXJ0ZWQgdG8gQ2xvc3VyZVZhciBmb3IgZ2V0X2Zyb21fc2NvcGUuCiAgICAgQVNTRVJUKG1ldGFk
YXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpICE9IE1vZHVsZVZhcik7CiAKLSAgICBMTElO
VF9SRVRVUk4oc2NvcGUtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBbJl0g
KGJvb2wgZm91bmQsIFByb3BlcnR5U2xvdCYgc2xvdCkgLT4gSlNWYWx1ZSB7CisgICAgUHJvcGVy
dHlTbG90IHNsb3QoSlNTY29wZTo6cmVjZWl2ZXJGb3JTY29wZShzY29wZSksIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAgIExMSU5UX1JFVFVSTihzY29wZS0+Z2V0
UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QsIFsmXSAoYm9vbCBmb3VuZCwg
UHJvcGVydHlTbG90JikgLT4gSlNWYWx1ZSB7CiAgICAgICAgIGlmICghZm91bmQpIHsKICAgICAg
ICAgICAgIGlmIChtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lm
Tm90Rm91bmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihnbG9iYWxPYmpl
Y3QsIGlkZW50KSk7CkBAIC0yMTk4LDcgKzIxOTksNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcHV0X3RvX3NjCiAgICAgaWYgKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZl
TW9kZSgpID09IFRocm93SWZOb3RGb3VuZCAmJiAhaGFzUHJvcGVydHkpCiAgICAgICAgIExMSU5U
X1RIUk9XKGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZ2xvYmFsT2JqZWN0LCBpZGVudCkp
OwogCi0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5m
by5lY21hTW9kZSgpLmlzU3RyaWN0KCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQs
IGlzSW5pdGlhbGl6YXRpb24obWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9k
ZSgpKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNTY29wZTo6cmVjZWl2ZXJGb3JTY29w
ZShzY29wZSksIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpLmlzU3RyaWN0KCksIFB1
dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlhbGl6YXRpb24obWV0YWRhdGEu
bV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7CiAgICAgc2NvcGUtPm1ldGhvZFRh
YmxlKHZtKS0+cHV0KHNjb3BlLCBnbG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAg
ICAgCiAgICAgQ29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwoZ2xvYmFs
T2JqZWN0LCBjb2RlQmxvY2ssIGJ5dGVjb2RlLCBzY29wZSwgc2xvdCwgaWRlbnQpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC04
MTgsMTQgKzgxOCwyNiBAQCBsbGludE9wV2l0aFJldHVybihvcF9nZXRfc2NvcGUsIE9wR2V0U2Nv
CiBlbmQpCiAKIAotbGxpbnRPcFdpdGhNZXRhZGF0YShvcF90b190aGlzLCBPcFRvVGhpcywgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCitsbGludE9wKG9wX3Rv
X3RoaXMsIE9wVG9UaGlzLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKICAgICBnZXQobV9z
cmNEc3QsIHQwKQotICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9w
VG9UaGlzU2xvdworICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBiaW5l
cSB0MSwgQ2VsbFRhZywgLm9wVG9UaGlzTm90Q2VsbAogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQwCi0gICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBGaW5hbE9iamVj
dFR5cGUsIC5vcFRvVGhpc1Nsb3cKLSAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgbG9hZGkgT3BU
b1RoaXM6Ok1ldGFkYXRhOjptX2NhY2hlZFN0cnVjdHVyZUlEW3QyXSwgdDIKLSAgICBiaW5lcSBK
U0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MiwgLm9wVG9UaGlzU2xvdworICAgIGJiYiBKU0Nl
bGw6Om1fdHlwZVt0MF0sIE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgp
CisKKy5vcFRvVGhpc05vdENlbGw6CisgICAgb3JpIDEsIHQxCisgICAgYmllcSB0MSwgTnVsbFRh
ZywgLm9wVG9UaGlzVW5kZWZpbmVkT3JOdWxsCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhf
dG9fdGhpcykKKyAgICBkaXNwYXRjaCgpCisKKy5vcFRvVGhpc1VuZGVmaW5lZE9yTnVsbDoKKyAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFs
T2JqZWN0W3QyXSwgdDIKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9nbG9iYWxUaGlzW3Qy
XSwgdDIKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3Rv
cmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCiAgICAgZGlzcGF0Y2goKQogCiAub3BU
b1RoaXNTbG93OgpAQCAtMjU1NCw2ICsyNTY2LDE4IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
Z2V0X2Zyb21fc2NvcGUsIE8KIGVuZCkKIAogCitsbGludE9wV2l0aFJldHVybihvcF9nZXRfdGhp
c192YWx1ZV9mb3JfY2FsbCwgT3BHZXRUaGlzVmFsdWVGb3JDYWxsLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgcmV0dXJuKQorICAgIGdldChtX3Njb3BlLCB0MCkKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MF0sIEZp
cnN0SlNTY29wZVR5cGUsIC5pc1dpdGhTY29wZQorICAgIGJiYSBKU0NlbGw6Om1fdHlwZVt0MF0s
IExhc3RKU1Njb3BlVHlwZSwgLmlzV2l0aFNjb3BlCisgICAgcmV0dXJuKFVuZGVmaW5lZFRhZywg
MCkKKworLmlzV2l0aFNjb3BlOgorICAgIHJldHVybihDZWxsVGFnLCB0MCkKK2VuZCkKKworCiBs
bGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF90b19zY29wZSwgT3BQdXRUb1Njb3BlLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBtYWNybyBwdXRQcm9w
ZXJ0eSgpCiAgICAgICAgIGdldChtX3ZhbHVlLCB0MSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lv
biAyNzc5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtODI4LDE1ICs4MjgsMjYgQEAgbGxpbnRPcFdp
dGhSZXR1cm4ob3BfZ2V0X3Njb3BlLCBPcEdldFNjbwogZW5kKQogCiAKLWxsaW50T3BXaXRoTWV0
YWRhdGEob3BfdG9fdGhpcywgT3BUb1RoaXMsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZGF0YSwgcmV0dXJuKQorbGxpbnRPcChvcF90b190aGlzLCBPcFRvVGhpcywgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gpCiAgICAgZ2V0KG1fc3JjRHN0LCB0MCkKLSAgICBsb2FkcSBbY2Zy
LCB0MCwgOF0sIHQwCi0gICAgYnRxbnogdDAsIG5vdENlbGxNYXNrLCAub3BUb1RoaXNTbG93Ci0g
ICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBGaW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Ns
b3cKLSAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MQotICAgIG1ldGFkYXRh
KHQyLCB0MykKLSAgICBsb2FkaSBPcFRvVGhpczo6TWV0YWRhdGE6Om1fY2FjaGVkU3RydWN0dXJl
SURbdDJdLCB0MgotICAgIGJpbmVxIHQxLCB0MiwgLm9wVG9UaGlzU2xvdworICAgIGxvYWRxIFtj
ZnIsIHQwLCA4XSwgdDEKKyAgICBidHFueiB0MSwgbm90Q2VsbE1hc2ssIC5vcFRvVGhpc05vdENl
bGwKKyAgICBiYmIgSlNDZWxsOjptX3R5cGVbdDFdLCBPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93
CisgICAgZGlzcGF0Y2goKQorCisub3BUb1RoaXNOb3RDZWxsOgorICAgIGFuZHEgflRhZ1VuZGVm
aW5lZCwgdDEKKyAgICBicWVxIHQxLCBWYWx1ZU51bGwsIC5vcFRvVGhpc1VuZGVmaW5lZE9yTnVs
bAorICAgICMgYnFlcSB0MSwgVmFsdWVVbmRlZmluZWQsIC5vcFRvVGhpc1VuZGVmaW5lZE9yTnVs
bAorICAgICMgYnFlcSB0MSwgVmFsdWVOdWxsLCAub3BUb1RoaXNVbmRlZmluZWRPck51bGwKKyAg
ICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF90b190aGlzKQorICAgIGRpc3BhdGNoKCkKKworLm9w
VG9UaGlzVW5kZWZpbmVkT3JOdWxsOgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAg
IGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDFdLCB0MQorICAgIGxvYWRwIEpTR2xv
YmFsT2JqZWN0OjptX2dsb2JhbFRoaXNbdDFdLCB0MQorICAgIHN0b3JlcSB0MSwgW2NmciwgdDAs
IDhdCiAgICAgZGlzcGF0Y2goKQogCiAub3BUb1RoaXNTbG93OgpAQCAtMjY4NCw2ICsyNjk1LDE3
IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE8KIGVuZCkKIAogCits
bGludE9wV2l0aFJldHVybihvcF9nZXRfdGhpc192YWx1ZV9mb3JfY2FsbCwgT3BHZXRUaGlzVmFs
dWVGb3JDYWxsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQorICAgIGxvYWRW
YXJpYWJsZShnZXQsIG1fc2NvcGUsIHQwKQorICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MF0sIEZp
cnN0SlNTY29wZVR5cGUsIC5pc1dpdGhTY29wZQorICAgIGJiYSBKU0NlbGw6Om1fdHlwZVt0MF0s
IExhc3RKU1Njb3BlVHlwZSwgLmlzV2l0aFNjb3BlCisgICAgcmV0dXJuKFZhbHVlVW5kZWZpbmVk
KQorCisuaXNXaXRoU2NvcGU6CisgICAgcmV0dXJuKHQwKQorZW5kKQorCisKIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfcHV0X3RvX3Njb3BlLCBPcFB1dFRvU2NvcGUsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIG1hY3JvIHB1dFByb3BlcnR5KCkKICAg
ICAgICAgZ2V0KG1fdmFsdWUsIHQxKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMjc3OTQ4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NDEsNiArNTQxLDggQEAgY29uc3QgRmluYWxPYmplY3RUeXBlID0gY29u
c3RleHByIEZpbmFsTwogY29uc3QgSlNGdW5jdGlvblR5cGUgPSBjb25zdGV4cHIgSlNGdW5jdGlv
blR5cGUKIGNvbnN0IEFycmF5VHlwZSA9IGNvbnN0ZXhwciBBcnJheVR5cGUKIGNvbnN0IERlcml2
ZWRBcnJheVR5cGUgPSBjb25zdGV4cHIgRGVyaXZlZEFycmF5VHlwZQorY29uc3QgRmlyc3RKU1Nj
b3BlVHlwZSA9IGNvbnN0ZXhwciBGaXJzdEpTU2NvcGVUeXBlCitjb25zdCBMYXN0SlNTY29wZVR5
cGUgPSBjb25zdGV4cHIgTGFzdEpTU2NvcGVUeXBlCiBjb25zdCBQcm94eU9iamVjdFR5cGUgPSBj
b25zdGV4cHIgUHJveHlPYmplY3RUeXBlCiBjb25zdCBIZWFwQmlnSW50VHlwZSA9IGNvbnN0ZXhw
ciBIZWFwQmlnSW50VHlwZQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzc5NDgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU5MSw3ICs1OTEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNU
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAKICAgICAv
LyAxLiBMZXQgYXJyYXkgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2JqZWN0IG9uIHRoZSB0
aGlzIHZhbHVlLgogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0
KGdsb2JhbE9iamVjdCk7CkBAIC02NjksOSArNjY5LDggQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGFycmF5UHJvdG9GdW5jVAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzdHJpY3QoKSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1
ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHVpbnQ2NF90IGxlbmd0
aCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0b0xlbmd0aChnbG9iYWxPYmplY3QsIHRoaXNPYmpl
Y3QpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
QEAgLTc2NCw3ICs3NjMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1
bmNKCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8g
MS4gTGV0IE8gYmUgPyBUb09iamVjdCh0aGlzIHZhbHVlKS4KLSAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlz
T2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwog
ICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7
CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRK
U1ZhbHVlKCk7CkBAIC04MjAsNyArODE5LDcgQEAgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNyZWF0
ZUFycmF5SXRlcmF0bwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlz
T2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwog
ICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7
CiAgICAgVU5VU0VEX1BBUkFNKHNjb3BlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3Qp
KQpAQCAtODQ5LDcgKzg0OCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJheVByb3Rv
RnVuY1AKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3Qo
KSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogCiAg
ICAgaWYgKGlzSlNBcnJheSh0aGlzVmFsdWUpKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShhc0FycmF5KHRoaXNWYWx1ZSktPnBvcChnbG9iYWxPYmpl
Y3QpKSk7CkBAIC04ODcsNyArODg2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5
UHJvdG9GdW5jUAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpz
dHJpY3QoKSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OwogCiAgICAgaWYgKExJS0VMWShpc0pTQXJyYXkodGhpc1ZhbHVlKSAmJiBjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKSA9PSAxKSkgewogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXko
dGhpc1ZhbHVlKTsKQEAgLTkyMyw3ICs5MjIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
YXJyYXlQcm90b0Z1bmNSCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlz
T2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01B
TW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRo
aXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0
KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4gZW5jb2Rl
ZEpTVmFsdWUoKTsKQEAgLTEwMjUsNyArMTAyNCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihhcnJheVByb3RvRnVuY1MKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiB0
aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01B
TW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRo
aXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAg
ICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAg
ICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUo
KTsKQEAgLTEwNTIsNyArMTA1MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJheVBy
b3RvRnVuY1MKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJh
eS5wcm90b3R5cGUuc2xpY2UKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2JqZWN0KiB0aGlz
T2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9k
ZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNP
YmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAg
RVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTExNiw3ICsx
MTE1LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jUwogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChn
bG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29w
ZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkK
ICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xMjIyLDcgKzEyMjEsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNVCiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8vIDE1LjQuNC4xMwogCi0gICAgSlNPYmpl
Y3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVj
dCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmop
OwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNW
YWx1ZSgpOwpAQCAtMTM1Nyw3ICsxMzU2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFy
cmF5UHJvdG9GdW5jSQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAogICAgIC8vIDE1LjQuNC4xNAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FT
U0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtF
TFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTM5Nyw3ICsxMzk2LDcg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jTAogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDE1LjQuNC4xNQotICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09
ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICBy
ZXR1cm4geyB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZv
LmgJKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Ns
YXNzSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw5ICs3MSw2IEBAIHN0cnVjdCBNZXRob2RU
YWJsZSB7CiAgICAgdXNpbmcgRG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2tGdW5jdGlvblB0ciA9
IHZvaWQgKCopKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFB1dFBy
b3BlcnR5U2xvdCYpOwogICAgIERvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrRnVuY3Rpb25QdHIg
TUVUSE9EX1RBQkxFX0VOVFJZKGRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrKTsKIAotICAgIHVz
aW5nIFRvVGhpc0Z1bmN0aW9uUHRyID0gSlNWYWx1ZSAoKikoSlNDZWxsKiwgSlNHbG9iYWxPYmpl
Y3QqLCBFQ01BTW9kZSk7Ci0gICAgVG9UaGlzRnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZ
KHRvVGhpcyk7Ci0KICAgICB1c2luZyBHZXRPd25Qcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgPSB2
b2lkICgqKShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lQXJyYXkmLCBE
b250RW51bVByb3BlcnRpZXNNb2RlKTsKICAgICBHZXRPd25Qcm9wZXJ0eU5hbWVzRnVuY3Rpb25Q
dHIgTUVUSE9EX1RBQkxFX0VOVFJZKGdldE93blByb3BlcnR5TmFtZXMpOwogICAgIEdldE93blBy
b3BlcnR5TmFtZXNGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoZ2V0T3duU3BlY2lhbFBy
b3BlcnR5TmFtZXMpOwpAQCAtMTU2LDcgKzE1Myw2IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAg
ICAgICAgICZDbGFzc05hbWU6OmdldE93blByb3BlcnR5U2xvdCwgXAogICAgICAgICAmQ2xhc3NO
YW1lOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4LCBcCiAgICAgICAgICZDbGFzc05hbWU6OmRv
UHV0UHJvcGVydHlTZWN1cml0eUNoZWNrLCBcCi0gICAgICAgICZDbGFzc05hbWU6OnRvVGhpcywg
XAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eU5hbWVzLCBcCiAgICAgICAgICZD
bGFzc05hbWU6OmdldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzLCBcCiAgICAgICAgICZDbGFzc05h
bWU6OmN1c3RvbUhhc0luc3RhbmNlLCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0NiwyOCArMzQ2LDggQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNs
b3dfcGF0aF90bwogewogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxP
cFRvVGhpcz4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVC
bG9jayk7CiAgICAgSlNWYWx1ZSB2MSA9IEdFVChieXRlY29kZS5tX3NyY0RzdCkuanNWYWx1ZSgp
OwotICAgIGlmICh2MS5pc0NlbGwoKSkgewotICAgICAgICBTdHJ1Y3R1cmVJRCBteVN0cnVjdHVy
ZUlEID0gdjEuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCk7Ci0gICAgICAgIFN0cnVjdHVyZUlEIG90
aGVyU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEOwotICAgICAgICBp
ZiAobXlTdHJ1Y3R1cmVJRCAhPSBvdGhlclN0cnVjdHVyZUlEKSB7Ci0gICAgICAgICAgICBpZiAo
b3RoZXJTdHJ1Y3R1cmVJRCkKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3RvVGhpc1N0YXR1
cyA9IFRvVGhpc0NvbmZsaWN0ZWQ7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVj
dHVyZUlEID0gbXlTdHJ1Y3R1cmVJRDsKLSAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVy
KGNvZGVCbG9jaywgdm0uZ2V0U3RydWN0dXJlKG15U3RydWN0dXJlSUQpKTsKLSAgICAgICAgfQot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIG1ldGFkYXRhLm1fdG9UaGlzU3RhdHVzID0gVG9UaGlzQ29u
ZmxpY3RlZDsKLSAgICAgICAgbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCA9IDA7Ci0gICAg
fQotICAgIC8vIE5vdGU6IFdlIG9ubHkgbmVlZCB0byBkbyB0aGlzIHZhbHVlIHByb2ZpbGluZyBo
ZXJlIG9uIHRoZSBzbG93IHBhdGguIFRoZSBmYXN0IHBhdGgKLSAgICAvLyBqdXN0IHJldHVybnMg
dGhlIGlucHV0IHRvIHRvX3RoaXMgaWYgdGhlIHN0cnVjdHVyZSBjaGVjayBzdWNjZWVkcy4gSWYg
dGhlIHN0cnVjdHVyZQotICAgIC8vIGNoZWNrIHN1Y2NlZWRzLCBkb2luZyB2YWx1ZSBwcm9maWxp
bmcgaGVyZSBpcyBlcXVpdmFsZW50IHRvIGRvaW5nIGl0IHdpdGggYSBwb3RlbnRpYWxseQotICAg
IC8vIGRpZmZlcmVudCBvYmplY3QgdGhhdCBzdGlsbCBoYXMgdGhlIHNhbWUgc3RydWN0dXJlIG9u
IHRoZSBmYXN0IHBhdGggc2luY2UgaXQnbGwgcHJvZHVjZQotICAgIC8vIHRoZSBzYW1lIFNwZWN1
bGF0ZWRUeXBlLiBUaGVyZWZvcmUsIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdmFsdWUg
cHJvZmlsaW5nIG9uIHRoZQotICAgIC8vIGZhc3QgcGF0aC4KLSAgICBhdXRvIHZhbHVlID0gdjEu
dG9UaGlzKGdsb2JhbE9iamVjdCwgYnl0ZWNvZGUubV9lY21hTW9kZSk7CisgICAgSlNPYmplY3Qq
IHZhbHVlID0gdjEudG9TbG9wcHlNb2RlVGhpcyhnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9X
SVRIX1BST0ZJTElOR19DVVNUT00oYnl0ZWNvZGUubV9zcmNEc3QsIHZhbHVlLCBQUk9GSUxFX1ZB
TFVFKHZhbHVlKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bXBsZXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbXBsZXRpb24uY3BwCShyZXZpc2lvbiAyNzc5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMywx
NSBAQCBSZWZQdHI8Q2FjaGVkQnl0ZWNvZGU+IGdlbmVyYXRlTW9kdWxlQnl0CiAgICAgcmV0dXJu
IHNlcmlhbGl6ZUJ5dGVjb2RlKHZtLCB1bmxpbmtlZENvZGVCbG9jaywgc291cmNlLCBTb3VyY2VD
b2RlVHlwZTo6TW9kdWxlVHlwZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgZmQsIGVycm9yLCB7
IH0pOwogfQogCitzdGF0aWMgaW5saW5lIEpTT2JqZWN0KiB0b0dsb2JhbFRoaXMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVlIHx8
IHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3Qt
Pmdsb2JhbFRoaXMoKTsKKyAgICBpZiAodmFsdWUuaXNPYmplY3QoKSAmJiBhc09iamVjdCh2YWx1
ZSktPmlzR2xvYmFsT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPih2YWx1ZSktPmdsb2JhbFRoaXMoKTsKKyAgICByZXR1cm4gdmFsdWUudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKK30KKwogSlNWYWx1ZSBldmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtl
ZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CkBAIC0xMzEsOSArMTQwLDcgQEAgSlNWYWx1ZSBldmFsdWF0ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21TdHJpbmdUYWJs
ZSgpID09IFRocmVhZDo6Y3VycmVudCgpLmF0b21TdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNF
X0FTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCi0gICAgaWYg
KCF0aGlzVmFsdWUgfHwgdGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHRo
aXNWYWx1ZSA9IGdsb2JhbE9iamVjdDsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGpzQ2FzdDxK
U09iamVjdCo+KHRoaXNWYWx1ZS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5
KCkpKTsKKyAgICBKU09iamVjdCogdGhpc09iaiA9IHRvR2xvYmFsVGhpcyhnbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB2bS5pbnRlcnByZXRlci0+ZXhlY3V0
ZVByb2dyYW0oc291cmNlLCBnbG9iYWxPYmplY3QsIHRoaXNPYmopOwogCiAgICAgaWYgKHNjb3Bl
LmV4Y2VwdGlvbigpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc3OTQ4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Miw3
ICszNTIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZGF0ZVByb3RvRnVuY1RvCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlz
VmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkRhdGUucHJvdG90eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0
ZWQgfHRoaXN8IHRvIGJlIGFuIG9iamVjdC4iKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1ZSk7CkBAIC04NjYsOCArODY2LDcgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGRhdGVQcm90b0Z1bmNHZQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwotICAgIGF1
dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1Zh
bHVlKTsKKyAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNl
Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0Rh
dGVPYmopKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlKTsKIApAQCAtODgzLDggKzg4Miw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRl
UHJvdG9GdW5jVG8KIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6
c3RyaWN0KCkpOwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSB0aW1lVmFsdWUgPSBvYmplY3QtPnRv
UHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVtYmVyKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3
Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oZXJyb3JQcm90b0Z1bmNUCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgLy8gMS4gTGV0IE8gYmUgdGhlIHRoaXMgdmFsdWUuCi0gICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzdHJpY3QoKSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogCiAgICAgLy8gMi4gSWYgVHlwZShPKSBpcyBub3QgT2JqZWN0LCB0aHJvdyBh
IFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAkocmV2aXNpb24gMjc3
OTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQ2Vs
bDsKICAgICB1c2luZyBEaWdpdCA9IFVDUFVSZWdpc3RlcjsKIAotICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVj
dHVyZUlzSW1tb3J0YWwgfCBPdmVycmlkZXNUb1RoaXM7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJl
SXNJbW1vcnRhbDsKICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkQmlnSW50OwogCiAgICAgREVDTEFS
RV9WSVNJVF9DSElMRFJFTjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWUuY3BwCShyZXZpc2lvbiAyNzc5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDI2ICsxNjQs
NiBAQCBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3RTbG93Q2FzZShKU0dsCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLUpTVmFsdWUgSlNWYWx1ZTo6dG9UaGlzU2xvd0Nhc2UoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUKCFpc0NlbGwoKSk7Ci0KLSAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAg
cmV0dXJuICp0aGlzOwotCi0gICAgaWYgKGlzSW50MzIoKSB8fCBpc0RvdWJsZSgpKQotICAgICAg
ICByZXR1cm4gY29uc3RydWN0TnVtYmVyKGdsb2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKLSAgICBp
ZiAoaXNUcnVlKCkgfHwgaXNGYWxzZSgpKQotICAgICAgICByZXR1cm4gY29uc3RydWN0Qm9vbGVh
bkZyb21JbW1lZGlhdGVCb29sZWFuKGdsb2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKLSNpZiBVU0Uo
QklHSU5UMzIpCi0gICAgaWYgKGlzQmlnSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIEJpZ0ludE9i
amVjdDo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCAqdGhpcyk7Ci0j
ZW5kaWYKLQotICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKLSAgICByZXR1cm4gZ2xv
YmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7Ci19Ci0KIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVz
aXplUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMjc3OTQ4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsNyAr
MzMyLDcgQEAgcHVibGljOgogICAgIGJvb2wgcHV0QnlJbmRleChKU0dsb2JhbE9iamVjdCosIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICBK
U1ZhbHVlIGdldFByb3RvdHlwZShKU0dsb2JhbE9iamVjdCopIGNvbnN0OwotICAgIEpTVmFsdWUg
dG9UaGlzKEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUpIGNvbnN0OworICAgIEpTT2JqZWN0KiB0
b1Nsb3BweU1vZGVUaGlzKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKICAgICBzdGF0aWMgYm9v
bCBlcXVhbChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogICAgIHN0
YXRpYyBib29sIGVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1Zh
bHVlIHYyKTsKQEAgLTUyMSw3ICs1MjEsNiBAQCBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9QUklW
QVRFIEpTU3RyaW5nKiB0b1N0cmluZ1Nsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiwgYm9vbCByZXR1
cm5FbXB0eVN0cmluZ09uRXJyb3IpIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFdURjo6
U3RyaW5nIHRvV1RGU3RyaW5nU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICBK
U19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdG9PYmplY3RTbG93Q2FzZShKU0dsb2JhbE9iamVj
dCopIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdG9UaGlzU2xvd0Nhc2Uo
SlNHbG9iYWxPYmplY3QqLCBFQ01BTW9kZSkgY29uc3Q7CiAKICAgICBFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yIHU7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShyZXZpc2lvbiAyNzc5NDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05
MjksOSArOTI5LDkgQEAgaW5saW5lIGNvbnN0IENsYXNzSW5mbyogSlNWYWx1ZTo6Y2xhc3NJbgog
ICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT5jbGFzc0luZm8odm0pIDogbnVsbHB0cjsK
IH0KIAotaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6dG9UaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKSBjb25zdAoraW5saW5lIEpTT2JqZWN0KiBKU1Zh
bHVlOjp0b1Nsb3BweU1vZGVUaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPm1ldGhvZFRhYmxlKGdldFZNKGds
b2JhbE9iamVjdCkpLT50b1RoaXMoYXNDZWxsKCksIGdsb2JhbE9iamVjdCwgZWNtYU1vZGUpIDog
dG9UaGlzU2xvd0Nhc2UoZ2xvYmFsT2JqZWN0LCBlY21hTW9kZSk7CisgICAgcmV0dXJuIGlzVW5k
ZWZpbmVkT3JOdWxsKCkgPyBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKSA6IHRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29u
c3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNp
b24gMjc3OTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQyLDEzICsxNDIsNiBAQCBib29sIEpTQ2VsbDo6ZGVsZXRlUHJv
cGVydHlCeUluZGV4KEpTQ2VsCiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGds
b2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LCBnbG9i
YWxPYmplY3QsIGlkZW50aWZpZXIpOwogfQogCi1KU1ZhbHVlIEpTQ2VsbDo6dG9UaGlzKEpTQ2Vs
bCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNtYU1vZGUp
Ci17Ci0gICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCi0gICAgICAgIHJldHVybiBjZWxsOwot
ICAgIHJldHVybiBjZWxsLT50b09iamVjdChnbG9iYWxPYmplY3QpOwotfQotCiBKU1ZhbHVlIEpT
Q2VsbDo6dG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJlZmVycmVk
UHJpbWl0aXZlVHlwZSBwcmVmZXJyZWRUeXBlKSBjb25zdAogewogICAgIGlmIChpc1N0cmluZygp
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDI3
Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xODUsOCArMTg1LDYgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxs
KiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpOwogCi0gICAgc3RhdGlj
IEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUpOwotCiAg
ICAgc3RhdGljIGJvb2wgY2FuVXNlRmFzdEdldE93blByb3BlcnR5KGNvbnN0IFN0cnVjdHVyZSYp
OwogICAgIEpTVmFsdWUgZmFzdEdldE93blByb3BlcnR5KFZNJiwgU3RydWN0dXJlJiwgUHJvcGVy
dHlOYW1lKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCShyZXZpc2lvbiAyNzc5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjE0LDkgKzEyMTQs
MTEgQEAgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5TmVnYXRpdmVJbgogICAgIHJldHVy
biBBcnJheUFsbG9jYXRpb25Qcm9maWxlOjp1cGRhdGVMYXN0QWxsb2NhdGlvbkZvcihwcm9maWxl
LCBjb25zdHJ1Y3RBcnJheU5lZ2F0aXZlSW5kZXhlZChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
dmFsdWVzLCBsZW5ndGgpKTsKIH0KIAotaW5saW5lIEpTT2JqZWN0KiBKU1Njb3BlOjpnbG9iYWxU
aGlzKCkKLXsgCi0gICAgcmV0dXJuIGdsb2JhbE9iamVjdCgpLT5nbG9iYWxUaGlzKCk7Citpbmxp
bmUgSlNPYmplY3QqIEpTU2NvcGU6OnJlY2VpdmVyRm9yU2NvcGUoSlNPYmplY3QqIHNjb3BlKQor
eworICAgIGlmIChzY29wZS0+dHlwZSgpID09IEdsb2JhbE9iamVjdFR5cGUpCisgICAgICAgIHJl
dHVybiBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihzY29wZSktPmdsb2JhbFRoaXMoKTsKKyAgICBy
ZXR1cm4gc2NvcGU7CiB9CiAKIGlubGluZSBKU09iamVjdCogSlNHbG9iYWxPYmplY3Q6Omdsb2Jh
bFRoaXMoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMjc3OTQ4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDAsOCArNzAwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGdsb2JhbEZ1bmNNYWtlVAogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZ2xvYmFs
RnVuY1Byb3RvR2V0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQogewotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlLmdldFByb3RvdHlwZShnbG9iYWxPYmplY3Qp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkuZ2V0
UHJvdG90eXBlKGdsb2JhbE9iamVjdCkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
Z2xvYmFsRnVuY1Byb3RvU2V0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzA5LDcgKzcwOCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihnbG9iYWxGdW5jUHJvdG8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlOjpzdHJpY3QoKSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgT2JqZWN0
UHJvdG9DYWxsZWRPbk51bGxPclVuZGVmaW5lZEVycm9yKTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMjc3OTQ4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODAzLDcgKzE4MDMsNyBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVD
aGVjCiAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2hvdWxk
VGhyb3dJZkNhbnRTZXQsICJDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiBpbW11dGFibGUgcHJvdG90
eXBlIG9iamVjdCJfcyk7CiAgICAgfQogCi0gICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+dG9U
aGlzKHRoaXMsIGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSA9PSB0aGlzKTsKKyAg
ICBBU1NFUlQoIWluaGVyaXRzPEpTU2NvcGU+KHZtKSk7CiAKICAgICBpZiAodGhpcy0+Z2V0UHJv
dG90eXBlRGlyZWN0KHZtKSA9PSBwcm90b3R5cGUpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
MjQ2MiwxMSArMjQ2Miw2IEBAIEpTU3RyaW5nKiBKU09iamVjdDo6dG9TdHJpbmcoSlNHbG9iYWxP
YmoKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHByaW1pdGl2ZS50b1N0cmluZyhnbG9i
YWxPYmplY3QpKTsKIH0KIAotSlNWYWx1ZSBKU09iamVjdDo6dG9UaGlzKEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqLCBFQ01BTW9kZSkKLXsKLSAgICByZXR1cm4ganNDYXN0PEpTT2JqZWN0
Kj4oY2VsbCk7Ci19Ci0KIHZvaWQgSlNPYmplY3Q6OnNlYWwoVk0mIHZtKQogewogICAgIGlmIChp
c1NlYWxlZCh2bSkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgJKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4OSw4ICs2ODksNiBAQCBwdWJsaWM6CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNTdHJpbmcqIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0
KikgY29uc3Q7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMo
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBFQ01BTW9kZSk7Ci0KICAgICAvLyBUaGlzIGdldCBm
dW5jdGlvbiBvbmx5IGxvb2tzIGF0IHRoZSBwcm9wZXJ0eSBtYXAuCiAgICAgSlNWYWx1ZSBnZXRE
aXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogICAgIHsKQEAg
LTc5OSwxMSArNzk3LDkgQEAgcHVibGljOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3Bl
cnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAK
LSAgICBib29sIGlzRW52aXJvbm1lbnQoKSBjb25zdDsKICAgICBib29sIGlzR2xvYmFsT2JqZWN0
KCkgY29uc3Q7CiAgICAgYm9vbCBpc0pTTGV4aWNhbEVudmlyb25tZW50KCkgY29uc3Q7CiAgICAg
Ym9vbCBpc0dsb2JhbExleGljYWxFbnZpcm9ubWVudCgpIGNvbnN0OwotICAgIGJvb2wgaXNTdHJp
Y3RFdmFsQWN0aXZhdGlvbigpIGNvbnN0OwogICAgIGJvb2wgaXNXaXRoU2NvcGUoKSBjb25zdDsK
IAogICAgIGJvb2wgaXNFcnJvckluc3RhbmNlKCkgY29uc3Q7CkBAIC0xMjcyLDE4ICsxMjY4LDYg
QEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OmlzR2xvYmFsTGV4aWNhbEVudgogICAgIHJldHVybiB0
eXBlKCkgPT0gR2xvYmFsTGV4aWNhbEVudmlyb25tZW50VHlwZTsKIH0KIAotaW5saW5lIGJvb2wg
SlNPYmplY3Q6OmlzU3RyaWN0RXZhbEFjdGl2YXRpb24oKSBjb25zdAotewotICAgIHJldHVybiB0
eXBlKCkgPT0gU3RyaWN0RXZhbEFjdGl2YXRpb25UeXBlOwotfQotCi1pbmxpbmUgYm9vbCBKU09i
amVjdDo6aXNFbnZpcm9ubWVudCgpIGNvbnN0Ci17Ci0gICAgYm9vbCByZXN1bHQgPSBHbG9iYWxP
YmplY3RUeXBlIDw9IHR5cGUoKSAmJiB0eXBlKCkgPD0gU3RyaWN0RXZhbEFjdGl2YXRpb25UeXBl
OwotICAgIEFTU0VSVCgoaXNHbG9iYWxPYmplY3QoKSB8fCBpc0pTTGV4aWNhbEVudmlyb25tZW50
KCkgfHwgaXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSB8fCBpc1N0cmljdEV2YWxBY3RpdmF0
aW9uKCkpID09IHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogaW5saW5lIGJvb2wg
SlNPYmplY3Q6OmlzRXJyb3JJbnN0YW5jZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHR5cGUoKSA9
PSBFcnJvckluc3RhbmNlVHlwZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuY3BwCShyZXZpc2lvbiAyNzc5NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Njb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE3LDExICs0MTcsNCBAQCBT
eW1ib2xUYWJsZSogSlNTY29wZTo6c3ltYm9sVGFibGUoVk0mIHZtCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLUpTVmFsdWUgSlNTY29wZTo6dG9UaGlzKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQotewotICAgIGlmIChlY21hTW9kZS5p
c1N0cmljdCgpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICByZXR1cm4gZ2xv
YmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAkocmV2aXNpb24gMjc3OTQ4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw3ICs0MCw3IEBAIHVzaW5nIFREWkVudmlyb25tZW50ID0gSGFzaFNldDxSZWZQdHI8
VW4KIGNsYXNzIEpTU2NvcGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAg
ICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVz
VG9UaGlzOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFj
Y2Vzcz4KICAgICBzdGF0aWMgdm9pZCBzdWJzcGFjZUZvcihWTSYpCkBAIC01NCw2ICs1NCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mTmV4dCgpOwogCiAgICAgc3RhdGlj
IEpTT2JqZWN0KiBvYmplY3RBdFNjb3BlKEpTU2NvcGUqKTsKKyAgICBzdGF0aWMgSlNPYmplY3Qq
IHJlY2VpdmVyRm9yU2NvcGUoSlNPYmplY3QqKTsKIAogICAgIHN0YXRpYyBKU09iamVjdCogcmVz
b2x2ZShKU0dsb2JhbE9iamVjdCosIEpTU2NvcGUqLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAg
c3RhdGljIEpTVmFsdWUgcmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbChKU0ds
b2JhbE9iamVjdCosIEpTU2NvcGUqLCBjb25zdCBJZGVudGlmaWVyJik7CkBAIC03OCwxMiArNzks
OCBAQCBwdWJsaWM6CiAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCgpOwogICAgIEpTU2NvcGUq
IG5leHQoKTsKIAotICAgIEpTT2JqZWN0KiBnbG9iYWxUaGlzKCk7Ci0KICAgICBTeW1ib2xUYWJs
ZSogc3ltYm9sVGFibGUoVk0mKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU1Zh
bHVlIHRvVGhpcyhKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKTsKLQogcHJvdGVj
dGVkOgogICAgIEpTU2NvcGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiBuZXh0KTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkocmV2aXNpb24g
Mjc3OTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MTAsMTMgKzQxMCw2IEBAIEpTT2JqZWN0KiBKU1N0cmluZzo6dG9P
YmplY3QoSlNHbG9iYWxPYmoKICAgICByZXR1cm4gU3RyaW5nT2JqZWN0OjpjcmVhdGUoZ2xvYmFs
T2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIGNvbnN0X2Nhc3Q8SlNTdHJpbmcqPih0aGlzKSk7
CiB9CiAKLUpTVmFsdWUgSlNTdHJpbmc6OnRvVGhpcyhKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQotewotICAgIGlmIChlY21hTW9k
ZS5pc1N0cmljdCgpKQotICAgICAgICByZXR1cm4gY2VsbDsKLSAgICByZXR1cm4gU3RyaW5nT2Jq
ZWN0OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIGFzU3RyaW5nKGNl
bGwpKTsKLX0KLQogYm9vbCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlEZXNjcmlwdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJ
KHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgIC8vIEZJ
WE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyOTU2CiAgICAg
Ly8gRG8gd2UgcmVhbGx5IG5lZWQgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhF
dmVuV2hlbkxlbmd0aElzTm90WmVybz8KICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjk1OAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldo
ZW5MZW5ndGhJc05vdFplcm8gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgT3ZlcnJpZGVzVG9UaGlz
OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNH
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBTdHJ1Y3R1
cmVJc0ltbW9ydGFsOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rp
b24gPSB0cnVlOwogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZGVzdHJveShKU0NlbGwq
IGNlbGwpCkBAIC0yMzcsOCArMjM3LDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi0gICAgc3RhdGljIEpTVmFsdWUgdG9U
aGlzKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUpOwotCiAgICAgU3RyaW5nVmll
dyB1bnNhZmVWaWV3KEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKICAgICBmcmllbmQgSlNTdHJp
bmcqIGpzU3RyaW5nKFZNJiwgY29uc3QgU3RyaW5nJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGUuaAkocmV2aXNpb24gMjc3OTQ4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsOCBA
QCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIC8vIEVuZCBlbnZpcm9ubWVudCByZWNvcmQg
dHlwZXMuCiAgICAgV2l0aFNjb3BlVHlwZSwKICAgICAvLyBFbmQgSlNTY29wZSB0eXBlcy4KKyAg
ICBGaXJzdEpTU2NvcGVUeXBlID0gR2xvYmFsT2JqZWN0VHlwZSwKKyAgICBMYXN0SlNTY29wZVR5
cGUgPSBXaXRoU2NvcGVUeXBlLAogCiAgICAgTW9kdWxlTmFtZXNwYWNlT2JqZWN0VHlwZSwKICAg
ICBSZWdFeHBPYmplY3RUeXBlLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZUluZm8uaAkocmV2aXNpb24gMjc3OTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw2IEBAIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgTWFzcXVlcmFkZXNBc1UKIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDEgPDwgMTsKIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgT3ZlcnJpZGVzR2V0Q2FsbERhdGEgPSAxIDw8IDI7IC8vIE5lZWQg
dGhpcyBmbGFnIGlmIHlvdSBpbXBsZW1lbnQgW1tDYWxsYWJsZV1dIGludGVyZmFjZSwgd2hpY2gg
bWVhbnMgb3ZlcnJpZGluZyBnZXRDYWxsRGF0YS4gVGhlIG9iamVjdCBtYXkgbm90IGJlIGNhbGxh
YmxlIHNpbmNlIGdldENhbGxEYXRhIGNhbiBzYXkgaXQgaXMgbm90IGNhbGxhYmxlLgogc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgPSAxIDw8IDM7
Ci1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE92ZXJyaWRlc1RvVGhpcyA9IDEgPDwgNDsgLy8g
SWYgdGhpcyBpcyBmYWxzZSB0aGVuIHRoaXMgcmV0dXJucyBzb21ldGhpbmcgb3RoZXIgdGhhbiAn
dGhpcycuIE5vbi1vYmplY3QgY2VsbHMgdGhhdCBhcmUgdmlzaWJsZSB0byBKUyBoYXZlIHRoaXMg
c2V0IGFzIGRvIHNvbWUgZXhvdGljIG9iamVjdHMuCiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IEhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSAxIDw8IDU7CiBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIFR5cGVJbmZvUGVyQ2VsbEJpdCA9IDEgPDwgNzsgLy8gVW5saWtlIG90aGVyIGlubGluZSBm
bGFncywgdGhpcyB3aWxsIG9ubHkgYmUgc2V0IG9uIHRoZSBjZWxsIGl0c2VsZiBhbmQgd2lsbCBu
b3QgYmUgc2V0IG9uIHRoZSBTdHJ1Y3R1cmUuCiAKQEAgLTk3LDcgKzk2LDYgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBib29sIG92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdChJbmxpbmVUeXBlRmxh
Z3MgZmxhZ3MpIHsgcmV0dXJuIGZsYWdzICYgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OyB9
CiAgICAgc3RhdGljIGJvb2wgaGFzU3RhdGljUHJvcGVydHlUYWJsZShJbmxpbmVUeXBlRmxhZ3Mg
ZmxhZ3MpIHsgcmV0dXJuIGZsYWdzICYgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsgfQogICAgIHN0
YXRpYyBib29sIHBlckNlbGxCaXQoSW5saW5lVHlwZUZsYWdzIGZsYWdzKSB7IHJldHVybiBmbGFn
cyAmIFR5cGVJbmZvUGVyQ2VsbEJpdDsgfQotICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzKCkgY29u
c3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMTxPdmVycmlkZXNUb1RoaXM+KCk7IH0KICAgICBib29s
IHN0cnVjdHVyZUlzSW1tb3J0YWwoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyPFN0cnVj
dHVyZUlzSW1tb3J0YWw+KCk7IH0KICAgICBib29sIG92ZXJyaWRlc0dldE93blByb3BlcnR5TmFt
ZXMoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyPE92ZXJyaWRlc0dldE93blByb3BlcnR5
TmFtZXM+KCk7IH0KICAgICBib29sIG92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVz
KCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMjxPdmVycmlkZXNHZXRPd25TcGVjaWFsUHJv
cGVydHlOYW1lcz4oKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzc5NDgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MSw3ICs4MSw3IEBAIE9iamVjdFByb3RvdHlwZSogT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUK
IAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuY1ZhbHVlT2YsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7Ci0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxP
YmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTT2JqZWN0KiB2YWx1ZU9iaiA9IHRoaXNWYWx1ZS50
b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdmFsdWVPYmopKQogICAg
ICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTkzLDggKzkzLDcgQEAgYm9vbCBvYmpl
Y3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eShKU0dsbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBiYXNlLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2Rl
OjpzdHJpY3QoKSk7Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGJhc2UudG9PYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9u
KCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNSw4ICsxMzQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04ob2JqZWN0UHJvdG9GdW5jCiAgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlz
T2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNl
KSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKLSAgICBKU09iamVjdCogdGhp
c09iaiA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0
aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwog
ICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAg
ICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVl
KCk7CkBAIC0xNTksNyArMTU3LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFBy
b3RvRnVuYwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0
cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1
ZSBnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwpAQCAtMTg2LDcgKzE4NCw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmMKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgx
KTsKQEAgLTIxMyw3ICsyMTEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJv
dG9GdW5jCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3Ry
aWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3Qg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9iYWxP
YmplY3QpOwpAQCAtMjQzLDcgKzI0MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmpl
Y3RQcm90b0Z1bmMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2Rl
OjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGds
b2JhbE9iamVjdCk7CkBAIC0yNzYsNyArMjc0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KG9iamVjdFByb3RvRnVuYwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVj
dCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6
OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgc2Nv
cGUucmVsZWFzZSgpOwpAQCAtMjk3LDcgKzI5NSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihvYmplY3RQcm90b0Z1bmMKICAgICAvLyAyLiBJbnZva2UoViwgInRvU3RyaW5nIikKIAogICAg
IC8vIExldCBPIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb09iamVjdCBwYXNzaW5nIHRoZSB0
aGlzIHZhbHVlIGFzIHRoZSBhcmd1bWVudC4KLSAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpc1Zh
bHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAKICAgICAvLyBMZXQgdG9TdHJpbmcgYmUgdGhlIE8uW1tHZXRdXSgidG9TdHJpbmci
LCBWKQpAQCAtMzk2LDggKzM5NCw3IEBAIEpTU3RyaW5nKiBvYmplY3RQcm90b3R5cGVUb1N0cmlu
ZyhKU0dsb2IKIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuY1RvU3Ry
aW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQogewotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUob2JqZWN0UHJvdG90eXBlVG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdFByb3RvdHlwZVRvU3RyaW5nKGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVj
dC5jcHAJKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3h5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI0LDcgKzUyNCw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihwZXJmb3JtUHJveHlDYWwKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwotICAgIGFyZ3VtZW50cy5h
cHBlbmQoY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9k
ZTo6c3RyaWN0KCkpKTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJnQXJyYXkpOwogICAgIEFTU0VSVCghYXJndW1l
bnRzLmhhc092ZXJmbG93ZWQoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIGFwcGx5TWV0aG9kLCBjYWxsRGF0YSwgaGFu
ZGxlciwgYXJndW1lbnRzKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzc5NDgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTIsNyArMjEyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3Rv
RnVuYwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgp
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
aWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc3OTQ4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODQxLDkgKzg0MSw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjaGVja09iamVj
dENvZXJjaWJsZSgKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICh0aGlzVmFsdWUuaXNPYmplY3QoKSAmJiBhc09i
amVjdCh0aGlzVmFsdWUpLT5pc0Vudmlyb25tZW50KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2wuaAkocmV2aXNpb24gMjc3OTQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiBjbGFzcyBTeW1ib2wgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAg
ICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWwg
fCBPdmVycmlkZXNUb1RoaXM7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAog
ICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3Nzk0
OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE3IEBACisyMDIxLTA1LTI0ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNv
bT4KKworICAgICAgICBbSlNDXSBBYm9saXNoIHVzaW5nIHJlc29sdmVkIHNjb3BlIGFzIHx0aGlz
fCB2YWx1ZSB3aGVuIGNhbGxpbmcgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklETE9wZXJhdGlvbjxKU0RPTVdpbmRvdz46OmNhc3QpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaDoKKyAgICAgICAgKFdl
YkNvcmU6OklETE9wZXJhdGlvbjxKU0V2ZW50VGFyZ2V0Pjo6Y2FsbCk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxl
bWVudGF0aW9uKToKKwogMjAyMS0wNS0yNCAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBXZWJQcm9jZXNzIGNyYXNoZXMgd2hlbiBjZXJ0YWlu
IGVsZW1lbnRzIGFyZSBtaXNzaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTU9wZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NT3BlcmF0aW9uLmgJKHJldmlzaW9uIDI3Nzk0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDIyICszNSwx
MiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgT3BlcmF0aW9uID0gSlNDOjpFbmNvZGVkSlNWYWx1ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqLCBDbGFzc1BhcmFtZXRlcik7CiAg
ICAgdXNpbmcgU3RhdGljT3BlcmF0aW9uID0gSlNDOjpFbmNvZGVkSlNWYWx1ZShKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKIAotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhp
cyBhZnRlciBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSBpcyBmaXhlZCBub3QgdG8gcGFzcyByZXNv
bHZlZCBzY29wZSBhcyB8dGhpc3wgdmFsdWUuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNTM5NwotICAgIHN0YXRpYyBKU0NsYXNzKiBjYXN0KEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lJiBjYWxs
RnJhbWUpCi0gICAgewotICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpT
RE9NR2xvYmFsT2JqZWN0LCBKU0NsYXNzPikKLSAgICAgICAgICAgIHJldHVybiBjYXN0VGhpc1Zh
bHVlPEpTQ2xhc3M+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZS50aGlzVmFsdWUoKS50
b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6RUNNQU1vZGU6OnN0cmljdCgpKSk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBjYXN0VGhpc1ZhbHVlPEpTQ2xhc3M+KGxl
eGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Ci0gICAgfQotCiAgICAg
dGVtcGxhdGU8T3BlcmF0aW9uIG9wZXJhdGlvbiwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3Igc2hv
dWxkVGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6VGhyb3c+CiAgICAgc3RhdGljIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgY2FsbChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OkNhbGxGcmFtZSYgY2FsbEZyYW1lLCBjb25zdCBjaGFyKiBvcGVyYXRpb25O
YW1lKQogICAgIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIAotICAgICAgICBh
dXRvKiB0aGlzT2JqZWN0ID0gY2FzdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOwor
ICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gY2FzdFRoaXNWYWx1ZTxKU0NsYXNzPihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwogICAgICAgICBpZiBjb25zdGV4
cHIgKHNob3VsZFRocm93ICE9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQpIHsKICAg
ICAgICAgICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBK
U0NsYXNzOjppbmZvKCktPmNsYXNzTmFtZSwgb3BlcmF0aW9uTmFtZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlvblJldHVy
bmluZ1Byb21pc2UuaAkocmV2aXNpb24gMjc3OTQ4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIGNh
bGwoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJh
bWUmIGNhbGxGcmFtZSwgY29uc3QgY2hhciogb3BlcmF0aW9uTmFtZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShjYWxsUHJvbWlzZUZ1bmN0aW9uKGxleGljYWxH
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgWyZvcGVyYXRpb25OYW1lXSAoSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUmIGNhbGxGcmFtZSwgUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKSB7Ci0gICAgICAgICAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0gSURMT3BlcmF0aW9uPEpTQ2xhc3M+OjpjYXN0KGxleGljYWxHbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSk7CisgICAgICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gY2FzdFRoaXNWYWx1ZTxK
U0NsYXNzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUudGhpc1ZhbHVlKCkpOwogICAg
ICAgICAgICAgaWYgY29uc3RleHByIChzaG91bGRUaHJvdyAhPSBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0KSB7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0
KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdFByb21pc2VXaXRoVGhpc1R5cGVF
cnJvcihwcm9taXNlLmdldCgpLCBKU0NsYXNzOjppbmZvKCktPmNsYXNzTmFtZSwgb3BlcmF0aW9u
TmFtZSk7CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNDbGFzcz46Ok9wZXJhdGlvbiBvcGVyYXRpb24sIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yIHNob3VsZFRocm93ID0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJlamVjdFBy
b21pc2U+CiAgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgY2FsbFJldHVybmluZ093blBy
b21pc2UoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxs
RnJhbWUmIGNhbGxGcmFtZSwgY29uc3QgY2hhciogb3BlcmF0aW9uTmFtZSkKICAgICB7Ci0gICAg
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBJRExPcGVyYXRpb248SlNDbGFzcz46OmNhc3QobGV4aWNh
bEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsKKyAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGNh
c3RUaGlzVmFsdWU8SlNDbGFzcz4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLnRoaXNW
YWx1ZSgpKTsKICAgICAgICAgaWYgY29uc3RleHByIChzaG91bGRUaHJvdyAhPSBDYXN0ZWRUaGlz
RXJyb3JCZWhhdmlvcjo6QXNzZXJ0KSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNP
YmplY3QpKQogICAgICAgICAgICAgICAgIHJldHVybiByZWplY3RQcm9taXNlV2l0aFRoaXNUeXBl
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDbGFzczo6aW5mbygpLT5jbGFzc05hbWUsIG9w
ZXJhdGlvbk5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhh
bmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJy
b3JIYW5kbGVyLmNwcAkocmV2aXNpb24gMjc3OTQ4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcg
QEAgdm9pZCBKU0Vycm9ySGFuZGxlcjo6aGFuZGxlRXZlbnQoU2NyaXB0RQogICAgICAgICBKU0V4
ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uKCZzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjYWxs
RGF0YSk7CiAKICAgICAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV4Y2VwdGlvbjsKLSAg
ICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IEpTRXhlY1N0YXRlOjpwcm9maWxlZENhbGwoZ2xv
YmFsT2JqZWN0LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGpzRnVuY3Rpb24sIGNhbGxE
YXRhLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGV4Y2VwdGlvbik7CisgICAgICAgIEpTVmFsdWUgcmV0
dXJuVmFsdWUgPSBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRDYWxsKGdsb2JhbE9iamVjdCwgSlNDOjpQ
cm9maWxpbmdSZWFzb246Ok90aGVyLCBqc0Z1bmN0aW9uLCBjYWxsRGF0YSwgZ2xvYmFsT2JqZWN0
LT5nbG9iYWxUaGlzKCksIGFyZ3MsIGV4Y2VwdGlvbik7CiAKICAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1
c3RvbS5oCShyZXZpc2lvbiAyNzc5NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50VGFyZ2V0Q3VzdG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVi
bGljOgogICAgICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgICAgICBhdXRvIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS50aGlzVmFsdWUoKS50b1RoaXMoJmxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6RUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICAgICAgYXV0
byB0aGlzVmFsdWUgPSBjYWxsRnJhbWUudGhpc1ZhbHVlKCk7CiAgICAgICAgIGF1dG8gdGhpc09i
amVjdCA9IGpzRXZlbnRUYXJnZXRDYXN0KHZtLCB0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KSA/IEpTQzo6SlNWYWx1ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCkgOiB0aGlzVmFsdWUpOwogICAg
ICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiRXZlbnRUYXJn
ZXQiLCBvcGVyYXRpb25OYW1lKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3Nzk0OCkKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA1
LTI0ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBb
SlNDXSBBYm9saXNoIHVzaW5nIHJlc29sdmVkIHNjb3BlIGFzIHx0aGlzfCB2YWx1ZSB3aGVuIGNh
bGxpbmcgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjUzOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGpzL29iamVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24tZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhh
bmQtY29uc3RydWN0aW9uLmpzOgorCiAyMDIxLTA1LTI0ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9u
b3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gVW5yZXZpZXdlZCB0ZXN0
IGdhcmRlbmluZwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2RvbS1hY2Nlc3Mt
ZnJvbS1jbG9zdXJlLWlmcmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L2RvbS1hY2Nlc3MtZnJvbS1jbG9zdXJlLWlmcmFtZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDI3Nzk0OCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9k
b20tYWNjZXNzLWZyb20tY2xvc3VyZS1pZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogZG9jdW1lbnQuVVJMOiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvcmVzb3VyY2VzL2RvbS1hY2Nlc3MtZnJvbS1jbG9zdXJlLWlmcmFtZS1jaGlsZC5odG1sCiB3
aW5kb3cuZG9jdW1lbnQuVVJMOiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvcmVzb3VyY2Vz
L25vdGlmeS1wYXJlbnQtZG9uZS5odG1sCi1uYW1lOgorbmFtZTogY2hpbGQKIHdpbmRvdy5uYW1l
OiBjaGlsZAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZG9tLWFjY2Vzcy1m
cm9tLWNsb3N1cmUtd2luZG93LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9XaW5kb3cvZG9tLWFjY2Vzcy1mcm9tLWNsb3N1cmUtd2luZG93LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMjc3OTQ4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2Rv
bS1hY2Nlc3MtZnJvbS1jbG9zdXJlLXdpbmRvdy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiBkb2N1bWVudC5VUkw6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRv
dy9yZXNvdXJjZXMvZG9tLWFjY2Vzcy1mcm9tLWNsb3N1cmUtd2luZG93LWNoaWxkLmh0bWwKIHdp
bmRvdy5kb2N1bWVudC5VUkw6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9yZXNvdXJjZXMv
bm90aWZ5LW9wZW5lci1kb25lLmh0bWwKLW5hbWU6CituYW1lOiBjaGlsZAogd2luZG93Lm5hbWU6
IGNoaWxkCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9kb20tYWNjZXNzLWZy
b20tY2xvc3VyZS13aW5kb3ctd2l0aC1nYy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2RvbS1hY2Nlc3MtZnJvbS1jbG9zdXJlLXdpbmRvdy13
aXRoLWdjLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc3OTQ4KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L2RvbS1hY2Nlc3MtZnJvbS1jbG9zdXJlLXdpbmRvdy13aXRoLWdjLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIGRvY3VtZW50LlVSTDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3Jlc291cmNlcy9kb20tYWNjZXNzLWZyb20tY2xvc3Vy
ZS13aW5kb3ctY2hpbGQuaHRtbAogd2luZG93LmRvY3VtZW50LlVSTDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L3Jlc291cmNlcy9ub3RpZnktb3BlbmVyLWRvbmUuaHRtbAotbmFtZToKK25h
bWU6IGNoaWxkCiB3aW5kb3cubmFtZTogY2hpbGQKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELWNvbnRlbnRXaW5kb3ctZXZhbC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVE
LWNvbnRlbnRXaW5kb3ctZXZhbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3Nzk0OCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1jb250ZW50V2luZG93LWV2
YWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xICsxLDIgQEAKK0NPTlNPTEUgTUVT
U0FHRTogU2VjdXJpdHlFcnJvcjogVGhlIG9wZXJhdGlvbiBpcyBpbnNlY3VyZS4KIFRoaXMgdGVz
dCBwYXNzZXMgaWYgYWxlcnQoKSBpcyBub3QgY2FsbGVkLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELWh0bWxlbGVsbWVudC13aXRoLWlmcmFtZS1wcm90
by1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS94c3MtREVOSUVELWh0bWxlbGVsbWVudC13aXRoLWlmcmFtZS1wcm90by1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDI3Nzk0OCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzLURFTklFRC1odG1sZWxlbG1lbnQtd2l0aC1pZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBUZXN0cyB0aGF0IG1ha2luZyBvdGhlciBmcmFt
ZSB3aW5kb3cgYSBwCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBfX3Byb3Rv
X18gPSB0YXJnZXRXaW5kb3cgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0LnByb3Rv
dHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkLgorUEFTUyBfX3Byb3Rv
X18gPSB0YXJnZXRXaW5kb3cgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90IHNldCBw
cm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlwZSBvYmplY3QuCiBQQVNTIHRhcmdldFdpbmRv
dy5teWlucHV0IHRocmV3IGV4Y2VwdGlvbiBTZWN1cml0eUVycm9yOiBCbG9ja2VkIGEgZnJhbWUg
d2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBjcm9z
cy1vcmlnaW4gZnJhbWUuIFByb3RvY29scywgZG9tYWlucywgYW5kIHBvcnRzIG11c3QgbWF0Y2gu
LgogUEFTUzogc3VjY2Vzc2Z1bGx5UGFyc2VkIHNob3VsZCBiZSAndHJ1ZScgYW5kIGlzLgogCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtbWV0aG9kLXdp
dGgtaWZyYW1lLXByb3RvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtbWV0aG9kLXdpdGgtaWZyYW1lLXByb3RvLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMjc3OTQ4KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3MtREVOSUVELW1ldGhvZC13aXRoLWlmcmFtZS1wcm90by1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTcsNyArNyw3IEBAIFRlc3RzIHRoYXQgbWFraW5nIG90aGVyIGZy
YW1lIHdpbmRvdyBhIHAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIF9fcHJv
dG9fXyA9IHRhcmdldFdpbmRvdyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPYmplY3QucHJv
dG90eXBlLl9fcHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQuCitQQVNTIF9fcHJv
dG9fXyA9IHRhcmdldFdpbmRvdyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3Qgc2V0
IHByb3RvdHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdC4KIFBBU1M6IHN1Y2Nlc3Nm
dWxseVBhcnNlZCBzaG91bGQgYmUgJ3RydWUnIGFuZCBpcy4KIAogVEVTVCBDT01QTEVURQpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELW5vbi1zaGFkb3dh
YmxlLXByb3B0ZXJ0eS13aXRoLWlmcmFtZS1wcm90by1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELW5vbi1zaGFkb3dh
YmxlLXByb3B0ZXJ0eS13aXRoLWlmcmFtZS1wcm90by1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3
Nzk0OCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1ub24t
c2hhZG93YWJsZS1wcm9wdGVydHktd2l0aC1pZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBUZXN0cyB0aGF0IG1ha2luZyBvdGhlciBmcmFtZSB3
aW5kb3cgYSBwCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBfX3Byb3RvX18g
PSB0YXJnZXRXaW5kb3cgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlw
ZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkLgorUEFTUyBfX3Byb3RvX18g
PSB0YXJnZXRXaW5kb3cgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90IHNldCBwcm90
b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlwZSBvYmplY3QuCiBQQVNTOiBsb2NhdGlvbiA9PT0g
b3JpZ2luYWxMb2NhdGlvbiBzaG91bGQgYmUgJ3RydWUnIGFuZCBpcy4KIFBBU1M6IHRoaXMubG9j
YXRpb24gPT09IG9yaWdpbmFsTG9jYXRpb24gc2hvdWxkIGJlICd0cnVlJyBhbmQgaXMuCiBQQVNT
OiBzdWNjZXNzZnVsbHlQYXJzZWQgc2hvdWxkIGJlICd0cnVlJyBhbmQgaXMuCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtcmVndWxhci1wcm9wdGVydHkt
d2l0aC1pZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1yZWd1bGFyLXByb3B0ZXJ0eS13aXRoLWlm
cmFtZS1wcm90by1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3Nzk0OCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1yZWd1bGFyLXByb3B0ZXJ0eS13aXRoLWlm
cmFtZS1wcm90by1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBAIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIAogCiBQQVNTIHRoaXMuX19w
cm90b19fID0gdGFyZ2V0V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBz
ZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0LgotUEFTUyBfX3Byb3Rv
X18gPSB0YXJnZXRXaW5kb3cgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0LnByb3Rv
dHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkLgorUEFTUyBfX3Byb3Rv
X18gPSB0YXJnZXRXaW5kb3cgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90IHNldCBw
cm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlwZSBvYmplY3QuCiBQQVNTOiBpbm5lckhlaWdo
dCA9PT0gb3JpZ2luYWxJbm5lckhlaWdodCBzaG91bGQgYmUgJ3RydWUnIGFuZCBpcy4KIFBBU1M6
IHRoaXMuaW5uZXJIZWlnaHQgPT09IG9yaWdpbmFsSW5uZXJIZWlnaHQgc2hvdWxkIGJlICd0cnVl
JyBhbmQgaXMuCiBQQVNTOiBzdWNjZXNzZnVsbHlQYXJzZWQgc2hvdWxkIGJlICd0cnVlJyBhbmQg
aXMuCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dl
YklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVl
LmFueS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmpl
Y3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzc5NDgp
CisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9l
Y21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBAIFBBU1MgR2xvYmFsIG9i
amVjdCdzIG9wZXJhdGlvbiB0aHJvd3Mgd2gKIFBBU1MgR2xvYmFsIG9iamVjdCdzIGdldHRlciB0
aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdCAoZG9jdW1lbnQuYWxsKQog
UEFTUyBHbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBh
dGlibGUgb2JqZWN0IChkb2N1bWVudC5hbGwpCiBQQVNTIEdsb2JhbCBvYmplY3QncyBvcGVyYXRp
b24gdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QgKGRvY3VtZW50LmFs
bCkKLUZBSUwgR2xvYmFsIG9iamVjdCdzIGdldHRlciB3b3JrcyB3aGVuIGNhbGxlZCBvbiBudWxs
IC8gdW5kZWZpbmVkIFRoZSBXaW5kb3cubG9jYXRpb24gZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQg
b24gaW5zdGFuY2VzIG9mIFdpbmRvdwotRkFJTCBHbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHdvcmtz
IHdoZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQgVGhlIFdpbmRvdy5vbm9ubGluZSBzZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV2luZG93CitQQVNTIEdsb2JhbCBv
YmplY3QncyBnZXR0ZXIgd29ya3Mgd2hlbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZAorUEFT
UyBHbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHdvcmtzIHdoZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRl
ZmluZWQKIFBBU1MgR2xvYmFsIG9iamVjdCdzIG9wZXJhdGlvbiB3b3JrcyB3aGVuIGNhbGxlZCBv
biBudWxsIC8gdW5kZWZpbmVkCiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWlt
cGxpY2l0LXRoaXMtdmFsdWUuYW55Lndvcmtlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNj
cmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkud29ya2Vy
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc3OTQ4KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1v
YmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKIFBBU1MgR2xvYmFsIG9iamVjdCdzIGdldHRlciB0aHJv
d3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdAogUEFTUyBHbG9iYWwgb2JqZWN0
J3Mgc2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0CiBQQVNT
IEdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0
aWJsZSBvYmplY3QKLUZBSUwgR2xvYmFsIG9iamVjdCdzIGdldHRlciB3b3JrcyB3aGVuIGNhbGxl
ZCBvbiBudWxsIC8gdW5kZWZpbmVkIFRoZSBXb3JrZXJHbG9iYWxTY29wZS5sb2NhdGlvbiBnZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV29ya2VyR2xvYmFsU2NvcGUKLUZB
SUwgR2xvYmFsIG9iamVjdCdzIHNldHRlciB3b3JrcyB3aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5k
ZWZpbmVkIFRoZSBXb3JrZXJHbG9iYWxTY29wZS5vbm9ubGluZSBzZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgV29ya2VyR2xvYmFsU2NvcGUKK1BBU1MgR2xvYmFsIG9iamVj
dCdzIGdldHRlciB3b3JrcyB3aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkCitQQVNTIEds
b2JhbCBvYmplY3QncyBzZXR0ZXIgd29ya3Mgd2hlbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5l
ZAogUEFTUyBHbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHdvcmtzIHdoZW4gY2FsbGVkIG9uIG51
bGwgLyB1bmRlZmluZWQKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3dpbmRvd3MvZW1iZWRkZWQtb3BlbmVyLXJlbW92ZS1m
cmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3dpbmRvd3MvZW1iZWRkZWQtb3BlbmVy
LXJlbW92ZS1mcmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3Nzk0OCkKKysrIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dz
L2VtYmVkZGVkLW9wZW5lci1yZW1vdmUtZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQgKzEsNCBAQAogCi1GQUlMIG9wZW5lciBvZiBkaXNjYXJkZWQgbmVzdGVkIGJyb3dz
aW5nIGNvbnRleHQgVGhlIFdpbmRvdy5vcGVuZXIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24g
aW5zdGFuY2VzIG9mIFdpbmRvdwotRkFJTCBvcGVuZXIgb2YgZGlzY2FyZGVkIGF1eGlsaWFyeSBi
cm93c2luZyBjb250ZXh0IFRoZSBXaW5kb3cub3BlbmVyIGdldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiBXaW5kb3cKK1BBU1Mgb3BlbmVyIG9mIGRpc2NhcmRlZCBuZXN0ZWQg
YnJvd3NpbmcgY29udGV4dAorUEFTUyBvcGVuZXIgb2YgZGlzY2FyZGVkIGF1eGlsaWFyeSBicm93
c2luZyBjb250ZXh0CiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mvc2NyaXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L2V4
ZWN1dGlvbi10aW1pbmcvMDgzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGlu
Zy0xL3RoZS1zY3JpcHQtZWxlbWVudC9leGVjdXRpb24tdGltaW5nLzA4My1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDI3Nzk0OCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mvc2NyaXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L2V4
ZWN1dGlvbi10aW1pbmcvMDgzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsx
LDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogVHlwZUVycm9yOiBudWxsIGlzIG5vdCBhbiBvYmplY3Qg
KGV2YWx1YXRpbmcgJ3RvcC5sb2cnKQogRkFJTEVEIChUaGlzIFRDIHJlcXVpcmVzIEphdmFTY3Jp
cHQgZW5hYmxlZCkKIAotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBUeXBlRXJyb3I6
IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAndG9wLmxvZycpCi0KLUZBSUwgIHNj
aGVkdWxlcjogZXZlbnQgbGlzdGVuZXIgZGVmaW5lZCBieSBzY3JpcHQgaW4gYSBkb2N1bWVudCBp
biBoaXN0b3J5IGFzc2VydF9hcnJheV9lcXVhbHM6IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCBh
cnJheSBbImlubGluZSBzY3JpcHQgIzEiLCAiSUZSQU1FIHNjcmlwdCIsICJlbmQgc2NyaXB0ICMx
IiwgImV2ZW50OiBmb28iLCAiaW5saW5lIHNjcmlwdCAjMiJdIGxlbmd0aCA1LCBnb3QgWyJpbmxp
bmUgc2NyaXB0ICMxIiwgIklGUkFNRSBzY3JpcHQiLCAiZW5kIHNjcmlwdCAjMSIsICJldmVudDog
Zm9vIiwgImV2ZW50OiBmb28iLCAiaW5saW5lIHNjcmlwdCAjMiJdIGxlbmd0aCA2CitGQUlMICBz
Y2hlZHVsZXI6IGV2ZW50IGxpc3RlbmVyIGRlZmluZWQgYnkgc2NyaXB0IGluIGEgZG9jdW1lbnQg
aW4gaGlzdG9yeSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQg
YXJyYXkgWyJpbmxpbmUgc2NyaXB0ICMxIiwgIklGUkFNRSBzY3JpcHQiLCAiZW5kIHNjcmlwdCAj
MSIsICJldmVudDogZm9vIiwgImlubGluZSBzY3JpcHQgIzIiXSBsZW5ndGggNSwgZ290IFsiaW5s
aW5lIHNjcmlwdCAjMSIsICJJRlJBTUUgc2NyaXB0IiwgImVuZCBzY3JpcHQgIzEiLCAiZXZlbnQ6
IGZvbyIsICJldmVudDogZm9vIiwgImlubGluZSBzY3JpcHQgIzIiLCAiZXZlbnQ6IGZvbyJdIGxl
bmd0aCA3CiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2Vic29ja2V0cy91bmxvYWQtYS1kb2N1bWVudC8wMDEtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29j
a2V0cy91bmxvYWQtYS1kb2N1bWVudC8wMDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzc5NDgp
CisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tl
dHMvdW5sb2FkLWEtZG9jdW1lbnQvMDAxLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSw3ICsxLDUgQEAKIFRlc3QgcmVxdWlyZXMgcG9wdXAgYmxvY2tlciBkaXNhYmxlZAogCiAKLUhh
cm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gVGVzdCBuYW1lZCAnV2ViU29ja2V0czogbmF2
aWdhdGluZyB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dCcgc3BlY2lmaWVkIDIgJ2NsZWFudXAn
IGZ1bmN0aW9ucywgYW5kIDEgZmFpbGVkLgotCiBQQVNTIFdlYlNvY2tldHM6IG5hdmlnYXRpbmcg
dG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL3VubG9hZC1hLWRvY3VtZW50LzAwMi1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL3VubG9hZC1hLWRvY3VtZW50LzAwMi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDI3Nzk0OCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2Vic29ja2V0cy91bmxvYWQtYS1kb2N1bWVudC8wMDItZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNSBAQAogVGVzdCByZXF1aXJlcyBwb3B1cCBibG9j
a2VyIGRpc2FibGVkCiAKIAotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBUZXN0IG5h
bWVkICdXZWJTb2NrZXRzOiBuYXZpZ2F0aW5nIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0IHdp
dGggY2xvc2VkIHdlYnNvY2tldCcgc3BlY2lmaWVkIDIgJ2NsZWFudXAnIGZ1bmN0aW9ucywgYW5k
IDEgZmFpbGVkLgotCiBGQUlMIFdlYlNvY2tldHM6IG5hdmlnYXRpbmcgdG9wLWxldmVsIGJyb3dz
aW5nIGNvbnRleHQgd2l0aCBjbG9zZWQgd2Vic29ja2V0IGFzc2VydF91bnJlYWNoZWQ6IGRvY3Vt
ZW50IHdhcyBkaXNjYXJkZWQgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCiAKSW5kZXg6IExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy91bmxvYWQt
YS1kb2N1bWVudC8wMDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy91bmxvYWQtYS1kb2N1bWVu
dC8wMDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzc5NDgpCisrKyBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvdW5sb2FkLWEtZG9jdW1lbnQv
MDAzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDMgQEAKIAotSGFybmVz
cyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBUZXN0IG5hbWVkICdXZWJTb2NrZXRzOiBuYXZpZ2F0
aW5nIG5lc3RlZCBicm93c2luZyBjb250ZXh0JyBzcGVjaWZpZWQgMiAnY2xlYW51cCcgZnVuY3Rp
b25zLCBhbmQgMSBmYWlsZWQuCi0KIFBBU1MgV2ViU29ja2V0czogbmF2aWdhdGluZyBuZXN0ZWQg
YnJvd3NpbmcgY29udGV4dAogCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvdW5sb2FkLWEtZG9jdW1lbnQvMDA0LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYnNvY2tldHMvdW5sb2FkLWEtZG9jdW1lbnQvMDA0LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMjc3OTQ4KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJzb2NrZXRzL3VubG9hZC1hLWRvY3VtZW50LzAwNC1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0g
VGVzdCBuYW1lZCAnV2ViU29ja2V0czogbmF2aWdhdGluZyBuZXN0ZWQgYnJvd3NpbmcgY29udGV4
dCB3aXRoIGNsb3NlZCB3ZWJzb2NrZXQnIHNwZWNpZmllZCAyICdjbGVhbnVwJyBmdW5jdGlvbnMs
IGFuZCAxIGZhaWxlZC4KLQogRkFJTCBXZWJTb2NrZXRzOiBuYXZpZ2F0aW5nIG5lc3RlZCBicm93
c2luZyBjb250ZXh0IHdpdGggY2xvc2VkIHdlYnNvY2tldCBhc3NlcnRfdW5yZWFjaGVkOiBkb2N1
bWVudCB3YXMgZGlzY2FyZGVkIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQogCkluZGV4OiBMYXlv
dXRUZXN0cy9qcy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhh
bmQtY29uc3RydWN0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc3OTQ4KQorKysgTGF5b3V0
VGVzdHMvanMvb2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTYzLDggKzYzLDEwIEBAIFBBU1MgISFPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKHsKIFBBU1MgISFPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKHtzZXQgNDIodmFsdWUpe319LCAnNDInKS5zZXQgaXMgdHJ1ZQogUEFTUyB0aGlzLl9fcHJv
dG9fXyA9IFtdIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBzZXQgcHJvdG90eXBl
IG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0LgogUEFTUyAoe19fcHJvdG9fXzogdGhpcy5f
X3Byb3RvX199KSBpbnN0YW5jZW9mIEFycmF5IGlzIGZhbHNlCi1QQVNTIF9fcHJvdG9fXyA9IFtd
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5cGUuX19wcm90b19fIGNh
bGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZC4KLVBBU1MgKHtfX3Byb3RvX186IF9fcHJvdG9fX30p
IGluc3RhbmNlb2YgQXJyYXkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlz
IG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ19fcHJvdG9fXycpLgorUEFTUyBfX3Byb3RvX18g
PSBbXSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiBp
bW11dGFibGUgcHJvdG90eXBlIG9iamVjdC4KK1BBU1MgKHtfX3Byb3RvX186IF9fcHJvdG9fX30p
IGluc3RhbmNlb2YgQXJyYXkgaXMgZmFsc2UKK1BBU1MgX19wcm90b19fIGlzIE9iamVjdC5nZXRQ
cm90b3R5cGVPZihnbG9iYWxUaGlzKQorUEFTUyBfX3Byb3RvX18gPSBfX3Byb3RvX18gaXMgT2Jq
ZWN0LmdldFByb3RvdHlwZU9mKGdsb2JhbFRoaXMpCiBTeW50YXhFcnJvcnMKIFBBU1MgKHticmVh
a30pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAn
YnJlYWsnIGFzIGEgc2hvcnRoYW5kIHByb3BlcnR5IG5hbWUuLgogUEFTUyAoe2Nhc2V9KSB0aHJl
dyBleGNlcHRpb24gU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ2Nhc2UnIGFz
IGEgc2hvcnRoYW5kIHByb3BlcnR5IG5hbWUuLgpJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL29iamVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24uanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL29iamVjdC1saXRlcmFsLXNob3J0aGFu
ZC1jb25zdHJ1Y3Rpb24uanMJKHJldmlzaW9uIDI3Nzk0OCkKKysrIExheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTIsOCArMTEyLDEyIEBAIHNob3VsZEJlVHJ1ZSgiISFPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXMKIC8vIF9fcHJvdG9fXyBzaG9ydGhhbmQgc2hvdWxkIG5vdCBtb2RpZnkg
dGhlIHByb3RvdHlwZS4KIHNob3VsZFRocm93KCJ0aGlzLl9fcHJvdG9fXyA9IFtdIik7CiBzaG91
bGRCZUZhbHNlKCIoe19fcHJvdG9fXzogdGhpcy5fX3Byb3RvX199KSBpbnN0YW5jZW9mIEFycmF5
Iik7Ci1zaG91bGRUaHJvdygiX19wcm90b19fID0gW10iLCAnIlR5cGVFcnJvcjogT2JqZWN0LnBy
b3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkIicpOwotc2hvdWxk
VGhyb3coIih7X19wcm90b19fOiBfX3Byb3RvX199KSBpbnN0YW5jZW9mIEFycmF5IiwgJyJUeXBl
RXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nIFwnX19wcm90b19f
XCcpIicpOworCisvLyBfX3Byb3RvX18gZ2V0dGVyIC8gc2V0dGVyIGNhbGxlZCBvbiBnbG9iYWwg
b2JqZWN0CitzaG91bGRUaHJvdygiX19wcm90b19fID0gW10iLCAnIlR5cGVFcnJvcjogQ2Fubm90
IHNldCBwcm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlwZSBvYmplY3QiJyk7CitzaG91bGRC
ZUZhbHNlKCIoe19fcHJvdG9fXzogX19wcm90b19ffSkgaW5zdGFuY2VvZiBBcnJheSIpOworc2hv
dWxkQmUoIl9fcHJvdG9fXyIsICJPYmplY3QuZ2V0UHJvdG90eXBlT2YoZ2xvYmFsVGhpcykiKTsK
K3Nob3VsZEJlKCJfX3Byb3RvX18gPSBfX3Byb3RvX18iLCAiT2JqZWN0LmdldFByb3RvdHlwZU9m
KGdsb2JhbFRoaXMpIik7CiAKIC8vIEtleXdvcmRzIC0gU3ludGF4IEVycm9ycwogZGVidWcoIlN5
bnRheEVycm9ycyIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429869</attachid>
            <date>2021-05-27 05:07:08 -0700</date>
            <delta_ts>2021-05-27 07:10:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225397-20210527150706.patch</filename>
            <type>text/plain</type>
            <size>148135</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzgxNTkpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTI3ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBBYm9saXNoIHVzaW5nIHJlc29sdmVkIHNjb3Bl
IGFzIHx0aGlzfCB2YWx1ZSB3aGVuIGNhbGxpbmcgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9iaWctaW50LXNwZWMtdG8t
dGhpcy5qczoKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1zdHJpY3Qtc3BlYy10by10aGlzLmpz
OgorICAgICAgICAqIHN0cmVzcy92YXJpYWJsZS1uYW1lZC1ldmFsLmpzOiBBZGRlZC4KKwogMjAy
MS0wNS0yMiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAg
ICAgU3VwcG9ydCBFcmdvbm9taWMgQnJhbmQgQ2hlY2tzIHByb3Bvc2FsIChgI3ggaW4gb2JqYCkK
SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2JpZy1pbnQtc3BlYy10by10aGlzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEpTVGVzdHMvc3RyZXNzL2JpZy1pbnQtc3BlYy10by10aGlzLmpzCShyZXZpc2lvbiAyNzgx
NTkpCisrKyBKU1Rlc3RzL3N0cmVzcy9iaWctaW50LXNwZWMtdG8tdGhpcy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDMgQEAKLS8vQCBza2lwIGlmIG5vdCAkaml0VGVzdHMKLS8vQCBydW5E
ZWZhdWx0KCItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFsc2UiKQotCiBmdW5jdGlvbiBhc3NlcnQoYSkg
ewogICAgIGlmICghYSkKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7
CkBAIC0xOCw2ICsxNSwzIEBAIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CiAgICAgYXNzZXJ0KGZvby5hcHBseSgzMDAp
ID09PSAib2JqZWN0Iik7CiB9Ci0KLWFzc2VydChudW1iZXJPZkRGR0NvbXBpbGVzKGZvbykgPT09
IDEpOwotCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9iaWctaW50LXN0cmljdC1zcGVjLXRvLXRoaXMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvYmlnLWludC1zdHJpY3Qtc3BlYy10by10
aGlzLmpzCShyZXZpc2lvbiAyNzgxNTkpCisrKyBKU1Rlc3RzL3N0cmVzcy9iaWctaW50LXN0cmlj
dC1zcGVjLXRvLXRoaXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSwzIEBACi0vL0AgcnVu
RGVmYXVsdCgiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIikKLQogZnVuY3Rpb24gYXNzZXJ0KGEp
IHsKICAgICBpZiAoIWEpCiAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIp
OwpAQCAtMTgsNiArMTYsMyBAQCBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogICAgIGFzc2VydChmb28uYXBwbHkoMzAw
KSA9PT0gIm51bWJlciIpOwogfQotCi1hc3NlcnQobnVtYmVyT2ZERkdDb21waWxlcyhmb28pID4g
MSk7Ci0KSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2dsb2JhbC1vYmplY3QtYWNjZXNzb3ItcHJvcGVy
dHktdGhpcy12YWx1ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9nbG9iYWwtb2Jq
ZWN0LWFjY2Vzc29yLXByb3BlcnR5LXRoaXMtdmFsdWUuanMJKG5vbmV4aXN0ZW50KQorKysgSlNU
ZXN0cy9zdHJlc3MvZ2xvYmFsLW9iamVjdC1hY2Nlc3Nvci1wcm9wZXJ0eS10aGlzLXZhbHVlLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBCYWQgdmFsdWU6ICR7YWN0dWFsfS5gKTsKK30KKwordmFyIF9fZm9vX18g
PSAtMTsKKyhmdW5jdGlvbiBzYW1lUmVhbG0oKSB7CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5
KGdsb2JhbFRoaXMsICJmb28iLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKHRoaXMsIGdsb2JhbFRoaXMpOworICAgICAgICAgICAgcmV0dXJuIF9fZm9vX187CisgICAg
ICAgIH0sCisgICAgICAgIHNldCh2YWx1ZSkgeworICAgICAgICAgICAgc2hvdWxkQmUodGhpcywg
Z2xvYmFsVGhpcyk7CisgICAgICAgICAgICBfX2Zvb19fID0gdmFsdWU7CisgICAgICAgIH0sCisg
ICAgfSk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNjsgaSsrKSB7CisgICAgICAgIHNo
b3VsZEJlKGZvbywgaSAtIDEpOworICAgICAgICBmb28gPSBpOworICAgICAgICBzaG91bGRCZShm
b28sIGkpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBjcm9zc1JlYWxtKCkgeworICAgIGNv
bnN0IE90aGVyRnVuY3Rpb24gPSAkdm0uY3JlYXRlR2xvYmFsT2JqZWN0KCkuRnVuY3Rpb247CisK
KyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2xvYmFsVGhpcywgImJhciIsIHsKKyAgICAgICAg
Z2V0OiBuZXcgT3RoZXJGdW5jdGlvbigicmV0dXJuIHRoaXM7IiksCisgICAgICAgIHNldDogbmV3
IE90aGVyRnVuY3Rpb24oInZhbHVlIiwgInZhbHVlLnRoaXNWYWx1ZSA9IHRoaXM7IiksCisgICAg
fSk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNjsgaSsrKSB7CisgICAgICAgIHNob3Vs
ZEJlKGJhciwgZ2xvYmFsVGhpcyk7CisKKyAgICAgICAgbGV0IHZhbHVlID0ge307CisgICAgICAg
IGJhciA9IHZhbHVlOworICAgICAgICBzaG91bGRCZSh2YWx1ZS50aGlzVmFsdWUsIGdsb2JhbFRo
aXMpOworICAgIH0KK30pKCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy92YXJpYWJsZS1uYW1lZC1l
dmFsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3ZhcmlhYmxlLW5hbWVkLWV2YWwu
anMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvdmFyaWFibGUtbmFtZWQtZXZhbC5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgQmFkIHZhbHVlOiAke2FjdHVhbH0uYCk7Cit9CisKK2xldCBldmFsOwor
CisoZnVuY3Rpb24gdGhpc1ZhbHVlKCkgeworICAgIGV2YWwgPSBmdW5jdGlvbigpIHsgcmV0dXJu
IHRoaXM7IH07CisgICAgc2hvdWxkQmUoZXZhbCgpLCBnbG9iYWxUaGlzKTsKKworICAgIGV2YWwg
PSBmdW5jdGlvbigpIHsgInVzZSBzdHJpY3QiOyByZXR1cm4gdGhpczsgfTsKKyAgICBzaG91bGRC
ZShldmFsKCksIHVuZGVmaW5lZCk7CisKKyAgICBjb25zdCBiaW5kaW5nT2JqZWN0ID0geyBldmFs
IH07CisgICAgd2l0aCAoYmluZGluZ09iamVjdCkgeworICAgICAgICBzaG91bGRCZShldmFsKCks
IGJpbmRpbmdPYmplY3QpOworICAgIH0KK30pKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNDEgQEAKKzIwMjEtMDUtMjcgIEFsZXhleSBTaHZh
eWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIEFib2xpc2ggdXNp
bmcgcmVzb2x2ZWQgc2NvcGUgYXMgfHRoaXN8IHZhbHVlIHdoZW4gY2FsbGluZyBmdW5jdGlvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTM5Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0FQ
SUNhbGxiYWNrRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6QVBJQ2FsbGJhY2tGdW5jdGlvbjo6
Y2FsbEltcGwpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbEltcGwpOgorICAgICAg
ICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgorICAgICAgICAoSlNDb250ZXh0R2V0R2xvYmFsT2Jq
ZWN0KToKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1RvVGhp
c1N0YXR1cy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmg6
IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRGdW5jdGlvbkZyb21TY29w
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpoYXNQYXJlbnRXaXRoU2NvcGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRvVGhpcyk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlRhZ2dlZFRlbXBsYXRl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoK
KyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OnRoaXNWYWx1ZSBjb25zdCk6CisgICAg
ICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKToKKyAgICAgICAgKEpTQzo6REZHOjppc1RvVGhpc0FuSWRlbnRpdHkpOiBEZWxldGVkLgor
ICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRp
ZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICog
ZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAg
ICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcv
REZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRm
Zy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1
cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwVG9UaGlzKToKKyAg
ICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNFQ01B
TW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZWNtYU1vZGUpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0VGhpc1ZhbHVlRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVUb1RoaXMpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpj
YW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9UaGlzKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFRoaXNWYWx1ZUZvckNhbGwpOgorICAg
ICAgICAqIGdlbmVyYXRvci9EU0wucmI6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6
OmludGVybmFsQ29uc3RydWN0b3JOYW1lKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklU
Lmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X3RoaXNfdmFsdWVfZm9yX2NhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfdG9fdGhpcyk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF90b190aGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206
CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6OmNyZWF0ZUFycmF5SXRlcmF0
b3JPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NPTU1P
Tl9TTE9XX1BBVEgpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAg
IChKU0M6OnRvR2xvYmFsVGhpcyk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAg
KiBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNCaWdJbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1Nsb3BweU1vZGVUaGlzIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UaGlzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9UaGlzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2spOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6dG9UaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6dG9U
aGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OnRvVGhpcyk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgIChKU0M6
OlR5cGVJbmZvOjpwZXJDZWxsQml0KToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86Om92ZXJyaWRl
c1RvVGhpcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAoSlNDOjpvYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGlt
ZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tik6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sLmg6
CisKIDIwMjEtMDUtMjcgIERhbmllbCBLb2xlc2EgIDxka29sZXNhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0pTQ10gRml4IGNyYXNoIG9uIDMyLWJpdCBiaWcgZW5kaWFuIHN5c3RlbXMuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNzgxNTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTU4
Myw3ICs1ODMsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAg
ICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5o
CiAgICAgYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKLSAgICBieXRlY29kZS9Ub1RoaXNTdGF0dXMu
aAogICAgIGJ5dGVjb2RlL1R5cGVMb2NhdGlvbi5oCiAgICAgYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAogICAgIGJ5dGVjb2RlL1VubGlua2VkRXZhbENvZGVCbG9jay5oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw3ICsyODEsNiBAQCBi
eXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50CiBieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5jcHAKIGJ5dGVjb2RlL1N0dWJJbmZvU3VtbWFyeS5jcHAKIGJ5dGVjb2RlL1N1
cGVyU2FtcGxlci5jcHAKLWJ5dGVjb2RlL1RvVGhpc1N0YXR1cy5jcHAKIGJ5dGVjb2RlL1RyYWNr
ZWRSZWZlcmVuY2VzLmNwcAogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCShyZXZpc2lvbiAyNzgxNTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBBUElDYWxsYmFja0Z1bmN0
aW9uOjpjYWxsCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZ2xvYmFsT2JqZWN0KTsKICAgICBKU09iamVj
dFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Ci0gICAgSlNP
YmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSkpOwor
ICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvU2xvcHB5TW9kZVRoaXMoZ2xvYmFsT2JqZWN0KSk7CiAKICAgICBpbnQgYXJndW1lbnRDb3Vu
dCA9IHN0YXRpY19jYXN0PGludD4oY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpOwogICAgIFZl
Y3RvcjxKU1ZhbHVlUmVmLCAxNj4gYXJndW1lbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNCYXNlLmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiBKU1ZhbHVlUmVmIEpTRXZhbHVhdGVTY3JpcHRJbnRlcm5hbChjb25zdCBK
U0xvY2tIb2xkZXImLCBKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBK
U09iamVjdCoganNUaGlzT2JqZWN0ID0gdG9KUyh0aGlzT2JqZWN0KTsKKyAgICBpZiAoanNUaGlz
T2JqZWN0KQorICAgICAgICBqc1RoaXNPYmplY3QgPSBKU1Njb3BlOjpyZWNlaXZlckZvclNjb3Bl
KGpzVGhpc09iamVjdCk7CiAKICAgICAvLyBldmFsdWF0ZSBzZXRzICJ0aGlzIiB0byB0aGUgZ2xv
YmFsIG9iamVjdCBpZiBpdCBpcyBOVUxMCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IHRvSlMoY3R4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTQ3LDcgKzU0Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50PjoKIAogICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZ2xvYmFsT2Jq
ZWN0KTsKICAgICBKU09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGNhbGxGcmFtZS0+anND
YWxsZWUoKSk7Ci0gICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2FzdDxKU09i
amVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnNsb3BweSgpKSkpOworICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvU2xvcHB5TW9kZVRoaXMoZ2xvYmFsT2JqZWN0KSk7CiAgICAg
CiAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+Kj4odG9KUyhmdW5jdGlvblJlZikpLT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKEpTT2JqZWN0Q2FsbEFzRnVu
Y3Rpb25DYWxsYmFjayBjYWxsQXNGdW5jdGlvbiA9IGpzQ2xhc3MtPmNhbGxBc0Z1bmN0aW9uKSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCShyZXZp
c2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw3ICsxOTEsNyBAQCBKU09iamVjdFJlZiBKU0NvbnRl
eHRHZXRHbG9iYWxPYmplY3QoSlNDCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogCi0gICAgcmV0dXJuIHRvUmVmKGpzQ2FzdDxK
U09iamVjdCo+KGdsb2JhbE9iamVjdC0+bWV0aG9kVGFibGUodm0pLT50b1RoaXMoZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpKTsKKyAgICByZXR1cm4gdG9S
ZWYoZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCkpOwogfQogCiBKU0NvbnRleHRHcm91cFJlZiBK
U0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRSZWYgY3R4KQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAs
NyArMTUwLDcgQEAgSlNWYWx1ZVJlZiBKU1NjcmlwdEV2YWx1YXRlKEpTQ29udGV4dFJlZgogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBpbnRl
cm5hbEV4Y2VwdGlvbjsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHRoaXNWYWx1ZVJlZiA/IHRv
SlMoZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWVSZWYpIDoganNVbmRlZmluZWQoKTsKKyAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHRoaXNWYWx1ZVJlZiA/IEpTU2NvcGU6OnJlY2VpdmVyRm9yU2NvcGUo
dG9KUyhnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZVJlZikudG9TbG9wcHlNb2RlVGhpcyhnbG9iYWxP
YmplY3QpKSA6IEpTVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlKGdsb2Jh
bE9iamVjdCwgU291cmNlQ29kZSgqc2NyaXB0KSwgdGhpc1ZhbHVlLCBpbnRlcm5hbEV4Y2VwdGlv
bik7CiAgICAgaWYgKGludGVybmFsRXhjZXB0aW9uKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24p
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwkocmV2aXNp
b24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMJ
KHdvcmtpbmcgY29weSkKQEAgLTE5NDgsMTIgKzE5NDgsMTcgQEAgaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIqIGFyZ3ZbXSkKICAgICB2ID0gSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBm
dW5jdGlvbiwgbywgMCwgTlVMTCwgTlVMTCk7CiAgICAgQVNTRVJUKEpTVmFsdWVJc0VxdWFsKGNv
bnRleHQsIHYsIG8sIE5VTEwpKTsKIAorICAgIEpTT2JqZWN0UmVmIHJhd0dsb2JhbE9iamVjdCA9
IEpTT2JqZWN0R2V0UHJveHlUYXJnZXQoZ2xvYmFsT2JqZWN0KTsKKyAgICBBU1NFUlQoIUpTVmFs
dWVJc0VxdWFsKGNvbnRleHQsIHJhd0dsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBOVUxMKSk7
CisKICAgICBjb25zdCBjaGFyKiB0aGlzU2NyaXB0ID0gInRoaXM7IjsKICAgICBKU1N0cmluZ1Jl
ZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh0aGlzU2NyaXB0KTsKICAg
ICB2ID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHQsIE5VTEwsIE5VTEwsIDEsIE5V
TEwpOwogICAgIEFTU0VSVChKU1ZhbHVlSXNFcXVhbChjb250ZXh0LCB2LCBnbG9iYWxPYmplY3Qs
IE5VTEwpKTsKICAgICB2ID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHQsIG8sIE5V
TEwsIDEsIE5VTEwpOwogICAgIEFTU0VSVChKU1ZhbHVlSXNFcXVhbChjb250ZXh0LCB2LCBvLCBO
VUxMKSk7CisgICAgdiA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0LCByYXdHbG9i
YWxPYmplY3QsIE5VTEwsIDEsIE5VTEwpOworICAgIEFTU0VSVChKU1ZhbHVlSXNFcXVhbChjb250
ZXh0LCB2LCBnbG9iYWxPYmplY3QsIE5VTEwpKTsKICAgICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0
KTsKIAogICAgIEpTU2NyaXB0UmVmIHNjcmlwdE9iamVjdCA9IEpTU2NyaXB0Q3JlYXRlUmVmZXJl
bmNpbmdJbW1vcnRhbEFTQ0lJVGV4dChjb250ZXh0R3JvdXAsIDAsIDAsIHRoaXNTY3JpcHQsIHN0
cmxlbih0aGlzU2NyaXB0KSwgMCwgMCk7CkBAIC0xOTYxLDYgKzE5NjYsMTggQEAgaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICBBU1NFUlQoSlNWYWx1ZUlzRXF1YWwoY29udGV4
dCwgdiwgZ2xvYmFsT2JqZWN0LCBOVUxMKSk7CiAgICAgdiA9IEpTU2NyaXB0RXZhbHVhdGUoY29u
dGV4dCwgc2NyaXB0T2JqZWN0LCBvLCBOVUxMKTsKICAgICBBU1NFUlQoSlNWYWx1ZUlzRXF1YWwo
Y29udGV4dCwgdiwgbywgTlVMTCkpOworICAgIHYgPSBKU1NjcmlwdEV2YWx1YXRlKGNvbnRleHQs
IHNjcmlwdE9iamVjdCwgcmF3R2xvYmFsT2JqZWN0LCBOVUxMKTsKKyAgICBBU1NFUlQoSlNWYWx1
ZUlzRXF1YWwoY29udGV4dCwgdiwgZ2xvYmFsT2JqZWN0LCBOVUxMKSk7CisgICAgdiA9IEpTU2Ny
aXB0RXZhbHVhdGUoY29udGV4dCwgc2NyaXB0T2JqZWN0LCBqc1VuZGVmaW5lZCwgTlVMTCk7Cisg
ICAgQVNTRVJUKEpTVmFsdWVJc0VxdWFsKGNvbnRleHQsIHYsIGdsb2JhbE9iamVjdCwgTlVMTCkp
OworICAgIHYgPSBKU1NjcmlwdEV2YWx1YXRlKGNvbnRleHQsIHNjcmlwdE9iamVjdCwganNOdWxs
LCBOVUxMKTsKKyAgICBBU1NFUlQoSlNWYWx1ZUlzRXF1YWwoY29udGV4dCwgdiwgZ2xvYmFsT2Jq
ZWN0LCBOVUxMKSk7CisgICAgdiA9IEpTU2NyaXB0RXZhbHVhdGUoY29udGV4dCwgc2NyaXB0T2Jq
ZWN0LCBqc1plcm8sIE5VTEwpOworICAgIEFTU0VSVChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwg
dikpOworICAgIHYgPSBKU1NjcmlwdEV2YWx1YXRlKGNvbnRleHQsIHNjcmlwdE9iamVjdCwganNU
cnVlLCBOVUxMKTsKKyAgICBBU1NFUlQoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHYpKTsKKyAg
ICB2ID0gSlNTY3JpcHRFdmFsdWF0ZShjb250ZXh0LCBzY3JpcHRPYmplY3QsIGpzRW1wdHlTdHJp
bmcsIE5VTEwpOworICAgIEFTU0VSVChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgdikpOwogICAg
IEpTU2NyaXB0UmVsZWFzZShzY3JpcHRPYmplY3QpOwogCiAgICAgc2NyaXB0ID0gSlNTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoImV2YWwodGhpcyk7Iik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTI2Myw3ICsyNjMsNiBAQAogCQkwRjJDNjNDMjFFNjY0QTVDMDBDMTM4MzkgLyogQjNOYXRp
dmVUcmFpdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM2M0MxMUU2NjRBNUEwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oICovOyB9OwogCQkw
RjJDNjNDNDFFNjlFRjk0MDBDMTM4MzkgLyogQjNNZW1vcnlWYWx1ZUlubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0MzMUU2OUVGOTIw
MEMxMzgzOSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5oICovOyB9OwogCQkwRjJENERERTE5ODMy
RDM0MDA3RDRCMTkgLyogRGVidWdnZXJTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRDREREMxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2Vy
U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQkwRjJENERFOTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNjE5ODMyREFDMDA3RDRC
MTkgLyogVG9UaGlzU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEYyRDRERUExOTgzMkRBQzAwN0Q0QjE5IC8qIFR5cGVMb2NhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRDRERTcx
OTgzMkRBQzAwN0Q0QjE5IC8qIFR5cGVMb2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkQ0REVDMTk4MzJEQzQwMDdENEIxOSAvKiBU
eXBlUHJvZmlsZXJMb2cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMkQ0REUwMTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJENERGMDE5
ODMyREQ2MDA3RDRCMTkgLyogVHlwZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyRDRERTQxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVTZXQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjUyMiw4
ICsyNTIxLDYgQEAKIAkJMEYyRDRERTAxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxv
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYyRDRERTMxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVTZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVHlwZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMkQ0REU0MTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5
cGVTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYyRDRERTUxOTgzMkRBQzAw
N0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUb1RoaXNTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
RjJENERFNjE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRvVGhpc1N0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjJENERFNzE5ODMyREFDMDA3RDRCMTkgLyogVHlwZUxvY2F0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjJERDgwQzFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRz
RWxpbWluYXRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdBcmd1bWVu
dHNFbGltaW5hdGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYy
REQ4MEQxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQXJndW1lbnRzRWxpbWluYXRpb25Q
aGFzZS5oOyBwYXRoID0gZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2NjksOCArODY2Niw2IEBACiAJCQkJMEY0QTM4Rjcx
QzhFMTNERjAwMTkwMzE4IC8qIFN1cGVyU2FtcGxlci5jcHAgKi8sCiAJCQkJMEY0QTM4RjgxQzhF
MTNERjAwMTkwMzE4IC8qIFN1cGVyU2FtcGxlci5oICovLAogCQkJCTBGNDRBN0E4MjBCRjY4NUUw
MDIyQjE3MSAvKiBUZXJtaW5hdGVkQ29kZU9yaWdpbi5oICovLAotCQkJCTBGMkQ0REU1MTk4MzJE
QUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0dXMuY3BwICovLAotCQkJCTBGMkQ0REU2MTk4MzJEQUMw
MDdENEIxOSAvKiBUb1RoaXNTdGF0dXMuaCAqLywKIAkJCQkwRjk1MkFCQTFCNDg3QTc3MDBDMzY3
QzUgLyogVHJhY2tlZFJlZmVyZW5jZXMuY3BwICovLAogCQkJCTBGOTUyQUJCMUI0ODdBNzcwMEMz
NjdDNSAvKiBUcmFja2VkUmVmZXJlbmNlcy5oICovLAogCQkJCTBGMkQ0REU3MTk4MzJEQUMwMDdE
NEIxOSAvKiBUeXBlTG9jYXRpb24uaCAqLywKQEAgLTEwNjA3LDcgKzEwNjAyLDYgQEAKIAkJCQlB
NzM4NjU1NjExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNDE0NDhDRDEzQTE3ODM3MDBGNUJBMUEgLyogVGlueUJsb29tRmlsdGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjU1OTg5ODE3Qzg2QzU4MDBBMUU1NDMgLyogVG9OYXRpdmVGcm9t
VmFsdWUuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGMkQ0REU5MTk4MzJEQUMwMDdENEIxOSAvKiBU
b1RoaXNTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTUyQUJEMUI0ODdBNzcwMEMzNjdD
NSAvKiBUcmFja2VkUmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDYxN0I2
QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlBZGFwdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyQjY3MDgxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5yYgkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNiBAQCB0
eXBlcyBbCiAgICAgOlN0cnVjdHVyZUNoYWluLAogICAgIDpTeW1ib2xUYWJsZSwKICAgICA6U3lt
Ym9sVGFibGVPclNjb3BlRGVwdGgsCi0gICAgOlRvVGhpc1N0YXR1cywKICAgICA6VHlwZUxvY2F0
aW9uLAogICAgIDpXYXNtQm91bmRMYWJlbCwKICAgICA6V2F0Y2hwb2ludFNldCwKQEAgLTE3Nywx
MSArMTc2LDggQEAgb3AgOmFyZ3VtZW50X2NvdW50LAogb3AgOnRvX3RoaXMsCiAgICAgYXJnczog
ewogICAgICAgICBzcmNEc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgZWNtYU1vZGU6IEVD
TUFNb2RlLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgY2FjaGVkU3RydWN0dXJl
SUQ6IFN0cnVjdHVyZUlELAotICAgICAgICB0b1RoaXNTdGF0dXM6IFRvVGhpc1N0YXR1cywKICAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0KIApAQCAtMTAzNCw2ICsxMDMwLDEy
IEBAIG9wIDpnZXRfZnJvbV9zY29wZSwKICAgICAgICAgb3BlcmFuZDogOm9mZnNldCwKICAgICB9
CiAKK29wIDpnZXRfdGhpc192YWx1ZV9mb3JfY2FsbCwKKyAgICBhcmdzOiB7CisgICAgICAgIGRz
dDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBzY29wZTogVmlydHVhbFJlZ2lzdGVyLAorICAg
IH0KKwogb3AgOnB1dF90b19zY29wZSwKICAgICBhcmdzOiB7CiAgICAgICAgIHNjb3BlOiBWaXJ0
dWFsUmVnaXN0ZXIsICMgb2Zmc2V0IDEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTczLDYgKzE3Myw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4
SW1wbChWaXIKICAgICBVU0VTKE9wUmVzb2x2ZVNjb3BlLCBzY29wZSkKICAgICBVU0VTKE9wUmVz
b2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbCwgc2NvcGUpCiAgICAgVVNFUyhPcEdl
dEZyb21TY29wZSwgc2NvcGUpCisgICAgVVNFUyhPcEdldFRoaXNWYWx1ZUZvckNhbGwsIHNjb3Bl
KQogICAgIFVTRVMoT3BUb1ByaW1pdGl2ZSwgc3JjKQogICAgIFVTRVMoT3BUb1Byb3BlcnR5S2V5
LCBzcmMpCiAgICAgVVNFUyhPcFRyeUdldEJ5SWQsIGJhc2UpCkBAIC00ODAsNiArNDgxLDcgQEAg
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVucwogCiAgICAgREVGUyhPcFRh
aWxDYWxsRm9yd2FyZEFyZ3VtZW50cywgZHN0KQogICAgIERFRlMoT3BHZXRGcm9tU2NvcGUsIGRz
dCkKKyAgICBERUZTKE9wR2V0VGhpc1ZhbHVlRm9yQ2FsbCwgZHN0KQogICAgIERFRlMoT3BDYWxs
LCBkc3QpCiAgICAgREVGUyhPcFRhaWxDYWxsLCBkc3QpCiAgICAgREVGUyhPcENhbGxFdmFsLCBk
c3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNzEsMTcgKzEzNzEsNiBAQCB2b2lkIENv
ZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlCiAgICAgICAgICAgICBtZXRhZGF0YS5t
X2JyYW5kLmNsZWFyKCk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIG1fbWV0YWRhdGEtPmZvckVh
Y2g8T3BUb1RoaXM+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGlmICghbWV0
YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3Ry
dWN0dXJlSURUYWJsZSgpLmdldChtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEKSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1Io
KSkgewotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uaGVhcC5zdHJ1
Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQpOwotICAgICAg
ICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTEludCB0b190aGlzIHdpdGggc3RydWN0dXJl
ICVwLlxuIiwgc3RydWN0dXJlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1ldGFkYXRh
Lm1fY2FjaGVkU3RydWN0dXJlSUQgPSAwOwotICAgICAgICAgICAgbWV0YWRhdGEubV90b1RoaXNT
dGF0dXMgPSBtZXJnZShtZXRhZGF0YS5tX3RvVGhpc1N0YXR1cywgVG9UaGlzQ2xlYXJlZEJ5R0Mp
OwotICAgICAgICB9KTsKLQogICAgICAgICBhdXRvIGhhbmRsZUNyZWF0ZUJ5dGVjb2RlID0gWyZd
IChhdXRvJiBtZXRhZGF0YSwgQVNDSUlMaXRlcmFsIG5hbWUpIHsKICAgICAgICAgICAgIGF1dG8m
IGNhY2hlV3JpdGVCYXJyaWVyID0gbWV0YWRhdGEubV9jYWNoZWRDYWxsZWU7CiAgICAgICAgICAg
ICBpZiAoIWNhY2hlV3JpdGVCYXJyaWVyIHx8IGNhY2hlV3JpdGVCYXJyaWVyLnVudmFsaWRhdGVk
R2V0KCkgPT0gSlNDZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmNwcAkocmV2aXNp
b24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1RvVGhpc1N0YXR1
cy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJUb1RoaXNTdGF0dXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLVRvVGhpc1N0YXR1cyBtZXJn
ZShUb1RoaXNTdGF0dXMgYSwgVG9UaGlzU3RhdHVzIGIpCi17Ci0gICAgc3dpdGNoIChhKSB7Ci0g
ICAgY2FzZSBUb1RoaXNPSzoKLSAgICAgICAgcmV0dXJuIGI7Ci0gICAgY2FzZSBUb1RoaXNDb25m
bGljdGVkOgotICAgICAgICByZXR1cm4gVG9UaGlzQ29uZmxpY3RlZDsKLSAgICBjYXNlIFRvVGhp
c0NsZWFyZWRCeUdDOgotICAgICAgICBpZiAoYiA9PSBUb1RoaXNDb25mbGljdGVkKQotICAgICAg
ICAgICAgcmV0dXJuIFRvVGhpc0NvbmZsaWN0ZWQ7Ci0gICAgICAgIHJldHVybiBUb1RoaXNDbGVh
cmVkQnlHQzsKLSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gVG9UaGlzQ29uZmxpY3RlZDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0K
LW5hbWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi12b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgVG9UaGlzU3RhdHVzIHN0YXR1cykKLXsKLSAgICBzd2l0
Y2ggKHN0YXR1cykgewotICAgIGNhc2UgVG9UaGlzT0s6Ci0gICAgICAgIG91dC5wcmludCgiT0si
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgVG9UaGlzQ29uZmxpY3RlZDoKLSAgICAgICAg
b3V0LnByaW50KCJDb25mbGljdGVkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFRvVGhp
c0NsZWFyZWRCeUdDOgotICAgICAgICBvdXQucHJpbnQoIkNsZWFyZWRCeUdDIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Ub1RoaXNTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmgJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Ub1RoaXNTdGF0dXMuaAkobm9uZXhpc3RlbnQpCkBAIC0x
LDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KLQotbmFtZXNw
YWNlIEpTQyB7Ci0KLWVudW0gVG9UaGlzU3RhdHVzIHsKLSAgICBUb1RoaXNPSywKLSAgICBUb1Ro
aXNDb25mbGljdGVkLAotICAgIFRvVGhpc0NsZWFyZWRCeUdDCi19OwotCi1Ub1RoaXNTdGF0dXMg
bWVyZ2UoVG9UaGlzU3RhdHVzLCBUb1RoaXNTdGF0dXMpOwotCi19IC8vIG5hbWVzcGFjZSBKU0MK
LQotbmFtZXNwYWNlIFdURiB7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpT
Qzo6VG9UaGlzU3RhdHVzKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NTgsNiArMjQ1
OCwzMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEZyCiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRHZXRGdW5jdGlvbkZyb21TY29wZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFZh
cmlhYmxlJiB2YXJpYWJsZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlRm9yQ2FsbCkKK3sKKyAgICBB
U1NFUlQoIXZhcmlhYmxlLmxvY2FsKCkpOworCisgICAgUmVnaXN0ZXJJRCogc2NvcGUgPSBlbWl0
UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcmlhYmxlKTsKKyAgICBlbWl0R2V0RnJvbVNjb3BlKGRz
dCwgc2NvcGUsIHZhcmlhYmxlLCBUaHJvd0lmTm90Rm91bmQpOworICAgIGVtaXRURFpDaGVja0lm
TmVjZXNzYXJ5KHZhcmlhYmxlLCBkc3QsIG51bGxwdHIpOworICAgIGlmIChoYXNQYXJlbnRXaXRo
U2NvcGUodmFyaWFibGUpKQorICAgICAgICBPcEdldFRoaXNWYWx1ZUZvckNhbGw6OmVtaXQodGhp
cywga2lsbCh0aGlzVmFsdWVGb3JDYWxsKSwgc2NvcGUpOworICAgIHJldHVybiBkc3Q7Cit9CisK
K2Jvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omhhc1BhcmVudFdpdGhTY29wZShjb25zdCBWYXJpYWJs
ZSYgdmFyaWFibGUpIGNvbnN0Cit7CisgICAgaWYgKHZhcmlhYmxlLm9mZnNldCgpLmlzVmFsaWQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9sZXhp
Y2FsU2NvcGVTdGFjay5zaXplKCk7IGktLTsgKSB7CisgICAgICAgIGlmIChtX2xleGljYWxTY29w
ZVN0YWNrW2ldLm1faXNXaXRoU2NvcGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXRUb1Njb3BlKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBWYXJpYWJsZSYgdmFyaWFi
bGUsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZXNvbHZlTW9kZSByZXNvbHZlTW9kZSwgSW5pdGlhbGl6
YXRpb25Nb2RlIGluaXRpYWxpemF0aW9uTW9kZSkKIHsKICAgICBzd2l0Y2ggKHZhcmlhYmxlLm9m
ZnNldCgpLmtpbmQoKSkgewpAQCAtNTQ1NSw3ICs1NDgwLDggQEAgdm9pZCBTdGF0aWNQcm9wZXJ0
eUFuYWx5c2lzOjpyZWNvcmQoKQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9UaGlz
KCkKIHsKLSAgICBPcFRvVGhpczo6ZW1pdCh0aGlzLCBraWxsKCZtX3RoaXNSZWdpc3RlciksIGVj
bWFNb2RlKCkpOworICAgIGlmICghZWNtYU1vZGUoKS5pc1N0cmljdCgpKQorICAgICAgICBPcFRv
VGhpczo6ZW1pdCh0aGlzLCBraWxsKCZtX3RoaXNSZWdpc3RlcikpOwogfQogCiBTdHJ1Y3R1cmVG
b3JJbkNvbnRleHQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpmaW5kU3RydWN0dXJlRm9ySW5Db250ZXh0
KFJlZ2lzdGVySUQqIHByb3BlcnR5KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMjc4MTU5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC05MDQsNiArOTA0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlQ29uc3RhbnRMb2NhbChSZWdpc3RlcklEKiBk
c3QsIGNvbnN0IFZhcmlhYmxlJik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlU2Nv
cGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBWYXJpYWJsZSYpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0R2V0RnJvbVNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUsIGNv
bnN0IFZhcmlhYmxlJiwgUmVzb2x2ZU1vZGUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0
RnVuY3Rpb25Gcm9tU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBWYXJpYWJsZSYsIFJlZ2lz
dGVySUQqIHRoaXNWYWx1ZUZvckNhbGwpOworICAgICAgICBib29sIGhhc1BhcmVudFdpdGhTY29w
ZShjb25zdCBWYXJpYWJsZSYpIGNvbnN0OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0VG9T
Y29wZShSZWdpc3RlcklEKiBzY29wZSwgY29uc3QgVmFyaWFibGUmLCBSZWdpc3RlcklEKiB2YWx1
ZSwgUmVzb2x2ZU1vZGUsIEluaXRpYWxpemF0aW9uTW9kZSk7CiAKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwoUmVnaXN0ZXJJRCog
ZHN0LCBjb25zdCBJZGVudGlmaWVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAyNzgxNTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1MCwxMyArMzUwLDExIEBAIFJlZ2lzdGVySUQqIFRhZ2dlZFRlbXBs
YXRlTm9kZTo6ZW1pdEJ5dGUKICAgICAgICAgICAgIHRhZyA9IGdlbmVyYXRvci5tb3ZlKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgbG9jYWwpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgdGFnID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgYmFzZSA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIGJhc2UgPSBnZW5lcmF0b3IuZW1p
dExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBqc1VuZGVmaW5lZCgpKTsKIAogICAgICAg
ICAgICAgSlNUZXh0UG9zaXRpb24gbmV3RGl2b3QgPSBkaXZvdFN0YXJ0KCkgKyBpZGVudGlmaWVy
Lmxlbmd0aCgpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhuZXdE
aXZvdCwgZGl2b3RTdGFydCgpLCBuZXdEaXZvdCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IubW92
ZShiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShiYXNlLmdldCgpLCB2YXIp
KTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHRhZy5nZXQoKSwgYmFz
ZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRURFpDaGVja0lmTmVjZXNzYXJ5KHZhciwgdGFnLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0R2V0RnVuY3Rpb25Gcm9tU2NvcGUodGFnLmdldCgpLCB2YXIsIGJh
c2UuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX3RhZy0+aXNCcmFja2V0QWNj
ZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0
YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihtX3RhZyk7CkBAIC0xMTgwLDE3ICsxMTc4
LDEyIEBAIFJlZ2lzdGVySUQqIEV2YWxGdW5jdGlvbkNhbGxOb2RlOjplbWl0QnkKICAgICB9IGVs
c2UKICAgICAgICAgZnVuYyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBDYWxsQXJn
dW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgIGdlbmVyYXRvci5l
bWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKIAot
ICAgIGlmIChsb2NhbCkKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwotICAgIGVsc2UgeworICAgIGlmICghbG9j
YWwpIHsKICAgICAgICAgSlNUZXh0UG9zaXRpb24gbmV3RGl2b3QgPSBkaXZvdFN0YXJ0KCkgKyA0
OwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBkaXZvdFN0
YXJ0KCksIG5ld0Rpdm90KTsKLSAgICAgICAgZ2VuZXJhdG9yLm1vdmUoCi0gICAgICAgICAgICBj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLAotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRS
ZXNvbHZlU2NvcGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgdmFyKSk7Ci0gICAgICAg
IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGZ1bmMuZ2V0KCksIGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRURFpDaGVja0lmTmVjZXNzYXJ5KHZhciwgZnVuYy5nZXQoKSwgbnVsbHB0cik7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0R2V0RnVuY3Rpb25Gcm9tU2NvcGUoZnVuYy5nZXQoKSwgdmFyLCBjYWxs
QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpKTsKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmMuZ2V0
KCkpOwpAQCAtMTI3NiwyMCArMTI2OSwxNiBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxSZXNv
bHZlTm9kZTo6ZW1pCiAgICAgfSBlbHNlCiAgICAgICAgIGZ1bmMgPSBnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCk7CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9h
cmdzKTsKKyAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwganNVbmRlZmluZWQoKSk7CiAKICAgICBpZiAobG9jYWwpIHsKLSAgICAgICAgZ2VuZXJhdG9y
LmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwog
ICAgICAgICAvLyBUaGlzIHBhc3NlcyBOb0V4cGVjdGVkRnVuY3Rpb24gYmVjYXVzZSB3ZSBleHBl
Y3QgdGhhdCBpZiB0aGUgZnVuY3Rpb24gaXMgaW4gYQogICAgICAgICAvLyBsb2NhbCB2YXJpYWJs
ZSwgdGhlbiBpdCdzIG5vdCBvbmUgb2Ygb3VyIGJ1aWx0LWluIGNvbnN0cnVjdG9ycy4KICAgICAg
ICAgZXhwZWN0ZWRGdW5jdGlvbiA9IE5vRXhwZWN0ZWRGdW5jdGlvbjsKICAgICB9IGVsc2Ugewog
ICAgICAgICBKU1RleHRQb3NpdGlvbiBuZXdEaXZvdCA9IGRpdm90U3RhcnQoKSArIG1faWRlbnQu
bGVuZ3RoKCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8obmV3RGl2b3Qs
IGRpdm90U3RhcnQoKSwgbmV3RGl2b3QpOwotICAgICAgICBnZW5lcmF0b3IubW92ZSgKLSAgICAg
ICAgICAgIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksCi0gICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFJlc29sdmVTY29wZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCB2YXIpKTsK
LSAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZnVuYy5nZXQoKSwgY2FsbEFyZ3Vt
ZW50cy50aGlzUmVnaXN0ZXIoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwotICAgICAgICBnZW5l
cmF0b3IuZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkodmFyLCBmdW5jLmdldCgpLCBudWxscHRyKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGdW5jdGlvbkZyb21TY29wZShmdW5jLmdldCgpLCB2
YXIsIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCkpOwogICAgIH0KIAogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwg
ZnVuYy5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJDYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwOSwxMCArMjA5LDEwIEBAIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OnRoaXNW
YWx1ZShWTSYKICAgICBpZiAoIXRoaXNWYWx1ZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAKLSAgICBFQ01BTW9kZSBlY21hTW9kZSA9IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAgICBS
RUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIXRoaXNWYWx1ZS5pbmhlcml0czxKU1Njb3BlPih2
bSksICJ0aGlzVmFsdWUgc2hvdWxkbid0IGJlIEpTU2NvcGUiKTsKICAgICBpZiAoY29kZUJsb2Nr
ICYmIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkpCi0g
ICAgICAgIGVjbWFNb2RlID0gRUNNQU1vZGU6OnN0cmljdCgpOwotICAgIHJldHVybiB0aGlzVmFs
dWUudG9UaGlzKG1fdmFsaWRNYWNoaW5lRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pLCBl
Y21hTW9kZSk7CisgICAgICAgIHJldHVybiB0aGlzVmFsdWU7CisgICAgcmV0dXJuIHRoaXNWYWx1
ZS50b1Nsb3BweU1vZGVUaGlzKG1fdmFsaWRNYWNoaW5lRnJhbWUtPmxleGljYWxHbG9iYWxPYmpl
Y3Qodm0pKTsKIH0KIAogLy8gRXZhbHVhdGUgc29tZSBKYXZhU2NyaXB0IGNvZGUgaW4gdGhlIHNj
b3BlIG9mIHRoaXMgZnJhbWUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyNzgx
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OSw2NSArMTc5LDYgQEAgdm9pZCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVO
KG1fZ3JhcGgsIG5vZGUsIHZlcmlmeUVkZ2UpOwogfQogCi1lbnVtIGNsYXNzIFRvVGhpc1Jlc3Vs
dCB7Ci0gICAgSWRlbnRpdHksCi0gICAgVW5kZWZpbmVkLAotICAgIEdsb2JhbFRoaXMsCi0gICAg
RHluYW1pYywKLX07Ci1pbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYg
dm0sIEVDTUFNb2RlIGVjbWFNb2RlLCBBYnN0cmFjdFZhbHVlJiB2YWx1ZUZvck5vZGUpCi17Ci0g
ICAgLy8gV2UgbG9vayBhdCB0aGUgdHlwZSBmaXJzdCBzaW5jZSB0aGF0IHdpbGwgY292ZXIgbW9z
dCBjYXNlcyBhbmQgZG9lcyBub3QgcmVxdWlyZSBpdGVyYXRpbmcgYWxsIHRoZSBzdHJ1Y3R1cmVz
LgotICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKSB7Ci0gICAgICAgIGlmICh2YWx1ZUZvck5v
ZGUubV90eXBlICYmICEodmFsdWVGb3JOb2RlLm1fdHlwZSAmIFNwZWNPYmplY3RPdGhlcikpCi0g
ICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpJZGVudGl0eTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBpZiAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUg
JiAoflNwZWNPYmplY3QgfCBTcGVjT2JqZWN0T3RoZXIpKSkKLSAgICAgICAgICAgIHJldHVybiBU
b1RoaXNSZXN1bHQ6OklkZW50aXR5OwotICAgIH0KLQotICAgIGlmIChKU1ZhbHVlIHZhbHVlID0g
dmFsdWVGb3JOb2RlLnZhbHVlKCkpIHsKLSAgICAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKSB7Ci0g
ICAgICAgICAgICBhdXRvKiB0b1RoaXNNZXRob2QgPSB2YWx1ZS5hc0NlbGwoKS0+Y2xhc3NJbmZv
KHZtKS0+bWV0aG9kVGFibGUudG9UaGlzOwotICAgICAgICAgICAgaWYgKHRvVGhpc01ldGhvZCA9
PSAmSlNPYmplY3Q6OnRvVGhpcykKLSAgICAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0
OjpJZGVudGl0eTsKLSAgICAgICAgICAgIGlmICh0b1RoaXNNZXRob2QgPT0gJkpTU2NvcGU6OnRv
VGhpcykgewotICAgICAgICAgICAgICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpVbmRlZmluZWQ7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6R2xvYmFsVGhpczsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLQotICAgIGlmICgoZWNtYU1vZGUuaXNTdHJpY3QoKSB8fCAodmFsdWVG
b3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpKSAm
JiB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewotICAgICAgICBib29sIGFs
bFN0cnVjdHVyZXNBcmVKU1Njb3BlID0gIXZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5pc0NsZWFy
KCk7Ci0gICAgICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7Ci0gICAgICAgIHZhbHVl
Rm9yTm9kZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSkgewotICAgICAgICAgICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8o
KTsKLSAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0g
U3RyaW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09
IEhlYXBCaWdJbnRUeXBlKTsKLSAgICAgICAgICAgIGlmICghZWNtYU1vZGUuaXNTdHJpY3QoKSkK
LSAgICAgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsKLSAgICAgICAgICAgIC8v
IFdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1ib2xzIGhlcmUgc2luY2Ug
ZWl0aGVyOgotICAgICAgICAgICAgLy8gMSkgV2UgYXJlIGluIHN0cmljdCBtb2RlIGFuZCBzdHJp
bmdzL3N5bWJvbHMgYXJlIG5vdCB3cmFwcGVkCi0gICAgICAgICAgICAvLyAyKSBUaGUgQUkgaGFz
IHByb3ZlbiB0aGF0IHRoZSB0eXBlIG9mIHRoaXMgaXMgYSBzdWJ0eXBlIG9mIG9iamVjdAotICAg
ICAgICAgICAgaWYgKHR5cGUuaXNPYmplY3QoKSAmJiB0eXBlLm92ZXJyaWRlc1RvVGhpcygpKQot
ICAgICAgICAgICAgICAgIG92ZXJyaWRlc1RvVGhpcyA9IHRydWU7Ci0KLSAgICAgICAgICAgIC8v
IElmIGFsbCB0aGUgc3RydWN0dXJlcyBhcmUgSlNTY29wZSdzIG9uZXMsIHdlIGtub3cgdGhlIGRl
dGFpbHMgb2YgSlNTY29wZTo6dG9UaGlzKCkgb3BlcmF0aW9uLgotICAgICAgICAgICAgYWxsU3Ry
dWN0dXJlc0FyZUpTU2NvcGUgJj0gc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUu
dG9UaGlzID09IEpTU2NvcGU6OmluZm8oKS0+bWV0aG9kVGFibGUudG9UaGlzOwotICAgICAgICB9
KTsKLSAgICAgICAgaWYgKCFvdmVycmlkZXNUb1RoaXMpCi0gICAgICAgICAgICByZXR1cm4gVG9U
aGlzUmVzdWx0OjpJZGVudGl0eTsKLSAgICAgICAgaWYgKGFsbFN0cnVjdHVyZXNBcmVKU1Njb3Bl
KSB7Ci0gICAgICAgICAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gVG9UaGlzUmVzdWx0OjpVbmRlZmluZWQ7Ci0gICAgICAgICAgICByZXR1cm4gVG9U
aGlzUmVzdWx0OjpHbG9iYWxUaGlzOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIFRv
VGhpc1Jlc3VsdDo6RHluYW1pYzsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0
ZVR5cGU+CiBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpoYW5k
bGVDb25zdGFudEJpbmFyeUJpdHdpc2VPcChOb2RlKiBub2RlKQogewpAQCAtMjk3MiwzMSArMjkx
MywyMiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAg
ICAgICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2Ug
PSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGlu
YXRpb24gPSBmb3JOb2RlKG5vZGUpOwotICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG5vZGUt
PmVjbWFNb2RlKCk7CiAKLSAgICAgICAgVG9UaGlzUmVzdWx0IHJlc3VsdCA9IGlzVG9UaGlzQW5J
ZGVudGl0eShtX3ZtLCBlY21hTW9kZSwgc291cmNlKTsKLSAgICAgICAgc3dpdGNoIChyZXN1bHQp
IHsKLSAgICAgICAgY2FzZSBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OgorICAgICAgICBpZiAoIShz
b3VyY2UubV90eXBlICYgflNwZWNPYmplY3QpKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnNldFNo
b3VsZFRyeUNvbnN0YW50Rm9sZGluZyh0cnVlKTsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uID0g
c291cmNlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVG9UaGlzUmVzdWx0OjpV
bmRlZmluZWQ6Ci0gICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc1VuZGVmaW5lZCgpKTsK
KyAgICAgICAgICAgIGRpZEZvbGRDbG9iYmVyV29ybGQoKTsKKyAgICAgICAgICAgIHNldEZvck5v
ZGUobm9kZSwgc291cmNlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRvVGhp
c1Jlc3VsdDo6R2xvYmFsVGhpczoKKyAgICAgICAgfQorCisgICAgICAgIHNldFR5cGVGb3JOb2Rl
KG5vZGUsIFNwZWNPYmplY3QpOworCisgICAgICAgIGlmICghKHNvdXJjZS5tX3R5cGUgJiB+U3Bl
Y090aGVyKSkgewogICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRp
bmcodHJ1ZSk7Ci0gICAgICAgICAgICBkZXN0aW5hdGlvbi5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNP
YmplY3QpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVG9UaGlzUmVzdWx0OjpE
eW5hbWljOgotICAgICAgICAgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCi0gICAgICAgICAg
ICAgICAgZGVzdGluYXRpb24ubWFrZUhlYXBUb3AoKTsKLSAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gc291cmNlOwotICAgICAgICAgICAgICAgIGRlc3Rp
bmF0aW9uLm1lcmdlKFNwZWNPYmplY3QpOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KKworICAgICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCkBAIC0zMzE1LDYgKzMyNDcsMTMgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjT2JqZWN0
T3RoZXIpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDoK
KyAgICAgICAgaWYgKEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1
ZSgpKQorICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hpbGQuaW5oZXJpdHM8SlNTY29w
ZT4obV92bSkgPyBqc1VuZGVmaW5lZCgpIDogY2hpbGQpOworCisgICAgICAgIHNldFR5cGVGb3JO
b2RlKG5vZGUsIFNwZWNPYmplY3QgfCBTcGVjT3RoZXIpOworICAgICAgICBicmVhazsKKwogICAg
IGNhc2UgU2tpcFNjb3BlOiB7CiAgICAgICAgIGlmIChKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkudmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKEpTU2NvcGUqIHNjb3Bl
ID0ganNEeW5hbWljQ2FzdDxKU1Njb3BlKj4obV92bSwgY2hpbGQpKSB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24g
Mjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU0MDksMjUgKzU0MDksNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICBjYXNlIG9wX3RvX3RoaXM6IHsKLSAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldFRoaXMoKTsK
LSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9U
aGlzPigpOwotICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShj
b2RlQmxvY2spOwotICAgICAgICAgICAgU3RydWN0dXJlSUQgY2FjaGVkU3RydWN0dXJlSUQgPSBt
ZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEOwotICAgICAgICAgICAgU3RydWN0dXJlKiBjYWNo
ZWRTdHJ1Y3R1cmUgPSBudWxscHRyOwotICAgICAgICAgICAgaWYgKGNhY2hlZFN0cnVjdHVyZUlE
KQotICAgICAgICAgICAgICAgIGNhY2hlZFN0cnVjdHVyZSA9IG1fdm0tPmhlYXAuc3RydWN0dXJl
SURUYWJsZSgpLmdldChjYWNoZWRTdHJ1Y3R1cmVJRCk7Ci0gICAgICAgICAgICBpZiAobWV0YWRh
dGEubV90b1RoaXNTdGF0dXMgIT0gVG9UaGlzT0sKLSAgICAgICAgICAgICAgICB8fCAhY2FjaGVk
U3RydWN0dXJlCi0gICAgICAgICAgICAgICAgfHwgY2FjaGVkU3RydWN0dXJlLT5jbGFzc0luZm8o
KS0+bWV0aG9kVGFibGUudG9UaGlzICE9IEpTT2JqZWN0OjppbmZvKCktPm1ldGhvZFRhYmxlLnRv
VGhpcwotICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUu
aGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKQotICAgICAgICAgICAgICAgIHx8
IChvcDEtPm9wKCkgPT0gR2V0TG9jYWwgJiYgb3AxLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c3Ry
dWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgpKSkgewotICAgICAgICAgICAgICAgIHNldFRoaXMo
YWRkVG9HcmFwaChUb1RoaXMsIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgT3BJbmZvKGdl
dFByZWRpY3Rpb24oKSksIG9wMSkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKAotICAgICAgICAgICAgICAgICAgICBDaGVja1N0cnVjdHVyZSwKLSAg
ICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGNhY2hlZFN0
cnVjdHVyZSkpLAotICAgICAgICAgICAgICAgICAgICBvcDEpOwotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgc2V0VGhpcyhhZGRUb0dyYXBoKFRvVGhpcywgT3BJbmZvKGdldFByZWRpY3Rpb24o
KSksIGdldFRoaXMoKSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfdG9fdGhpcyk7CiAg
ICAgICAgIH0KIApAQCAtNzc0Miw3ICs3NzI0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMuc3RhdGUoKSAhPSBH
ZXRCeVN0YXR1czo6U2ltcGxlCiAgICAgICAgICAgICAgICAgICAgIHx8IHN0YXR1cy5udW1WYXJp
YW50cygpICE9IDEKICAgICAgICAgICAgICAgICAgICAgfHwgc3RhdHVzWzBdLnN0cnVjdHVyZVNl
dCgpLnNpemUoKSAhPSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2Rz
dCwgYWRkVG9HcmFwaChHZXRCeUlkRmx1c2gsIE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLCB1aWQpKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBnZXQoYnl0ZWNvZGUubV9z
Y29wZSkpKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dy
YXBoKEdldEJ5SWRGbHVzaCwgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
ZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2ssIHVpZCkpLCBPcEluZm8ocHJlZGljdGlvbiksIHdlYWtKU0NvbnN0YW50KGdsb2JhbE9iamVj
dC0+Z2xvYmFsVGhpcygpKSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICB9CiAKQEAgLTc4NjYsNiArNzg0OCwxMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfZnJvbV9z
Y29wZSk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2dldF90aGlzX3ZhbHVlX2Zvcl9j
YWxsOiB7CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcEdldFRoaXNWYWx1ZUZvckNhbGw+KCk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9k
c3QsIGFkZFRvR3JhcGgoR2V0VGhpc1ZhbHVlRm9yQ2FsbCwgZ2V0KGJ5dGVjb2RlLm1fc2NvcGUp
KSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfdGhpc192YWx1ZV9mb3JfY2FsbCk7
CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3B1dF90b19zY29wZTogewogICAgICAgICAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRUb1Njb3BlPigp
OwogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spOwpAQCAtNzkxNyw3ICs3OTA1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSAhPSAx
CiAgICAgICAgICAgICAgICAgICAgIHx8IHN0YXR1c1swXS5raW5kKCkgIT0gUHV0QnlJZFZhcmlh
bnQ6OlJlcGxhY2UKICAgICAgICAgICAgICAgICAgICAgfHwgc3RhdHVzWzBdLnN0cnVjdHVyZSgp
LnNpemUoKSAhPSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZCwg
T3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBPcEluZm8o
Ynl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpLCBnZXQoYnl0ZWNvZGUubV9zY29wZSks
IGdldChieXRlY29kZS5tX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
UHV0QnlJZCwgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkp
LCBPcEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpLCB3ZWFrSlNDb25zdGFu
dChnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKSksIGdldChieXRlY29kZS5tX3ZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBOb2RlKiBiYXNlID0gd2Vha0pTQ29uc3RhbnQoZ2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9u
IDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjU0LDYgKzI1NCw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBh
YmlsaXR5TGV2ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX2hhc19wcml2YXRlX2JyYW5kOgogICAg
IGNhc2Ugb3BfZ2V0X3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6CisgICAgY2Fz
ZSBvcF9nZXRfdGhpc192YWx1ZV9mb3JfY2FsbDoKICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxl
X2xlbmd0aDoKICAgICBjYXNlIG9wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHk6CiAg
ICAgY2FzZSBvcF9oYXNfZW51bWVyYWJsZV9zdHJ1Y3R1cmVfcHJvcGVydHk6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjc4MTU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIxOCw2ICsyMTgsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlCiAgICAgY2FzZSBBcml0aE1heDoKICAgICBjYXNlIEFyaXRoUG93OgogICAgIGNhc2Ug
R2V0U2NvcGU6CisgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxsOgogICAgIGNhc2UgU2tpcFNj
b3BlOgogICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVB
dDoKQEAgLTU5MSwxMiArNTkyLDYgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZQogICAgICAgICB3cml0ZShIZWFwT2JqZWN0Q291bnQpOwogICAgICAgICByZXR1cm47
CiAKLSAgICBjYXNlIFRvVGhpczoKLSAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKLSAgICAgICAg
cmVhZChIZWFwT2JqZWN0Q291bnQpOwotICAgICAgICB3cml0ZShIZWFwT2JqZWN0Q291bnQpOwot
ICAgICAgICByZXR1cm47Ci0KICAgICBjYXNlIFR5cGVPZklzT2JqZWN0OgogICAgICAgICByZWFk
KE1pc2NGaWVsZHMpOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVPZklzT2JqZWN0TG9j
LCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKQEAgLTcxNiw2
ICs3MTEsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAg
Y2FzZSBSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOgogICAgIGNhc2UgUmVz
b2x2ZVNjb3BlOgogICAgIGNhc2UgVG9PYmplY3Q6CisgICAgY2FzZSBUb1RoaXM6CiAgICAgY2Fz
ZSBIYXNFbnVtZXJhYmxlU3RydWN0dXJlUHJvcGVydHk6CiAgICAgY2FzZSBIYXNFbnVtZXJhYmxl
UHJvcGVydHk6CiAgICAgY2FzZSBIYXNPd25TdHJ1Y3R1cmVQcm9wZXJ0eToKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE0LDEzICs3MTQsMTMg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY2FzZSBUb1RoaXM6IHsK
LSAgICAgICAgICAgICAgICBUb1RoaXNSZXN1bHQgcmVzdWx0ID0gaXNUb1RoaXNBbklkZW50aXR5
KG1fZ3JhcGgubV92bSwgbm9kZS0+ZWNtYU1vZGUoKSwgbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNo
aWxkMSgpKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBUb1RoaXNSZXN1bHQ6Oklk
ZW50aXR5KSB7CisgICAgICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRl
LmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGlmICghKHZhbHVlLm1f
dHlwZSAmIH5TcGVjT2JqZWN0KSkgewogICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0
VG9JZGVudGl0eSgpOwogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGlmIChyZXN1bHQgPT0gVG9UaGlzUmVzdWx0OjpHbG9iYWxUaGlzKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCEodmFsdWUubV90eXBlICYgflNwZWNPdGhlcikpIHsKICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+Y29udmVydFRvR2V0R2xvYmFsVGhpcygpOwogICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
OSw2ICsxMTksNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBDaGVja0FycmF5T3JFbXB0eToKICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6CiAgICAgY2Fz
ZSBHZXRTY29wZToKKyAgICBjYXNlIEdldFRoaXNWYWx1ZUZvckNhbGw6CiAgICAgY2FzZSBTa2lw
U2NvcGU6CiAgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6CiAgICAgY2FzZSBHZXRHbG9iYWxUaGlz
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShy
ZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODA2LDYgKzE4MDYsNyBAQCBwcml2YXRlOgogCiAg
ICAgICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjYXNlIEdldFNjb3BlOgorICAgICAgICBj
YXNlIEdldFRoaXNWYWx1ZUZvckNhbGw6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgogICAgICAg
ICBjYXNlIEdldFNldHRlcjoKICAgICAgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6IHsKQEAgLTMx
NDQsOTYgKzMxNDUsMTggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZml4dXBUb1RoaXMoTm9kZSog
bm9kZSkKICAgICB7Ci0gICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gbm9kZS0+ZWNtYU1vZGUo
KS5pc1N0cmljdCgpOwotCi0gICAgICAgIGlmIChpc1N0cmljdE1vZGUpIHsKLSAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQm9vbGVhbigpKSB7Ci0gICAgICAg
ICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAg
ICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlSW50MzIoKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKSB7Ci0gICAgICAgICAg
ICAgICAgZml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAg
ICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+c2V0
UmVzdWx0KE5vZGVSZXN1bHRJbnQ1Mik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0
ZU51bWJlcigpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwot
ICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3ltYm9sKCkpIHsKLSAgICAgICAgICAgICAgICBm
aXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIG5vZGUt
PmNvbnZlcnRUb0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0
cmluZ0lkZW50KCkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihu
b2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHko
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpIHsKLSAgICAgICAg
ICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAg
ICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7Ci0jaWYgVVNFKEJJR0lOVDMyKQotICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkK
LSAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkp
OwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVIZWFwQmlnSW50KCkpCi0gICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgZml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSNlbHNlCi0gICAg
ICAgICAgICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0jZW5k
aWYKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCiAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT3RoZXIoKSkgewotICAgICAgICAgICAgaWYg
KGlzU3RyaWN0TW9kZSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8T3RoZXJVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgbV9p
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywg
U3BlY05vbmUsIENoZWNrLCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAgICAgRWRnZShub2Rl
LT5jaGlsZDEoKS5ub2RlKCksIE90aGVyVXNlKSk7CiAgICAgICAgICAgICBvYnNlcnZlVXNlS2lu
ZE9uTm9kZTxPdGhlclVzZT4obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIG1f
Z3JhcGguY29udmVydFRvQ29uc3RhbnQoCi0gICAgICAgICAgICAgICAgbm9kZSwgbV9ncmFwaC5n
bG9iYWxUaGlzT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpOworICAgICAgICAgICAg
ICAgIG5vZGUsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykt
Pmdsb2JhbFRoaXMoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgY292ZXIgb3RoZXIgdXNlIGNhc2VzIGJ1dCB3ZSBkb24n
dCBoYXZlIHVzZSBraW5kcyBmb3IgdGhlbS4gSXQncyBub3QgY3JpdGljYWwsCi0gICAgICAgIC8v
IGhvd2V2ZXIsIHNpbmNlIHdlIGNvdmVyIGFsbCB0aGUgbWlzc2luZyBjYXNlcyBpbiBjb25zdGFu
dCBmb2xkaW5nLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU3MjEzCi0gICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRl
U3RyaW5nT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nT2JqZWN0VXNlPihu
b2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzRmluYWxPYmpl
Y3RTcGVjdWxhdGlvbihub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpKSkgewotICAgICAgICAg
ICAgZml4RWRnZTxGaW5hbE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpKSB7CisgICAgICAgICAgICBm
aXhFZGdlPE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgbm9kZS0+Y29u
dmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjc4MTU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzAs
MTIgKzQ3MCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbik7CiAgICAgfQogICAgIAotICAgIEpTT2JqZWN0KiBnbG9iYWxU
aGlzT2JqZWN0Rm9yKENvZGVPcmlnaW4gY29kZU9yaWdpbikKLSAgICB7Ci0gICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBvYmplY3QgPSBnbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbik7Ci0gICAgICAg
IHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihvYmplY3QtPm1ldGhvZFRhYmxlKG1fdm0pLT50b1Ro
aXMob2JqZWN0LCBvYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpOwotICAgIH0KLSAgICAKICAg
ICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlRm9yKElubGluZUNhbGxGcmFtZSogaW5saW5l
Q2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDI3ODE1OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc5LDYgKzc5LDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBO
b2RlKgogICAgIGNhc2UgU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CiAgICAgY2FzZSBH
ZXRSZXN0TGVuZ3RoOgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2FzZSBHZXRUaGlzVmFsdWVG
b3JDYWxsOgogICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgIGNhc2UgQ291bnRFeGVjdXRpb246
CiAgICAgY2FzZSBTdXBlclNhbXBsZXJCZWdpbjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjI2NCw3ICsyMjY0LDYgQEAgcHVibGljOgog
ICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRo
aXM6CiAgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKLSAgICAgICAgY2FzZSBUb1RoaXM6CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTIyNzgsNyArMjI3Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBD
YWxsRXZhbDoKICAgICAgICAgY2FzZSBEZWxldGVCeVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZh
bFdpdGhUaGlzOgotICAgICAgICBjYXNlIFRvVGhpczoKICAgICAgICAgICAgIHJldHVybiBFQ01B
TW9kZTo6ZnJvbUJ5dGUobV9vcEluZm8uYXM8dWludDhfdD4oKSk7CiAgICAgICAgIGNhc2UgRGVs
ZXRlQnlJZDoKICAgICAgICAgY2FzZSBQdXRCeUlkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsNiArMjc1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEdldEdsb2JhbExl
eGljYWxWYXJpYWJsZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0R2xvYmFsVmFyaWFi
bGUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXREeW5hbWljVmFyLCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0VGhpc1ZhbHVlRm9yQ2Fs
bCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0RHluYW1pY1ZhciwgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIG1hY3JvKE5vdGlmeVdyaXRlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAg
bWFjcm8oR2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4LCBOb2RlUmVzdWx0SlMpIFwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjc4
MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjE3LDI0ICsyMTcsNiBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1Zh
bHVlIGdldEJ5VmFsT2JqCiAgICAgcmV0dXJuIGJhc2UtPmdldChnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Ub1RoaXMs
IEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wKSkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0g
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
LQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSk7Ci19Ci0KLUpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Ub1RoaXNTdHJpY3QsIEVuY29kZWRKU1ZhbHVlLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKSkK
LXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLQotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgRUNNQU1vZGU6OnN0cmljdCgpKSk7Ci19Ci0KIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25PYmplY3RLZXlzLCBKU0FycmF5KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPYmplY3QpKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKQEAgLTMxODEsNyArMzE2Myw4IEBAIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25HZXREeW4KICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlk
KHZtLCBpbXBsKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHNjb3BlLT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgWyZdIChi
b29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgeworICAgIFByb3BlcnR5
U2xvdCBzbG90KEpTU2NvcGU6OnJlY2VpdmVyRm9yU2NvcGUoc2NvcGUpLCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNjb3BlLT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0
LCBpZGVudCwgc2xvdCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmKSAtPiBKU1ZhbHVl
IHsKICAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgR2V0UHV0SW5mbyBnZXRQdXRJ
bmZvKGdldFB1dEluZm9CaXRzKTsKICAgICAgICAgICAgIGlmIChnZXRQdXRJbmZvLnJlc29sdmVN
b2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kKQpAQCAtMzIyOCw3ICszMjExLDcgQEAgQUxXQVlTX0lO
TElORSBzdGF0aWMgdm9pZCBwdXREeW5hbWljVmFyKAogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGlzU3RyaWN0TW9kZSwgUHV0UHJvcGVy
dHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihnZXRQdXRJbmZvLmluaXRp
YWxpemF0aW9uTW9kZSgpKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNTY29wZTo6cmVj
ZWl2ZXJGb3JTY29wZShzY29wZSksIGlzU3RyaWN0TW9kZSwgUHV0UHJvcGVydHlTbG90OjpVbmtu
b3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihnZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9k
ZSgpKSk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgc2NvcGUtPm1ldGhvZFRhYmxl
KHZtKS0+cHV0KHNjb3BlLCBnbG9iYWxPYmplY3QsIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUodmFs
dWUpLCBzbG90KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5oCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsOCArNTgsNiBAQCBKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkNyZWF0ZUludGVybmFsUHJvbWlzZSwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0
KiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbkNyZWF0ZUdlbmVyYXRvciwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmpl
Y3QqIGNvbnN0cnVjdG9yKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNy
ZWF0ZUFzeW5jR2VuZXJhdG9yLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCog
Y29uc3RydWN0b3IpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVG9UaGlz
LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMSkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Ub1RoaXNTdHJpY3Qs
IEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblZhbHVlTW9kLCBFbmNv
ZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25WYWx1ZUJpdE5vdCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uVmFsdWVCaXRBbmQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUyNyw3MSArNTI3LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIFRvVGhpczogewotICAgICAgICAgICAgLy8gVG9UaGlzIGluIG1l
dGhvZHMgZm9yIHByaW1pdGl2ZSB0eXBlcyBzaG91bGQgc3BlY3VsYXRlIHByaW1pdGl2ZSB0eXBl
cyBpbiBzdHJpY3QgbW9kZS4KLSAgICAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gbm9kZS0+
ZWNtYU1vZGUoKS5pc1N0cmljdCgpOwotICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkgewot
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQm9vbGVh
bigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNw
ZWNCb29sZWFuKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJ
bnQzMigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9u
KFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZUludDUyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24oU3BlY0ludDUyQW55KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVOdW1iZXIoKSkgewotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
UHJlZGljdGlvbihTcGVjQnl0ZWNvZGVOdW1iZXIpOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZVN5bWJvbCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTeW1ib2wpOwotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSNpZiBVU0UoQklHSU5UMzIpCi0gICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCaWdJbnQz
Mik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSNlbmRp
ZgotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVI
ZWFwQmlnSW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24oU3BlY0hlYXBCaWdJbnQpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3Vs
ZFNwZWN1bGF0ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VQcmVkaWN0aW9uKFNwZWNCaWdJbnQpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N0cmluZ0lkZW50KTsKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkgewotICAgICAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjU3RyaW5nKTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNT
dHJpbmdPYmplY3QpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmlu
ZygpKSB7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N0
cmluZ09iamVjdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBub2RlLT5jaGlsZDEoKS0+cHJl
ZGljdGlvbigpOwotICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkKLSAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKHByZWRpY3Rpb24pIHsKKyAgICAgICAgICAgIGlmIChwcmVk
aWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgb3JpZ2luYWxQcmVkaWN0
aW9uID0gcHJlZGljdGlvbjsKICAgICAgICAgICAgICAgICBpZiAocHJlZGljdGlvbiAmIH5TcGVj
T2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdyYXBwZXIgb2JqZWN0cyBhcmUgY3Jl
YXRlZCBvbmx5IGluIHNsb3BweSBtb2RlLgpAQCAtMTIwNCw2ICsxMTQ2LDEwIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgICAg
ICBicmVhazsKIAorICAgICAgICBjYXNlIEdldFRoaXNWYWx1ZUZvckNhbGw6IHsKKyAgICAgICAg
ICAgIHNldFByZWRpY3Rpb24oU3BlY09iamVjdCB8IFNwZWNPdGhlcik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIEdldEVudW1lcmFibGVMZW5ndGg6IHsKICAg
ICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CiAgICAgICAgICAgICBicmVh
azsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMyLDYgKzIzMiw3IEBAIGJvb2wgc2FmZVRv
RXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAg
Y2FzZSBDaGVja0FycmF5T3JFbXB0eToKICAgICBjYXNlIEdldFNjb3BlOgorICAgIGNhc2UgR2V0
VGhpc1ZhbHVlRm9yQ2FsbDoKICAgICBjYXNlIFNraXBTY29wZToKICAgICBjYXNlIEdldEdsb2Jh
bE9iamVjdDoKICAgICBjYXNlIEdldEdsb2JhbFRoaXM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9u
IDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMjAsNiArNDIyMCwxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAor
ICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDogeworICAgICAgICBjb21waWxlR2V0VGhpc1Zh
bHVlRm9yQ2FsbChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBSZXNv
bHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOiB7CiAgICAgICAgIGNvbXBpbGVSZXNv
bHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsKG5vZGUpOwogICAgICAgICBicmVhazsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI1OSw2ICs0MjU5LDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29t
cGlsZUdldER5bmFtaWNWYXIobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNh
c2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDogeworICAgICAgICBjb21waWxlR2V0VGhpc1ZhbHVlRm9y
Q2FsbChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIAogICAgIGNhc2UgUmVzb2x2
ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbDogewogICAgICAgICBjb21waWxlUmVzb2x2
ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbChub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyNzgx
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIxMjQsNiArMTIxMjQsMjUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldER5bmFtaWNWYQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUaGlzVmFsdWVGb3JDYWxs
KE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOworICAgIEdQUlJlZyBzY29wZUdQUiA9IHNjb3BlLmdwcigpOworCisgICAg
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgbV9qaXQubW92ZVRydXN0ZWRWYWx1ZShqc1Vu
ZGVmaW5lZCgpLCByZXN1bHRSZWdzKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RXaXRo
U2NvcGUgPSBtX2ppdC5icmFuY2hJZlR5cGUoc2NvcGVHUFIsIEpTVHlwZVJhbmdlIHsgRmlyc3RK
U1Njb3BlVHlwZSwgTGFzdEpTU2NvcGVUeXBlIH0pOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHJlc3VsdFJlZ3Mu
dGFnR1BSKCkpOworI2VuZGlmCisgICAgbV9qaXQubW92ZShzY29wZUdQUiwgcmVzdWx0UmVncy5w
YXlsb2FkR1BSKCkpOworICAgIG5vdFdpdGhTY29wZS5saW5rKCZtX2ppdCk7CisKKyAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0RHluYW1pY1ZhcihOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIHNjb3BlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTEzNDU4LDI5ICsxMzQ3NywyNSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJhCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlVG9UaGlzKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCB0aGlz
VmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHRl
bXAodGhpcyk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKLSAgICBKU1ZhbHVlUmVncyB0
aGlzVmFsdWVSZWdzID0gdGhpc1ZhbHVlLmpzVmFsdWVSZWdzKCk7Ci0gICAgSlNWYWx1ZVJlZ3Mg
dGVtcFJlZ3MgPSB0ZW1wLnJlZ3MoKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAg
IEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHRoaXNWYWx1ZS5qc1ZhbHVlUmVncygpOworICAgIEdQ
UlJlZyB2YWx1ZUdQUiA9IHZhbHVlUmVncy5wYXlsb2FkR1BSKCk7CiAKKyAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKHZhbHVlUmVncyk7CiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKLSAgICBzbG93Q2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbCh0aGlzVmFsdWVSZWdzKSk7Ci0gICAgc2xvd0Nhc2Vz
LmFwcGVuZCgKLSAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCi0gICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRo
aXNWYWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSks
Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE92ZXJyaWRlc1RvVGhp
cykpKTsKLSAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKHRoaXNWYWx1ZVJlZ3MsIHRlbXBSZWdzKTsK
LQotICAgIEpfSklUT3BlcmF0aW9uX0dKIGZ1bmN0aW9uOwotICAgIGlmIChub2RlLT5lY21hTW9k
ZSgpLmlzU3RyaWN0KCkpCi0gICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzU3RyaWN0
OwotICAgIGVsc2UKLSAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXM7Ci0gICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgZnVuY3Rpb24s
IHRlbXBSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdGhpc1ZhbHVlUmVncykpOwor
ICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RPYmplY3QodmFsdWVHUFIpKTsK
KyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogCi0gICAganNW
YWx1ZVJlc3VsdCh0ZW1wUmVncywgbm9kZSk7CisgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7Cisg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdE90aGVyKHZhbHVlUmVncywgc2Ny
YXRjaC5ncHIoKSkpOworICAgIG1faml0LmxvYWRQdHIoZ2xvYmFsT2JqZWN0LT5hZGRyZXNzT2ZH
bG9iYWxUaGlzKCksIHZhbHVlR1BSKTsKKworICAgIGRvbmUubGluaygmbV9qaXQpOworICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
blRvT2JqZWN0LCB2YWx1ZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
Z2xvYmFsT2JqZWN0KSwgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKSk7CisgICAg
Y2VsbFJlc3VsdCh2YWx1ZUdQUiwgbm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVPYmplY3RLZXlzT3JPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzKE5vZGUqIG5vZGUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShy
ZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NTIsNiArMTQ1Miw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNvbXBpbGVHZXRHbG9iYWxWYXJpYWJsZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
UHV0R2xvYmFsVmFyaWFibGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldER5bmFtaWNWYXIo
Tm9kZSopOworICAgIHZvaWQgY29tcGlsZUdldFRoaXNWYWx1ZUZvckNhbGwoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZVB1dER5bmFtaWNWYXIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldENs
b3N1cmVWYXIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVB1dENsb3N1cmVWYXIoTm9kZSopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAko
cmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTIsNiArMzUyLDcgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgUmVzb2x2ZVNjb3BlOgogICAg
IGNhc2UgUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbDoKICAgICBjYXNlIEdl
dER5bmFtaWNWYXI6CisgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxsOgogICAgIGNhc2UgUHV0
RHluYW1pY1ZhcjoKICAgICBjYXNlIENvbXBhcmVFcToKICAgICBjYXNlIENvbXBhcmVFcVB0cjoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyMSw2ICsxNjIxLDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBHZXREeW5hbWljVmFyOgogICAgICAgICAgICAgY29tcGlsZUdldER5bmFt
aWNWYXIoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldFRoaXNWYWx1ZUZv
ckNhbGw6CisgICAgICAgICAgICBjb21waWxlR2V0VGhpc1ZhbHVlRm9yQ2FsbCgpOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKICAgICAgICAgICAgIGNv
bXBpbGVQdXREeW5hbWljVmFyKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIyMDksMzMgKzIy
MTIsMjkgQEAgcHJpdmF0ZToKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKIAogICAgICAgICBM
VmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVj
dWxhdGVkVHlwZSB2YWx1ZVR5cGUgPSBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgIExCYXNpY0Jsb2NrIG5vdENlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAg
ICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBM
QmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAKLSAg
ICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgaXNDZWxsKHZhbHVlLCBwcm92ZW5UeXBl
KG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShpc0NlbGxDYXNlKSwgcmFyZWx5KHNsb3dDYXNl
KSk7Ci0gICAgICAgIAotICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVu
ZFRvKGlzQ2VsbENhc2UsIHNsb3dDYXNlKTsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJl
c3VsdCA9IG1fb3V0LmFuY2hvcih2YWx1ZSk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAg
ICAgICAgIG1fb3V0LnRlc3RJc1plcm8zMigKLSAgICAgICAgICAgICAgICBtX291dC5sb2FkOFpl
cm9FeHQzMih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfdHlwZUluZm9GbGFncyksCi0gICAgICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnQzMihPdmVycmlkZXNUb1RoaXMpKSwKLSAgICAgICAgICAgIHVz
dWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7CisgICAgICAgIG1fb3V0LmJy
YW5jaChpc0NlbGwodmFsdWUsIHZhbHVlVHlwZSksIHVzdWFsbHkoaXNDZWxsQ2FzZSksIHJhcmVs
eShub3RDZWxsQ2FzZSkpOwogICAgICAgICAKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5hcHBlbmRUbyhpc0NlbGxDYXNlLCBub3RDZWxsQ2FzZSk7CisgICAgICAgIFZhbHVl
RnJvbUJsb2NrIGlzT2JqZWN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZhbHVlKTsKKyAgICAgICAg
bV9vdXQuYnJhbmNoKGlzT2JqZWN0KHZhbHVlLCB2YWx1ZVR5cGUpLCB1c3VhbGx5KGNvbnRpbnVh
dGlvbiksIHJhcmVseShzbG93Q2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdENl
bGxDYXNlLCBzbG93Q2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGlzT3RoZXJSZXN1bHQg
PSBtX291dC5hbmNob3IobV9vdXQubG9hZFB0cihtX291dC5hYnNvbHV0ZShnbG9iYWxPYmplY3Qt
PmFkZHJlc3NPZkdsb2JhbFRoaXMoKSkpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzT3RoZXIo
dmFsdWUsIHZhbHVlVHlwZSksIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNl
KSk7CisKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0g
ICAgICAgIEpfSklUT3BlcmF0aW9uX0dKIGZ1bmN0aW9uOwotICAgICAgICBpZiAobV9ub2RlLT5l
Y21hTW9kZSgpLmlzU3RyaWN0KCkpCi0gICAgICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRv
VGhpc1N0cmljdDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRp
b25Ub1RoaXM7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNo
b3Iodm1DYWxsKEludDY0LCBmdW5jdGlvbiwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgdmFs
dWUpKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2
bUNhbGwoSW50NjQsIG9wZXJhdGlvblRvT2JqZWN0LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3Qp
LCB2YWx1ZSwgbV9vdXQuY29uc3RJbnRQdHIoMCkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9u
LCBsYXN0TmV4dCk7Ci0gICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBmYXN0UmVz
dWx0LCBzbG93UmVzdWx0KSk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBp
c09iamVjdFJlc3VsdCwgaXNPdGhlclJlc3VsdCwgc2xvd1Jlc3VsdCkpOwogICAgIH0KIAogICAg
IHZvaWQgY29tcGlsZVZhbHVlQWRkKCkKQEAgLTE0NDAzLDYgKzE0NDAyLDI2IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsb3dDZWxsKG1fbm9kZS0+
Y2hpbGQxKCkpLCBtX291dC5jb25zdEludFB0cih1aWQpLCBtX291dC5jb25zdEludDMyKG1fbm9k
ZS0+Z2V0UHV0SW5mbygpKSkpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUdldFRoaXNWYWx1
ZUZvckNhbGwoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHNjb3BlID0gbG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKTsKKworICAgICAgICBMQmFzaWNCbG9jayB3aXRoU2NvcGVDYXNlID0gbV9vdXQu
bmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3
QmxvY2soKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayB1bmRlZmluZWRSZXN1bHQgPSBtX291
dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZVVuZGVmaW5lZCkpOworICAg
ICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICBpc0NlbGxXaXRoVHlwZShzY29wZSwgSlNU
eXBlUmFuZ2UgeyBGaXJzdEpTU2NvcGVUeXBlLCBMYXN0SlNTY29wZVR5cGUgfSwgV1RGOjpudWxs
b3B0LCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwKKyAgICAgICAgICAgIHVzdWFsbHko
Y29udGludWF0aW9uKSwgcmFyZWx5KHdpdGhTY29wZUNhc2UpKTsKKworICAgICAgICBMQmFzaWNC
bG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHdpdGhTY29wZUNhc2UsIGNvbnRpbnVhdGlv
bik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHdpdGhTY29wZVJlc3VsdCA9IG1fb3V0LmFuY2hv
cihzY29wZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBt
X291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1
ZShtX291dC5waGkoSW50NjQsIHVuZGVmaW5lZFJlc3VsdCwgd2l0aFNjb3BlUmVzdWx0KSk7Cisg
ICAgfQorCiAgICAgdm9pZCBjb21waWxlUHV0RHluYW1pY1ZhcigpCiAgICAgewogICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9v
cmlnaW4uc2VtYW50aWMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9E
U0wucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wu
cmIJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3Iv
RFNMLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNyArMTQyLDYgQEAgbW9kdWxlIERTTAogI2lu
Y2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgi
CiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVkZSAiVG9UaGlzU3RhdHVzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkocmV2aXNpb24gMjc4MTU5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9z
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw3ICsxMzcsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0
ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENvCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBqc0Nhc3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvVGhp
cyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpOworICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU2xvcHB5TW9kZVRoaXMoZ2xv
YmFsT2JqZWN0KTsKICAgICByZXR1cm4ganNTdHJpbmcodm0sIEpTT2JqZWN0OjpjYWxjdWxhdGVk
Q2xhc3NOYW1lKG9iamVjdCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0Niw2ICs2NDYsOCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlUHJv
Z3JhbShjb25zCiB7CiAgICAgSlNTY29wZSogc2NvcGUgPSB0aGlzT2JqLT5nbG9iYWxPYmplY3Qo
KS0+Z2xvYmFsU2NvcGUoKTsKICAgICBWTSYgdm0gPSBzY29wZS0+dm0oKTsKKyAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX01FU1NBR0UoIXRoaXNPYmotPmluaGVyaXRzPEpTU2NvcGU+KHZtKSwgInRo
aXNWYWx1ZSBzaG91bGRuJ3QgYmUgSlNTY29wZSIpOworCiAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IHNjb3BlLT5nbG9iYWxPYmplY3Qodm0pOwogICAgIEpTQ2FsbGVlKiBnbG9iYWxDYWxsZWUg
PSBnbG9iYWxPYmplY3QtPmdsb2JhbENhbGxlZSgpOwpAQCAtODQyLDYgKzg0NCw4IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKEpTR2xvYmEKICAgICBWTSYgdm0gPSBsZXhpY2Fs
R2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCF0aGlzVmFsdWUu
aW5oZXJpdHM8SlNTY29wZT4odm0pLCAidGhpc1ZhbHVlIHNob3VsZG4ndCBiZSBKU1Njb3BlIik7
CisKICAgICBhdXRvIGNsb2JiZXJpemVWYWxpZGF0b3IgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CiAg
ICAgICAgIHZtLmRpZEVudGVyVk0gPSB0cnVlOwogICAgIH0pOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjIsNiArNDYyLDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogCiAgICAgICAgIERFRklORV9PUChvcF9yZXNvbHZl
X3Njb3BlKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2Zyb21fc2NvcGUpCisgICAgICAgIERF
RklORV9PUChvcF9nZXRfdGhpc192YWx1ZV9mb3JfY2FsbCkKICAgICAgICAgREVGSU5FX09QKG9w
X3B1dF90b19zY29wZSkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9mcm9tX2FyZ3VtZW50cykK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF90b19hcmd1bWVudHMpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTcyOCw2ICs3MjgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICB2b2lkIGVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF90aGlzX3ZhbHVlX2Zvcl9jYWxsKGNvbnN0
IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfdG9fc2NvcGUoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhj
b25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50
cyhjb25zdCBJbnN0cnVjdGlvbiopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTE3
LDIyICsxMTE3LDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSW5zdAog
ICAgIGVtaXRTdG9yZUNlbGwoYnl0ZWNvZGUubV9kc3QsIHJlc3VsdFJlZyk7CiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKLXsKLSAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvVGhp
cz4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KTsKLSAgICBTdHJ1Y3R1cmVJRCogY2FjaGVkU3RydWN0dXJlSUQgPSAmbWV0YWRhdGEubV9jYWNo
ZWRTdHJ1Y3R1cmVJRDsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc1JlZ2lzdGVyID0gYnl0ZWNv
ZGUubV9zcmNEc3Q7Ci0KLSAgICBlbWl0TG9hZCh0aGlzUmVnaXN0ZXIsIHJlZ1QzLCByZWdUMik7
Ci0KLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENlbGwocmVnVDMpKTsKLSAgICBhZGRTbG93
Q2FzZShicmFuY2hJZk5vdFR5cGUocmVnVDIsIEZpbmFsT2JqZWN0VHlwZSkpOwotICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOwot
ICAgIGxvYWQzMihjYWNoZWRTdHJ1Y3R1cmVJRCwgcmVnVDIpOwotICAgIGFkZFNsb3dDYXNlKGJy
YW5jaFB0cihOb3RFcXVhbCwgcmVnVDAsIHJlZ1QyKSk7Ci19Ci0KIHZvaWQgSklUOjplbWl0X29w
X2NoZWNrX3Rkeihjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ2hlY2tUZHo+KCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDI3
ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyOTUsMjAgKzEyOTUsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2Nv
cGUoY29uc3QgSW5zdHJ1CiAgICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQotewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9U
aGlzPigpOwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spOwotICAgIFN0cnVjdHVyZUlEKiBjYWNoZWRTdHJ1Y3R1cmVJRCA9ICZtZXRhZGF0YS5tX2Nh
Y2hlZFN0cnVjdHVyZUlEOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9z
cmNEc3QsIHJlZ1QxKTsKLQotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSk7
Ci0KLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdFR5cGUocmVnVDEsIEZpbmFsT2JqZWN0VHlw
ZSkpOwotICAgIGxvYWQzMihjYWNoZWRTdHJ1Y3R1cmVJRCwgcmVnVDIpOwotICAgIGFkZFNsb3dD
YXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCByZWdUMikpOwotfQotCiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wQ3JlYXRlVGhpcz4oKTsKQEAgLTIwOTMsNiAr
MjA3OSw0NCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcHJvdG90eXBlX29mKGNvbnN0CiAgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCwgcmVzdWx0UmVncyk7CiB9CiAK
K3ZvaWQgSklUOjplbWl0X29wX2dldF90aGlzX3ZhbHVlX2Zvcl9jYWxsKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BHZXRUaGlzVmFsdWVGb3JDYWxsPigpOworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzKHJlZ1QwKTsKKyNlbHNlCisgICAgSlNWYWx1
ZVJlZ3MgdmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CisjZW5kaWYKKyAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGJ5dGVjb2RlLm1fc2NvcGUsIHZhbHVlUmVncyk7CisKKyAgICBKdW1wIGlzV2l0
aFNjb3BlID0gYnJhbmNoSWZOb3RUeXBlKHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIEpTVHlwZVJh
bmdlIHsgRmlyc3RKU1Njb3BlVHlwZSwgTGFzdEpTU2NvcGVUeXBlIH0pOworICAgIG1vdmVUcnVz
dGVkVmFsdWUoanNVbmRlZmluZWQoKSwgdmFsdWVSZWdzKTsKKyAgICBpc1dpdGhTY29wZS5saW5r
KHRoaXMpOworCisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCwgdmFs
dWVSZWdzKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgSlNWYWx1
ZVJlZ3MgdmFsdWVSZWdzKHJlZ1QwKTsKKyNlbHNlCisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCk7CisjZW5kaWYKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVj
b2RlLm1fc3JjRHN0LCB2YWx1ZVJlZ3MpOworCisgICAgSnVtcCBub3RDZWxsID0gYnJhbmNoSWZO
b3RDZWxsKHZhbHVlUmVncyk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RPYmplY3QodmFs
dWVSZWdzLnBheWxvYWRHUFIoKSkpOworICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKworICAgIG5v
dENlbGwubGluayh0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdE90aGVyKHZhbHVl
UmVncywgcmVnVDMpKTsKKyAgICBzdG9yZVRydXN0ZWRWYWx1ZShtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCktPmdsb2JhbFRoaXMoKSwgYWRkcmVzc0ZvcihieXRlY29kZS5tX3NyY0RzdCkpOwor
CisgICAgZG9uZS5saW5rKHRoaXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlm
IC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NTYsNyArMjk1Niw4IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRGcm8KICAgICAvLyBNb2R1bGVW
YXIgaXMgYWx3YXlzIGNvbnZlcnRlZCB0byBDbG9zdXJlVmFyIGZvciBnZXRfZnJvbV9zY29wZS4K
ICAgICBBU1NFUlQoZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpICE9IE1vZHVsZVZhcik7CiAKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNjb3BlLT5n
ZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgWyZdIChib29sIGZvdW5kLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgeworICAgIFByb3BlcnR5U2xvdCBzbG90KEpTU2Nv
cGU6OnJlY2VpdmVyRm9yU2NvcGUoc2NvcGUpLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6R2V0KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKHNjb3BlLT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCwg
WyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmKSAtPiBKU1ZhbHVlIHsKICAgICAgICAgaWYg
KCFmb3VuZCkgewogICAgICAgICAgICAgaWYgKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBU
aHJvd0lmTm90Rm91bmQpCiAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGdsb2JhbE9iamVj
dCwgaWRlbnQpKTsKQEAgLTMwMjcsNyArMzAyOCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25QdXRUb1MKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KHNjb3BlLCBnZXRQdXRJbmZvLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSwgUHV0
UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihnZXRQdXRJbmZv
LmluaXRpYWxpemF0aW9uTW9kZSgpKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoSlNTY29w
ZTo6cmVjZWl2ZXJGb3JTY29wZShzY29wZSksIGdldFB1dEluZm8uZWNtYU1vZGUoKS5pc1N0cmlj
dCgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKGdl
dFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKICAgICBzY29wZS0+bWV0aG9kVGFibGUo
dm0pLT5wdXQoc2NvcGUsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAgICAK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHZvaWQoKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9u
IDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMzgsNyArMjEzOCw4IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9nZXRfZnJvbV8KICAgICAvLyBNb2R1bGVWYXIgaXMgYWx3YXlzIGNvbnZl
cnRlZCB0byBDbG9zdXJlVmFyIGZvciBnZXRfZnJvbV9zY29wZS4KICAgICBBU1NFUlQobWV0YWRh
dGEubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkgIT0gTW9kdWxlVmFyKTsKIAotICAgIExMSU5U
X1JFVFVSTihzY29wZS0+Z2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgaWRlbnQsIFsmXSAo
Ym9vbCBmb3VuZCwgUHJvcGVydHlTbG90JiBzbG90KSAtPiBKU1ZhbHVlIHsKKyAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChKU1Njb3BlOjpyZWNlaXZlckZvclNjb3BlKHNjb3BlKSwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CisgICAgTExJTlRfUkVUVVJOKHNjb3BlLT5nZXRQ
cm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCwgWyZdIChib29sIGZvdW5kLCBQ
cm9wZXJ0eVNsb3QmKSAtPiBKU1ZhbHVlIHsKICAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAg
ICAgICAgaWYgKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZO
b3RGb3VuZCkKICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGdsb2JhbE9iamVj
dCwgaWRlbnQpKTsKQEAgLTIxOTcsNyArMjE5OCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wdXRfdG9fc2MKICAgICBpZiAobWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVN
b2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kICYmICFoYXNQcm9wZXJ0eSkKICAgICAgICAgTExJTlRf
VEhST1coY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihnbG9iYWxPYmplY3QsIGlkZW50KSk7
CiAKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZv
LmVjbWFNb2RlKCkuaXNTdHJpY3QoKSwgUHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwg
aXNJbml0aWFsaXphdGlvbihtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2Rl
KCkpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChKU1Njb3BlOjpyZWNlaXZlckZvclNjb3Bl
KHNjb3BlKSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSwgUHV0
UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihtZXRhZGF0YS5t
X2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKICAgICBzY29wZS0+bWV0aG9kVGFi
bGUodm0pLT5wdXQoc2NvcGUsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBzbG90KTsKICAg
ICAKICAgICBDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbChnbG9iYWxP
YmplY3QsIGNvZGVCbG9jaywgYnl0ZWNvZGUsIHNjb3BlLCBzbG90LCBpZGVudCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTgx
OCwxNCArODE4LDI2IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2dldF9zY29wZSwgT3BHZXRTY28K
IGVuZCkKIAogCi1sbGludE9wV2l0aE1ldGFkYXRhKG9wX3RvX3RoaXMsIE9wVG9UaGlzLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKK2xsaW50T3Aob3BfdG9f
dGhpcywgT3BUb1RoaXMsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQogICAgIGdldChtX3Ny
Y0RzdCwgdDApCi0gICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BU
b1RoaXNTbG93CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJpbmVx
IHQxLCBDZWxsVGFnLCAub3BUb1RoaXNOb3RDZWxsCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDAKLSAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEZpbmFsT2JqZWN0
VHlwZSwgLm9wVG9UaGlzU2xvdwotICAgIG1ldGFkYXRhKHQyLCB0MykKLSAgICBsb2FkaSBPcFRv
VGhpczo6TWV0YWRhdGE6Om1fY2FjaGVkU3RydWN0dXJlSURbdDJdLCB0MgotICAgIGJpbmVxIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyLCAub3BUb1RoaXNTbG93CisgICAgYmJiIEpTQ2Vs
bDo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdworICAgIGRpc3BhdGNoKCkK
KworLm9wVG9UaGlzTm90Q2VsbDoKKyAgICBvcmkgMSwgdDEKKyAgICBiaWVxIHQxLCBOdWxsVGFn
LCAub3BUb1RoaXNVbmRlZmluZWRPck51bGwKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF90
b190aGlzKQorICAgIGRpc3BhdGNoKCkKKworLm9wVG9UaGlzVW5kZWZpbmVkT3JOdWxsOgorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxP
YmplY3RbdDJdLCB0MgorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2dsb2JhbFRoaXNbdDJd
LCB0MgorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KICAgICBkaXNwYXRjaCgpCiAKIC5vcFRv
VGhpc1Nsb3c6CkBAIC0yNTU0LDYgKzI1NjYsMTggQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfZnJvbV9zY29wZSwgTwogZW5kKQogCiAKK2xsaW50T3BXaXRoUmV0dXJuKG9wX2dldF90aGlz
X3ZhbHVlX2Zvcl9jYWxsLCBPcEdldFRoaXNWYWx1ZUZvckNhbGwsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCByZXR1cm4pCisgICAgZ2V0KG1fc2NvcGUsIHQwKQorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QwXSwgRmly
c3RKU1Njb3BlVHlwZSwgLmlzV2l0aFNjb3BlCisgICAgYmJhIEpTQ2VsbDo6bV90eXBlW3QwXSwg
TGFzdEpTU2NvcGVUeXBlLCAuaXNXaXRoU2NvcGUKKyAgICByZXR1cm4oVW5kZWZpbmVkVGFnLCAw
KQorCisuaXNXaXRoU2NvcGU6CisgICAgcmV0dXJuKENlbGxUYWcsIHQwKQorZW5kKQorCisKIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3RvX3Njb3BlLCBPcFB1dFRvU2NvcGUsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIG1hY3JvIHB1dFByb3Bl
cnR5KCkKICAgICAgICAgZ2V0KG1fdmFsdWUsIHQxKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9u
IDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC04MjgsMTUgKzgyOCwyNiBAQCBsbGludE9wV2l0
aFJldHVybihvcF9nZXRfc2NvcGUsIE9wR2V0U2NvCiBlbmQpCiAKIAotbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF90b190aGlzLCBPcFRvVGhpcywgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkYXRhLCByZXR1cm4pCitsbGludE9wKG9wX3RvX3RoaXMsIE9wVG9UaGlzLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCkKICAgICBnZXQobV9zcmNEc3QsIHQwKQotICAgIGxvYWRxIFtjZnIs
IHQwLCA4XSwgdDAKLSAgICBidHFueiB0MCwgbm90Q2VsbE1hc2ssIC5vcFRvVGhpc1Nsb3cKLSAg
ICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xv
dwotICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQxCi0gICAgbWV0YWRhdGEo
dDIsIHQzKQotICAgIGxvYWRpIE9wVG9UaGlzOjpNZXRhZGF0YTo6bV9jYWNoZWRTdHJ1Y3R1cmVJ
RFt0Ml0sIHQyCi0gICAgYmluZXEgdDEsIHQyLCAub3BUb1RoaXNTbG93CisgICAgbG9hZHEgW2Nm
ciwgdDAsIDhdLCB0MQorICAgIGJ0cW56IHQxLCBub3RDZWxsTWFzaywgLm9wVG9UaGlzTm90Q2Vs
bAorICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cK
KyAgICBkaXNwYXRjaCgpCisKKy5vcFRvVGhpc05vdENlbGw6CisgICAgYW5kcSB+VGFnVW5kZWZp
bmVkLCB0MQorICAgIGJxZXEgdDEsIFZhbHVlTnVsbCwgLm9wVG9UaGlzVW5kZWZpbmVkT3JOdWxs
CisgICAgIyBicWVxIHQxLCBWYWx1ZVVuZGVmaW5lZCwgLm9wVG9UaGlzVW5kZWZpbmVkT3JOdWxs
CisgICAgIyBicWVxIHQxLCBWYWx1ZU51bGwsIC5vcFRvVGhpc1VuZGVmaW5lZE9yTnVsbAorICAg
IGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3RvX3RoaXMpCisgICAgZGlzcGF0Y2goKQorCisub3BU
b1RoaXNVbmRlZmluZWRPck51bGw6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MV0sIHQxCisgICAgbG9hZHAgSlNHbG9i
YWxPYmplY3Q6Om1fZ2xvYmFsVGhpc1t0MV0sIHQxCisgICAgc3RvcmVxIHQxLCBbY2ZyLCB0MCwg
OF0KICAgICBkaXNwYXRjaCgpCiAKIC5vcFRvVGhpc1Nsb3c6CkBAIC0yNjg0LDYgKzI2OTUsMTcg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgTwogZW5kKQogCiAKK2xs
aW50T3BXaXRoUmV0dXJuKG9wX2dldF90aGlzX3ZhbHVlX2Zvcl9jYWxsLCBPcEdldFRoaXNWYWx1
ZUZvckNhbGwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCisgICAgbG9hZFZh
cmlhYmxlKGdldCwgbV9zY29wZSwgdDApCisgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QwXSwgRmly
c3RKU1Njb3BlVHlwZSwgLmlzV2l0aFNjb3BlCisgICAgYmJhIEpTQ2VsbDo6bV90eXBlW3QwXSwg
TGFzdEpTU2NvcGVUeXBlLCAuaXNXaXRoU2NvcGUKKyAgICByZXR1cm4oVmFsdWVVbmRlZmluZWQp
CisKKy5pc1dpdGhTY29wZToKKyAgICByZXR1cm4odDApCitlbmQpCisKKwogbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9wUHV0VG9TY29wZSwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWFjcm8gcHV0UHJvcGVydHkoKQogICAg
ICAgICBnZXQobV92YWx1ZSwgdDEpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAyNzgxNTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtp
bmcgY29weSkKQEAgLTU0MSw2ICs1NDEsOCBAQCBjb25zdCBGaW5hbE9iamVjdFR5cGUgPSBjb25z
dGV4cHIgRmluYWxPCiBjb25zdCBKU0Z1bmN0aW9uVHlwZSA9IGNvbnN0ZXhwciBKU0Z1bmN0aW9u
VHlwZQogY29uc3QgQXJyYXlUeXBlID0gY29uc3RleHByIEFycmF5VHlwZQogY29uc3QgRGVyaXZl
ZEFycmF5VHlwZSA9IGNvbnN0ZXhwciBEZXJpdmVkQXJyYXlUeXBlCitjb25zdCBGaXJzdEpTU2Nv
cGVUeXBlID0gY29uc3RleHByIEZpcnN0SlNTY29wZVR5cGUKK2NvbnN0IExhc3RKU1Njb3BlVHlw
ZSA9IGNvbnN0ZXhwciBMYXN0SlNTY29wZVR5cGUKIGNvbnN0IFByb3h5T2JqZWN0VHlwZSA9IGNv
bnN0ZXhwciBQcm94eU9iamVjdFR5cGUKIGNvbnN0IEhlYXBCaWdJbnRUeXBlID0gY29uc3RleHBy
IEhlYXBCaWdJbnRUeXBlCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTkxLDcgKzU5MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1QK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKIAogICAgIC8v
IDEuIExldCBhcnJheSBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgVG9PYmplY3Qgb24gdGhlIHRo
aXMgdmFsdWUuCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKQEAgLTY2OSw5ICs2NjksOCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oYXJyYXlQcm90b0Z1bmNUCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnN0cmljdCgpKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVl
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgdWludDY0X3QgbGVuZ3Ro
ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRvTGVuZ3RoKGdsb2JhbE9iamVjdCwgdGhpc09iamVj
dCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpA
QCAtNzY0LDcgKzc2Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVu
Y0oKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAx
LiBMZXQgTyBiZSA/IFRvT2JqZWN0KHRoaXMgdmFsdWUpLgotICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9k
ZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAg
ICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsK
ICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpT
VmFsdWUoKTsKQEAgLTgyMCw3ICs4MTksNyBAQCBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY3JlYXRl
QXJyYXlJdGVyYXRvCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9k
ZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAg
ICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsK
ICAgICBVTlVTRURfUEFSQU0oc2NvcGUpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkp
CkBAIC04NDksNyArODQ4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9G
dW5jUAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgp
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAKICAg
ICBpZiAoaXNKU0FycmF5KHRoaXNWYWx1ZSkpCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGFzQXJyYXkodGhpc1ZhbHVlKS0+cG9wKGdsb2JhbE9iamVj
dCkpKTsKQEAgLTg4Nyw3ICs4ODYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQ
cm90b0Z1bmNQCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0
cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAKICAgICBpZiAoTElLRUxZKGlzSlNBcnJheSh0aGlzVmFsdWUpICYmIGNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudCgpID09IDEpKSB7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh0
aGlzVmFsdWUpOwpAQCAtOTIzLDcgKzkyMiw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihh
cnJheVByb3RvRnVuY1IKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFN
b2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
ICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3Qp
OwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiBlbmNvZGVk
SlNWYWx1ZSgpOwpAQCAtMTAyNSw3ICsxMDI0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGFycmF5UHJvdG9GdW5jUwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIHRo
aXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFN
b2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhp
c09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAg
ICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAg
IGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgp
OwpAQCAtMTA1Miw3ICsxMDUxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJv
dG9GdW5jUwogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5
LnByb3RvdHlwZS5zbGljZQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNPYmplY3QqIHRoaXNP
YmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2Rl
OjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09i
aiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBF
WENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAgIGlm
IChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMTE2LDcgKzEx
MTUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNTCiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3Bl
LmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQog
ICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEyMjIsNyArMTIyMSw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1UKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgLy8gMTUuNC40LjEzCiAKLSAgICBKU09iamVj
dCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwg
RUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0
KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3Qp
OwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7
CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1Zh
bHVlKCk7CkBAIC0xMzU3LDcgKzEzNTYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJy
YXlQcm90b0Z1bmNJCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgLy8gMTUuNC40LjE0Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNT
RVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VM
WSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMzk3LDcgKzEzOTYsNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNMCiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTUuNC40LjE1Ci0gICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxP
YmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBK
U09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJl
dHVybiB7IH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8u
aAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xh
c3NJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDkgKzcxLDYgQEAgc3RydWN0IE1ldGhvZFRh
YmxlIHsKICAgICB1c2luZyBEb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVja0Z1bmN0aW9uUHRyID0g
dm9pZCAoKikoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHV0UHJv
cGVydHlTbG90Jik7CiAgICAgRG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2tGdW5jdGlvblB0ciBN
RVRIT0RfVEFCTEVfRU5UUlkoZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2spOwogCi0gICAgdXNp
bmcgVG9UaGlzRnVuY3Rpb25QdHIgPSBKU1ZhbHVlICgqKShKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIEVDTUFNb2RlKTsKLSAgICBUb1RoaXNGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlko
dG9UaGlzKTsKLQogICAgIHVzaW5nIEdldE93blByb3BlcnR5TmFtZXNGdW5jdGlvblB0ciA9IHZv
aWQgKCopKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIERv
bnRFbnVtUHJvcGVydGllc01vZGUpOwogICAgIEdldE93blByb3BlcnR5TmFtZXNGdW5jdGlvblB0
ciBNRVRIT0RfVEFCTEVfRU5UUlkoZ2V0T3duUHJvcGVydHlOYW1lcyk7CiAgICAgR2V0T3duUHJv
cGVydHlOYW1lc0Z1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShnZXRPd25TcGVjaWFsUHJv
cGVydHlOYW1lcyk7CkBAIC0xNTYsNyArMTUzLDYgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAg
ICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duUHJvcGVydHlTbG90LCBcCiAgICAgICAgICZDbGFzc05h
bWU6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6ZG9Q
dXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2ssIFwKLSAgICAgICAgJkNsYXNzTmFtZTo6dG9UaGlzLCBc
CiAgICAgICAgICZDbGFzc05hbWU6OmdldE93blByb3BlcnR5TmFtZXMsIFwKICAgICAgICAgJkNs
YXNzTmFtZTo6Z2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMsIFwKICAgICAgICAgJkNsYXNzTmFt
ZTo6Y3VzdG9tSGFzSW5zdGFuY2UsIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQ2LDI4ICszNDYsOCBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xv
d19wYXRoX3RvCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9w
VG9UaGlzPigpOwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJs
b2NrKTsKICAgICBKU1ZhbHVlIHYxID0gR0VUKGJ5dGVjb2RlLm1fc3JjRHN0KS5qc1ZhbHVlKCk7
Ci0gICAgaWYgKHYxLmlzQ2VsbCgpKSB7Ci0gICAgICAgIFN0cnVjdHVyZUlEIG15U3RydWN0dXJl
SUQgPSB2MS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKTsKLSAgICAgICAgU3RydWN0dXJlSUQgb3Ro
ZXJTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQ7Ci0gICAgICAgIGlm
IChteVN0cnVjdHVyZUlEICE9IG90aGVyU3RydWN0dXJlSUQpIHsKLSAgICAgICAgICAgIGlmIChv
dGhlclN0cnVjdHVyZUlEKQotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fdG9UaGlzU3RhdHVz
ID0gVG9UaGlzQ29uZmxpY3RlZDsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0
dXJlSUQgPSBteVN0cnVjdHVyZUlEOwotICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIo
Y29kZUJsb2NrLCB2bS5nZXRTdHJ1Y3R1cmUobXlTdHJ1Y3R1cmVJRCkpOwotICAgICAgICB9Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMgPSBUb1RoaXNDb25m
bGljdGVkOwotICAgICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEID0gMDsKLSAgICB9
Ci0gICAgLy8gTm90ZTogV2Ugb25seSBuZWVkIHRvIGRvIHRoaXMgdmFsdWUgcHJvZmlsaW5nIGhl
cmUgb24gdGhlIHNsb3cgcGF0aC4gVGhlIGZhc3QgcGF0aAotICAgIC8vIGp1c3QgcmV0dXJucyB0
aGUgaW5wdXQgdG8gdG9fdGhpcyBpZiB0aGUgc3RydWN0dXJlIGNoZWNrIHN1Y2NlZWRzLiBJZiB0
aGUgc3RydWN0dXJlCi0gICAgLy8gY2hlY2sgc3VjY2VlZHMsIGRvaW5nIHZhbHVlIHByb2ZpbGlu
ZyBoZXJlIGlzIGVxdWl2YWxlbnQgdG8gZG9pbmcgaXQgd2l0aCBhIHBvdGVudGlhbGx5Ci0gICAg
Ly8gZGlmZmVyZW50IG9iamVjdCB0aGF0IHN0aWxsIGhhcyB0aGUgc2FtZSBzdHJ1Y3R1cmUgb24g
dGhlIGZhc3QgcGF0aCBzaW5jZSBpdCdsbCBwcm9kdWNlCi0gICAgLy8gdGhlIHNhbWUgU3BlY3Vs
YXRlZFR5cGUuIFRoZXJlZm9yZSwgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB2YWx1ZSBw
cm9maWxpbmcgb24gdGhlCi0gICAgLy8gZmFzdCBwYXRoLgotICAgIGF1dG8gdmFsdWUgPSB2MS50
b1RoaXMoZ2xvYmFsT2JqZWN0LCBieXRlY29kZS5tX2VjbWFNb2RlKTsKKyAgICBKU09iamVjdCog
dmFsdWUgPSB2MS50b1Nsb3BweU1vZGVUaGlzKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX1dJ
VEhfUFJPRklMSU5HX0NVU1RPTShieXRlY29kZS5tX3NyY0RzdCwgdmFsdWUsIFBST0ZJTEVfVkFM
VUUodmFsdWUpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
cGxldGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tcGxldGlvbi5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsOSArMTMxLDEz
IEBAIEpTVmFsdWUgZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBSRUxFQVNF
X0FTU0VSVCh2bS5hdG9tU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9tU3Ry
aW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3Vy
cmVudFRocmVhZCgpKTsKIAorICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gbnVsbHB0cjsKICAgICBp
ZiAoIXRoaXNWYWx1ZSB8fCB0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAg
dGhpc1ZhbHVlID0gZ2xvYmFsT2JqZWN0OwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0ganNDYXN0
PEpTT2JqZWN0Kj4odGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9w
cHkoKSkpOworICAgICAgICB0aGlzT2JqID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7Cisg
ICAgZWxzZSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSh0aGlzVmFsdWUu
aXNPYmplY3QoKSwgInRoaXNWYWx1ZSBzaG91bGQgYmUgdW5kZWZpbmVkLCBudWxsLCBvciBhbiBv
YmplY3QiKTsKKyAgICAgICAgdGhpc09iaiA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CisgICAgfQog
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGVQcm9ncmFtKHNvdXJj
ZSwgZ2xvYmFsT2JqZWN0LCB0aGlzT2JqKTsKIAogICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkg
ewpAQCAtMTYxLDcgKzE2NSw3IEBAIEpTVmFsdWUgZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24o
SlNHbG8KICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRHbG9iYWxTY29wZUV4dGVuc2lvbihKU1dp
dGhTY29wZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGlnbm9yZWRQcmV2aW91c1Njb3BlLCBz
Y29wZUV4dGVuc2lvbk9iamVjdCkpOwogICAgIH0KIAotICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUg
PSBKU0M6OmV2YWx1YXRlKGdsb2JhbE9iamVjdCwgc291cmNlLCBnbG9iYWxPYmplY3QsIHJldHVy
bmVkRXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gSlNDOjpldmFsdWF0ZShn
bG9iYWxPYmplY3QsIHNvdXJjZSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCksIHJldHVybmVk
RXhjZXB0aW9uKTsKIAogICAgIGlmIChzY29wZUV4dGVuc2lvbk9iamVjdCkKICAgICAgICAgZ2xv
YmFsT2JqZWN0LT5jbGVhckdsb2JhbFNjb3BlRXh0ZW5zaW9uKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc4
MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1Miw3ICszNTIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oZGF0ZVByb3RvRnVuY1RvCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnN0cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkRhdGUucHJvdG90eXBlW1N5
bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgfHRoaXN8IHRvIGJlIGFuIG9iamVjdC4iKTsKICAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1ZSk7CkBA
IC04NjYsOCArODY2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGRhdGVQcm90b0Z1bmNH
ZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwotICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxE
YXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKKyAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpz
RHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIApAQCAtODgzLDggKzg4Miw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihkYXRlUHJvdG9GdW5jVG8KIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMo
Z2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwotICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogb2JqZWN0
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1
ZSB0aW1lVmFsdWUgPSBvYmplY3QtPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwgUHJlZmVyTnVt
YmVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZXJyb3JQcm90b0Z1bmNUCiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gTGV0IE8gYmUgdGhlIHRo
aXMgdmFsdWUuCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogCiAgICAgLy8gMi4gSWYgVHlwZShP
KSBpcyBub3QgT2JqZWN0LCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgaWYgKCF0
aGlzVmFsdWUuaXNPYmplY3QoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQmlnSW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCaWdJbnQuaAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCaWdJbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgQmFzZSA9IEpTQ2VsbDsKICAgICB1c2luZyBEaWdpdCA9IFVDUFVSZWdpc3Rl
cjsKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNl
OjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBPdmVycmlkZXNUb1RoaXM7
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKICAgICBmcmllbmQgY2xhc3MgQ2Fj
aGVkQmlnSW50OwogCiAgICAgREVDTEFSRV9WSVNJVF9DSElMRFJFTjsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCShyZXZpc2lvbiAyNzgxNTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTY0LDI2ICsxNjQsNiBAQCBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3RT
bG93Q2FzZShKU0dsCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpTVmFsdWUgSlNWYWx1ZTo6
dG9UaGlzU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNt
YU1vZGUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFpc0NlbGwoKSk7Ci0KLSAgICBpZiAoZWNtYU1v
ZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAgaWYgKGlzSW50MzIo
KSB8fCBpc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gY29uc3RydWN0TnVtYmVyKGdsb2JhbE9i
amVjdCwgYXNWYWx1ZSgpKTsKLSAgICBpZiAoaXNUcnVlKCkgfHwgaXNGYWxzZSgpKQotICAgICAg
ICByZXR1cm4gY29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlhdGVCb29sZWFuKGdsb2JhbE9iamVj
dCwgYXNWYWx1ZSgpKTsKLSNpZiBVU0UoQklHSU5UMzIpCi0gICAgaWYgKGlzQmlnSW50MzIoKSkK
LSAgICAgICAgcmV0dXJuIEJpZ0ludE9iamVjdDo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwg
Z2xvYmFsT2JqZWN0LCAqdGhpcyk7Ci0jZW5kaWYKLQotICAgIEFTU0VSVChpc1VuZGVmaW5lZE9y
TnVsbCgpKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7Ci19Ci0KIEpT
T2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2aXNpb24g
Mjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzIsNyArMzMyLDcgQEAgcHVibGljOgogICAgIGJvb2wgcHV0QnlJ
bmRleChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9v
bCBzaG91bGRUaHJvdyk7CiAKICAgICBKU1ZhbHVlIGdldFByb3RvdHlwZShKU0dsb2JhbE9iamVj
dCopIGNvbnN0OwotICAgIEpTVmFsdWUgdG9UaGlzKEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUp
IGNvbnN0OworICAgIEpTT2JqZWN0KiB0b1Nsb3BweU1vZGVUaGlzKEpTR2xvYmFsT2JqZWN0Kikg
Y29uc3Q7CiAKICAgICBzdGF0aWMgYm9vbCBlcXVhbChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
djEsIEpTVmFsdWUgdjIpOwogICAgIHN0YXRpYyBib29sIGVxdWFsU2xvd0Nhc2UoSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKQEAgLTUyMSw3ICs1MjEsNiBAQCBwcml2
YXRlOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nKiB0b1N0cmluZ1Nsb3dDYXNlKEpT
R2xvYmFsT2JqZWN0KiwgYm9vbCByZXR1cm5FbXB0eVN0cmluZ09uRXJyb3IpIGNvbnN0OwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIFdURjo6U3RyaW5nIHRvV1RGU3RyaW5nU2xvd0Nhc2UoSlNHbG9i
YWxPYmplY3QqKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdG9PYmpl
Y3RTbG93Q2FzZShKU0dsb2JhbE9iamVjdCopIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRF
IEpTVmFsdWUgdG9UaGlzU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqLCBFQ01BTW9kZSkgY29uc3Q7
CiAKICAgICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yIHU7CiB9OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShyZXZpc2lvbiAy
NzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MjksOSArOTI5LDkgQEAgaW5saW5lIGNvbnN0IENsYXNz
SW5mbyogSlNWYWx1ZTo6Y2xhc3NJbgogICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT5j
bGFzc0luZm8odm0pIDogbnVsbHB0cjsKIH0KIAotaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6dG9U
aGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKSBjb25z
dAoraW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b1Nsb3BweU1vZGVUaGlzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxs
KCktPm1ldGhvZFRhYmxlKGdldFZNKGdsb2JhbE9iamVjdCkpLT50b1RoaXMoYXNDZWxsKCksIGds
b2JhbE9iamVjdCwgZWNtYU1vZGUpIDogdG9UaGlzU2xvd0Nhc2UoZ2xvYmFsT2JqZWN0LCBlY21h
TW9kZSk7CisgICAgcmV0dXJuIGlzVW5kZWZpbmVkT3JOdWxsKCkgPyBnbG9iYWxPYmplY3QtPmds
b2JhbFRoaXMoKSA6IHRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiB9CiAKIEFMV0FZU19JTkxJTkUg
SlNWYWx1ZSBKU1ZhbHVlOjpnZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDEzICsxNDIsNiBA
QCBib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsCiAgICAgcmV0dXJuIHRo
aXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0ZVByb3BlcnR5
QnlJbmRleCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIpOwogfQogCi1KU1Zh
bHVlIEpTQ2VsbDo6dG9UaGlzKEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCi17Ci0gICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkp
Ci0gICAgICAgIHJldHVybiBjZWxsOwotICAgIHJldHVybiBjZWxsLT50b09iamVjdChnbG9iYWxP
YmplY3QpOwotfQotCiBKU1ZhbHVlIEpTQ2VsbDo6dG9QcmltaXRpdmUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBwcmVmZXJyZWRUeXBlKSBjb25z
dAogewogICAgIGlmIChpc1N0cmluZygpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsOCArMTg1LDYgQEAgcHVibGlj
OgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2Vs
bCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBkZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUpOwogCi0gICAgc3RhdGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEpTR2xvYmFs
T2JqZWN0KiwgRUNNQU1vZGUpOwotCiAgICAgc3RhdGljIGJvb2wgY2FuVXNlRmFzdEdldE93blBy
b3BlcnR5KGNvbnN0IFN0cnVjdHVyZSYpOwogICAgIEpTVmFsdWUgZmFzdEdldE93blByb3BlcnR5
KFZNJiwgU3RydWN0dXJlJiwgUHJvcGVydHlOYW1lKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAyNzgxNTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjE2LDkgKzEyMTYsMTEgQEAgaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFy
cmF5TmVnYXRpdmVJbgogICAgIHJldHVybiBBcnJheUFsbG9jYXRpb25Qcm9maWxlOjp1cGRhdGVM
YXN0QWxsb2NhdGlvbkZvcihwcm9maWxlLCBjb25zdHJ1Y3RBcnJheU5lZ2F0aXZlSW5kZXhlZChn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdmFsdWVzLCBsZW5ndGgpKTsKIH0KIAotaW5saW5lIEpT
T2JqZWN0KiBKU1Njb3BlOjpnbG9iYWxUaGlzKCkKLXsgCi0gICAgcmV0dXJuIGdsb2JhbE9iamVj
dCgpLT5nbG9iYWxUaGlzKCk7CitpbmxpbmUgSlNPYmplY3QqIEpTU2NvcGU6OnJlY2VpdmVyRm9y
U2NvcGUoSlNPYmplY3QqIHNjb3BlKQoreworICAgIGlmIChzY29wZS0+dHlwZSgpID09IEdsb2Jh
bE9iamVjdFR5cGUpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihzY29w
ZSktPmdsb2JhbFRoaXMoKTsKKyAgICByZXR1cm4gc2NvcGU7CiB9CiAKIGlubGluZSBKU09iamVj
dCogSlNHbG9iYWxPYmplY3Q6Omdsb2JhbFRoaXMoKSBjb25zdApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OTIsOCArNjky
LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNNYWtlVAogCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY1Byb3RvR2V0dGVyLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewotICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01B
TW9kZTo6c3RyaWN0KCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlLmdl
dFByb3RvdHlwZShnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkuZ2V0UHJvdG90eXBlKGdsb2JhbE9iamVjdCkpOwogfQogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY1Byb3RvU2V0dGVyLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtNzAxLDcgKzcw
MCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jUHJvdG8KICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUu
aXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgT2JqZWN0UHJvdG9DYWxsZWRPbk51bGxPclVuZGVmaW5lZEVycm9y
KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAko
cmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODAzLDcgKzE4MDMsNyBAQCBib29sIEpTT2JqZWN0
OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjCiAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQsICJDYW5ub3Qgc2V0IHByb3Rv
dHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdCJfcyk7CiAgICAgfQogCi0gICAgQVNT
RVJUKG1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6
OnNsb3BweSgpKSA9PSB0aGlzKTsKKyAgICBBU1NFUlQoIWluaGVyaXRzPEpTU2NvcGU+KHZtKSk7
CiAKICAgICBpZiAodGhpcy0+Z2V0UHJvdG90eXBlRGlyZWN0KHZtKSA9PSBwcm90b3R5cGUpCiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjQ2MiwxMSArMjQ2Miw2IEBAIEpTU3RyaW5nKiBKU09i
amVjdDo6dG9TdHJpbmcoSlNHbG9iYWxPYmoKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IHByaW1pdGl2ZS50b1N0cmluZyhnbG9iYWxPYmplY3QpKTsKIH0KIAotSlNWYWx1ZSBKU09iamVj
dDo6dG9UaGlzKEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqLCBFQ01BTW9kZSkKLXsKLSAg
ICByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7Ci19Ci0KIHZvaWQgSlNPYmplY3Q6OnNl
YWwoVk0mIHZtKQogewogICAgIGlmIChpc1NlYWxlZCh2bSkpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4OSw4
ICs2ODksNiBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvTnVtYmVy
KEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNTdHJpbmcq
IHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBFQ01BTW9k
ZSk7Ci0KICAgICAvLyBUaGlzIGdldCBmdW5jdGlvbiBvbmx5IGxvb2tzIGF0IHRoZSBwcm9wZXJ0
eSBtYXAuCiAgICAgSlNWYWx1ZSBnZXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKSBjb25zdAogICAgIHsKQEAgLTc5OSwxMSArNzk3LDkgQEAgcHVibGljOgogCiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
LCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9y
JiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKLSAgICBib29sIGlzRW52aXJvbm1lbnQoKSBjb25zdDsK
ICAgICBib29sIGlzR2xvYmFsT2JqZWN0KCkgY29uc3Q7CiAgICAgYm9vbCBpc0pTTGV4aWNhbEVu
dmlyb25tZW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc0dsb2JhbExleGljYWxFbnZpcm9ubWVudCgp
IGNvbnN0OwotICAgIGJvb2wgaXNTdHJpY3RFdmFsQWN0aXZhdGlvbigpIGNvbnN0OwogICAgIGJv
b2wgaXNXaXRoU2NvcGUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNFcnJvckluc3RhbmNlKCkgY29u
c3Q7CkBAIC0xMjcyLDE4ICsxMjY4LDYgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OmlzR2xvYmFs
TGV4aWNhbEVudgogICAgIHJldHVybiB0eXBlKCkgPT0gR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
VHlwZTsKIH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OmlzU3RyaWN0RXZhbEFjdGl2YXRpb24o
KSBjb25zdAotewotICAgIHJldHVybiB0eXBlKCkgPT0gU3RyaWN0RXZhbEFjdGl2YXRpb25UeXBl
OwotfQotCi1pbmxpbmUgYm9vbCBKU09iamVjdDo6aXNFbnZpcm9ubWVudCgpIGNvbnN0Ci17Ci0g
ICAgYm9vbCByZXN1bHQgPSBHbG9iYWxPYmplY3RUeXBlIDw9IHR5cGUoKSAmJiB0eXBlKCkgPD0g
U3RyaWN0RXZhbEFjdGl2YXRpb25UeXBlOwotICAgIEFTU0VSVCgoaXNHbG9iYWxPYmplY3QoKSB8
fCBpc0pTTGV4aWNhbEVudmlyb25tZW50KCkgfHwgaXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQo
KSB8fCBpc1N0cmljdEV2YWxBY3RpdmF0aW9uKCkpID09IHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQogaW5saW5lIGJvb2wgSlNPYmplY3Q6OmlzRXJyb3JJbnN0YW5jZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHR5cGUoKSA9PSBFcnJvckluc3RhbmNlVHlwZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCShyZXZpc2lvbiAyNzgxNTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDE3LDExICs0MTcsNCBAQCBTeW1ib2xUYWJsZSogSlNTY29wZTo6c3ltYm9sVGFibGUo
Vk0mIHZtCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpTVmFsdWUgSlNTY29wZTo6dG9UaGlz
KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2Rl
KQotewotICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQotICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
Y29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Nv
cGUuaAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHVzaW5nIFREWkVudmly
b25tZW50ID0gSGFzaFNldDxSZWZQdHI8VW4KIGNsYXNzIEpTU2NvcGUgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzVG9UaGlzOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgdm9pZCBzdWJzcGFjZUZv
cihWTSYpCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc2l6ZV90IG9mZnNl
dE9mTmV4dCgpOwogCiAgICAgc3RhdGljIEpTT2JqZWN0KiBvYmplY3RBdFNjb3BlKEpTU2NvcGUq
KTsKKyAgICBzdGF0aWMgSlNPYmplY3QqIHJlY2VpdmVyRm9yU2NvcGUoSlNPYmplY3QqKTsKIAog
ICAgIHN0YXRpYyBKU09iamVjdCogcmVzb2x2ZShKU0dsb2JhbE9iamVjdCosIEpTU2NvcGUqLCBj
b25zdCBJZGVudGlmaWVyJik7CiAgICAgc3RhdGljIEpTVmFsdWUgcmVzb2x2ZVNjb3BlRm9ySG9p
c3RpbmdGdW5jRGVjbEluRXZhbChKU0dsb2JhbE9iamVjdCosIEpTU2NvcGUqLCBjb25zdCBJZGVu
dGlmaWVyJik7CkBAIC03OCwxMiArNzksOCBAQCBwdWJsaWM6CiAgICAgU2NvcGVDaGFpbkl0ZXJh
dG9yIGVuZCgpOwogICAgIEpTU2NvcGUqIG5leHQoKTsKIAotICAgIEpTT2JqZWN0KiBnbG9iYWxU
aGlzKCk7Ci0KICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUoVk0mKTsKIAotICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0NlbGwqLCBKU0dsb2JhbE9iamVj
dCosIEVDTUFNb2RlKTsKLQogcHJvdGVjdGVkOgogICAgIEpTU2NvcGUoVk0mLCBTdHJ1Y3R1cmUq
LCBKU1Njb3BlKiBuZXh0KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTAsMTMgKzQxMCw2IEBA
IEpTT2JqZWN0KiBKU1N0cmluZzo6dG9PYmplY3QoSlNHbG9iYWxPYmoKICAgICByZXR1cm4gU3Ry
aW5nT2JqZWN0OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIGNvbnN0
X2Nhc3Q8SlNTdHJpbmcqPih0aGlzKSk7CiB9CiAKLUpTVmFsdWUgSlNTdHJpbmc6OnRvVGhpcyhK
U0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFN
b2RlKQotewotICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQotICAgICAgICByZXR1cm4gY2Vs
bDsKLSAgICByZXR1cm4gU3RyaW5nT2JqZWN0OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBn
bG9iYWxPYmplY3QsIGFzU3RyaW5nKGNlbGwpKTsKLX0KLQogYm9vbCBKU1N0cmluZzo6Z2V0U3Ry
aW5nUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkz
LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEyOTU2CiAgICAgLy8gRG8gd2UgcmVhbGx5IG5lZWQgSW50ZXJjZXB0c0dl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybz8KICAgICAvLyBG
SVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjk1OAotICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBTdHJ1Y3R1cmVJc0lt
bW9ydGFsIHwgT3ZlcnJpZGVzVG9UaGlzOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5M
ZW5ndGhJc05vdFplcm8gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCkBAIC0yMzcsOCArMjM3LDYgQEAgcHJvdGVj
dGVkOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
Ci0gICAgc3RhdGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgRUNN
QU1vZGUpOwotCiAgICAgU3RyaW5nVmlldyB1bnNhZmVWaWV3KEpTR2xvYmFsT2JqZWN0KikgY29u
c3Q7CiAKICAgICBmcmllbmQgSlNTdHJpbmcqIGpzU3RyaW5nKFZNJiwgY29uc3QgU3RyaW5nJik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkocmV2aXNpb24gMjc4
MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNyw2ICsxMDcsOCBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIC8v
IEVuZCBlbnZpcm9ubWVudCByZWNvcmQgdHlwZXMuCiAgICAgV2l0aFNjb3BlVHlwZSwKICAgICAv
LyBFbmQgSlNTY29wZSB0eXBlcy4KKyAgICBGaXJzdEpTU2NvcGVUeXBlID0gR2xvYmFsT2JqZWN0
VHlwZSwKKyAgICBMYXN0SlNTY29wZVR5cGUgPSBXaXRoU2NvcGVUeXBlLAogCiAgICAgTW9kdWxl
TmFtZXNwYWNlT2JqZWN0VHlwZSwKICAgICBSZWdFeHBPYmplY3RUeXBlLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2aXNpb24gMjc4MTU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw3ICs0MSw2IEBAIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgTWFzcXVlcmFk
ZXNBc1UKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSA9IDEgPDwgMTsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgT3ZlcnJpZGVzR2V0Q2Fs
bERhdGEgPSAxIDw8IDI7IC8vIE5lZWQgdGhpcyBmbGFnIGlmIHlvdSBpbXBsZW1lbnQgW1tDYWxs
YWJsZV1dIGludGVyZmFjZSwgd2hpY2ggbWVhbnMgb3ZlcnJpZGluZyBnZXRDYWxsRGF0YS4gVGhl
IG9iamVjdCBtYXkgbm90IGJlIGNhbGxhYmxlIHNpbmNlIGdldENhbGxEYXRhIGNhbiBzYXkgaXQg
aXMgbm90IGNhbGxhYmxlLgogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QgPSAxIDw8IDM7Ci1zdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE92ZXJy
aWRlc1RvVGhpcyA9IDEgPDwgNDsgLy8gSWYgdGhpcyBpcyBmYWxzZSB0aGVuIHRoaXMgcmV0dXJu
cyBzb21ldGhpbmcgb3RoZXIgdGhhbiAndGhpcycuIE5vbi1vYmplY3QgY2VsbHMgdGhhdCBhcmUg
dmlzaWJsZSB0byBKUyBoYXZlIHRoaXMgc2V0IGFzIGRvIHNvbWUgZXhvdGljIG9iamVjdHMuCiBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIEhhc1N0YXRpY1Byb3BlcnR5VGFibGUgPSAxIDw8IDU7
CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFR5cGVJbmZvUGVyQ2VsbEJpdCA9IDEgPDwgNzsg
Ly8gVW5saWtlIG90aGVyIGlubGluZSBmbGFncywgdGhpcyB3aWxsIG9ubHkgYmUgc2V0IG9uIHRo
ZSBjZWxsIGl0c2VsZiBhbmQgd2lsbCBub3QgYmUgc2V0IG9uIHRoZSBTdHJ1Y3R1cmUuCiAKQEAg
LTk3LDcgKzk2LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIG92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdChJbmxpbmVUeXBlRmxhZ3MgZmxhZ3MpIHsgcmV0dXJuIGZsYWdzICYgT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90OyB9CiAgICAgc3RhdGljIGJvb2wgaGFzU3RhdGljUHJvcGVy
dHlUYWJsZShJbmxpbmVUeXBlRmxhZ3MgZmxhZ3MpIHsgcmV0dXJuIGZsYWdzICYgSGFzU3RhdGlj
UHJvcGVydHlUYWJsZTsgfQogICAgIHN0YXRpYyBib29sIHBlckNlbGxCaXQoSW5saW5lVHlwZUZs
YWdzIGZsYWdzKSB7IHJldHVybiBmbGFncyAmIFR5cGVJbmZvUGVyQ2VsbEJpdDsgfQotICAgIGJv
b2wgb3ZlcnJpZGVzVG9UaGlzKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMTxPdmVycmlk
ZXNUb1RoaXM+KCk7IH0KICAgICBib29sIHN0cnVjdHVyZUlzSW1tb3J0YWwoKSBjb25zdCB7IHJl
dHVybiBpc1NldE9uRmxhZ3MyPFN0cnVjdHVyZUlzSW1tb3J0YWw+KCk7IH0KICAgICBib29sIG92
ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3My
PE92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXM+KCk7IH0KICAgICBib29sIG92ZXJyaWRlc0dl
dE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMjxP
dmVycmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcz4oKTsgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIE9iamVjdFByb3RvdHlwZSog
T2JqZWN0UHJvdG90eXBlOjpjcmVhdGUKIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVj
dFByb3RvRnVuY1ZhbHVlT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIEpTT2JqZWN0
KiB2YWx1ZU9iaiA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIGlmIChV
TkxJS0VMWSghdmFsdWVPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAg
LTkzLDggKzkzLDcgQEAgYm9vbCBvYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eShKU0dsbwog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBiYXNlLnRvVGhp
cyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7Ci0gICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCog
dGhpc09iamVjdCA9IGJhc2UudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05f
QVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJ
S0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNSw4ICsxMzQs
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jCiAgICAgaWYgKCFj
YWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmlj
dCgpKTsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxP
YmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNl
cHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAg
ICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xNTksNyArMTU3LDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuYwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGds
b2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwor
ICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVj
dChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwpA
QCAtMTg2LDcgKzE4NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1
bmMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3Qo
KSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIEpTVmFsdWUgc2V0
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKQEAgLTIxMyw3ICsyMTEsNyBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xv
YmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Cisg
ICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwpAQCAtMjQzLDcgKzI0MSw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmMKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CkBAIC0yNzYsNyArMjc0LDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuYwogICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVj
dCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAK
LSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlz
KGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3Qp
OworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09i
amVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwpAQCAtMjk3LDcgKzI5NSw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmMKICAgICAvLyAyLiBJbnZv
a2UoViwgInRvU3RyaW5nIikKIAogICAgIC8vIExldCBPIGJlIHRoZSByZXN1bHQgb2YgY2FsbGlu
ZyBUb09iamVjdCBwYXNzaW5nIHRoZSB0aGlzIHZhbHVlIGFzIHRoZSBhcmd1bWVudC4KLSAgICBK
U09iamVjdCogb2JqZWN0ID0gdGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2Rl
OjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogb2JqZWN0
ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAvLyBMZXQgdG9TdHJpbmcgYmUg
dGhlIE8uW1tHZXRdXSgidG9TdHJpbmciLCBWKQpAQCAtMzk2LDggKzM5NCw3IEBAIEpTU3RyaW5n
KiBvYmplY3RQcm90b3R5cGVUb1N0cmluZyhKU0dsb2IKIAogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKG9iamVjdFByb3RvRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0
KCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0UHJvdG90eXBlVG9TdHJpbmco
Z2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9i
amVjdFByb3RvdHlwZVRvU3RyaW5nKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTI0LDcgKzUyNCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihwZXJmb3JtUHJveHlD
YWwKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0
YXJnZXQpOwotICAgIGFyZ3VtZW50cy5hcHBlbmQoY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpKTsKKyAgICBhcmd1bWVudHMuYXBw
ZW5kKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJnQXJy
YXkpOwogICAgIEFTU0VSVCghYXJndW1lbnRzLmhhc092ZXJmbG93ZWQoKSk7CiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIGFw
cGx5TWV0aG9kLCBjYWxsRGF0YSwgaGFuZGxlciwgYXJndW1lbnRzKSkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCShyZXZp
c2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90
b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNyArMjEyLDcgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvRnVuYwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQxLDkgKzg0MSw2IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBjaGVja09iamVjdENvZXJjaWJsZSgKICAgICBpZiAodGhpc1ZhbHVlLmlz
VW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICh0aGlz
VmFsdWUuaXNPYmplY3QoKSAmJiBhc09iamVjdCh0aGlzVmFsdWUpLT5pc0Vudmlyb25tZW50KCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuaAkocmV2aXNpb24gMjc4MTU5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBTeW1ib2wgZmluYWwgOiBwdWJs
aWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBPdmVycmlkZXNUb1RoaXM7CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
U3RydWN0dXJlSXNJbW1vcnRhbDsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA1LTI3ICBBbGV4ZXkgU2h2YXlr
YSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBBYm9saXNoIHVzaW5n
IHJlc29sdmVkIHNjb3BlIGFzIHx0aGlzfCB2YWx1ZSB3aGVuIGNhbGxpbmcgZnVuY3Rpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklETE9wZXJhdGlv
bjxKU0RPTVdpbmRvdz46OmNhc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJn
ZXRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OklETE9wZXJhdGlvbjxKU0V2ZW50VGFyZ2V0
Pjo6Y2FsbCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06
CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKwogMjAyMS0wNS0yNyAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBIMjY0IHByb2Zp
bGVzIGluIE1lZGlhUmVjb3JkZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NT3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01PcGVyYXRpb24uaAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01PcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMjIgKzM1LDEy
IEBAIHB1YmxpYzoKICAgICB1c2luZyBPcGVyYXRpb24gPSBKU0M6OkVuY29kZWRKU1ZhbHVlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSosIENsYXNzUGFyYW1ldGVyKTsKICAg
ICB1c2luZyBTdGF0aWNPcGVyYXRpb24gPSBKU0M6OkVuY29kZWRKU1ZhbHVlKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlz
IGFmdGVyIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlIGlzIGZpeGVkIG5vdCB0byBwYXNzIHJlc29s
dmVkIHNjb3BlIGFzIHx0aGlzfCB2YWx1ZS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI1Mzk3Ci0gICAgc3RhdGljIEpTQ2xhc3MqIGNhc3QoSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUmIGNhbGxG
cmFtZSkKLSAgICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNE
T01HbG9iYWxPYmplY3QsIEpTQ2xhc3M+KQotICAgICAgICAgICAgcmV0dXJuIGNhc3RUaGlzVmFs
dWU8SlNDbGFzcz4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRv
VGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpFQ01BTW9kZTo6c3RyaWN0KCkpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIGNhc3RUaGlzVmFsdWU8SlNDbGFzcz4obGV4
aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLSAgICB9Ci0KICAgICB0
ZW1wbGF0ZTxPcGVyYXRpb24gb3BlcmF0aW9uLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91
bGRUaHJvdyA9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdz4KICAgICBzdGF0aWMgSlND
OjpFbmNvZGVkSlNWYWx1ZSBjYWxsKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6Q2FsbEZyYW1lJiBjYWxsRnJhbWUsIGNvbnN0IGNoYXIqIG9wZXJhdGlvbk5h
bWUpCiAgICAgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgCi0gICAgICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBjYXN0KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7Cisg
ICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0VGhpc1ZhbHVlPEpTQ2xhc3M+KGxleGljYWxH
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7CiAgICAgICAgIGlmIGNvbnN0ZXhw
ciAoc2hvdWxkVGhyb3cgIT0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydCkgewogICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIEpT
Q2xhc3M6OmluZm8oKS0+Y2xhc3NOYW1lLCBvcGVyYXRpb25OYW1lKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uUmV0dXJu
aW5nUHJvbWlzZS5oCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgY2Fs
bChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFt
ZSYgY2FsbEZyYW1lLCBjb25zdCBjaGFyKiBvcGVyYXRpb25OYW1lKQogICAgIHsKICAgICAgICAg
cmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGNhbGxQcm9taXNlRnVuY3Rpb24obGV4aWNhbEds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLCBbJm9wZXJhdGlvbk5hbWVdIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSYgY2FsbEZyYW1lLCBSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpIHsKLSAgICAgICAgICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBJRExPcGVyYXRpb248SlNDbGFzcz46OmNhc3QobGV4aWNhbEdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lKTsKKyAgICAgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0VGhpc1ZhbHVlPEpT
Q2xhc3M+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7CiAgICAg
ICAgICAgICBpZiBjb25zdGV4cHIgKHNob3VsZFRocm93ICE9IENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQpIHsKICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3Qp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0UHJvbWlzZVdpdGhUaGlzVHlwZUVy
cm9yKHByb21pc2UuZ2V0KCksIEpTQ2xhc3M6OmluZm8oKS0+Y2xhc3NOYW1lLCBvcGVyYXRpb25O
YW1lKTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU0NsYXNzPjo6T3BlcmF0aW9uIG9wZXJhdGlvbiwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3Igc2hvdWxkVGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6UmVqZWN0UHJv
bWlzZT4KICAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBjYWxsUmV0dXJuaW5nT3duUHJv
bWlzZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxG
cmFtZSYgY2FsbEZyYW1lLCBjb25zdCBjaGFyKiBvcGVyYXRpb25OYW1lKQogICAgIHsKLSAgICAg
ICAgYXV0byogdGhpc09iamVjdCA9IElETE9wZXJhdGlvbjxKU0NsYXNzPjo6Y2FzdChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOworICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gY2Fz
dFRoaXNWYWx1ZTxKU0NsYXNzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUudGhpc1Zh
bHVlKCkpOwogICAgICAgICBpZiBjb25zdGV4cHIgKHNob3VsZFRocm93ICE9IENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQpIHsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghdGhpc09i
amVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdFByb21pc2VXaXRoVGhpc1R5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NsYXNzOjppbmZvKCktPmNsYXNzTmFtZSwgb3Bl
cmF0aW9uTmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFu
ZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJv
ckhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0Vycm9ySGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBA
QCB2b2lkIEpTRXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVudChTY3JpcHRFCiAgICAgICAgIEpTRXhl
Y1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb24oJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNhbGxE
YXRhKTsKIAogICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAg
ICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbChnbG9i
YWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwganNGdW5jdGlvbiwgY2FsbERh
dGEsIGdsb2JhbE9iamVjdCwgYXJncywgZXhjZXB0aW9uKTsKKyAgICAgICAgSlNWYWx1ZSByZXR1
cm5WYWx1ZSA9IEpTRXhlY1N0YXRlOjpwcm9maWxlZENhbGwoZ2xvYmFsT2JqZWN0LCBKU0M6OlBy
b2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGpzRnVuY3Rpb24sIGNhbGxEYXRhLCAmZ2xvYmFsT2JqZWN0
LnByb3h5KCksIGFyZ3MsIGV4Y2VwdGlvbik7CiAKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5o
CShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
VGFyZ2V0Q3VzdG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgog
ICAgICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAg
ICBhdXRvIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS50aGlzVmFsdWUoKS50b1RoaXMoJmxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6RUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICAgICAgYXV0byB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUudGhpc1ZhbHVlKCk7CiAgICAgICAgIGF1dG8gdGhpc09iamVjdCA9
IGpzRXZlbnRUYXJnZXRDYXN0KHZtLCB0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSA/IEpT
Qzo6SlNWYWx1ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCkgOiB0aGlzVmFsdWUpOwogICAgICAgICBp
ZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiRXZlbnRUYXJnZXQiLCBv
cGVyYXRpb25OYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2No
ZWR1bGVkQWN0aW9uLmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1
Miw3IEBAIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKFdvcmtlckdsb2IKIAogICAgIGlm
IChtX2Z1bmN0aW9uKSB7CiAgICAgICAgIGF1dG8qIGNvbnRleHRXcmFwcGVyID0gc2NyaXB0Q29u
dHJvbGxlci0+Z2xvYmFsU2NvcGVXcmFwcGVyKCk7Ci0gICAgICAgIGV4ZWN1dGVGdW5jdGlvbklu
Q29udGV4dChjb250ZXh0V3JhcHBlciwgY29udGV4dFdyYXBwZXIsIHdvcmtlckdsb2JhbFNjb3Bl
KTsKKyAgICAgICAgZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KGNvbnRleHRXcmFwcGVyLCAmY29u
dGV4dFdyYXBwZXItPnByb3h5KCksIHdvcmtlckdsb2JhbFNjb3BlKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBTY3JpcHRTb3VyY2VDb2RlIGNvZGUobV9jb2RlLCBVUkwod29ya2VyR2xvYmFsU2Nv
cGUudXJsKCkpKTsKICAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+ZXZhbHVhdGUoY29kZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTU0MTUsNyArNTQxNSw5
IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZVNldHRlckJvZHlEZWZpbml0aW8KICAgICAgICAgIyAz
LjUuOS4xLiBMZXQgUSBiZSA/IEdldChPLCBpZCkuCiAgICAgICAgIG15ICRpZCA9ICRhdHRyaWJ1
dGUtPm5hbWU7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIGlkID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwi
JHtpZH1cIiksIHN0cmxlbihcIiR7aWR9XCIpKTtcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgYXV0byB2YWx1ZVRvRm9yd2FyZFRvID0gdGhpc09iamVjdC5nZXQoJmxleGlj
YWxHbG9iYWxPYmplY3QsIGlkKTtcbiIpOworCisgICAgICAgIG15ICRnZXRSZWNlaXZlciA9IElz
RE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpID8gInRoaXNPYmplY3QucHJveHkoKSIgOiAidGhp
c09iamVjdCI7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIHZhbHVlVG9G
b3J3YXJkVG8gPSAke2dldFJlY2VpdmVyfS5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIGlkKTtc
biIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7XG4iKTsKICAgICAgICAgCiAgICAgICAgICMgMy41LjkuMi4g
SWYgVHlwZShRKSBpcyBub3QgT2JqZWN0LCB0aGVuIHRocm93IGEgVHlwZUVycm9yLgpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNzgxNTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MzY0LDcgKzczNjQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVz
ZXJBZ2VudFNoCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKIAotICAgICAgICBhdXRvIGNv
bnRyb2xsZXJWYWx1ZSA9IEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24s
IGNhbGxEYXRhLCAmZ2xvYmFsT2JqZWN0LCBhcmdMaXN0KTsKKyAgICAgICAgYXV0byBjb250cm9s
bGVyVmFsdWUgPSBKU0M6OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxs
RGF0YSwgJmdsb2JhbE9iamVjdC5wcm94eSgpLCBhcmdMaXN0KTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgcmVwb3J0RXhjZXB0aW9uQW5kUmV0dXJuRmFsc2UoKSk7CiAKICAg
ICAgICAgYXV0byogY29udHJvbGxlck9iamVjdCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpT
T2JqZWN0Kj4odm0sIGNvbnRyb2xsZXJWYWx1ZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzgxNTkp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAyMS0wNS0yNyAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisK
KyAgICAgICAgW0pTQ10gQWJvbGlzaCB1c2luZyByZXNvbHZlZCBzY29wZSBhcyB8dGhpc3wgdmFs
dWUgd2hlbiBjYWxsaW5nIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI1Mzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBqcy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0
aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWxpdGVy
YWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi5qczoKKwogMjAyMS0wNS0yNyAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBIMjY0IHByb2ZpbGVzIGlu
IE1lZGlhUmVjb3JkZXIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9kb20tYWNj
ZXNzLWZyb20tY2xvc3VyZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9kb20tYWNjZXNzLWZyb20tY2xvc3VyZS1pZnJhbWUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAyNzgxNTkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvZG9tLWFjY2Vzcy1mcm9tLWNsb3N1cmUtaWZyYW1lLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIGRvY3VtZW50LlVSTDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L3Jlc291cmNlcy9kb20tYWNjZXNzLWZyb20tY2xvc3VyZS1pZnJhbWUtY2hpbGQuaHRt
bAogd2luZG93LmRvY3VtZW50LlVSTDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3Jlc291
cmNlcy9ub3RpZnktcGFyZW50LWRvbmUuaHRtbAotbmFtZToKK25hbWU6IGNoaWxkCiB3aW5kb3cu
bmFtZTogY2hpbGQKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2RvbS1hY2Nl
c3MtZnJvbS1jbG9zdXJlLXdpbmRvdy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L2RvbS1hY2Nlc3MtZnJvbS1jbG9zdXJlLXdpbmRvdy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDI3ODE1OSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRv
dy9kb20tYWNjZXNzLWZyb20tY2xvc3VyZS13aW5kb3ctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogZG9jdW1lbnQuVVJMOiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvcmVzb3VyY2VzL2RvbS1hY2Nlc3MtZnJvbS1jbG9zdXJlLXdpbmRvdy1jaGlsZC5odG1s
CiB3aW5kb3cuZG9jdW1lbnQuVVJMOiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvcmVzb3Vy
Y2VzL25vdGlmeS1vcGVuZXItZG9uZS5odG1sCi1uYW1lOgorbmFtZTogY2hpbGQKIHdpbmRvdy5u
YW1lOiBjaGlsZAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZG9tLWFjY2Vz
cy1mcm9tLWNsb3N1cmUtd2luZG93LXdpdGgtZ2MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9kb20tYWNjZXNzLWZyb20tY2xvc3VyZS13aW5k
b3ctd2l0aC1nYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3ODE1OSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy9kb20tYWNjZXNzLWZyb20tY2xvc3VyZS13aW5kb3ctd2l0aC1nYy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiBkb2N1bWVudC5VUkw6
IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9yZXNvdXJjZXMvZG9tLWFjY2Vzcy1mcm9tLWNs
b3N1cmUtd2luZG93LWNoaWxkLmh0bWwKIHdpbmRvdy5kb2N1bWVudC5VUkw6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy9yZXNvdXJjZXMvbm90aWZ5LW9wZW5lci1kb25lLmh0bWwKLW5hbWU6
CituYW1lOiBjaGlsZAogd2luZG93Lm5hbWU6IGNoaWxkCiAKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1jb250ZW50V2luZG93LWV2YWwtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURF
TklFRC1jb250ZW50V2luZG93LWV2YWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzgxNTkpCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtY29udGVudFdpbmRv
dy1ldmFsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSArMSwyIEBACitDT05TT0xF
IE1FU1NBR0U6IFNlY3VyaXR5RXJyb3I6IFRoZSBvcGVyYXRpb24gaXMgaW5zZWN1cmUuCiBUaGlz
IHRlc3QgcGFzc2VzIGlmIGFsZXJ0KCkgaXMgbm90IGNhbGxlZC4KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1odG1sZWxlbG1lbnQtd2l0aC1pZnJhbWUt
cHJvdG8tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkveHNzLURFTklFRC1odG1sZWxlbG1lbnQtd2l0aC1pZnJhbWUtcHJvdG8tZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAyNzgxNTkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzcy1ERU5JRUQtaHRtbGVsZWxtZW50LXdpdGgtaWZyYW1lLXByb3RvLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVGVzdHMgdGhhdCBtYWtpbmcgb3RoZXIg
ZnJhbWUgd2luZG93IGEgcAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgX19w
cm90b19fID0gdGFyZ2V0V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdC5w
cm90b3R5cGUuX19wcm90b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZC4KK1BBU1MgX19w
cm90b19fID0gdGFyZ2V0V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBz
ZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0LgogUEFTUyB0YXJnZXRX
aW5kb3cubXlpbnB1dCB0aHJldyBleGNlcHRpb24gU2VjdXJpdHlFcnJvcjogQmxvY2tlZCBhIGZy
YW1lIHdpdGggb3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEg
Y3Jvc3Mtb3JpZ2luIGZyYW1lLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1h
dGNoLi4KIFBBU1M6IHN1Y2Nlc3NmdWxseVBhcnNlZCBzaG91bGQgYmUgJ3RydWUnIGFuZCBpcy4K
IApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELW1ldGhv
ZC13aXRoLWlmcmFtZS1wcm90by1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELW1ldGhvZC13aXRoLWlmcmFtZS1wcm90
by1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3ODE1OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkveHNzLURFTklFRC1tZXRob2Qtd2l0aC1pZnJhbWUtcHJvdG8tZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQCBUZXN0cyB0aGF0IG1ha2luZyBvdGhl
ciBmcmFtZSB3aW5kb3cgYSBwCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBf
X3Byb3RvX18gPSB0YXJnZXRXaW5kb3cgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0
LnByb3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkLgorUEFTUyBf
X3Byb3RvX18gPSB0YXJnZXRXaW5kb3cgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90
IHNldCBwcm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlwZSBvYmplY3QuCiBQQVNTOiBzdWNj
ZXNzZnVsbHlQYXJzZWQgc2hvdWxkIGJlICd0cnVlJyBhbmQgaXMuCiAKIFRFU1QgQ09NUExFVEUK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1ub24tc2hh
ZG93YWJsZS1wcm9wdGVydHktd2l0aC1pZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1ub24tc2hh
ZG93YWJsZS1wcm9wdGVydHktd2l0aC1pZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAyNzgxNTkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQt
bm9uLXNoYWRvd2FibGUtcHJvcHRlcnR5LXdpdGgtaWZyYW1lLXByb3RvLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVGVzdHMgdGhhdCBtYWtpbmcgb3RoZXIgZnJh
bWUgd2luZG93IGEgcAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgX19wcm90
b19fID0gdGFyZ2V0V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdC5wcm90
b3R5cGUuX19wcm90b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZC4KK1BBU1MgX19wcm90
b19fID0gdGFyZ2V0V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBzZXQg
cHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0LgogUEFTUzogbG9jYXRpb24g
PT09IG9yaWdpbmFsTG9jYXRpb24gc2hvdWxkIGJlICd0cnVlJyBhbmQgaXMuCiBQQVNTOiB0aGlz
LmxvY2F0aW9uID09PSBvcmlnaW5hbExvY2F0aW9uIHNob3VsZCBiZSAndHJ1ZScgYW5kIGlzLgog
UEFTUzogc3VjY2Vzc2Z1bGx5UGFyc2VkIHNob3VsZCBiZSAndHJ1ZScgYW5kIGlzLgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXJlZ3VsYXItcHJvcHRl
cnR5LXdpdGgtaWZyYW1lLXByb3RvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtcmVndWxhci1wcm9wdGVydHktd2l0
aC1pZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzgxNTkpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtcmVndWxhci1wcm9wdGVydHktd2l0
aC1pZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBA
QCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiAKIAogUEFTUyB0aGlz
Ll9fcHJvdG9fXyA9IHRhcmdldFdpbmRvdyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5u
b3Qgc2V0IHByb3RvdHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdC4KLVBBU1MgX19w
cm90b19fID0gdGFyZ2V0V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdC5w
cm90b3R5cGUuX19wcm90b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZC4KK1BBU1MgX19w
cm90b19fID0gdGFyZ2V0V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBz
ZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0LgogUEFTUzogaW5uZXJI
ZWlnaHQgPT09IG9yaWdpbmFsSW5uZXJIZWlnaHQgc2hvdWxkIGJlICd0cnVlJyBhbmQgaXMuCiBQ
QVNTOiB0aGlzLmlubmVySGVpZ2h0ID09PSBvcmlnaW5hbElubmVySGVpZ2h0IHNob3VsZCBiZSAn
dHJ1ZScgYW5kIGlzLgogUEFTUzogc3VjY2Vzc2Z1bGx5UGFyc2VkIHNob3VsZCBiZSAndHJ1ZScg
YW5kIGlzLgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12
YWx1ZS5hbnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwt
b2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4
MTU5KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJ
REwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5h
bnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQCBQQVNTIEdsb2Jh
bCBvYmplY3QncyBvcGVyYXRpb24gdGhyb3dzIHdoCiBQQVNTIEdsb2JhbCBvYmplY3QncyBnZXR0
ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QgKGRvY3VtZW50LmFs
bCkKIFBBU1MgR2xvYmFsIG9iamVjdCdzIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5j
b21wYXRpYmxlIG9iamVjdCAoZG9jdW1lbnQuYWxsKQogUEFTUyBHbG9iYWwgb2JqZWN0J3Mgb3Bl
cmF0aW9uIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0IChkb2N1bWVu
dC5hbGwpCi1GQUlMIEdsb2JhbCBvYmplY3QncyBnZXR0ZXIgd29ya3Mgd2hlbiBjYWxsZWQgb24g
bnVsbCAvIHVuZGVmaW5lZCBUaGUgV2luZG93LmxvY2F0aW9uIGdldHRlciBjYW4gb25seSBiZSB1
c2VkIG9uIGluc3RhbmNlcyBvZiBXaW5kb3cKLUZBSUwgR2xvYmFsIG9iamVjdCdzIHNldHRlciB3
b3JrcyB3aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkIFRoZSBXaW5kb3cub25vbmxpbmUg
c2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdpbmRvdworUEFTUyBHbG9i
YWwgb2JqZWN0J3MgZ2V0dGVyIHdvcmtzIHdoZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQK
K1BBU1MgR2xvYmFsIG9iamVjdCdzIHNldHRlciB3b3JrcyB3aGVuIGNhbGxlZCBvbiBudWxsIC8g
dW5kZWZpbmVkCiBQQVNTIEdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gd29ya3Mgd2hlbiBjYWxs
ZWQgb24gbnVsbCAvIHVuZGVmaW5lZAogCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVj
dC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2Vj
bWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lndv
cmtlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3ODE1OSkKKysrIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9i
YWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lndvcmtlci1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBACiBQQVNTIEdsb2JhbCBvYmplY3QncyBnZXR0ZXIg
dGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QKIFBBU1MgR2xvYmFsIG9i
amVjdCdzIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdAog
UEFTUyBHbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNv
bXBhdGlibGUgb2JqZWN0Ci1GQUlMIEdsb2JhbCBvYmplY3QncyBnZXR0ZXIgd29ya3Mgd2hlbiBj
YWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZCBUaGUgV29ya2VyR2xvYmFsU2NvcGUubG9jYXRpb24g
Z2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdvcmtlckdsb2JhbFNjb3Bl
Ci1GQUlMIEdsb2JhbCBvYmplY3QncyBzZXR0ZXIgd29ya3Mgd2hlbiBjYWxsZWQgb24gbnVsbCAv
IHVuZGVmaW5lZCBUaGUgV29ya2VyR2xvYmFsU2NvcGUub25vbmxpbmUgc2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdvcmtlckdsb2JhbFNjb3BlCitQQVNTIEdsb2JhbCBv
YmplY3QncyBnZXR0ZXIgd29ya3Mgd2hlbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZAorUEFT
UyBHbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHdvcmtzIHdoZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRl
ZmluZWQKIFBBU1MgR2xvYmFsIG9iamVjdCdzIG9wZXJhdGlvbiB3b3JrcyB3aGVuIGNhbGxlZCBv
biBudWxsIC8gdW5kZWZpbmVkCiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dzL2VtYmVkZGVkLW9wZW5lci1yZW1v
dmUtZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dzL2VtYmVkZGVkLW9w
ZW5lci1yZW1vdmUtZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzgxNTkpCisrKyBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvd2lu
ZG93cy9lbWJlZGRlZC1vcGVuZXItcmVtb3ZlLWZyYW1lLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSw0ICsxLDQgQEAKIAotRkFJTCBvcGVuZXIgb2YgZGlzY2FyZGVkIG5lc3RlZCBi
cm93c2luZyBjb250ZXh0IFRoZSBXaW5kb3cub3BlbmVyIGdldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiBXaW5kb3cKLUZBSUwgb3BlbmVyIG9mIGRpc2NhcmRlZCBhdXhpbGlh
cnkgYnJvd3NpbmcgY29udGV4dCBUaGUgV2luZG93Lm9wZW5lciBnZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgV2luZG93CitQQVNTIG9wZW5lciBvZiBkaXNjYXJkZWQgbmVz
dGVkIGJyb3dzaW5nIGNvbnRleHQKK1BBU1Mgb3BlbmVyIG9mIGRpc2NhcmRlZCBhdXhpbGlhcnkg
YnJvd3NpbmcgY29udGV4dAogCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVu
dC9leGVjdXRpb24tdGltaW5nLzA4My1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3Jp
cHRpbmctMS90aGUtc2NyaXB0LWVsZW1lbnQvZXhlY3V0aW9uLXRpbWluZy8wODMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAyNzgxNTkpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVu
dC9leGVjdXRpb24tdGltaW5nLzA4My1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEs
NyArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6IFR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2Jq
ZWN0IChldmFsdWF0aW5nICd0b3AubG9nJykKIEZBSUxFRCAoVGhpcyBUQyByZXF1aXJlcyBKYXZh
U2NyaXB0IGVuYWJsZWQpCiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gVHlwZUVy
cm9yOiBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3RvcC5sb2cnKQotCi1GQUlM
ICBzY2hlZHVsZXI6IGV2ZW50IGxpc3RlbmVyIGRlZmluZWQgYnkgc2NyaXB0IGluIGEgZG9jdW1l
bnQgaW4gaGlzdG9yeSBhc3NlcnRfYXJyYXlfZXF1YWxzOiBsZW5ndGhzIGRpZmZlciwgZXhwZWN0
ZWQgYXJyYXkgWyJpbmxpbmUgc2NyaXB0ICMxIiwgIklGUkFNRSBzY3JpcHQiLCAiZW5kIHNjcmlw
dCAjMSIsICJldmVudDogZm9vIiwgImlubGluZSBzY3JpcHQgIzIiXSBsZW5ndGggNSwgZ290IFsi
aW5saW5lIHNjcmlwdCAjMSIsICJJRlJBTUUgc2NyaXB0IiwgImVuZCBzY3JpcHQgIzEiLCAiZXZl
bnQ6IGZvbyIsICJldmVudDogZm9vIiwgImlubGluZSBzY3JpcHQgIzIiXSBsZW5ndGggNgorRkFJ
TCAgc2NoZWR1bGVyOiBldmVudCBsaXN0ZW5lciBkZWZpbmVkIGJ5IHNjcmlwdCBpbiBhIGRvY3Vt
ZW50IGluIGhpc3RvcnkgYXNzZXJ0X2FycmF5X2VxdWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVj
dGVkIGFycmF5IFsiaW5saW5lIHNjcmlwdCAjMSIsICJJRlJBTUUgc2NyaXB0IiwgImVuZCBzY3Jp
cHQgIzEiLCAiZXZlbnQ6IGZvbyIsICJpbmxpbmUgc2NyaXB0ICMyIl0gbGVuZ3RoIDUsIGdvdCBb
ImlubGluZSBzY3JpcHQgIzEiLCAiSUZSQU1FIHNjcmlwdCIsICJlbmQgc2NyaXB0ICMxIiwgImV2
ZW50OiBmb28iLCAiZXZlbnQ6IGZvbyIsICJpbmxpbmUgc2NyaXB0ICMyIiwgImV2ZW50OiBmb28i
XSBsZW5ndGggNwogCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYnNvY2tldHMvdW5sb2FkLWEtZG9jdW1lbnQvMDAxLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnNvY2tldHMvdW5sb2FkLWEtZG9jdW1lbnQvMDAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4
MTU5KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJz
b2NrZXRzL3VubG9hZC1hLWRvY3VtZW50LzAwMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsNyArMSw1IEBACiBUZXN0IHJlcXVpcmVzIHBvcHVwIGJsb2NrZXIgZGlzYWJsZWQKIAog
Ci1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFRlc3QgbmFtZWQgJ1dlYlNvY2tldHM6
IG5hdmlnYXRpbmcgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQnIHNwZWNpZmllZCAyICdjbGVh
bnVwJyBmdW5jdGlvbnMsIGFuZCAxIGZhaWxlZC4KLQogUEFTUyBXZWJTb2NrZXRzOiBuYXZpZ2F0
aW5nIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0CiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy91bmxvYWQtYS1kb2N1bWVudC8w
MDItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy91bmxvYWQtYS1kb2N1bWVudC8wMDItZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAyNzgxNTkpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvdW5sb2FkLWEtZG9jdW1lbnQvMDAyLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDUgQEAKIFRlc3QgcmVxdWlyZXMgcG9wdXAg
YmxvY2tlciBkaXNhYmxlZAogCiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gVGVz
dCBuYW1lZCAnV2ViU29ja2V0czogbmF2aWdhdGluZyB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4
dCB3aXRoIGNsb3NlZCB3ZWJzb2NrZXQnIHNwZWNpZmllZCAyICdjbGVhbnVwJyBmdW5jdGlvbnMs
IGFuZCAxIGZhaWxlZC4KLQogRkFJTCBXZWJTb2NrZXRzOiBuYXZpZ2F0aW5nIHRvcC1sZXZlbCBi
cm93c2luZyBjb250ZXh0IHdpdGggY2xvc2VkIHdlYnNvY2tldCBhc3NlcnRfdW5yZWFjaGVkOiBk
b2N1bWVudCB3YXMgZGlzY2FyZGVkIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQogCkluZGV4OiBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvdW5s
b2FkLWEtZG9jdW1lbnQvMDAzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvdW5sb2FkLWEtZG9j
dW1lbnQvMDAzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4MTU5KQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL3VubG9hZC1hLWRvY3Vt
ZW50LzAwMy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSwzIEBACiAKLUhh
cm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gVGVzdCBuYW1lZCAnV2ViU29ja2V0czogbmF2
aWdhdGluZyBuZXN0ZWQgYnJvd3NpbmcgY29udGV4dCcgc3BlY2lmaWVkIDIgJ2NsZWFudXAnIGZ1
bmN0aW9ucywgYW5kIDEgZmFpbGVkLgotCiBQQVNTIFdlYlNvY2tldHM6IG5hdmlnYXRpbmcgbmVz
dGVkIGJyb3dzaW5nIGNvbnRleHQKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL3VubG9hZC1hLWRvY3VtZW50LzAwNC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJzb2NrZXRzL3VubG9hZC1hLWRvY3VtZW50LzAwNC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDI3ODE1OSkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2Vic29ja2V0cy91bmxvYWQtYS1kb2N1bWVudC8wMDQtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsMyBAQAogCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2Fn
ZSA9IFRlc3QgbmFtZWQgJ1dlYlNvY2tldHM6IG5hdmlnYXRpbmcgbmVzdGVkIGJyb3dzaW5nIGNv
bnRleHQgd2l0aCBjbG9zZWQgd2Vic29ja2V0JyBzcGVjaWZpZWQgMiAnY2xlYW51cCcgZnVuY3Rp
b25zLCBhbmQgMSBmYWlsZWQuCi0KIEZBSUwgV2ViU29ja2V0czogbmF2aWdhdGluZyBuZXN0ZWQg
YnJvd3NpbmcgY29udGV4dCB3aXRoIGNsb3NlZCB3ZWJzb2NrZXQgYXNzZXJ0X3VucmVhY2hlZDog
ZG9jdW1lbnQgd2FzIGRpc2NhcmRlZCBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKIApJbmRleDog
TGF5b3V0VGVzdHMvanMvb2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvb2JqZWN0LWxpdGVyYWwtc2hv
cnRoYW5kLWNvbnN0cnVjdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3ODE1OSkKKysrIExh
eW91dFRlc3RzL2pzL29iamVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24tZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02Myw4ICs2MywxMCBAQCBQQVNTICEhT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcih7CiBQQVNTICEhT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcih7c2V0IDQyKHZhbHVlKXt9fSwgJzQyJykuc2V0IGlzIHRydWUKIFBBU1MgdGhpcy5f
X3Byb3RvX18gPSBbXSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3Qgc2V0IHByb3Rv
dHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdC4KIFBBU1MgKHtfX3Byb3RvX186IHRo
aXMuX19wcm90b19ffSkgaW5zdGFuY2VvZiBBcnJheSBpcyBmYWxzZQotUEFTUyBfX3Byb3RvX18g
PSBbXSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPYmplY3QucHJvdG90eXBlLl9fcHJvdG9f
XyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQuCi1QQVNTICh7X19wcm90b19fOiBfX3Byb3Rv
X199KSBpbnN0YW5jZW9mIEFycmF5IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5l
ZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdfX3Byb3RvX18nKS4KK1BBU1MgX19wcm90
b19fID0gW10gdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90IHNldCBwcm90b3R5cGUg
b2YgaW1tdXRhYmxlIHByb3RvdHlwZSBvYmplY3QuCitQQVNTICh7X19wcm90b19fOiBfX3Byb3Rv
X199KSBpbnN0YW5jZW9mIEFycmF5IGlzIGZhbHNlCitQQVNTIF9fcHJvdG9fXyBpcyBPYmplY3Qu
Z2V0UHJvdG90eXBlT2YoZ2xvYmFsVGhpcykKK1BBU1MgX19wcm90b19fID0gX19wcm90b19fIGlz
IE9iamVjdC5nZXRQcm90b3R5cGVPZihnbG9iYWxUaGlzKQogU3ludGF4RXJyb3JzCiBQQVNTICh7
YnJlYWt9KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdv
cmQgJ2JyZWFrJyBhcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBuYW1lLi4KIFBBU1MgKHtjYXNlfSkg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICdjYXNl
JyBhcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSBuYW1lLi4KSW5kZXg6IExheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9vYmplY3QtbGl0ZXJhbC1zaG9y
dGhhbmQtY29uc3RydWN0aW9uLmpzCShyZXZpc2lvbiAyNzgxNTkpCisrKyBMYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvb2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi5qcwko
d29ya2luZyBjb3B5KQpAQCAtMTEyLDggKzExMiwxMiBAQCBzaG91bGRCZVRydWUoIiEhT2JqZWN0
LmdldE93blByb3BlcnR5RGVzCiAvLyBfX3Byb3RvX18gc2hvcnRoYW5kIHNob3VsZCBub3QgbW9k
aWZ5IHRoZSBwcm90b3R5cGUuCiBzaG91bGRUaHJvdygidGhpcy5fX3Byb3RvX18gPSBbXSIpOwog
c2hvdWxkQmVGYWxzZSgiKHtfX3Byb3RvX186IHRoaXMuX19wcm90b19ffSkgaW5zdGFuY2VvZiBB
cnJheSIpOwotc2hvdWxkVGhyb3coIl9fcHJvdG9fXyA9IFtdIiwgJyJUeXBlRXJyb3I6IE9iamVj
dC5wcm90b3R5cGUuX19wcm90b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZCInKTsKLXNo
b3VsZFRocm93KCIoe19fcHJvdG9fXzogX19wcm90b19ffSkgaW5zdGFuY2VvZiBBcnJheSIsICci
VHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyBcJ19fcHJv
dG9fX1wnKSInKTsKKworLy8gX19wcm90b19fIGdldHRlciAvIHNldHRlciBjYWxsZWQgb24gZ2xv
YmFsIG9iamVjdAorc2hvdWxkVGhyb3coIl9fcHJvdG9fXyA9IFtdIiwgJyJUeXBlRXJyb3I6IENh
bm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0IicpOworc2hv
dWxkQmVGYWxzZSgiKHtfX3Byb3RvX186IF9fcHJvdG9fX30pIGluc3RhbmNlb2YgQXJyYXkiKTsK
K3Nob3VsZEJlKCJfX3Byb3RvX18iLCAiT2JqZWN0LmdldFByb3RvdHlwZU9mKGdsb2JhbFRoaXMp
Iik7CitzaG91bGRCZSgiX19wcm90b19fID0gX19wcm90b19fIiwgIk9iamVjdC5nZXRQcm90b3R5
cGVPZihnbG9iYWxUaGlzKSIpOwogCiAvLyBLZXl3b3JkcyAtIFN5bnRheCBFcnJvcnMKIGRlYnVn
KCJTeW50YXhFcnJvcnMiKTsKSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9kZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9iamVjdC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlLWNsb3NlZC1kYXRh
YmFzZS1vYmplY3QuanMJKHJldmlzaW9uIDI3ODE1OSkKKysrIExheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9iamVjdC5qcwkod29y
a2luZyBjb3B5KQpAQCAtMjMsMTMgKzIzLDE1IEBAIGZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKICAg
ICAgICAgZGVidWcoIkRyb3BwaW5nIHJlZmVyZW5jZXMgdG8gbmV3IGNvbm5lY3Rpb24uIik7CiAg
ICAgICAgIC8vIEFmdGVyIGxlYXZpbmcgdGhpcyBmdW5jdGlvbiwgdGhlcmUgYXJlIG5vIHJlbWFp
bmluZyByZWZlcmVuY2VzIHRvIHRoZQogICAgICAgICAvLyBkYiwgc28gaXQgc2hvdWxkIGdldCBk
ZWxldGVkLgotICAgICAgICBzZXRUaW1lb3V0KHNldFZlcnNpb24sIDIpOworICAgICAgICBzZXRU
aW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImdjKCkiKTsKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoc2V0VmVyc2lvbik7CisgICAgICAgIH0pOwogICAgIH07CiB9CiAKIGZ1
bmN0aW9uIHNldFZlcnNpb24oKQogewotICAgIGV2YWxBbmRMb2coImdjKCkiKTsKICAgICBkZWJ1
ZygiT3BlbiByZXF1ZXN0IHNob3VsZCBub3QgcmVjZWl2ZSBhIGJsb2NrZWQgZXZlbnQ6Iik7CiAg
ICAgdmFyIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihkYm5hbWUsIDIpIik7
CiAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cg==
</data>
<flag name="commit-queue"
          id="451155"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429873</attachid>
            <date>2021-05-27 06:11:37 -0700</date>
            <delta_ts>2021-05-27 23:10:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225397-20210527161135.patch</filename>
            <type>text/plain</type>
            <size>160717</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzgxNTkpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTI3ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBBYm9saXNoIHVzaW5nIHJlc29sdmVkIHNjb3Bl
IGFzIHx0aGlzfCB2YWx1ZSB3aGVuIGNhbGxpbmcgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9iaWctaW50LXNwZWMtdG8t
dGhpcy5qczoKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1zdHJpY3Qtc3BlYy10by10aGlzLmpz
OgorICAgICAgICAqIHN0cmVzcy92YXJpYWJsZS1uYW1lZC1ldmFsLmpzOiBBZGRlZC4KKwogMjAy
MS0wNS0yMiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAg
ICAgU3VwcG9ydCBFcmdvbm9taWMgQnJhbmQgQ2hlY2tzIHByb3Bvc2FsIChgI3ggaW4gb2JqYCkK
SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2JpZy1pbnQtc3BlYy10by10aGlzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEpTVGVzdHMvc3RyZXNzL2JpZy1pbnQtc3BlYy10by10aGlzLmpzCShyZXZpc2lvbiAyNzgx
NTkpCisrKyBKU1Rlc3RzL3N0cmVzcy9iaWctaW50LXNwZWMtdG8tdGhpcy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDMgQEAKLS8vQCBza2lwIGlmIG5vdCAkaml0VGVzdHMKLS8vQCBydW5E
ZWZhdWx0KCItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFsc2UiKQotCiBmdW5jdGlvbiBhc3NlcnQoYSkg
ewogICAgIGlmICghYSkKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7
CkBAIC0xOCw2ICsxNSwzIEBAIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CiAgICAgYXNzZXJ0KGZvby5hcHBseSgzMDAp
ID09PSAib2JqZWN0Iik7CiB9Ci0KLWFzc2VydChudW1iZXJPZkRGR0NvbXBpbGVzKGZvbykgPT09
IDEpOwotCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9iaWctaW50LXN0cmljdC1zcGVjLXRvLXRoaXMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvYmlnLWludC1zdHJpY3Qtc3BlYy10by10
aGlzLmpzCShyZXZpc2lvbiAyNzgxNTkpCisrKyBKU1Rlc3RzL3N0cmVzcy9iaWctaW50LXN0cmlj
dC1zcGVjLXRvLXRoaXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSwzIEBACi0vL0AgcnVu
RGVmYXVsdCgiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIikKLQogZnVuY3Rpb24gYXNzZXJ0KGEp
IHsKICAgICBpZiAoIWEpCiAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIp
OwpAQCAtMTgsNiArMTYsMyBAQCBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogICAgIGFzc2VydChmb28uYXBwbHkoMzAw
KSA9PT0gIm51bWJlciIpOwogfQotCi1hc3NlcnQobnVtYmVyT2ZERkdDb21waWxlcyhmb28pID4g
MSk7Ci0KSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2dsb2JhbC1vYmplY3QtYWNjZXNzb3ItcHJvcGVy
dHktdGhpcy12YWx1ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9nbG9iYWwtb2Jq
ZWN0LWFjY2Vzc29yLXByb3BlcnR5LXRoaXMtdmFsdWUuanMJKG5vbmV4aXN0ZW50KQorKysgSlNU
ZXN0cy9zdHJlc3MvZ2xvYmFsLW9iamVjdC1hY2Nlc3Nvci1wcm9wZXJ0eS10aGlzLXZhbHVlLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBCYWQgdmFsdWU6ICR7YWN0dWFsfS5gKTsKK30KKwordmFyIF9fZm9vX18g
PSAtMTsKKyhmdW5jdGlvbiBzYW1lUmVhbG0oKSB7CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5
KGdsb2JhbFRoaXMsICJmb28iLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKHRoaXMsIGdsb2JhbFRoaXMpOworICAgICAgICAgICAgcmV0dXJuIF9fZm9vX187CisgICAg
ICAgIH0sCisgICAgICAgIHNldCh2YWx1ZSkgeworICAgICAgICAgICAgc2hvdWxkQmUodGhpcywg
Z2xvYmFsVGhpcyk7CisgICAgICAgICAgICBfX2Zvb19fID0gdmFsdWU7CisgICAgICAgIH0sCisg
ICAgfSk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNjsgaSsrKSB7CisgICAgICAgIHNo
b3VsZEJlKGZvbywgaSAtIDEpOworICAgICAgICBmb28gPSBpOworICAgICAgICBzaG91bGRCZShm
b28sIGkpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBjcm9zc1JlYWxtKCkgeworICAgIGNv
bnN0IE90aGVyRnVuY3Rpb24gPSAkdm0uY3JlYXRlR2xvYmFsT2JqZWN0KCkuRnVuY3Rpb247CisK
KyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2xvYmFsVGhpcywgImJhciIsIHsKKyAgICAgICAg
Z2V0OiBuZXcgT3RoZXJGdW5jdGlvbigicmV0dXJuIHRoaXM7IiksCisgICAgICAgIHNldDogbmV3
IE90aGVyRnVuY3Rpb24oInZhbHVlIiwgInZhbHVlLnRoaXNWYWx1ZSA9IHRoaXM7IiksCisgICAg
fSk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNjsgaSsrKSB7CisgICAgICAgIHNob3Vs
ZEJlKGJhciwgZ2xvYmFsVGhpcyk7CisKKyAgICAgICAgbGV0IHZhbHVlID0ge307CisgICAgICAg
IGJhciA9IHZhbHVlOworICAgICAgICBzaG91bGRCZSh2YWx1ZS50aGlzVmFsdWUsIGdsb2JhbFRo
aXMpOworICAgIH0KK30pKCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy92YXJpYWJsZS1uYW1lZC1l
dmFsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3ZhcmlhYmxlLW5hbWVkLWV2YWwu
anMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvdmFyaWFibGUtbmFtZWQtZXZhbC5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgQmFkIHZhbHVlOiAke2FjdHVhbH0uYCk7Cit9CisKK2xldCBldmFsOwor
CisoZnVuY3Rpb24gdGhpc1ZhbHVlKCkgeworICAgIGV2YWwgPSBmdW5jdGlvbigpIHsgcmV0dXJu
IHRoaXM7IH07CisgICAgc2hvdWxkQmUoZXZhbCgpLCBnbG9iYWxUaGlzKTsKKworICAgIGV2YWwg
PSBmdW5jdGlvbigpIHsgInVzZSBzdHJpY3QiOyByZXR1cm4gdGhpczsgfTsKKyAgICBzaG91bGRC
ZShldmFsKCksIHVuZGVmaW5lZCk7CisKKyAgICBjb25zdCBiaW5kaW5nT2JqZWN0ID0geyBldmFs
IH07CisgICAgd2l0aCAoYmluZGluZ09iamVjdCkgeworICAgICAgICBzaG91bGRCZShldmFsKCks
IGJpbmRpbmdPYmplY3QpOworICAgIH0KK30pKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNDEgQEAKKzIwMjEtMDUtMjcgIEFsZXhleSBTaHZh
eWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIEFib2xpc2ggdXNp
bmcgcmVzb2x2ZWQgc2NvcGUgYXMgfHRoaXN8IHZhbHVlIHdoZW4gY2FsbGluZyBmdW5jdGlvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTM5Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0FQ
SUNhbGxiYWNrRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6QVBJQ2FsbGJhY2tGdW5jdGlvbjo6
Y2FsbEltcGwpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbEltcGwpOgorICAgICAg
ICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgorICAgICAgICAoSlNDb250ZXh0R2V0R2xvYmFsT2Jq
ZWN0KToKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1RvVGhp
c1N0YXR1cy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmg6
IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRGdW5jdGlvbkZyb21TY29w
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpoYXNQYXJlbnRXaXRoU2NvcGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRvVGhpcyk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlRhZ2dlZFRlbXBsYXRl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoK
KyAgICAgICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OnRoaXNWYWx1ZSBjb25zdCk6CisgICAg
ICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKToKKyAgICAgICAgKEpTQzo6REZHOjppc1RvVGhpc0FuSWRlbnRpdHkpOiBEZWxldGVkLgor
ICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRp
ZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICog
ZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAg
ICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcv
REZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRm
Zy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1
cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwVG9UaGlzKToKKyAg
ICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6Cisg
ICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNFQ01B
TW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6ZWNtYU1vZGUpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0VGhpc1ZhbHVlRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVUb1RoaXMpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpj
YW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9UaGlzKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldFRoaXNWYWx1ZUZvckNhbGwpOgorICAg
ICAgICAqIGdlbmVyYXRvci9EU0wucmI6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6
OmludGVybmFsQ29uc3RydWN0b3JOYW1lKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklU
Lmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X3RoaXNfdmFsdWVfZm9yX2NhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfdG9fdGhpcyk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF90b190aGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206
CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6OmNyZWF0ZUFycmF5SXRlcmF0
b3JPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0NPTU1P
Tl9TTE9XX1BBVEgpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAg
IChKU0M6OnRvR2xvYmFsVGhpcyk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAg
KiBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNCaWdJbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9KU0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1Nsb3BweU1vZGVUaGlzIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9UaGlzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dG9UaGlzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2spOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6dG9UaGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6dG9U
aGlzKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OnRvVGhpcyk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgIChKU0M6
OlR5cGVJbmZvOjpwZXJDZWxsQml0KToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86Om92ZXJyaWRl
c1RvVGhpcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAoSlNDOjpvYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGlt
ZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tik6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sLmg6
CisKIDIwMjEtMDUtMjcgIERhbmllbCBLb2xlc2EgIDxka29sZXNhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0pTQ10gRml4IGNyYXNoIG9uIDMyLWJpdCBiaWcgZW5kaWFuIHN5c3RlbXMuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNzgxNTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTU4
Myw3ICs1ODMsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAg
ICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5o
CiAgICAgYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKLSAgICBieXRlY29kZS9Ub1RoaXNTdGF0dXMu
aAogICAgIGJ5dGVjb2RlL1R5cGVMb2NhdGlvbi5oCiAgICAgYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAogICAgIGJ5dGVjb2RlL1VubGlua2VkRXZhbENvZGVCbG9jay5oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw3ICsyODEsNiBAQCBi
eXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50CiBieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5jcHAKIGJ5dGVjb2RlL1N0dWJJbmZvU3VtbWFyeS5jcHAKIGJ5dGVjb2RlL1N1
cGVyU2FtcGxlci5jcHAKLWJ5dGVjb2RlL1RvVGhpc1N0YXR1cy5jcHAKIGJ5dGVjb2RlL1RyYWNr
ZWRSZWZlcmVuY2VzLmNwcAogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCShyZXZpc2lvbiAyNzgxNTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBBUElDYWxsYmFja0Z1bmN0
aW9uOjpjYWxsCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZ2xvYmFsT2JqZWN0KTsKICAgICBKU09iamVj
dFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Ci0gICAgSlNP
YmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSkpOwor
ICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvU2xvcHB5TW9kZVRoaXMoZ2xvYmFsT2JqZWN0KSk7CiAKICAgICBpbnQgYXJndW1lbnRDb3Vu
dCA9IHN0YXRpY19jYXN0PGludD4oY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpOwogICAgIFZl
Y3RvcjxKU1ZhbHVlUmVmLCAxNj4gYXJndW1lbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNCYXNlLmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiBKU1ZhbHVlUmVmIEpTRXZhbHVhdGVTY3JpcHRJbnRlcm5hbChjb25zdCBK
U0xvY2tIb2xkZXImLCBKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBK
U09iamVjdCoganNUaGlzT2JqZWN0ID0gdG9KUyh0aGlzT2JqZWN0KTsKKyAgICBpZiAoanNUaGlz
T2JqZWN0KQorICAgICAgICBqc1RoaXNPYmplY3QgPSBqc1RoaXNPYmplY3QtPnRvUHVibGljVGhp
c1ZhbHVlKCk7CiAKICAgICAvLyBldmFsdWF0ZSBzZXRzICJ0aGlzIiB0byB0aGUgZ2xvYmFsIG9i
amVjdCBpZiBpdCBpcyBOVUxMCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRv
SlMoY3R4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5
KQpAQCAtNTQ3LDcgKzU0Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50PjoKIAogICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZ2xvYmFsT2JqZWN0KTsK
ICAgICBKU09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGNhbGxGcmFtZS0+anNDYWxsZWUo
KSk7Ci0gICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+
KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNs
b3BweSgpKSkpOworICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvU2xvcHB5TW9kZVRoaXMoZ2xvYmFsT2JqZWN0KSk7CiAgICAgCiAgICAg
Zm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
Kj4odG9KUyhmdW5jdGlvblJlZikpLT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganND
bGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25D
YWxsYmFjayBjYWxsQXNGdW5jdGlvbiA9IGpzQ2xhc3MtPmNhbGxBc0Z1bmN0aW9uKSB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCShyZXZpc2lvbiAy
NzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5MSw3ICsxOTEsNyBAQCBKU09iamVjdFJlZiBKU0NvbnRleHRHZXRH
bG9iYWxPYmplY3QoSlNDCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpT
TG9ja0hvbGRlciBsb2NrZXIodm0pOwogCi0gICAgcmV0dXJuIHRvUmVmKGpzQ2FzdDxKU09iamVj
dCo+KGdsb2JhbE9iamVjdC0+bWV0aG9kVGFibGUodm0pLT50b1RoaXMoZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpKTsKKyAgICByZXR1cm4gdG9SZWYoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxUaGlzKCkpOwogfQogCiBKU0NvbnRleHRHcm91cFJlZiBKU0NvbnRl
eHRHZXRHcm91cChKU0NvbnRleHRSZWYgY3R4KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1NjcmlwdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1NjcmlwdFJlZi5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUw
LDcgQEAgSlNWYWx1ZVJlZiBKU1NjcmlwdEV2YWx1YXRlKEpTQ29udGV4dFJlZgogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBpbnRlcm5hbEV4
Y2VwdGlvbjsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHRoaXNWYWx1ZVJlZiA/IHRvSlMoZ2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWVSZWYpIDoganNVbmRlZmluZWQoKTsKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHRoaXNWYWx1ZVJlZiA/IHRvSlMoZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWVSZWYp
LnRvU2xvcHB5TW9kZVRoaXMoZ2xvYmFsT2JqZWN0KS0+dG9QdWJsaWNUaGlzVmFsdWUoKSA6IEpT
VmFsdWUoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdCwgU291
cmNlQ29kZSgqc2NyaXB0KSwgdGhpc1ZhbHVlLCBpbnRlcm5hbEV4Y2VwdGlvbik7CiAgICAgaWYg
KGludGVybmFsRXhjZXB0aW9uKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwkocmV2aXNpb24gMjc4MTU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMJKHdvcmtpbmcgY29w
eSkKQEAgLTE5NDgsMTIgKzE5NDgsMTcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3Zb
XSkKICAgICB2ID0gSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBmdW5jdGlvbiwgbywg
MCwgTlVMTCwgTlVMTCk7CiAgICAgQVNTRVJUKEpTVmFsdWVJc0VxdWFsKGNvbnRleHQsIHYsIG8s
IE5VTEwpKTsKIAorICAgIEpTT2JqZWN0UmVmIHJhd0dsb2JhbE9iamVjdCA9IEpTT2JqZWN0R2V0
UHJveHlUYXJnZXQoZ2xvYmFsT2JqZWN0KTsKKyAgICBBU1NFUlQoIUpTVmFsdWVJc0VxdWFsKGNv
bnRleHQsIHJhd0dsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBOVUxMKSk7CisKICAgICBjb25z
dCBjaGFyKiB0aGlzU2NyaXB0ID0gInRoaXM7IjsKICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh0aGlzU2NyaXB0KTsKICAgICB2ID0gSlNFdmFs
dWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHQsIE5VTEwsIE5VTEwsIDEsIE5VTEwpOwogICAgIEFT
U0VSVChKU1ZhbHVlSXNFcXVhbChjb250ZXh0LCB2LCBnbG9iYWxPYmplY3QsIE5VTEwpKTsKICAg
ICB2ID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHQsIG8sIE5VTEwsIDEsIE5VTEwp
OwogICAgIEFTU0VSVChKU1ZhbHVlSXNFcXVhbChjb250ZXh0LCB2LCBvLCBOVUxMKSk7CisgICAg
diA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0LCByYXdHbG9iYWxPYmplY3QsIE5V
TEwsIDEsIE5VTEwpOworICAgIEFTU0VSVChKU1ZhbHVlSXNFcXVhbChjb250ZXh0LCB2LCBnbG9i
YWxPYmplY3QsIE5VTEwpKTsKICAgICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0KTsKIAogICAgIEpT
U2NyaXB0UmVmIHNjcmlwdE9iamVjdCA9IEpTU2NyaXB0Q3JlYXRlUmVmZXJlbmNpbmdJbW1vcnRh
bEFTQ0lJVGV4dChjb250ZXh0R3JvdXAsIDAsIDAsIHRoaXNTY3JpcHQsIHN0cmxlbih0aGlzU2Ny
aXB0KSwgMCwgMCk7CkBAIC0xOTYxLDYgKzE5NjYsMTggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIqIGFyZ3ZbXSkKICAgICBBU1NFUlQoSlNWYWx1ZUlzRXF1YWwoY29udGV4dCwgdiwgZ2xvYmFs
T2JqZWN0LCBOVUxMKSk7CiAgICAgdiA9IEpTU2NyaXB0RXZhbHVhdGUoY29udGV4dCwgc2NyaXB0
T2JqZWN0LCBvLCBOVUxMKTsKICAgICBBU1NFUlQoSlNWYWx1ZUlzRXF1YWwoY29udGV4dCwgdiwg
bywgTlVMTCkpOworICAgIHYgPSBKU1NjcmlwdEV2YWx1YXRlKGNvbnRleHQsIHNjcmlwdE9iamVj
dCwgcmF3R2xvYmFsT2JqZWN0LCBOVUxMKTsKKyAgICBBU1NFUlQoSlNWYWx1ZUlzRXF1YWwoY29u
dGV4dCwgdiwgZ2xvYmFsT2JqZWN0LCBOVUxMKSk7CisgICAgdiA9IEpTU2NyaXB0RXZhbHVhdGUo
Y29udGV4dCwgc2NyaXB0T2JqZWN0LCBqc1VuZGVmaW5lZCwgTlVMTCk7CisgICAgQVNTRVJUKEpT
VmFsdWVJc0VxdWFsKGNvbnRleHQsIHYsIGdsb2JhbE9iamVjdCwgTlVMTCkpOworICAgIHYgPSBK
U1NjcmlwdEV2YWx1YXRlKGNvbnRleHQsIHNjcmlwdE9iamVjdCwganNOdWxsLCBOVUxMKTsKKyAg
ICBBU1NFUlQoSlNWYWx1ZUlzRXF1YWwoY29udGV4dCwgdiwgZ2xvYmFsT2JqZWN0LCBOVUxMKSk7
CisgICAgdiA9IEpTU2NyaXB0RXZhbHVhdGUoY29udGV4dCwgc2NyaXB0T2JqZWN0LCBqc1plcm8s
IE5VTEwpOworICAgIEFTU0VSVChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgdikpOworICAgIHYg
PSBKU1NjcmlwdEV2YWx1YXRlKGNvbnRleHQsIHNjcmlwdE9iamVjdCwganNUcnVlLCBOVUxMKTsK
KyAgICBBU1NFUlQoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHYpKTsKKyAgICB2ID0gSlNTY3Jp
cHRFdmFsdWF0ZShjb250ZXh0LCBzY3JpcHRPYmplY3QsIGpzRW1wdHlTdHJpbmcsIE5VTEwpOwor
ICAgIEFTU0VSVChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgdikpOwogICAgIEpTU2NyaXB0UmVs
ZWFzZShzY3JpcHRPYmplY3QpOwogCiAgICAgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoImV2YWwodGhpcyk7Iik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI2Myw3ICsy
NjMsNiBAQAogCQkwRjJDNjNDMjFFNjY0QTVDMDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0MxMUU2
NjRBNUEwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oICovOyB9OwogCQkwRjJDNjNDNDFFNjlF
Rjk0MDBDMTM4MzkgLyogQjNNZW1vcnlWYWx1ZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0MzMUU2OUVGOTIwMEMxMzgzOSAvKiBC
M01lbW9yeVZhbHVlSW5saW5lcy5oICovOyB9OwogCQkwRjJENERERTE5ODMyRDM0MDA3RDRCMTkg
LyogRGVidWdnZXJTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyRDREREMxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjJENERFOTE5
ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNjE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlz
U3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEYyRDRERUExOTgzMkRBQzAwN0Q0QjE5IC8qIFR5cGVMb2NhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRDRERTcxOTgzMkRBQzAwN0Q0
QjE5IC8qIFR5cGVMb2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGMkQ0REVDMTk4MzJEQzQwMDdENEIxOSAvKiBUeXBlUHJvZmlsZXJM
b2cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0
REUwMTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJENERGMDE5ODMyREQ2MDA3RDRC
MTkgLyogVHlwZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyRDRERTQxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVTZXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjUyMiw4ICsyNTIxLDYgQEAK
IAkJMEYyRDRERTAxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYyRDRERTMxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVTZXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVHlwZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0REU0MTk4
MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVTZXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYyRDRERTUxOTgzMkRBQzAwN0Q0QjE5IC8qIFRv
VGhpc1N0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUb1Ro
aXNTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjJENERFNjE5ODMy
REFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRvVGhpc1N0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJE
NERFNzE5ODMyREFDMDA3RDRCMTkgLyogVHlwZUxvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFR5cGVMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjJERDgwQzFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzRWxpbWluYXRpb25Q
aGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBcmd1bWVu
dHNFbGltaW5hdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyREQ4MEQxQUIzRDhC
RTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5oOyBwYXRo
ID0gZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTg2NjksOCArODY2Niw2IEBACiAJCQkJMEY0QTM4RjcxQzhFMTNERjAwMTkw
MzE4IC8qIFN1cGVyU2FtcGxlci5jcHAgKi8sCiAJCQkJMEY0QTM4RjgxQzhFMTNERjAwMTkwMzE4
IC8qIFN1cGVyU2FtcGxlci5oICovLAogCQkJCTBGNDRBN0E4MjBCRjY4NUUwMDIyQjE3MSAvKiBU
ZXJtaW5hdGVkQ29kZU9yaWdpbi5oICovLAotCQkJCTBGMkQ0REU1MTk4MzJEQUMwMDdENEIxOSAv
KiBUb1RoaXNTdGF0dXMuY3BwICovLAotCQkJCTBGMkQ0REU2MTk4MzJEQUMwMDdENEIxOSAvKiBU
b1RoaXNTdGF0dXMuaCAqLywKIAkJCQkwRjk1MkFCQTFCNDg3QTc3MDBDMzY3QzUgLyogVHJhY2tl
ZFJlZmVyZW5jZXMuY3BwICovLAogCQkJCTBGOTUyQUJCMUI0ODdBNzcwMEMzNjdDNSAvKiBUcmFj
a2VkUmVmZXJlbmNlcy5oICovLAogCQkJCTBGMkQ0REU3MTk4MzJEQUMwMDdENEIxOSAvKiBUeXBl
TG9jYXRpb24uaCAqLywKQEAgLTEwNjA3LDcgKzEwNjAyLDYgQEAKIAkJCQlBNzM4NjU1NjExODY5
N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDE0
NDhDRDEzQTE3ODM3MDBGNUJBMUEgLyogVGlueUJsb29tRmlsdGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjU1OTg5ODE3Qzg2QzU4MDBBMUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTBGMkQ0REU5MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0dXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTUyQUJEMUI0ODdBNzcwMEMzNjdDNSAvKiBUcmFja2Vk
UmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDYxN0I2QjVBQjAwQTdBRTNG
IC8qIFR5cGVkQXJyYXlBZGFwdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDgxN0I2
QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgko
cmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5yYgkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNiBAQCB0eXBlcyBbCiAgICAg
OlN0cnVjdHVyZUNoYWluLAogICAgIDpTeW1ib2xUYWJsZSwKICAgICA6U3ltYm9sVGFibGVPclNj
b3BlRGVwdGgsCi0gICAgOlRvVGhpc1N0YXR1cywKICAgICA6VHlwZUxvY2F0aW9uLAogICAgIDpX
YXNtQm91bmRMYWJlbCwKICAgICA6V2F0Y2hwb2ludFNldCwKQEAgLTE3NywxMSArMTc2LDggQEAg
b3AgOmFyZ3VtZW50X2NvdW50LAogb3AgOnRvX3RoaXMsCiAgICAgYXJnczogewogICAgICAgICBz
cmNEc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAogICAg
IH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgY2FjaGVkU3RydWN0dXJlSUQ6IFN0cnVjdHVy
ZUlELAotICAgICAgICB0b1RoaXNTdGF0dXM6IFRvVGhpc1N0YXR1cywKICAgICAgICAgcHJvZmls
ZTogVmFsdWVQcm9maWxlLAogICAgIH0KIApAQCAtMTAzNCw2ICsxMDMwLDEyIEBAIG9wIDpnZXRf
ZnJvbV9zY29wZSwKICAgICAgICAgb3BlcmFuZDogOm9mZnNldCwKICAgICB9CiAKK29wIDpnZXRf
dGhpc192YWx1ZV9mb3JfY2FsbCwKKyAgICBhcmdzOiB7CisgICAgICAgIGRzdDogVmlydHVhbFJl
Z2lzdGVyLAorICAgICAgICBzY29wZTogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0KKwogb3AgOnB1
dF90b19zY29wZSwKICAgICBhcmdzOiB7CiAgICAgICAgIHNjb3BlOiBWaXJ0dWFsUmVnaXN0ZXIs
ICMgb2Zmc2V0IDEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcz
LDYgKzE3Myw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXIKICAg
ICBVU0VTKE9wUmVzb2x2ZVNjb3BlLCBzY29wZSkKICAgICBVU0VTKE9wUmVzb2x2ZVNjb3BlRm9y
SG9pc3RpbmdGdW5jRGVjbEluRXZhbCwgc2NvcGUpCiAgICAgVVNFUyhPcEdldEZyb21TY29wZSwg
c2NvcGUpCisgICAgVVNFUyhPcEdldFRoaXNWYWx1ZUZvckNhbGwsIHNjb3BlKQogICAgIFVTRVMo
T3BUb1ByaW1pdGl2ZSwgc3JjKQogICAgIFVTRVMoT3BUb1Byb3BlcnR5S2V5LCBzcmMpCiAgICAg
VVNFUyhPcFRyeUdldEJ5SWQsIGJhc2UpCkBAIC00ODAsNiArNDgxLDcgQEAgdm9pZCBjb21wdXRl
RGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVucwogCiAgICAgREVGUyhPcFRhaWxDYWxsRm9yd2Fy
ZEFyZ3VtZW50cywgZHN0KQogICAgIERFRlMoT3BHZXRGcm9tU2NvcGUsIGRzdCkKKyAgICBERUZT
KE9wR2V0VGhpc1ZhbHVlRm9yQ2FsbCwgZHN0KQogICAgIERFRlMoT3BDYWxsLCBkc3QpCiAgICAg
REVGUyhPcFRhaWxDYWxsLCBkc3QpCiAgICAgREVGUyhPcENhbGxFdmFsLCBkc3QpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24g
Mjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNzEsMTcgKzEzNzEsNiBAQCB2b2lkIENvZGVCbG9jazo6Zmlu
YWxpemVMTEludElubGluZUNhY2hlCiAgICAgICAgICAgICBtZXRhZGF0YS5tX2JyYW5kLmNsZWFy
KCk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BUb1RoaXM+
KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGlmICghbWV0YWRhdGEubV9jYWNo
ZWRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJlSURUYWJs
ZSgpLmdldChtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEKSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewotICAgICAg
ICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxl
KCkuZ2V0KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQpOwotICAgICAgICAgICAgICAgIGRh
dGFMb2dGKCJDbGVhcmluZyBMTEludCB0b190aGlzIHdpdGggc3RydWN0dXJlICVwLlxuIiwgc3Ry
dWN0dXJlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1ldGFkYXRhLm1fY2FjaGVkU3Ry
dWN0dXJlSUQgPSAwOwotICAgICAgICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMgPSBtZXJn
ZShtZXRhZGF0YS5tX3RvVGhpc1N0YXR1cywgVG9UaGlzQ2xlYXJlZEJ5R0MpOwotICAgICAgICB9
KTsKLQogICAgICAgICBhdXRvIGhhbmRsZUNyZWF0ZUJ5dGVjb2RlID0gWyZdIChhdXRvJiBtZXRh
ZGF0YSwgQVNDSUlMaXRlcmFsIG5hbWUpIHsKICAgICAgICAgICAgIGF1dG8mIGNhY2hlV3JpdGVC
YXJyaWVyID0gbWV0YWRhdGEubV9jYWNoZWRDYWxsZWU7CiAgICAgICAgICAgICBpZiAoIWNhY2hl
V3JpdGVCYXJyaWVyIHx8IGNhY2hlV3JpdGVCYXJyaWVyLnVudmFsaWRhdGVkR2V0KCkgPT0gSlND
ZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmNwcAkocmV2aXNpb24gMjc4MTU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1RvVGhpc1N0YXR1cy5jcHAJKG5vbmV4
aXN0ZW50KQpAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUb1RoaXNTdGF0
dXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLVRvVGhpc1N0YXR1cyBtZXJnZShUb1RoaXNTdGF0
dXMgYSwgVG9UaGlzU3RhdHVzIGIpCi17Ci0gICAgc3dpdGNoIChhKSB7Ci0gICAgY2FzZSBUb1Ro
aXNPSzoKLSAgICAgICAgcmV0dXJuIGI7Ci0gICAgY2FzZSBUb1RoaXNDb25mbGljdGVkOgotICAg
ICAgICByZXR1cm4gVG9UaGlzQ29uZmxpY3RlZDsKLSAgICBjYXNlIFRvVGhpc0NsZWFyZWRCeUdD
OgotICAgICAgICBpZiAoYiA9PSBUb1RoaXNDb25mbGljdGVkKQotICAgICAgICAgICAgcmV0dXJu
IFRvVGhpc0NvbmZsaWN0ZWQ7Ci0gICAgICAgIHJldHVybiBUb1RoaXNDbGVhcmVkQnlHQzsKLSAg
ICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
VG9UaGlzQ29uZmxpY3RlZDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBX
VEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgVG9UaGlzU3RhdHVzIHN0YXR1cykKLXsKLSAgICBzd2l0Y2ggKHN0YXR1cykg
ewotICAgIGNhc2UgVG9UaGlzT0s6Ci0gICAgICAgIG91dC5wcmludCgiT0siKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgVG9UaGlzQ29uZmxpY3RlZDoKLSAgICAgICAgb3V0LnByaW50KCJD
b25mbGljdGVkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFRvVGhpc0NsZWFyZWRCeUdD
OgotICAgICAgICBvdXQucHJpbnQoIkNsZWFyZWRCeUdDIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV1RGCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Ub1Ro
aXNTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VG9UaGlzU3RhdHVzLmgJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Ub1RoaXNTdGF0dXMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0K
LWVudW0gVG9UaGlzU3RhdHVzIHsKLSAgICBUb1RoaXNPSywKLSAgICBUb1RoaXNDb25mbGljdGVk
LAotICAgIFRvVGhpc0NsZWFyZWRCeUdDCi19OwotCi1Ub1RoaXNTdGF0dXMgbWVyZ2UoVG9UaGlz
U3RhdHVzLCBUb1RoaXNTdGF0dXMpOwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNl
IFdURiB7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6VG9UaGlzU3Rh
dHVzKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNp
b24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NTgsNiArMjQ1OCwzMSBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEZyCiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRGdW5jdGlvbkZyb21TY29wZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFZhcmlhYmxlJiB2YXJp
YWJsZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlRm9yQ2FsbCkKK3sKKyAgICBBU1NFUlQoIXZhcmlh
YmxlLmxvY2FsKCkpOworCisgICAgUmVnaXN0ZXJJRCogc2NvcGUgPSBlbWl0UmVzb2x2ZVNjb3Bl
KG51bGxwdHIsIHZhcmlhYmxlKTsKKyAgICBlbWl0R2V0RnJvbVNjb3BlKGRzdCwgc2NvcGUsIHZh
cmlhYmxlLCBUaHJvd0lmTm90Rm91bmQpOworICAgIGVtaXRURFpDaGVja0lmTmVjZXNzYXJ5KHZh
cmlhYmxlLCBkc3QsIG51bGxwdHIpOworICAgIGlmIChoYXNQYXJlbnRXaXRoU2NvcGUodmFyaWFi
bGUpKQorICAgICAgICBPcEdldFRoaXNWYWx1ZUZvckNhbGw6OmVtaXQodGhpcywga2lsbCh0aGlz
VmFsdWVGb3JDYWxsKSwgc2NvcGUpOworICAgIHJldHVybiBkc3Q7Cit9CisKK2Jvb2wgQnl0ZWNv
ZGVHZW5lcmF0b3I6Omhhc1BhcmVudFdpdGhTY29wZShjb25zdCBWYXJpYWJsZSYgdmFyaWFibGUp
IGNvbnN0Cit7CisgICAgaWYgKHZhcmlhYmxlLm9mZnNldCgpLmlzVmFsaWQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9sZXhpY2FsU2NvcGVTdGFj
ay5zaXplKCk7IGktLTsgKSB7CisgICAgICAgIGlmIChtX2xleGljYWxTY29wZVN0YWNrW2ldLm1f
aXNXaXRoU2NvcGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRUb1Nj
b3BlKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBWYXJpYWJsZSYgdmFyaWFibGUsIFJlZ2lzdGVy
SUQqIHZhbHVlLCBSZXNvbHZlTW9kZSByZXNvbHZlTW9kZSwgSW5pdGlhbGl6YXRpb25Nb2RlIGlu
aXRpYWxpemF0aW9uTW9kZSkKIHsKICAgICBzd2l0Y2ggKHZhcmlhYmxlLm9mZnNldCgpLmtpbmQo
KSkgewpAQCAtNTQ1NSw3ICs1NDgwLDggQEAgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5c2lzOjpy
ZWNvcmQoKQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9UaGlzKCkKIHsKLSAgICBP
cFRvVGhpczo6ZW1pdCh0aGlzLCBraWxsKCZtX3RoaXNSZWdpc3RlciksIGVjbWFNb2RlKCkpOwor
ICAgIGlmICghZWNtYU1vZGUoKS5pc1N0cmljdCgpKQorICAgICAgICBPcFRvVGhpczo6ZW1pdCh0
aGlzLCBraWxsKCZtX3RoaXNSZWdpc3RlcikpOwogfQogCiBTdHJ1Y3R1cmVGb3JJbkNvbnRleHQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjpmaW5kU3RydWN0dXJlRm9ySW5Db250ZXh0KFJlZ2lzdGVySUQq
IHByb3BlcnR5KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC05MDQsNiArOTA0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRSZXNvbHZlQ29uc3RhbnRMb2NhbChSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFZh
cmlhYmxlJik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlU2NvcGUoUmVnaXN0ZXJJ
RCogZHN0LCBjb25zdCBWYXJpYWJsZSYpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0RnJv
bVNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUsIGNvbnN0IFZhcmlhYmxl
JiwgUmVzb2x2ZU1vZGUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0RnVuY3Rpb25Gcm9t
U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBWYXJpYWJsZSYsIFJlZ2lzdGVySUQqIHRoaXNW
YWx1ZUZvckNhbGwpOworICAgICAgICBib29sIGhhc1BhcmVudFdpdGhTY29wZShjb25zdCBWYXJp
YWJsZSYpIGNvbnN0OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0VG9TY29wZShSZWdpc3Rl
cklEKiBzY29wZSwgY29uc3QgVmFyaWFibGUmLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVzb2x2ZU1v
ZGUsIEluaXRpYWxpemF0aW9uTW9kZSk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc29s
dmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJ
ZGVudGlmaWVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1MCwxMyArMzUwLDExIEBAIFJlZ2lzdGVySUQqIFRhZ2dlZFRlbXBsYXRlTm9kZTo6ZW1p
dEJ5dGUKICAgICAgICAgICAgIHRhZyA9IGdlbmVyYXRvci5tb3ZlKGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgbG9jYWwpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdGFnID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgYmFzZSA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIGJhc2UgPSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpLCBqc1VuZGVmaW5lZCgpKTsKIAogICAgICAgICAgICAgSlNUZXh0
UG9zaXRpb24gbmV3RGl2b3QgPSBkaXZvdFN0YXJ0KCkgKyBpZGVudGlmaWVyLmxlbmd0aCgpOwog
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhuZXdEaXZvdCwgZGl2b3RT
dGFydCgpLCBuZXdEaXZvdCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IubW92ZShiYXNlLmdldCgp
LCBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShiYXNlLmdldCgpLCB2YXIpKTsKLSAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHRhZy5nZXQoKSwgYmFzZS5nZXQoKSwgdmFy
LCBUaHJvd0lmTm90Rm91bmQpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVja0lm
TmVjZXNzYXJ5KHZhciwgdGFnLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0R2V0RnVuY3Rpb25Gcm9tU2NvcGUodGFnLmdldCgpLCB2YXIsIGJhc2UuZ2V0KCkpOwog
ICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX3RhZy0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkp
IHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19jYXN0PEJy
YWNrZXRBY2Nlc3Nvck5vZGUqPihtX3RhZyk7CkBAIC0xMTgwLDE3ICsxMTc4LDEyIEBAIFJlZ2lz
dGVySUQqIEV2YWxGdW5jdGlvbkNhbGxOb2RlOjplbWl0QnkKICAgICB9IGVsc2UKICAgICAgICAg
ZnVuYyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBDYWxsQXJndW1lbnRzIGNhbGxB
cmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxs
QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKIAotICAgIGlmIChsb2Nh
bCkKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIGpzVW5kZWZpbmVkKCkpOwotICAgIGVsc2UgeworICAgIGlmICghbG9jYWwpIHsKICAgICAg
ICAgSlNUZXh0UG9zaXRpb24gbmV3RGl2b3QgPSBkaXZvdFN0YXJ0KCkgKyA0OwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCksIG5ld0Rp
dm90KTsKLSAgICAgICAgZ2VuZXJhdG9yLm1vdmUoCi0gICAgICAgICAgICBjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLAotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUo
Y2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgdmFyKSk7Ci0gICAgICAgIGdlbmVyYXRvci5l
bWl0R2V0RnJvbVNjb3BlKGZ1bmMuZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVja0lm
TmVjZXNzYXJ5KHZhciwgZnVuYy5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0R2V0RnVuY3Rpb25Gcm9tU2NvcGUoZnVuYy5nZXQoKSwgdmFyLCBjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpKTsKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFs
dWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmMuZ2V0KCkpOwpAQCAtMTI3
NiwyMCArMTI2OSwxNiBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1p
CiAgICAgfSBlbHNlCiAgICAgICAgIGZ1bmMgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAg
ICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmlu
ZWQoKSk7CiAKICAgICBpZiAobG9jYWwpIHsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNh
bGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAvLyBU
aGlzIHBhc3NlcyBOb0V4cGVjdGVkRnVuY3Rpb24gYmVjYXVzZSB3ZSBleHBlY3QgdGhhdCBpZiB0
aGUgZnVuY3Rpb24gaXMgaW4gYQogICAgICAgICAvLyBsb2NhbCB2YXJpYWJsZSwgdGhlbiBpdCdz
IG5vdCBvbmUgb2Ygb3VyIGJ1aWx0LWluIGNvbnN0cnVjdG9ycy4KICAgICAgICAgZXhwZWN0ZWRG
dW5jdGlvbiA9IE5vRXhwZWN0ZWRGdW5jdGlvbjsKICAgICB9IGVsc2UgewogICAgICAgICBKU1Rl
eHRQb3NpdGlvbiBuZXdEaXZvdCA9IGRpdm90U3RhcnQoKSArIG1faWRlbnQubGVuZ3RoKCk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8obmV3RGl2b3QsIGRpdm90U3RhcnQo
KSwgbmV3RGl2b3QpOwotICAgICAgICBnZW5lcmF0b3IubW92ZSgKLSAgICAgICAgICAgIGNhbGxB
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCksCi0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFJlc29s
dmVTY29wZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCB2YXIpKTsKLSAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVn
aXN0ZXIoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFRE
WkNoZWNrSWZOZWNlc3NhcnkodmFyLCBmdW5jLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRHZXRGdW5jdGlvbkZyb21TY29wZShmdW5jLmdldCgpLCB2YXIsIGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCkpOwogICAgIH0KIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBy
ZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuYy5nZXQoKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ckNhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOSwx
MCArMjA5LDEwIEBAIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OnRoaXNWYWx1ZShWTSYKICAg
ICBpZiAoIXRoaXNWYWx1ZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBF
Q01BTW9kZSBlY21hTW9kZSA9IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAgICBSRUxFQVNFX0FTU0VS
VF9XSVRIX01FU1NBR0UoIXRoaXNWYWx1ZS5pbmhlcml0czxKU1Njb3BlPih2bSksICJ0aGlzVmFs
dWUgc2hvdWxkbid0IGJlIEpTU2NvcGUiKTsKICAgICBpZiAoY29kZUJsb2NrICYmIGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkpCi0gICAgICAgIGVjbWFN
b2RlID0gRUNNQU1vZGU6OnN0cmljdCgpOwotICAgIHJldHVybiB0aGlzVmFsdWUudG9UaGlzKG1f
dmFsaWRNYWNoaW5lRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pLCBlY21hTW9kZSk7Cisg
ICAgICAgIHJldHVybiB0aGlzVmFsdWU7CisgICAgcmV0dXJuIHRoaXNWYWx1ZS50b1Nsb3BweU1v
ZGVUaGlzKG1fdmFsaWRNYWNoaW5lRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pKTsKIH0K
IAogLy8gRXZhbHVhdGUgc29tZSBKYXZhU2NyaXB0IGNvZGUgaW4gdGhlIHNjb3BlIG9mIHRoaXMg
ZnJhbWUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE3OSw2NSArMTc5LDYgQEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1fZ3JhcGgsIG5v
ZGUsIHZlcmlmeUVkZ2UpOwogfQogCi1lbnVtIGNsYXNzIFRvVGhpc1Jlc3VsdCB7Ci0gICAgSWRl
bnRpdHksCi0gICAgVW5kZWZpbmVkLAotICAgIEdsb2JhbFRoaXMsCi0gICAgRHluYW1pYywKLX07
Ci1pbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYgdm0sIEVDTUFNb2Rl
IGVjbWFNb2RlLCBBYnN0cmFjdFZhbHVlJiB2YWx1ZUZvck5vZGUpCi17Ci0gICAgLy8gV2UgbG9v
ayBhdCB0aGUgdHlwZSBmaXJzdCBzaW5jZSB0aGF0IHdpbGwgY292ZXIgbW9zdCBjYXNlcyBhbmQg
ZG9lcyBub3QgcmVxdWlyZSBpdGVyYXRpbmcgYWxsIHRoZSBzdHJ1Y3R1cmVzLgotICAgIGlmIChl
Y21hTW9kZS5pc1N0cmljdCgpKSB7Ci0gICAgICAgIGlmICh2YWx1ZUZvck5vZGUubV90eXBlICYm
ICEodmFsdWVGb3JOb2RlLm1fdHlwZSAmIFNwZWNPYmplY3RPdGhlcikpCi0gICAgICAgICAgICBy
ZXR1cm4gVG9UaGlzUmVzdWx0OjpJZGVudGl0eTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAo
dmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiAoflNwZWNPYmpl
Y3QgfCBTcGVjT2JqZWN0T3RoZXIpKSkKLSAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6
OklkZW50aXR5OwotICAgIH0KLQotICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gdmFsdWVGb3JOb2Rl
LnZhbHVlKCkpIHsKLSAgICAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKSB7Ci0gICAgICAgICAgICBh
dXRvKiB0b1RoaXNNZXRob2QgPSB2YWx1ZS5hc0NlbGwoKS0+Y2xhc3NJbmZvKHZtKS0+bWV0aG9k
VGFibGUudG9UaGlzOwotICAgICAgICAgICAgaWYgKHRvVGhpc01ldGhvZCA9PSAmSlNPYmplY3Q6
OnRvVGhpcykKLSAgICAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpJZGVudGl0eTsK
LSAgICAgICAgICAgIGlmICh0b1RoaXNNZXRob2QgPT0gJkpTU2NvcGU6OnRvVGhpcykgewotICAg
ICAgICAgICAgICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gVG9UaGlzUmVzdWx0OjpVbmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IFRvVGhpc1Jlc3VsdDo6R2xvYmFsVGhpczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLQotICAgIGlmICgoZWNtYU1vZGUuaXNTdHJpY3QoKSB8fCAodmFsdWVGb3JOb2RlLm1fdHlw
ZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpKSAmJiB2YWx1ZUZvck5v
ZGUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewotICAgICAgICBib29sIGFsbFN0cnVjdHVyZXNB
cmVKU1Njb3BlID0gIXZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5pc0NsZWFyKCk7Ci0gICAgICAg
IGJvb2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7Ci0gICAgICAgIHZhbHVlRm9yTm9kZS5tX3N0
cnVjdHVyZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewotICAg
ICAgICAgICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKLSAgICAgICAg
ICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5nVHlwZSB8
fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEhlYXBCaWdJbnRU
eXBlKTsKLSAgICAgICAgICAgIGlmICghZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgICAg
ICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsKLSAgICAgICAgICAgIC8vIFdlIGRvbid0IG5l
ZWQgdG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1ib2xzIGhlcmUgc2luY2UgZWl0aGVyOgotICAg
ICAgICAgICAgLy8gMSkgV2UgYXJlIGluIHN0cmljdCBtb2RlIGFuZCBzdHJpbmdzL3N5bWJvbHMg
YXJlIG5vdCB3cmFwcGVkCi0gICAgICAgICAgICAvLyAyKSBUaGUgQUkgaGFzIHByb3ZlbiB0aGF0
IHRoZSB0eXBlIG9mIHRoaXMgaXMgYSBzdWJ0eXBlIG9mIG9iamVjdAotICAgICAgICAgICAgaWYg
KHR5cGUuaXNPYmplY3QoKSAmJiB0eXBlLm92ZXJyaWRlc1RvVGhpcygpKQotICAgICAgICAgICAg
ICAgIG92ZXJyaWRlc1RvVGhpcyA9IHRydWU7Ci0KLSAgICAgICAgICAgIC8vIElmIGFsbCB0aGUg
c3RydWN0dXJlcyBhcmUgSlNTY29wZSdzIG9uZXMsIHdlIGtub3cgdGhlIGRldGFpbHMgb2YgSlNT
Y29wZTo6dG9UaGlzKCkgb3BlcmF0aW9uLgotICAgICAgICAgICAgYWxsU3RydWN0dXJlc0FyZUpT
U2NvcGUgJj0gc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUudG9UaGlzID09IEpT
U2NvcGU6OmluZm8oKS0+bWV0aG9kVGFibGUudG9UaGlzOwotICAgICAgICB9KTsKLSAgICAgICAg
aWYgKCFvdmVycmlkZXNUb1RoaXMpCi0gICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpJ
ZGVudGl0eTsKLSAgICAgICAgaWYgKGFsbFN0cnVjdHVyZXNBcmVKU1Njb3BlKSB7Ci0gICAgICAg
ICAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gVG9U
aGlzUmVzdWx0OjpVbmRlZmluZWQ7Ci0gICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpH
bG9iYWxUaGlzOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6
RHluYW1pYzsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CiBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpoYW5kbGVDb25zdGFudEJp
bmFyeUJpdHdpc2VPcChOb2RlKiBub2RlKQogewpAQCAtMjk3MiwzMSArMjkxMywyMiBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAKICAgICBj
YXNlIFRvVGhpczogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24gPSBmb3JO
b2RlKG5vZGUpOwotICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG5vZGUtPmVjbWFNb2RlKCk7
CiAKLSAgICAgICAgVG9UaGlzUmVzdWx0IHJlc3VsdCA9IGlzVG9UaGlzQW5JZGVudGl0eShtX3Zt
LCBlY21hTW9kZSwgc291cmNlKTsKLSAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKLSAgICAgICAg
Y2FzZSBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OgorICAgICAgICBpZiAoIShzb3VyY2UubV90eXBl
ICYgflNwZWNPYmplY3QpKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnNldFNob3VsZFRyeUNvbnN0
YW50Rm9sZGluZyh0cnVlKTsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gc291cmNlOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVG9UaGlzUmVzdWx0OjpVbmRlZmluZWQ6Ci0g
ICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAg
IGRpZEZvbGRDbG9iYmVyV29ybGQoKTsKKyAgICAgICAgICAgIHNldEZvck5vZGUobm9kZSwgc291
cmNlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRvVGhpc1Jlc3VsdDo6R2xv
YmFsVGhpczoKKyAgICAgICAgfQorCisgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNP
YmplY3QpOworCisgICAgICAgIGlmICghKHNvdXJjZS5tX3R5cGUgJiB+U3BlY090aGVyKSkgewog
ICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7Ci0g
ICAgICAgICAgICBkZXN0aW5hdGlvbi5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3QpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVG9UaGlzUmVzdWx0OjpEeW5hbWljOgotICAg
ICAgICAgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCi0gICAgICAgICAgICAgICAgZGVzdGlu
YXRpb24ubWFrZUhlYXBUb3AoKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
IGRlc3RpbmF0aW9uID0gc291cmNlOwotICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLm1lcmdl
KFNwZWNPYmplY3QpOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KKworICAgICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBA
IC0zMzE1LDYgKzMyNDcsMTMgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeQogICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjT2JqZWN0T3RoZXIpOwogICAg
ICAgICBicmVhazsKIAorICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDoKKyAgICAgICAgaWYg
KEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpKQorICAgICAg
ICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hpbGQuaW5oZXJpdHM8SlNTY29wZT4obV92bSkgPyBq
c1VuZGVmaW5lZCgpIDogY2hpbGQpOworCisgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNw
ZWNPYmplY3QgfCBTcGVjT3RoZXIpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgU2tpcFNj
b3BlOiB7CiAgICAgICAgIGlmIChKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkudmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKEpTU2NvcGUqIHNjb3BlID0ganNEeW5hbWlj
Q2FzdDxKU1Njb3BlKj4obV92bSwgY2hpbGQpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU0MDksMjUgKzU0MDksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX3Rv
X3RoaXM6IHsKLSAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldFRoaXMoKTsKLSAgICAgICAgICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpOwotICAg
ICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwot
ICAgICAgICAgICAgU3RydWN0dXJlSUQgY2FjaGVkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX2Nh
Y2hlZFN0cnVjdHVyZUlEOwotICAgICAgICAgICAgU3RydWN0dXJlKiBjYWNoZWRTdHJ1Y3R1cmUg
PSBudWxscHRyOwotICAgICAgICAgICAgaWYgKGNhY2hlZFN0cnVjdHVyZUlEKQotICAgICAgICAg
ICAgICAgIGNhY2hlZFN0cnVjdHVyZSA9IG1fdm0tPmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdl
dChjYWNoZWRTdHJ1Y3R1cmVJRCk7Ci0gICAgICAgICAgICBpZiAobWV0YWRhdGEubV90b1RoaXNT
dGF0dXMgIT0gVG9UaGlzT0sKLSAgICAgICAgICAgICAgICB8fCAhY2FjaGVkU3RydWN0dXJlCi0g
ICAgICAgICAgICAgICAgfHwgY2FjaGVkU3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFi
bGUudG9UaGlzICE9IEpTT2JqZWN0OjppbmZvKCktPm1ldGhvZFRhYmxlLnRvVGhpcwotICAgICAg
ICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKQotICAgICAgICAgICAgICAgIHx8IChvcDEtPm9wKCkg
PT0gR2V0TG9jYWwgJiYgb3AxLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c3RydWN0dXJlQ2hlY2tI
b2lzdGluZ0ZhaWxlZCgpKSkgewotICAgICAgICAgICAgICAgIHNldFRoaXMoYWRkVG9HcmFwaChU
b1RoaXMsIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgT3BJbmZvKGdldFByZWRpY3Rpb24o
KSksIG9wMSkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKAotICAgICAgICAgICAgICAgICAgICBDaGVja1N0cnVjdHVyZSwKLSAgICAgICAgICAgICAg
ICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGNhY2hlZFN0cnVjdHVyZSkpLAot
ICAgICAgICAgICAgICAgICAgICBvcDEpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgc2V0
VGhpcyhhZGRUb0dyYXBoKFRvVGhpcywgT3BJbmZvKGdldFByZWRpY3Rpb24oKSksIGdldFRoaXMo
KSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfdG9fdGhpcyk7CiAgICAgICAgIH0KIApA
QCAtNzc0Miw3ICs3NzI0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZAogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMuc3RhdGUoKSAhPSBHZXRCeVN0YXR1czo6
U2ltcGxlCiAgICAgICAgICAgICAgICAgICAgIHx8IHN0YXR1cy5udW1WYXJpYW50cygpICE9IDEK
ICAgICAgICAgICAgICAgICAgICAgfHwgc3RhdHVzWzBdLnN0cnVjdHVyZVNldCgpLnNpemUoKSAh
PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFw
aChHZXRCeUlkRmx1c2gsIE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRl
bnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LCB1aWQpKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBnZXQoYnl0ZWNvZGUubV9zY29wZSkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEdldEJ5SWRG
bHVzaCwgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3du
ZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBP
cEluZm8ocHJlZGljdGlvbiksIHdlYWtKU0NvbnN0YW50KGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhp
cygpKSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAK
QEAgLTc4NjYsNiArNzg0OCwxMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfZnJvbV9zY29wZSk7CiAgICAg
ICAgIH0KIAorICAgICAgICBjYXNlIG9wX2dldF90aGlzX3ZhbHVlX2Zvcl9jYWxsOiB7CisgICAg
ICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdldFRoaXNW
YWx1ZUZvckNhbGw+KCk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3Jh
cGgoR2V0VGhpc1ZhbHVlRm9yQ2FsbCwgZ2V0KGJ5dGVjb2RlLm1fc2NvcGUpKSk7CisgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9nZXRfdGhpc192YWx1ZV9mb3JfY2FsbCk7CisgICAgICAgIH0K
KwogICAgICAgICBjYXNlIG9wX3B1dF90b19zY29wZTogewogICAgICAgICAgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRUb1Njb3BlPigpOwogICAgICAgICAg
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwpAQCAtNzkx
Nyw3ICs3OTA1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICAgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSAhPSAxCiAgICAgICAgICAg
ICAgICAgICAgIHx8IHN0YXR1c1swXS5raW5kKCkgIT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UK
ICAgICAgICAgICAgICAgICAgICAgfHwgc3RhdHVzWzBdLnN0cnVjdHVyZSgpLnNpemUoKSAhPSAx
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZCwgT3BJbmZvKENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBPcEluZm8oYnl0ZWNvZGUubV9n
ZXRQdXRJbmZvLmVjbWFNb2RlKCkpLCBnZXQoYnl0ZWNvZGUubV9zY29wZSksIGdldChieXRlY29k
ZS5tX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZCwgT3BJ
bmZvKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVC
bG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBPcEluZm8oYnl0
ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpLCB3ZWFrSlNDb25zdGFudChnbG9iYWxPYmpl
Y3QtPmdsb2JhbFRoaXMoKSksIGdldChieXRlY29kZS5tX3ZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBOb2RlKiBi
YXNlID0gd2Vha0pTQ29uc3RhbnQoZ2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjU0LDYgKzI1NCw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwo
T3Bjb2RlSUQKICAgICBjYXNlIG9wX2hhc19wcml2YXRlX2JyYW5kOgogICAgIGNhc2Ugb3BfZ2V0
X3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6CisgICAgY2FzZSBvcF9nZXRfdGhp
c192YWx1ZV9mb3JfY2FsbDoKICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDoKICAg
ICBjYXNlIG9wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHk6CiAgICAgY2FzZSBvcF9o
YXNfZW51bWVyYWJsZV9zdHJ1Y3R1cmVfcHJvcGVydHk6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOCw2
ICsyMTgsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAg
Y2FzZSBBcml0aE1heDoKICAgICBjYXNlIEFyaXRoUG93OgogICAgIGNhc2UgR2V0U2NvcGU6Cisg
ICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxsOgogICAgIGNhc2UgU2tpcFNjb3BlOgogICAgIGNh
c2UgR2V0R2xvYmFsT2JqZWN0OgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKQEAgLTU5MSwx
MiArNTkyLDYgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAg
ICAgICB3cml0ZShIZWFwT2JqZWN0Q291bnQpOwogICAgICAgICByZXR1cm47CiAKLSAgICBjYXNl
IFRvVGhpczoKLSAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKLSAgICAgICAgcmVhZChIZWFwT2Jq
ZWN0Q291bnQpOwotICAgICAgICB3cml0ZShIZWFwT2JqZWN0Q291bnQpOwotICAgICAgICByZXR1
cm47Ci0KICAgICBjYXNlIFR5cGVPZklzT2JqZWN0OgogICAgICAgICByZWFkKE1pc2NGaWVsZHMp
OwogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVPZklzT2JqZWN0TG9jLCBNaXNjRmllbGRz
LCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKQEAgLTcxNiw2ICs3MTEsNyBAQCB2
b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBSZXNvbHZl
U2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOgogICAgIGNhc2UgUmVzb2x2ZVNjb3BlOgog
ICAgIGNhc2UgVG9PYmplY3Q6CisgICAgY2FzZSBUb1RoaXM6CiAgICAgY2FzZSBIYXNFbnVtZXJh
YmxlU3RydWN0dXJlUHJvcGVydHk6CiAgICAgY2FzZSBIYXNFbnVtZXJhYmxlUHJvcGVydHk6CiAg
ICAgY2FzZSBIYXNPd25TdHJ1Y3R1cmVQcm9wZXJ0eToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lv
biAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE0LDEzICs3MTQsMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY2FzZSBUb1RoaXM6IHsKLSAgICAgICAgICAg
ICAgICBUb1RoaXNSZXN1bHQgcmVzdWx0ID0gaXNUb1RoaXNBbklkZW50aXR5KG1fZ3JhcGgubV92
bSwgbm9kZS0+ZWNtYU1vZGUoKSwgbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBUb1RoaXNSZXN1bHQ6OklkZW50aXR5KSB7Cisg
ICAgICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGlmICghKHZhbHVlLm1fdHlwZSAmIH5TcGVj
T2JqZWN0KSkgewogICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgp
OwogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQg
PT0gVG9UaGlzUmVzdWx0OjpHbG9iYWxUaGlzKSB7CisgICAgICAgICAgICAgICAgaWYgKCEodmFs
dWUubV90eXBlICYgflNwZWNPdGhlcikpIHsKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29u
dmVydFRvR2V0R2xvYmFsVGhpcygpOwogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOSw2ICsxMTksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja0Fy
cmF5T3JFbXB0eToKICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6CiAgICAgY2FzZSBHZXRTY29wZToK
KyAgICBjYXNlIEdldFRoaXNWYWx1ZUZvckNhbGw6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAg
Y2FzZSBHZXRHbG9iYWxPYmplY3Q6CiAgICAgY2FzZSBHZXRHbG9iYWxUaGlzOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyNzgx
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODA2LDYgKzE4MDYsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGNhc2Ug
U2tpcFNjb3BlOgogICAgICAgICBjYXNlIEdldFNjb3BlOgorICAgICAgICBjYXNlIEdldFRoaXNW
YWx1ZUZvckNhbGw6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgogICAgICAgICBjYXNlIEdldFNl
dHRlcjoKICAgICAgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6IHsKQEAgLTMxNDQsOTYgKzMxNDUs
MTggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZml4dXBUb1RoaXMoTm9kZSogbm9kZSkKICAgICB7
Ci0gICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgp
OwotCi0gICAgICAgIGlmIChpc1N0cmljdE1vZGUpIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQm9vbGVhbigpKSB7Ci0gICAgICAgICAgICAgICAgZml4
RWRnZTxCb29sZWFuVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+
Y29udmVydFRvSWRlbnRpdHkoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50
MzIoKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRn
ZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIG5vZGUtPmNv
bnZlcnRUb0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVS
ZXN1bHRJbnQ1Mik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAg
ICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlU3ltYm9sKCkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFN5bWJv
bFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lk
ZW50aXR5KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkp
IHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBmaXhF
ZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIG5vZGUtPmNv
bnZlcnRUb0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNw
ZWN1bGF0ZUJpZ0ludCgpKSB7Ci0jaWYgVVNFKEJJR0lOVDMyKQotICAgICAgICAgICAgICAgIGlm
IChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkKLSAgICAgICAgICAg
ICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50
KCkpCi0gICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAg
Zml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0jZW5kaWYKLSAgICAgICAg
ICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlT3RoZXIoKSkgewotICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9k
ZSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8T3RoZXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIENo
ZWNrLCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAgICAgRWRnZShub2RlLT5jaGlsZDEoKS5u
b2RlKCksIE90aGVyVXNlKSk7CiAgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9kZTxPdGhl
clVzZT4obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIG1fZ3JhcGguY29udmVy
dFRvQ29uc3RhbnQoCi0gICAgICAgICAgICAgICAgbm9kZSwgbV9ncmFwaC5nbG9iYWxUaGlzT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpOworICAgICAgICAgICAgICAgIG5vZGUsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdsb2JhbFRoaXMo
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgY292ZXIgb3RoZXIgdXNlIGNhc2VzIGJ1dCB3ZSBkb24ndCBoYXZlIHVzZSBr
aW5kcyBmb3IgdGhlbS4gSXQncyBub3QgY3JpdGljYWwsCi0gICAgICAgIC8vIGhvd2V2ZXIsIHNp
bmNlIHdlIGNvdmVyIGFsbCB0aGUgbWlzc2luZyBjYXNlcyBpbiBjb25zdGFudCBmb2xkaW5nLgot
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MjEz
Ci0gICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nT2JqZWN0
KCkpIHsKLSAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nT2JqZWN0VXNlPihub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzRmluYWxPYmplY3RTcGVjdWxhdGlv
bihub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpKSkgewotICAgICAgICAgICAgZml4RWRnZTxG
aW5hbE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpKSB7CisgICAgICAgICAgICBmaXhFZGdlPE9iamVj
dFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRp
dHkoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzAsMTIgKzQ3MCw2IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbik7CiAgICAgfQogICAgIAotICAgIEpTT2JqZWN0KiBnbG9iYWxUaGlzT2JqZWN0Rm9y
KENvZGVPcmlnaW4gY29kZU9yaWdpbikKLSAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBv
YmplY3QgPSBnbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbik7Ci0gICAgICAgIHJldHVybiBqc0Nh
c3Q8SlNPYmplY3QqPihvYmplY3QtPm1ldGhvZFRhYmxlKG1fdm0pLT50b1RoaXMob2JqZWN0LCBv
YmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpOwotICAgIH0KLSAgICAKICAgICBTY3JpcHRFeGVj
dXRhYmxlKiBleGVjdXRhYmxlRm9yKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQog
ICAgIHsKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYg
Kzc5LDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNh
c2UgU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CiAgICAgY2FzZSBHZXRSZXN0TGVuZ3Ro
OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxsOgogICAg
IGNhc2UgUGhhbnRvbUxvY2FsOgogICAgIGNhc2UgQ291bnRFeGVjdXRpb246CiAgICAgY2FzZSBT
dXBlclNhbXBsZXJCZWdpbjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShy
ZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMjI2NCw3ICsyMjY0LDYgQEAgcHVibGljOgogICAgICAgICBjYXNl
IFB1dEJ5VmFsRGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgICAg
IGNhc2UgUHV0RHluYW1pY1ZhcjoKLSAgICAgICAgY2FzZSBUb1RoaXM6CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTIyNzgsNyArMjI3Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBDYWxsRXZhbDoKICAg
ICAgICAgY2FzZSBEZWxldGVCeVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgot
ICAgICAgICBjYXNlIFRvVGhpczoKICAgICAgICAgICAgIHJldHVybiBFQ01BTW9kZTo6ZnJvbUJ5
dGUobV9vcEluZm8uYXM8dWludDhfdD4oKSk7CiAgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKICAg
ICAgICAgY2FzZSBQdXRCeUlkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsNiArMjc1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEdldEdsb2JhbExleGljYWxWYXJpYWJs
ZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0R2xvYmFsVmFyaWFibGUsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXREeW5hbWljVmFyLCBOb2RlUmVzdWx0SlMgfCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0VGhpc1ZhbHVlRm9yQ2FsbCwgTm9kZVJlc3Vs
dEpTKSBcCiAgICAgbWFjcm8oUHV0RHluYW1pY1ZhciwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKE5vdGlmeVdyaXRlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0UmVn
RXhwT2JqZWN0TGFzdEluZGV4LCBOb2RlUmVzdWx0SlMpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjE3LDI0ICsyMTcsNiBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdldEJ5VmFs
T2JqCiAgICAgcmV0dXJuIGJhc2UtPmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSk7CiB9
CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Ub1RoaXMsIEVuY29kZWRKU1Zh
bHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wKSkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLQotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2Jh
bE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSk7Ci19Ci0KLUpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25Ub1RoaXNTdHJpY3QsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKSkKLXsKLSAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwotICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6
OnN0cmljdCgpKSk7Ci19Ci0KIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25PYmpl
Y3RLZXlzLCBKU0FycmF5KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPYmplY3QpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKQEAgLTMxODEsNyArMzE2Myw4IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25HZXREeW4KICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpbXBsKTsK
LSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNjb3Bl
LT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgWyZdIChib29sIGZvdW5kLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgeworICAgIFByb3BlcnR5U2xvdCBzbG90KHNj
b3BlLT50b1B1YmxpY1RoaXNWYWx1ZSgpLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6R2V0KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHNjb3BlLT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCwgWyZd
IChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmKSAtPiBKU1ZhbHVlIHsKICAgICAgICAgaWYgKCFm
b3VuZCkgewogICAgICAgICAgICAgR2V0UHV0SW5mbyBnZXRQdXRJbmZvKGdldFB1dEluZm9CaXRz
KTsKICAgICAgICAgICAgIGlmIChnZXRQdXRJbmZvLnJlc29sdmVNb2RlKCkgPT0gVGhyb3dJZk5v
dEZvdW5kKQpAQCAtMzIyOCw3ICszMjExLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBw
dXREeW5hbWljVmFyKAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUHV0UHJvcGVydHlT
bG90IHNsb3Qoc2NvcGUsIGlzU3RyaWN0TW9kZSwgUHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29u
dGV4dCwgaXNJbml0aWFsaXphdGlvbihnZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7
CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUtPnRvUHVibGljVGhpc1ZhbHVlKCksIGlz
U3RyaWN0TW9kZSwgUHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXph
dGlvbihnZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7CiAgICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7CiAgICAgc2NvcGUtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHNjb3BlLCBnbG9iYWxP
YmplY3QsIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLCBzbG90KTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyNzgxNTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBj
b3B5KQpAQCAtNTgsOCArNTgsNiBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkNyZWF0CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUludGVybmFs
UHJvbWlzZSwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGNvbnN0cnVjdG9y
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUdlbmVyYXRvciwg
SlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGNvbnN0cnVjdG9yKSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUFzeW5jR2VuZXJhdG9yLCBKU0Nl
bGwqLCAoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogY29uc3RydWN0b3IpKTsKLUpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVG9UaGlzLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkpOwotSlNDX0RFQ0xBUkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25Ub1RoaXNTdHJpY3QsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9i
YWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSk7CiBKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblZhbHVlTW9kLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25WYWx1ZUJpdE5vdCwgRW5j
b2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEp
KTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVmFsdWVCaXRBbmQsIEVuY29k
ZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNyw3MSArNTI3LDEz
IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFRvVGhp
czogewotICAgICAgICAgICAgLy8gVG9UaGlzIGluIG1ldGhvZHMgZm9yIHByaW1pdGl2ZSB0eXBl
cyBzaG91bGQgc3BlY3VsYXRlIHByaW1pdGl2ZSB0eXBlcyBpbiBzdHJpY3QgbW9kZS4KLSAgICAg
ICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpOwot
ICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkgewotICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQm9vbGVhbigpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCb29sZWFuKTsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDUyKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDUyQW55KTsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkgewotICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjQnl0ZWNvZGVO
dW1iZXIpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN5bWJv
bCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNw
ZWNTeW1ib2wpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
Ci0KLSNpZiBVU0UoQklHSU5UMzIpCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LT5zaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCaWdJbnQzMik7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmlnSW50KCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0hlYXBCaWdJbnQpOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCaWdJbnQp
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3Bl
Y1N0cmluZ0lkZW50KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVTdHJpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGlj
dGlvbihTcGVjU3RyaW5nKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTdHJpbmdPYmplY3QpOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKSB7CisgICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N0cmluZ09iamVjdCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24gPSBub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpOwotICAgICAgICAgICAg
aWYgKGlzU3RyaWN0TW9kZSkKLSAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGlj
dGlvbihub2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHBy
ZWRpY3Rpb24pIHsKKyAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uKSB7CiAgICAgICAgICAgICAg
ICAgU3BlY3VsYXRlZFR5cGUgb3JpZ2luYWxQcmVkaWN0aW9uID0gcHJlZGljdGlvbjsKICAgICAg
ICAgICAgICAgICBpZiAocHJlZGljdGlvbiAmIH5TcGVjT2JqZWN0KSB7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIFdyYXBwZXIgb2JqZWN0cyBhcmUgY3JlYXRlZCBvbmx5IGluIHNsb3BweSBtb2Rl
LgpAQCAtMTIwNCw2ICsxMTQ2LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzZXRQcmVkaWN0
aW9uKFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNl
IEdldFRoaXNWYWx1ZUZvckNhbGw6IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY09i
amVjdCB8IFNwZWNPdGhlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAg
ICBjYXNlIEdldEVudW1lcmFibGVMZW5ndGg6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24o
U3BlY0ludDMyT25seSk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyNzgxNTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMyLDYgKzIzMiw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlw
ZSYgc3QKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBDaGVja0FycmF5T3JFbXB0eToK
ICAgICBjYXNlIEdldFNjb3BlOgorICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDoKICAgICBj
YXNlIFNraXBTY29wZToKICAgICBjYXNlIEdldEdsb2JhbE9iamVjdDoKICAgICBjYXNlIEdldEds
b2JhbFRoaXM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQyMjAsNiArNDIyMCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9y
Q2FsbDogeworICAgICAgICBjb21waWxlR2V0VGhpc1ZhbHVlRm9yQ2FsbChub2RlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNE
ZWNsSW5FdmFsOiB7CiAgICAgICAgIGNvbXBpbGVSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNE
ZWNsSW5FdmFsKG5vZGUpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjc4MTU5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDI1OSw2ICs0MjU5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdldER5bmFtaWNWYXIobm9kZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDog
eworICAgICAgICBjb21waWxlR2V0VGhpc1ZhbHVlRm9yQ2FsbChub2RlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQogICAgIAogICAgIGNhc2UgUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVj
bEluRXZhbDogewogICAgICAgICBjb21waWxlUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVj
bEluRXZhbChub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxMjQs
NiArMTIxMjQsMjUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldER5bmFtaWNWYQog
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRUaGlzVmFsdWVGb3JDYWxsKE5vZGUqIG5vZGUpCit7CisgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlJl
ZyBzY29wZUdQUiA9IHNjb3BlLmdwcigpOworCisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOworICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwor
CisgICAgbV9qaXQubW92ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCByZXN1bHRSZWdzKTsK
KyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RXaXRoU2NvcGUgPSBtX2ppdC5icmFuY2hJZlR5
cGUoc2NvcGVHUFIsIEpTVHlwZVJhbmdlIHsgRmlyc3RKU1Njb3BlVHlwZSwgTGFzdEpTU2NvcGVU
eXBlIH0pOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHJlc3VsdFJlZ3MudGFnR1BSKCkpOworI2VuZGlmCisgICAg
bV9qaXQubW92ZShzY29wZUdQUiwgcmVzdWx0UmVncy5wYXlsb2FkR1BSKCkpOworICAgIG5vdFdp
dGhTY29wZS5saW5rKCZtX2ppdCk7CisKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5v
ZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0RHluYW1pY1ZhcihOb2Rl
KiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHNjb3BlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKQEAgLTEzNDU4LDI5ICsxMzQ3NywyNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlTmV3VHlwZWRBcnJhCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9UaGlzKE5v
ZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwotICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CiAKLSAgICBKU1ZhbHVlUmVncyB0aGlzVmFsdWVSZWdzID0gdGhpc1ZhbHVl
LmpzVmFsdWVSZWdzKCk7Ci0gICAgSlNWYWx1ZVJlZ3MgdGVtcFJlZ3MgPSB0ZW1wLnJlZ3MoKTsK
KyAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9
IHRoaXNWYWx1ZS5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlUmVn
cy5wYXlsb2FkR1BSKCk7CiAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9q
aXQuYnJhbmNoSWZOb3RDZWxsKHZhbHVlUmVncyk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0IHNsb3dDYXNlczsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2Vs
bCh0aGlzVmFsdWVSZWdzKSk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZCgKLSAgICAgICAgbV9qaXQu
YnJhbmNoVGVzdDgoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywKLSAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNWYWx1ZVJlZ3MucGF5bG9hZEdQUigp
LCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksCi0gICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKE92ZXJyaWRlc1RvVGhpcykpKTsKLSAgICBtX2ppdC5tb3ZlVmFs
dWVSZWdzKHRoaXNWYWx1ZVJlZ3MsIHRlbXBSZWdzKTsKLQotICAgIEpfSklUT3BlcmF0aW9uX0dK
IGZ1bmN0aW9uOwotICAgIGlmIChub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCi0gICAgICAg
IGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzU3RyaWN0OwotICAgIGVsc2UKLSAgICAgICAgZnVu
Y3Rpb24gPSBvcGVyYXRpb25Ub1RoaXM7Ci0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGhDYWxsKHNsb3dDYXNlcywgdGhpcywgZnVuY3Rpb24sIHRlbXBSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgdGhpc1ZhbHVlUmVncykpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoSWZOb3RPYmplY3QodmFsdWVHUFIpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBkb25lID0gbV9qaXQuanVtcCgpOwogCi0gICAganNWYWx1ZVJlc3VsdCh0ZW1wUmVncywgbm9k
ZSk7CisgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2pp
dC5icmFuY2hJZk5vdE90aGVyKHZhbHVlUmVncywgc2NyYXRjaC5ncHIoKSkpOworICAgIG1faml0
LmxvYWRQdHIoZ2xvYmFsT2JqZWN0LT5hZGRyZXNzT2ZHbG9iYWxUaGlzKCksIHZhbHVlR1BSKTsK
KworICAgIGRvbmUubGluaygmbV9qaXQpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQ
YXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblRvT2JqZWN0LCB2YWx1ZUdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgdmFsdWVSZWdz
LCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKSk7CisgICAgY2VsbFJlc3VsdCh2YWx1ZUdQUiwgbm9k
ZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RLZXlzT3JPYmplY3RH
ZXRPd25Qcm9wZXJ0eU5hbWVzKE5vZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0NTIsNiArMTQ1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVHZXRHbG9iYWxW
YXJpYWJsZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUHV0R2xvYmFsVmFyaWFibGUoTm9kZSop
OwogICAgIHZvaWQgY29tcGlsZUdldER5bmFtaWNWYXIoTm9kZSopOworICAgIHZvaWQgY29tcGls
ZUdldFRoaXNWYWx1ZUZvckNhbGwoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVB1dER5bmFtaWNW
YXIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldENsb3N1cmVWYXIoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZVB1dENsb3N1cmVWYXIoTm9kZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNTIsNiArMzUyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5v
ZGUqIAogICAgIGNhc2UgUmVzb2x2ZVNjb3BlOgogICAgIGNhc2UgUmVzb2x2ZVNjb3BlRm9ySG9p
c3RpbmdGdW5jRGVjbEluRXZhbDoKICAgICBjYXNlIEdldER5bmFtaWNWYXI6CisgICAgY2FzZSBH
ZXRUaGlzVmFsdWVGb3JDYWxsOgogICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKICAgICBjYXNlIENv
bXBhcmVFcToKICAgICBjYXNlIENvbXBhcmVFcVB0cjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTYyMSw2ICsxNjIxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXREeW5hbWlj
VmFyOgogICAgICAgICAgICAgY29tcGlsZUdldER5bmFtaWNWYXIoKTsKICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEdldFRoaXNWYWx1ZUZvckNhbGw6CisgICAgICAgICAgICBjb21w
aWxlR2V0VGhpc1ZhbHVlRm9yQ2FsbCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgUHV0RHluYW1pY1ZhcjoKICAgICAgICAgICAgIGNvbXBpbGVQdXREeW5hbWljVmFyKCk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTIyMDksMzMgKzIyMTIsMjkgQEAgcHJpdmF0ZToKICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fb3JpZ2luLnNlbWFudGljKTsKIAogICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVkVHlwZSB2YWx1ZVR5cGUgPSBw
cm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxv
Y2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIG5v
dENlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nh
c2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24g
PSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAKLSAgICAgICAgbV9vdXQuYnJhbmNoKAotICAg
ICAgICAgICAgaXNDZWxsKHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1
YWxseShpc0NlbGxDYXNlKSwgcmFyZWx5KHNsb3dDYXNlKSk7Ci0gICAgICAgIAotICAgICAgICBM
QmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzQ2VsbENhc2UsIHNsb3dDYXNl
KTsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcih2YWx1
ZSk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgIG1fb3V0LnRlc3RJc1plcm8z
MigKLSAgICAgICAgICAgICAgICBtX291dC5sb2FkOFplcm9FeHQzMih2YWx1ZSwgbV9oZWFwcy5K
U0NlbGxfdHlwZUluZm9GbGFncyksCi0gICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihP
dmVycmlkZXNUb1RoaXMpKSwKLSAgICAgICAgICAgIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFy
ZWx5KHNsb3dDYXNlKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwodmFsdWUsIHZhbHVl
VHlwZSksIHVzdWFsbHkoaXNDZWxsQ2FzZSksIHJhcmVseShub3RDZWxsQ2FzZSkpOwogICAgICAg
ICAKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc0NlbGxD
YXNlLCBub3RDZWxsQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGlzT2JqZWN0UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKHZhbHVlKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzT2JqZWN0KHZh
bHVlLCB2YWx1ZVR5cGUpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbiksIHJhcmVseShzbG93Q2FzZSkp
OworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdENlbGxDYXNlLCBzbG93Q2FzZSk7CisgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIGlzT3RoZXJSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQubG9h
ZFB0cihtX291dC5hYnNvbHV0ZShnbG9iYWxPYmplY3QtPmFkZHJlc3NPZkdsb2JhbFRoaXMoKSkp
KTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzT3RoZXIodmFsdWUsIHZhbHVlVHlwZSksIHVzdWFs
bHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7CisKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIEpfSklUT3BlcmF0aW9uX0dK
IGZ1bmN0aW9uOwotICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkpCi0g
ICAgICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpc1N0cmljdDsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXM7Ci0gICAgICAgIFZhbHVl
RnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBmdW5jdGlv
biwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgdmFsdWUpKTsKKyAgICAgICAgVmFsdWVGcm9t
QmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG9wZXJhdGlvblRv
T2JqZWN0LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCB2YWx1ZSwgbV9vdXQuY29uc3RJbnRQ
dHIoMCkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7Ci0gICAgICAgIHNl
dEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAg
ICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBpc09iamVjdFJlc3VsdCwgaXNPdGhlclJl
c3VsdCwgc2xvd1Jlc3VsdCkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZVZhbHVlQWRkKCkK
QEAgLTE0NDAzLDYgKzE0NDAyLDI2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX291dC5jb25zdElu
dFB0cih1aWQpLCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+Z2V0UHV0SW5mbygpKSkpOwogICAg
IH0KIAorICAgIHZvaWQgY29tcGlsZUdldFRoaXNWYWx1ZUZvckNhbGwoKQorICAgIHsKKyAgICAg
ICAgTFZhbHVlIHNjb3BlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICBM
QmFzaWNCbG9jayB3aXRoU2NvcGVDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJh
c2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBWYWx1
ZUZyb21CbG9jayB1bmRlZmluZWRSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2
NChKU1ZhbHVlOjpWYWx1ZVVuZGVmaW5lZCkpOworICAgICAgICBtX291dC5icmFuY2goCisgICAg
ICAgICAgICBpc0NlbGxXaXRoVHlwZShzY29wZSwgSlNUeXBlUmFuZ2UgeyBGaXJzdEpTU2NvcGVU
eXBlLCBMYXN0SlNTY29wZVR5cGUgfSwgV1RGOjpudWxsb3B0LCBwcm92ZW5UeXBlKG1fbm9kZS0+
Y2hpbGQxKCkpKSwKKyAgICAgICAgICAgIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHdp
dGhTY29wZUNhc2UpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFw
cGVuZFRvKHdpdGhTY29wZUNhc2UsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJvbUJs
b2NrIHdpdGhTY29wZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihzY29wZSk7CisgICAgICAgIG1fb3V0
Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRp
b24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIHVuZGVm
aW5lZFJlc3VsdCwgd2l0aFNjb3BlUmVzdWx0KSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxl
UHV0RHluYW1pY1ZhcigpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIJKHJldmlzaW9uIDI3ODE1OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDIsNyArMTQyLDYgQEAgbW9kdWxlIERTTAogI2luY2x1ZGUgIlByaXZhdGVGaWVsZFB1dEtp
bmQuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdz
LmgiCi0jaW5jbHVkZSAiVG9UaGlzU3RhdHVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzNyw3ICsxMzcsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENv
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2Rl
OjpzbG9wcHkoKSkpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApLnRvU2xvcHB5TW9kZVRoaXMoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
anNTdHJpbmcodm0sIEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKG9iamVjdCkpOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0Niw2ICs2NDYsOCBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlUHJvZ3JhbShjb25zCiB7CiAgICAgSlNTY29w
ZSogc2NvcGUgPSB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsU2NvcGUoKTsKICAgICBW
TSYgdm0gPSBzY29wZS0+dm0oKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIXRo
aXNPYmotPmluaGVyaXRzPEpTU2NvcGU+KHZtKSwgInRoaXNWYWx1ZSBzaG91bGRuJ3QgYmUgSlNT
Y29wZSIpOworCiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjb3BlLT5nbG9iYWxPYmplY3Qo
dm0pOwogICAgIEpTQ2FsbGVlKiBnbG9iYWxDYWxsZWUgPSBnbG9iYWxPYmplY3QtPmdsb2JhbENh
bGxlZSgpOwpAQCAtODQyLDYgKzg0NCw4IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVD
YWxsKEpTR2xvYmEKICAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCisgICAgUkVMRUFT
RV9BU1NFUlRfV0lUSF9NRVNTQUdFKCF0aGlzVmFsdWUuaW5oZXJpdHM8SlNTY29wZT4odm0pLCAi
dGhpc1ZhbHVlIHNob3VsZG4ndCBiZSBKU1Njb3BlIik7CisKICAgICBhdXRvIGNsb2JiZXJpemVW
YWxpZGF0b3IgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CiAgICAgICAgIHZtLmRpZEVudGVyVk0gPSB0
cnVlOwogICAgIH0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24g
Mjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NjIsNiArNDYyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogCiAgICAgICAgIERFRklORV9PUChvcF9yZXNvbHZlX3Njb3BlKQogICAgICAgICBERUZJTkVf
T1Aob3BfZ2V0X2Zyb21fc2NvcGUpCisgICAgICAgIERFRklORV9PUChvcF9nZXRfdGhpc192YWx1
ZV9mb3JfY2FsbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF90b19zY29wZSkKICAgICAgICAg
REVGSU5FX09QKG9wX2dldF9mcm9tX2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX09QKG9wX3B1
dF90b19hcmd1bWVudHMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDI3
ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTcyOCw2ICs3MjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGVtaXRf
b3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfZ2V0X2Zyb21fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX2dldF90aGlzX3ZhbHVlX2Zvcl9jYWxsKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9wdXRfdG9fc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50cyhjb25zdCBJbnN0cnVjdGlvbiopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAko
cmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTE3LDIyICsxMTE3LDYgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSW5zdAogICAgIGVtaXRTdG9yZUNlbGwoYnl0ZWNv
ZGUubV9kc3QsIHJlc3VsdFJlZyk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBhdXRvIGJ5dGVjb2Rl
ID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvVGhpcz4oKTsKLSAgICBhdXRvJiBtZXRhZGF0
YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBTdHJ1Y3R1cmVJRCogY2Fj
aGVkU3RydWN0dXJlSUQgPSAmbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRDsKLSAgICBWaXJ0
dWFsUmVnaXN0ZXIgdGhpc1JlZ2lzdGVyID0gYnl0ZWNvZGUubV9zcmNEc3Q7Ci0KLSAgICBlbWl0
TG9hZCh0aGlzUmVnaXN0ZXIsIHJlZ1QzLCByZWdUMik7Ci0KLSAgICBhZGRTbG93Q2FzZShicmFu
Y2hJZk5vdENlbGwocmVnVDMpKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdFR5cGUocmVn
VDIsIEZpbmFsT2JqZWN0VHlwZSkpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOwotICAgIGxvYWQzMihjYWNoZWRTdHJ1Y3R1
cmVJRCwgcmVnVDIpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDAs
IHJlZ1QyKSk7Ci19Ci0KIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX3Rkeihjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50
SW5zdHJ1Y3Rpb24tPmFzPE9wQ2hlY2tUZHo+KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOTUsMjAgKzEy
OTUsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGUoY29uc3QgSW5zdHJ1CiAgICAgZW1p
dFN0b3JlQ2VsbChkc3QsIHJlZ1QwKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpOwotICAgIGF1dG8mIG1ldGFk
YXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIFN0cnVjdHVyZUlEKiBj
YWNoZWRTdHJ1Y3R1cmVJRCA9ICZtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEOwotICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9zcmNEc3QsIHJlZ1QxKTsKLQotICAgIGVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSk7Ci0KLSAgICBhZGRTbG93Q2FzZShicmFu
Y2hJZk5vdFR5cGUocmVnVDEsIEZpbmFsT2JqZWN0VHlwZSkpOwotICAgIGxvYWQzMihjYWNoZWRT
dHJ1Y3R1cmVJRCwgcmVnVDIpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBB
ZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMikpOwotfQot
CiB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wQ3JlYXRlVGhpcz4oKTsKQEAgLTIwOTMsNiArMjA3OSw0NCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfcHJvdG90eXBlX29mKGNvbnN0CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihi
eXRlY29kZS5tX2RzdCwgcmVzdWx0UmVncyk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2dldF90
aGlzX3ZhbHVlX2Zvcl9jYWxsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BHZXRUaGlz
VmFsdWVGb3JDYWxsPigpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgSlNWYWx1ZVJlZ3MgdmFs
dWVSZWdzKHJlZ1QwKTsKKyNlbHNlCisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzKHJlZ1QxLCBy
ZWdUMCk7CisjZW5kaWYKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fc2Nv
cGUsIHZhbHVlUmVncyk7CisKKyAgICBKdW1wIGlzV2l0aFNjb3BlID0gYnJhbmNoSWZOb3RUeXBl
KHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIEpTVHlwZVJhbmdlIHsgRmlyc3RKU1Njb3BlVHlwZSwg
TGFzdEpTU2NvcGVUeXBlIH0pOworICAgIG1vdmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwg
dmFsdWVSZWdzKTsKKyAgICBpc1dpdGhTY29wZS5saW5rKHRoaXMpOworCisgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdCwgdmFsdWVSZWdzKTsKK30KKwordm9pZCBKSVQ6
OmVtaXRfb3BfdG9fdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
eworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigp
OworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzKHJlZ1QwKTsK
KyNlbHNlCisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzKHJlZ1QxLCByZWdUMCk7CisjZW5kaWYK
KyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fc3JjRHN0LCB2YWx1ZVJlZ3Mp
OworCisgICAgSnVtcCBub3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHZhbHVlUmVncyk7CisgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RPYmplY3QodmFsdWVSZWdzLnBheWxvYWRHUFIoKSkpOwor
ICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKworICAgIG5vdENlbGwubGluayh0aGlzKTsKKyAgICBh
ZGRTbG93Q2FzZShicmFuY2hJZk5vdE90aGVyKHZhbHVlUmVncywgcmVnVDMpKTsKKyAgICBzdG9y
ZVRydXN0ZWRWYWx1ZShtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFRoaXMoKSwg
YWRkcmVzc0ZvcihieXRlY29kZS5tX3NyY0RzdCkpOworCisgICAgZG9uZS5saW5rKHRoaXMpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI3
ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5NTYsNyArMjk1Niw4IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25HZXRGcm8KICAgICAvLyBNb2R1bGVWYXIgaXMgYWx3YXlzIGNvbnZlcnRlZCB0
byBDbG9zdXJlVmFyIGZvciBnZXRfZnJvbV9zY29wZS4KICAgICBBU1NFUlQoZ2V0UHV0SW5mby5y
ZXNvbHZlVHlwZSgpICE9IE1vZHVsZVZhcik7CiAKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNjb3BlLT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2Jq
ZWN0LCBpZGVudCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFs
dWUgeworICAgIFByb3BlcnR5U2xvdCBzbG90KHNjb3BlLT50b1B1YmxpY1RoaXNWYWx1ZSgpLCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNjb3BlLT5nZXRQcm9wZXJ0eVNsb3Qo
Z2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3Qm
KSAtPiBKU1ZhbHVlIHsKICAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAgaWYgKGdl
dFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQpCiAgICAgICAgICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVVbmRlZmlu
ZWRWYXJpYWJsZUVycm9yKGdsb2JhbE9iamVjdCwgaWRlbnQpKTsKQEAgLTMwMjcsNyArMzAyOCw3
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRUb1MKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHNjb3BlLCBnZXRQdXRJbmZv
LmVjbWFNb2RlKCkuaXNTdHJpY3QoKSwgUHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwg
aXNJbml0aWFsaXphdGlvbihnZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7CisgICAg
UHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUtPnRvUHVibGljVGhpc1ZhbHVlKCksIGdldFB1dElu
Zm8uZWNtYU1vZGUoKS5pc1N0cmljdCgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0
LCBpc0luaXRpYWxpemF0aW9uKGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKICAg
ICBzY29wZS0+bWV0aG9kVGFibGUodm0pLT5wdXQoc2NvcGUsIGdsb2JhbE9iamVjdCwgaWRlbnQs
IHZhbHVlLCBzbG90KTsKICAgICAKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHZvaWQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMzgsNyArMjEzOCw4
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfZnJvbV8KICAgICAvLyBNb2R1
bGVWYXIgaXMgYWx3YXlzIGNvbnZlcnRlZCB0byBDbG9zdXJlVmFyIGZvciBnZXRfZnJvbV9zY29w
ZS4KICAgICBBU1NFUlQobWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkgIT0gTW9k
dWxlVmFyKTsKIAotICAgIExMSU5UX1JFVFVSTihzY29wZS0+Z2V0UHJvcGVydHlTbG90KGdsb2Jh
bE9iamVjdCwgaWRlbnQsIFsmXSAoYm9vbCBmb3VuZCwgUHJvcGVydHlTbG90JiBzbG90KSAtPiBK
U1ZhbHVlIHsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZS0+dG9QdWJsaWNUaGlzVmFsdWUo
KSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CisgICAgTExJTlRfUkVU
VVJOKHNjb3BlLT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCwgWyZd
IChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmKSAtPiBKU1ZhbHVlIHsKICAgICAgICAgaWYgKCFm
b3VuZCkgewogICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9k
ZSgpID09IFRocm93SWZOb3RGb3VuZCkKICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNl
cHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVy
cm9yKGdsb2JhbE9iamVjdCwgaWRlbnQpKTsKQEAgLTIxOTcsNyArMjE5OCw3IEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfdG9fc2MKICAgICBpZiAobWV0YWRhdGEubV9nZXRQ
dXRJbmZvLnJlc29sdmVNb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kICYmICFoYXNQcm9wZXJ0eSkK
ICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihnbG9iYWxP
YmplY3QsIGlkZW50KSk7CiAKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgbWV0YWRh
dGEubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSwgUHV0UHJvcGVydHlTbG90OjpV
bmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5p
dGlhbGl6YXRpb25Nb2RlKCkpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZS0+dG9Q
dWJsaWNUaGlzVmFsdWUoKSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkuaXNTdHJp
Y3QoKSwgUHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbiht
ZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKICAgICBzY29wZS0+
bWV0aG9kVGFibGUodm0pLT5wdXQoc2NvcGUsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBz
bG90KTsKICAgICAKICAgICBDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlUHV0VG9TY29wZUdsb2Jh
bChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYnl0ZWNvZGUsIHNjb3BlLCBzbG90LCBpZGVudCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29w
eSkKQEAgLTgxOCwxNCArODE4LDI2IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX2dldF9zY29wZSwg
T3BHZXRTY28KIGVuZCkKIAogCi1sbGludE9wV2l0aE1ldGFkYXRhKG9wX3RvX3RoaXMsIE9wVG9U
aGlzLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKK2xsaW50
T3Aob3BfdG9fdGhpcywgT3BUb1RoaXMsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQogICAg
IGdldChtX3NyY0RzdCwgdDApCi0gICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxs
VGFnLCAub3BUb1RoaXNTbG93CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQor
ICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BUb1RoaXNOb3RDZWxsCiAgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKLSAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEZp
bmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdwotICAgIG1ldGFkYXRhKHQyLCB0MykKLSAgICBs
b2FkaSBPcFRvVGhpczo6TWV0YWRhdGE6Om1fY2FjaGVkU3RydWN0dXJlSURbdDJdLCB0MgotICAg
IGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyLCAub3BUb1RoaXNTbG93CisgICAg
YmJiIEpTQ2VsbDo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdworICAgIGRp
c3BhdGNoKCkKKworLm9wVG9UaGlzTm90Q2VsbDoKKyAgICBvcmkgMSwgdDEKKyAgICBiaWVxIHQx
LCBOdWxsVGFnLCAub3BUb1RoaXNVbmRlZmluZWRPck51bGwKKyAgICBjYWxsU2xvd1BhdGgoX3Ns
b3dfcGF0aF90b190aGlzKQorICAgIGRpc3BhdGNoKCkKKworLm9wVG9UaGlzVW5kZWZpbmVkT3JO
dWxsOgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6
bV9nbG9iYWxPYmplY3RbdDJdLCB0MgorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2dsb2Jh
bFRoaXNbdDJdLCB0MgorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0K
KyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KICAgICBkaXNwYXRjaCgp
CiAKIC5vcFRvVGhpc1Nsb3c6CkBAIC0yNTU0LDYgKzI1NjYsMTggQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgTwogZW5kKQogCiAKK2xsaW50T3BXaXRoUmV0dXJuKG9w
X2dldF90aGlzX3ZhbHVlX2Zvcl9jYWxsLCBPcEdldFRoaXNWYWx1ZUZvckNhbGwsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCisgICAgZ2V0KG1fc2NvcGUsIHQwKQorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmJiIEpTQ2VsbDo6bV90eXBl
W3QwXSwgRmlyc3RKU1Njb3BlVHlwZSwgLmlzV2l0aFNjb3BlCisgICAgYmJhIEpTQ2VsbDo6bV90
eXBlW3QwXSwgTGFzdEpTU2NvcGVUeXBlLCAuaXNXaXRoU2NvcGUKKyAgICByZXR1cm4oVW5kZWZp
bmVkVGFnLCAwKQorCisuaXNXaXRoU2NvcGU6CisgICAgcmV0dXJuKENlbGxUYWcsIHQwKQorZW5k
KQorCisKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3RvX3Njb3BlLCBPcFB1dFRvU2NvcGUs
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIG1hY3Jv
IHB1dFByb3BlcnR5KCkKICAgICAgICAgZ2V0KG1fdmFsdWUsIHQxKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20J
KHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC04MjgsMTUgKzgyOCwyNiBAQCBs
bGludE9wV2l0aFJldHVybihvcF9nZXRfc2NvcGUsIE9wR2V0U2NvCiBlbmQpCiAKIAotbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF90b190aGlzLCBPcFRvVGhpcywgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCitsbGludE9wKG9wX3RvX3RoaXMsIE9wVG9UaGlzLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKICAgICBnZXQobV9zcmNEc3QsIHQwKQotICAgIGxv
YWRxIFtjZnIsIHQwLCA4XSwgdDAKLSAgICBidHFueiB0MCwgbm90Q2VsbE1hc2ssIC5vcFRvVGhp
c1Nsb3cKLSAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9w
VG9UaGlzU2xvdwotICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQxCi0gICAg
bWV0YWRhdGEodDIsIHQzKQotICAgIGxvYWRpIE9wVG9UaGlzOjpNZXRhZGF0YTo6bV9jYWNoZWRT
dHJ1Y3R1cmVJRFt0Ml0sIHQyCi0gICAgYmluZXEgdDEsIHQyLCAub3BUb1RoaXNTbG93CisgICAg
bG9hZHEgW2NmciwgdDAsIDhdLCB0MQorICAgIGJ0cW56IHQxLCBub3RDZWxsTWFzaywgLm9wVG9U
aGlzTm90Q2VsbAorICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5vcFRv
VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgpCisKKy5vcFRvVGhpc05vdENlbGw6CisgICAgYW5kcSB+
VGFnVW5kZWZpbmVkLCB0MQorICAgIGJxZXEgdDEsIFZhbHVlTnVsbCwgLm9wVG9UaGlzVW5kZWZp
bmVkT3JOdWxsCisgICAgIyBicWVxIHQxLCBWYWx1ZVVuZGVmaW5lZCwgLm9wVG9UaGlzVW5kZWZp
bmVkT3JOdWxsCisgICAgIyBicWVxIHQxLCBWYWx1ZU51bGwsIC5vcFRvVGhpc1VuZGVmaW5lZE9y
TnVsbAorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3RvX3RoaXMpCisgICAgZGlzcGF0Y2go
KQorCisub3BUb1RoaXNVbmRlZmluZWRPck51bGw6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQxCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MV0sIHQxCisgICAgbG9h
ZHAgSlNHbG9iYWxPYmplY3Q6Om1fZ2xvYmFsVGhpc1t0MV0sIHQxCisgICAgc3RvcmVxIHQxLCBb
Y2ZyLCB0MCwgOF0KICAgICBkaXNwYXRjaCgpCiAKIC5vcFRvVGhpc1Nsb3c6CkBAIC0yNjg0LDYg
KzI2OTUsMTcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgTwogZW5k
KQogCiAKK2xsaW50T3BXaXRoUmV0dXJuKG9wX2dldF90aGlzX3ZhbHVlX2Zvcl9jYWxsLCBPcEdl
dFRoaXNWYWx1ZUZvckNhbGwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCisg
ICAgbG9hZFZhcmlhYmxlKGdldCwgbV9zY29wZSwgdDApCisgICAgYmJiIEpTQ2VsbDo6bV90eXBl
W3QwXSwgRmlyc3RKU1Njb3BlVHlwZSwgLmlzV2l0aFNjb3BlCisgICAgYmJhIEpTQ2VsbDo6bV90
eXBlW3QwXSwgTGFzdEpTU2NvcGVUeXBlLCAuaXNXaXRoU2NvcGUKKyAgICByZXR1cm4oVmFsdWVV
bmRlZmluZWQpCisKKy5pc1dpdGhTY29wZToKKyAgICByZXR1cm4odDApCitlbmQpCisKKwogbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9wUHV0VG9TY29wZSwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWFjcm8gcHV0UHJvcGVy
dHkoKQogICAgICAgICBnZXQobV92YWx1ZSwgdDEpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAyNzgx
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20JKHdvcmtpbmcgY29weSkKQEAgLTU0MSw2ICs1NDEsOCBAQCBjb25zdCBGaW5hbE9iamVjdFR5
cGUgPSBjb25zdGV4cHIgRmluYWxPCiBjb25zdCBKU0Z1bmN0aW9uVHlwZSA9IGNvbnN0ZXhwciBK
U0Z1bmN0aW9uVHlwZQogY29uc3QgQXJyYXlUeXBlID0gY29uc3RleHByIEFycmF5VHlwZQogY29u
c3QgRGVyaXZlZEFycmF5VHlwZSA9IGNvbnN0ZXhwciBEZXJpdmVkQXJyYXlUeXBlCitjb25zdCBG
aXJzdEpTU2NvcGVUeXBlID0gY29uc3RleHByIEZpcnN0SlNTY29wZVR5cGUKK2NvbnN0IExhc3RK
U1Njb3BlVHlwZSA9IGNvbnN0ZXhwciBMYXN0SlNTY29wZVR5cGUKIGNvbnN0IFByb3h5T2JqZWN0
VHlwZSA9IGNvbnN0ZXhwciBQcm94eU9iamVjdFR5cGUKIGNvbnN0IEhlYXBCaWdJbnRUeXBlID0g
Y29uc3RleHByIEhlYXBCaWdJbnRUeXBlCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTkxLDcgKzU5MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJheVBy
b3RvRnVuY1QKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3Ry
aWN0KCkpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsK
IAogICAgIC8vIDEuIExldCBhcnJheSBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgVG9PYmplY3Qg
b24gdGhlIHRoaXMgdmFsdWUuCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUu
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKQEAgLTY2OSw5ICs2NjksOCBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNUCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
dGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgdWludDY0
X3QgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRvTGVuZ3RoKGdsb2JhbE9iamVjdCwg
dGhpc09iamVjdCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwpAQCAtNzY0LDcgKzc2Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJh
eVByb3RvRnVuY0oKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICAvLyAxLiBMZXQgTyBiZSA/IFRvT2JqZWN0KHRoaXMgdmFsdWUpLgotICAgIEpTT2JqZWN0
KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlz
T2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4g
ZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTgyMCw3ICs4MTksNyBAQCBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUgY3JlYXRlQXJyYXlJdGVyYXRvCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0
KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlz
T2JqZWN0KTsKICAgICBVTlVTRURfUEFSQU0oc2NvcGUpOwogICAgIGlmIChVTkxJS0VMWSghdGhp
c09iamVjdCkpCkBAIC04NDksNyArODQ4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFy
cmF5UHJvdG9GdW5jUAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6
OnN0cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCk7CiAKICAgICBpZiAoaXNKU0FycmF5KHRoaXNWYWx1ZSkpCiAgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGFzQXJyYXkodGhpc1ZhbHVlKS0+cG9wKGds
b2JhbE9iamVjdCkpKTsKQEAgLTg4Nyw3ICs4ODYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oYXJyYXlQcm90b0Z1bmNQCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnN0cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCk7CiAKICAgICBpZiAoTElLRUxZKGlzSlNBcnJheSh0aGlzVmFsdWUpICYmIGNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudCgpID09IDEpKSB7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0g
YXNBcnJheSh0aGlzVmFsdWUpOwpAQCAtOTIzLDcgKzkyMiw3IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihhcnJheVByb3RvRnVuY1IKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFs
T2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRo
aXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVy
biBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTAyNSw3ICsxMDI0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jUwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNP
YmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09i
amVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNP
YmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVk
SlNWYWx1ZSgpOwpAQCAtMTA1Miw3ICsxMDUxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGFycmF5UHJvdG9GdW5jUwogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8j
c2VjLWFycmF5LnByb3RvdHlwZS5zbGljZQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNPYmpl
Y3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVj
dCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmop
OwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0x
MTE2LDcgKzExMTUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNT
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VS
VCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRo
aXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEyMjIsNyArMTIy
MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1UKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgLy8gMTUuNC40LjEzCiAKLSAg
ICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2Jh
bE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAg
IEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9i
YWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAh
dGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVu
Y29kZWRKU1ZhbHVlKCk7CkBAIC0xMzU3LDcgKzEzNTYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oYXJyYXlQcm90b0Z1bmNJCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgLy8gMTUuNC40LjE0Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJp
Y3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENF
UFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlm
IChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMzk3LDcg
KzEzOTYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNMCiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMTUuNC40LjE1
Ci0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0
aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAg
ICAgICAgIHJldHVybiB7IH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bGFzc0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bGFzc0luZm8uaAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xhc3NJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDkgKzcxLDYgQEAgc3RydWN0
IE1ldGhvZFRhYmxlIHsKICAgICB1c2luZyBEb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVja0Z1bmN0
aW9uUHRyID0gdm9pZCAoKikoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFt
ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAgRG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2tGdW5j
dGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2spOwog
Ci0gICAgdXNpbmcgVG9UaGlzRnVuY3Rpb25QdHIgPSBKU1ZhbHVlICgqKShKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIEVDTUFNb2RlKTsKLSAgICBUb1RoaXNGdW5jdGlvblB0ciBNRVRIT0RfVEFC
TEVfRU5UUlkodG9UaGlzKTsKLQogICAgIHVzaW5nIEdldE93blByb3BlcnR5TmFtZXNGdW5jdGlv
blB0ciA9IHZvaWQgKCopKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWVB
cnJheSYsIERvbnRFbnVtUHJvcGVydGllc01vZGUpOwogICAgIEdldE93blByb3BlcnR5TmFtZXNG
dW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoZ2V0T3duUHJvcGVydHlOYW1lcyk7CiAgICAg
R2V0T3duUHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShnZXRPd25T
cGVjaWFsUHJvcGVydHlOYW1lcyk7CkBAIC0xNTYsNyArMTUzLDYgQEAgc3RydWN0IE1ldGhvZFRh
YmxlIHsKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duUHJvcGVydHlTbG90LCBcCiAgICAgICAg
ICZDbGFzc05hbWU6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgsIFwKICAgICAgICAgJkNsYXNz
TmFtZTo6ZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2ssIFwKLSAgICAgICAgJkNsYXNzTmFtZTo6
dG9UaGlzLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmdldE93blByb3BlcnR5TmFtZXMsIFwKICAg
ICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMsIFwKICAgICAgICAg
JkNsYXNzTmFtZTo6Y3VzdG9tSGFzSW5zdGFuY2UsIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjc4MTU5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzQ2LDI4ICszNDYsOCBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9X
X1BBVEgoc2xvd19wYXRoX3RvCiB7CiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wVG9UaGlzPigpOwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEoY29kZUJsb2NrKTsKICAgICBKU1ZhbHVlIHYxID0gR0VUKGJ5dGVjb2RlLm1fc3JjRHN0KS5q
c1ZhbHVlKCk7Ci0gICAgaWYgKHYxLmlzQ2VsbCgpKSB7Ci0gICAgICAgIFN0cnVjdHVyZUlEIG15
U3RydWN0dXJlSUQgPSB2MS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKTsKLSAgICAgICAgU3RydWN0
dXJlSUQgb3RoZXJTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQ7Ci0g
ICAgICAgIGlmIChteVN0cnVjdHVyZUlEICE9IG90aGVyU3RydWN0dXJlSUQpIHsKLSAgICAgICAg
ICAgIGlmIChvdGhlclN0cnVjdHVyZUlEKQotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fdG9U
aGlzU3RhdHVzID0gVG9UaGlzQ29uZmxpY3RlZDsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fY2Fj
aGVkU3RydWN0dXJlSUQgPSBteVN0cnVjdHVyZUlEOwotICAgICAgICAgICAgdm0uaGVhcC53cml0
ZUJhcnJpZXIoY29kZUJsb2NrLCB2bS5nZXRTdHJ1Y3R1cmUobXlTdHJ1Y3R1cmVJRCkpOwotICAg
ICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMgPSBU
b1RoaXNDb25mbGljdGVkOwotICAgICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEID0g
MDsKLSAgICB9Ci0gICAgLy8gTm90ZTogV2Ugb25seSBuZWVkIHRvIGRvIHRoaXMgdmFsdWUgcHJv
ZmlsaW5nIGhlcmUgb24gdGhlIHNsb3cgcGF0aC4gVGhlIGZhc3QgcGF0aAotICAgIC8vIGp1c3Qg
cmV0dXJucyB0aGUgaW5wdXQgdG8gdG9fdGhpcyBpZiB0aGUgc3RydWN0dXJlIGNoZWNrIHN1Y2Nl
ZWRzLiBJZiB0aGUgc3RydWN0dXJlCi0gICAgLy8gY2hlY2sgc3VjY2VlZHMsIGRvaW5nIHZhbHVl
IHByb2ZpbGluZyBoZXJlIGlzIGVxdWl2YWxlbnQgdG8gZG9pbmcgaXQgd2l0aCBhIHBvdGVudGlh
bGx5Ci0gICAgLy8gZGlmZmVyZW50IG9iamVjdCB0aGF0IHN0aWxsIGhhcyB0aGUgc2FtZSBzdHJ1
Y3R1cmUgb24gdGhlIGZhc3QgcGF0aCBzaW5jZSBpdCdsbCBwcm9kdWNlCi0gICAgLy8gdGhlIHNh
bWUgU3BlY3VsYXRlZFR5cGUuIFRoZXJlZm9yZSwgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91
dCB2YWx1ZSBwcm9maWxpbmcgb24gdGhlCi0gICAgLy8gZmFzdCBwYXRoLgotICAgIGF1dG8gdmFs
dWUgPSB2MS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBieXRlY29kZS5tX2VjbWFNb2RlKTsKKyAgICBK
U09iamVjdCogdmFsdWUgPSB2MS50b1Nsb3BweU1vZGVUaGlzKGdsb2JhbE9iamVjdCk7CiAgICAg
UkVUVVJOX1dJVEhfUFJPRklMSU5HX0NVU1RPTShieXRlY29kZS5tX3NyY0RzdCwgdmFsdWUsIFBS
T0ZJTEVfVkFMVUUodmFsdWUpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tcGxldGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEs
OSArMTMxLDEzIEBAIEpTVmFsdWUgZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAg
ICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9tU3RyaW5nVGFibGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQo
KS5hdG9tU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9y
QnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIAorICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gbnVsbHB0
cjsKICAgICBpZiAoIXRoaXNWYWx1ZSB8fCB0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkK
LSAgICAgICAgdGhpc1ZhbHVlID0gZ2xvYmFsT2JqZWN0OwotICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ID0ganNDYXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFN
b2RlOjpzbG9wcHkoKSkpOworICAgICAgICB0aGlzT2JqID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxU
aGlzKCk7CisgICAgZWxzZSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSh0
aGlzVmFsdWUuaXNPYmplY3QoKSwgInRoaXNWYWx1ZSBzaG91bGQgYmUgdW5kZWZpbmVkLCBudWxs
LCBvciBhbiBvYmplY3QiKTsKKyAgICAgICAgdGhpc09iaiA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7
CisgICAgfQogICAgIEpTVmFsdWUgcmVzdWx0ID0gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGVQcm9n
cmFtKHNvdXJjZSwgZ2xvYmFsT2JqZWN0LCB0aGlzT2JqKTsKIAogICAgIGlmIChzY29wZS5leGNl
cHRpb24oKSkgewpAQCAtMTYxLDcgKzE2NSw3IEBAIEpTVmFsdWUgZXZhbHVhdGVXaXRoU2NvcGVF
eHRlbnNpb24oSlNHbG8KICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRHbG9iYWxTY29wZUV4dGVu
c2lvbihKU1dpdGhTY29wZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGlnbm9yZWRQcmV2aW91
c1Njb3BlLCBzY29wZUV4dGVuc2lvbk9iamVjdCkpOwogICAgIH0KIAotICAgIEpTVmFsdWUgcmV0
dXJuVmFsdWUgPSBKU0M6OmV2YWx1YXRlKGdsb2JhbE9iamVjdCwgc291cmNlLCBnbG9iYWxPYmpl
Y3QsIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gSlNDOjpl
dmFsdWF0ZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCks
IHJldHVybmVkRXhjZXB0aW9uKTsKIAogICAgIGlmIChzY29wZUV4dGVuc2lvbk9iamVjdCkKICAg
ICAgICAgZ2xvYmFsT2JqZWN0LT5jbGVhckdsb2JhbFNjb3BlRXh0ZW5zaW9uKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkocmV2
aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Miw3ICszNTIsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oZGF0ZVByb3RvRnVuY1RvCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9i
amVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkRhdGUucHJv
dG90eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgfHRoaXN8IHRvIGJlIGFuIG9iamVj
dC4iKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNW
YWx1ZSk7CkBAIC04NjYsOCArODY2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGRhdGVQ
cm90b0Z1bmNHZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwotICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5h
bWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhpc1ZhbHVlKTsKKyAgICBhdXRvKiB0aGlzRGF0
ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIApAQCAtODgzLDggKzg4Miw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRlUHJvdG9GdW5jVG8KIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwotICAgIEpTT2JqZWN0
KiBvYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVj
dCogb2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3Qp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAg
ICAgSlNWYWx1ZSB0aW1lVmFsdWUgPSBvYmplY3QtPnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCwg
UHJlZmVyTnVtYmVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMs
NyArNzMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZXJyb3JQcm90b0Z1bmNUCiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gTGV0IE8g
YmUgdGhlIHRoaXMgdmFsdWUuCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogCiAgICAgLy8gMi4g
SWYgVHlwZShPKSBpcyBub3QgT2JqZWN0LCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAg
ICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCaWdJbnQuaAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQ2VsbDsKICAgICB1c2luZyBEaWdpdCA9IFVD
UFVSZWdpc3RlcjsKIAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBPdmVycmlk
ZXNUb1RoaXM7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKICAgICBmcmllbmQg
Y2xhc3MgQ2FjaGVkQmlnSW50OwogCiAgICAgREVDTEFSRV9WSVNJVF9DSElMRFJFTjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCShyZXZpc2lv
biAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDI2ICsxNjQsNiBAQCBKU09iamVjdCogSlNWYWx1ZTo6
dG9PYmplY3RTbG93Q2FzZShKU0dsCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpTVmFsdWUg
SlNWYWx1ZTo6dG9UaGlzU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNN
QU1vZGUgZWNtYU1vZGUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFpc0NlbGwoKSk7Ci0KLSAgICBp
ZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAgaWYg
KGlzSW50MzIoKSB8fCBpc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gY29uc3RydWN0TnVtYmVy
KGdsb2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKLSAgICBpZiAoaXNUcnVlKCkgfHwgaXNGYWxzZSgp
KQotICAgICAgICByZXR1cm4gY29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlhdGVCb29sZWFuKGds
b2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKLSNpZiBVU0UoQklHSU5UMzIpCi0gICAgaWYgKGlzQmln
SW50MzIoKSkKLSAgICAgICAgcmV0dXJuIEJpZ0ludE9iamVjdDo6Y3JlYXRlKGdsb2JhbE9iamVj
dC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCAqdGhpcyk7Ci0jZW5kaWYKLQotICAgIEFTU0VSVChpc1Vu
ZGVmaW5lZE9yTnVsbCgpKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCk7
Ci19Ci0KIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAko
cmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsNyArMzMyLDcgQEAgcHVibGljOgogICAgIGJv
b2wgcHV0QnlJbmRleChKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdyk7CiAKICAgICBKU1ZhbHVlIGdldFByb3RvdHlwZShKU0ds
b2JhbE9iamVjdCopIGNvbnN0OwotICAgIEpTVmFsdWUgdG9UaGlzKEpTR2xvYmFsT2JqZWN0Kiwg
RUNNQU1vZGUpIGNvbnN0OworICAgIEpTT2JqZWN0KiB0b1Nsb3BweU1vZGVUaGlzKEpTR2xvYmFs
T2JqZWN0KikgY29uc3Q7CiAKICAgICBzdGF0aWMgYm9vbCBlcXVhbChKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpOwogICAgIHN0YXRpYyBib29sIGVxdWFsU2xvd0Nhc2Uo
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKQEAgLTUyMSw3ICs1MjEs
NiBAQCBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nKiB0b1N0cmluZ1Ns
b3dDYXNlKEpTR2xvYmFsT2JqZWN0KiwgYm9vbCByZXR1cm5FbXB0eVN0cmluZ09uRXJyb3IpIGNv
bnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFdURjo6U3RyaW5nIHRvV1RGU3RyaW5nU2xvd0Nh
c2UoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVj
dCogdG9PYmplY3RTbG93Q2FzZShKU0dsb2JhbE9iamVjdCopIGNvbnN0OwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIEpTVmFsdWUgdG9UaGlzU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqLCBFQ01BTW9k
ZSkgY29uc3Q7CiAKICAgICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yIHU7CiB9OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShy
ZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MjksOSArOTI5LDkgQEAgaW5saW5lIGNv
bnN0IENsYXNzSW5mbyogSlNWYWx1ZTo6Y2xhc3NJbgogICAgIHJldHVybiBpc0NlbGwoKSA/IGFz
Q2VsbCgpLT5jbGFzc0luZm8odm0pIDogbnVsbHB0cjsKIH0KIAotaW5saW5lIEpTVmFsdWUgSlNW
YWx1ZTo6dG9UaGlzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFN
b2RlKSBjb25zdAoraW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b1Nsb3BweU1vZGVUaGlzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzQ2VsbCgp
ID8gYXNDZWxsKCktPm1ldGhvZFRhYmxlKGdldFZNKGdsb2JhbE9iamVjdCkpLT50b1RoaXMoYXND
ZWxsKCksIGdsb2JhbE9iamVjdCwgZWNtYU1vZGUpIDogdG9UaGlzU2xvd0Nhc2UoZ2xvYmFsT2Jq
ZWN0LCBlY21hTW9kZSk7CisgICAgcmV0dXJuIGlzVW5kZWZpbmVkT3JOdWxsKCkgPyBnbG9iYWxP
YmplY3QtPmdsb2JhbFRoaXMoKSA6IHRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiB9CiAKIEFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDEz
ICsxNDIsNiBAQCBib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsCiAgICAg
cmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdC0+dm0oKSktPmRlbGV0
ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50aWZpZXIpOwog
fQogCi1KU1ZhbHVlIEpTQ2VsbDo6dG9UaGlzKEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCi17Ci0gICAgaWYgKGVjbWFNb2RlLmlz
U3RyaWN0KCkpCi0gICAgICAgIHJldHVybiBjZWxsOwotICAgIHJldHVybiBjZWxsLT50b09iamVj
dChnbG9iYWxPYmplY3QpOwotfQotCiBKU1ZhbHVlIEpTQ2VsbDo6dG9QcmltaXRpdmUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBwcmVmZXJyZWRU
eXBlKSBjb25zdAogewogICAgIGlmIChpc1N0cmluZygpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsOCArMTg1LDYg
QEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3Bl
cnR5KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCB1bnNp
Z25lZCBwcm9wZXJ0eU5hbWUpOwogCi0gICAgc3RhdGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCos
IEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUpOwotCiAgICAgc3RhdGljIGJvb2wgY2FuVXNlRmFz
dEdldE93blByb3BlcnR5KGNvbnN0IFN0cnVjdHVyZSYpOwogICAgIEpTVmFsdWUgZmFzdEdldE93
blByb3BlcnR5KFZNJiwgU3RydWN0dXJlJiwgUHJvcGVydHlOYW1lKTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAy
NzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjE2LDkgKzEyMTYsMTEgQEAgaW5saW5lIEpTQXJyYXkqIGNv
bnN0cnVjdEFycmF5TmVnYXRpdmVJbgogICAgIHJldHVybiBBcnJheUFsbG9jYXRpb25Qcm9maWxl
Ojp1cGRhdGVMYXN0QWxsb2NhdGlvbkZvcihwcm9maWxlLCBjb25zdHJ1Y3RBcnJheU5lZ2F0aXZl
SW5kZXhlZChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgdmFsdWVzLCBsZW5ndGgpKTsKIH0KIAot
aW5saW5lIEpTT2JqZWN0KiBKU1Njb3BlOjpnbG9iYWxUaGlzKCkKLXsgCi0gICAgcmV0dXJuIGds
b2JhbE9iamVjdCgpLT5nbG9iYWxUaGlzKCk7CitBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiBKU09i
amVjdDo6dG9QdWJsaWNUaGlzVmFsdWUoKQoreworICAgIGlmIChpc0dsb2JhbE9iamVjdCgpKQor
ICAgICAgICByZXR1cm4ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4odGhpcyktPmdsb2JhbFRoaXMo
KTsKKyAgICByZXR1cm4gdGhpczsKIH0KIAogaW5saW5lIEpTT2JqZWN0KiBKU0dsb2JhbE9iamVj
dDo6Z2xvYmFsVGhpcygpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAy
NzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5Miw4ICs2OTIsNyBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY01ha2VUCiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihnbG9iYWxGdW5jUHJvdG9HZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUuZ2V0UHJvdG90eXBlKGdsb2Jh
bE9iamVjdCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS5nZXRQcm90b3R5cGUoZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihnbG9iYWxGdW5jUHJvdG9TZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03MDEsNyArNzAwLDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNQcm90bwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2Jh
bE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBPYmplY3RQcm90b0NhbGxlZE9uTnVsbE9yVW5kZWZpbmVkRXJyb3IpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyNzgxNTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE4MDMsNyArMTgwMyw3IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdp
dGhDeWNsZUNoZWMKICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBzaG91bGRUaHJvd0lmQ2FudFNldCwgIkNhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0YWJs
ZSBwcm90b3R5cGUgb2JqZWN0Il9zKTsKICAgICB9CiAKLSAgICBBU1NFUlQobWV0aG9kVGFibGUo
dm0pLT50b1RoaXModGhpcywgZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpID09IHRo
aXMpOworICAgIEFTU0VSVCghaW5oZXJpdHM8SlNTY29wZT4odm0pKTsKIAogICAgIGlmICh0aGlz
LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pID09IHByb3RvdHlwZSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC0yNDYyLDExICsyNDYyLDYgQEAgSlNTdHJpbmcqIEpTT2JqZWN0Ojp0b1N0cmluZyhK
U0dsb2JhbE9iagogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcHJpbWl0aXZlLnRvU3Ry
aW5nKGdsb2JhbE9iamVjdCkpOwogfQogCi1KU1ZhbHVlIEpTT2JqZWN0Ojp0b1RoaXMoSlNDZWxs
KiBjZWxsLCBKU0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKQotewotICAgIHJldHVybiBqc0Nhc3Q8
SlNPYmplY3QqPihjZWxsKTsKLX0KLQogdm9pZCBKU09iamVjdDo6c2VhbChWTSYgdm0pCiB7CiAg
ICAgaWYgKGlzU2VhbGVkKHZtKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjg4LDggKzY4OCw3IEBAIHB1Ymxp
YzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRvUHJpbWl0aXZlKEpTR2xvYmFsT2Jq
ZWN0KiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSA9IE5vUHJlZmVyZW5jZSkgY29uc3Q7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNTdHJpbmcqIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0
KikgY29uc3Q7Ci0KLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMo
SlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBFQ01BTW9kZSk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIHRvUHVibGljVGhpc1ZhbHVlKCk7CiAKICAgICAvLyBUaGlzIGdldCBmdW5j
dGlvbiBvbmx5IGxvb2tzIGF0IHRoZSBwcm9wZXJ0eSBtYXAuCiAgICAgSlNWYWx1ZSBnZXREaXJl
Y3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdApAQCAtNzk5LDExICs3
OTgsOSBAQCBwdWJsaWM6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBj
b25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAotICAgIGJvb2wg
aXNFbnZpcm9ubWVudCgpIGNvbnN0OwogICAgIGJvb2wgaXNHbG9iYWxPYmplY3QoKSBjb25zdDsK
ICAgICBib29sIGlzSlNMZXhpY2FsRW52aXJvbm1lbnQoKSBjb25zdDsKICAgICBib29sIGlzR2xv
YmFsTGV4aWNhbEVudmlyb25tZW50KCkgY29uc3Q7Ci0gICAgYm9vbCBpc1N0cmljdEV2YWxBY3Rp
dmF0aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc1dpdGhTY29wZSgpIGNvbnN0OwogCiAgICAgYm9v
bCBpc0Vycm9ySW5zdGFuY2UoKSBjb25zdDsKQEAgLTEyNzIsMTggKzEyNjksNiBAQCBpbmxpbmUg
Ym9vbCBKU09iamVjdDo6aXNHbG9iYWxMZXhpY2FsRW52CiAgICAgcmV0dXJuIHR5cGUoKSA9PSBH
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnRUeXBlOwogfQogCi1pbmxpbmUgYm9vbCBKU09iamVjdDo6
aXNTdHJpY3RFdmFsQWN0aXZhdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHR5cGUoKSA9PSBT
dHJpY3RFdmFsQWN0aXZhdGlvblR5cGU7Ci19Ci0KLWlubGluZSBib29sIEpTT2JqZWN0Ojppc0Vu
dmlyb25tZW50KCkgY29uc3QKLXsKLSAgICBib29sIHJlc3VsdCA9IEdsb2JhbE9iamVjdFR5cGUg
PD0gdHlwZSgpICYmIHR5cGUoKSA8PSBTdHJpY3RFdmFsQWN0aXZhdGlvblR5cGU7Ci0gICAgQVNT
RVJUKChpc0dsb2JhbE9iamVjdCgpIHx8IGlzSlNMZXhpY2FsRW52aXJvbm1lbnQoKSB8fCBpc0ds
b2JhbExleGljYWxFbnZpcm9ubWVudCgpIHx8IGlzU3RyaWN0RXZhbEFjdGl2YXRpb24oKSkgPT0g
cmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6
aXNFcnJvckluc3RhbmNlKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHlwZSgpID09IEVycm9ySW5z
dGFuY2VUeXBlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5j
cHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTcsMTEgKzQxNyw0IEBAIFN5bWJvbFRhYmxl
KiBKU1Njb3BlOjpzeW1ib2xUYWJsZShWTSYgdm0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
SlNWYWx1ZSBKU1Njb3BlOjp0b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCi17Ci0gICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkp
Ci0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIHJldHVybiBnbG9iYWxPYmplY3Qt
Pmdsb2JhbFRoaXMoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcg
KzQwLDcgQEAgdXNpbmcgVERaRW52aXJvbm1lbnQgPSBIYXNoU2V0PFJlZlB0cjxVbgogY2xhc3Mg
SlNTY29wZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBC
YXNlID0gSlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNUb1RoaXM7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAg
IHN0YXRpYyB2b2lkIHN1YnNwYWNlRm9yKFZNJikKQEAgLTc4LDEyICs3OCw4IEBAIHB1YmxpYzoK
ICAgICBTY29wZUNoYWluSXRlcmF0b3IgZW5kKCk7CiAgICAgSlNTY29wZSogbmV4dCgpOwogCi0g
ICAgSlNPYmplY3QqIGdsb2JhbFRoaXMoKTsKLQogICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJs
ZShWTSYpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTVmFsdWUgdG9UaGlzKEpT
Q2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUpOwotCiBwcm90ZWN0ZWQ6CiAgICAgSlNT
Y29wZShWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqIG5leHQpOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxMCwxMyArNDEwLDYgQEAgSlNPYmplY3QqIEpTU3RyaW5nOjp0b09iamVjdChKU0dsb2Jh
bE9iagogICAgIHJldHVybiBTdHJpbmdPYmplY3Q6OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCks
IGdsb2JhbE9iamVjdCwgY29uc3RfY2FzdDxKU1N0cmluZyo+KHRoaXMpKTsKIH0KIAotSlNWYWx1
ZSBKU1N0cmluZzo6dG9UaGlzKEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRUNNQU1vZGUgZWNtYU1vZGUpCi17Ci0gICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkp
Ci0gICAgICAgIHJldHVybiBjZWxsOwotICAgIHJldHVybiBTdHJpbmdPYmplY3Q6OmNyZWF0ZShn
bG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCwgYXNTdHJpbmcoY2VsbCkpOwotfQotCiBi
b29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMjc4
MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI5NTYKICAgICAvLyBEbyB3ZSByZWFs
bHkgbmVlZCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3Ro
SXNOb3RaZXJvPwogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEyOTU4Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90
WmVybyB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBPdmVycmlkZXNUb1RoaXM7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5
U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7
CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAg
ICAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBkZXN0cm95KEpTQ2VsbCogY2VsbCkKQEAgLTIz
Nyw4ICsyMzcsNiBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMoSlNDZWxsKiwg
SlNHbG9iYWxPYmplY3QqLCBFQ01BTW9kZSk7Ci0KICAgICBTdHJpbmdWaWV3IHVuc2FmZVZpZXco
SlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAogICAgIGZyaWVuZCBKU1N0cmluZyoganNTdHJpbmco
Vk0mLCBjb25zdCBTdHJpbmcmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZS5oCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw4IEBAIGVudW0gSlNUeXBl
IDogdWludDhfdCB7CiAgICAgLy8gRW5kIGVudmlyb25tZW50IHJlY29yZCB0eXBlcy4KICAgICBX
aXRoU2NvcGVUeXBlLAogICAgIC8vIEVuZCBKU1Njb3BlIHR5cGVzLgorICAgIEZpcnN0SlNTY29w
ZVR5cGUgPSBHbG9iYWxPYmplY3RUeXBlLAorICAgIExhc3RKU1Njb3BlVHlwZSA9IFdpdGhTY29w
ZVR5cGUsCiAKICAgICBNb2R1bGVOYW1lc3BhY2VPYmplY3RUeXBlLAogICAgIFJlZ0V4cE9iamVj
dFR5cGUsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5o
CShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDYgQEAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBNYXNxdWVyYWRlc0FzVQogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID0gMSA8PCAxOwogc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBPdmVycmlkZXNHZXRDYWxsRGF0YSA9IDEgPDwgMjsgLy8gTmVlZCB0aGlzIGZsYWcgaWYg
eW91IGltcGxlbWVudCBbW0NhbGxhYmxlXV0gaW50ZXJmYWNlLCB3aGljaCBtZWFucyBvdmVycmlk
aW5nIGdldENhbGxEYXRhLiBUaGUgb2JqZWN0IG1heSBub3QgYmUgY2FsbGFibGUgc2luY2UgZ2V0
Q2FsbERhdGEgY2FuIHNheSBpdCBpcyBub3QgY2FsbGFibGUuCiBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCA9IDEgPDwgMzsKLXN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgT3ZlcnJpZGVzVG9UaGlzID0gMSA8PCA0OyAvLyBJZiB0aGlzIGlzIGZh
bHNlIHRoZW4gdGhpcyByZXR1cm5zIHNvbWV0aGluZyBvdGhlciB0aGFuICd0aGlzJy4gTm9uLW9i
amVjdCBjZWxscyB0aGF0IGFyZSB2aXNpYmxlIHRvIEpTIGhhdmUgdGhpcyBzZXQgYXMgZG8gc29t
ZSBleG90aWMgb2JqZWN0cy4KIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgSGFzU3RhdGljUHJv
cGVydHlUYWJsZSA9IDEgPDwgNTsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgVHlwZUluZm9Q
ZXJDZWxsQml0ID0gMSA8PCA3OyAvLyBVbmxpa2Ugb3RoZXIgaW5saW5lIGZsYWdzLCB0aGlzIHdp
bGwgb25seSBiZSBzZXQgb24gdGhlIGNlbGwgaXRzZWxmIGFuZCB3aWxsIG5vdCBiZSBzZXQgb24g
dGhlIFN0cnVjdHVyZS4KIApAQCAtOTcsNyArOTYsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgb3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KElubGluZVR5cGVGbGFncyBmbGFncykgeyBy
ZXR1cm4gZmxhZ3MgJiBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7IH0KICAgICBzdGF0aWMg
Ym9vbCBoYXNTdGF0aWNQcm9wZXJ0eVRhYmxlKElubGluZVR5cGVGbGFncyBmbGFncykgeyByZXR1
cm4gZmxhZ3MgJiBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOyB9CiAgICAgc3RhdGljIGJvb2wgcGVy
Q2VsbEJpdChJbmxpbmVUeXBlRmxhZ3MgZmxhZ3MpIHsgcmV0dXJuIGZsYWdzICYgVHlwZUluZm9Q
ZXJDZWxsQml0OyB9Ci0gICAgYm9vbCBvdmVycmlkZXNUb1RoaXMoKSBjb25zdCB7IHJldHVybiBp
c1NldE9uRmxhZ3MxPE92ZXJyaWRlc1RvVGhpcz4oKTsgfQogICAgIGJvb2wgc3RydWN0dXJlSXNJ
bW1vcnRhbCgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczI8U3RydWN0dXJlSXNJbW1vcnRh
bD4oKTsgfQogICAgIGJvb2wgb3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcygpIGNvbnN0IHsg
cmV0dXJuIGlzU2V0T25GbGFnczI8T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcz4oKTsgfQog
ICAgIGJvb2wgb3ZlcnJpZGVzR2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMoKSBjb25zdCB7IHJl
dHVybiBpc1NldE9uRmxhZ3MyPE92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzPigp
OyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcg
QEAgT2JqZWN0UHJvdG90eXBlKiBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZQogCiBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jVmFsdWVPZiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKIHsKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnN0cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAgICAgSlNPYmplY3QqIHZhbHVlT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZU9iaikpCiAgICAgICAgIHJldHVybiBl
bmNvZGVkSlNWYWx1ZSgpOwpAQCAtOTMsOCArOTMsNyBAQCBib29sIG9iamVjdFByb3RvdHlwZUhh
c093blByb3BlcnR5KEpTR2xvCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGJhc2UudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsK
LSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmpl
Y3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gYmFzZS50b09iamVjdChnbG9iYWxPYmpl
Y3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09i
amVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTM1LDggKzEzNCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RQ
cm90b0Z1bmMKICAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2Jq
ZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1Zh
bHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9O
X0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtF
TFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTE1OSw3
ICsxNTcsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jCiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIGdldCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMSk7CkBAIC0xODYsNyArMTg0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKG9iamVjdFByb3RvRnVuYwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogCiAgICAgSlNWYWx1ZSBzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwpAQCAtMjEzLDcg
KzIxMSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmMKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CkBAIC0y
NDMsNyArMjQxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuYwog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50
b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsK
QEAgLTI3Niw3ICsyNzQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9G
dW5jCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJv
cGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7
CkBAIC0yOTcsNyArMjk1LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3Rv
RnVuYwogICAgIC8vIDIuIEludm9rZShWLCAidG9TdHJpbmciKQogCiAgICAgLy8gTGV0IE8gYmUg
dGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2JqZWN0IHBhc3NpbmcgdGhlIHRoaXMgdmFsdWUgYXMg
dGhlIGFyZ3VtZW50LgotICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzVmFsdWUudG9UaGlzKGds
b2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOwor
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAg
IC8vIExldCB0b1N0cmluZyBiZSB0aGUgTy5bW0dldF1dKCJ0b1N0cmluZyIsIFYpCkBAIC0zOTYs
OCArMzk0LDcgQEAgSlNTdHJpbmcqIG9iamVjdFByb3RvdHlwZVRvU3RyaW5nKEpTR2xvYgogCiBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7Ci0gICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmpl
Y3RQcm90b3R5cGVUb1N0cmluZyhnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUob2JqZWN0UHJvdG90eXBlVG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkocmV2aXNp
b24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjQsNyArNTI0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHBlcmZvcm1Qcm94eUNhbAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAg
ICBhcmd1bWVudHMuYXBwZW5kKHRhcmdldCk7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkp
OworICAgIGFyZ3VtZW50cy5hcHBlbmQoY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgYXJn
dW1lbnRzLmFwcGVuZChhcmdBcnJheSk7CiAgICAgQVNTRVJUKCFhcmd1bWVudHMuaGFzT3ZlcmZs
b3dlZCgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShj
YWxsKGdsb2JhbE9iamVjdCwgYXBwbHlNZXRob2QsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVu
dHMpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMiw3ICsy
MTIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocmVnRXhwUHJvdG9GdW5jCiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOworICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1
ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NDEsOSArODQxLDYgQEAgc3RhdGljIGlubGluZSBib29sIGNoZWNrT2JqZWN0Q29lcmNpYmxlKAog
ICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgaWYgKHRoaXNWYWx1ZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHRoaXNWYWx1
ZSktPmlzRW52aXJvbm1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCShy
ZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNz
IFN5bWJvbCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlND
ZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbCB8IE92ZXJyaWRlc1Rv
VGhpczsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCiAgICAgREVDTEFSRV9F
WFBPUlRfSU5GTzsKIApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEt
MDUtMjcgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAg
IFtKU0NdIEFib2xpc2ggdXNpbmcgcmVzb2x2ZWQgc2NvcGUgYXMgfHRoaXN8IHZhbHVlIHdoZW4g
Y2FsbGluZyBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNTM5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURMT3BlcmF0aW9uPEpTRE9NV2luZG93Pjo6Y2FzdCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6SURMT3Bl
cmF0aW9uPEpTRXZlbnRUYXJnZXQ+OjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgor
CiAyMDIxLTA1LTI3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBTdXBwb3J0IEgyNjQgcHJvZmlsZXMgaW4gTWVkaWFSZWNvcmRlcgpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01PcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlvbi5oCShyZXZpc2lvbiAyNzgxNTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSwyMiArMzUsMTIgQEAgcHVibGljOgogICAgIHVzaW5nIE9wZXJhdGlvbiA9IEpT
Qzo6RW5jb2RlZEpTVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKiwg
Q2xhc3NQYXJhbWV0ZXIpOwogICAgIHVzaW5nIFN0YXRpY09wZXJhdGlvbiA9IEpTQzo6RW5jb2Rl
ZEpTVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7CiAKLSAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoaXMgYWZ0ZXIgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUgaXMgZml4
ZWQgbm90IHRvIHBhc3MgcmVzb2x2ZWQgc2NvcGUgYXMgfHRoaXN8IHZhbHVlLgotICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcKLSAgICBzdGF0aWMg
SlNDbGFzcyogY2FzdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkNhbGxGcmFtZSYgY2FsbEZyYW1lKQotICAgIHsKLSAgICAgICAgaWYgY29uc3RleHByIChz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0RPTUdsb2JhbE9iamVjdCwgSlNDbGFzcz4pCi0gICAgICAgICAg
ICByZXR1cm4gY2FzdFRoaXNWYWx1ZTxKU0NsYXNzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUudGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVDTUFN
b2RlOjpzdHJpY3QoKSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gY2FzdFRo
aXNWYWx1ZTxKU0NsYXNzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUudGhpc1ZhbHVl
KCkpOwotICAgIH0KLQogICAgIHRlbXBsYXRlPE9wZXJhdGlvbiBvcGVyYXRpb24sIENhc3RlZFRo
aXNFcnJvckJlaGF2aW9yIHNob3VsZFRocm93ID0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlRo
cm93PgogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIGNhbGwoSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUmIGNhbGxGcmFtZSwgY29u
c3QgY2hhciogb3BlcmF0aW9uTmFtZSkKICAgICB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCkpOwog
ICAgICAgICAKLSAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGNhc3QobGV4aWNhbEdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lKTsKKyAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGNhc3RUaGlzVmFs
dWU8SlNDbGFzcz4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsK
ICAgICAgICAgaWYgY29uc3RleHByIChzaG91bGRUaHJvdyAhPSBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0KSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQog
ICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgSlNDbGFzczo6aW5mbygpLT5jbGFzc05hbWUsIG9wZXJhdGlvbk5h
bWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01PcGVyYXRpb25SZXR1
cm5pbmdQcm9taXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlLmgJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpFbmNvZGVkSlNWYWx1ZSBjYWxsKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6Q2FsbEZyYW1lJiBjYWxsRnJhbWUsIGNvbnN0IGNoYXIqIG9wZXJhdGlvbk5h
bWUpCiAgICAgewogICAgICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUoY2FsbFByb21p
c2VGdW5jdGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIFsmb3BlcmF0aW9uTmFt
ZV0gKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZy
YW1lJiBjYWxsRnJhbWUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkgewotICAgICAg
ICAgICAgYXV0byogdGhpc09iamVjdCA9IElETE9wZXJhdGlvbjxKU0NsYXNzPjo6Y2FzdChsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOworICAgICAgICAgICAgYXV0byogdGhpc09iamVj
dCA9IGNhc3RUaGlzVmFsdWU8SlNDbGFzcz4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LnRoaXNWYWx1ZSgpKTsKICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgIT0g
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydCkgewogICAgICAgICAgICAgICAgIGlmIChV
TkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3RQ
cm9taXNlV2l0aFRoaXNUeXBlRXJyb3IocHJvbWlzZS5nZXQoKSwgSlNDbGFzczo6aW5mbygpLT5j
bGFzc05hbWUsIG9wZXJhdGlvbk5hbWUpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTQ2xhc3M+OjpPcGVyYXRpb24gb3BlcmF0
aW9uLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91bGRUaHJvdyA9IENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpSZWplY3RQcm9taXNlPgogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVl
IGNhbGxSZXR1cm5pbmdPd25Qcm9taXNlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lJiBjYWxsRnJhbWUsIGNvbnN0IGNoYXIqIG9wZXJhdGlv
bk5hbWUpCiAgICAgewotICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gSURMT3BlcmF0aW9uPEpT
Q2xhc3M+OjpjYXN0KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7CisgICAgICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBjYXN0VGhpc1ZhbHVlPEpTQ2xhc3M+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc2hvdWxk
VGhyb3cgIT0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydCkgewogICAgICAgICAgICAg
aWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0
UHJvbWlzZVdpdGhUaGlzVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIEpTQ2xhc3M6Omlu
Zm8oKS0+Y2xhc3NOYW1lLCBvcGVyYXRpb25OYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgSlNFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KFNj
cmlwdEUKICAgICAgICAgSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbigmc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgY2FsbERhdGEpOwogCiAgICAgICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0
aW9uPiBleGNlcHRpb247Ci0gICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBKU0V4ZWNTdGF0
ZTo6cHJvZmlsZWRDYWxsKGdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVy
LCBqc0Z1bmN0aW9uLCBjYWxsRGF0YSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBleGNlcHRpb24pOwor
ICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbChn
bG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwganNGdW5jdGlvbiwgY2Fs
bERhdGEsICZnbG9iYWxPYmplY3QtPnByb3h5KCksIGFyZ3MsIGV4Y2VwdGlvbik7CiAKICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oJnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
VGFyZ2V0Q3VzdG9tLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudFRhcmdldEN1c3RvbS5oCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTYz
LDcgKzYzLDcgQEAgcHVibGljOgogICAgICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgICAgICBhdXRvIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS50aGlzVmFs
dWUoKS50b1RoaXMoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6RUNNQU1vZGU6OnN0cmljdCgp
KTsKKyAgICAgICAgYXV0byB0aGlzVmFsdWUgPSBjYWxsRnJhbWUudGhpc1ZhbHVlKCk7CiAgICAg
ICAgIGF1dG8gdGhpc09iamVjdCA9IGpzRXZlbnRUYXJnZXRDYXN0KHZtLCB0aGlzVmFsdWUuaXNV
bmRlZmluZWRPck51bGwoKSA/IEpTQzo6SlNWYWx1ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCkgOiB0
aGlzVmFsdWUpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCAiRXZlbnRUYXJnZXQiLCBvcGVyYXRpb25OYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAkocmV2aXNpb24gMjc4MTU5KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRl
KFdvcmtlckdsb2IKIAogICAgIGlmIChtX2Z1bmN0aW9uKSB7CiAgICAgICAgIGF1dG8qIGNvbnRl
eHRXcmFwcGVyID0gc2NyaXB0Q29udHJvbGxlci0+Z2xvYmFsU2NvcGVXcmFwcGVyKCk7Ci0gICAg
ICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dChjb250ZXh0V3JhcHBlciwgY29udGV4dFdyYXBw
ZXIsIHdvcmtlckdsb2JhbFNjb3BlKTsKKyAgICAgICAgZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0
KGNvbnRleHRXcmFwcGVyLCAmY29udGV4dFdyYXBwZXItPnByb3h5KCksIHdvcmtlckdsb2JhbFNj
b3BlKTsKICAgICB9IGVsc2UgewogICAgICAgICBTY3JpcHRTb3VyY2VDb2RlIGNvZGUobV9jb2Rl
LCBVUkwod29ya2VyR2xvYmFsU2NvcGUudXJsKCkpKTsKICAgICAgICAgc2NyaXB0Q29udHJvbGxl
ci0+ZXZhbHVhdGUoY29kZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29w
eSkKQEAgLTU0MTUsNyArNTQxNSw5IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZVNldHRlckJvZHlE
ZWZpbml0aW8KICAgICAgICAgIyAzLjUuOS4xLiBMZXQgUSBiZSA/IEdldChPLCBpZCkuCiAgICAg
ICAgIG15ICRpZCA9ICRhdHRyaWJ1dGUtPm5hbWU7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBhdXRvIGlkID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KFwiJHtpZH1cIiksIHN0cmxlbihcIiR7aWR9XCIpKTtcbiIpOwot
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byB2YWx1ZVRvRm9yd2FyZFRvID0g
dGhpc09iamVjdC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIGlkKTtcbiIpOworCisgICAgICAg
IG15ICRnZXRSZWNlaXZlciA9IElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpID8gInRoaXNP
YmplY3QucHJveHkoKSIgOiAidGhpc09iamVjdCI7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBhdXRvIHZhbHVlVG9Gb3J3YXJkVG8gPSAke2dldFJlY2VpdmVyfS5nZXQoJmxleGlj
YWxHbG9iYWxPYmplY3QsIGlkKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7XG4iKTsKICAgICAgICAg
CiAgICAgICAgICMgMy41LjkuMi4gSWYgVHlwZShRKSBpcyBub3QgT2JqZWN0LCB0aGVuIHRocm93
IGEgVHlwZUVycm9yLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RHbG9iYWxPYmplY3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0R2xvYmFsT2JqZWN0LmlkbAkocmV2aXNpb24gMjc4MTU5KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RHbG9iYWxPYmplY3Qu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw4IEBACiAgICAgW1ByaXZhdGVJZGVudGlm
aWVyLCBDb25kaXRpb25hbD1URVNUX0ZFQVRVUkUsIEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZlYXR1
cmVdIHVuZGVmaW5lZCB0ZXN0UHJpdmF0ZUZ1bmN0aW9uKCk7CiAgICAgW0pTQnVpbHRpbiwgQ29u
ZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJlXSB1bmRl
ZmluZWQgdGVzdEpTQnVpbHRpbkZ1bmN0aW9uKCk7CiAKKyAgICBbUHV0Rm9yd2FyZHM9bmFtZV0g
cmVhZG9ubHkgYXR0cmlidXRlIFRlc3ROb2RlIHB1dEZvcndhcmRzQXR0cmlidXRlOworCiAgICAg
Ly8gW1NlY3VyZUNvbnRleHRdIGF0dHJpYnV0ZXMgYW5kIG9wZXJhdGlvbnM7IHdpbGwgbm90IGJl
IGV4cG9zZWQgdG8gYSBub24tc2VjdXJlIGNvbnRleHQuCiAgICAgLy8gRnJvbSA8aHR0cHM6Ly93
M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1zZWN1cmUtY29udGV4dHMvI2ludGVncmF0aW9uLWlkbD4g
KEVkaXRvcidzIERyYWZ0LCAxNyBOb3ZlbWJlciAyMDE2KQogICAgIFtTZWN1cmVDb250ZXh0XSBQ
cm9taXNlPGRvdWJsZT4gY2FsY3VsYXRlU2VjcmV0UmVzdWx0KCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydEJhc2UuaCIKICNpbmNsdWRlICJKU0RP
TUNvbnZlcnRCb29sZWFuLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiSlNET01Db252ZXJ0TnVtYmVycy5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydFBy
b21pc2UuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCkBAIC04Miw2ICs4Myw3
IEBACiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9w
ZXJ0aWVzLmgiCiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5oIgogI2luY2x1ZGUgIkpTVGVz
dE5hbWVzcGFjZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTVGVzdE5vZGUuaCIKICNpbmNsdWRlICJK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmgiCiAjaW5jbHVkZSAiSlNU
ZXN0UGx1Z2luSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSlNUZXN0UmVhZE9ubHlNYXBMaWtlLmgi
CkBAIC0xNjYsNiArMTY4LDggQEAgc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0
SlNUZQogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0
X2VuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9T
RVRURVIoc2V0SlNUZXN0R2xvYmFsT2JqZWN0X2VuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUpOwog
I2VuZGlmCitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmpl
Y3RfcHV0Rm9yd2FyZHNBdHRyaWJ1dGUpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNUZXN0R2xvYmFsT2JqZWN0X3B1dEZvcndhcmRzQXR0cmlidXRlKTsKIHN0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q0VSZWFjdGlv
bnNDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RH
bG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3Rvcik7CiBzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENhbGxU
cmFjZXJDb25zdHJ1Y3Rvcik7CkBAIC0yNDIsMTEgKzI0NiwxMSBAQCB1c2luZyBKU1Rlc3RHbG9i
YWxPYmplY3RET01Db25zdHJ1Y3RvciA9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4WzI2N10gPSB7CiAgICAgeyAtMSwg
LTEgfSwKLSAgICB7IDQwLCAtMSB9LAorICAgIHsgNDEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IDAsIC0xIH0sCi0gICAgeyA0LCAtMSB9LAotICAgIHsgNDQsIC0xIH0sCisgICAgeyA1
LCAtMSB9LAorICAgIHsgNDUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCkBAIC0yNTQsMTUgKzI1OCwxNSBAQCBzdGF0aWMgY29uc3Qgc3Ry
dWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1NCwgLTEgfSwKKyAgICB7IDU1LCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ4LCAtMSB9LAorICAgIHsgNDksIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDYzLCAtMSB9LAorICAgIHsgNjQsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0yNzYsMTQg
KzI4MCwxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzNCwg
LTEgfSwKKyAgICB7IDM1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7
IDY2LCAtMSB9LAotICAgIHsgMTMsIDI2MCB9LAorICAgIHsgNjcsIC0xIH0sCisgICAgeyAxNCwg
MjYwIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CkBAIC0yOTEsMTEgKzI5NSwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5k
ZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
Ci0gICAgeyAzOCwgLTEgfSwKLSAgICB7IDE5LCAyNTcgfSwKLSAgICB7IDYsIC0xIH0sCisgICAg
eyAzOSwgLTEgfSwKKyAgICB7IDIwLCAyNTcgfSwKKyAgICB7IDcsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKLSAgICB7IDQ1LCAtMSB9LAorICAgIHsgNDYsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zMDQsMjAgKzMwOCwyMCBAQCBz
dGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzNiwgLTEgfSwKKyAgICB7
IDM3LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgMjEsIDI2NSB9LAorICAgIHsgMjIsIDI2NSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKLSAgICB7IDUsIC0xIH0sCisgICAgeyA2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzI1LDI3ICszMjksMjcgQEAgc3Rh
dGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjksIC0xIH0sCi0gICAgeyA1
NiwgLTEgfSwKKyAgICB7IDMwLCAtMSB9LAorICAgIHsgNTcsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA5LCAyNTYgfSwKKyAgICB7IDEw
LCAyNTYgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNTgsIC0xIH0sCi0gICAgeyAxOCwgLTEg
fSwKKyAgICB7IDU5LCAtMSB9LAorICAgIHsgMTksIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxNywgLTEgfSwKKyAgICB7IDE4
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzNSwgLTEgfSwKKyAgICB7IDM2LCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzUzLDE1
ICszNTcsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjMs
IC0xIH0sCisgICAgeyAyNCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMiwgLTEgfSwK
LSAgICB7IDM3LCAtMSB9LAotICAgIHsgLTEsIC0xIH0sCisgICAgeyAzOCwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyMCwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAorICAgIHsgMjEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCkBAIC0zNzMsMTUgKzM3NiwxNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0
IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyNywgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsg
NDIsIC0xIH0sCisgICAgeyAyOCwgLTEgfSwKKyAgICB7IDMsIC0xIH0sCisgICAgeyA0MywgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1MywgLTEgfSwKKyAgICB7IDU0
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LApAQCAtMzg5LDIyICszOTMsMjIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaElu
ZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAotICAgIHsgNDcsIC0xIH0sCisgICAgeyA0OCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCi0gICAgeyAxMCwgLTEgfSwKKyAgICB7IDExLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNjQsIC0xIH0sCisgICAg
eyA2NSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKLSAgICB7IDI2LCAtMSB9LAotICAgIHsgMzEsIC0xIH0sCisgICAgeyAyNywgLTEgfSwK
KyAgICB7IDMyLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LApAQCAtNDE0LDkgKzQxOCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFj
dEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKLSAgICB7IDE1LCAyNTkgfSwKKyAgICB7IDE2LCAyNTkgfSwKICAgICB7IC0xLCAt
MSB9LAotICAgIHsgNTksIC0xIH0sCisgICAgeyA2MCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQyNSwxMSArNDI5LDExIEBAIHN0
YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDMzLCAyNjYgfSwKKyAgICB7
IDM0LCAyNjYgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMTYsIC0xIH0sCisgICAgeyAxNywg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNjIsIC0xIH0sCisgICAgeyA2MywgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQ0
MCw3ICs0NDQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAx
MiwgLTEgfSwKKyAgICB7IDEzLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LApAQCAtNDQ4LDExICs0NTIsMTEgQEAgc3RhdGljIGNvbnN0IHN0
cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDYsIC0xIH0sCisgICAgeyA0NywgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDEx
LCAtMSB9LAorICAgIHsgMTIsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCkBAIC00NjEsNTMgKzQ2NSw1MyBAQCBzdGF0aWMgY29uc3Qgc3Ry
dWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1NywgLTEgfSwKKyAgICB7IDU4LCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA4LCAt
MSB9LAorICAgIHsgOSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDksIDI2MyB9LAotICAgIHsg
NywgMjYyIH0sCisgICAgeyA1MCwgMjYzIH0sCisgICAgeyA4LCAyNjIgfSwKICAgICB7IC0xLCAt
MSB9LAotICAgIHsgNjAsIC0xIH0sCisgICAgeyA2MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDE0LCAtMSB9LAorICAgIHsgMTUsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDI0LCAtMSB9LAorICAgIHsgMjUsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzAsIC0xIH0sCisgICAgeyAz
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKLSAgICB7IDMsIC0xIH0sCi0gICAgeyA1MSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAorICAg
IHsgNCwgLTEgfSwKICAgICB7IDUyLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCisgICAgeyA1Mywg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
LSAgICB7IDIyLCAyNTggfSwKLSAgICB7IDI1LCAyNjQgfSwKLSAgICB7IDI4LCAyNjEgfSwKLSAg
ICB7IDMyLCAtMSB9LAotICAgIHsgMzksIC0xIH0sCi0gICAgeyA0MSwgLTEgfSwKLSAgICB7IDQz
LCAtMSB9LAotICAgIHsgNTAsIC0xIH0sCi0gICAgeyA1NSwgLTEgfSwKLSAgICB7IDYxLCAtMSB9
LAotICAgIHsgNjUsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDIzLCAyNTggfSwKKyAg
ICB7IDI2LCAyNjQgfSwKKyAgICB7IDI5LCAyNjEgfSwKKyAgICB7IDMzLCAtMSB9LAorICAgIHsg
NDAsIC0xIH0sCisgICAgeyA0MiwgLTEgfSwKKyAgICB7IDQ0LCAtMSB9LAorICAgIHsgNTEsIC0x
IH0sCisgICAgeyA1NiwgLTEgfSwKKyAgICB7IDYyLCAtMSB9LAorICAgIHsgNjYsIC0xIH0sCiB9
OwogCiAKQEAgLTUyMCw2ICs1MjQsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNU
ZXN0R2xvYmFsCiAjZWxzZQogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAj
ZW5kaWYKKyAgICB7ICJwdXRGb3J3YXJkc0F0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
R2xvYmFsT2JqZWN0X3B1dEZvcndhcmRzQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0X3B1
dEZvcndhcmRzQXR0cmlidXRlKSB9IH0sCiAgICAgeyAiVGVzdENFUmVhY3Rpb25zIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAg
ICAgeyAiVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9i
amVjdF9UZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsg
IlRlc3RDYWxsVHJhY2VyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENhbGxUcmFj
ZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKQEAgLTU5OCw3ICs2MDMsNyBAQCBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFsCiAgICAgeyAicmVndWxhck9wZXJhdGlvbiIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0
R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbl9yZWd1bGFyT3BlcmF0aW9uKSwgKGludHB0cl90
KSAoMSkgfSB9LAogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RHbG9iYWxPYmpl
Y3RUYWJsZSA9IHsgNjcsIDI1NSwgdHJ1ZSwgSlNUZXN0R2xvYmFsT2JqZWN0OjppbmZvKCksIEpT
VGVzdEdsb2JhbE9iamVjdFRhYmxlVmFsdWVzLCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4
IH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlID0geyA2
OCwgMjU1LCB0cnVlLCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmluZm8oKSwgSlNUZXN0R2xvYmFsT2Jq
ZWN0VGFibGVWYWx1ZXMsIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXggfTsKIC8qIEhhc2gg
dGFibGUgZm9yIGNvbnN0cnVjdG9yICovCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBK
U1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQpAQCAtODU5LDYgKzg2
NCw0MiBAQCBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0R2xvYmFsCiAKICNlbmRp
ZgogCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0X3B1dEZvcndhcmRz
QXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETEludGVyZmFjZTxUZXN0
Tm9kZT4+KGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0
aHJvd1Njb3BlLCBpbXBsLnB1dEZvcndhcmRzQXR0cmlidXRlKCkpKSk7Cit9CisKK0pTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfcHV0Rm9yd2FyZHNBdHRyaWJ1dGUs
IChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0X3B1dEZv
cndhcmRzQXR0cmlidXRlR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBh
dHRyaWJ1dGVOYW1lKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9i
amVjdF9wdXRGb3J3YXJkc0F0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byBp
ZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKSwgc3RybGVuKCJwdXRGb3J3YXJkc0F0dHJpYnV0
ZSIpKTsKKyAgICBhdXRvIHZhbHVlVG9Gb3J3YXJkVG8gPSB0aGlzT2JqZWN0LnByb3h5KCkuZ2V0
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CisgICAgaWYgKFVOTElLRUxZKCF2YWx1ZVRvRm9yd2FyZFRvLmlzT2Jq
ZWN0KCkpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBhdXRvIGZvcndh
cmRJZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigibmFtZSIpLCBzdHJsZW4oIm5hbWUiKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QodmFsdWVUb0ZvcndhcmRUbywgZmFsc2UpOworICAgIGFzT2JqZWN0KHZhbHVlVG9Gb3J3YXJk
VG8pLT5tZXRob2RUYWJsZSh2bSktPnB1dChhc09iamVjdCh2YWx1ZVRvRm9yd2FyZFRvKSwgJmxl
eGljYWxHbG9iYWxPYmplY3QsIGZvcndhcmRJZCwgdmFsdWUsIHNsb3QpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOworICAgIHJldHVybiB0cnVlOworfQorCitK
U0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0R2xvYmFsT2JqZWN0X3B1dEZvcndhcmRz
QXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBQcm9wZXJ0eU5h
bWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9i
YWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0X3B1dEZvcndhcmRzQXR0cmlidXRl
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsIGF0
dHJpYnV0ZU5hbWUpOworfQorCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0X1Rlc3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzY0LDcg
KzczNjQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKIAotICAgICAgICBhdXRvIGNvbnRyb2xsZXJWYWx1ZSA9
IEpTQzo6Y2FsbCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCAmZ2xv
YmFsT2JqZWN0LCBhcmdMaXN0KTsKKyAgICAgICAgYXV0byBjb250cm9sbGVyVmFsdWUgPSBKU0M6
OmNhbGwoJmxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgJmdsb2JhbE9i
amVjdC5wcm94eSgpLCBhcmdMaXN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgcmVwb3J0RXhjZXB0aW9uQW5kUmV0dXJuRmFsc2UoKSk7CiAKICAgICAgICAgYXV0byogY29u
dHJvbGxlck9iamVjdCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTT2JqZWN0Kj4odm0sIGNv
bnRyb2xsZXJWYWx1ZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzgxNTkpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wNS0yNyAg
QWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10g
QWJvbGlzaCB1c2luZyByZXNvbHZlZCBzY29wZSBhcyB8dGhpc3wgdmFsdWUgd2hlbiBjYWxsaW5n
IGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI1Mzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBqcy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5kLWNv
bnN0cnVjdGlvbi5qczoKKwogMjAyMS0wNS0yNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBIMjY0IHByb2ZpbGVzIGluIE1lZGlhUmVjb3JkZXIK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9kb20tYWNjZXNzLWZyb20tY2xvc3Vy
ZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy9kb20tYWNjZXNzLWZyb20tY2xvc3VyZS1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAyNzgxNTkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZG9tLWFjY2Vzcy1m
cm9tLWNsb3N1cmUtaWZyYW1lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIGRvY3VtZW50LlVSTDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3Jlc291cmNl
cy9kb20tYWNjZXNzLWZyb20tY2xvc3VyZS1pZnJhbWUtY2hpbGQuaHRtbAogd2luZG93LmRvY3Vt
ZW50LlVSTDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3Jlc291cmNlcy9ub3RpZnktcGFy
ZW50LWRvbmUuaHRtbAotbmFtZToKK25hbWU6IGNoaWxkCiB3aW5kb3cubmFtZTogY2hpbGQKIApJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2RvbS1hY2Nlc3MtZnJvbS1jbG9zdXJl
LXdpbmRvdy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L2RvbS1hY2Nlc3MtZnJvbS1jbG9zdXJlLXdpbmRvdy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDI3ODE1OSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9kb20tYWNjZXNzLWZy
b20tY2xvc3VyZS13aW5kb3ctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogZG9jdW1lbnQuVVJMOiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvcmVzb3VyY2Vz
L2RvbS1hY2Nlc3MtZnJvbS1jbG9zdXJlLXdpbmRvdy1jaGlsZC5odG1sCiB3aW5kb3cuZG9jdW1l
bnQuVVJMOiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvcmVzb3VyY2VzL25vdGlmeS1vcGVu
ZXItZG9uZS5odG1sCi1uYW1lOgorbmFtZTogY2hpbGQKIHdpbmRvdy5uYW1lOiBjaGlsZAogCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZG9tLWFjY2Vzcy1mcm9tLWNsb3N1cmUt
d2luZG93LXdpdGgtZ2MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy9kb20tYWNjZXNzLWZyb20tY2xvc3VyZS13aW5kb3ctd2l0aC1nYy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDI3ODE1OSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRv
dy9kb20tYWNjZXNzLWZyb20tY2xvc3VyZS13aW5kb3ctd2l0aC1nYy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiBkb2N1bWVudC5VUkw6IExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy9yZXNvdXJjZXMvZG9tLWFjY2Vzcy1mcm9tLWNsb3N1cmUtd2luZG93LWNo
aWxkLmh0bWwKIHdpbmRvdy5kb2N1bWVudC5VUkw6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRv
dy9yZXNvdXJjZXMvbm90aWZ5LW9wZW5lci1kb25lLmh0bWwKLW5hbWU6CituYW1lOiBjaGlsZAog
d2luZG93Lm5hbWU6IGNoaWxkCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzLURFTklFRC1jb250ZW50V2luZG93LWV2YWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1jb250ZW50V2lu
ZG93LWV2YWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzgxNTkpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtY29udGVudFdpbmRvdy1ldmFsLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSArMSwyIEBACitDT05TT0xFIE1FU1NBR0U6IFNlY3Vy
aXR5RXJyb3I6IFRoZSBvcGVyYXRpb24gaXMgaW5zZWN1cmUuCiBUaGlzIHRlc3QgcGFzc2VzIGlm
IGFsZXJ0KCkgaXMgbm90IGNhbGxlZC4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkveHNzLURFTklFRC1odG1sZWxlbG1lbnQtd2l0aC1pZnJhbWUtcHJvdG8tZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURF
TklFRC1odG1sZWxlbG1lbnQtd2l0aC1pZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAyNzgxNTkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQt
aHRtbGVsZWxtZW50LXdpdGgtaWZyYW1lLXByb3RvLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNCw3ICs0LDcgQEAgVGVzdHMgdGhhdCBtYWtpbmcgb3RoZXIgZnJhbWUgd2luZG93IGEg
cAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgX19wcm90b19fID0gdGFyZ2V0
V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5cGUuX19wcm90
b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZC4KK1BBU1MgX19wcm90b19fID0gdGFyZ2V0
V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBzZXQgcHJvdG90eXBlIG9m
IGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0LgogUEFTUyB0YXJnZXRXaW5kb3cubXlpbnB1dCB0
aHJldyBleGNlcHRpb24gU2VjdXJpdHlFcnJvcjogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2lu
ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiIGZyb20gYWNjZXNzaW5nIGEgY3Jvc3Mtb3JpZ2luIGZy
YW1lLiBQcm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLi4KIFBBU1M6IHN1
Y2Nlc3NmdWxseVBhcnNlZCBzaG91bGQgYmUgJ3RydWUnIGFuZCBpcy4KIApJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELW1ldGhvZC13aXRoLWlmcmFtZS1w
cm90by1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3MtREVOSUVELW1ldGhvZC13aXRoLWlmcmFtZS1wcm90by1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDI3ODE1OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
LURFTklFRC1tZXRob2Qtd2l0aC1pZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC03LDcgKzcsNyBAQCBUZXN0cyB0aGF0IG1ha2luZyBvdGhlciBmcmFtZSB3aW5kb3cg
YSBwCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBfX3Byb3RvX18gPSB0YXJn
ZXRXaW5kb3cgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3By
b3RvX18gY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkLgorUEFTUyBfX3Byb3RvX18gPSB0YXJn
ZXRXaW5kb3cgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90IHNldCBwcm90b3R5cGUg
b2YgaW1tdXRhYmxlIHByb3RvdHlwZSBvYmplY3QuCiBQQVNTOiBzdWNjZXNzZnVsbHlQYXJzZWQg
c2hvdWxkIGJlICd0cnVlJyBhbmQgaXMuCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1ub24tc2hhZG93YWJsZS1wcm9wdGVy
dHktd2l0aC1pZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1ub24tc2hhZG93YWJsZS1wcm9wdGVy
dHktd2l0aC1pZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzgxNTkpCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtbm9uLXNoYWRvd2FibGUt
cHJvcHRlcnR5LXdpdGgtaWZyYW1lLXByb3RvLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNCw3ICs0LDcgQEAgVGVzdHMgdGhhdCBtYWtpbmcgb3RoZXIgZnJhbWUgd2luZG93IGEgcAog
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgX19wcm90b19fID0gdGFyZ2V0V2lu
ZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5cGUuX19wcm90b19f
IGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZC4KK1BBU1MgX19wcm90b19fID0gdGFyZ2V0V2lu
ZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGlt
bXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0LgogUEFTUzogbG9jYXRpb24gPT09IG9yaWdpbmFsTG9j
YXRpb24gc2hvdWxkIGJlICd0cnVlJyBhbmQgaXMuCiBQQVNTOiB0aGlzLmxvY2F0aW9uID09PSBv
cmlnaW5hbExvY2F0aW9uIHNob3VsZCBiZSAndHJ1ZScgYW5kIGlzLgogUEFTUzogc3VjY2Vzc2Z1
bGx5UGFyc2VkIHNob3VsZCBiZSAndHJ1ZScgYW5kIGlzLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXJlZ3VsYXItcHJvcHRlcnR5LXdpdGgtaWZyYW1l
LXByb3RvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzcy1ERU5JRUQtcmVndWxhci1wcm9wdGVydHktd2l0aC1pZnJhbWUtcHJvdG8t
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzgxNTkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzcy1ERU5JRUQtcmVndWxhci1wcm9wdGVydHktd2l0aC1pZnJhbWUtcHJvdG8t
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQCBPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiAKIAogUEFTUyB0aGlzLl9fcHJvdG9fXyA9IHRh
cmdldFdpbmRvdyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3Qgc2V0IHByb3RvdHlw
ZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdC4KLVBBU1MgX19wcm90b19fID0gdGFyZ2V0
V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5cGUuX19wcm90
b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZC4KK1BBU1MgX19wcm90b19fID0gdGFyZ2V0
V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBzZXQgcHJvdG90eXBlIG9m
IGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0LgogUEFTUzogaW5uZXJIZWlnaHQgPT09IG9yaWdp
bmFsSW5uZXJIZWlnaHQgc2hvdWxkIGJlICd0cnVlJyBhbmQgaXMuCiBQQVNTOiB0aGlzLmlubmVy
SGVpZ2h0ID09PSBvcmlnaW5hbElubmVySGVpZ2h0IHNob3VsZCBiZSAndHJ1ZScgYW5kIGlzLgog
UEFTUzogc3VjY2Vzc2Z1bGx5UGFyc2VkIHNob3VsZCBiZSAndHJ1ZScgYW5kIGlzLgpJbmRleDog
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNj
cmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnktZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0
LXRoaXMtdmFsdWUuYW55LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4MTU5KQorKysgTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1i
aW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnktZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQCBQQVNTIEdsb2JhbCBvYmplY3QncyBvcGVy
YXRpb24gdGhyb3dzIHdoCiBQQVNTIEdsb2JhbCBvYmplY3QncyBnZXR0ZXIgdGhyb3dzIHdoZW4g
Y2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QgKGRvY3VtZW50LmFsbCkKIFBBU1MgR2xvYmFs
IG9iamVjdCdzIHNldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVj
dCAoZG9jdW1lbnQuYWxsKQogUEFTUyBHbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHRocm93cyB3
aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0IChkb2N1bWVudC5hbGwpCi1GQUlMIEds
b2JhbCBvYmplY3QncyBnZXR0ZXIgd29ya3Mgd2hlbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5l
ZCBUaGUgV2luZG93LmxvY2F0aW9uIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiBXaW5kb3cKLUZBSUwgR2xvYmFsIG9iamVjdCdzIHNldHRlciB3b3JrcyB3aGVuIGNhbGxl
ZCBvbiBudWxsIC8gdW5kZWZpbmVkIFRoZSBXaW5kb3cub25vbmxpbmUgc2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdpbmRvdworUEFTUyBHbG9iYWwgb2JqZWN0J3MgZ2V0
dGVyIHdvcmtzIHdoZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQKK1BBU1MgR2xvYmFsIG9i
amVjdCdzIHNldHRlciB3b3JrcyB3aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkCiBQQVNT
IEdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gd29ya3Mgd2hlbiBjYWxsZWQgb24gbnVsbCAvIHVu
ZGVmaW5lZAogCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlz
LXZhbHVlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGlu
Zy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lndvcmtlci1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDI3ODE1OSkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxp
Y2l0LXRoaXMtdmFsdWUuYW55Lndvcmtlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTIsNyArMiw3IEBACiBQQVNTIEdsb2JhbCBvYmplY3QncyBnZXR0ZXIgdGhyb3dzIHdoZW4gY2Fs
bGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QKIFBBU1MgR2xvYmFsIG9iamVjdCdzIHNldHRlciB0
aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdAogUEFTUyBHbG9iYWwgb2Jq
ZWN0J3Mgb3BlcmF0aW9uIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0
Ci1GQUlMIEdsb2JhbCBvYmplY3QncyBnZXR0ZXIgd29ya3Mgd2hlbiBjYWxsZWQgb24gbnVsbCAv
IHVuZGVmaW5lZCBUaGUgV29ya2VyR2xvYmFsU2NvcGUubG9jYXRpb24gZ2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdvcmtlckdsb2JhbFNjb3BlCi1GQUlMIEdsb2JhbCBv
YmplY3QncyBzZXR0ZXIgd29ya3Mgd2hlbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZCBUaGUg
V29ya2VyR2xvYmFsU2NvcGUub25vbmxpbmUgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5z
dGFuY2VzIG9mIFdvcmtlckdsb2JhbFNjb3BlCitQQVNTIEdsb2JhbCBvYmplY3QncyBnZXR0ZXIg
d29ya3Mgd2hlbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZAorUEFTUyBHbG9iYWwgb2JqZWN0
J3Mgc2V0dGVyIHdvcmtzIHdoZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQKIFBBU1MgR2xv
YmFsIG9iamVjdCdzIG9wZXJhdGlvbiB3b3JrcyB3aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZp
bmVkCiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9icm93c2Vycy93aW5kb3dzL2VtYmVkZGVkLW9wZW5lci1yZW1vdmUtZnJhbWUtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dzL2VtYmVkZGVkLW9wZW5lci1yZW1vdmUtZnJh
bWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzgxNTkpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvd2luZG93cy9lbWJlZGRlZC1v
cGVuZXItcmVtb3ZlLWZyYW1lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsx
LDQgQEAKIAotRkFJTCBvcGVuZXIgb2YgZGlzY2FyZGVkIG5lc3RlZCBicm93c2luZyBjb250ZXh0
IFRoZSBXaW5kb3cub3BlbmVyIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBv
ZiBXaW5kb3cKLUZBSUwgb3BlbmVyIG9mIGRpc2NhcmRlZCBhdXhpbGlhcnkgYnJvd3NpbmcgY29u
dGV4dCBUaGUgV2luZG93Lm9wZW5lciBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5j
ZXMgb2YgV2luZG93CitQQVNTIG9wZW5lciBvZiBkaXNjYXJkZWQgbmVzdGVkIGJyb3dzaW5nIGNv
bnRleHQKK1BBU1Mgb3BlbmVyIG9mIGRpc2NhcmRlZCBhdXhpbGlhcnkgYnJvd3NpbmcgY29udGV4
dAogCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9leGVjdXRpb24tdGlt
aW5nLzA4My1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2Ny
aXB0LWVsZW1lbnQvZXhlY3V0aW9uLXRpbWluZy8wODMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAy
NzgxNTkpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9leGVjdXRpb24tdGlt
aW5nLzA4My1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw0IEBACi1DT05T
T0xFIE1FU1NBR0U6IFR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5n
ICd0b3AubG9nJykKIEZBSUxFRCAoVGhpcyBUQyByZXF1aXJlcyBKYXZhU2NyaXB0IGVuYWJsZWQp
CiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gVHlwZUVycm9yOiBudWxsIGlzIG5v
dCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3RvcC5sb2cnKQotCi1GQUlMICBzY2hlZHVsZXI6IGV2
ZW50IGxpc3RlbmVyIGRlZmluZWQgYnkgc2NyaXB0IGluIGEgZG9jdW1lbnQgaW4gaGlzdG9yeSBh
c3NlcnRfYXJyYXlfZXF1YWxzOiBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgWyJpbmxp
bmUgc2NyaXB0ICMxIiwgIklGUkFNRSBzY3JpcHQiLCAiZW5kIHNjcmlwdCAjMSIsICJldmVudDog
Zm9vIiwgImlubGluZSBzY3JpcHQgIzIiXSBsZW5ndGggNSwgZ290IFsiaW5saW5lIHNjcmlwdCAj
MSIsICJJRlJBTUUgc2NyaXB0IiwgImVuZCBzY3JpcHQgIzEiLCAiZXZlbnQ6IGZvbyIsICJldmVu
dDogZm9vIiwgImlubGluZSBzY3JpcHQgIzIiXSBsZW5ndGggNgorRkFJTCAgc2NoZWR1bGVyOiBl
dmVudCBsaXN0ZW5lciBkZWZpbmVkIGJ5IHNjcmlwdCBpbiBhIGRvY3VtZW50IGluIGhpc3Rvcnkg
YXNzZXJ0X2FycmF5X2VxdWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIGFycmF5IFsiaW5s
aW5lIHNjcmlwdCAjMSIsICJJRlJBTUUgc2NyaXB0IiwgImVuZCBzY3JpcHQgIzEiLCAiZXZlbnQ6
IGZvbyIsICJpbmxpbmUgc2NyaXB0ICMyIl0gbGVuZ3RoIDUsIGdvdCBbImlubGluZSBzY3JpcHQg
IzEiLCAiSUZSQU1FIHNjcmlwdCIsICJlbmQgc2NyaXB0ICMxIiwgImV2ZW50OiBmb28iLCAiZXZl
bnQ6IGZvbyIsICJpbmxpbmUgc2NyaXB0ICMyIiwgImV2ZW50OiBmb28iXSBsZW5ndGggNwogCklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tl
dHMvdW5sb2FkLWEtZG9jdW1lbnQvMDAxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvdW5sb2Fk
LWEtZG9jdW1lbnQvMDAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4MTU5KQorKysgTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL3VubG9hZC1h
LWRvY3VtZW50LzAwMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw1IEBA
CiBUZXN0IHJlcXVpcmVzIHBvcHVwIGJsb2NrZXIgZGlzYWJsZWQKIAogCi1IYXJuZXNzIEVycm9y
IChGQUlMKSwgbWVzc2FnZSA9IFRlc3QgbmFtZWQgJ1dlYlNvY2tldHM6IG5hdmlnYXRpbmcgdG9w
LWxldmVsIGJyb3dzaW5nIGNvbnRleHQnIHNwZWNpZmllZCAyICdjbGVhbnVwJyBmdW5jdGlvbnMs
IGFuZCAxIGZhaWxlZC4KLQogUEFTUyBXZWJTb2NrZXRzOiBuYXZpZ2F0aW5nIHRvcC1sZXZlbCBi
cm93c2luZyBjb250ZXh0CiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2Vic29ja2V0cy91bmxvYWQtYS1kb2N1bWVudC8wMDItZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2Vic29ja2V0cy91bmxvYWQtYS1kb2N1bWVudC8wMDItZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAyNzgxNTkpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnNvY2tldHMvdW5sb2FkLWEtZG9jdW1lbnQvMDAyLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSw3ICsxLDUgQEAKIFRlc3QgcmVxdWlyZXMgcG9wdXAgYmxvY2tlciBkaXNhYmxl
ZAogCiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gVGVzdCBuYW1lZCAnV2ViU29j
a2V0czogbmF2aWdhdGluZyB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dCB3aXRoIGNsb3NlZCB3
ZWJzb2NrZXQnIHNwZWNpZmllZCAyICdjbGVhbnVwJyBmdW5jdGlvbnMsIGFuZCAxIGZhaWxlZC4K
LQogRkFJTCBXZWJTb2NrZXRzOiBuYXZpZ2F0aW5nIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0
IHdpdGggY2xvc2VkIHdlYnNvY2tldCBhc3NlcnRfdW5yZWFjaGVkOiBkb2N1bWVudCB3YXMgZGlz
Y2FyZGVkIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQogCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvdW5sb2FkLWEtZG9jdW1lbnQv
MDAzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvdW5sb2FkLWEtZG9jdW1lbnQvMDAzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMjc4MTU5KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL3VubG9hZC1hLWRvY3VtZW50LzAwMy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5lc3MgRXJyb3IgKEZB
SUwpLCBtZXNzYWdlID0gVGVzdCBuYW1lZCAnV2ViU29ja2V0czogbmF2aWdhdGluZyBuZXN0ZWQg
YnJvd3NpbmcgY29udGV4dCcgc3BlY2lmaWVkIDIgJ2NsZWFudXAnIGZ1bmN0aW9ucywgYW5kIDEg
ZmFpbGVkLgotCiBQQVNTIFdlYlNvY2tldHM6IG5hdmlnYXRpbmcgbmVzdGVkIGJyb3dzaW5nIGNv
bnRleHQKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJzb2NrZXRzL3VubG9hZC1hLWRvY3VtZW50LzAwNC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2Nr
ZXRzL3VubG9hZC1hLWRvY3VtZW50LzAwNC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3ODE1OSkK
KysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0
cy91bmxvYWQtYS1kb2N1bWVudC8wMDQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsMyBAQAogCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFRlc3QgbmFtZWQg
J1dlYlNvY2tldHM6IG5hdmlnYXRpbmcgbmVzdGVkIGJyb3dzaW5nIGNvbnRleHQgd2l0aCBjbG9z
ZWQgd2Vic29ja2V0JyBzcGVjaWZpZWQgMiAnY2xlYW51cCcgZnVuY3Rpb25zLCBhbmQgMSBmYWls
ZWQuCi0KIEZBSUwgV2ViU29ja2V0czogbmF2aWdhdGluZyBuZXN0ZWQgYnJvd3NpbmcgY29udGV4
dCB3aXRoIGNsb3NlZCB3ZWJzb2NrZXQgYXNzZXJ0X3VucmVhY2hlZDogZG9jdW1lbnQgd2FzIGRp
c2NhcmRlZCBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKIApJbmRleDogTGF5b3V0VGVzdHMvanMv
b2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvanMvb2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVj
dGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3ODE1OSkKKysrIExheW91dFRlc3RzL2pzL29i
amVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC02Myw4ICs2MywxMCBAQCBQQVNTICEhT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcih7CiBQQVNTICEhT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih7c2V0IDQy
KHZhbHVlKXt9fSwgJzQyJykuc2V0IGlzIHRydWUKIFBBU1MgdGhpcy5fX3Byb3RvX18gPSBbXSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiBpbW11dGFi
bGUgcHJvdG90eXBlIG9iamVjdC4KIFBBU1MgKHtfX3Byb3RvX186IHRoaXMuX19wcm90b19ffSkg
aW5zdGFuY2VvZiBBcnJheSBpcyBmYWxzZQotUEFTUyBfX3Byb3RvX18gPSBbXSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXyBjYWxsZWQgb24gbnVs
bCBvciB1bmRlZmluZWQuCi1QQVNTICh7X19wcm90b19fOiBfX3Byb3RvX199KSBpbnN0YW5jZW9m
IEFycmF5IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2Jq
ZWN0IChldmFsdWF0aW5nICdfX3Byb3RvX18nKS4KK1BBU1MgX19wcm90b19fID0gW10gdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90IHNldCBwcm90b3R5cGUgb2YgaW1tdXRhYmxlIHBy
b3RvdHlwZSBvYmplY3QuCitQQVNTICh7X19wcm90b19fOiBfX3Byb3RvX199KSBpbnN0YW5jZW9m
IEFycmF5IGlzIGZhbHNlCitQQVNTIF9fcHJvdG9fXyBpcyBPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
Z2xvYmFsVGhpcykKK1BBU1MgX19wcm90b19fID0gX19wcm90b19fIGlzIE9iamVjdC5nZXRQcm90
b3R5cGVPZihnbG9iYWxUaGlzKQogU3ludGF4RXJyb3JzCiBQQVNTICh7YnJlYWt9KSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ2JyZWFrJyBhcyBh
IHNob3J0aGFuZCBwcm9wZXJ0eSBuYW1lLi4KIFBBU1MgKHtjYXNlfSkgdGhyZXcgZXhjZXB0aW9u
IFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICdjYXNlJyBhcyBhIHNob3J0aGFu
ZCBwcm9wZXJ0eSBuYW1lLi4KSW5kZXg6IExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9vYmpl
Y3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0
aW9uLmpzCShyZXZpc2lvbiAyNzgxNTkpCisrKyBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
b2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi5qcwkod29ya2luZyBjb3B5KQpA
QCAtMTEyLDggKzExMiwxMiBAQCBzaG91bGRCZVRydWUoIiEhT2JqZWN0LmdldE93blByb3BlcnR5
RGVzCiAvLyBfX3Byb3RvX18gc2hvcnRoYW5kIHNob3VsZCBub3QgbW9kaWZ5IHRoZSBwcm90b3R5
cGUuCiBzaG91bGRUaHJvdygidGhpcy5fX3Byb3RvX18gPSBbXSIpOwogc2hvdWxkQmVGYWxzZSgi
KHtfX3Byb3RvX186IHRoaXMuX19wcm90b19ffSkgaW5zdGFuY2VvZiBBcnJheSIpOwotc2hvdWxk
VGhyb3coIl9fcHJvdG9fXyA9IFtdIiwgJyJUeXBlRXJyb3I6IE9iamVjdC5wcm90b3R5cGUuX19w
cm90b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZCInKTsKLXNob3VsZFRocm93KCIoe19f
cHJvdG9fXzogX19wcm90b19ffSkgaW5zdGFuY2VvZiBBcnJheSIsICciVHlwZUVycm9yOiB1bmRl
ZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyBcJ19fcHJvdG9fX1wnKSInKTsKKwor
Ly8gX19wcm90b19fIGdldHRlciAvIHNldHRlciBjYWxsZWQgb24gZ2xvYmFsIG9iamVjdAorc2hv
dWxkVGhyb3coIl9fcHJvdG9fXyA9IFtdIiwgJyJUeXBlRXJyb3I6IENhbm5vdCBzZXQgcHJvdG90
eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0IicpOworc2hvdWxkQmVGYWxzZSgiKHtf
X3Byb3RvX186IF9fcHJvdG9fX30pIGluc3RhbmNlb2YgQXJyYXkiKTsKK3Nob3VsZEJlKCJfX3By
b3RvX18iLCAiT2JqZWN0LmdldFByb3RvdHlwZU9mKGdsb2JhbFRoaXMpIik7CitzaG91bGRCZSgi
X19wcm90b19fID0gX19wcm90b19fIiwgIk9iamVjdC5nZXRQcm90b3R5cGVPZihnbG9iYWxUaGlz
KSIpOwogCiAvLyBLZXl3b3JkcyAtIFN5bnRheCBFcnJvcnMKIGRlYnVnKCJTeW50YXhFcnJvcnMi
KTsKSW5kZXg6IExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGUt
Y2xvc2VkLWRhdGFiYXNlLW9iamVjdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QuanMJ
KHJldmlzaW9uIDI3ODE1OSkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9kZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9iamVjdC5qcwkod29ya2luZyBjb3B5KQpAQCAt
MjMsMTMgKzIzLDE1IEBAIGZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKICAgICAgICAgZGVidWcoIkRy
b3BwaW5nIHJlZmVyZW5jZXMgdG8gbmV3IGNvbm5lY3Rpb24uIik7CiAgICAgICAgIC8vIEFmdGVy
IGxlYXZpbmcgdGhpcyBmdW5jdGlvbiwgdGhlcmUgYXJlIG5vIHJlbWFpbmluZyByZWZlcmVuY2Vz
IHRvIHRoZQogICAgICAgICAvLyBkYiwgc28gaXQgc2hvdWxkIGdldCBkZWxldGVkLgotICAgICAg
ICBzZXRUaW1lb3V0KHNldFZlcnNpb24sIDIpOworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImdjKCkiKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
c2V0VmVyc2lvbik7CisgICAgICAgIH0pOwogICAgIH07CiB9CiAKIGZ1bmN0aW9uIHNldFZlcnNp
b24oKQogewotICAgIGV2YWxBbmRMb2coImdjKCkiKTsKICAgICBkZWJ1ZygiT3BlbiByZXF1ZXN0
IHNob3VsZCBub3QgcmVjZWl2ZSBhIGJsb2NrZWQgZXZlbnQ6Iik7CiAgICAgdmFyIHJlcXVlc3Qg
PSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihkYm5hbWUsIDIpIik7CiAgICAgcmVxdWVzdC5v
bmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429991</attachid>
            <date>2021-05-27 23:10:20 -0700</date>
            <delta_ts>2021-05-27 23:52:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225397-20210528091018.patch</filename>
            <type>text/plain</type>
            <size>168450</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzgxNTkpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTI3ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBBYm9saXNoIHVzaW5nIHJlc29sdmVkIHNjb3Bl
IGFzIHx0aGlzfCB2YWx1ZSB3aGVuIGNhbGxpbmcgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9iaWctaW50LXNwZWMtdG8t
dGhpcy5qczoKKyAgICAgICAgKiBzdHJlc3MvYmlnLWludC1zdHJpY3Qtc3BlYy10by10aGlzLmpz
OgorICAgICAgICAqIHN0cmVzcy92YXJpYWJsZS1uYW1lZC1ldmFsLmpzOiBBZGRlZC4KKwogMjAy
MS0wNS0yMiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAg
ICAgU3VwcG9ydCBFcmdvbm9taWMgQnJhbmQgQ2hlY2tzIHByb3Bvc2FsIChgI3ggaW4gb2JqYCkK
SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2JpZy1pbnQtc3BlYy10by10aGlzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEpTVGVzdHMvc3RyZXNzL2JpZy1pbnQtc3BlYy10by10aGlzLmpzCShyZXZpc2lvbiAyNzgx
NTkpCisrKyBKU1Rlc3RzL3N0cmVzcy9iaWctaW50LXNwZWMtdG8tdGhpcy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDMgQEAKLS8vQCBza2lwIGlmIG5vdCAkaml0VGVzdHMKLS8vQCBydW5E
ZWZhdWx0KCItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFsc2UiKQotCiBmdW5jdGlvbiBhc3NlcnQoYSkg
ewogICAgIGlmICghYSkKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7
CkBAIC0xOCw2ICsxNSwzIEBAIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CiAgICAgYXNzZXJ0KGZvby5hcHBseSgzMDAp
ID09PSAib2JqZWN0Iik7CiB9Ci0KLWFzc2VydChudW1iZXJPZkRGR0NvbXBpbGVzKGZvbykgPT09
IDEpOwotCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9iaWctaW50LXN0cmljdC1zcGVjLXRvLXRoaXMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvYmlnLWludC1zdHJpY3Qtc3BlYy10by10
aGlzLmpzCShyZXZpc2lvbiAyNzgxNTkpCisrKyBKU1Rlc3RzL3N0cmVzcy9iaWctaW50LXN0cmlj
dC1zcGVjLXRvLXRoaXMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSwzIEBACi0vL0AgcnVu
RGVmYXVsdCgiLS11c2VDb25jdXJyZW50SklUPWZhbHNlIikKLQogZnVuY3Rpb24gYXNzZXJ0KGEp
IHsKICAgICBpZiAoIWEpCiAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiIp
OwpAQCAtMTgsNiArMTYsMyBAQCBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogICAgIGFzc2VydChmb28uYXBwbHkoMzAw
KSA9PT0gIm51bWJlciIpOwogfQotCi1hc3NlcnQobnVtYmVyT2ZERkdDb21waWxlcyhmb28pID4g
MSk7Ci0KSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2dsb2JhbC1vYmplY3QtYWNjZXNzb3ItcHJvcGVy
dHktdGhpcy12YWx1ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9nbG9iYWwtb2Jq
ZWN0LWFjY2Vzc29yLXByb3BlcnR5LXRoaXMtdmFsdWUuanMJKG5vbmV4aXN0ZW50KQorKysgSlNU
ZXN0cy9zdHJlc3MvZ2xvYmFsLW9iamVjdC1hY2Nlc3Nvci1wcm9wZXJ0eS10aGlzLXZhbHVlLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBCYWQgdmFsdWU6ICR7YWN0dWFsfS5gKTsKK30KKworKGZ1bmN0aW9uIHNh
bWVSZWFsbU5vbkluZGV4KCkgeworICAgIGxldCBfX2ZvbyA9IC0xOworICAgIE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShnbG9iYWxUaGlzLCAiZm9vIiwgeworICAgICAgICBnZXQoKSB7CisgICAgICAg
ICAgICBzaG91bGRCZSh0aGlzLCBnbG9iYWxUaGlzKTsKKyAgICAgICAgICAgIHJldHVybiBfX2Zv
bzsKKyAgICAgICAgfSwKKyAgICAgICAgc2V0KHZhbHVlKSB7CisgICAgICAgICAgICBzaG91bGRC
ZSh0aGlzLCBnbG9iYWxUaGlzKTsKKyAgICAgICAgICAgIF9fZm9vID0gdmFsdWU7CisgICAgICAg
IH0sCisgICAgfSk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNjsgaSsrKSB7CisgICAg
ICAgIHNob3VsZEJlKGZvbywgaSAtIDEpOworICAgICAgICBmb28gPSBpOworICAgICAgICBzaG91
bGRCZShmb28sIGkpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBzYW1lUmVhbG1JbmRleGVk
KCkgeworICAgIGxldCBfXzAgPSAtMTsKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2xvYmFs
VGhpcywgIjAiLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKHRoaXMs
IGdsb2JhbFRoaXMpOworICAgICAgICAgICAgcmV0dXJuIF9fMDsKKyAgICAgICAgfSwKKyAgICAg
ICAgc2V0KHZhbHVlKSB7CisgICAgICAgICAgICBzaG91bGRCZSh0aGlzLCBnbG9iYWxUaGlzKTsK
KyAgICAgICAgICAgIF9fMCA9IHZhbHVlOworICAgICAgICB9LAorICAgIH0pOworCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxZTY7IGkrKykgeworICAgICAgICBzaG91bGRCZShnbG9iYWxUaGlz
WzBdLCBpIC0gMSk7CisgICAgICAgIGdsb2JhbFRoaXNbMF0gPSBpOworICAgICAgICBzaG91bGRC
ZShnbG9iYWxUaGlzWzBdLCBpKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24gY3Jvc3NSZWFs
bU5vbkluZGV4KCkgeworICAgIGNvbnN0IE90aGVyRnVuY3Rpb24gPSAkdm0uY3JlYXRlR2xvYmFs
T2JqZWN0KCkuRnVuY3Rpb247CisKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2xvYmFsVGhp
cywgImJhciIsIHsKKyAgICAgICAgZ2V0OiBuZXcgT3RoZXJGdW5jdGlvbigicmV0dXJuIHRoaXM7
IiksCisgICAgICAgIHNldDogbmV3IE90aGVyRnVuY3Rpb24oInZhbHVlIiwgInZhbHVlLnRoaXNW
YWx1ZSA9IHRoaXM7IiksCisgICAgfSk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNjsg
aSsrKSB7CisgICAgICAgIHNob3VsZEJlKGJhciwgZ2xvYmFsVGhpcyk7CisKKyAgICAgICAgY29u
c3QgdmFsdWUgPSB7fTsKKyAgICAgICAgYmFyID0gdmFsdWU7CisgICAgICAgIHNob3VsZEJlKHZh
bHVlLnRoaXNWYWx1ZSwgZ2xvYmFsVGhpcyk7CisgICAgfQorfSkoKTsKKworKGZ1bmN0aW9uIGNy
b3NzUmVhbG1JbmRleGVkKCkgeworICAgIGNvbnN0IE90aGVyRnVuY3Rpb24gPSAkdm0uY3JlYXRl
R2xvYmFsT2JqZWN0KCkuRnVuY3Rpb247CisKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2xv
YmFsVGhpcywgIjEiLCB7CisgICAgICAgIGdldDogbmV3IE90aGVyRnVuY3Rpb24oInJldHVybiB0
aGlzOyIpLAorICAgICAgICBzZXQ6IG5ldyBPdGhlckZ1bmN0aW9uKCJ2YWx1ZSIsICJ2YWx1ZS50
aGlzVmFsdWUgPSB0aGlzOyIpLAorICAgIH0pOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
ZTY7IGkrKykgeworICAgICAgICBzaG91bGRCZShnbG9iYWxUaGlzWzFdLCBnbG9iYWxUaGlzKTsK
KworICAgICAgICBjb25zdCB2YWx1ZSA9IHt9OworICAgICAgICBnbG9iYWxUaGlzWzFdID0gdmFs
dWU7CisgICAgICAgIHNob3VsZEJlKHZhbHVlLnRoaXNWYWx1ZSwgZ2xvYmFsVGhpcyk7CisgICAg
fQorfSkoKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3ZhcmlhYmxlLW5hbWVkLWV2YWwuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvdmFyaWFibGUtbmFtZWQtZXZhbC5qcwkobm9uZXhp
c3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy92YXJpYWJsZS1uYW1lZC1ldmFsLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTkgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBCYWQgdmFsdWU6ICR7YWN0dWFsfS5gKTsKK30KKworbGV0IGV2YWw7CisKKyhmdW5jdGlv
biB0aGlzVmFsdWUoKSB7CisgICAgZXZhbCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfTsK
KyAgICBzaG91bGRCZShldmFsKCksIGdsb2JhbFRoaXMpOworCisgICAgZXZhbCA9IGZ1bmN0aW9u
KCkgeyAidXNlIHN0cmljdCI7IHJldHVybiB0aGlzOyB9OworICAgIHNob3VsZEJlKGV2YWwoKSwg
dW5kZWZpbmVkKTsKKworICAgIGNvbnN0IGJpbmRpbmdPYmplY3QgPSB7IGV2YWwgfTsKKyAgICB3
aXRoIChiaW5kaW5nT2JqZWN0KSB7CisgICAgICAgIHNob3VsZEJlKGV2YWwoKSwgYmluZGluZ09i
amVjdCk7CisgICAgfQorfSkoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0MSBAQAorMjAyMS0wNS0yNyAgQWxleGV5IFNodmF5a2EgIDxzaHZh
aWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gQWJvbGlzaCB1c2luZyByZXNvbHZl
ZCBzY29wZSBhcyB8dGhpc3wgdmFsdWUgd2hlbiBjYWxsaW5nIGZ1bmN0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1Mzk3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJhY2tG
dW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsSW1wbCk6
CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpT
Qzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsSW1wbCk6CisgICAgICAgICogQVBJL0pT
Q29udGV4dFJlZi5jcHA6CisgICAgICAgIChKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QpOgorICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxp
emVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgICogYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9Ub1RoaXNTdGF0dXMuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEZ1bmN0aW9uRnJvbVNjb3BlKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omhhc1BhcmVudFdpdGhTY29wZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9UaGlzKToKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6VGFnZ2VkVGVtcGxhdGVOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFdmFsRnVuY3Rpb25DYWxsTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwOgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6dGhpc1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBkZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAg
ICAgICAoSlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6IERlbGV0ZWQuCisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3Rh
bnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0Mu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBUb1RoaXMpOgorICAgICAgICAqIGRm
Zy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0VDTUFNb2RlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjplY21hTW9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGVU
eXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlND
OjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUaGlzVmFs
dWVGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRv
VGhpcyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUp
OgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUb1RoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpjb21waWxlR2V0VGhpc1ZhbHVlRm9yQ2FsbCk6CisgICAgICAgICogZ2Vu
ZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6aW50ZXJuYWxD
b25zdHJ1Y3Rvck5hbWUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
dGhpc192YWx1ZV9mb3JfY2FsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b190aGlz
KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3RvX3RoaXMpOiBEZWxldGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAg
KiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlQXJyYXlJdGVyYXRvck9iamVjdCk6
CisgICAgICAgICogcnVudGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFU
SCk6CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6dG9H
bG9iYWxUaGlzKToKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
RGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tik6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9KU0JpZ0ludC5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OnRvVGhpc1Nsb3dDYXNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
Q0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkpTVmFsdWU6OnRvU2xvcHB5TW9kZVRoaXMgY29uc3QpOgorICAgICAgICAoSlND
OjpKU1ZhbHVlOjp0b1RoaXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0b1RoaXMpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpz
ZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0b1Ro
aXMpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpKU1Njb3BlOjp0b1RoaXMpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
dHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dG9UaGlzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKEpTQzo6VHlwZUluZm86
OnBlckNlbGxCaXQpOgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6b3ZlcnJpZGVzVG9UaGlzIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6Om9i
amVjdFByb3RvdHlwZUhhc093blByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAg
ICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9TeW1ib2wuaDoKKwogMjAyMS0w
NS0yNyAgRGFuaWVsIEtvbGVzYSAgPGRrb2xlc2FAaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlND
XSBGaXggY3Jhc2ggb24gMzItYml0IGJpZyBlbmRpYW4gc3lzdGVtcy4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTgzLDcgKzU4Myw2
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUEKICAgICBieXRlY29k
ZS9TcGVjdWxhdGVkVHlwZS5oCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKICAgICBieXRl
Y29kZS9TdXBlclNhbXBsZXIuaAotICAgIGJ5dGVjb2RlL1RvVGhpc1N0YXR1cy5oCiAgICAgYnl0
ZWNvZGUvVHlwZUxvY2F0aW9uLmgKICAgICBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCiAg
ICAgYnl0ZWNvZGUvVW5saW5rZWRFdmFsQ29kZUJsb2NrLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw2IEBAIGJ5dGVjb2RlL1N0
cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQKIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmNwcAogYnl0ZWNvZGUvU3R1YkluZm9TdW1tYXJ5LmNwcAogYnl0ZWNvZGUvU3VwZXJTYW1wbGVy
LmNwcAotYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmNwcAogYnl0ZWNvZGUvVHJhY2tlZFJlZmVyZW5j
ZXMuY3BwCiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKIGJ5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrR2VuZXJhdG9yLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9B
UElDYWxsYmFja0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Niw3ICs0Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEFQSUNhbGxiYWNrRnVuY3Rpb246OmNhbGwK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNDb250ZXh0
UmVmIGV4ZWNSZWYgPSB0b1JlZihnbG9iYWxPYmplY3QpOwogICAgIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uUmVmID0gdG9SZWYoY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKLSAgICBKU09iamVjdFJlZiB0
aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKSk7CisgICAgSlNPYmpl
Y3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9TbG9wcHlN
b2RlVGhpcyhnbG9iYWxPYmplY3QpKTsKIAogICAgIGludCBhcmd1bWVudENvdW50ID0gc3RhdGlj
X2Nhc3Q8aW50PihjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgVmVjdG9yPEpTVmFs
dWVSZWYsIDE2PiBhcmd1bWVudHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2Uu
Y3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgSlNWYWx1ZVJlZiBKU0V2YWx1
YXRlU2NyaXB0SW50ZXJuYWwoY29ucwogICAgIC8vIGV2YWx1YXRlIHNldHMgInRoaXMiIHRvIHRo
ZSBnbG9iYWwgb2JqZWN0IGlmIGl0IGlzIE5VTEwKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gdG9KUyhjdHgpOwogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4
Y2VwdGlvbjsKLSAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gcHJvZmlsZWRFdmFsdWF0ZShnbG9i
YWxPYmplY3QsIFByb2ZpbGluZ1JlYXNvbjo6QVBJLCBzb3VyY2UsIGpzVGhpc09iamVjdCwgZXZh
bHVhdGlvbkV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IHByb2ZpbGVkRXZh
bHVhdGUoZ2xvYmFsT2JqZWN0LCBQcm9maWxpbmdSZWFzb246OkFQSSwgc291cmNlLCBqc1RoaXNP
YmplY3QgPyBhc1B1YmxpY1RoaXNWYWx1ZShqc1RoaXNPYmplY3QpIDogbnVsbHB0ciwgZXZhbHVh
dGlvbkV4Y2VwdGlvbik7CiAKICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikgewogICAgICAg
ICBpZiAoZXhjZXB0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NDcsNyArNTQ3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OgogCiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihnbG9iYWxP
YmplY3QpOwogICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVmID0gdG9SZWYoY2FsbEZyYW1lLT5q
c0NhbGxlZSgpKTsKLSAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpT
T2JqZWN0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01B
TW9kZTo6c2xvcHB5KCkpKSk7CisgICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9TbG9wcHlNb2RlVGhpcyhnbG9iYWxPYmplY3QpKTsKICAg
ICAKICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD4qPih0b0pTKGZ1bmN0aW9uUmVmKSktPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xh
c3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAoSlNPYmplY3RDYWxsQXNG
dW5jdGlvbkNhbGxiYWNrIGNhbGxBc0Z1bmN0aW9uID0ganNDbGFzcy0+Y2FsbEFzRnVuY3Rpb24p
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAJKHJl
dmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVm
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDcgKzE5MSw3IEBAIEpTT2JqZWN0UmVmIEpTQ29u
dGV4dEdldEdsb2JhbE9iamVjdChKU0MKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAKLSAgICByZXR1cm4gdG9SZWYoanNDYXN0
PEpTT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnRvVGhpcyhnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSkpOworICAgIHJldHVybiB0
b1JlZihnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKSk7CiB9CiAKIEpTQ29udGV4dEdyb3VwUmVm
IEpTQ29udGV4dEdldEdyb3VwKEpTQ29udGV4dFJlZiBjdHgpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
MCw3ICsxNTAsNyBAQCBKU1ZhbHVlUmVmIEpTU2NyaXB0RXZhbHVhdGUoSlNDb250ZXh0UmVmCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGlu
dGVybmFsRXhjZXB0aW9uOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gdGhpc1ZhbHVlUmVmID8g
dG9KUyhnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZVJlZikgOiBqc1VuZGVmaW5lZCgpOworICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gdGhpc1ZhbHVlUmVmID8gYXNQdWJsaWNUaGlzVmFsdWUodG9KUyhn
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZVJlZikudG9TbG9wcHlNb2RlVGhpcyhnbG9iYWxPYmplY3Qp
KSA6IEpTVmFsdWUoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlKGdsb2JhbE9iamVj
dCwgU291cmNlQ29kZSgqc2NyaXB0KSwgdGhpc1ZhbHVlLCBpbnRlcm5hbEV4Y2VwdGlvbik7CiAg
ICAgaWYgKGludGVybmFsRXhjZXB0aW9uKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwkocmV2aXNpb24gMjc4
MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMJKHdvcmtp
bmcgY29weSkKQEAgLTE5NDgsMTIgKzE5NDgsMTcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
IGFyZ3ZbXSkKICAgICB2ID0gSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBmdW5jdGlv
biwgbywgMCwgTlVMTCwgTlVMTCk7CiAgICAgQVNTRVJUKEpTVmFsdWVJc0VxdWFsKGNvbnRleHQs
IHYsIG8sIE5VTEwpKTsKIAorICAgIEpTT2JqZWN0UmVmIHJhd0dsb2JhbE9iamVjdCA9IEpTT2Jq
ZWN0R2V0UHJveHlUYXJnZXQoZ2xvYmFsT2JqZWN0KTsKKyAgICBBU1NFUlQoIUpTVmFsdWVJc0Vx
dWFsKGNvbnRleHQsIHJhd0dsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBOVUxMKSk7CisKICAg
ICBjb25zdCBjaGFyKiB0aGlzU2NyaXB0ID0gInRoaXM7IjsKICAgICBKU1N0cmluZ1JlZiBzY3Jp
cHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh0aGlzU2NyaXB0KTsKICAgICB2ID0g
SlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHQsIE5VTEwsIE5VTEwsIDEsIE5VTEwpOwog
ICAgIEFTU0VSVChKU1ZhbHVlSXNFcXVhbChjb250ZXh0LCB2LCBnbG9iYWxPYmplY3QsIE5VTEwp
KTsKICAgICB2ID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHQsIG8sIE5VTEwsIDEs
IE5VTEwpOwogICAgIEFTU0VSVChKU1ZhbHVlSXNFcXVhbChjb250ZXh0LCB2LCBvLCBOVUxMKSk7
CisgICAgdiA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0LCByYXdHbG9iYWxPYmpl
Y3QsIE5VTEwsIDEsIE5VTEwpOworICAgIEFTU0VSVChKU1ZhbHVlSXNFcXVhbChjb250ZXh0LCB2
LCBnbG9iYWxPYmplY3QsIE5VTEwpKTsKICAgICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0KTsKIAog
ICAgIEpTU2NyaXB0UmVmIHNjcmlwdE9iamVjdCA9IEpTU2NyaXB0Q3JlYXRlUmVmZXJlbmNpbmdJ
bW1vcnRhbEFTQ0lJVGV4dChjb250ZXh0R3JvdXAsIDAsIDAsIHRoaXNTY3JpcHQsIHN0cmxlbih0
aGlzU2NyaXB0KSwgMCwgMCk7CkBAIC0xOTYxLDYgKzE5NjYsMTggQEAgaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqIGFyZ3ZbXSkKICAgICBBU1NFUlQoSlNWYWx1ZUlzRXF1YWwoY29udGV4dCwgdiwg
Z2xvYmFsT2JqZWN0LCBOVUxMKSk7CiAgICAgdiA9IEpTU2NyaXB0RXZhbHVhdGUoY29udGV4dCwg
c2NyaXB0T2JqZWN0LCBvLCBOVUxMKTsKICAgICBBU1NFUlQoSlNWYWx1ZUlzRXF1YWwoY29udGV4
dCwgdiwgbywgTlVMTCkpOworICAgIHYgPSBKU1NjcmlwdEV2YWx1YXRlKGNvbnRleHQsIHNjcmlw
dE9iamVjdCwgcmF3R2xvYmFsT2JqZWN0LCBOVUxMKTsKKyAgICBBU1NFUlQoSlNWYWx1ZUlzRXF1
YWwoY29udGV4dCwgdiwgZ2xvYmFsT2JqZWN0LCBOVUxMKSk7CisgICAgdiA9IEpTU2NyaXB0RXZh
bHVhdGUoY29udGV4dCwgc2NyaXB0T2JqZWN0LCBqc1VuZGVmaW5lZCwgTlVMTCk7CisgICAgQVNT
RVJUKEpTVmFsdWVJc0VxdWFsKGNvbnRleHQsIHYsIGdsb2JhbE9iamVjdCwgTlVMTCkpOworICAg
IHYgPSBKU1NjcmlwdEV2YWx1YXRlKGNvbnRleHQsIHNjcmlwdE9iamVjdCwganNOdWxsLCBOVUxM
KTsKKyAgICBBU1NFUlQoSlNWYWx1ZUlzRXF1YWwoY29udGV4dCwgdiwgZ2xvYmFsT2JqZWN0LCBO
VUxMKSk7CisgICAgdiA9IEpTU2NyaXB0RXZhbHVhdGUoY29udGV4dCwgc2NyaXB0T2JqZWN0LCBq
c1plcm8sIE5VTEwpOworICAgIEFTU0VSVChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgdikpOwor
ICAgIHYgPSBKU1NjcmlwdEV2YWx1YXRlKGNvbnRleHQsIHNjcmlwdE9iamVjdCwganNUcnVlLCBO
VUxMKTsKKyAgICBBU1NFUlQoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHYpKTsKKyAgICB2ID0g
SlNTY3JpcHRFdmFsdWF0ZShjb250ZXh0LCBzY3JpcHRPYmplY3QsIGpzRW1wdHlTdHJpbmcsIE5V
TEwpOworICAgIEFTU0VSVChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgdikpOwogICAgIEpTU2Ny
aXB0UmVsZWFzZShzY3JpcHRPYmplY3QpOwogCiAgICAgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoImV2YWwodGhpcyk7Iik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI2
Myw3ICsyNjMsNiBAQAogCQkwRjJDNjNDMjFFNjY0QTVDMDBDMTM4MzkgLyogQjNOYXRpdmVUcmFp
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2
M0MxMUU2NjRBNUEwMEMxMzgzOSAvKiBCM05hdGl2ZVRyYWl0cy5oICovOyB9OwogCQkwRjJDNjND
NDFFNjlFRjk0MDBDMTM4MzkgLyogQjNNZW1vcnlWYWx1ZUlubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM2M0MzMUU2OUVGOTIwMEMxMzgz
OSAvKiBCM01lbW9yeVZhbHVlSW5saW5lcy5oICovOyB9OwogCQkwRjJENERERTE5ODMyRDM0MDA3
RDRCMTkgLyogRGVidWdnZXJTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyRDREREMxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjJE
NERFOTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFNjE5ODMyREFDMDA3RDRCMTkgLyog
VG9UaGlzU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEYyRDRERUExOTgzMkRBQzAwN0Q0QjE5IC8qIFR5cGVMb2NhdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRDRERTcxOTgzMkRB
QzAwN0Q0QjE5IC8qIFR5cGVMb2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGMkQ0REVDMTk4MzJEQzQwMDdENEIxOSAvKiBUeXBlUHJv
ZmlsZXJMb2cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkQ0REUwMTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlUHJvZmlsZXJMb2cuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJENERGMDE5ODMyREQ2
MDA3RDRCMTkgLyogVHlwZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyRDRERTQxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVTZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjUyMiw4ICsyNTIx
LDYgQEAKIAkJMEYyRDRERTAxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVQcm9maWxlckxvZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUeXBlUHJvZmlsZXJMb2cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYyRDRERTMxOTgzMkQ5MTAwN0Q0QjE5IC8qIFR5cGVTZXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVHlwZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0
REU0MTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVTZXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYyRDRERTUxOTgzMkRBQzAwN0Q0QjE5
IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUb1RoaXNTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjJENERF
NjE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRvVGhpc1N0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjJENERFNzE5ODMyREFDMDA3RDRCMTkgLyogVHlwZUxvY2F0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFR5cGVMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjJERDgwQzFBQjNEOEJFMDBCQkI4RTggLyogREZHQXJndW1lbnRzRWxpbWlu
YXRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdB
cmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdBcmd1bWVudHNFbGlt
aW5hdGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyREQ4MEQx
QUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5o
OyBwYXRoID0gZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTg2NjksOCArODY2Niw2IEBACiAJCQkJMEY0QTM4RjcxQzhFMTNE
RjAwMTkwMzE4IC8qIFN1cGVyU2FtcGxlci5jcHAgKi8sCiAJCQkJMEY0QTM4RjgxQzhFMTNERjAw
MTkwMzE4IC8qIFN1cGVyU2FtcGxlci5oICovLAogCQkJCTBGNDRBN0E4MjBCRjY4NUUwMDIyQjE3
MSAvKiBUZXJtaW5hdGVkQ29kZU9yaWdpbi5oICovLAotCQkJCTBGMkQ0REU1MTk4MzJEQUMwMDdE
NEIxOSAvKiBUb1RoaXNTdGF0dXMuY3BwICovLAotCQkJCTBGMkQ0REU2MTk4MzJEQUMwMDdENEIx
OSAvKiBUb1RoaXNTdGF0dXMuaCAqLywKIAkJCQkwRjk1MkFCQTFCNDg3QTc3MDBDMzY3QzUgLyog
VHJhY2tlZFJlZmVyZW5jZXMuY3BwICovLAogCQkJCTBGOTUyQUJCMUI0ODdBNzcwMEMzNjdDNSAv
KiBUcmFja2VkUmVmZXJlbmNlcy5oICovLAogCQkJCTBGMkQ0REU3MTk4MzJEQUMwMDdENEIxOSAv
KiBUeXBlTG9jYXRpb24uaCAqLywKQEAgLTEwNjA3LDcgKzEwNjAyLDYgQEAKIAkJCQlBNzM4NjU1
NjExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDE0NDhDRDEzQTE3ODM3MDBGNUJBMUEgLyogVGlueUJsb29tRmlsdGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjU1OTg5ODE3Qzg2QzU4MDBBMUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUu
aCBpbiBIZWFkZXJzICovLAotCQkJCTBGMkQ0REU5MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNT
dGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTUyQUJEMUI0ODdBNzcwMEMzNjdDNSAvKiBU
cmFja2VkUmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3MDYxN0I2QjVBQjAw
QTdBRTNGIC8qIFR5cGVkQXJyYXlBZGFwdG9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY3
MDgxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYgkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYgkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNiBAQCB0eXBlcyBb
CiAgICAgOlN0cnVjdHVyZUNoYWluLAogICAgIDpTeW1ib2xUYWJsZSwKICAgICA6U3ltYm9sVGFi
bGVPclNjb3BlRGVwdGgsCi0gICAgOlRvVGhpc1N0YXR1cywKICAgICA6VHlwZUxvY2F0aW9uLAog
ICAgIDpXYXNtQm91bmRMYWJlbCwKICAgICA6V2F0Y2hwb2ludFNldCwKQEAgLTE3NywxMSArMTc2
LDggQEAgb3AgOmFyZ3VtZW50X2NvdW50LAogb3AgOnRvX3RoaXMsCiAgICAgYXJnczogewogICAg
ICAgICBzcmNEc3Q6IFZpcnR1YWxSZWdpc3RlciwKLSAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2Rl
LAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgY2FjaGVkU3RydWN0dXJlSUQ6IFN0
cnVjdHVyZUlELAotICAgICAgICB0b1RoaXNTdGF0dXM6IFRvVGhpc1N0YXR1cywKICAgICAgICAg
cHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0KIApAQCAtMTAzNCw2ICsxMDMwLDEyIEBAIG9w
IDpnZXRfZnJvbV9zY29wZSwKICAgICAgICAgb3BlcmFuZDogOm9mZnNldCwKICAgICB9CiAKK29w
IDpnZXRfdGhpc192YWx1ZV9mb3JfY2FsbCwKKyAgICBhcmdzOiB7CisgICAgICAgIGRzdDogVmly
dHVhbFJlZ2lzdGVyLAorICAgICAgICBzY29wZTogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0KKwog
b3AgOnB1dF90b19zY29wZSwKICAgICBhcmdzOiB7CiAgICAgICAgIHNjb3BlOiBWaXJ0dWFsUmVn
aXN0ZXIsICMgb2Zmc2V0IDEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTczLDYgKzE3Myw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChW
aXIKICAgICBVU0VTKE9wUmVzb2x2ZVNjb3BlLCBzY29wZSkKICAgICBVU0VTKE9wUmVzb2x2ZVNj
b3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbCwgc2NvcGUpCiAgICAgVVNFUyhPcEdldEZyb21T
Y29wZSwgc2NvcGUpCisgICAgVVNFUyhPcEdldFRoaXNWYWx1ZUZvckNhbGwsIHNjb3BlKQogICAg
IFVTRVMoT3BUb1ByaW1pdGl2ZSwgc3JjKQogICAgIFVTRVMoT3BUb1Byb3BlcnR5S2V5LCBzcmMp
CiAgICAgVVNFUyhPcFRyeUdldEJ5SWQsIGJhc2UpCkBAIC00ODAsNiArNDgxLDcgQEAgdm9pZCBj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVucwogCiAgICAgREVGUyhPcFRhaWxDYWxs
Rm9yd2FyZEFyZ3VtZW50cywgZHN0KQogICAgIERFRlMoT3BHZXRGcm9tU2NvcGUsIGRzdCkKKyAg
ICBERUZTKE9wR2V0VGhpc1ZhbHVlRm9yQ2FsbCwgZHN0KQogICAgIERFRlMoT3BDYWxsLCBkc3Qp
CiAgICAgREVGUyhPcFRhaWxDYWxsLCBkc3QpCiAgICAgREVGUyhPcENhbGxFdmFsLCBkc3QpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2
aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNzEsMTcgKzEzNzEsNiBAQCB2b2lkIENvZGVCbG9j
azo6ZmluYWxpemVMTEludElubGluZUNhY2hlCiAgICAgICAgICAgICBtZXRhZGF0YS5tX2JyYW5k
LmNsZWFyKCk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BU
b1RoaXM+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGlmICghbWV0YWRhdGEu
bV9jYWNoZWRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJl
SURUYWJsZSgpLmdldChtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEKSkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewot
ICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJ
RFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQpOwotICAgICAgICAgICAg
ICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTEludCB0b190aGlzIHdpdGggc3RydWN0dXJlICVwLlxu
Iiwgc3RydWN0dXJlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1ldGFkYXRhLm1fY2Fj
aGVkU3RydWN0dXJlSUQgPSAwOwotICAgICAgICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMg
PSBtZXJnZShtZXRhZGF0YS5tX3RvVGhpc1N0YXR1cywgVG9UaGlzQ2xlYXJlZEJ5R0MpOwotICAg
ICAgICB9KTsKLQogICAgICAgICBhdXRvIGhhbmRsZUNyZWF0ZUJ5dGVjb2RlID0gWyZdIChhdXRv
JiBtZXRhZGF0YSwgQVNDSUlMaXRlcmFsIG5hbWUpIHsKICAgICAgICAgICAgIGF1dG8mIGNhY2hl
V3JpdGVCYXJyaWVyID0gbWV0YWRhdGEubV9jYWNoZWRDYWxsZWU7CiAgICAgICAgICAgICBpZiAo
IWNhY2hlV3JpdGVCYXJyaWVyIHx8IGNhY2hlV3JpdGVCYXJyaWVyLnVudmFsaWRhdGVkR2V0KCkg
PT0gSlNDZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmNwcAkocmV2aXNpb24gMjc4
MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1RvVGhpc1N0YXR1cy5jcHAJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUb1Ro
aXNTdGF0dXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLVRvVGhpc1N0YXR1cyBtZXJnZShUb1Ro
aXNTdGF0dXMgYSwgVG9UaGlzU3RhdHVzIGIpCi17Ci0gICAgc3dpdGNoIChhKSB7Ci0gICAgY2Fz
ZSBUb1RoaXNPSzoKLSAgICAgICAgcmV0dXJuIGI7Ci0gICAgY2FzZSBUb1RoaXNDb25mbGljdGVk
OgotICAgICAgICByZXR1cm4gVG9UaGlzQ29uZmxpY3RlZDsKLSAgICBjYXNlIFRvVGhpc0NsZWFy
ZWRCeUdDOgotICAgICAgICBpZiAoYiA9PSBUb1RoaXNDb25mbGljdGVkKQotICAgICAgICAgICAg
cmV0dXJuIFRvVGhpc0NvbmZsaWN0ZWQ7Ci0gICAgICAgIHJldHVybiBUb1RoaXNDbGVhcmVkQnlH
QzsKLSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gVG9UaGlzQ29uZmxpY3RlZDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLW5hbWVz
cGFjZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi12b2lkIHByaW50SW50ZXJuYWwo
UHJpbnRTdHJlYW0mIG91dCwgVG9UaGlzU3RhdHVzIHN0YXR1cykKLXsKLSAgICBzd2l0Y2ggKHN0
YXR1cykgewotICAgIGNhc2UgVG9UaGlzT0s6Ci0gICAgICAgIG91dC5wcmludCgiT0siKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgVG9UaGlzQ29uZmxpY3RlZDoKLSAgICAgICAgb3V0LnBy
aW50KCJDb25mbGljdGVkIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFRvVGhpc0NsZWFy
ZWRCeUdDOgotICAgICAgICBvdXQucHJpbnQoIkNsZWFyZWRCeUdDIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV1RGCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Ub1RoaXNTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVG9UaGlzU3RhdHVzLmgJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Ub1RoaXNTdGF0dXMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIEpT
QyB7Ci0KLWVudW0gVG9UaGlzU3RhdHVzIHsKLSAgICBUb1RoaXNPSywKLSAgICBUb1RoaXNDb25m
bGljdGVkLAotICAgIFRvVGhpc0NsZWFyZWRCeUdDCi19OwotCi1Ub1RoaXNTdGF0dXMgbWVyZ2Uo
VG9UaGlzU3RhdHVzLCBUb1RoaXNTdGF0dXMpOwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFt
ZXNwYWNlIFdURiB7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6VG9U
aGlzU3RhdHVzKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAko
cmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NTgsNiArMjQ1OCwzMSBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEZyCiAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRGdW5jdGlvbkZyb21TY29wZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0IFZhcmlhYmxl
JiB2YXJpYWJsZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlRm9yQ2FsbCkKK3sKKyAgICBBU1NFUlQo
IXZhcmlhYmxlLmxvY2FsKCkpOworCisgICAgUmVnaXN0ZXJJRCogc2NvcGUgPSBlbWl0UmVzb2x2
ZVNjb3BlKG51bGxwdHIsIHZhcmlhYmxlKTsKKyAgICBlbWl0R2V0RnJvbVNjb3BlKGRzdCwgc2Nv
cGUsIHZhcmlhYmxlLCBUaHJvd0lmTm90Rm91bmQpOworICAgIGVtaXRURFpDaGVja0lmTmVjZXNz
YXJ5KHZhcmlhYmxlLCBkc3QsIG51bGxwdHIpOworICAgIGlmIChoYXNQYXJlbnRXaXRoU2NvcGUo
dmFyaWFibGUpKQorICAgICAgICBPcEdldFRoaXNWYWx1ZUZvckNhbGw6OmVtaXQodGhpcywga2ls
bCh0aGlzVmFsdWVGb3JDYWxsKSwgc2NvcGUpOworICAgIHJldHVybiBkc3Q7Cit9CisKK2Jvb2wg
Qnl0ZWNvZGVHZW5lcmF0b3I6Omhhc1BhcmVudFdpdGhTY29wZShjb25zdCBWYXJpYWJsZSYgdmFy
aWFibGUpIGNvbnN0Cit7CisgICAgaWYgKHZhcmlhYmxlLm9mZnNldCgpLmlzVmFsaWQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9sZXhpY2FsU2Nv
cGVTdGFjay5zaXplKCk7IGktLTsgKSB7CisgICAgICAgIGlmIChtX2xleGljYWxTY29wZVN0YWNr
W2ldLm1faXNXaXRoU2NvcGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQ
dXRUb1Njb3BlKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBWYXJpYWJsZSYgdmFyaWFibGUsIFJl
Z2lzdGVySUQqIHZhbHVlLCBSZXNvbHZlTW9kZSByZXNvbHZlTW9kZSwgSW5pdGlhbGl6YXRpb25N
b2RlIGluaXRpYWxpemF0aW9uTW9kZSkKIHsKICAgICBzd2l0Y2ggKHZhcmlhYmxlLm9mZnNldCgp
LmtpbmQoKSkgewpAQCAtNTQ1NSw3ICs1NDgwLDggQEAgdm9pZCBTdGF0aWNQcm9wZXJ0eUFuYWx5
c2lzOjpyZWNvcmQoKQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VG9UaGlzKCkKIHsK
LSAgICBPcFRvVGhpczo6ZW1pdCh0aGlzLCBraWxsKCZtX3RoaXNSZWdpc3RlciksIGVjbWFNb2Rl
KCkpOworICAgIGlmICghZWNtYU1vZGUoKS5pc1N0cmljdCgpKQorICAgICAgICBPcFRvVGhpczo6
ZW1pdCh0aGlzLCBraWxsKCZtX3RoaXNSZWdpc3RlcikpOwogfQogCiBTdHJ1Y3R1cmVGb3JJbkNv
bnRleHQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpmaW5kU3RydWN0dXJlRm9ySW5Db250ZXh0KFJlZ2lz
dGVySUQqIHByb3BlcnR5KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMjc4MTU5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC05MDQsNiArOTA0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlQ29uc3RhbnRMb2NhbChSZWdpc3RlcklEKiBkc3QsIGNv
bnN0IFZhcmlhYmxlJik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlU2NvcGUoUmVn
aXN0ZXJJRCogZHN0LCBjb25zdCBWYXJpYWJsZSYpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
R2V0RnJvbVNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUsIGNvbnN0IFZh
cmlhYmxlJiwgUmVzb2x2ZU1vZGUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0RnVuY3Rp
b25Gcm9tU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBWYXJpYWJsZSYsIFJlZ2lzdGVySUQq
IHRoaXNWYWx1ZUZvckNhbGwpOworICAgICAgICBib29sIGhhc1BhcmVudFdpdGhTY29wZShjb25z
dCBWYXJpYWJsZSYpIGNvbnN0OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0VG9TY29wZShS
ZWdpc3RlcklEKiBzY29wZSwgY29uc3QgVmFyaWFibGUmLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVz
b2x2ZU1vZGUsIEluaXRpYWxpemF0aW9uTW9kZSk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwoUmVnaXN0ZXJJRCogZHN0LCBj
b25zdCBJZGVudGlmaWVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1MCwxMyArMzUwLDExIEBAIFJlZ2lzdGVySUQqIFRhZ2dlZFRlbXBsYXRlTm9k
ZTo6ZW1pdEJ5dGUKICAgICAgICAgICAgIHRhZyA9IGdlbmVyYXRvci5tb3ZlKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgbG9jYWwpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdGFn
ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgYmFzZSA9IGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIGJhc2UgPSBnZW5lcmF0b3IuZW1pdExvYWQo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBqc1VuZGVmaW5lZCgpKTsKIAogICAgICAgICAgICAg
SlNUZXh0UG9zaXRpb24gbmV3RGl2b3QgPSBkaXZvdFN0YXJ0KCkgKyBpZGVudGlmaWVyLmxlbmd0
aCgpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhuZXdEaXZvdCwg
ZGl2b3RTdGFydCgpLCBuZXdEaXZvdCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IubW92ZShiYXNl
LmdldCgpLCBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShiYXNlLmdldCgpLCB2YXIpKTsKLSAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHRhZy5nZXQoKSwgYmFzZS5nZXQo
KSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRURFpD
aGVja0lmTmVjZXNzYXJ5KHZhciwgdGFnLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0R2V0RnVuY3Rpb25Gcm9tU2NvcGUodGFnLmdldCgpLCB2YXIsIGJhc2UuZ2V0
KCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX3RhZy0+aXNCcmFja2V0QWNjZXNzb3JO
b2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19j
YXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihtX3RhZyk7CkBAIC0xMTgwLDE3ICsxMTc4LDEyIEBA
IFJlZ2lzdGVySUQqIEV2YWxGdW5jdGlvbkNhbGxOb2RlOjplbWl0QnkKICAgICB9IGVsc2UKICAg
ICAgICAgZnVuYyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBDYWxsQXJndW1lbnRz
IGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworICAgIGdlbmVyYXRvci5lbWl0TG9h
ZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKIAotICAgIGlm
IChsb2NhbCkKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwotICAgIGVsc2UgeworICAgIGlmICghbG9jYWwpIHsK
ICAgICAgICAgSlNUZXh0UG9zaXRpb24gbmV3RGl2b3QgPSBkaXZvdFN0YXJ0KCkgKyA0OwogICAg
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCks
IG5ld0Rpdm90KTsKLSAgICAgICAgZ2VuZXJhdG9yLm1vdmUoCi0gICAgICAgICAgICBjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLAotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXNvbHZl
U2NvcGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgdmFyKSk7Ci0gICAgICAgIGdlbmVy
YXRvci5lbWl0R2V0RnJvbVNjb3BlKGZ1bmMuZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRURFpD
aGVja0lmTmVjZXNzYXJ5KHZhciwgZnVuYy5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0R2V0RnVuY3Rpb25Gcm9tU2NvcGUoZnVuYy5nZXQoKSwgdmFyLCBjYWxsQXJndW1l
bnRzLnRoaXNSZWdpc3RlcigpKTsKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0
dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmMuZ2V0KCkpOwpA
QCAtMTI3NiwyMCArMTI2OSwxNiBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxSZXNvbHZlTm9k
ZTo6ZW1pCiAgICAgfSBlbHNlCiAgICAgICAgIGZ1bmMgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCk7CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsK
KyAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNV
bmRlZmluZWQoKSk7CiAKICAgICBpZiAobG9jYWwpIHsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRM
b2FkKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgICAg
ICAvLyBUaGlzIHBhc3NlcyBOb0V4cGVjdGVkRnVuY3Rpb24gYmVjYXVzZSB3ZSBleHBlY3QgdGhh
dCBpZiB0aGUgZnVuY3Rpb24gaXMgaW4gYQogICAgICAgICAvLyBsb2NhbCB2YXJpYWJsZSwgdGhl
biBpdCdzIG5vdCBvbmUgb2Ygb3VyIGJ1aWx0LWluIGNvbnN0cnVjdG9ycy4KICAgICAgICAgZXhw
ZWN0ZWRGdW5jdGlvbiA9IE5vRXhwZWN0ZWRGdW5jdGlvbjsKICAgICB9IGVsc2UgewogICAgICAg
ICBKU1RleHRQb3NpdGlvbiBuZXdEaXZvdCA9IGRpdm90U3RhcnQoKSArIG1faWRlbnQubGVuZ3Ro
KCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8obmV3RGl2b3QsIGRpdm90
U3RhcnQoKSwgbmV3RGl2b3QpOwotICAgICAgICBnZW5lcmF0b3IubW92ZSgKLSAgICAgICAgICAg
IGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksCi0gICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dFJlc29sdmVTY29wZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCB2YXIpKTsKLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZnVuYy5nZXQoKSwgY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwotICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFREWkNoZWNrSWZOZWNlc3NhcnkodmFyLCBmdW5jLmdldCgpLCBudWxscHRyKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRHZXRGdW5jdGlvbkZyb21TY29wZShmdW5jLmdldCgpLCB2YXIsIGNh
bGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCkpOwogICAgIH0KIAogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuYy5n
ZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxs
RnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwOSwxMCArMjA5LDEwIEBAIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OnRoaXNWYWx1ZShW
TSYKICAgICBpZiAoIXRoaXNWYWx1ZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAK
LSAgICBFQ01BTW9kZSBlY21hTW9kZSA9IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX01FU1NBR0UoIXRoaXNWYWx1ZS5pbmhlcml0czxKU1Njb3BlPih2bSksICJ0
aGlzVmFsdWUgc2hvdWxkbid0IGJlIEpTU2NvcGUiKTsKICAgICBpZiAoY29kZUJsb2NrICYmIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzSW5TdHJpY3RDb250ZXh0KCkpCi0gICAgICAg
IGVjbWFNb2RlID0gRUNNQU1vZGU6OnN0cmljdCgpOwotICAgIHJldHVybiB0aGlzVmFsdWUudG9U
aGlzKG1fdmFsaWRNYWNoaW5lRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0pLCBlY21hTW9k
ZSk7CisgICAgICAgIHJldHVybiB0aGlzVmFsdWU7CisgICAgcmV0dXJuIHRoaXNWYWx1ZS50b1Ns
b3BweU1vZGVUaGlzKG1fdmFsaWRNYWNoaW5lRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qodm0p
KTsKIH0KIAogLy8gRXZhbHVhdGUgc29tZSBKYXZhU2NyaXB0IGNvZGUgaW4gdGhlIHNjb3BlIG9m
IHRoaXMgZnJhbWUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyNzgxNTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OSw2NSArMTc5LDYgQEAgdm9pZCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKG1fZ3Jh
cGgsIG5vZGUsIHZlcmlmeUVkZ2UpOwogfQogCi1lbnVtIGNsYXNzIFRvVGhpc1Jlc3VsdCB7Ci0g
ICAgSWRlbnRpdHksCi0gICAgVW5kZWZpbmVkLAotICAgIEdsb2JhbFRoaXMsCi0gICAgRHluYW1p
YywKLX07Ci1pbmxpbmUgVG9UaGlzUmVzdWx0IGlzVG9UaGlzQW5JZGVudGl0eShWTSYgdm0sIEVD
TUFNb2RlIGVjbWFNb2RlLCBBYnN0cmFjdFZhbHVlJiB2YWx1ZUZvck5vZGUpCi17Ci0gICAgLy8g
V2UgbG9vayBhdCB0aGUgdHlwZSBmaXJzdCBzaW5jZSB0aGF0IHdpbGwgY292ZXIgbW9zdCBjYXNl
cyBhbmQgZG9lcyBub3QgcmVxdWlyZSBpdGVyYXRpbmcgYWxsIHRoZSBzdHJ1Y3R1cmVzLgotICAg
IGlmIChlY21hTW9kZS5pc1N0cmljdCgpKSB7Ci0gICAgICAgIGlmICh2YWx1ZUZvck5vZGUubV90
eXBlICYmICEodmFsdWVGb3JOb2RlLm1fdHlwZSAmIFNwZWNPYmplY3RPdGhlcikpCi0gICAgICAg
ICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpJZGVudGl0eTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBpZiAodmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiAoflNw
ZWNPYmplY3QgfCBTcGVjT2JqZWN0T3RoZXIpKSkKLSAgICAgICAgICAgIHJldHVybiBUb1RoaXNS
ZXN1bHQ6OklkZW50aXR5OwotICAgIH0KLQotICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gdmFsdWVG
b3JOb2RlLnZhbHVlKCkpIHsKLSAgICAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKSB7Ci0gICAgICAg
ICAgICBhdXRvKiB0b1RoaXNNZXRob2QgPSB2YWx1ZS5hc0NlbGwoKS0+Y2xhc3NJbmZvKHZtKS0+
bWV0aG9kVGFibGUudG9UaGlzOwotICAgICAgICAgICAgaWYgKHRvVGhpc01ldGhvZCA9PSAmSlNP
YmplY3Q6OnRvVGhpcykKLSAgICAgICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpJZGVu
dGl0eTsKLSAgICAgICAgICAgIGlmICh0b1RoaXNNZXRob2QgPT0gJkpTU2NvcGU6OnRvVGhpcykg
ewotICAgICAgICAgICAgICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gVG9UaGlzUmVzdWx0OjpVbmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIFRvVGhpc1Jlc3VsdDo6R2xvYmFsVGhpczsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgIH0KLQotICAgIGlmICgoZWNtYU1vZGUuaXNTdHJpY3QoKSB8fCAodmFsdWVGb3JOb2Rl
Lm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpKSAmJiB2YWx1
ZUZvck5vZGUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewotICAgICAgICBib29sIGFsbFN0cnVj
dHVyZXNBcmVKU1Njb3BlID0gIXZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5pc0NsZWFyKCk7Ci0g
ICAgICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7Ci0gICAgICAgIHZhbHVlRm9yTm9k
ZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkg
ewotICAgICAgICAgICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKTsKLSAg
ICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50eXBlKCkgPT0gU3RyaW5n
VHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlIHx8IHR5cGUudHlwZSgpID09IEhlYXBC
aWdJbnRUeXBlKTsKLSAgICAgICAgICAgIGlmICghZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAg
ICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpKTsKLSAgICAgICAgICAgIC8vIFdlIGRv
bid0IG5lZWQgdG8gd29ycnkgYWJvdXQgc3RyaW5ncy9zeW1ib2xzIGhlcmUgc2luY2UgZWl0aGVy
OgotICAgICAgICAgICAgLy8gMSkgV2UgYXJlIGluIHN0cmljdCBtb2RlIGFuZCBzdHJpbmdzL3N5
bWJvbHMgYXJlIG5vdCB3cmFwcGVkCi0gICAgICAgICAgICAvLyAyKSBUaGUgQUkgaGFzIHByb3Zl
biB0aGF0IHRoZSB0eXBlIG9mIHRoaXMgaXMgYSBzdWJ0eXBlIG9mIG9iamVjdAotICAgICAgICAg
ICAgaWYgKHR5cGUuaXNPYmplY3QoKSAmJiB0eXBlLm92ZXJyaWRlc1RvVGhpcygpKQotICAgICAg
ICAgICAgICAgIG92ZXJyaWRlc1RvVGhpcyA9IHRydWU7Ci0KLSAgICAgICAgICAgIC8vIElmIGFs
bCB0aGUgc3RydWN0dXJlcyBhcmUgSlNTY29wZSdzIG9uZXMsIHdlIGtub3cgdGhlIGRldGFpbHMg
b2YgSlNTY29wZTo6dG9UaGlzKCkgb3BlcmF0aW9uLgotICAgICAgICAgICAgYWxsU3RydWN0dXJl
c0FyZUpTU2NvcGUgJj0gc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUudG9UaGlz
ID09IEpTU2NvcGU6OmluZm8oKS0+bWV0aG9kVGFibGUudG9UaGlzOwotICAgICAgICB9KTsKLSAg
ICAgICAgaWYgKCFvdmVycmlkZXNUb1RoaXMpCi0gICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVz
dWx0OjpJZGVudGl0eTsKLSAgICAgICAgaWYgKGFsbFN0cnVjdHVyZXNBcmVKU1Njb3BlKSB7Ci0g
ICAgICAgICAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gVG9UaGlzUmVzdWx0OjpVbmRlZmluZWQ7Ci0gICAgICAgICAgICByZXR1cm4gVG9UaGlzUmVz
dWx0OjpHbG9iYWxUaGlzOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIFRvVGhpc1Jl
c3VsdDo6RHluYW1pYzsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+
CiBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpoYW5kbGVDb25z
dGFudEJpbmFyeUJpdHdpc2VPcChOb2RlKiBub2RlKQogewpAQCAtMjk3MiwzMSArMjkxMywyMiBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAK
ICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24g
PSBmb3JOb2RlKG5vZGUpOwotICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG5vZGUtPmVjbWFN
b2RlKCk7CiAKLSAgICAgICAgVG9UaGlzUmVzdWx0IHJlc3VsdCA9IGlzVG9UaGlzQW5JZGVudGl0
eShtX3ZtLCBlY21hTW9kZSwgc291cmNlKTsKLSAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKLSAg
ICAgICAgY2FzZSBUb1RoaXNSZXN1bHQ6OklkZW50aXR5OgorICAgICAgICBpZiAoIShzb3VyY2Uu
bV90eXBlICYgflNwZWNPYmplY3QpKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnNldFNob3VsZFRy
eUNvbnN0YW50Rm9sZGluZyh0cnVlKTsKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gc291cmNl
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVG9UaGlzUmVzdWx0OjpVbmRlZmlu
ZWQ6Ci0gICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAg
ICAgICAgIGRpZEZvbGRDbG9iYmVyV29ybGQoKTsKKyAgICAgICAgICAgIHNldEZvck5vZGUobm9k
ZSwgc291cmNlKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRvVGhpc1Jlc3Vs
dDo6R2xvYmFsVGhpczoKKyAgICAgICAgfQorCisgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUs
IFNwZWNPYmplY3QpOworCisgICAgICAgIGlmICghKHNvdXJjZS5tX3R5cGUgJiB+U3BlY090aGVy
KSkgewogICAgICAgICAgICAgbV9zdGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1
ZSk7Ci0gICAgICAgICAgICBkZXN0aW5hdGlvbi5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNPYmplY3Qp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVG9UaGlzUmVzdWx0OjpEeW5hbWlj
OgotICAgICAgICAgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCi0gICAgICAgICAgICAgICAg
ZGVzdGluYXRpb24ubWFrZUhlYXBUb3AoKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICAgIGRlc3RpbmF0aW9uID0gc291cmNlOwotICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9u
Lm1lcmdlKFNwZWNPYmplY3QpOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KKworICAgICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCkBAIC0zMzE1LDYgKzMyNDcsMTMgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjT2JqZWN0T3RoZXIp
OwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDoKKyAgICAg
ICAgaWYgKEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpKQor
ICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgY2hpbGQuaW5oZXJpdHM8SlNTY29wZT4obV92
bSkgPyBqc1VuZGVmaW5lZCgpIDogY2hpbGQpOworCisgICAgICAgIHNldFR5cGVGb3JOb2RlKG5v
ZGUsIFNwZWNPYmplY3QgfCBTcGVjT3RoZXIpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2Ug
U2tpcFNjb3BlOiB7CiAgICAgICAgIGlmIChKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkudmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKEpTU2NvcGUqIHNjb3BlID0ganNE
eW5hbWljQ2FzdDxKU1Njb3BlKj4obV92bSwgY2hpbGQpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjc4MTU5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU0MDksMjUgKzU0MDksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IG9wX3RvX3RoaXM6IHsKLSAgICAgICAgICAgIE5vZGUqIG9wMSA9IGdldFRoaXMoKTsKLSAgICAg
ICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigp
OwotICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxv
Y2spOwotICAgICAgICAgICAgU3RydWN0dXJlSUQgY2FjaGVkU3RydWN0dXJlSUQgPSBtZXRhZGF0
YS5tX2NhY2hlZFN0cnVjdHVyZUlEOwotICAgICAgICAgICAgU3RydWN0dXJlKiBjYWNoZWRTdHJ1
Y3R1cmUgPSBudWxscHRyOwotICAgICAgICAgICAgaWYgKGNhY2hlZFN0cnVjdHVyZUlEKQotICAg
ICAgICAgICAgICAgIGNhY2hlZFN0cnVjdHVyZSA9IG1fdm0tPmhlYXAuc3RydWN0dXJlSURUYWJs
ZSgpLmdldChjYWNoZWRTdHJ1Y3R1cmVJRCk7Ci0gICAgICAgICAgICBpZiAobWV0YWRhdGEubV90
b1RoaXNTdGF0dXMgIT0gVG9UaGlzT0sKLSAgICAgICAgICAgICAgICB8fCAhY2FjaGVkU3RydWN0
dXJlCi0gICAgICAgICAgICAgICAgfHwgY2FjaGVkU3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0
aG9kVGFibGUudG9UaGlzICE9IEpTT2JqZWN0OjppbmZvKCktPm1ldGhvZFRhYmxlLnRvVGhpcwot
ICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKQotICAgICAgICAgICAgICAgIHx8IChvcDEt
Pm9wKCkgPT0gR2V0TG9jYWwgJiYgb3AxLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c3RydWN0dXJl
Q2hlY2tIb2lzdGluZ0ZhaWxlZCgpKSkgewotICAgICAgICAgICAgICAgIHNldFRoaXMoYWRkVG9H
cmFwaChUb1RoaXMsIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSwgT3BJbmZvKGdldFByZWRp
Y3Rpb24oKSksIG9wMSkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKAotICAgICAgICAgICAgICAgICAgICBDaGVja1N0cnVjdHVyZSwKLSAgICAgICAg
ICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGNhY2hlZFN0cnVjdHVy
ZSkpLAotICAgICAgICAgICAgICAgICAgICBvcDEpOwotICAgICAgICAgICAgfQorICAgICAgICAg
ICAgc2V0VGhpcyhhZGRUb0dyYXBoKFRvVGhpcywgT3BJbmZvKGdldFByZWRpY3Rpb24oKSksIGdl
dFRoaXMoKSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfdG9fdGhpcyk7CiAgICAgICAg
IH0KIApAQCAtNzc0Miw3ICs3NzI0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMuc3RhdGUoKSAhPSBHZXRCeVN0
YXR1czo6U2ltcGxlCiAgICAgICAgICAgICAgICAgICAgIHx8IHN0YXR1cy5udW1WYXJpYW50cygp
ICE9IDEKICAgICAgICAgICAgICAgICAgICAgfHwgc3RhdHVzWzBdLnN0cnVjdHVyZVNldCgpLnNp
emUoKSAhPSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRk
VG9HcmFwaChHZXRCeUlkRmx1c2gsIE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLCB1aWQpKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBnZXQoYnl0ZWNvZGUubV9zY29wZSkp
KTsKKyAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEdl
dEJ5SWRGbHVzaCwgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVp
ZCkpLCBPcEluZm8ocHJlZGljdGlvbiksIHdlYWtKU0NvbnN0YW50KGdsb2JhbE9iamVjdC0+Z2xv
YmFsVGhpcygpKSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CiAKQEAgLTc4NjYsNiArNzg0OCwxMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfZnJvbV9zY29wZSk7
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2dldF90aGlzX3ZhbHVlX2Zvcl9jYWxsOiB7
CisgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEdl
dFRoaXNWYWx1ZUZvckNhbGw+KCk7CisgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFk
ZFRvR3JhcGgoR2V0VGhpc1ZhbHVlRm9yQ2FsbCwgZ2V0KGJ5dGVjb2RlLm1fc2NvcGUpKSk7Cisg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfdGhpc192YWx1ZV9mb3JfY2FsbCk7CisgICAg
ICAgIH0KKwogICAgICAgICBjYXNlIG9wX3B1dF90b19zY29wZTogewogICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BQdXRUb1Njb3BlPigpOwogICAg
ICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwpA
QCAtNzkxNyw3ICs3OTA1LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZAogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSAhPSAxCiAgICAg
ICAgICAgICAgICAgICAgIHx8IHN0YXR1c1swXS5raW5kKCkgIT0gUHV0QnlJZFZhcmlhbnQ6OlJl
cGxhY2UKICAgICAgICAgICAgICAgICAgICAgfHwgc3RhdHVzWzBdLnN0cnVjdHVyZSgpLnNpemUo
KSAhPSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZCwgT3BJbmZv
KENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9j
ayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBPcEluZm8oYnl0ZWNv
ZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpLCBnZXQoYnl0ZWNvZGUubV9zY29wZSksIGdldChi
eXRlY29kZS5tX3ZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJ
ZCwgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRC
eUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBPcElu
Zm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmVjbWFNb2RlKCkpLCB3ZWFrSlNDb25zdGFudChnbG9i
YWxPYmplY3QtPmdsb2JhbFRoaXMoKSksIGdldChieXRlY29kZS5tX3ZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBO
b2RlKiBiYXNlID0gd2Vha0pTQ29uc3RhbnQoZ2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDI3ODE1
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjU0LDYgKzI1NCw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5
TGV2ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX2hhc19wcml2YXRlX2JyYW5kOgogICAgIGNhc2Ug
b3BfZ2V0X3Njb3BlOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6CisgICAgY2FzZSBvcF9n
ZXRfdGhpc192YWx1ZV9mb3JfY2FsbDoKICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0
aDoKICAgICBjYXNlIG9wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRfcHJvcGVydHk6CiAgICAgY2Fz
ZSBvcF9oYXNfZW51bWVyYWJsZV9zdHJ1Y3R1cmVfcHJvcGVydHk6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjc4MTU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIxOCw2ICsyMTgsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
CiAgICAgY2FzZSBBcml0aE1heDoKICAgICBjYXNlIEFyaXRoUG93OgogICAgIGNhc2UgR2V0U2Nv
cGU6CisgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxsOgogICAgIGNhc2UgU2tpcFNjb3BlOgog
ICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OgogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKQEAg
LTU5MSwxMiArNTkyLDYgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZQogICAgICAgICB3cml0ZShIZWFwT2JqZWN0Q291bnQpOwogICAgICAgICByZXR1cm47CiAKLSAg
ICBjYXNlIFRvVGhpczoKLSAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKLSAgICAgICAgcmVhZChI
ZWFwT2JqZWN0Q291bnQpOwotICAgICAgICB3cml0ZShIZWFwT2JqZWN0Q291bnQpOwotICAgICAg
ICByZXR1cm47Ci0KICAgICBjYXNlIFR5cGVPZklzT2JqZWN0OgogICAgICAgICByZWFkKE1pc2NG
aWVsZHMpOwogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKFR5cGVPZklzT2JqZWN0TG9jLCBNaXNj
RmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKQEAgLTcxNiw2ICs3MTEs
NyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBS
ZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOgogICAgIGNhc2UgUmVzb2x2ZVNj
b3BlOgogICAgIGNhc2UgVG9PYmplY3Q6CisgICAgY2FzZSBUb1RoaXM6CiAgICAgY2FzZSBIYXNF
bnVtZXJhYmxlU3RydWN0dXJlUHJvcGVydHk6CiAgICAgY2FzZSBIYXNFbnVtZXJhYmxlUHJvcGVy
dHk6CiAgICAgY2FzZSBIYXNPd25TdHJ1Y3R1cmVQcm9wZXJ0eToKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShy
ZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE0LDEzICs3MTQsMTMgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY2FzZSBUb1RoaXM6IHsKLSAgICAg
ICAgICAgICAgICBUb1RoaXNSZXN1bHQgcmVzdWx0ID0gaXNUb1RoaXNBbklkZW50aXR5KG1fZ3Jh
cGgubV92bSwgbm9kZS0+ZWNtYU1vZGUoKSwgbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KSk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBUb1RoaXNSZXN1bHQ6OklkZW50aXR5
KSB7CisgICAgICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGlmICghKHZhbHVlLm1fdHlwZSAm
IH5TcGVjT2JqZWN0KSkgewogICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVu
dGl0eSgpOwogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQgPT0gVG9UaGlzUmVzdWx0OjpHbG9iYWxUaGlzKSB7CisgICAgICAgICAgICAgICAgaWYg
KCEodmFsdWUubV90eXBlICYgflNwZWNPdGhlcikpIHsKICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+Y29udmVydFRvR2V0R2xvYmFsVGhpcygpOwogICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vk
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOSw2ICsx
MTksNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBD
aGVja0FycmF5T3JFbXB0eToKICAgICBjYXNlIENoZWNrRGV0YWNoZWQ6CiAgICAgY2FzZSBHZXRT
Y29wZToKKyAgICBjYXNlIEdldFRoaXNWYWx1ZUZvckNhbGw6CiAgICAgY2FzZSBTa2lwU2NvcGU6
CiAgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6CiAgICAgY2FzZSBHZXRHbG9iYWxUaGlzOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lv
biAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODA2LDYgKzE4MDYsNyBAQCBwcml2YXRlOgogCiAgICAgICAg
IGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjYXNlIEdldFNjb3BlOgorICAgICAgICBjYXNlIEdl
dFRoaXNWYWx1ZUZvckNhbGw6CiAgICAgICAgIGNhc2UgR2V0R2V0dGVyOgogICAgICAgICBjYXNl
IEdldFNldHRlcjoKICAgICAgICAgY2FzZSBHZXRHbG9iYWxPYmplY3Q6IHsKQEAgLTMxNDQsOTYg
KzMxNDUsMTggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZml4dXBUb1RoaXMoTm9kZSogbm9kZSkK
ICAgICB7Ci0gICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gbm9kZS0+ZWNtYU1vZGUoKS5pc1N0
cmljdCgpOwotCi0gICAgICAgIGlmIChpc1N0cmljdE1vZGUpIHsKLSAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQm9vbGVhbigpKSB7Ci0gICAgICAgICAgICAg
ICAgZml4RWRnZTxCb29sZWFuVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAg
bm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlSW50MzIoKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKSB7Ci0gICAgICAgICAgICAgICAg
Zml4RWRnZTxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIG5v
ZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0
KE5vZGVSZXN1bHRJbnQ1Mik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJl
cigpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAg
ICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3ltYm9sKCkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdl
PFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZl
cnRUb0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lk
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpIHsKLSAgICAgICAgICAgICAg
ICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIG5v
ZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZUJpZ0ludCgpKSB7Ci0jaWYgVVNFKEJJR0lOVDMyKQotICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50MzIoKSkKLSAgICAg
ICAgICAgICAgICAgICAgZml4RWRnZTxCaWdJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFw
QmlnSW50KCkpCi0gICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
Zml4RWRnZTxBbnlCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSNlbHNlCi0gICAgICAgICAg
ICAgICAgZml4RWRnZTxIZWFwQmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0jZW5kaWYKLSAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCiAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT3RoZXIoKSkgewotICAgICAgICAgICAgaWYgKGlzU3Ry
aWN0TW9kZSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8T3RoZXJVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05v
bmUsIENoZWNrLCBub2RlLT5vcmlnaW4sCiAgICAgICAgICAgICAgICAgRWRnZShub2RlLT5jaGls
ZDEoKS5ub2RlKCksIE90aGVyVXNlKSk7CiAgICAgICAgICAgICBvYnNlcnZlVXNlS2luZE9uTm9k
ZTxPdGhlclVzZT4obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIG1fZ3JhcGgu
Y29udmVydFRvQ29uc3RhbnQoCi0gICAgICAgICAgICAgICAgbm9kZSwgbV9ncmFwaC5nbG9iYWxU
aGlzT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpOworICAgICAgICAgICAgICAgIG5v
ZGUsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdsb2Jh
bFRoaXMoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgY292ZXIgb3RoZXIgdXNlIGNhc2VzIGJ1dCB3ZSBkb24ndCBoYXZl
IHVzZSBraW5kcyBmb3IgdGhlbS4gSXQncyBub3QgY3JpdGljYWwsCi0gICAgICAgIC8vIGhvd2V2
ZXIsIHNpbmNlIHdlIGNvdmVyIGFsbCB0aGUgbWlzc2luZyBjYXNlcyBpbiBjb25zdGFudCBmb2xk
aW5nLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3MjEzCi0gICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5n
T2JqZWN0KCkpIHsKLSAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nT2JqZWN0VXNlPihub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzRmluYWxPYmplY3RTcGVj
dWxhdGlvbihub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpKSkgewotICAgICAgICAgICAgZml4
RWRnZTxGaW5hbE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpKSB7CisgICAgICAgICAgICBmaXhFZGdl
PE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgbm9kZS0+Y29udmVydFRv
SWRlbnRpdHkoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzAsMTIgKzQ3
MCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbik7CiAgICAgfQogICAgIAotICAgIEpTT2JqZWN0KiBnbG9iYWxUaGlzT2Jq
ZWN0Rm9yKENvZGVPcmlnaW4gY29kZU9yaWdpbikKLSAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBvYmplY3QgPSBnbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbik7Ci0gICAgICAgIHJldHVy
biBqc0Nhc3Q8SlNPYmplY3QqPihvYmplY3QtPm1ldGhvZFRhYmxlKG1fdm0pLT50b1RoaXMob2Jq
ZWN0LCBvYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpOwotICAgIH0KLSAgICAKICAgICBTY3Jp
cHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlRm9yKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lKQogICAgIHsKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc5LDYgKzc5LDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgog
ICAgIGNhc2UgU2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CiAgICAgY2FzZSBHZXRSZXN0
TGVuZ3RoOgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxs
OgogICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgIGNhc2UgQ291bnRFeGVjdXRpb246CiAgICAg
Y2FzZSBTdXBlclNhbXBsZXJCZWdpbjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjI2NCw3ICsyMjY0LDYgQEAgcHVibGljOgogICAgICAg
ICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAg
ICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKLSAgICAgICAgY2FzZSBUb1RoaXM6CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTIyNzgsNyArMjI3Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBDYWxsRXZh
bDoKICAgICAgICAgY2FzZSBEZWxldGVCeVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhU
aGlzOgotICAgICAgICBjYXNlIFRvVGhpczoKICAgICAgICAgICAgIHJldHVybiBFQ01BTW9kZTo6
ZnJvbUJ5dGUobV9vcEluZm8uYXM8dWludDhfdD4oKSk7CiAgICAgICAgIGNhc2UgRGVsZXRlQnlJ
ZDoKICAgICAgICAgY2FzZSBQdXRCeUlkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsNiArMjc1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEdldEdsb2JhbExleGljYWxW
YXJpYWJsZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0R2xvYmFsVmFyaWFibGUsIE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXREeW5hbWljVmFyLCBOb2RlUmVzdWx0SlMg
fCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0VGhpc1ZhbHVlRm9yQ2FsbCwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0RHluYW1pY1ZhciwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKE5vdGlmeVdyaXRlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
R2V0UmVnRXhwT2JqZWN0TGFzdEluZGV4LCBOb2RlUmVzdWx0SlMpIFwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjc4MTU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjE3LDI0ICsyMTcsNiBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1ZhbHVlIGdl
dEJ5VmFsT2JqCiAgICAgcmV0dXJuIGJhc2UtPmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Ub1RoaXMsIEVuY29k
ZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE9wKSkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLQotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlz
KGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSk7Ci19Ci0KLUpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25Ub1RoaXNTdHJpY3QsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKSkKLXsKLSAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwotICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNN
QU1vZGU6OnN0cmljdCgpKSk7Ci19Ci0KIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25PYmplY3RLZXlzLCBKU0FycmF5KiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPYmplY3QpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKQEAgLTMxODEsNyArMzE2Myw4IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25HZXREeW4KICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBp
bXBsKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHNjb3BlLT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgWyZdIChib29sIGZv
dW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgeworICAgIFByb3BlcnR5U2xvdCBz
bG90KGFzUHVibGljVGhpc1ZhbHVlKHNjb3BlKSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OkdldCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZShzY29wZS0+Z2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3Qs
IFsmXSAoYm9vbCBmb3VuZCwgUHJvcGVydHlTbG90JikgLT4gSlNWYWx1ZSB7CiAgICAgICAgIGlm
ICghZm91bmQpIHsKICAgICAgICAgICAgIEdldFB1dEluZm8gZ2V0UHV0SW5mbyhnZXRQdXRJbmZv
Qml0cyk7CiAgICAgICAgICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93
SWZOb3RGb3VuZCkKQEAgLTMyMjgsNyArMzIxMSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZv
aWQgcHV0RHluYW1pY1ZhcigKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KHNjb3BlLCBpc1N0cmljdE1vZGUsIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93
bkNvbnRleHQsIGlzSW5pdGlhbGl6YXRpb24oZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUo
KSkpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGFzUHVibGljVGhpc1ZhbHVlKHNjb3BlKSwg
aXNTdHJpY3RNb2RlLCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBpc0luaXRpYWxp
emF0aW9uKGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKICAgICB0aHJvd1Njb3Bl
LnJlbGVhc2UoKTsKICAgICBzY29wZS0+bWV0aG9kVGFibGUodm0pLT5wdXQoc2NvcGUsIGdsb2Jh
bE9iamVjdCwgaWRlbnQsIEpTVmFsdWU6OmRlY29kZSh2YWx1ZSksIHNsb3QpOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDI3ODE1
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OCw4ICs1OCw2IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uQ3JlYXQKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlSW50ZXJu
YWxQcm9taXNlLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogY29uc3RydWN0
b3IpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlR2VuZXJhdG9y
LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogY29uc3RydWN0b3IpKTsKIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ3JlYXRlQXN5bmNHZW5lcmF0b3IsIEpT
Q2VsbCosIChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBjb25zdHJ1Y3RvcikpOwotSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Ub1RoaXMsIEVuY29kZWRKU1ZhbHVlLCAoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSk7Ci1KU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvblRvVGhpc1N0cmljdCwgRW5jb2RlZEpTVmFsdWUsIChKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpKTsKIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uVmFsdWVNb2QsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AyKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblZhbHVlQml0Tm90LCBF
bmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9w
MSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25WYWx1ZUJpdEFuZCwgRW5j
b2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI3LDcxICs1Mjcs
MTMgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVG9U
aGlzOiB7Ci0gICAgICAgICAgICAvLyBUb1RoaXMgaW4gbWV0aG9kcyBmb3IgcHJpbWl0aXZlIHR5
cGVzIHNob3VsZCBzcGVjdWxhdGUgcHJpbWl0aXZlIHR5cGVzIGluIHN0cmljdCBtb2RlLgotICAg
ICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCk7
Ci0gICAgICAgICAgICBpZiAoaXNTdHJpY3RNb2RlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0Jvb2xlYW4pOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkgewotICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50NTJBbnkpOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCeXRlY29k
ZU51bWJlcik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3lt
Ym9sKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24o
U3BlY1N5bWJvbCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IH0KLQotI2lmIFVTRShCSUdJTlQzMikKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZUJpZ0ludDMyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0JpZ0ludDMyKTsKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUhlYXBCaWdJbnQoKSkgewotICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSGVhcEJpZ0ludCk7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQmlnSW50KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0JpZ0lu
dCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRl
bnQoKSkgewotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihT
cGVjU3RyaW5nSWRlbnQpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZVN0cmluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKFNwZWNTdHJpbmcpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N0cmluZ09iamVjdCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpIHsKKyAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjU3RyaW5nT2JqZWN0KTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgU3BlY3VsYXRlZFR5
cGUgcHJlZGljdGlvbiA9IG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCk7Ci0gICAgICAgICAg
ICBpZiAoaXNTdHJpY3RNb2RlKQotICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKG5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwotICAgICAgICAgICAgZWxzZSBpZiAo
cHJlZGljdGlvbikgeworICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24pIHsKICAgICAgICAgICAg
ICAgICBTcGVjdWxhdGVkVHlwZSBvcmlnaW5hbFByZWRpY3Rpb24gPSBwcmVkaWN0aW9uOwogICAg
ICAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uICYgflNwZWNPYmplY3QpIHsKICAgICAgICAgICAg
ICAgICAgICAgLy8gV3JhcHBlciBvYmplY3RzIGFyZSBjcmVhdGVkIG9ubHkgaW4gc2xvcHB5IG1v
ZGUuCkBAIC0xMjA0LDYgKzExNDYsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHNldFByZWRp
Y3Rpb24oU3BlY09iamVjdE90aGVyKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNh
c2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVj
T2JqZWN0IHwgU3BlY090aGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIGNhc2UgR2V0RW51bWVyYWJsZUxlbmd0aDogewogICAgICAgICAgICAgc2V0UHJlZGljdGlv
bihTcGVjSW50MzJPbmx5KTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDI3ODE1OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzIsNiArMjMyLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdAogICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICBjYXNlIENoZWNrQXJyYXlPckVtcHR5
OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxsOgogICAg
IGNhc2UgU2tpcFNjb3BlOgogICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OgogICAgIGNhc2UgR2V0
R2xvYmFsVGhpczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDIyMCw2ICs0MjIwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRUaGlzVmFsdWVG
b3JDYWxsOiB7CisgICAgICAgIGNvbXBpbGVHZXRUaGlzVmFsdWVGb3JDYWxsKG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVu
Y0RlY2xJbkV2YWw6IHsKICAgICAgICAgY29tcGlsZVJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVu
Y0RlY2xJbkV2YWwobm9kZSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyNzgx
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MjU5LDYgKzQyNTksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlR2V0RHluYW1pY1Zhcihub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxs
OiB7CisgICAgICAgIGNvbXBpbGVHZXRUaGlzVmFsdWVGb3JDYWxsKG5vZGUpOworICAgICAgICBi
cmVhazsKKyAgICB9CiAgICAgCiAgICAgY2FzZSBSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNE
ZWNsSW5FdmFsOiB7CiAgICAgICAgIGNvbXBpbGVSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNE
ZWNsSW5FdmFsKG5vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEy
NCw2ICsxMjEyNCwyNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0RHluYW1pY1Zh
CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldFRoaXNWYWx1ZUZvckNhbGwoTm9kZSogbm9kZSkKK3sKKyAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BS
UmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7CisKKyAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7
CisKKyAgICBtX2ppdC5tb3ZlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIHJlc3VsdFJlZ3Mp
OworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdFdpdGhTY29wZSA9IG1faml0LmJyYW5jaElm
VHlwZShzY29wZUdQUiwgSlNUeXBlUmFuZ2UgeyBGaXJzdEpTU2NvcGVUeXBlLCBMYXN0SlNTY29w
ZVR5cGUgfSk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgcmVzdWx0UmVncy50YWdHUFIoKSk7CisjZW5kaWYKKyAg
ICBtX2ppdC5tb3ZlKHNjb3BlR1BSLCByZXN1bHRSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgbm90
V2l0aFNjb3BlLmxpbmsoJm1faml0KTsKKworICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywg
bm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXREeW5hbWljVmFyKE5v
ZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwpAQCAtMTM0NTgsMjkgKzEzNDc3LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVOZXdUeXBlZEFycmEKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1RoaXMo
Tm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVu
dHlwZWRVc2UpOwotICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7Ci0gICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKIAotICAgIEpTVmFsdWVSZWdzIHRoaXNWYWx1ZVJlZ3MgPSB0aGlzVmFs
dWUuanNWYWx1ZVJlZ3MoKTsKLSAgICBKU1ZhbHVlUmVncyB0ZW1wUmVncyA9IHRlbXAucmVncygp
OworICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdz
ID0gdGhpc1ZhbHVlLmpzVmFsdWVSZWdzKCk7CisgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWVS
ZWdzLnBheWxvYWRHUFIoKTsKIAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBt
X2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWVSZWdzKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3Qgc2xvd0Nhc2VzOwotICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RD
ZWxsKHRoaXNWYWx1ZVJlZ3MpKTsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKAotICAgICAgICBtX2pp
dC5icmFuY2hUZXN0OCgKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLAotICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGhpc1ZhbHVlUmVncy5wYXlsb2FkR1BS
KCksIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwKLSAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoT3ZlcnJpZGVzVG9UaGlzKSkpOwotICAgIG1faml0Lm1vdmVW
YWx1ZVJlZ3ModGhpc1ZhbHVlUmVncywgdGVtcFJlZ3MpOwotCi0gICAgSl9KSVRPcGVyYXRpb25f
R0ogZnVuY3Rpb247Ci0gICAgaWYgKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKLSAgICAg
ICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXNTdHJpY3Q7Ci0gICAgZWxzZQotICAgICAgICBm
dW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpczsKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBmdW5jdGlvbiwgdGVtcFJlZ3MsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCB0aGlzVmFsdWVSZWdzKSk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hJZk5vdE9iamVjdCh2YWx1ZUdQUikpOworICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAKLSAgICBqc1ZhbHVlUmVzdWx0KHRlbXBSZWdzLCBu
b2RlKTsKKyAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaElmTm90T3RoZXIodmFsdWVSZWdzLCBzY3JhdGNoLmdwcigpKSk7CisgICAgbV9q
aXQubG9hZFB0cihnbG9iYWxPYmplY3QtPmFkZHJlc3NPZkdsb2JhbFRoaXMoKSwgdmFsdWVHUFIp
OworCisgICAgZG9uZS5saW5rKCZtX2ppdCk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uVG9PYmplY3QsIHZhbHVlR1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCB2YWx1ZVJl
Z3MsIFRydXN0ZWRJbW1QdHIobnVsbHB0cikpKTsKKyAgICBjZWxsUmVzdWx0KHZhbHVlR1BSLCBu
b2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtleXNPck9iamVj
dEdldE93blByb3BlcnR5TmFtZXMoTm9kZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTQ1Miw2ICsxNDUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUdldEdsb2Jh
bFZhcmlhYmxlKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVQdXRHbG9iYWxWYXJpYWJsZShOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlR2V0RHluYW1pY1ZhcihOb2RlKik7CisgICAgdm9pZCBjb21w
aWxlR2V0VGhpc1ZhbHVlRm9yQ2FsbChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUHV0RHluYW1p
Y1ZhcihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0Q2xvc3VyZVZhcihOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlUHV0Q2xvc3VyZVZhcihOb2RlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1Miw2ICszNTIsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUo
Tm9kZSogCiAgICAgY2FzZSBSZXNvbHZlU2NvcGU6CiAgICAgY2FzZSBSZXNvbHZlU2NvcGVGb3JI
b2lzdGluZ0Z1bmNEZWNsSW5FdmFsOgogICAgIGNhc2UgR2V0RHluYW1pY1ZhcjoKKyAgICBjYXNl
IEdldFRoaXNWYWx1ZUZvckNhbGw6CiAgICAgY2FzZSBQdXREeW5hbWljVmFyOgogICAgIGNhc2Ug
Q29tcGFyZUVxOgogICAgIGNhc2UgQ29tcGFyZUVxUHRyOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjIxLDYgKzE2MjEsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldER5bmFt
aWNWYXI6CiAgICAgICAgICAgICBjb21waWxlR2V0RHluYW1pY1ZhcigpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDoKKyAgICAgICAgICAgIGNv
bXBpbGVHZXRUaGlzVmFsdWVGb3JDYWxsKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBQdXREeW5hbWljVmFyOgogICAgICAgICAgICAgY29tcGlsZVB1dER5bmFtaWNWYXIoKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjIwOSwzMyArMjIxMiwyOSBAQCBwcml2YXRlOgogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9vcmlnaW4uc2VtYW50aWMpOwogCiAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHZhbHVlVHlwZSA9
IHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNC
bG9jayBpc0NlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sg
bm90Q2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBzbG93
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlv
biA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIAotICAgICAgICBtX291dC5icmFuY2goCi0g
ICAgICAgICAgICBpc0NlbGwodmFsdWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1
c3VhbGx5KGlzQ2VsbENhc2UpLCByYXJlbHkoc2xvd0Nhc2UpKTsKLSAgICAgICAgCi0gICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNDZWxsQ2FzZSwgc2xvd0Nh
c2UpOwotICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZh
bHVlKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgbV9vdXQudGVzdElzWmVy
bzMyKAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQ4WmVyb0V4dDMyKHZhbHVlLCBtX2hlYXBz
LkpTQ2VsbF90eXBlSW5mb0ZsYWdzKSwKLSAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDMy
KE92ZXJyaWRlc1RvVGhpcykpLAotICAgICAgICAgICAgdXN1YWxseShjb250aW51YXRpb24pLCBy
YXJlbHkoc2xvd0Nhc2UpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbCh2YWx1ZSwgdmFs
dWVUeXBlKSwgdXN1YWxseShpc0NlbGxDYXNlKSwgcmFyZWx5KG5vdENlbGxDYXNlKSk7CiAgICAg
ICAgIAorICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzQ2Vs
bENhc2UsIG5vdENlbGxDYXNlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgaXNPYmplY3RSZXN1
bHQgPSBtX291dC5hbmNob3IodmFsdWUpOworICAgICAgICBtX291dC5icmFuY2goaXNPYmplY3Qo
dmFsdWUsIHZhbHVlVHlwZSksIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNl
KSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90Q2VsbENhc2UsIHNsb3dDYXNlKTsKKyAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgaXNPdGhlclJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5s
b2FkUHRyKG1fb3V0LmFic29sdXRlKGdsb2JhbE9iamVjdC0+YWRkcmVzc09mR2xvYmFsVGhpcygp
KSkpOworICAgICAgICBtX291dC5icmFuY2goaXNPdGhlcih2YWx1ZSwgdmFsdWVUeXBlKSwgdXN1
YWxseShjb250aW51YXRpb24pLCByYXJlbHkoc2xvd0Nhc2UpKTsKKwogICAgICAgICBtX291dC5h
cHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgSl9KSVRPcGVyYXRpb25f
R0ogZnVuY3Rpb247Ci0gICAgICAgIGlmIChtX25vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSkK
LSAgICAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzU3RyaWN0OwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpczsKLSAgICAgICAgVmFs
dWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIGZ1bmN0
aW9uLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCB2YWx1ZSkpOworICAgICAgICBWYWx1ZUZy
b21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9u
VG9PYmplY3QsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIHZhbHVlLCBtX291dC5jb25zdElu
dFB0cigwKSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAog
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKLSAgICAgICAg
c2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAg
ICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGlzT2JqZWN0UmVzdWx0LCBpc090aGVy
UmVzdWx0LCBzbG93UmVzdWx0KSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlVmFsdWVBZGQo
KQpAQCAtMTQ0MDMsNiArMTQ0MDIsMjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmNvbnN0
SW50UHRyKHVpZCksIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5nZXRQdXRJbmZvKCkpKSk7CiAg
ICAgfQogCisgICAgdm9pZCBjb21waWxlR2V0VGhpc1ZhbHVlRm9yQ2FsbCgpCisgICAgeworICAg
ICAgICBMVmFsdWUgc2NvcGUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAg
IExCYXNpY0Jsb2NrIHdpdGhTY29wZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBM
QmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIFZh
bHVlRnJvbUJsb2NrIHVuZGVmaW5lZFJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5jb25zdElu
dDY0KEpTVmFsdWU6OlZhbHVlVW5kZWZpbmVkKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaCgKKyAg
ICAgICAgICAgIGlzQ2VsbFdpdGhUeXBlKHNjb3BlLCBKU1R5cGVSYW5nZSB7IEZpcnN0SlNTY29w
ZVR5cGUsIExhc3RKU1Njb3BlVHlwZSB9LCBXVEY6Om51bGxvcHQsIHByb3ZlblR5cGUobV9ub2Rl
LT5jaGlsZDEoKSkpLAorICAgICAgICAgICAgdXN1YWxseShjb250aW51YXRpb24pLCByYXJlbHko
d2l0aFNjb3BlQ2FzZSkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQu
YXBwZW5kVG8od2l0aFNjb3BlQ2FzZSwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9t
QmxvY2sgd2l0aFNjb3BlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNjb3BlKTsKKyAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVh
dGlvbiwgbGFzdE5leHQpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgdW5k
ZWZpbmVkUmVzdWx0LCB3aXRoU2NvcGVSZXN1bHQpKTsKKyAgICB9CisKICAgICB2b2lkIGNvbXBp
bGVQdXREeW5hbWljVmFyKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgkocmV2aXNpb24gMjc4MTU5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIJKHdvcmtpbmcgY29weSkK
QEAgLTE0Miw3ICsxNDIsNiBAQCBtb2R1bGUgRFNMCiAjaW5jbHVkZSAiUHJpdmF0ZUZpZWxkUHV0
S2luZC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxh
Z3MuaCIKLSNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTM3LDcgKzEzNyw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFs
Q28KICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnNsb3BweSgpKSk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCkudG9TbG9wcHlNb2RlVGhpcyhnbG9iYWxPYmplY3QpOwogICAgIHJldHVy
biBqc1N0cmluZyh2bSwgSlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUob2JqZWN0KSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQ2LDYgKzY0Niw5
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVQcm9ncmFtKGNvbnMKIHsKICAgICBKU1Nj
b3BlKiBzY29wZSA9IHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZSgpOwogICAg
IFZNJiB2bSA9IHNjb3BlLT52bSgpOworCisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdF
KCF0aGlzT2JqLT5pbmhlcml0czxKU1Njb3BlPih2bSksICJ0aGlzVmFsdWUgc2hvdWxkbid0IGJl
IEpTU2NvcGUiKTsKKwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY29wZS0+Z2xvYmFsT2Jq
ZWN0KHZtKTsKICAgICBKU0NhbGxlZSogZ2xvYmFsQ2FsbGVlID0gZ2xvYmFsT2JqZWN0LT5nbG9i
YWxDYWxsZWUoKTsKQEAgLTg0Miw2ICs4NDUsOCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVj
dXRlQ2FsbChKU0dsb2JhCiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAorICAgIFJF
TEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghdGhpc1ZhbHVlLmluaGVyaXRzPEpTU2NvcGU+KHZt
KSwgInRoaXNWYWx1ZSBzaG91bGRuJ3QgYmUgSlNTY29wZSIpOworCiAgICAgYXV0byBjbG9iYmVy
aXplVmFsaWRhdG9yID0gbWFrZVNjb3BlRXhpdChbJl0gewogICAgICAgICB2bS5kaWRFbnRlclZN
ID0gdHJ1ZTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlz
aW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYyLDYgKzQ2Miw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKCkKIAogICAgICAgICBERUZJTkVfT1Aob3BfcmVzb2x2ZV9zY29wZSkKICAgICAgICAgREVG
SU5FX09QKG9wX2dldF9mcm9tX3Njb3BlKQorICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3RoaXNf
dmFsdWVfZm9yX2NhbGwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfdG9fc2NvcGUpCiAgICAg
ICAgIERFRklORV9PUChvcF9nZXRfZnJvbV9hcmd1bWVudHMpCiAgICAgICAgIERFRklORV9PUChv
cF9wdXRfdG9fYXJndW1lbnRzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lv
biAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNv
cHkpCkBAIC03MjgsNiArNzI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBl
bWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2dldF9mcm9tX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9nZXRfdGhpc192YWx1ZV9mb3JfY2FsbChjb25zdCBJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfcHV0X3RvX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF90b19hcmd1bWVudHMoY29uc3QgSW5zdHJ1Y3Rpb24q
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExNywyMiArMTExNyw2IEBAIHZvaWQg
SklUOjplbWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0IEluc3QKICAgICBlbWl0U3RvcmVDZWxsKGJ5
dGVjb2RlLm1fZHN0LCByZXN1bHRSZWcpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF90b190aGlz
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCk7Ci0gICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgU3RydWN0dXJlSUQq
IGNhY2hlZFN0cnVjdHVyZUlEID0gJm1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQ7Ci0gICAg
VmlydHVhbFJlZ2lzdGVyIHRoaXNSZWdpc3RlciA9IGJ5dGVjb2RlLm1fc3JjRHN0OwotCi0gICAg
ZW1pdExvYWQodGhpc1JlZ2lzdGVyLCByZWdUMywgcmVnVDIpOwotCi0gICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoSWZOb3RDZWxsKHJlZ1QzKSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RUeXBl
KHJlZ1QyLCBGaW5hbE9iamVjdFR5cGUpKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICBsb2FkMzIoY2FjaGVkU3Ry
dWN0dXJlSUQsIHJlZ1QyKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIHJl
Z1QwLCByZWdUMikpOwotfQotCiB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja190ZHooY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3Vy
cmVudEluc3RydWN0aW9uLT5hczxPcENoZWNrVGR6PigpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjk1LDIw
ICsxMjk1LDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Njb3BlKGNvbnN0IEluc3RydQogICAg
IGVtaXRTdG9yZUNlbGwoZHN0LCByZWdUMCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3RvX3Ro
aXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBhdXRvIGJ5
dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvVGhpcz4oKTsKLSAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBTdHJ1Y3R1cmVJ
RCogY2FjaGVkU3RydWN0dXJlSUQgPSAmbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRDsKLSAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fc3JjRHN0LCByZWdUMSk7Ci0KLSAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEpOwotCi0gICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoSWZOb3RUeXBlKHJlZ1QxLCBGaW5hbE9iamVjdFR5cGUpKTsKLSAgICBsb2FkMzIoY2Fj
aGVkU3RydWN0dXJlSUQsIHJlZ1QyKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVh
bCwgQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpKTsK
LX0KLQogdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0
aW9uLT5hczxPcENyZWF0ZVRoaXM+KCk7CkBAIC0yMDkzLDYgKzIwNzksNDQgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X3Byb3RvdHlwZV9vZihjb25zdAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoYnl0ZWNvZGUubV9kc3QsIHJlc3VsdFJlZ3MpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfdGhpc192YWx1ZV9mb3JfY2FsbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0
VGhpc1ZhbHVlRm9yQ2FsbD4oKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEpTVmFsdWVSZWdz
IHZhbHVlUmVncyhyZWdUMCk7CisjZWxzZQorICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyhyZWdU
MSwgcmVnVDApOworI2VuZGlmCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X3Njb3BlLCB2YWx1ZVJlZ3MpOworCisgICAgSnVtcCBpc1dpdGhTY29wZSA9IGJyYW5jaElmTm90
VHlwZSh2YWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBKU1R5cGVSYW5nZSB7IEZpcnN0SlNTY29wZVR5
cGUsIExhc3RKU1Njb3BlVHlwZSB9KTsKKyAgICBtb3ZlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVk
KCksIHZhbHVlUmVncyk7CisgICAgaXNXaXRoU2NvcGUubGluayh0aGlzKTsKKworICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3QsIHZhbHVlUmVncyk7Cit9CisKK3ZvaWQg
SklUOjplbWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcFRvVGhp
cz4oKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyhyZWdU
MCk7CisjZWxzZQorICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyhyZWdUMSwgcmVnVDApOworI2Vu
ZGlmCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3NyY0RzdCwgdmFsdWVS
ZWdzKTsKKworICAgIEp1bXAgbm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbCh2YWx1ZVJlZ3MpOwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90T2JqZWN0KHZhbHVlUmVncy5wYXlsb2FkR1BSKCkp
KTsKKyAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CisKKyAgICBub3RDZWxsLmxpbmsodGhpcyk7Cisg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RPdGhlcih2YWx1ZVJlZ3MsIHJlZ1QzKSk7CisgICAg
c3RvcmVUcnVzdGVkVmFsdWUobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxUaGlz
KCksIGFkZHJlc3NGb3IoYnl0ZWNvZGUubV9zcmNEc3QpKTsKKworICAgIGRvbmUubGluayh0aGlz
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTU2LDcgKzI5NTYsOCBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uR2V0RnJvCiAgICAgLy8gTW9kdWxlVmFyIGlzIGFsd2F5cyBjb252ZXJ0
ZWQgdG8gQ2xvc3VyZVZhciBmb3IgZ2V0X2Zyb21fc2NvcGUuCiAgICAgQVNTRVJUKGdldFB1dElu
Zm8ucmVzb2x2ZVR5cGUoKSAhPSBNb2R1bGVWYXIpOwogCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZShzY29wZS0+Z2V0UHJvcGVydHlTbG90KGdsb2Jh
bE9iamVjdCwgaWRlbnQsIFsmXSAoYm9vbCBmb3VuZCwgUHJvcGVydHlTbG90JiBzbG90KSAtPiBK
U1ZhbHVlIHsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChhc1B1YmxpY1RoaXNWYWx1ZShzY29wZSks
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2NvcGUtPmdldFByb3BlcnR5U2xv
dChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xv
dCYpIC0+IEpTVmFsdWUgewogICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAo
Z2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCkKICAgICAgICAgICAg
ICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVm
aW5lZFZhcmlhYmxlRXJyb3IoZ2xvYmFsT2JqZWN0LCBpZGVudCkpOwpAQCAtMzAyNyw3ICszMDI4
LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFRvUwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGdldFB1dElu
Zm8uZWNtYU1vZGUoKS5pc1N0cmljdCgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0
LCBpc0luaXRpYWxpemF0aW9uKGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKKyAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChhc1B1YmxpY1RoaXNWYWx1ZShzY29wZSksIGdldFB1dElu
Zm8uZWNtYU1vZGUoKS5pc1N0cmljdCgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0
LCBpc0luaXRpYWxpemF0aW9uKGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKICAg
ICBzY29wZS0+bWV0aG9kVGFibGUodm0pLT5wdXQoc2NvcGUsIGdsb2JhbE9iamVjdCwgaWRlbnQs
IHZhbHVlLCBzbG90KTsKICAgICAKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHZvaWQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMzgsNyArMjEzOCw4
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfZnJvbV8KICAgICAvLyBNb2R1
bGVWYXIgaXMgYWx3YXlzIGNvbnZlcnRlZCB0byBDbG9zdXJlVmFyIGZvciBnZXRfZnJvbV9zY29w
ZS4KICAgICBBU1NFUlQobWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkgIT0gTW9k
dWxlVmFyKTsKIAotICAgIExMSU5UX1JFVFVSTihzY29wZS0+Z2V0UHJvcGVydHlTbG90KGdsb2Jh
bE9iamVjdCwgaWRlbnQsIFsmXSAoYm9vbCBmb3VuZCwgUHJvcGVydHlTbG90JiBzbG90KSAtPiBK
U1ZhbHVlIHsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChhc1B1YmxpY1RoaXNWYWx1ZShzY29wZSks
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAgIExMSU5UX1JFVFVS
TihzY29wZS0+Z2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QsIFsmXSAo
Ym9vbCBmb3VuZCwgUHJvcGVydHlTbG90JikgLT4gSlNWYWx1ZSB7CiAgICAgICAgIGlmICghZm91
bmQpIHsKICAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUo
KSA9PSBUaHJvd0lmTm90Rm91bmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJv
cihnbG9iYWxPYmplY3QsIGlkZW50KSk7CkBAIC0yMTk3LDcgKzIxOTgsNyBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfcHV0X3RvX3NjCiAgICAgaWYgKG1ldGFkYXRhLm1fZ2V0UHV0
SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCAmJiAhaGFzUHJvcGVydHkpCiAg
ICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBpZGVudCkpOwogCi0gICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIG1ldGFkYXRh
Lm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpLmlzU3RyaWN0KCksIFB1dFByb3BlcnR5U2xvdDo6VW5r
bm93bkNvbnRleHQsIGlzSW5pdGlhbGl6YXRpb24obWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRp
YWxpemF0aW9uTW9kZSgpKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYXNQdWJsaWNUaGlz
VmFsdWUoc2NvcGUpLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKS5pc1N0cmljdCgp
LCBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKG1ldGFk
YXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpOwogICAgIHNjb3BlLT5tZXRo
b2RUYWJsZSh2bSktPnB1dChzY29wZSwgZ2xvYmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHNsb3Qp
OwogICAgIAogICAgIENvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVQdXRUb1Njb3BlR2xvYmFsKGds
b2JhbE9iamVjdCwgY29kZUJsb2NrLCBieXRlY29kZSwgc2NvcGUsIHNsb3QsIGlkZW50KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpA
QCAtODE4LDE0ICs4MTgsMjYgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Njb3BlLCBPcEdl
dFNjbwogZW5kKQogCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3BfdG9fdGhpcywgT3BUb1RoaXMs
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorbGxpbnRPcChv
cF90b190aGlzLCBPcFRvVGhpcywgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCiAgICAgZ2V0
KG1fc3JjRHN0LCB0MCkKLSAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcs
IC5vcFRvVGhpc1Nsb3cKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAg
YmluZXEgdDEsIENlbGxUYWcsIC5vcFRvVGhpc05vdENlbGwKICAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAotICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgRmluYWxP
YmplY3RUeXBlLCAub3BUb1RoaXNTbG93Ci0gICAgbWV0YWRhdGEodDIsIHQzKQotICAgIGxvYWRp
IE9wVG9UaGlzOjpNZXRhZGF0YTo6bV9jYWNoZWRTdHJ1Y3R1cmVJRFt0Ml0sIHQyCi0gICAgYmlu
ZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDIsIC5vcFRvVGhpc1Nsb3cKKyAgICBiYmIg
SlNDZWxsOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93CisgICAgZGlzcGF0
Y2goKQorCisub3BUb1RoaXNOb3RDZWxsOgorICAgIG9yaSAxLCB0MQorICAgIGJpZXEgdDEsIE51
bGxUYWcsIC5vcFRvVGhpc1VuZGVmaW5lZE9yTnVsbAorICAgIGNhbGxTbG93UGF0aChfc2xvd19w
YXRoX3RvX3RoaXMpCisgICAgZGlzcGF0Y2goKQorCisub3BUb1RoaXNVbmRlZmluZWRPck51bGw6
CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2ds
b2JhbE9iamVjdFt0Ml0sIHQyCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fZ2xvYmFsVGhp
c1t0Ml0sIHQyCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAg
IHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQogICAgIGRpc3BhdGNoKCkKIAog
Lm9wVG9UaGlzU2xvdzoKQEAgLTI1NTQsNiArMjU2NiwxOCBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9mcm9tX3Njb3BlLCBPCiBlbmQpCiAKIAorbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0
X3RoaXNfdmFsdWVfZm9yX2NhbGwsIE9wR2V0VGhpc1ZhbHVlRm9yQ2FsbCwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIHJldHVybikKKyAgICBnZXQobV9zY29wZSwgdDApCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiYmIgSlNDZWxsOjptX3R5cGVbdDBd
LCBGaXJzdEpTU2NvcGVUeXBlLCAuaXNXaXRoU2NvcGUKKyAgICBiYmEgSlNDZWxsOjptX3R5cGVb
dDBdLCBMYXN0SlNTY29wZVR5cGUsIC5pc1dpdGhTY29wZQorICAgIHJldHVybihVbmRlZmluZWRU
YWcsIDApCisKKy5pc1dpdGhTY29wZToKKyAgICByZXR1cm4oQ2VsbFRhZywgdDApCitlbmQpCisK
KwogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9wUHV0VG9TY29wZSwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWFjcm8gcHV0
UHJvcGVydHkoKQogICAgICAgICBnZXQobV92YWx1ZSwgdDEpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2
aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTgyOCwxNSArODI4LDI0IEBAIGxsaW50
T3BXaXRoUmV0dXJuKG9wX2dldF9zY29wZSwgT3BHZXRTY28KIGVuZCkKIAogCi1sbGludE9wV2l0
aE1ldGFkYXRhKG9wX3RvX3RoaXMsIE9wVG9UaGlzLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWRhdGEsIHJldHVybikKK2xsaW50T3Aob3BfdG9fdGhpcywgT3BUb1RoaXMsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoKQogICAgIGdldChtX3NyY0RzdCwgdDApCi0gICAgbG9hZHEg
W2NmciwgdDAsIDhdLCB0MAotICAgIGJ0cW56IHQwLCBub3RDZWxsTWFzaywgLm9wVG9UaGlzU2xv
dwotICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgRmluYWxPYmplY3RUeXBlLCAub3BUb1Ro
aXNTbG93Ci0gICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDEKLSAgICBtZXRh
ZGF0YSh0MiwgdDMpCi0gICAgbG9hZGkgT3BUb1RoaXM6Ok1ldGFkYXRhOjptX2NhY2hlZFN0cnVj
dHVyZUlEW3QyXSwgdDIKLSAgICBiaW5lcSB0MSwgdDIsIC5vcFRvVGhpc1Nsb3cKKyAgICBsb2Fk
cSBbY2ZyLCB0MCwgOF0sIHQxCisgICAgYnRxbnogdDEsIG5vdENlbGxNYXNrLCAub3BUb1RoaXNO
b3RDZWxsCisgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wVG9UaGlz
U2xvdworICAgIGRpc3BhdGNoKCkKKworLm9wVG9UaGlzTm90Q2VsbDoKKyAgICBhbmRxIH5UYWdV
bmRlZmluZWQsIHQxCisgICAgYnFlcSB0MSwgVmFsdWVOdWxsLCAub3BUb1RoaXNVbmRlZmluZWRP
ck51bGwKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF90b190aGlzKQorICAgIGRpc3BhdGNo
KCkKKworLm9wVG9UaGlzVW5kZWZpbmVkT3JOdWxsOgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDFdLCB0MQorICAgIGxv
YWRwIEpTR2xvYmFsT2JqZWN0OjptX2dsb2JhbFRoaXNbdDFdLCB0MQorICAgIHN0b3JlcSB0MSwg
W2NmciwgdDAsIDhdCiAgICAgZGlzcGF0Y2goKQogCiAub3BUb1RoaXNTbG93OgpAQCAtMjY4NCw2
ICsyNjkzLDE3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE8KIGVu
ZCkKIAogCitsbGludE9wV2l0aFJldHVybihvcF9nZXRfdGhpc192YWx1ZV9mb3JfY2FsbCwgT3BH
ZXRUaGlzVmFsdWVGb3JDYWxsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQor
ICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fc2NvcGUsIHQwKQorICAgIGJiYiBKU0NlbGw6Om1fdHlw
ZVt0MF0sIEZpcnN0SlNTY29wZVR5cGUsIC5pc1dpdGhTY29wZQorICAgIGJiYSBKU0NlbGw6Om1f
dHlwZVt0MF0sIExhc3RKU1Njb3BlVHlwZSwgLmlzV2l0aFNjb3BlCisgICAgcmV0dXJuKFZhbHVl
VW5kZWZpbmVkKQorCisuaXNXaXRoU2NvcGU6CisgICAgcmV0dXJuKHQwKQorZW5kKQorCisKIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3RvX3Njb3BlLCBPcFB1dFRvU2NvcGUsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIG1hY3JvIHB1dFByb3Bl
cnR5KCkKICAgICAgICAgZ2V0KG1fdmFsdWUsIHQxKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMjc4
MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCSh3b3JraW5nIGNvcHkpCkBAIC01NDEsNiArNTQxLDggQEAgY29uc3QgRmluYWxPYmplY3RU
eXBlID0gY29uc3RleHByIEZpbmFsTwogY29uc3QgSlNGdW5jdGlvblR5cGUgPSBjb25zdGV4cHIg
SlNGdW5jdGlvblR5cGUKIGNvbnN0IEFycmF5VHlwZSA9IGNvbnN0ZXhwciBBcnJheVR5cGUKIGNv
bnN0IERlcml2ZWRBcnJheVR5cGUgPSBjb25zdGV4cHIgRGVyaXZlZEFycmF5VHlwZQorY29uc3Qg
Rmlyc3RKU1Njb3BlVHlwZSA9IGNvbnN0ZXhwciBGaXJzdEpTU2NvcGVUeXBlCitjb25zdCBMYXN0
SlNTY29wZVR5cGUgPSBjb25zdGV4cHIgTGFzdEpTU2NvcGVUeXBlCiBjb25zdCBQcm94eU9iamVj
dFR5cGUgPSBjb25zdGV4cHIgUHJveHlPYmplY3RUeXBlCiBjb25zdCBIZWFwQmlnSW50VHlwZSA9
IGNvbnN0ZXhwciBIZWFwQmlnSW50VHlwZQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU5MSw3ICs1OTEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQ
cm90b0Z1bmNUCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0
cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7
CiAKICAgICAvLyAxLiBMZXQgYXJyYXkgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2JqZWN0
IG9uIHRoZSB0aGlzIHZhbHVlLgogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVl
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CkBAIC02NjksOSArNjY5LDggQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jVAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxP
YmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9
IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHVpbnQ2
NF90IGxlbmd0aCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0b0xlbmd0aChnbG9iYWxPYmplY3Qs
IHRoaXNPYmplY3QpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKQEAgLTc2NCw3ICs3NjMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJy
YXlQcm90b0Z1bmNKCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgLy8gMS4gTGV0IE8gYmUgPyBUb09iamVjdCh0aGlzIHZhbHVlKS4KLSAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxP
YmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhp
c09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJu
IGVuY29kZWRKU1ZhbHVlKCk7CkBAIC04MjAsNyArODE5LDcgQEAgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGNyZWF0ZUFycmF5SXRlcmF0bwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxP
YmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhp
c09iamVjdCk7CiAgICAgVU5VU0VEX1BBUkFNKHNjb3BlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRo
aXNPYmplY3QpKQpAQCAtODQ5LDcgKzg0OCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihh
cnJheVByb3RvRnVuY1AKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2Rl
OjpzdHJpY3QoKSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpOwogCiAgICAgaWYgKGlzSlNBcnJheSh0aGlzVmFsdWUpKQogICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShhc0FycmF5KHRoaXNWYWx1ZSktPnBvcChn
bG9iYWxPYmplY3QpKSk7CkBAIC04ODcsNyArODg2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGFycmF5UHJvdG9GdW5jUAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzdHJpY3QoKSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogCiAgICAgaWYgKExJS0VMWShpc0pTQXJyYXkodGhpc1ZhbHVlKSAmJiBjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKSA9PSAxKSkgewogICAgICAgICBKU0FycmF5KiBhcnJheSA9
IGFzQXJyYXkodGhpc1ZhbHVlKTsKQEAgLTkyMyw3ICs5MjIsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNSCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2Jq
ZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0
aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1
cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEwMjUsNyArMTAyNCw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihhcnJheVByb3RvRnVuY1MKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpT
T2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2Jq
ZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNP
YmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlz
T2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4gZW5jb2Rl
ZEpTVmFsdWUoKTsKQEAgLTEwNTIsNyArMTA1MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihhcnJheVByb3RvRnVuY1MKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIv
I3NlYy1hcnJheS5wcm90b3R5cGUuc2xpY2UKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmpl
Y3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2Jq
KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAgICAgICByZXR1cm4geyB9OwpAQCAt
MTExNiw3ICsxMTE1LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5j
UwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50
b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NF
UlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0
aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xMjIyLDcgKzEy
MjEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNVCiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8vIDE1LjQuNC4xMwogCi0g
ICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9i
YWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IXRoaXNPYmopOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiBl
bmNvZGVkSlNWYWx1ZSgpOwpAQCAtMTM1Nyw3ICsxMzU2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGFycmF5UHJvdG9GdW5jSQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIC8vIDE1LjQuNC4xNAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3Ry
aWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3Qg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhD
RVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBp
ZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTM5Nyw3
ICsxMzk2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jTAogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDE1LjQuNC4x
NQotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2Vw
dGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQog
ICAgICAgICByZXR1cm4geyB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2xhc3NJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2xhc3NJbmZvLmgJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NsYXNzSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw5ICs3MSw2IEBAIHN0cnVj
dCBNZXRob2RUYWJsZSB7CiAgICAgdXNpbmcgRG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2tGdW5j
dGlvblB0ciA9IHZvaWQgKCopKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIERvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrRnVu
Y3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrKTsK
IAotICAgIHVzaW5nIFRvVGhpc0Z1bmN0aW9uUHRyID0gSlNWYWx1ZSAoKikoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBFQ01BTW9kZSk7Ci0gICAgVG9UaGlzRnVuY3Rpb25QdHIgTUVUSE9EX1RB
QkxFX0VOVFJZKHRvVGhpcyk7Ci0KICAgICB1c2luZyBHZXRPd25Qcm9wZXJ0eU5hbWVzRnVuY3Rp
b25QdHIgPSB2b2lkICgqKShKU09iamVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBEb250RW51bVByb3BlcnRpZXNNb2RlKTsKICAgICBHZXRPd25Qcm9wZXJ0eU5hbWVz
RnVuY3Rpb25QdHIgTUVUSE9EX1RBQkxFX0VOVFJZKGdldE93blByb3BlcnR5TmFtZXMpOwogICAg
IEdldE93blByb3BlcnR5TmFtZXNGdW5jdGlvblB0ciBNRVRIT0RfVEFCTEVfRU5UUlkoZ2V0T3du
U3BlY2lhbFByb3BlcnR5TmFtZXMpOwpAQCAtMTU2LDcgKzE1Myw2IEBAIHN0cnVjdCBNZXRob2RU
YWJsZSB7CiAgICAgICAgICZDbGFzc05hbWU6OmdldE93blByb3BlcnR5U2xvdCwgXAogICAgICAg
ICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4LCBcCiAgICAgICAgICZDbGFz
c05hbWU6OmRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrLCBcCi0gICAgICAgICZDbGFzc05hbWU6
OnRvVGhpcywgXAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0eU5hbWVzLCBcCiAg
ICAgICAgICZDbGFzc05hbWU6OmdldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzLCBcCiAgICAgICAg
ICZDbGFzc05hbWU6OmN1c3RvbUhhc0luc3RhbmNlLCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI3ODE1
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0NiwyOCArMzQ2LDggQEAgSlNDX0RFRklORV9DT01NT05fU0xP
V19QQVRIKHNsb3dfcGF0aF90bwogewogICAgIEJFR0lOKCk7CiAgICAgYXV0byBieXRlY29kZSA9
IHBjLT5hczxPcFRvVGhpcz4oKTsKLSAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFk
YXRhKGNvZGVCbG9jayk7CiAgICAgSlNWYWx1ZSB2MSA9IEdFVChieXRlY29kZS5tX3NyY0RzdCku
anNWYWx1ZSgpOwotICAgIGlmICh2MS5pc0NlbGwoKSkgewotICAgICAgICBTdHJ1Y3R1cmVJRCBt
eVN0cnVjdHVyZUlEID0gdjEuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCk7Ci0gICAgICAgIFN0cnVj
dHVyZUlEIG90aGVyU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEOwot
ICAgICAgICBpZiAobXlTdHJ1Y3R1cmVJRCAhPSBvdGhlclN0cnVjdHVyZUlEKSB7Ci0gICAgICAg
ICAgICBpZiAob3RoZXJTdHJ1Y3R1cmVJRCkKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Rv
VGhpc1N0YXR1cyA9IFRvVGhpc0NvbmZsaWN0ZWQ7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2Nh
Y2hlZFN0cnVjdHVyZUlEID0gbXlTdHJ1Y3R1cmVJRDsKLSAgICAgICAgICAgIHZtLmhlYXAud3Jp
dGVCYXJyaWVyKGNvZGVCbG9jaywgdm0uZ2V0U3RydWN0dXJlKG15U3RydWN0dXJlSUQpKTsKLSAg
ICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1ldGFkYXRhLm1fdG9UaGlzU3RhdHVzID0g
VG9UaGlzQ29uZmxpY3RlZDsKLSAgICAgICAgbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCA9
IDA7Ci0gICAgfQotICAgIC8vIE5vdGU6IFdlIG9ubHkgbmVlZCB0byBkbyB0aGlzIHZhbHVlIHBy
b2ZpbGluZyBoZXJlIG9uIHRoZSBzbG93IHBhdGguIFRoZSBmYXN0IHBhdGgKLSAgICAvLyBqdXN0
IHJldHVybnMgdGhlIGlucHV0IHRvIHRvX3RoaXMgaWYgdGhlIHN0cnVjdHVyZSBjaGVjayBzdWNj
ZWVkcy4gSWYgdGhlIHN0cnVjdHVyZQotICAgIC8vIGNoZWNrIHN1Y2NlZWRzLCBkb2luZyB2YWx1
ZSBwcm9maWxpbmcgaGVyZSBpcyBlcXVpdmFsZW50IHRvIGRvaW5nIGl0IHdpdGggYSBwb3RlbnRp
YWxseQotICAgIC8vIGRpZmZlcmVudCBvYmplY3QgdGhhdCBzdGlsbCBoYXMgdGhlIHNhbWUgc3Ry
dWN0dXJlIG9uIHRoZSBmYXN0IHBhdGggc2luY2UgaXQnbGwgcHJvZHVjZQotICAgIC8vIHRoZSBz
YW1lIFNwZWN1bGF0ZWRUeXBlLiBUaGVyZWZvcmUsIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJv
dXQgdmFsdWUgcHJvZmlsaW5nIG9uIHRoZQotICAgIC8vIGZhc3QgcGF0aC4KLSAgICBhdXRvIHZh
bHVlID0gdjEudG9UaGlzKGdsb2JhbE9iamVjdCwgYnl0ZWNvZGUubV9lY21hTW9kZSk7CisgICAg
SlNPYmplY3QqIHZhbHVlID0gdjEudG9TbG9wcHlNb2RlVGhpcyhnbG9iYWxPYmplY3QpOwogICAg
IFJFVFVSTl9XSVRIX1BST0ZJTElOR19DVVNUT00oYnl0ZWNvZGUubV9zcmNEc3QsIHZhbHVlLCBQ
Uk9GSUxFX1ZBTFVFKHZhbHVlKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMx
LDkgKzEzMSwxMyBAQCBKU1ZhbHVlIGV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAg
ICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbVN0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50
KCkuYXRvbVN0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3Rv
ckJ1c3lPbkN1cnJlbnRUaHJlYWQoKSk7CiAKKyAgICBKU09iamVjdCogdGhpc09iaiA9IG51bGxw
dHI7CiAgICAgaWYgKCF0aGlzVmFsdWUgfHwgdGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkp
Ci0gICAgICAgIHRoaXNWYWx1ZSA9IGdsb2JhbE9iamVjdDsKLSAgICBKU09iamVjdCogdGhpc09i
aiA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1ZS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01B
TW9kZTo6c2xvcHB5KCkpKTsKKyAgICAgICAgdGhpc09iaiA9IGdsb2JhbE9iamVjdC0+Z2xvYmFs
VGhpcygpOworICAgIGVsc2UgeworICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0Uo
dGhpc1ZhbHVlLmlzT2JqZWN0KCksICJ0aGlzVmFsdWUgc2hvdWxkIGJlIHVuZGVmaW5lZCwgbnVs
bCwgb3IgYW4gb2JqZWN0Iik7CisgICAgICAgIHRoaXNPYmogPSBhc09iamVjdCh0aGlzVmFsdWUp
OworICAgIH0KICAgICBKU1ZhbHVlIHJlc3VsdCA9IHZtLmludGVycHJldGVyLT5leGVjdXRlUHJv
Z3JhbShzb3VyY2UsIGdsb2JhbE9iamVjdCwgdGhpc09iaik7CiAKICAgICBpZiAoc2NvcGUuZXhj
ZXB0aW9uKCkpIHsKQEAgLTE2MSw3ICsxNjUsNyBAQCBKU1ZhbHVlIGV2YWx1YXRlV2l0aFNjb3Bl
RXh0ZW5zaW9uKEpTR2xvCiAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0R2xvYmFsU2NvcGVFeHRl
bnNpb24oSlNXaXRoU2NvcGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBpZ25vcmVkUHJldmlv
dXNTY29wZSwgc2NvcGVFeHRlbnNpb25PYmplY3QpKTsKICAgICB9CiAKLSAgICBKU1ZhbHVlIHJl
dHVyblZhbHVlID0gSlNDOjpldmFsdWF0ZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgZ2xvYmFsT2Jq
ZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IEpTQzo6
ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygp
LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAKICAgICBpZiAoc2NvcGVFeHRlbnNpb25PYmplY3QpCiAg
ICAgICAgIGdsb2JhbE9iamVjdC0+Y2xlYXJHbG9iYWxTY29wZUV4dGVuc2lvbigpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90
b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTIsNyArMzUyLDcgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGRhdGVQcm90b0Z1bmNUbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxP
YmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEYXRlLnBy
b3RvdHlwZVtTeW1ib2wudG9QcmltaXRpdmVdIGV4cGVjdGVkIHx0aGlzfCB0byBiZSBhbiBvYmpl
Y3QuIik7CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPih0aGlz
VmFsdWUpOwpAQCAtODY2LDggKzg2Niw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRl
UHJvdG9GdW5jR2UKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKLSAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHlu
YW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNWYWx1ZSk7CisgICAgYXV0byogdGhpc0Rh
dGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKQEAgLTg4Myw4ICs4ODIs
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZGF0ZVByb3RvRnVuY1RvCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKLSAgICBKU09iamVj
dCogb2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAog
ICAgIEpTVmFsdWUgdGltZVZhbHVlID0gb2JqZWN0LT50b1ByaW1pdGl2ZShnbG9iYWxPYmplY3Qs
IFByZWZlck51bWJlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
clByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcz
LDcgKzczLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGVycm9yUHJvdG9GdW5jVAogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEuIExldCBP
IGJlIHRoZSB0aGlzIHZhbHVlLgotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKIAogICAgIC8vIDIu
IElmIFR5cGUoTykgaXMgbm90IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgog
ICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JpZ0ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmgJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHVibGljOgogICAgIHVzaW5nIEJhc2UgPSBKU0NlbGw7CiAgICAgdXNpbmcgRGlnaXQgPSBV
Q1BVUmVnaXN0ZXI7CiAKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgT3ZlcnJp
ZGVzVG9UaGlzOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAgICAgZnJpZW5k
IGNsYXNzIENhY2hlZEJpZ0ludDsKIAogICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU47CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAkocmV2aXNp
b24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCwyNiArMTY0LDYgQEAgSlNPYmplY3QqIEpTVmFsdWU6
OnRvT2JqZWN0U2xvd0Nhc2UoSlNHbAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1KU1ZhbHVl
IEpTVmFsdWU6OnRvVGhpc1Nsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVD
TUFNb2RlIGVjbWFNb2RlKSBjb25zdAotewotICAgIEFTU0VSVCghaXNDZWxsKCkpOwotCi0gICAg
aWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCi0gICAgICAgIHJldHVybiAqdGhpczsKLQotICAgIGlm
IChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSkKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJl
cihnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7Ci0gICAgaWYgKGlzVHJ1ZSgpIHx8IGlzRmFsc2Uo
KSkKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9vbGVhbihn
bG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7Ci0jaWYgVVNFKEJJR0lOVDMyKQotICAgIGlmIChpc0Jp
Z0ludDMyKCkpCi0gICAgICAgIHJldHVybiBCaWdJbnRPYmplY3Q6OmNyZWF0ZShnbG9iYWxPYmpl
Y3QtPnZtKCksIGdsb2JhbE9iamVjdCwgKnRoaXMpOwotI2VuZGlmCi0KLSAgICBBU1NFUlQoaXNV
bmRlZmluZWRPck51bGwoKSk7Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygp
OwotfQotCiBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJ
KHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDcgKzMzMiw3IEBAIHB1YmxpYzoKICAgICBi
b29sIHB1dEJ5SW5kZXgoSlNHbG9iYWxPYmplY3QqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwogCiAgICAgSlNWYWx1ZSBnZXRQcm90b3R5cGUoSlNH
bG9iYWxPYmplY3QqKSBjb25zdDsKLSAgICBKU1ZhbHVlIHRvVGhpcyhKU0dsb2JhbE9iamVjdCos
IEVDTUFNb2RlKSBjb25zdDsKKyAgICBKU09iamVjdCogdG9TbG9wcHlNb2RlVGhpcyhKU0dsb2Jh
bE9iamVjdCopIGNvbnN0OwogCiAgICAgc3RhdGljIGJvb2wgZXF1YWwoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKTsKICAgICBzdGF0aWMgYm9vbCBlcXVhbFNsb3dDYXNl
KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CkBAIC01MjEsNyArNTIx
LDYgQEAgcHJpdmF0ZToKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1N0cmluZyogdG9TdHJpbmdT
bG93Q2FzZShKU0dsb2JhbE9iamVjdCosIGJvb2wgcmV0dXJuRW1wdHlTdHJpbmdPbkVycm9yKSBj
b25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBXVEY6OlN0cmluZyB0b1dURlN0cmluZ1Nsb3dD
YXNlKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmpl
Y3QqIHRvT2JqZWN0U2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBKU1ZhbHVlIHRvVGhpc1Nsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1v
ZGUpIGNvbnN0OwogCiAgICAgRW5jb2RlZFZhbHVlRGVzY3JpcHRvciB1OwogfTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAko
cmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtOTI5LDkgKzkyOSw5IEBAIGlubGluZSBj
b25zdCBDbGFzc0luZm8qIEpTVmFsdWU6OmNsYXNzSW4KICAgICByZXR1cm4gaXNDZWxsKCkgPyBh
c0NlbGwoKS0+Y2xhc3NJbmZvKHZtKSA6IG51bGxwdHI7CiB9CiAKLWlubGluZSBKU1ZhbHVlIEpT
VmFsdWU6OnRvVGhpcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21h
TW9kZSkgY29uc3QKK2lubGluZSBKU09iamVjdCogSlNWYWx1ZTo6dG9TbG9wcHlNb2RlVGhpcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewotICAgIHJldHVybiBpc0NlbGwo
KSA/IGFzQ2VsbCgpLT5tZXRob2RUYWJsZShnZXRWTShnbG9iYWxPYmplY3QpKS0+dG9UaGlzKGFz
Q2VsbCgpLCBnbG9iYWxPYmplY3QsIGVjbWFNb2RlKSA6IHRvVGhpc1Nsb3dDYXNlKGdsb2JhbE9i
amVjdCwgZWNtYU1vZGUpOworICAgIHJldHVybiBpc1VuZGVmaW5lZE9yTnVsbCgpID8gZ2xvYmFs
T2JqZWN0LT5nbG9iYWxUaGlzKCkgOiB0b09iamVjdChnbG9iYWxPYmplY3QpOwogfQogCiBBTFdB
WVNfSU5MSU5FIEpTVmFsdWUgSlNWYWx1ZTo6Z2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miwx
MyArMTQyLDYgQEAgYm9vbCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbAogICAg
IHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShnbG9iYWxPYmplY3QtPnZtKCkpLT5kZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyKTsK
IH0KIAotSlNWYWx1ZSBKU0NlbGw6OnRvVGhpcyhKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQotewotICAgIGlmIChlY21hTW9kZS5p
c1N0cmljdCgpKQotICAgICAgICByZXR1cm4gY2VsbDsKLSAgICByZXR1cm4gY2VsbC0+dG9PYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKLX0KLQogSlNWYWx1ZSBKU0NlbGw6OnRvUHJpbWl0aXZlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgcHJlZmVycmVk
VHlwZSkgY29uc3QKIHsKICAgICBpZiAoaXNTdHJpbmcoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDggKzE4NSw2
IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWxldGVQcm9w
ZXJ0eShKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lKTsKIAotICAgIHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0NlbGwq
LCBKU0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKTsKLQogICAgIHN0YXRpYyBib29sIGNhblVzZUZh
c3RHZXRPd25Qcm9wZXJ0eShjb25zdCBTdHJ1Y3R1cmUmKTsKICAgICBKU1ZhbHVlIGZhc3RHZXRP
d25Qcm9wZXJ0eShWTSYsIFN0cnVjdHVyZSYsIFByb3BlcnR5TmFtZSk7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24g
Mjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMTIxNiw5ICsxMjE2LDE0IEBAIGlubGluZSBKU0FycmF5KiBj
b25zdHJ1Y3RBcnJheU5lZ2F0aXZlSW4KICAgICByZXR1cm4gQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZTo6dXBkYXRlTGFzdEFsbG9jYXRpb25Gb3IocHJvZmlsZSwgY29uc3RydWN0QXJyYXlOZWdhdGl2
ZUluZGV4ZWQoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHZhbHVlcywgbGVuZ3RoKSk7CiB9CiAK
LWlubGluZSBKU09iamVjdCogSlNTY29wZTo6Z2xvYmFsVGhpcygpCi17IAotICAgIHJldHVybiBn
bG9iYWxPYmplY3QoKS0+Z2xvYmFsVGhpcygpOworQUxXQVlTX0lOTElORSBKU09iamVjdCogYXNQ
dWJsaWNUaGlzVmFsdWUoSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gb2JqZWN0LT5p
c0dsb2JhbE9iamVjdCgpID8ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4ob2JqZWN0KS0+Z2xvYmFs
VGhpcygpIDogb2JqZWN0OworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUgYXNQdWJsaWNUaGlz
VmFsdWUoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUuaXNPYmplY3QoKSA/IGFz
UHVibGljVGhpc1ZhbHVlKGFzT2JqZWN0KHZhbHVlKSkgOiB2YWx1ZTsKIH0KIAogaW5saW5lIEpT
T2JqZWN0KiBKU0dsb2JhbE9iamVjdDo6Z2xvYmFsVGhpcygpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5Miw4
ICs2OTIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY01ha2VUCiAKIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jUHJvdG9HZXR0ZXIsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7Ci0gICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlOjpzdHJpY3QoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFs
dWUuZ2V0UHJvdG90eXBlKGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY2FsbEZyYW1lLT50aGlzVmFsdWUoKS5nZXRQcm90b3R5cGUoZ2xvYmFsT2JqZWN0KSk7CiB9
CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9iYWxGdW5jUHJvdG9TZXR0ZXIsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC03MDEs
NyArNzAwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNQcm90bwogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNW
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCBPYmplY3RQcm90b0NhbGxlZE9uTnVsbE9yVW5kZWZpbmVk
RXJyb3IpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MDMsNyArMTgwMyw3IEBAIGJvb2wgSlNP
YmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWMKICAgICAgICAgcmV0dXJuIHR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCBzaG91bGRUaHJvd0lmQ2FudFNldCwgIkNhbm5vdCBzZXQg
cHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0Il9zKTsKICAgICB9CiAKLSAg
ICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT50b1RoaXModGhpcywgZ2xvYmFsT2JqZWN0LCBFQ01B
TW9kZTo6c2xvcHB5KCkpID09IHRoaXMpOworICAgIEFTU0VSVCghaW5oZXJpdHM8SlNTY29wZT4o
dm0pKTsKIAogICAgIGlmICh0aGlzLT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pID09IHByb3RvdHlw
ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yNDYyLDExICsyNDYyLDYgQEAgSlNTdHJpbmcq
IEpTT2JqZWN0Ojp0b1N0cmluZyhKU0dsb2JhbE9iagogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgcHJpbWl0aXZlLnRvU3RyaW5nKGdsb2JhbE9iamVjdCkpOwogfQogCi1KU1ZhbHVlIEpT
T2JqZWN0Ojp0b1RoaXMoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKQot
ewotICAgIHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKLX0KLQogdm9pZCBKU09iamVj
dDo6c2VhbChWTSYgdm0pCiB7CiAgICAgaWYgKGlzU2VhbGVkKHZtKSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMjc4MTU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
Njg5LDggKzY4OSw2IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBkb3VibGUgdG9O
dW1iZXIoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1N0
cmluZyogdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0NlbGwqLCBKU0dsb2JhbE9iamVjdCosIEVD
TUFNb2RlKTsKLQogICAgIC8vIFRoaXMgZ2V0IGZ1bmN0aW9uIG9ubHkgbG9va3MgYXQgdGhlIHBy
b3BlcnR5IG1hcC4KICAgICBKU1ZhbHVlIGdldERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgewpAQCAtNzk5LDExICs3OTcsOSBAQCBwdWJsaWM6CiAK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KTsKIAotICAgIGJvb2wgaXNFbnZpcm9ubWVudCgpIGNv
bnN0OwogICAgIGJvb2wgaXNHbG9iYWxPYmplY3QoKSBjb25zdDsKICAgICBib29sIGlzSlNMZXhp
Y2FsRW52aXJvbm1lbnQoKSBjb25zdDsKICAgICBib29sIGlzR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50KCkgY29uc3Q7Ci0gICAgYm9vbCBpc1N0cmljdEV2YWxBY3RpdmF0aW9uKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc1dpdGhTY29wZSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc0Vycm9ySW5zdGFuY2Uo
KSBjb25zdDsKQEAgLTEyNzIsMTggKzEyNjgsNiBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNH
bG9iYWxMZXhpY2FsRW52CiAgICAgcmV0dXJuIHR5cGUoKSA9PSBHbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnRUeXBlOwogfQogCi1pbmxpbmUgYm9vbCBKU09iamVjdDo6aXNTdHJpY3RFdmFsQWN0aXZh
dGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHR5cGUoKSA9PSBTdHJpY3RFdmFsQWN0aXZhdGlv
blR5cGU7Ci19Ci0KLWlubGluZSBib29sIEpTT2JqZWN0Ojppc0Vudmlyb25tZW50KCkgY29uc3QK
LXsKLSAgICBib29sIHJlc3VsdCA9IEdsb2JhbE9iamVjdFR5cGUgPD0gdHlwZSgpICYmIHR5cGUo
KSA8PSBTdHJpY3RFdmFsQWN0aXZhdGlvblR5cGU7Ci0gICAgQVNTRVJUKChpc0dsb2JhbE9iamVj
dCgpIHx8IGlzSlNMZXhpY2FsRW52aXJvbm1lbnQoKSB8fCBpc0dsb2JhbExleGljYWxFbnZpcm9u
bWVudCgpIHx8IGlzU3RyaWN0RXZhbEFjdGl2YXRpb24oKSkgPT0gcmVzdWx0KTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNFcnJvckluc3RhbmNlKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gdHlwZSgpID09IEVycm9ySW5zdGFuY2VUeXBlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJKHJldmlzaW9uIDI3ODE1
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MTcsMTEgKzQxNyw0IEBAIFN5bWJvbFRhYmxlKiBKU1Njb3BlOjpzeW1ib2xU
YWJsZShWTSYgdm0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotSlNWYWx1ZSBKU1Njb3BlOjp0
b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNt
YU1vZGUpCi17Ci0gICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCi0gICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwotICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTY29wZS5oCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Njb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgdXNpbmcgVERa
RW52aXJvbm1lbnQgPSBIYXNoU2V0PFJlZlB0cjxVbgogY2xhc3MgSlNTY29wZSA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9i
amVjdDsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNUb1RoaXM7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyB2b2lkIHN1YnNw
YWNlRm9yKFZNJikKQEAgLTc4LDEyICs3OCw4IEBAIHB1YmxpYzoKICAgICBTY29wZUNoYWluSXRl
cmF0b3IgZW5kKCk7CiAgICAgSlNTY29wZSogbmV4dCgpOwogCi0gICAgSlNPYmplY3QqIGdsb2Jh
bFRoaXMoKTsKLQogICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZShWTSYpOwogCi0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEpTR2xvYmFsT2Jq
ZWN0KiwgRUNNQU1vZGUpOwotCiBwcm90ZWN0ZWQ6CiAgICAgSlNTY29wZShWTSYsIFN0cnVjdHVy
ZSosIEpTU2NvcGUqIG5leHQpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMCwxMyArNDEwLDYg
QEAgSlNPYmplY3QqIEpTU3RyaW5nOjp0b09iamVjdChKU0dsb2JhbE9iagogICAgIHJldHVybiBT
dHJpbmdPYmplY3Q6OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCwgY29u
c3RfY2FzdDxKU1N0cmluZyo+KHRoaXMpKTsKIH0KIAotSlNWYWx1ZSBKU1N0cmluZzo6dG9UaGlz
KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRUNNQU1vZGUgZWNt
YU1vZGUpCi17Ci0gICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCi0gICAgICAgIHJldHVybiBj
ZWxsOwotICAgIHJldHVybiBTdHJpbmdPYmplY3Q6OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCks
IGdsb2JhbE9iamVjdCwgYXNTdHJpbmcoY2VsbCkpOwotfQotCiBib29sIEpTU3RyaW5nOjpnZXRT
dHJpbmdQcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNyAr
OTMsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTI5NTYKICAgICAvLyBEbyB3ZSByZWFsbHkgbmVlZCBJbnRlcmNlcHRz
R2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvPwogICAgIC8v
IEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyOTU4Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IFN0cnVjdHVyZUlz
SW1tb3J0YWwgfCBPdmVycmlkZXNUb1RoaXM7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hl
bkxlbmd0aElzTm90WmVybyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKICAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAgICAgc3RhdGljIEFMV0FZU19J
TkxJTkUgdm9pZCBkZXN0cm95KEpTQ2VsbCogY2VsbCkKQEAgLTIzNyw4ICsyMzcsNiBAQCBwcm90
ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAKLSAgICBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBF
Q01BTW9kZSk7Ci0KICAgICBTdHJpbmdWaWV3IHVuc2FmZVZpZXcoSlNHbG9iYWxPYmplY3QqKSBj
b25zdDsKIAogICAgIGZyaWVuZCBKU1N0cmluZyoganNTdHJpbmcoVk0mLCBjb25zdCBTdHJpbmcm
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCShyZXZpc2lvbiAy
NzgxNTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw4IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAg
Ly8gRW5kIGVudmlyb25tZW50IHJlY29yZCB0eXBlcy4KICAgICBXaXRoU2NvcGVUeXBlLAogICAg
IC8vIEVuZCBKU1Njb3BlIHR5cGVzLgorICAgIEZpcnN0SlNTY29wZVR5cGUgPSBHbG9iYWxPYmpl
Y3RUeXBlLAorICAgIExhc3RKU1Njb3BlVHlwZSA9IFdpdGhTY29wZVR5cGUsCiAKICAgICBNb2R1
bGVOYW1lc3BhY2VPYmplY3RUeXBlLAogICAgIFJlZ0V4cE9iamVjdFR5cGUsCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAyNzgxNTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDcgKzQxLDYgQEAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBNYXNxdWVy
YWRlc0FzVQogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBJbXBsZW1lbnRzRGVmYXVsdEhhc0lu
c3RhbmNlID0gMSA8PCAxOwogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBPdmVycmlkZXNHZXRD
YWxsRGF0YSA9IDEgPDwgMjsgLy8gTmVlZCB0aGlzIGZsYWcgaWYgeW91IGltcGxlbWVudCBbW0Nh
bGxhYmxlXV0gaW50ZXJmYWNlLCB3aGljaCBtZWFucyBvdmVycmlkaW5nIGdldENhbGxEYXRhLiBU
aGUgb2JqZWN0IG1heSBub3QgYmUgY2FsbGFibGUgc2luY2UgZ2V0Q2FsbERhdGEgY2FuIHNheSBp
dCBpcyBub3QgY2FsbGFibGUuCiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCA9IDEgPDwgMzsKLXN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgT3Zl
cnJpZGVzVG9UaGlzID0gMSA8PCA0OyAvLyBJZiB0aGlzIGlzIGZhbHNlIHRoZW4gdGhpcyByZXR1
cm5zIHNvbWV0aGluZyBvdGhlciB0aGFuICd0aGlzJy4gTm9uLW9iamVjdCBjZWxscyB0aGF0IGFy
ZSB2aXNpYmxlIHRvIEpTIGhhdmUgdGhpcyBzZXQgYXMgZG8gc29tZSBleG90aWMgb2JqZWN0cy4K
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgSGFzU3RhdGljUHJvcGVydHlUYWJsZSA9IDEgPDwg
NTsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgVHlwZUluZm9QZXJDZWxsQml0ID0gMSA8PCA3
OyAvLyBVbmxpa2Ugb3RoZXIgaW5saW5lIGZsYWdzLCB0aGlzIHdpbGwgb25seSBiZSBzZXQgb24g
dGhlIGNlbGwgaXRzZWxmIGFuZCB3aWxsIG5vdCBiZSBzZXQgb24gdGhlIFN0cnVjdHVyZS4KIApA
QCAtOTcsNyArOTYsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgb3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90KElubGluZVR5cGVGbGFncyBmbGFncykgeyByZXR1cm4gZmxhZ3MgJiBPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Q7IH0KICAgICBzdGF0aWMgYm9vbCBoYXNTdGF0aWNQcm9w
ZXJ0eVRhYmxlKElubGluZVR5cGVGbGFncyBmbGFncykgeyByZXR1cm4gZmxhZ3MgJiBIYXNTdGF0
aWNQcm9wZXJ0eVRhYmxlOyB9CiAgICAgc3RhdGljIGJvb2wgcGVyQ2VsbEJpdChJbmxpbmVUeXBl
RmxhZ3MgZmxhZ3MpIHsgcmV0dXJuIGZsYWdzICYgVHlwZUluZm9QZXJDZWxsQml0OyB9Ci0gICAg
Ym9vbCBvdmVycmlkZXNUb1RoaXMoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MxPE92ZXJy
aWRlc1RvVGhpcz4oKTsgfQogICAgIGJvb2wgc3RydWN0dXJlSXNJbW1vcnRhbCgpIGNvbnN0IHsg
cmV0dXJuIGlzU2V0T25GbGFnczI8U3RydWN0dXJlSXNJbW1vcnRhbD4oKTsgfQogICAgIGJvb2wg
b3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcygpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFn
czI8T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlOYW1lcz4oKTsgfQogICAgIGJvb2wgb3ZlcnJpZGVz
R2V0T3duU3BlY2lhbFByb3BlcnR5TmFtZXMoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3My
PE92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzPigpOyB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHJldmlz
aW9uIDI3ODE1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgT2JqZWN0UHJvdG90eXBl
KiBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2Jq
ZWN0UHJvdG9GdW5jVmFsdWVPZiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKIHsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgSlNPYmpl
Y3QqIHZhbHVlT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgaWYg
KFVOTElLRUxZKCF2YWx1ZU9iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpA
QCAtOTMsOCArOTMsNyBAQCBib29sIG9iamVjdFByb3RvdHlwZUhhc093blByb3BlcnR5KEpTR2xv
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGJhc2UudG9U
aGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKLSAgICBKU09iamVjdCogdGhp
c09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0
KiB0aGlzT2JqZWN0ID0gYmFzZS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElP
Tl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVO
TElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM1LDggKzEz
NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmMKICAgICBpZiAo
IWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3Ry
aWN0KCkpOwotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4
Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQogICAg
ICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTE1OSw3ICsxNTcsNyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jCiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMo
Z2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIGdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7
CkBAIC0xODYsNyArMTg0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3Rv
RnVuYwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmlj
dCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBz
ZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwpAQCAtMjEzLDcgKzIxMSw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhn
bG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
KyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CkBAIC0yNDMsNyArMjQxLDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuYwogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmpl
Y3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKQEAgLTI3Niw3ICsyNzQsNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jCiAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2Jq
ZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7CkBAIC0yOTcsNyArMjk1LDcg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuYwogICAgIC8vIDIuIElu
dm9rZShWLCAidG9TdHJpbmciKQogCiAgICAgLy8gTGV0IE8gYmUgdGhlIHJlc3VsdCBvZiBjYWxs
aW5nIFRvT2JqZWN0IHBhc3NpbmcgdGhlIHRoaXMgdmFsdWUgYXMgdGhlIGFyZ3VtZW50LgotICAg
IEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzVmFsdWUudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1v
ZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIExldCB0b1N0cmluZyBi
ZSB0aGUgTy5bW0dldF1dKCJ0b1N0cmluZyIsIFYpCkBAIC0zOTYsOCArMzk0LDcgQEAgSlNTdHJp
bmcqIG9iamVjdFByb3RvdHlwZVRvU3RyaW5nKEpTR2xvYgogCiBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04ob2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJp
Y3QoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3RQcm90b3R5cGVUb1N0cmlu
ZyhnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
b2JqZWN0UHJvdG90eXBlVG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NzYsNiArNDc2LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwg
SlNHbAogYm9vbCBQcm94eU9iamVjdDo6cHV0QnlJbmRleENvbW1vbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHB1dFZhbHVlLCBib29sIHNob3VsZFRocm93KQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIXRoaXNWYWx1
ZS5pbmhlcml0czxKU1Njb3BlPih2bSksICJ0aGlzVmFsdWUgc2hvdWxkbid0IGJlIEpTU2NvcGUi
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSWRlbnRp
ZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb20odm0sIHByb3BlcnR5TmFtZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwpAQCAtNTI0LDcgKzUyNSw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihwZXJmb3JtUHJveHlDYWwKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmd1bWVudHM7CiAgICAgYXJndW1lbnRzLmFwcGVuZCh0YXJnZXQpOwotICAgIGFyZ3VtZW50cy5h
cHBlbmQoY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9k
ZTo6c3RyaWN0KCkpKTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJnQXJyYXkpOwogICAgIEFTU0VSVCghYXJndW1l
bnRzLmhhc092ZXJmbG93ZWQoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoY2FsbChnbG9iYWxPYmplY3QsIGFwcGx5TWV0aG9kLCBjYWxsRGF0YSwgaGFu
ZGxlciwgYXJndW1lbnRzKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTIsNyArMjEyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3Rv
RnVuYwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgp
KTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
aWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCShyZXZpc2lvbiAyNzgx
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDcgKzIwMSw3IEBAIGJvb2wgU3BhcnNlQXJyYXlF
bnRyeTo6cHV0KEpTR2xvYmFsT2JqZWMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc0Nhc3Q8R2V0dGVyU2V0dGVyKj4oQmFzZTo6
Z2V0KCkpLT5jYWxsU2V0dGVyKGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCB2YWx1ZSwgc2hvdWxk
VGhyb3cpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGpzQ2FzdDxHZXR0ZXJTZXR0
ZXIqPihCYXNlOjpnZXQoKSktPmNhbGxTZXR0ZXIoZ2xvYmFsT2JqZWN0LCBhc1B1YmxpY1RoaXNW
YWx1ZSh0aGlzVmFsdWUpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpKTsKIH0KIAogSlNWYWx1ZSBTcGFy
c2VBcnJheUVudHJ5OjpnZXROb25TcGFyc2VNb2RlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkocmV2aXNpb24g
Mjc4MTU5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQxLDkgKzg0MSw2IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBjaGVja09iamVjdENvZXJjaWJsZSgKICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICh0aGlzVmFsdWUuaXNPYmpl
Y3QoKSAmJiBhc09iamVjdCh0aGlzVmFsdWUpLT5pc0Vudmlyb25tZW50KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2wuaAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBTeW1ib2wgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsK
IHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVy
ZUlzSW1tb3J0YWwgfCBPdmVycmlkZXNUb1RoaXM7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJ
bW1vcnRhbDsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA1LTI3ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2Fs
ZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBBYm9saXNoIHVzaW5nIHJlc29sdmVkIHNj
b3BlIGFzIHx0aGlzfCB2YWx1ZSB3aGVuIGNhbGxpbmcgZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklETE9wZXJhdGlvbjxKU0RPTVdpbmRv
dz46OmNhc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uaDoK
KyAgICAgICAgKFdlYkNvcmU6OklETE9wZXJhdGlvbjxKU0V2ZW50VGFyZ2V0Pjo6Y2FsbCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKwogMjAyMS0wNS0yNyAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBIMjY0IHByb2ZpbGVzIGluIE1lZGlh
UmVjb3JkZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0JKHJldmlzaW9uIDI3ODE1OSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk5LDcgKzE5OSw3IEBAIGF1dG8gUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQ6Omluc3RhbGwKICAgICBhcmdMaXN0LmFwcGVuZCh0b0pTPElETFNl
cXVlbmNlPElETE51bGxhYmxlPElETERPTVN0cmluZz4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
Kmdsb2JhbE9iamVjdCwgbV9uYW1lcykpOwogICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlM8SURMU2Vx
dWVuY2U8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
Z2xvYmFsT2JqZWN0LCBtX3ZhbHVlcykpOwogICAgIEFTU0VSVCghYXJnTGlzdC5oYXNPdmVyZmxv
d2VkKCkpOwotICAgIEpTQzo6SlNWYWx1ZSByZXBsYWNlbWVudCA9IGNhbGwobGV4aWNhbEdsb2Jh
bE9iamVjdCwgcmVwbGFjZW1lbnRPYmplY3QsIGNhbGxEYXRhLCBnbG9iYWxPYmplY3QsIGFyZ0xp
c3QpOworICAgIEpTQzo6SlNWYWx1ZSByZXBsYWNlbWVudCA9IGNhbGwobGV4aWNhbEdsb2JhbE9i
amVjdCwgcmVwbGFjZW1lbnRPYmplY3QsIGNhbGxEYXRhLCAmZ2xvYmFsT2JqZWN0LT5wcm94eSgp
LCBhcmdMaXN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBjbGVhckV4Y2VwdGlv
bkFuZFJldHVybkZhbHNlKCkpOwogCiAgICAgLy8gR2V0IHRoZSA8dmlkZW8+IGNyZWF0ZWQgdG8g
cmVwbGFjZSB0aGUgcGx1Zy1pbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NT3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01PcGVyYXRpb24uaAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01PcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMjIgKzM1LDEy
IEBAIHB1YmxpYzoKICAgICB1c2luZyBPcGVyYXRpb24gPSBKU0M6OkVuY29kZWRKU1ZhbHVlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSosIENsYXNzUGFyYW1ldGVyKTsKICAg
ICB1c2luZyBTdGF0aWNPcGVyYXRpb24gPSBKU0M6OkVuY29kZWRKU1ZhbHVlKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlz
IGFmdGVyIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlIGlzIGZpeGVkIG5vdCB0byBwYXNzIHJlc29s
dmVkIHNjb3BlIGFzIHx0aGlzfCB2YWx1ZS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI1Mzk3Ci0gICAgc3RhdGljIEpTQ2xhc3MqIGNhc3QoSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUmIGNhbGxG
cmFtZSkKLSAgICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNE
T01HbG9iYWxPYmplY3QsIEpTQ2xhc3M+KQotICAgICAgICAgICAgcmV0dXJuIGNhc3RUaGlzVmFs
dWU8SlNDbGFzcz4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpLnRv
VGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpFQ01BTW9kZTo6c3RyaWN0KCkpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIGNhc3RUaGlzVmFsdWU8SlNDbGFzcz4obGV4
aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLSAgICB9Ci0KICAgICB0
ZW1wbGF0ZTxPcGVyYXRpb24gb3BlcmF0aW9uLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91
bGRUaHJvdyA9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdz4KICAgICBzdGF0aWMgSlND
OjpFbmNvZGVkSlNWYWx1ZSBjYWxsKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6Q2FsbEZyYW1lJiBjYWxsRnJhbWUsIGNvbnN0IGNoYXIqIG9wZXJhdGlvbk5h
bWUpCiAgICAgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgCi0gICAgICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBjYXN0KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSk7Cisg
ICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0VGhpc1ZhbHVlPEpTQ2xhc3M+KGxleGljYWxH
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7CiAgICAgICAgIGlmIGNvbnN0ZXhw
ciAoc2hvdWxkVGhyb3cgIT0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydCkgewogICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIEpT
Q2xhc3M6OmluZm8oKS0+Y2xhc3NOYW1lLCBvcGVyYXRpb25OYW1lKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uUmV0dXJu
aW5nUHJvbWlzZS5oCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgY2Fs
bChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFt
ZSYgY2FsbEZyYW1lLCBjb25zdCBjaGFyKiBvcGVyYXRpb25OYW1lKQogICAgIHsKICAgICAgICAg
cmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGNhbGxQcm9taXNlRnVuY3Rpb24obGV4aWNhbEds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLCBbJm9wZXJhdGlvbk5hbWVdIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSYgY2FsbEZyYW1lLCBSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpIHsKLSAgICAgICAgICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBJRExPcGVyYXRpb248SlNDbGFzcz46OmNhc3QobGV4aWNhbEdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lKTsKKyAgICAgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0VGhpc1ZhbHVlPEpT
Q2xhc3M+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7CiAgICAg
ICAgICAgICBpZiBjb25zdGV4cHIgKHNob3VsZFRocm93ICE9IENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQpIHsKICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3Qp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0UHJvbWlzZVdpdGhUaGlzVHlwZUVy
cm9yKHByb21pc2UuZ2V0KCksIEpTQ2xhc3M6OmluZm8oKS0+Y2xhc3NOYW1lLCBvcGVyYXRpb25O
YW1lKTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU0NsYXNzPjo6T3BlcmF0aW9uIG9wZXJhdGlvbiwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3Igc2hvdWxkVGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6UmVqZWN0UHJv
bWlzZT4KICAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBjYWxsUmV0dXJuaW5nT3duUHJv
bWlzZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxG
cmFtZSYgY2FsbEZyYW1lLCBjb25zdCBjaGFyKiBvcGVyYXRpb25OYW1lKQogICAgIHsKLSAgICAg
ICAgYXV0byogdGhpc09iamVjdCA9IElETE9wZXJhdGlvbjxKU0NsYXNzPjo6Y2FzdChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOworICAgICAgICBhdXRvKiB0aGlzT2JqZWN0ID0gY2Fz
dFRoaXNWYWx1ZTxKU0NsYXNzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUudGhpc1Zh
bHVlKCkpOwogICAgICAgICBpZiBjb25zdGV4cHIgKHNob3VsZFRocm93ICE9IENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQpIHsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghdGhpc09i
amVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdFByb21pc2VXaXRoVGhpc1R5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NsYXNzOjppbmZvKCktPmNsYXNzTmFtZSwgb3Bl
cmF0aW9uTmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFu
ZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJv
ckhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0Vycm9ySGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBA
QCB2b2lkIEpTRXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVudChTY3JpcHRFCiAgICAgICAgIEpTRXhl
Y1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb24oJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNhbGxE
YXRhKTsKIAogICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAg
ICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbChnbG9i
YWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwganNGdW5jdGlvbiwgY2FsbERh
dGEsIGdsb2JhbE9iamVjdCwgYXJncywgZXhjZXB0aW9uKTsKKyAgICAgICAgSlNWYWx1ZSByZXR1
cm5WYWx1ZSA9IEpTRXhlY1N0YXRlOjpwcm9maWxlZENhbGwoZ2xvYmFsT2JqZWN0LCBKU0M6OlBy
b2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGpzRnVuY3Rpb24sIGNhbGxEYXRhLCAmZ2xvYmFsT2JqZWN0
LT5wcm94eSgpLCBhcmdzLCBleGNlcHRpb24pOwogCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20u
aAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dFRhcmdldEN1c3RvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoK
ICAgICAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
ICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAg
ICAgYXV0byB0aGlzVmFsdWUgPSBjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9UaGlzKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OkVDTUFNb2RlOjpzdHJpY3QoKSk7CisgICAgICAgIGF1dG8gdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLnRoaXNWYWx1ZSgpOwogICAgICAgICBhdXRvIHRoaXNPYmplY3Qg
PSBqc0V2ZW50VGFyZ2V0Q2FzdCh2bSwgdGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkgPyBK
U0M6OkpTVmFsdWUoJmxleGljYWxHbG9iYWxPYmplY3QpIDogdGhpc1ZhbHVlKTsKICAgICAgICAg
aWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIkV2ZW50VGFyZ2V0Iiwg
b3BlcmF0aW9uTmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVs
ZWRBY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
aGVkdWxlZEFjdGlvbi5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3ICsx
NTIsNyBAQCB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShXb3JrZXJHbG9iCiAKICAgICBp
ZiAobV9mdW5jdGlvbikgewogICAgICAgICBhdXRvKiBjb250ZXh0V3JhcHBlciA9IHNjcmlwdENv
bnRyb2xsZXItPmdsb2JhbFNjb3BlV3JhcHBlcigpOwotICAgICAgICBleGVjdXRlRnVuY3Rpb25J
bkNvbnRleHQoY29udGV4dFdyYXBwZXIsIGNvbnRleHRXcmFwcGVyLCB3b3JrZXJHbG9iYWxTY29w
ZSk7CisgICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dChjb250ZXh0V3JhcHBlciwgJmNv
bnRleHRXcmFwcGVyLT5wcm94eSgpLCB3b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgU2NyaXB0U291cmNlQ29kZSBjb2RlKG1fY29kZSwgVVJMKHdvcmtlckdsb2JhbFNj
b3BlLnVybCgpKSk7CiAgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmV2YWx1YXRlKGNvZGUpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0JKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC01NDE1LDcgKzU0MTUs
OSBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvCiAgICAgICAgICMg
My41LjkuMS4gTGV0IFEgYmUgPyBHZXQoTywgaWQpLgogICAgICAgICBteSAkaWQgPSAkYXR0cmli
dXRlLT5uYW1lOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byBpZCA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihc
IiR7aWR9XCIpLCBzdHJsZW4oXCIke2lkfVwiKSk7XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIGF1dG8gdmFsdWVUb0ZvcndhcmRUbyA9IHRoaXNPYmplY3QuZ2V0KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBpZCk7XG4iKTsKKworICAgICAgICBteSAkZ2V0UmVjZWl2ZXIgPSBJ
c0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKSA/ICJ0aGlzT2JqZWN0LnByb3h5KCkiIDogInRo
aXNPYmplY3QiOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byB2YWx1ZVRv
Rm9yd2FyZFRvID0gJHtnZXRSZWNlaXZlcn0uZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZCk7
XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZmFsc2UpO1xuIik7CiAgICAgICAgIAogICAgICAgICAjIDMuNS45LjIu
IElmIFR5cGUoUSkgaXMgbm90IE9iamVjdCwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0R2xvYmFsT2JqZWN0Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dEdsb2JhbE9iamVjdC5pZGwJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0R2xvYmFsT2JqZWN0LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNiArNDUsOCBAQAogICAgIFtQcml2YXRlSWRlbnRpZmllciwgQ29uZGl0aW9uYWw9VEVT
VF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJlXSB1bmRlZmluZWQgdGVzdFBy
aXZhdGVGdW5jdGlvbigpOwogICAgIFtKU0J1aWx0aW4sIENvbmRpdGlvbmFsPVRFU1RfRkVBVFVS
RSwgRW5hYmxlZEF0UnVudGltZT1UZXN0RmVhdHVyZV0gdW5kZWZpbmVkIHRlc3RKU0J1aWx0aW5G
dW5jdGlvbigpOwogCisgICAgW1B1dEZvcndhcmRzPW5hbWVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBU
ZXN0Tm9kZSBwdXRGb3J3YXJkc0F0dHJpYnV0ZTsKKwogICAgIC8vIFtTZWN1cmVDb250ZXh0XSBh
dHRyaWJ1dGVzIGFuZCBvcGVyYXRpb25zOyB3aWxsIG5vdCBiZSBleHBvc2VkIHRvIGEgbm9uLXNl
Y3VyZSBjb250ZXh0LgogICAgIC8vIEZyb20gPGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhcHBz
ZWMtc2VjdXJlLWNvbnRleHRzLyNpbnRlZ3JhdGlvbi1pZGw+IChFZGl0b3IncyBEcmFmdCwgMTcg
Tm92ZW1iZXIgMjAxNikKICAgICBbU2VjdXJlQ29udGV4dF0gUHJvbWlzZTxkb3VibGU+IGNhbGN1
bGF0ZVNlY3JldFJlc3VsdCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHJl
dmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnZlcnRCYXNlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Qm9vbGVhbi5oIgor
I2luY2x1ZGUgIkpTRE9NQ29udmVydEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVy
dE51bWJlcnMuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRQcm9taXNlLmgiCiAjaW5jbHVkZSAi
SlNET01Db252ZXJ0U3RyaW5ncy5oIgpAQCAtODIsNiArODMsNyBAQAogI2luY2x1ZGUgIkpTVGVz
dE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUg
IkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2Fj
eU92ZXJyaWRlQnVpbHRJbnMuaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lc3BhY2VPYmplY3QuaCIK
KyNpbmNsdWRlICJKU1Rlc3ROb2RlLmgiCiAjaW5jbHVkZSAiSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1dpdGhTZXF1ZW5jZS5oIgogI2luY2x1ZGUgIkpTVGVzdFBsdWdpbkludGVyZmFjZS5o
IgogI2luY2x1ZGUgIkpTVGVzdFJlYWRPbmx5TWFwTGlrZS5oIgpAQCAtMTY2LDYgKzE2OCw4IEBA
IHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGUKIHN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9lbmFibGVkQXRSdW50aW1lQXR0
cmlidXRlKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEdsb2Jh
bE9iamVjdF9lbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKTsKICNlbmRpZgorc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X3B1dEZvcndhcmRzQXR0cmli
dXRlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEdsb2JhbE9i
amVjdF9wdXRGb3J3YXJkc0F0dHJpYnV0ZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3IpOwpA
QCAtMjQyLDExICsyNDYsMTEgQEAgdXNpbmcgSlNUZXN0R2xvYmFsT2JqZWN0RE9NQ29uc3RydWN0
b3IgPQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2xvYmFs
T2JqZWN0VGFibGVJbmRleFsyNjddID0gewogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0MCwgLTEg
fSwKKyAgICB7IDQxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAwLCAtMSB9LAotICAg
IHsgNCwgLTEgfSwKLSAgICB7IDQ0LCAtMSB9LAorICAgIHsgNSwgLTEgfSwKKyAgICB7IDQ1LCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApA
QCAtMjU0LDE1ICsyNTgsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4
IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgNTQsIC0xIH0sCisgICAgeyA1NSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCi0gICAgeyA0OCwgLTEgfSwKKyAgICB7IDQ5LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0g
ICAgeyA2MywgLTEgfSwKKyAgICB7IDY0LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMjc2LDE0ICsyODAsMTQgQEAgc3RhdGljIGNv
bnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzQsIC0xIH0sCisgICAgeyAzNSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA2NiwgLTEgfSwKLSAgICB7IDEz
LCAyNjAgfSwKKyAgICB7IDY3LCAtMSB9LAorICAgIHsgMTQsIDI2MCB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMjkxLDExICsyOTUsMTEg
QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzgsIC0xIH0sCi0g
ICAgeyAxOSwgMjU3IH0sCi0gICAgeyA2LCAtMSB9LAorICAgIHsgMzksIC0xIH0sCisgICAgeyAy
MCwgMjU3IH0sCisgICAgeyA3LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0NSwgLTEg
fSwKKyAgICB7IDQ2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LApAQCAtMzA0LDIwICszMDgsMjAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBD
b21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAotICAgIHsgMzYsIC0xIH0sCisgICAgeyAzNywgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDIxLCAyNjUgfSwKKyAg
ICB7IDIyLCAyNjUgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1LCAtMSB9
LAorICAgIHsgNiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKQEAgLTMyNSwyNyArMzI5LDI3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29t
cGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKLSAgICB7IDI5LCAtMSB9LAotICAgIHsgNTYsIC0xIH0sCisgICAgeyAzMCwg
LTEgfSwKKyAgICB7IDU3LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAotICAgIHsgOSwgMjU2IH0sCisgICAgeyAxMCwgMjU2IH0sCiAgICAgeyAtMSwg
LTEgfSwKLSAgICB7IDU4LCAtMSB9LAotICAgIHsgMTgsIC0xIH0sCisgICAgeyA1OSwgLTEgfSwK
KyAgICB7IDE5LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAotICAgIHsgMTcsIC0xIH0sCisgICAgeyAxOCwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgMzUsIC0xIH0sCisgICAgeyAzNiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTM1MywxNSArMzU3LDE0IEBAIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDIzLCAtMSB9LAorICAgIHsgMjQsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDIsIC0xIH0sCi0gICAgeyAzNywgLTEgfSwKLSAg
ICB7IC0xLCAtMSB9LAorICAgIHsgMzgsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAotICAgIHsgMjAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7IDIxLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAt
MzczLDE1ICszNzYsMTYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpT
VAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAg
IHsgMjcsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQyLCAtMSB9LAorICAgIHsgMjgs
IC0xIH0sCisgICAgeyAzLCAtMSB9LAorICAgIHsgNDMsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAotICAgIHsgNTMsIC0xIH0sCisgICAgeyA1NCwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTM4OSwyMiArMzkzLDIy
IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ3LCAtMSB9LAor
ICAgIHsgNDgsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsg
MTAsIC0xIH0sCisgICAgeyAxMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKLSAgICB7IDY0LCAtMSB9LAorICAgIHsgNjUsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyNiwgLTEg
fSwKLSAgICB7IDMxLCAtMSB9LAorICAgIHsgMjcsIC0xIH0sCisgICAgeyAzMiwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQxNCw5
ICs0MTgsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxNSwg
MjU5IH0sCisgICAgeyAxNiwgMjU5IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDU5LCAtMSB9
LAorICAgIHsgNjAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCkBAIC00MjUsMTEgKzQyOSwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENv
bXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCi0gICAgeyAzMywgMjY2IH0sCisgICAgeyAzNCwgMjY2IH0sCiAgICAgeyAt
MSwgLTEgfSwKLSAgICB7IDE2LCAtMSB9LAorICAgIHsgMTcsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKLSAgICB7IDYyLCAtMSB9LAorICAgIHsgNjMsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00NDAsNyArNDQ0LDcgQEAgc3RhdGlj
IGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMTIsIC0xIH0sCisgICAgeyAxMywg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
QEAgLTQ0OCwxMSArNDUyLDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRl
eCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
LSAgICB7IDQ2LCAtMSB9LAorICAgIHsgNDcsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxMSwgLTEgfSwKKyAgICB7IDEyLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApA
QCAtNDYxLDUzICs0NjUsNTMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4
IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgNTcsIC0xIH0sCisgICAgeyA1OCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgOCwgLTEgfSwKKyAgICB7IDksIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKLSAgICB7IDQ5LCAyNjMgfSwKLSAgICB7IDcsIDI2MiB9LAorICAgIHsgNTAs
IDI2MyB9LAorICAgIHsgOCwgMjYyIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDYwLCAtMSB9
LAorICAgIHsgNjEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCi0gICAgeyAxNCwgLTEgfSwKKyAgICB7IDE1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
Ci0gICAgeyAyNCwgLTEgfSwKKyAgICB7IDI1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKLSAgICB7IDMwLCAtMSB9LAorICAgIHsgMzEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzLCAtMSB9LAot
ICAgIHsgNTEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKKyAgICB7IDQsIC0xIH0sCiAgICAgeyA1
MiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAorICAgIHsgNTMsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyMiwgMjU4IH0sCi0g
ICAgeyAyNSwgMjY0IH0sCi0gICAgeyAyOCwgMjYxIH0sCi0gICAgeyAzMiwgLTEgfSwKLSAgICB7
IDM5LCAtMSB9LAotICAgIHsgNDEsIC0xIH0sCi0gICAgeyA0MywgLTEgfSwKLSAgICB7IDUwLCAt
MSB9LAotICAgIHsgNTUsIC0xIH0sCi0gICAgeyA2MSwgLTEgfSwKLSAgICB7IDY1LCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAyMywgMjU4IH0sCisgICAgeyAyNiwgMjY0IH0sCisgICAg
eyAyOSwgMjYxIH0sCisgICAgeyAzMywgLTEgfSwKKyAgICB7IDQwLCAtMSB9LAorICAgIHsgNDIs
IC0xIH0sCisgICAgeyA0NCwgLTEgfSwKKyAgICB7IDUxLCAtMSB9LAorICAgIHsgNTYsIC0xIH0s
CisgICAgeyA2MiwgLTEgfSwKKyAgICB7IDY2LCAtMSB9LAogfTsKIAogCkBAIC01MjAsNiArNTI0
LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdsb2JhbAogI2Vsc2UKICAg
ICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCisgICAgeyAicHV0Rm9y
d2FyZHNBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9wdXRGb3J3
YXJkc0F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdF9wdXRGb3J3YXJkc0F0dHJpYnV0ZSkg
fSB9LAogICAgIHsgIlRlc3RDRVJlYWN0aW9ucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0
X1Rlc3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIlRlc3RDRVJlYWN0aW9u
c1N0cmluZ2lmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJUZXN0Q2FsbFRyYWNlciIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0s
CkBAIC01OTgsNyArNjAzLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEds
b2JhbAogICAgIHsgInJlZ3VsYXJPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNl
RnVuY3Rpb25fcmVndWxhck9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDEpIH0gfSwKIH07CiAKLXN0
YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGUgPSB7IDY3LCAyNTUs
IHRydWUsIEpTVGVzdEdsb2JhbE9iamVjdDo6aW5mbygpLCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJs
ZVZhbHVlcywgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleCB9Oworc3RhdGljIGNvbnN0IEhh
c2hUYWJsZSBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZSA9IHsgNjgsIDI1NSwgdHJ1ZSwgSlNUZXN0
R2xvYmFsT2JqZWN0OjppbmZvKCksIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlVmFsdWVzLCBKU1Rl
c3RHbG9iYWxPYmplY3RUYWJsZUluZGV4IH07CiAvKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1Y3Rv
ciAqLwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFsT2JqZWN0Q29u
c3RydWN0b3JUYWJsZVZhbHVlc1tdID0KQEAgLTg1OSw2ICs4NjQsNDIgQEAgSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTVGVzdEdsb2JhbAogCiAjZW5kaWYKIAorc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdF9wdXRGb3J3YXJkc0F0dHJpYnV0ZUdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlz
T2JqZWN0KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCAodG9KUzxJRExJbnRlcmZhY2U8VGVzdE5vZGU+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5wdXRG
b3J3YXJkc0F0dHJpYnV0ZSgpKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNU
ZXN0R2xvYmFsT2JqZWN0X3B1dEZvcndhcmRzQXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
IGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFs
T2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdF9wdXRGb3J3YXJkc0F0dHJpYnV0ZUdldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisK
K3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RfcHV0Rm9yd2FyZHNBdHRy
aWJ1dGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEds
b2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8gaWQgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInB1dEZvcndhcmRzQXR0
cmlidXRlIiksIHN0cmxlbigicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKSk7CisgICAgYXV0byB2YWx1
ZVRvRm9yd2FyZFRvID0gdGhpc09iamVjdC5wcm94eSgpLmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgaWQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOworICAg
IGlmIChVTkxJS0VMWSghdmFsdWVUb0ZvcndhcmRUby5pc09iamVjdCgpKSkgeworICAgICAgICB0
aHJvd1R5cGVFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgYXV0byBmb3J3YXJkSWQgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm5hbWUiKSwgc3Ry
bGVuKCJuYW1lIikpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHZhbHVlVG9Gb3J3YXJkVG8s
IGZhbHNlKTsKKyAgICBhc09iamVjdCh2YWx1ZVRvRm9yd2FyZFRvKS0+bWV0aG9kVGFibGUodm0p
LT5wdXQoYXNPYmplY3QodmFsdWVUb0ZvcndhcmRUbyksICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBm
b3J3YXJkSWQsIHZhbHVlLCBzbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGZhbHNlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdEdsb2JhbE9iamVjdF9wdXRGb3J3YXJkc0F0dHJpYnV0ZSwgKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQor
eworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpT
VGVzdEdsb2JhbE9iamVjdF9wdXRGb3J3YXJkc0F0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKK30KKwog
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q0VSZWFjdGlvbnND
b25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNU
ZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAkocmV2aXNpb24gMjc4MTU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzM2NCw3ICs3MzY0LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaAogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAKLSAgICAgICAgYXV0byBjb250cm9sbGVyVmFsdWUgPSBKU0M6OmNhbGwoJmxleGljYWxH
bG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgJmdsb2JhbE9iamVjdCwgYXJnTGlzdCk7
CisgICAgICAgIGF1dG8gY29udHJvbGxlclZhbHVlID0gSlNDOjpjYWxsKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsICZnbG9iYWxPYmplY3QucHJveHkoKSwgYXJnTGlz
dCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHJlcG9ydEV4Y2VwdGlvbkFu
ZFJldHVybkZhbHNlKCkpOwogCiAgICAgICAgIGF1dG8qIGNvbnRyb2xsZXJPYmplY3QgPSBKU0M6
OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU09iamVjdCo+KHZtLCBjb250cm9sbGVyVmFsdWUpOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBKU09iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTlBKU09iamVjdC5jcHAJKHJldmlzaW9uIDI3ODE1OSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDYsNyArMTA2LDcgQEAgYm9vbCBOUEpTT2JqZWN0OjpoYXNNZXRob2QoTlBJZGVudGlmaWVy
IAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9D
QVRDSF9TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gbV9qc09iamVjdC0+Z2V0KGxl
eGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBpZGVudGlmaWVyUmVwKSk7ICAgIAorICAgIEpTVmFsdWUgdmFsdWUgPSBhc1B1
YmxpY1RoaXNWYWx1ZShtX2pzT2JqZWN0LmdldCgpKS0+Z2V0KGxleGljYWxHbG9iYWxPYmplY3Qs
IGlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlm
aWVyUmVwKSk7ICAgIAogICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAKICAgICByZXR1cm4g
dmFsdWUuaXNDYWxsYWJsZSh2bSk7CkBAIC0xMjUsNyArMTI1LDcgQEAgYm9vbCBOUEpTT2JqZWN0
OjppbnZva2UoTlBJZGVudGlmaWVyIG1ldAogICAgIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKGxl
eGljYWxHbG9iYWxPYmplY3QpOwogCi0gICAgSlNWYWx1ZSBmdW5jdGlvbiA9IG1fanNPYmplY3Qt
PmdldChsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyRnJvbUlkZW50aWZpZXJSZXAobGV4
aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllclJlcCkpOworICAgIEpTVmFsdWUgZnVuY3Rpb24g
PSBhc1B1YmxpY1RoaXNWYWx1ZShtX2pzT2JqZWN0LmdldCgpKS0+Z2V0KGxleGljYWxHbG9iYWxP
YmplY3QsIGlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBp
ZGVudGlmaWVyUmVwKSk7CiAgICAgcmV0dXJuIGludm9rZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBm
dW5jdGlvbiwgYXJndW1lbnRzLCBhcmd1bWVudENvdW50LCByZXN1bHQpOwogfQogCkBAIC0xNzcs
OSArMTc3LDkgQEAgYm9vbCBOUEpTT2JqZWN0OjpnZXRQcm9wZXJ0eShOUElkZW50aWZpZQogCiAg
ICAgSlNWYWx1ZSBqc1Jlc3VsdDsKICAgICBpZiAoaWRlbnRpZmllclJlcC0+aXNTdHJpbmcoKSkK
LSAgICAgICAganNSZXN1bHQgPSBtX2pzT2JqZWN0LT5nZXQobGV4aWNhbEdsb2JhbE9iamVjdCwg
aWRlbnRpZmllckZyb21JZGVudGlmaWVyUmVwKGxleGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZp
ZXJSZXApKTsKKyAgICAgICAganNSZXN1bHQgPSBhc1B1YmxpY1RoaXNWYWx1ZShtX2pzT2JqZWN0
LmdldCgpKS0+Z2V0KGxleGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXJGcm9tSWRlbnRpZmll
clJlcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyUmVwKSk7CiAgICAgZWxzZQotICAg
ICAgICBqc1Jlc3VsdCA9IG1fanNPYmplY3QtPmdldChsZXhpY2FsR2xvYmFsT2JqZWN0LCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oaWRlbnRpZmllclJlcC0+bnVtYmVyKCkpKTsKKyAgICAgICAganNS
ZXN1bHQgPSBhc1B1YmxpY1RoaXNWYWx1ZShtX2pzT2JqZWN0LmdldCgpKS0+Z2V0KGxleGljYWxH
bG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVpbnQzMl90PihpZGVudGlmaWVyUmVwLT5udW1iZXIo
KSkpOwogICAgIAogICAgIG1fb2JqZWN0TWFwLT5jb252ZXJ0SlNWYWx1ZVRvTlBWYXJpYW50KGxl
eGljYWxHbG9iYWxPYmplY3QsIGpzUmVzdWx0LCAqcmVzdWx0KTsKICAgICBzY29wZS5jbGVhckV4
Y2VwdGlvbigpOwpAQCAtMjAwLDcgKzIwMCw3IEBAIGJvb2wgTlBKU09iamVjdDo6c2V0UHJvcGVy
dHkoTlBJZGVudGlmaWUKIAogICAgIEpTVmFsdWUganNWYWx1ZSA9IG1fb2JqZWN0TWFwLT5jb252
ZXJ0TlBWYXJpYW50VG9KU1ZhbHVlKG1fb2JqZWN0TWFwLT5nbG9iYWxPYmplY3QoKSwgKnZhbHVl
KTsKICAgICBpZiAoaWRlbnRpZmllclJlcC0+aXNTdHJpbmcoKSkgewotICAgICAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChtX2pzT2JqZWN0LmdldCgpKTsKKyAgICAgICAgUHV0UHJvcGVydHlTbG90
IHNsb3QoYXNQdWJsaWNUaGlzVmFsdWUobV9qc09iamVjdC5nZXQoKSkpOwogICAgICAgICBtX2pz
T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dChtX2pzT2JqZWN0LmdldCgpLCBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBpZGVudGlmaWVyRnJvbUlkZW50aWZpZXJSZXAobGV4aWNhbEdsb2JhbE9iamVj
dCwgaWRlbnRpZmllclJlcCksIGpzVmFsdWUsIHNsb3QpOwogICAgIH0gZWxzZQogICAgICAgICBt
X2pzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgobV9qc09iamVjdC5nZXQoKSwg
bGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllclJlcC0+bnVtYmVyKCksIGpzVmFsdWUsIGZh
bHNlKTsKQEAgLTMxMCw3ICszMTAsNyBAQCBib29sIE5QSlNPYmplY3Q6Omludm9rZShKU0dsb2Jh
bE9iamVjdCogCiAgICAgICAgIGFyZ3VtZW50TGlzdC5hcHBlbmQobV9vYmplY3RNYXAtPmNvbnZl
cnROUFZhcmlhbnRUb0pTVmFsdWUobGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnRzW2ldKSk7
CiAgICAgUkVMRUFTRV9BU1NFUlQoIWFyZ3VtZW50TGlzdC5oYXNPdmVyZmxvd2VkKCkpOwogCi0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTQzo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlv
biwgY2FsbERhdGEsIG1fanNPYmplY3QuZ2V0KCksIGFyZ3VtZW50TGlzdCk7CisgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTQzo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERh
dGEsIGFzUHVibGljVGhpc1ZhbHVlKG1fanNPYmplY3QuZ2V0KCkpLCBhcmd1bWVudExpc3QpOwog
CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICBzY29wZS5j
bGVhckV4Y2VwdGlvbigpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCShy
ZXZpc2lvbiAyNzgxNTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNyArMTg5
LDcgQEAgYm9vbCBOUFJ1bnRpbWVPYmplY3RNYXA6OmV2YWx1YXRlKE5QT2JqZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmplY3QuZ2V0KCkp
OwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZ2V0T3JDcmVhdGVKU09iamVjdChnbG9iYWxPYmpl
Y3QuZ2V0KCksIG5wT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc1ZhbHVlID0gYXNQdWJsaWNU
aGlzVmFsdWUoZ2V0T3JDcmVhdGVKU09iamVjdChnbG9iYWxPYmplY3QuZ2V0KCksIG5wT2JqZWN0
KSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdFZhbHVlID0gSlNDOjpldmFsdWF0ZShnbG9iYWxPYmpl
Y3QuZ2V0KCksIG1ha2VTb3VyY2Uoc2NyaXB0U3RyaW5nLCB7IH0pLCB0aGlzVmFsdWUpOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCShyZXZpc2lvbiAy
NzgxNTkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBA
QCBpbmxpbmUgSlNDOjpKU09iamVjdCogTmV0c2NhcGVQbHVnaW5JbnN0CiAgICAgaWYgKG9iamVj
dElEID09IEhhc2hUcmFpdHM8dWludDMyX3Q+OjplbXB0eVZhbHVlKCkgfHwgSGFzaFRyYWl0czx1
aW50MzJfdD46OmlzRGVsZXRlZFZhbHVlKG9iamVjdElEKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICByZXR1cm4gbV9pZFRvSlNPYmplY3RNYXAuZ2V0KG9iamVjdElEKS5nZXQoKTsK
KyAgICByZXR1cm4gYXNQdWJsaWNUaGlzVmFsdWUobV9pZFRvSlNPYmplY3RNYXAuZ2V0KG9iamVj
dElEKS5nZXQoKSk7CiB9CiAKIHVpbnQzMl90IE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
TG9jYWxPYmplY3RNYXA6OmlkRm9yT2JqZWN0KFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI3ODE1OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA1LTI3ICBBbGV4ZXkgU2h2YXlrYSAgPHNo
dmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBBYm9saXNoIHVzaW5nIHJlc29s
dmVkIHNjb3BlIGFzIHx0aGlzfCB2YWx1ZSB3aGVuIGNhbGxpbmcgZnVuY3Rpb25zCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL29iamVjdC1saXRl
cmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3Nj
cmlwdC10ZXN0cy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLmpzOgorCiAy
MDIxLTA1LTI3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBT
dXBwb3J0IEgyNjQgcHJvZmlsZXMgaW4gTWVkaWFSZWNvcmRlcgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vV2luZG93L2RvbS1hY2Nlc3MtZnJvbS1jbG9zdXJlLWlmcmFtZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2RvbS1hY2Nlc3Mt
ZnJvbS1jbG9zdXJlLWlmcmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3ODE1OSkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9kb20tYWNjZXNzLWZyb20tY2xvc3VyZS1pZnJhbWUt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogZG9jdW1lbnQuVVJM
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvcmVzb3VyY2VzL2RvbS1hY2Nlc3MtZnJvbS1j
bG9zdXJlLWlmcmFtZS1jaGlsZC5odG1sCiB3aW5kb3cuZG9jdW1lbnQuVVJMOiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9XaW5kb3cvcmVzb3VyY2VzL25vdGlmeS1wYXJlbnQtZG9uZS5odG1sCi1uYW1l
OgorbmFtZTogY2hpbGQKIHdpbmRvdy5uYW1lOiBjaGlsZAogCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvZG9tLWFjY2Vzcy1mcm9tLWNsb3N1cmUtd2luZG93LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZG9tLWFjY2Vzcy1m
cm9tLWNsb3N1cmUtd2luZG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4MTU5KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2RvbS1hY2Nlc3MtZnJvbS1jbG9zdXJlLXdpbmRvdy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiBkb2N1bWVudC5VUkw6
IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9yZXNvdXJjZXMvZG9tLWFjY2Vzcy1mcm9tLWNs
b3N1cmUtd2luZG93LWNoaWxkLmh0bWwKIHdpbmRvdy5kb2N1bWVudC5VUkw6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy9yZXNvdXJjZXMvbm90aWZ5LW9wZW5lci1kb25lLmh0bWwKLW5hbWU6
CituYW1lOiBjaGlsZAogd2luZG93Lm5hbWU6IGNoaWxkCiAKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy9kb20tYWNjZXNzLWZyb20tY2xvc3VyZS13aW5kb3ctd2l0aC1nYy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2RvbS1h
Y2Nlc3MtZnJvbS1jbG9zdXJlLXdpbmRvdy13aXRoLWdjLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
Mjc4MTU5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2RvbS1hY2Nlc3MtZnJvbS1j
bG9zdXJlLXdpbmRvdy13aXRoLWdjLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIGRvY3VtZW50LlVSTDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3Jlc291
cmNlcy9kb20tYWNjZXNzLWZyb20tY2xvc3VyZS13aW5kb3ctY2hpbGQuaHRtbAogd2luZG93LmRv
Y3VtZW50LlVSTDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3Jlc291cmNlcy9ub3RpZnkt
b3BlbmVyLWRvbmUuaHRtbAotbmFtZToKK25hbWU6IGNoaWxkCiB3aW5kb3cubmFtZTogY2hpbGQK
IApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELWNvbnRl
bnRXaW5kb3ctZXZhbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELWNvbnRlbnRXaW5kb3ctZXZhbC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDI3ODE1OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzLURFTklFRC1jb250ZW50V2luZG93LWV2YWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xICsxLDIgQEAKK0NPTlNPTEUgTUVTU0FHRTogU2VjdXJpdHlFcnJvcjogVGhlIG9wZXJh
dGlvbiBpcyBpbnNlY3VyZS4KIFRoaXMgdGVzdCBwYXNzZXMgaWYgYWxlcnQoKSBpcyBub3QgY2Fs
bGVkLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELWh0
bWxlbGVsbWVudC13aXRoLWlmcmFtZS1wcm90by1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELWh0bWxlbGVsbWVudC13
aXRoLWlmcmFtZS1wcm90by1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3ODE1OSkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1odG1sZWxlbG1lbnQtd2l0aC1p
ZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBU
ZXN0cyB0aGF0IG1ha2luZyBvdGhlciBmcmFtZSB3aW5kb3cgYSBwCiBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCiAKIAotUEFTUyBfX3Byb3RvX18gPSB0YXJnZXRXaW5kb3cgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51bGwg
b3IgdW5kZWZpbmVkLgorUEFTUyBfX3Byb3RvX18gPSB0YXJnZXRXaW5kb3cgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogQ2Fubm90IHNldCBwcm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlw
ZSBvYmplY3QuCiBQQVNTIHRhcmdldFdpbmRvdy5teWlucHV0IHRocmV3IGV4Y2VwdGlvbiBTZWN1
cml0eUVycm9yOiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBvcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMCIgZnJvbSBhY2Nlc3NpbmcgYSBjcm9zcy1vcmlnaW4gZnJhbWUuIFByb3RvY29scywgZG9t
YWlucywgYW5kIHBvcnRzIG11c3QgbWF0Y2guLgogUEFTUzogc3VjY2Vzc2Z1bGx5UGFyc2VkIHNo
b3VsZCBiZSAndHJ1ZScgYW5kIGlzLgogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzcy1ERU5JRUQtbWV0aG9kLXdpdGgtaWZyYW1lLXByb3RvLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQt
bWV0aG9kLXdpdGgtaWZyYW1lLXByb3RvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4MTU5KQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELW1ldGhvZC13aXRo
LWlmcmFtZS1wcm90by1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTcsNyArNyw3IEBA
IFRlc3RzIHRoYXQgbWFraW5nIG90aGVyIGZyYW1lIHdpbmRvdyBhIHAKIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KIAogCi1QQVNTIF9fcHJvdG9fXyA9IHRhcmdldFdpbmRvdyB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXyBjYWxsZWQgb24gbnVs
bCBvciB1bmRlZmluZWQuCitQQVNTIF9fcHJvdG9fXyA9IHRhcmdldFdpbmRvdyB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiBpbW11dGFibGUgcHJvdG90
eXBlIG9iamVjdC4KIFBBU1M6IHN1Y2Nlc3NmdWxseVBhcnNlZCBzaG91bGQgYmUgJ3RydWUnIGFu
ZCBpcy4KIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS94c3MtREVOSUVELW5vbi1zaGFkb3dhYmxlLXByb3B0ZXJ0eS13aXRoLWlmcmFtZS1wcm90
by1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS94c3MtREVOSUVELW5vbi1zaGFkb3dhYmxlLXByb3B0ZXJ0eS13aXRoLWlmcmFtZS1wcm90
by1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3ODE1OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkveHNzLURFTklFRC1ub24tc2hhZG93YWJsZS1wcm9wdGVydHktd2l0aC1pZnJh
bWUtcHJvdG8tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBUZXN0
cyB0aGF0IG1ha2luZyBvdGhlciBmcmFtZSB3aW5kb3cgYSBwCiBPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCiAKIAotUEFTUyBfX3Byb3RvX18gPSB0YXJnZXRXaW5kb3cgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51bGwgb3Ig
dW5kZWZpbmVkLgorUEFTUyBfX3Byb3RvX18gPSB0YXJnZXRXaW5kb3cgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogQ2Fubm90IHNldCBwcm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlwZSBv
YmplY3QuCiBQQVNTOiBsb2NhdGlvbiA9PT0gb3JpZ2luYWxMb2NhdGlvbiBzaG91bGQgYmUgJ3Ry
dWUnIGFuZCBpcy4KIFBBU1M6IHRoaXMubG9jYXRpb24gPT09IG9yaWdpbmFsTG9jYXRpb24gc2hv
dWxkIGJlICd0cnVlJyBhbmQgaXMuCiBQQVNTOiBzdWNjZXNzZnVsbHlQYXJzZWQgc2hvdWxkIGJl
ICd0cnVlJyBhbmQgaXMuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
cy1ERU5JRUQtcmVndWxhci1wcm9wdGVydHktd2l0aC1pZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklF
RC1yZWd1bGFyLXByb3B0ZXJ0eS13aXRoLWlmcmFtZS1wcm90by1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDI3ODE1OSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklF
RC1yZWd1bGFyLXByb3B0ZXJ0eS13aXRoLWlmcmFtZS1wcm90by1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTUsNyArNSw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEEKIAogCiBQQVNTIHRoaXMuX19wcm90b19fID0gdGFyZ2V0V2luZG93IHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90
b3R5cGUgb2JqZWN0LgotUEFTUyBfX3Byb3RvX18gPSB0YXJnZXRXaW5kb3cgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51bGwg
b3IgdW5kZWZpbmVkLgorUEFTUyBfX3Byb3RvX18gPSB0YXJnZXRXaW5kb3cgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogQ2Fubm90IHNldCBwcm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlw
ZSBvYmplY3QuCiBQQVNTOiBpbm5lckhlaWdodCA9PT0gb3JpZ2luYWxJbm5lckhlaWdodCBzaG91
bGQgYmUgJ3RydWUnIGFuZCBpcy4KIFBBU1M6IHRoaXMuaW5uZXJIZWlnaHQgPT09IG9yaWdpbmFs
SW5uZXJIZWlnaHQgc2hvdWxkIGJlICd0cnVlJyBhbmQgaXMuCiBQQVNTOiBzdWNjZXNzZnVsbHlQ
YXJzZWQgc2hvdWxkIGJlICd0cnVlJyBhbmQgaXMuCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFs
LW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNt
YXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnktZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAyNzgxNTkpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVj
dC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTUsNyArNSw3IEBAIFBBU1MgR2xvYmFsIG9iamVjdCdzIG9wZXJhdGlvbiB0aHJvd3Mgd2gKIFBB
U1MgR2xvYmFsIG9iamVjdCdzIGdldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRp
YmxlIG9iamVjdCAoZG9jdW1lbnQuYWxsKQogUEFTUyBHbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHRo
cm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0IChkb2N1bWVudC5hbGwpCiBQ
QVNTIEdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29t
cGF0aWJsZSBvYmplY3QgKGRvY3VtZW50LmFsbCkKLUZBSUwgR2xvYmFsIG9iamVjdCdzIGdldHRl
ciB3b3JrcyB3aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkIFRoZSBXaW5kb3cubG9jYXRp
b24gZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdpbmRvdwotRkFJTCBH
bG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHdvcmtzIHdoZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmlu
ZWQgVGhlIFdpbmRvdy5vbm9ubGluZSBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5j
ZXMgb2YgV2luZG93CitQQVNTIEdsb2JhbCBvYmplY3QncyBnZXR0ZXIgd29ya3Mgd2hlbiBjYWxs
ZWQgb24gbnVsbCAvIHVuZGVmaW5lZAorUEFTUyBHbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHdvcmtz
IHdoZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQKIFBBU1MgR2xvYmFsIG9iamVjdCdzIG9w
ZXJhdGlvbiB3b3JrcyB3aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkCiAKSW5kZXg6IExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViSURML2VjbWFzY3Jp
cHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFsdWUuYW55Lndvcmtlci1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1w
bGljaXQtdGhpcy12YWx1ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4MTU5
KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwv
ZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1vYmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnku
d29ya2VyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKIFBBU1Mg
R2xvYmFsIG9iamVjdCdzIGdldHRlciB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxl
IG9iamVjdAogUEFTUyBHbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBv
biBpbmNvbXBhdGlibGUgb2JqZWN0CiBQQVNTIEdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gdGhy
b3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmplY3QKLUZBSUwgR2xvYmFsIG9iamVj
dCdzIGdldHRlciB3b3JrcyB3aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkIFRoZSBXb3Jr
ZXJHbG9iYWxTY29wZS5sb2NhdGlvbiBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5j
ZXMgb2YgV29ya2VyR2xvYmFsU2NvcGUKLUZBSUwgR2xvYmFsIG9iamVjdCdzIHNldHRlciB3b3Jr
cyB3aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZpbmVkIFRoZSBXb3JrZXJHbG9iYWxTY29wZS5v
bm9ubGluZSBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV29ya2VyR2xv
YmFsU2NvcGUKK1BBU1MgR2xvYmFsIG9iamVjdCdzIGdldHRlciB3b3JrcyB3aGVuIGNhbGxlZCBv
biBudWxsIC8gdW5kZWZpbmVkCitQQVNTIEdsb2JhbCBvYmplY3QncyBzZXR0ZXIgd29ya3Mgd2hl
biBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZAogUEFTUyBHbG9iYWwgb2JqZWN0J3Mgb3BlcmF0
aW9uIHdvcmtzIHdoZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQKIApJbmRleDogTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL3dpbmRv
d3MvZW1iZWRkZWQtb3BlbmVyLXJlbW92ZS1mcmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dz
ZXJzL3dpbmRvd3MvZW1iZWRkZWQtb3BlbmVyLXJlbW92ZS1mcmFtZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDI3ODE1OSkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9icm93c2Vycy93aW5kb3dzL2VtYmVkZGVkLW9wZW5lci1yZW1vdmUtZnJhbWUt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAogCi1GQUlMIG9wZW5l
ciBvZiBkaXNjYXJkZWQgbmVzdGVkIGJyb3dzaW5nIGNvbnRleHQgVGhlIFdpbmRvdy5vcGVuZXIg
Z2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdpbmRvdwotRkFJTCBvcGVu
ZXIgb2YgZGlzY2FyZGVkIGF1eGlsaWFyeSBicm93c2luZyBjb250ZXh0IFRoZSBXaW5kb3cub3Bl
bmVyIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXaW5kb3cKK1BBU1Mg
b3BlbmVyIG9mIGRpc2NhcmRlZCBuZXN0ZWQgYnJvd3NpbmcgY29udGV4dAorUEFTUyBvcGVuZXIg
b2YgZGlzY2FyZGVkIGF1eGlsaWFyeSBicm93c2luZyBjb250ZXh0CiAKSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mvc2NyaXB0
aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L2V4ZWN1dGlvbi10aW1pbmcvMDgzLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudC9leGVjdXRp
b24tdGltaW5nLzA4My1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3ODE1OSkKKysrIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mvc2NyaXB0
aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L2V4ZWN1dGlvbi10aW1pbmcvMDgzLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogVHlwZUVy
cm9yOiBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3RvcC5sb2cnKQogRkFJTEVE
IChUaGlzIFRDIHJlcXVpcmVzIEphdmFTY3JpcHQgZW5hYmxlZCkKIAotSGFybmVzcyBFcnJvciAo
RkFJTCksIG1lc3NhZ2UgPSBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVh
dGluZyAndG9wLmxvZycpCi0KLUZBSUwgIHNjaGVkdWxlcjogZXZlbnQgbGlzdGVuZXIgZGVmaW5l
ZCBieSBzY3JpcHQgaW4gYSBkb2N1bWVudCBpbiBoaXN0b3J5IGFzc2VydF9hcnJheV9lcXVhbHM6
IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCBhcnJheSBbImlubGluZSBzY3JpcHQgIzEiLCAiSUZS
QU1FIHNjcmlwdCIsICJlbmQgc2NyaXB0ICMxIiwgImV2ZW50OiBmb28iLCAiaW5saW5lIHNjcmlw
dCAjMiJdIGxlbmd0aCA1LCBnb3QgWyJpbmxpbmUgc2NyaXB0ICMxIiwgIklGUkFNRSBzY3JpcHQi
LCAiZW5kIHNjcmlwdCAjMSIsICJldmVudDogZm9vIiwgImV2ZW50OiBmb28iLCAiaW5saW5lIHNj
cmlwdCAjMiJdIGxlbmd0aCA2CitGQUlMICBzY2hlZHVsZXI6IGV2ZW50IGxpc3RlbmVyIGRlZmlu
ZWQgYnkgc2NyaXB0IGluIGEgZG9jdW1lbnQgaW4gaGlzdG9yeSBhc3NlcnRfYXJyYXlfZXF1YWxz
OiBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgYXJyYXkgWyJpbmxpbmUgc2NyaXB0ICMxIiwgIklG
UkFNRSBzY3JpcHQiLCAiZW5kIHNjcmlwdCAjMSIsICJldmVudDogZm9vIiwgImlubGluZSBzY3Jp
cHQgIzIiXSBsZW5ndGggNSwgZ290IFsiaW5saW5lIHNjcmlwdCAjMSIsICJJRlJBTUUgc2NyaXB0
IiwgImVuZCBzY3JpcHQgIzEiLCAiZXZlbnQ6IGZvbyIsICJldmVudDogZm9vIiwgImlubGluZSBz
Y3JpcHQgIzIiLCAiZXZlbnQ6IGZvbyJdIGxlbmd0aCA3CiAKSW5kZXg6IExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy91bmxvYWQtYS1kb2N1bWVu
dC8wMDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy91bmxvYWQtYS1kb2N1bWVudC8wMDEtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAyNzgxNTkpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvdW5sb2FkLWEtZG9jdW1lbnQvMDAxLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDUgQEAKIFRlc3QgcmVxdWlyZXMgcG9w
dXAgYmxvY2tlciBkaXNhYmxlZAogCiAKLUhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0g
VGVzdCBuYW1lZCAnV2ViU29ja2V0czogbmF2aWdhdGluZyB0b3AtbGV2ZWwgYnJvd3NpbmcgY29u
dGV4dCcgc3BlY2lmaWVkIDIgJ2NsZWFudXAnIGZ1bmN0aW9ucywgYW5kIDEgZmFpbGVkLgotCiBQ
QVNTIFdlYlNvY2tldHM6IG5hdmlnYXRpbmcgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQKIApJ
bmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2Nr
ZXRzL3VubG9hZC1hLWRvY3VtZW50LzAwMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL3VubG9h
ZC1hLWRvY3VtZW50LzAwMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3ODE1OSkKKysrIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy91bmxvYWQt
YS1kb2N1bWVudC8wMDItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNSBA
QAogVGVzdCByZXF1aXJlcyBwb3B1cCBibG9ja2VyIGRpc2FibGVkCiAKIAotSGFybmVzcyBFcnJv
ciAoRkFJTCksIG1lc3NhZ2UgPSBUZXN0IG5hbWVkICdXZWJTb2NrZXRzOiBuYXZpZ2F0aW5nIHRv
cC1sZXZlbCBicm93c2luZyBjb250ZXh0IHdpdGggY2xvc2VkIHdlYnNvY2tldCcgc3BlY2lmaWVk
IDIgJ2NsZWFudXAnIGZ1bmN0aW9ucywgYW5kIDEgZmFpbGVkLgotCiBGQUlMIFdlYlNvY2tldHM6
IG5hdmlnYXRpbmcgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQgd2l0aCBjbG9zZWQgd2Vic29j
a2V0IGFzc2VydF91bnJlYWNoZWQ6IGRvY3VtZW50IHdhcyBkaXNjYXJkZWQgUmVhY2hlZCB1bnJl
YWNoYWJsZSBjb2RlCiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2Vic29ja2V0cy91bmxvYWQtYS1kb2N1bWVudC8wMDMtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2Vic29ja2V0cy91bmxvYWQtYS1kb2N1bWVudC8wMDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAy
NzgxNTkpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnNvY2tldHMvdW5sb2FkLWEtZG9jdW1lbnQvMDAzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBUZXN0
IG5hbWVkICdXZWJTb2NrZXRzOiBuYXZpZ2F0aW5nIG5lc3RlZCBicm93c2luZyBjb250ZXh0JyBz
cGVjaWZpZWQgMiAnY2xlYW51cCcgZnVuY3Rpb25zLCBhbmQgMSBmYWlsZWQuCi0KIFBBU1MgV2Vi
U29ja2V0czogbmF2aWdhdGluZyBuZXN0ZWQgYnJvd3NpbmcgY29udGV4dAogCkluZGV4OiBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvdW5sb2Fk
LWEtZG9jdW1lbnQvMDA0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvdW5sb2FkLWEtZG9jdW1l
bnQvMDA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4MTU5KQorKysgTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL3VubG9hZC1hLWRvY3VtZW50
LzAwNC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSwzIEBACiAKLUhhcm5l
c3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gVGVzdCBuYW1lZCAnV2ViU29ja2V0czogbmF2aWdh
dGluZyBuZXN0ZWQgYnJvd3NpbmcgY29udGV4dCB3aXRoIGNsb3NlZCB3ZWJzb2NrZXQnIHNwZWNp
ZmllZCAyICdjbGVhbnVwJyBmdW5jdGlvbnMsIGFuZCAxIGZhaWxlZC4KLQogRkFJTCBXZWJTb2Nr
ZXRzOiBuYXZpZ2F0aW5nIG5lc3RlZCBicm93c2luZyBjb250ZXh0IHdpdGggY2xvc2VkIHdlYnNv
Y2tldCBhc3NlcnRfdW5yZWFjaGVkOiBkb2N1bWVudCB3YXMgZGlzY2FyZGVkIFJlYWNoZWQgdW5y
ZWFjaGFibGUgY29kZQogCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9vYmplY3QtbGl0ZXJhbC1zaG9y
dGhhbmQtY29uc3RydWN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMjc4MTU5KQorKysgTGF5b3V0VGVzdHMvanMvb2JqZWN0LWxpdGVyYWwtc2hvcnRo
YW5kLWNvbnN0cnVjdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYzLDggKzYz
LDEwIEBAIFBBU1MgISFPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHsKIFBBU1MgISFP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHtzZXQgNDIodmFsdWUpe319LCAnNDInKS5z
ZXQgaXMgdHJ1ZQogUEFTUyB0aGlzLl9fcHJvdG9fXyA9IFtdIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IENhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0
LgogUEFTUyAoe19fcHJvdG9fXzogdGhpcy5fX3Byb3RvX199KSBpbnN0YW5jZW9mIEFycmF5IGlz
IGZhbHNlCi1QQVNTIF9fcHJvdG9fXyA9IFtdIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9i
amVjdC5wcm90b3R5cGUuX19wcm90b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZC4KLVBB
U1MgKHtfX3Byb3RvX186IF9fcHJvdG9fX30pIGluc3RhbmNlb2YgQXJyYXkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ19f
cHJvdG9fXycpLgorUEFTUyBfX3Byb3RvX18gPSBbXSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdC4KK1BB
U1MgKHtfX3Byb3RvX186IF9fcHJvdG9fX30pIGluc3RhbmNlb2YgQXJyYXkgaXMgZmFsc2UKK1BB
U1MgX19wcm90b19fIGlzIE9iamVjdC5nZXRQcm90b3R5cGVPZihnbG9iYWxUaGlzKQorUEFTUyBf
X3Byb3RvX18gPSBfX3Byb3RvX18gaXMgT2JqZWN0LmdldFByb3RvdHlwZU9mKGdsb2JhbFRoaXMp
CiBTeW50YXhFcnJvcnMKIFBBU1MgKHticmVha30pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAnYnJlYWsnIGFzIGEgc2hvcnRoYW5kIHByb3BlcnR5
IG5hbWUuLgogUEFTUyAoe2Nhc2V9KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IENhbm5v
dCB1c2UgdGhlIGtleXdvcmQgJ2Nhc2UnIGFzIGEgc2hvcnRoYW5kIHByb3BlcnR5IG5hbWUuLgpJ
bmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL29iamVjdC1saXRlcmFsLXNob3J0aGFu
ZC1jb25zdHJ1Y3Rpb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL29iamVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24uanMJKHJldmlzaW9uIDI3
ODE1OSkKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9vYmplY3QtbGl0ZXJhbC1zaG9y
dGhhbmQtY29uc3RydWN0aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsOCArMTEyLDEyIEBA
IHNob3VsZEJlVHJ1ZSgiISFPYmplY3QuZ2V0T3duUHJvcGVydHlEZXMKIC8vIF9fcHJvdG9fXyBz
aG9ydGhhbmQgc2hvdWxkIG5vdCBtb2RpZnkgdGhlIHByb3RvdHlwZS4KIHNob3VsZFRocm93KCJ0
aGlzLl9fcHJvdG9fXyA9IFtdIik7CiBzaG91bGRCZUZhbHNlKCIoe19fcHJvdG9fXzogdGhpcy5f
X3Byb3RvX199KSBpbnN0YW5jZW9mIEFycmF5Iik7Ci1zaG91bGRUaHJvdygiX19wcm90b19fID0g
W10iLCAnIlR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX18gY2FsbGVkIG9uIG51
bGwgb3IgdW5kZWZpbmVkIicpOwotc2hvdWxkVGhyb3coIih7X19wcm90b19fOiBfX3Byb3RvX199
KSBpbnN0YW5jZW9mIEFycmF5IiwgJyJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2Jq
ZWN0IChldmFsdWF0aW5nIFwnX19wcm90b19fXCcpIicpOworCisvLyBfX3Byb3RvX18gZ2V0dGVy
IC8gc2V0dGVyIGNhbGxlZCBvbiBnbG9iYWwgb2JqZWN0CitzaG91bGRUaHJvdygiX19wcm90b19f
ID0gW10iLCAnIlR5cGVFcnJvcjogQ2Fubm90IHNldCBwcm90b3R5cGUgb2YgaW1tdXRhYmxlIHBy
b3RvdHlwZSBvYmplY3QiJyk7CitzaG91bGRCZUZhbHNlKCIoe19fcHJvdG9fXzogX19wcm90b19f
fSkgaW5zdGFuY2VvZiBBcnJheSIpOworc2hvdWxkQmUoIl9fcHJvdG9fXyIsICJPYmplY3QuZ2V0
UHJvdG90eXBlT2YoZ2xvYmFsVGhpcykiKTsKK3Nob3VsZEJlKCJfX3Byb3RvX18gPSBfX3Byb3Rv
X18iLCAiT2JqZWN0LmdldFByb3RvdHlwZU9mKGdsb2JhbFRoaXMpIik7CiAKIC8vIEtleXdvcmRz
IC0gU3ludGF4IEVycm9ycwogZGVidWcoIlN5bnRheEVycm9ycyIpOwpJbmRleDogTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZS1jbG9zZWQtZGF0YWJhc2Utb2Jq
ZWN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9kZWxldGUtY2xvc2VkLWRhdGFiYXNlLW9iamVjdC5qcwkocmV2aXNpb24gMjc4MTU5KQor
KysgTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZS1jbG9zZWQt
ZGF0YWJhc2Utb2JqZWN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMyArMjMsMTUgQEAgZnVu
Y3Rpb24gb3BlblN1Y2Nlc3MoKQogICAgICAgICBkZWJ1ZygiRHJvcHBpbmcgcmVmZXJlbmNlcyB0
byBuZXcgY29ubmVjdGlvbi4iKTsKICAgICAgICAgLy8gQWZ0ZXIgbGVhdmluZyB0aGlzIGZ1bmN0
aW9uLCB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIHJlZmVyZW5jZXMgdG8gdGhlCiAgICAgICAgIC8v
IGRiLCBzbyBpdCBzaG91bGQgZ2V0IGRlbGV0ZWQuCi0gICAgICAgIHNldFRpbWVvdXQoc2V0VmVy
c2lvbiwgMik7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgZXZhbEFu
ZExvZygiZ2MoKSIpOworICAgICAgICAgICAgc2V0VGltZW91dChzZXRWZXJzaW9uKTsKKyAgICAg
ICAgfSk7CiAgICAgfTsKIH0KIAogZnVuY3Rpb24gc2V0VmVyc2lvbigpCiB7Ci0gICAgZXZhbEFu
ZExvZygiZ2MoKSIpOwogICAgIGRlYnVnKCJPcGVuIHJlcXVlc3Qgc2hvdWxkIG5vdCByZWNlaXZl
IGEgYmxvY2tlZCBldmVudDoiKTsKICAgICB2YXIgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4
ZWREQi5vcGVuKGRibmFtZSwgMikiKTsKICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsK
</data>
<flag name="commit-queue"
          id="451305"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429993</attachid>
            <date>2021-05-27 23:45:53 -0700</date>
            <delta_ts>2021-06-10 11:08:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225397-20210528094551.patch</filename>
            <type>text/plain</type>
            <size>168659</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzgxOTEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTI3ICBBbGV4ZXkgU2h2YXlrYSA8c2h2YWlrYWxlc2hA
Z21haWwuY29tPgorCisgICAgICAgIFtKU0NdIEFib2xpc2ggdXNpbmcgcmVzb2x2ZWQgc2NvcGUg
YXMgfHRoaXN8IHZhbHVlIHdoZW4gY2FsbGluZyBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTM5NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2JpZy1pbnQtc3BlYy10by10
aGlzLmpzOgorICAgICAgICAqIHN0cmVzcy9iaWctaW50LXN0cmljdC1zcGVjLXRvLXRoaXMuanM6
CisgICAgICAgICogc3RyZXNzL3ZhcmlhYmxlLW5hbWVkLWV2YWwuanM6IEFkZGVkLgorCiAyMDIx
LTA1LTIyICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAg
ICBTdXBwb3J0IEVyZ29ub21pYyBCcmFuZCBDaGVja3MgcHJvcG9zYWwgKGAjeCBpbiBvYmpgKQpJ
bmRleDogSlNUZXN0cy9zdHJlc3MvYmlnLWludC1zcGVjLXRvLXRoaXMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9zdHJlc3MvYmlnLWludC1zcGVjLXRvLXRoaXMuanMJKHJldmlzaW9uIDI3ODE5
MSkKKysrIEpTVGVzdHMvc3RyZXNzL2JpZy1pbnQtc3BlYy10by10aGlzLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYgKzEsMyBAQAotLy9AIHNraXAgaWYgbm90ICRqaXRUZXN0cwotLy9AIHJ1bkRl
ZmF1bHQoIi0tdXNlQ29uY3VycmVudEpJVD1mYWxzZSIpCi0KIGZ1bmN0aW9uIGFzc2VydChhKSB7
CiAgICAgaWYgKCFhKQogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKTsK
QEAgLTE4LDYgKzE1LDMgQEAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CiBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKICAgICBhc3NlcnQoZm9vLmFwcGx5KDMwMCkg
PT09ICJvYmplY3QiKTsKIH0KLQotYXNzZXJ0KG51bWJlck9mREZHQ29tcGlsZXMoZm9vKSA9PT0g
MSk7Ci0KSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2JpZy1pbnQtc3RyaWN0LXNwZWMtdG8tdGhpcy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9iaWctaW50LXN0cmljdC1zcGVjLXRvLXRo
aXMuanMJKHJldmlzaW9uIDI3ODE5MSkKKysrIEpTVGVzdHMvc3RyZXNzL2JpZy1pbnQtc3RyaWN0
LXNwZWMtdG8tdGhpcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDMgQEAKLS8vQCBydW5E
ZWZhdWx0KCItLXVzZUNvbmN1cnJlbnRKSVQ9ZmFsc2UiKQotCiBmdW5jdGlvbiBhc3NlcnQoYSkg
ewogICAgIGlmICghYSkKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uIik7
CkBAIC0xOCw2ICsxNiwzIEBAIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CiAgICAgYXNzZXJ0KGZvby5hcHBseSgzMDAp
ID09PSAibnVtYmVyIik7CiB9Ci0KLWFzc2VydChudW1iZXJPZkRGR0NvbXBpbGVzKGZvbykgPiAx
KTsKLQpJbmRleDogSlNUZXN0cy9zdHJlc3MvZ2xvYmFsLW9iamVjdC1hY2Nlc3Nvci1wcm9wZXJ0
eS10aGlzLXZhbHVlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2dsb2JhbC1vYmpl
Y3QtYWNjZXNzb3ItcHJvcGVydHktdGhpcy12YWx1ZS5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rl
c3RzL3N0cmVzcy9nbG9iYWwtb2JqZWN0LWFjY2Vzc29yLXByb3BlcnR5LXRoaXMtdmFsdWUuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYEJhZCB2YWx1ZTogJHthY3R1YWx9LmApOworfQorCisoZnVuY3Rpb24gc2Ft
ZVJlYWxtTm9uSW5kZXgoKSB7CisgICAgbGV0IF9fZm9vID0gLTE7CisgICAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGdsb2JhbFRoaXMsICJmb28iLCB7CisgICAgICAgIGdldCgpIHsKKyAgICAgICAg
ICAgIHNob3VsZEJlKHRoaXMsIGdsb2JhbFRoaXMpOworICAgICAgICAgICAgcmV0dXJuIF9fZm9v
OworICAgICAgICB9LAorICAgICAgICBzZXQodmFsdWUpIHsKKyAgICAgICAgICAgIHNob3VsZEJl
KHRoaXMsIGdsb2JhbFRoaXMpOworICAgICAgICAgICAgX19mb28gPSB2YWx1ZTsKKyAgICAgICAg
fSwKKyAgICB9KTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU2OyBpKyspIHsKKyAgICAg
ICAgc2hvdWxkQmUoZm9vLCBpIC0gMSk7CisgICAgICAgIGZvbyA9IGk7CisgICAgICAgIHNob3Vs
ZEJlKGZvbywgaSk7CisgICAgfQorfSkoKTsKKworKGZ1bmN0aW9uIHNhbWVSZWFsbUluZGV4ZWQo
KSB7CisgICAgbGV0IF9fMCA9IC0xOworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShnbG9iYWxU
aGlzLCAiMCIsIHsKKyAgICAgICAgZ2V0KCkgeworICAgICAgICAgICAgc2hvdWxkQmUodGhpcywg
Z2xvYmFsVGhpcyk7CisgICAgICAgICAgICByZXR1cm4gX18wOworICAgICAgICB9LAorICAgICAg
ICBzZXQodmFsdWUpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKHRoaXMsIGdsb2JhbFRoaXMpOwor
ICAgICAgICAgICAgX18wID0gdmFsdWU7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDFlNjsgaSsrKSB7CisgICAgICAgIHNob3VsZEJlKGdsb2JhbFRoaXNb
MF0sIGkgLSAxKTsKKyAgICAgICAgZ2xvYmFsVGhpc1swXSA9IGk7CisgICAgICAgIHNob3VsZEJl
KGdsb2JhbFRoaXNbMF0sIGkpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBjcm9zc1JlYWxt
Tm9uSW5kZXgoKSB7CisgICAgY29uc3QgT3RoZXJGdW5jdGlvbiA9ICR2bS5jcmVhdGVHbG9iYWxP
YmplY3QoKS5GdW5jdGlvbjsKKworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShnbG9iYWxUaGlz
LCAiYmFyIiwgeworICAgICAgICBnZXQ6IG5ldyBPdGhlckZ1bmN0aW9uKCJyZXR1cm4gdGhpczsi
KSwKKyAgICAgICAgc2V0OiBuZXcgT3RoZXJGdW5jdGlvbigidmFsdWUiLCAidmFsdWUudGhpc1Zh
bHVlID0gdGhpczsiKSwKKyAgICB9KTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU2OyBp
KyspIHsKKyAgICAgICAgc2hvdWxkQmUoYmFyLCBnbG9iYWxUaGlzKTsKKworICAgICAgICBjb25z
dCB2YWx1ZSA9IHt9OworICAgICAgICBiYXIgPSB2YWx1ZTsKKyAgICAgICAgc2hvdWxkQmUodmFs
dWUudGhpc1ZhbHVlLCBnbG9iYWxUaGlzKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24gY3Jv
c3NSZWFsbUluZGV4ZWQoKSB7CisgICAgY29uc3QgT3RoZXJGdW5jdGlvbiA9ICR2bS5jcmVhdGVH
bG9iYWxPYmplY3QoKS5GdW5jdGlvbjsKKworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShnbG9i
YWxUaGlzLCAiMSIsIHsKKyAgICAgICAgZ2V0OiBuZXcgT3RoZXJGdW5jdGlvbigicmV0dXJuIHRo
aXM7IiksCisgICAgICAgIHNldDogbmV3IE90aGVyRnVuY3Rpb24oInZhbHVlIiwgInZhbHVlLnRo
aXNWYWx1ZSA9IHRoaXM7IiksCisgICAgfSk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFl
NjsgaSsrKSB7CisgICAgICAgIHNob3VsZEJlKGdsb2JhbFRoaXNbMV0sIGdsb2JhbFRoaXMpOwor
CisgICAgICAgIGNvbnN0IHZhbHVlID0ge307CisgICAgICAgIGdsb2JhbFRoaXNbMV0gPSB2YWx1
ZTsKKyAgICAgICAgc2hvdWxkQmUodmFsdWUudGhpc1ZhbHVlLCBnbG9iYWxUaGlzKTsKKyAgICB9
Cit9KSgpOwpJbmRleDogSlNUZXN0cy9zdHJlc3MvdmFyaWFibGUtbmFtZWQtZXZhbC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy92YXJpYWJsZS1uYW1lZC1ldmFsLmpzCShub25leGlz
dGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL3ZhcmlhYmxlLW5hbWVkLWV2YWwuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxOSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYEJhZCB2YWx1ZTogJHthY3R1YWx9LmApOworfQorCitsZXQgZXZhbDsKKworKGZ1bmN0aW9u
IHRoaXNWYWx1ZSgpIHsKKyAgICBldmFsID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9Owor
ICAgIHNob3VsZEJlKGV2YWwoKSwgZ2xvYmFsVGhpcyk7CisKKyAgICBldmFsID0gZnVuY3Rpb24o
KSB7ICJ1c2Ugc3RyaWN0IjsgcmV0dXJuIHRoaXM7IH07CisgICAgc2hvdWxkQmUoZXZhbCgpLCB1
bmRlZmluZWQpOworCisgICAgY29uc3QgYmluZGluZ09iamVjdCA9IHsgZXZhbCB9OworICAgIHdp
dGggKGJpbmRpbmdPYmplY3QpIHsKKyAgICAgICAgc2hvdWxkQmUoZXZhbCgpLCBiaW5kaW5nT2Jq
ZWN0KTsKKyAgICB9Cit9KSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNzgxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQxIEBACisyMDIxLTA1LTI3ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFp
a2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBBYm9saXNoIHVzaW5nIHJlc29sdmVk
IHNjb3BlIGFzIHx0aGlzfCB2YWx1ZSB3aGVuIGNhbGxpbmcgZnVuY3Rpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9BUElDYWxsYmFja0Z1
bmN0aW9uLmg6CisgICAgICAgIChKU0M6OkFQSUNhbGxiYWNrRnVuY3Rpb246OmNhbGxJbXBsKToK
KyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlND
OjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxJbXBsKToKKyAgICAgICAgKiBBUEkvSlND
b250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTQ29udGV4dEdldEdsb2JhbE9iamVjdCk6CisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
Y3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAg
ICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6
ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKiBieXRlY29kZS9Ub1RoaXNTdGF0dXMuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIGJ5dGVjb2RlL1RvVGhpc1N0YXR1cy5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0RnVuY3Rpb25Gcm9tU2NvcGUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aGFzUGFyZW50V2l0aFNjb3BlIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUb1RoaXMpOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpUYWdnZWRUZW1wbGF0ZU5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkV2YWxGdW5jdGlvbkNhbGxOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyQ2FsbEZyYW1lOjp0aGlzVmFsdWUgY29uc3QpOgorICAgICAgICAqIGRmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAg
ICAgIChKU0M6OkRGRzo6aXNUb1RoaXNBbklkZW50aXR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBk
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9i
YmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFu
dEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQ
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cFRvVGhpcyk6CisgICAgICAgICogZGZn
L0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzRUNNQU1vZGUpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OmVjbWFNb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5
cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RG
R09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6
OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFRoaXNWYWx1
ZUZvckNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9U
aGlzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVHZXRUaGlzVmFsdWVGb3JDYWxsKToKKyAgICAgICAgKiBnZW5l
cmF0b3IvRFNMLnJiOgorICAgICAgICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENv
bnN0cnVjdG9yTmFtZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAg
ICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF90
aGlzX3ZhbHVlX2Zvcl9jYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3RoaXMp
OgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdG9fdGhpcyk6IERlbGV0ZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAq
IHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpjcmVhdGVBcnJheUl0ZXJhdG9yT2JqZWN0KToK
KyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DT01NT05fU0xPV19QQVRI
KToKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjp0b0ds
b2JhbFRoaXMpOgorICAgICAgICAoSlNDOjpldmFsdWF0ZSk6CisgICAgICAgICogcnVudGltZS9E
YXRlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6
CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1
ZTo6dG9UaGlzU2xvd0Nhc2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlND
SlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6dG9TbG9wcHlNb2RlVGhpcyBjb25zdCk6CisgICAgICAgIChKU0M6
OkpTVmFsdWU6OnRvVGhpcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0Nl
bGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvVGhpcyk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAg
ICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNl
dFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnRvVGhp
cyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkpTU2NvcGU6OnRvVGhpcyk6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmg6CisgICAgICAgICogcnVudGltZS9KU1N0
cmluZy5jcHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp0b1RoaXMpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6
cGVyQ2VsbEJpdCk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpvdmVycmlkZXNUb1RoaXMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6b2Jq
ZWN0UHJvdG90eXBlSGFzT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbC5oOgorCiAyMDIxLTA1
LTI3ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgQWly
QWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZyBzaG91bGQgdXNlIHRoZSBvcHRpbWl6ZWQgaW50
ZXJmZXJlbmNlIGdyYXBocyBmcm9tIEFpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5n
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNzgxOTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTU4Myw3ICs1ODMsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBCiAgICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAogICAgIGJ5dGVjb2RlL1N0cnVjdHVy
ZVNldC5oCiAgICAgYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKLSAgICBieXRlY29kZS9Ub1RoaXNT
dGF0dXMuaAogICAgIGJ5dGVjb2RlL1R5cGVMb2NhdGlvbi5oCiAgICAgYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaAogICAgIGJ5dGVjb2RlL1VubGlua2VkRXZhbENvZGVCbG9jay5oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNzgxOTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw3ICsyODEs
NiBAQCBieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50CiBieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5jcHAKIGJ5dGVjb2RlL1N0dWJJbmZvU3VtbWFyeS5jcHAKIGJ5dGVj
b2RlL1N1cGVyU2FtcGxlci5jcHAKLWJ5dGVjb2RlL1RvVGhpc1N0YXR1cy5jcHAKIGJ5dGVjb2Rl
L1RyYWNrZWRSZWZlcmVuY2VzLmNwcAogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCiBi
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5jcHAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCShyZXZpc2lvbiAyNzgx
OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBBUElDYWxsYmFj
a0Z1bmN0aW9uOjpjYWxsCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZ2xvYmFsT2JqZWN0KTsKICAgICBK
U09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Ci0g
ICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgp
KSkpOworICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpLnRvU2xvcHB5TW9kZVRoaXMoZ2xvYmFsT2JqZWN0KSk7CiAKICAgICBpbnQgYXJndW1l
bnRDb3VudCA9IHN0YXRpY19jYXN0PGludD4oY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpOwog
ICAgIFZlY3RvcjxKU1ZhbHVlUmVmLCAxNj4gYXJndW1lbnRzOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNCYXNlLmNwcAkocmV2aXNpb24gMjc4MTkxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIEpT
VmFsdWVSZWYgSlNFdmFsdWF0ZVNjcmlwdEludGVybmFsKGNvbnMKICAgICAvLyBldmFsdWF0ZSBz
ZXRzICJ0aGlzIiB0byB0aGUgZ2xvYmFsIG9iamVjdCBpZiBpdCBpcyBOVUxMCiAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlMoY3R4KTsKICAgICBOYWtlZFB0cjxFeGNlcHRp
b24+IGV2YWx1YXRpb25FeGNlcHRpb247Ci0gICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IHByb2Zp
bGVkRXZhbHVhdGUoZ2xvYmFsT2JqZWN0LCBQcm9maWxpbmdSZWFzb246OkFQSSwgc291cmNlLCBq
c1RoaXNPYmplY3QsIGV2YWx1YXRpb25FeGNlcHRpb24pOworICAgIEpTVmFsdWUgcmV0dXJuVmFs
dWUgPSBwcm9maWxlZEV2YWx1YXRlKGdsb2JhbE9iamVjdCwgUHJvZmlsaW5nUmVhc29uOjpBUEks
IHNvdXJjZSwganNUaGlzT2JqZWN0ID8gYXNQdWJsaWNUaGlzVmFsdWUoanNUaGlzT2JqZWN0KSA6
IG51bGxwdHIsIGV2YWx1YXRpb25FeGNlcHRpb24pOwogCiAgICAgaWYgKGV2YWx1YXRpb25FeGNl
cHRpb24pIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lv
biAyNzgxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RG
dW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTQ3LDcgKzU0Nyw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50PjoKIAogICAgIEpTQ29udGV4dFJlZiBleGVjUmVm
ID0gdG9SZWYoZ2xvYmFsT2JqZWN0KTsKICAgICBKU09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRv
UmVmKGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7Ci0gICAgSlNPYmplY3RSZWYgdGhpc09ialJlZiA9
IHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGds
b2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSkpOworICAgIEpTT2JqZWN0UmVmIHRoaXNP
YmpSZWYgPSB0b1JlZihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvU2xvcHB5TW9kZVRoaXMoZ2xv
YmFsT2JqZWN0KSk7CiAgICAgCiAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSBqc0Nhc3Q8
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Kj4odG9KUyhmdW5jdGlvblJlZikpLT5jbGFzc1JlZigp
OyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYg
KEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsQXNGdW5jdGlvbiA9IGpzQ2xhc3Mt
PmNhbGxBc0Z1bmN0aW9uKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRSZWYuY3BwCShyZXZpc2lvbiAyNzgxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ29udGV4dFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw3ICsxOTEsNyBAQCBK
U09iamVjdFJlZiBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QoSlNDCiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogCi0gICAgcmV0
dXJuIHRvUmVmKGpzQ2FzdDxKU09iamVjdCo+KGdsb2JhbE9iamVjdC0+bWV0aG9kVGFibGUodm0p
LT50b1RoaXMoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkp
KTsKKyAgICByZXR1cm4gdG9SZWYoZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCkpOwogfQogCiBK
U0NvbnRleHRHcm91cFJlZiBKU0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRSZWYgY3R4KQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAJKHJldmlzaW9uIDI3
ODE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgSlNWYWx1ZVJlZiBKU1NjcmlwdEV2YWx1YXRl
KEpTQ29udGV4dFJlZgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgTmFrZWRQ
dHI8RXhjZXB0aW9uPiBpbnRlcm5hbEV4Y2VwdGlvbjsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHRoaXNWYWx1ZVJlZiA/IHRvSlMoZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWVSZWYpIDoganNVbmRl
ZmluZWQoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHRoaXNWYWx1ZVJlZiA/IGFzUHVibGlj
VGhpc1ZhbHVlKHRvSlMoZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWVSZWYpLnRvU2xvcHB5TW9kZVRo
aXMoZ2xvYmFsT2JqZWN0KSkgOiBKU1ZhbHVlKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBldmFs
dWF0ZShnbG9iYWxPYmplY3QsIFNvdXJjZUNvZGUoKnNjcmlwdCksIHRoaXNWYWx1ZSwgaW50ZXJu
YWxFeGNlcHRpb24pOwogICAgIGlmIChpbnRlcm5hbEV4Y2VwdGlvbikgewogICAgICAgICBpZiAo
ZXhjZXB0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBp
LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBp
LmMJKHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
dGVzdGFwaS5jCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQ4LDEyICsxOTQ4LDE3IEBAIGludCBtYWlu
KGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgdiA9IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24o
Y29udGV4dCwgZnVuY3Rpb24sIG8sIDAsIE5VTEwsIE5VTEwpOwogICAgIEFTU0VSVChKU1ZhbHVl
SXNFcXVhbChjb250ZXh0LCB2LCBvLCBOVUxMKSk7CiAKKyAgICBKU09iamVjdFJlZiByYXdHbG9i
YWxPYmplY3QgPSBKU09iamVjdEdldFByb3h5VGFyZ2V0KGdsb2JhbE9iamVjdCk7CisgICAgQVNT
RVJUKCFKU1ZhbHVlSXNFcXVhbChjb250ZXh0LCByYXdHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dCwgTlVMTCkpOworCiAgICAgY29uc3QgY2hhciogdGhpc1NjcmlwdCA9ICJ0aGlzOyI7CiAgICAg
SlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodGhpc1Nj
cmlwdCk7CiAgICAgdiA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2NyaXB0LCBOVUxMLCBO
VUxMLCAxLCBOVUxMKTsKICAgICBBU1NFUlQoSlNWYWx1ZUlzRXF1YWwoY29udGV4dCwgdiwgZ2xv
YmFsT2JqZWN0LCBOVUxMKSk7CiAgICAgdiA9IEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgc2Ny
aXB0LCBvLCBOVUxMLCAxLCBOVUxMKTsKICAgICBBU1NFUlQoSlNWYWx1ZUlzRXF1YWwoY29udGV4
dCwgdiwgbywgTlVMTCkpOworICAgIHYgPSBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlw
dCwgcmF3R2xvYmFsT2JqZWN0LCBOVUxMLCAxLCBOVUxMKTsKKyAgICBBU1NFUlQoSlNWYWx1ZUlz
RXF1YWwoY29udGV4dCwgdiwgZ2xvYmFsT2JqZWN0LCBOVUxMKSk7CiAgICAgSlNTdHJpbmdSZWxl
YXNlKHNjcmlwdCk7CiAKICAgICBKU1NjcmlwdFJlZiBzY3JpcHRPYmplY3QgPSBKU1NjcmlwdENy
ZWF0ZVJlZmVyZW5jaW5nSW1tb3J0YWxBU0NJSVRleHQoY29udGV4dEdyb3VwLCAwLCAwLCB0aGlz
U2NyaXB0LCBzdHJsZW4odGhpc1NjcmlwdCksIDAsIDApOwpAQCAtMTk2MSw2ICsxOTY2LDE4IEBA
IGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgQVNTRVJUKEpTVmFsdWVJc0Vx
dWFsKGNvbnRleHQsIHYsIGdsb2JhbE9iamVjdCwgTlVMTCkpOwogICAgIHYgPSBKU1NjcmlwdEV2
YWx1YXRlKGNvbnRleHQsIHNjcmlwdE9iamVjdCwgbywgTlVMTCk7CiAgICAgQVNTRVJUKEpTVmFs
dWVJc0VxdWFsKGNvbnRleHQsIHYsIG8sIE5VTEwpKTsKKyAgICB2ID0gSlNTY3JpcHRFdmFsdWF0
ZShjb250ZXh0LCBzY3JpcHRPYmplY3QsIHJhd0dsb2JhbE9iamVjdCwgTlVMTCk7CisgICAgQVNT
RVJUKEpTVmFsdWVJc0VxdWFsKGNvbnRleHQsIHYsIGdsb2JhbE9iamVjdCwgTlVMTCkpOworICAg
IHYgPSBKU1NjcmlwdEV2YWx1YXRlKGNvbnRleHQsIHNjcmlwdE9iamVjdCwganNVbmRlZmluZWQs
IE5VTEwpOworICAgIEFTU0VSVChKU1ZhbHVlSXNFcXVhbChjb250ZXh0LCB2LCBnbG9iYWxPYmpl
Y3QsIE5VTEwpKTsKKyAgICB2ID0gSlNTY3JpcHRFdmFsdWF0ZShjb250ZXh0LCBzY3JpcHRPYmpl
Y3QsIGpzTnVsbCwgTlVMTCk7CisgICAgQVNTRVJUKEpTVmFsdWVJc0VxdWFsKGNvbnRleHQsIHYs
IGdsb2JhbE9iamVjdCwgTlVMTCkpOworICAgIHYgPSBKU1NjcmlwdEV2YWx1YXRlKGNvbnRleHQs
IHNjcmlwdE9iamVjdCwganNaZXJvLCBOVUxMKTsKKyAgICBBU1NFUlQoSlNWYWx1ZUlzT2JqZWN0
KGNvbnRleHQsIHYpKTsKKyAgICB2ID0gSlNTY3JpcHRFdmFsdWF0ZShjb250ZXh0LCBzY3JpcHRP
YmplY3QsIGpzVHJ1ZSwgTlVMTCk7CisgICAgQVNTRVJUKEpTVmFsdWVJc09iamVjdChjb250ZXh0
LCB2KSk7CisgICAgdiA9IEpTU2NyaXB0RXZhbHVhdGUoY29udGV4dCwgc2NyaXB0T2JqZWN0LCBq
c0VtcHR5U3RyaW5nLCBOVUxMKTsKKyAgICBBU1NFUlQoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQs
IHYpKTsKICAgICBKU1NjcmlwdFJlbGVhc2Uoc2NyaXB0T2JqZWN0KTsKIAogICAgIHNjcmlwdCA9
IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJldmFsKHRoaXMpOyIpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjMsNyArMjYzLDYgQEAKIAkJMEYyQzYzQzIxRTY2NEE1QzAwQzEzODM5
IC8qIEIzTmF0aXZlVHJhaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjJDNjNDMTFFNjY0QTVBMDBDMTM4MzkgLyogQjNOYXRpdmVUcmFpdHMuaCAq
LzsgfTsKIAkJMEYyQzYzQzQxRTY5RUY5NDAwQzEzODM5IC8qIEIzTWVtb3J5VmFsdWVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNjND
MzFFNjlFRjkyMDBDMTM4MzkgLyogQjNNZW1vcnlWYWx1ZUlubGluZXMuaCAqLzsgfTsKIAkJMEYy
RDREREUxOTgzMkQzNDAwN0Q0QjE5IC8qIERlYnVnZ2VyU2NvcGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0RERDMTk4MzJEMzQwMDdENEIxOSAv
KiBEZWJ1Z2dlclNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMEYyRDRERTkxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyRDRERTYxOTgz
MkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkQ0REVBMTk4MzJEQUMwMDdENEIxOSAvKiBUeXBl
TG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkQ0REU3MTk4MzJEQUMwMDdENEIxOSAvKiBUeXBlTG9jYXRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJENERFQzE5ODMyREM0MDA3
RDRCMTkgLyogVHlwZVByb2ZpbGVyTG9nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjJENERFMDE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVByb2ZpbGVy
TG9nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYyRDRERjAxOTgzMkRENjAwN0Q0QjE5IC8qIFR5cGVTZXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkQ0REU0MTk4MzJEOTEwMDdENEIxOSAvKiBU
eXBlU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTI1MjIsOCArMjUyMSw2IEBACiAJCTBGMkQ0REUwMTk4MzJEOTEwMDdENEIxOSAvKiBUeXBl
UHJvZmlsZXJMb2cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZVByb2ZpbGVyTG9nLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkQ0REUzMTk4MzJEOTEwMDdENEIxOSAvKiBUeXBlU2V0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjJENERFNDE5ODMyRDkxMDA3RDRCMTkgLyogVHlwZVNldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUeXBlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGMkQ0REU1
MTk4MzJEQUMwMDdENEIxOSAvKiBUb1RoaXNTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVG9UaGlzU3RhdHVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMEYyRDRERTYxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUb1RoaXNTdGF0dXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYyRDRERTcxOTgzMkRBQzAwN0Q0QjE5IC8qIFR5cGVMb2NhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlTG9jYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyREQ4MEMxQUIzRDhCRTAwQkJCOEU4IC8qIERG
R0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcv
REZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMkREODBEMUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NjY5LDggKzg2NjYsNiBAQAogCQkJ
CTBGNEEzOEY3MUM4RTEzREYwMDE5MDMxOCAvKiBTdXBlclNhbXBsZXIuY3BwICovLAogCQkJCTBG
NEEzOEY4MUM4RTEzREYwMDE5MDMxOCAvKiBTdXBlclNhbXBsZXIuaCAqLywKIAkJCQkwRjQ0QTdB
ODIwQkY2ODVFMDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCAqLywKLQkJCQkwRjJE
NERFNTE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCAqLywKLQkJCQkwRjJENERF
NjE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmggKi8sCiAJCQkJMEY5NTJBQkExQjQ4
N0E3NzAwQzM2N0M1IC8qIFRyYWNrZWRSZWZlcmVuY2VzLmNwcCAqLywKIAkJCQkwRjk1MkFCQjFC
NDg3QTc3MDBDMzY3QzUgLyogVHJhY2tlZFJlZmVyZW5jZXMuaCAqLywKIAkJCQkwRjJENERFNzE5
ODMyREFDMDA3RDRCMTkgLyogVHlwZUxvY2F0aW9uLmggKi8sCkBAIC0xMDYwNyw3ICsxMDYwMiw2
IEBACiAJCQkJQTczODY1NTYxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTQxNDQ4Q0QxM0ExNzgzNzAwRjVCQTFBIC8qIFRpbnlCbG9vbUZp
bHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NTk4OTgxN0M4NkM1ODAwQTFFNTQzIC8qIFRv
TmF0aXZlRnJvbVZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjJENERFOTE5ODMyREFDMDA3
RDRCMTkgLyogVG9UaGlzU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk1MkFCRDFCNDg3
QTc3MDBDMzY3QzUgLyogVHJhY2tlZFJlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MkI2NzA2MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5QWRhcHRvcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkI2NzA4MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5Q29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIJKHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcg
KzU2LDYgQEAgdHlwZXMgWwogICAgIDpTdHJ1Y3R1cmVDaGFpbiwKICAgICA6U3ltYm9sVGFibGUs
CiAgICAgOlN5bWJvbFRhYmxlT3JTY29wZURlcHRoLAotICAgIDpUb1RoaXNTdGF0dXMsCiAgICAg
OlR5cGVMb2NhdGlvbiwKICAgICA6V2FzbUJvdW5kTGFiZWwsCiAgICAgOldhdGNocG9pbnRTZXQs
CkBAIC0xNzcsMTEgKzE3Niw4IEBAIG9wIDphcmd1bWVudF9jb3VudCwKIG9wIDp0b190aGlzLAog
ICAgIGFyZ3M6IHsKICAgICAgICAgc3JjRHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGVj
bWFNb2RlOiBFQ01BTW9kZSwKICAgICB9LAogICAgIG1ldGFkYXRhOiB7Ci0gICAgICAgIGNhY2hl
ZFN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKLSAgICAgICAgdG9UaGlzU3RhdHVzOiBUb1RoaXNT
dGF0dXMsCiAgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CiAKQEAgLTEwMzQs
NiArMTAzMCwxMiBAQCBvcCA6Z2V0X2Zyb21fc2NvcGUsCiAgICAgICAgIG9wZXJhbmQ6IDpvZmZz
ZXQsCiAgICAgfQogCitvcCA6Z2V0X3RoaXNfdmFsdWVfZm9yX2NhbGwsCisgICAgYXJnczogewor
ICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgc2NvcGU6IFZpcnR1YWxSZWdp
c3RlciwKKyAgICB9CisKIG9wIDpwdXRfdG9fc2NvcGUsCiAgICAgYXJnczogewogICAgICAgICBz
Y29wZTogVmlydHVhbFJlZ2lzdGVyLCAjIG9mZnNldCAxCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAJKHJldmlzaW9uIDI3ODE5
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3Myw2ICsxNzMsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVJbmRleEltcGwoVmlyCiAgICAgVVNFUyhPcFJlc29sdmVTY29wZSwgc2NvcGUpCiAgICAg
VVNFUyhPcFJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwsIHNjb3BlKQogICAg
IFVTRVMoT3BHZXRGcm9tU2NvcGUsIHNjb3BlKQorICAgIFVTRVMoT3BHZXRUaGlzVmFsdWVGb3JD
YWxsLCBzY29wZSkKICAgICBVU0VTKE9wVG9QcmltaXRpdmUsIHNyYykKICAgICBVU0VTKE9wVG9Q
cm9wZXJ0eUtleSwgc3JjKQogICAgIFVTRVMoT3BUcnlHZXRCeUlkLCBiYXNlKQpAQCAtNDgwLDYg
KzQ4MSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnMKIAogICAg
IERFRlMoT3BUYWlsQ2FsbEZvcndhcmRBcmd1bWVudHMsIGRzdCkKICAgICBERUZTKE9wR2V0RnJv
bVNjb3BlLCBkc3QpCisgICAgREVGUyhPcEdldFRoaXNWYWx1ZUZvckNhbGwsIGRzdCkKICAgICBE
RUZTKE9wQ2FsbCwgZHN0KQogICAgIERFRlMoT3BUYWlsQ2FsbCwgZHN0KQogICAgIERFRlMoT3BD
YWxsRXZhbCwgZHN0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAJKHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcxLDE3ICsxMzcxLDYg
QEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZQogICAgICAgICAgICAg
bWV0YWRhdGEubV9icmFuZC5jbGVhcigpOwogICAgICAgICB9KTsKIAotICAgICAgICBtX21ldGFk
YXRhLT5mb3JFYWNoPE9wVG9UaGlzPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgICAg
ICBpZiAoIW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2
bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJ
RCkpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlmIChPcHRpb25zOjp2
ZXJib3NlT1NSKCkpIHsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZt
LmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlE
KTsKLSAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgTExJbnQgdG9fdGhpcyB3aXRo
IHN0cnVjdHVyZSAlcC5cbiIsIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEID0gMDsKLSAgICAgICAgICAgIG1ldGFkYXRh
Lm1fdG9UaGlzU3RhdHVzID0gbWVyZ2UobWV0YWRhdGEubV90b1RoaXNTdGF0dXMsIFRvVGhpc0Ns
ZWFyZWRCeUdDKTsKLSAgICAgICAgfSk7Ci0KICAgICAgICAgYXV0byBoYW5kbGVDcmVhdGVCeXRl
Y29kZSA9IFsmXSAoYXV0byYgbWV0YWRhdGEsIEFTQ0lJTGl0ZXJhbCBuYW1lKSB7CiAgICAgICAg
ICAgICBhdXRvJiBjYWNoZVdyaXRlQmFycmllciA9IG1ldGFkYXRhLm1fY2FjaGVkQ2FsbGVlOwog
ICAgICAgICAgICAgaWYgKCFjYWNoZVdyaXRlQmFycmllciB8fCBjYWNoZVdyaXRlQmFycmllci51
bnZhbGlkYXRlZEdldCgpID09IEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1RvVGhpc1N0YXR1cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1RvVGhpc1N0YXR1cy5j
cHAJKHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9U
b1RoaXNTdGF0dXMuY3BwCShub25leGlzdGVudCkKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiVG9UaGlzU3RhdHVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1Ub1RoaXNT
dGF0dXMgbWVyZ2UoVG9UaGlzU3RhdHVzIGEsIFRvVGhpc1N0YXR1cyBiKQotewotICAgIHN3aXRj
aCAoYSkgewotICAgIGNhc2UgVG9UaGlzT0s6Ci0gICAgICAgIHJldHVybiBiOwotICAgIGNhc2Ug
VG9UaGlzQ29uZmxpY3RlZDoKLSAgICAgICAgcmV0dXJuIFRvVGhpc0NvbmZsaWN0ZWQ7Ci0gICAg
Y2FzZSBUb1RoaXNDbGVhcmVkQnlHQzoKLSAgICAgICAgaWYgKGIgPT0gVG9UaGlzQ29uZmxpY3Rl
ZCkKLSAgICAgICAgICAgIHJldHVybiBUb1RoaXNDb25mbGljdGVkOwotICAgICAgICByZXR1cm4g
VG9UaGlzQ2xlYXJlZEJ5R0M7Ci0gICAgfQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRvVGhpc0NvbmZsaWN0ZWQ7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIEpTQwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFRvVGhpc1N0YXR1cyBzdGF0dXMpCi17
Ci0gICAgc3dpdGNoIChzdGF0dXMpIHsKLSAgICBjYXNlIFRvVGhpc09LOgotICAgICAgICBvdXQu
cHJpbnQoIk9LIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFRvVGhpc0NvbmZsaWN0ZWQ6
Ci0gICAgICAgIG91dC5wcmludCgiQ29uZmxpY3RlZCIpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBUb1RoaXNDbGVhcmVkQnlHQzoKLSAgICAgICAgb3V0LnByaW50KCJDbGVhcmVkQnlHQyIp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1RvVGhpc1N0YXR1cy5oCShyZXZpc2lvbiAyNzgxOTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVG9UaGlzU3RhdHVzLmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1lbnVtIFRvVGhpc1N0YXR1cyB7Ci0gICAgVG9UaGlzT0ss
Ci0gICAgVG9UaGlzQ29uZmxpY3RlZCwKLSAgICBUb1RoaXNDbGVhcmVkQnlHQwotfTsKLQotVG9U
aGlzU3RhdHVzIG1lcmdlKFRvVGhpc1N0YXR1cywgVG9UaGlzU3RhdHVzKTsKLQotfSAvLyBuYW1l
c3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBXVEYgewotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mLCBKU0M6OlRvVGhpc1N0YXR1cyk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDU4LDYgKzI0NTgsMzEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRG
cgogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0RnVuY3Rpb25Gcm9tU2NvcGUoUmVnaXN0ZXJJRCogZHN0
LCBjb25zdCBWYXJpYWJsZSYgdmFyaWFibGUsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZUZvckNhbGwp
Cit7CisgICAgQVNTRVJUKCF2YXJpYWJsZS5sb2NhbCgpKTsKKworICAgIFJlZ2lzdGVySUQqIHNj
b3BlID0gZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXJpYWJsZSk7CisgICAgZW1pdEdldEZy
b21TY29wZShkc3QsIHNjb3BlLCB2YXJpYWJsZSwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICBlbWl0
VERaQ2hlY2tJZk5lY2Vzc2FyeSh2YXJpYWJsZSwgZHN0LCBudWxscHRyKTsKKyAgICBpZiAoaGFz
UGFyZW50V2l0aFNjb3BlKHZhcmlhYmxlKSkKKyAgICAgICAgT3BHZXRUaGlzVmFsdWVGb3JDYWxs
OjplbWl0KHRoaXMsIGtpbGwodGhpc1ZhbHVlRm9yQ2FsbCksIHNjb3BlKTsKKyAgICByZXR1cm4g
ZHN0OworfQorCitib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpoYXNQYXJlbnRXaXRoU2NvcGUoY29u
c3QgVmFyaWFibGUmIHZhcmlhYmxlKSBjb25zdAoreworICAgIGlmICh2YXJpYWJsZS5vZmZzZXQo
KS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAodW5zaWduZWQg
aSA9IG1fbGV4aWNhbFNjb3BlU3RhY2suc2l6ZSgpOyBpLS07ICkgeworICAgICAgICBpZiAobV9s
ZXhpY2FsU2NvcGVTdGFja1tpXS5tX2lzV2l0aFNjb3BlKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UHV0VG9TY29wZShSZWdpc3RlcklEKiBzY29wZSwgY29uc3QgVmFyaWFi
bGUmIHZhcmlhYmxlLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVzb2x2ZU1vZGUgcmVzb2x2ZU1vZGUs
IEluaXRpYWxpemF0aW9uTW9kZSBpbml0aWFsaXphdGlvbk1vZGUpCiB7CiAgICAgc3dpdGNoICh2
YXJpYWJsZS5vZmZzZXQoKS5raW5kKCkpIHsKQEAgLTU0NTUsNyArNTQ4MCw4IEBAIHZvaWQgU3Rh
dGljUHJvcGVydHlBbmFseXNpczo6cmVjb3JkKCkKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFRvVGhpcygpCiB7Ci0gICAgT3BUb1RoaXM6OmVtaXQodGhpcywga2lsbCgmbV90aGlzUmVn
aXN0ZXIpLCBlY21hTW9kZSgpKTsKKyAgICBpZiAoIWVjbWFNb2RlKCkuaXNTdHJpY3QoKSkKKyAg
ICAgICAgT3BUb1RoaXM6OmVtaXQodGhpcywga2lsbCgmbV90aGlzUmVnaXN0ZXIpKTsKIH0KIAog
U3RydWN0dXJlRm9ySW5Db250ZXh0KiBCeXRlY29kZUdlbmVyYXRvcjo6ZmluZFN0cnVjdHVyZUZv
ckluQ29udGV4dChSZWdpc3RlcklEKiBwcm9wZXJ0eSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlz
aW9uIDI3ODE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtOTA0LDYgKzkwNCw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVzb2x2ZUNvbnN0YW50TG9jYWwoUmVn
aXN0ZXJJRCogZHN0LCBjb25zdCBWYXJpYWJsZSYpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
UmVzb2x2ZVNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgVmFyaWFibGUmKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEdldEZyb21TY29wZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IHNjb3BlLCBjb25zdCBWYXJpYWJsZSYsIFJlc29sdmVNb2RlKTsKKyAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEdldEZ1bmN0aW9uRnJvbVNjb3BlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgVmFyaWFi
bGUmLCBSZWdpc3RlcklEKiB0aGlzVmFsdWVGb3JDYWxsKTsKKyAgICAgICAgYm9vbCBoYXNQYXJl
bnRXaXRoU2NvcGUoY29uc3QgVmFyaWFibGUmKSBjb25zdDsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdFB1dFRvU2NvcGUoUmVnaXN0ZXJJRCogc2NvcGUsIGNvbnN0IFZhcmlhYmxlJiwgUmVnaXN0
ZXJJRCogdmFsdWUsIFJlc29sdmVNb2RlLCBJbml0aWFsaXphdGlvbk1vZGUpOwogCiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsKFJl
Z2lzdGVySUQqIGRzdCwgY29uc3QgSWRlbnRpZmllciYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24g
Mjc4MTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTAsMTMgKzM1MCwxMSBAQCBSZWdpc3RlcklEKiBU
YWdnZWRUZW1wbGF0ZU5vZGU6OmVtaXRCeXRlCiAgICAgICAgICAgICB0YWcgPSBnZW5lcmF0b3Iu
bW92ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGxvY2FsKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIHRhZyA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgICAg
IGJhc2UgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBiYXNlID0gZ2Vu
ZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwganNVbmRlZmluZWQoKSk7
CiAKICAgICAgICAgICAgIEpTVGV4dFBvc2l0aW9uIG5ld0Rpdm90ID0gZGl2b3RTdGFydCgpICsg
aWRlbnRpZmllci5sZW5ndGgoKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8obmV3RGl2b3QsIGRpdm90U3RhcnQoKSwgbmV3RGl2b3QpOwotICAgICAgICAgICAgZ2Vu
ZXJhdG9yLm1vdmUoYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoYmFzZS5n
ZXQoKSwgdmFyKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZSh0YWcu
Z2V0KCksIGJhc2UuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKLSAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0VERaQ2hlY2tJZk5lY2Vzc2FyeSh2YXIsIHRhZy5nZXQoKSwgbnVsbHB0cik7
CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZ1bmN0aW9uRnJvbVNjb3BlKHRhZy5nZXQo
KSwgdmFyLCBiYXNlLmdldCgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV90YWctPmlz
QnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGJy
YWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4obV90YWcpOwpAQCAtMTE4
MCwxNyArMTE3OCwxMiBAQCBSZWdpc3RlcklEKiBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6ZW1pdEJ5
CiAgICAgfSBlbHNlCiAgICAgICAgIGZ1bmMgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAg
ICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmlu
ZWQoKSk7CiAKLSAgICBpZiAobG9jYWwpCi0gICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxs
QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKLSAgICBlbHNlIHsKKyAg
ICBpZiAoIWxvY2FsKSB7CiAgICAgICAgIEpTVGV4dFBvc2l0aW9uIG5ld0Rpdm90ID0gZGl2b3RT
dGFydCgpICsgNDsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhuZXdEaXZv
dCwgZGl2b3RTdGFydCgpLCBuZXdEaXZvdCk7Ci0gICAgICAgIGdlbmVyYXRvci5tb3ZlKAotICAg
ICAgICAgICAgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwKLSAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0UmVzb2x2ZVNjb3BlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIHZhcikp
OwotICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShmdW5jLmdldCgpLCBjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7Ci0gICAgICAgIGdl
bmVyYXRvci5lbWl0VERaQ2hlY2tJZk5lY2Vzc2FyeSh2YXIsIGZ1bmMuZ2V0KCksIG51bGxwdHIp
OworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZ1bmN0aW9uRnJvbVNjb3BlKGZ1bmMuZ2V0KCks
IHZhciwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSk7CiAgICAgfQogCiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
LCBmdW5jLmdldCgpKTsKQEAgLTEyNzYsMjAgKzEyNjksMTYgQEAgUmVnaXN0ZXJJRCogRnVuY3Rp
b25DYWxsUmVzb2x2ZU5vZGU6OmVtaQogICAgIH0gZWxzZQogICAgICAgICBmdW5jID0gZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7CisgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogCiAgICAgaWYgKGxvY2FsKSB7Ci0gICAgICAg
IGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVm
aW5lZCgpKTsKICAgICAgICAgLy8gVGhpcyBwYXNzZXMgTm9FeHBlY3RlZEZ1bmN0aW9uIGJlY2F1
c2Ugd2UgZXhwZWN0IHRoYXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGluIGEKICAgICAgICAgLy8gbG9j
YWwgdmFyaWFibGUsIHRoZW4gaXQncyBub3Qgb25lIG9mIG91ciBidWlsdC1pbiBjb25zdHJ1Y3Rv
cnMuCiAgICAgICAgIGV4cGVjdGVkRnVuY3Rpb24gPSBOb0V4cGVjdGVkRnVuY3Rpb247CiAgICAg
fSBlbHNlIHsKICAgICAgICAgSlNUZXh0UG9zaXRpb24gbmV3RGl2b3QgPSBkaXZvdFN0YXJ0KCkg
KyBtX2lkZW50Lmxlbmd0aCgpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KG5ld0Rpdm90LCBkaXZvdFN0YXJ0KCksIG5ld0Rpdm90KTsKLSAgICAgICAgZ2VuZXJhdG9yLm1v
dmUoCi0gICAgICAgICAgICBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLAotICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIo
KSwgdmFyKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGZ1bmMuZ2V0KCks
IGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKLSAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVja0lmTmVjZXNzYXJ5KHZhciwgZnVuYy5nZXQoKSwg
bnVsbHB0cik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnVuY3Rpb25Gcm9tU2NvcGUoZnVu
Yy5nZXQoKSwgdmFyLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpKTsKICAgICB9CiAKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5h
dGlvbihkc3QsIGZ1bmMuZ2V0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAyNzgxOTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDksMTAgKzIwOSwxMCBAQCBKU1ZhbHVlIERlYnVnZ2VyQ2FsbEZy
YW1lOjp0aGlzVmFsdWUoVk0mCiAgICAgaWYgKCF0aGlzVmFsdWUpCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBFQ01BTW9kZTo6c2xvcHB5
KCk7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCF0aGlzVmFsdWUuaW5oZXJpdHM8
SlNTY29wZT4odm0pLCAidGhpc1ZhbHVlIHNob3VsZG4ndCBiZSBKU1Njb3BlIik7CiAgICAgaWYg
KGNvZGVCbG9jayAmJiBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29u
dGV4dCgpKQotICAgICAgICBlY21hTW9kZSA9IEVDTUFNb2RlOjpzdHJpY3QoKTsKLSAgICByZXR1
cm4gdGhpc1ZhbHVlLnRvVGhpcyhtX3ZhbGlkTWFjaGluZUZyYW1lLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KHZtKSwgZWNtYU1vZGUpOworICAgICAgICByZXR1cm4gdGhpc1ZhbHVlOworICAgIHJldHVy
biB0aGlzVmFsdWUudG9TbG9wcHlNb2RlVGhpcyhtX3ZhbGlkTWFjaGluZUZyYW1lLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KHZtKSk7CiB9CiAKIC8vIEV2YWx1YXRlIHNvbWUgSmF2YVNjcmlwdCBjb2Rl
IGluIHRoZSBzY29wZSBvZiB0aGlzIGZyYW1lLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2
aXNpb24gMjc4MTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksNjUgKzE3OSw2IEBAIHZv
aWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBERkdfTk9ERV9ET19U
T19DSElMRFJFTihtX2dyYXBoLCBub2RlLCB2ZXJpZnlFZGdlKTsKIH0KIAotZW51bSBjbGFzcyBU
b1RoaXNSZXN1bHQgewotICAgIElkZW50aXR5LAotICAgIFVuZGVmaW5lZCwKLSAgICBHbG9iYWxU
aGlzLAotICAgIER5bmFtaWMsCi19OwotaW5saW5lIFRvVGhpc1Jlc3VsdCBpc1RvVGhpc0FuSWRl
bnRpdHkoVk0mIHZtLCBFQ01BTW9kZSBlY21hTW9kZSwgQWJzdHJhY3RWYWx1ZSYgdmFsdWVGb3JO
b2RlKQotewotICAgIC8vIFdlIGxvb2sgYXQgdGhlIHR5cGUgZmlyc3Qgc2luY2UgdGhhdCB3aWxs
IGNvdmVyIG1vc3QgY2FzZXMgYW5kIGRvZXMgbm90IHJlcXVpcmUgaXRlcmF0aW5nIGFsbCB0aGUg
c3RydWN0dXJlcy4KLSAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkgewotICAgICAgICBpZiAo
dmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiBTcGVjT2JqZWN0
T3RoZXIpKQotICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgaWYgKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiYgISh2YWx1ZUZvck5v
ZGUubV90eXBlICYgKH5TcGVjT2JqZWN0IHwgU3BlY09iamVjdE90aGVyKSkpCi0gICAgICAgICAg
ICByZXR1cm4gVG9UaGlzUmVzdWx0OjpJZGVudGl0eTsKLSAgICB9Ci0KLSAgICBpZiAoSlNWYWx1
ZSB2YWx1ZSA9IHZhbHVlRm9yTm9kZS52YWx1ZSgpKSB7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0Nl
bGwoKSkgewotICAgICAgICAgICAgYXV0byogdG9UaGlzTWV0aG9kID0gdmFsdWUuYXNDZWxsKCkt
PmNsYXNzSW5mbyh2bSktPm1ldGhvZFRhYmxlLnRvVGhpczsKLSAgICAgICAgICAgIGlmICh0b1Ro
aXNNZXRob2QgPT0gJkpTT2JqZWN0Ojp0b1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFRv
VGhpc1Jlc3VsdDo6SWRlbnRpdHk7Ci0gICAgICAgICAgICBpZiAodG9UaGlzTWV0aG9kID09ICZK
U1Njb3BlOjp0b1RoaXMpIHsKLSAgICAgICAgICAgICAgICBpZiAoZWNtYU1vZGUuaXNTdHJpY3Qo
KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6VW5kZWZpbmVkOwot
ICAgICAgICAgICAgICAgIHJldHVybiBUb1RoaXNSZXN1bHQ6Okdsb2JhbFRoaXM7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoKGVjbWFNb2RlLmlzU3RyaWN0KCkg
fHwgKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiYgISh2YWx1ZUZvck5vZGUubV90eXBlICYgflNwZWNP
YmplY3QpKSkgJiYgdmFsdWVGb3JOb2RlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsKLSAgICAg
ICAgYm9vbCBhbGxTdHJ1Y3R1cmVzQXJlSlNTY29wZSA9ICF2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1
cmUuaXNDbGVhcigpOwotICAgICAgICBib29sIG92ZXJyaWRlc1RvVGhpcyA9IGZhbHNlOwotICAg
ICAgICB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuZm9yRWFjaChbJl0oUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgIFR5cGVJbmZvIHR5cGUgPSBzdHJ1Y3R1cmUt
PnR5cGVJbmZvKCk7Ci0gICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpIHx8IHR5cGUu
dHlwZSgpID09IFN0cmluZ1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9sVHlwZSB8fCB0eXBl
LnR5cGUoKSA9PSBIZWFwQmlnSW50VHlwZSk7Ci0gICAgICAgICAgICBpZiAoIWVjbWFNb2RlLmlz
U3RyaWN0KCkpCi0gICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSk7Ci0gICAg
ICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHN0cmluZ3Mvc3ltYm9scyBo
ZXJlIHNpbmNlIGVpdGhlcjoKLSAgICAgICAgICAgIC8vIDEpIFdlIGFyZSBpbiBzdHJpY3QgbW9k
ZSBhbmQgc3RyaW5ncy9zeW1ib2xzIGFyZSBub3Qgd3JhcHBlZAotICAgICAgICAgICAgLy8gMikg
VGhlIEFJIGhhcyBwcm92ZW4gdGhhdCB0aGUgdHlwZSBvZiB0aGlzIGlzIGEgc3VidHlwZSBvZiBv
YmplY3QKLSAgICAgICAgICAgIGlmICh0eXBlLmlzT2JqZWN0KCkgJiYgdHlwZS5vdmVycmlkZXNU
b1RoaXMoKSkKLSAgICAgICAgICAgICAgICBvdmVycmlkZXNUb1RoaXMgPSB0cnVlOwotCi0gICAg
ICAgICAgICAvLyBJZiBhbGwgdGhlIHN0cnVjdHVyZXMgYXJlIEpTU2NvcGUncyBvbmVzLCB3ZSBr
bm93IHRoZSBkZXRhaWxzIG9mIEpTU2NvcGU6OnRvVGhpcygpIG9wZXJhdGlvbi4KLSAgICAgICAg
ICAgIGFsbFN0cnVjdHVyZXNBcmVKU1Njb3BlICY9IHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPm1l
dGhvZFRhYmxlLnRvVGhpcyA9PSBKU1Njb3BlOjppbmZvKCktPm1ldGhvZFRhYmxlLnRvVGhpczsK
LSAgICAgICAgfSk7Ci0gICAgICAgIGlmICghb3ZlcnJpZGVzVG9UaGlzKQotICAgICAgICAgICAg
cmV0dXJuIFRvVGhpc1Jlc3VsdDo6SWRlbnRpdHk7Ci0gICAgICAgIGlmIChhbGxTdHJ1Y3R1cmVz
QXJlSlNTY29wZSkgewotICAgICAgICAgICAgaWYgKGVjbWFNb2RlLmlzU3RyaWN0KCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFRvVGhpc1Jlc3VsdDo6VW5kZWZpbmVkOwotICAgICAgICAgICAg
cmV0dXJuIFRvVGhpc1Jlc3VsdDo6R2xvYmFsVGhpczsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IHJldHVybiBUb1RoaXNSZXN1bHQ6OkR5bmFtaWM7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIEFi
c3RyYWN0U3RhdGVUeXBlPgogYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6aGFuZGxlQ29uc3RhbnRCaW5hcnlCaXR3aXNlT3AoTm9kZSogbm9kZSkKIHsKQEAgLTI5
NzIsMzEgKzI5MTMsMjIgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAgICAgCiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1
ZSYgc291cmNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEFic3RyYWN0VmFs
dWUmIGRlc3RpbmF0aW9uID0gZm9yTm9kZShub2RlKTsKLSAgICAgICAgRUNNQU1vZGUgZWNtYU1v
ZGUgPSBub2RlLT5lY21hTW9kZSgpOwogCi0gICAgICAgIFRvVGhpc1Jlc3VsdCByZXN1bHQgPSBp
c1RvVGhpc0FuSWRlbnRpdHkobV92bSwgZWNtYU1vZGUsIHNvdXJjZSk7Ci0gICAgICAgIHN3aXRj
aCAocmVzdWx0KSB7Ci0gICAgICAgIGNhc2UgVG9UaGlzUmVzdWx0OjpJZGVudGl0eToKKyAgICAg
ICAgaWYgKCEoc291cmNlLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSkgewogICAgICAgICAgICAgbV9z
dGF0ZS5zZXRTaG91bGRUcnlDb25zdGFudEZvbGRpbmcodHJ1ZSk7Ci0gICAgICAgICAgICBkZXN0
aW5hdGlvbiA9IHNvdXJjZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRvVGhp
c1Jlc3VsdDo6VW5kZWZpbmVkOgotICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNVbmRl
ZmluZWQoKSk7CisgICAgICAgICAgICBkaWRGb2xkQ2xvYmJlcldvcmxkKCk7CisgICAgICAgICAg
ICBzZXRGb3JOb2RlKG5vZGUsIHNvdXJjZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBUb1RoaXNSZXN1bHQ6Okdsb2JhbFRoaXM6CisgICAgICAgIH0KKworICAgICAgICBzZXRU
eXBlRm9yTm9kZShub2RlLCBTcGVjT2JqZWN0KTsKKworICAgICAgICBpZiAoIShzb3VyY2UubV90
eXBlICYgflNwZWNPdGhlcikpIHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0U2hvdWxkVHJ5Q29u
c3RhbnRGb2xkaW5nKHRydWUpOwotICAgICAgICAgICAgZGVzdGluYXRpb24uc2V0VHlwZShtX2dy
YXBoLCBTcGVjT2JqZWN0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRvVGhp
c1Jlc3VsdDo6RHluYW1pYzoKLSAgICAgICAgICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQot
ICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLm1ha2VIZWFwVG9wKCk7Ci0gICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IHNvdXJjZTsKLSAgICAgICAgICAg
ICAgICBkZXN0aW5hdGlvbi5tZXJnZShTcGVjT2JqZWN0KTsKLSAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CisKKyAgICAgICAgY2xvYmJlcldvcmxkKCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIApAQCAtMzMxNSw2ICszMjQ3LDEzIEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwg
U3BlY09iamVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEdldFRoaXNWYWx1
ZUZvckNhbGw6CisgICAgICAgIGlmIChKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGls
ZDEoKSkudmFsdWUoKSkKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGNoaWxkLmluaGVy
aXRzPEpTU2NvcGU+KG1fdm0pID8ganNVbmRlZmluZWQoKSA6IGNoaWxkKTsKKworICAgICAgICBz
ZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjT2JqZWN0IHwgU3BlY090aGVyKTsKKyAgICAgICAgYnJl
YWs7CisKICAgICBjYXNlIFNraXBTY29wZTogewogICAgICAgICBpZiAoSlNWYWx1ZSBjaGlsZCA9
IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCkpIHsKICAgICAgICAgICAgIGlmIChKU1Nj
b3BlKiBzY29wZSA9IGpzRHluYW1pY0Nhc3Q8SlNTY29wZSo+KG1fdm0sIGNoaWxkKSkgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJ
KHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDA5LDI1ICs1NDA5LDcgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBvcF90b190aGlzOiB7Ci0gICAgICAgICAgICBOb2RlKiBvcDEgPSBn
ZXRUaGlzKCk7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9u
LT5hczxPcFRvVGhpcz4oKTsKLSAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAgICAgICAgIFN0cnVjdHVyZUlEIGNhY2hlZFN0cnVj
dHVyZUlEID0gbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRDsKLSAgICAgICAgICAgIFN0cnVj
dHVyZSogY2FjaGVkU3RydWN0dXJlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIGlmIChjYWNoZWRT
dHJ1Y3R1cmVJRCkKLSAgICAgICAgICAgICAgICBjYWNoZWRTdHJ1Y3R1cmUgPSBtX3ZtLT5oZWFw
LnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoY2FjaGVkU3RydWN0dXJlSUQpOwotICAgICAgICAgICAg
aWYgKG1ldGFkYXRhLm1fdG9UaGlzU3RhdHVzICE9IFRvVGhpc09LCi0gICAgICAgICAgICAgICAg
fHwgIWNhY2hlZFN0cnVjdHVyZQotICAgICAgICAgICAgICAgIHx8IGNhY2hlZFN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLnRvVGhpcyAhPSBKU09iamVjdDo6aW5mbygpLT5tZXRo
b2RUYWJsZS50b1RoaXMKLSAgICAgICAgICAgICAgICB8fCBtX2lubGluZVN0YWNrVG9wLT5tX2V4
aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkKLSAgICAgICAg
ICAgICAgICB8fCAob3AxLT5vcCgpID09IEdldExvY2FsICYmIG9wMS0+dmFyaWFibGVBY2Nlc3NE
YXRhKCktPnN0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQoKSkpIHsKLSAgICAgICAgICAgICAg
ICBzZXRUaGlzKGFkZFRvR3JhcGgoVG9UaGlzLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSks
IE9wSW5mbyhnZXRQcmVkaWN0aW9uKCkpLCBvcDEpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaCgKLSAgICAgICAgICAgICAgICAgICAgQ2hlY2tTdHJ1
Y3R1cmUsCi0gICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNl
dChjYWNoZWRTdHJ1Y3R1cmUpKSwKLSAgICAgICAgICAgICAgICAgICAgb3AxKTsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHNldFRoaXMoYWRkVG9HcmFwaChUb1RoaXMsIE9wSW5mbyhnZXRQ
cmVkaWN0aW9uKCkpLCBnZXRUaGlzKCkpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3Rv
X3RoaXMpOwogICAgICAgICB9CiAKQEAgLTc3NDIsNyArNzcyNCw3IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLnN0
YXRlKCkgIT0gR2V0QnlTdGF0dXM6OlNpbXBsZQogICAgICAgICAgICAgICAgICAgICB8fCBzdGF0
dXMubnVtVmFyaWFudHMoKSAhPSAxCiAgICAgICAgICAgICAgICAgICAgIHx8IHN0YXR1c1swXS5z
dHJ1Y3R1cmVTZXQoKS5zaXplKCkgIT0gMSkgewotICAgICAgICAgICAgICAgICAgICBzZXQoYnl0
ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoR2V0QnlJZEZsdXNoLCBPcEluZm8oQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgdWlkKSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgZ2V0KGJ5
dGVjb2RlLm1fc2NvcGUpKSk7CisgICAgICAgICAgICAgICAgICAgIHNldChieXRlY29kZS5tX2Rz
dCwgYWRkVG9HcmFwaChHZXRCeUlkRmx1c2gsIE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyOjpj
cmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLCB1aWQpKSwgT3BJbmZvKHByZWRpY3Rpb24pLCB3ZWFrSlNDb25zdGFudChn
bG9iYWxPYmplY3QtPmdsb2JhbFRoaXMoKSkpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQogCkBAIC03ODY2LDYgKzc4NDgsMTIgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
Z2V0X2Zyb21fc2NvcGUpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9nZXRfdGhpc192
YWx1ZV9mb3JfY2FsbDogeworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BHZXRUaGlzVmFsdWVGb3JDYWxsPigpOworICAgICAgICAgICAgc2V0KGJ5
dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEdldFRoaXNWYWx1ZUZvckNhbGwsIGdldChieXRlY29k
ZS5tX3Njb3BlKSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X3RoaXNfdmFsdWVf
Zm9yX2NhbGwpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6IHsK
ICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wUHV0
VG9TY29wZT4oKTsKICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEoY29kZUJsb2NrKTsKQEAgLTc5MTcsNyArNzkwNSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLm51bVZhcmlh
bnRzKCkgIT0gMQogICAgICAgICAgICAgICAgICAgICB8fCBzdGF0dXNbMF0ua2luZCgpICE9IFB1
dEJ5SWRWYXJpYW50OjpSZXBsYWNlCiAgICAgICAgICAgICAgICAgICAgIHx8IHN0YXR1c1swXS5z
dHJ1Y3R1cmUoKS5zaXplKCkgIT0gMSkgewotICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KFB1dEJ5SWQsIE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmll
ck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQp
KSwgT3BJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKSwgZ2V0KGJ5dGVjb2Rl
Lm1fc2NvcGUpLCBnZXQoYnl0ZWNvZGUubV92YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKFB1dEJ5SWQsIE9wSW5mbyhDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLCB1aWQpKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5lY21hTW9kZSgpKSwgd2Vh
a0pTQ29uc3RhbnQoZ2xvYmFsT2JqZWN0LT5nbG9iYWxUaGlzKCkpLCBnZXQoYnl0ZWNvZGUubV92
YWx1ZSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgTm9kZSogYmFzZSA9IHdlYWtKU0NvbnN0YW50KGdsb2JhbE9iamVjdCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CShyZXZpc2lvbiAyNzgxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NCw2ICsyNTQsNyBAQCBDYXBhYmlsaXR5
TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlECiAgICAgY2FzZSBvcF9oYXNfcHJpdmF0ZV9i
cmFuZDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKICAgICBjYXNlIG9wX2dldF9mcm9tX3Njb3Bl
OgorICAgIGNhc2Ugb3BfZ2V0X3RoaXNfdmFsdWVfZm9yX2NhbGw6CiAgICAgY2FzZSBvcF9nZXRf
ZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3By
b3BlcnR5OgogICAgIGNhc2Ugb3BfaGFzX2VudW1lcmFibGVfc3RydWN0dXJlX3Byb3BlcnR5OgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9u
IDI3ODE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTgsNiArMjE4LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgQXJpdGhNYXg6CiAgICAgY2FzZSBBcml0aFBvdzoK
ICAgICBjYXNlIEdldFNjb3BlOgorICAgIGNhc2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDoKICAgICBj
YXNlIFNraXBTY29wZToKICAgICBjYXNlIEdldEdsb2JhbE9iamVjdDoKICAgICBjYXNlIFN0cmlu
Z0NoYXJDb2RlQXQ6CkBAIC01OTEsMTIgKzU5Miw2IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgd3JpdGUoSGVhcE9iamVjdENvdW50KTsKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgY2FzZSBUb1RoaXM6Ci0gICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7
Ci0gICAgICAgIHJlYWQoSGVhcE9iamVjdENvdW50KTsKLSAgICAgICAgd3JpdGUoSGVhcE9iamVj
dENvdW50KTsKLSAgICAgICAgcmV0dXJuOwotCiAgICAgY2FzZSBUeXBlT2ZJc09iamVjdDoKICAg
ICAgICAgcmVhZChNaXNjRmllbGRzKTsKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihUeXBlT2ZJ
c09iamVjdExvYywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7
CkBAIC03MTYsNiArNzExLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZQogICAgIGNhc2UgUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbDoKICAg
ICBjYXNlIFJlc29sdmVTY29wZToKICAgICBjYXNlIFRvT2JqZWN0OgorICAgIGNhc2UgVG9UaGlz
OgogICAgIGNhc2UgSGFzRW51bWVyYWJsZVN0cnVjdHVyZVByb3BlcnR5OgogICAgIGNhc2UgSGFz
RW51bWVyYWJsZVByb3BlcnR5OgogICAgIGNhc2UgSGFzT3duU3RydWN0dXJlUHJvcGVydHk6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjc4MTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxNCwx
MyArNzE0LDEzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGNhc2Ug
VG9UaGlzOiB7Ci0gICAgICAgICAgICAgICAgVG9UaGlzUmVzdWx0IHJlc3VsdCA9IGlzVG9UaGlz
QW5JZGVudGl0eShtX2dyYXBoLm1fdm0sIG5vZGUtPmVjbWFNb2RlKCksIG1fc3RhdGUuZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkpOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gVG9UaGlz
UmVzdWx0OjpJZGVudGl0eSkgeworICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVl
ID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBpZiAo
ISh2YWx1ZS5tX3R5cGUgJiB+U3BlY09iamVjdCkpIHsKICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBpZiAocmVzdWx0ID09IFRvVGhpc1Jlc3VsdDo6R2xvYmFsVGhpcykgeworICAg
ICAgICAgICAgICAgIGlmICghKHZhbHVlLm1fdHlwZSAmIH5TcGVjT3RoZXIpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0dldEdsb2JhbFRoaXMoKTsKICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjc4MTkx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTksNiArMTE5LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlKQogICAgIGNhc2UgQ2hlY2tBcnJheU9yRW1wdHk6CiAgICAgY2FzZSBDaGVja0RldGFjaGVk
OgogICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxsOgogICAg
IGNhc2UgU2tpcFNjb3BlOgogICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0OgogICAgIGNhc2UgR2V0
R2xvYmFsVGhpczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAkocmV2aXNpb24gMjc4MTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgwNiw2ICsxODA2LDcgQEAgcHJp
dmF0ZToKIAogICAgICAgICBjYXNlIFNraXBTY29wZToKICAgICAgICAgY2FzZSBHZXRTY29wZToK
KyAgICAgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxsOgogICAgICAgICBjYXNlIEdldEdldHRl
cjoKICAgICAgICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0R2xvYmFsT2JqZWN0
OiB7CkBAIC0zMTQ0LDk2ICszMTQ1LDE4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpeHVwVG9U
aGlzKE5vZGUqIG5vZGUpCiAgICAgewotICAgICAgICBib29sIGlzU3RyaWN0TW9kZSA9IG5vZGUt
PmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKLQotICAgICAgICBpZiAoaXNTdHJpY3RNb2RlKSB7Ci0g
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJvb2xlYW4oKSkg
ewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9vbGVhblVzZT4obm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPElu
dDMyVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRv
SWRlbnRpdHkoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkgewot
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50NTJSZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgICAg
IG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SW50NTIpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91
bGRTcGVjdWxhdGVOdW1iZXIoKSkgewotICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVw
VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRl
bnRpdHkoKTsKLSAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJs
ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN5bWJvbCgpKSB7Ci0gICAgICAg
ICAgICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAg
ICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVTdHJpbmdJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdJ
ZGVudFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRU
b0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKSB7
Ci0gICAgICAgICAgICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQoKSkgewotI2lmIFVTRShCSUdJTlQz
MikKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUJp
Z0ludDMyKCkpCi0gICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8QmlnSW50MzJVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hv
dWxkU3BlY3VsYXRlSGVhcEJpZ0ludCgpKQotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEhl
YXBCaWdJbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8QW55QmlnSW50VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0j
ZWxzZQotICAgICAgICAgICAgICAgIGZpeEVkZ2U8SGVhcEJpZ0ludFVzZT4obm9kZS0+Y2hpbGQx
KCkpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQogICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU90aGVyKCkpIHsKLSAgICAg
ICAgICAgIGlmIChpc1N0cmljdE1vZGUpIHsKLSAgICAgICAgICAgICAgICBmaXhFZGdlPE90aGVy
VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRl
bnRpdHkoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgbV9pbmRl
eEluQmxvY2ssIFNwZWNOb25lLCBDaGVjaywgbm9kZS0+b3JpZ2luLAogICAgICAgICAgICAgICAg
IEVkZ2Uobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBPdGhlclVzZSkpOwogICAgICAgICAgICAgb2Jz
ZXJ2ZVVzZUtpbmRPbk5vZGU8T3RoZXJVc2U+KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CiAgICAg
ICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KAotICAgICAgICAgICAgICAgIG5vZGUs
IG1fZ3JhcGguZ2xvYmFsVGhpc09iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKTsKKyAg
ICAgICAgICAgICAgICBub2RlLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5nbG9iYWxUaGlzKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGNvdmVyIG90aGVyIHVzZSBjYXNlcyBi
dXQgd2UgZG9uJ3QgaGF2ZSB1c2Uga2luZHMgZm9yIHRoZW0uIEl0J3Mgbm90IGNyaXRpY2FsLAot
ICAgICAgICAvLyBob3dldmVyLCBzaW5jZSB3ZSBjb3ZlciBhbGwgdGhlIG1pc3NpbmcgY2FzZXMg
aW4gY29uc3RhbnQgZm9sZGluZy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1NzIxMwotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3Vs
ZFNwZWN1bGF0ZVN0cmluZ09iamVjdCgpKSB7Ci0gICAgICAgICAgICBmaXhFZGdlPFN0cmluZ09i
amVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRl
bnRpdHkoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChp
c0ZpbmFsT2JqZWN0U3BlY3VsYXRpb24obm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSkpIHsK
LSAgICAgICAgICAgIGZpeEVkZ2U8RmluYWxPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSkgeworICAg
ICAgICAgICAgZml4RWRnZTxPYmplY3RVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAg
IG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDI3ODE5
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5
KQpAQCAtNDcwLDEyICs0NzAsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pOwogICAgIH0KICAgICAKLSAgICBKU09iamVj
dCogZ2xvYmFsVGhpc09iamVjdEZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCi0gICAgewotICAg
ICAgICBKU0dsb2JhbE9iamVjdCogb2JqZWN0ID0gZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
OwotICAgICAgICByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4ob2JqZWN0LT5tZXRob2RUYWJsZSht
X3ZtKS0+dG9UaGlzKG9iamVjdCwgb2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKLSAgICB9
Ci0gICAgCiAgICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZUZvcihJbmxpbmVDYWxsRnJh
bWUqIGlubGluZUNhbGxGcmFtZSkKICAgICB7CiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1l
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCShyZXZpc2lv
biAyNzgxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw3IEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBo
JiBncmFwaCwgTm9kZSoKICAgICBjYXNlIFNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOgog
ICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKICAgICBjYXNlIEdldFNjb3BlOgorICAgIGNhc2UgR2V0
VGhpc1ZhbHVlRm9yQ2FsbDoKICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICBjYXNlIENvdW50
RXhlY3V0aW9uOgogICAgIGNhc2UgU3VwZXJTYW1wbGVyQmVnaW46CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjc4MTkxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNjQsNyArMjI2NCw2IEBA
IHB1YmxpYzoKICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICAgICAgY2FzZSBQdXRC
eVZhbFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dER5bmFtaWNWYXI6Ci0gICAgICAgIGNhc2Ug
VG9UaGlzOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjc4LDcgKzIyNzcsNiBAQCBwdWJsaWM6CiAgICAg
ICAgIGNhc2UgQ2FsbEV2YWw6CiAgICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6CiAgICAgICAgIGNh
c2UgUHV0QnlWYWxXaXRoVGhpczoKLSAgICAgICAgY2FzZSBUb1RoaXM6CiAgICAgICAgICAgICBy
ZXR1cm4gRUNNQU1vZGU6OmZyb21CeXRlKG1fb3BJbmZvLmFzPHVpbnQ4X3Q+KCkpOwogICAgICAg
ICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0QnlJZDoKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjc1
LDYgKzI3NSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhH
ZXRHbG9iYWxMZXhpY2FsVmFyaWFibGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFB1dEds
b2JhbFZhcmlhYmxlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0RHluYW1pY1Zh
ciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdldFRoaXNW
YWx1ZUZvckNhbGwsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFB1dER5bmFtaWNWYXIsIE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhOb3RpZnlXcml0ZSwgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIG1hY3JvKEdldFJlZ0V4cE9iamVjdExhc3RJbmRleCwgTm9kZVJlc3VsdEpTKSBc
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJl
dmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNywyNCArMjE3LDYgQEAgQUxXQVlTX0lOTElORSBz
dGF0aWMgSlNWYWx1ZSBnZXRCeVZhbE9iagogICAgIHJldHVybiBiYXNlLT5nZXQoZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uVG9UaGlzLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkpCi17Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3ApLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpOwotfQot
Ci1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVG9UaGlzU3RyaWN0LCBFbmNvZGVk
SlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRPcCkpCi17Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0KLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRvVGhpcyhn
bG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkpOwotfQotCiBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uT2JqZWN0S2V5cywgSlNBcnJheSosIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT2JqZWN0KSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC0zMTgxLDcgKzMxNjMsOCBAQCBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0RHluCiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmll
cjo6ZnJvbVVpZCh2bSwgaW1wbCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZShzY29wZS0+Z2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgaWRl
bnQsIFsmXSAoYm9vbCBmb3VuZCwgUHJvcGVydHlTbG90JiBzbG90KSAtPiBKU1ZhbHVlIHsKKyAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChhc1B1YmxpY1RoaXNWYWx1ZShzY29wZSksIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2NvcGUtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmpl
Y3QsIGlkZW50LCBzbG90LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xvdCYpIC0+IEpTVmFs
dWUgewogICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBHZXRQdXRJbmZvIGdldFB1
dEluZm8oZ2V0UHV0SW5mb0JpdHMpOwogICAgICAgICAgICAgaWYgKGdldFB1dEluZm8ucmVzb2x2
ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQpCkBAIC0zMjI4LDcgKzMyMTEsNyBAQCBBTFdBWVNf
SU5MSU5FIHN0YXRpYyB2b2lkIHB1dER5bmFtaWNWYXIoCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgaXNTdHJpY3RNb2RlLCBQdXRQcm9w
ZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKGdldFB1dEluZm8uaW5p
dGlhbGl6YXRpb25Nb2RlKCkpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChhc1B1YmxpY1Ro
aXNWYWx1ZShzY29wZSksIGlzU3RyaWN0TW9kZSwgUHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29u
dGV4dCwgaXNJbml0aWFsaXphdGlvbihnZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSk7
CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgc2NvcGUtPm1ldGhvZFRhYmxlKHZtKS0+
cHV0KHNjb3BlLCBnbG9iYWxPYmplY3QsIGlkZW50LCBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLCBz
bG90KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
CShyZXZpc2lvbiAyNzgxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsOCArNTgsNiBAQCBKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkNyZWF0ZUludGVybmFsUHJvbWlzZSwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNP
YmplY3QqIGNvbnN0cnVjdG9yKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkNyZWF0ZUdlbmVyYXRvciwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGNv
bnN0cnVjdG9yKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNyZWF0ZUFz
eW5jR2VuZXJhdG9yLCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogY29uc3Ry
dWN0b3IpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVG9UaGlzLCBFbmNv
ZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkp
OwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Ub1RoaXNTdHJpY3QsIEVuY29k
ZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSk7
CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblZhbHVlTW9kLCBFbmNvZGVkSlNW
YWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25WYWx1ZUJpdE5vdCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDEpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
VmFsdWVCaXRBbmQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjc4MTkxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyNyw3MSArNTI3LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIFRvVGhpczogewotICAgICAgICAgICAgLy8gVG9UaGlzIGluIG1ldGhvZHMg
Zm9yIHByaW1pdGl2ZSB0eXBlcyBzaG91bGQgc3BlY3VsYXRlIHByaW1pdGl2ZSB0eXBlcyBpbiBz
dHJpY3QgbW9kZS4KLSAgICAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gbm9kZS0+ZWNtYU1v
ZGUoKS5pc1N0cmljdCgpOwotICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkgewotICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQm9vbGVhbigpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCb29s
ZWFuKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJ
bnQzMk9ubHkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZUlu
dDUyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24o
U3BlY0ludDUyQW55KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxh
dGVOdW1iZXIoKSkgewotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGlj
dGlvbihTcGVjQnl0ZWNvZGVOdW1iZXIpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZVN5bWJvbCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKFNwZWNTeW1ib2wpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICB9Ci0KLSNpZiBVU0UoQklHSU5UMzIpCi0gICAgICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVCaWdJbnQzMigpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNCaWdJbnQzMik7Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSNlbmRpZgotCi0g
ICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVIZWFwQmln
SW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24o
U3BlY0hlYXBCaWdJbnQpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1
bGF0ZUJpZ0ludCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKFNwZWNCaWdJbnQpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNw
ZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24oU3BlY1N0cmluZ0lkZW50KTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjU3RyaW5nKTsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNTdHJpbmdP
YmplY3QpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKSB7
CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N0cmluZ09i
amVjdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlv
bigpOwotICAgICAgICAgICAgaWYgKGlzU3RyaWN0TW9kZSkKLSAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKHByZWRpY3Rpb24pIHsKKyAgICAgICAgICAgIGlmIChwcmVkaWN0aW9u
KSB7CiAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgb3JpZ2luYWxQcmVkaWN0aW9uID0g
cHJlZGljdGlvbjsKICAgICAgICAgICAgICAgICBpZiAocHJlZGljdGlvbiAmIH5TcGVjT2JqZWN0
KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdyYXBwZXIgb2JqZWN0cyBhcmUgY3JlYXRlZCBv
bmx5IGluIHNsb3BweSBtb2RlLgpAQCAtMTIwNCw2ICsxMTQ2LDEwIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgICAgICBicmVh
azsKIAorICAgICAgICBjYXNlIEdldFRoaXNWYWx1ZUZvckNhbGw6IHsKKyAgICAgICAgICAgIHNl
dFByZWRpY3Rpb24oU3BlY09iamVjdCB8IFNwZWNPdGhlcik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQogICAgICAgICBjYXNlIEdldEVudW1lcmFibGVMZW5ndGg6IHsKICAgICAgICAg
ICAgIHNldFByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CiAgICAgICAgICAgICBicmVhazsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZp
c2lvbiAyNzgxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMyLDYgKzIzMiw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0
ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIENoZWNrQXJyYXk6CiAgICAgY2FzZSBD
aGVja0FycmF5T3JFbXB0eToKICAgICBjYXNlIEdldFNjb3BlOgorICAgIGNhc2UgR2V0VGhpc1Zh
bHVlRm9yQ2FsbDoKICAgICBjYXNlIFNraXBTY29wZToKICAgICBjYXNlIEdldEdsb2JhbE9iamVj
dDoKICAgICBjYXNlIEdldEdsb2JhbFRoaXM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDI3ODE5
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMjAsNiArNDIyMCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNh
c2UgR2V0VGhpc1ZhbHVlRm9yQ2FsbDogeworICAgICAgICBjb21waWxlR2V0VGhpc1ZhbHVlRm9y
Q2FsbChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBSZXNvbHZlU2Nv
cGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOiB7CiAgICAgICAgIGNvbXBpbGVSZXNvbHZlU2Nv
cGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsKG5vZGUpOwogICAgICAgICBicmVhazsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkocmV2aXNpb24gMjc4MTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI1OSw2ICs0MjU5LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUdl
dER5bmFtaWNWYXIobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgR2V0
VGhpc1ZhbHVlRm9yQ2FsbDogeworICAgICAgICBjb21waWxlR2V0VGhpc1ZhbHVlRm9yQ2FsbChu
b2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIAogICAgIGNhc2UgUmVzb2x2ZVNjb3Bl
Rm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbDogewogICAgICAgICBjb21waWxlUmVzb2x2ZVNjb3Bl
Rm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbChub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyNzgxOTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIxMjQsNiArMTIxMjQsMjUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldER5bmFtaWNWYQogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9
CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRUaGlzVmFsdWVGb3JDYWxsKE5vZGUq
IG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOworICAgIEdQUlJlZyBzY29wZUdQUiA9IHNjb3BlLmdwcigpOworCisgICAgSlNWYWx1
ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOworCisgICAgbV9qaXQubW92ZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5l
ZCgpLCByZXN1bHRSZWdzKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RXaXRoU2NvcGUg
PSBtX2ppdC5icmFuY2hJZlR5cGUoc2NvcGVHUFIsIEpTVHlwZVJhbmdlIHsgRmlyc3RKU1Njb3Bl
VHlwZSwgTGFzdEpTU2NvcGVUeXBlIH0pOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHJlc3VsdFJlZ3MudGFnR1BS
KCkpOworI2VuZGlmCisgICAgbV9qaXQubW92ZShzY29wZUdQUiwgcmVzdWx0UmVncy5wYXlsb2Fk
R1BSKCkpOworICAgIG5vdFdpdGhTY29wZS5saW5rKCZtX2ppdCk7CisKKyAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0RHluYW1pY1ZhcihOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHNj
b3BlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTEzNDU4LDI5ICsxMzQ3NywyNSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJhCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVG9UaGlzKE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKLSAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHRlbXAodGhp
cyk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKLSAgICBKU1ZhbHVlUmVncyB0aGlzVmFs
dWVSZWdzID0gdGhpc1ZhbHVlLmpzVmFsdWVSZWdzKCk7Ci0gICAgSlNWYWx1ZVJlZ3MgdGVtcFJl
Z3MgPSB0ZW1wLnJlZ3MoKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIEpTVmFs
dWVSZWdzIHZhbHVlUmVncyA9IHRoaXNWYWx1ZS5qc1ZhbHVlUmVncygpOworICAgIEdQUlJlZyB2
YWx1ZUdQUiA9IHZhbHVlUmVncy5wYXlsb2FkR1BSKCk7CiAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKHZhbHVlUmVncyk7CiAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaElmTm90Q2VsbCh0aGlzVmFsdWVSZWdzKSk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVu
ZCgKLSAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybywKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNWYWx1
ZVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksCi0gICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE92ZXJyaWRlc1RvVGhpcykpKTsK
LSAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKHRoaXNWYWx1ZVJlZ3MsIHRlbXBSZWdzKTsKLQotICAg
IEpfSklUT3BlcmF0aW9uX0dKIGZ1bmN0aW9uOwotICAgIGlmIChub2RlLT5lY21hTW9kZSgpLmlz
U3RyaWN0KCkpCi0gICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzU3RyaWN0OwotICAg
IGVsc2UKLSAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXM7Ci0gICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgZnVuY3Rpb24sIHRlbXBS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdGhpc1ZhbHVlUmVncykpOworICAgIHNs
b3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RPYmplY3QodmFsdWVHUFIpKTsKKyAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogCi0gICAganNWYWx1ZVJl
c3VsdCh0ZW1wUmVncywgbm9kZSk7CisgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7CisgICAgc2xv
d0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdE90aGVyKHZhbHVlUmVncywgc2NyYXRjaC5n
cHIoKSkpOworICAgIG1faml0LmxvYWRQdHIoZ2xvYmFsT2JqZWN0LT5hZGRyZXNzT2ZHbG9iYWxU
aGlzKCksIHZhbHVlR1BSKTsKKworICAgIGRvbmUubGluaygmbV9qaXQpOworICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblRvT2Jq
ZWN0LCB2YWx1ZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFs
T2JqZWN0KSwgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKSk7CisgICAgY2VsbFJl
c3VsdCh2YWx1ZUdQUiwgbm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVP
YmplY3RLZXlzT3JPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzKE5vZGUqIG5vZGUpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lv
biAyNzgxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NTIsNiArMTQ1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNvbXBpbGVHZXRHbG9iYWxWYXJpYWJsZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlUHV0R2xv
YmFsVmFyaWFibGUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldER5bmFtaWNWYXIoTm9kZSop
OworICAgIHZvaWQgY29tcGlsZUdldFRoaXNWYWx1ZUZvckNhbGwoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZVB1dER5bmFtaWNWYXIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldENsb3N1cmVW
YXIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVB1dENsb3N1cmVWYXIoTm9kZSopOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNp
b24gMjc4MTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTIsNiArMzUyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlM
ZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgUmVzb2x2ZVNjb3BlOgogICAgIGNhc2Ug
UmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbDoKICAgICBjYXNlIEdldER5bmFt
aWNWYXI6CisgICAgY2FzZSBHZXRUaGlzVmFsdWVGb3JDYWxsOgogICAgIGNhc2UgUHV0RHluYW1p
Y1ZhcjoKICAgICBjYXNlIENvbXBhcmVFcToKICAgICBjYXNlIENvbXBhcmVFcVB0cjoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlz
aW9uIDI3ODE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyMSw2ICsxNjIxLDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBHZXREeW5hbWljVmFyOgogICAgICAgICAgICAgY29tcGlsZUdldER5bmFtaWNWYXIo
KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldFRoaXNWYWx1ZUZvckNhbGw6
CisgICAgICAgICAgICBjb21waWxlR2V0VGhpc1ZhbHVlRm9yQ2FsbCgpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKICAgICAgICAgICAgIGNvbXBpbGVQ
dXREeW5hbWljVmFyKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIyMDksMzMgKzIyMTIsMjkg
QEAgcHJpdmF0ZToKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKIAogICAgICAgICBMVmFsdWUg
dmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVk
VHlwZSB2YWx1ZVR5cGUgPSBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAK
ICAgICAgICAgTEJhc2ljQmxvY2sgaXNDZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAg
ICAgIExCYXNpY0Jsb2NrIG5vdENlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAg
TEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNC
bG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAKLSAgICAgICAg
bV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgaXNDZWxsKHZhbHVlLCBwcm92ZW5UeXBlKG1fbm9k
ZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShpc0NlbGxDYXNlKSwgcmFyZWx5KHNsb3dDYXNlKSk7Ci0g
ICAgICAgIAotICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlz
Q2VsbENhc2UsIHNsb3dDYXNlKTsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9
IG1fb3V0LmFuY2hvcih2YWx1ZSk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAg
IG1fb3V0LnRlc3RJc1plcm8zMigKLSAgICAgICAgICAgICAgICBtX291dC5sb2FkOFplcm9FeHQz
Mih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfdHlwZUluZm9GbGFncyksCi0gICAgICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnQzMihPdmVycmlkZXNUb1RoaXMpKSwKLSAgICAgICAgICAgIHVzdWFsbHko
Y29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChp
c0NlbGwodmFsdWUsIHZhbHVlVHlwZSksIHVzdWFsbHkoaXNDZWxsQ2FzZSksIHJhcmVseShub3RD
ZWxsQ2FzZSkpOwogICAgICAgICAKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291
dC5hcHBlbmRUbyhpc0NlbGxDYXNlLCBub3RDZWxsQ2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJs
b2NrIGlzT2JqZWN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZhbHVlKTsKKyAgICAgICAgbV9vdXQu
YnJhbmNoKGlzT2JqZWN0KHZhbHVlLCB2YWx1ZVR5cGUpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbiks
IHJhcmVseShzbG93Q2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdENlbGxDYXNl
LCBzbG93Q2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGlzT3RoZXJSZXN1bHQgPSBtX291
dC5hbmNob3IobV9vdXQubG9hZFB0cihtX291dC5hYnNvbHV0ZShnbG9iYWxPYmplY3QtPmFkZHJl
c3NPZkdsb2JhbFRoaXMoKSkpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzT3RoZXIodmFsdWUs
IHZhbHVlVHlwZSksIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7CisK
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAg
IEpfSklUT3BlcmF0aW9uX0dKIGZ1bmN0aW9uOwotICAgICAgICBpZiAobV9ub2RlLT5lY21hTW9k
ZSgpLmlzU3RyaWN0KCkpCi0gICAgICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpc1N0
cmljdDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1Ro
aXM7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1D
YWxsKEludDY0LCBmdW5jdGlvbiwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgdmFsdWUpKTsK
KyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwo
SW50NjQsIG9wZXJhdGlvblRvT2JqZWN0LCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCB2YWx1
ZSwgbV9vdXQuY29uc3RJbnRQdHIoMCkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0
TmV4dCk7Ci0gICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBmYXN0UmVzdWx0LCBz
bG93UmVzdWx0KSk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCBpc09iamVj
dFJlc3VsdCwgaXNPdGhlclJlc3VsdCwgc2xvd1Jlc3VsdCkpOwogICAgIH0KIAogICAgIHZvaWQg
Y29tcGlsZVZhbHVlQWRkKCkKQEAgLTE0NDAzLDYgKzE0NDAyLDI2IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQx
KCkpLCBtX291dC5jb25zdEludFB0cih1aWQpLCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+Z2V0
UHV0SW5mbygpKSkpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUdldFRoaXNWYWx1ZUZvckNh
bGwoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHNjb3BlID0gbG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKTsKKworICAgICAgICBMQmFzaWNCbG9jayB3aXRoU2NvcGVDYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2so
KTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayB1bmRlZmluZWRSZXN1bHQgPSBtX291dC5hbmNo
b3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZVVuZGVmaW5lZCkpOworICAgICAgICBt
X291dC5icmFuY2goCisgICAgICAgICAgICBpc0NlbGxXaXRoVHlwZShzY29wZSwgSlNUeXBlUmFu
Z2UgeyBGaXJzdEpTU2NvcGVUeXBlLCBMYXN0SlNTY29wZVR5cGUgfSwgc3RkOjpudWxsb3B0LCBw
cm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwKKyAgICAgICAgICAgIHVzdWFsbHkoY29udGlu
dWF0aW9uKSwgcmFyZWx5KHdpdGhTY29wZUNhc2UpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHdpdGhTY29wZUNhc2UsIGNvbnRpbnVhdGlvbik7Cisg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIHdpdGhTY29wZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihzY29w
ZSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5h
cHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291
dC5waGkoSW50NjQsIHVuZGVmaW5lZFJlc3VsdCwgd2l0aFNjb3BlUmVzdWx0KSk7CisgICAgfQor
CiAgICAgdm9pZCBjb21waWxlUHV0RHluYW1pY1ZhcigpCiAgICAgewogICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4u
c2VtYW50aWMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIJKHJl
dmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJi
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNyArMTQyLDYgQEAgbW9kdWxlIERTTAogI2luY2x1ZGUg
IlByaXZhdGVGaWVsZFB1dEtpbmQuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5j
bHVkZSAiUHV0QnlJZEZsYWdzLmgiCi0jaW5jbHVkZSAiVG9UaGlzU3RhdHVzLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5q
ZWN0ZWRTY3JpcHRIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkocmV2aXNpb24gMjc4MTkxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNyw3ICsxMzcsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbnRlcm5hbENvCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0Nh
c3Q8SlNPYmplY3QqPihjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvVGhpcyhnbG9i
YWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU2xvcHB5TW9kZVRoaXMoZ2xvYmFsT2Jq
ZWN0KTsKICAgICByZXR1cm4ganNTdHJpbmcodm0sIEpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NO
YW1lKG9iamVjdCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY0Niw2ICs2NDYsOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlUHJvZ3JhbShj
b25zCiB7CiAgICAgSlNTY29wZSogc2NvcGUgPSB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKS0+Z2xv
YmFsU2NvcGUoKTsKICAgICBWTSYgdm0gPSBzY29wZS0+dm0oKTsKKworICAgIFJFTEVBU0VfQVNT
RVJUX1dJVEhfTUVTU0FHRSghdGhpc09iai0+aW5oZXJpdHM8SlNTY29wZT4odm0pLCAidGhpc1Zh
bHVlIHNob3VsZG4ndCBiZSBKU1Njb3BlIik7CisKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
c2NvcGUtPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgSlNDYWxsZWUqIGdsb2JhbENhbGxlZSA9IGds
b2JhbE9iamVjdC0+Z2xvYmFsQ2FsbGVlKCk7CkBAIC04NDIsNiArODQ1LDggQEAgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoSlNHbG9iYQogICAgIFZNJiB2bSA9IGxleGljYWxHbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIXRoaXNWYWx1ZS5pbmhl
cml0czxKU1Njb3BlPih2bSksICJ0aGlzVmFsdWUgc2hvdWxkbid0IGJlIEpTU2NvcGUiKTsKKwog
ICAgIGF1dG8gY2xvYmJlcml6ZVZhbGlkYXRvciA9IG1ha2VTY29wZUV4aXQoWyZdIHsKICAgICAg
ICAgdm0uZGlkRW50ZXJWTSA9IHRydWU7CiAgICAgfSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCShyZXZpc2lvbiAyNzgxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2Miw2ICs0NjIsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAKICAgICAgICAgREVGSU5FX09QKG9wX3Jlc29sdmVfc2Nv
cGUpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfZnJvbV9zY29wZSkKKyAgICAgICAgREVGSU5F
X09QKG9wX2dldF90aGlzX3ZhbHVlX2Zvcl9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0
X3RvX3Njb3BlKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2Zyb21fYXJndW1lbnRzKQogICAg
ICAgICBERUZJTkVfT1Aob3BfcHV0X3RvX2FyZ3VtZW50cykKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAkocmV2aXNpb24gMjc4MTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAkod29ya2luZyBjb3B5KQpAQCAtNzI4LDYgKzcyOCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfZnJvbV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3RoaXNfdmFsdWVfZm9yX2NhbGwoY29uc3QgSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF90b19zY29wZShjb25zdCBJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKGNvbnN0
IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKGNv
bnN0IEluc3RydWN0aW9uKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAyNzgxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMTcsMjIg
KzExMTcsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0CiAgICAg
ZW1pdFN0b3JlQ2VsbChieXRlY29kZS5tX2RzdCwgcmVzdWx0UmVnKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfdG9fdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQot
ewotICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigp
OwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwot
ICAgIFN0cnVjdHVyZUlEKiBjYWNoZWRTdHJ1Y3R1cmVJRCA9ICZtZXRhZGF0YS5tX2NhY2hlZFN0
cnVjdHVyZUlEOwotICAgIFZpcnR1YWxSZWdpc3RlciB0aGlzUmVnaXN0ZXIgPSBieXRlY29kZS5t
X3NyY0RzdDsKLQotICAgIGVtaXRMb2FkKHRoaXNSZWdpc3RlciwgcmVnVDMsIHJlZ1QyKTsKLQot
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChyZWdUMykpOwotICAgIGFkZFNsb3dDYXNl
KGJyYW5jaElmTm90VHlwZShyZWdUMiwgRmluYWxPYmplY3RUeXBlKSk7Ci0gICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAg
bG9hZDMyKGNhY2hlZFN0cnVjdHVyZUlELCByZWdUMik7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNo
UHRyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIpKTsKLX0KLQogdm9pZCBKSVQ6OmVtaXRfb3BfY2hl
Y2tfdGR6KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDaGVja1Rkej4oKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjc4MTkx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI5NSwyMCArMTI5NSw2IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZShj
b25zdCBJbnN0cnUKICAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmVnVDApOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Ci17Ci0gICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+
KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7
Ci0gICAgU3RydWN0dXJlSUQqIGNhY2hlZFN0cnVjdHVyZUlEID0gJm1ldGFkYXRhLm1fY2FjaGVk
U3RydWN0dXJlSUQ7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3NyY0Rz
dCwgcmVnVDEpOwotCi0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxKTsKLQot
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90VHlwZShyZWdUMSwgRmluYWxPYmplY3RUeXBlKSk7
Ci0gICAgbG9hZDMyKGNhY2hlZFN0cnVjdHVyZUlELCByZWdUMik7Ci0gICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoMzIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIHJlZ1QyKSk7Ci19Ci0KIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9
IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BDcmVhdGVUaGlzPigpOwpAQCAtMjA5Myw2ICsyMDc5
LDQ0IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wcm90b3R5cGVfb2YoY29uc3QKICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCByZXN1bHRSZWdzKTsKIH0KIAordm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X3RoaXNfdmFsdWVfZm9yX2NhbGwoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcEdldFRoaXNWYWx1ZUZvckNhbGw+KCk7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MocmVnVDApOworI2Vsc2UKKyAgICBKU1ZhbHVlUmVn
cyB2YWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKTsKKyNlbmRpZgorICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYnl0ZWNvZGUubV9zY29wZSwgdmFsdWVSZWdzKTsKKworICAgIEp1bXAgaXNXaXRoU2Nv
cGUgPSBicmFuY2hJZk5vdFR5cGUodmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgSlNUeXBlUmFuZ2Ug
eyBGaXJzdEpTU2NvcGVUeXBlLCBMYXN0SlNTY29wZVR5cGUgfSk7CisgICAgbW92ZVRydXN0ZWRW
YWx1ZShqc1VuZGVmaW5lZCgpLCB2YWx1ZVJlZ3MpOworICAgIGlzV2l0aFNjb3BlLmxpbmsodGhp
cyk7CisKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZHN0LCB2YWx1ZVJl
Z3MpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BUb1RoaXM+KCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBKU1ZhbHVlUmVn
cyB2YWx1ZVJlZ3MocmVnVDApOworI2Vsc2UKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MocmVn
VDEsIHJlZ1QwKTsKKyNlbmRpZgorICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUu
bV9zcmNEc3QsIHZhbHVlUmVncyk7CisKKyAgICBKdW1wIG5vdENlbGwgPSBicmFuY2hJZk5vdENl
bGwodmFsdWVSZWdzKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdE9iamVjdCh2YWx1ZVJl
Z3MucGF5bG9hZEdQUigpKSk7CisgICAgSnVtcCBkb25lID0ganVtcCgpOworCisgICAgbm90Q2Vs
bC5saW5rKHRoaXMpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90T3RoZXIodmFsdWVSZWdz
LCByZWdUMykpOworICAgIHN0b3JlVHJ1c3RlZFZhbHVlKG1fY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKS0+Z2xvYmFsVGhpcygpLCBhZGRyZXNzRm9yKGJ5dGVjb2RlLm1fc3JjRHN0KSk7CisKKyAg
ICBkb25lLmxpbmsodGhpcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMjc4MTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk1Niw3ICsyOTU2LDggQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEZybwogICAgIC8vIE1vZHVsZVZhciBp
cyBhbHdheXMgY29udmVydGVkIHRvIENsb3N1cmVWYXIgZm9yIGdldF9mcm9tX3Njb3BlLgogICAg
IEFTU0VSVChnZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkgIT0gTW9kdWxlVmFyKTsKIAotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2NvcGUtPmdldFBy
b3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5
U2xvdCYgc2xvdCkgLT4gSlNWYWx1ZSB7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYXNQdWJsaWNU
aGlzVmFsdWUoc2NvcGUpLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNjb3Bl
LT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCwgWyZdIChib29sIGZv
dW5kLCBQcm9wZXJ0eVNsb3QmKSAtPiBKU1ZhbHVlIHsKICAgICAgICAgaWYgKCFmb3VuZCkgewog
ICAgICAgICAgICAgaWYgKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91
bmQpCiAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGdsb2JhbE9iamVjdCwgaWRlbnQpKTsK
QEAgLTMwMjcsNyArMzAyOCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Q
dXRUb1MKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KHNjb3BlLCBnZXRQdXRJbmZvLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSwgUHV0UHJvcGVydHlTbG90
OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihnZXRQdXRJbmZvLmluaXRpYWxpemF0
aW9uTW9kZSgpKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYXNQdWJsaWNUaGlzVmFsdWUo
c2NvcGUpLCBnZXRQdXRJbmZvLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSwgUHV0UHJvcGVydHlTbG90
OjpVbmtub3duQ29udGV4dCwgaXNJbml0aWFsaXphdGlvbihnZXRQdXRJbmZvLmluaXRpYWxpemF0
aW9uTW9kZSgpKSk7CiAgICAgc2NvcGUtPm1ldGhvZFRhYmxlKHZtKS0+cHV0KHNjb3BlLCBnbG9i
YWxPYmplY3QsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB2b2lkKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyNzgxOTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTM4LDcgKzIxMzgsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2Zy
b21fCiAgICAgLy8gTW9kdWxlVmFyIGlzIGFsd2F5cyBjb252ZXJ0ZWQgdG8gQ2xvc3VyZVZhciBm
b3IgZ2V0X2Zyb21fc2NvcGUuCiAgICAgQVNTRVJUKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNv
bHZlVHlwZSgpICE9IE1vZHVsZVZhcik7CiAKLSAgICBMTElOVF9SRVRVUk4oc2NvcGUtPmdldFBy
b3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5
U2xvdCYgc2xvdCkgLT4gSlNWYWx1ZSB7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYXNQdWJsaWNU
aGlzVmFsdWUoc2NvcGUpLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsK
KyAgICBMTElOVF9SRVRVUk4oc2NvcGUtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlk
ZW50LCBzbG90LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xvdCYpIC0+IEpTVmFsdWUgewog
ICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAobWV0YWRhdGEubV9nZXRQdXRJ
bmZvLnJlc29sdmVNb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kKQogICAgICAgICAgICAgICAgIHJl
dHVybiB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVm
aW5lZFZhcmlhYmxlRXJyb3IoZ2xvYmFsT2JqZWN0LCBpZGVudCkpOwpAQCAtMjE5Nyw3ICsyMTk4
LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19zYwogICAgIGlmICht
ZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQgJiYg
IWhhc1Byb3BlcnR5KQogICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVVbmRlZmluZWRWYXJpYWJs
ZUVycm9yKGdsb2JhbE9iamVjdCwgaWRlbnQpKTsKIAotICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KHNjb3BlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uZWNtYU1vZGUoKS5pc1N0cmljdCgpLCBQdXRQ
cm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKG1ldGFkYXRhLm1f
Z2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpOworICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KGFzUHVibGljVGhpc1ZhbHVlKHNjb3BlKSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmVjbWFN
b2RlKCkuaXNTdHJpY3QoKSwgUHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCwgaXNJbml0
aWFsaXphdGlvbihtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsK
ICAgICBzY29wZS0+bWV0aG9kVGFibGUodm0pLT5wdXQoc2NvcGUsIGdsb2JhbE9iamVjdCwgaWRl
bnQsIHZhbHVlLCBzbG90KTsKICAgICAKICAgICBDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlUHV0
VG9TY29wZUdsb2JhbChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYnl0ZWNvZGUsIHNjb3BlLCBz
bG90LCBpZGVudCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMjc4MTkxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTgxOCwxNCArODE4LDI2IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9w
X2dldF9zY29wZSwgT3BHZXRTY28KIGVuZCkKIAogCi1sbGludE9wV2l0aE1ldGFkYXRhKG9wX3Rv
X3RoaXMsIE9wVG9UaGlzLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJl
dHVybikKK2xsaW50T3Aob3BfdG9fdGhpcywgT3BUb1RoaXMsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoKQogICAgIGdldChtX3NyY0RzdCwgdDApCi0gICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBDZWxsVGFnLCAub3BUb1RoaXNTbG93CisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BUb1RoaXNOb3RDZWxsCiAgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKLSAgICBiYm5lcSBKU0NlbGw6Om1f
dHlwZVt0MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdwotICAgIG1ldGFkYXRhKHQy
LCB0MykKLSAgICBsb2FkaSBPcFRvVGhpczo6TWV0YWRhdGE6Om1fY2FjaGVkU3RydWN0dXJlSURb
dDJdLCB0MgotICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyLCAub3BUb1Ro
aXNTbG93CisgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wVG9UaGlz
U2xvdworICAgIGRpc3BhdGNoKCkKKworLm9wVG9UaGlzTm90Q2VsbDoKKyAgICBvcmkgMSwgdDEK
KyAgICBiaWVxIHQxLCBOdWxsVGFnLCAub3BUb1RoaXNVbmRlZmluZWRPck51bGwKKyAgICBjYWxs
U2xvd1BhdGgoX3Nsb3dfcGF0aF90b190aGlzKQorICAgIGRpc3BhdGNoKCkKKworLm9wVG9UaGlz
VW5kZWZpbmVkT3JOdWxsOgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRw
IENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDJdLCB0MgorICAgIGxvYWRwIEpTR2xvYmFsT2Jq
ZWN0OjptX2dsb2JhbFRoaXNbdDJdLCB0MgorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KICAg
ICBkaXNwYXRjaCgpCiAKIC5vcFRvVGhpc1Nsb3c6CkBAIC0yNTU0LDYgKzI1NjYsMTggQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgTwogZW5kKQogCiAKK2xsaW50T3BX
aXRoUmV0dXJuKG9wX2dldF90aGlzX3ZhbHVlX2Zvcl9jYWxsLCBPcEdldFRoaXNWYWx1ZUZvckNh
bGwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCisgICAgZ2V0KG1fc2NvcGUs
IHQwKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmJiIEpT
Q2VsbDo6bV90eXBlW3QwXSwgRmlyc3RKU1Njb3BlVHlwZSwgLmlzV2l0aFNjb3BlCisgICAgYmJh
IEpTQ2VsbDo6bV90eXBlW3QwXSwgTGFzdEpTU2NvcGVUeXBlLCAuaXNXaXRoU2NvcGUKKyAgICBy
ZXR1cm4oVW5kZWZpbmVkVGFnLCAwKQorCisuaXNXaXRoU2NvcGU6CisgICAgcmV0dXJuKENlbGxU
YWcsIHQwKQorZW5kKQorCisKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3RvX3Njb3BlLCBP
cFB1dFRvU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJu
KQogICAgIG1hY3JvIHB1dFByb3BlcnR5KCkKICAgICAgICAgZ2V0KG1fdmFsdWUsIHQxKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20JKHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC04MjgsMTUg
KzgyOCwyNCBAQCBsbGludE9wV2l0aFJldHVybihvcF9nZXRfc2NvcGUsIE9wR2V0U2NvCiBlbmQp
CiAKIAotbGxpbnRPcFdpdGhNZXRhZGF0YShvcF90b190aGlzLCBPcFRvVGhpcywgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCitsbGludE9wKG9wX3RvX3RoaXMs
IE9wVG9UaGlzLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKICAgICBnZXQobV9zcmNEc3Qs
IHQwKQotICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKLSAgICBidHFueiB0MCwgbm90Q2VsbE1h
c2ssIC5vcFRvVGhpc1Nsb3cKLSAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEZpbmFsT2Jq
ZWN0VHlwZSwgLm9wVG9UaGlzU2xvdwotICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0
MF0sIHQxCi0gICAgbWV0YWRhdGEodDIsIHQzKQotICAgIGxvYWRpIE9wVG9UaGlzOjpNZXRhZGF0
YTo6bV9jYWNoZWRTdHJ1Y3R1cmVJRFt0Ml0sIHQyCi0gICAgYmluZXEgdDEsIHQyLCAub3BUb1Ro
aXNTbG93CisgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MQorICAgIGJ0cW56IHQxLCBub3RDZWxs
TWFzaywgLm9wVG9UaGlzTm90Q2VsbAorICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MV0sIE9iamVj
dFR5cGUsIC5vcFRvVGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgpCisKKy5vcFRvVGhpc05vdENlbGw6
CisgICAgYW5kcSB+VGFnVW5kZWZpbmVkLCB0MQorICAgIGJxZXEgdDEsIFZhbHVlTnVsbCwgLm9w
VG9UaGlzVW5kZWZpbmVkT3JOdWxsCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdG9fdGhp
cykKKyAgICBkaXNwYXRjaCgpCisKKy5vcFRvVGhpc1VuZGVmaW5lZE9yTnVsbDoKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0
W3QxXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9nbG9iYWxUaGlzW3QxXSwgdDEK
KyAgICBzdG9yZXEgdDEsIFtjZnIsIHQwLCA4XQogICAgIGRpc3BhdGNoKCkKIAogLm9wVG9UaGlz
U2xvdzoKQEAgLTI2ODQsNiArMjY5MywxNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9m
cm9tX3Njb3BlLCBPCiBlbmQpCiAKIAorbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3RoaXNfdmFs
dWVfZm9yX2NhbGwsIE9wR2V0VGhpc1ZhbHVlRm9yQ2FsbCwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIHJldHVybikKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3Njb3BlLCB0MCkKKyAgICBi
YmIgSlNDZWxsOjptX3R5cGVbdDBdLCBGaXJzdEpTU2NvcGVUeXBlLCAuaXNXaXRoU2NvcGUKKyAg
ICBiYmEgSlNDZWxsOjptX3R5cGVbdDBdLCBMYXN0SlNTY29wZVR5cGUsIC5pc1dpdGhTY29wZQor
ICAgIHJldHVybihWYWx1ZVVuZGVmaW5lZCkKKworLmlzV2l0aFNjb3BlOgorICAgIHJldHVybih0
MCkKK2VuZCkKKworCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF90b19zY29wZSwgT3BQdXRU
b1Njb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAg
ICBtYWNybyBwdXRQcm9wZXJ0eSgpCiAgICAgICAgIGdldChtX3ZhbHVlLCB0MSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20JKHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtNTQxLDYgKzU0MSw4IEBAIGNv
bnN0IEZpbmFsT2JqZWN0VHlwZSA9IGNvbnN0ZXhwciBGaW5hbE8KIGNvbnN0IEpTRnVuY3Rpb25U
eXBlID0gY29uc3RleHByIEpTRnVuY3Rpb25UeXBlCiBjb25zdCBBcnJheVR5cGUgPSBjb25zdGV4
cHIgQXJyYXlUeXBlCiBjb25zdCBEZXJpdmVkQXJyYXlUeXBlID0gY29uc3RleHByIERlcml2ZWRB
cnJheVR5cGUKK2NvbnN0IEZpcnN0SlNTY29wZVR5cGUgPSBjb25zdGV4cHIgRmlyc3RKU1Njb3Bl
VHlwZQorY29uc3QgTGFzdEpTU2NvcGVUeXBlID0gY29uc3RleHByIExhc3RKU1Njb3BlVHlwZQog
Y29uc3QgUHJveHlPYmplY3RUeXBlID0gY29uc3RleHByIFByb3h5T2JqZWN0VHlwZQogY29uc3Qg
SGVhcEJpZ0ludFR5cGUgPSBjb25zdGV4cHIgSGVhcEJpZ0ludFR5cGUKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNp
b24gMjc4MTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTEsNyArNTkxLDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jVAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwogCiAgICAgLy8gMS4gTGV0IGFycmF5IGJlIHRoZSByZXN1bHQgb2Yg
Y2FsbGluZyBUb09iamVjdCBvbiB0aGUgdGhpcyB2YWx1ZS4KICAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwpAQCAtNjY5LDkgKzY2OSw4
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1QKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwogCi0gICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBK
U09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICB1aW50NjRfdCBsZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4odG9MZW5n
dGgoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC03NjQsNyArNzYzLDcgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jSgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIDEuIExldCBPIGJlID8gVG9PYmplY3QodGhpcyB2YWx1
ZSkuCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
VGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhj
ZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkp
CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwpAQCAtODIwLDcgKzgxOSw3IEBAIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBjcmVhdGVBcnJheUl0ZXJhdG8KICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRv
VGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhj
ZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTShzY29wZSk7CiAgICAg
aWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKQEAgLTg0OSw3ICs4NDgsNyBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNQCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFs
T2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKIAogICAgIGlmIChpc0pTQXJyYXkodGhpc1ZhbHVlKSkKICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYXNBcnJheSh0
aGlzVmFsdWUpLT5wb3AoZ2xvYmFsT2JqZWN0KSkpOwpAQCAtODg3LDcgKzg4Niw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1AKIHsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMo
Z2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKIAogICAgIGlmIChMSUtFTFkoaXNKU0FycmF5KHRo
aXNWYWx1ZSkgJiYgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPT0gMSkpIHsKICAgICAgICAg
SlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHRoaXNWYWx1ZSk7CkBAIC05MjMsNyArOTIyLDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jUgogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxP
YmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5l
eGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0
KSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xMDI1LDcgKzEwMjQsNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNTCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCku
dG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxP
YmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50
b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNl
cHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAg
ICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xMDUyLDcgKzEwNTEsNyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNTCiAgICAgLy8gaHR0cHM6Ly90YzM5Lmdp
dGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnNsaWNlCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9U
aGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmpl
Y3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09i
amVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRp
b24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqKSkKICAgICAgICAg
cmV0dXJuIHsgfTsKQEAgLTExMTYsNyArMTExNSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihhcnJheVByb3RvRnVuY1MKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRo
aXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFN
b2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhp
c09iaiA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAg
ICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmopOwogICAg
IGlmIChVTkxJS0VMWSghdGhpc09iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgp
OwpAQCAtMTIyMiw3ICsxMjIxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJv
dG9GdW5jVQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAv
LyAxNS40LjQuMTMKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmogPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3Bl
LmV4Y2VwdGlvbigpID09ICF0aGlzT2JqKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmopKQog
ICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKQEAgLTEzNTcsNyArMTM1Niw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY0kKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxNS40LjQuMTQKLSAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxP
YmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhp
c09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJu
IHsgfTsKQEAgLTEzOTcsNyArMTM5Niw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJh
eVByb3RvRnVuY0wKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICAvLyAxNS40LjQuMTUKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09i
amVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NF
UlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZ
KCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHsgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCShyZXZpc2lvbiAyNzgxOTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNzEs
OSArNzEsNiBAQCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIHVzaW5nIERvUHV0UHJvcGVydHlT
ZWN1cml0eUNoZWNrRnVuY3Rpb25QdHIgPSB2b2lkICgqKShKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBEb1B1dFByb3BlcnR5
U2VjdXJpdHlDaGVja0Z1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShkb1B1dFByb3BlcnR5
U2VjdXJpdHlDaGVjayk7CiAKLSAgICB1c2luZyBUb1RoaXNGdW5jdGlvblB0ciA9IEpTVmFsdWUg
KCopKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUpOwotICAgIFRvVGhpc0Z1bmN0
aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWSh0b1RoaXMpOwotCiAgICAgdXNpbmcgR2V0T3duUHJv
cGVydHlOYW1lc0Z1bmN0aW9uUHRyID0gdm9pZCAoKikoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZUFycmF5JiwgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSk7CiAgICAgR2V0
T3duUHJvcGVydHlOYW1lc0Z1bmN0aW9uUHRyIE1FVEhPRF9UQUJMRV9FTlRSWShnZXRPd25Qcm9w
ZXJ0eU5hbWVzKTsKICAgICBHZXRPd25Qcm9wZXJ0eU5hbWVzRnVuY3Rpb25QdHIgTUVUSE9EX1RB
QkxFX0VOVFJZKGdldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzKTsKQEAgLTE1Niw3ICsxNTMsNiBA
QCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRPd25Qcm9wZXJ0
eVNsb3QsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCwg
XAogICAgICAgICAmQ2xhc3NOYW1lOjpkb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjaywgXAotICAg
ICAgICAmQ2xhc3NOYW1lOjp0b1RoaXMsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0T3duUHJv
cGVydHlOYW1lcywgXAogICAgICAgICAmQ2xhc3NOYW1lOjpnZXRPd25TcGVjaWFsUHJvcGVydHlO
YW1lcywgXAogICAgICAgICAmQ2xhc3NOYW1lOjpjdXN0b21IYXNJbnN0YW5jZSwgXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CShyZXZpc2lvbiAyNzgxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDYsMjggKzM0Niw4IEBAIEpTQ19E
RUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfdG8KIHsKICAgICBCRUdJTigpOwogICAg
IGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BUb1RoaXM+KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEg
PSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOwogICAgIEpTVmFsdWUgdjEgPSBHRVQoYnl0
ZWNvZGUubV9zcmNEc3QpLmpzVmFsdWUoKTsKLSAgICBpZiAodjEuaXNDZWxsKCkpIHsKLSAgICAg
ICAgU3RydWN0dXJlSUQgbXlTdHJ1Y3R1cmVJRCA9IHYxLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgp
OwotICAgICAgICBTdHJ1Y3R1cmVJRCBvdGhlclN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9jYWNo
ZWRTdHJ1Y3R1cmVJRDsKLSAgICAgICAgaWYgKG15U3RydWN0dXJlSUQgIT0gb3RoZXJTdHJ1Y3R1
cmVJRCkgewotICAgICAgICAgICAgaWYgKG90aGVyU3RydWN0dXJlSUQpCi0gICAgICAgICAgICAg
ICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMgPSBUb1RoaXNDb25mbGljdGVkOwotICAgICAgICAg
ICAgbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCA9IG15U3RydWN0dXJlSUQ7Ci0gICAgICAg
ICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2ssIHZtLmdldFN0cnVjdHVyZShteVN0
cnVjdHVyZUlEKSk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBtZXRhZGF0YS5t
X3RvVGhpc1N0YXR1cyA9IFRvVGhpc0NvbmZsaWN0ZWQ7Ci0gICAgICAgIG1ldGFkYXRhLm1fY2Fj
aGVkU3RydWN0dXJlSUQgPSAwOwotICAgIH0KLSAgICAvLyBOb3RlOiBXZSBvbmx5IG5lZWQgdG8g
ZG8gdGhpcyB2YWx1ZSBwcm9maWxpbmcgaGVyZSBvbiB0aGUgc2xvdyBwYXRoLiBUaGUgZmFzdCBw
YXRoCi0gICAgLy8ganVzdCByZXR1cm5zIHRoZSBpbnB1dCB0byB0b190aGlzIGlmIHRoZSBzdHJ1
Y3R1cmUgY2hlY2sgc3VjY2VlZHMuIElmIHRoZSBzdHJ1Y3R1cmUKLSAgICAvLyBjaGVjayBzdWNj
ZWVkcywgZG9pbmcgdmFsdWUgcHJvZmlsaW5nIGhlcmUgaXMgZXF1aXZhbGVudCB0byBkb2luZyBp
dCB3aXRoIGEgcG90ZW50aWFsbHkKLSAgICAvLyBkaWZmZXJlbnQgb2JqZWN0IHRoYXQgc3RpbGwg
aGFzIHRoZSBzYW1lIHN0cnVjdHVyZSBvbiB0aGUgZmFzdCBwYXRoIHNpbmNlIGl0J2xsIHByb2R1
Y2UKLSAgICAvLyB0aGUgc2FtZSBTcGVjdWxhdGVkVHlwZS4gVGhlcmVmb3JlLCB3ZSBkb24ndCBu
ZWVkIHRvIHdvcnJ5IGFib3V0IHZhbHVlIHByb2ZpbGluZyBvbiB0aGUKLSAgICAvLyBmYXN0IHBh
dGguCi0gICAgYXV0byB2YWx1ZSA9IHYxLnRvVGhpcyhnbG9iYWxPYmplY3QsIGJ5dGVjb2RlLm1f
ZWNtYU1vZGUpOworICAgIEpTT2JqZWN0KiB2YWx1ZSA9IHYxLnRvU2xvcHB5TW9kZVRoaXMoZ2xv
YmFsT2JqZWN0KTsKICAgICBSRVRVUk5fV0lUSF9QUk9GSUxJTkdfQ1VTVE9NKGJ5dGVjb2RlLm1f
c3JjRHN0LCB2YWx1ZSwgUFJPRklMRV9WQUxVRSh2YWx1ZSkpOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAkocmV2aXNpb24gMjc4MTkx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzMSw5ICsxMzEsMTMgQEAgSlNWYWx1ZSBldmFsdWF0ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsTwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21TdHJpbmdUYWJsZSgpID09
IFRocmVhZDo6Y3VycmVudCgpLmF0b21TdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VS
VCghdm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFkKCkpOwogCisgICAgSlNPYmplY3Qq
IHRoaXNPYmogPSBudWxscHRyOwogICAgIGlmICghdGhpc1ZhbHVlIHx8IHRoaXNWYWx1ZS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICB0aGlzVmFsdWUgPSBnbG9iYWxPYmplY3Q7Ci0gICAg
SlNPYmplY3QqIHRoaXNPYmogPSBqc0Nhc3Q8SlNPYmplY3QqPih0aGlzVmFsdWUudG9UaGlzKGds
b2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSk7CisgICAgICAgIHRoaXNPYmogPSBnbG9i
YWxPYmplY3QtPmdsb2JhbFRoaXMoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfV0lUSF9NRVNTQUdFKHRoaXNWYWx1ZS5pc09iamVjdCgpLCAidGhpc1ZhbHVlIHNob3VsZCBi
ZSB1bmRlZmluZWQsIG51bGwsIG9yIGFuIG9iamVjdCIpOworICAgICAgICB0aGlzT2JqID0gYXNP
YmplY3QodGhpc1ZhbHVlKTsKKyAgICB9CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB2bS5pbnRlcnBy
ZXRlci0+ZXhlY3V0ZVByb2dyYW0oc291cmNlLCBnbG9iYWxPYmplY3QsIHRoaXNPYmopOwogCiAg
ICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKSB7CkBAIC0xNjEsNyArMTY1LDcgQEAgSlNWYWx1ZSBl
dmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihKU0dsbwogICAgICAgICBnbG9iYWxPYmplY3QtPnNl
dEdsb2JhbFNjb3BlRXh0ZW5zaW9uKEpTV2l0aFNjb3BlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgaWdub3JlZFByZXZpb3VzU2NvcGUsIHNjb3BlRXh0ZW5zaW9uT2JqZWN0KSk7CiAgICAgfQog
Ci0gICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IEpTQzo6ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LCBz
b3VyY2UsIGdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIEpTVmFsdWUgcmV0
dXJuVmFsdWUgPSBKU0M6OmV2YWx1YXRlKGdsb2JhbE9iamVjdCwgc291cmNlLCBnbG9iYWxPYmpl
Y3QtPmdsb2JhbFRoaXMoKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogCiAgICAgaWYgKHNjb3BlRXh0
ZW5zaW9uT2JqZWN0KQogICAgICAgICBnbG9iYWxPYmplY3QtPmNsZWFyR2xvYmFsU2NvcGVFeHRl
bnNpb24oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQ
cm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNzgxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUyLDcgKzM1Miw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRlUHJvdG9GdW5jVG8KIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUo
KS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5p
c09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRGF0ZS5wcm90b3R5cGVbU3ltYm9sLnRvUHJpbWl0aXZlXSBleHBlY3RlZCB8dGhp
c3wgdG8gYmUgYW4gb2JqZWN0LiIpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTT2JqZWN0Kj4odGhpc1ZhbHVlKTsKQEAgLTg2Niw4ICs4NjYsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oZGF0ZVByb3RvRnVuY0dlCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7Ci0gICAgYXV0byogdGhp
c0RhdGVPYmogPSBqc0R5bmFtaWNDYXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwor
ICAgIGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwog
CkBAIC04ODMsOCArODgyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGRhdGVQcm90b0Z1
bmNUbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3Qo
KSk7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmpl
Y3QpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvT2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICBKU1ZhbHVlIHRpbWVWYWx1ZSA9IG9iamVjdC0+dG9QcmltaXRp
dmUoZ2xvYmFsT2JqZWN0LCBQcmVmZXJOdW1iZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc4MTkxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihlcnJv
clByb3RvRnVuY1QKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICAvLyAxLiBMZXQgTyBiZSB0aGUgdGhpcyB2YWx1ZS4KLSAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6
OnN0cmljdCgpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCk7CiAKICAgICAvLyAyLiBJZiBUeXBlKE8pIGlzIG5vdCBPYmplY3QsIHRocm93IGEgVHlwZUVy
cm9yIGV4Y2VwdGlvbi4KICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCShyZXZpc2lvbiAyNzgxOTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNDZWxsOwogICAg
IHVzaW5nIERpZ2l0ID0gVUNQVVJlZ2lzdGVyOwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJ
bW1vcnRhbCB8IE92ZXJyaWRlc1RvVGhpczsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9y
dGFsOwogICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRCaWdJbnQ7CiAKICAgICBERUNMQVJFX1ZJU0lU
X0NISUxEUkVOOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAJKHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsMjYgKzE2NCw2IEBAIEpT
T2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlKEpTR2wKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotSlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkgY29uc3QKLXsKLSAgICBBU1NFUlQoIWlz
Q2VsbCgpKTsKLQotICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQotICAgICAgICByZXR1cm4g
KnRoaXM7Ci0KLSAgICBpZiAoaXNJbnQzMigpIHx8IGlzRG91YmxlKCkpCi0gICAgICAgIHJldHVy
biBjb25zdHJ1Y3ROdW1iZXIoZ2xvYmFsT2JqZWN0LCBhc1ZhbHVlKCkpOwotICAgIGlmIChpc1Ry
dWUoKSB8fCBpc0ZhbHNlKCkpCi0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RCb29sZWFuRnJvbUlt
bWVkaWF0ZUJvb2xlYW4oZ2xvYmFsT2JqZWN0LCBhc1ZhbHVlKCkpOwotI2lmIFVTRShCSUdJTlQz
MikKLSAgICBpZiAoaXNCaWdJbnQzMigpKQotICAgICAgICByZXR1cm4gQmlnSW50T2JqZWN0Ojpj
cmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsICp0aGlzKTsKLSNlbmRpZgot
Ci0gICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOwotICAgIHJldHVybiBnbG9iYWxPYmpl
Y3QtPmdsb2JhbFRoaXMoKTsKLX0KLQogSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90
b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5oCShyZXZpc2lvbiAyNzgxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzMiw3ICszMzIsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBwdXRCeUluZGV4KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKIAogICAgIEpTVmFsdWUg
Z2V0UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7Ci0gICAgSlNWYWx1ZSB0b1RoaXMo
SlNHbG9iYWxPYmplY3QqLCBFQ01BTW9kZSkgY29uc3Q7CisgICAgSlNPYmplY3QqIHRvU2xvcHB5
TW9kZVRoaXMoSlNHbG9iYWxPYmplY3QqKSBjb25zdDsKIAogICAgIHN0YXRpYyBib29sIGVxdWFs
KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2Mik7CiAgICAgc3RhdGljIGJv
b2wgZXF1YWxTbG93Q2FzZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIp
OwpAQCAtNTIxLDcgKzUyMSw2IEBAIHByaXZhdGU6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNT
dHJpbmcqIHRvU3RyaW5nU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqLCBib29sIHJldHVybkVtcHR5
U3RyaW5nT25FcnJvcikgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgV1RGOjpTdHJpbmcg
dG9XVEZTdHJpbmdTbG93Q2FzZShKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgIEpTX0VYUE9S
VF9QUklWQVRFIEpTT2JqZWN0KiB0b09iamVjdFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KikgY29u
c3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0b1RoaXNTbG93Q2FzZShKU0dsb2Jh
bE9iamVjdCosIEVDTUFNb2RlKSBjb25zdDsKIAogICAgIEVuY29kZWRWYWx1ZURlc2NyaXB0b3Ig
dTsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgJKHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyOSw5ICs5
MjksOSBAQCBpbmxpbmUgY29uc3QgQ2xhc3NJbmZvKiBKU1ZhbHVlOjpjbGFzc0luCiAgICAgcmV0
dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPmNsYXNzSW5mbyh2bSkgOiBudWxscHRyOwogfQogCi1p
bmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRUNNQU1vZGUgZWNtYU1vZGUpIGNvbnN0CitpbmxpbmUgSlNPYmplY3QqIEpTVmFsdWU6OnRv
U2xvcHB5TW9kZVRoaXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+bWV0aG9kVGFibGUoZ2V0Vk0oZ2xvYmFsT2Jq
ZWN0KSktPnRvVGhpcyhhc0NlbGwoKSwgZ2xvYmFsT2JqZWN0LCBlY21hTW9kZSkgOiB0b1RoaXNT
bG93Q2FzZShnbG9iYWxPYmplY3QsIGVjbWFNb2RlKTsKKyAgICByZXR1cm4gaXNVbmRlZmluZWRP
ck51bGwoKSA/IGdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpIDogdG9PYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKIH0KIAogQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6OmdldChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAyNzgx
OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDIsMTMgKzE0Miw2IEBAIGJvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoSlNDZWwKICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZ2xvYmFsT2Jq
ZWN0LT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgaWRlbnRpZmllcik7CiB9CiAKLUpTVmFsdWUgSlNDZWxsOjp0b1RoaXMoSlNDZWxsKiBjZWxs
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKLXsKLSAg
ICBpZiAoZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgcmV0dXJuIGNlbGw7Ci0gICAgcmV0
dXJuIGNlbGwtPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7Ci19Ci0KIEpTVmFsdWUgSlNDZWxsOjp0
b1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcmVmZXJyZWRQcmltaXRp
dmVUeXBlIHByZWZlcnJlZFR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKGlzU3RyaW5nKCkpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMjc4MTkxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE4NSw4ICsxODUsNiBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUpOwogICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqLCBKU0ds
b2JhbE9iamVjdCosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAKLSAgICBzdGF0aWMgSlNWYWx1
ZSB0b1RoaXMoSlNDZWxsKiwgSlNHbG9iYWxPYmplY3QqLCBFQ01BTW9kZSk7Ci0KICAgICBzdGF0
aWMgYm9vbCBjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoY29uc3QgU3RydWN0dXJlJik7CiAgICAg
SlNWYWx1ZSBmYXN0R2V0T3duUHJvcGVydHkoVk0mLCBTdHJ1Y3R1cmUmLCBQcm9wZXJ0eU5hbWUp
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgJKHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMTYsOSArMTIxNiwxNCBAQCBp
bmxpbmUgSlNBcnJheSogY29uc3RydWN0QXJyYXlOZWdhdGl2ZUluCiAgICAgcmV0dXJuIEFycmF5
QWxsb2NhdGlvblByb2ZpbGU6OnVwZGF0ZUxhc3RBbGxvY2F0aW9uRm9yKHByb2ZpbGUsIGNvbnN0
cnVjdEFycmF5TmVnYXRpdmVJbmRleGVkKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB2YWx1ZXMs
IGxlbmd0aCkpOwogfQogCi1pbmxpbmUgSlNPYmplY3QqIEpTU2NvcGU6Omdsb2JhbFRoaXMoKQot
eyAKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0KCktPmdsb2JhbFRoaXMoKTsKK0FMV0FZU19JTkxJ
TkUgSlNPYmplY3QqIGFzUHVibGljVGhpc1ZhbHVlKEpTT2JqZWN0KiBvYmplY3QpCit7CisgICAg
cmV0dXJuIG9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSA/IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KG9iamVjdCktPmdsb2JhbFRoaXMoKSA6IG9iamVjdDsKK30KKworQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGFzUHVibGljVGhpc1ZhbHVlKEpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVl
LmlzT2JqZWN0KCkgPyBhc1B1YmxpY1RoaXNWYWx1ZShhc09iamVjdCh2YWx1ZSkpIDogdmFsdWU7
CiB9CiAKIGlubGluZSBKU09iamVjdCogSlNHbG9iYWxPYmplY3Q6Omdsb2JhbFRoaXMoKSBjb25z
dApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMjc4MTkxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02OTIsOCArNjkyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGdsb2Jh
bEZ1bmNNYWtlVAogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY1Byb3RvR2V0
dGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQogewotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1Ro
aXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhpc1ZhbHVlLmdldFByb3RvdHlwZShnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkuZ2V0UHJvdG90eXBlKGds
b2JhbE9iamVjdCkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZ2xvYmFsRnVuY1By
b3RvU2V0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQpAQCAtNzAxLDcgKzcwMCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihnbG9i
YWxGdW5jUHJvdG8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpz
dHJpY3QoKSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgT2JqZWN0UHJvdG9DYWxsZWRP
bk51bGxPclVuZGVmaW5lZEVycm9yKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMjc4MTkxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODAzLDcgKzE4
MDMsNyBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjCiAgICAgICAg
IHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2hvdWxkVGhyb3dJZkNhbnRT
ZXQsICJDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdCJf
cyk7CiAgICAgfQogCi0gICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGds
b2JhbE9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSA9PSB0aGlzKTsKKyAgICBBU1NFUlQoIWlu
aGVyaXRzPEpTU2NvcGU+KHZtKSk7CiAKICAgICBpZiAodGhpcy0+Z2V0UHJvdG90eXBlRGlyZWN0
KHZtKSA9PSBwcm90b3R5cGUpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjQ2MiwxMSArMjQ2
Miw2IEBAIEpTU3RyaW5nKiBKU09iamVjdDo6dG9TdHJpbmcoSlNHbG9iYWxPYmoKICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIHByaW1pdGl2ZS50b1N0cmluZyhnbG9iYWxPYmplY3QpKTsK
IH0KIAotSlNWYWx1ZSBKU09iamVjdDo6dG9UaGlzKEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqLCBFQ01BTW9kZSkKLXsKLSAgICByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7Ci19
Ci0KIHZvaWQgSlNPYmplY3Q6OnNlYWwoVk0mIHZtKQogewogICAgIGlmIChpc1NlYWxlZCh2bSkp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9u
IDI3ODE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTY4OSw4ICs2ODksNiBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgZG91YmxlIHRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNTdHJpbmcqIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KikgY29uc3Q7CiAK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNWYWx1ZSB0b1RoaXMoSlNDZWxsKiwgSlNH
bG9iYWxPYmplY3QqLCBFQ01BTW9kZSk7Ci0KICAgICAvLyBUaGlzIGdldCBmdW5jdGlvbiBvbmx5
IGxvb2tzIGF0IHRoZSBwcm9wZXJ0eSBtYXAuCiAgICAgSlNWYWx1ZSBnZXREaXJlY3QoVk0mIHZt
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogICAgIHsKQEAgLTc5OSwxMSArNzk3
LDkgQEAgcHVibGljOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgY29u
c3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CiAKLSAgICBib29sIGlz
RW52aXJvbm1lbnQoKSBjb25zdDsKICAgICBib29sIGlzR2xvYmFsT2JqZWN0KCkgY29uc3Q7CiAg
ICAgYm9vbCBpc0pTTGV4aWNhbEVudmlyb25tZW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc0dsb2Jh
bExleGljYWxFbnZpcm9ubWVudCgpIGNvbnN0OwotICAgIGJvb2wgaXNTdHJpY3RFdmFsQWN0aXZh
dGlvbigpIGNvbnN0OwogICAgIGJvb2wgaXNXaXRoU2NvcGUoKSBjb25zdDsKIAogICAgIGJvb2wg
aXNFcnJvckluc3RhbmNlKCkgY29uc3Q7CkBAIC0xMjcyLDE4ICsxMjY4LDYgQEAgaW5saW5lIGJv
b2wgSlNPYmplY3Q6OmlzR2xvYmFsTGV4aWNhbEVudgogICAgIHJldHVybiB0eXBlKCkgPT0gR2xv
YmFsTGV4aWNhbEVudmlyb25tZW50VHlwZTsKIH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6Omlz
U3RyaWN0RXZhbEFjdGl2YXRpb24oKSBjb25zdAotewotICAgIHJldHVybiB0eXBlKCkgPT0gU3Ry
aWN0RXZhbEFjdGl2YXRpb25UeXBlOwotfQotCi1pbmxpbmUgYm9vbCBKU09iamVjdDo6aXNFbnZp
cm9ubWVudCgpIGNvbnN0Ci17Ci0gICAgYm9vbCByZXN1bHQgPSBHbG9iYWxPYmplY3RUeXBlIDw9
IHR5cGUoKSAmJiB0eXBlKCkgPD0gU3RyaWN0RXZhbEFjdGl2YXRpb25UeXBlOwotICAgIEFTU0VS
VCgoaXNHbG9iYWxPYmplY3QoKSB8fCBpc0pTTGV4aWNhbEVudmlyb25tZW50KCkgfHwgaXNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQoKSB8fCBpc1N0cmljdEV2YWxBY3RpdmF0aW9uKCkpID09IHJl
c3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogaW5saW5lIGJvb2wgSlNPYmplY3Q6Omlz
RXJyb3JJbnN0YW5jZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHR5cGUoKSA9PSBFcnJvckluc3Rh
bmNlVHlwZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3Bw
CShyZXZpc2lvbiAyNzgxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Nj
b3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE3LDExICs0MTcsNCBAQCBTeW1ib2xUYWJsZSog
SlNTY29wZTo6c3ltYm9sVGFibGUoVk0mIHZtCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUpT
VmFsdWUgSlNTY29wZTo6dG9UaGlzKEpTQ2VsbCosIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlIGVjbWFNb2RlKQotewotICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQot
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5n
bG9iYWxUaGlzKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAkocmV2aXNpb24gMjc4MTkxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0
MCw3IEBAIHVzaW5nIFREWkVudmlyb25tZW50ID0gSGFzaFNldDxSZWZQdHI8VW4KIGNsYXNzIEpT
U2NvcGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFz
ZSA9IEpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzVG9UaGlzOworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBz
dGF0aWMgdm9pZCBzdWJzcGFjZUZvcihWTSYpCkBAIC03OCwxMiArNzgsOCBAQCBwdWJsaWM6CiAg
ICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCgpOwogICAgIEpTU2NvcGUqIG5leHQoKTsKIAotICAg
IEpTT2JqZWN0KiBnbG9iYWxUaGlzKCk7Ci0KICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUo
Vk0mKTsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU1ZhbHVlIHRvVGhpcyhKU0Nl
bGwqLCBKU0dsb2JhbE9iamVjdCosIEVDTUFNb2RlKTsKLQogcHJvdGVjdGVkOgogICAgIEpTU2Nv
cGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiBuZXh0KTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkocmV2aXNpb24gMjc4MTkxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MTAsMTMgKzQxMCw2IEBAIEpTT2JqZWN0KiBKU1N0cmluZzo6dG9PYmplY3QoSlNHbG9iYWxP
YmoKICAgICByZXR1cm4gU3RyaW5nT2JqZWN0OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBn
bG9iYWxPYmplY3QsIGNvbnN0X2Nhc3Q8SlNTdHJpbmcqPih0aGlzKSk7CiB9CiAKLUpTVmFsdWUg
SlNTdHJpbmc6OnRvVGhpcyhKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVDTUFNb2RlIGVjbWFNb2RlKQotewotICAgIGlmIChlY21hTW9kZS5pc1N0cmljdCgpKQot
ICAgICAgICByZXR1cm4gY2VsbDsKLSAgICByZXR1cm4gU3RyaW5nT2JqZWN0OjpjcmVhdGUoZ2xv
YmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIGFzU3RyaW5nKGNlbGwpKTsKLX0KLQogYm9v
bCBKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDI3ODE5
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyOTU2CiAgICAgLy8gRG8gd2UgcmVhbGx5
IG5lZWQgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElz
Tm90WmVybz8KICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMjk1OAotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFpl
cm8gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgT3ZlcnJpZGVzVG9UaGlzOworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwog
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogICAg
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCkBAIC0yMzcs
OCArMjM3LDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogCi0gICAgc3RhdGljIEpTVmFsdWUgdG9UaGlzKEpTQ2VsbCosIEpT
R2xvYmFsT2JqZWN0KiwgRUNNQU1vZGUpOwotCiAgICAgU3RyaW5nVmlldyB1bnNhZmVWaWV3KEpT
R2xvYmFsT2JqZWN0KikgY29uc3Q7CiAKICAgICBmcmllbmQgSlNTdHJpbmcqIGpzU3RyaW5nKFZN
JiwgY29uc3QgU3RyaW5nJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGUuaAkocmV2aXNpb24gMjc4MTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsOCBAQCBlbnVtIEpTVHlwZSA6
IHVpbnQ4X3QgewogICAgIC8vIEVuZCBlbnZpcm9ubWVudCByZWNvcmQgdHlwZXMuCiAgICAgV2l0
aFNjb3BlVHlwZSwKICAgICAvLyBFbmQgSlNTY29wZSB0eXBlcy4KKyAgICBGaXJzdEpTU2NvcGVU
eXBlID0gR2xvYmFsT2JqZWN0VHlwZSwKKyAgICBMYXN0SlNTY29wZVR5cGUgPSBXaXRoU2NvcGVU
eXBlLAogCiAgICAgTW9kdWxlTmFtZXNwYWNlT2JqZWN0VHlwZSwKICAgICBSZWdFeHBPYmplY3RU
eXBlLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAko
cmV2aXNpb24gMjc4MTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
SW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw2IEBAIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgTWFzcXVlcmFkZXNBc1UKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgSW1wbGVt
ZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDEgPDwgMTsKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgT3ZlcnJpZGVzR2V0Q2FsbERhdGEgPSAxIDw8IDI7IC8vIE5lZWQgdGhpcyBmbGFnIGlmIHlv
dSBpbXBsZW1lbnQgW1tDYWxsYWJsZV1dIGludGVyZmFjZSwgd2hpY2ggbWVhbnMgb3ZlcnJpZGlu
ZyBnZXRDYWxsRGF0YS4gVGhlIG9iamVjdCBtYXkgbm90IGJlIGNhbGxhYmxlIHNpbmNlIGdldENh
bGxEYXRhIGNhbiBzYXkgaXQgaXMgbm90IGNhbGxhYmxlLgogc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgPSAxIDw8IDM7Ci1zdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIE92ZXJyaWRlc1RvVGhpcyA9IDEgPDwgNDsgLy8gSWYgdGhpcyBpcyBmYWxz
ZSB0aGVuIHRoaXMgcmV0dXJucyBzb21ldGhpbmcgb3RoZXIgdGhhbiAndGhpcycuIE5vbi1vYmpl
Y3QgY2VsbHMgdGhhdCBhcmUgdmlzaWJsZSB0byBKUyBoYXZlIHRoaXMgc2V0IGFzIGRvIHNvbWUg
ZXhvdGljIG9iamVjdHMuCiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIEhhc1N0YXRpY1Byb3Bl
cnR5VGFibGUgPSAxIDw8IDU7CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFR5cGVJbmZvUGVy
Q2VsbEJpdCA9IDEgPDwgNzsgLy8gVW5saWtlIG90aGVyIGlubGluZSBmbGFncywgdGhpcyB3aWxs
IG9ubHkgYmUgc2V0IG9uIHRoZSBjZWxsIGl0c2VsZiBhbmQgd2lsbCBub3QgYmUgc2V0IG9uIHRo
ZSBTdHJ1Y3R1cmUuCiAKQEAgLTk3LDcgKzk2LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29s
IG92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdChJbmxpbmVUeXBlRmxhZ3MgZmxhZ3MpIHsgcmV0
dXJuIGZsYWdzICYgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90OyB9CiAgICAgc3RhdGljIGJv
b2wgaGFzU3RhdGljUHJvcGVydHlUYWJsZShJbmxpbmVUeXBlRmxhZ3MgZmxhZ3MpIHsgcmV0dXJu
IGZsYWdzICYgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsgfQogICAgIHN0YXRpYyBib29sIHBlckNl
bGxCaXQoSW5saW5lVHlwZUZsYWdzIGZsYWdzKSB7IHJldHVybiBmbGFncyAmIFR5cGVJbmZvUGVy
Q2VsbEJpdDsgfQotICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzKCkgY29uc3QgeyByZXR1cm4gaXNT
ZXRPbkZsYWdzMTxPdmVycmlkZXNUb1RoaXM+KCk7IH0KICAgICBib29sIHN0cnVjdHVyZUlzSW1t
b3J0YWwoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyPFN0cnVjdHVyZUlzSW1tb3J0YWw+
KCk7IH0KICAgICBib29sIG92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXMoKSBjb25zdCB7IHJl
dHVybiBpc1NldE9uRmxhZ3MyPE92ZXJyaWRlc0dldE93blByb3BlcnR5TmFtZXM+KCk7IH0KICAg
ICBib29sIG92ZXJyaWRlc0dldE93blNwZWNpYWxQcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1
cm4gaXNTZXRPbkZsYWdzMjxPdmVycmlkZXNHZXRPd25TcGVjaWFsUHJvcGVydHlOYW1lcz4oKTsg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAyNzgxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBA
IE9iamVjdFByb3RvdHlwZSogT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUKIAogSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuY1ZhbHVlT2YsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2Rl
OjpzdHJpY3QoKSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpOwogICAgIEpTT2JqZWN0KiB2YWx1ZU9iaiA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxP
YmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdmFsdWVPYmopKQogICAgICAgICByZXR1cm4gZW5j
b2RlZEpTVmFsdWUoKTsKQEAgLTkzLDggKzkzLDcgQEAgYm9vbCBvYmplY3RQcm90b3R5cGVIYXNP
d25Qcm9wZXJ0eShKU0dsbwogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBiYXNlLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSk7Ci0g
ICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGJhc2UudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmpl
Y3QpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTEzNSw4ICsxMzQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJv
dG9GdW5jCiAgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVj
dCwgRUNNQU1vZGU6OnN0cmljdCgpKTsKLSAgICBKU09iamVjdCogdGhpc09iaiA9IHRoaXNWYWx1
ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9B
U1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09iaik7CiAgICAgaWYgKFVOTElLRUxZ
KCF0aGlzT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CkBAIC0xNTksNyAr
MTU3LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuYwogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09iamVj
dChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50
aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgSlNWYWx1ZSBnZXQgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpOwpAQCAtMTg2LDcgKzE4NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihvYmplY3RQcm90b0Z1bmMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3Qq
IHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3Qs
IEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAogICAgIEpTVmFsdWUgc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKQEAgLTIxMyw3ICsy
MTEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jCiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1lLT50aGlz
VmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0LCBFQ01BTW9kZTo6c3RyaWN0KCkpLnRvT2JqZWN0
KGdsb2JhbE9iamVjdCk7CisgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwpAQCAtMjQz
LDcgKzI0MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmMKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CkBA
IC0yNzYsNyArMjc0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVu
YwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3Bl
cnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAKLSAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKS50b09i
amVjdChnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwpA
QCAtMjk3LDcgKzI5NSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1
bmMKICAgICAvLyAyLiBJbnZva2UoViwgInRvU3RyaW5nIikKIAogICAgIC8vIExldCBPIGJlIHRo
ZSByZXN1bHQgb2YgY2FsbGluZyBUb09iamVjdCBwYXNzaW5nIHRoZSB0aGlzIHZhbHVlIGFzIHRo
ZSBhcmd1bWVudC4KLSAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpc1ZhbHVlLnRvVGhpcyhnbG9i
YWxPYmplY3QsIEVDTUFNb2RlOjpzdHJpY3QoKSkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBKU09iamVjdCogb2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAv
LyBMZXQgdG9TdHJpbmcgYmUgdGhlIE8uW1tHZXRdXSgidG9TdHJpbmciLCBWKQpAQCAtMzk2LDgg
KzM5NCw3IEBAIEpTU3RyaW5nKiBvYmplY3RQcm90b3R5cGVUb1N0cmluZyhKU0dsb2IKIAogSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdFByb3RvRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewotICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKS50b1RoaXMoZ2xvYmFsT2JqZWN0
LCBFQ01BTW9kZTo6c3RyaWN0KCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0
UHJvdG90eXBlVG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKG9iamVjdFByb3RvdHlwZVRvU3RyaW5nKGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHJldmlzaW9u
IDI3ODE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDc2LDYgKzQ3Niw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnB1
dChKU0NlbGwqIGNlbGwsIEpTR2wKIGJvb2wgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXhDb21tb24o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0aGlzVmFsdWUsIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9N
RVNTQUdFKCF0aGlzVmFsdWUuaW5oZXJpdHM8SlNTY29wZT4odm0pLCAidGhpc1ZhbHVlIHNob3Vs
ZG4ndCBiZSBKU1Njb3BlIik7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tKHZtLCBwcm9wZXJ0
eU5hbWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKQEAgLTUyNCw3
ICs1MjUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocGVyZm9ybVByb3h5Q2FsCiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodGFyZ2V0KTsK
LSAgICBhcmd1bWVudHMuYXBwZW5kKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkudG9UaGlzKGdsb2Jh
bE9iamVjdCwgRUNNQU1vZGU6OnN0cmljdCgpKSk7CisgICAgYXJndW1lbnRzLmFwcGVuZChjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBhcmd1bWVudHMuYXBwZW5kKGFyZ0FycmF5KTsKICAg
ICBBU1NFUlQoIWFyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCkpOwogICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGwoZ2xvYmFsT2JqZWN0LCBhcHBseU1ldGhv
ZCwgY2FsbERhdGEsIGhhbmRsZXIsIGFyZ3VtZW50cykpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjc4
MTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDcgKzIxMiw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihyZWdFeHBQcm90b0Z1bmMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhnbG9iYWxPYmplY3QsIEVD
TUFNb2RlOjpzdHJpY3QoKSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNw
cAkocmV2aXNpb24gMjc4MTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Bh
cnNlQXJyYXlWYWx1ZU1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMSw3ICsyMDEsNyBAQCBi
b29sIFNwYXJzZUFycmF5RW50cnk6OnB1dChKU0dsb2JhbE9iamVjCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwganNDYXN0PEdldHRl
clNldHRlcio+KEJhc2U6OmdldCgpKS0+Y2FsbFNldHRlcihnbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgdmFsdWUsIHNob3VsZFRocm93KSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBq
c0Nhc3Q8R2V0dGVyU2V0dGVyKj4oQmFzZTo6Z2V0KCkpLT5jYWxsU2V0dGVyKGdsb2JhbE9iamVj
dCwgYXNQdWJsaWNUaGlzVmFsdWUodGhpc1ZhbHVlKSwgdmFsdWUsIHNob3VsZFRocm93KSk7CiB9
CiAKIEpTVmFsdWUgU3BhcnNlQXJyYXlFbnRyeTo6Z2V0Tm9uU3BhcnNlTW9kZSgpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0MSw5ICs4NDEsNiBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgY2hlY2tPYmplY3RDb2VyY2libGUoCiAgICAgaWYgKHRoaXNWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAo
dGhpc1ZhbHVlLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QodGhpc1ZhbHVlKS0+aXNFbnZpcm9ubWVu
dCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmgJKHJldmlzaW9uIDI3ODE5MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgU3ltYm9sIGZpbmFsIDog
cHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgT3ZlcnJpZGVzVG9UaGlzOworICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzgxOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wNS0yNyAgQWxleGV5IFNo
dmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gQWJvbGlzaCB1
c2luZyByZXNvbHZlZCBzY29wZSBhcyB8dGhpc3wgdmFsdWUgd2hlbiBjYWxsaW5nIGZ1bmN0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1Mzk3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJRExPcGVy
YXRpb248SlNET01XaW5kb3c+OjpjYXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50
VGFyZ2V0Q3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpJRExPcGVyYXRpb248SlNFdmVudFRh
cmdldD46OmNhbGwpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisKIDIwMjEtMDUtMjcgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBT
aG93IGNvbnRleHQgbWVudSB3aGVuIGNsaWNraW5nIG9uIGRhdGEgZGV0ZWN0aW9uIHJlc3VsdHMg
aW4gaW1hZ2Ugb3ZlcmxheXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9R
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0JKHJldmlzaW9u
IDI3ODE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk5LDcgKzE5OSw3IEBAIGF1dG8g
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6Omluc3RhbGwKICAgICBhcmdMaXN0LmFwcGVuZCh0
b0pTPElETFNlcXVlbmNlPElETE51bGxhYmxlPElETERPTVN0cmluZz4+PigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgKmdsb2JhbE9iamVjdCwgbV9uYW1lcykpOwogICAgIGFyZ0xpc3QuYXBwZW5kKHRv
SlM8SURMU2VxdWVuY2U8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCAqZ2xvYmFsT2JqZWN0LCBtX3ZhbHVlcykpOwogICAgIEFTU0VSVCghYXJnTGlzdC5o
YXNPdmVyZmxvd2VkKCkpOwotICAgIEpTQzo6SlNWYWx1ZSByZXBsYWNlbWVudCA9IGNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgcmVwbGFjZW1lbnRPYmplY3QsIGNhbGxEYXRhLCBnbG9iYWxPYmpl
Y3QsIGFyZ0xpc3QpOworICAgIEpTQzo6SlNWYWx1ZSByZXBsYWNlbWVudCA9IGNhbGwobGV4aWNh
bEdsb2JhbE9iamVjdCwgcmVwbGFjZW1lbnRPYmplY3QsIGNhbGxEYXRhLCAmZ2xvYmFsT2JqZWN0
LT5wcm94eSgpLCBhcmdMaXN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBjbGVh
ckV4Y2VwdGlvbkFuZFJldHVybkZhbHNlKCkpOwogCiAgICAgLy8gR2V0IHRoZSA8dmlkZW8+IGNy
ZWF0ZWQgdG8gcmVwbGFjZSB0aGUgcGx1Zy1pbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NT3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01PcGVyYXRpb24uaAkocmV2aXNpb24gMjc4MTkxKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01PcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzUs
MjIgKzM1LDEyIEBAIHB1YmxpYzoKICAgICB1c2luZyBPcGVyYXRpb24gPSBKU0M6OkVuY29kZWRK
U1ZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSosIENsYXNzUGFyYW1l
dGVyKTsKICAgICB1c2luZyBTdGF0aWNPcGVyYXRpb24gPSBKU0M6OkVuY29kZWRKU1ZhbHVlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOwogCi0gICAgLy8gRklYTUU6IFJl
bW92ZSB0aGlzIGFmdGVyIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlIGlzIGZpeGVkIG5vdCB0byBw
YXNzIHJlc29sdmVkIHNjb3BlIGFzIHx0aGlzfCB2YWx1ZS4KLSAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1Mzk3Ci0gICAgc3RhdGljIEpTQ2xhc3MqIGNh
c3QoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJh
bWUmIGNhbGxGcmFtZSkKLSAgICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8SlNET01HbG9iYWxPYmplY3QsIEpTQ2xhc3M+KQotICAgICAgICAgICAgcmV0dXJuIGNh
c3RUaGlzVmFsdWU8SlNDbGFzcz4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLnRoaXNW
YWx1ZSgpLnRvVGhpcygmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpFQ01BTW9kZTo6c3RyaWN0
KCkpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIGNhc3RUaGlzVmFsdWU8SlND
bGFzcz4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKLSAgICB9
Ci0KICAgICB0ZW1wbGF0ZTxPcGVyYXRpb24gb3BlcmF0aW9uLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvciBzaG91bGRUaHJvdyA9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdz4KICAgICBz
dGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBjYWxsKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lJiBjYWxsRnJhbWUsIGNvbnN0IGNoYXIqIG9w
ZXJhdGlvbk5hbWUpCiAgICAgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgCi0g
ICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxG
cmFtZSk7CisgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0VGhpc1ZhbHVlPEpTQ2xhc3M+
KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7CiAgICAgICAgIGlm
IGNvbnN0ZXhwciAoc2hvdWxkVGhyb3cgIT0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dCkgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIEpTQ2xhc3M6OmluZm8oKS0+Y2xhc3NOYW1lLCBvcGVyYXRpb25OYW1lKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlz
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NT3BlcmF0
aW9uUmV0dXJuaW5nUHJvbWlzZS5oCShyZXZpc2lvbiAyNzgxOTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpT
VmFsdWUgY2FsbChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OkNhbGxGcmFtZSYgY2FsbEZyYW1lLCBjb25zdCBjaGFyKiBvcGVyYXRpb25OYW1lKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGNhbGxQcm9taXNlRnVuY3Rpb24o
bGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBbJm9wZXJhdGlvbk5hbWVdIChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSYgY2FsbEZy
YW1lLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpIHsKLSAgICAgICAgICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBJRExPcGVyYXRpb248SlNDbGFzcz46OmNhc3QobGV4aWNhbEdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lKTsKKyAgICAgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0VGhp
c1ZhbHVlPEpTQ2xhc3M+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZS50aGlzVmFsdWUo
KSk7CiAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHNob3VsZFRocm93ICE9IENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQpIHsKICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXRo
aXNPYmplY3QpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0UHJvbWlzZVdpdGhU
aGlzVHlwZUVycm9yKHByb21pc2UuZ2V0KCksIEpTQ2xhc3M6OmluZm8oKS0+Y2xhc3NOYW1lLCBv
cGVyYXRpb25OYW1lKTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU0NsYXNzPjo6T3BlcmF0aW9uIG9wZXJhdGlvbiwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3Igc2hvdWxkVGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
UmVqZWN0UHJvbWlzZT4KICAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBjYWxsUmV0dXJu
aW5nT3duUHJvbWlzZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkNhbGxGcmFtZSYgY2FsbEZyYW1lLCBjb25zdCBjaGFyKiBvcGVyYXRpb25OYW1lKQogICAg
IHsKLSAgICAgICAgYXV0byogdGhpc09iamVjdCA9IElETE9wZXJhdGlvbjxKU0NsYXNzPjo6Y2Fz
dChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOworICAgICAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0gY2FzdFRoaXNWYWx1ZTxKU0NsYXNzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUudGhpc1ZhbHVlKCkpOwogICAgICAgICBpZiBjb25zdGV4cHIgKHNob3VsZFRocm93ICE9IENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQpIHsKICAgICAgICAgICAgIGlmIChVTkxJS0VM
WSghdGhpc09iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdFByb21pc2VXaXRo
VGhpc1R5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0NsYXNzOjppbmZvKCktPmNsYXNz
TmFtZSwgb3BlcmF0aW9uTmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0Vycm9ySGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFcnJvckhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNzgxOTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3
ICsxMDMsNyBAQCB2b2lkIEpTRXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVudChTY3JpcHRFCiAgICAg
ICAgIEpTRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb24oJnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIGNhbGxEYXRhKTsKIAogICAgICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0
aW9uOwotICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVk
Q2FsbChnbG9iYWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwganNGdW5jdGlv
biwgY2FsbERhdGEsIGdsb2JhbE9iamVjdCwgYXJncywgZXhjZXB0aW9uKTsKKyAgICAgICAgSlNW
YWx1ZSByZXR1cm5WYWx1ZSA9IEpTRXhlY1N0YXRlOjpwcm9maWxlZENhbGwoZ2xvYmFsT2JqZWN0
LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGpzRnVuY3Rpb24sIGNhbGxEYXRhLCAmZ2xv
YmFsT2JqZWN0LT5wcm94eSgpLCBhcmdzLCBleGNlcHRpb24pOwogCiAgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKCZzY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3Rv
bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJn
ZXRDdXN0b20uaAkocmV2aXNpb24gMjc4MTkxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudFRhcmdldEN1c3RvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBA
IHB1YmxpYzoKICAgICAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICAgICAgYXV0byB0aGlzVmFsdWUgPSBjYWxsRnJhbWUudGhpc1ZhbHVlKCkudG9UaGlz
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkVDTUFNb2RlOjpzdHJpY3QoKSk7CisgICAgICAg
IGF1dG8gdGhpc1ZhbHVlID0gY2FsbEZyYW1lLnRoaXNWYWx1ZSgpOwogICAgICAgICBhdXRvIHRo
aXNPYmplY3QgPSBqc0V2ZW50VGFyZ2V0Q2FzdCh2bSwgdGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkgPyBKU0M6OkpTVmFsdWUoJmxleGljYWxHbG9iYWxPYmplY3QpIDogdGhpc1ZhbHVlKTsK
ICAgICAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIkV2ZW50
VGFyZ2V0Iiwgb3BlcmF0aW9uTmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY2hlZHVsZWRBY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAJKHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1Miw3ICsxNTIsNyBAQCB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShXb3JrZXJHbG9i
CiAKICAgICBpZiAobV9mdW5jdGlvbikgewogICAgICAgICBhdXRvKiBjb250ZXh0V3JhcHBlciA9
IHNjcmlwdENvbnRyb2xsZXItPmdsb2JhbFNjb3BlV3JhcHBlcigpOwotICAgICAgICBleGVjdXRl
RnVuY3Rpb25JbkNvbnRleHQoY29udGV4dFdyYXBwZXIsIGNvbnRleHRXcmFwcGVyLCB3b3JrZXJH
bG9iYWxTY29wZSk7CisgICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dChjb250ZXh0V3Jh
cHBlciwgJmNvbnRleHRXcmFwcGVyLT5wcm94eSgpLCB3b3JrZXJHbG9iYWxTY29wZSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgU2NyaXB0U291cmNlQ29kZSBjb2RlKG1fY29kZSwgVVJMKHdvcmtl
ckdsb2JhbFNjb3BlLnVybCgpKSk7CiAgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmV2YWx1YXRl
KGNvZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC01NDE1
LDcgKzU0MTUsOSBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvCiAg
ICAgICAgICMgMy41LjkuMS4gTGV0IFEgYmUgPyBHZXQoTywgaWQpLgogICAgICAgICBteSAkaWQg
PSAkYXR0cmlidXRlLT5uYW1lOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0
byBpZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPihcIiR7aWR9XCIpLCBzdHJsZW4oXCIke2lkfVwiKSk7XG4iKTsKLSAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gdmFsdWVUb0ZvcndhcmRUbyA9IHRoaXNPYmplY3Qu
Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZCk7XG4iKTsKKworICAgICAgICBteSAkZ2V0UmVj
ZWl2ZXIgPSBJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKSA/ICJ0aGlzT2JqZWN0LnByb3h5
KCkiIDogInRoaXNPYmplY3QiOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0
byB2YWx1ZVRvRm9yd2FyZFRvID0gJHtnZXRSZWNlaXZlcn0uZ2V0KCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBpZCk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpO1xuIik7CiAgICAgICAgIAogICAgICAgICAj
IDMuNS45LjIuIElmIFR5cGUoUSkgaXMgbm90IE9iamVjdCwgdGhlbiB0aHJvdyBhIFR5cGVFcnJv
ci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0R2xvYmFs
T2JqZWN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdEdsb2JhbE9iamVjdC5pZGwJKHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0R2xvYmFsT2JqZWN0LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNiArNDUsOCBAQAogICAgIFtQcml2YXRlSWRlbnRpZmllciwgQ29uZGl0
aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJlXSB1bmRlZmlu
ZWQgdGVzdFByaXZhdGVGdW5jdGlvbigpOwogICAgIFtKU0J1aWx0aW4sIENvbmRpdGlvbmFsPVRF
U1RfRkVBVFVSRSwgRW5hYmxlZEF0UnVudGltZT1UZXN0RmVhdHVyZV0gdW5kZWZpbmVkIHRlc3RK
U0J1aWx0aW5GdW5jdGlvbigpOwogCisgICAgW1B1dEZvcndhcmRzPW5hbWVdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBUZXN0Tm9kZSBwdXRGb3J3YXJkc0F0dHJpYnV0ZTsKKwogICAgIC8vIFtTZWN1cmVD
b250ZXh0XSBhdHRyaWJ1dGVzIGFuZCBvcGVyYXRpb25zOyB3aWxsIG5vdCBiZSBleHBvc2VkIHRv
IGEgbm9uLXNlY3VyZSBjb250ZXh0LgogICAgIC8vIEZyb20gPGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by93ZWJhcHBzZWMtc2VjdXJlLWNvbnRleHRzLyNpbnRlZ3JhdGlvbi1pZGw+IChFZGl0b3IncyBE
cmFmdCwgMTcgTm92ZW1iZXIgMjAxNikKICAgICBbU2VjdXJlQ29udGV4dF0gUHJvbWlzZTxkb3Vi
bGU+IGNhbGN1bGF0ZVNlY3JldFJlc3VsdCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVj
dC5jcHAJKHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIK
ICNpbmNsdWRlICJKU0RPTUNvbnZlcnRCYXNlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0Qm9v
bGVhbi5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkpT
RE9NQ29udmVydE51bWJlcnMuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnRQcm9taXNlLmgiCiAj
aW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgpAQCAtODIsNiArODMsNyBAQAogI2luY2x1
ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5oIgog
I2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGll
c0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lc3BhY2VP
YmplY3QuaCIKKyNpbmNsdWRlICJKU1Rlc3ROb2RlLmgiCiAjaW5jbHVkZSAiSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5oIgogI2luY2x1ZGUgIkpTVGVzdFBsdWdpbklu
dGVyZmFjZS5oIgogI2luY2x1ZGUgIkpTVGVzdFJlYWRPbmx5TWFwTGlrZS5oIgpAQCAtMTY2LDYg
KzE2OCw4IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGUKIHN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9lbmFibGVkQXRS
dW50aW1lQXR0cmlidXRlKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpT
VGVzdEdsb2JhbE9iamVjdF9lbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKTsKICNlbmRpZgorc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X3B1dEZvcndh
cmRzQXR0cmlidXRlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVz
dEdsb2JhbE9iamVjdF9wdXRGb3J3YXJkc0F0dHJpYnV0ZSk7CiBzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENFUmVhY3Rpb25zQ29uc3RydWN0
b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0
X1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDYWxsVHJhY2VyQ29uc3Ry
dWN0b3IpOwpAQCAtMjQyLDExICsyNDYsMTEgQEAgdXNpbmcgSlNUZXN0R2xvYmFsT2JqZWN0RE9N
Q29uc3RydWN0b3IgPQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNU
ZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsyNjddID0gewogICAgIHsgLTEsIC0xIH0sCi0gICAg
eyA0MCwgLTEgfSwKKyAgICB7IDQxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAwLCAt
MSB9LAotICAgIHsgNCwgLTEgfSwKLSAgICB7IDQ0LCAtMSB9LAorICAgIHsgNSwgLTEgfSwKKyAg
ICB7IDQ1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LApAQCAtMjU0LDE1ICsyNTgsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0
SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAotICAgIHsgNTQsIC0xIH0sCisgICAgeyA1NSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCi0gICAgeyA0OCwgLTEgfSwKKyAgICB7IDQ5LCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCi0gICAgeyA2MywgLTEgfSwKKyAgICB7IDY0LCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMjc2LDE0ICsyODAsMTQgQEAg
c3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzQsIC0xIH0sCisgICAg
eyAzNSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA2NiwgLTEgfSwK
LSAgICB7IDEzLCAyNjAgfSwKKyAgICB7IDY3LCAtMSB9LAorICAgIHsgMTQsIDI2MCB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMjkxLDEx
ICsyOTUsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzgs
IC0xIH0sCi0gICAgeyAxOSwgMjU3IH0sCi0gICAgeyA2LCAtMSB9LAorICAgIHsgMzksIC0xIH0s
CisgICAgeyAyMCwgMjU3IH0sCisgICAgeyA3LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAg
eyA0NSwgLTEgfSwKKyAgICB7IDQ2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzA0LDIwICszMDgsMjAgQEAgc3RhdGljIGNvbnN0
IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzYsIC0xIH0sCisgICAgeyAzNywgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDIxLCAy
NjUgfSwKKyAgICB7IDIyLCAyNjUgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAg
eyA1LCAtMSB9LAorICAgIHsgNiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTMyNSwyNyArMzI5LDI3IEBAIHN0YXRpYyBjb25zdCBz
dHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDI5LCAtMSB9LAotICAgIHsgNTYsIC0xIH0sCisg
ICAgeyAzMCwgLTEgfSwKKyAgICB7IDU3LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgOSwgMjU2IH0sCisgICAgeyAxMCwgMjU2IH0sCiAg
ICAgeyAtMSwgLTEgfSwKLSAgICB7IDU4LCAtMSB9LAotICAgIHsgMTgsIC0xIH0sCisgICAgeyA1
OSwgLTEgfSwKKyAgICB7IDE5LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMTcsIC0xIH0sCisgICAgeyAxOCwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAotICAgIHsgMzUsIC0xIH0sCisgICAgeyAzNiwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTM1MywxNSArMzU3LDE0IEBA
IHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDIzLCAtMSB9LAorICAg
IHsgMjQsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDIsIC0xIH0sCi0gICAgeyAzNywg
LTEgfSwKLSAgICB7IC0xLCAtMSB9LAorICAgIHsgMzgsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7
IDIxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LApAQCAtMzczLDE1ICszNzYsMTYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFz
aEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAotICAgIHsgMjcsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQyLCAtMSB9LAor
ICAgIHsgMjgsIC0xIH0sCisgICAgeyAzLCAtMSB9LAorICAgIHsgNDMsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNTMsIC0xIH0sCisgICAgeyA1NCwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTM4OSwy
MiArMzkzLDIyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ3
LCAtMSB9LAorICAgIHsgNDgsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAotICAgIHsgMTAsIC0xIH0sCisgICAgeyAxMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDY0LCAtMSB9LAorICAgIHsgNjUsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAg
eyAyNiwgLTEgfSwKLSAgICB7IDMxLCAtMSB9LAorICAgIHsgMjcsIC0xIH0sCisgICAgeyAzMiwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
QEAgLTQxNCw5ICs0MTgsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXgg
SlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0g
ICAgeyAxNSwgMjU5IH0sCisgICAgeyAxNiwgMjU5IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7
IDU5LCAtMSB9LAorICAgIHsgNjAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00MjUsMTEgKzQyOSwxMSBAQCBzdGF0aWMgY29uc3Qg
c3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzMywgMjY2IH0sCisgICAgeyAzNCwgMjY2IH0s
CiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDE2LCAtMSB9LAorICAgIHsgMTcsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKLSAgICB7IDYyLCAtMSB9LAorICAgIHsgNjMsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00NDAsNyArNDQ0LDcg
QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMTIsIC0xIH0sCisg
ICAgeyAxMywgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKQEAgLTQ0OCwxMSArNDUyLDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFj
dEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKLSAgICB7IDQ2LCAtMSB9LAorICAgIHsgNDcsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxMSwgLTEgfSwKKyAg
ICB7IDEyLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LApAQCAtNDYxLDUzICs0NjUsNTMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0
SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAotICAgIHsgNTcsIC0xIH0sCisgICAgeyA1OCwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgOCwgLTEgfSwKKyAgICB7
IDksIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ5LCAyNjMgfSwKLSAgICB7IDcsIDI2MiB9LAor
ICAgIHsgNTAsIDI2MyB9LAorICAgIHsgOCwgMjYyIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7
IDYwLCAtMSB9LAorICAgIHsgNjEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxNCwgLTEgfSwKKyAgICB7IDE1LCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCi0gICAgeyAyNCwgLTEgfSwKKyAgICB7IDI1LCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDMwLCAtMSB9LAorICAgIHsgMzEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAz
LCAtMSB9LAotICAgIHsgNTEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKKyAgICB7IDQsIC0xIH0s
CiAgICAgeyA1MiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAorICAgIHsgNTMsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyMiwg
MjU4IH0sCi0gICAgeyAyNSwgMjY0IH0sCi0gICAgeyAyOCwgMjYxIH0sCi0gICAgeyAzMiwgLTEg
fSwKLSAgICB7IDM5LCAtMSB9LAotICAgIHsgNDEsIC0xIH0sCi0gICAgeyA0MywgLTEgfSwKLSAg
ICB7IDUwLCAtMSB9LAotICAgIHsgNTUsIC0xIH0sCi0gICAgeyA2MSwgLTEgfSwKLSAgICB7IDY1
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAyMywgMjU4IH0sCisgICAgeyAyNiwgMjY0
IH0sCisgICAgeyAyOSwgMjYxIH0sCisgICAgeyAzMywgLTEgfSwKKyAgICB7IDQwLCAtMSB9LAor
ICAgIHsgNDIsIC0xIH0sCisgICAgeyA0NCwgLTEgfSwKKyAgICB7IDUxLCAtMSB9LAorICAgIHsg
NTYsIC0xIH0sCisgICAgeyA2MiwgLTEgfSwKKyAgICB7IDY2LCAtMSB9LAogfTsKIAogCkBAIC01
MjAsNiArNTI0LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdsb2JhbAog
I2Vsc2UKICAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCisgICAg
eyAicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVj
dF9wdXRGb3J3YXJkc0F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdF9wdXRGb3J3YXJkc0F0
dHJpYnV0ZSkgfSB9LAogICAgIHsgIlRlc3RDRVJlYWN0aW9ucyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xv
YmFsT2JqZWN0X1Rlc3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIlRlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJUZXN0Q2FsbFRy
YWNlciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RDYWxsVHJhY2VyQ29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PigwKSB9IH0sCkBAIC01OTgsNyArNjAzLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVl
IEpTVGVzdEdsb2JhbAogICAgIHsgInJlZ3VsYXJPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25fcmVndWxhck9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDEpIH0gfSwK
IH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGUgPSB7
IDY3LCAyNTUsIHRydWUsIEpTVGVzdEdsb2JhbE9iamVjdDo6aW5mbygpLCBKU1Rlc3RHbG9iYWxP
YmplY3RUYWJsZVZhbHVlcywgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleCB9Oworc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZSA9IHsgNjgsIDI1NSwgdHJ1
ZSwgSlNUZXN0R2xvYmFsT2JqZWN0OjppbmZvKCksIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlVmFs
dWVzLCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4IH07CiAvKiBIYXNoIHRhYmxlIGZvciBj
b25zdHJ1Y3RvciAqLwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFs
T2JqZWN0Q29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KQEAgLTg1OSw2ICs4NjQsNDIgQEAgSlND
X0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdEdsb2JhbAogCiAjZW5kaWYKIAorc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdF9wdXRGb3J3YXJkc0F0dHJpYnV0ZUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2Jq
ZWN0JiB0aGlzT2JqZWN0KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExJbnRlcmZhY2U8VGVzdE5vZGU+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwg
aW1wbC5wdXRGb3J3YXJkc0F0dHJpYnV0ZSgpKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X3B1dEZvcndhcmRzQXR0cmlidXRlLCAoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdF9wdXRGb3J3YXJkc0F0dHJp
YnV0ZUdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFt
ZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RfcHV0Rm9y
d2FyZHNBdHRyaWJ1dGVTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8gaWQgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oInB1dEZv
cndhcmRzQXR0cmlidXRlIiksIHN0cmxlbigicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKSk7CisgICAg
YXV0byB2YWx1ZVRvRm9yd2FyZFRvID0gdGhpc09iamVjdC5wcm94eSgpLmdldCgmbGV4aWNhbEds
b2JhbE9iamVjdCwgaWQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOworICAgIGlmIChVTkxJS0VMWSghdmFsdWVUb0ZvcndhcmRUby5pc09iamVjdCgpKSkgewor
ICAgICAgICB0aHJvd1R5cGVFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgYXV0byBmb3J3YXJkSWQgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIm5h
bWUiKSwgc3RybGVuKCJuYW1lIikpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHZhbHVlVG9G
b3J3YXJkVG8sIGZhbHNlKTsKKyAgICBhc09iamVjdCh2YWx1ZVRvRm9yd2FyZFRvKS0+bWV0aG9k
VGFibGUodm0pLT5wdXQoYXNPYmplY3QodmFsdWVUb0ZvcndhcmRUbyksICZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBmb3J3YXJkSWQsIHZhbHVlLCBzbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGZhbHNlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworSlNDX0RFRklORV9D
VVNUT01fU0VUVEVSKHNldEpTVGVzdEdsb2JhbE9iamVjdF9wdXRGb3J3YXJkc0F0dHJpYnV0ZSwg
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0
ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6
c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdF9wdXRGb3J3YXJkc0F0dHJpYnV0ZVNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCBhdHRyaWJ1dGVOYW1l
KTsKK30KKwogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0Q0VS
ZWFjdGlvbnNDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJB
TShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjc4MTkxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzM2NCw3ICs3MzY0LDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaAogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAKLSAgICAgICAgYXV0byBjb250cm9sbGVyVmFsdWUgPSBKU0M6OmNhbGwo
JmxleGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uLCBjYWxsRGF0YSwgJmdsb2JhbE9iamVjdCwg
YXJnTGlzdCk7CisgICAgICAgIGF1dG8gY29udHJvbGxlclZhbHVlID0gSlNDOjpjYWxsKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlvbiwgY2FsbERhdGEsICZnbG9iYWxPYmplY3QucHJveHko
KSwgYXJnTGlzdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHJlcG9ydEV4
Y2VwdGlvbkFuZFJldHVybkZhbHNlKCkpOwogCiAgICAgICAgIGF1dG8qIGNvbnRyb2xsZXJPYmpl
Y3QgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpKU09iamVjdCo+KHZtLCBjb250cm9sbGVyVmFs
dWUpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBK
U09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTlBKU09iamVjdC5jcHAJKHJldmlzaW9uIDI3ODE5MSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QSlNPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDYsNyArMTA2LDcgQEAgYm9vbCBOUEpTT2JqZWN0OjpoYXNNZXRob2QoTlBJ
ZGVudGlmaWVyIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gbV9qc09iamVj
dC0+Z2V0KGxleGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyUmVwKSk7ICAgIAorICAgIEpTVmFsdWUgdmFs
dWUgPSBhc1B1YmxpY1RoaXNWYWx1ZShtX2pzT2JqZWN0LmdldCgpKS0+Z2V0KGxleGljYWxHbG9i
YWxPYmplY3QsIGlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcChsZXhpY2FsR2xvYmFsT2JqZWN0
LCBpZGVudGlmaWVyUmVwKSk7ICAgIAogICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAKICAg
ICByZXR1cm4gdmFsdWUuaXNDYWxsYWJsZSh2bSk7CkBAIC0xMjUsNyArMTI1LDcgQEAgYm9vbCBO
UEpTT2JqZWN0OjppbnZva2UoTlBJZGVudGlmaWVyIG1ldAogICAgIAogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKGxleGljYWxHbG9iYWxPYmplY3QpOwogCi0gICAgSlNWYWx1ZSBmdW5jdGlvbiA9IG1f
anNPYmplY3QtPmdldChsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyRnJvbUlkZW50aWZp
ZXJSZXAobGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllclJlcCkpOworICAgIEpTVmFsdWUg
ZnVuY3Rpb24gPSBhc1B1YmxpY1RoaXNWYWx1ZShtX2pzT2JqZWN0LmdldCgpKS0+Z2V0KGxleGlj
YWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXJGcm9tSWRlbnRpZmllclJlcChsZXhpY2FsR2xvYmFs
T2JqZWN0LCBpZGVudGlmaWVyUmVwKSk7CiAgICAgcmV0dXJuIGludm9rZShsZXhpY2FsR2xvYmFs
T2JqZWN0LCBmdW5jdGlvbiwgYXJndW1lbnRzLCBhcmd1bWVudENvdW50LCByZXN1bHQpOwogfQog
CkBAIC0xNzcsOSArMTc3LDkgQEAgYm9vbCBOUEpTT2JqZWN0OjpnZXRQcm9wZXJ0eShOUElkZW50
aWZpZQogCiAgICAgSlNWYWx1ZSBqc1Jlc3VsdDsKICAgICBpZiAoaWRlbnRpZmllclJlcC0+aXNT
dHJpbmcoKSkKLSAgICAgICAganNSZXN1bHQgPSBtX2pzT2JqZWN0LT5nZXQobGV4aWNhbEdsb2Jh
bE9iamVjdCwgaWRlbnRpZmllckZyb21JZGVudGlmaWVyUmVwKGxleGljYWxHbG9iYWxPYmplY3Qs
IGlkZW50aWZpZXJSZXApKTsKKyAgICAgICAganNSZXN1bHQgPSBhc1B1YmxpY1RoaXNWYWx1ZSht
X2pzT2JqZWN0LmdldCgpKS0+Z2V0KGxleGljYWxHbG9iYWxPYmplY3QsIGlkZW50aWZpZXJGcm9t
SWRlbnRpZmllclJlcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyUmVwKSk7CiAgICAg
ZWxzZQotICAgICAgICBqc1Jlc3VsdCA9IG1fanNPYmplY3QtPmdldChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaWRlbnRpZmllclJlcC0+bnVtYmVyKCkpKTsKKyAg
ICAgICAganNSZXN1bHQgPSBhc1B1YmxpY1RoaXNWYWx1ZShtX2pzT2JqZWN0LmdldCgpKS0+Z2V0
KGxleGljYWxHbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVpbnQzMl90PihpZGVudGlmaWVyUmVw
LT5udW1iZXIoKSkpOwogICAgIAogICAgIG1fb2JqZWN0TWFwLT5jb252ZXJ0SlNWYWx1ZVRvTlBW
YXJpYW50KGxleGljYWxHbG9iYWxPYmplY3QsIGpzUmVzdWx0LCAqcmVzdWx0KTsKICAgICBzY29w
ZS5jbGVhckV4Y2VwdGlvbigpOwpAQCAtMjAwLDcgKzIwMCw3IEBAIGJvb2wgTlBKU09iamVjdDo6
c2V0UHJvcGVydHkoTlBJZGVudGlmaWUKIAogICAgIEpTVmFsdWUganNWYWx1ZSA9IG1fb2JqZWN0
TWFwLT5jb252ZXJ0TlBWYXJpYW50VG9KU1ZhbHVlKG1fb2JqZWN0TWFwLT5nbG9iYWxPYmplY3Qo
KSwgKnZhbHVlKTsKICAgICBpZiAoaWRlbnRpZmllclJlcC0+aXNTdHJpbmcoKSkgewotICAgICAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChtX2pzT2JqZWN0LmdldCgpKTsKKyAgICAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoYXNQdWJsaWNUaGlzVmFsdWUobV9qc09iamVjdC5nZXQoKSkpOwogICAg
ICAgICBtX2pzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dChtX2pzT2JqZWN0LmdldCgpLCBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyRnJvbUlkZW50aWZpZXJSZXAobGV4aWNhbEds
b2JhbE9iamVjdCwgaWRlbnRpZmllclJlcCksIGpzVmFsdWUsIHNsb3QpOwogICAgIH0gZWxzZQog
ICAgICAgICBtX2pzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgobV9qc09iamVj
dC5nZXQoKSwgbGV4aWNhbEdsb2JhbE9iamVjdCwgaWRlbnRpZmllclJlcC0+bnVtYmVyKCksIGpz
VmFsdWUsIGZhbHNlKTsKQEAgLTMxMCw3ICszMTAsNyBAQCBib29sIE5QSlNPYmplY3Q6Omludm9r
ZShKU0dsb2JhbE9iamVjdCogCiAgICAgICAgIGFyZ3VtZW50TGlzdC5hcHBlbmQobV9vYmplY3RN
YXAtPmNvbnZlcnROUFZhcmlhbnRUb0pTVmFsdWUobGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1l
bnRzW2ldKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWFyZ3VtZW50TGlzdC5oYXNPdmVyZmxvd2Vk
KCkpOwogCi0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTQzo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCBmdW5jdGlvbiwgY2FsbERhdGEsIG1fanNPYmplY3QuZ2V0KCksIGFyZ3VtZW50TGlzdCk7Cisg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTQzo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCBmdW5jdGlv
biwgY2FsbERhdGEsIGFzUHVibGljVGhpc1ZhbHVlKG1fanNPYmplY3QuZ2V0KCkpLCBhcmd1bWVu
dExpc3QpOwogCiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAg
ICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RN
YXAuY3BwCShyZXZpc2lvbiAyNzgxOTEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODksNyArMTg5LDcgQEAgYm9vbCBOUFJ1bnRpbWVPYmplY3RNYXA6OmV2YWx1YXRlKE5QT2JqZQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhnbG9iYWxPYmpl
Y3QuZ2V0KCkpOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZ2V0T3JDcmVhdGVKU09iamVjdChn
bG9iYWxPYmplY3QuZ2V0KCksIG5wT2JqZWN0KTsKKyAgICBKU09iamVjdCogdGhpc1ZhbHVlID0g
YXNQdWJsaWNUaGlzVmFsdWUoZ2V0T3JDcmVhdGVKU09iamVjdChnbG9iYWxPYmplY3QuZ2V0KCks
IG5wT2JqZWN0KSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdFZhbHVlID0gSlNDOjpldmFsdWF0ZShn
bG9iYWxPYmplY3QuZ2V0KCksIG1ha2VTb3VyY2Uoc2NyaXB0U3RyaW5nLCB7IH0pLCB0aGlzVmFs
dWUpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCShy
ZXZpc2lvbiAyNzgxOTEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3
ICsxMjcsNyBAQCBpbmxpbmUgSlNDOjpKU09iamVjdCogTmV0c2NhcGVQbHVnaW5JbnN0CiAgICAg
aWYgKG9iamVjdElEID09IEhhc2hUcmFpdHM8dWludDMyX3Q+OjplbXB0eVZhbHVlKCkgfHwgSGFz
aFRyYWl0czx1aW50MzJfdD46OmlzRGVsZXRlZFZhbHVlKG9iamVjdElEKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gbV9pZFRvSlNPYmplY3RNYXAuZ2V0KG9iamVjdElE
KS5nZXQoKTsKKyAgICByZXR1cm4gYXNQdWJsaWNUaGlzVmFsdWUobV9pZFRvSlNPYmplY3RNYXAu
Z2V0KG9iamVjdElEKS5nZXQoKSk7CiB9CiAKIHVpbnQzMl90IE5ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eTo6TG9jYWxPYmplY3RNYXA6OmlkRm9yT2JqZWN0KFZNJiB2bSwgSlNPYmplY3QqIG9i
amVjdCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3ODE5MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA1LTI3ICBBbGV4ZXkgU2h2
YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBBYm9saXNoIHVz
aW5nIHJlc29sdmVkIHNjb3BlIGFzIHx0aGlzfCB2YWx1ZSB3aGVuIGNhbGxpbmcgZnVuY3Rpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUzOTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL29i
amVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24tZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGpzL3NjcmlwdC10ZXN0cy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9u
LmpzOgorCiAyMDIxLTA1LTI3ICBBbWlyIE1hcmsgSnIgIDxhbWlyX21hcmtAYXBwbGUuY29tPgog
CiAgICAgICAgIFtNYWNPUyBXazFdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWF0
aG1sL3ByZXNlbnRhdGlvbi1tYXJrdXAvbXJvdy9pbmZlcnJlZC1tcm93LXN0cmV0Y2h5Lmh0bWwg
aXMgYSBmbGFreSBmYWlsdXJlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZG9t
LWFjY2Vzcy1mcm9tLWNsb3N1cmUtaWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZG9tLWFjY2Vzcy1mcm9tLWNsb3N1cmUtaWZyYW1l
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4MTkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L2RvbS1hY2Nlc3MtZnJvbS1jbG9zdXJlLWlmcmFtZS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiBkb2N1bWVudC5VUkw6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL1dpbmRvdy9yZXNvdXJjZXMvZG9tLWFjY2Vzcy1mcm9tLWNsb3N1cmUtaWZyYW1lLWNoaWxk
Lmh0bWwKIHdpbmRvdy5kb2N1bWVudC5VUkw6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9y
ZXNvdXJjZXMvbm90aWZ5LXBhcmVudC1kb25lLmh0bWwKLW5hbWU6CituYW1lOiBjaGlsZAogd2lu
ZG93Lm5hbWU6IGNoaWxkCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9kb20t
YWNjZXNzLWZyb20tY2xvc3VyZS13aW5kb3ctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9kb20tYWNjZXNzLWZyb20tY2xvc3VyZS13aW5kb3ct
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzgxOTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvZG9tLWFjY2Vzcy1mcm9tLWNsb3N1cmUtd2luZG93LWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIGRvY3VtZW50LlVSTDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3Jlc291cmNlcy9kb20tYWNjZXNzLWZyb20tY2xvc3VyZS13aW5kb3ctY2hpbGQu
aHRtbAogd2luZG93LmRvY3VtZW50LlVSTDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3Jl
c291cmNlcy9ub3RpZnktb3BlbmVyLWRvbmUuaHRtbAotbmFtZToKK25hbWU6IGNoaWxkCiB3aW5k
b3cubmFtZTogY2hpbGQKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2RvbS1h
Y2Nlc3MtZnJvbS1jbG9zdXJlLXdpbmRvdy13aXRoLWdjLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZG9tLWFjY2Vzcy1mcm9tLWNsb3N1cmUt
d2luZG93LXdpdGgtZ2MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzgxOTEpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9XaW5kb3cvZG9tLWFjY2Vzcy1mcm9tLWNsb3N1cmUtd2luZG93LXdpdGgt
Z2MtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogZG9jdW1lbnQu
VVJMOiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvcmVzb3VyY2VzL2RvbS1hY2Nlc3MtZnJv
bS1jbG9zdXJlLXdpbmRvdy1jaGlsZC5odG1sCiB3aW5kb3cuZG9jdW1lbnQuVVJMOiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9XaW5kb3cvcmVzb3VyY2VzL25vdGlmeS1vcGVuZXItZG9uZS5odG1sCi1u
YW1lOgorbmFtZTogY2hpbGQKIHdpbmRvdy5uYW1lOiBjaGlsZAogCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtY29udGVudFdpbmRvdy1ldmFsLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
cy1ERU5JRUQtY29udGVudFdpbmRvdy1ldmFsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4MTkx
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELWNvbnRlbnRX
aW5kb3ctZXZhbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEgKzEsMiBAQAorQ09O
U09MRSBNRVNTQUdFOiBTZWN1cml0eUVycm9yOiBUaGUgb3BlcmF0aW9uIGlzIGluc2VjdXJlLgog
VGhpcyB0ZXN0IHBhc3NlcyBpZiBhbGVydCgpIGlzIG5vdCBjYWxsZWQuCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtaHRtbGVsZWxtZW50LXdpdGgtaWZy
YW1lLXByb3RvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtaHRtbGVsZWxtZW50LXdpdGgtaWZyYW1lLXByb3RvLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4MTkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3MtREVOSUVELWh0bWxlbGVsbWVudC13aXRoLWlmcmFtZS1wcm90by1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRlc3RzIHRoYXQgbWFraW5nIG90
aGVyIGZyYW1lIHdpbmRvdyBhIHAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNT
IF9fcHJvdG9fXyA9IHRhcmdldFdpbmRvdyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPYmpl
Y3QucHJvdG90eXBlLl9fcHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQuCitQQVNT
IF9fcHJvdG9fXyA9IHRhcmdldFdpbmRvdyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5u
b3Qgc2V0IHByb3RvdHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdC4KIFBBU1MgdGFy
Z2V0V2luZG93Lm15aW5wdXQgdGhyZXcgZXhjZXB0aW9uIFNlY3VyaXR5RXJyb3I6IEJsb2NrZWQg
YSBmcmFtZSB3aXRoIG9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiBmcm9tIGFjY2Vzc2lu
ZyBhIGNyb3NzLW9yaWdpbiBmcmFtZS4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9ydHMgbXVz
dCBtYXRjaC4uCiBQQVNTOiBzdWNjZXNzZnVsbHlQYXJzZWQgc2hvdWxkIGJlICd0cnVlJyBhbmQg
aXMuCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1t
ZXRob2Qtd2l0aC1pZnJhbWUtcHJvdG8tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1tZXRob2Qtd2l0aC1pZnJhbWUt
cHJvdG8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzgxOTEpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtbWV0aG9kLXdpdGgtaWZyYW1lLXByb3RvLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNyw3ICs3LDcgQEAgVGVzdHMgdGhhdCBtYWtpbmcg
b3RoZXIgZnJhbWUgd2luZG93IGEgcAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBB
U1MgX19wcm90b19fID0gdGFyZ2V0V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE9i
amVjdC5wcm90b3R5cGUuX19wcm90b19fIGNhbGxlZCBvbiBudWxsIG9yIHVuZGVmaW5lZC4KK1BB
U1MgX19wcm90b19fID0gdGFyZ2V0V2luZG93IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENh
bm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0LgogUEFTUzog
c3VjY2Vzc2Z1bGx5UGFyc2VkIHNob3VsZCBiZSAndHJ1ZScgYW5kIGlzLgogCiBURVNUIENPTVBM
RVRFCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtbm9u
LXNoYWRvd2FibGUtcHJvcHRlcnR5LXdpdGgtaWZyYW1lLXByb3RvLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQtbm9u
LXNoYWRvd2FibGUtcHJvcHRlcnR5LXdpdGgtaWZyYW1lLXByb3RvLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMjc4MTkxKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVO
SUVELW5vbi1zaGFkb3dhYmxlLXByb3B0ZXJ0eS13aXRoLWlmcmFtZS1wcm90by1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRlc3RzIHRoYXQgbWFraW5nIG90aGVy
IGZyYW1lIHdpbmRvdyBhIHAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIF9f
cHJvdG9fXyA9IHRhcmdldFdpbmRvdyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPYmplY3Qu
cHJvdG90eXBlLl9fcHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQuCitQQVNTIF9f
cHJvdG9fXyA9IHRhcmdldFdpbmRvdyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5ub3Qg
c2V0IHByb3RvdHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdC4KIFBBU1M6IGxvY2F0
aW9uID09PSBvcmlnaW5hbExvY2F0aW9uIHNob3VsZCBiZSAndHJ1ZScgYW5kIGlzLgogUEFTUzog
dGhpcy5sb2NhdGlvbiA9PT0gb3JpZ2luYWxMb2NhdGlvbiBzaG91bGQgYmUgJ3RydWUnIGFuZCBp
cy4KIFBBU1M6IHN1Y2Nlc3NmdWxseVBhcnNlZCBzaG91bGQgYmUgJ3RydWUnIGFuZCBpcy4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC1yZWd1bGFyLXBy
b3B0ZXJ0eS13aXRoLWlmcmFtZS1wcm90by1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXJlZ3VsYXItcHJvcHRlcnR5
LXdpdGgtaWZyYW1lLXByb3RvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4MTkxKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXJlZ3VsYXItcHJvcHRlcnR5
LXdpdGgtaWZyYW1lLXByb3RvLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1
LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogCiAKIFBBU1Mg
dGhpcy5fX3Byb3RvX18gPSB0YXJnZXRXaW5kb3cgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
Q2Fubm90IHNldCBwcm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlwZSBvYmplY3QuCi1QQVNT
IF9fcHJvdG9fXyA9IHRhcmdldFdpbmRvdyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBPYmpl
Y3QucHJvdG90eXBlLl9fcHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQuCitQQVNT
IF9fcHJvdG9fXyA9IHRhcmdldFdpbmRvdyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYW5u
b3Qgc2V0IHByb3RvdHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdC4KIFBBU1M6IGlu
bmVySGVpZ2h0ID09PSBvcmlnaW5hbElubmVySGVpZ2h0IHNob3VsZCBiZSAndHJ1ZScgYW5kIGlz
LgogUEFTUzogdGhpcy5pbm5lckhlaWdodCA9PT0gb3JpZ2luYWxJbm5lckhlaWdodCBzaG91bGQg
YmUgJ3RydWUnIGFuZCBpcy4KIFBBU1M6IHN1Y2Nlc3NmdWxseVBhcnNlZCBzaG91bGQgYmUgJ3Ry
dWUnIGFuZCBpcy4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvV2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRo
aXMtdmFsdWUuYW55LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xv
YmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDI3ODE5MSkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
V2ViSURML2VjbWFzY3JpcHQtYmluZGluZy9nbG9iYWwtb2JqZWN0LWltcGxpY2l0LXRoaXMtdmFs
dWUuYW55LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAgUEFTUyBH
bG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHRocm93cyB3aAogUEFTUyBHbG9iYWwgb2JqZWN0J3Mg
Z2V0dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0IChkb2N1bWVu
dC5hbGwpCiBQQVNTIEdsb2JhbCBvYmplY3QncyBzZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9u
IGluY29tcGF0aWJsZSBvYmplY3QgKGRvY3VtZW50LmFsbCkKIFBBU1MgR2xvYmFsIG9iamVjdCdz
IG9wZXJhdGlvbiB0aHJvd3Mgd2hlbiBjYWxsZWQgb24gaW5jb21wYXRpYmxlIG9iamVjdCAoZG9j
dW1lbnQuYWxsKQotRkFJTCBHbG9iYWwgb2JqZWN0J3MgZ2V0dGVyIHdvcmtzIHdoZW4gY2FsbGVk
IG9uIG51bGwgLyB1bmRlZmluZWQgVGhlIFdpbmRvdy5sb2NhdGlvbiBnZXR0ZXIgY2FuIG9ubHkg
YmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV2luZG93Ci1GQUlMIEdsb2JhbCBvYmplY3QncyBzZXR0
ZXIgd29ya3Mgd2hlbiBjYWxsZWQgb24gbnVsbCAvIHVuZGVmaW5lZCBUaGUgV2luZG93Lm9ub25s
aW5lIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXaW5kb3cKK1BBU1Mg
R2xvYmFsIG9iamVjdCdzIGdldHRlciB3b3JrcyB3aGVuIGNhbGxlZCBvbiBudWxsIC8gdW5kZWZp
bmVkCitQQVNTIEdsb2JhbCBvYmplY3QncyBzZXR0ZXIgd29ya3Mgd2hlbiBjYWxsZWQgb24gbnVs
bCAvIHVuZGVmaW5lZAogUEFTUyBHbG9iYWwgb2JqZWN0J3Mgb3BlcmF0aW9uIHdvcmtzIHdoZW4g
Y2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJJREwvZWNtYXNjcmlwdC1iaW5kaW5nL2dsb2JhbC1v
YmplY3QtaW1wbGljaXQtdGhpcy12YWx1ZS5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklE
TC9lY21hc2NyaXB0LWJpbmRpbmcvZ2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFu
eS53b3JrZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzgxOTEpCisrKyBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYklETC9lY21hc2NyaXB0LWJpbmRpbmcv
Z2xvYmFsLW9iamVjdC1pbXBsaWNpdC10aGlzLXZhbHVlLmFueS53b3JrZXItZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNyBAQAogUEFTUyBHbG9iYWwgb2JqZWN0J3MgZ2V0
dGVyIHRocm93cyB3aGVuIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgb2JqZWN0CiBQQVNTIEdsb2Jh
bCBvYmplY3QncyBzZXR0ZXIgdGhyb3dzIHdoZW4gY2FsbGVkIG9uIGluY29tcGF0aWJsZSBvYmpl
Y3QKIFBBU1MgR2xvYmFsIG9iamVjdCdzIG9wZXJhdGlvbiB0aHJvd3Mgd2hlbiBjYWxsZWQgb24g
aW5jb21wYXRpYmxlIG9iamVjdAotRkFJTCBHbG9iYWwgb2JqZWN0J3MgZ2V0dGVyIHdvcmtzIHdo
ZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQgVGhlIFdvcmtlckdsb2JhbFNjb3BlLmxvY2F0
aW9uIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXb3JrZXJHbG9iYWxT
Y29wZQotRkFJTCBHbG9iYWwgb2JqZWN0J3Mgc2V0dGVyIHdvcmtzIHdoZW4gY2FsbGVkIG9uIG51
bGwgLyB1bmRlZmluZWQgVGhlIFdvcmtlckdsb2JhbFNjb3BlLm9ub25saW5lIHNldHRlciBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXb3JrZXJHbG9iYWxTY29wZQorUEFTUyBHbG9i
YWwgb2JqZWN0J3MgZ2V0dGVyIHdvcmtzIHdoZW4gY2FsbGVkIG9uIG51bGwgLyB1bmRlZmluZWQK
K1BBU1MgR2xvYmFsIG9iamVjdCdzIHNldHRlciB3b3JrcyB3aGVuIGNhbGxlZCBvbiBudWxsIC8g
dW5kZWZpbmVkCiBQQVNTIEdsb2JhbCBvYmplY3QncyBvcGVyYXRpb24gd29ya3Mgd2hlbiBjYWxs
ZWQgb24gbnVsbCAvIHVuZGVmaW5lZAogCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvd2luZG93cy9lbWJlZGRlZC1vcGVuZXIt
cmVtb3ZlLWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvd2luZG93cy9lbWJlZGRl
ZC1vcGVuZXItcmVtb3ZlLWZyYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4MTkxKQorKysg
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJz
L3dpbmRvd3MvZW1iZWRkZWQtb3BlbmVyLXJlbW92ZS1mcmFtZS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsNCArMSw0IEBACiAKLUZBSUwgb3BlbmVyIG9mIGRpc2NhcmRlZCBuZXN0
ZWQgYnJvd3NpbmcgY29udGV4dCBUaGUgV2luZG93Lm9wZW5lciBnZXR0ZXIgY2FuIG9ubHkgYmUg
dXNlZCBvbiBpbnN0YW5jZXMgb2YgV2luZG93Ci1GQUlMIG9wZW5lciBvZiBkaXNjYXJkZWQgYXV4
aWxpYXJ5IGJyb3dzaW5nIGNvbnRleHQgVGhlIFdpbmRvdy5vcGVuZXIgZ2V0dGVyIGNhbiBvbmx5
IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdpbmRvdworUEFTUyBvcGVuZXIgb2YgZGlzY2FyZGVk
IG5lc3RlZCBicm93c2luZyBjb250ZXh0CitQQVNTIG9wZW5lciBvZiBkaXNjYXJkZWQgYXV4aWxp
YXJ5IGJyb3dzaW5nIGNvbnRleHQKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVs
ZW1lbnQvZXhlY3V0aW9uLXRpbWluZy8wODMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
c2NyaXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50L2V4ZWN1dGlvbi10aW1pbmcvMDgzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMjc4MTkxKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9zY3JpcHRpbmctMS90aGUtc2NyaXB0LWVs
ZW1lbnQvZXhlY3V0aW9uLXRpbWluZy8wODMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDcgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFu
IG9iamVjdCAoZXZhbHVhdGluZyAndG9wLmxvZycpCiBGQUlMRUQgKFRoaXMgVEMgcmVxdWlyZXMg
SmF2YVNjcmlwdCBlbmFibGVkKQogCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFR5
cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd0b3AubG9nJykKLQot
RkFJTCAgc2NoZWR1bGVyOiBldmVudCBsaXN0ZW5lciBkZWZpbmVkIGJ5IHNjcmlwdCBpbiBhIGRv
Y3VtZW50IGluIGhpc3RvcnkgYXNzZXJ0X2FycmF5X2VxdWFsczogbGVuZ3RocyBkaWZmZXIsIGV4
cGVjdGVkIGFycmF5IFsiaW5saW5lIHNjcmlwdCAjMSIsICJJRlJBTUUgc2NyaXB0IiwgImVuZCBz
Y3JpcHQgIzEiLCAiZXZlbnQ6IGZvbyIsICJpbmxpbmUgc2NyaXB0ICMyIl0gbGVuZ3RoIDUsIGdv
dCBbImlubGluZSBzY3JpcHQgIzEiLCAiSUZSQU1FIHNjcmlwdCIsICJlbmQgc2NyaXB0ICMxIiwg
ImV2ZW50OiBmb28iLCAiZXZlbnQ6IGZvbyIsICJpbmxpbmUgc2NyaXB0ICMyIl0gbGVuZ3RoIDYK
K0ZBSUwgIHNjaGVkdWxlcjogZXZlbnQgbGlzdGVuZXIgZGVmaW5lZCBieSBzY3JpcHQgaW4gYSBk
b2N1bWVudCBpbiBoaXN0b3J5IGFzc2VydF9hcnJheV9lcXVhbHM6IGxlbmd0aHMgZGlmZmVyLCBl
eHBlY3RlZCBhcnJheSBbImlubGluZSBzY3JpcHQgIzEiLCAiSUZSQU1FIHNjcmlwdCIsICJlbmQg
c2NyaXB0ICMxIiwgImV2ZW50OiBmb28iLCAiaW5saW5lIHNjcmlwdCAjMiJdIGxlbmd0aCA1LCBn
b3QgWyJpbmxpbmUgc2NyaXB0ICMxIiwgIklGUkFNRSBzY3JpcHQiLCAiZW5kIHNjcmlwdCAjMSIs
ICJldmVudDogZm9vIiwgImV2ZW50OiBmb28iLCAiaW5saW5lIHNjcmlwdCAjMiIsICJldmVudDog
Zm9vIl0gbGVuZ3RoIDcKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL3VubG9hZC1hLWRvY3VtZW50LzAwMS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJzb2NrZXRzL3VubG9hZC1hLWRvY3VtZW50LzAwMS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDI3ODE5MSkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2Vic29ja2V0cy91bmxvYWQtYS1kb2N1bWVudC8wMDEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDcgKzEsNSBAQAogVGVzdCByZXF1aXJlcyBwb3B1cCBibG9ja2VyIGRpc2FibGVk
CiAKIAotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBUZXN0IG5hbWVkICdXZWJTb2Nr
ZXRzOiBuYXZpZ2F0aW5nIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0JyBzcGVjaWZpZWQgMiAn
Y2xlYW51cCcgZnVuY3Rpb25zLCBhbmQgMSBmYWlsZWQuCi0KIFBBU1MgV2ViU29ja2V0czogbmF2
aWdhdGluZyB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dAogCkluZGV4OiBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvdW5sb2FkLWEtZG9jdW1l
bnQvMDAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnNvY2tldHMvdW5sb2FkLWEtZG9jdW1lbnQvMDAyLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMjc4MTkxKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL3VubG9hZC1hLWRvY3VtZW50LzAwMi1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw1IEBACiBUZXN0IHJlcXVpcmVzIHBv
cHVwIGJsb2NrZXIgZGlzYWJsZWQKIAogCi1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9
IFRlc3QgbmFtZWQgJ1dlYlNvY2tldHM6IG5hdmlnYXRpbmcgdG9wLWxldmVsIGJyb3dzaW5nIGNv
bnRleHQgd2l0aCBjbG9zZWQgd2Vic29ja2V0JyBzcGVjaWZpZWQgMiAnY2xlYW51cCcgZnVuY3Rp
b25zLCBhbmQgMSBmYWlsZWQuCi0KIEZBSUwgV2ViU29ja2V0czogbmF2aWdhdGluZyB0b3AtbGV2
ZWwgYnJvd3NpbmcgY29udGV4dCB3aXRoIGNsb3NlZCB3ZWJzb2NrZXQgYXNzZXJ0X3VucmVhY2hl
ZDogZG9jdW1lbnQgd2FzIGRpc2NhcmRlZCBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKIApJbmRl
eDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRz
L3VubG9hZC1hLWRvY3VtZW50LzAwMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzb2NrZXRzL3VubG9hZC1h
LWRvY3VtZW50LzAwMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI3ODE5MSkKKysrIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy91bmxvYWQtYS1k
b2N1bWVudC8wMDMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsMyBAQAog
Ci1IYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFRlc3QgbmFtZWQgJ1dlYlNvY2tldHM6
IG5hdmlnYXRpbmcgbmVzdGVkIGJyb3dzaW5nIGNvbnRleHQnIHNwZWNpZmllZCAyICdjbGVhbnVw
JyBmdW5jdGlvbnMsIGFuZCAxIGZhaWxlZC4KLQogUEFTUyBXZWJTb2NrZXRzOiBuYXZpZ2F0aW5n
IG5lc3RlZCBicm93c2luZyBjb250ZXh0CiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2V0cy91bmxvYWQtYS1kb2N1bWVudC8wMDQtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2Vic29ja2V0cy91bmxvYWQtYS1kb2N1bWVudC8wMDQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAyNzgxOTEpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYnNvY2tldHMvdW5sb2FkLWEtZG9jdW1lbnQvMDA0LWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDMgQEAKIAotSGFybmVzcyBFcnJvciAoRkFJTCksIG1l
c3NhZ2UgPSBUZXN0IG5hbWVkICdXZWJTb2NrZXRzOiBuYXZpZ2F0aW5nIG5lc3RlZCBicm93c2lu
ZyBjb250ZXh0IHdpdGggY2xvc2VkIHdlYnNvY2tldCcgc3BlY2lmaWVkIDIgJ2NsZWFudXAnIGZ1
bmN0aW9ucywgYW5kIDEgZmFpbGVkLgotCiBGQUlMIFdlYlNvY2tldHM6IG5hdmlnYXRpbmcgbmVz
dGVkIGJyb3dzaW5nIGNvbnRleHQgd2l0aCBjbG9zZWQgd2Vic29ja2V0IGFzc2VydF91bnJlYWNo
ZWQ6IGRvY3VtZW50IHdhcyBkaXNjYXJkZWQgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCiAKSW5k
ZXg6IExheW91dFRlc3RzL2pzL29iamVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24t
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL29iamVjdC1saXRlcmFs
LXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNzgxOTEpCisr
KyBMYXlvdXRUZXN0cy9qcy9vYmplY3QtbGl0ZXJhbC1zaG9ydGhhbmQtY29uc3RydWN0aW9uLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjMsOCArNjMsMTAgQEAgUEFTUyAhIU9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoewogUEFTUyAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3Ioe3NldCA0Mih2YWx1ZSl7fX0sICc0MicpLnNldCBpcyB0cnVlCiBQQVNTIHRo
aXMuX19wcm90b19fID0gW10gdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fubm90IHNldCBw
cm90b3R5cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlwZSBvYmplY3QuCiBQQVNTICh7X19wcm90b19f
OiB0aGlzLl9fcHJvdG9fX30pIGluc3RhbmNlb2YgQXJyYXkgaXMgZmFsc2UKLVBBU1MgX19wcm90
b19fID0gW10gdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogT2JqZWN0LnByb3RvdHlwZS5fX3By
b3RvX18gY2FsbGVkIG9uIG51bGwgb3IgdW5kZWZpbmVkLgotUEFTUyAoe19fcHJvdG9fXzogX19w
cm90b19ffSkgaW5zdGFuY2VvZiBBcnJheSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRl
ZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnX19wcm90b19fJykuCitQQVNTIF9f
cHJvdG9fXyA9IFtdIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbm5vdCBzZXQgcHJvdG90
eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0LgorUEFTUyAoe19fcHJvdG9fXzogX19w
cm90b19ffSkgaW5zdGFuY2VvZiBBcnJheSBpcyBmYWxzZQorUEFTUyBfX3Byb3RvX18gaXMgT2Jq
ZWN0LmdldFByb3RvdHlwZU9mKGdsb2JhbFRoaXMpCitQQVNTIF9fcHJvdG9fXyA9IF9fcHJvdG9f
XyBpcyBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZ2xvYmFsVGhpcykKIFN5bnRheEVycm9ycwogUEFT
UyAoe2JyZWFrfSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBr
ZXl3b3JkICdicmVhaycgYXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgbmFtZS4uCiBQQVNTICh7Y2Fz
ZX0pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAn
Y2FzZScgYXMgYSBzaG9ydGhhbmQgcHJvcGVydHkgbmFtZS4uCkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvb2JqZWN0LWxpdGVyYWwtc2hvcnRoYW5kLWNvbnN0cnVjdGlvbi5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvb2JqZWN0LWxpdGVyYWwt
c2hvcnRoYW5kLWNvbnN0cnVjdGlvbi5qcwkocmV2aXNpb24gMjc4MTkxKQorKysgTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL29iamVjdC1saXRlcmFsLXNob3J0aGFuZC1jb25zdHJ1Y3Rpb24u
anMJKHdvcmtpbmcgY29weSkKQEAgLTExMiw4ICsxMTIsMTIgQEAgc2hvdWxkQmVUcnVlKCIhIU9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlcwogLy8gX19wcm90b19fIHNob3J0aGFuZCBzaG91bGQgbm90
IG1vZGlmeSB0aGUgcHJvdG90eXBlLgogc2hvdWxkVGhyb3coInRoaXMuX19wcm90b19fID0gW10i
KTsKIHNob3VsZEJlRmFsc2UoIih7X19wcm90b19fOiB0aGlzLl9fcHJvdG9fX30pIGluc3RhbmNl
b2YgQXJyYXkiKTsKLXNob3VsZFRocm93KCJfX3Byb3RvX18gPSBbXSIsICciVHlwZUVycm9yOiBP
YmplY3QucHJvdG90eXBlLl9fcHJvdG9fXyBjYWxsZWQgb24gbnVsbCBvciB1bmRlZmluZWQiJyk7
Ci1zaG91bGRUaHJvdygiKHtfX3Byb3RvX186IF9fcHJvdG9fX30pIGluc3RhbmNlb2YgQXJyYXki
LCAnIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgXCdf
X3Byb3RvX19cJykiJyk7CisKKy8vIF9fcHJvdG9fXyBnZXR0ZXIgLyBzZXR0ZXIgY2FsbGVkIG9u
IGdsb2JhbCBvYmplY3QKK3Nob3VsZFRocm93KCJfX3Byb3RvX18gPSBbXSIsICciVHlwZUVycm9y
OiBDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiBpbW11dGFibGUgcHJvdG90eXBlIG9iamVjdCInKTsK
K3Nob3VsZEJlRmFsc2UoIih7X19wcm90b19fOiBfX3Byb3RvX199KSBpbnN0YW5jZW9mIEFycmF5
Iik7CitzaG91bGRCZSgiX19wcm90b19fIiwgIk9iamVjdC5nZXRQcm90b3R5cGVPZihnbG9iYWxU
aGlzKSIpOworc2hvdWxkQmUoIl9fcHJvdG9fXyA9IF9fcHJvdG9fXyIsICJPYmplY3QuZ2V0UHJv
dG90eXBlT2YoZ2xvYmFsVGhpcykiKTsKIAogLy8gS2V5d29yZHMgLSBTeW50YXggRXJyb3JzCiBk
ZWJ1ZygiU3ludGF4RXJyb3JzIik7CkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZS1jbG9zZWQt
ZGF0YWJhc2Utb2JqZWN0LmpzCShyZXZpc2lvbiAyNzgxOTEpCisrKyBMYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlLWNsb3NlZC1kYXRhYmFzZS1vYmplY3QuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDEzICsyMywxNSBAQCBmdW5jdGlvbiBvcGVuU3VjY2Vzcygp
CiAgICAgICAgIGRlYnVnKCJEcm9wcGluZyByZWZlcmVuY2VzIHRvIG5ldyBjb25uZWN0aW9uLiIp
OwogICAgICAgICAvLyBBZnRlciBsZWF2aW5nIHRoaXMgZnVuY3Rpb24sIHRoZXJlIGFyZSBubyBy
ZW1haW5pbmcgcmVmZXJlbmNlcyB0byB0aGUKICAgICAgICAgLy8gZGIsIHNvIGl0IHNob3VsZCBn
ZXQgZGVsZXRlZC4KLSAgICAgICAgc2V0VGltZW91dChzZXRWZXJzaW9uLCAyKTsKKyAgICAgICAg
c2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJnYygpIik7CisgICAg
ICAgICAgICBzZXRUaW1lb3V0KHNldFZlcnNpb24pOworICAgICAgICB9KTsKICAgICB9OwogfQog
CiBmdW5jdGlvbiBzZXRWZXJzaW9uKCkKIHsKLSAgICBldmFsQW5kTG9nKCJnYygpIik7CiAgICAg
ZGVidWcoIk9wZW4gcmVxdWVzdCBzaG91bGQgbm90IHJlY2VpdmUgYSBibG9ja2VkIGV2ZW50OiIp
OwogICAgIHZhciByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAy
KSIpOwogICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwo=
</data>
<flag name="review"
          id="452756"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>