<?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>151197</bug_id>
          
          <creation_ts>2015-11-12 10:05:03 -0800</creation_ts>
          <short_desc>Modern IDB: Pipe through cursor functions from client to server</short_desc>
          <delta_ts>2015-11-12 16:24:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>Safari 9</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
    
    <blocked>151196</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1141512</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-12 10:05:03 -0800</bug_when>
    <thetext>Modern IDB: Pipe through cursor functions from client to server

The result of all requests will always be an error for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141514</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-12 10:05:16 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; Modern IDB: Pipe through cursor functions from client to server
&gt; 
&gt; The result of all requests will always be an error for now.

Until https://bugs.webkit.org/show_bug.cgi?id=151196 is resolved</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141647</commentid>
    <comment_count>2</comment_count>
      <attachid>265437</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-12 15:09:32 -0800</bug_when>
    <thetext>Created attachment 265437
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141654</commentid>
    <comment_count>3</comment_count>
      <attachid>265437</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-12 15:27:02 -0800</bug_when>
    <thetext>Comment on attachment 265437
Patch v1

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

&gt; Source/WebCore/Modules/indexeddb/client/IDBCursorImpl.cpp:49
&gt; +    , m_source(adoptRef(*IDBAny::create(objectStore).leakRef()))

can you use wtf::move here, or just *IDBAny::create(objectStore), or make IDBAny::create return a Ref?

&gt; Source/WebCore/Modules/indexeddb/client/IDBCursorImpl.cpp:56
&gt; +    , m_source(adoptRef(*IDBAny::create(index).leakRef()))

same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141659</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-12 15:30:53 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 265437 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=265437&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBCursorImpl.cpp:49
&gt; &gt; +    , m_source(adoptRef(*IDBAny::create(objectStore).leakRef()))
&gt; 
&gt; can you use wtf::move here, or just *IDBAny::create(objectStore), or make
&gt; IDBAny::create return a Ref?

The first two, no.
The third, yes.

&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBCursorImpl.cpp:56
&gt; &gt; +    , m_source(adoptRef(*IDBAny::create(index).leakRef()))
&gt; 
&gt; same.

Same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141662</commentid>
    <comment_count>5</comment_count>
      <attachid>265441</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-12 15:33:35 -0800</bug_when>
    <thetext>Created attachment 265441
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141686</commentid>
    <comment_count>6</comment_count>
      <attachid>265441</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-12 16:24:13 -0800</bug_when>
    <thetext>Comment on attachment 265441
Patch for landing

Clearing flags on attachment: 265441

Committed r192396: &lt;http://trac.webkit.org/changeset/192396&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141687</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-12 16:24:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265437</attachid>
            <date>2015-11-12 15:09:32 -0800</date>
            <delta_ts>2015-11-12 15:33:35 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>113685</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmYjIwZWJiLi4wMWUwNWMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMTEt
MTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IFBpcGUgdGhyb3VnaCBjdXJzb3IgZnVuY3Rpb25zIGZyb20gY2xpZW50IHRvIHNlcnZlci4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTE5Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci0xLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci0xLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuY3Vyc29yLWZhaWx1cmVzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5jdXJz
b3ItZmFpbHVyZXMuaHRtbDogQWRkZWQuCisKIDIwMTUtMTEtMTIgIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBJZ25vcmUgdmlzaXRlZCBiYWNrZ3JvdW5kIGNvbG9y
IHdoZW4gZGVjaWRpbmcgaWYgdGhlIGlucHV0IHJlbmRlcmVyIG5lZWRzIHRvIGJlIHBhaW50ZWQg
bmF0aXZlbHkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vY3Vyc29yLTEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL2N1cnNvci0xLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5lZDJlYWZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2N1cnNvci0xLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDc3IEBACitU
aGlzIHRlc3RzIGJhc2ljIElEQkN1cnNvciBmdW5jdGlvbmFsaXR5CitJbml0aWFsIHVwZ3JhZGUg
bmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNpb24gLSAxCitFcnJvciBvcGVuaW5nIGN1
cnNvciAoZXhwZWN0ZWQgZm9yIG5vdykKK0N1cnNvciBpczogW29iamVjdCBJREJDdXJzb3JXaXRo
VmFsdWVdCitDdXJzb3IgZGlyZWN0aW9uIGlzOiBuZXh0CitDdXJzb3Igc291cmNlIGlzOiBbb2Jq
ZWN0IElEQk9iamVjdFN0b3JlXSAoVGVzdE9iamVjdFN0b3JlKQorQ3Vyc29yIGtleSBpczogbnVs
bAorQ3Vyc29yIHByaW1hcnkga2V5IGlzOiBudWxsCitFcnJvciBvcGVuaW5nIGN1cnNvciAoZXhw
ZWN0ZWQgZm9yIG5vdykKK0N1cnNvciBpczogW29iamVjdCBJREJDdXJzb3JXaXRoVmFsdWVdCitD
dXJzb3IgZGlyZWN0aW9uIGlzOiBuZXh0CitDdXJzb3Igc291cmNlIGlzOiBbb2JqZWN0IElEQklu
ZGV4XSAoVGVzdEluZGV4MSkKK0N1cnNvciBrZXkgaXM6IG51bGwKK0N1cnNvciBwcmltYXJ5IGtl
eSBpczogbnVsbAorRXJyb3Igb3BlbmluZyBjdXJzb3IgKGV4cGVjdGVkIGZvciBub3cpCitDdXJz
b3IgaXM6IFtvYmplY3QgSURCQ3Vyc29yXQorQ3Vyc29yIGRpcmVjdGlvbiBpczogbmV4dAorQ3Vy
c29yIHNvdXJjZSBpczogW29iamVjdCBJREJJbmRleF0gKFRlc3RJbmRleDEpCitDdXJzb3Iga2V5
IGlzOiBudWxsCitDdXJzb3IgcHJpbWFyeSBrZXkgaXM6IG51bGwKK0Vycm9yIG9wZW5pbmcgY3Vy
c29yIChleHBlY3RlZCBmb3Igbm93KQorQ3Vyc29yIGlzOiBbb2JqZWN0IElEQkN1cnNvcldpdGhW
YWx1ZV0KK0N1cnNvciBkaXJlY3Rpb24gaXM6IG5leHR1bmlxdWUKK0N1cnNvciBzb3VyY2UgaXM6
IFtvYmplY3QgSURCT2JqZWN0U3RvcmVdIChUZXN0T2JqZWN0U3RvcmUpCitDdXJzb3Iga2V5IGlz
OiBudWxsCitDdXJzb3IgcHJpbWFyeSBrZXkgaXM6IG51bGwKK0Vycm9yIG9wZW5pbmcgY3Vyc29y
IChleHBlY3RlZCBmb3Igbm93KQorQ3Vyc29yIGlzOiBbb2JqZWN0IElEQkN1cnNvcldpdGhWYWx1
ZV0KK0N1cnNvciBkaXJlY3Rpb24gaXM6IG5leHR1bmlxdWUKK0N1cnNvciBzb3VyY2UgaXM6IFtv
YmplY3QgSURCSW5kZXhdIChUZXN0SW5kZXgxKQorQ3Vyc29yIGtleSBpczogbnVsbAorQ3Vyc29y
IHByaW1hcnkga2V5IGlzOiBudWxsCitFcnJvciBvcGVuaW5nIGN1cnNvciAoZXhwZWN0ZWQgZm9y
IG5vdykKK0N1cnNvciBpczogW29iamVjdCBJREJDdXJzb3JdCitDdXJzb3IgZGlyZWN0aW9uIGlz
OiBuZXh0dW5pcXVlCitDdXJzb3Igc291cmNlIGlzOiBbb2JqZWN0IElEQkluZGV4XSAoVGVzdElu
ZGV4MSkKK0N1cnNvciBrZXkgaXM6IG51bGwKK0N1cnNvciBwcmltYXJ5IGtleSBpczogbnVsbAor
RXJyb3Igb3BlbmluZyBjdXJzb3IgKGV4cGVjdGVkIGZvciBub3cpCitDdXJzb3IgaXM6IFtvYmpl
Y3QgSURCQ3Vyc29yV2l0aFZhbHVlXQorQ3Vyc29yIGRpcmVjdGlvbiBpczogcHJldgorQ3Vyc29y
IHNvdXJjZSBpczogW29iamVjdCBJREJPYmplY3RTdG9yZV0gKFRlc3RPYmplY3RTdG9yZSkKK0N1
cnNvciBrZXkgaXM6IG51bGwKK0N1cnNvciBwcmltYXJ5IGtleSBpczogbnVsbAorRXJyb3Igb3Bl
bmluZyBjdXJzb3IgKGV4cGVjdGVkIGZvciBub3cpCitDdXJzb3IgaXM6IFtvYmplY3QgSURCQ3Vy
c29yV2l0aFZhbHVlXQorQ3Vyc29yIGRpcmVjdGlvbiBpczogcHJldgorQ3Vyc29yIHNvdXJjZSBp
czogW29iamVjdCBJREJJbmRleF0gKFRlc3RJbmRleDEpCitDdXJzb3Iga2V5IGlzOiBudWxsCitD
dXJzb3IgcHJpbWFyeSBrZXkgaXM6IG51bGwKK0Vycm9yIG9wZW5pbmcgY3Vyc29yIChleHBlY3Rl
ZCBmb3Igbm93KQorQ3Vyc29yIGlzOiBbb2JqZWN0IElEQkN1cnNvcl0KK0N1cnNvciBkaXJlY3Rp
b24gaXM6IHByZXYKK0N1cnNvciBzb3VyY2UgaXM6IFtvYmplY3QgSURCSW5kZXhdIChUZXN0SW5k
ZXgxKQorQ3Vyc29yIGtleSBpczogbnVsbAorQ3Vyc29yIHByaW1hcnkga2V5IGlzOiBudWxsCitF
cnJvciBvcGVuaW5nIGN1cnNvciAoZXhwZWN0ZWQgZm9yIG5vdykKK0N1cnNvciBpczogW29iamVj
dCBJREJDdXJzb3JXaXRoVmFsdWVdCitDdXJzb3IgZGlyZWN0aW9uIGlzOiBwcmV2dW5pcXVlCitD
dXJzb3Igc291cmNlIGlzOiBbb2JqZWN0IElEQk9iamVjdFN0b3JlXSAoVGVzdE9iamVjdFN0b3Jl
KQorQ3Vyc29yIGtleSBpczogbnVsbAorQ3Vyc29yIHByaW1hcnkga2V5IGlzOiBudWxsCitFcnJv
ciBvcGVuaW5nIGN1cnNvciAoZXhwZWN0ZWQgZm9yIG5vdykKK0N1cnNvciBpczogW29iamVjdCBJ
REJDdXJzb3JXaXRoVmFsdWVdCitDdXJzb3IgZGlyZWN0aW9uIGlzOiBwcmV2dW5pcXVlCitDdXJz
b3Igc291cmNlIGlzOiBbb2JqZWN0IElEQkluZGV4XSAoVGVzdEluZGV4MSkKK0N1cnNvciBrZXkg
aXM6IG51bGwKK0N1cnNvciBwcmltYXJ5IGtleSBpczogbnVsbAorRXJyb3Igb3BlbmluZyBjdXJz
b3IgKGV4cGVjdGVkIGZvciBub3cpCitDdXJzb3IgaXM6IFtvYmplY3QgSURCQ3Vyc29yXQorQ3Vy
c29yIGRpcmVjdGlvbiBpczogcHJldnVuaXF1ZQorQ3Vyc29yIHNvdXJjZSBpczogW29iamVjdCBJ
REJJbmRleF0gKFRlc3RJbmRleDEpCitDdXJzb3Iga2V5IGlzOiBudWxsCitDdXJzb3IgcHJpbWFy
eSBrZXkgaXM6IG51bGwKK0luaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9u
IGNvbXBsZXRlCitEb25lCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9jdXJzb3ItMS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL2N1cnNvci0xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NThkNDYzYjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vY3Vyc29yLTEuaHRtbApAQCAtMCwwICsxLDk1IEBACitUaGlzIHRlc3RzIGJhc2lj
IElEQkN1cnNvciBmdW5jdGlvbmFsaXR5PGJyPgorPGRpdiBpZD0ibG9nZ2VyIj48L2Rpdj4KKzxz
Y3JpcHQ+CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlvbiBk
b25lKCkKK3sKKyAgICBsb2coIkRvbmUiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2Fn
ZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MICs9
IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4
ZWREQi5vcGVuKCJDdXJzb3IxRGF0YWJhc2UiLCAxKTsKKworZnVuY3Rpb24gbG9nQ3Vyc29yKGN1
cnNvcikKK3sKKyAgICBsb2coIkN1cnNvciBpczogIiArIGN1cnNvcik7CisgICAgbG9nKCJDdXJz
b3IgZGlyZWN0aW9uIGlzOiAiICsgY3Vyc29yLmRpcmVjdGlvbik7CisgICAgbG9nKCJDdXJzb3Ig
c291cmNlIGlzOiAiICsgY3Vyc29yLnNvdXJjZSArICIgKCIgKyBjdXJzb3Iuc291cmNlLm5hbWUg
KyAiKSIpOyAgICAKKyAgICBsb2coIkN1cnNvciBrZXkgaXM6ICIgKyBjdXJzb3Iua2V5KTsgICAg
CisgICAgbG9nKCJDdXJzb3IgcHJpbWFyeSBrZXkgaXM6ICIgKyBjdXJzb3IucHJpbWFyeUtleSk7
ICAgIAorfQorCitmdW5jdGlvbiBzZXR1cFJlcXVlc3QocmVxdWVzdCkKK3sKKyAgICAvLyBGSVhN
RTogUmlnaHQgbm93ICh1bnRpbCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUxMTk2IGlzIHJlc29sdmVkKSB3aGF0IHNob3VsZCBiZSBzdWNjZXNzZnVsIGN1cnNvciBv
cGVyYXRpb25zIHdpbGwgYWN0dWFsbHkgYWx3YXlzIGZhaWwuCisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgbG9nKCJTdWNjZXNzIG9wZW5pbmcgY3Vyc29yIik7
CisgICAgICAgIGxvZ0N1cnNvcihyZXF1ZXN0LnJlc3VsdCk7ICAKKyAgICB9CisgICAgcmVxdWVz
dC5vbmVycm9yID0gZnVuY3Rpb24oZSkgeworICAgICAgICBsb2coIkVycm9yIG9wZW5pbmcgY3Vy
c29yIChleHBlY3RlZCBmb3Igbm93KSIpOworICAgICAgICBsb2dDdXJzb3IocmVxdWVzdC5yZXN1
bHQpOworICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOworICAgIH0gCit9CisKK3ZhciBvYmpl
Y3RTdG9yZTsKK3ZhciBpbmRleDsKKworZnVuY3Rpb24gdGVzdEN1cnNvckRpcmVjdGlvbihkaXJl
Y3Rpb24pCit7CisgICAgdmFyIHJhbmdlID0gSURCS2V5UmFuZ2UubG93ZXJCb3VuZCgtSW5maW5p
dHkpOworICAgIHZhciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUub3BlbkN1cnNvcihyYW5nZSwgZGly
ZWN0aW9uKTsKKyAgICBzZXR1cFJlcXVlc3QocmVxdWVzdCk7CisgICAgcmVxdWVzdCA9IGluZGV4
Lm9wZW5DdXJzb3IocmFuZ2UsIGRpcmVjdGlvbik7CisgICAgc2V0dXBSZXF1ZXN0KHJlcXVlc3Qp
OworICAgIHJlcXVlc3QgPSBpbmRleC5vcGVuS2V5Q3Vyc29yKHJhbmdlLCBkaXJlY3Rpb24pOwor
ICAgIHNldHVwUmVxdWVzdChyZXF1ZXN0KTsKK30KKworY3JlYXRlUmVxdWVzdC5vbnVwZ3JhZGVu
ZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIG5lZWRl
ZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24gLSAi
ICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3Jl
YXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICB2YXIgZGF0YWJhc2UgPSBldmVudC50YXJnZXQu
cmVzdWx0OworICAgIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRl
c3RPYmplY3RTdG9yZSIpOworICAgIGluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoIlRl
c3RJbmRleDEiLCAiYmFyIik7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpIHsK
KyAgICAgICAgb2JqZWN0U3RvcmUucHV0KCJSZWNvcmQgIiArIGksIGkpOworICAgIH0KKyAgICBv
YmplY3RTdG9yZS5wdXQoeyBiYXI6ICJIZWxsbyIgfSwgImZvbyIpOworCisgICAgdGVzdEN1cnNv
ckRpcmVjdGlvbigibmV4dCIpOworICAgIHRlc3RDdXJzb3JEaXJlY3Rpb24oIm5leHR1bmlxdWUi
KTsKKyAgICB0ZXN0Q3Vyc29yRGlyZWN0aW9uKCJwcmV2Iik7CisgICAgdGVzdEN1cnNvckRpcmVj
dGlvbigicHJldnVuaXF1ZSIpOworICAgICAgCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJv
cnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJz
aW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnRlZCIpOworICAgICAgICBkb25l
KCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRy
YW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB2ZXJz
aW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGxvZygi
SW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJv
ciIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisKKzwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5jdXJzb3It
ZmFpbHVyZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL29wZW5jdXJzb3ItZmFpbHVyZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjFmMmZlNmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmN1cnNvci1mYWlsdXJlcy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwyMSBAQAorVGhpcyB0ZXN0cyBzb21lIG9idmlvdXMgZmFpbHVyZXMgdGhhdCBj
YW4gaGFwcGVuIHdoaWxlIG9wZW5pbmcgY3Vyc29ycy4KK0luaXRpYWwgdXBncmFkZSBuZWVkZWQ6
IE9sZCB2ZXJzaW9uIC0gMCBOZXcgdmVyc2lvbiAtIDEKK0ZhaWxlZCB0byBvcGVuIG9iamVjdCBz
dG9yZSBjdXJzb3Igd2l0aCBpbnZhbGlkIGtleXBhdGgKK0ZhaWxlZCB0byBvcGVuIG9iamVjdCBz
dG9yZSBjdXJzb3Igd2l0aCBpbnZhbGlkIGRpcmVjdGlvbgorRmFpbGVkIHRvIG9wZW4gaW5kZXgg
Y3Vyc29yIHdpdGggaW52YWxpZCBrZXlwYXRoCitGYWlsZWQgdG8gb3BlbiBpbmRleCBjdXJzb3Ig
d2l0aCBpbnZhbGlkIGRpcmVjdGlvbgorRmFpbGVkIHRvIG9wZW4gaW5kZXgga2V5IGN1cnNvciB3
aXRoIGludmFsaWQga2V5cGF0aAorRmFpbGVkIHRvIG9wZW4gaW5kZXgga2V5IGN1cnNvciB3aXRo
IGludmFsaWQgZGlyZWN0aW9uCitGYWlsZWQgdG8gb3BlbiBvYmplY3Qgc3RvcmUgY3Vyc29yIG9u
IGRlbGV0ZWQgb2JqZWN0IHN0b3JlCitGYWlsZWQgdG8gb3BlbiBpbmRleCBjdXJzb3Igb24gZGVs
ZXRlZCBvYmplY3Qgc3RvcmUKK0ZhaWxlZCB0byBvcGVuIGluZGV4IGtleSBjdXJzb3Igb24gZGVs
ZXRlZCBvYmplY3Qgc3RvcmUKK0luaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0
aW9uIGNvbXBsZXRlCitGYWlsZWQgdG8gb3BlbiBvYmplY3Qgc3RvcmUgY3Vyc29yIGZyb20gY29t
cGxldGVkIHRyYW5zYWN0aW9uCitGYWlsZWQgdG8gb3BlbiBpbmRleCBjdXJzb3IgZnJvbSBjb21w
bGV0ZWQgdHJhbnNhY3Rpb24KK0ZhaWxlZCB0byBvcGVuIGluZGV4IGtleSBjdXJzb3IgZnJvbSBj
b21wbGV0ZWQgdHJhbnNhY3Rpb24KK0ZhaWxlZCB0byBvcGVuIG9iamVjdCBzdG9yZSBjdXJzb3Ig
ZnJvbSBpbmFjdGl2ZSB0cmFuc2FjdGlvbgorRmFpbGVkIHRvIG9wZW4gaW5kZXggY3Vyc29yIGZy
b20gaW5hY3RpdmUgdHJhbnNhY3Rpb24KK0ZhaWxlZCB0byBvcGVuIGluZGV4IGtleSBjdXJzb3Ig
ZnJvbSBpbmFjdGl2ZSB0cmFuc2FjdGlvbgorcmVhZG9ubHkgdHJhbnNhY3Rpb24gY29tcGxldGUK
K0RvbmUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L29wZW5jdXJzb3ItZmFpbHVyZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9vcGVuY3Vyc29yLWZhaWx1cmVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNDZjYmQzOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9vcGVuY3Vyc29yLWZhaWx1cmVzLmh0bWwKQEAgLTAsMCArMSwx
ODggQEAKK1RoaXMgdGVzdHMgc29tZSBvYnZpb3VzIGZhaWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3
aGlsZSBvcGVuaW5nIGN1cnNvcnMuPGJyPgorPGRpdiBpZD0ibG9nZ2VyIj48L2Rpdj4KKzxzY3Jp
cHQ+CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQorCitmdW5jdGlvbiBkb25l
KCkKK3sKKyAgICBsb2coIkRvbmUiKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkK
K3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuaW5uZXJIVE1MICs9IG1l
c3NhZ2UgKyAiPGJyPiI7Cit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWRE
Qi5vcGVuKCJPcGVuQ3Vyc29yRmFpbHVyZXNEYXRhYmFzZSIsIDEpOwordmFyIGRhdGFiYXNlOwor
dmFyIG9iamVjdFN0b3JlOwordmFyIGluZGV4OworCitjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5l
ZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVk
OiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIg
KyBldmVudC5uZXdWZXJzaW9uKTsKKworICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBjcmVh
dGVSZXF1ZXN0LnRyYW5zYWN0aW9uOworICAgIGRhdGFiYXNlID0gZXZlbnQudGFyZ2V0LnJlc3Vs
dDsKKyAgICBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2Jq
ZWN0U3RvcmUiKTsKKyAgICBpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCJUZXN0SW5k
ZXgiLCAiYmFyIik7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICJi
YXIiIH0sICJmb28iKTsKKworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKE5hTik7Cisg
ICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgbG9nKCJGYWlsZWQgdG8gb3BlbiBvYmpl
Y3Qgc3RvcmUgY3Vyc29yIHdpdGggaW52YWxpZCBrZXlwYXRoIik7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCJm
b28iLCAiaW52YWxpZCBkaXJlY3Rpb24iKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAg
ICAgICBsb2coIkZhaWxlZCB0byBvcGVuIG9iamVjdCBzdG9yZSBjdXJzb3Igd2l0aCBpbnZhbGlk
IGRpcmVjdGlvbiIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAg
ICAgICAgaW5kZXgub3BlbkN1cnNvcihOYU4pOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgICAgIGxvZygiRmFpbGVkIHRvIG9wZW4gaW5kZXggY3Vyc29yIHdpdGggaW52YWxpZCBrZXlw
YXRoIik7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICAgICAgaW5kZXgub3Bl
bkN1cnNvcigiZm9vIiwgImludmFsaWQgZGlyZWN0aW9uIik7CisgICAgICAgIH0gY2F0Y2goZSkg
eworICAgICAgICAgICAgbG9nKCJGYWlsZWQgdG8gb3BlbiBpbmRleCBjdXJzb3Igd2l0aCBpbnZh
bGlkIGRpcmVjdGlvbiIpOworICAgICAgICB9CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
IGluZGV4Lm9wZW5LZXlDdXJzb3IoTmFOKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAg
ICAgICBsb2coIkZhaWxlZCB0byBvcGVuIGluZGV4IGtleSBjdXJzb3Igd2l0aCBpbnZhbGlkIGtl
eXBhdGgiKTsKKyAgICAgICAgfQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpbmRleC5v
cGVuS2V5Q3Vyc29yKCJmb28iLCAiaW52YWxpZCBkaXJlY3Rpb24iKTsKKyAgICAgICAgfSBjYXRj
aChlKSB7CisgICAgICAgICAgICBsb2coIkZhaWxlZCB0byBvcGVuIGluZGV4IGtleSBjdXJzb3Ig
d2l0aCBpbnZhbGlkIGRpcmVjdGlvbiIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBk
YXRhYmFzZS5kZWxldGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgICAgIAor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOworICAg
ICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGxvZygiRmFpbGVkIHRvIG9wZW4gb2JqZWN0
IHN0b3JlIGN1cnNvciBvbiBkZWxldGVkIG9iamVjdCBzdG9yZSIpOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgaW5kZXgub3BlbkN1cnNvcigpOworICAg
ICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGxvZygiRmFpbGVkIHRvIG9wZW4gaW5kZXgg
Y3Vyc29yIG9uIGRlbGV0ZWQgb2JqZWN0IHN0b3JlIik7CisgICAgICAgIH0KKworICAgICAgICB0
cnkgeworICAgICAgICAgICAgaW5kZXgub3BlbktleUN1cnNvcigpOworICAgICAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgICAgIGxvZygiRmFpbGVkIHRvIG9wZW4gaW5kZXgga2V5IGN1cnNvciBv
biBkZWxldGVkIG9iamVjdCBzdG9yZSIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAv
LyBSZWNyZWF0ZSB0aGUgb2JqZWN0c3RvcmUgYmVjYXVzZSB3ZSdsbCBuZWVkIGl0IGluIHBoYXNl
IDIuCisgICAgICAgIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRl
c3RPYmplY3RTdG9yZSIpOworICAgICAgICBpbmRleCA9IG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4
KCJUZXN0SW5kZXgiLCAiYmFyIik7CisgICAgICAgIG9iamVjdFN0b3JlLnB1dCh7IGJhcjogImJh
ciIgfSwgImZvbyIpOworICAgIH0KKyAgICAKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25hYm9y
dCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNp
b25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydGVkIik7CisgICAgICAgIGRvbmUo
KTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJh
bnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgY29udGludWVUZXN0MSgpOworICAgIH0KKwor
ICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAg
ICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVj
dGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rp
b24gY29udGludWVUZXN0MSgpCit7CisgICAgdHJ5IHsKKyAgICAgICAgb2JqZWN0U3RvcmUub3Bl
bkN1cnNvcigpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBsb2coIkZhaWxlZCB0byBvcGVu
IG9iamVjdCBzdG9yZSBjdXJzb3IgZnJvbSBjb21wbGV0ZWQgdHJhbnNhY3Rpb24iKTsKKyAgICB9
CisgICAgCisgICAgdHJ5IHsKKyAgICAgICAgaW5kZXgub3BlbkN1cnNvcigpOworICAgIH0gY2F0
Y2goZSkgeworICAgICAgICBsb2coIkZhaWxlZCB0byBvcGVuIGluZGV4IGN1cnNvciBmcm9tIGNv
bXBsZXRlZCB0cmFuc2FjdGlvbiIpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGluZGV4
Lm9wZW5LZXlDdXJzb3IoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgbG9nKCJGYWlsZWQg
dG8gb3BlbiBpbmRleCBrZXkgY3Vyc29yIGZyb20gY29tcGxldGVkIHRyYW5zYWN0aW9uIik7Cisg
ICAgfQorICAgICAgICAKKyAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlv
bigiVGVzdE9iamVjdFN0b3JlIiwgInJlYWRvbmx5Iik7CisgICAgb2JqZWN0U3RvcmUgPSB0cmFu
c2FjdGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgaW5kZXggPSBvYmpl
Y3RTdG9yZS5pbmRleCgiVGVzdEluZGV4Iik7CisKKyAgICAvLyBTcGluIHRoZSB0cmFuc2FjdGlv
biB3aXRoIGdldCByZXF1ZXN0cyB0byBrZWVwIGl0IGFsaXZlIGxvbmcgZW5vdWdoIGZvciB0aGUg
c2V0VGltZW91dCB0byBmaXJlLgorICAgIHZhciBjYW5GaW5pc2ggPSBmYWxzZTsKKyAgICB2YXIg
c3BpbkdldCA9IGZ1bmN0aW9uKCkgeyAKKyAgICAgICAgb2JqZWN0U3RvcmUuZ2V0KCJmb28iKS5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICghY2FuRmluaXNoKQorICAg
ICAgICAgICAgICAgIHNwaW5HZXQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzcGluR2V0KCk7
CisKKyAgICB2YXIgZ2V0V2hpbGVJbmFjdGl2ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0cnkg
eworICAgICAgICAgICAgb2JqZWN0U3RvcmUub3BlbkN1cnNvcigpOworICAgICAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgICAgIGxvZygiRmFpbGVkIHRvIG9wZW4gb2JqZWN0IHN0b3JlIGN1cnNv
ciBmcm9tIGluYWN0aXZlIHRyYW5zYWN0aW9uIik7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIGluZGV4Lm9wZW5DdXJzb3IoKTsKKyAgICAgICAgfSBjYXRjaChl
KSB7CisgICAgICAgICAgICBsb2coIkZhaWxlZCB0byBvcGVuIGluZGV4IGN1cnNvciBmcm9tIGlu
YWN0aXZlIHRyYW5zYWN0aW9uIik7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgaW5kZXgub3BlbktleUN1cnNvcigpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgICAgIGxvZygiRmFpbGVkIHRvIG9wZW4gaW5kZXgga2V5IGN1cnNvciBmcm9tIGluYWN0aXZl
IHRyYW5zYWN0aW9uIik7CisgICAgICAgIH0KKyAgICAgICAgY2FuRmluaXNoID0gdHJ1ZTsKKyAg
ICB9CisgICAgCisgICAgc2V0VGltZW91dChnZXRXaGlsZUluYWN0aXZlLCAwKTsKKyAgICAKKyAg
ICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgbG9nKCJy
ZWFkb25seSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0IiArIGV2ZW50KTsKKyAgICAgICAg
ZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihl
dmVudCkgeworICAgICAgICBsb2coInJlYWRvbmx5IHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7Cisg
ICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgbG9nKCJyZWFkb25seSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVk
IGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGQxN2FlN2YuLmM5ZmVkYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC05MTIsNiArOTEyLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCiAgICAg
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3Bw
CiAKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29ySW5mby5jcHAKICAgICBN
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmNwcAogICAgIE1vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCSW5kZXhJbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ1NDg3ZjMuLmRmM2E5ZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOTIgQEAKKzIwMTUtMTEtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJREI6IFBpcGUgdGhyb3VnaCBjdXJzb3Ig
ZnVuY3Rpb25zIGZyb20gY2xpZW50IHRvIHNlcnZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTE5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
Y3Vyc29yLTEuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29w
ZW5jdXJzb3ItZmFpbHVyZXMuaHRtbAorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBt
b3N0IElEQkN1cnNvciBjb25zaWRlcmF0aW9ucyBhdCB0aGUgSURMIGxldmVsLCBhcyB3ZWxsIGFz
IHBpcGVzIHRoZQorICAgICAgICBhcHByb3ByaWF0ZSBtZXNzYWdlcyB0aHJvdWdoIGZyb20gY2xp
ZW50IHRvIHNlcnZlci4KKyAgICAgICAgCisgICAgICAgIEFsbCBvcGVyYXRpb25zIGN1cnJlbnRs
eSBlbmQgaW4gZXJyb3JzLiBCdWcgMTUxMTk2IHdpbGwgZml4IHRoYXQgYnkgbWFraW5nIGN1cnNv
cnMgZnVuY3Rpb25hbC4KKyAgICAgICAgCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6
OmlzS2V5Q3Vyc29yKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3JXaXRoVmFsdWUuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJl
c3VsdC5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6c3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QktleURhdGE6OmRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6bnVtYmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OmFycmF5KToKKworICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L0lEQkFueUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJB
bnk6OklEQkFueSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkFueTo6aWRiQ3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQW55OjppZGJDdXJzb3JXaXRo
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJBbnk6OmlkYkluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQW55OjppZGJPYmplY3RTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkFueTo6bW9kZXJuSURCQ3Vyc29yKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQW55SW1wbC5oOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpJREJBbnk6OmNyZWF0ZSk6CisKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpvcGVuQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRPcGVu
Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2Vy
dmVyOjppdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29u
bmVjdGlvblRvU2VydmVyOjpkaWRJdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmg6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmg6CisKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29ySW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkN1cnNvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjpJREJDdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJDdXJzb3I6OnNvdXJjZXNEZWxldGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjplZmZlY3RpdmVPYmplY3RTdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkN1cnNvcjo6dHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpJREJDdXJzb3I6OmRpcmVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQkN1cnNvcjo6a2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNs
aWVudDo6SURCQ3Vyc29yOjpwcmltYXJ5S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVu
dDo6SURCQ3Vyc29yOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkN1
cnNvcjo6c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjp1
cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDdXJzb3I6OmFkdmFuY2Up
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDdXJzb3I6OnVuY2hlY2tlZEl0
ZXJhdG9yQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjpk
ZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkN1cnNvcjo6
c2V0R2V0UmVzdWx0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vy
c29ySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDdXJzb3I6OmluZm8p
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDdXJzb3I6OnNldFJlcXVlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDdXJzb3I6OmNsZWFyUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkN1cnNvcjo6cmVxdWVzdCk6CisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yV2l0aFZhbHVlOjpJREJD
dXJzb3JXaXRoVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDdXJzb3JX
aXRoVmFsdWU6On5JREJDdXJzb3JXaXRoVmFsdWUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJDdXJzb3JXaXRoVmFsdWVJbXBsLmg6CisKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkNsaWVudDo6SURCSW5kZXg6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xp
ZW50OjpJREJJbmRleDo6b3BlbktleUN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQkluZGV4SW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJ
REJJbmRleDo6bW9kZXJuT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50
OjpJREJJbmRleDo6aXNEZWxldGVkKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9JREJPYmplY3RTdG9yZUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50
OjpJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGll
bnQ6OklEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5oOgorCisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkNsaWVudDo6SURCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNs
aWVudDo6SURCUmVxdWVzdDo6SURCUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGll
bnQ6OklEQlJlcXVlc3Q6On5JREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVu
dDo6SURCUmVxdWVzdDo6c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURC
UmVxdWVzdDo6cmVzdWx0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURC
UmVxdWVzdDo6d2lsbEl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50
OjpJREJSZXF1ZXN0OjpkaWRPcGVuT3JJdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkNsaWVudDo6SURCUmVxdWVzdDo6cmVxdWVzdENvbXBsZXRlZCk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDbGllbnQ6OklEQlJlcXVlc3Q6Om1vZGVyblJlc3VsdCk6CisKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246OmRvUmVxdWVzdE9wZW5D
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6b3Bl
bkN1cnNvck9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNh
Y3Rpb246OmRpZE9wZW5DdXJzb3JPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGll
bnQ6OklEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkNsaWVudDo6SURCVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3JPblNlcnZlcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjpkaWRJdGVyYXRlQ3Vyc29yT25T
ZXJ2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlv
bkltcGwuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlv
bk9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpjcmVhdGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbik6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVn
YWN5Q3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUN1cnNvcjo6c291cmNlKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5Q3Vyc29yLmg6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q3Vyc29yOjppc0tleUN1cnNvcik6IERlbGV0ZWQuCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeUN1cnNvcldpdGhWYWx1ZS5o
OgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5o
OgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0Ns
aWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0Ns
aWVudDo6ZGlkT3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNv
bm5lY3Rpb25Ub0NsaWVudDo6ZGlkSXRlcmF0ZUN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oOgorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6b3BlbkN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oOgorCisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6b3BlbkN1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6aXRlcmF0
ZUN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJh
Y2tpbmdTdG9yZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZTo6cGVyZm9ybU9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybU9wZW5DdXJzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6aXRlcmF0ZUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3Jt
SXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRh
dGFiYXNlOjpkaWRQZXJmb3JtSXRlcmF0ZUN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmRlbGV0
ZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb246Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oOgor
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkN1cnNvckluZm8uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckluZm86Om9iamVjdFN0b3JlQ3Vyc29y
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckluZm86OmluZGV4Q3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkN1cnNvckluZm86OklEQkN1cnNvckluZm8pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ3Vyc29ySW5mbzo6aXNEaXJlY3Rpb25Gb3J3YXJkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkN1cnNvckluZm86Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQkN1cnNvckluZm8uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
REJDdXJzb3JJbmZvOjppZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcklu
Zm86OnNvdXJjZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29ySW5mbzo6
Y3Vyc29yU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckluZm86OmN1cnNvckRp
cmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JJbmZvOjpjdXJzb3JUeXBlKToK
KworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6Om9wZW5DdXJzb3JTdWNjZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6Oml0ZXJhdGVDdXJzb3JTdWNjZXNzKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oOgorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZE9wZW5DdXJzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRJdGVyYXRlQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkN1cnNvcik6CisgICAgICAg
IChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaDoKKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aWRiS2V5RGF0YVRvSlNWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSURCQmluZGlu
Z1V0aWxpdGllcy5oOgorCisgICAgICAgICogcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29ySW5mbz46OmNvcHkpOgorICAgICAgICAqIHBs
YXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmg6CisKIDIwMTUtMTEtMTIgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBJZ25vcmUgdmlzaXRlZCBiYWNrZ3JvdW5kIGNv
bG9yIHdoZW4gZGVjaWRpbmcgaWYgdGhlIGlucHV0IHJlbmRlcmVyIG5lZWRzIHRvIGJlIHBhaW50
ZWQgbmF0aXZlbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5oCmluZGV4IDZjNWM4ZDYuLjQwYjI4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXkoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgcHJpbWFyeUtleSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSgp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIElEQkFueSogc291cmNlKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgSURCQW55KiBzb3VyY2UoKSA9IDA7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxJREJS
ZXF1ZXN0PiB1cGRhdGUoSlNDOjpFeGVjU3RhdGUmLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYs
IEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFkdmFuY2UodW5zaWduZWQg
bG9uZywgRXhjZXB0aW9uQ29kZSYpID0gMDsKQEAgLTcyLDEwICs3MiwxMCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKSA9IDA7
CiAgICAgdmlydHVhbCBSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIGJvb2wg
aXNLZXlDdXJzb3IoKSBjb25zdCA9IDA7CisKIHByb3RlY3RlZDoKICAgICBJREJDdXJzb3IoKTsK
LQotICAgIHZpcnR1YWwgYm9vbCBpc0tleUN1cnNvcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yV2l0aFZhbHVlLmgKaW5kZXggYzUzMTlhMC4uNWY5
OTA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vy
c29yV2l0aFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yV2l0aFZhbHVlLmgKQEAgLTM4LDggKzM4LDYgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6
CiAgICAgSURCQ3Vyc29yV2l0aFZhbHVlKCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNLZXlDdXJz
b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCR2V0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRS
ZXN1bHQuaAppbmRleCBmM2JlZjM3Li5lOWU5MDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaApAQCAtODksNiArODksNyBAQCBzdHJ1Y3Qg
SURCR2V0UmVzdWx0IHsKIAogICAgIFRocmVhZFNhZmVEYXRhQnVmZmVyIHZhbHVlQnVmZmVyOwog
ICAgIElEQktleURhdGEga2V5RGF0YTsKKyAgICBJREJLZXlEYXRhIHByaW1hcnlLZXlEYXRhOwog
ICAgIElEQktleVBhdGgga2V5UGF0aDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQktleURhdGEuaAppbmRleCAxNDY5YWZkLi41MTM0YTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5oCkBAIC0xMjgsNiArMTI4
LDMwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSURCS2V5RGF0YSBkZWxldGVkVmFsdWUoKTsKICAg
ICBib29sIGlzRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pc0RlbGV0ZWRWYWx1ZTsg
fQogCisgICAgU3RyaW5nIHN0cmluZygpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90
eXBlID09IEtleVR5cGU6OlN0cmluZyk7CisgICAgICAgIHJldHVybiBtX3N0cmluZ1ZhbHVlOwor
ICAgIH0KKworICAgIGRvdWJsZSBkYXRlKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X3R5cGUgPT0gS2V5VHlwZTo6RGF0ZSk7CisgICAgICAgIHJldHVybiBtX251bWJlclZhbHVlOwor
ICAgIH0KKworICAgIGRvdWJsZSBudW1iZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBLZXlUeXBlOjpOdW1iZXIpOworICAgICAgICByZXR1cm4gbV9udW1iZXJWYWx1
ZTsKKyAgICB9CisKKyAgICBjb25zdCBWZWN0b3I8SURCS2V5RGF0YT4mIGFycmF5KCkgY29uc3QK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gS2V5VHlwZTo6QXJyYXkpOworICAgICAg
ICByZXR1cm4gbV9hcnJheVZhbHVlOworICAgIH0KKwogcHJpdmF0ZToKICAgICBLZXlUeXBlIG1f
dHlwZTsKICAgICBWZWN0b3I8SURCS2V5RGF0YT4gbV9hcnJheVZhbHVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaAppbmRleCA1YjhiMDBlLi5hNWU1Mzhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaApAQCAt
NjEsNiArNjEsMTEgQEAgZW51bSBjbGFzcyBDdXJzb3JUeXBlIHsKIH07CiBjb25zdCB1bnNpZ25l
ZCBDdXJzb3JUeXBlTWF4aW11bSA9IDE7CiAKK2VudW0gY2xhc3MgQ3Vyc29yU291cmNlIHsKKyAg
ICBJbmRleCwKKyAgICBPYmplY3RTdG9yZSwKK307CisKIGVudW0gY2xhc3MgVmVyc2lvbk51bGxu
ZXNzIHsKICAgICBOdWxsLAogICAgIE5vbk51bGwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQW55SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQW55SW1wbC5jcHAKaW5kZXggMGM4NDQ1My4u
N2E5NDAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L0lEQkFueUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJBbnlJbXBsLmNwcApAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCQW55LmgiCi0jaW5jbHVkZSAiSURCQ3Vyc29y
V2l0aFZhbHVlLmgiCisjaW5jbHVkZSAiSURCQ3Vyc29ySW1wbC5oIgogI2luY2x1ZGUgIklEQkZh
Y3RvcnkuaCIKICNpbmNsdWRlICJJREJJbmRleC5oIgogCkBAIC01OSw2ICs1OSwxNyBAQCBJREJB
bnk6OklEQkFueShSZWY8SURCSW5kZXg+JiYgaW5kZXgpCiB7CiB9CiAKK0lEQkFueTo6SURCQW55
KFJlZjxJREJDdXJzb3I+JiYgY3Vyc29yKQoreworICAgIGlmIChjdXJzb3ItPmlzS2V5Q3Vyc29y
KCkpIHsKKyAgICAgICAgbV90eXBlID0gSURCQW55OjpUeXBlOjpJREJDdXJzb3I7CisgICAgICAg
IG1fY3Vyc29yID0gV1RGOjptb3ZlKGN1cnNvcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV90
eXBlID0gSURCQW55OjpUeXBlOjpJREJDdXJzb3JXaXRoVmFsdWU7CisgICAgICAgIG1fY3Vyc29y
V2l0aFZhbHVlID0gV1RGOjptb3ZlKGN1cnNvcik7CisgICAgfQorfQorCiBJREJBbnk6OklEQkFu
eShjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogICAgIDogbV90eXBlKElEQkFueTo6VHlwZTo6
S2V5UGF0aCkKICAgICAsIG1faWRiS2V5UGF0aChrZXlQYXRoKQpAQCAtODgsMTIgKzk5LDE0IEBA
IFJlZlB0cjxXZWJDb3JlOjpET01TdHJpbmdMaXN0PiBJREJBbnk6OmRvbVN0cmluZ0xpc3QoKQog
CiBSZWZQdHI8V2ViQ29yZTo6SURCQ3Vyc29yPiBJREJBbnk6OmlkYkN1cnNvcigpCiB7Ci0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBJREJBbnk6OlR5cGU6OklEQkN1
cnNvciB8fCBtX3R5cGUgPT0gSURCQW55OjpUeXBlOjpJREJDdXJzb3JXaXRoVmFsdWUpOworICAg
IHJldHVybiBtX2N1cnNvci5nZXQoKTsKIH0KIAogUmVmUHRyPFdlYkNvcmU6OklEQkN1cnNvcldp
dGhWYWx1ZT4gSURCQW55OjppZGJDdXJzb3JXaXRoVmFsdWUoKQogewotICAgIHJldHVybiBudWxs
cHRyOworICAgIEFTU0VSVChtX3R5cGUgPT0gSURCQW55OjpUeXBlOjpJREJDdXJzb3JXaXRoVmFs
dWUpOworICAgIHJldHVybiBtX2N1cnNvcldpdGhWYWx1ZS5nZXQoKTsKIH0KIAogUmVmUHRyPFdl
YkNvcmU6OklEQkZhY3Rvcnk+IElEQkFueTo6aWRiRmFjdG9yeSgpCkBAIC0xMDMsMTIgKzExNiwx
NCBAQCBSZWZQdHI8V2ViQ29yZTo6SURCRmFjdG9yeT4gSURCQW55OjppZGJGYWN0b3J5KCkKIAog
UmVmUHRyPFdlYkNvcmU6OklEQkluZGV4PiBJREJBbnk6OmlkYkluZGV4KCkKIHsKLSAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQobV90eXBlID09IElEQkFueTo6VHlwZTo6SURCSW5kZXgp
OworICAgIHJldHVybiBtX2luZGV4LmdldCgpOwogfQogCiBSZWZQdHI8V2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmU+IElEQkFueTo6aWRiT2JqZWN0U3RvcmUoKQogewotICAgIHJldHVybiBudWxscHRy
OworICAgIEFTU0VSVChtX3R5cGUgPT0gSURCQW55OjpUeXBlOjpJREJPYmplY3RTdG9yZSk7Cisg
ICAgcmV0dXJuIG1fb2JqZWN0U3RvcmUuZ2V0KCk7CiB9CiAKIElEQk9iamVjdFN0b3JlKiBJREJB
bnk6Om1vZGVybklEQk9iamVjdFN0b3JlKCkKQEAgLTEyMyw2ICsxMzgsMTIgQEAgSURCSW5kZXgq
IElEQkFueTo6bW9kZXJuSURCSW5kZXgoKQogICAgIHJldHVybiBtX2luZGV4LmdldCgpOwogfQog
CitJREJDdXJzb3IqIElEQkFueTo6bW9kZXJuSURCQ3Vyc29yKCkKK3sKKyAgICBBU1NFUlQobV90
eXBlID09IElEQkFueTo6VHlwZTo6SURCQ3Vyc29yIHx8IG1fdHlwZSA9PSBJREJBbnk6OlR5cGU6
OklEQkN1cnNvcldpdGhWYWx1ZSk7CisgICAgcmV0dXJuIG1fY3Vyc29yLmdldCgpOworfQorCiBS
ZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb24+IElEQkFueTo6aWRiVHJhbnNhY3Rpb24oKQog
ewogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQkFueUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJBbnlJbXBsLmgKaW5kZXggNjNhMWY3YS4uOGMzZGYxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkFueUlt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQW55
SW1wbC5oCkBAIC01Myw2ICs1MywxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSURCQW55KFdURjo6bW92ZShpbmRleCkpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgUmVm
UHRyPElEQkFueT4gY3JlYXRlKFJlZjxJREJDdXJzb3I+JiYgY3Vyc29yKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJBbnkoV1RGOjptb3ZlKGN1cnNvcikpKTsKKyAgICB9
CisKICAgICBzdGF0aWMgUmVmUHRyPElEQkFueT4gY3JlYXRlKGNvbnN0IElEQktleVBhdGgmIGtl
eVBhdGgpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkFueShrZXlQYXRo
KSk7CkBAIC04NiwxMiArOTEsMTQgQEAgcHVibGljOgogCiAgICAgSURCT2JqZWN0U3RvcmUqIG1v
ZGVybklEQk9iamVjdFN0b3JlKCk7CiAgICAgSURCSW5kZXgqIG1vZGVybklEQkluZGV4KCk7Cisg
ICAgSURCQ3Vyc29yKiBtb2Rlcm5JREJDdXJzb3IoKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBJREJBbnkoSURCQW55OjpUeXBlKTsKICAgICBleHBsaWNpdCBJREJBbnkoUmVmPElEQkRhdGFi
YXNlPiYmKTsKICAgICBleHBsaWNpdCBJREJBbnkoUmVmPElEQk9iamVjdFN0b3JlPiYmKTsKICAg
ICBleHBsaWNpdCBJREJBbnkoUmVmPElEQkluZGV4PiYmKTsKKyAgICBleHBsaWNpdCBJREJBbnko
UmVmPElEQkN1cnNvcj4mJik7CiAgICAgZXhwbGljaXQgSURCQW55KGNvbnN0IElEQktleVBhdGgm
KTsKICAgICBleHBsaWNpdCBJREJBbnkoY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmKTsK
IApAQCAtOTksNiArMTA2LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCRGF0YWJhc2U+IG1f
ZGF0YWJhc2U7CiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBtX29iamVjdFN0b3JlOwogICAg
IFJlZlB0cjxJREJJbmRleD4gbV9pbmRleDsKKyAgICBSZWZQdHI8SURCQ3Vyc29yPiBtX2N1cnNv
cjsKKyAgICBSZWZQdHI8SURCQ3Vyc29yPiBtX2N1cnNvcldpdGhWYWx1ZTsKIAogICAgIGNvbnN0
IElEQktleVBhdGggbV9pZGJLZXlQYXRoOwogICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlIG1fc2NyaXB0VmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4
IGU5MjA4YjIuLjI3NGZiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCkBA
IC0yMTcsNiArMjE3LDM0IEBAIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWREZWxldGVS
ZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKICAgICBjb21wbGV0ZU9wZXJh
dGlvbihyZXN1bHREYXRhKTsKIH0KIAordm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5D
dXJzb3IoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURCQ3Vyc29ySW5m
byYgaW5mbykKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCQ29ubmVjdGlvblRvU2VydmVyOjpv
cGVuQ3Vyc29yIik7CisKKyAgICBzYXZlT3BlcmF0aW9uKG9wZXJhdGlvbik7CisgICAgbV9kZWxl
Z2F0ZS0+b3BlbkN1cnNvcihJREJSZXF1ZXN0RGF0YShvcGVyYXRpb24pLCBpbmZvKTsKK30KKwor
dm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZE9wZW5DdXJzb3IoY29uc3QgSURCUmVzdWx0
RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCQ29ubmVjdGlvblRv
U2VydmVyOjpkaWRPcGVuQ3Vyc29yIik7CisgICAgY29tcGxldGVPcGVyYXRpb24ocmVzdWx0RGF0
YSk7Cit9CisKK3ZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjppdGVyYXRlQ3Vyc29yKFRyYW5z
YWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQktleURhdGEmIGtleSwgdW5zaWdu
ZWQgbG9uZyBjb3VudCkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjppdGVyYXRlQ3Vyc29yIik7CisKKyAgICBzYXZlT3BlcmF0aW9uKG9wZXJhdGlvbik7Cisg
ICAgbV9kZWxlZ2F0ZS0+aXRlcmF0ZUN1cnNvcihJREJSZXF1ZXN0RGF0YShvcGVyYXRpb24pLCBr
ZXksIGNvdW50KTsKK30KKwordm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZEl0ZXJhdGVD
dXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBMT0coSW5kZXhl
ZERCLCAiSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRJdGVyYXRlQ3Vyc29yIik7CisgICAgY29t
cGxldGVPcGVyYXRpb24ocmVzdWx0RGF0YSk7Cit9CisKIHZvaWQgSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjplc3RhYmxpc2hUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZXN0YWJsaXNoVHJh
bnNhY3Rpb24iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaAppbmRleCA3NmQ2OWRjLi4x
Y2RjZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oCkBAIC0zOCw2ICszOCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSURCQ3Vyc29ySW5mbzsKIGNsYXNzIElE
QkVycm9yOwogY2xhc3MgSURCT2JqZWN0U3RvcmVJbmZvOwogY2xhc3MgSURCUmVzdWx0RGF0YTsK
QEAgLTg1LDYgKzg2LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVJlY29yZChUcmFuc2Fj
dGlvbk9wZXJhdGlvbiYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwogICAgIHZvaWQgZGlkRGVs
ZXRlUmVjb3JkKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAorICAgIHZvaWQgb3BlbkN1cnNvcihU
cmFuc2FjdGlvbk9wZXJhdGlvbiYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKKyAgICB2b2lkIGRp
ZE9wZW5DdXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYpOworCisgICAgdm9pZCBpdGVyYXRlQ3Vy
c29yKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgY29uc3QgSURCS2V5RGF0YSYsIHVuc2lnbmVkIGxv
bmcgY291bnQpOworICAgIHZvaWQgZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXN1bHREYXRh
Jik7CisKICAgICB2b2lkIGNvbW1pdFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJik7CiAgICAg
dm9pZCBkaWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZl
ckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaAppbmRleCAyMzA1NjRkLi5mOWI4YzljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblRvU2VydmVyRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaApAQCAtMzIsOCArMzIs
MTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJREJDdXJzb3JJbmZvOwogY2xh
c3MgSURCSW5kZXhJbmZvOwogY2xhc3MgSURCS2V5OworY2xhc3MgSURCS2V5RGF0YTsKIGNsYXNz
IElEQk9iamVjdFN0b3JlSW5mbzsKIGNsYXNzIElEQlJlcXVlc3REYXRhOwogY2xhc3MgSURCUmVz
b3VyY2VJZGVudGlmaWVyOwpAQCAtNjUsNiArNjcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEm
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJl
Y29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IElEQkN1cnNvckluZm8mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGl0ZXJhdGVDdXJzb3IoY29u
c3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgdW5zaWduZWQgbG9uZyBjb3Vu
dCkgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIGVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90
IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvckltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvckltcGwuY3BwCmlu
ZGV4IDRhYWU4MWUuLjdlOWM3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJDdXJzb3JJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29ySW1wbC5jcHAKQEAgLTI4LDYxICsyOCwy
NjEgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiRE9NUmVx
dWVzdFN0YXRlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIklEQkJp
bmRpbmdVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgorI2lu
Y2x1ZGUgIklEQkdldFJlc3VsdC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFj
ZSBJREJDbGllbnQgewogCitSZWY8SURCQ3Vyc29yPiBJREJDdXJzb3I6OmNyZWF0ZShJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCQ3Vyc29ySW5m
byYgaW5mbykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJDdXJzb3IodHJhbnNhY3Rp
b24sIGluZGV4LCBpbmZvKSk7Cit9CisKK0lEQkN1cnNvcjo6SURCQ3Vyc29yKElEQlRyYW5zYWN0
aW9uJiwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJDdXJzb3JJbmZvJiBp
bmZvKQorICAgIDogbV9pbmZvKGluZm8pCisgICAgLCBtX3NvdXJjZShhZG9wdFJlZigqSURCQW55
OjpjcmVhdGUob2JqZWN0U3RvcmUpLmxlYWtSZWYoKSkpCisgICAgLCBtX29iamVjdFN0b3JlKCZv
YmplY3RTdG9yZSkKK3sKK30KKworSURCQ3Vyc29yOjpJREJDdXJzb3IoSURCVHJhbnNhY3Rpb24m
LCBJREJJbmRleCYgaW5kZXgsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCisgICAgOiBtX2lu
Zm8oaW5mbykKKyAgICAsIG1fc291cmNlKGFkb3B0UmVmKCpJREJBbnk6OmNyZWF0ZShpbmRleCku
bGVha1JlZigpKSkKKyAgICAsIG1faW5kZXgoJmluZGV4KQoreworfQorCiBJREJDdXJzb3I6On5J
REJDdXJzb3IoKQogewogfQogCitib29sIElEQkN1cnNvcjo6c291cmNlc0RlbGV0ZWQoKSBjb25z
dAoreworICAgIGlmIChtX29iamVjdFN0b3JlKQorICAgICAgICByZXR1cm4gbV9vYmplY3RTdG9y
ZS0+aXNEZWxldGVkKCk7CisKKyAgICBBU1NFUlQobV9pbmRleCk7CisgICAgcmV0dXJuIG1faW5k
ZXgtPmlzRGVsZXRlZCgpIHx8IG1faW5kZXgtPm1vZGVybk9iamVjdFN0b3JlKCkuaXNEZWxldGVk
KCk7Cit9CisKK0lEQk9iamVjdFN0b3JlJiBJREJDdXJzb3I6OmVmZmVjdGl2ZU9iamVjdFN0b3Jl
KCkgY29uc3QKK3sKKyAgICBpZiAobV9vYmplY3RTdG9yZSkKKyAgICAgICAgcmV0dXJuICptX29i
amVjdFN0b3JlOworCisgICAgQVNTRVJUKG1faW5kZXgpOworICAgIHJldHVybiBtX2luZGV4LT5t
b2Rlcm5PYmplY3RTdG9yZSgpOworfQorCitJREJUcmFuc2FjdGlvbiYgSURCQ3Vyc29yOjp0cmFu
c2FjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkubW9k
ZXJuVHJhbnNhY3Rpb24oKTsKK30KKwogY29uc3QgU3RyaW5nJiBJREJDdXJzb3I6OmRpcmVjdGlv
bigpIGNvbnN0CiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gSURCQ3Vyc29yOjpkaXJlY3Rpb25Ub1N0cmluZyhtX2luZm8uY3Vyc29yRGlyZWN0aW9uKCkp
OwogfQogCiBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgSURCQ3Vyc29yOjprZXkoKSBj
b25zdAogewotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG1f
ZGVwcmVjYXRlZEN1cnJlbnRLZXk7CiB9CiAKIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiBJREJDdXJzb3I6OnByaW1hcnlLZXkoKSBjb25zdAogewotICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG1fZGVwcmVjYXRlZEN1cnJlbnRQcmltYXJ5S2V5Owog
fQogCiBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgSURCQ3Vyc29yOjp2YWx1ZSgpIGNv
bnN0CiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbV9k
ZXByZWNhdGVkQ3VycmVudFZhbHVlOworfQorCitJREJBbnkqIElEQkN1cnNvcjo6c291cmNlKCkK
K3sKKyAgICByZXR1cm4gJm1fc291cmNlLmdldCgpOworfQorCitSZWZQdHI8V2ViQ29yZTo6SURC
UmVxdWVzdD4gSURCQ3Vyc29yOjp1cGRhdGUoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgTE9HKElu
ZGV4ZWREQiwgIklEQkN1cnNvcjo6YWR2YW5jZSIpOworCisgICAgaWYgKHNvdXJjZXNEZWxldGVk
KCkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJy
b3I7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmICghdHJhbnNhY3Rp
b24oKS5pc0FjdGl2ZSgpKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRy
YW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgaWYgKHRyYW5zYWN0aW9uKCkuaXNSZWFkT25seSgpKSB7CisgICAgICAgIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246OlJlYWRPbmx5RXJyb3I7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIGlmICghbV9nb3RWYWx1ZSkgeworICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgaWYgKGlzS2V5Q3Vyc29yKCkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIHJldHVybiBlZmZlY3RpdmVPYmplY3RTdG9yZSgpLnB1dChleGVjLCB2
YWx1ZS5qc1ZhbHVlKCksIG1fZGVwcmVjYXRlZEN1cnJlbnRQcmltYXJ5S2V5LmpzVmFsdWUoKSwg
ZWMpOworfQorCit2b2lkIElEQkN1cnNvcjo6YWR2YW5jZSh1bnNpZ25lZCBsb25nIGNvdW50LCBF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vyc29yOjphZHZh
bmNlIik7CisKKyAgICBpZiAoIW1fcmVxdWVzdCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBpZiAoIWNvdW50KSB7CisgICAgICAgIGVjID0gVHlwZUVycm9yOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKHNvdXJjZXNEZWxldGVkKCkpIHsKKyAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIXRyYW5zYWN0aW9uKCkuaXNBY3RpdmUoKSkgeworICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fZ290VmFsdWUpIHsKKyAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICB1bmNoZWNrZWRJdGVyYXRvckN1cnNvcihJREJLZXlEYXRhKCks
IGNvdW50KTsKIH0KIAotSURCQW55KiBJREJDdXJzb3I6OnNvdXJjZSgpIGNvbnN0Cit2b2lkIElE
QkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIGlmICghY29udGV4dCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpJbnZhbGlkU3RhdGVFcnJvcjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnRp
bnVlRnVuY3Rpb24oSURCS2V5RGF0YSgpLCBlYyk7CiB9CiAKLVJlZlB0cjxJREJSZXF1ZXN0PiBJ
REJDdXJzb3I6OnVwZGF0ZShKU0M6OkV4ZWNTdGF0ZSYsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYga2V5VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgaWYgKCFjb250ZXh0KSB7CisgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKKyAgICBSZWZQdHI8
SURCS2V5PiBrZXkgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUsIGtleVZhbHVl
KTsKKyAgICBjb250aW51ZUZ1bmN0aW9uKGtleS5nZXQoKSwgZWMpOwogfQogCi12b2lkIElEQkN1
cnNvcjo6YWR2YW5jZSh1bnNpZ25lZCBsb25nLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQgSURCQ3Vy
c29yOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleURhdGEmIGtleSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBMT0coSW5k
ZXhlZERCLCAiSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uIik7CisKKyAgICBpZiAoIW1fcmVx
dWVzdCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVF
cnJvcjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzb3VyY2VzRGVsZXRlZCgp
KSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9y
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCF0cmFuc2FjdGlvbigpLmlzQWN0
aXZlKCkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25J
bmFjdGl2ZUVycm9yOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtX2dvdFZh
bHVlKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVy
cm9yOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFrZXkuaXNWYWxpZCgpKSB7
CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRhdGFFcnJvcjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmIChtX2luZm8uaXNEaXJlY3Rpb25Gb3J3YXJkKCkpIHsK
KyAgICAgICAgaWYgKGtleS5jb21wYXJlKG1fY3VycmVudFByaW1hcnlLZXlEYXRhKSA8PSAwKSB7
CisgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGtleS5jb21wYXJlKG1f
Y3VycmVudFByaW1hcnlLZXlEYXRhKSA+PSAwKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OkRhdGFFcnJvcjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVuY2hl
Y2tlZEl0ZXJhdG9yQ3Vyc29yKGtleSwgMCk7CiB9CiAKLXZvaWQgSURCQ3Vyc29yOjpjb250aW51
ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJikKK3ZvaWQg
SURCQ3Vyc29yOjp1bmNoZWNrZWRJdGVyYXRvckN1cnNvcihjb25zdCBJREJLZXlEYXRhJiBrZXks
IHVuc2lnbmVkIGxvbmcgY291bnQpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICBtX3JlcXVlc3QtPndpbGxJdGVyYXRlQ3Vyc29yKCp0aGlzKTsKKyAgICB0cmFuc2Fj
dGlvbigpLml0ZXJhdGVDdXJzb3IoKnRoaXMsIGtleSwgY291bnQpOwogfQogCi12b2lkIElEQkN1
cnNvcjo6Y29udGludWVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJikKK1JlZlB0cjxXZWJDb3JlOjpJ
REJSZXF1ZXN0PiBJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rp
b24iKTsKKworICAgIGlmICghY29udGV4dCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgaWYgKHNvdXJjZXNEZWxldGVkKCkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIGlmICghdHJhbnNhY3Rpb24oKS5pc0FjdGl2ZSgpKSB7CisgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKHRyYW5zYWN0aW9uKCkuaXNSZWFk
T25seSgpKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJlYWRPbmx5RXJy
b3I7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmICghbV9nb3RWYWx1
ZSkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJv
cjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGVmZmVjdGl2
ZU9iamVjdFN0b3JlKCkuZGVsZXRlRnVuY3Rpb24oY29udGV4dCwgbV9kZXByZWNhdGVkQ3VycmVu
dFByaW1hcnlLZXkuanNWYWx1ZSgpLCBlYyk7CiB9CiAKLVJlZlB0cjxJREJSZXF1ZXN0PiBJREJD
dXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25D
b2RlJikKK3ZvaWQgSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQoY29uc3QgSURCR2V0UmVzdWx0JikK
IHsKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIExPRyhJbmRleGVkREIs
ICJJREJDdXJzb3I6OnNldEdldFJlc3VsdCIpOworCisgICAgLy8gRklYTUU6IEltcGxlbWVudC4K
KworICAgIG1fZ290VmFsdWUgPSB0cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJREJDbGllbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
dXJzb3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q3Vyc29ySW1wbC5oCmluZGV4IGU4OWI5MWIuLjUwZGQwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDdXJzb3JJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvckltcGwuaApAQCAt
MjgsMTMgKzI4LDI0IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAorI2luY2x1
ZGUgIklEQkFueUltcGwuaCIKKyNpbmNsdWRlICJJREJDdXJzb3JJbmZvLmgiCiAjaW5jbHVkZSAi
SURCQ3Vyc29yV2l0aFZhbHVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IElE
QkdldFJlc3VsdDsKKwogbmFtZXNwYWNlIElEQkNsaWVudCB7CiAKK2NsYXNzIElEQkluZGV4Owor
Y2xhc3MgSURCT2JqZWN0U3RvcmU7CitjbGFzcyBJREJUcmFuc2FjdGlvbjsKKwogY2xhc3MgSURC
Q3Vyc29yIDogcHVibGljIFdlYkNvcmU6OklEQkN1cnNvcldpdGhWYWx1ZSB7CiBwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxJREJDdXJzb3I+IGNyZWF0ZShJREJUcmFuc2FjdGlvbiYsIElEQkluZGV4
JiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOworCiAgICAgdmlydHVhbCB+SURCQ3Vyc29yKCk7CiAK
ICAgICAvLyBJbXBsZW1lbnQgdGhlIElETApAQCAtNDIsMTYgKzUzLDUyIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXkoKSBjb25zdCBvdmVy
cmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBw
cmltYXJ5S2V5KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFsdWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2
aXJ0dWFsIElEQkFueSogc291cmNlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVh
bCBJREJBbnkqIHNvdXJjZSgpIG92ZXJyaWRlIGZpbmFsOwogCi0gICAgdmlydHVhbCBSZWZQdHI8
SURCUmVxdWVzdD4gdXBkYXRlKEpTQzo6RXhlY1N0YXRlJiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBSZWZQdHI8
V2ViQ29yZTo6SURCUmVxdWVzdD4gdXBkYXRlKEpTQzo6RXhlY1N0YXRlJiwgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVh
bCB2b2lkIGFkdmFuY2UodW5zaWduZWQgbG9uZywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZp
bmFsOwogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lk
IGNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKLSAg
ICB2aXJ0dWFsIFJlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwg
UmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CisKKyAgICB2b2lkIGNv
bnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5RGF0YSYsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAg
IGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8oKSBjb25zdCB7IHJldHVybiBtX2luZm87IH0KKwor
ICAgIHZvaWQgc2V0UmVxdWVzdChJREJSZXF1ZXN0JiByZXF1ZXN0KSB7IG1fcmVxdWVzdCA9ICZy
ZXF1ZXN0OyB9CisgICAgdm9pZCBjbGVhclJlcXVlc3QoKSB7IG1fcmVxdWVzdCA9IG51bGxwdHI7
IH0KKyAgICBJREJSZXF1ZXN0KiByZXF1ZXN0KCkgeyByZXR1cm4gbV9yZXF1ZXN0OyB9CisKKyAg
ICB2b2lkIHNldEdldFJlc3VsdChjb25zdCBJREJHZXRSZXN1bHQmKTsKKworICAgIHZpcnR1YWwg
Ym9vbCBpc0tleUN1cnNvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogcHJv
dGVjdGVkOgotICAgIElEQkN1cnNvcigpOworICAgIElEQkN1cnNvcihJREJUcmFuc2FjdGlvbiYs
IElEQk9iamVjdFN0b3JlJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOworICAgIElEQkN1cnNvcihJ
REJUcmFuc2FjdGlvbiYsIElEQkluZGV4JiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOworCitwcml2
YXRlOgorICAgIElEQkN1cnNvckluZm8gbV9pbmZvOworICAgIFJlZjxJREJBbnk+IG1fc291cmNl
OworICAgIElEQk9iamVjdFN0b3JlKiBtX29iamVjdFN0b3JlIHsgbnVsbHB0ciB9OworICAgIElE
QkluZGV4KiBtX2luZGV4IHsgbnVsbHB0ciB9OworICAgIElEQlJlcXVlc3QqIG1fcmVxdWVzdDsK
KworICAgIGJvb2wgc291cmNlc0RlbGV0ZWQoKSBjb25zdDsKKyAgICBJREJPYmplY3RTdG9yZSYg
ZWZmZWN0aXZlT2JqZWN0U3RvcmUoKSBjb25zdDsKKyAgICBJREJUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24oKSBjb25zdDsKKworICAgIHZvaWQgdW5jaGVja2VkSXRlcmF0b3JDdXJzb3IoY29uc3Qg
SURCS2V5RGF0YSYsIHVuc2lnbmVkIGxvbmcgY291bnQpOworCisgICAgYm9vbCBtX2dvdFZhbHVl
IHsgZmFsc2UgfTsKKworICAgIElEQktleURhdGEgbV9jdXJyZW50UHJpbWFyeUtleURhdGE7CisK
KyAgICAvLyBGSVhNRTogV2hlbiBkaXRjaGluZyBMZWdhY3kgSURCIGFuZCBjb21iaW5pbmcgdGhp
cyBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZSBhYnN0cmFjdCBJREJDdXJzb3IsCisgICAgLy8gdGhl
c2UgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbWVtYmVycyBzaG91bGQgYmUgSlNWYWx1ZXMgaW5z
dGVhZC4KKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2RlcHJlY2F0ZWRDdXJyZW50S2V5
OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1fZGVwcmVjYXRlZEN1cnJlbnRQcmltYXJ5
S2V5OworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIG1fZGVwcmVjYXRlZEN1cnJlbnRWYWx1
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElEQkNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvcldpdGhWYWx1ZUltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvcldpdGhW
YWx1ZUltcGwuY3BwCmluZGV4IDRkMzJlNzUuLmVlZWRiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDdXJzb3JXaXRoVmFsdWVJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29y
V2l0aFZhbHVlSW1wbC5jcHAKQEAgLTI5LDcgKzI5LDMzIEBACiAjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJREJDbGllbnQgewog
CitSZWY8SURCQ3Vyc29yV2l0aFZhbHVlPiBJREJDdXJzb3JXaXRoVmFsdWU6OmNyZWF0ZShJREJU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29u
c3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJD
dXJzb3JXaXRoVmFsdWUodHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlLCBpbmZvKSk7Cit9CisKK1Jl
ZjxJREJDdXJzb3JXaXRoVmFsdWU+IElEQkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRlKElEQlRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbiwgSURCSW5kZXgmIGluZGV4LCBjb25zdCBJREJDdXJzb3JJbmZv
JiBpbmZvKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElEQkN1cnNvcldpdGhWYWx1ZSh0
cmFuc2FjdGlvbiwgaW5kZXgsIGluZm8pKTsKK30KKworSURCQ3Vyc29yV2l0aFZhbHVlOjpJREJD
dXJzb3JXaXRoVmFsdWUoSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBJREJPYmplY3RTdG9y
ZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCisgICAgOiBJREJDdXJz
b3IodHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlLCBpbmZvKQoreworfQorCitJREJDdXJzb3JXaXRo
VmFsdWU6OklEQkN1cnNvcldpdGhWYWx1ZShJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIElE
QkluZGV4JiBpbmRleCwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKKyAgICA6IElEQkN1cnNv
cih0cmFuc2FjdGlvbiwgaW5kZXgsIGluZm8pCit7Cit9CisKK0lEQkN1cnNvcldpdGhWYWx1ZTo6
fklEQkN1cnNvcldpdGhWYWx1ZSgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIElEQkNsaWVudAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQkN1cnNvcldpdGhWYWx1ZUltcGwuaAppbmRleCBhZGRhYjZmLi5kZjM0Y2Rl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q3Vyc29yV2l0aFZhbHVlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJDdXJzb3JXaXRoVmFsdWVJbXBsLmgKQEAgLTM1LDEwICszNSwxNiBAQCBu
YW1lc3BhY2UgSURCQ2xpZW50IHsKIAogY2xhc3MgSURCQ3Vyc29yV2l0aFZhbHVlIDogcHVibGlj
IElEQkN1cnNvciB7CiBwdWJsaWM6CisgICAgc3RhdGljIFJlZjxJREJDdXJzb3JXaXRoVmFsdWU+
IGNyZWF0ZShJREJUcmFuc2FjdGlvbiYsIElEQk9iamVjdFN0b3JlJiwgY29uc3QgSURCQ3Vyc29y
SW5mbyYpOworICAgIHN0YXRpYyBSZWY8SURCQ3Vyc29yV2l0aFZhbHVlPiBjcmVhdGUoSURCVHJh
bnNhY3Rpb24mLCBJREJJbmRleCYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKKwogICAgIHZpcnR1
YWwgfklEQkN1cnNvcldpdGhWYWx1ZSgpOwogCisgICAgdmlydHVhbCBib29sIGlzS2V5Q3Vyc29y
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKwogcHJpdmF0ZToKLSAg
ICBJREJDdXJzb3JXaXRoVmFsdWUoKTsKKyAgICBJREJDdXJzb3JXaXRoVmFsdWUoSURCVHJhbnNh
Y3Rpb24mLCBJREJPYmplY3RTdG9yZSYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKKyAgICBJREJD
dXJzb3JXaXRoVmFsdWUoSURCVHJhbnNhY3Rpb24mLCBJREJJbmRleCYsIGNvbnN0IElEQkN1cnNv
ckluZm8mKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElEQkNsaWVudApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkluZGV4SW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmNwcApp
bmRleCBmNjliMmE3Li5mMDkyNTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmNwcApAQCAtMzEsNiArMzEsOCBA
QAogI2luY2x1ZGUgIkRPTVJlcXVlc3RTdGF0ZS5oIgogI2luY2x1ZGUgIklEQkFueUltcGwuaCIK
ICNpbmNsdWRlICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiSURCQ3Vyc29ySW1w
bC5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCS2V5
UmFuZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVJbXBsLmgiCiAjaW5jbHVkZSAi
SURCVHJhbnNhY3Rpb25JbXBsLmgiCkBAIC04NCwxNCArODYsMzcgQEAgYm9vbCBJREJJbmRleDo6
bXVsdGlFbnRyeSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5mby5tdWx0aUVudHJ5KCk7CiB9CiAK
LVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJikKK1JlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBJREJLZXlSYW5nZSogcmFuZ2UsIGNvbnN0
IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6
b3BlbkN1cnNvciIpOworCisgICAgaWYgKG1fZGVsZXRlZCB8fCBtX29iamVjdFN0b3JlLT5pc0Rl
bGV0ZWQoKSkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3Rh
dGVFcnJvcjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKCFtX29i
amVjdFN0b3JlLT5tb2Rlcm5UcmFuc2FjdGlvbigpLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlv
biBkaXJlY3Rpb24gPSBJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmlu
ZywgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRv
IGluZm8gPSBJREJDdXJzb3JJbmZvOjppbmRleEN1cnNvcihtX29iamVjdFN0b3JlLT5tb2Rlcm5U
cmFuc2FjdGlvbigpLCBtX2luZm8uaWRlbnRpZmllcigpLCByYW5nZSwgZGlyZWN0aW9uLCBJbmRl
eGVkREI6OkN1cnNvclR5cGU6OktleUFuZFZhbHVlKTsKKyAgICBSZWY8SURCUmVxdWVzdD4gcmVx
dWVzdCA9IG1fb2JqZWN0U3RvcmUtPm1vZGVyblRyYW5zYWN0aW9uKCkucmVxdWVzdE9wZW5DdXJz
b3IoKmNvbnRleHQsICp0aGlzLCBpbmZvKTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKHJlcXVlc3Qp
OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwg
Y29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVz
dD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rp
b24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4OjpvcGVuQ3Vyc29yIik7CisgICAgUmVm
UHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRleHQsIGtl
eSwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1
cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXlSYW5nZS5nZXQoKSwgZGlyZWN0aW9uLCBlYyk7CiB9
CiAKIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xNTksMTQgKzE4
NCwzNyBAQCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6OmRvQ291bnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgYwogICAgIHJldHVybiB0cmFuc2FjdGlvbi5y
ZXF1ZXN0Q291bnQoY29udGV4dCwgKnRoaXMsIHJhbmdlKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OklEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBJREJLZXlSYW5nZSosIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKQorUmVmUHRy
PFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIElEQktleVJhbmdlKiByYW5nZSwgY29uc3QgU3RyaW5nJiBk
aXJlY3Rpb25TdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4OjpvcGVuS2V5Q3Vy
c29yIik7CisKKyAgICBpZiAobV9kZWxldGVkIHx8IG1fb2JqZWN0U3RvcmUtPmlzRGVsZXRlZCgp
KSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9y
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoIW1fb2JqZWN0U3Rv
cmUtPm1vZGVyblRyYW5zYWN0aW9uKCkuaXNBY3RpdmUoKSkgeworICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworICAgIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVj
dGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBlYyk7
CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gaW5mbyA9
IElEQkN1cnNvckluZm86OmluZGV4Q3Vyc29yKG1fb2JqZWN0U3RvcmUtPm1vZGVyblRyYW5zYWN0
aW9uKCksIG1faW5mby5pZGVudGlmaWVyKCksIHJhbmdlLCBkaXJlY3Rpb24sIEluZGV4ZWREQjo6
Q3Vyc29yVHlwZTo6S2V5T25seSk7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBtX29i
amVjdFN0b3JlLT5tb2Rlcm5UcmFuc2FjdGlvbigpLnJlcXVlc3RPcGVuQ3Vyc29yKCpjb250ZXh0
LCAqdGhpcywgaW5mbyk7CisgICAgcmV0dXJuIFdURjo6bW92ZShyZXF1ZXN0KTsKIH0KIAotUmVm
UHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQklu
ZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6b3BlbktleUN1cnNvciIpOworICAgIFJlZlB0
cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShjb250ZXh0LCBrZXks
IGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJu
IG9wZW5LZXlDdXJzb3IoY29udGV4dCwga2V5UmFuZ2UuZ2V0KCksIGRpcmVjdGlvbiwgZWMpOwog
fQogCiBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBJREJLZXlSYW5nZSogcmFuZ2UsIEV4Y2VwdGlvbkNvZGUm
IGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQkluZGV4SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQkluZGV4SW1wbC5oCmluZGV4IDUwODA5YzMuLjE3MDRkZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJJbmRleEltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmgKQEAg
LTc3LDYgKzc3LDkgQEAgcHVibGljOgogCiAgICAgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKCkg
Y29uc3QgeyByZXR1cm4gbV9pbmZvOyB9CiAKKyAgICBJREJPYmplY3RTdG9yZSYgbW9kZXJuT2Jq
ZWN0U3RvcmUoKSB7IHJldHVybiBtX29iamVjdFN0b3JlLmdldCgpOyB9CisgICAgYm9vbCBpc0Rl
bGV0ZWQoKSBjb25zdCB7IHJldHVybiBtX2RlbGV0ZWQ7IH0KKwogcHJpdmF0ZToKICAgICBJREJJ
bmRleChjb25zdCBJREJJbmRleEluZm8mLCBJREJPYmplY3RTdG9yZSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmpl
Y3RTdG9yZUltcGwuY3BwCmluZGV4IDkwZjAwMDEuLmIzNDQwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RT
dG9yZUltcGwuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJET01SZXF1ZXN0U3Rh
dGUuaCIKICNpbmNsdWRlICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiSURCQ3Vy
c29ySW1wbC5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAi
SURCRXJyb3IuaCIKICNpbmNsdWRlICJJREJJbmRleEltcGwuaCIKQEAgLTg5LDI5ICs5MCw1MSBA
QCBib29sIElEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50KCkgY29uc3QKICAgICByZXR1cm4g
bV9pbmZvLmF1dG9JbmNyZW1lbnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNl
cHRpb25Db2RlJikKK1JlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6
b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBv
cGVuQ3Vyc29yKGNvbnRleHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdlKj4obnVsbHB0ciksIGVj
KTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVu
Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNv
ZGUmKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vy
c29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIElEQktleVJhbmdlKiBrZXlSYW5n
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXlSYW5nZSwgSURCQ3Vyc29yOjpk
aXJlY3Rpb25OZXh0KCksIGVjKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElE
Qk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKQorUmVmUHRyPFdlYkNvcmU6
OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5LCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQo
KSwgZWMpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6
Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgY29uc3Qg
U3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURC
T2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
SURCS2V5UmFuZ2UqIHJhbmdlLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvblN0cmluZywgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBM
T0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IiKTsKKworICAgIGlmICht
X2RlbGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0
YXRlRXJyb3I7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmICghbV90
cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiA9IElEQkN1
cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBlYyk7CisgICAgaWYgKGVj
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gaW5mbyA9IElEQkN1cnNvcklu
Zm86Om9iamVjdFN0b3JlQ3Vyc29yKG1fdHJhbnNhY3Rpb24uZ2V0KCksIG1faW5mby5pZGVudGlm
aWVyKCksIHJhbmdlLCBkaXJlY3Rpb24pOworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0g
bV90cmFuc2FjdGlvbi0+cmVxdWVzdE9wZW5DdXJzb3IoKmNvbnRleHQsICp0aGlzLCBpbmZvKTsK
KyAgICByZXR1cm4gV1RGOjptb3ZlKHJlcXVlc3QpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURC
UmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0
aW9uQ29kZSYpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9w
ZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgUmVmUHRy
PElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwg
ZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gb3BlbkN1
cnNvcihjb250ZXh0LCBrZXlSYW5nZS5nZXQoKSwgZGlyZWN0aW9uLCBlYyk7CiB9CiAKIFJlZlB0
cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4
Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzA4LDYgKzMzMSwxMSBAQCBSZWZQdHI8V2ViQ29yZTo6SURC
UmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleAogCiBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0
ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIHJldHVybiBk
ZWxldGVGdW5jdGlvbihjb250ZXh0LCBrZXkuanNWYWx1ZSgpLCBlYyk7Cit9CisKK1JlZlB0cjxX
ZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgSlNDOjpKU1ZhbHVlIGtleSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CiAgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKICAg
ICBSZWZQdHI8SURCS2V5PiBpZGJLZXkgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3Rh
dGUsIGtleSk7CiAgICAgaWYgKCFpZGJLZXkgfHwgaWRiS2V5LT50eXBlKCkgPT0gS2V5VHlwZTo6
SW52YWxpZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5oCmluZGV4IDkyZTdkYWYuLjczZDE2N2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJP
YmplY3RTdG9yZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmgKQEAgLTc4LDYgKzc4LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsK
ICAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0
aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOwogCisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVl
c3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBKU0M6OkpTVmFsdWUg
a2V5LCBFeGNlcHRpb25Db2RlJik7CisKICAgICB2b2lkIG1hcmtBc0RlbGV0ZWQoKTsKICAgICBi
b29sIGlzRGVsZXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsZXRlZDsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJ
bXBsLmNwcAppbmRleCA5OGFlYWQ1Li5jNTZhNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJET01SZXF1ZXN0U3RhdGUuaCIKICNpbmNsdWRlICJF
dmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiSURCQmluZGluZ1V0aWxpdGllcy5oIgorI2luY2x1ZGUg
IklEQkN1cnNvckltcGwuaCIKICNpbmNsdWRlICJJREJFdmVudERpc3BhdGNoZXIuaCIKICNpbmNs
dWRlICJJREJLZXlEYXRhLmgiCiAjaW5jbHVkZSAiSURCUmVzdWx0RGF0YS5oIgpAQCAtNDcsNiAr
NDgsMTEgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBJREJPYmplY3RTdG8KICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBJREJSZXF1ZXN0KGNvbnRleHQsIG9iamVjdFN0b3JlLCB0cmFuc2FjdGlvbikpOwogfQogCitS
ZWY8SURCUmVxdWVzdD4gSURCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIElEQkN1cnNvciYgY3Vyc29yLCBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24p
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCUmVxdWVzdChjb250ZXh0LCBjdXJzb3Is
IHRyYW5zYWN0aW9uKSk7Cit9CisKIFJlZjxJREJSZXF1ZXN0PiBJREJSZXF1ZXN0OjpjcmVhdGVD
b3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJJbmRleCYgaW5kZXgsIElE
QlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
REJSZXF1ZXN0KGNvbnRleHQsIGluZGV4LCB0cmFuc2FjdGlvbikpOwpAQCAtNzUsNiArODEsMjMg
QEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3QKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKIH0KIAor
SURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJ
REJDdXJzb3ImIGN1cnNvciwgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQorICAgIDogSURC
T3BlbkRCUmVxdWVzdCgmY29udGV4dCkKKyAgICAsIG1fdHJhbnNhY3Rpb24oJnRyYW5zYWN0aW9u
KQorICAgICwgbV9jb25uZWN0aW9uKHRyYW5zYWN0aW9uLnNlcnZlckNvbm5lY3Rpb24oKSkKKyAg
ICAsIG1fcmVzb3VyY2VJZGVudGlmaWVyKHRyYW5zYWN0aW9uLnNlcnZlckNvbm5lY3Rpb24oKSkK
KyAgICAsIG1fcGVuZGluZ0N1cnNvcigmY3Vyc29yKQoreworICAgIHN1c3BlbmRJZk5lZWRlZCgp
OworCisgICAgY3Vyc29yLnNldFJlcXVlc3QoKnRoaXMpOworCisgICAgYXV0byogY3Vyc29yU291
cmNlID0gY3Vyc29yLnNvdXJjZSgpOworICAgIEFTU0VSVChjdXJzb3JTb3VyY2UpOworICAgIEFT
U0VSVChjdXJzb3JTb3VyY2UtPnR5cGUoKSA9PSBJREJBbnk6OlR5cGU6OklEQk9iamVjdFN0b3Jl
IHx8IGN1cnNvclNvdXJjZS0+dHlwZSgpID09IElEQkFueTo6VHlwZTo6SURCSW5kZXgpOworICAg
IG1fc291cmNlID0gY3Vyc29yU291cmNlOworfQorCiBJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElEQkluZGV4JiBpbmRleCwgSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uKQogICAgIDogSURCT3BlbkRCUmVxdWVzdCgmY29udGV4dCkKICAg
ICAsIG1fdHJhbnNhY3Rpb24oJnRyYW5zYWN0aW9uKQpAQCAtOTMsNiArMTE2LDExIEBAIElEQlJl
cXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCSW5k
ZXgmIGluZGV4LCBJbmRleGVkCiAKIElEQlJlcXVlc3Q6On5JREJSZXF1ZXN0KCkKIHsKKyAgICBp
ZiAobV9yZXN1bHQpIHsKKyAgICAgICAgYXV0byB0eXBlID0gbV9yZXN1bHQtPnR5cGUoKTsKKyAg
ICAgICAgaWYgKHR5cGUgPT0gSURCQW55OjpUeXBlOjpJREJDdXJzb3IgfHwgdHlwZSA9PSBJREJB
bnk6OlR5cGU6OklEQkN1cnNvcldpdGhWYWx1ZSkKKyAgICAgICAgICAgIG1fcmVzdWx0LT5tb2Rl
cm5JREJDdXJzb3IoKS0+Y2xlYXJSZXF1ZXN0KCk7CisgICAgfQogfQogCiBSZWZQdHI8V2ViQ29y
ZTo6SURCQW55PiBJREJSZXF1ZXN0OjpyZXN1bHQoRXhjZXB0aW9uQ29kZSYpIGNvbnN0CkBAIC0x
MTIsNyArMTQwLDcgQEAgUmVmUHRyPERPTUVycm9yPiBJREJSZXF1ZXN0OjplcnJvcihFeGNlcHRp
b25Db2RlJikgY29uc3QKIAogUmVmUHRyPFdlYkNvcmU6OklEQkFueT4gSURCUmVxdWVzdDo6c291
cmNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9zb3VyY2U7
CiB9CiAKIFJlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbj4gSURCUmVxdWVzdDo6dHJhbnNh
Y3Rpb24oKSBjb25zdApAQCAtMjYxLDggKzI4OSw0NiBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJl
c3VsdFRvVW5kZWZpbmVkKCkKICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlVW5kZWZpbmVk
KCk7CiB9CiAKK0lEQkN1cnNvciogSURCUmVxdWVzdDo6cmVzdWx0Q3Vyc29yKCkKK3sKKyAgICBp
ZiAoIW1fcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAobV9yZXN1bHQt
PnR5cGUoKSA9PSBJREJBbnk6OlR5cGU6OklEQkN1cnNvciB8fCBtX3Jlc3VsdC0+dHlwZSgpID09
IElEQkFueTo6VHlwZTo6SURCQ3Vyc29yV2l0aFZhbHVlKQorICAgICAgICByZXR1cm4gbV9yZXN1
bHQtPm1vZGVybklEQkN1cnNvcigpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIElE
QlJlcXVlc3Q6OndpbGxJdGVyYXRlQ3Vyc29yKElEQkN1cnNvciYgY3Vyc29yKQoreworICAgIEFT
U0VSVChtX3JlYWR5U3RhdGUgPT0gSURCUmVxdWVzdFJlYWR5U3RhdGU6OkRvbmUpOworICAgIEFT
U0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9u
KTsKKyAgICBBU1NFUlQoIW1fcGVuZGluZ0N1cnNvcik7CisgICAgQVNTRVJUKCZjdXJzb3IgPT0g
cmVzdWx0Q3Vyc29yKCkpOworCisgICAgbV9wZW5kaW5nQ3Vyc29yID0gJmN1cnNvcjsKKyAgICBt
X3Jlc3VsdCA9IG51bGxwdHI7CisgICAgbV9yZWFkeVN0YXRlID0gSURCUmVxdWVzdFJlYWR5U3Rh
dGU6OlBlbmRpbmc7CisgICAgbV9kb21FcnJvciA9IG51bGxwdHI7CisgICAgbV9pZGJFcnJvciA9
IHsgfTsKK30KKwordm9pZCBJREJSZXF1ZXN0OjpkaWRPcGVuT3JJdGVyYXRlQ3Vyc29yKGNvbnN0
IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgQVNTRVJUKG1fcGVuZGluZ0N1cnNv
cik7CisgICAgaWYgKHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6Okl0ZXJhdGVD
dXJzb3JTdWNjZXNzKQorICAgICAgICBtX3BlbmRpbmdDdXJzb3ItPnNldEdldFJlc3VsdChyZXN1
bHREYXRhLmdldFJlc3VsdCgpKTsKKworICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGUoKm1f
cGVuZGluZ0N1cnNvcik7CisgICAgbV9wZW5kaW5nQ3Vyc29yID0gbnVsbHB0cjsKKworICAgIHJl
cXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7Cit9CisKIHZvaWQgSURCUmVxdWVzdDo6cmVxdWVz
dENvbXBsZXRlZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogeworICAgIG1fcmVh
ZHlTdGF0ZSA9IElEQlJlcXVlc3RSZWFkeVN0YXRlOjpEb25lOworCiAgICAgbV9pZGJFcnJvciA9
IHJlc3VsdERhdGEuZXJyb3IoKTsKICAgICBpZiAoIW1faWRiRXJyb3IuaXNOdWxsKCkpCiAgICAg
ICAgIG9uRXJyb3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmgKaW5kZXggMjkwZTM5Yy4uMDcwNjNkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVl
c3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QlJlcXVlc3RJbXBsLmgKQEAgLTUyLDYgKzUyLDcgQEAgY2xhc3MgSURCQ29ubmVjdGlvblRvU2Vy
dmVyOwogY2xhc3MgSURCUmVxdWVzdCA6IHB1YmxpYyBXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0
LCBwdWJsaWMgUmVmQ291bnRlZDxJREJSZXF1ZXN0PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxJREJSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQk9iamVjdFN0
b3JlJiwgSURCVHJhbnNhY3Rpb24mKTsKKyAgICBzdGF0aWMgUmVmPElEQlJlcXVlc3Q+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCQ3Vyc29yJiwgSURCVHJhbnNhY3Rpb24mKTsK
ICAgICBzdGF0aWMgUmVmPElEQlJlcXVlc3Q+IGNyZWF0ZUNvdW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBJREJJbmRleCYsIElEQlRyYW5zYWN0aW9uJik7CiAgICAgc3RhdGljIFJlZjxJREJS
ZXF1ZXN0PiBjcmVhdGVHZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQkluZGV4JiwgSW5k
ZXhlZERCOjpJbmRleFJlY29yZFR5cGUsIElEQlRyYW5zYWN0aW9uJik7CiAKQEAgLTg5LDkgKzkw
LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlc3VsdFRvU3RydWN0dXJlZENsb25lKGNvbnN0
IFRocmVhZFNhZmVEYXRhQnVmZmVyJik7CiAgICAgdm9pZCBzZXRSZXN1bHRUb1VuZGVmaW5lZCgp
OwogCisgICAgSURCQW55KiBtb2Rlcm5SZXN1bHQoKSB7IHJldHVybiBtX3Jlc3VsdC5nZXQoKTsg
fQorCisgICAgdm9pZCB3aWxsSXRlcmF0ZUN1cnNvcihJREJDdXJzb3ImKTsKKyAgICB2b2lkIGRp
ZE9wZW5Pckl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYpOworCiBwcm90ZWN0ZWQ6
CiAgICAgSURCUmVxdWVzdChJREJDb25uZWN0aW9uVG9TZXJ2ZXImLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7CiAgICAgSURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCT2Jq
ZWN0U3RvcmUmLCBJREJUcmFuc2FjdGlvbiYpOworICAgIElEQlJlcXVlc3QoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIElEQkN1cnNvciYsIElEQlRyYW5zYWN0aW9uJik7CiAgICAgSURCUmVxdWVz
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCSW5kZXgmLCBJREJUcmFuc2FjdGlvbiYpOwog
ICAgIElEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQkluZGV4JiwgSW5kZXhl
ZERCOjpJbmRleFJlY29yZFR5cGUsIElEQlRyYW5zYWN0aW9uJik7CiAKQEAgLTExNCwxMSArMTIx
LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBvbkVycm9yKCk7CiAgICAgdm9pZCBvblN1Y2Nlc3Mo
KTsKIAorICAgIElEQkN1cnNvciogcmVzdWx0Q3Vyc29yKCk7CisKICAgICBJREJDb25uZWN0aW9u
VG9TZXJ2ZXImIG1fY29ubmVjdGlvbjsKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgbV9yZXNv
dXJjZUlkZW50aWZpZXI7CiAgICAgUmVmUHRyPElEQkFueT4gbV9zb3VyY2U7CiAgICAgYm9vbCBt
X2hhc1BlbmRpbmdBY3Rpdml0eSB7IHRydWUgfTsKICAgICBJbmRleGVkREI6OkluZGV4UmVjb3Jk
VHlwZSBtX3JlcXVlc3RlZEluZGV4UmVjb3JkVHlwZTsKKworICAgIFJlZlB0cjxJREJDdXJzb3I+
IG1fcGVuZGluZ0N1cnNvcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElEQkNsaWVudApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0
aW9uSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
VHJhbnNhY3Rpb25JbXBsLmNwcAppbmRleCA0YTQ3MTk0Li5jNWE5OGUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJh
bnNhY3Rpb25JbXBsLmNwcApAQCAtMzAsOSArMzAsMTEgQEAKIAogI2luY2x1ZGUgIkRPTUVycm9y
LmgiCiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUgIklEQkN1cnNvcldpdGhWYWx1
ZUltcGwuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUltcGwuaCIKICNpbmNsdWRlICJJREJFcnJv
ci5oIgogI2luY2x1ZGUgIklEQkV2ZW50RGlzcGF0Y2hlci5oIgorI2luY2x1ZGUgIklEQktleURh
dGEuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZURhdGEuaCIKICNpbmNsdWRlICJJREJPYmplY3RT
dG9yZS5oIgogI2luY2x1ZGUgIklEQlJlcXVlc3RJbXBsLmgiCkBAIC00MzEsNiArNDMzLDc2IEBA
IHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZENyZWF0ZUluZGV4T25TZXJ2ZXIoY29uc3QgSURCUmVz
dWx0RGF0YSYgcmVzdWx0RGF0YSkKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdERhdGEsIHJlc3Vs
dERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkNyZWF0ZUluZGV4U3VjY2Vzcyk7CiB9CiAK
K1JlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBj
b25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQoreworICAgIExPRyhJbmRleGVkREIsICJJREJUcmFu
c2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3IiKTsKKworICAgIHJldHVybiBkb1JlcXVlc3RPcGVu
Q3Vyc29yKGNvbnRleHQsIElEQkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRlKCp0aGlzLCBvYmplY3RT
dG9yZSwgaW5mbykpOworfQorCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVl
c3RPcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElEQkluZGV4JiBp
bmRleCwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKK3sKKyAgICBMT0coSW5kZXhlZERCLCAi
SURCVHJhbnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29yIik7CisKKyAgICBpZiAoaW5mby5jdXJz
b3JUeXBlKCkgPT0gSW5kZXhlZERCOjpDdXJzb3JUeXBlOjpLZXlPbmx5KQorICAgICAgICByZXR1
cm4gZG9SZXF1ZXN0T3BlbkN1cnNvcihjb250ZXh0LCBJREJDdXJzb3I6OmNyZWF0ZSgqdGhpcywg
aW5kZXgsIGluZm8pKTsKKworICAgIHJldHVybiBkb1JlcXVlc3RPcGVuQ3Vyc29yKGNvbnRleHQs
IElEQkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRlKCp0aGlzLCBpbmRleCwgaW5mbykpOworfQorCitS
ZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OmRvUmVxdWVzdE9wZW5DdXJzb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPElEQkN1cnNvcj4mJiBjdXJzb3IpCit7Cisg
ICAgQVNTRVJUKGlzQWN0aXZlKCkpOworCisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJ
REJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgY3Vyc29yLmdldCgpLCAqdGhpcyk7CisgICAgYWRk
UmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKKworICAgIGF1dG8gb3BlcmF0aW9uID0gY3JlYXRlVHJh
bnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsIHJlcXVlc3QuZ2V0KCksICZJREJUcmFuc2FjdGlvbjo6
ZGlkT3BlbkN1cnNvck9uU2VydmVyLCAmSURCVHJhbnNhY3Rpb246Om9wZW5DdXJzb3JPblNlcnZl
ciwgY3Vyc29yLT5pbmZvKCkpOworICAgIHNjaGVkdWxlT3BlcmF0aW9uKFdURjo6bW92ZShvcGVy
YXRpb24pKTsKKworICAgIHJldHVybiBXVEY6Om1vdmUocmVxdWVzdCk7Cit9CisKK3ZvaWQgSURC
VHJhbnNhY3Rpb246Om9wZW5DdXJzb3JPblNlcnZlcihUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3Bl
cmF0aW9uLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQoreworICAgIExPRyhJbmRleGVkREIs
ICJJREJUcmFuc2FjdGlvbjo6b3BlbkN1cnNvck9uU2VydmVyIik7CisKKyAgICBtX2RhdGFiYXNl
LT5zZXJ2ZXJDb25uZWN0aW9uKCkub3BlbkN1cnNvcihvcGVyYXRpb24sIGluZm8pOworfQorCit2
b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRPcGVuQ3Vyc29yT25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBMT0coSW5kZXhl
ZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZE9wZW5DdXJzb3JPblNlcnZlciIpOworCisgICAgcmVx
dWVzdC5kaWRPcGVuT3JJdGVyYXRlQ3Vyc29yKHJlc3VsdERhdGEpOworfQorCit2b2lkIElEQlRy
YW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yKElEQkN1cnNvciYgY3Vyc29yLCBjb25zdCBJREJLZXlE
YXRhJiBrZXksIHVuc2lnbmVkIGxvbmcgY291bnQpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklE
QlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yIik7CisgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwor
ICAgIEFTU0VSVChjdXJzb3IucmVxdWVzdCgpKTsKKworICAgIGFkZFJlcXVlc3QoKmN1cnNvci5y
ZXF1ZXN0KCkpOworCisgICAgYXV0byBvcGVyYXRpb24gPSBjcmVhdGVUcmFuc2FjdGlvbk9wZXJh
dGlvbigqdGhpcywgKmN1cnNvci5yZXF1ZXN0KCksICZJREJUcmFuc2FjdGlvbjo6ZGlkSXRlcmF0
ZUN1cnNvck9uU2VydmVyLCAmSURCVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3JPblNlcnZlciwg
a2V5LCBjb3VudCk7CisgICAgc2NoZWR1bGVPcGVyYXRpb24oV1RGOjptb3ZlKG9wZXJhdGlvbikp
OworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIoVHJhbnNh
Y3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCB1
bnNpZ25lZCBsb25nJiBjb3VudCkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rp
b246Oml0ZXJhdGVDdXJzb3JPblNlcnZlciIpOworCisgICAgc2VydmVyQ29ubmVjdGlvbigpLml0
ZXJhdGVDdXJzb3Iob3BlcmF0aW9uLCBrZXksIGNvdW50KTsKK30KKwordm9pZCBJREJUcmFuc2Fj
dGlvbjo6ZGlkSXRlcmF0ZUN1cnNvck9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlRy
YW5zYWN0aW9uOjpkaWRJdGVyYXRlQ3Vyc29yT25TZXJ2ZXIiKTsKKworICAgIHJlcXVlc3QuZGlk
T3Blbk9ySXRlcmF0ZUN1cnNvcihyZXN1bHREYXRhKTsKK30KKwogUmVmPElEQlJlcXVlc3Q+IElE
QlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0UmVjb3JkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRh
JiBrZXlSYW5nZURhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpy
ZXF1ZXN0R2V0UmVjb3JkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmgKaW5kZXggMDQzNjE5NS4u
NGRlMGVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuaApAQCAtNDEsNyArNDEsOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIElEQkN1cnNvckluZm87CiBjbGFzcyBJREJJbmRl
eEluZm87CitjbGFzcyBJREJLZXlEYXRhOwogY2xhc3MgSURCT2JqZWN0U3RvcmVJbmZvOwogY2xh
c3MgSURCUmVzdWx0RGF0YTsKIApAQCAtNDksNiArNTEsNyBAQCBzdHJ1Y3QgSURCS2V5UmFuZ2VE
YXRhOwogCiBuYW1lc3BhY2UgSURCQ2xpZW50IHsKIAorY2xhc3MgSURCQ3Vyc29yOwogY2xhc3Mg
SURCRGF0YWJhc2U7CiBjbGFzcyBJREJJbmRleDsKIGNsYXNzIFRyYW5zYWN0aW9uT3BlcmF0aW9u
OwpAQCAtMTAxLDYgKzEwNCw5IEBAIHB1YmxpYzoKICAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVz
dENvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJJbmRleCYsIGNvbnN0IElEQktleVJh
bmdlRGF0YSYpOwogICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0R2V0VmFsdWUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIElEQkluZGV4JiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CiAgICAg
UmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElE
QkluZGV4JiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJl
cXVlc3RPcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJPYmplY3RTdG9yZSYs
IGNvbnN0IElEQkN1cnNvckluZm8mKTsKKyAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdE9wZW5D
dXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQkluZGV4JiwgY29uc3QgSURCQ3Vyc29y
SW5mbyYpOworICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihJREJDdXJzb3ImLCBjb25zdCBJREJLZXlE
YXRhJiwgdW5zaWduZWQgbG9uZyBjb3VudCk7CiAKICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3Jl
KGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKTsKIApAQCAtMTU5LDYgKzE2NSwxMyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmVPblNlcnZlcihUcmFuc2FjdGlvbk9w
ZXJhdGlvbiYsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKTsKICAgICB2b2lkIGRpZERl
bGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogCisgICAgUmVm
PElEQlJlcXVlc3Q+IGRvUmVxdWVzdE9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IFJlZjxJREJDdXJzb3I+JiYpOworICAgIHZvaWQgb3BlbkN1cnNvck9uU2VydmVyKFRyYW5zYWN0
aW9uT3BlcmF0aW9uJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOworICAgIHZvaWQgZGlkT3BlbkN1
cnNvck9uU2VydmVyKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJik7CisKKyAgICB2
b2lkIGl0ZXJhdGVDdXJzb3JPblNlcnZlcihUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIGNvbnN0IElE
QktleURhdGEmLCBjb25zdCB1bnNpZ25lZCBsb25nJiBjb3VudCk7CisgICAgdm9pZCBkaWRJdGVy
YXRlQ3Vyc29yT25TZXJ2ZXIoSURCUmVxdWVzdCYsIGNvbnN0IElEQlJlc3VsdERhdGEmKTsKKwog
ICAgIHZvaWQgZXN0YWJsaXNoT25TZXJ2ZXIoKTsKIAogICAgIHZvaWQgc2NoZWR1bGVPcGVyYXRp
b25UaW1lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaAppbmRleCAxMGE2NzU0Li41YWU5
OWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
VHJhbnNhY3Rpb25PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaApAQCAtMTQ4LDYgKzE0OCwxOSBAQCBS
ZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKAog
ICAgIHJldHVybiBhZG9wdFJlZihvcGVyYXRpb24pOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBN
UDEsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAyPgorUmVmUHRyPFRyYW5z
YWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKKyAgICBJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sCisgICAgSURCUmVxdWVzdCYgcmVxdWVzdCwKKyAgICB2b2lk
IChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlKShJREJSZXF1ZXN0JiwgY29uc3QgSURCUmVzdWx0
RGF0YSYpLAorICAgIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqcGVyZm9ybSkoVHJhbnNhY3Rpb25P
cGVyYXRpb24mLCBNUDEsIE1QMiksCisgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsCisgICAgY29u
c3QgUDImIHBhcmFtZXRlcjIpCit7CisgICAgYXV0byBvcGVyYXRpb24gPSBuZXcgVHJhbnNhY3Rp
b25PcGVyYXRpb25JbXBsPE1QMSwgTVAyPih0cmFuc2FjdGlvbiwgcmVxdWVzdCwgY29tcGxldGUs
IHBlcmZvcm0sIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOworICAgIHJldHVybiBhZG9wdFJlZihv
cGVyYXRpb24pOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIE1QMiwgdHlw
ZW5hbWUgTVAzLCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzPgogUmVmUHRy
PFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICBJ
REJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5Q3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lDdXJzb3IuY3BwCmluZGV4IGFlNDcxMWIu
LmE3YTQyMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xl
Z2FjeS9MZWdhY3lDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2xlZ2FjeS9MZWdhY3lDdXJzb3IuY3BwCkBAIC05MSw3ICs5MSw3IEBAIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBMZWdhY3lDdXJzb3I6OnZhbHVlKCkgY29uc3QKICAgICByZXR1
cm4gbV9jdXJyZW50VmFsdWU7CiB9CiAKLUlEQkFueSogTGVnYWN5Q3Vyc29yOjpzb3VyY2UoKSBj
b25zdAorSURCQW55KiBMZWdhY3lDdXJzb3I6OnNvdXJjZSgpCiB7CiAgICAgcmV0dXJuIG1fc291
cmNlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvbGVnYWN5L0xlZ2FjeUN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvbGVnYWN5L0xlZ2FjeUN1cnNvci5oCmluZGV4IDBjZjliZmYuLjc2NzA0ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lDdXJzb3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5Q3Vy
c29yLmgKQEAgLTU1LDE4ICs1NSwxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGVnYWN5Q3Vy
c29yKCk7CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElETAotICAgIGNvbnN0IFN0cmluZyYgZGly
ZWN0aW9uKCkgY29uc3Q7Ci0gICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSgp
IGNvbnN0OwotICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBwcmltYXJ5S2V5KCkg
Y29uc3Q7Ci0gICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlKCkgY29uc3Q7
Ci0gICAgSURCQW55KiBzb3VyY2UoKSBjb25zdDsKLQotICAgIFJlZlB0cjxJREJSZXF1ZXN0PiB1
cGRhdGUoSlNDOjpFeGVjU3RhdGUmLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICB2b2lkIGFkdmFuY2UodW5zaWduZWQgbG9uZywgRXhjZXB0aW9uQ29kZSYp
OworICAgIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBwcmltYXJ5S2V5KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgSURCQW55KiBzb3VyY2UoKSBvdmVycmlkZTsKKworICAgIFJlZlB0cjxJREJSZXF1
ZXN0PiB1cGRhdGUoSlNDOjpFeGVjU3RhdGUmLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEV4
Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkdmFuY2UodW5zaWduZWQgbG9uZywg
RXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogICAgIC8vIEZJWE1FOiBUcnkgdG8gbW9kaWZ5IHRo
ZSBjb2RlIGdlbmVyYXRvciBzbyB0aGlzIG92ZXJsb2FkIGlzIHVubmVlZGVkLgotICAgIHZvaWQg
Y29udGludWVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYg
ZWMpIHsgY29udGludWVGdW5jdGlvbihzdGF0aWNfY2FzdDxJREJLZXkqPihudWxscHRyKSwgZWMp
OyB9Ci0gICAgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
UmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUgeyBjb250aW51ZUZ1bmN0
aW9uKHN0YXRpY19jYXN0PElEQktleSo+KG51bGxwdHIpLCBlYyk7IH0KKyAgICB2b2lkIGNvbnRp
bnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8SURC
UmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlv
bkNvZGUmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY29udGludWVGdW5jdGlvbihQYXNzUmVmUHRy
PElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHBvc3RTdWNjZXNzSGFuZGxlckNh
bGxiYWNrKCk7CkBAIC03NCw5ICs3NCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWYWx1ZVJl
YWR5KERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJL
ZXk+IHByaW1hcnlLZXksIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJik7CiAgICAgUGFzc1JlZlB0
cjxJREJLZXk+IGlkYlByaW1hcnlLZXkoKSB7IHJldHVybiBtX2N1cnJlbnRQcmltYXJ5S2V5OyB9
CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNLZXlDdXJzb3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CisKIHByb3RlY3RlZDoKICAgICBMZWdhY3lDdXJzb3IoUGFzc1JlZlB0cjxJREJD
dXJzb3JCYWNrZW5kPiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIExlZ2FjeVJlcXVlc3Qq
LCBMZWdhY3lBbnkqIHNvdXJjZSwgTGVnYWN5VHJhbnNhY3Rpb24qKTsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNLZXlDdXJzb3IoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6CiAgICAg
UGFzc1JlZlB0cjxMZWdhY3lPYmplY3RTdG9yZT4gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lD
dXJzb3JXaXRoVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2Fj
eS9MZWdhY3lDdXJzb3JXaXRoVmFsdWUuaAppbmRleCA0ODdiMWYxLi43MjU4ZjJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5Q3Vyc29y
V2l0aFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5
L0xlZ2FjeUN1cnNvcldpdGhWYWx1ZS5oCkBAIC00MSw4ICs0MSw3IEBAIHB1YmxpYzoKICAgICAv
LyBUaGUgdmFsdWUgYXR0cmlidXRlIGRlZmluZWQgaW4gdGhlIElETCBpcyBzaW1wbHkgaW1wbGVt
ZW50ZWQgaW4gTGVnYWN5Q3Vyc29yIChidXQgbm90IGV4cG9zZWQgdmlhCiAgICAgLy8gaXRzIElE
TCkuIFRoaXMgaXMgdG8gbWFrZSB0aGUgaW1wbGVtZW50YXRpb24gbW9yZSBzaW1wbGUgd2hpbGUg
bWF0Y2hpbmcgd2hhdCB0aGUgc3BlYyBzYXlzLgogCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBi
b29sIGlzS2V5Q3Vyc29yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNLZXlDdXJzb3IoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQogCiBwcml2YXRlOgogICAgIExlZ2FjeUN1cnNvcldpdGhWYWx1ZShQYXNzUmVmUHRy
PElEQkN1cnNvckJhY2tlbmQ+LCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiwgTGVnYWN5UmVx
dWVzdCosIExlZ2FjeUFueSogc291cmNlLCBMZWdhY3lUcmFuc2FjdGlvbiopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9y
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdT
dG9yZS5oCmluZGV4IDQwYTlkMmIuLmM3ODI1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTMz
LDYgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJREJDdXJzb3JJbmZv
OwogY2xhc3MgSURCSW5kZXhJbmZvOwogY2xhc3MgSURCS2V5RGF0YTsKIGNsYXNzIElEQk9iamVj
dFN0b3JlSW5mbzsKQEAgLTcwLDcgKzcxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSURCRXJy
b3IgZ2V0SW5kZXhSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5k
ZXhJZGVudGlmaWVyLCBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSwgY29uc3QgSURCS2V5UmFu
Z2VEYXRhJiwgSURCR2V0UmVzdWx0JiBvdXRWYWx1ZSkgPSAwOwogICAgIHZpcnR1YWwgSURCRXJy
b3IgZ2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVu
dGlmaWVyLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCB1aW50NjRfdCYgb3V0Q291bnQpID0gMDsK
ICAgICB2aXJ0dWFsIElEQkVycm9yIGdlbmVyYXRlS2V5TnVtYmVyKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIHVpbnQ2NF90JiBrZXlOdW1iZXIpID0gMDsKLQorICAgIHZpcnR1YWwgSURCRXJy
b3Igb3BlbkN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSA9
IDA7CisgICAgdmlydHVhbCBJREJFcnJvciBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiwgdW5z
aWduZWQgbG9uZyBjb3VudCwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpID0gMDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIElEQlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcApp
bmRleCBhZGY4NTIyLi4wMmUxZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmNw
cApAQCAtMTAzLDYgKzEwMywxNiBAQCB2b2lkIElEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkRGVs
ZXRlUmVjb3JkKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdCkKICAgICBtX2RlbGVnYXRlLT5k
aWREZWxldGVSZWNvcmQocmVzdWx0KTsKIH0KIAordm9pZCBJREJDb25uZWN0aW9uVG9DbGllbnQ6
OmRpZE9wZW5DdXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0KQoreworICAgIG1fZGVs
ZWdhdGUtPmRpZE9wZW5DdXJzb3IocmVzdWx0KTsKK30KKwordm9pZCBJREJDb25uZWN0aW9uVG9D
bGllbnQ6OmRpZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0KQorewor
ICAgIG1fZGVsZWdhdGUtPmRpZEl0ZXJhdGVDdXJzb3IocmVzdWx0KTsKK30KKwogdm9pZCBJREJD
b25uZWN0aW9uVG9DbGllbnQ6OmRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3Ip
CiB7CiAgICAgbV9kZWxlZ2F0ZS0+ZGlkQ29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKaW5kZXggNTBlOGM1
Ny4uZWY4ODBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaApAQCAtNjAsNiArNjAs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRHZXRSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYp
OwogICAgIHZvaWQgZGlkR2V0Q291bnQoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQg
ZGlkRGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKKyAgICB2b2lkIGRpZE9wZW5D
dXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYpOworICAgIHZvaWQgZGlkSXRlcmF0ZUN1cnNvcihj
b25zdCBJREJSZXN1bHREYXRhJik7CiAKICAgICB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQo
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbik7
CiAgICAgdm9pZCBkaWRTdGFydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0Ns
aWVudERlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaAppbmRleCAwYjYzMWJmLi4zYThmMTZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29u
bmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaApAQCAtNTYsNiAr
NTYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEdldFJlY29yZChjb25zdCBJREJS
ZXN1bHREYXRhJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRHZXRDb3VudChjb25zdCBJREJS
ZXN1bHREYXRhJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZWxldGVSZWNvcmQoY29uc3Qg
SURCUmVzdWx0RGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkN1cnNvcihjb25z
dCBJREJSZXN1bHREYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRJdGVyYXRlQ3Vyc29y
KGNvbnN0IElEQlJlc3VsdERhdGEmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZmlyZVZlcnNp
b25DaGFuZ2VFdmVudChVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCB1aW50NjRfdCByZXF1
ZXN0ZWRWZXJzaW9uKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0VHJhbnNhY3Rpb24o
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0
IElEQkVycm9yJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCA1ZjNmNTAwLi5jNjM3OGVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmNwcApAQCAtMjQ3LDYgKzI0NywyOCBAQCB2b2lkIElEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZwogICAgIHRy
YW5zYWN0aW9uLT5kZWxldGVSZWNvcmQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CiB9CiAK
K3ZvaWQgSURCU2VydmVyOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKK3sKKyAgICBMT0coSW5kZXhlZERCLCAi
SURCU2VydmVyOjpvcGVuQ3Vyc29yIik7CisKKyAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV90cmFu
c2FjdGlvbnMuZ2V0KHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBp
ZiAoIXRyYW5zYWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICB0cmFuc2FjdGlvbi0+b3Bl
bkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5mbyk7Cit9CisKK3ZvaWQgSURCU2VydmVyOjppdGVyYXRl
Q3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0
YSYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50KQoreworICAgIExPRyhJbmRleGVkREIsICJJREJT
ZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IiKTsKKworICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3RyYW5z
YWN0aW9ucy5nZXQocmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpOworICAgIGlm
ICghdHJhbnNhY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIHRyYW5zYWN0aW9uLT5pdGVy
YXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBrZXksIGNvdW50KTsKK30KKwogdm9pZCBJREJTZXJ2ZXI6
OmVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiSURCU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlvbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCmluZGV4IDM2ODRmMjIu
LmZhNTg2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmgKQEAgLTQzLDYgKzQzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ3Jvc3NUaHJlYWRUYXNrOworY2xhc3MgSURCQ3Vyc29ySW5mbzsKIGNsYXNzIElE
QlJlcXVlc3REYXRhOwogCiBuYW1lc3BhY2UgSURCU2VydmVyIHsKQEAgLTY3LDYgKzY4LDkgQEAg
cHVibGljOgogICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJik7CiAgICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwogICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgdm9pZCBvcGVu
Q3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOworICAg
IHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURh
dGEmLCB1bnNpZ25lZCBsb25nIGNvdW50KTsKKwogICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rp
b24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNh
Y3Rpb25JbmZvJik7CiAgICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3Qg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdT
dG9yZS5jcHAKaW5kZXggMTJmOGY2Mi4uMDk2NGY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tp
bmdTdG9yZS5jcHAKQEAgLTMyOSw2ICszMjksMjQgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2lu
Z1N0b3JlOjpnZW5lcmF0ZUtleU51bWJlcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQK
ICAgICByZXR1cm4gSURCRXJyb3IoKTsKIH0KIAorSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0
b3JlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IElEQkN1
cnNvckluZm8mLCBJREJHZXRSZXN1bHQmKQoreworICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlJ
REJCYWNraW5nU3RvcmU6Om9wZW5DdXJzb3IiKTsKKworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQu
CisKKyAgICByZXR1cm4geyBJREJFeGNlcHRpb25Db2RlOjpVbmtub3duIH07Cit9CisKK0lEQkVy
cm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImLCBjb25zdCBJREJLZXlEYXRhJiwgdW5zaWduZWQgbG9uZywgSURCR2V0UmVz
dWx0JikKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5SURCQmFja2luZ1N0b3JlOjppdGVy
YXRlQ3Vyc29yIik7CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorCisgICAgcmV0dXJuIHsg
SURCRXhjZXB0aW9uQ29kZTo6VW5rbm93biB9OworfQorCiB2b2lkIE1lbW9yeUlEQkJhY2tpbmdT
dG9yZTo6cmVnaXN0ZXJPYmplY3RTdG9yZShzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5T2JqZWN0U3Rv
cmU+JiYgb2JqZWN0U3RvcmUpCiB7CiAgICAgQVNTRVJUKG9iamVjdFN0b3JlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNr
aW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJREJCYWNraW5nU3RvcmUuaAppbmRleCBmMjFlNGVmLi42NzkxMWNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0
b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUlEQkJhY2tpbmdTdG9yZS5oCkBAIC02Myw2ICs2Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IElEQkVycm9yIGdldEluZGV4UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2
NF90IGluZGV4SWRlbnRpZmllciwgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYsIElEQkdldFJlc3VsdCYgb3V0VmFsdWUpIG92ZXJyaWRlIGZpbmFsOwog
ICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwg
dWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCB1aW50NjRf
dCYgb3V0Q291bnQpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgSURCRXJyb3IgZ2VuZXJh
dGVLZXlOdW1iZXIoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QmIGtleU51bWJl
cikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBJREJFcnJvciBvcGVuQ3Vyc29yKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJD
dXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpIG92ZXJyaWRlIGZpbmFsOworICAg
IHZpcnR1YWwgSURCRXJyb3IgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYsIHVuc2lnbmVkIGxv
bmcgY291bnQsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSBvdmVycmlkZSBmaW5hbDsKIAogICAg
IHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJvcnQoTWVtb3J5T2JqZWN0
U3RvcmUmKTsKICAgICB2b2lkIHJlc3RvcmVPYmplY3RTdG9yZUZvclZlcnNpb25DaGFuZ2VBYm9y
dChzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5T2JqZWN0U3RvcmU+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZS5jcHAKaW5kZXggZGI4Mzc5ZS4uZmJkOTk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAor
I2luY2x1ZGUgIklEQkN1cnNvckluZm8uaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZURhdGEuaCIK
ICNpbmNsdWRlICJJREJSZXN1bHREYXRhLmgiCiAjaW5jbHVkZSAiSURCU2VydmVyLmgiCkBAIC01
NTIsNiArNTUzLDYyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1EZWxldGVS
ZWNvcmQodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zCiAgICAgcGVyZm9ybUVycm9y
Q2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvcik7CiB9CiAKK3ZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBJREJDdXJzb3JJbmZvJiBpbmZvLCBHZXRSZXN1bHRDYWxsYmFjayBjYWxsYmFjaykKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIExPRyhJbmRleGVkREIsICIobWFpbikg
VW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IiKTsKKworICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBzdG9yZUNhbGxiYWNrKGNhbGxiYWNrKTsKKyAgICBtX3NlcnZlci5wb3N0RGF0YWJhc2VU
YXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJm
b3JtT3BlbkN1cnNvciwgY2FsbGJhY2tJRCwgcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlm
aWVyKCksIGluZm8pKTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybU9wZW5D
dXJzb3IodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykK
K3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBMT0coSW5kZXhlZERCLCAiKGRi
KSBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybU9wZW5DdXJzb3IiKTsKKworICAgIElEQkdldFJl
c3VsdCByZXN1bHQ7CisgICAgSURCRXJyb3IgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3BlbkN1
cnNvcih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGluZm8sIHJlc3VsdCk7CisKKyAgICBtX3NlcnZl
ci5wb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5p
cXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1PcGVuQ3Vyc29yLCBjYWxsYmFja0lkZW50aWZpZXIs
IGVycm9yLCByZXN1bHQpKTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9y
bU9wZW5DdXJzb3IodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYg
ZXJyb3IsIGNvbnN0IElEQkdldFJlc3VsdCYgcmVzdWx0KQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6
ZGlkUGVyZm9ybU9wZW5DdXJzb3IiKTsKKworICAgIHBlcmZvcm1HZXRSZXN1bHRDYWxsYmFjayhj
YWxsYmFja0lkZW50aWZpZXIsIGVycm9yLCByZXN1bHQpOworfQorCit2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
Y29uc3QgSURCS2V5RGF0YSYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50LCBHZXRSZXN1bHRDYWxs
YmFjayBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIExPRyhJ
bmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJzb3IiKTsKKwor
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBzdG9yZUNhbGxiYWNrKGNhbGxiYWNrKTsKKyAgICBt
X3NlcnZlci5wb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVu
aXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtSXRlcmF0ZUN1cnNvciwgY2FsbGJhY2tJRCwgcmVxdWVz
dERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCksIGtleSwgY291bnQpKTsKK30KKwordm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUl0ZXJhdGVDdXJzb3IodWludDY0X3QgY2FsbGJhY2tJ
ZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgSURCS2V5RGF0YSYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50KQoreworICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIExPRyhJbmRleGVkREIsICIoZGIpIFVuaXF1
ZUlEQkRhdGFiYXNlOjpwZXJmb3JtSXRlcmF0ZUN1cnNvciIpOworCisgICAgSURCR2V0UmVzdWx0
IHJlc3VsdDsKKyAgICBJREJFcnJvciBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5pdGVyYXRlQ3Vy
c29yKHRyYW5zYWN0aW9uSWRlbnRpZmllciwga2V5LCBjb3VudCwgcmVzdWx0KTsKKworICAgIG1f
c2VydmVyLnBvc3REYXRhYmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMs
ICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUl0ZXJhdGVDdXJzb3IsIGNhbGxiYWNrSWRl
bnRpZmllciwgZXJyb3IsIHJlc3VsdCkpOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpk
aWRQZXJmb3JtSXRlcmF0ZUN1cnNvcih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0
IElEQkVycm9yJiBlcnJvciwgY29uc3QgSURCR2V0UmVzdWx0JiByZXN1bHQpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBMT0coSW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlE
QkRhdGFiYXNlOjpkaWRQZXJmb3JtSXRlcmF0ZUN1cnNvciIpOworCisgICAgcGVyZm9ybUdldFJl
c3VsdENhbGxiYWNrKGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IsIHJlc3VsdCk7Cit9CisKIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBFcnJvckNhbGxiYWNrIGNhbGxiYWNrKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IDcyN2Iz
NGUuLjQxMDhmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC04Myw2ICs4Myw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYsIEdldFJlc3VsdENhbGxiYWNrKTsKICAgICB2b2lkIGdldENvdW50KGNv
bnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgQ291bnRDYWxsYmFj
ayk7CiAgICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJ
REJLZXlSYW5nZURhdGEmLCBFcnJvckNhbGxiYWNrKTsKKyAgICB2b2lkIG9wZW5DdXJzb3IoY29u
c3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJDdXJzb3JJbmZvJiwgR2V0UmVzdWx0Q2FsbGJh
Y2spOworICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IElEQktleURhdGEmLCB1bnNpZ25lZCBsb25nIGNvdW50LCBHZXRSZXN1bHRDYWxsYmFjayk7CiAg
ICAgdm9pZCBjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwg
RXJyb3JDYWxsYmFjayk7CiAgICAgdm9pZCBhYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24mLCBFcnJvckNhbGxiYWNrKTsKICAgICB2b2lkIHRyYW5zYWN0aW9uRGVz
dHJveWVkKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKQEAgLTExNyw2ICsxMTksOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgcGVyZm9ybUdldEluZGV4UmVjb3JkKHVpbnQ2NF90IGNhbGxi
YWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJ
ZGVudGlmaWVyLCBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSwgY29uc3QgSURCS2V5UmFuZ2VE
YXRhJik7CiAgICAgdm9pZCBwZXJmb3JtR2V0Q291bnQodWludDY0X3QgY2FsbGJhY2tJZGVudGlm
aWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIs
IGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwogICAgIHZvaWQgcGVyZm9ybURlbGV0ZVJlY29yZCh1
aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNv
bnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIHZvaWQgcGVyZm9ybU9wZW5DdXJzb3IodWludDY0
X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOworICAgIHZvaWQgcGVyZm9y
bUl0ZXJhdGVDdXJzb3IodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYs
IHVuc2lnbmVkIGxvbmcgY291bnQpOwogICAgIHZvaWQgcGVyZm9ybUFjdGl2YXRlVHJhbnNhY3Rp
b25JbkJhY2tpbmdTdG9yZSh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlRy
YW5zYWN0aW9uSW5mbyYpOwogCiAgICAgLy8gTWFpbiB0aHJlYWQgY2FsbGJhY2tzCkBAIC0xMjks
NiArMTMzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFBlcmZvcm1HZXRSZWNvcmQodWludDY0
X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYsIGNvbnN0IElEQkdldFJlc3Vs
dCYpOwogICAgIHZvaWQgZGlkUGVyZm9ybUdldENvdW50KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRp
ZmllciwgY29uc3QgSURCRXJyb3ImLCB1aW50NjRfdCk7CiAgICAgdm9pZCBkaWRQZXJmb3JtRGVs
ZXRlUmVjb3JkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKTsK
KyAgICB2b2lkIGRpZFBlcmZvcm1PcGVuQ3Vyc29yKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmll
ciwgY29uc3QgSURCRXJyb3ImLCBjb25zdCBJREJHZXRSZXN1bHQmKTsKKyAgICB2b2lkIGRpZFBl
cmZvcm1JdGVyYXRlQ3Vyc29yKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURC
RXJyb3ImLCBjb25zdCBJREJHZXRSZXN1bHQmKTsKICAgICB2b2lkIGRpZFBlcmZvcm1Db21taXRU
cmFuc2FjdGlvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiwg
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAg
IHZvaWQgZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlm
aWVyLCBjb25zdCBJREJFcnJvciYsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFBlcmZvcm1BY3RpdmF0ZVRyYW5zYWN0aW9u
SW5CYWNraW5nU3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJv
ciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCmluZGV4
IGZkNDNiMWYuLmVmZmIzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbi5jcHAKQEAgLTIzMiw2ICsyMzIsNDAgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uOjpkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXQK
ICAgICB9KTsKIH0KIAordm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpvcGVuQ3Vy
c29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5m
byYgaW5mbykKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbjo6b3BlbkN1cnNvciIpOworCisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25JbmZvLmlkZW50
aWZpZXIoKSA9PSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSk7CisKKyAgICBS
ZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
KyAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5vcGVuQ3Vyc29yKHJlcXVlc3RE
YXRhLCBpbmZvLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGFdKGNvbnN0IElEQkVy
cm9yJiBlcnJvciwgY29uc3QgSURCR2V0UmVzdWx0JiByZXN1bHQpIHsKKyAgICAgICAgTE9HKElu
ZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246Om9wZW5DdXJzb3IgKGNhbGxi
YWNrKSIpOworCisgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKKyAgICAgICAgICAgIG1fZGF0
YWJhc2VDb25uZWN0aW9uLT5jb25uZWN0aW9uVG9DbGllbnQoKS5kaWRPcGVuQ3Vyc29yKElEQlJl
c3VsdERhdGE6Om9wZW5DdXJzb3JTdWNjZXNzKHJlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVy
KCksIHJlc3VsdCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2RhdGFiYXNlQ29ubmVj
dGlvbi0+Y29ubmVjdGlvblRvQ2xpZW50KCkuZGlkT3BlbkN1cnNvcihJREJSZXN1bHREYXRhOjpl
cnJvcihyZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLCBlcnJvcikpOworICAgIH0pOwor
fQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3IoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXksIHVu
c2lnbmVkIGxvbmcgY291bnQpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3IiKTsKKworICAgIEFTU0VSVChtX3RyYW5zYWN0
aW9uSW5mby5pZGVudGlmaWVyKCkgPT0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVy
KCkpOworCisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHByb3RlY3Rl
ZFRoaXModGhpcyk7CisgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuaXRlcmF0
ZUN1cnNvcihyZXF1ZXN0RGF0YSwga2V5LCBjb3VudCwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJl
cXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IsIGNvbnN0IElEQkdldFJlc3VsdCYgcmVz
dWx0KSB7CisgICAgICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uOjpvcGVuQ3Vyc29yIChjYWxsYmFjaykiKTsKKworICAgICAgICBpZiAoZXJyb3IuaXNOdWxs
KCkpCisgICAgICAgICAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+Y29ubmVjdGlvblRvQ2xpZW50
KCkuZGlkSXRlcmF0ZUN1cnNvcihJREJSZXN1bHREYXRhOjppdGVyYXRlQ3Vyc29yU3VjY2Vzcyhy
ZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLCByZXN1bHQpKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmNvbm5lY3Rpb25Ub0NsaWVudCgpLmRp
ZEl0ZXJhdGVDdXJzb3IoSURCUmVzdWx0RGF0YTo6ZXJyb3IocmVxdWVzdERhdGEucmVxdWVzdElk
ZW50aWZpZXIoKSwgZXJyb3IpKTsKKyAgICB9KTsKK30KKwogY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVJZGVudGlmaWVycygp
CiB7CiAgICAgaWYgKCFtX29iamVjdFN0b3JlSWRlbnRpZmllcnMuaXNFbXB0eSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKaW5kZXggZThmZGU0ZS4uZTE3MzZk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCkBAIC0zNSw2
ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSURCQ3Vyc29ySW5mbzsK
IGNsYXNzIElEQkRhdGFiYXNlSW5mbzsKIGNsYXNzIElEQkVycm9yOwogY2xhc3MgSURCSW5kZXhJ
bmZvOwpAQCAtNzMsNiArNzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRSZWNvcmQoY29uc3Qg
SURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKICAgICB2b2lkIGdldENv
dW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CiAgICAg
dm9pZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmKTsKKyAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25z
dCBJREJDdXJzb3JJbmZvJik7CisgICAgdm9pZCBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIHVuc2lnbmVkIGxvbmcgY291bnQpOwogCiAgICAg
dm9pZCBkaWRBY3RpdmF0ZUluQmFja2luZ1N0b3JlKGNvbnN0IElEQkVycm9yJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JJ
bmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJz
b3JJbmZvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzg0NjAxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQkN1cnNvckluZm8uY3BwCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCQ3Vyc29ySW5mby5oIgorCisjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkltcGwuaCIKKyNpbmNs
dWRlICJJbmRleGVkREIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJREJDdXJzb3JJbmZv
IElEQkN1cnNvckluZm86Om9iamVjdFN0b3JlQ3Vyc29yKElEQkNsaWVudDo6SURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYgcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlv
bikKK3sKKyAgICByZXR1cm4geyB0cmFuc2FjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JTb3VyY2U6
Ok9iamVjdFN0b3JlLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHJhbmdlLCBkaXJlY3Rpb24sIElu
ZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5QW5kVmFsdWUgfTsKK30KKworSURCQ3Vyc29ySW5mbyBJ
REJDdXJzb3JJbmZvOjppbmRleEN1cnNvcihJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
IHJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIEluZGV4ZWREQjo6
Q3Vyc29yVHlwZSB0eXBlKQoreworICAgIHJldHVybiB7IHRyYW5zYWN0aW9uLCBJbmRleGVkREI6
OkN1cnNvclNvdXJjZTo6SW5kZXgsIGluZGV4SWRlbnRpZmllciwgcmFuZ2UsIGRpcmVjdGlvbiwg
dHlwZSB9OworfQorCitJREJDdXJzb3JJbmZvOjpJREJDdXJzb3JJbmZvKElEQkNsaWVudDo6SURC
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclNvdXJjZSBzb3VyY2Us
IHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2Us
IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JU
eXBlIHR5cGUpCisgICAgOiBtX2N1cnNvcklkZW50aWZpZXIodHJhbnNhY3Rpb24uc2VydmVyQ29u
bmVjdGlvbigpKQorICAgICwgbV90cmFuc2FjdGlvbklkZW50aWZpZXIodHJhbnNhY3Rpb24uaW5m
bygpLmlkZW50aWZpZXIoKSkKKyAgICAsIG1fc291cmNlSWRlbnRpZmllcihzb3VyY2VJZGVudGlm
aWVyKQorICAgICwgbV9yYW5nZShyYW5nZSkKKyAgICAsIG1fc291cmNlKHNvdXJjZSkKKyAgICAs
IG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKKyAgICAsIG1fdHlwZSh0eXBlKQoreworfQorCitJREJD
dXJzb3JJbmZvOjpJREJDdXJzb3JJbmZvKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vy
c29ySWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYgcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yU291cmNlIHNvdXJjZSwgSW5kZXhlZERCOjpDdXJz
b3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGUgdHlwZSkKKyAgICA6
IG1fY3Vyc29ySWRlbnRpZmllcihjdXJzb3JJZGVudGlmaWVyKQorICAgICwgbV90cmFuc2FjdGlv
bklkZW50aWZpZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyKQorICAgICwgbV9zb3VyY2VJZGVudGlm
aWVyKHNvdXJjZUlkZW50aWZpZXIpCisgICAgLCBtX3JhbmdlKHJhbmdlKQorICAgICwgbV9zb3Vy
Y2Uoc291cmNlKQorICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQorICAgICwgbV90eXBlKHR5
cGUpCit7Cit9CisKK2Jvb2wgSURCQ3Vyc29ySW5mbzo6aXNEaXJlY3Rpb25Gb3J3YXJkKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9kaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rp
b246Ok5leHQgfHwgbV9kaXJlY3Rpb24gPT0gSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb246Ok5l
eHROb0R1cGxpY2F0ZTsKK30KKworSURCQ3Vyc29ySW5mbyBJREJDdXJzb3JJbmZvOjppc29sYXRl
ZENvcHkoKSBjb25zdAoreworICAgIHJldHVybiB7IG1fY3Vyc29ySWRlbnRpZmllci5pc29sYXRl
ZENvcHkoKSwgbV90cmFuc2FjdGlvbklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIG1fc291cmNl
SWRlbnRpZmllciwgbV9yYW5nZS5pc29sYXRlZENvcHkoKSwgbV9zb3VyY2UsIG1fZGlyZWN0aW9u
LCBtX3R5cGUgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29ySW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQkN1cnNvckluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4zNGEzYjhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkN1cnNvckluZm8uaApAQCAtMCwwICsxLDgyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJDdXJzb3JJbmZvX2gKKyNkZWZpbmUgSURCQ3Vyc29y
SW5mb19oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQktl
eVJhbmdlRGF0YS5oIgorI2luY2x1ZGUgIklEQlJlc291cmNlSWRlbnRpZmllci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBJREJDbGllbnQgeworY2xhc3MgSURCVHJhbnNh
Y3Rpb247Cit9CisKK25hbWVzcGFjZSBJbmRleGVkREIgeworZW51bSBjbGFzcyBDdXJzb3JEaXJl
Y3Rpb247CitlbnVtIGNsYXNzIEN1cnNvclNvdXJjZTsKK2VudW0gY2xhc3MgQ3Vyc29yVHlwZTsK
K30KKworc3RydWN0IElEQktleVJhbmdlRGF0YTsKKworY2xhc3MgSURCQ3Vyc29ySW5mbyB7Citw
dWJsaWM6CisgICAgc3RhdGljIElEQkN1cnNvckluZm8gb2JqZWN0U3RvcmVDdXJzb3IoSURCQ2xp
ZW50OjpJREJUcmFuc2FjdGlvbiYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29u
c3QgSURCS2V5UmFuZ2VEYXRhJiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24pOworICAgIHN0
YXRpYyBJREJDdXJzb3JJbmZvIGluZGV4Q3Vyc29yKElEQkNsaWVudDo6SURCVHJhbnNhY3Rpb24m
LCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIEluZGV4
ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGUpOworCisgICAgSURC
UmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2N1cnNvcklk
ZW50aWZpZXI7IH0KKyAgICB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2VJZGVudGlmaWVyOyB9CisKKyAgICBJbmRleGVkREI6OkN1cnNvclNvdXJjZSBj
dXJzb3JTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQorICAgIEluZGV4ZWREQjo6
Q3Vyc29yRGlyZWN0aW9uIGN1cnNvckRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0
aW9uOyB9CisgICAgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KKworICAgIGJvb2wgaXNEaXJlY3Rpb25Gb3J3YXJkKCkgY29uc3Q7CisK
KyAgICBJREJDdXJzb3JJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0OworCitwcml2YXRlOgorICAg
IElEQkN1cnNvckluZm8oSURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbiYsIEluZGV4ZWREQjo6Q3Vy
c29yU291cmNlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBJREJLZXlSYW5nZURh
dGEmLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlKTsK
KyAgICBJREJDdXJzb3JJbmZvKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYsIHVpbnQ2NF90LCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBJ
bmRleGVkREI6OkN1cnNvclNvdXJjZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIEluZGV4
ZWREQjo6Q3Vyc29yVHlwZSk7CisKKyAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgbV9jdXJzb3JJ
ZGVudGlmaWVyOworICAgIElEQlJlc291cmNlSWRlbnRpZmllciBtX3RyYW5zYWN0aW9uSWRlbnRp
ZmllcjsKKyAgICB1aW50NjRfdCBtX3NvdXJjZUlkZW50aWZpZXI7CisKKyAgICBJREJLZXlSYW5n
ZURhdGEgbV9yYW5nZTsKKworICAgIEluZGV4ZWREQjo6Q3Vyc29yU291cmNlIG1fc291cmNlOwor
ICAgIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIG1fZGlyZWN0aW9uOworICAgIEluZGV4ZWRE
Qjo6Q3Vyc29yVHlwZSBtX3R5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBJREJDdXJzb3JJbmZv
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJSZXN1bHREYXRhLmNwcAppbmRleCAzN2RhNzMzLi5jM2QwNzE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERh
dGEuY3BwCkBAIC0xMzYsNiArMTM2LDIwIEBAIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6
ZGVsZXRlUmVjb3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlCiAgICAg
cmV0dXJuIHsgSURCUmVzdWx0VHlwZTo6RGVsZXRlUmVjb3JkU3VjY2VzcywgcmVxdWVzdElkZW50
aWZpZXIgfTsKIH0KIAorSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuQ3Vyc29yU3Vj
Y2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25z
dCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKK3sKKyAgICBJREJSZXN1bHREYXRhIHJlc3VsdChJ
REJSZXN1bHRUeXBlOjpPcGVuQ3Vyc29yU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIpOworICAg
IHJlc3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0PihnZXRS
ZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0lEQlJlc3VsdERhdGEgSURCUmVzdWx0
RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCit7CisgICAg
SURCUmVzdWx0RGF0YSByZXN1bHQoSURCUmVzdWx0VHlwZTo6SXRlcmF0ZUN1cnNvclN1Y2Nlc3Ms
IHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CiBjb25zdCBJREJEYXRhYmFzZUluZm8mIElEQlJlc3VsdERhdGE6OmRhdGFiYXNlSW5mbygpIGNv
bnN0CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9kYXRhYmFzZUluZm8pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgK
aW5kZXggZDgyMjZiNi4uMmVkZTdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCkBAIC01Myw2ICs1Myw4IEBA
IGVudW0gY2xhc3MgSURCUmVzdWx0VHlwZSB7CiAgICAgR2V0Q291bnRTdWNjZXNzLAogICAgIERl
bGV0ZVJlY29yZFN1Y2Nlc3MsCiAgICAgQ3JlYXRlSW5kZXhTdWNjZXNzLAorICAgIE9wZW5DdXJz
b3JTdWNjZXNzLAorICAgIEl0ZXJhdGVDdXJzb3JTdWNjZXNzLAogfTsKIAogbmFtZXNwYWNlIElE
QlNlcnZlciB7CkBAIC03Myw2ICs3NSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSURCUmVzdWx0
RGF0YSBnZXRSZWNvcmRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0
IElEQkdldFJlc3VsdCYpOwogICAgIHN0YXRpYyBJREJSZXN1bHREYXRhIGdldENvdW50U3VjY2Vz
cyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCB1aW50NjRfdCBjb3VudCk7CiAgICAgc3Rh
dGljIElEQlJlc3VsdERhdGEgZGVsZXRlUmVjb3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImKTsKKyAgICBzdGF0aWMgSURCUmVzdWx0RGF0YSBvcGVuQ3Vyc29yU3VjY2Vzcyhj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBjb25zdCBJREJHZXRSZXN1bHQmKTsKKyAgICBz
dGF0aWMgSURCUmVzdWx0RGF0YSBpdGVyYXRlQ3Vyc29yU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImLCBjb25zdCBJREJHZXRSZXN1bHQmKTsKIAogICAgIElEQlJlc3VsdERhdGEo
Y29uc3QgSURCUmVzdWx0RGF0YSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4
IGQ3ZWZhNTEuLmRiYmMxMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAKICNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9DbGllbnQuaCIKICNpbmNsdWRl
ICJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKKyNpbmNsdWRlICJJREJDdXJzb3JJbmZvLmgiCiAj
aW5jbHVkZSAiSURCS2V5UmFuZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSURCT3BlbkRCUmVxdWVzdElt
cGwuaCIKICNpbmNsdWRlICJJREJSZXF1ZXN0RGF0YS5oIgpAQCAtMTgzLDYgKzE4NCwyMiBAQCB2
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc3VsdERh
dGEmIHJlc3VsdERhdGEpCiAgICAgfSk7CiB9CiAKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpk
aWRPcGVuQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUmVm
UHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlc3VsdERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0
aW9uVG9TZXJ2ZXItPmRpZE9wZW5DdXJzb3IocmVzdWx0RGF0YSk7CisgICAgfSk7Cit9CisKK3Zv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERh
dGEmIHJlc3VsdERhdGEpCit7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0
aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlc3Vs
dERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZEl0ZXJhdGVDdXJzb3Io
cmVzdWx0RGF0YSk7CisgICAgfSk7Cit9CisKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjphYm9y
dFRyYW5zYWN0aW9uKElEQlJlc291cmNlSWRlbnRpZmllciYgcmVzb3VyY2VJZGVudGlmaWVyKQog
ewogICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7CkBAIC0yNjgsNiAr
Mjg1LDI0IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVSZWNvcmQoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJCiAgICAgfSk7CiB9CiAKK3ZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKK3sKKyAgICBSZWZQdHI8SW5Qcm9jZXNz
SURCU2VydmVyPiBzZWxmKHRoaXMpOworCisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNo
KFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YSwgaW5mb10geworICAgICAgICBtX3NlcnZlci0+b3Bl
bkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5mbyk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgY29uc3QgSURCS2V5RGF0YSYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50KQoreworICAgIFJl
ZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7CisKKyAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhLCBrZXksIGNvdW50XSB7Cisg
ICAgICAgIG1fc2VydmVyLT5pdGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBrZXksIGNvdW50KTsK
KyAgICB9KTsKK30KKwogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0
aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlRyYW5z
YWN0aW9uSW5mbyYgaW5mbykKIHsKICAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxm
KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oCmluZGV4IDMzOWQ3OWEuLjc1NTNlMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nl
c3NJREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSW5Qcm9jZXNzSURCU2VydmVyLmgKQEAgLTY2LDYgKzY2LDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0Q291bnQoY29u
c3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSBvdmVycmlkZSBmaW5h
bDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lk
IG9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJDdXJzb3JJbmZvJikg
b3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURC
UmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgdW5zaWduZWQgbG9uZyBjb3VudCkgb3Zl
cnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2
NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5m
byYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25D
bG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikgb3ZlcnJpZGUgZmlu
YWw7CiAKQEAgLTgzLDYgKzg1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRHZXRS
ZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRHZXRDb3VudChjb25zdCBJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZERlbGV0ZVJlY29yZChjb25zdCBJREJSZXN1bHREYXRhJikgb3Zl
cnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5DdXJzb3IoY29uc3QgSURCUmVz
dWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBkaWRJdGVyYXRlQ3Vy
c29yKGNvbnN0IElEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZv
aWQgZmlyZVZlcnNpb25DaGFuZ2VFdmVudChJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbiYsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pIG92ZXJyaWRlIGZpbmFsOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRTdGFydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYpIG92ZXJyaWRlIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggOWViNmE2Mi4uZmNiZmNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA1NCw2ICsyMDU0LDggQEAKIAkJ
NTE3MTM4RjAxQkVEMUQxQTAwMEQ1RjAxIC8qIEluZGV4S2V5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhFRTFCRUQxRDE3MDAwRDVGMDEgLyog
SW5kZXhLZXkuaCAqLzsgfTsKIAkJNTE3MTM4RjcxQkYxMjhCQjAwMEQ1RjAxIC8qIEluZGV4VmFs
dWVTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTcxMzhGNTFCRjEyMjYyMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmNwcCAqLzsgfTsK
IAkJNTE3MTM4RjgxQkYxMjhCQjAwMEQ1RjAxIC8qIEluZGV4VmFsdWVTdG9yZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4RjYxQkYxMjI2MjAw
MEQ1RjAxIC8qIEluZGV4VmFsdWVTdG9yZS5oICovOyB9OworCQk1MTcxMzhGQjFCRjNBREY0MDAw
RDVGMDEgLyogSURCQ3Vyc29ySW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhGOTFCRjNBREFDMDAwRDVGMDEgLyogSURCQ3Vyc29ySW5m
by5jcHAgKi87IH07CisJCTUxNzEzOEZDMUJGM0FERjQwMDBENUYwMSAvKiBJREJDdXJzb3JJbmZv
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhG
QTFCRjNBREFDMDAwRDVGMDEgLyogSURCQ3Vyc29ySW5mby5oICovOyB9OwogCQk1MTc0MUQwRjBC
MDcyNTlBMDBFRDQ0MkMgLyogQmFja0ZvcndhcmRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzQxRDBCMEIwNzI1OUEwMEVENDQyQyAvKiBC
YWNrRm9yd2FyZENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUxNzQxRDExMEIwNzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3NDFEMEQwQjA3
MjU5QTAwRUQ0NDJDIC8qIEhpc3RvcnlJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3NDFEMTIwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3Rv
cnlJdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNzQxRDBFMEIwNzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5jcHAgKi87IH07CkBAIC05
NTEyLDYgKzk1MTQsOCBAQAogCQk1MTcxMzhFRTFCRUQxRDE3MDAwRDVGMDEgLyogSW5kZXhLZXku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZXhLZXkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3MTM4RjUxQkYxMjI2MjAwMEQ1RjAxIC8qIEluZGV4VmFs
dWVTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmRleFZh
bHVlU3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTcxMzhGNjFCRjEy
MjYyMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluZGV4VmFsdWVTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MTcxMzhGOTFCRjNBREFDMDAwRDVGMDEgLyogSURCQ3Vyc29ySW5mby5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJDdXJzb3JJbmZvLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3MTM4RkExQkYzQURBQzAwMEQ1RjAxIC8qIElEQkN1cnNv
ckluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ3Vyc29ySW5mby5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTc0MUQwQjBCMDcyNTlBMDBFRDQ0MkMg
LyogQmFja0ZvcndhcmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QmFja0ZvcndhcmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3NDFE
MEQwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3RvcnlJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIaXN0b3J5SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTc0MUQwRTBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhpc3RvcnlJdGVtLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE2ODc4LDYgKzE2ODgyLDggQEAKIAkJNTEwQTU4RTExQkFBNDA5
ODAwQzE5MjgyIC8qIHNoYXJlZCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJNTE3MTM4RjkxQkYzQURBQzAwMEQ1RjAxIC8qIElEQkN1cnNvckluZm8uY3Bw
ICovLAorCQkJCTUxNzEzOEZBMUJGM0FEQUMwMDBENUYwMSAvKiBJREJDdXJzb3JJbmZvLmggKi8s
CiAJCQkJNTFCQTRBQzExQkJCNUNCRjAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5jcHAgKi8s
CiAJCQkJNTFCQTRBQzIxQkJCNUNCRjAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5oICovLAog
CQkJCTUxNDg0NTNDMUJCOUQwNzYwMDZBNzJFRCAvKiBJREJFcnJvci5jcHAgKi8sCkBAIC0yNTE2
Miw2ICsyNTE2OCw3IEBACiAJCQkJODU0MDc1MjAwQUQ2QzVGQjAwNjIwQzU3IC8qIERPTUV2ZW50
VGFyZ2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUM3OEE2ODBBQkRFMUI0MDA0NEZDMTYgLyog
RE9NRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFBMzdCNTA5N0M3MTVGMDAxOUYz
RDggLyogRE9NRXh0ZW5zaW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE3MTM4RkMxQkYzQURG
NDAwMEQ1RjAxIC8qIElEQkN1cnNvckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDBGMDA0
MEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTNCQzEw
ODExN0Q0Nzk4MDBCOTQwOUEgLyogRE9NRmlsZUVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RTNCQzEwQjExN0Q0N0M4MDBCOTQwOUEgLyogRE9NRmlsZUVycm9ySW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjk2MzAsNiArMjk2MzcsNyBAQAogCQkJCTMxNkZFMDczMEU2Q0NCRUUwMEJG
NjA4OCAvKiBKU0NTU0tleWZyYW1lc1J1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0NkMy
MDAwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTTWVkaWFSdWxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDNDZDMjAyMEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU1BhZ2VSdWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTUxNzEzOEZCMUJGM0FERjQwMDBENUYwMSAvKiBJREJDdXJzb3JJbmZvLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTkzMDcwNUU5MDlFMEM5RjAwMEIxN0ZFNCAvKiBKU0NTU1By
aW1pdGl2ZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0Q0Y3QjMzMDlGNkVDRDcwMEVC
MzY2NSAvKiBKU0NTU1J1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0NkMxRUUwQzBEREJE
RjAwMjBDRkMzIC8qIEpTQ1NTUnVsZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXgg
ZWYyM2YyOS4uNzEzNDI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTc4LDYgKzc4LDQzIEBAIHN0YXRpYyBib29sIHNl
dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUmIG9iamVjdCwgY29uc3QgU3RyaW5nJiBrZXlQYXRo
RWxlbWVudCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorSlNWYWx1ZSBpZGJLZXlEYXRhVG9KU1Zh
bHVlKEpTQzo6RXhlY1N0YXRlJiBleGVjLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhKQorewor
ICAgIGlmIChrZXlEYXRhLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KworICAgIExvY2tlcjxKU0xvY2s+IGxvY2tlcihleGVjLnZtKCkuYXBpTG9jaygpKTsKKworICAg
IHN3aXRjaCAoa2V5RGF0YS50eXBlKCkpIHsKKyAgICBjYXNlIEtleVR5cGU6OkFycmF5OgorICAg
ICAgICB7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8SURCS2V5RGF0YT4mIGluQXJyYXkgPSBr
ZXlEYXRhLmFycmF5KCk7CisgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IGluQXJyYXkuc2l6ZSgp
OworICAgICAgICAgICAgSlNBcnJheSogb3V0QXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KCZl
eGVjLCAwLCBleGVjLmxleGljYWxHbG9iYWxPYmplY3QoKSwgc2l6ZSk7CisgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgICAgIGF1dG8m
IGFycmF5S2V5ID0gaW5BcnJheS5hdChpKTsKKyAgICAgICAgICAgICAgICBvdXRBcnJheS0+cHV0
RGlyZWN0SW5kZXgoJmV4ZWMsIGksIGlkYktleURhdGFUb0pTVmFsdWUoZXhlYywgYXJyYXlLZXkp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKG91dEFycmF5KTsK
KyAgICAgICAgfQorICAgIGNhc2UgS2V5VHlwZTo6U3RyaW5nOgorICAgICAgICByZXR1cm4ganNT
dHJpbmdXaXRoQ2FjaGUoJmV4ZWMsIGtleURhdGEuc3RyaW5nKCkpOworICAgIGNhc2UgS2V5VHlw
ZTo6RGF0ZToKKyAgICAgICAgcmV0dXJuIGpzRGF0ZU9yTnVsbCgmZXhlYywga2V5RGF0YS5kYXRl
KCkpOworICAgIGNhc2UgS2V5VHlwZTo6TnVtYmVyOgorICAgICAgICByZXR1cm4ganNOdW1iZXIo
a2V5RGF0YS5udW1iZXIoKSk7CisgICAgY2FzZSBLZXlUeXBlOjpNaW46CisgICAgY2FzZSBLZXlU
eXBlOjpNYXg6CisgICAgY2FzZSBLZXlUeXBlOjpJbnZhbGlkOgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKK30KKwog
c3RhdGljIEpTVmFsdWUgaWRiS2V5VG9KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSURCS2V5KiBrZXkpCiB7CiAgICAgaWYgKCFrZXkgfHwg
IWV4ZWMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRp
bmdVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGls
aXRpZXMuaAppbmRleCA2MWYzYjBkLi41YmM0NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCkBAIC03MCw2ICs3MCw3IEBAIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIGlkYktleURhdGFUb1NjcmlwdFZhbHVlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBJCiAKIEpTQzo6SlNWYWx1ZSBpZGJWYWx1ZURhdGFUb0pTVmFsdWUo
SlNDOjpFeGVjU3RhdGUmLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWVEYXRhKTsK
IHZvaWQgZ2VuZXJhdGVJbmRleEtleUZvclZhbHVlKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgSURC
SW5kZXhJbmZvJiwgSlNDOjpKU1ZhbHVlLCBJbmRleEtleSYgb3V0S2V5KTsKK0pTQzo6SlNWYWx1
ZSBpZGJLZXlEYXRhVG9KU1ZhbHVlKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgSURCS2V5RGF0YSYp
OwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFk
Q29waWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNw
cAppbmRleCAyMjY2ZjE0Li4zZjc0MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q3Jvc3NUaHJlYWRDb3BpZXIuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNpbmNsdWRl
ICJJREJDdXJzb3JJbmZvLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiSURCRGF0YWJhc2VJbmZvLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VNZXRhZGF0
YS5oIgpAQCAtMTc1LDYgKzE3NiwxMSBAQCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZh
bHNlLCBJREJJbmRleEluZm8+OjpUeXBlIENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYQogICAgIHJl
dHVybiBpbmZvLmlzb2xhdGVkQ29weSgpOwogfQogCitDcm9zc1RocmVhZENvcGllckJhc2U8ZmFs
c2UsIGZhbHNlLCBJREJDdXJzb3JJbmZvPjo6VHlwZSBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFs
c2UsIGZhbHNlLCBJREJDdXJzb3JJbmZvPjo6Y29weShjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZv
KQoreworICAgIHJldHVybiBpbmZvLmlzb2xhdGVkQ29weSgpOworfQorCiAjZW5kaWYgLy8gRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCiAKIC8vIFRlc3QgQ3Jvc3NUaHJlYWRDb3BpZXIgdXNpbmcg
Q09NUElMRV9BU1NFUlQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9z
c1RocmVhZENvcGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3Bp
ZXIuaAppbmRleCAwZmYwYTVjLi42ZTEwOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0Nyb3NzVGhyZWFkQ29waWVyLmgKQEAgLTIzOSw2ICsyMzksMTIgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IElEQkluZGV4SW5mbyYpOwogICAg
IH07CiAKKyAgICBjbGFzcyBJREJDdXJzb3JJbmZvOworICAgIHRlbXBsYXRlPD4gc3RydWN0IFdF
QkNPUkVfRVhQT1JUIENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIElEQkN1cnNv
ckluZm8+IHsKKyAgICAgICAgdHlwZWRlZiBJREJDdXJzb3JJbmZvIFR5cGU7CisgICAgICAgIHN0
YXRpYyBUeXBlIGNvcHkoY29uc3QgSURCQ3Vyc29ySW5mbyYpOworICAgIH07CisKICNlbmRpZgog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
</data>
<flag name="review"
          id="290485"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="290486"
          type_id="3"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265441</attachid>
            <date>2015-11-12 15:33:35 -0800</date>
            <delta_ts>2015-11-12 16:24:13 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>114133</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmYjIwZWJiLi4zZGFhMWI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMTEt
MTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IFBpcGUgdGhyb3VnaCBjdXJzb3IgZnVuY3Rpb25zIGZyb20gY2xpZW50IHRvIHNlcnZlci4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTE5Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTEuaHRtbDogQWRkZWQuCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5jdXJzb3ItZmFpbHVyZXMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmN1
cnNvci1mYWlsdXJlcy5odG1sOiBBZGRlZC4KKwogMjAxNS0xMS0xMiAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIElnbm9yZSB2aXNpdGVkIGJhY2tncm91bmQgY29s
b3Igd2hlbiBkZWNpZGluZyBpZiB0aGUgaW5wdXQgcmVuZGVyZXIgbmVlZHMgdG8gYmUgcGFpbnRl
ZCBuYXRpdmVseS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9jdXJzb3ItMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vY3Vyc29yLTEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmVkMmVhZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNzcgQEAK
K1RoaXMgdGVzdHMgYmFzaWMgSURCQ3Vyc29yIGZ1bmN0aW9uYWxpdHkKK0luaXRpYWwgdXBncmFk
ZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gMCBOZXcgdmVyc2lvbiAtIDEKK0Vycm9yIG9wZW5pbmcg
Y3Vyc29yIChleHBlY3RlZCBmb3Igbm93KQorQ3Vyc29yIGlzOiBbb2JqZWN0IElEQkN1cnNvcldp
dGhWYWx1ZV0KK0N1cnNvciBkaXJlY3Rpb24gaXM6IG5leHQKK0N1cnNvciBzb3VyY2UgaXM6IFtv
YmplY3QgSURCT2JqZWN0U3RvcmVdIChUZXN0T2JqZWN0U3RvcmUpCitDdXJzb3Iga2V5IGlzOiBu
dWxsCitDdXJzb3IgcHJpbWFyeSBrZXkgaXM6IG51bGwKK0Vycm9yIG9wZW5pbmcgY3Vyc29yIChl
eHBlY3RlZCBmb3Igbm93KQorQ3Vyc29yIGlzOiBbb2JqZWN0IElEQkN1cnNvcldpdGhWYWx1ZV0K
K0N1cnNvciBkaXJlY3Rpb24gaXM6IG5leHQKK0N1cnNvciBzb3VyY2UgaXM6IFtvYmplY3QgSURC
SW5kZXhdIChUZXN0SW5kZXgxKQorQ3Vyc29yIGtleSBpczogbnVsbAorQ3Vyc29yIHByaW1hcnkg
a2V5IGlzOiBudWxsCitFcnJvciBvcGVuaW5nIGN1cnNvciAoZXhwZWN0ZWQgZm9yIG5vdykKK0N1
cnNvciBpczogW29iamVjdCBJREJDdXJzb3JdCitDdXJzb3IgZGlyZWN0aW9uIGlzOiBuZXh0CitD
dXJzb3Igc291cmNlIGlzOiBbb2JqZWN0IElEQkluZGV4XSAoVGVzdEluZGV4MSkKK0N1cnNvciBr
ZXkgaXM6IG51bGwKK0N1cnNvciBwcmltYXJ5IGtleSBpczogbnVsbAorRXJyb3Igb3BlbmluZyBj
dXJzb3IgKGV4cGVjdGVkIGZvciBub3cpCitDdXJzb3IgaXM6IFtvYmplY3QgSURCQ3Vyc29yV2l0
aFZhbHVlXQorQ3Vyc29yIGRpcmVjdGlvbiBpczogbmV4dHVuaXF1ZQorQ3Vyc29yIHNvdXJjZSBp
czogW29iamVjdCBJREJPYmplY3RTdG9yZV0gKFRlc3RPYmplY3RTdG9yZSkKK0N1cnNvciBrZXkg
aXM6IG51bGwKK0N1cnNvciBwcmltYXJ5IGtleSBpczogbnVsbAorRXJyb3Igb3BlbmluZyBjdXJz
b3IgKGV4cGVjdGVkIGZvciBub3cpCitDdXJzb3IgaXM6IFtvYmplY3QgSURCQ3Vyc29yV2l0aFZh
bHVlXQorQ3Vyc29yIGRpcmVjdGlvbiBpczogbmV4dHVuaXF1ZQorQ3Vyc29yIHNvdXJjZSBpczog
W29iamVjdCBJREJJbmRleF0gKFRlc3RJbmRleDEpCitDdXJzb3Iga2V5IGlzOiBudWxsCitDdXJz
b3IgcHJpbWFyeSBrZXkgaXM6IG51bGwKK0Vycm9yIG9wZW5pbmcgY3Vyc29yIChleHBlY3RlZCBm
b3Igbm93KQorQ3Vyc29yIGlzOiBbb2JqZWN0IElEQkN1cnNvcl0KK0N1cnNvciBkaXJlY3Rpb24g
aXM6IG5leHR1bmlxdWUKK0N1cnNvciBzb3VyY2UgaXM6IFtvYmplY3QgSURCSW5kZXhdIChUZXN0
SW5kZXgxKQorQ3Vyc29yIGtleSBpczogbnVsbAorQ3Vyc29yIHByaW1hcnkga2V5IGlzOiBudWxs
CitFcnJvciBvcGVuaW5nIGN1cnNvciAoZXhwZWN0ZWQgZm9yIG5vdykKK0N1cnNvciBpczogW29i
amVjdCBJREJDdXJzb3JXaXRoVmFsdWVdCitDdXJzb3IgZGlyZWN0aW9uIGlzOiBwcmV2CitDdXJz
b3Igc291cmNlIGlzOiBbb2JqZWN0IElEQk9iamVjdFN0b3JlXSAoVGVzdE9iamVjdFN0b3JlKQor
Q3Vyc29yIGtleSBpczogbnVsbAorQ3Vyc29yIHByaW1hcnkga2V5IGlzOiBudWxsCitFcnJvciBv
cGVuaW5nIGN1cnNvciAoZXhwZWN0ZWQgZm9yIG5vdykKK0N1cnNvciBpczogW29iamVjdCBJREJD
dXJzb3JXaXRoVmFsdWVdCitDdXJzb3IgZGlyZWN0aW9uIGlzOiBwcmV2CitDdXJzb3Igc291cmNl
IGlzOiBbb2JqZWN0IElEQkluZGV4XSAoVGVzdEluZGV4MSkKK0N1cnNvciBrZXkgaXM6IG51bGwK
K0N1cnNvciBwcmltYXJ5IGtleSBpczogbnVsbAorRXJyb3Igb3BlbmluZyBjdXJzb3IgKGV4cGVj
dGVkIGZvciBub3cpCitDdXJzb3IgaXM6IFtvYmplY3QgSURCQ3Vyc29yXQorQ3Vyc29yIGRpcmVj
dGlvbiBpczogcHJldgorQ3Vyc29yIHNvdXJjZSBpczogW29iamVjdCBJREJJbmRleF0gKFRlc3RJ
bmRleDEpCitDdXJzb3Iga2V5IGlzOiBudWxsCitDdXJzb3IgcHJpbWFyeSBrZXkgaXM6IG51bGwK
K0Vycm9yIG9wZW5pbmcgY3Vyc29yIChleHBlY3RlZCBmb3Igbm93KQorQ3Vyc29yIGlzOiBbb2Jq
ZWN0IElEQkN1cnNvcldpdGhWYWx1ZV0KK0N1cnNvciBkaXJlY3Rpb24gaXM6IHByZXZ1bmlxdWUK
K0N1cnNvciBzb3VyY2UgaXM6IFtvYmplY3QgSURCT2JqZWN0U3RvcmVdIChUZXN0T2JqZWN0U3Rv
cmUpCitDdXJzb3Iga2V5IGlzOiBudWxsCitDdXJzb3IgcHJpbWFyeSBrZXkgaXM6IG51bGwKK0Vy
cm9yIG9wZW5pbmcgY3Vyc29yIChleHBlY3RlZCBmb3Igbm93KQorQ3Vyc29yIGlzOiBbb2JqZWN0
IElEQkN1cnNvcldpdGhWYWx1ZV0KK0N1cnNvciBkaXJlY3Rpb24gaXM6IHByZXZ1bmlxdWUKK0N1
cnNvciBzb3VyY2UgaXM6IFtvYmplY3QgSURCSW5kZXhdIChUZXN0SW5kZXgxKQorQ3Vyc29yIGtl
eSBpczogbnVsbAorQ3Vyc29yIHByaW1hcnkga2V5IGlzOiBudWxsCitFcnJvciBvcGVuaW5nIGN1
cnNvciAoZXhwZWN0ZWQgZm9yIG5vdykKK0N1cnNvciBpczogW29iamVjdCBJREJDdXJzb3JdCitD
dXJzb3IgZGlyZWN0aW9uIGlzOiBwcmV2dW5pcXVlCitDdXJzb3Igc291cmNlIGlzOiBbb2JqZWN0
IElEQkluZGV4XSAoVGVzdEluZGV4MSkKK0N1cnNvciBrZXkgaXM6IG51bGwKK0N1cnNvciBwcmlt
YXJ5IGtleSBpczogbnVsbAorSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rp
b24gY29tcGxldGUKK0RvbmUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2N1cnNvci0xLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vY3Vyc29yLTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li41OGQ0NjNiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9jdXJzb3ItMS5odG1sCkBAIC0wLDAgKzEsOTUgQEAKK1RoaXMgdGVzdHMgYmFz
aWMgSURCQ3Vyc29yIGZ1bmN0aW9uYWxpdHk8YnI+Cis8ZGl2IGlkPSJsb2dnZXIiPjwvZGl2Pgor
PHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9CisKK2Z1bmN0aW9u
IGRvbmUoKQoreworICAgIGxvZygiRG9uZSIpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNz
YWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dnZXIiKS5pbm5lckhUTUwg
Kz0gbWVzc2FnZSArICI8YnI+IjsKK30KKwordmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5k
ZXhlZERCLm9wZW4oIkN1cnNvcjFEYXRhYmFzZSIsIDEpOworCitmdW5jdGlvbiBsb2dDdXJzb3Io
Y3Vyc29yKQoreworICAgIGxvZygiQ3Vyc29yIGlzOiAiICsgY3Vyc29yKTsKKyAgICBsb2coIkN1
cnNvciBkaXJlY3Rpb24gaXM6ICIgKyBjdXJzb3IuZGlyZWN0aW9uKTsKKyAgICBsb2coIkN1cnNv
ciBzb3VyY2UgaXM6ICIgKyBjdXJzb3Iuc291cmNlICsgIiAoIiArIGN1cnNvci5zb3VyY2UubmFt
ZSArICIpIik7ICAgIAorICAgIGxvZygiQ3Vyc29yIGtleSBpczogIiArIGN1cnNvci5rZXkpOyAg
ICAKKyAgICBsb2coIkN1cnNvciBwcmltYXJ5IGtleSBpczogIiArIGN1cnNvci5wcmltYXJ5S2V5
KTsgICAgCit9CisKK2Z1bmN0aW9uIHNldHVwUmVxdWVzdChyZXF1ZXN0KQoreworICAgIC8vIEZJ
WE1FOiBSaWdodCBub3cgKHVudGlsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTExOTYgaXMgcmVzb2x2ZWQpIHdoYXQgc2hvdWxkIGJlIHN1Y2Nlc3NmdWwgY3Vyc29y
IG9wZXJhdGlvbnMgd2lsbCBhY3R1YWxseSBhbHdheXMgZmFpbC4KKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBsb2coIlN1Y2Nlc3Mgb3BlbmluZyBjdXJzb3Ii
KTsKKyAgICAgICAgbG9nQ3Vyc29yKHJlcXVlc3QucmVzdWx0KTsgIAorICAgIH0KKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIGxvZygiRXJyb3Igb3BlbmluZyBj
dXJzb3IgKGV4cGVjdGVkIGZvciBub3cpIik7CisgICAgICAgIGxvZ0N1cnNvcihyZXF1ZXN0LnJl
c3VsdCk7CisgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgfSAKK30KKwordmFyIG9i
amVjdFN0b3JlOwordmFyIGluZGV4OworCitmdW5jdGlvbiB0ZXN0Q3Vyc29yRGlyZWN0aW9uKGRp
cmVjdGlvbikKK3sKKyAgICB2YXIgcmFuZ2UgPSBJREJLZXlSYW5nZS5sb3dlckJvdW5kKC1JbmZp
bml0eSk7CisgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKHJhbmdlLCBk
aXJlY3Rpb24pOworICAgIHNldHVwUmVxdWVzdChyZXF1ZXN0KTsKKyAgICByZXF1ZXN0ID0gaW5k
ZXgub3BlbkN1cnNvcihyYW5nZSwgZGlyZWN0aW9uKTsKKyAgICBzZXR1cFJlcXVlc3QocmVxdWVz
dCk7CisgICAgcmVxdWVzdCA9IGluZGV4Lm9wZW5LZXlDdXJzb3IocmFuZ2UsIGRpcmVjdGlvbik7
CisgICAgc2V0dXBSZXF1ZXN0KHJlcXVlc3QpOworfQorCitjcmVhdGVSZXF1ZXN0Lm9udXBncmFk
ZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgbmVl
ZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAt
ICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKworICAgIHZhciB2ZXJzaW9uVHJhbnNhY3Rpb24gPSBj
cmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOworICAgIHZhciBkYXRhYmFzZSA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQ7CisgICAgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgi
VGVzdE9iamVjdFN0b3JlIik7CisgICAgaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgi
VGVzdEluZGV4MSIsICJiYXIiKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkg
eworICAgICAgICBvYmplY3RTdG9yZS5wdXQoIlJlY29yZCAiICsgaSwgaSk7CisgICAgfQorICAg
IG9iamVjdFN0b3JlLnB1dCh7IGJhcjogIkhlbGxvIiB9LCAiZm9vIik7CisKKyAgICB0ZXN0Q3Vy
c29yRGlyZWN0aW9uKCJuZXh0Iik7CisgICAgdGVzdEN1cnNvckRpcmVjdGlvbigibmV4dHVuaXF1
ZSIpOworICAgIHRlc3RDdXJzb3JEaXJlY3Rpb24oInByZXYiKTsKKyAgICB0ZXN0Q3Vyc29yRGly
ZWN0aW9uKCJwcmV2dW5pcXVlIik7CisgICAgICAKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25h
Ym9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIHZl
cnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydGVkIik7CisgICAgICAgIGRv
bmUoKTsKKyAgICB9CisKKyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0
aW9uKGV2ZW50KSB7CisgICAgICAgIGxvZygiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2Ug
dHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHZl
cnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgbG9n
KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVy
cm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmN1cnNv
ci1mYWlsdXJlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vb3BlbmN1cnNvci1mYWlsdXJlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMWYyZmU2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuY3Vyc29yLWZhaWx1cmVzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDIxIEBACitUaGlzIHRlc3RzIHNvbWUgb2J2aW91cyBmYWlsdXJlcyB0aGF0
IGNhbiBoYXBwZW4gd2hpbGUgb3BlbmluZyBjdXJzb3JzLgorSW5pdGlhbCB1cGdyYWRlIG5lZWRl
ZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJzaW9uIC0gMQorRmFpbGVkIHRvIG9wZW4gb2JqZWN0
IHN0b3JlIGN1cnNvciB3aXRoIGludmFsaWQga2V5cGF0aAorRmFpbGVkIHRvIG9wZW4gb2JqZWN0
IHN0b3JlIGN1cnNvciB3aXRoIGludmFsaWQgZGlyZWN0aW9uCitGYWlsZWQgdG8gb3BlbiBpbmRl
eCBjdXJzb3Igd2l0aCBpbnZhbGlkIGtleXBhdGgKK0ZhaWxlZCB0byBvcGVuIGluZGV4IGN1cnNv
ciB3aXRoIGludmFsaWQgZGlyZWN0aW9uCitGYWlsZWQgdG8gb3BlbiBpbmRleCBrZXkgY3Vyc29y
IHdpdGggaW52YWxpZCBrZXlwYXRoCitGYWlsZWQgdG8gb3BlbiBpbmRleCBrZXkgY3Vyc29yIHdp
dGggaW52YWxpZCBkaXJlY3Rpb24KK0ZhaWxlZCB0byBvcGVuIG9iamVjdCBzdG9yZSBjdXJzb3Ig
b24gZGVsZXRlZCBvYmplY3Qgc3RvcmUKK0ZhaWxlZCB0byBvcGVuIGluZGV4IGN1cnNvciBvbiBk
ZWxldGVkIG9iamVjdCBzdG9yZQorRmFpbGVkIHRvIG9wZW4gaW5kZXgga2V5IGN1cnNvciBvbiBk
ZWxldGVkIG9iamVjdCBzdG9yZQorSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNh
Y3Rpb24gY29tcGxldGUKK0ZhaWxlZCB0byBvcGVuIG9iamVjdCBzdG9yZSBjdXJzb3IgZnJvbSBj
b21wbGV0ZWQgdHJhbnNhY3Rpb24KK0ZhaWxlZCB0byBvcGVuIGluZGV4IGN1cnNvciBmcm9tIGNv
bXBsZXRlZCB0cmFuc2FjdGlvbgorRmFpbGVkIHRvIG9wZW4gaW5kZXgga2V5IGN1cnNvciBmcm9t
IGNvbXBsZXRlZCB0cmFuc2FjdGlvbgorRmFpbGVkIHRvIG9wZW4gb2JqZWN0IHN0b3JlIGN1cnNv
ciBmcm9tIGluYWN0aXZlIHRyYW5zYWN0aW9uCitGYWlsZWQgdG8gb3BlbiBpbmRleCBjdXJzb3Ig
ZnJvbSBpbmFjdGl2ZSB0cmFuc2FjdGlvbgorRmFpbGVkIHRvIG9wZW4gaW5kZXgga2V5IGN1cnNv
ciBmcm9tIGluYWN0aXZlIHRyYW5zYWN0aW9uCityZWFkb25seSB0cmFuc2FjdGlvbiBjb21wbGV0
ZQorRG9uZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vb3BlbmN1cnNvci1mYWlsdXJlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL29wZW5jdXJzb3ItZmFpbHVyZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi40NmNiZDM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5jdXJzb3ItZmFpbHVyZXMuaHRtbApAQCAtMCwwICsx
LDE4OCBAQAorVGhpcyB0ZXN0cyBzb21lIG9idmlvdXMgZmFpbHVyZXMgdGhhdCBjYW4gaGFwcGVu
IHdoaWxlIG9wZW5pbmcgY3Vyc29ycy48YnI+Cis8ZGl2IGlkPSJsb2dnZXIiPjwvZGl2PgorPHNj
cmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9CisKK2Z1bmN0aW9uIGRv
bmUoKQoreworICAgIGxvZygiRG9uZSIpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdl
KQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dnZXIiKS5pbm5lckhUTUwgKz0g
bWVzc2FnZSArICI8YnI+IjsKK30KKwordmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhl
ZERCLm9wZW4oIk9wZW5DdXJzb3JGYWlsdXJlc0RhdGFiYXNlIiwgMSk7Cit2YXIgZGF0YWJhc2U7
Cit2YXIgb2JqZWN0U3RvcmU7Cit2YXIgaW5kZXg7CisKK2NyZWF0ZVJlcXVlc3Qub251cGdyYWRl
bmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBsb2coIkluaXRpYWwgdXBncmFkZSBuZWVk
ZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAiIE5ldyB2ZXJzaW9uIC0g
IiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisgICAgdmFyIHZlcnNpb25UcmFuc2FjdGlvbiA9IGNy
ZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVz
dWx0OworICAgIG9iamVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RP
YmplY3RTdG9yZSIpOworICAgIGluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoIlRlc3RJ
bmRleCIsICJiYXIiKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dCh7IGJhcjog
ImJhciIgfSwgImZvbyIpOworCisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG9iamVjdFN0b3JlLm9wZW5DdXJzb3IoTmFOKTsK
KyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBsb2coIkZhaWxlZCB0byBvcGVuIG9i
amVjdCBzdG9yZSBjdXJzb3Igd2l0aCBpbnZhbGlkIGtleXBhdGgiKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG9iamVjdFN0b3JlLm9wZW5DdXJzb3Io
ImZvbyIsICJpbnZhbGlkIGRpcmVjdGlvbiIpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgICAgIGxvZygiRmFpbGVkIHRvIG9wZW4gb2JqZWN0IHN0b3JlIGN1cnNvciB3aXRoIGludmFs
aWQgZGlyZWN0aW9uIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICBpbmRleC5vcGVuQ3Vyc29yKE5hTik7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAg
ICAgICAgICAgbG9nKCJGYWlsZWQgdG8gb3BlbiBpbmRleCBjdXJzb3Igd2l0aCBpbnZhbGlkIGtl
eXBhdGgiKTsKKyAgICAgICAgfQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpbmRleC5v
cGVuQ3Vyc29yKCJmb28iLCAiaW52YWxpZCBkaXJlY3Rpb24iKTsKKyAgICAgICAgfSBjYXRjaChl
KSB7CisgICAgICAgICAgICBsb2coIkZhaWxlZCB0byBvcGVuIGluZGV4IGN1cnNvciB3aXRoIGlu
dmFsaWQgZGlyZWN0aW9uIik7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICAg
ICAgaW5kZXgub3BlbktleUN1cnNvcihOYU4pOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgICAgIGxvZygiRmFpbGVkIHRvIG9wZW4gaW5kZXgga2V5IGN1cnNvciB3aXRoIGludmFsaWQg
a2V5cGF0aCIpOworICAgICAgICB9CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGluZGV4
Lm9wZW5LZXlDdXJzb3IoImZvbyIsICJpbnZhbGlkIGRpcmVjdGlvbiIpOworICAgICAgICB9IGNh
dGNoKGUpIHsKKyAgICAgICAgICAgIGxvZygiRmFpbGVkIHRvIG9wZW4gaW5kZXgga2V5IGN1cnNv
ciB3aXRoIGludmFsaWQgZGlyZWN0aW9uIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IGRhdGFiYXNlLmRlbGV0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICAgICAg
CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7Cisg
ICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgbG9nKCJGYWlsZWQgdG8gb3BlbiBvYmpl
Y3Qgc3RvcmUgY3Vyc29yIG9uIGRlbGV0ZWQgb2JqZWN0IHN0b3JlIik7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpbmRleC5vcGVuQ3Vyc29yKCk7Cisg
ICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgbG9nKCJGYWlsZWQgdG8gb3BlbiBpbmRl
eCBjdXJzb3Igb24gZGVsZXRlZCBvYmplY3Qgc3RvcmUiKTsKKyAgICAgICAgfQorCisgICAgICAg
IHRyeSB7CisgICAgICAgICAgICBpbmRleC5vcGVuS2V5Q3Vyc29yKCk7CisgICAgICAgIH0gY2F0
Y2goZSkgeworICAgICAgICAgICAgbG9nKCJGYWlsZWQgdG8gb3BlbiBpbmRleCBrZXkgY3Vyc29y
IG9uIGRlbGV0ZWQgb2JqZWN0IHN0b3JlIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IC8vIFJlY3JlYXRlIHRoZSBvYmplY3RzdG9yZSBiZWNhdXNlIHdlJ2xsIG5lZWQgaXQgaW4gcGhh
c2UgMi4KKyAgICAgICAgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgi
VGVzdE9iamVjdFN0b3JlIik7CisgICAgICAgIGluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5k
ZXgoIlRlc3RJbmRleCIsICJiYXIiKTsKKyAgICAgICAgb2JqZWN0U3RvcmUucHV0KHsgYmFyOiAi
YmFyIiB9LCAiZm9vIik7CisgICAgfQorICAgIAorICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFi
b3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0ZWQiKTsKKyAgICAgICAgZG9u
ZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0
cmFuc2FjdGlvbiBjb21wbGV0ZSIpOworICAgICAgICBjb250aW51ZVRlc3QxKCk7CisgICAgfQor
CisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAg
ICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhw
ZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5j
dGlvbiBjb250aW51ZVRlc3QxKCkKK3sKKyAgICB0cnkgeworICAgICAgICBvYmplY3RTdG9yZS5v
cGVuQ3Vyc29yKCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGxvZygiRmFpbGVkIHRvIG9w
ZW4gb2JqZWN0IHN0b3JlIGN1cnNvciBmcm9tIGNvbXBsZXRlZCB0cmFuc2FjdGlvbiIpOworICAg
IH0KKyAgICAKKyAgICB0cnkgeworICAgICAgICBpbmRleC5vcGVuQ3Vyc29yKCk7CisgICAgfSBj
YXRjaChlKSB7CisgICAgICAgIGxvZygiRmFpbGVkIHRvIG9wZW4gaW5kZXggY3Vyc29yIGZyb20g
Y29tcGxldGVkIHRyYW5zYWN0aW9uIik7CisgICAgfQorCisgICAgdHJ5IHsKKyAgICAgICAgaW5k
ZXgub3BlbktleUN1cnNvcigpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBsb2coIkZhaWxl
ZCB0byBvcGVuIGluZGV4IGtleSBjdXJzb3IgZnJvbSBjb21wbGV0ZWQgdHJhbnNhY3Rpb24iKTsK
KyAgICB9CisgICAgICAgIAorICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0
aW9uKCJUZXN0T2JqZWN0U3RvcmUiLCAicmVhZG9ubHkiKTsKKyAgICBvYmplY3RTdG9yZSA9IHRy
YW5zYWN0aW9uLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICBpbmRleCA9IG9i
amVjdFN0b3JlLmluZGV4KCJUZXN0SW5kZXgiKTsKKworICAgIC8vIFNwaW4gdGhlIHRyYW5zYWN0
aW9uIHdpdGggZ2V0IHJlcXVlc3RzIHRvIGtlZXAgaXQgYWxpdmUgbG9uZyBlbm91Z2ggZm9yIHRo
ZSBzZXRUaW1lb3V0IHRvIGZpcmUuCisgICAgdmFyIGNhbkZpbmlzaCA9IGZhbHNlOworICAgIHZh
ciBzcGluR2V0ID0gZnVuY3Rpb24oKSB7IAorICAgICAgICBvYmplY3RTdG9yZS5nZXQoImZvbyIp
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKCFjYW5GaW5pc2gpCisg
ICAgICAgICAgICAgICAgc3BpbkdldCgpOworICAgICAgICB9CisgICAgfQorICAgIHNwaW5HZXQo
KTsKKworICAgIHZhciBnZXRXaGlsZUluYWN0aXZlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICBvYmplY3RTdG9yZS5vcGVuQ3Vyc29yKCk7CisgICAgICAgIH0gY2F0
Y2goZSkgeworICAgICAgICAgICAgbG9nKCJGYWlsZWQgdG8gb3BlbiBvYmplY3Qgc3RvcmUgY3Vy
c29yIGZyb20gaW5hY3RpdmUgdHJhbnNhY3Rpb24iKTsKKyAgICAgICAgfQorICAgIAorICAgICAg
ICB0cnkgeworICAgICAgICAgICAgaW5kZXgub3BlbkN1cnNvcigpOworICAgICAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgICAgIGxvZygiRmFpbGVkIHRvIG9wZW4gaW5kZXggY3Vyc29yIGZyb20g
aW5hY3RpdmUgdHJhbnNhY3Rpb24iKTsKKyAgICAgICAgfQorCisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICBpbmRleC5vcGVuS2V5Q3Vyc29yKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAg
ICAgICAgICAgbG9nKCJGYWlsZWQgdG8gb3BlbiBpbmRleCBrZXkgY3Vyc29yIGZyb20gaW5hY3Rp
dmUgdHJhbnNhY3Rpb24iKTsKKyAgICAgICAgfQorICAgICAgICBjYW5GaW5pc2ggPSB0cnVlOwor
ICAgIH0KKyAgICAKKyAgICBzZXRUaW1lb3V0KGdldFdoaWxlSW5hY3RpdmUsIDApOworICAgIAor
ICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBsb2co
InJlYWRvbmx5IHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiICsgZXZlbnQpOworICAgICAg
ICBkb25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGxvZygicmVhZG9ubHkgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsK
KyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5j
dGlvbihldmVudCkgeworICAgICAgICBsb2coInJlYWRvbmx5IHRyYW5zYWN0aW9uIHVuZXhwZWN0
ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCis8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZDE3YWU3Zi4uYzlmZWRhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTkxMiw2ICs5MTIsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAKICAg
ICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5j
cHAKIAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JJbmZvLmNwcAogICAg
IE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8uY3BwCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJJbmRleEluZm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU0ODdmMy4uNzFlNWZhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5MiBAQAorMjAxNS0xMS0xMiAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuIElEQjogUGlwZSB0aHJvdWdoIGN1cnNv
ciBmdW5jdGlvbnMgZnJvbSBjbGllbnQgdG8gc2VydmVyLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMTk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBUZXN0czogc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2N1cnNvci0xLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9vcGVuY3Vyc29yLWZhaWx1cmVzLmh0bWwKKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVu
dHMgbW9zdCBJREJDdXJzb3IgY29uc2lkZXJhdGlvbnMgYXQgdGhlIElETCBsZXZlbCwgYXMgd2Vs
bCBhcyBwaXBlcyB0aGUKKyAgICAgICAgYXBwcm9wcmlhdGUgbWVzc2FnZXMgdGhyb3VnaCBmcm9t
IGNsaWVudCB0byBzZXJ2ZXIuCisgICAgICAgIAorICAgICAgICBBbGwgb3BlcmF0aW9ucyBjdXJy
ZW50bHkgZW5kIGluIGVycm9ycy4gQnVnIDE1MTE5NiB3aWxsIGZpeCB0aGF0IGJ5IG1ha2luZyBj
dXJzb3JzIGZ1bmN0aW9uYWwuCisgICAgICAgIAorICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vy
c29yOjppc0tleUN1cnNvcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yV2l0aFZhbHVlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJH
ZXRSZXN1bHQuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OnN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJLZXlEYXRhOjpkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6Om51bWJl
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjphcnJheSk6CisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJBbnlJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6
SURCQW55OjpJREJBbnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJBbnk6Omlk
YkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkFueTo6aWRiQ3Vyc29y
V2l0aFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQW55OjppZGJJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkFueTo6aWRiT2JqZWN0U3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJBbnk6Om1vZGVybklEQkN1cnNvcik6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkFueUltcGwuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQW55OjpjcmVhdGUpOgorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlk
T3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkSXRlcmF0ZUN1cnNvcik6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oOgor
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvckltcGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDdXJzb3I6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkN1cnNvcjo6SURCQ3Vyc29yKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjpzb3VyY2VzRGVsZXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJDbGllbnQ6OklEQkN1cnNvcjo6ZWZmZWN0aXZlT2JqZWN0U3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDdXJzb3I6OnRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjpkaXJlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpJREJDdXJzb3I6OmtleSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDbGllbnQ6OklEQkN1cnNvcjo6cHJpbWFyeUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJD
bGllbnQ6OklEQkN1cnNvcjo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJ
REJDdXJzb3I6OnNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkN1cnNv
cjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjphZHZh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjpjb250aW51ZUZ1
bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjp1bmNoZWNr
ZWRJdGVyYXRvckN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkN1cnNv
cjo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDdXJz
b3I6OnNldEdldFJlc3VsdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QkN1cnNvckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjpp
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjpzZXRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vyc29yOjpjbGVhclJlcXVlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDdXJzb3I6OnJlcXVlc3QpOgorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvcldpdGhWYWx1ZUltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDdXJzb3JXaXRoVmFsdWU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkN1cnNvcldpdGhWYWx1ZTo6
SURCQ3Vyc29yV2l0aFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ3Vy
c29yV2l0aFZhbHVlOjp+SURCQ3Vyc29yV2l0aFZhbHVlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5oOgorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkluZGV4SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDbGllbnQ6OklEQkluZGV4OjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkNsaWVudDo6SURCSW5kZXg6Om9wZW5LZXlDdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJJbmRleEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVu
dDo6SURCSW5kZXg6Om1vZGVybk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNs
aWVudDo6SURCSW5kZXg6OmlzRGVsZXRlZCk6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNs
aWVudDo6SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUltcGwuaDoKKworICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQlJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDbGllbnQ6OklEQlJlcXVlc3Q6OklEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpJREJSZXF1ZXN0Ojp+SURCUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJD
bGllbnQ6OklEQlJlcXVlc3Q6OnNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6
OklEQlJlcXVlc3Q6OnJlc3VsdEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6
OklEQlJlcXVlc3Q6OndpbGxJdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNs
aWVudDo6SURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQlJlcXVlc3Q6OnJlcXVlc3RDb21wbGV0ZWQpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ2xpZW50OjpJREJSZXF1ZXN0Ojptb2Rlcm5SZXN1bHQpOgorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjpkb1JlcXVlc3RP
cGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246
Om9wZW5DdXJzb3JPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlRy
YW5zYWN0aW9uOjpkaWRPcGVuQ3Vyc29yT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6ZGlkSXRlcmF0ZUN1cnNv
ck9uU2VydmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNh
Y3Rpb25JbXBsLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNh
Y3Rpb25PcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6Y3JlYXRlVHJh
bnNhY3Rpb25PcGVyYXRpb24pOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5
L0xlZ2FjeUN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lDdXJzb3I6OnNvdXJj
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeUN1cnNvci5oOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUN1cnNvcjo6aXNLZXlDdXJzb3IpOiBEZWxldGVk
LgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lDdXJzb3JXaXRoVmFs
dWUuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3Rv
cmUuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9u
VG9DbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9u
VG9DbGllbnQ6OmRpZE9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJ
REJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaDoK
KworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6Om9wZW5DdXJzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaDoKKworICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6Om9wZW5DdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6Oml0
ZXJhdGVDdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJ
REJCYWNraW5nU3RvcmUuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1PcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1PcGVuQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJhdGVDdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cGVy
Zm9ybUl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZTo6ZGlkUGVyZm9ybUl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorCisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpk
ZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24u
aDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JJbmZvLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JJbmZvOjpvYmplY3RTdG9yZUN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JJbmZvOjppbmRleEN1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JJbmZvOjpJREJDdXJzb3JJbmZvKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkN1cnNvckluZm86OmlzRGlyZWN0aW9uRm9yd2FyZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJDdXJzb3JJbmZvOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JJbmZvLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29ySW5mbzo6aWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJz
b3JJbmZvOjpzb3VyY2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcklu
Zm86OmN1cnNvclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JJbmZvOjpjdXJz
b3JEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29ySW5mbzo6Y3Vyc29yVHlw
ZSk6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpvcGVuQ3Vyc29yU3VjY2Vzcyk6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjppdGVyYXRlQ3Vyc29yU3VjY2Vzcyk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaDoKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRPcGVuQ3Vyc29yKToK
KyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkSXRlcmF0ZUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5DdXJzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjppdGVyYXRlQ3Vyc29yKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmg6CisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmlkYktleURhdGFUb0pTVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJp
bmRpbmdVdGlsaXRpZXMuaDoKKworICAgICAgICAqIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckluZm8+Ojpjb3B5KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oOgorCiAyMDE1LTExLTEyICBaYWxhbiBCdWp0
YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgSWdub3JlIHZpc2l0ZWQgYmFja2dyb3Vu
ZCBjb2xvciB3aGVuIGRlY2lkaW5nIGlmIHRoZSBpbnB1dCByZW5kZXJlciBuZWVkcyB0byBiZSBw
YWludGVkIG5hdGl2ZWx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuaAppbmRleCA2YzVjOGQ2Li40MGIyOGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5KCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHByaW1hcnlLZXkoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgdmFs
dWUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBJREJBbnkqIHNvdXJjZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIElEQkFueSogc291cmNlKCkgPSAwOwogCiAgICAgdmlydHVhbCBSZWZQdHI8
SURCUmVxdWVzdD4gdXBkYXRlKEpTQzo6RXhlY1N0YXRlJiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFs
dWUmLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhZHZhbmNlKHVuc2ln
bmVkIGxvbmcsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CkBAIC03MiwxMCArNzIsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJikg
PSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogCisgICAgdmlydHVhbCBi
b29sIGlzS2V5Q3Vyc29yKCkgY29uc3QgPSAwOworCiBwcm90ZWN0ZWQ6CiAgICAgSURCQ3Vyc29y
KCk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNLZXlDdXJzb3IoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JXaXRoVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1ZS5oCmluZGV4IGM1MzE5YTAu
LjVmOTkwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvcldpdGhWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvcldpdGhWYWx1ZS5oCkBAIC0zOCw4ICszOCw2IEBAIHB1YmxpYzoKIAogcHJvdGVj
dGVkOgogICAgIElEQkN1cnNvcldpdGhWYWx1ZSgpOwotCi0gICAgdmlydHVhbCBib29sIGlzS2V5
Q3Vyc29yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkdldFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
R2V0UmVzdWx0LmgKaW5kZXggZjNiZWYzNy4uZTllOTA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmgKQEAgLTg5LDYgKzg5LDcgQEAgc3Ry
dWN0IElEQkdldFJlc3VsdCB7CiAKICAgICBUaHJlYWRTYWZlRGF0YUJ1ZmZlciB2YWx1ZUJ1ZmZl
cjsKICAgICBJREJLZXlEYXRhIGtleURhdGE7CisgICAgSURCS2V5RGF0YSBwcmltYXJ5S2V5RGF0
YTsKICAgICBJREJLZXlQYXRoIGtleVBhdGg7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmgKaW5kZXggMTQ2OWFmZC4uNTEzNGExNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaApAQCAtMTI4LDYg
KzEyOCwzMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElEQktleURhdGEgZGVsZXRlZFZhbHVlKCk7
CiAgICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZWxldGVkVmFs
dWU7IH0KIAorICAgIFN0cmluZyBzdHJpbmcoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fdHlwZSA9PSBLZXlUeXBlOjpTdHJpbmcpOworICAgICAgICByZXR1cm4gbV9zdHJpbmdWYWx1
ZTsKKyAgICB9CisKKyAgICBkb3VibGUgZGF0ZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQobV90eXBlID09IEtleVR5cGU6OkRhdGUpOworICAgICAgICByZXR1cm4gbV9udW1iZXJWYWx1
ZTsKKyAgICB9CisKKyAgICBkb3VibGUgbnVtYmVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gS2V5VHlwZTo6TnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIG1fbnVtYmVy
VmFsdWU7CisgICAgfQorCisgICAgY29uc3QgVmVjdG9yPElEQktleURhdGE+JiBhcnJheSgpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEtleVR5cGU6OkFycmF5KTsKKyAg
ICAgICAgcmV0dXJuIG1fYXJyYXlWYWx1ZTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgS2V5VHlw
ZSBtX3R5cGU7CiAgICAgVmVjdG9yPElEQktleURhdGE+IG1fYXJyYXlWYWx1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmgKaW5kZXggNWI4YjAwZS4uYTVl
NTM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhl
ZERCLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmgK
QEAgLTYxLDYgKzYxLDExIEBAIGVudW0gY2xhc3MgQ3Vyc29yVHlwZSB7CiB9OwogY29uc3QgdW5z
aWduZWQgQ3Vyc29yVHlwZU1heGltdW0gPSAxOwogCitlbnVtIGNsYXNzIEN1cnNvclNvdXJjZSB7
CisgICAgSW5kZXgsCisgICAgT2JqZWN0U3RvcmUsCit9OworCiBlbnVtIGNsYXNzIFZlcnNpb25O
dWxsbmVzcyB7CiAgICAgTnVsbCwKICAgICBOb25OdWxsLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkFueUltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkFueUltcGwuY3BwCmluZGV4IDBjODQ0
NTMuLjdhOTQwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJBbnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCQW55SW1wbC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQkFueS5oIgotI2luY2x1ZGUgIklEQkN1
cnNvcldpdGhWYWx1ZS5oIgorI2luY2x1ZGUgIklEQkN1cnNvckltcGwuaCIKICNpbmNsdWRlICJJ
REJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSURCSW5kZXguaCIKIApAQCAtNTksNiArNTksMTcgQEAg
SURCQW55OjpJREJBbnkoUmVmPElEQkluZGV4PiYmIGluZGV4KQogewogfQogCitJREJBbnk6OklE
QkFueShSZWY8SURCQ3Vyc29yPiYmIGN1cnNvcikKK3sKKyAgICBpZiAoY3Vyc29yLT5pc0tleUN1
cnNvcigpKSB7CisgICAgICAgIG1fdHlwZSA9IElEQkFueTo6VHlwZTo6SURCQ3Vyc29yOworICAg
ICAgICBtX2N1cnNvciA9IFdURjo6bW92ZShjdXJzb3IpOworICAgIH0gZWxzZSB7CisgICAgICAg
IG1fdHlwZSA9IElEQkFueTo6VHlwZTo6SURCQ3Vyc29yV2l0aFZhbHVlOworICAgICAgICBtX2N1
cnNvcldpdGhWYWx1ZSA9IFdURjo6bW92ZShjdXJzb3IpOworICAgIH0KK30KKwogSURCQW55OjpJ
REJBbnkoY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKICAgICA6IG1fdHlwZShJREJBbnk6OlR5
cGU6OktleVBhdGgpCiAgICAgLCBtX2lkYktleVBhdGgoa2V5UGF0aCkKQEAgLTg4LDEyICs5OSwx
NCBAQCBSZWZQdHI8V2ViQ29yZTo6RE9NU3RyaW5nTGlzdD4gSURCQW55Ojpkb21TdHJpbmdMaXN0
KCkKIAogUmVmUHRyPFdlYkNvcmU6OklEQkN1cnNvcj4gSURCQW55OjppZGJDdXJzb3IoKQogewot
ICAgIHJldHVybiBudWxscHRyOworICAgIEFTU0VSVChtX3R5cGUgPT0gSURCQW55OjpUeXBlOjpJ
REJDdXJzb3IgfHwgbV90eXBlID09IElEQkFueTo6VHlwZTo6SURCQ3Vyc29yV2l0aFZhbHVlKTsK
KyAgICByZXR1cm4gbV9jdXJzb3IuZ2V0KCk7CiB9CiAKIFJlZlB0cjxXZWJDb3JlOjpJREJDdXJz
b3JXaXRoVmFsdWU+IElEQkFueTo6aWRiQ3Vyc29yV2l0aFZhbHVlKCkKIHsKLSAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBBU1NFUlQobV90eXBlID09IElEQkFueTo6VHlwZTo6SURCQ3Vyc29yV2l0
aFZhbHVlKTsKKyAgICByZXR1cm4gbV9jdXJzb3JXaXRoVmFsdWUuZ2V0KCk7CiB9CiAKIFJlZlB0
cjxXZWJDb3JlOjpJREJGYWN0b3J5PiBJREJBbnk6OmlkYkZhY3RvcnkoKQpAQCAtMTAzLDEyICsx
MTYsMTQgQEAgUmVmUHRyPFdlYkNvcmU6OklEQkZhY3Rvcnk+IElEQkFueTo6aWRiRmFjdG9yeSgp
CiAKIFJlZlB0cjxXZWJDb3JlOjpJREJJbmRleD4gSURCQW55OjppZGJJbmRleCgpCiB7Ci0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBJREJBbnk6OlR5cGU6OklEQklu
ZGV4KTsKKyAgICByZXR1cm4gbV9pbmRleC5nZXQoKTsKIH0KIAogUmVmUHRyPFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlPiBJREJBbnk6OmlkYk9iamVjdFN0b3JlKCkKIHsKLSAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICBBU1NFUlQobV90eXBlID09IElEQkFueTo6VHlwZTo6SURCT2JqZWN0U3RvcmUp
OworICAgIHJldHVybiBtX29iamVjdFN0b3JlLmdldCgpOwogfQogCiBJREJPYmplY3RTdG9yZSog
SURCQW55Ojptb2Rlcm5JREJPYmplY3RTdG9yZSgpCkBAIC0xMjMsNiArMTM4LDEyIEBAIElEQklu
ZGV4KiBJREJBbnk6Om1vZGVybklEQkluZGV4KCkKICAgICByZXR1cm4gbV9pbmRleC5nZXQoKTsK
IH0KIAorSURCQ3Vyc29yKiBJREJBbnk6Om1vZGVybklEQkN1cnNvcigpCit7CisgICAgQVNTRVJU
KG1fdHlwZSA9PSBJREJBbnk6OlR5cGU6OklEQkN1cnNvciB8fCBtX3R5cGUgPT0gSURCQW55OjpU
eXBlOjpJREJDdXJzb3JXaXRoVmFsdWUpOworICAgIHJldHVybiBtX2N1cnNvci5nZXQoKTsKK30K
KwogUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uPiBJREJBbnk6OmlkYlRyYW5zYWN0aW9u
KCkKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJBbnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQW55SW1wbC5oCmluZGV4IDYzYTFmN2EuLmE4Y2ZmMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJB
bnlJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QkFueUltcGwuaApAQCAtNDMsMTQgKzQzLDE5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJREJBbnkoV1RGOjptb3ZlKGRhdGFiYXNlKSkpOwogICAgIH0KIAotICAgIHN0
YXRpYyBSZWZQdHI8SURCQW55PiBjcmVhdGUoUmVmPElEQk9iamVjdFN0b3JlPiYmIG9iamVjdFN0
b3JlKQorICAgIHN0YXRpYyBSZWY8SURCQW55PiBjcmVhdGUoUmVmPElEQk9iamVjdFN0b3JlPiYm
IG9iamVjdFN0b3JlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJBbnko
V1RGOjptb3ZlKG9iamVjdFN0b3JlKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
REJBbnkoV1RGOjptb3ZlKG9iamVjdFN0b3JlKSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQ
dHI8SURCQW55PiBjcmVhdGUoUmVmPElEQkluZGV4PiYmIGluZGV4KQorICAgIHN0YXRpYyBSZWY8
SURCQW55PiBjcmVhdGUoUmVmPElEQkluZGV4PiYmIGluZGV4KQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJREJBbnkoV1RGOjptb3ZlKGluZGV4KSkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBJREJBbnkoV1RGOjptb3ZlKGluZGV4KSkpOworICAgIH0KKworICAg
IHN0YXRpYyBSZWZQdHI8SURCQW55PiBjcmVhdGUoUmVmPElEQkN1cnNvcj4mJiBjdXJzb3IpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkFueShXVEY6Om1vdmUoY3Vyc29y
KSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWZQdHI8SURCQW55PiBjcmVhdGUoY29uc3QgSURC
S2V5UGF0aCYga2V5UGF0aCkKQEAgLTg2LDEyICs5MSwxNCBAQCBwdWJsaWM6CiAKICAgICBJREJP
YmplY3RTdG9yZSogbW9kZXJuSURCT2JqZWN0U3RvcmUoKTsKICAgICBJREJJbmRleCogbW9kZXJu
SURCSW5kZXgoKTsKKyAgICBJREJDdXJzb3IqIG1vZGVybklEQkN1cnNvcigpOwogCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IElEQkFueShJREJBbnk6OlR5cGUpOwogICAgIGV4cGxpY2l0IElEQkFu
eShSZWY8SURCRGF0YWJhc2U+JiYpOwogICAgIGV4cGxpY2l0IElEQkFueShSZWY8SURCT2JqZWN0
U3RvcmU+JiYpOwogICAgIGV4cGxpY2l0IElEQkFueShSZWY8SURCSW5kZXg+JiYpOworICAgIGV4
cGxpY2l0IElEQkFueShSZWY8SURCQ3Vyc29yPiYmKTsKICAgICBleHBsaWNpdCBJREJBbnkoY29u
c3QgSURCS2V5UGF0aCYpOwogICAgIGV4cGxpY2l0IElEQkFueShjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYpOwogCkBAIC05OSw2ICsxMDYsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJ
REJEYXRhYmFzZT4gbV9kYXRhYmFzZTsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG1fb2Jq
ZWN0U3RvcmU7CiAgICAgUmVmUHRyPElEQkluZGV4PiBtX2luZGV4OworICAgIFJlZlB0cjxJREJD
dXJzb3I+IG1fY3Vyc29yOworICAgIFJlZlB0cjxJREJDdXJzb3I+IG1fY3Vyc29yV2l0aFZhbHVl
OwogCiAgICAgY29uc3QgSURCS2V5UGF0aCBtX2lkYktleVBhdGg7CiAgICAgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUgbV9zY3JpcHRWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1Nl
cnZlci5jcHAKaW5kZXggZTkyMDhiMi4uMjc0ZmJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25U
b1NlcnZlci5jcHAKQEAgLTIxNyw2ICsyMTcsMzQgQEAgdm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OmRpZERlbGV0ZVJlY29yZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogICAg
IGNvbXBsZXRlT3BlcmF0aW9uKHJlc3VsdERhdGEpOwogfQogCit2b2lkIElEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6b3BlbkN1cnNvcihUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25z
dCBJREJDdXJzb3JJbmZvJiBpbmZvKQoreworICAgIExPRyhJbmRleGVkREIsICJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6Om9wZW5DdXJzb3IiKTsKKworICAgIHNhdmVPcGVyYXRpb24ob3BlcmF0aW9u
KTsKKyAgICBtX2RlbGVnYXRlLT5vcGVuQ3Vyc29yKElEQlJlcXVlc3REYXRhKG9wZXJhdGlvbiks
IGluZm8pOworfQorCit2b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkT3BlbkN1cnNvcihj
b25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIExPRyhJbmRleGVkREIsICJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZE9wZW5DdXJzb3IiKTsKKyAgICBjb21wbGV0ZU9wZXJh
dGlvbihyZXN1bHREYXRhKTsKK30KKwordm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Oml0ZXJh
dGVDdXJzb3IoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURCS2V5RGF0
YSYga2V5LCB1bnNpZ25lZCBsb25nIGNvdW50KQoreworICAgIExPRyhJbmRleGVkREIsICJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IiKTsKKworICAgIHNhdmVPcGVyYXRpb24o
b3BlcmF0aW9uKTsKKyAgICBtX2RlbGVnYXRlLT5pdGVyYXRlQ3Vyc29yKElEQlJlcXVlc3REYXRh
KG9wZXJhdGlvbiksIGtleSwgY291bnQpOworfQorCit2b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6ZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQorewor
ICAgIExPRyhJbmRleGVkREIsICJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZEl0ZXJhdGVDdXJz
b3IiKTsKKyAgICBjb21wbGV0ZU9wZXJhdGlvbihyZXN1bHREYXRhKTsKK30KKwogdm9pZCBJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCQ29ubmVjdGlvblRvU2VydmVy
Ojplc3RhYmxpc2hUcmFuc2FjdGlvbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oCmlu
ZGV4IDc2ZDY5ZGMuLjFjZGNlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmgKQEAg
LTM4LDYgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJREJDdXJzb3JJ
bmZvOwogY2xhc3MgSURCRXJyb3I7CiBjbGFzcyBJREJPYmplY3RTdG9yZUluZm87CiBjbGFzcyBJ
REJSZXN1bHREYXRhOwpAQCAtODUsNiArODYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRl
UmVjb3JkKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CiAg
ICAgdm9pZCBkaWREZWxldGVSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogCisgICAgdm9p
ZCBvcGVuQ3Vyc29yKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYp
OworICAgIHZvaWQgZGlkT3BlbkN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJik7CisKKyAgICB2
b2lkIGl0ZXJhdGVDdXJzb3IoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBjb25zdCBJREJLZXlEYXRh
JiwgdW5zaWduZWQgbG9uZyBjb3VudCk7CisgICAgdm9pZCBkaWRJdGVyYXRlQ3Vyc29yKGNvbnN0
IElEQlJlc3VsdERhdGEmKTsKKwogICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oSURCVHJhbnNh
Y3Rpb24mKTsKICAgICB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29u
bmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oCmluZGV4IDIzMDU2NGQu
LmY5YjhjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5o
CkBAIC0zMiw4ICszMiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIElEQkN1
cnNvckluZm87CiBjbGFzcyBJREJJbmRleEluZm87CiBjbGFzcyBJREJLZXk7CitjbGFzcyBJREJL
ZXlEYXRhOwogY2xhc3MgSURCT2JqZWN0U3RvcmVJbmZvOwogY2xhc3MgSURCUmVxdWVzdERhdGE7
CiBjbGFzcyBJREJSZXNvdXJjZUlkZW50aWZpZXI7CkBAIC02NSw2ICs2Nyw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRDb3VudChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFu
Z2VEYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaXRl
cmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCB1bnNp
Z25lZCBsb25nIGNvdW50KSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoVHJhbnNh
Y3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJh
bnNhY3Rpb25JbmZvJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRhdGFiYXNlQ29ubmVjdGlv
bkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29y
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vy
c29ySW1wbC5jcHAKaW5kZXggNGFhZTgxZS4uNjE1ZDE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvckltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDdXJzb3JJbXBsLmNwcApA
QCAtMjgsNjEgKzI4LDI2MSBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNp
bmNsdWRlICJET01SZXF1ZXN0U3RhdGUuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisj
aW5jbHVkZSAiSURCQmluZGluZ1V0aWxpdGllcy5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhj
ZXB0aW9uLmgiCisjaW5jbHVkZSAiSURCR2V0UmVzdWx0LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIElEQkNsaWVudCB7CiAKK1JlZjxJREJDdXJzb3I+IElEQkN1cnNvcjo6
Y3JlYXRlKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgSURCSW5kZXgmIGluZGV4LCBjb25z
dCBJREJDdXJzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElEQkN1
cnNvcih0cmFuc2FjdGlvbiwgaW5kZXgsIGluZm8pKTsKK30KKworSURCQ3Vyc29yOjpJREJDdXJz
b3IoSURCVHJhbnNhY3Rpb24mLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElE
QkN1cnNvckluZm8mIGluZm8pCisgICAgOiBtX2luZm8oaW5mbykKKyAgICAsIG1fc291cmNlKElE
QkFueTo6Y3JlYXRlKG9iamVjdFN0b3JlKS5sZWFrUmVmKCkpCisgICAgLCBtX29iamVjdFN0b3Jl
KCZvYmplY3RTdG9yZSkKK3sKK30KKworSURCQ3Vyc29yOjpJREJDdXJzb3IoSURCVHJhbnNhY3Rp
b24mLCBJREJJbmRleCYgaW5kZXgsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCisgICAgOiBt
X2luZm8oaW5mbykKKyAgICAsIG1fc291cmNlKElEQkFueTo6Y3JlYXRlKGluZGV4KS5sZWFrUmVm
KCkpCisgICAgLCBtX2luZGV4KCZpbmRleCkKK3sKK30KKwogSURCQ3Vyc29yOjp+SURCQ3Vyc29y
KCkKIHsKIH0KIAorYm9vbCBJREJDdXJzb3I6OnNvdXJjZXNEZWxldGVkKCkgY29uc3QKK3sKKyAg
ICBpZiAobV9vYmplY3RTdG9yZSkKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0U3RvcmUtPmlzRGVs
ZXRlZCgpOworCisgICAgQVNTRVJUKG1faW5kZXgpOworICAgIHJldHVybiBtX2luZGV4LT5pc0Rl
bGV0ZWQoKSB8fCBtX2luZGV4LT5tb2Rlcm5PYmplY3RTdG9yZSgpLmlzRGVsZXRlZCgpOworfQor
CitJREJPYmplY3RTdG9yZSYgSURCQ3Vyc29yOjplZmZlY3RpdmVPYmplY3RTdG9yZSgpIGNvbnN0
Cit7CisgICAgaWYgKG1fb2JqZWN0U3RvcmUpCisgICAgICAgIHJldHVybiAqbV9vYmplY3RTdG9y
ZTsKKworICAgIEFTU0VSVChtX2luZGV4KTsKKyAgICByZXR1cm4gbV9pbmRleC0+bW9kZXJuT2Jq
ZWN0U3RvcmUoKTsKK30KKworSURCVHJhbnNhY3Rpb24mIElEQkN1cnNvcjo6dHJhbnNhY3Rpb24o
KSBjb25zdAoreworICAgIHJldHVybiBlZmZlY3RpdmVPYmplY3RTdG9yZSgpLm1vZGVyblRyYW5z
YWN0aW9uKCk7Cit9CisKIGNvbnN0IFN0cmluZyYgSURCQ3Vyc29yOjpkaXJlY3Rpb24oKSBjb25z
dAogewotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIElEQkN1
cnNvcjo6ZGlyZWN0aW9uVG9TdHJpbmcobV9pbmZvLmN1cnNvckRpcmVjdGlvbigpKTsKIH0KIAog
Y29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIElEQkN1cnNvcjo6a2V5KCkgY29uc3QKIHsK
LSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBtX2RlcHJlY2F0
ZWRDdXJyZW50S2V5OwogfQogCiBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgSURCQ3Vy
c29yOjpwcmltYXJ5S2V5KCkgY29uc3QKIHsKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBtX2RlcHJlY2F0ZWRDdXJyZW50UHJpbWFyeUtleTsKIH0KIAogY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIElEQkN1cnNvcjo6dmFsdWUoKSBjb25zdAogewot
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG1fZGVwcmVjYXRl
ZEN1cnJlbnRWYWx1ZTsKK30KKworSURCQW55KiBJREJDdXJzb3I6OnNvdXJjZSgpCit7CisgICAg
cmV0dXJuICZtX3NvdXJjZS5nZXQoKTsKK30KKworUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+
IElEQkN1cnNvcjo6dXBkYXRlKEpTQzo6RXhlY1N0YXRlJiBleGVjLCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIExPRyhJbmRleGVkREIs
ICJJREJDdXJzb3I6OmFkdmFuY2UiKTsKKworICAgIGlmIChzb3VyY2VzRGVsZXRlZCgpKSB7Cisg
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoIXRyYW5zYWN0aW9uKCkuaXNB
Y3RpdmUoKSkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlv
bkluYWN0aXZlRXJyb3I7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlm
ICh0cmFuc2FjdGlvbigpLmlzUmVhZE9ubHkoKSkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpSZWFkT25seUVycm9yOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKKyAgICBpZiAoIW1fZ290VmFsdWUpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KworICAgIGlmIChpc0tleUN1cnNvcigpKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OkludmFsaWRTdGF0ZUVycm9yOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKKyAgICByZXR1cm4gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS5wdXQoZXhlYywgdmFsdWUuanNW
YWx1ZSgpLCBtX2RlcHJlY2F0ZWRDdXJyZW50UHJpbWFyeUtleS5qc1ZhbHVlKCksIGVjKTsKK30K
Kwordm9pZCBJREJDdXJzb3I6OmFkdmFuY2UodW5zaWduZWQgbG9uZyBjb3VudCwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkN1cnNvcjo6YWR2YW5jZSIpOwor
CisgICAgaWYgKCFtX3JlcXVlc3QpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6SW52YWxpZFN0YXRlRXJyb3I7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
aWYgKCFjb3VudCkgeworICAgICAgICBlYyA9IFR5cGVFcnJvcjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmIChzb3VyY2VzRGVsZXRlZCgpKSB7CisgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKCF0cmFuc2FjdGlvbigpLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtX2dvdFZhbHVlKSB7CisgICAgICAgIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgdW5jaGVja2VkSXRlcmF0b3JDdXJzb3IoSURCS2V5RGF0YSgpLCBjb3VudCk7
CiB9CiAKLUlEQkFueSogSURCQ3Vyc29yOjpzb3VyY2UoKSBjb25zdAordm9pZCBJREJDdXJzb3I6
OmNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBp
ZiAoIWNvbnRleHQpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxp
ZFN0YXRlRXJyb3I7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb250aW51ZUZ1bmN0
aW9uKElEQktleURhdGEoKSwgZWMpOwogfQogCi1SZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29y
Ojp1cGRhdGUoSlNDOjpFeGVjU3RhdGUmLCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEV4Y2Vw
dGlvbkNvZGUmKQordm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleVZh
bHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIGlmICghY29udGV4dCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIERP
TVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CisgICAgUmVmUHRyPElEQktleT4g
a2V5ID0gc2NyaXB0VmFsdWVUb0lEQktleSgmcmVxdWVzdFN0YXRlLCBrZXlWYWx1ZSk7CisgICAg
Y29udGludWVGdW5jdGlvbihrZXkuZ2V0KCksIGVjKTsKIH0KIAotdm9pZCBJREJDdXJzb3I6OmFk
dmFuY2UodW5zaWduZWQgbG9uZywgRXhjZXB0aW9uQ29kZSYpCit2b2lkIElEQkN1cnNvcjo6Y29u
dGludWVGdW5jdGlvbihjb25zdCBJREJLZXlEYXRhJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgTE9HKEluZGV4ZWREQiwg
IklEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbiIpOworCisgICAgaWYgKCFtX3JlcXVlc3QpIHsK
KyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc291cmNlc0RlbGV0ZWQoKSkgeworICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdHJhbnNhY3Rpb24oKS5pc0FjdGl2ZSgpKSB7
CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVF
cnJvcjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9nb3RWYWx1ZSkgewor
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgha2V5LmlzVmFsaWQoKSkgeworICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEYXRhRXJyb3I7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAobV9pbmZvLmlzRGlyZWN0aW9uRm9yd2FyZCgpKSB7CisgICAgICAg
IGlmIChrZXkuY29tcGFyZShtX2N1cnJlbnRQcmltYXJ5S2V5RGF0YSkgPD0gMCkgeworICAgICAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChrZXkuY29tcGFyZShtX2N1cnJlbnRQ
cmltYXJ5S2V5RGF0YSkgPj0gMCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpEYXRhRXJyb3I7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1bmNoZWNrZWRJdGVy
YXRvckN1cnNvcihrZXksIDApOwogfQogCi12b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpCit2b2lkIElEQkN1cnNv
cjo6dW5jaGVja2VkSXRlcmF0b3JDdXJzb3IoY29uc3QgSURCS2V5RGF0YSYga2V5LCB1bnNpZ25l
ZCBsb25nIGNvdW50KQogewotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
bV9yZXF1ZXN0LT53aWxsSXRlcmF0ZUN1cnNvcigqdGhpcyk7CisgICAgdHJhbnNhY3Rpb24oKS5p
dGVyYXRlQ3Vyc29yKCp0aGlzLCBrZXksIGNvdW50KTsKIH0KIAotdm9pZCBJREJDdXJzb3I6OmNv
bnRpbnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVz
dD4gSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIExPRyhJbmRleGVkREIsICJJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uIik7CisK
KyAgICBpZiAoIWNvbnRleHQpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
SW52YWxpZFN0YXRlRXJyb3I7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAg
IGlmIChzb3VyY2VzRGVsZXRlZCgpKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OkludmFsaWRTdGF0ZUVycm9yOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
KyAgICBpZiAoIXRyYW5zYWN0aW9uKCkuaXNBY3RpdmUoKSkgeworICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworICAgIGlmICh0cmFuc2FjdGlvbigpLmlzUmVhZE9ubHkoKSkg
eworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSZWFkT25seUVycm9yOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoIW1fZ290VmFsdWUpIHsKKyAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBlZmZlY3RpdmVPYmplY3RT
dG9yZSgpLmRlbGV0ZUZ1bmN0aW9uKGNvbnRleHQsIG1fZGVwcmVjYXRlZEN1cnJlbnRQcmltYXJ5
S2V5LmpzVmFsdWUoKSwgZWMpOwogfQogCi1SZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjpk
ZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpCit2
b2lkIElEQkN1cnNvcjo6c2V0R2V0UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYpCiB7Ci0gICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vy
c29yOjpzZXRHZXRSZXN1bHQiKTsKKworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisKKyAgICBt
X2dvdFZhbHVlID0gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSURCQ2xpZW50CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29ySW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvcklt
cGwuaAppbmRleCBlODliOTFiLi41MGRkMGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDdXJzb3JJbXBsLmgKQEAgLTI4LDEzICsy
OCwyNCBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJJREJB
bnlJbXBsLmgiCisjaW5jbHVkZSAiSURCQ3Vyc29ySW5mby5oIgogI2luY2x1ZGUgIklEQkN1cnNv
cldpdGhWYWx1ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBJREJHZXRSZXN1
bHQ7CisKIG5hbWVzcGFjZSBJREJDbGllbnQgewogCitjbGFzcyBJREJJbmRleDsKK2NsYXNzIElE
Qk9iamVjdFN0b3JlOworY2xhc3MgSURCVHJhbnNhY3Rpb247CisKIGNsYXNzIElEQkN1cnNvciA6
IHB1YmxpYyBXZWJDb3JlOjpJREJDdXJzb3JXaXRoVmFsdWUgewogcHVibGljOgorICAgIHN0YXRp
YyBSZWY8SURCQ3Vyc29yPiBjcmVhdGUoSURCVHJhbnNhY3Rpb24mLCBJREJJbmRleCYsIGNvbnN0
IElEQkN1cnNvckluZm8mKTsKKwogICAgIHZpcnR1YWwgfklEQkN1cnNvcigpOwogCiAgICAgLy8g
SW1wbGVtZW50IHRoZSBJREwKQEAgLTQyLDE2ICs1Myw1MiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5KCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWw7CiAgICAgdmlydHVhbCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgcHJpbWFyeUtl
eSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgY29uc3QgRGVwcmVjYXRlZDo6
U2NyaXB0VmFsdWUmIHZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBJ
REJBbnkqIHNvdXJjZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgSURCQW55
KiBzb3VyY2UoKSBvdmVycmlkZSBmaW5hbDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPElEQlJlcXVl
c3Q+IHVwZGF0ZShKU0M6OkV4ZWNTdGF0ZSYsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgRXhj
ZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6
OklEQlJlcXVlc3Q+IHVwZGF0ZShKU0M6OkV4ZWNTdGF0ZSYsIERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBh
ZHZhbmNlKHVuc2lnbmVkIGxvbmcsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKICAg
ICB2aXJ0dWFsIHZvaWQgY29udGludWVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
RXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBjb250aW51
ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVh
bCBSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJDb3JlOjpJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOworCisgICAgdm9pZCBjb250aW51ZUZ1
bmN0aW9uKGNvbnN0IElEQktleURhdGEmLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICBjb25zdCBJ
REJDdXJzb3JJbmZvJiBpbmZvKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvOyB9CisKKyAgICB2b2lk
IHNldFJlcXVlc3QoSURCUmVxdWVzdCYgcmVxdWVzdCkgeyBtX3JlcXVlc3QgPSAmcmVxdWVzdDsg
fQorICAgIHZvaWQgY2xlYXJSZXF1ZXN0KCkgeyBtX3JlcXVlc3QgPSBudWxscHRyOyB9CisgICAg
SURCUmVxdWVzdCogcmVxdWVzdCgpIHsgcmV0dXJuIG1fcmVxdWVzdDsgfQorCisgICAgdm9pZCBz
ZXRHZXRSZXN1bHQoY29uc3QgSURCR2V0UmVzdWx0Jik7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNL
ZXlDdXJzb3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKIHByb3RlY3RlZDoK
LSAgICBJREJDdXJzb3IoKTsKKyAgICBJREJDdXJzb3IoSURCVHJhbnNhY3Rpb24mLCBJREJPYmpl
Y3RTdG9yZSYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKKyAgICBJREJDdXJzb3IoSURCVHJhbnNh
Y3Rpb24mLCBJREJJbmRleCYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKKworcHJpdmF0ZToKKyAg
ICBJREJDdXJzb3JJbmZvIG1faW5mbzsKKyAgICBSZWY8SURCQW55PiBtX3NvdXJjZTsKKyAgICBJ
REJPYmplY3RTdG9yZSogbV9vYmplY3RTdG9yZSB7IG51bGxwdHIgfTsKKyAgICBJREJJbmRleCog
bV9pbmRleCB7IG51bGxwdHIgfTsKKyAgICBJREJSZXF1ZXN0KiBtX3JlcXVlc3Q7CisKKyAgICBi
b29sIHNvdXJjZXNEZWxldGVkKCkgY29uc3Q7CisgICAgSURCT2JqZWN0U3RvcmUmIGVmZmVjdGl2
ZU9iamVjdFN0b3JlKCkgY29uc3Q7CisgICAgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKCkg
Y29uc3Q7CisKKyAgICB2b2lkIHVuY2hlY2tlZEl0ZXJhdG9yQ3Vyc29yKGNvbnN0IElEQktleURh
dGEmLCB1bnNpZ25lZCBsb25nIGNvdW50KTsKKworICAgIGJvb2wgbV9nb3RWYWx1ZSB7IGZhbHNl
IH07CisKKyAgICBJREJLZXlEYXRhIG1fY3VycmVudFByaW1hcnlLZXlEYXRhOworCisgICAgLy8g
RklYTUU6IFdoZW4gZGl0Y2hpbmcgTGVnYWN5IElEQiBhbmQgY29tYmluaW5nIHRoaXMgaW1wbGVt
ZW50YXRpb24gd2l0aCB0aGUgYWJzdHJhY3QgSURCQ3Vyc29yLAorICAgIC8vIHRoZXNlIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIG1lbWJlcnMgc2hvdWxkIGJlIEpTVmFsdWVzIGluc3RlYWQuCisg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbV9kZXByZWNhdGVkQ3VycmVudEtleTsKKyAgICBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2RlcHJlY2F0ZWRDdXJyZW50UHJpbWFyeUtleTsKKyAg
ICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2RlcHJlY2F0ZWRDdXJyZW50VmFsdWU7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBJREJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDdXJzb3JXaXRoVmFsdWVJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDdXJzb3JXaXRoVmFsdWVJbXBs
LmNwcAppbmRleCA0ZDMyZTc1Li5lZWVkYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvcldpdGhWYWx1
ZUltcGwuY3BwCkBAIC0yOSw3ICsyOSwzMyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSURCQ2xpZW50IHsKIAorUmVmPElE
QkN1cnNvcldpdGhWYWx1ZT4gSURCQ3Vyc29yV2l0aFZhbHVlOjpjcmVhdGUoSURCVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQkN1
cnNvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCQ3Vyc29yV2l0
aFZhbHVlKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZSwgaW5mbykpOworfQorCitSZWY8SURCQ3Vy
c29yV2l0aFZhbHVlPiBJREJDdXJzb3JXaXRoVmFsdWU6OmNyZWF0ZShJREJUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJDdXJzb3JXaXRoVmFsdWUodHJhbnNhY3Rp
b24sIGluZGV4LCBpbmZvKSk7Cit9CisKK0lEQkN1cnNvcldpdGhWYWx1ZTo6SURCQ3Vyc29yV2l0
aFZhbHVlKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgSURCT2JqZWN0U3RvcmUmIG9iamVj
dFN0b3JlLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQorICAgIDogSURCQ3Vyc29yKHRyYW5z
YWN0aW9uLCBvYmplY3RTdG9yZSwgaW5mbykKK3sKK30KKworSURCQ3Vyc29yV2l0aFZhbHVlOjpJ
REJDdXJzb3JXaXRoVmFsdWUoSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBJREJJbmRleCYg
aW5kZXgsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCisgICAgOiBJREJDdXJzb3IodHJhbnNh
Y3Rpb24sIGluZGV4LCBpbmZvKQoreworfQorCitJREJDdXJzb3JXaXRoVmFsdWU6On5JREJDdXJz
b3JXaXRoVmFsdWUoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBJREJDbGllbnQKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNv
cldpdGhWYWx1ZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJDdXJzb3JXaXRoVmFsdWVJbXBsLmgKaW5kZXggYWRkYWI2Zi4uZGYzNGNkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvcldp
dGhWYWx1ZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5oCkBAIC0zNSwxMCArMzUsMTYgQEAgbmFtZXNwYWNl
IElEQkNsaWVudCB7CiAKIGNsYXNzIElEQkN1cnNvcldpdGhWYWx1ZSA6IHB1YmxpYyBJREJDdXJz
b3IgewogcHVibGljOgorICAgIHN0YXRpYyBSZWY8SURCQ3Vyc29yV2l0aFZhbHVlPiBjcmVhdGUo
SURCVHJhbnNhY3Rpb24mLCBJREJPYmplY3RTdG9yZSYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsK
KyAgICBzdGF0aWMgUmVmPElEQkN1cnNvcldpdGhWYWx1ZT4gY3JlYXRlKElEQlRyYW5zYWN0aW9u
JiwgSURCSW5kZXgmLCBjb25zdCBJREJDdXJzb3JJbmZvJik7CisKICAgICB2aXJ0dWFsIH5JREJD
dXJzb3JXaXRoVmFsdWUoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBpc0tleUN1cnNvcigpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisKIHByaXZhdGU6Ci0gICAgSURCQ3Vy
c29yV2l0aFZhbHVlKCk7CisgICAgSURCQ3Vyc29yV2l0aFZhbHVlKElEQlRyYW5zYWN0aW9uJiwg
SURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJDdXJzb3JJbmZvJik7CisgICAgSURCQ3Vyc29yV2l0
aFZhbHVlKElEQlRyYW5zYWN0aW9uJiwgSURCSW5kZXgmLCBjb25zdCBJREJDdXJzb3JJbmZvJik7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJREJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJJbmRleEltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkluZGV4SW1wbC5jcHAKaW5kZXggZjY5
YjJhNy4uZjA5MjU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQkluZGV4SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkluZGV4SW1wbC5jcHAKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNs
dWRlICJET01SZXF1ZXN0U3RhdGUuaCIKICNpbmNsdWRlICJJREJBbnlJbXBsLmgiCiAjaW5jbHVk
ZSAiSURCQmluZGluZ1V0aWxpdGllcy5oIgorI2luY2x1ZGUgIklEQkN1cnNvckltcGwuaCIKKyNp
bmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlRGF0
YS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlSW1wbC5oIgogI2luY2x1ZGUgIklEQlRyYW5z
YWN0aW9uSW1wbC5oIgpAQCAtODQsMTQgKzg2LDM3IEBAIGJvb2wgSURCSW5kZXg6Om11bHRpRW50
cnkoKSBjb25zdAogICAgIHJldHVybiBtX2luZm8ubXVsdGlFbnRyeSgpOwogfQogCi1SZWZQdHI8
V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIElEQktleVJhbmdlKiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpCitS
ZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgSURCS2V5UmFuZ2UqIHJhbmdlLCBjb25zdCBTdHJpbmcm
IGRpcmVjdGlvblN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6Om9wZW5DdXJz
b3IiKTsKKworICAgIGlmIChtX2RlbGV0ZWQgfHwgbV9vYmplY3RTdG9yZS0+aXNEZWxldGVkKCkp
IHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRlRXJyb3I7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmICghbV9vYmplY3RTdG9y
ZS0+bW9kZXJuVHJhbnNhY3Rpb24oKS5pc0FjdGl2ZSgpKSB7CisgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcjsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0
aW9uID0gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rpb25TdHJpbmcsIGVjKTsK
KyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBpbmZvID0g
SURCQ3Vyc29ySW5mbzo6aW5kZXhDdXJzb3IobV9vYmplY3RTdG9yZS0+bW9kZXJuVHJhbnNhY3Rp
b24oKSwgbV9pbmZvLmlkZW50aWZpZXIoKSwgcmFuZ2UsIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpD
dXJzb3JUeXBlOjpLZXlBbmRWYWx1ZSk7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBt
X29iamVjdFN0b3JlLT5tb2Rlcm5UcmFuc2FjdGlvbigpLnJlcXVlc3RPcGVuQ3Vyc29yKCpjb250
ZXh0LCAqdGhpcywgaW5mbyk7CisgICAgcmV0dXJuIFdURjo6bW92ZShyZXF1ZXN0KTsKIH0KIAot
UmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQklu
ZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERl
cHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IExPRyhJbmRleGVkREIsICJJREJJbmRleDo6b3BlbkN1cnNvciIpOworICAgIFJlZlB0cjxJREJL
ZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShjb250ZXh0LCBrZXksIGVjKTsK
KyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIG9wZW5D
dXJzb3IoY29udGV4dCwga2V5UmFuZ2UuZ2V0KCksIGRpcmVjdGlvbiwgZWMpOwogfQogCiBSZWZQ
dHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTU5LDE0ICsxODQsMzcgQEAg
UmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4Ojpkb0NvdW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIGMKICAgICByZXR1cm4gdHJhbnNhY3Rpb24ucmVxdWVzdENv
dW50KGNvbnRleHQsICp0aGlzLCByYW5nZSk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1
ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURC
S2V5UmFuZ2UqLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikKK1JlZlB0cjxXZWJDb3Jl
OjpJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBJREJLZXlSYW5nZSogcmFuZ2UsIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9u
U3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6b3BlbktleUN1cnNvciIpOwor
CisgICAgaWYgKG1fZGVsZXRlZCB8fCBtX29iamVjdFN0b3JlLT5pc0RlbGV0ZWQoKSkgeworICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKCFtX29iamVjdFN0b3JlLT5tb2Rl
cm5UcmFuc2FjdGlvbigpLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6VHJhbnNhY3Rpb25JbmFjdGl2ZUVycm9yOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisKKyAgICBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSBJ
REJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmluZywgZWMpOworICAgIGlm
IChlYykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGluZm8gPSBJREJDdXJz
b3JJbmZvOjppbmRleEN1cnNvcihtX29iamVjdFN0b3JlLT5tb2Rlcm5UcmFuc2FjdGlvbigpLCBt
X2luZm8uaWRlbnRpZmllcigpLCByYW5nZSwgZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5
cGU6OktleU9ubHkpOworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gbV9vYmplY3RTdG9y
ZS0+bW9kZXJuVHJhbnNhY3Rpb24oKS5yZXF1ZXN0T3BlbkN1cnNvcigqY29udGV4dCwgKnRoaXMs
IGluZm8pOworICAgIHJldHVybiBXVEY6Om1vdmUocmVxdWVzdCk7CiB9CiAKLVJlZlB0cjxXZWJD
b3JlOjpJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBjb25zdCBTdHJpbmcmLCBF
eGNlcHRpb25Db2RlJikKK1JlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJJbmRleDo6b3Bl
bktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBMT0co
SW5kZXhlZERCLCAiSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IiKTsKKyAgICBSZWZQdHI8SURCS2V5
UmFuZ2U+IGtleVJhbmdlID0gSURCS2V5UmFuZ2U6Om9ubHkoY29udGV4dCwga2V5LCBlYyk7Cisg
ICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBvcGVuS2V5
Q3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLmdldCgpLCBkaXJlY3Rpb24sIGVjKTsKIH0KIAogUmVm
UHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgSURCS2V5UmFuZ2UqIHJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJJbmRl
eEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJJbmRl
eEltcGwuaAppbmRleCA1MDgwOWMzLi4xNzA0ZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkluZGV4SW1wbC5oCkBAIC03Nyw2ICs3
Nyw5IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbygpIGNvbnN0IHsg
cmV0dXJuIG1faW5mbzsgfQogCisgICAgSURCT2JqZWN0U3RvcmUmIG1vZGVybk9iamVjdFN0b3Jl
KCkgeyByZXR1cm4gbV9vYmplY3RTdG9yZS5nZXQoKTsgfQorICAgIGJvb2wgaXNEZWxldGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9kZWxldGVkOyB9CisKIHByaXZhdGU6CiAgICAgSURCSW5kZXgoY29u
c3QgSURCSW5kZXhJbmZvJiwgSURCT2JqZWN0U3RvcmUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJ
bXBsLmNwcAppbmRleCA5MGYwMDAxLi5iMzQ0MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBs
LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRE9NUmVxdWVzdFN0YXRlLmgiCiAj
aW5jbHVkZSAiSURCQmluZGluZ1V0aWxpdGllcy5oIgorI2luY2x1ZGUgIklEQkN1cnNvckltcGwu
aCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkVycm9y
LmgiCiAjaW5jbHVkZSAiSURCSW5kZXhJbXBsLmgiCkBAIC04OSwyOSArOTAsNTEgQEAgYm9vbCBJ
REJPYmplY3RTdG9yZTo6YXV0b0luY3JlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5mby5h
dXRvSW5jcmVtZW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmpl
Y3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29k
ZSYpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJz
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gb3BlbkN1cnNv
cihjb250ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KG51bGxwdHIpLCBlYyk7CiB9CiAK
LVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlJikKK1Jl
ZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBJREJLZXlSYW5nZSoga2V5UmFuZ2UsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5UmFuZ2UsIElEQkN1cnNvcjo6ZGlyZWN0aW9u
TmV4dCgpLCBlYyk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RT
dG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJikKK1JlZlB0cjxXZWJDb3JlOjpJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBv
cGVuQ3Vyc29yKGNvbnRleHQsIGtleSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vy
c29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIGNvbnN0IFN0cmluZyYs
IEV4Y2VwdGlvbkNvZGUmKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIElEQktleVJh
bmdlKiByYW5nZSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgTE9HKEluZGV4
ZWREQiwgIklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yIik7CisKKyAgICBpZiAobV9kZWxldGVk
KSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9y
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoIW1fdHJhbnNhY3Rp
b24tPmlzQWN0aXZlKCkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VHJh
bnNhY3Rpb25JbmFjdGl2ZUVycm9yOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
KyAgICBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24gPSBJREJDdXJzb3I6OnN0
cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmluZywgZWMpOworICAgIGlmIChlYykKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGluZm8gPSBJREJDdXJzb3JJbmZvOjpvYmpl
Y3RTdG9yZUN1cnNvcihtX3RyYW5zYWN0aW9uLmdldCgpLCBtX2luZm8uaWRlbnRpZmllcigpLCBy
YW5nZSwgZGlyZWN0aW9uKTsKKyAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdCA9IG1fdHJhbnNh
Y3Rpb24tPnJlcXVlc3RPcGVuQ3Vyc29yKCpjb250ZXh0LCAqdGhpcywgaW5mbyk7CisgICAgcmV0
dXJuIFdURjo6bW92ZShyZXF1ZXN0KTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29y
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFJlZlB0cjxJREJLZXlS
YW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShjb250ZXh0LCBrZXksIGVjKTsKKyAg
ICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG9wZW5DdXJzb3IoY29u
dGV4dCwga2V5UmFuZ2UuZ2V0KCksIGRpcmVjdGlvbiwgZWMpOwogfQogCiBSZWZQdHI8V2ViQ29y
ZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25D
b2RlJiBlYykKQEAgLTMwOCw2ICszMzEsMTEgQEAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXgKIAog
UmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICByZXR1cm4gZGVsZXRlRnVu
Y3Rpb24oY29udGV4dCwga2V5LmpzVmFsdWUoKSwgZWMpOworfQorCitSZWZQdHI8V2ViQ29yZTo6
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIEpTQzo6SlNWYWx1ZSBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQor
ewogICAgIERPTVJlcXVlc3RTdGF0ZSByZXF1ZXN0U3RhdGUoY29udGV4dCk7CiAgICAgUmVmUHRy
PElEQktleT4gaWRiS2V5ID0gc2NyaXB0VmFsdWVUb0lEQktleSgmcmVxdWVzdFN0YXRlLCBrZXkp
OwogICAgIGlmICghaWRiS2V5IHx8IGlkYktleS0+dHlwZSgpID09IEtleVR5cGU6OkludmFsaWQp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJPYmplY3RTdG9yZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9JREJPYmplY3RTdG9yZUltcGwuaAppbmRleCA5MmU3ZGFmLi43M2QxNjdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3Rv
cmVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
Qk9iamVjdFN0b3JlSW1wbC5oCkBAIC03OCw2ICs3OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmly
dHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGUm
KSBvdmVycmlkZSBmaW5hbDsKIAorICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBkZWxl
dGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSlNDOjpKU1ZhbHVlIGtleSwgRXhj
ZXB0aW9uQ29kZSYpOworCiAgICAgdm9pZCBtYXJrQXNEZWxldGVkKCk7CiAgICAgYm9vbCBpc0Rl
bGV0ZWQoKSBjb25zdCB7IHJldHVybiBtX2RlbGV0ZWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHAK
aW5kZXggOThhZWFkNS4uYzU2YTcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiRE9NUmVxdWVzdFN0YXRlLmgiCiAjaW5jbHVkZSAiRXZlbnRRdWV1
ZS5oIgogI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJJREJDdXJz
b3JJbXBsLmgiCiAjaW5jbHVkZSAiSURCRXZlbnREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiSURC
S2V5RGF0YS5oIgogI2luY2x1ZGUgIklEQlJlc3VsdERhdGEuaCIKQEAgLTQ3LDYgKzQ4LDExIEBA
IFJlZjxJREJSZXF1ZXN0PiBJREJSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgSURCT2JqZWN0U3RvCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCUmVx
dWVzdChjb250ZXh0LCBvYmplY3RTdG9yZSwgdHJhbnNhY3Rpb24pKTsKIH0KIAorUmVmPElEQlJl
cXVlc3Q+IElEQlJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBJREJDdXJzb3ImIGN1cnNvciwgSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IElEQlJlcXVlc3QoY29udGV4dCwgY3Vyc29yLCB0cmFuc2Fj
dGlvbikpOworfQorCiBSZWY8SURCUmVxdWVzdD4gSURCUmVxdWVzdDo6Y3JlYXRlQ291bnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCSW5kZXgmIGluZGV4LCBJREJUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCUmVxdWVz
dChjb250ZXh0LCBpbmRleCwgdHJhbnNhY3Rpb24pKTsKQEAgLTc1LDYgKzgxLDIzIEBAIElEQlJl
cXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCT2Jq
ZWN0U3RvcmUmIG9iamVjdFN0CiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CiB9CiAKK0lEQlJlcXVl
c3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCQ3Vyc29y
JiBjdXJzb3IsIElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKKyAgICA6IElEQk9wZW5EQlJl
cXVlc3QoJmNvbnRleHQpCisgICAgLCBtX3RyYW5zYWN0aW9uKCZ0cmFuc2FjdGlvbikKKyAgICAs
IG1fY29ubmVjdGlvbih0cmFuc2FjdGlvbi5zZXJ2ZXJDb25uZWN0aW9uKCkpCisgICAgLCBtX3Jl
c291cmNlSWRlbnRpZmllcih0cmFuc2FjdGlvbi5zZXJ2ZXJDb25uZWN0aW9uKCkpCisgICAgLCBt
X3BlbmRpbmdDdXJzb3IoJmN1cnNvcikKK3sKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKKworICAg
IGN1cnNvci5zZXRSZXF1ZXN0KCp0aGlzKTsKKworICAgIGF1dG8qIGN1cnNvclNvdXJjZSA9IGN1
cnNvci5zb3VyY2UoKTsKKyAgICBBU1NFUlQoY3Vyc29yU291cmNlKTsKKyAgICBBU1NFUlQoY3Vy
c29yU291cmNlLT50eXBlKCkgPT0gSURCQW55OjpUeXBlOjpJREJPYmplY3RTdG9yZSB8fCBjdXJz
b3JTb3VyY2UtPnR5cGUoKSA9PSBJREJBbnk6OlR5cGU6OklEQkluZGV4KTsKKyAgICBtX3NvdXJj
ZSA9IGN1cnNvclNvdXJjZTsKK30KKwogSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJJbmRleCYgaW5kZXgsIElEQlRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbikKICAgICA6IElEQk9wZW5EQlJlcXVlc3QoJmNvbnRleHQpCiAgICAgLCBtX3Ry
YW5zYWN0aW9uKCZ0cmFuc2FjdGlvbikKQEAgLTkzLDYgKzExNiwxMSBAQCBJREJSZXF1ZXN0OjpJ
REJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElEQkluZGV4JiBpbmRl
eCwgSW5kZXhlZAogCiBJREJSZXF1ZXN0Ojp+SURCUmVxdWVzdCgpCiB7CisgICAgaWYgKG1fcmVz
dWx0KSB7CisgICAgICAgIGF1dG8gdHlwZSA9IG1fcmVzdWx0LT50eXBlKCk7CisgICAgICAgIGlm
ICh0eXBlID09IElEQkFueTo6VHlwZTo6SURCQ3Vyc29yIHx8IHR5cGUgPT0gSURCQW55OjpUeXBl
OjpJREJDdXJzb3JXaXRoVmFsdWUpCisgICAgICAgICAgICBtX3Jlc3VsdC0+bW9kZXJuSURCQ3Vy
c29yKCktPmNsZWFyUmVxdWVzdCgpOworICAgIH0KIH0KIAogUmVmUHRyPFdlYkNvcmU6OklEQkFu
eT4gSURCUmVxdWVzdDo6cmVzdWx0KEV4Y2VwdGlvbkNvZGUmKSBjb25zdApAQCAtMTEyLDcgKzE0
MCw3IEBAIFJlZlB0cjxET01FcnJvcj4gSURCUmVxdWVzdDo6ZXJyb3IoRXhjZXB0aW9uQ29kZSYp
IGNvbnN0CiAKIFJlZlB0cjxXZWJDb3JlOjpJREJBbnk+IElEQlJlcXVlc3Q6OnNvdXJjZSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fc291cmNlOwogfQogCiBS
ZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb24+IElEQlJlcXVlc3Q6OnRyYW5zYWN0aW9uKCkg
Y29uc3QKQEAgLTI2MSw4ICsyODksNDYgQEAgdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1Vu
ZGVmaW5lZCgpCiAgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZVVuZGVmaW5lZCgpOwogfQog
CitJREJDdXJzb3IqIElEQlJlcXVlc3Q6OnJlc3VsdEN1cnNvcigpCit7CisgICAgaWYgKCFtX3Jl
c3VsdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKG1fcmVzdWx0LT50eXBlKCkg
PT0gSURCQW55OjpUeXBlOjpJREJDdXJzb3IgfHwgbV9yZXN1bHQtPnR5cGUoKSA9PSBJREJBbnk6
OlR5cGU6OklEQkN1cnNvcldpdGhWYWx1ZSkKKyAgICAgICAgcmV0dXJuIG1fcmVzdWx0LT5tb2Rl
cm5JREJDdXJzb3IoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBJREJSZXF1ZXN0
Ojp3aWxsSXRlcmF0ZUN1cnNvcihJREJDdXJzb3ImIGN1cnNvcikKK3sKKyAgICBBU1NFUlQobV9y
ZWFkeVN0YXRlID09IElEQlJlcXVlc3RSZWFkeVN0YXRlOjpEb25lKTsKKyAgICBBU1NFUlQoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBBU1NFUlQobV90cmFuc2FjdGlvbik7CisgICAg
QVNTRVJUKCFtX3BlbmRpbmdDdXJzb3IpOworICAgIEFTU0VSVCgmY3Vyc29yID09IHJlc3VsdEN1
cnNvcigpKTsKKworICAgIG1fcGVuZGluZ0N1cnNvciA9ICZjdXJzb3I7CisgICAgbV9yZXN1bHQg
PSBudWxscHRyOworICAgIG1fcmVhZHlTdGF0ZSA9IElEQlJlcXVlc3RSZWFkeVN0YXRlOjpQZW5k
aW5nOworICAgIG1fZG9tRXJyb3IgPSBudWxscHRyOworICAgIG1faWRiRXJyb3IgPSB7IH07Cit9
CisKK3ZvaWQgSURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXN1
bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIEFTU0VSVChtX3BlbmRpbmdDdXJzb3IpOworICAg
IGlmIChyZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpJdGVyYXRlQ3Vyc29yU3Vj
Y2VzcykKKyAgICAgICAgbV9wZW5kaW5nQ3Vyc29yLT5zZXRHZXRSZXN1bHQocmVzdWx0RGF0YS5n
ZXRSZXN1bHQoKSk7CisKKyAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKCptX3BlbmRpbmdD
dXJzb3IpOworICAgIG1fcGVuZGluZ0N1cnNvciA9IG51bGxwdHI7CisKKyAgICByZXF1ZXN0Q29t
cGxldGVkKHJlc3VsdERhdGEpOworfQorCiB2b2lkIElEQlJlcXVlc3Q6OnJlcXVlc3RDb21wbGV0
ZWQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKKyAgICBtX3JlYWR5U3RhdGUg
PSBJREJSZXF1ZXN0UmVhZHlTdGF0ZTo6RG9uZTsKKwogICAgIG1faWRiRXJyb3IgPSByZXN1bHRE
YXRhLmVycm9yKCk7CiAgICAgaWYgKCFtX2lkYkVycm9yLmlzTnVsbCgpKQogICAgICAgICBvbkVy
cm9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCUmVxdWVzdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9JREJSZXF1ZXN0SW1wbC5oCmluZGV4IDI5MGUzOWMuLjA3MDYzZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0
SW1wbC5oCkBAIC01Miw2ICs1Miw3IEBAIGNsYXNzIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjsKIGNs
YXNzIElEQlJlcXVlc3QgOiBwdWJsaWMgV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdCwgcHVibGlj
IFJlZkNvdW50ZWQ8SURCUmVxdWVzdD4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SURCUmVx
dWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJPYmplY3RTdG9yZSYsIElE
QlRyYW5zYWN0aW9uJik7CisgICAgc3RhdGljIFJlZjxJREJSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIElEQkN1cnNvciYsIElEQlRyYW5zYWN0aW9uJik7CiAgICAgc3Rh
dGljIFJlZjxJREJSZXF1ZXN0PiBjcmVhdGVDb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
SURCSW5kZXgmLCBJREJUcmFuc2FjdGlvbiYpOwogICAgIHN0YXRpYyBSZWY8SURCUmVxdWVzdD4g
Y3JlYXRlR2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJJbmRleCYsIEluZGV4ZWREQjo6
SW5kZXhSZWNvcmRUeXBlLCBJREJUcmFuc2FjdGlvbiYpOwogCkBAIC04OSw5ICs5MCwxNSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZShjb25zdCBUaHJlYWRT
YWZlRGF0YUJ1ZmZlciYpOwogICAgIHZvaWQgc2V0UmVzdWx0VG9VbmRlZmluZWQoKTsKIAorICAg
IElEQkFueSogbW9kZXJuUmVzdWx0KCkgeyByZXR1cm4gbV9yZXN1bHQuZ2V0KCk7IH0KKworICAg
IHZvaWQgd2lsbEl0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJik7CisgICAgdm9pZCBkaWRPcGVuT3JJ
dGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKKwogcHJvdGVjdGVkOgogICAgIElE
QlJlcXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OwogICAgIElEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQk9iamVjdFN0b3Jl
JiwgSURCVHJhbnNhY3Rpb24mKTsKKyAgICBJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBJREJDdXJzb3ImLCBJREJUcmFuc2FjdGlvbiYpOwogICAgIElEQlJlcXVlc3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIElEQkluZGV4JiwgSURCVHJhbnNhY3Rpb24mKTsKICAgICBJREJS
ZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJJbmRleCYsIEluZGV4ZWREQjo6SW5k
ZXhSZWNvcmRUeXBlLCBJREJUcmFuc2FjdGlvbiYpOwogCkBAIC0xMTQsMTEgKzEyMSwxNSBAQCBw
cml2YXRlOgogICAgIHZvaWQgb25FcnJvcigpOwogICAgIHZvaWQgb25TdWNjZXNzKCk7CiAKKyAg
ICBJREJDdXJzb3IqIHJlc3VsdEN1cnNvcigpOworCiAgICAgSURCQ29ubmVjdGlvblRvU2VydmVy
JiBtX2Nvbm5lY3Rpb247CiAgICAgSURCUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVzb3VyY2VJZGVu
dGlmaWVyOwogICAgIFJlZlB0cjxJREJBbnk+IG1fc291cmNlOwogICAgIGJvb2wgbV9oYXNQZW5k
aW5nQWN0aXZpdHkgeyB0cnVlIH07CiAgICAgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUgbV9y
ZXF1ZXN0ZWRJbmRleFJlY29yZFR5cGU7CisKKyAgICBSZWZQdHI8SURCQ3Vyc29yPiBtX3BlbmRp
bmdDdXJzb3I7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJREJDbGllbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0
aW9uSW1wbC5jcHAKaW5kZXggNGE0NzE5NC4uYzVhOThlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9u
SW1wbC5jcHAKQEAgLTMwLDkgKzMwLDExIEBACiAKICNpbmNsdWRlICJET01FcnJvci5oIgogI2lu
Y2x1ZGUgIkV2ZW50UXVldWUuaCIKKyNpbmNsdWRlICJJREJDdXJzb3JXaXRoVmFsdWVJbXBsLmgi
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2VJbXBsLmgiCiAjaW5jbHVkZSAiSURCRXJyb3IuaCIKICNp
bmNsdWRlICJJREJFdmVudERpc3BhdGNoZXIuaCIKKyNpbmNsdWRlICJJREJLZXlEYXRhLmgiCiAj
aW5jbHVkZSAiSURCS2V5UmFuZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIK
ICNpbmNsdWRlICJJREJSZXF1ZXN0SW1wbC5oIgpAQCAtNDMxLDYgKzQzMyw3NiBAQCB2b2lkIElE
QlRyYW5zYWN0aW9uOjpkaWRDcmVhdGVJbmRleE9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHREYXRhLCByZXN1bHREYXRhLnR5
cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpDcmVhdGVJbmRleFN1Y2Nlc3MpOwogfQogCitSZWY8SURC
UmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29uc3QgSURC
Q3Vyc29ySW5mbyYgaW5mbykKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246
OnJlcXVlc3RPcGVuQ3Vyc29yIik7CisKKyAgICByZXR1cm4gZG9SZXF1ZXN0T3BlbkN1cnNvcihj
b250ZXh0LCBJREJDdXJzb3JXaXRoVmFsdWU6OmNyZWF0ZSgqdGhpcywgb2JqZWN0U3RvcmUsIGlu
Zm8pKTsKK30KKworUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0T3BlbkN1
cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJJbmRleCYgaW5kZXgsIGNv
bnN0IElEQkN1cnNvckluZm8mIGluZm8pCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvciIpOworCisgICAgaWYgKGluZm8uY3Vyc29yVHlwZSgp
ID09IEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5T25seSkKKyAgICAgICAgcmV0dXJuIGRvUmVx
dWVzdE9wZW5DdXJzb3IoY29udGV4dCwgSURCQ3Vyc29yOjpjcmVhdGUoKnRoaXMsIGluZGV4LCBp
bmZvKSk7CisKKyAgICByZXR1cm4gZG9SZXF1ZXN0T3BlbkN1cnNvcihjb250ZXh0LCBJREJDdXJz
b3JXaXRoVmFsdWU6OmNyZWF0ZSgqdGhpcywgaW5kZXgsIGluZm8pKTsKK30KKworUmVmPElEQlJl
cXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpkb1JlcXVlc3RPcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFJlZjxJREJDdXJzb3I+JiYgY3Vyc29yKQoreworICAgIEFTU0VS
VChpc0FjdGl2ZSgpKTsKKworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVz
dDo6Y3JlYXRlKGNvbnRleHQsIGN1cnNvci5nZXQoKSwgKnRoaXMpOworICAgIGFkZFJlcXVlc3Qo
cmVxdWVzdC5nZXQoKSk7CisKKyAgICBhdXRvIG9wZXJhdGlvbiA9IGNyZWF0ZVRyYW5zYWN0aW9u
T3BlcmF0aW9uKCp0aGlzLCByZXF1ZXN0LmdldCgpLCAmSURCVHJhbnNhY3Rpb246OmRpZE9wZW5D
dXJzb3JPblNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpvcGVuQ3Vyc29yT25TZXJ2ZXIsIGN1cnNv
ci0+aW5mbygpKTsKKyAgICBzY2hlZHVsZU9wZXJhdGlvbihXVEY6Om1vdmUob3BlcmF0aW9uKSk7
CisKKyAgICByZXR1cm4gV1RGOjptb3ZlKHJlcXVlc3QpOworfQorCit2b2lkIElEQlRyYW5zYWN0
aW9uOjpvcGVuQ3Vyc29yT25TZXJ2ZXIoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwg
Y29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCVHJh
bnNhY3Rpb246Om9wZW5DdXJzb3JPblNlcnZlciIpOworCisgICAgbV9kYXRhYmFzZS0+c2VydmVy
Q29ubmVjdGlvbigpLm9wZW5DdXJzb3Iob3BlcmF0aW9uLCBpbmZvKTsKK30KKwordm9pZCBJREJU
cmFuc2FjdGlvbjo6ZGlkT3BlbkN1cnNvck9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklE
QlRyYW5zYWN0aW9uOjpkaWRPcGVuQ3Vyc29yT25TZXJ2ZXIiKTsKKworICAgIHJlcXVlc3QuZGlk
T3Blbk9ySXRlcmF0ZUN1cnNvcihyZXN1bHREYXRhKTsKK30KKwordm9pZCBJREJUcmFuc2FjdGlv
bjo6aXRlcmF0ZUN1cnNvcihJREJDdXJzb3ImIGN1cnNvciwgY29uc3QgSURCS2V5RGF0YSYga2V5
LCB1bnNpZ25lZCBsb25nIGNvdW50KQoreworICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2Fj
dGlvbjo6aXRlcmF0ZUN1cnNvciIpOworICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKKyAgICBBU1NF
UlQoY3Vyc29yLnJlcXVlc3QoKSk7CisKKyAgICBhZGRSZXF1ZXN0KCpjdXJzb3IucmVxdWVzdCgp
KTsKKworICAgIGF1dG8gb3BlcmF0aW9uID0gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRo
aXMsICpjdXJzb3IucmVxdWVzdCgpLCAmSURCVHJhbnNhY3Rpb246OmRpZEl0ZXJhdGVDdXJzb3JP
blNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yT25TZXJ2ZXIsIGtleSwgY291
bnQpOworICAgIHNjaGVkdWxlT3BlcmF0aW9uKFdURjo6bW92ZShvcGVyYXRpb24pKTsKK30KKwor
dm9pZCBJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvck9uU2VydmVyKFRyYW5zYWN0aW9uT3Bl
cmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgdW5zaWduZWQg
bG9uZyYgY291bnQpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjppdGVy
YXRlQ3Vyc29yT25TZXJ2ZXIiKTsKKworICAgIHNlcnZlckNvbm5lY3Rpb24oKS5pdGVyYXRlQ3Vy
c29yKG9wZXJhdGlvbiwga2V5LCBjb3VudCk7Cit9CisKK3ZvaWQgSURCVHJhbnNhY3Rpb246OmRp
ZEl0ZXJhdGVDdXJzb3JPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1
bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlv
bjo6ZGlkSXRlcmF0ZUN1cnNvck9uU2VydmVyIik7CisKKyAgICByZXF1ZXN0LmRpZE9wZW5Pckl0
ZXJhdGVDdXJzb3IocmVzdWx0RGF0YSk7Cit9CisKIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2Fj
dGlvbjo6cmVxdWVzdEdldFJlY29yZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJ
REJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFu
Z2VEYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdl
dFJlY29yZCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oCmluZGV4IDA0MzYxOTUuLjRkZTBlZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJU
cmFuc2FjdGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmgKQEAgLTQxLDcgKzQxLDkgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBJREJDdXJzb3JJbmZvOwogY2xhc3MgSURCSW5kZXhJbmZvOwor
Y2xhc3MgSURCS2V5RGF0YTsKIGNsYXNzIElEQk9iamVjdFN0b3JlSW5mbzsKIGNsYXNzIElEQlJl
c3VsdERhdGE7CiAKQEAgLTQ5LDYgKzUxLDcgQEAgc3RydWN0IElEQktleVJhbmdlRGF0YTsKIAog
bmFtZXNwYWNlIElEQkNsaWVudCB7CiAKK2NsYXNzIElEQkN1cnNvcjsKIGNsYXNzIElEQkRhdGFi
YXNlOwogY2xhc3MgSURCSW5kZXg7CiBjbGFzcyBUcmFuc2FjdGlvbk9wZXJhdGlvbjsKQEAgLTEw
MSw2ICsxMDQsOSBAQCBwdWJsaWM6CiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RDb3VudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCSW5kZXgmLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
KTsKICAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdEdldFZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBJREJJbmRleCYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwogICAgIFJlZjxJREJS
ZXF1ZXN0PiByZXF1ZXN0R2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJJbmRleCYs
IGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0T3Bl
bkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJ
REJDdXJzb3JJbmZvJik7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RPcGVuQ3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJJbmRleCYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsK
KyAgICB2b2lkIGl0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiwgY29uc3QgSURCS2V5RGF0YSYsIHVu
c2lnbmVkIGxvbmcgY291bnQpOwogCiAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBT
dHJpbmcmIG9iamVjdFN0b3JlTmFtZSk7CiAKQEAgLTE1OSw2ICsxNjUsMTMgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIoVHJhbnNhY3Rpb25PcGVyYXRpb24m
LCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSk7CiAgICAgdm9pZCBkaWREZWxldGVPYmpl
Y3RTdG9yZU9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAorICAgIFJlZjxJREJSZXF1
ZXN0PiBkb1JlcXVlc3RPcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8SURC
Q3Vyc29yPiYmKTsKKyAgICB2b2lkIG9wZW5DdXJzb3JPblNlcnZlcihUcmFuc2FjdGlvbk9wZXJh
dGlvbiYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKKyAgICB2b2lkIGRpZE9wZW5DdXJzb3JPblNl
cnZlcihJREJSZXF1ZXN0JiwgY29uc3QgSURCUmVzdWx0RGF0YSYpOworCisgICAgdm9pZCBpdGVy
YXRlQ3Vyc29yT25TZXJ2ZXIoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBjb25zdCBJREJLZXlEYXRh
JiwgY29uc3QgdW5zaWduZWQgbG9uZyYgY291bnQpOworICAgIHZvaWQgZGlkSXRlcmF0ZUN1cnNv
ck9uU2VydmVyKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJik7CisKICAgICB2b2lk
IGVzdGFibGlzaE9uU2VydmVyKCk7CiAKICAgICB2b2lkIHNjaGVkdWxlT3BlcmF0aW9uVGltZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9U
cmFuc2FjdGlvbk9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgKaW5kZXggMTBhNjc1NC4uNWFlOTllYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0
aW9uT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgKQEAgLTE0OCw2ICsxNDgsMTkgQEAgUmVmUHRyPFRy
YW5zYWN0aW9uT3BlcmF0aW9uPiBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigKICAgICByZXR1
cm4gYWRvcHRSZWYob3BlcmF0aW9uKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBl
bmFtZSBQMSwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMj4KK1JlZlB0cjxUcmFuc2FjdGlvbk9w
ZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCisgICAgSURCVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLAorICAgIElEQlJlcXVlc3QmIHJlcXVlc3QsCisgICAgdm9pZCAoSURCVHJh
bnNhY3Rpb246Oipjb21wbGV0ZSkoSURCUmVxdWVzdCYsIGNvbnN0IElEQlJlc3VsdERhdGEmKSwK
KyAgICB2b2lkIChJREJUcmFuc2FjdGlvbjo6KnBlcmZvcm0pKFRyYW5zYWN0aW9uT3BlcmF0aW9u
JiwgTVAxLCBNUDIpLAorICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAorICAgIGNvbnN0IFAyJiBw
YXJhbWV0ZXIyKQoreworICAgIGF1dG8gb3BlcmF0aW9uID0gbmV3IFRyYW5zYWN0aW9uT3BlcmF0
aW9uSW1wbDxNUDEsIE1QMj4odHJhbnNhY3Rpb24sIHJlcXVlc3QsIGNvbXBsZXRlLCBwZXJmb3Jt
LCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKKyAgICByZXR1cm4gYWRvcHRSZWYob3BlcmF0aW9u
KTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIE1Q
MywgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMz4KIFJlZlB0cjxUcmFuc2Fj
dGlvbk9wZXJhdGlvbj4gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oCiAgICAgSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvbGVnYWN5L0xlZ2FjeUN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5Q3Vyc29yLmNwcAppbmRleCBhZTQ3MTFiLi5hN2E0MjAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVn
YWN5Q3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZWdh
Y3kvTGVnYWN5Q3Vyc29yLmNwcApAQCAtOTEsNyArOTEsNyBAQCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYgTGVnYWN5Q3Vyc29yOjp2YWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY3Vy
cmVudFZhbHVlOwogfQogCi1JREJBbnkqIExlZ2FjeUN1cnNvcjo6c291cmNlKCkgY29uc3QKK0lE
QkFueSogTGVnYWN5Q3Vyc29yOjpzb3VyY2UoKQogewogICAgIHJldHVybiBtX3NvdXJjZS5nZXQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2Fj
eS9MZWdhY3lDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2Fj
eS9MZWdhY3lDdXJzb3IuaAppbmRleCAwY2Y5YmZmLi43NjcwNGQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5Q3Vyc29yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeUN1cnNvci5oCkBA
IC01NSwxOCArNTUsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeUN1cnNvcigpOwog
CiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREwKLSAgICBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbigp
IGNvbnN0OwotICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXkoKSBjb25zdDsK
LSAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgcHJpbWFyeUtleSgpIGNvbnN0Owot
ICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSgpIGNvbnN0OwotICAgIElE
QkFueSogc291cmNlKCkgY29uc3Q7Ci0KLSAgICBSZWZQdHI8SURCUmVxdWVzdD4gdXBkYXRlKEpT
Qzo6RXhlY1N0YXRlJiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgdm9pZCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBj
b25zdCBTdHJpbmcmIGRpcmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgcHJpbWFyeUtleSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiB2YWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IElEQkFueSogc291cmNlKCkgb3ZlcnJpZGU7CisKKyAgICBSZWZQdHI8SURCUmVxdWVzdD4gdXBk
YXRlKEpTQzo6RXhlY1N0YXRlJiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25D
b2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZHZhbmNlKHVuc2lnbmVkIGxvbmcsIEV4Y2VwdGlv
bkNvZGUmKSBvdmVycmlkZTsKICAgICAvLyBGSVhNRTogVHJ5IHRvIG1vZGlmeSB0aGUgY29kZSBn
ZW5lcmF0b3Igc28gdGhpcyBvdmVybG9hZCBpcyB1bm5lZWRlZC4KLSAgICB2b2lkIGNvbnRpbnVl
RnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IGNv
bnRpbnVlRnVuY3Rpb24oc3RhdGljX2Nhc3Q8SURCS2V5Kj4obnVsbHB0ciksIGVjKTsgfQotICAg
IHZvaWQgY29udGludWVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFJlZlB0cjxJ
REJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgY29udGludWVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgRXhjZXB0aW9uQ29kZSYgZWMpIG92ZXJyaWRlIHsgY29udGludWVGdW5jdGlvbihzdGF0
aWNfY2FzdDxJREJLZXkqPihudWxscHRyKSwgZWMpOyB9CisgICAgdm9pZCBjb250aW51ZUZ1bmN0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYga2V5LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+
IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygp
OwpAQCAtNzQsOSArNzQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmFsdWVSZWFkeShET01S
ZXF1ZXN0U3RhdGUqLCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiBwcmlt
YXJ5S2V5LCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpOwogICAgIFBhc3NSZWZQdHI8SURCS2V5
PiBpZGJQcmltYXJ5S2V5KCkgeyByZXR1cm4gbV9jdXJyZW50UHJpbWFyeUtleTsgfQogCisgICAg
dmlydHVhbCBib29sIGlzS2V5Q3Vyc29yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQorCiBwcm90ZWN0ZWQ6CiAgICAgTGVnYWN5Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFj
a2VuZD4sIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBMZWdhY3lSZXF1ZXN0KiwgTGVnYWN5
QW55KiBzb3VyY2UsIExlZ2FjeVRyYW5zYWN0aW9uKik7Ci0gICAgdmlydHVhbCBib29sIGlzS2V5
Q3Vyc29yKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgogICAgIFBhc3NSZWZQ
dHI8TGVnYWN5T2JqZWN0U3RvcmU+IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5Q3Vyc29yV2l0
aFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5
Q3Vyc29yV2l0aFZhbHVlLmgKaW5kZXggNDg3YjFmMS4uNzI1OGYyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeUN1cnNvcldpdGhWYWx1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lD
dXJzb3JXaXRoVmFsdWUuaApAQCAtNDEsOCArNDEsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIHZh
bHVlIGF0dHJpYnV0ZSBkZWZpbmVkIGluIHRoZSBJREwgaXMgc2ltcGx5IGltcGxlbWVudGVkIGlu
IExlZ2FjeUN1cnNvciAoYnV0IG5vdCBleHBvc2VkIHZpYQogICAgIC8vIGl0cyBJREwpLiBUaGlz
IGlzIHRvIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIG1vcmUgc2ltcGxlIHdoaWxlIG1hdGNoaW5n
IHdoYXQgdGhlIHNwZWMgc2F5cy4KIAotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCBpc0tl
eUN1cnNvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzS2V5Q3Vyc29yKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
IAogcHJpdmF0ZToKICAgICBMZWdhY3lDdXJzb3JXaXRoVmFsdWUoUGFzc1JlZlB0cjxJREJDdXJz
b3JCYWNrZW5kPiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIExlZ2FjeVJlcXVlc3QqLCBM
ZWdhY3lBbnkqIHNvdXJjZSwgTGVnYWN5VHJhbnNhY3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaApp
bmRleCA0MGE5ZDJiLi5jNzgyNWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC0zMyw2ICszMyw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSURCQ3Vyc29ySW5mbzsKIGNsYXNz
IElEQkluZGV4SW5mbzsKIGNsYXNzIElEQktleURhdGE7CiBjbGFzcyBJREJPYmplY3RTdG9yZUlu
Zm87CkBAIC03MCw3ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElEQkVycm9yIGdldElu
ZGV4UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRp
ZmllciwgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYs
IElEQkdldFJlc3VsdCYgb3V0VmFsdWUpID0gMDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGdldENv
dW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgdWludDY0X3QmIG91dENvdW50KSA9IDA7CiAgICAgdmly
dHVhbCBJREJFcnJvciBnZW5lcmF0ZUtleU51bWJlcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCB1aW50NjRfdCYga2V5TnVtYmVyKSA9IDA7Ci0KKyAgICB2aXJ0dWFsIElEQkVycm9yIG9wZW5D
dXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IGNvbnN0IElEQkN1cnNvckluZm8mLCBJREJHZXRSZXN1bHQmIG91dFJlc3VsdCkgPSAwOworICAg
IHZpcnR1YWwgSURCRXJyb3IgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYsIHVuc2lnbmVkIGxv
bmcgY291bnQsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKaW5kZXggYWRm
ODUyMi4uMDJlMWQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKQEAgLTEw
Myw2ICsxMDMsMTYgQEAgdm9pZCBJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZERlbGV0ZVJlY29y
ZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHQpCiAgICAgbV9kZWxlZ2F0ZS0+ZGlkRGVsZXRl
UmVjb3JkKHJlc3VsdCk7CiB9CiAKK3ZvaWQgSURCQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRPcGVu
Q3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdCkKK3sKKyAgICBtX2RlbGVnYXRlLT5k
aWRPcGVuQ3Vyc29yKHJlc3VsdCk7Cit9CisKK3ZvaWQgSURCQ29ubmVjdGlvblRvQ2xpZW50Ojpk
aWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdCkKK3sKKyAgICBtX2Rl
bGVnYXRlLT5kaWRJdGVyYXRlQ3Vyc29yKHJlc3VsdCk7Cit9CisKIHZvaWQgSURCQ29ubmVjdGlv
blRvQ2xpZW50OjpkaWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQogewogICAg
IG1fZGVsZWdhdGUtPmRpZENvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
ZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCmluZGV4IDUwZThjNTcuLmVmODgw
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJDb25uZWN0aW9uVG9DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKQEAgLTYwLDYgKzYwLDggQEAgcHVi
bGljOgogICAgIHZvaWQgZGlkR2V0UmVjb3JkKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKICAgICB2
b2lkIGRpZEdldENvdW50KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKICAgICB2b2lkIGRpZERlbGV0
ZVJlY29yZChjb25zdCBJREJSZXN1bHREYXRhJik7CisgICAgdm9pZCBkaWRPcGVuQ3Vyc29yKGNv
bnN0IElEQlJlc3VsdERhdGEmKTsKKyAgICB2b2lkIGRpZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURC
UmVzdWx0RGF0YSYpOwogCiAgICAgdm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KFVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbiYsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pOwogICAgIHZv
aWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnREZWxl
Z2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5l
Y3Rpb25Ub0NsaWVudERlbGVnYXRlLmgKaW5kZXggMGI2MzFiZi4uM2E4ZjE2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25U
b0NsaWVudERlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmgKQEAgLTU2LDYgKzU2LDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRHZXRSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0
YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0Q291bnQoY29uc3QgSURCUmVzdWx0RGF0
YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc3Vs
dERhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5DdXJzb3IoY29uc3QgSURCUmVz
dWx0RGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBJ
REJSZXN1bHREYXRhJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdl
RXZlbnQoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgdWludDY0X3QgcmVxdWVzdGVkVmVy
c2lvbikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFRyYW5zYWN0aW9uKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJv
ciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5jcHAKaW5kZXggNWYzZjUwMC4uYzYzNzhlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAg
LTI0Nyw2ICsyNDcsMjggQEAgdm9pZCBJREJTZXJ2ZXI6OmRlbGV0ZVJlY29yZChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmcKICAgICB0cmFuc2FjdGlv
bi0+ZGVsZXRlUmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOwogfQogCit2b2lkIElE
QlNlcnZlcjo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNv
bnN0IElEQkN1cnNvckluZm8mIGluZm8pCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlNlcnZl
cjo6b3BlbkN1cnNvciIpOworCisgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25z
LmdldChyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSk7CisgICAgaWYgKCF0cmFu
c2FjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgdHJhbnNhY3Rpb24tPm9wZW5DdXJzb3Io
cmVxdWVzdERhdGEsIGluZm8pOworfQorCit2b2lkIElEQlNlcnZlcjo6aXRlcmF0ZUN1cnNvcihj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSwg
dW5zaWduZWQgbG9uZyBjb3VudCkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCU2VydmVyOjpp
dGVyYXRlQ3Vyc29yIik7CisKKyAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMu
Z2V0KHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIXRyYW5z
YWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICB0cmFuc2FjdGlvbi0+aXRlcmF0ZUN1cnNv
cihyZXF1ZXN0RGF0YSwga2V5LCBjb3VudCk7Cit9CisKIHZvaWQgSURCU2VydmVyOjplc3RhYmxp
c2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlNl
cnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAppbmRleCAzNjg0ZjIyLi5mYTU4NmMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5oCkBAIC00Myw2ICs0Myw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENyb3NzVGhyZWFkVGFzazsKK2NsYXNzIElEQkN1cnNvckluZm87CiBjbGFzcyBJREJSZXF1ZXN0
RGF0YTsKIAogbmFtZXNwYWNlIElEQlNlcnZlciB7CkBAIC02Nyw2ICs2OCw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJh
bmdlRGF0YSYpOwogICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25z
dCBJREJLZXlSYW5nZURhdGEmKTsKICAgICB2b2lkIGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIHZvaWQgb3BlbkN1cnNvcihj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKKyAgICB2b2lkIGl0
ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgdW5z
aWduZWQgbG9uZyBjb3VudCk7CisKICAgICB2b2lkIGVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2
NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5m
byYpOwogICAgIHZvaWQgZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNl
Q29ubmVjdGlvbklkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3Bw
CmluZGV4IDEyZjhmNjIuLjA5NjRmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUu
Y3BwCkBAIC0zMjksNiArMzI5LDI0IEBAIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6
Z2VuZXJhdGVLZXlOdW1iZXIoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgcmV0
dXJuIElEQkVycm9yKCk7CiB9CiAKK0lEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6b3Bl
bkN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBjb25zdCBJREJDdXJzb3JJbmZv
JiwgSURCR2V0UmVzdWx0JikKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5SURCQmFja2lu
Z1N0b3JlOjpvcGVuQ3Vyc29yIik7CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorCisgICAg
cmV0dXJuIHsgSURCRXhjZXB0aW9uQ29kZTo6VW5rbm93biB9OworfQorCitJREJFcnJvciBNZW1v
cnlJREJCYWNraW5nU3RvcmU6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiwgY29uc3QgSURCS2V5RGF0YSYsIHVuc2lnbmVkIGxvbmcsIElEQkdldFJlc3VsdCYpCit7
CisgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6aXRlcmF0ZUN1cnNv
ciIpOworCisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKworICAgIHJldHVybiB7IElEQkV4Y2Vw
dGlvbkNvZGU6OlVua25vd24gfTsKK30KKwogdm9pZCBNZW1vcnlJREJCYWNraW5nU3RvcmU6OnJl
Z2lzdGVyT2JqZWN0U3RvcmUoc3RkOjp1bmlxdWVfcHRyPE1lbW9yeU9iamVjdFN0b3JlPiYmIG9i
amVjdFN0b3JlKQogewogICAgIEFTU0VSVChvYmplY3RTdG9yZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3Jl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFj
a2luZ1N0b3JlLmgKaW5kZXggZjIxZTRlZi4uNjc5MTFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNr
aW5nU3RvcmUuaApAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJREJFcnJv
ciBnZXRJbmRleFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRl
eElkZW50aWZpZXIsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmLCBJREJHZXRSZXN1bHQmIG91dFZhbHVlKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0
dWFsIElEQkVycm9yIGdldENvdW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90
IGluZGV4SWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgdWludDY0X3QmIG91dENv
dW50KSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGdlbmVyYXRlS2V5TnVt
YmVyKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90JiBrZXlOdW1iZXIpIG92ZXJy
aWRlIGZpbmFsOworICAgIHZpcnR1YWwgSURCRXJyb3Igb3BlbkN1cnNvcihjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCQ3Vyc29ySW5m
byYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFs
IElEQkVycm9yIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmLCB1bnNpZ25lZCBsb25nIGNvdW50
LCBJREJHZXRSZXN1bHQmIG91dFJlc3VsdCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2b2lkIHJl
bW92ZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0KE1lbW9yeU9iamVjdFN0b3JlJik7
CiAgICAgdm9pZCByZXN0b3JlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJvcnQoc3RkOjp1
bmlxdWVfcHRyPE1lbW9yeU9iamVjdFN0b3JlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3Bw
CmluZGV4IGRiODM3OWUuLmZiZDk5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRl
ICJJREJDdXJzb3JJbmZvLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2VEYXRhLmgiCiAjaW5jbHVk
ZSAiSURCUmVzdWx0RGF0YS5oIgogI2luY2x1ZGUgIklEQlNlcnZlci5oIgpAQCAtNTUyLDYgKzU1
Myw2MiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtRGVsZXRlUmVjb3JkKHVp
bnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29ucwogICAgIHBlcmZvcm1FcnJvckNhbGxiYWNr
KGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IpOwogfQogCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURC
Q3Vyc29ySW5mbyYgaW5mbywgR2V0UmVzdWx0Q2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBMT0coSW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlE
QkRhdGFiYXNlOjpvcGVuQ3Vyc29yIik7CisKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gc3Rv
cmVDYWxsYmFjayhjYWxsYmFjayk7CisgICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNlVGFzayhjcmVh
dGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybU9wZW5D
dXJzb3IsIGNhbGxiYWNrSUQsIHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpLCBp
bmZvKSk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1PcGVuQ3Vyc29yKHVp
bnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCit7CisgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgTE9HKEluZGV4ZWREQiwgIihkYikgVW5pcXVl
SURCRGF0YWJhc2U6OnBlcmZvcm1PcGVuQ3Vyc29yIik7CisKKyAgICBJREJHZXRSZXN1bHQgcmVz
dWx0OworICAgIElEQkVycm9yIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5DdXJzb3IodHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBpbmZvLCByZXN1bHQpOworCisgICAgbV9zZXJ2ZXIucG9zdERh
dGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRh
dGFiYXNlOjpkaWRQZXJmb3JtT3BlbkN1cnNvciwgY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvciwg
cmVzdWx0KSk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1PcGVuQ3Vy
c29yKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yLCBj
b25zdCBJREJHZXRSZXN1bHQmIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZv
cm1PcGVuQ3Vyc29yIik7CisKKyAgICBwZXJmb3JtR2V0UmVzdWx0Q2FsbGJhY2soY2FsbGJhY2tJ
ZGVudGlmaWVyLCBlcnJvciwgcmVzdWx0KTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElE
QktleURhdGEmIGtleSwgdW5zaWduZWQgbG9uZyBjb3VudCwgR2V0UmVzdWx0Q2FsbGJhY2sgY2Fs
bGJhY2spCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBMT0coSW5kZXhlZERC
LCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjppdGVyYXRlQ3Vyc29yIik7CisKKyAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gc3RvcmVDYWxsYmFjayhjYWxsYmFjayk7CisgICAgbV9zZXJ2ZXIu
cG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6cGVyZm9ybUl0ZXJhdGVDdXJzb3IsIGNhbGxiYWNrSUQsIHJlcXVlc3REYXRhLnRy
YW5zYWN0aW9uSWRlbnRpZmllcigpLCBrZXksIGNvdW50KSk7Cit9CisKK3ZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OnBlcmZvcm1JdGVyYXRlQ3Vyc29yKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmll
ciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNv
bnN0IElEQktleURhdGEmIGtleSwgdW5zaWduZWQgbG9uZyBjb3VudCkKK3sKKyAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKKyAgICBMT0coSW5kZXhlZERCLCAiKGRiKSBVbmlxdWVJREJEYXRh
YmFzZTo6cGVyZm9ybUl0ZXJhdGVDdXJzb3IiKTsKKworICAgIElEQkdldFJlc3VsdCByZXN1bHQ7
CisgICAgSURCRXJyb3IgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+aXRlcmF0ZUN1cnNvcih0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGtleSwgY291bnQsIHJlc3VsdCk7CisKKyAgICBtX3NlcnZlci5w
b3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVl
SURCRGF0YWJhc2U6OmRpZFBlcmZvcm1JdGVyYXRlQ3Vyc29yLCBjYWxsYmFja0lkZW50aWZpZXIs
IGVycm9yLCByZXN1bHQpKTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9y
bUl0ZXJhdGVDdXJzb3IodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJv
ciYgZXJyb3IsIGNvbnN0IElEQkdldFJlc3VsdCYgcmVzdWx0KQoreworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFz
ZTo6ZGlkUGVyZm9ybUl0ZXJhdGVDdXJzb3IiKTsKKworICAgIHBlcmZvcm1HZXRSZXN1bHRDYWxs
YmFjayhjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yLCByZXN1bHQpOworfQorCiB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAppbmRleCA3MjdiMzRlLi40MTA4
ZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAtODMsNiArODMsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmLCBHZXRSZXN1bHRDYWxsYmFjayk7CiAgICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIENvdW50Q2FsbGJhY2spOwogICAg
IHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFu
Z2VEYXRhJiwgRXJyb3JDYWxsYmFjayk7CisgICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIEdldFJlc3VsdENhbGxiYWNrKTsKKyAg
ICB2b2lkIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlE
YXRhJiwgdW5zaWduZWQgbG9uZyBjb3VudCwgR2V0UmVzdWx0Q2FsbGJhY2spOwogICAgIHZvaWQg
Y29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVycm9yQ2Fs
bGJhY2spOwogICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uJiwgRXJyb3JDYWxsYmFjayk7CiAgICAgdm9pZCB0cmFuc2FjdGlvbkRlc3Ryb3llZChV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CkBAIC0xMTcsNiArMTE5LDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIHBlcmZvcm1HZXRJbmRleFJlY29yZCh1aW50NjRfdCBjYWxsYmFja0lkZW50
aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmll
ciwgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwog
ICAgIHZvaWQgcGVyZm9ybUdldENvdW50KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBJ
REJLZXlSYW5nZURhdGEmKTsKICAgICB2b2lkIHBlcmZvcm1EZWxldGVSZWNvcmQodWludDY0X3Qg
Y2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJL
ZXlSYW5nZURhdGEmKTsKKyAgICB2b2lkIHBlcmZvcm1PcGVuQ3Vyc29yKHVpbnQ2NF90IGNhbGxi
YWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKKyAgICB2b2lkIHBlcmZvcm1JdGVyYXRl
Q3Vyc29yKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmLCB1bnNpZ25l
ZCBsb25nIGNvdW50KTsKICAgICB2b2lkIHBlcmZvcm1BY3RpdmF0ZVRyYW5zYWN0aW9uSW5CYWNr
aW5nU3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJUcmFuc2FjdGlv
bkluZm8mKTsKIAogICAgIC8vIE1haW4gdGhyZWFkIGNhbGxiYWNrcwpAQCAtMTI5LDYgKzEzMyw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRQZXJmb3JtR2V0UmVjb3JkKHVpbnQ2NF90IGNhbGxi
YWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImLCBjb25zdCBJREJHZXRSZXN1bHQmKTsKICAg
ICB2b2lkIGRpZFBlcmZvcm1HZXRDb3VudCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNv
bnN0IElEQkVycm9yJiwgdWludDY0X3QpOwogICAgIHZvaWQgZGlkUGVyZm9ybURlbGV0ZVJlY29y
ZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJik7CisgICAgdm9p
ZCBkaWRQZXJmb3JtT3BlbkN1cnNvcih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0
IElEQkVycm9yJiwgY29uc3QgSURCR2V0UmVzdWx0Jik7CisgICAgdm9pZCBkaWRQZXJmb3JtSXRl
cmF0ZUN1cnNvcih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiwg
Y29uc3QgSURCR2V0UmVzdWx0Jik7CiAgICAgdm9pZCBkaWRQZXJmb3JtQ29tbWl0VHJhbnNhY3Rp
b24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYsIGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICB2b2lkIGRp
ZFBlcmZvcm1BYm9ydFRyYW5zYWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29u
c3QgSURCRXJyb3ImLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllcik7CiAgICAgdm9pZCBkaWRQZXJmb3JtQWN0aXZhdGVUcmFuc2FjdGlvbkluQmFja2lu
Z1N0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcAppbmRleCBmZDQzYjFm
Li5lZmZiMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24u
Y3BwCkBAIC0yMzIsNiArMjMyLDQwIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bjo6ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0CiAgICAgfSk7
CiB9CiAKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6b3BlbkN1cnNvcihjb25z
dCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8p
Cit7CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246Om9w
ZW5DdXJzb3IiKTsKKworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uSW5mby5pZGVudGlmaWVyKCkg
PT0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpOworCisgICAgUmVmUHRyPFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9k
YXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkub3BlbkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5m
bywgW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJy
b3IsIGNvbnN0IElEQkdldFJlc3VsdCYgcmVzdWx0KSB7CisgICAgICAgIExPRyhJbmRleGVkREIs
ICJVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpvcGVuQ3Vyc29yIChjYWxsYmFjaykiKTsK
KworICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCisgICAgICAgICAgICBtX2RhdGFiYXNlQ29u
bmVjdGlvbi0+Y29ubmVjdGlvblRvQ2xpZW50KCkuZGlkT3BlbkN1cnNvcihJREJSZXN1bHREYXRh
OjpvcGVuQ3Vyc29yU3VjY2VzcyhyZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLCByZXN1
bHQpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmNv
bm5lY3Rpb25Ub0NsaWVudCgpLmRpZE9wZW5DdXJzb3IoSURCUmVzdWx0RGF0YTo6ZXJyb3IocmVx
dWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIoKSwgZXJyb3IpKTsKKyAgICB9KTsKK30KKwordm9p
ZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5LCB1bnNpZ25lZCBs
b25nIGNvdW50KQoreworICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uOjppdGVyYXRlQ3Vyc29yIik7CisKKyAgICBBU1NFUlQobV90cmFuc2FjdGlvbkluZm8u
aWRlbnRpZmllcigpID09IHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKTsKKwor
ICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOworICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kYXRhYmFzZSgpLml0ZXJhdGVDdXJzb3Io
cmVxdWVzdERhdGEsIGtleSwgY291bnQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0
YV0oY29uc3QgSURCRXJyb3ImIGVycm9yLCBjb25zdCBJREJHZXRSZXN1bHQmIHJlc3VsdCkgewor
ICAgICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6b3Bl
bkN1cnNvciAoY2FsbGJhY2spIik7CisKKyAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQorICAg
ICAgICAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmNvbm5lY3Rpb25Ub0NsaWVudCgpLmRpZEl0
ZXJhdGVDdXJzb3IoSURCUmVzdWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MocmVxdWVzdERh
dGEucmVxdWVzdElkZW50aWZpZXIoKSwgcmVzdWx0KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5jb25uZWN0aW9uVG9DbGllbnQoKS5kaWRJdGVyYXRl
Q3Vyc29yKElEQlJlc3VsdERhdGE6OmVycm9yKHJlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVy
KCksIGVycm9yKSk7CisgICAgfSk7Cit9CisKIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlSWRlbnRpZmllcnMoKQogewogICAg
IGlmICghbV9vYmplY3RTdG9yZUlkZW50aWZpZXJzLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCmluZGV4IGU4ZmRlNGUuLmUxNzM2ZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaApAQCAtMzUsNiArMzUsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIElEQkN1cnNvckluZm87CiBjbGFzcyBJ
REJEYXRhYmFzZUluZm87CiBjbGFzcyBJREJFcnJvcjsKIGNsYXNzIElEQkluZGV4SW5mbzsKQEAg
LTczLDYgKzc0LDggQEAgcHVibGljOgogICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CiAgICAgdm9pZCBnZXRDb3VudChjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwogICAgIHZvaWQgZGVs
ZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7
CisgICAgdm9pZCBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vy
c29ySW5mbyYpOworICAgIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IElEQktleURhdGEmLCB1bnNpZ25lZCBsb25nIGNvdW50KTsKIAogICAgIHZvaWQgZGlk
QWN0aXZhdGVJbkJhY2tpbmdTdG9yZShjb25zdCBJREJFcnJvciYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29ySW5mby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29ySW5mby5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM4NDYwMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJDdXJz
b3JJbmZvLmNwcApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIklEQkN1cnNvckluZm8uaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQorCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25JbXBsLmgiCisjaW5jbHVkZSAiSW5k
ZXhlZERCLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSURCQ3Vyc29ySW5mbyBJREJDdXJz
b3JJbmZvOjpvYmplY3RTdG9yZUN1cnNvcihJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmIHJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24pCit7Cisg
ICAgcmV0dXJuIHsgdHJhbnNhY3Rpb24sIEluZGV4ZWREQjo6Q3Vyc29yU291cmNlOjpPYmplY3RT
dG9yZSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCByYW5nZSwgZGlyZWN0aW9uLCBJbmRleGVkREI6
OkN1cnNvclR5cGU6OktleUFuZFZhbHVlIH07Cit9CisKK0lEQkN1cnNvckluZm8gSURCQ3Vyc29y
SW5mbzo6aW5kZXhDdXJzb3IoSURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
IHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSwg
SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5
cGUgdHlwZSkKK3sKKyAgICByZXR1cm4geyB0cmFuc2FjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JT
b3VyY2U6OkluZGV4LCBpbmRleElkZW50aWZpZXIsIHJhbmdlLCBkaXJlY3Rpb24sIHR5cGUgfTsK
K30KKworSURCQ3Vyc29ySW5mbzo6SURCQ3Vyc29ySW5mbyhJREJDbGllbnQ6OklEQlRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JTb3VyY2Ugc291cmNlLCB1aW50NjRf
dCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlLCBJbmRleGVk
REI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSB0eXBl
KQorICAgIDogbV9jdXJzb3JJZGVudGlmaWVyKHRyYW5zYWN0aW9uLnNlcnZlckNvbm5lY3Rpb24o
KSkKKyAgICAsIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVu
dGlmaWVyKCkpCisgICAgLCBtX3NvdXJjZUlkZW50aWZpZXIoc291cmNlSWRlbnRpZmllcikKKyAg
ICAsIG1fcmFuZ2UocmFuZ2UpCisgICAgLCBtX3NvdXJjZShzb3VyY2UpCisgICAgLCBtX2RpcmVj
dGlvbihkaXJlY3Rpb24pCisgICAgLCBtX3R5cGUodHlwZSkKK3sKK30KKworSURCQ3Vyc29ySW5m
bzo6SURCQ3Vyc29ySW5mbyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGN1cnNvcklkZW50
aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdl
LCBJbmRleGVkREI6OkN1cnNvclNvdXJjZSBzb3VyY2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0
aW9uIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIHR5cGUpCisgICAgOiBtX2N1cnNv
cklkZW50aWZpZXIoY3Vyc29ySWRlbnRpZmllcikKKyAgICAsIG1fdHJhbnNhY3Rpb25JZGVudGlm
aWVyKHRyYW5zYWN0aW9uSWRlbnRpZmllcikKKyAgICAsIG1fc291cmNlSWRlbnRpZmllcihzb3Vy
Y2VJZGVudGlmaWVyKQorICAgICwgbV9yYW5nZShyYW5nZSkKKyAgICAsIG1fc291cmNlKHNvdXJj
ZSkKKyAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKKyAgICAsIG1fdHlwZSh0eXBlKQorewor
fQorCitib29sIElEQkN1cnNvckluZm86OmlzRGlyZWN0aW9uRm9yd2FyZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpOZXh0
IHx8IG1fZGlyZWN0aW9uID09IEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uOjpOZXh0Tm9EdXBs
aWNhdGU7Cit9CisKK0lEQkN1cnNvckluZm8gSURCQ3Vyc29ySW5mbzo6aXNvbGF0ZWRDb3B5KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4geyBtX2N1cnNvcklkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCks
IG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBtX3NvdXJjZUlkZW50aWZp
ZXIsIG1fcmFuZ2UuaXNvbGF0ZWRDb3B5KCksIG1fc291cmNlLCBtX2RpcmVjdGlvbiwgbV90eXBl
IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQkN1cnNvckluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJDdXJzb3JJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMzRhM2I4ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJDdXJzb3JJbmZvLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgSURCQ3Vyc29ySW5mb19oCisjZGVmaW5lIElEQkN1cnNvckluZm9faAor
CisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJLZXlSYW5nZURh
dGEuaCIKKyNpbmNsdWRlICJJREJSZXNvdXJjZUlkZW50aWZpZXIuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCituYW1lc3BhY2UgSURCQ2xpZW50IHsKK2NsYXNzIElEQlRyYW5zYWN0aW9uOwor
fQorCituYW1lc3BhY2UgSW5kZXhlZERCIHsKK2VudW0gY2xhc3MgQ3Vyc29yRGlyZWN0aW9uOwor
ZW51bSBjbGFzcyBDdXJzb3JTb3VyY2U7CitlbnVtIGNsYXNzIEN1cnNvclR5cGU7Cit9CisKK3N0
cnVjdCBJREJLZXlSYW5nZURhdGE7CisKK2NsYXNzIElEQkN1cnNvckluZm8geworcHVibGljOgor
ICAgIHN0YXRpYyBJREJDdXJzb3JJbmZvIG9iamVjdFN0b3JlQ3Vyc29yKElEQkNsaWVudDo6SURC
VHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktl
eVJhbmdlRGF0YSYsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uKTsKKyAgICBzdGF0aWMgSURC
Q3Vyc29ySW5mbyBpbmRleEN1cnNvcihJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uJiwgdWludDY0
X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBJbmRleGVkREI6OkN1
cnNvckRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlKTsKKworICAgIElEQlJlc291cmNl
SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3JJZGVudGlmaWVy
OyB9CisgICAgdWludDY0X3Qgc291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlSWRlbnRpZmllcjsgfQorCisgICAgSW5kZXhlZERCOjpDdXJzb3JTb3VyY2UgY3Vyc29yU291
cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KKyAgICBJbmRleGVkREI6OkN1cnNvckRp
cmVjdGlvbiBjdXJzb3JEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQor
ICAgIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CisKKyAgICBib29sIGlzRGlyZWN0aW9uRm9yd2FyZCgpIGNvbnN0OworCisgICAgSURC
Q3Vyc29ySW5mbyBpc29sYXRlZENvcHkoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBJREJDdXJz
b3JJbmZvKElEQkNsaWVudDo6SURCVHJhbnNhY3Rpb24mLCBJbmRleGVkREI6OkN1cnNvclNvdXJj
ZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgSW5k
ZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSk7CisgICAgSURC
Q3Vyc29ySW5mbyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImLCB1aW50NjRfdCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgSW5kZXhlZERC
OjpDdXJzb3JTb3VyY2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBJbmRleGVkREI6OkN1
cnNvclR5cGUpOworCisgICAgSURCUmVzb3VyY2VJZGVudGlmaWVyIG1fY3Vyc29ySWRlbnRpZmll
cjsKKyAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgbV90cmFuc2FjdGlvbklkZW50aWZpZXI7Cisg
ICAgdWludDY0X3QgbV9zb3VyY2VJZGVudGlmaWVyOworCisgICAgSURCS2V5UmFuZ2VEYXRhIG1f
cmFuZ2U7CisKKyAgICBJbmRleGVkREI6OkN1cnNvclNvdXJjZSBtX3NvdXJjZTsKKyAgICBJbmRl
eGVkREI6OkN1cnNvckRpcmVjdGlvbiBtX2RpcmVjdGlvbjsKKyAgICBJbmRleGVkREI6OkN1cnNv
clR5cGUgbV90eXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5kaWYgLy8gSURCQ3Vyc29ySW5mb19oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVz
dWx0RGF0YS5jcHAKaW5kZXggMzdkYTczMy4uYzNkMDcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcApA
QCAtMTM2LDYgKzEzNiwyMCBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmRlbGV0ZVJl
Y29yZFN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZQogICAgIHJldHVybiB7
IElEQlJlc3VsdFR5cGU6OkRlbGV0ZVJlY29yZFN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07
CiB9CiAKK0lEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6b3BlbkN1cnNvclN1Y2Nlc3MoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCR2V0
UmVzdWx0JiBnZXRSZXN1bHQpCit7CisgICAgSURCUmVzdWx0RGF0YSByZXN1bHQoSURCUmVzdWx0
VHlwZTo6T3BlbkN1cnNvclN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICByZXN1bHQu
bV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Oml0
ZXJhdGVDdXJzb3JTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElk
ZW50aWZpZXIsIGNvbnN0IElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0KQoreworICAgIElEQlJlc3Vs
dERhdGEgcmVzdWx0KElEQlJlc3VsdFR5cGU6Okl0ZXJhdGVDdXJzb3JTdWNjZXNzLCByZXF1ZXN0
SWRlbnRpZmllcik7CisgICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJ
REJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogY29uc3Qg
SURCRGF0YWJhc2VJbmZvJiBJREJSZXN1bHREYXRhOjpkYXRhYmFzZUluZm8oKSBjb25zdAogewog
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCmluZGV4IGQ4
MjI2YjYuLjJlZGU3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaApAQCAtNTMsNiArNTMsOCBAQCBlbnVtIGNs
YXNzIElEQlJlc3VsdFR5cGUgewogICAgIEdldENvdW50U3VjY2VzcywKICAgICBEZWxldGVSZWNv
cmRTdWNjZXNzLAogICAgIENyZWF0ZUluZGV4U3VjY2VzcywKKyAgICBPcGVuQ3Vyc29yU3VjY2Vz
cywKKyAgICBJdGVyYXRlQ3Vyc29yU3VjY2VzcywKIH07CiAKIG5hbWVzcGFjZSBJREJTZXJ2ZXIg
ewpAQCAtNzMsNiArNzUsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElEQlJlc3VsdERhdGEgZ2V0
UmVjb3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCBjb25zdCBJREJHZXRS
ZXN1bHQmKTsKICAgICBzdGF0aWMgSURCUmVzdWx0RGF0YSBnZXRDb3VudFN1Y2Nlc3MoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiwgdWludDY0X3QgY291bnQpOwogICAgIHN0YXRpYyBJREJS
ZXN1bHREYXRhIGRlbGV0ZVJlY29yZFN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
Jik7CisgICAgc3RhdGljIElEQlJlc3VsdERhdGEgb3BlbkN1cnNvclN1Y2Nlc3MoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgSURCR2V0UmVzdWx0Jik7CisgICAgc3RhdGljIElE
QlJlc3VsdERhdGEgaXRlcmF0ZUN1cnNvclN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiwgY29uc3QgSURCR2V0UmVzdWx0Jik7CiAKICAgICBJREJSZXN1bHREYXRhKGNvbnN0IElE
QlJlc3VsdERhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAppbmRleCBkN2VmYTUx
Li5kYmJjMTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiSURCQ29ubmVjdGlvblRvQ2xpZW50LmgiCiAjaW5jbHVkZSAiSURCQ29u
bmVjdGlvblRvU2VydmVyLmgiCisjaW5jbHVkZSAiSURCQ3Vyc29ySW5mby5oIgogI2luY2x1ZGUg
IklEQktleVJhbmdlRGF0YS5oIgogI2luY2x1ZGUgIklEQk9wZW5EQlJlcXVlc3RJbXBsLmgiCiAj
aW5jbHVkZSAiSURCUmVxdWVzdERhdGEuaCIKQEAgLTE4Myw2ICsxODQsMjIgQEAgdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZVJlY29yZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1
bHREYXRhKQogICAgIH0pOwogfQogCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkT3BlbkN1
cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIFJlZlB0cjxJblBy
b2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3Bh
dGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2Vy
dmVyLT5kaWRPcGVuQ3Vyc29yKHJlc3VsdERhdGEpOworICAgIH0pOworfQorCit2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGlkSXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1
bHREYXRhKQoreworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Cisg
ICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7
CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRJdGVyYXRlQ3Vyc29yKHJlc3VsdERh
dGEpOworICAgIH0pOworfQorCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRUcmFuc2Fj
dGlvbihJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBS
ZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwpAQCAtMjY4LDYgKzI4NSwyNCBA
QCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSQogICAgIH0pOwogfQogCit2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6b3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNv
bnN0IElEQkN1cnNvckluZm8mIGluZm8pCit7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZl
cj4gc2VsZih0aGlzKTsKKworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywg
c2VsZiwgcmVxdWVzdERhdGEsIGluZm9dIHsKKyAgICAgICAgbV9zZXJ2ZXItPm9wZW5DdXJzb3Io
cmVxdWVzdERhdGEsIGluZm8pOworICAgIH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0
IElEQktleURhdGEmIGtleSwgdW5zaWduZWQgbG9uZyBjb3VudCkKK3sKKyAgICBSZWZQdHI8SW5Q
cm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOworCisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YSwga2V5LCBjb3VudF0geworICAgICAgICBt
X3NlcnZlci0+aXRlcmF0ZUN1cnNvcihyZXF1ZXN0RGF0YSwga2V5LCBjb3VudCk7CisgICAgfSk7
Cit9CisKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50
NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJUcmFuc2FjdGlvbklu
Zm8mIGluZm8pCiB7CiAgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblBy
b2Nlc3NJREJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JblByb2Nlc3NJREJTZXJ2ZXIuaAppbmRleCAzMzlkNzlhLi43NTUzZTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2Vy
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJv
Y2Vzc0lEQlNlcnZlci5oCkBAIC02Niw2ICs2Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRh
Jikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGdldENvdW50KGNvbnN0IElEQlJl
cXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgb3ZlcnJpZGUgZmluYWw7CiAgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vy
c29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpIG92ZXJyaWRl
IGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIHVuc2lnbmVkIGxvbmcgY291bnQpIG92ZXJyaWRlIGZp
bmFsOwogICAgIHZpcnR1YWwgdm9pZCBlc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKSBvdmVy
cmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVp
bnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpIG92ZXJyaWRlIGZpbmFsOwogCkBA
IC04Myw2ICs4NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0UmVjb3JkKGNv
bnN0IElEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
R2V0Q291bnQoY29uc3QgSURCUmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1
YWwgdm9pZCBkaWREZWxldGVSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZp
bmFsOworICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEm
KSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkSXRlcmF0ZUN1cnNvcihjb25z
dCBJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGZpcmVW
ZXJzaW9uQ2hhbmdlRXZlbnQoSURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24m
LCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKSBvdmVycmlkZSBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDllYjZhNjIuLmZjYmZjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNTQsNiArMjA1NCw4IEBACiAJCTUxNzEzOEYw
MUJFRDFEMUEwMDBENUYwMSAvKiBJbmRleEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4RUUxQkVEMUQxNzAwMEQ1RjAxIC8qIEluZGV4S2V5
LmggKi87IH07CiAJCTUxNzEzOEY3MUJGMTI4QkIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4
RjUxQkYxMjI2MjAwMEQ1RjAxIC8qIEluZGV4VmFsdWVTdG9yZS5jcHAgKi87IH07CiAJCTUxNzEz
OEY4MUJGMTI4QkIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOEY2MUJGMTIyNjIwMDBENUYwMSAv
KiBJbmRleFZhbHVlU3RvcmUuaCAqLzsgfTsKKwkJNTE3MTM4RkIxQkYzQURGNDAwMEQ1RjAxIC8q
IElEQkN1cnNvckluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE3MTM4RjkxQkYzQURBQzAwMEQ1RjAxIC8qIElEQkN1cnNvckluZm8uY3BwICov
OyB9OworCQk1MTcxMzhGQzFCRjNBREY0MDAwRDVGMDEgLyogSURCQ3Vyc29ySW5mby5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM4RkExQkYzQURB
QzAwMEQ1RjAxIC8qIElEQkN1cnNvckluZm8uaCAqLzsgfTsKIAkJNTE3NDFEMEYwQjA3MjU5QTAw
RUQ0NDJDIC8qIEJhY2tGb3J3YXJkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc0MUQwQjBCMDcyNTlBMDBFRDQ0MkMgLyogQmFja0Zvcndh
cmRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTc0MUQxMTBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzQxRDBEMEIwNzI1OUEwMEVE
NDQyQyAvKiBIaXN0b3J5SXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUxNzQxRDEyMEIwNzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc0MUQw
RTBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uY3BwICovOyB9OwpAQCAtOTUxMiw2ICs5
NTE0LDggQEAKIAkJNTE3MTM4RUUxQkVEMUQxNzAwMEQ1RjAxIC8qIEluZGV4S2V5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGV4S2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxNzEzOEY1MUJGMTIyNjIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5kZXhWYWx1ZVN0b3Jl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3MTM4RjYxQkYxMjI2MjAwMEQ1
RjAxIC8qIEluZGV4VmFsdWVTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbmRleFZhbHVlU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3MTM4
RjkxQkYzQURBQzAwMEQ1RjAxIC8qIElEQkN1cnNvckluZm8uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSURCQ3Vyc29ySW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxNzEzOEZBMUJGM0FEQUMwMDBENUYwMSAvKiBJREJDdXJzb3JJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkN1cnNvckluZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3NDFEMEIwQjA3MjU5QTAwRUQ0NDJDIC8qIEJhY2tG
b3J3YXJkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tGb3J3
YXJkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNzQxRDBEMEIwNzI1
OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSGlzdG9yeUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3NDFE
MEUwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3RvcnlJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIaXN0b3J5SXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNjg3OCw2ICsxNjg4Miw4IEBACiAJCTUxMEE1OEUxMUJBQTQwOTgwMEMxOTI4
MiAvKiBzaGFyZWQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTUxNzEzOEY5MUJGM0FEQUMwMDBENUYwMSAvKiBJREJDdXJzb3JJbmZvLmNwcCAqLywKKwkJ
CQk1MTcxMzhGQTFCRjNBREFDMDAwRDVGMDEgLyogSURCQ3Vyc29ySW5mby5oICovLAogCQkJCTUx
QkE0QUMxMUJCQjVDQkYwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uY3BwICovLAogCQkJCTUx
QkE0QUMyMUJCQjVDQkYwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uaCAqLywKIAkJCQk1MTQ4
NDUzQzFCQjlEMDc2MDA2QTcyRUQgLyogSURCRXJyb3IuY3BwICovLApAQCAtMjUxNjIsNiArMjUx
NjgsNyBAQAogCQkJCTg1NDA3NTIwMEFENkM1RkIwMDYyMEM1NyAvKiBET01FdmVudFRhcmdldC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODVDNzhBNjgwQUJERTFCNDAwNDRGQzE2IC8qIERPTUV4Y2Vw
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxQTM3QjUwOTdDNzE1RjAwMTlGM0Q4IC8qIERP
TUV4dGVuc2lvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNzEzOEZDMUJGM0FERjQwMDBENUYw
MSAvKiBJREJDdXJzb3JJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAwRjAwNDBFMEExODU1
MDBGRDA0RTMgLyogRE9NRmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkUzQkMxMDgxMTdENDc5
ODAwQjk0MDlBIC8qIERPTUZpbGVFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkUzQkMxMEIx
MTdENDdDODAwQjk0MDlBIC8qIERPTUZpbGVFcnJvckludGVybmFsLmggaW4gSGVhZGVycyAqLywK
QEAgLTI5NjMwLDYgKzI5NjM3LDcgQEAKIAkJCQkzMTZGRTA3MzBFNkNDQkVFMDBCRjYwODggLyog
SlNDU1NLZXlmcmFtZXNSdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDZDMjAwMEMwRERD
OEYwMDIwQ0ZDMyAvKiBKU0NTU01lZGlhUnVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQ2
QzIwMjBDMEREQzhGMDAyMENGQzMgLyogSlNDU1NQYWdlUnVsZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1MTcxMzhGQjFCRjNBREY0MDAwRDVGMDEgLyogSURCQ3Vyc29ySW5mby5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5MzA3MDVFOTA5RTBDOUYwMDBCMTdGRTQgLyogSlNDU1NQcmltaXRpdmVW
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNENGN0IzMzA5RjZFQ0Q3MDBFQjM2NjUgLyog
SlNDU1NSdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDZDMUVFMEMwRERCREYwMDIwQ0ZD
MyAvKiBKU0NTU1J1bGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4IGVmMjNmMjku
LjcxMzQyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRp
bmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRp
bmdVdGlsaXRpZXMuY3BwCkBAIC03OCw2ICs3OCw0MyBAQCBzdGF0aWMgYm9vbCBzZXQoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlJiBvYmplY3QsIGNvbnN0IFN0cmluZyYga2V5UGF0aEVsZW1lbnQs
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK0pTVmFsdWUgaWRiS2V5RGF0YVRvSlNWYWx1ZShKU0M6
OkV4ZWNTdGF0ZSYgZXhlYywgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSkKK3sKKyAgICBpZiAo
a2V5RGF0YS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBM
b2NrZXI8SlNMb2NrPiBsb2NrZXIoZXhlYy52bSgpLmFwaUxvY2soKSk7CisKKyAgICBzd2l0Y2gg
KGtleURhdGEudHlwZSgpKSB7CisgICAgY2FzZSBLZXlUeXBlOjpBcnJheToKKyAgICAgICAgewor
ICAgICAgICAgICAgY29uc3QgVmVjdG9yPElEQktleURhdGE+JiBpbkFycmF5ID0ga2V5RGF0YS5h
cnJheSgpOworICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBpbkFycmF5LnNpemUoKTsKKyAgICAg
ICAgICAgIEpTQXJyYXkqIG91dEFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheSgmZXhlYywgMCwg
ZXhlYy5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNpemUpOworICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBhcnJheUtl
eSA9IGluQXJyYXkuYXQoaSk7CisgICAgICAgICAgICAgICAgb3V0QXJyYXktPnB1dERpcmVjdElu
ZGV4KCZleGVjLCBpLCBpZGJLZXlEYXRhVG9KU1ZhbHVlKGV4ZWMsIGFycmF5S2V5KSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZShvdXRBcnJheSk7CisgICAgICAg
IH0KKyAgICBjYXNlIEtleVR5cGU6OlN0cmluZzoKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0
aENhY2hlKCZleGVjLCBrZXlEYXRhLnN0cmluZygpKTsKKyAgICBjYXNlIEtleVR5cGU6OkRhdGU6
CisgICAgICAgIHJldHVybiBqc0RhdGVPck51bGwoJmV4ZWMsIGtleURhdGEuZGF0ZSgpKTsKKyAg
ICBjYXNlIEtleVR5cGU6Ok51bWJlcjoKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGtleURhdGEu
bnVtYmVyKCkpOworICAgIGNhc2UgS2V5VHlwZTo6TWluOgorICAgIGNhc2UgS2V5VHlwZTo6TWF4
OgorICAgIGNhc2UgS2V5VHlwZTo6SW52YWxpZDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCit9CisKIHN0YXRpYyBK
U1ZhbHVlIGlkYktleVRvSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIElEQktleSoga2V5KQogewogICAgIGlmICgha2V5IHx8ICFleGVjKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgK
aW5kZXggNjFmM2IwZC4uNWJjNDQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaApAQCAtNzAsNiArNzAsNyBAQCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSBpZGJLZXlEYXRhVG9TY3JpcHRWYWx1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgSQogCiBKU0M6OkpTVmFsdWUgaWRiVmFsdWVEYXRhVG9KU1ZhbHVlKEpTQzo6RXhl
Y1N0YXRlJiwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlRGF0YSk7CiB2b2lkIGdl
bmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IElEQkluZGV4SW5m
byYsIEpTQzo6SlNWYWx1ZSwgSW5kZXhLZXkmIG91dEtleSk7CitKU0M6OkpTVmFsdWUgaWRiS2V5
RGF0YVRvSlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IElEQktleURhdGEmKTsKIAogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKaW5kZXgg
MjI2NmYxNC4uM2Y3NDFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jv
c3NUaHJlYWRDb3BpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhy
ZWFkQ29waWVyLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjaW5jbHVkZSAiSURCQ3Vy
c29ySW5mby5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IklEQkRhdGFiYXNlSW5mby5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlTWV0YWRhdGEuaCIKQEAg
LTE3NSw2ICsxNzYsMTEgQEAgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURC
SW5kZXhJbmZvPjo6VHlwZSBDcm9zc1RocmVhZENvcGllckJhc2U8ZmEKICAgICByZXR1cm4gaW5m
by5pc29sYXRlZENvcHkoKTsKIH0KIAorQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxz
ZSwgSURCQ3Vyc29ySW5mbz46OlR5cGUgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxz
ZSwgSURCQ3Vyc29ySW5mbz46OmNvcHkoY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKK3sKKyAg
ICByZXR1cm4gaW5mby5pc29sYXRlZENvcHkoKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQogCiAvLyBUZXN0IENyb3NzVGhyZWFkQ29waWVyIHVzaW5nIENPTVBJTEVf
QVNTRVJULgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRD
b3BpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKaW5k
ZXggMGZmMGE1Yy4uNmUxMDkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q3Jvc3NUaHJlYWRDb3BpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1Ro
cmVhZENvcGllci5oCkBAIC0yMzksNiArMjM5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgc3RhdGljIFR5cGUgY29weShjb25zdCBJREJJbmRleEluZm8mKTsKICAgICB9OwogCisg
ICAgY2xhc3MgSURCQ3Vyc29ySW5mbzsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBXRUJDT1JFX0VY
UE9SVCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBJREJDdXJzb3JJbmZvPiB7
CisgICAgICAgIHR5cGVkZWYgSURCQ3Vyc29ySW5mbyBUeXBlOworICAgICAgICBzdGF0aWMgVHlw
ZSBjb3B5KGNvbnN0IElEQkN1cnNvckluZm8mKTsKKyAgICB9OworCiAjZW5kaWYKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>