<?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>182717</bug_id>
          
          <creation_ts>2018-02-12 16:06:27 -0800</creation_ts>
          <short_desc>[JSC] cache TaggedTemplate arrays by callsite rather than by contents</short_desc>
          <delta_ts>2018-02-13 10:11:21 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Caitlin Potter (:caitp)">caitp</reporter>
          <assigned_to name="Caitlin Potter (:caitp)">caitp</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1398521</commentid>
    <comment_count>0</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2018-02-12 16:06:27 -0800</bug_when>
    <thetext>[JSC] cache TaggedTemplate arrays by callsite rather than by contents</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398526</commentid>
    <comment_count>1</comment_count>
      <attachid>333641</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2018-02-12 16:11:48 -0800</bug_when>
    <thetext>Created attachment 333641
[JSC] cache TaggedTemplate arrays by callsite rather than by contents</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398527</commentid>
    <comment_count>2</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2018-02-12 16:19:10 -0800</bug_when>
    <thetext>This patch is based on the v8 implementation @ https://chromium.googlesource.com/v8/v8/+/d3ca0d005077085a30e27415827325ea2216a735 (so, some class/file renaming is influenced by that)

First patch:

- Change BytecodeGenerator mapping from TemplateRegistryKey -&gt; RegisterID to TemplateRegistryKey -&gt; JSTemplateRegistryKey, to prevent creating more JS wrappers than necessary (this probably doesn&apos;t buy anything valuable, so no reason not to get rid of this in a later version) --- A new constant pool index is always created, because each TemplateRegistryKey (TemplateObjectDescriptor) gets its own array (per callsite).

- Disable DirectEvalCodeCache if tagged templates occur in code block. This ensures each call to `eval()` will create own template arrays, per spec.

- Delete TemplateRegistry and TemplateRegistryKeyTable

Tests aren&apos;t updated yet, wanting to see what will fail before fixing those up or adding new ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398592</commentid>
    <comment_count>3</comment_count>
      <attachid>333641</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-02-12 20:15:18 -0800</bug_when>
    <thetext>Comment on attachment 333641
[JSC] cache TaggedTemplate arrays by callsite rather than by contents

Attachment 333641 did not pass jsc-ews (mac):
Output: http://webkit-queues.webkit.org/results/6476510

New failing tests:
stress/tagged-template-registry-key.js.ftl-no-cjit-no-inline-validate
stress/tagged-template-registry-key.js.ftl-no-cjit-no-put-stack-validate
stress/tagged-templates-identity.js.ftl-no-cjit-no-inline-validate
stress/tagged-templates-identity.js.ftl-no-cjit-no-put-stack-validate
stress/tagged-template-registry-key.js.no-ftl
stress/tagged-templates-identity.js.no-ftl
stress/template-string-tags-eval.js.dfg-eager
stress/tagged-template-registry-key.js.dfg-maximal-flush-validate-no-cjit
stress/tagged-template-registry-key.js.no-llint
stress/tagged-templates-identity.js.no-llint
stress/template-string-tags-eval.js.no-cjit-collect-continuously
stress/tagged-template-registry-key.js.no-cjit-collect-continuously
stress/tagged-templates-identity.js.no-cjit-collect-continuously
stress/tagged-templates-identity.js.no-cjit-validate-phases
stress/template-string-tags-eval.js.ftl-eager-no-cjit
stress/tagged-template-registry-key.js.no-cjit-validate-phases
stress/tagged-templates-identity.js.dfg-maximal-flush-validate-no-cjit
stress/template-string-tags-eval.js.no-ftl
stress/tagged-templates-identity.js.ftl-eager
stress/template-string-tags-eval.js.dfg-maximal-flush-validate-no-cjit
stress/tagged-template-registry-key.js.ftl-eager
stress/tagged-templates-identity.js.ftl-eager-no-cjit
stress/tagged-template-registry-key.js.ftl-eager-no-cjit
stress/tagged-template-registry-key.js.ftl-no-cjit-b3o1
stress/tagged-templates-identity.js.ftl-no-cjit-b3o1
stress/template-string-tags-eval.js.ftl-no-cjit-validate-sampling-profiler
stress/template-string-tags-eval.js.dfg-eager-no-cjit-validate
stress/template-string-tags-eval.js.ftl-eager
stress/tagged-templates-identity.js.dfg-eager-no-cjit-validate
stress/tagged-template-registry-key.js.dfg-eager-no-cjit-validate
stress/tagged-templates-identity.js.dfg-eager
stress/tagged-templates-identity.js.ftl-no-cjit-small-pool
stress/tagged-template-registry-key.js.default
stress/tagged-templates-identity.js.default
stress/template-string-tags-eval.js.ftl-no-cjit-no-inline-validate
stress/tagged-template-registry-key.js.ftl-eager-no-cjit-b3o1
stress/tagged-templates-identity.js.ftl-eager-no-cjit-b3o1
stress/tagged-template-registry-key.js.dfg-eager
stress/template-string-tags-eval.js.default
stress/tagged-template-registry-key.js.ftl-no-cjit-small-pool
stress/template-string-tags-eval.js.ftl-eager-no-cjit-b3o1
stress/template-string-tags-eval.js.ftl-no-cjit-no-put-stack-validate
stress/template-string-tags-eval.js.ftl-no-cjit-b3o1
stress/template-string-tags-eval.js.ftl-no-cjit-small-pool
stress/template-string-tags-eval.js.no-llint
stress/tagged-template-registry-key.js.ftl-no-cjit-validate-sampling-profiler
stress/template-string-tags-eval.js.no-cjit-validate-phases
stress/tagged-templates-identity.js.ftl-no-cjit-validate-sampling-profiler</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398607</commentid>
    <comment_count>4</comment_count>
      <attachid>333671</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2018-02-12 21:39:01 -0800</bug_when>
    <thetext>Created attachment 333671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398628</commentid>
    <comment_count>5</comment_count>
      <attachid>333671</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-13 01:38:03 -0800</bug_when>
    <thetext>Comment on attachment 333671
Patch

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

r=me with test262.yaml update. Since test262 includes tests for this, we should update test262.yaml.

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:75
&gt; +    , m_hasTaggedTemplates(false)

Drop this since it is not used.

&gt; Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:457
&gt; +    unsigned m_hasTaggedTemplates : 1;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398662</commentid>
    <comment_count>6</comment_count>
      <attachid>333693</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2018-02-13 09:01:32 -0800</bug_when>
    <thetext>Created attachment 333693
Patch

Remove unneeded member from UnlinkedCodeBlock and update test262.yaml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398663</commentid>
    <comment_count>7</comment_count>
      <attachid>333693</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-13 09:02:51 -0800</bug_when>
    <thetext>Comment on attachment 333693
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398685</commentid>
    <comment_count>8</comment_count>
      <attachid>333693</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-13 10:10:35 -0800</bug_when>
    <thetext>Comment on attachment 333693
Patch

Clearing flags on attachment: 333693

Committed r228422: &lt;https://trac.webkit.org/changeset/228422&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398686</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-13 10:10:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398687</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-13 10:11:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/37501758&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333641</attachid>
            <date>2018-02-12 16:11:48 -0800</date>
            <delta_ts>2018-02-12 21:38:57 -0800</delta_ts>
            <desc>[JSC] cache TaggedTemplate arrays by callsite rather than by contents</desc>
            <filename>bug-182717-20180212191146.patch</filename>
            <type>text/plain</type>
            <size>83789</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4Mzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NGE3MDg2YzliMTMwMmVjY2ZlZjEzYjMxNWM2NzhiZGM3OGI4YjMwLi5mZmY4Y2I4ZWE2MzFhNGVm
ODFmZjZmMjFjZjEwNTNkODg4NWIxM2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NCBAQAorMjAxOC0wMi0xMiAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGNhY2hlIFRhZ2dlZFRlbXBsYXRlIGFycmF5cyBieSBjYWxsc2l0
ZSByYXRoZXIgdGhhbiBieSBjb250ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNzE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvZWNtYTI2Mi9wdWxsLzg5
MCBpbXBvc2VzIGEgY2hhbmdlIHRvIHRlbXBsYXRlCisgICAgICAgIGxpdGVyYWxzLCB0byBhbGxv
dyB0ZW1wbGF0ZSBjYWxsc2l0ZSBhcnJheXMgdG8gYmUgY29sbGVjdGVkIHdoZW4gdGhlCisgICAg
ICAgIGNvZGUgY29udGFpbmluZyB0aGUgdGFnZ2VkIHRlbXBsYXRlIGNhbGwgaXMgY29sbGVjdGVk
LiBUaGlzIHNwZWMgY2hhbmdlCisgICAgICAgIGhhcyByZWNlaXZlZCBjb25jZW5zdXMgYW5kIGJl
ZW4gcmF0aWZpZWQuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZWxpbWluYXRlcyB0aGUgZXRlcm5h
bCBtYXAgYXNzb2NpYXRpbmcgdGVtcGxhdGUgY29udGVudHMKKyAgICAgICAgd2l0aCBhcnJheXMu
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0
Q29uc3RhbnRSZWdpc3RlcnMpOgorICAgICAgICAqIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2Fj
aGUuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsQ29kZUNhY2hlOjpzZXRTbG93KToKKyAg
ICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVu
bGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Omhh
c1RhZ2dlZFRlbXBsYXRlcyBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjpzZXRIYXNUYWdnZWRUZW1wbGF0ZXMpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRUZW1w
bGF0ZU9iamVjdENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRHZXRUZW1wbGF0ZU9iamVjdCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAo
SlNDOjpFdmFsRXhlY3V0YWJsZTo6aGFzVGFnZ2VkVGVtcGxhdGVzIGNvbnN0KToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OkpTR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9KU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5LmNw
cC4KKyAgICAgICAgKEpTQzo6SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OkpTVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpk
ZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OmNyZWF0
ZVRlbXBsYXRlT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTVGVtcGxhdGVPYmplY3REZXNj
cmlwdG9yLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Rl
bXBsYXRlUmVnaXN0cnlLZXkuaC4KKyAgICAgICAgKEpTQzo6aXNUZW1wbGF0ZU9iamVjdERlc2Ny
aXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHA6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5
S2V5LmNwcC4KKyAgICAgICAgKEpTQzo6VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjp+VGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cGxhdGVSZWdpc3RyeUtleS5oLgorICAgICAgICAoSlNDOjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0
b3I6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wbGF0ZU9iamVjdERlc2Ny
aXB0b3I6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3I6Okhhc2hlcjo6aGFzaCk6CisgICAgICAgIChKU0M6OlRlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvcjo6SGFzaGVyOjplcXVhbCk6CisgICAgICAgIChKU0M6OlRlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
OjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpUZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3I6OmNhbGN1bGF0ZUhhc2gpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcGxhdGVS
ZWdpc3RyeS5oOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeUtl
eVRhYmxlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlL
ZXlUYWJsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAo
SlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxOC0wMi0xMSAgR3Vp
bGxhdW1lIEVtb250ICA8Z3VpamVtb250QGlnYWxpYS5jb20+CiAKICAgICAgICAgW01JUFNdIEpT
QyBuZWVkcyB0byBiZSBidWlsdCB3aXRoIC1sYXRvbWljCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggNjYwY2U4ZDc4NThiNGI3NjgyM2ZhZmVlZTNjNmNlYWYzMDZhMTI0Yi4u
MDY3Yjg2YTk4Mzg0OGJlNzI4NTIzOGI5YzgyYjBjMTVkYTI3MDQ1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODU4LDkgKzg1OCw3IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9GT1JXQVJESU5HX0hFQURFUlMKICAgICBydW50aW1lL1N5bWJvbC5oCiAgICAgcnVudGltZS9T
eW1ib2xQcm90b3R5cGUuaAogICAgIHJ1bnRpbWUvU3ltYm9sVGFibGUuaAotICAgIHJ1bnRpbWUv
VGVtcGxhdGVSZWdpc3RyeS5oCi0gICAgcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgKLSAg
ICBydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5oCisgICAgcnVudGltZS9UZW1wbGF0
ZU9iamVjdERlc2NyaXB0b3IuaAogICAgIHJ1bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmgKICAgICBy
dW50aW1lL1Rocm93U2NvcGUuaAogICAgIHJ1bnRpbWUvVG9OYXRpdmVGcm9tVmFsdWUuaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhOGUzNDQyNTI0MmIwNTZmNjliODkyYzYyMTdk
ZjljNWVlZjYxZTZjLi5jZmE3ZTA3YTdhZGU3YTU4OGViZjVmODY2YzlmMmVhOWZmMmFkMTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA4OCw5ICsxMDg4LDggQEAKIAkJNzBE
RTlBMDkxQkU3RDY5RTAwNUQ4OUQ5IC8qIExMSW50QXNzZW1ibHkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwREU5QTA4MUJFN0Q2NzAwMDVEODlEOSAv
KiBMTEludEFzc2VtYmx5LmggKi87IH07CiAJCTcwRUMwRUMzMUFBMEQ3REEwMEI2QUFGQSAvKiBK
U1N0cmluZ0l0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MEVDMEVCRDFBQTBEN0RBMDBCNkFBRkEgLyogSlNTdHJpbmdJdGVyYXRvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwRUMwRUM3
MUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQzBFQzExQUEwRDdEQTAwQjZB
QUZBIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzBFQ0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpT
VGVtcGxhdGVSZWdpc3RyeUtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzBFQ0E2MDExQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3Ry
eUtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTcwRUNBNjA4MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwMzFBRkRCRUEyMDA0
NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTcwRUNBNjA5MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0
ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeUtleS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwRUNBNjA2
MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDExQUZEQkVBMjAw
NDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5
IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcyQUFGN0NFMUQwRDMxQjMwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNl
dHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MkFBRjdDQzFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvbi5oICovOyB9OwogCQk3OTAwODEzOTFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzkwMDgxMzcx
RTk1QThFQzAwNTJEN0NEIC8qIFdhc21Nb2R1bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3OTA1QkI2OTFEMTIwNTBFMDAxOUZFNTcgLyogSW5s
aW5lQWNjZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3OTA1QkI2NzFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyMDksNyArMTIwOCw2IEBA
CiAJCTkzMkY1QkREMDgyMkExQzcwMDczNjk3NSAvKiBqc2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8q
IGpzYy5jcHAgKi87IH07CiAJCTkzMkY1QkVBMDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0
Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3
b3JrICovOyB9OwogCQk5MzMwNDAwNDBFNkE3NDk0MDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzMwM0ZFQTBF
NkE3MkMwMDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTVENDI2MUFGNEM4NENFMkFDQkFDOTgxIC8qIFRl
bXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDhGQzJGMzdBQjc2NDgzQTk5NjY2ODhGIC8qIFRlbXBsYXRlUmVnaXN0
cnlLZXlUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTk2MDA5N0E2MEVCQUJCNTgwMDdBNzI5NyAvKiBMYWJlbFNjb3BlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NjAwOTdBNTBFQkFCQjU4MDA3
QTcyOTcgLyogTGFiZWxTY29wZS5oICovOyB9OwogCQk5Njg4Q0IxNTBFRDEyQjRFMDAxRDY0OUYg
LyogQXNzZW1ibGVyQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5Njg4Q0IxMzBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVmZmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTY4OENC
MTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY4OENCMTQwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4
NkFzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xOTQyLDcgKzE5NDAsNiBAQAogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNl
Y3Rpb24gKi8KIAkJMDAwQkVBRjBERjYwNDQ4MUFGNkFCNjhDIC8qIE1vZHVsZVNjb3BlRGF0YS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVTY29wZURhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDhGQzJGMzdBQjc2NDgzQTk5NjY2ODhGIC8qIFRl
bXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYwMTIzMzAxOTQ0RUExQjAwODQzQTBDIC8qIERGR1ZhbHVlU3RyZW5ndGguY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHVmFsdWVTdHJlbmd0aC5jcHA7IHBh
dGggPSBkZmcvREZHVmFsdWVTdHJlbmd0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGMDEyMzMxMTk0NEVBMUIwMDg0M0EwQyAvKiBERkdWYWx1ZVN0cmVuZ3RoLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ZhbHVlU3RyZW5ndGguaDsgcGF0aCA9IGRm
Zy9ERkdWYWx1ZVN0cmVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDMz
MkJGMThBREZBRTEwMDVGOTc5QSAvKiBFeGl0aW5nSklUVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGl0aW5nSklUVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zNTkwLDExICszNTg3LDkgQEAKIAkJNzBFQzBFQkQxQUEwRDdEQTAw
QjZBQUZBIC8qIEpTU3RyaW5nSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNTdHJpbmdJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MEVDMEVDMDFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nSXRlcmF0b3JQcm90b3R5
cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEVDMEVDMTFBQTBEN0RBMDBC
NkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNzBFQ0E2MDAxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3Ry
eUtleS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RlbXBsYXRl
UmVnaXN0cnlLZXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEVDQTYwMTFB
RkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTVGVtcGxhdGVSZWdpc3RyeUtleS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3MEVDQTYwMjFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdp
c3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wbGF0ZVJl
Z2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzBFQ0E2MDMxQUZEQkVB
MjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGVtcGxhdGVSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeUtleS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwRUNBNjAwMUFGREJFQTIwMDQ0OTczOSAvKiBKU1Rl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcwRUNBNjAxMUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEVDQTYw
NDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFBRjdDQjFEMEQzMThCMDA1RTYwQkUgLyogSlND
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlND
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3N0IyNUNCMkMzMDk0QTkyQTM4RTFEQjMgLyogSlNNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTM3ODQsNyArMzc3OSw2IEBACiAJCTg4NTIxNTFBOUMzODQyMzg5QjMy
MTVCNyAvKiBTY3JpcHRGZXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNjcmlwdEZldGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEIxNzM1RUYx
RTkyRTUyOTAwMzY5MDU0IC8qIEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5qcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IEFzeW5jRnJvbVN5bmNJdGVyYXRv
clByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEIzQkY1RTMxRTNE
MzY1QTAwNzZBODdBIC8qIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY0dlbmVyYXRvclByb3RvdHlwZS5sdXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOEI0N0YyMzQzNjZDNEI3MkFDODUyQTdFIC8qIFRl
bXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4QjYwMTZGMzFGM0UzQ0MwMDBGOURFNkEgLyogQXN5bmNGcm9tU3luY0l0ZXJh
dG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFz
eW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCThCNjAxNkY0MUYzRTNDQzAwMEY5REU2QSAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQ
cm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNGcm9tU3lu
Y0l0ZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThCOUY2
RDU1MUQ1OTEyRkEwMDFDNzM5RiAvKiBJdGVyYXRpb25LaW5kLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEl0ZXJhdGlvbktpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQ0MTcsNyArNDQxMSw3IEBACiAJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBB
cmdMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFyZ0xpc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNGRDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8qIEp1
bXBUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKdW1wVGFi
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0ZEOEM5MTBFRUIyRUU3MDAy
ODM4NDggLyogSnVtcFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEp1
bXBUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCREI0QjVFMDk5Q0Q0QzFC
QjNDMUNGMDUgLyogVGVtcGxhdGVSZWdpc3RyeUtleS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkRCNEI1RTA5OUNENEMxQkIzQzFDRjA1IC8qIFRlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MjAzMjgxRTE5ODE5NzlEMDA4OEI0OTkgLyogQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmMg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IEN1c3RvbUdsb2JhbE9iamVjdENsYXNz
VGVzdC5jOyBwYXRoID0gQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5jOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjAzMjgxRjE5ODE5NzlEMDA4OEI0OTkgLyog
Q3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEN1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5oOyBwYXRoID0gQVBJL3Rlc3RzL0N1
c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMjBCQTkyQzE2QkIxQzE1MDBCM0FFQTIgLyogU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZVJhcmVEYXRhSW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjYyMSw4ICs2NjE1LDggQEAKIAkJ
CQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNDSlNWYWx1ZS5jcHAgKi8sCiAJCQkJMTRB
QkIzNkUwOTlDMDc2NDAwRTJBMjRGIC8qIEpTQ0pTVmFsdWUuaCAqLywKIAkJCQk4NjVBMzBGMDEz
NTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1ZUlubGluZXMuaCAqLywKLQkJCQlGRTJCMEI3MDFG
RDhDNDYzMDA3NURBNUYgLyogSlNDUG9pc29uLmggKi8sCiAJCQkJRkUyQjBCNjgxRkQwRDI5NzAw
NzVEQTVGIC8qIEpTQ1BvaXNvbi5jcHAgKi8sCisJCQkJRkUyQjBCNzAxRkQ4QzQ2MzAwNzVEQTVG
IC8qIEpTQ1BvaXNvbi5oICovLAogCQkJCTcyQUFGN0NCMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1
c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcCAqLywKIAkJCQk3MkFBRjdDQzFEMEQzMThCMDA1
RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oICovLAogCQkJCTBGMkI2NkJE
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3LmNwcCAqLywKQEAgLTY3MzcsOCArNjczMSw4
IEBACiAJCQkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmggKi8s
CiAJCQkJMEY5MTlEMDkxNTdFRTA5RDAwNEE0RTdEIC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3Bw
ICovLAogCQkJCTBGOTE5RDBBMTU3RUUwOUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0
LmggKi8sCi0JCQkJNzBFQ0E2MDAxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3Ry
eUtleS5jcHAgKi8sCi0JCQkJNzBFQ0E2MDExQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVS
ZWdpc3RyeUtleS5oICovLAorCQkJCTcwRUNBNjAwMUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJNzBFQ0E2MDExQUZEQkVBMjAwNDQ5NzM5
IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi8sCiAJCQkJMTRBQkI0NTQwOTlDMkEw
RjAwRTJBMjRGIC8qIEpTVHlwZS5oICovLAogCQkJCTBGMkI2NkNDMTdCNkI1QUIwMEE3QUUzRiAv
KiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3BwICovLAogCQkJCTBGMkI2NkNEMTdCNkI1QUIw
MEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuaCAqLywKQEAgLTY5MzksMTIgKzY5
MzMsOCBAQAogCQkJCTcwNUI0MUFBMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUu
aCAqLywKIAkJCQkwRjkxOUQyNzE1ODU2NzcwMDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwICov
LAogCQkJCTE0QTM5NkE2MENEMjkzMzEwMEI1QjRGRiAvKiBTeW1ib2xUYWJsZS5oICovLAotCQkJ
CTcwRUNBNjAyMUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5LmNwcCAqLywKLQkJ
CQk3MEVDQTYwMzFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeS5oICovLAotCQkJ
CUJEQjRCNUUwOTlDRDRDMUJCM0MxQ0YwNSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmNwcCAqLywK
LQkJCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeUtleS5oICov
LAotCQkJCThCNDdGMjM0MzY2QzRCNzJBQzg1MkE3RSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFi
bGUuY3BwICovLAotCQkJCTA4RkMyRjM3QUI3NjQ4M0E5OTY2Njg4RiAvKiBUZW1wbGF0ZVJlZ2lz
dHJ5S2V5VGFibGUuaCAqLywKKwkJCQlCREI0QjVFMDk5Q0Q0QzFCQjNDMUNGMDUgLyogVGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yLmNwcCAqLywKKwkJCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3Mzkg
LyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi8sCiAJCQkJMEZBMkMxNzkxN0Q3Q0Y4NDAw
OUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAgKi8sCiAJCQkJMEZBMkMxN0ExN0Q3Q0Y4NDAw
OUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5oICovLAogCQkJCUZFMkU2QTdBMUQ2RUE1RkUwMDYw
Rjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLywKQEAgLTgwODIsNyArODA3Miw2IEBACiAJCQkJMEYy
QUM1NzExRThFRTQ1NDAwMDFFRTNGIC8qIEFpckZvcm1UYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFQzg1NzcxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckZyZXF1ZW50ZWRCbG9jay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFQzg1NzkxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckdlbmVyYXRlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQkwRjc1QTA2MTIwMEQyNjE4MDAzOEUyQ0YgLyogTG9jYWxBbGxv
Y2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTdBMUJEQUNEQzcwMDgwRkY3NCAvKiBB
aXJHZW5lcmF0aW9uQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1N0MxQkRBQ0RD
NzAwODBGRjc0IC8qIEFpckhhbmRsZUNhbGxlZVNhdmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkVDODU3RTFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAq
LywKQEAgLTgxMjEsOCArODExMCw5IEBACiAJCQkJMEZFQzNDNTMxRjMzQTQxNjAwRjU5QjZDIC8q
IEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTc2MjBCMURC
OTU5RjkwMEI3QTJGRCAvKiBBbGxvY2F0aW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RENFMTFDMUZBRTYyMDkwMDZGMzkwMSAvKiBBbGxvY2F0aW9uRmFpbHVyZU1vZGUuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTBGOTYzMDNBMUQ0MTkyQzgwMDU2MDlEOSAvKiBDZWxsQXR0cmlidXRlcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NUEwNjMyMDBEMjYxRjAwMzhFMkNGIC8qIEFsbG9jYXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMENCNUUxRkNFNEUzNzAwNEI1MzIzIC8qIEFsbG9j
YXRvckZvck1vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNzVBMDYyMjAwRDI2MUQwMDM4RTJD
RiAvKiBBbGxvY2F0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjM3MzA5MTFDMENE
NzBDMDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNUVBNzBFOTE5RjVCMTAxMDA5OEY1RUMgLyogQWx0ZXJuYXRlRGlzcGF0Y2hh
YmxlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNDhEMTkxMTc3MjM2NUIwMEM2NUE1RiAv
KiBBUElDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTgyNDgsNyArODIzOCw2
IEBACiAJCQkJMEY2QjhBREQxQzRFRkFDMzAwOTY5MDUyIC8qIEIzU1NBQ2FsY3VsYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYzM0ZDRjgxQzEzNkUyNTAwMzIzRjY3IC8qIEIzU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzMTFCREFDREFDMDA4
MEZGNzQgLyogQjNTdGFja21hcFNwZWNpYWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGNzVBMDY0
MjAwRDI2MjgwMDM4RTJDRiAvKiBUaHJlYWRMb2NhbENhY2hlTGF5b3V0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjMzOERGMjFCRTkzQUQxMDAxM0M4OEYgLyogQjNTdGFja21hcFZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjk0OTU4ODFDNTdGNDc1MDA0MTNBNDggLyogQjNTdGFja1Nsb3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N1Y2Nl
c3NvckNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtODI3OCw2ICs4MjY3LDggQEAKIAkJ
CQk4NjE4MTY3NzFGQjc5MjQyMDBFQ0M0RUMgLyogQmlnSW50T2JqZWN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk4Njk3NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjY0QjI3MjFBNzg0QkFGMDA2RTRFNjYgLyogQmluYXJ5U3dpdGNo
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYgLyogQmxvY2tE
aXJlY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0RGMTQ2MUUyQkVGNkEwMDk1OTUxQiAv
KiBCbG9ja0RpcmVjdG9yeUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0VDMEUx
NkY1Q0QwMEIzNDQ2MCAvKiBCb29sZWFuT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjQ2
OTQzOTFGOTc0MzlFMDBDQ0IzRjkgLyogQm9vbGVhblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTk2QjczMTkxQkRBMDY4MDAwMzMxQjg0IC8qIEJvb2xlYW5Qcm90b3R5cGUubHV0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTgzMzAsNiArODMyMSw3IEBACiAJCQkJMEYzQjdFMkIxOUExMUI4
MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTgwQzE5NzFE
Nzc1Q0REMDA4NTEwQzAgLyogQ2F0Y2hTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1
NDIxN0VBOUY1OTAwQUJCMjE3IC8qIENDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY5NjMwM0ExRDQxOTJDODAwNTYwOUQ5IC8qIENlbGxBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjA3MEE0NzFENTQzQThCMDA2RTcyMzIgLyogQ2VsbENvbnRhaW5lci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYwNzBBNDgxRDU0M0E5MDAwNkU3MjMyIC8qIENlbGxDb250YWluZXJJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTFCRDAxRTFFNzIwMDJBMDAxMzRCQzkgLyog
Q2VsbExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtODM1Niw3ICs4MzQ4LDYgQEAKIAkJCQlBNTMy
NDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogQ29tYmluZWREb21haW5zLmpzb24gaW4gSGVhZGVycyAq
LywKIAkJCQlCQzE4QzNGMzBFMTZGNUNEMDBCMzQ0NjAgLyogQ29tbW9uSWRlbnRpZmllcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93
UGF0aHMuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGNjBGRTkwMUZGQzM3MDIwMDAzMzIwQSAvKiBF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUzQTMzMjE3
QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZEODJFMzkxNDFBQjE0RDAwMTc5Qzk0IC8qIENvbXBhY3RKSVRDb2RlTWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0U1QTNBODE3OTc0MzJEMDBFODkzQzAgLyogQ29tcGlsYXRp
b25SZXN1bHQuaCBpbiBIZWFkZXJzICovLApAQCAtODQxOCw3ICs4NDA5LDYgQEAKIAkJCQkwRjFF
M0E0NjE1MzRDQkFGMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyREQ4MTIxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c0VsaW1pbmF0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkREODE0MUFCM0Q4QkUwMEJCQjhFOCAv
KiBERkdBcmd1bWVudHNVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGNzVBMDYzMjAw
RDI2MUYwMDM4RTJDRiAvKiBBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDg1MzIy
MTg3NzUwNTYwMDgzQjY4NyAvKiBERkdBcml0aE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MDVDM0I0MTY4M0NGOTIwMEJBRjQ1QiAvKiBERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQ4NTE1RTQ4MTFCMDA2QTU5N0MgLyogREZHQXJyYXlN
b2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTg1MjcsNyArODUxNyw2IEBACiAJCQkJMEY3QzM5RkYx
QzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlD
RkUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR09TUkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRDgyRTU3MTQxREFGMTAwMDE3OUM5NCAvKiBERkdPU1JFbnRy
eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY0MkIzQzMyMDFFQzlGRjAwMzU3MDMxIC8qIFNlY3Vy
aXR5T3JpZ2luVG9rZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzI2MTdENTFGNTcwMENB
MkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0QmFzZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC04NjI5LDYgKzg2MTgsNyBAQAogCQkJCUE3NjZCNDRGMEVFOERDRDEwMDk1
MThDQSAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDczNDFD
QzFEQzAyRDcyMDBBQTI5QkEgLyogRXhlY3V0YWJsZUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0MTQyRTUzMUI3OTZFREQwMEY0QkY0QiAvKiBFeGVjdXRhYmxlSW5mby5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY2MEZFOTAxRkZDMzcwMjAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTZBMUQzMTUwMDBGMzUwMDI5OTJCMSAvKiBF
eGVjdXRpb25Db3VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjNBQzc1NDE4OEU1RUM4MDAz
MjAyOUYgLyogRXhpdGluZ0pJVFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjEwNTg2MTY3
NTQ4MTIwMEY4QUI2RSAvKiBFeGl0S2luZC5oIGluIEhlYWRlcnMgKi8sCkBAIC04NzAwLDcgKzg2
OTAsNiBAQAogCQkJCUZFQTBDNDAzMUNERDdEMUQwMDQ4MTk5MSAvKiBGdW5jdGlvbldoaXRlbGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQ0U2M0QxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0
aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRTJDQUUxNEU5ODVBQTAwMDU5
M0FEIC8qIEdDQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY3NUEwNjAyMDBEMjYw
QjAwMzhFMkNGIC8qIExvY2FsQWxsb2NhdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY3NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZEMEU1RUExRTQzRDM0RDAwMDZBQjA4IC8qIEdDQ29uZHVjdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkI0NzY3RTFEOTlBRUE5MDA4RUE2Q0IgLyogR0NEZWZlcnJh
bENvbnRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtODc4NSw3ICs4Nzc0LDYgQEAKIAkJCQkwRkI3
RjM5QTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNDM4NkE3OTFERDY5ODlDMDA4NjUyQzQgLyogSW5kaXJlY3RFdmFs
RXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY3NUEwNjIyMDBEMjYxRDAwMzhFMkNG
IC8qIEFsbG9jYXRvcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkY5MkI5MUZENzZG
RkYwMEFDMjhBOCAvKiBJbmZlcnJlZFN0cnVjdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZC
RjkyQkExRkQ3NzAwNDAwQUMyOEE4IC8qIEluZmVycmVkU3RydWN0dXJlV2F0Y2hwb2ludC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYwQTc1MjMxQjk0QkZBOTAwMTEwNjYwIC8qIEluZmVycmVkVHlw
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04ODY1LDYgKzg4NTMsNyBAQAogCQkJCUJDMThDNDE1MEUx
NkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQyOUQ5MzAwRUQyMkQ3MDAwQjg5NjE5IC8qIEpJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkUxMjIwMjcxQkU3RjU4QzAwMzlFNkYyIC8qIEpJVEFkZEdlbmVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY3NUEwNjYyMDEzRTRGMTAwMzhFMkNGIC8qIEpJVEFsbG9jYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkUzQTA2QjIxQzEwQ0I4OTAwMzkwRkREIC8qIEpJVEJpdEFuZEdlbmVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzQTA2QTgxQzEwQkM4MTAwMzkwRkREIC8qIEpJ
VEJpdEJpbmFyeU9wR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTNBMDZBNjFDMTBC
NzJEMDAzOTBGREQgLyogSklUQml0T3JHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtODk3
MSw3ICs4OTYwLDYgQEAKIAkJCQlFMzNGNTA3OTFCODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwODcxQjg0NDlF
RjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMzNGNTA4NTFCODQzN0EwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VE
ZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY3NUEwNUUyMDBEMjVGNjAwMzhFMkNGIC8q
IFRocmVhZExvY2FsQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDc1MUI4NDIxQzAw
MDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTUwM0ZBMUUxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzAxM0NBOEMxQjQ5MUE5NDAwQ0FFNjEzIC8qIEpT
Sm9iLmggaW4gSGVhZGVycyAqLywKQEAgLTkwMjMsNyArOTAxMSw3IEBACiAJCQkJQkMxOEM0Mjkw
RTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nUmVmQ0YuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
MjhENEE4MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1JlZlByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0
LmggaW4gSGVhZGVycyAqLywKLQkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1w
bGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0
NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUFENUMzNkVBMUY3NUFENkEwMDBCQ0FBRiAvKiBKU1RvV2FzbS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0MkEwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTM0ODZCQjcxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC05MDkwLDYgKzkwNzgsOCBAQAogCQkJCTUzRkEyQUUxMUNGMzdGM0YwMDIyNzExRCAv
KiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludFNsb3dQYXRocy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1
bmtzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjc1QTA2MTIwMEQyNjE4MDAzOEUyQ0YgLyogTG9j
YWxBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNzVBMDYwMjAwRDI2MEIwMDM4RTJD
RiAvKiBMb2NhbEFsbG9jYXRvcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjA4QUQ3
MURGMDkyNUQwMDdEMzI2OSAvKiBMb2NrRHVyaW5nTWFya2luZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0MzcwRTE2RjVDRDAwQjM0NDYwIC8qIExvb2t1cC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBI
ZWFkZXJzICovLApAQCAtOTExMCw4ICs5MTAwLDYgQEAKIAkJCQlBNzAwODczQTE3Q0JFODUzMDBD
M0U2NDMgLyogTWFwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NERFRjk0MTgy
RDk5MTQwMDUyMkMyMiAvKiBNYXBJdGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTcwMDg3M0UxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJQzJCOTE2QzIxNERBMDE0RTAwQ0JBQzg2IC8qIEJsb2NrRGlyZWN0b3J5LmggaW4g
SGVhZGVycyAqLywKLQkJCQkwRjdERjE0NjFFMkJFRjZBMDA5NTk1MUIgLyogQmxvY2tEaXJlY3Rv
cnlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJENkYwOTEzNTM5QTI4MDBCMDJFODYg
LyogTWFya2VkQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0M1RkI4MUQ4ODhBMEMwMDQ0
RjVFMiAvKiBNYXJrZWRCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTQ0OENC
MTNBMTc2RUMwMEY1QkExQSAvKiBNYXJrZWRCbG9ja1NldC5oIGluIEhlYWRlcnMgKi8sCkBAIC05
Mjg1LDYgKzkyNzMsNyBAQAogCQkJCUE1NENGMkZBMTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRP
YmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NTE2NUQ1MUJERjEzNUEwMDNCNzVDMSAvKiBT
Y3JpcHRQcm9maWxpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0Q0YyRjYxODRFQUIy
NDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQyQjNDMzIw
MUVDOUZGMDAzNTcwMzEgLyogU2VjdXJpdHlPcmlnaW5Ub2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTcyOTlEQTYxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzkwREQ2RTE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REEyMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTM2MCwxMSArOTM0OSwxMSBAQAogCQkJCTBG
MUZCMzhGMUUxNzNBNjcwMEE5QkU1MCAvKiBTeW5jaHJvbm91c1N0b3BUaGVXb3JsZE11dGF0b3JT
Y2hlZHVsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODRBMjY0MTFEMTY2MjIwMDU3NzZBQyAv
KiBTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQzc5OTc4MzFDREU5RkEwMDA0
RDRBMDkgLyogVGFnUmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzBFQ0E2MDgx
QUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTcwRUNBNjA5MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVh
ZGVycyAqLywKLQkJCQk5NUQ0MjYxQUY0Qzg0Q0UyQUNCQUM5ODEgLyogVGVtcGxhdGVSZWdpc3Ry
eUtleVRhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEVDQTYwOTFBRkRCRUEyMDA0NDk3Mzkg
LyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU0
RjE3RUUyNzQ5MDBBQkIyMTcgLyogVGVtcFJlZ2lzdGVyU2V0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkEyQzE3QzE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjc1QTA1RTIwMEQyNUY2MDAzOEUyQ0YgLyogVGhyZWFkTG9jYWxDYWNoZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NUEwNjQyMDBEMjYyODAwMzhFMkNGIC8qIFRocmVhZExv
Y2FsQ2FjaGVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzQyMjEyMUQ2QjgxQzMwMDMy
QkU4OCAvKiBUaHJvd1Njb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU3MkQ0RjE2ODc5RkRE
MDBFNTdGQkQgLyogVGh1bmtHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mzg2NTU2
MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuaCBpbiBIZWFkZXJzICovLApAQCAt
OTQ3MSw3ICs5NDYwLDYgQEAKIAkJCQkxNEU4NEZBMjE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha0lt
cGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QkU3RDMzMTcxMzVDRjQwMEQxODA3QSAvKiBXZWFr
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDQTNBRTQxN0RBNDFBRTAwNjUzOEFGIC8q
IFdlYWtNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY3NUEwNjYyMDEzRTRG
MTAwMzhFMkNGIC8qIEpJVEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNBMzJCQzcx
RkM4MzE0NzAwN0Q3RTc2IC8qIFdlYWtNYXBJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzkz
QUREODFGRTcwMkQwMDAyMkQ2ODEgLyogV2Vha01hcEltcGxJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0NBM0FFNjE3REE0MUFFMDA2NTM4QUYgLyogV2Vha01hcFByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggODE5ODgwMjdlNTU5
MjYwODE2OThjMTBiZTNlMWM0ZDJjM2Y5ZjQ3MC4uNjA5MzFjNTljYmU5NzUyNGIwMmRkMjY1NzUw
MzhmNDc0MjU0NzdmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtODM1LDcgKzgz
NSw3IEBAIHJ1bnRpbWUvSlNTdHJpbmdJdGVyYXRvci5jcHAKIHJ1bnRpbWUvSlNTdHJpbmdKb2lu
ZXIuY3BwCiBydW50aW1lL0pTU3RyaW5nSGVhcENlbGxUeXBlLmNwcAogcnVudGltZS9KU1N5bWJv
bFRhYmxlT2JqZWN0LmNwcAotcnVudGltZS9KU1RlbXBsYXRlUmVnaXN0cnlLZXkuY3BwCitydW50
aW1lL0pTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmNwcAogcnVudGltZS9KU1R5cGVkQXJyYXlD
b25zdHJ1Y3RvcnMuY3BwCiBydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwCiBydW50
aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAKQEAgLTkxNyw5ICs5MTcsNyBAQCBy
dW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAogcnVudGltZS9TeW1ib2xPYmplY3QuY3BwCiBy
dW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwCi1ydW50
aW1lL1RlbXBsYXRlUmVnaXN0cnkuY3BwCi1ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlLZXkuY3Bw
Ci1ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5jcHAKK3J1bnRpbWUvVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yLmNwcAogcnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3BwCiBydW50aW1l
L1Rocm93U2NvcGUuY3BwCiBydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hlLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA2ODNhOTY4ZmQwZTVi
NTFhMDZjMjcyNGNkZjZiMDJjNDgxZjAyNzhhLi4zZGI0MzU4NjIzODVmMTJhMjNhMDlmZjc1OWM4
ZTg1NWU5ZmY5MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcApAQCAtNjIsNyArNjIsNyBAQAogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQu
aCIKICNpbmNsdWRlICJKU1NldC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCi0jaW5jbHVkZSAi
SlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCisjaW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2Ny
aXB0b3IuaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJMTEludEVudHJ5cG9p
bnQuaCIKICNpbmNsdWRlICJMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQuaCIKQEAgLTk0Miw4ICs5NDIsOSBAQCB2b2lkIENvZGVCbG9jazo6c2V0Q29uc3RhbnRS
ZWdpc3RlcnMoY29uc3QgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YQogICAg
ICAgICAgICAgICAgICAgICBjbG9uZS0+c2V0UmFyZURhdGFDb2RlQmxvY2sodGhpcyk7CiAKICAg
ICAgICAgICAgICAgICBjb25zdGFudCA9IGNsb25lOwotICAgICAgICAgICAgfSBlbHNlIGlmIChp
c1RlbXBsYXRlUmVnaXN0cnlLZXkodm0sIGNvbnN0YW50KSkgewotICAgICAgICAgICAgICAgIGF1
dG8qIHRlbXBsYXRlT2JqZWN0ID0gZ2xvYmFsT2JqZWN0LT50ZW1wbGF0ZVJlZ2lzdHJ5KCkuZ2V0
VGVtcGxhdGVPYmplY3QoZXhlYywganNDYXN0PEpTVGVtcGxhdGVSZWdpc3RyeUtleSo+KGNvbnN0
YW50KSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
KHZtLCBjb25zdGFudCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGRlc2NyaXB0b3IgPSBqc0Nh
c3Q8SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqPihjb25zdGFudCk7CisgICAgICAgICAgICAg
ICAgYXV0byogdGVtcGxhdGVPYmplY3QgPSBkZXNjcmlwdG9yLT5jcmVhdGVUZW1wbGF0ZU9iamVj
dChleGVjKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOwogICAgICAgICAgICAgICAgIGNvbnN0YW50ID0gdGVtcGxhdGVPYmplY3Q7CiAgICAgICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGlyZWN0
RXZhbENvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGlyZWN0
RXZhbENvZGVDYWNoZS5jcHAKaW5kZXggNWJmZWYxMjAxNjE4MDczNzYyMTYzNjcwODA4MDU5MGY4
ZGM4YWIyMi4uMDc2ZDdiY2VlYTMxODNhZGNiY2VhM2RkMGM2MDI1OWZhNzgzZTIzMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EaXJlY3RFdmFsQ29kZUNh
Y2hlLmNwcApAQCAtMzIsNiArMzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdm9pZCBEaXJlY3RF
dmFsQ29kZUNhY2hlOjpzZXRTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBvd25lciwgY29u
c3QgU3RyaW5nJiBldmFsU291cmNlLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXgsIERpcmVj
dEV2YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0YWJsZSkKIHsKKyAgICBpZiAoZXZhbEV4ZWN1dGFi
bGUtPmhhc1RhZ2dlZFRlbXBsYXRlcygpKQorICAgICAgICByZXR1cm47CisKICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2xvY2spOwogICAgIG1fY2FjaGVNYXAuc2V0KENhY2hlS2V5KGV2YWxTb3Vy
Y2UsIGNhbGxTaXRlSW5kZXgpLCBXcml0ZUJhcnJpZXI8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KGV4
ZWMtPnZtKCksIG93bmVyLCBldmFsRXhlY3V0YWJsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggY2VmZTNj
ZTQxODhmMTg0OWU1YWQyNWI2ZTExZjFhNWY5MzY3ZGQ1ZC4uY2U4MDFiOTBiZmQwMjdjMzNmMDNl
NWZmMzc2NGNhMDVhOTkxNmI4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC03Miw2ICs3Miw3IEBAIFVubGlua2Vk
Q29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBDb2RlVHlwZSBjb2RlCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oaW5mby5kZXJpdmVkQ29udGV4dFR5cGUoKSkpCiAgICAgLCBtX2V2YWxDb250ZXh0
VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5ldmFsQ29udGV4dFR5cGUoKSkpCiAgICAg
LCBtX2hhc1RhaWxDYWxscyhmYWxzZSkKKyAgICAsIG1faGFzVGFnZ2VkVGVtcGxhdGVzKGZhbHNl
KQogICAgICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQogICAg
ICwgbV9kaWRPcHRpbWl6ZShNaXhlZFRyaVN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBjNzU5MWUxYjNmNTNhMjMx
NjgzZWI5YmFiNzk1ODQ4ZmI3M2VhMjU3Li5hYTJiNDcxYjE4MjBlZDJkNDYyMjZlMzZmNGUxZTEw
N2ZiYTU3YTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTM0LDYgKzEzNCw4IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q2xhc3NDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0NsYXNzQ29udGV4dDsgfQogICAgIGJv
b2wgaGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNUYWlsQ2FsbHM7IH0KICAgICB2
b2lkIHNldEhhc1RhaWxDYWxscygpIHsgbV9oYXNUYWlsQ2FsbHMgPSB0cnVlOyB9CisgICAgYm9v
bCBoYXNUYWdnZWRUZW1wbGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc1RhZ2dlZFRlbXBsYXRl
czsgfQorICAgIHZvaWQgc2V0SGFzVGFnZ2VkVGVtcGxhdGVzKCkgeyBtX2hhc1RhZ2dlZFRlbXBs
YXRlcyA9IHRydWU7IH0KIAogICAgIHZvaWQgYWRkRXhwcmVzc2lvbkluZm8odW5zaWduZWQgaW5z
dHJ1Y3Rpb25PZmZzZXQsIGludCBkaXZvdCwKICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0LCBpbnQg
ZW5kT2Zmc2V0LCB1bnNpZ25lZCBsaW5lLCB1bnNpZ25lZCBjb2x1bW4pOwpAQCAtNDUzLDYgKzQ1
NSw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9kZXJpdmVkQ29udGV4dFR5cGUgOiAyOwog
ICAgIHVuc2lnbmVkIG1fZXZhbENvbnRleHRUeXBlIDogMjsKICAgICB1bnNpZ25lZCBtX2hhc1Rh
aWxDYWxscyA6IDE7CisgICAgdW5zaWduZWQgbV9oYXNUYWdnZWRUZW1wbGF0ZXMgOiAxOwogICAg
IHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCmluZGV4IDkyYjU4NDI5YTBmNDc4NjA3YTVlNjAzNWQ3NTUyMDYxZWY5MWZmNDAu
LmMxZWY4MzczOTBmNDdkODM1NjQzOWFkNmM4MjM5MjEzNDA4ZDcyOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCkBAIC00Niw3ICs0Niw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5o
IgotI2luY2x1ZGUgIkpTVGVtcGxhdGVSZWdpc3RyeUtleS5oIgorI2luY2x1ZGUgIkpTVGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgpAQCAtMzEz
NSwxNCArMzEzNSwxNiBAQCBKU1N0cmluZyogQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFN0cmluZ0Nv
bnN0YW50KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAgICAgcmV0dXJuIHN0cmluZ0lu
TWFwOwogfQogCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6YWRkVGVtcGxhdGVSZWdp
c3RyeUtleUNvbnN0YW50KFJlZjxUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiYmIHRlbXBsYXRlUmVnaXN0
cnlLZXkpCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6YWRkVGVtcGxhdGVPYmplY3RD
b25zdGFudChSZWY8VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yPiYmIGRlc2NyaXB0b3IpCiB7Ci0g
ICAgcmV0dXJuIG1fdGVtcGxhdGVSZWdpc3RyeUtleU1hcC5lbnN1cmUodGVtcGxhdGVSZWdpc3Ry
eUtleS5jb3B5UmVmKCksIFsmXSB7Ci0gICAgICAgIGF1dG8qIHJlc3VsdCA9IEpTVGVtcGxhdGVS
ZWdpc3RyeUtleTo6Y3JlYXRlKCp2bSgpLCBXVEZNb3ZlKHRlbXBsYXRlUmVnaXN0cnlLZXkpKTsK
LSAgICAgICAgdW5zaWduZWQgaW5kZXggPSBhZGRDb25zdGFudEluZGV4KCk7Ci0gICAgICAgIG1f
Y29kZUJsb2NrLT5hZGRDb25zdGFudChyZXN1bHQpOwotICAgICAgICByZXR1cm4gJm1fY29uc3Rh
bnRQb29sUmVnaXN0ZXJzW2luZGV4XTsKKyAgICBtX2NvZGVCbG9jay0+c2V0SGFzVGFnZ2VkVGVt
cGxhdGVzKCk7CisgICAgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqIGRlc2NyaXB0b3JWYWx1
ZSA9IG1fdGVtcGxhdGVPYmplY3REZXNjcmlwdG9yTWFwLmVuc3VyZShkZXNjcmlwdG9yLmNvcHlS
ZWYoKSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpj
cmVhdGUoKnZtKCksIFdURk1vdmUoZGVzY3JpcHRvcikpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1
ZTsKKworICAgIGludCBpbmRleCA9IGFkZENvbnN0YW50SW5kZXgoKTsKKyAgICBtX2NvZGVCbG9j
ay0+YWRkQ29uc3RhbnQoZGVzY3JpcHRvclZhbHVlKTsKKyAgICByZXR1cm4gJm1fY29uc3RhbnRQ
b29sUmVnaXN0ZXJzW2luZGV4XTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXROZXdBcnJheShSZWdpc3RlcklEKiBkc3QsIEVsZW1lbnROb2RlKiBlbGVtZW50cywgdW5z
aWduZWQgbGVuZ3RoKQpAQCAtNDQwMSw4ICs0NDAzLDggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNz
aW8KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRUZW1wbGF0ZU9iamVj
dChSZWdpc3RlcklEKiBkc3QsIFRhZ2dlZFRlbXBsYXRlTm9kZSogdGFnZ2VkVGVtcGxhdGUpCiB7
Ci0gICAgVGVtcGxhdGVSZWdpc3RyeUtleTo6U3RyaW5nVmVjdG9yIHJhd1N0cmluZ3M7Ci0gICAg
VGVtcGxhdGVSZWdpc3RyeUtleTo6T3B0aW9uYWxTdHJpbmdWZWN0b3IgY29va2VkU3RyaW5nczsK
KyAgICBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OlN0cmluZ1ZlY3RvciByYXdTdHJpbmdzOwor
ICAgIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6T3B0aW9uYWxTdHJpbmdWZWN0b3IgY29va2Vk
U3RyaW5nczsKIAogICAgIFRlbXBsYXRlU3RyaW5nTGlzdE5vZGUqIHRlbXBsYXRlU3RyaW5nID0g
dGFnZ2VkVGVtcGxhdGUtPnRlbXBsYXRlTGl0ZXJhbCgpLT50ZW1wbGF0ZVN0cmluZ3MoKTsKICAg
ICBmb3IgKDsgdGVtcGxhdGVTdHJpbmc7IHRlbXBsYXRlU3RyaW5nID0gdGVtcGxhdGVTdHJpbmct
Pm5leHQoKSkgewpAQCAtNDQxNCw3ICs0NDE2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRHZXRUZW1wbGF0ZU9iamVjdChSZWdpc3RlcklEKiBkc3QsIFRhZ2dlZFRlbXAK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29va2VkU3RyaW5ncy5hcHBlbmQoc3RyaW5nLT5j
b29rZWQoKS0+aW1wbCgpKTsKICAgICB9Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbnN0YW50
ID0gYWRkVGVtcGxhdGVSZWdpc3RyeUtleUNvbnN0YW50KG1fdm0tPnRlbXBsYXRlUmVnaXN0cnlL
ZXlUYWJsZSgpLmNyZWF0ZUtleShXVEZNb3ZlKHJhd1N0cmluZ3MpLCBXVEZNb3ZlKGNvb2tlZFN0
cmluZ3MpKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbnN0YW50ID0gYWRkVGVtcGxhdGVP
YmplY3RDb25zdGFudChUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OmNyZWF0ZShXVEZNb3ZlKHJh
d1N0cmluZ3MpLCBXVEZNb3ZlKGNvb2tlZFN0cmluZ3MpKSk7CiAgICAgaWYgKCFkc3QpCiAgICAg
ICAgIHJldHVybiBjb25zdGFudC5nZXQoKTsKICAgICByZXR1cm4gZW1pdE1vdmUoZHN0LCBjb25z
dGFudC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMTRkYjcwNjg1ZjVmZTU5MzVkM2YwYWJhOWM2
YWYyNjUwMTBmNDdiZi4uODgyNGE4MTI4MDk0OGM3MjNiNDYwZTQ3MTljNmZlYzdiZDNlNGMwMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0
b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0
b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCiAj
aW5jbHVkZSAiTGFiZWwuaCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCiAjaW5jbHVkZSAiTm9k
ZXMuaCIKQEAgLTQzLDcgKzQ0LDYgQEAKICNpbmNsdWRlICJSZWdpc3RlcklELmgiCiAjaW5jbHVk
ZSAiU3RhdGljUHJvcGVydHlBbmFseXplci5oIgogI2luY2x1ZGUgIlN5bWJvbFRhYmxlLmgiCi0j
aW5jbHVkZSAiVGVtcGxhdGVSZWdpc3RyeUtleS5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRo
bWV0aWMuaD4KQEAgLTU1LDcgKzU1LDYgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
SWRlbnRpZmllcjsKLSAgICBjbGFzcyBKU1RlbXBsYXRlUmVnaXN0cnlLZXk7CiAKICAgICBlbnVt
IEV4cGVjdGVkRnVuY3Rpb24gewogICAgICAgICBOb0V4cGVjdGVkRnVuY3Rpb24sCkBAIC0xMDA4
LDcgKzEwMDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdXNpbmcgTnVtYmVyTWFwID0g
SGFzaE1hcDxkb3VibGUsIEpTVmFsdWU+OwogICAgICAgICB1c2luZyBJZGVudGlmaWVyU3RyaW5n
TWFwID0gSGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1wbCosIEpTU3RyaW5nKiwgSWRlbnRpZmllclJl
cEhhc2g+OwogICAgICAgICB1c2luZyBJZGVudGlmaWVyQmlnSW50TWFwID0gSGFzaE1hcDxCaWdJ
bnRNYXBFbnRyeSwgSlNCaWdJbnQqPjsKLSAgICAgICAgdXNpbmcgVGVtcGxhdGVSZWdpc3RyeUtl
eU1hcCA9IEhhc2hNYXA8UmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+LCBSZWdpc3RlcklEKj47Cisg
ICAgICAgIHVzaW5nIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvck1hcCA9IEhhc2hNYXA8UmVmPFRl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4sIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKj47CiAK
ICAgICAgICAgLy8gSGVscGVyIGZvciBlbWl0Q2FsbCgpIGFuZCBlbWl0Q29uc3RydWN0KCkuIFRo
aXMgd29ya3MgYmVjYXVzZSB0aGUgc2V0IG9mCiAgICAgICAgIC8vIGV4cGVjdGVkIGZ1bmN0aW9u
cyBoYXZlIGlkZW50aWNhbCBiZWhhdmlvciBmb3IgYm90aCBjYWxsIGFuZCBjb25zdHJ1Y3QKQEAg
LTEwOTMsNyArMTA5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAg
SlNTdHJpbmcqIGFkZFN0cmluZ0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAg
SlNWYWx1ZSBhZGRCaWdJbnRDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiwgdWludDhfdCByYWRp
eCk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGFkZFRlbXBsYXRlUmVnaXN0cnlLZXlDb25zdGFudChS
ZWY8VGVtcGxhdGVSZWdpc3RyeUtleT4mJik7CisgICAgICAgIFJlZ2lzdGVySUQqIGFkZFRlbXBs
YXRlT2JqZWN0Q29uc3RhbnQoUmVmPFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4mJik7CiAKICAg
ICAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93
PiYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KIApAQCAtMTE5Myw3
ICsxMTkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWVNYXAgbV9qc1ZhbHVl
TWFwOwogICAgICAgICBJZGVudGlmaWVyU3RyaW5nTWFwIG1fc3RyaW5nTWFwOwogICAgICAgICBJ
ZGVudGlmaWVyQmlnSW50TWFwIG1fYmlnSW50TWFwOwotICAgICAgICBUZW1wbGF0ZVJlZ2lzdHJ5
S2V5TWFwIG1fdGVtcGxhdGVSZWdpc3RyeUtleU1hcDsKKyAgICAgICAgVGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yTWFwIG1fdGVtcGxhdGVPYmplY3REZXNjcmlwdG9yTWFwOwogCiAgICAgICAgIFN0
YXRpY1Byb3BlcnR5QW5hbHl6ZXIgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyIHsgJm1faW5zdHJ1
Y3Rpb25zIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2
YWxFeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0
YWJsZS5oCmluZGV4IGVhMmZkZTAyNzAxOGI1NWE5YTY3M2Y4YzllZTkyMTEwZGUyM2U5NGQuLjVj
MTI3MDk1MDljMzI3NWExZjU2MDAzODVmOGFiMDVkNDdiMzAyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaApAQCAtNjEsNiArNjEsNyBAQCBw
dWJsaWM6CiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2
YWxDb2RlQmxvY2stPm51bVZhcmlhYmxlcygpOyB9CiAgICAgdW5zaWduZWQgbnVtRnVuY3Rpb25I
b2lzdGluZ0NhbmRpZGF0ZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVt
RnVuY3Rpb25Ib2lzdGluZ0NhbmRpZGF0ZXMoKTsgfQogICAgIHVuc2lnbmVkIG51bVRvcExldmVs
RnVuY3Rpb25EZWNscygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1iZXJP
ZkZ1bmN0aW9uRGVjbHMoKTsgfQorICAgIGJvb2wgaGFzVGFnZ2VkVGVtcGxhdGVzKCkgY29uc3Qg
eyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2stPmhhc1RhZ2dlZFRlbXBsYXRlcygpOyB9
CiAKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZTk3
YTliNjJkYTI4NjUxMzQzNDEyZDcyNDdkY2M5ZmU5NTEzM2E0OS4uYzI5OTIyNmVhNmU0YWY5OTli
YjkzNzQyMmRjYzI3MzUwNTFlMmE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTEzLDcgKzExMyw2IEBACiAjaW5jbHVkZSAi
SlNQcm9taXNlUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIKICNpbmNsdWRlICJKU1N0
cmluZ0l0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCiAjaW5j
bHVkZSAiSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5
UHJvdG90eXBlcy5oIgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5oIgpA
QCAtMzUwLDcgKzM0OSw2IEBAIEpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9iamVjdChWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBHbG9iYWxPYmplY3RNCiAgICAgLCBtX3NldEFk
ZFdhdGNocG9pbnQoSXNXYXRjaGVkKQogICAgICwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50KENs
ZWFyV2F0Y2hwb2ludCkKICAgICAsIG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50KElzV2F0Y2hl
ZCkKLSAgICAsIG1fdGVtcGxhdGVSZWdpc3RyeSh2bSkKICAgICAsIG1fcnVudGltZUZsYWdzKCkK
ICAgICAsIG1fZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUg
PyBnbG9iYWxPYmplY3RNZXRob2RUYWJsZSA6ICZzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlKQog
ICAgICwgbV90aHJlYWRMb2NhbENhY2hlKHRocmVhZExvY2FsQ2FjaGUgPyBXVEZNb3ZlKHRocmVh
ZExvY2FsQ2FjaGUpIDogdm0uZGVmYXVsdFRocmVhZExvY2FsQ2FjaGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBkNjk2MTI4MjdiYzRk
ZTI3ZDNjNDhlYTY2NGEwZGRlMmMzNjhmZDM1Li5jZWZlNmQ1NWE3MjlkY2Y5NDFiMjllZjlkNmIw
YTIzNzEwNGRkOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJTcGVjaWFsUG9pbnRlci5o
IgogI2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN5bWJvbFByb3RvdHlw
ZS5oIgotI2luY2x1ZGUgIlRlbXBsYXRlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJWTS5oIgogI2lu
Y2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4K
QEAgLTQ1OSw4ICs0NTgsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc01hcFByb3RvdHlwZVNldEZh
c3RBbmROb25PYnNlcnZhYmxlKCk7CiAgICAgYm9vbCBpc1NldFByb3RvdHlwZUFkZEZhc3RBbmRO
b25PYnNlcnZhYmxlKCk7CiAKLSAgICBUZW1wbGF0ZVJlZ2lzdHJ5IG1fdGVtcGxhdGVSZWdpc3Ry
eTsKLQogICAgIGJvb2wgbV9ldmFsRW5hYmxlZCB7IHRydWUgfTsKICAgICBib29sIG1fd2ViQXNz
ZW1ibHlFbmFibGVkIHsgdHJ1ZSB9OwogICAgIFN0cmluZyBtX2V2YWxEaXNhYmxlZEVycm9yTWVz
c2FnZTsKQEAgLTg4MCw4ICs4NzcsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3JhcmVE
YXRhLT5vcGFxdWVKU0NsYXNzRGF0YTsKICAgICB9CiAKLSAgICBUZW1wbGF0ZVJlZ2lzdHJ5JiB0
ZW1wbGF0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gbV90ZW1wbGF0ZVJlZ2lzdHJ5OyB9Ci0KICAgICBz
dGF0aWMgcHRyZGlmZl90IHdlYWtSYW5kb21PZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSlNHbG9iYWxPYmplY3QsIG1fd2Vha1JhbmRvbSk7IH0KICAgICBkb3VibGUgd2Vha1JhbmRv
bU51bWJlcigpIHsgcmV0dXJuIG1fd2Vha1JhbmRvbS5nZXQoKTsgfQogICAgIHVuc2lnbmVkIHdl
YWtSYW5kb21JbnRlZ2VyKCkgeyByZXR1cm4gbV93ZWFrUmFuZG9tLmdldFVpbnQzMigpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1RlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1RlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE0YTQwN2ZkOTMxOTEwODg1OTFlNzg5
Mjk3ZmEwYjA0MjJjNjk0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmNwcApAQCAtMCwwICsxLDkwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjb25zdCBDbGFzc0luZm8gSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OnNfaW5m
byA9IHsgIlRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpIH07CisK
KworSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
KFZNJiB2bSwgUmVmPFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4mJiBkZXNjcmlwdG9yKQorICAg
IDogQmFzZSh2bSwgdm0udGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3RydWN0dXJlLmdldCgpKQor
ICAgICwgbV9kZXNjcmlwdG9yKFdURk1vdmUoZGVzY3JpcHRvcikpCit7Cit9CisKK0pTVGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6Y3JlYXRlKFZN
JiB2bSwgUmVmPFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4mJiBkZXNjcmlwdG9yKQoreworICAg
IEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4odm0uaGVhcCkpIEpTVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yKHZtLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKKyAgICByZXN1bHQtPmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIEpTVGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNf
Y2FzdDxKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcio+KGNlbGwpLT5KU1RlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvcjo6fkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKCk7Cit9CisKK0pTQXJyYXkq
IEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpjcmVhdGVUZW1wbGF0ZU9iamVjdChFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgdW5zaWduZWQgY291bnQgPSBkZXNjcmlwdG9y
KCkuY29va2VkU3RyaW5ncygpLnNpemUoKTsKKyAgICBKU0FycmF5KiB0ZW1wbGF0ZU9iamVjdCA9
IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgY291bnQpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgIEpTQXJyYXkqIHJhd09iamVjdCA9IGNv
bnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgY291bnQpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgYXV0byBjb29rZWQgPSBkZXNjcmlw
dG9yKCkuY29va2VkU3RyaW5ncygpW2luZGV4XTsKKyAgICAgICAgaWYgKGNvb2tlZCkKKyAgICAg
ICAgICAgIHRlbXBsYXRlT2JqZWN0LT5wdXREaXJlY3RJbmRleChleGVjLCBpbmRleCwganNTdHJp
bmcoZXhlYywgY29va2VkLnZhbHVlKCkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSwgUHV0RGlyZWN0SW5kZXhMaWtlUHV0RGlyZWN0
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVtcGxhdGVPYmplY3QtPnB1dERpcmVjdElu
ZGV4KGV4ZWMsIGluZGV4LCBqc1VuZGVmaW5lZCgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSwgUHV0RGlyZWN0SW5kZXhMaWtlUHV0
RGlyZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisK
KyAgICAgICAgcmF3T2JqZWN0LT5wdXREaXJlY3RJbmRleChleGVjLCBpbmRleCwganNTdHJpbmco
ZXhlYywgZGVzY3JpcHRvcigpLnJhd1N0cmluZ3MoKVtpbmRleF0pLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSwgUHV0RGlyZWN0SW5k
ZXhMaWtlUHV0RGlyZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVs
bHB0cik7CisgICAgfQorCisgICAgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoZXhlYywgcmF3T2Jq
ZWN0KTsKKyAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworCisgICAgdGVtcGxhdGVPYmpl
Y3QtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cmF3LCByYXdPYmplY3QsIFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKKworICAgIG9iamVjdENvbnN0cnVjdG9yRnJl
ZXplKGV4ZWMsIHRlbXBsYXRlT2JqZWN0KTsKKyAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigp
OworCisgICAgcmV0dXJuIHRlbXBsYXRlT2JqZWN0OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1RlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5OWJkOGQxZGRjN2RhMDk5OTE1NTI4MzVj
MzU3OWFjZjBlYjEzMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNzEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIK
KyNpbmNsdWRlICJUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yIGZpbmFsIDogcHVibGljIEpTQ2Vs
bCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTQ2VsbDsKKworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgU3RydWN0
dXJlSXNJbW1vcnRhbDsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0g
dHJ1ZTsKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgSlNUZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3IqIGNyZWF0ZShWTSYsIFJlZjxUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I+JiYpOwor
CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIGNv
bnN0IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciYgZGVzY3JpcHRvcigpIGNvbnN0IHsgcmV0dXJu
IG1fZGVzY3JpcHRvci5nZXQoKTsgfQorCisgICAgSlNBcnJheSogY3JlYXRlVGVtcGxhdGVPYmpl
Y3QoRXhlY1N0YXRlKik7CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOworCitwcml2YXRlOgorICAgIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKFZNJiwg
UmVmPFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4mJik7CisKKyAgICBSZWY8VGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yPiBtX2Rlc2NyaXB0b3I7Cit9OworCitpbmxpbmUgYm9vbCBpc1RlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvcihWTSYgdm0sIEpTQ2VsbCogY2VsbCkKK3sKKyAgICByZXR1cm4gY2Vs
bC0+Y2xhc3NJbmZvKHZtKSA9PSBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6aW5mbygpOwor
fQorCitpbmxpbmUgYm9vbCBpc1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcihWTSYgdm0sIEpTVmFs
dWUgdikKK3sKKyAgICByZXR1cm4gdi5pc0NlbGwoKSAmJiBpc1RlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvcih2bSwgdi5hc0NlbGwoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVGVtcGxhdGVSZWdpc3RyeUtleS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0MzI1YmE0Y2U3N2Q3YzMxM2VkZTI5
YTVmODcxMGY5Yzc2M2Y5Y2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUZW1wbGF0ZVJlZ2lzdHJ5
S2V5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU1RlbXBsYXRlUmVnaXN0cnlLZXkuaCIK
LQotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJWTS5oIgotCi1uYW1lc3BhY2Ug
SlNDIHsKLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVtcGxhdGVSZWdpc3RyeUtleTo6c19pbmZvID0g
eyAiVGVtcGxhdGVSZWdpc3RyeUtleSIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5KSB9OwotCi0KLUpTVGVtcGxhdGVS
ZWdpc3RyeUtleTo6SlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5KFZNJiB2bSwgUmVmPFRlbXBsYXRlUmVn
aXN0cnlLZXk+JiYgdGVtcGxhdGVSZWdpc3RyeUtleSkKLSAgICA6IEJhc2Uodm0sIHZtLnRlbXBs
YXRlUmVnaXN0cnlLZXlTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgLCBtX3RlbXBsYXRlUmVnaXN0cnlL
ZXkoV1RGTW92ZSh0ZW1wbGF0ZVJlZ2lzdHJ5S2V5KSkKLXsKLX0KLQotSlNUZW1wbGF0ZVJlZ2lz
dHJ5S2V5KiBKU1RlbXBsYXRlUmVnaXN0cnlLZXk6OmNyZWF0ZShWTSYgdm0sIFJlZjxUZW1wbGF0
ZVJlZ2lzdHJ5S2V5PiYmIHRlbXBsYXRlUmVnaXN0cnlLZXkpCi17Ci0gICAgSlNUZW1wbGF0ZVJl
Z2lzdHJ5S2V5KiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1RlbXBsYXRl
UmVnaXN0cnlLZXk+KHZtLmhlYXApKSBKU1RlbXBsYXRlUmVnaXN0cnlLZXkodm0sIFdURk1vdmUo
dGVtcGxhdGVSZWdpc3RyeUtleSkpOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpkZXN0
cm95KEpTQ2VsbCogY2VsbCkKLXsKLSAgICBzdGF0aWNfY2FzdDxKU1RlbXBsYXRlUmVnaXN0cnlL
ZXkqPihjZWxsKS0+SlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5Ojp+SlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1RlbXBsYXRlUmVnaXN0cnlLZXkuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODdkNWJhZTI2Y2ZmMTU1YTQ4NzRkYTVlZmNhZGJkOTViYmVjNWQ4MS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1RlbXBsYXRlUmVnaXN0cnlLZXkuaAorKysgL2Rldi9udWxsCkBA
IC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNs
dWRlICJTdHJ1Y3R1cmUuaCIKLSNpbmNsdWRlICJUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCi0KLW5h
bWVzcGFjZSBKU0MgewotCi1jbGFzcyBKU1RlbXBsYXRlUmVnaXN0cnlLZXkgZmluYWwgOiBwdWJs
aWMgSlNDZWxsIHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNDZWxsOwotCi0gICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwotICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1
Y3Rpb24gPSB0cnVlOwotICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIHN0YXRpYyBKU1RlbXBsYXRl
UmVnaXN0cnlLZXkqIGNyZWF0ZShWTSYsIFJlZjxUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiYmKTsKLQot
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9Ci0KLSAgICBjb25z
dCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5JiB0ZW1wbGF0ZVJlZ2lzdHJ5S2V5KCkgY29uc3QgeyByZXR1
cm4gbV90ZW1wbGF0ZVJlZ2lzdHJ5S2V5LmdldCgpOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwotCi1wcml2YXRlOgotICAgIEpTVGVtcGxhdGVSZWdp
c3RyeUtleShWTSYsIFJlZjxUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiYmKTsKLQotICAgIFJlZjxUZW1w
bGF0ZVJlZ2lzdHJ5S2V5PiBtX3RlbXBsYXRlUmVnaXN0cnlLZXk7Ci19OwotCi1pbmxpbmUgYm9v
bCBpc1RlbXBsYXRlUmVnaXN0cnlLZXkoVk0mIHZtLCBKU0NlbGwqIGNlbGwpCi17Ci0gICAgcmV0
dXJuIGNlbGwtPmNsYXNzSW5mbyh2bSkgPT0gSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5OjppbmZvKCk7
Ci19Ci0KLWlubGluZSBib29sIGlzVGVtcGxhdGVSZWdpc3RyeUtleShWTSYgdm0sIEpTVmFsdWUg
dikKLXsKLSAgICByZXR1cm4gdi5pc0NlbGwoKSAmJiBpc1RlbXBsYXRlUmVnaXN0cnlLZXkodm0s
IHYuYXNDZWxsKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg1MzQzNjRiNTk0OWRkOTNlMDgzMGY0Y2IzMDc2ZDI2NTk2NGE5YzkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZU9i
amVjdERlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjp+VGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZU9iamVjdERlc2NyaXB0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM1OGVhM2NjMDBlZDE2MzIyZTAyZTMwODliMGFhZTcwMjA4Mjdj
NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3IuaApAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yVGFibGU7CisKK2NsYXNzIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciA6IHB1
YmxpYyBSZWZDb3VudGVkPFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4geworcHVibGljOgorICAg
IHR5cGVkZWYgVmVjdG9yPFN0cmluZywgND4gU3RyaW5nVmVjdG9yOworICAgIHR5cGVkZWYgVmVj
dG9yPHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiwgND4gT3B0aW9uYWxTdHJpbmdWZWN0b3I7CisKKyAg
ICBlbnVtIERlbGV0ZWRWYWx1ZVRhZyB7IERlbGV0ZWRWYWx1ZSB9OworICAgIFRlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvcihEZWxldGVkVmFsdWVUYWcpOworICAgIGVudW0gRW1wdHlWYWx1ZVRhZyB7
IEVtcHR5VmFsdWUgfTsKKyAgICBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IoRW1wdHlWYWx1ZVRh
Zyk7CisKKyAgICBib29sIGlzRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9yYXdTdHJp
bmdzLmlzRW1wdHkoKSAmJiBtX2hhc2ggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpOyB9CisKKyAgICBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmF3
U3RyaW5ncy5pc0VtcHR5KCkgJiYgIW1faGFzaDsgfQorCisgICAgdW5zaWduZWQgaGFzaCgpIGNv
bnN0IHsgcmV0dXJuIG1faGFzaDsgfQorCisgICAgY29uc3QgU3RyaW5nVmVjdG9yJiByYXdTdHJp
bmdzKCkgY29uc3QgeyByZXR1cm4gbV9yYXdTdHJpbmdzOyB9CisgICAgY29uc3QgT3B0aW9uYWxT
dHJpbmdWZWN0b3ImIGNvb2tlZFN0cmluZ3MoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tlZFN0cmlu
Z3M7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZW1wbGF0ZU9iamVjdERlc2NyaXB0
b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2hhc2ggPT0gb3RoZXIubV9oYXNoICYmIG1fcmF3
U3RyaW5ncyA9PSBvdGhlci5tX3Jhd1N0cmluZ3M7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9oYXNo
ICE9IG90aGVyLm1faGFzaCB8fCBtX3Jhd1N0cmluZ3MgIT0gb3RoZXIubV9yYXdTdHJpbmdzOyB9
CisKKyAgICBzdHJ1Y3QgSGFzaGVyIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yJiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0K
KyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
JiBhLCBjb25zdCBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3ImIGIpIHsgcmV0dXJuIGEgPT0gYjsg
fQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRl
ZCA9IGZhbHNlOworICAgIH07CisKKyAgICBzdGF0aWMgdW5zaWduZWQgY2FsY3VsYXRlSGFzaChj
b25zdCBTdHJpbmdWZWN0b3ImIHJhd1N0cmluZ3MpOworICAgIH5UZW1wbGF0ZU9iamVjdERlc2Ny
aXB0b3IoKTsKKworICAgIHN0YXRpYyBSZWY8VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yPiBjcmVh
dGUoU3RyaW5nVmVjdG9yJiYgcmF3U3RyaW5ncywgT3B0aW9uYWxTdHJpbmdWZWN0b3ImJiBjb29r
ZWRTdHJpbmdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yKFdURk1vdmUocmF3U3RyaW5ncyksIFdURk1vdmUoY29va2VkU3RyaW5n
cykpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKFN0
cmluZ1ZlY3RvciYmIHJhd1N0cmluZ3MsIE9wdGlvbmFsU3RyaW5nVmVjdG9yJiYgY29va2VkU3Ry
aW5ncyk7CisKKyAgICBTdHJpbmdWZWN0b3IgbV9yYXdTdHJpbmdzOworICAgIE9wdGlvbmFsU3Ry
aW5nVmVjdG9yIG1fY29va2VkU3RyaW5nczsKKyAgICB1bnNpZ25lZCBtX2hhc2ggeyAwIH07Cit9
OworCitpbmxpbmUgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpUZW1wbGF0ZU9iamVjdERlc2Ny
aXB0b3IoU3RyaW5nVmVjdG9yJiYgcmF3U3RyaW5ncywgT3B0aW9uYWxTdHJpbmdWZWN0b3ImJiBj
b29rZWRTdHJpbmdzKQorICAgIDogbV9yYXdTdHJpbmdzKFdURk1vdmUocmF3U3RyaW5ncykpCisg
ICAgLCBtX2Nvb2tlZFN0cmluZ3MoV1RGTW92ZShjb29rZWRTdHJpbmdzKSkKKyAgICAsIG1faGFz
aChjYWxjdWxhdGVIYXNoKHJhd1N0cmluZ3MpKQoreworfQorCitpbmxpbmUgVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yOjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IoRGVsZXRlZFZhbHVlVGFnKQor
ICAgIDogbV9oYXNoKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKK3sKK30K
KworaW5saW5lIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6VGVtcGxhdGVPYmplY3REZXNjcmlw
dG9yKEVtcHR5VmFsdWVUYWcpCisgICAgOiBtX2hhc2goMCkKK3sKK30KKworaW5saW5lIHVuc2ln
bmVkIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6Y2FsY3VsYXRlSGFzaChjb25zdCBTdHJpbmdW
ZWN0b3ImIHJhd1N0cmluZ3MpCit7CisgICAgU3RyaW5nSGFzaGVyIGhhc2hlcjsKKyAgICBmb3Ig
KGNvbnN0IFN0cmluZyYgc3RyaW5nIDogcmF3U3RyaW5ncykgeworICAgICAgICBpZiAoc3RyaW5n
LmlzOEJpdCgpKQorICAgICAgICAgICAgaGFzaGVyLmFkZENoYXJhY3RlcnMoc3RyaW5nLmNoYXJh
Y3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGhh
c2hlci5hZGRDaGFyYWN0ZXJzKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgp
KTsKKyAgICB9CisgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZh
dWx0SGFzaDsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpUZW1wbGF0ZU9i
amVjdERlc2NyaXB0b3I+IHsKKyAgICB0eXBlZGVmIEpTQzo6VGVtcGxhdGVPYmplY3REZXNjcmlw
dG9yOjpIYXNoZXIgSGFzaDsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlND
OjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I+IDogQ3VzdG9tSGFzaFRyYWl0czxKU0M6OlRlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvcj4geworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnkuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDk2YTlkMjZlMGZkMWMwM2VkZjBiNmU5MzY0Njk1
MTQyNWMwYmU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnkuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGVtcGxhdGVSZWdpc3RyeS5oIgotCi0jaW5jbHVkZSAi
QnVpbHRpbk5hbWVzLmgiCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCi0jaW5jbHVk
ZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJUZW1wbGF0ZVJlZ2lzdHJ5S2V5Lmgi
Ci0jaW5jbHVkZSAiV2Vha0dDTWFwSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotVGVt
cGxhdGVSZWdpc3RyeTo6VGVtcGxhdGVSZWdpc3RyeShWTSYgdm0pCi0gICAgOiBtX3RlbXBsYXRl
TWFwKHZtKQotewotfQotCi1KU0FycmF5KiBUZW1wbGF0ZVJlZ2lzdHJ5OjpnZXRUZW1wbGF0ZU9i
amVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVGVtcGxhdGVSZWdpc3RyeUtleSogdGVtcGxhdGVLZXlP
YmplY3QpCi17Ci0gICAgYXV0byYgdGVtcGxhdGVLZXkgPSB0ZW1wbGF0ZUtleU9iamVjdC0+dGVt
cGxhdGVSZWdpc3RyeUtleSgpOwotICAgIEpTQXJyYXkqIGNhY2hlZCA9IG1fdGVtcGxhdGVNYXAu
Z2V0KCZ0ZW1wbGF0ZUtleSk7Ci0gICAgaWYgKGNhY2hlZCkKLSAgICAgICAgcmV0dXJuIGNhY2hl
ZDsKLQotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIHVuc2lnbmVkIGNvdW50ID0gdGVtcGxhdGVLZXkuY29va2Vk
U3RyaW5ncygpLnNpemUoKTsKLSAgICBKU0FycmF5KiB0ZW1wbGF0ZU9iamVjdCA9IGNvbnN0cnVj
dEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgY291bnQpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOwotICAgIEpTQXJyYXkqIHJhd09iamVjdCA9IGNvbnN0cnVjdEVt
cHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgY291bnQpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIG51bGxwdHIpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwg
Y291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byBjb29rZWQgPSB0ZW1wbGF0ZUtleS5jb29r
ZWRTdHJpbmdzKClbaW5kZXhdOwotICAgICAgICBpZiAoY29va2VkKQotICAgICAgICAgICAgdGVt
cGxhdGVPYmplY3QtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4LCBqc1N0cmluZyhleGVjLCBj
b29rZWQudmFsdWUoKSksIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlLCBQdXREaXJlY3RJbmRleExpa2VQdXREaXJlY3QpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB0ZW1wbGF0ZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywg
aW5kZXgsIGpzVW5kZWZpbmVkKCksIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlLCBQdXREaXJlY3RJbmRleExpa2VQdXREaXJlY3QpOwot
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKLQotICAgICAgICBy
YXdPYmplY3QtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4LCBqc1N0cmluZyhleGVjLCB0ZW1w
bGF0ZUtleS5yYXdTdHJpbmdzKClbaW5kZXhdKSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUsIFB1dERpcmVjdEluZGV4TGlrZVB1dERp
cmVjdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwotICAg
IH0KLQotICAgIG9iamVjdENvbnN0cnVjdG9yRnJlZXplKGV4ZWMsIHJhd09iamVjdCk7Ci0gICAg
c2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLQotICAgIHRlbXBsYXRlT2JqZWN0LT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJhdywgcmF3T2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSk7Ci0KLSAgICAvLyBUZW1wbGF0ZSBKU0FycmF5IGhvbGQgdGhlIHJl
ZmVyZW5jZSB0byBKU1RlbXBsYXRlUmVnaXN0cnlLZXkgdG8gbWFrZSBUZW1wbGF0ZVJlZ2lzdHJ5
S2V5IHBvaW50ZXIgbGl2ZSB1bnRpbCB0aGlzIEpTQXJyYXkgaXMgY29sbGVjdGVkLgotICAgIC8v
IFRlbXBsYXRlUmVnaXN0cnlLZXkgcG9pbnRlciBpcyB1c2VkIGZvciBUZW1wbGF0ZVJlZ2lzdHJ5
J3Mga2V5LgotICAgIHRlbXBsYXRlT2JqZWN0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLnRlbXBsYXRlUmVnaXN0cnlLZXlQcml2YXRlTmFtZSgpLCB0ZW1w
bGF0ZUtleU9iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUpOwotCi0gICAg
b2JqZWN0Q29uc3RydWN0b3JGcmVlemUoZXhlYywgdGVtcGxhdGVPYmplY3QpOwotICAgIHNjb3Bl
LmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0KLSAgICBtX3RlbXBsYXRlTWFwLnNldCgmdGVtcGxhdGVL
ZXksIHRlbXBsYXRlT2JqZWN0KTsKLQotICAgIHJldHVybiB0ZW1wbGF0ZU9iamVjdDsKLX0KLQot
Ci19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBsYXRlUmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBsYXRlUmVnaXN0cnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTEzMDkw
NDJmMGQ1OGEzZDVkZDYzNTI3NjVhMjdjM2RjODE4OTIyNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wbGF0ZVJlZ2lzdHJ5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4u
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSlNBcnJheS5oIgotI2luY2x1
ZGUgIldlYWtHQ01hcC5oIgotI2luY2x1ZGUgPGxpbWl0cz4KLQotbmFtZXNwYWNlIEpTQyB7Ci0K
LWNsYXNzIEpTVGVtcGxhdGVSZWdpc3RyeUtleTsKLWNsYXNzIFRlbXBsYXRlUmVnaXN0cnlLZXk7
Ci0KLWNsYXNzIFRlbXBsYXRlUmVnaXN0cnkgewotcHVibGljOgotICAgIFRlbXBsYXRlUmVnaXN0
cnkoVk0mKTsKLQotICAgIEpTQXJyYXkqIGdldFRlbXBsYXRlT2JqZWN0KEV4ZWNTdGF0ZSosIEpT
VGVtcGxhdGVSZWdpc3RyeUtleSopOwotCi1wcml2YXRlOgotICAgIFdlYWtHQ01hcDxjb25zdCBU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5KiwgSlNBcnJheT4gbV90ZW1wbGF0ZU1hcDsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcGxhdGVSZWdpc3RyeUtleS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wbGF0ZVJlZ2lzdHJ5S2V5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTYy
OWYxYjM0NGNjNTVmOWUzNGNlOGRhZTg1MzFkNGRhODUxZDc4OS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wbGF0ZVJlZ2lzdHJ5S2V5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRlbXBs
YXRlUmVnaXN0cnlLZXkuaCIKLQotI2luY2x1ZGUgIlRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5o
IgotCi1uYW1lc3BhY2UgSlNDIHsKLQotVGVtcGxhdGVSZWdpc3RyeUtleTo6flRlbXBsYXRlUmVn
aXN0cnlLZXkoKQotewotICAgIGlmIChtX3RhYmxlKQotICAgICAgICBtX3RhYmxlLT51bnJlZ2lz
dGVyKCp0aGlzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDg4MDM2OWQwNWU0YjNhY2NkM2YxNjVlMGI4NWIyNGViY2Y4NDMyOTcu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeUtleS5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTI0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
bmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFt
ZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZTsKLQotY2xhc3Mg
VGVtcGxhdGVSZWdpc3RyeUtleSA6IHB1YmxpYyBSZWZDb3VudGVkPFRlbXBsYXRlUmVnaXN0cnlL
ZXk+IHsKLXB1YmxpYzoKLSAgICBmcmllbmQgY2xhc3MgVGVtcGxhdGVSZWdpc3RyeUtleVRhYmxl
OwotICAgIHR5cGVkZWYgVmVjdG9yPFN0cmluZywgND4gU3RyaW5nVmVjdG9yOwotICAgIHR5cGVk
ZWYgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiwgND4gT3B0aW9uYWxTdHJpbmdWZWN0b3I7
Ci0KLSAgICBlbnVtIERlbGV0ZWRWYWx1ZVRhZyB7IERlbGV0ZWRWYWx1ZSB9OwotICAgIFRlbXBs
YXRlUmVnaXN0cnlLZXkoRGVsZXRlZFZhbHVlVGFnKTsKLSAgICBlbnVtIEVtcHR5VmFsdWVUYWcg
eyBFbXB0eVZhbHVlIH07Ci0gICAgVGVtcGxhdGVSZWdpc3RyeUtleShFbXB0eVZhbHVlVGFnKTsK
LQotICAgIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Jhd1N0cmluZ3Mu
aXNFbXB0eSgpICYmIG1faGFzaCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCk7IH0KLQotICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9yYXdTdHJp
bmdzLmlzRW1wdHkoKSAmJiAhbV9oYXNoOyB9Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNoOyB9Ci0KLSAgICBjb25zdCBTdHJpbmdWZWN0b3ImIHJhd1N0cmluZ3Mo
KSBjb25zdCB7IHJldHVybiBtX3Jhd1N0cmluZ3M7IH0KLSAgICBjb25zdCBPcHRpb25hbFN0cmlu
Z1ZlY3RvciYgY29va2VkU3RyaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fY29va2VkU3RyaW5nczsg
fQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRlbXBsYXRlUmVnaXN0cnlLZXkmIG90aGVy
KSBjb25zdCB7IHJldHVybiBtX2hhc2ggPT0gb3RoZXIubV9oYXNoICYmIG1fcmF3U3RyaW5ncyA9
PSBvdGhlci5tX3Jhd1N0cmluZ3M7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVGVtcGxh
dGVSZWdpc3RyeUtleSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faGFzaCAhPSBvdGhlci5tX2hh
c2ggfHwgbV9yYXdTdHJpbmdzICE9IG90aGVyLm1fcmF3U3RyaW5nczsgfQotCi0gICAgc3RydWN0
IEhhc2hlciB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFRlbXBsYXRlUmVn
aXN0cnlLZXkmIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQotICAgICAgICBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5JiBhLCBjb25zdCBUZW1wbGF0ZVJlZ2lz
dHJ5S2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKLSAgICB9OwotCi0gICAgc3Rh
dGljIHVuc2lnbmVkIGNhbGN1bGF0ZUhhc2goY29uc3QgU3RyaW5nVmVjdG9yJiByYXdTdHJpbmdz
KTsKLSAgICB+VGVtcGxhdGVSZWdpc3RyeUtleSgpOwotCi1wcml2YXRlOgotICAgIHN0YXRpYyBS
ZWY8VGVtcGxhdGVSZWdpc3RyeUtleT4gY3JlYXRlKFN0cmluZ1ZlY3RvciYmIHJhd1N0cmluZ3Ms
IE9wdGlvbmFsU3RyaW5nVmVjdG9yJiYgY29va2VkU3RyaW5ncykKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFRlbXBsYXRlUmVnaXN0cnlLZXkoV1RGTW92ZShyYXdTdHJpbmdz
KSwgV1RGTW92ZShjb29rZWRTdHJpbmdzKSkpOwotICAgIH0KLQotICAgIFRlbXBsYXRlUmVnaXN0
cnlLZXkoU3RyaW5nVmVjdG9yJiYgcmF3U3RyaW5ncywgT3B0aW9uYWxTdHJpbmdWZWN0b3ImJiBj
b29rZWRTdHJpbmdzKTsKLQotICAgIFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZSogbV90YWJsZSB7
IG51bGxwdHIgfTsKLSAgICBTdHJpbmdWZWN0b3IgbV9yYXdTdHJpbmdzOwotICAgIE9wdGlvbmFs
U3RyaW5nVmVjdG9yIG1fY29va2VkU3RyaW5nczsKLSAgICB1bnNpZ25lZCBtX2hhc2ggeyAwIH07
Ci19OwotCi1pbmxpbmUgVGVtcGxhdGVSZWdpc3RyeUtleTo6VGVtcGxhdGVSZWdpc3RyeUtleShT
dHJpbmdWZWN0b3ImJiByYXdTdHJpbmdzLCBPcHRpb25hbFN0cmluZ1ZlY3RvciYmIGNvb2tlZFN0
cmluZ3MpCi0gICAgOiBtX3Jhd1N0cmluZ3MoV1RGTW92ZShyYXdTdHJpbmdzKSkKLSAgICAsIG1f
Y29va2VkU3RyaW5ncyhXVEZNb3ZlKGNvb2tlZFN0cmluZ3MpKQotICAgICwgbV9oYXNoKGNhbGN1
bGF0ZUhhc2gocmF3U3RyaW5ncykpCi17Ci19Ci0KLWlubGluZSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5
OjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5KERlbGV0ZWRWYWx1ZVRhZykKLSAgICA6IG1faGFzaChzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi17Ci19Ci0KLWlubGluZSBUZW1wbGF0
ZVJlZ2lzdHJ5S2V5OjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5KEVtcHR5VmFsdWVUYWcpCi0gICAgOiBt
X2hhc2goMCkKLXsKLX0KLQotaW5saW5lIHVuc2lnbmVkIFRlbXBsYXRlUmVnaXN0cnlLZXk6OmNh
bGN1bGF0ZUhhc2goY29uc3QgU3RyaW5nVmVjdG9yJiByYXdTdHJpbmdzKQotewotICAgIFN0cmlu
Z0hhc2hlciBoYXNoZXI7Ci0gICAgZm9yIChjb25zdCBTdHJpbmcmIHN0cmluZyA6IHJhd1N0cmlu
Z3MpIHsKLSAgICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgICAgIGhhc2hlci5h
ZGRDaGFyYWN0ZXJzKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyhzdHJpbmcuY2hhcmFj
dGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgfQotICAgIHJldHVybiBoYXNoZXIuaGFz
aCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNwYWNlIFdURiB7Ci10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IERl
ZmF1bHRIYXNoPEpTQzo6VGVtcGxhdGVSZWdpc3RyeUtleT4gewotICAgIHR5cGVkZWYgSlNDOjpU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpIYXNoZXIgSGFzaDsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0
IEhhc2hUcmFpdHM8SlNDOjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiA6IEN1c3RvbUhhc2hUcmFpdHM8
SlNDOjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiB7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlL
ZXlUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lz
dHJ5S2V5VGFibGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTNlMzU4NzE0
MmM4NmVkMDNjZDRlMjRhZjllYmU4MzliODEyNDA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBs
YXRlUmVnaXN0cnlLZXlUYWJsZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUZW1wbGF0
ZVJlZ2lzdHJ5S2V5VGFibGUuaCIKLQotI2luY2x1ZGUgIlRlbXBsYXRlUmVnaXN0cnlLZXkuaCIK
LQotbmFtZXNwYWNlIEpTQyB7Ci0KLXN0cnVjdCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VHJhbnNsYXRv
ciB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goVGVtcGxhdGVSZWdpc3RyeUtleSogZ2VuZXJh
dG9yKSB7IHJldHVybiBnZW5lcmF0b3ItPmhhc2goKTsgfQotICAgIHN0YXRpYyBpbmxpbmUgYm9v
bCBlcXVhbChUZW1wbGF0ZVJlZ2lzdHJ5S2V5KiBrZXksIFRlbXBsYXRlUmVnaXN0cnlLZXkqIGdl
bmVyYXRvcikgeyByZXR1cm4gKmtleSA9PSAqZ2VuZXJhdG9yOyB9Ci0gICAgc3RhdGljIHZvaWQg
dHJhbnNsYXRlKFRlbXBsYXRlUmVnaXN0cnlLZXkqJiBsb2NhdGlvbiwgVGVtcGxhdGVSZWdpc3Ry
eUtleSogZ2VuZXJhdG9yLCB1bnNpZ25lZCkgeyBsb2NhdGlvbiA9IGdlbmVyYXRvcjsgfQotfTsK
LQotVGVtcGxhdGVSZWdpc3RyeUtleVRhYmxlOjp+VGVtcGxhdGVSZWdpc3RyeUtleVRhYmxlKCkK
LXsKLSAgICBmb3IgKGF1dG8mIGtleSA6IG1fYXRvbWljVGFibGUpCi0gICAgICAgIGtleS0+bV90
YWJsZSA9IG51bGxwdHI7Ci19Ci0KLVJlZjxUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiBUZW1wbGF0ZVJl
Z2lzdHJ5S2V5VGFibGU6OmNyZWF0ZUtleShUZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpTdHJpbmdWZWN0
b3ImJiByYXdTdHJpbmdzLCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpPcHRpb25hbFN0cmluZ1ZlY3Rv
ciYmIGNvb2tlZFN0cmluZ3MpCi17Ci0gICAgYXV0byBrZXkgPSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5
OjpjcmVhdGUoV1RGTW92ZShyYXdTdHJpbmdzKSwgV1RGTW92ZShjb29rZWRTdHJpbmdzKSk7Ci0g
ICAgYXV0byBhZGRSZXN1bHQgPSBtX2F0b21pY1RhYmxlLmFkZDxUZW1wbGF0ZVJlZ2lzdHJ5S2V5
VHJhbnNsYXRvcj4oa2V5LnB0cigpKTsKLSAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0g
ICAgICAgICgqYWRkUmVzdWx0Lml0ZXJhdG9yKS0+bV90YWJsZSA9IHRoaXM7Ci0KLSAgICByZXR1
cm4gKiphZGRSZXN1bHQuaXRlcmF0b3I7Ci19Ci0KLXZvaWQgVGVtcGxhdGVSZWdpc3RyeUtleVRh
YmxlOjp1bnJlZ2lzdGVyKFRlbXBsYXRlUmVnaXN0cnlLZXkmIGtleSkKLXsKLSAgICBBU1NFUlQo
a2V5Lm1fdGFibGUgPT0gdGhpcyk7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fYXRvbWljVGFibGUu
ZmluZCgma2V5KTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGl0ZXJhdG9yICE9IG1fYXRvbWlj
VGFibGUuZW5kKCksICJUaGUgVGVtcGxhdGVSZWdpc3RyeUtleSBiZWluZyByZW1vdmVkIGlzIHJl
Z2lzdGVyZWQgaW4gdGhlIG90aGVyIFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS4iKTsKLSAgICBt
X2F0b21pY1RhYmxlLnJlbW92ZShpdGVyYXRvcik7Ci0KLX0KLQotfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lz
dHJ5S2V5VGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVn
aXN0cnlLZXlUYWJsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzI1MmE4Yzdi
NDZkMDFmMzg4YTUxMGVhOTEzMTA2YWFmODUxYWE0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBs
YXRlUmVnaXN0cnlLZXlUYWJsZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlRlbXBsYXRlUmVnaXN0
cnlLZXkuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1j
bGFzcyBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZSk7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgU3RyaW5nVmVj
dG9yID0gVmVjdG9yPFN0cmluZywgND47Ci0gICAgdXNpbmcgT3B0aW9uYWxTdHJpbmdWZWN0b3Ig
PSBWZWN0b3I8c3RkOjpvcHRpb25hbDxTdHJpbmc+LCA0PjsKLQotICAgIFRlbXBsYXRlUmVnaXN0
cnlLZXlUYWJsZSgpID0gZGVmYXVsdDsKLQotICAgIFJlZjxUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiBj
cmVhdGVLZXkoU3RyaW5nVmVjdG9yJiYgcmF3U3RyaW5ncywgT3B0aW9uYWxTdHJpbmdWZWN0b3Im
JiBjb29rZWRTdHJpbmdzKTsKLQotICAgIHZvaWQgdW5yZWdpc3RlcihUZW1wbGF0ZVJlZ2lzdHJ5
S2V5Jik7Ci0KLSAgICB+VGVtcGxhdGVSZWdpc3RyeUtleVRhYmxlKCk7Ci0KLXByaXZhdGU6Ci0g
ICAgc3RydWN0IEtleUhhc2ggewotICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5KiBrZXkpIHsgcmV0dXJuIGtleS0+aGFzaCgpOyB9Ci0gICAgICAg
IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFRlbXBsYXRlUmVnaXN0cnlLZXkqIGEsIGNvbnN0IFRl
bXBsYXRlUmVnaXN0cnlLZXkqIGIpIHsgcmV0dXJuICphID09ICpiOyB9Ci0gICAgICAgIHN0YXRp
YyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci0gICAg
fTsKLQotICAgIEhhc2hTZXQ8VGVtcGxhdGVSZWdpc3RyeUtleSosIEtleUhhc2g+IG1fYXRvbWlj
VGFibGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAppbmRleCAyYmY1YjZmOTkyNjU5MTAzYzI1ODA1ZWFhNzkxZDNiNTNkMzgzNzk3Li4z
MjdhN2M1MDAyOTdjMmY5ZmMzODZmMjVjMzA2MWVmMzRjODgwYWRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCkBAIC04Nyw3ICs4Nyw3IEBACiAjaW5jbHVkZSAiSlNTZXRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkpTU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSGVh
cENlbGxUeXBlLmgiCi0jaW5jbHVkZSAiSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCisjaW5jbHVk
ZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJKU1dlYWtNYXAuaCIK
ICNpbmNsdWRlICJKU1dlYWtTZXQuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5LmgiCkBAIC0z
NDQsNyArMzQ0LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQog
ICAgIHNjcmlwdEZldGNoUGFyYW1ldGVyc1N0cnVjdHVyZS5zZXQoKnRoaXMsIEpTU2NyaXB0RmV0
Y2hQYXJhbWV0ZXJzOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAg
c3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHNwYXJzZUFycmF5VmFsdWVNYXBT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBTcGFyc2VBcnJheVZhbHVlTWFwOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgdGVtcGxhdGVSZWdpc3RyeUtleVN0cnVjdHVyZS5z
ZXQoKnRoaXMsIEpTVGVtcGxhdGVSZWdpc3RyeUtleTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOworICAgIHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclN0cnVjdHVyZS5zZXQo
KnRoaXMsIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CiAgICAgYXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U3RydWN0
dXJlLnNldCgqdGhpcywgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMpKTsKICAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5z
ZXQoKnRoaXMsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJl
LnNldCgqdGhpcywgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAwYTMy
NTFhYzYwZDE5NjdkZGRkNDY3OTc4MjFlNmU2YTBlMGJlNjAxLi42M2I4ZDQwZjk0Yjc1MGRkNTk4
ZjUwMTM5MjIwNGU0NDM0YmYzNDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAg
LTUxLDcgKzUxLDYgQEAKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKICNpbmNsdWRlICJTdHJv
bmcuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDYWNoZS5oIgotI2luY2x1ZGUgIlRlbXBsYXRlUmVn
aXN0cnlLZXlUYWJsZS5oIgogI2luY2x1ZGUgIlZNRW50cnlSZWNvcmQuaCIKICNpbmNsdWRlICJW
TVRyYXBzLmgiCiAjaW5jbHVkZSAiVGhyZWFkTG9jYWxDYWNoZS5oIgpAQCAtNDM2LDcgKzQzNSw3
IEBAIHB1YmxpYzoKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzY3JpcHRGZXRjaFBhcmFtZXRlcnNT
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3BhcnNlQXJyYXlWYWx1ZU1hcFN0cnVjdHVyZTsKLSAg
ICBTdHJvbmc8U3RydWN0dXJlPiB0ZW1wbGF0ZVJlZ2lzdHJ5S2V5U3RydWN0dXJlOworICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclN0cnVjdHVyZTsKICAgICBT
dHJvbmc8U3RydWN0dXJlPiBhcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1
cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3RydWN0
dXJlOwpAQCAtNDc0LDcgKzQ3Myw2IEBAIHB1YmxpYzoKIAogICAgIEF0b21pY1N0cmluZ1RhYmxl
KiBtX2F0b21pY1N0cmluZ1RhYmxlOwogICAgIFdURjo6U3ltYm9sUmVnaXN0cnkgbV9zeW1ib2xS
ZWdpc3RyeTsKLSAgICBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUgbV90ZW1wbGF0ZVJlZ2lzdHJ5
S2V5dGFibGU7CiAgICAgQ29tbW9uSWRlbnRpZmllcnMqIHByb3BlcnR5TmFtZXM7CiAgICAgY29u
c3QgQXJnTGlzdCogZW1wdHlMaXN0OwogICAgIFNtYWxsU3RyaW5ncyBzbWFsbFN0cmluZ3M7CkBA
IC00ODgsOCArNDg2LDYgQEAgcHVibGljOgogICAgIEF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNT
dHJpbmdUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXRvbWljU3RyaW5nVGFibGU7IH0KICAgICBX
VEY6OlN5bWJvbFJlZ2lzdHJ5JiBzeW1ib2xSZWdpc3RyeSgpIHsgcmV0dXJuIG1fc3ltYm9sUmVn
aXN0cnk7IH0KIAotICAgIFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZSYgdGVtcGxhdGVSZWdpc3Ry
eUtleVRhYmxlKCkgeyByZXR1cm4gbV90ZW1wbGF0ZVJlZ2lzdHJ5S2V5dGFibGU7IH0KLQogICAg
IFdlYWtHQ01hcDxTeW1ib2xJbXBsKiwgU3ltYm9sLCBQdHJIYXNoPFN5bWJvbEltcGwqPj4gc3lt
Ym9sSW1wbFRvU3ltYm9sTWFwOwogCiAgICAgZW51bSBjbGFzcyBEZWxldGVQcm9wZXJ0eU1vZGUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3Bl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAKaW5k
ZXggYTA2MTY2YTgxYzkzNmYzYzU2MTQ4NTEzMWZjZTY0YjBmYTM2YjA4YS4uZDEwOTE1YWVmZmUy
Y2VmNDM3Yjk2ODY2NDlhNGMzZGU0ZmVjYTExYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
Vk1FbnRyeVNjb3BlLmgiCiAKICNpbmNsdWRlICJEaXNhbGxvd1ZNUmVlbnRyeS5oIgorI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNh
bXBsaW5nUHJvZmlsZXIuaCIKICNpbmNsdWRlICJUaHJlYWRMb2NhbENhY2hlSW5saW5lcy5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333671</attachid>
            <date>2018-02-12 21:39:01 -0800</date>
            <delta_ts>2018-02-13 09:01:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182717-20180213003858.patch</filename>
            <type>text/plain</type>
            <size>95746</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4Mzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NGE3MDg2YzliMTMwMmVjY2ZlZjEzYjMxNWM2NzhiZGM3OGI4YjMwLi5jODA4NzIzNTVmN2E5OTJi
ZDUzMzYzNDQ3ZDAxNjczMDE1MWJjOTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAxOC0wMi0xMiAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGNhY2hlIFRhZ2dlZFRlbXBsYXRlIGFycmF5cyBieSBjYWxsc2l0
ZSByYXRoZXIgdGhhbiBieSBjb250ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNzE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvZWNtYTI2Mi9wdWxsLzg5
MCBpbXBvc2VzIGEgY2hhbmdlIHRvIHRlbXBsYXRlCisgICAgICAgIGxpdGVyYWxzLCB0byBhbGxv
dyB0ZW1wbGF0ZSBjYWxsc2l0ZSBhcnJheXMgdG8gYmUgY29sbGVjdGVkIHdoZW4gdGhlCisgICAg
ICAgIGNvZGUgY29udGFpbmluZyB0aGUgdGFnZ2VkIHRlbXBsYXRlIGNhbGwgaXMgY29sbGVjdGVk
LiBUaGlzIHNwZWMgY2hhbmdlCisgICAgICAgIGhhcyByZWNlaXZlZCBjb25jZW5zdXMgYW5kIGJl
ZW4gcmF0aWZpZWQuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZWxpbWluYXRlcyB0aGUgZXRlcm5h
bCBtYXAgYXNzb2NpYXRpbmcgdGVtcGxhdGUgY29udGVudHMKKyAgICAgICAgd2l0aCBhcnJheXMu
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0
Q29uc3RhbnRSZWdpc3RlcnMpOgorICAgICAgICAqIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2Fj
aGUuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsQ29kZUNhY2hlOjpzZXRTbG93KToKKyAg
ICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVu
bGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFs
bG93RGlyZWN0RXZhbENhY2hlIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkVGVt
cGxhdGVPYmplY3RDb25zdGFudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0R2V0VGVtcGxhdGVPYmplY3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
YWRkVGVtcGxhdGVSZWdpc3RyeUtleUNvbnN0YW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6Cisg
ICAgICAgICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFdmFsRXhl
Y3V0YWJsZTo6YWxsb3dEaXJlY3RFdmFsQ2FjaGUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6SlNHbG9i
YWxPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnRlbXBsYXRlUmVnaXN0cnkpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeS5jcHAuCisgICAg
ICAgIChKU0M6OkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpKU1RlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvcik6CisgICAgICAgIChKU0M6OkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6ZGVzdHJveSk6
CisgICAgICAgIChKU0M6OkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpjcmVhdGVUZW1wbGF0
ZU9iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5o
OiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUZW1wbGF0ZVJl
Z2lzdHJ5S2V5LmguCisgICAgICAgIChKU0M6OmlzVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKToK
KyAgICAgICAgKiBydW50aW1lL0pTVGVtcGxhdGVSZWdpc3RyeUtleS5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogcnVudGltZS9UZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuY3BwOiBSZW5hbWVkIGZy
b20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeUtleS5jcHAu
CisgICAgICAgIChKU0M6OlRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6flRlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9UZW1wbGF0ZU9iamVjdERlc2NyaXB0b3Iu
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVn
aXN0cnlLZXkuaC4KKyAgICAgICAgKEpTQzo6VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpvcGVy
YXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpv
cGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
OjpIYXNoZXI6Omhhc2gpOgorICAgICAgICAoSlNDOjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6
Okhhc2hlcjo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6VGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6VGVtcGxhdGVPYmplY3REZXNjcmlw
dG9yOjpjYWxjdWxhdGVIYXNoKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBsYXRlUmVnaXN0cnku
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06
OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjp0ZW1wbGF0
ZVJlZ2lzdHJ5S2V5VGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNj
b3BlLmNwcDoKKwogMjAxOC0wMi0xMSAgR3VpbGxhdW1lIEVtb250ICA8Z3VpamVtb250QGlnYWxp
YS5jb20+CiAKICAgICAgICAgW01JUFNdIEpTQyBuZWVkcyB0byBiZSBidWlsdCB3aXRoIC1sYXRv
bWljCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNjYwY2U4ZDc4NThiNGI3
NjgyM2ZhZmVlZTNjNmNlYWYzMDZhMTI0Yi4uMDY3Yjg2YTk4Mzg0OGJlNzI4NTIzOGI5YzgyYjBj
MTVkYTI3MDQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODU4LDkg
Kzg1OCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9GT1JXQVJESU5HX0hFQURFUlMKICAgICBydW50
aW1lL1N5bWJvbC5oCiAgICAgcnVudGltZS9TeW1ib2xQcm90b3R5cGUuaAogICAgIHJ1bnRpbWUv
U3ltYm9sVGFibGUuaAotICAgIHJ1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeS5oCi0gICAgcnVudGlt
ZS9UZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgKLSAgICBydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlLZXlU
YWJsZS5oCisgICAgcnVudGltZS9UZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaAogICAgIHJ1bnRp
bWUvVGVzdFJ1bm5lclV0aWxzLmgKICAgICBydW50aW1lL1Rocm93U2NvcGUuaAogICAgIHJ1bnRp
bWUvVG9OYXRpdmVGcm9tVmFsdWUuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBh
OGUzNDQyNTI0MmIwNTZmNjliODkyYzYyMTdkZjljNWVlZjYxZTZjLi5jZmE3ZTA3YTdhZGU3YTU4
OGViZjVmODY2YzlmMmVhOWZmMmFkMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTA4OCw5ICsxMDg4LDggQEAKIAkJNzBERTlBMDkxQkU3RDY5RTAwNUQ4OUQ5IC8qIExMSW50
QXNzZW1ibHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwREU5QTA4MUJFN0Q2NzAwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggKi87IH07CiAJCTcw
RUMwRUMzMUFBMEQ3REEwMEI2QUFGQSAvKiBKU1N0cmluZ0l0ZXJhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDMEVCRDFBQTBEN0RBMDBCNkFB
RkEgLyogSlNTdHJpbmdJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTcwRUMwRUM3MUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVy
YXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzBFQzBFQzExQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzBF
Q0E2MDYxQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDExQUZEQkVBMjAw
NDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTcwRUNBNjA4MUFGREJFQTIwMDQ0OTczOSAvKiBU
ZW1wbGF0ZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MEVDQTYwMzFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTcwRUNBNjA5
MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwNDFBRkRCRUEyMDA0NDk3Mzkg
LyogVGVtcGxhdGVSZWdpc3RyeUtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzBFQ0E2MDExQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNj
cmlwdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNzBFQ0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDQx
QUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQUFGN0NFMUQwRDMxQjMw
MDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkFBRjdDQzFEMEQzMThCMDA1RTYwQkUg
LyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oICovOyB9OwogCQk3OTAwODEzOTFFOTVB
OEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzkwMDgxMzcxRTk1QThFQzAwNTJEN0NEIC8qIFdhc21Nb2R1bGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3OTA1
QkI2OTFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTA1QkI2NzFEMTIwNTBFMDAxOUZFNTcgLyog
SW5saW5lQWNjZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTEyMDksNyArMTIwOCw2IEBACiAJCTkzMkY1QkREMDgyMkExQzcwMDczNjk3NSAv
KiBqc2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi87IH07CiAJCTkzMkY1QkVBMDgy
MkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3MDA3MzY5
NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk5MzMwNDAwNDBFNkE3NDk0
MDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzMwM0ZFQTBFNkE3MkMwMDA3ODZFNkEgLyogU21hbGxTdHJpbmdz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTVE
NDI2MUFGNEM4NENFMkFDQkFDOTgxIC8qIFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGQzJGMzdBQjc2NDgz
QTk5NjY2ODhGIC8qIFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk2MDA5N0E2MEVCQUJCNTgwMDdBNzI5
NyAvKiBMYWJlbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NjAwOTdBNTBFQkFCQjU4MDA3QTcyOTcgLyogTGFiZWxTY29wZS5oICovOyB9Owog
CQk5Njg4Q0IxNTBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVmZmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Njg4Q0IxMzBFRDEyQjRFMDAx
RDY0OUYgLyogQXNzZW1ibGVyQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY4
OENCMTQwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xOTQyLDcgKzE5NDAsNiBAQAogCiAv
KiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAkJMDAwQkVBRjBERjYwNDQ4MUFG
NkFCNjhDIC8qIE1vZHVsZVNjb3BlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb2R1bGVTY29wZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDhG
QzJGMzdBQjc2NDgzQTk5NjY2ODhGIC8qIFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwMTIzMzAxOTQ0RUExQjAwODQzQTBDIC8q
IERGR1ZhbHVlU3RyZW5ndGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHVmFsdWVTdHJlbmd0aC5jcHA7IHBhdGggPSBkZmcvREZHVmFsdWVTdHJlbmd0aC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDEyMzMxMTk0NEVBMUIwMDg0M0EwQyAv
KiBERkdWYWx1ZVN0cmVuZ3RoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERG
R1ZhbHVlU3RyZW5ndGguaDsgcGF0aCA9IGRmZy9ERkdWYWx1ZVN0cmVuZ3RoLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDMzMkJGMThBREZBRTEwMDVGOTc5QSAvKiBFeGl0aW5n
SklUVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGl0aW5n
SklUVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNTkwLDExICszNTg3
LDkgQEAKIAkJNzBFQzBFQkQxQUEwRDdEQTAwQjZBQUZBIC8qIEpTU3RyaW5nSXRlcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJdGVyYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEVDMEVDMDFBQTBEN0RBMDBCNkFBRkEgLyogU3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MEVDMEVDMTFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzBFQ0E2MDAxQUZEQkVBMjAw
NDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1RlbXBsYXRlUmVnaXN0cnlLZXkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3MEVDQTYwMTFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZVJl
Z2lzdHJ5S2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVGVtcGxhdGVS
ZWdpc3RyeUtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEVDQTYwMjFBRkRC
RUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUZW1wbGF0ZVJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNzBFQ0E2MDMxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcGxhdGVSZWdpc3RyeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyog
VGVtcGxhdGVSZWdpc3RyeUtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwRUNB
NjAwMUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwRUNBNjAxMUFGREJFQTIw
MDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFB
RjdDQjFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUdldHRlclNldHRl
ckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0MxRDBE
MzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3N0IyNUNCMkMzMDk0QTkyQTM4RTFEQjMgLyog
SlNNb2R1bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1
bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3ODQsNyArMzc3OSw2
IEBACiAJCTg4NTIxNTFBOUMzODQyMzg5QjMyMTVCNyAvKiBTY3JpcHRGZXRjaGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEZldGNoZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOEIxNzM1RUYxRTkyRTUyOTAwMzY5MDU0IC8qIEFzeW5jRnJvbVN5
bmNJdGVyYXRvclByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
cGF0aCA9IEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOEIzQkY1RTMxRTNEMzY1QTAwNzZBODdBIC8qIEFzeW5jR2VuZXJhdG9y
UHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY0dl
bmVyYXRvclByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOEI0
N0YyMzQzNjZDNEI3MkFDODUyQTdFIC8qIFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFi
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QjYwMTZGMzFGM0UzQ0MwMDBG
OURFNkEgLyogQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThCNjAxNkY0MUYzRTNDQzAwMEY5REU2
QSAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCThCOUY2RDU1MUQ1OTEyRkEwMDFDNzM5RiAvKiBJdGVyYXRp
b25LaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEl0ZXJhdGlvbktpbmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0MTcsNyArNDQxMSw3IEBACiAJCUJD
RjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFyZ0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNG
RDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKdW1wVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEp1bXBUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlCREI0QjVFMDk5Q0Q0QzFCQjNDMUNGMDUgLyogVGVtcGxhdGVSZWdpc3RyeUtl
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wbGF0ZVJlZ2lz
dHJ5S2V5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkRCNEI1RTA5OUNENEMx
QkIzQzFDRjA1IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjAzMjgxRTE5ODE5NzlEMDA4OEI0OTkgLyogQ3Vz
dG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFt
ZSA9IEN1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5jOyBwYXRoID0gQVBJL3Rlc3RzL0N1c3Rv
bUdsb2JhbE9iamVjdENsYXNzVGVzdC5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MjAzMjgxRjE5ODE5NzlEMDA4OEI0OTkgLyogQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUdsb2JhbE9iamVjdENsYXNz
VGVzdC5oOyBwYXRoID0gQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjBCQTkyQzE2QkIxQzE1MDBCM0FFQTIgLyog
U3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNjYyMSw4ICs2NjE1LDggQEAKIAkJCQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcgLyog
SlNDSlNWYWx1ZS5jcHAgKi8sCiAJCQkJMTRBQkIzNkUwOTlDMDc2NDAwRTJBMjRGIC8qIEpTQ0pT
VmFsdWUuaCAqLywKIAkJCQk4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1ZUlu
bGluZXMuaCAqLywKLQkJCQlGRTJCMEI3MDFGRDhDNDYzMDA3NURBNUYgLyogSlNDUG9pc29uLmgg
Ki8sCiAJCQkJRkUyQjBCNjgxRkQwRDI5NzAwNzVEQTVGIC8qIEpTQ1BvaXNvbi5jcHAgKi8sCisJ
CQkJRkUyQjBCNzAxRkQ4QzQ2MzAwNzVEQTVGIC8qIEpTQ1BvaXNvbi5oICovLAogCQkJCTcyQUFG
N0NCMUQwRDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcCAq
LywKIAkJCQk3MkFBRjdDQzFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJG
dW5jdGlvbi5oICovLAogCQkJCTBGMkI2NkJEMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3
LmNwcCAqLywKQEAgLTY3MzcsOCArNjczMSw4IEBACiAJCQkJMjYwMEI1QTUxNTJCQUFBNzAwOTFF
RTVGIC8qIEpTU3RyaW5nSm9pbmVyLmggKi8sCiAJCQkJMEY5MTlEMDkxNTdFRTA5RDAwNEE0RTdE
IC8qIEpTU3ltYm9sVGFibGVPYmplY3QuY3BwICovLAogCQkJCTBGOTE5RDBBMTU3RUUwOUQwMDRB
NEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggKi8sCi0JCQkJNzBFQ0E2MDAxQUZEQkVBMjAw
NDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5jcHAgKi8sCi0JCQkJNzBFQ0E2MDExQUZE
QkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5oICovLAorCQkJCTcwRUNBNjAw
MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAgKi8sCisJ
CQkJNzBFQ0E2MDExQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
LmggKi8sCiAJCQkJMTRBQkI0NTQwOTlDMkEwRjAwRTJBMjRGIC8qIEpTVHlwZS5oICovLAogCQkJ
CTBGMkI2NkNDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3Bw
ICovLAogCQkJCTBGMkI2NkNEMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlDb25zdHJ1
Y3RvcnMuaCAqLywKQEAgLTY5MzksMTIgKzY5MzMsOCBAQAogCQkJCTcwNUI0MUFBMUE2RTUwMUUw
MDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuaCAqLywKIAkJCQkwRjkxOUQyNzE1ODU2NzcwMDA0
QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwICovLAogCQkJCTE0QTM5NkE2MENEMjkzMzEwMEI1QjRG
RiAvKiBTeW1ib2xUYWJsZS5oICovLAotCQkJCTcwRUNBNjAyMUFGREJFQTIwMDQ0OTczOSAvKiBU
ZW1wbGF0ZVJlZ2lzdHJ5LmNwcCAqLywKLQkJCQk3MEVDQTYwMzFBRkRCRUEyMDA0NDk3MzkgLyog
VGVtcGxhdGVSZWdpc3RyeS5oICovLAotCQkJCUJEQjRCNUUwOTlDRDRDMUJCM0MxQ0YwNSAvKiBU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5LmNwcCAqLywKLQkJCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3Mzkg
LyogVGVtcGxhdGVSZWdpc3RyeUtleS5oICovLAotCQkJCThCNDdGMjM0MzY2QzRCNzJBQzg1MkE3
RSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUuY3BwICovLAotCQkJCTA4RkMyRjM3QUI3NjQ4
M0E5OTY2Njg4RiAvKiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUuaCAqLywKKwkJCQlCREI0QjVF
MDk5Q0Q0QzFCQjNDMUNGMDUgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmNwcCAqLywKKwkJ
CQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgg
Ki8sCiAJCQkJMEZBMkMxNzkxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAg
Ki8sCiAJCQkJMEZBMkMxN0ExN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5oICov
LAogCQkJCUZFMkU2QTdBMUQ2RUE1RkUwMDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLywKQEAg
LTgwODIsNyArODA3Miw2IEBACiAJCQkJMEYyQUM1NzExRThFRTQ1NDAwMDFFRTNGIC8qIEFpckZv
cm1UYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1NzcxQkRBQ0RDNzAwODBGRjc0IC8q
IEFpckZyZXF1ZW50ZWRCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1NzkxQkRBQ0RD
NzAwODBGRjc0IC8qIEFpckdlbmVyYXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjc1QTA2MTIw
MEQyNjE4MDAzOEUyQ0YgLyogTG9jYWxBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RUM4NTdBMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJHZW5lcmF0aW9uQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFQzg1N0MxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckhhbmRsZUNhbGxlZVNh
dmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU3RTFCREFDREM3MDA4MEZGNzQgLyogQWly
SW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTgxMjEsOCArODExMCw5IEBACiAJCQkJ
MEZFQzNDNTMxRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQTc2MjBCMURCOTU5RjkwMEI3QTJGRCAvKiBBbGxvY2F0aW5nU2Nv
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRENFMTFDMUZBRTYyMDkwMDZGMzkwMSAvKiBBbGxv
Y2F0aW9uRmFpbHVyZU1vZGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGOTYzMDNBMUQ0MTkyQzgw
MDU2MDlEOSAvKiBDZWxsQXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NUEwNjMy
MDBEMjYxRjAwMzhFMkNGIC8qIEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMENC
NUUxRkNFNEUzNzAwNEI1MzIzIC8qIEFsbG9jYXRvckZvck1vZGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNzVBMDYyMjAwRDI2MUQwMDM4RTJDRiAvKiBBbGxvY2F0b3JJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjM3MzA5MTFDMENENzBDMDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0
Y2hSZWdpc3RlclVzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzBFOTE5RjVCMTAxMDA5
OEY1RUMgLyogQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJBNDhEMTkxMTc3MjM2NUIwMEM2NUE1RiAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLywKQEAgLTgyNDgsNyArODIzOCw2IEBACiAJCQkJMEY2QjhBREQxQzRFRkFDMzAwOTY5
MDUyIC8qIEIzU1NBQ2FsY3VsYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzM0ZDRjgxQzEz
NkUyNTAwMzIzRjY3IC8qIEIzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVDODUzMTFCREFDREFDMDA4MEZGNzQgLyogQjNTdGFja21hcFNwZWNpYWwuaCBp
biBIZWFkZXJzICovLAotCQkJCTBGNzVBMDY0MjAwRDI2MjgwMDM4RTJDRiAvKiBUaHJlYWRMb2Nh
bENhY2hlTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOERGMjFCRTkzQUQxMDAxM0M4
OEYgLyogQjNTdGFja21hcFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk0OTU4ODFDNTdG
NDc1MDA0MTNBNDggLyogQjNTdGFja1Nsb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM2
MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N1Y2Nlc3NvckNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICov
LApAQCAtODI3OCw2ICs4MjY3LDggQEAKIAkJCQk4NjE4MTY3NzFGQjc5MjQyMDBFQ0M0RUMgLyog
QmlnSW50T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4Njk3NkU1RTFGQTNFOEI2MDBFN0M0
RTEgLyogQmlnSW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY0QjI3MjFBNzg0
QkFGMDA2RTRFNjYgLyogQmluYXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMkI5MTZD
MjE0REEwMTRFMDBDQkFDODYgLyogQmxvY2tEaXJlY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGN0RGMTQ2MUUyQkVGNkEwMDk1OTUxQiAvKiBCbG9ja0RpcmVjdG9yeUlubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDM0VDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBCb29sZWFuT2JqZWN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjQ2OTQzOTFGOTc0MzlFMDBDQ0IzRjkgLyogQm9vbGVh
blByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk2QjczMTkxQkRBMDY4MDAwMzMxQjg0
IC8qIEJvb2xlYW5Qcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKQEAgLTgzMzAsNiArODMy
MSw3IEBACiAJCQkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRTgwQzE5NzFENzc1Q0REMDA4NTEwQzAgLyogQ2F0Y2hTY29wZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDIxN0VBOUY1OTAwQUJCMjE3IC8qIENDYWxsSGVs
cGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5NjMwM0ExRDQxOTJDODAwNTYwOUQ5IC8qIENl
bGxBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA3MEE0NzFENTQzQThCMDA2RTcy
MzIgLyogQ2VsbENvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwNzBBNDgxRDU0M0E5
MDAwNkU3MjMyIC8qIENlbGxDb250YWluZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RTFCRDAxRTFFNzIwMDJBMDAxMzRCQzkgLyogQ2VsbExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAt
ODM1Niw3ICs4MzQ4LDYgQEAKIAkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogQ29tYmlu
ZWREb21haW5zLmpzb24gaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNGMzBFMTZGNUNEMDBCMzQ0
NjAgLyogQ29tbW9uSWRlbnRpZmllcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRC
N0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAotCQkJCTBG
NjBGRTkwMUZGQzM3MDIwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2NTUzQTMzMjE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1Bh
dGhzRXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEODJFMzkxNDFBQjE0RDAwMTc5
Qzk0IC8qIENvbXBhY3RKSVRDb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0U1QTNBODE3
OTc0MzJEMDBFODkzQzAgLyogQ29tcGlsYXRpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLApAQCAt
ODQxOCw3ICs4NDA5LDYgQEAKIAkJCQkwRjFFM0E0NjE1MzRDQkFGMDAwRjk0NTYgLyogREZHQXJn
dW1lbnRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyREQ4MTIxQUIzRDhCRTAwQkJC
OEU4IC8qIERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMkREODE0MUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNVdGlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTBGNzVBMDYzMjAwRDI2MUYwMDM4RTJDRiAvKiBBbGxvY2F0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNDg1MzIyMTg3NzUwNTYwMDgzQjY4NyAvKiBERkdBcml0aE1v
ZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMDVDM0I0MTY4M0NGOTIwMEJBRjQ1QiAvKiBERkdB
cnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQ4NTE1
RTQ4MTFCMDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTg1Mjcs
NyArODUxNyw2IEBACiAJCQkJMEY3QzM5RkYxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlDRkUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR09TUkF2
YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTU3MTQx
REFGMTAwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY0MkIz
QzMyMDFFQzlGRjAwMzU3MDMxIC8qIFNlY3VyaXR5T3JpZ2luVG9rZW4uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRp
b25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8q
IERGR09TUkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3
RiAvKiBERkdPU1JFeGl0QmFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NjI5LDYgKzg2MTgsNyBA
QAogCQkJCUE3NjZCNDRGMEVFOERDRDEwMDk1MThDQSAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNDczNDFDQzFEQzAyRDcyMDBBQTI5QkEgLyogRXhlY3V0YWJs
ZUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTQyRTUzMUI3OTZFREQwMEY0QkY0QiAvKiBF
eGVjdXRhYmxlSW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY2MEZFOTAxRkZDMzcwMjAwMDMz
MjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NTZBMUQzMTUwMDBGMzUwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjNBQzc1NDE4OEU1RUM4MDAzMjAyOUYgLyogRXhpdGluZ0pJVFR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjEwNTg2MTY3NTQ4MTIwMEY4QUI2RSAvKiBFeGl0S2luZC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC04NzAwLDcgKzg2OTAsNiBAQAogCQkJCUZFQTBDNDAzMUNERDdEMUQw
MDQ4MTk5MSAvKiBGdW5jdGlvbldoaXRlbGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQ0U2
M0QxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNCRTJDQUUxNEU5ODVBQTAwMDU5M0FEIC8qIEdDQXNzZXJ0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMEY3NUEwNjAyMDBEMjYwQjAwMzhFMkNGIC8qIExvY2FsQWxsb2NhdG9ySW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdD
QXdhcmVKSVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEMEU1RUExRTQzRDM0
RDAwMDZBQjA4IC8qIEdDQ29uZHVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI0NzY3RTFE
OTlBRUE5MDA4RUE2Q0IgLyogR0NEZWZlcnJhbENvbnRleHQuaCBpbiBIZWFkZXJzICovLApAQCAt
ODc4NSw3ICs4Nzc0LDYgQEAKIAkJCQkwRkI3RjM5QTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhp
bmdIZWFkZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBG
MTY3QjIgLyogSW5kZXhpbmdUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDM4NkE3OTFERDY5
ODlDMDA4NjUyQzQgLyogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMEY3NUEwNjIyMDBEMjYxRDAwMzhFMkNGIC8qIEFsbG9jYXRvcklubGluZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQkY5MkI5MUZENzZGRkYwMEFDMjhBOCAvKiBJbmZlcnJlZFN0cnVjdHVy
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCRjkyQkExRkQ3NzAwNDAwQUMyOEE4IC8qIEluZmVy
cmVkU3RydWN0dXJlV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQTc1MjMxQjk0
QkZBOTAwMTEwNjYwIC8qIEluZmVycmVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04ODY1LDYg
Kzg4NTMsNyBAQAogCQkJCUJDMThDNDE1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29y
ZVByZWZpeC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyOUQ5MzAwRUQyMkQ3MDAwQjg5NjE5IC8q
IEpJVC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxMjIwMjcxQkU3RjU4QzAwMzlFNkYyIC8qIEpJ
VEFkZEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NUEwNjYyMDEzRTRGMTAwMzhF
MkNGIC8qIEpJVEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzQTA2QjIxQzEwQ0I4
OTAwMzkwRkREIC8qIEpJVEJpdEFuZEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUz
QTA2QTgxQzEwQkM4MTAwMzkwRkREIC8qIEpJVEJpdEJpbmFyeU9wR2VuZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRTNBMDZBNjFDMTBCNzJEMDAzOTBGREQgLyogSklUQml0T3JHZW5lcmF0
b3IuaCBpbiBIZWFkZXJzICovLApAQCAtODk3MSw3ICs4OTYwLDYgQEAKIAkJCQlFMzNGNTA3OTFC
ODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTMzRjUwODcxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNl
Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA4NTFCODQzN0EwMDA0
MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MEY3NUEwNUUyMDBEMjVGNjAwMzhFMkNGIC8qIFRocmVhZExvY2FsQ2FjaGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUzM0Y1MDc1MUI4NDIxQzAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZVBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMUUxODhFMEZCMDAwMTEwRjE0IC8q
IEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzAx
M0NBOEMxQjQ5MUE5NDAwQ0FFNjEzIC8qIEpTSm9iLmggaW4gSGVhZGVycyAqLywKQEAgLTkwMjMs
NyArOTAxMSw3IEBACiAJCQkJQkMxOEM0MjkwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nUmVm
Q0YuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjhENEE4MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0
cmluZ1JlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRB
NEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk3MEVDQTYw
NjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAq
LywKKwkJCQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2Ny
aXB0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUFENUMzNkVBMUY3NUFENkEwMDBCQ0FBRiAvKiBK
U1RvV2FzbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MkEwRTE2RjVDRDAwQjM0NDYwIC8q
IEpTVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM0ODZCQjcxQzE3OTVDMzAwRjZGM0FGIC8q
IEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC05MDkwLDYgKzkwNzgsOCBAQAogCQkJ
CTUzRkEyQUUxMUNGMzdGM0YwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MEE1MTRCQTdGOEQw
MEJGRTI3MiAvKiBMTEludFNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzOUQx
NEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjc1
QTA2MTIwMEQyNjE4MDAzOEUyQ0YgLyogTG9jYWxBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNzVBMDYwMjAwRDI2MEIwMDM4RTJDRiAvKiBMb2NhbEFsbG9jYXRvcklubGluZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMjA4QUQ3MURGMDkyNUQwMDdEMzI2OSAvKiBMb2NrRHVyaW5n
TWFya2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MzcwRTE2RjVDRDAwQjM0NDYwIC8q
IExvb2t1cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8q
IExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTExMCw4ICs5MTAwLDYg
QEAKIAkJCQlBNzAwODczQTE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3NERFRjk0MTgyRDk5MTQwMDUyMkMyMiAvKiBNYXBJdGVyYXRvclBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwMDg3M0UxN0NCRThEMzAwQzNFNjQzIC8q
IE1hcFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzJCOTE2QzIxNERBMDE0RTAwQ0JB
Qzg2IC8qIEJsb2NrRGlyZWN0b3J5LmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjdERjE0NjFFMkJF
RjZBMDA5NTk1MUIgLyogQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDJENkYwOTEzNTM5QTI4MDBCMDJFODYgLyogTWFya2VkQmxvY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGN0M1RkI4MUQ4ODhBMEMwMDQ0RjVFMiAvKiBNYXJrZWRCbG9ja0lubGluZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0MTQ0OENCMTNBMTc2RUMwMEY1QkExQSAvKiBNYXJrZWRCbG9j
a1NldC5oIGluIEhlYWRlcnMgKi8sCkBAIC05Mjg1LDYgKzkyNzMsNyBAQAogCQkJCUE1NENGMkZB
MTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
NTE2NUQ1MUJERjEzNUEwMDNCNzVDMSAvKiBTY3JpcHRQcm9maWxpbmdTY29wZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTU0Q0YyRjYxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjQyQjNDMzIwMUVDOUZGMDAzNTcwMzEgLyogU2VjdXJpdHlPcmln
aW5Ub2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyOTlEQTYxN0QxMjg1ODAwNUY1RkY5IC8q
IFNldENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzkwREQ2RTE4MkY0OTk3MDA1
ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5
REEyMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAt
OTM2MCwxMSArOTM0OSwxMSBAQAogCQkJCTBGMUZCMzhGMUUxNzNBNjcwMEE5QkU1MCAvKiBTeW5j
aHJvbm91c1N0b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3ODRBMjY0MTFEMTY2MjIwMDU3NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlEQzc5OTc4MzFDREU5RkEwMDA0RDRBMDkgLyogVGFnUmVnaXN0ZXJzTW9kZS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNzBFQ0E2MDgxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovLAotCQkJCTcwRUNBNjA5MUFGREJFQTIwMDQ0OTczOSAvKiBU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKLQkJCQk5NUQ0MjYxQUY0Qzg0Q0Uy
QUNCQUM5ODEgLyogVGVtcGxhdGVSZWdpc3RyeUtleVRhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3MEVDQTYwOTFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU0RjE3RUUyNzQ5MDBBQkIyMTcgLyogVGVtcFJlZ2lz
dGVyU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkEyQzE3QzE3RDdDRjg0MDA5RDAxNUYgLyog
VGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjc1QTA1RTIwMEQyNUY2MDAz
OEUyQ0YgLyogVGhyZWFkTG9jYWxDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NUEwNjQy
MDBEMjYyODAwMzhFMkNGIC8qIFRocmVhZExvY2FsQ2FjaGVMYXlvdXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZFMzQyMjEyMUQ2QjgxQzMwMDMyQkU4OCAvKiBUaHJvd1Njb3BlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjU3MkQ0RjE2ODc5RkREMDBFNTdGQkQgLyogVGh1bmtHZW5lcmF0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3Mzg2NTU2MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVy
YXRvcnMuaCBpbiBIZWFkZXJzICovLApAQCAtOTQ3MSw3ICs5NDYwLDYgQEAKIAkJCQkxNEU4NEZB
MjE0RUUxQUNDMDBENkQ1RDQgLyogV2Vha0ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QkU3
RDMzMTcxMzVDRjQwMEQxODA3QSAvKiBXZWFrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTdDQTNBRTQxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMEY3NUEwNjYyMDEzRTRGMTAwMzhFMkNGIC8qIEpJVEFsbG9jYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTNBMzJCQzcxRkM4MzE0NzAwN0Q3RTc2IC8qIFdlYWtNYXBJbXBs
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzkzQUREODFGRTcwMkQwMDAyMkQ2ODEgLyogV2Vha01h
cEltcGxJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0NBM0FFNjE3REE0MUFFMDA2NTM4
QUYgLyogV2Vha01hcFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKaW5kZXggODE5ODgwMjdlNTU5MjYwODE2OThjMTBiZTNlMWM0ZDJjM2Y5ZjQ3MC4u
NjA5MzFjNTljYmU5NzUyNGIwMmRkMjY1NzUwMzhmNDc0MjU0NzdmNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dApAQCAtODM1LDcgKzgzNSw3IEBAIHJ1bnRpbWUvSlNTdHJpbmdJdGVyYXRv
ci5jcHAKIHJ1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwCiBydW50aW1lL0pTU3RyaW5nSGVhcENl
bGxUeXBlLmNwcAogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAotcnVudGltZS9KU1Rl
bXBsYXRlUmVnaXN0cnlLZXkuY3BwCitydW50aW1lL0pTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
LmNwcAogcnVudGltZS9KU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3BwCiBydW50aW1lL0pTVHlw
ZWRBcnJheVByb3RvdHlwZXMuY3BwCiBydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTkxNyw5ICs5MTcsNyBAQCBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAog
cnVudGltZS9TeW1ib2xPYmplY3QuY3BwCiBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKIHJ1
bnRpbWUvU3ltYm9sVGFibGUuY3BwCi1ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnkuY3BwCi1ydW50
aW1lL1RlbXBsYXRlUmVnaXN0cnlLZXkuY3BwCi1ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlLZXlU
YWJsZS5jcHAKK3J1bnRpbWUvVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmNwcAogcnVudGltZS9U
ZXN0UnVubmVyVXRpbHMuY3BwCiBydW50aW1lL1Rocm93U2NvcGUuY3BwCiBydW50aW1lL1R5cGVM
b2NhdGlvbkNhY2hlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAppbmRleCA2ODNhOTY4ZmQwZTViNTFhMDZjMjcyNGNkZjZiMDJjNDgxZjAyNzhhLi4z
ZGI0MzU4NjIzODVmMTJhMjNhMDlmZjc1OWM4ZTg1NWU5ZmY5MWU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNjIsNyArNjIsNyBAQAogI2lu
Y2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU1NldC5oIgogI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCi0jaW5jbHVkZSAiSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCisjaW5j
bHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJMTEludERhdGEu
aCIKICNpbmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIKICNpbmNsdWRlICJMTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCIKQEAgLTk0Miw4ICs5NDIsOSBAQCB2
b2lkIENvZGVCbG9jazo6c2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uc3QgVmVjdG9yPFdyaXRlQmFy
cmllcjxVbmtub3duPj4mIGNvbnN0YQogICAgICAgICAgICAgICAgICAgICBjbG9uZS0+c2V0UmFy
ZURhdGFDb2RlQmxvY2sodGhpcyk7CiAKICAgICAgICAgICAgICAgICBjb25zdGFudCA9IGNsb25l
OwotICAgICAgICAgICAgfSBlbHNlIGlmIChpc1RlbXBsYXRlUmVnaXN0cnlLZXkodm0sIGNvbnN0
YW50KSkgewotICAgICAgICAgICAgICAgIGF1dG8qIHRlbXBsYXRlT2JqZWN0ID0gZ2xvYmFsT2Jq
ZWN0LT50ZW1wbGF0ZVJlZ2lzdHJ5KCkuZ2V0VGVtcGxhdGVPYmplY3QoZXhlYywganNDYXN0PEpT
VGVtcGxhdGVSZWdpc3RyeUtleSo+KGNvbnN0YW50KSk7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KGlzVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKHZtLCBjb25zdGFudCkpIHsKKyAgICAgICAgICAg
ICAgICBhdXRvIGRlc2NyaXB0b3IgPSBqc0Nhc3Q8SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3Iq
Pihjb25zdGFudCk7CisgICAgICAgICAgICAgICAgYXV0byogdGVtcGxhdGVPYmplY3QgPSBkZXNj
cmlwdG9yLT5jcmVhdGVUZW1wbGF0ZU9iamVjdChleGVjKTsKICAgICAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgICAgICAgICAgICAgIGNvbnN0YW50
ID0gdGVtcGxhdGVPYmplY3Q7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAKaW5kZXggNWJmZWYx
MjAxNjE4MDczNzYyMTYzNjcwODA4MDU5MGY4ZGM4YWIyMi4uMTQ0ODY0MDA3MzhkMmZkOTNjNDI5
ZGJjNDNkZjlhOWRjNjIxZjYyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcApAQCAtMzIsNiArMzIsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogdm9pZCBEaXJlY3RFdmFsQ29kZUNhY2hlOjpzZXRTbG93KEV4ZWNTdGF0
ZSogZXhlYywgSlNDZWxsKiBvd25lciwgY29uc3QgU3RyaW5nJiBldmFsU291cmNlLCBDYWxsU2l0
ZUluZGV4IGNhbGxTaXRlSW5kZXgsIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0YWJs
ZSkKIHsKKyAgICBpZiAoIWV2YWxFeGVjdXRhYmxlLT5hbGxvd0RpcmVjdEV2YWxDYWNoZSgpKQor
ICAgICAgICByZXR1cm47CisKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgIG1f
Y2FjaGVNYXAuc2V0KENhY2hlS2V5KGV2YWxTb3VyY2UsIGNhbGxTaXRlSW5kZXgpLCBXcml0ZUJh
cnJpZXI8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KGV4ZWMtPnZtKCksIG93bmVyLCBldmFsRXhlY3V0
YWJsZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5jcHAKaW5kZXggY2VmZTNjZTQxODhmMTg0OWU1YWQyNWI2ZTExZjFhNWY5
MzY3ZGQ1ZC4uY2U4MDFiOTBiZmQwMjdjMzNmMDNlNWZmMzc2NGNhMDVhOTkxNmI4MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
Y3BwCkBAIC03Miw2ICs3Miw3IEBAIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9j
ayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlVHlwZSBjb2RlCiAgICAgLCBtX2Rl
cml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5kZXJpdmVkQ29udGV4
dFR5cGUoKSkpCiAgICAgLCBtX2V2YWxDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
aW5mby5ldmFsQ29udGV4dFR5cGUoKSkpCiAgICAgLCBtX2hhc1RhaWxDYWxscyhmYWxzZSkKKyAg
ICAsIG1faGFzVGFnZ2VkVGVtcGxhdGVzKGZhbHNlKQogICAgICwgbV9saW5lQ291bnQoMCkKICAg
ICAsIG1fZW5kQ29sdW1uKFVJTlRfTUFYKQogICAgICwgbV9kaWRPcHRpbWl6ZShNaXhlZFRyaVN0
YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAppbmRleCBjNzU5MWUxYjNmNTNhMjMxNjgzZWI5YmFiNzk1ODQ4ZmI3M2VhMjU3Li43
YmY5YjFmZjY3ZmFjYjQzNzUwNWVlNzIyMTc3NzZjNmYwM2FlZTkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMTM0LDYg
KzEzNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ2xhc3NDb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9pc0NsYXNzQ29udGV4dDsgfQogICAgIGJvb2wgaGFzVGFpbENhbGxzKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNUYWlsQ2FsbHM7IH0KICAgICB2b2lkIHNldEhhc1RhaWxDYWxscygpIHsgbV9o
YXNUYWlsQ2FsbHMgPSB0cnVlOyB9CisgICAgYm9vbCBhbGxvd0RpcmVjdEV2YWxDYWNoZSgpIGNv
bnN0IHsgcmV0dXJuICEobV9mZWF0dXJlcyAmIE5vRXZhbENhY2hlRmVhdHVyZSk7IH0KIAogICAg
IHZvaWQgYWRkRXhwcmVzc2lvbkluZm8odW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXQsIGludCBk
aXZvdCwKICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBs
aW5lLCB1bnNpZ25lZCBjb2x1bW4pOwpAQCAtNDUzLDYgKzQ1NCw3IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9kZXJpdmVkQ29udGV4dFR5cGUgOiAyOwogICAgIHVuc2lnbmVkIG1fZXZhbENv
bnRleHRUeXBlIDogMjsKICAgICB1bnNpZ25lZCBtX2hhc1RhaWxDYWxscyA6IDE7CisgICAgdW5z
aWduZWQgbV9oYXNUYWdnZWRUZW1wbGF0ZXMgOiAxOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50
OwogICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDkyYjU4
NDI5YTBmNDc4NjA3YTVlNjAzNWQ3NTUyMDYxZWY5MWZmNDAuLmI0ZDRkYzMwODEwNjJhM2FkY2Zk
NTVmODRiOTlkNzdjNGE4YTllZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00Niw3ICs0Niw3IEBA
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgotI2luY2x1ZGUgIkpTVGVtcGxh
dGVSZWdpc3RyeUtleS5oIgorI2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgi
CiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIK
ICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgpAQCAtMzEzNSwxNCArMzEzNSwxNSBAQCBKU1N0
cmluZyogQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFN0cmluZ0NvbnN0YW50KGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIpCiAgICAgcmV0dXJuIHN0cmluZ0luTWFwOwogfQogCi1SZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6YWRkVGVtcGxhdGVSZWdpc3RyeUtleUNvbnN0YW50KFJlZjxU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5PiYmIHRlbXBsYXRlUmVnaXN0cnlLZXkpCitSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6YWRkVGVtcGxhdGVPYmplY3RDb25zdGFudChSZWY8VGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yPiYmIGRlc2NyaXB0b3IpCiB7Ci0gICAgcmV0dXJuIG1fdGVtcGxhdGVS
ZWdpc3RyeUtleU1hcC5lbnN1cmUodGVtcGxhdGVSZWdpc3RyeUtleS5jb3B5UmVmKCksIFsmXSB7
Ci0gICAgICAgIGF1dG8qIHJlc3VsdCA9IEpTVGVtcGxhdGVSZWdpc3RyeUtleTo6Y3JlYXRlKCp2
bSgpLCBXVEZNb3ZlKHRlbXBsYXRlUmVnaXN0cnlLZXkpKTsKLSAgICAgICAgdW5zaWduZWQgaW5k
ZXggPSBhZGRDb25zdGFudEluZGV4KCk7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRDb25zdGFu
dChyZXN1bHQpOwotICAgICAgICByZXR1cm4gJm1fY29uc3RhbnRQb29sUmVnaXN0ZXJzW2luZGV4
XTsKKyAgICBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciogZGVzY3JpcHRvclZhbHVlID0gbV90
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JNYXAuZW5zdXJlKGRlc2NyaXB0b3IuY29weVJlZigpLCBb
Jl0geworICAgICAgICByZXR1cm4gSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OmNyZWF0ZSgq
dm0oKSwgV1RGTW92ZShkZXNjcmlwdG9yKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworCisg
ICAgaW50IGluZGV4ID0gYWRkQ29uc3RhbnRJbmRleCgpOworICAgIG1fY29kZUJsb2NrLT5hZGRD
b25zdGFudChkZXNjcmlwdG9yVmFsdWUpOworICAgIHJldHVybiAmbV9jb25zdGFudFBvb2xSZWdp
c3RlcnNbaW5kZXhdOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0FycmF5KFJlZ2lzdGVySUQqIGRzdCwgRWxlbWVudE5vZGUqIGVsZW1lbnRzLCB1bnNpZ25lZCBs
ZW5ndGgpCkBAIC00NDAxLDggKzQ0MDIsOCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3NpbwogCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFRlbXBsYXRlT2JqZWN0KFJlZ2lz
dGVySUQqIGRzdCwgVGFnZ2VkVGVtcGxhdGVOb2RlKiB0YWdnZWRUZW1wbGF0ZSkKIHsKLSAgICBU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpTdHJpbmdWZWN0b3IgcmF3U3RyaW5nczsKLSAgICBUZW1wbGF0
ZVJlZ2lzdHJ5S2V5OjpPcHRpb25hbFN0cmluZ1ZlY3RvciBjb29rZWRTdHJpbmdzOworICAgIFRl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6U3RyaW5nVmVjdG9yIHJhd1N0cmluZ3M7CisgICAgVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yOjpPcHRpb25hbFN0cmluZ1ZlY3RvciBjb29rZWRTdHJpbmdz
OwogCiAgICAgVGVtcGxhdGVTdHJpbmdMaXN0Tm9kZSogdGVtcGxhdGVTdHJpbmcgPSB0YWdnZWRU
ZW1wbGF0ZS0+dGVtcGxhdGVMaXRlcmFsKCktPnRlbXBsYXRlU3RyaW5ncygpOwogICAgIGZvciAo
OyB0ZW1wbGF0ZVN0cmluZzsgdGVtcGxhdGVTdHJpbmcgPSB0ZW1wbGF0ZVN0cmluZy0+bmV4dCgp
KSB7CkBAIC00NDE0LDcgKzQ0MTUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdldFRlbXBsYXRlT2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgVGFnZ2VkVGVtcAogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBjb29rZWRTdHJpbmdzLmFwcGVuZChzdHJpbmctPmNvb2tlZCgp
LT5pbXBsKCkpOwogICAgIH0KLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uc3RhbnQgPSBhZGRU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5Q29uc3RhbnQobV92bS0+dGVtcGxhdGVSZWdpc3RyeUtleVRhYmxl
KCkuY3JlYXRlS2V5KFdURk1vdmUocmF3U3RyaW5ncyksIFdURk1vdmUoY29va2VkU3RyaW5ncykp
KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uc3RhbnQgPSBhZGRUZW1wbGF0ZU9iamVjdENv
bnN0YW50KFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6Y3JlYXRlKFdURk1vdmUocmF3U3RyaW5n
cyksIFdURk1vdmUoY29va2VkU3RyaW5ncykpKTsKICAgICBpZiAoIWRzdCkKICAgICAgICAgcmV0
dXJuIGNvbnN0YW50LmdldCgpOwogICAgIHJldHVybiBlbWl0TW92ZShkc3QsIGNvbnN0YW50Lmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAxNGRiNzA2ODVmNWZlNTkzNWQzZjBhYmE5YzZhZjI2NTAx
MGY0N2JmLi44ODI0YTgxMjgwOTQ4YzcyM2I0NjBlNDcxOWM2ZmVjN2JkM2U0YzAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0
aW9uLmgiCisjaW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKICNpbmNsdWRl
ICJMYWJlbC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgpA
QCAtNDMsNyArNDQsNiBAQAogI2luY2x1ZGUgIlJlZ2lzdGVySUQuaCIKICNpbmNsdWRlICJTdGF0
aWNQcm9wZXJ0eUFuYWx5emVyLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGUuaCIKLSNpbmNsdWRl
ICJUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIK
ICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5o
PgpAQCAtNTUsNyArNTUsNiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJZGVudGlm
aWVyOwotICAgIGNsYXNzIEpTVGVtcGxhdGVSZWdpc3RyeUtleTsKIAogICAgIGVudW0gRXhwZWN0
ZWRGdW5jdGlvbiB7CiAgICAgICAgIE5vRXhwZWN0ZWRGdW5jdGlvbiwKQEAgLTEwMDgsNyArMTAw
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1c2luZyBOdW1iZXJNYXAgPSBIYXNoTWFw
PGRvdWJsZSwgSlNWYWx1ZT47CiAgICAgICAgIHVzaW5nIElkZW50aWZpZXJTdHJpbmdNYXAgPSBI
YXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBsKiwgSlNTdHJpbmcqLCBJZGVudGlmaWVyUmVwSGFzaD47
CiAgICAgICAgIHVzaW5nIElkZW50aWZpZXJCaWdJbnRNYXAgPSBIYXNoTWFwPEJpZ0ludE1hcEVu
dHJ5LCBKU0JpZ0ludCo+OwotICAgICAgICB1c2luZyBUZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFwID0g
SGFzaE1hcDxSZWY8VGVtcGxhdGVSZWdpc3RyeUtleT4sIFJlZ2lzdGVySUQqPjsKKyAgICAgICAg
dXNpbmcgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yTWFwID0gSGFzaE1hcDxSZWY8VGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yPiwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqPjsKIAogICAgICAg
ICAvLyBIZWxwZXIgZm9yIGVtaXRDYWxsKCkgYW5kIGVtaXRDb25zdHJ1Y3QoKS4gVGhpcyB3b3Jr
cyBiZWNhdXNlIHRoZSBzZXQgb2YKICAgICAgICAgLy8gZXhwZWN0ZWQgZnVuY3Rpb25zIGhhdmUg
aWRlbnRpY2FsIGJlaGF2aW9yIGZvciBib3RoIGNhbGwgYW5kIGNvbnN0cnVjdApAQCAtMTA5Myw3
ICsxMDkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBKU1N0cmlu
ZyogYWRkU3RyaW5nQ29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICBKU1ZhbHVl
IGFkZEJpZ0ludENvbnN0YW50KGNvbnN0IElkZW50aWZpZXImLCB1aW50OF90IHJhZGl4KTsKLSAg
ICAgICAgUmVnaXN0ZXJJRCogYWRkVGVtcGxhdGVSZWdpc3RyeUtleUNvbnN0YW50KFJlZjxUZW1w
bGF0ZVJlZ2lzdHJ5S2V5PiYmKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogYWRkVGVtcGxhdGVPYmpl
Y3RDb25zdGFudChSZWY8VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yPiYmKTsKIAogICAgICAgICBW
ZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+JiBpbnN0
cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQogCkBAIC0xMTkzLDcgKzExOTIs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZU1hcCBtX2pzVmFsdWVNYXA7CiAg
ICAgICAgIElkZW50aWZpZXJTdHJpbmdNYXAgbV9zdHJpbmdNYXA7CiAgICAgICAgIElkZW50aWZp
ZXJCaWdJbnRNYXAgbV9iaWdJbnRNYXA7Ci0gICAgICAgIFRlbXBsYXRlUmVnaXN0cnlLZXlNYXAg
bV90ZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFwOworICAgICAgICBUZW1wbGF0ZU9iamVjdERlc2NyaXB0
b3JNYXAgbV90ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JNYXA7CiAKICAgICAgICAgU3RhdGljUHJv
cGVydHlBbmFseXplciBtX3N0YXRpY1Byb3BlcnR5QW5hbHl6ZXIgeyAmbV9pbnN0cnVjdGlvbnMg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGY0ODUxMzZk
MDk4Y2E5OWFlMTMwZWRmY2I1ZDNjYTZlODVkNmI1ZTkuLjkzZWZmYTNlNjBmYjI0ZDcxODY2Y2Yy
OTIxNzk0MDhiMmViZjZjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKQEAgLTI3Miw2ICsyNzIsOCBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5u
ZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwogICAgICAgICBm
ZWF0dXJlcyB8PSBTdHJpY3RNb2RlRmVhdHVyZTsKICAgICBpZiAoc2NvcGUtPnNoYWRvd3NBcmd1
bWVudHMoKSkKICAgICAgICAgZmVhdHVyZXMgfD0gU2hhZG93c0FyZ3VtZW50c0ZlYXR1cmU7Cisg
ICAgaWYgKG1fc2VlblRhZ2dlZFRlbXBsYXRlKQorICAgICAgICBmZWF0dXJlcyB8PSBOb0V2YWxD
YWNoZUZlYXR1cmU7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW4g
JiYgaXNQcm9ncmFtUGFyc2VNb2RlKHBhcnNlTW9kZSkpIHsKQEAgLTQ4MzIsNiArNDgzNCw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAgICBmYWlsSWZGYWxzZSh0ZW1wbGF0
ZUxpdGVyYWwsICJDYW5ub3QgcGFyc2UgdGVtcGxhdGUgbGl0ZXJhbCIpOwogICAgICAgICAgICAg
YmFzZSA9IGNvbnRleHQuY3JlYXRlVGFnZ2VkVGVtcGxhdGUoc3RhcnRMb2NhdGlvbiwgYmFzZSwg
dGVtcGxhdGVMaXRlcmFsLCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIGxhc3RUb2tl
bkVuZFBvc2l0aW9uKCkpOwogICAgICAgICAgICAgbV9wYXJzZXJTdGF0ZS5ub25MSFNDb3VudCA9
IG5vbkxIU0NvdW50OworICAgICAgICAgICAgbV9zZWVuVGFnZ2VkVGVtcGxhdGUgPSB0cnVlOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDc1MDMwNWMxY2Q5YjE3MzUwZTBkNzU3NzY3
ZWIzYTFkY2Y1NjYxZTQuLjA4MzEyMWI0OGMyYzIxNzQwN2Y4YjYxOGZlMjUzYWJlMTgxYjcwOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTg0MSw2ICsxODQxLDcg
QEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TW9kdWxlU2NvcGVEYXRhPiBtX21vZHVsZVNjb3BlRGF0
YTsKICAgICBEZWJ1Z2dlclBhcnNlRGF0YSogbV9kZWJ1Z2dlclBhcnNlRGF0YTsKICAgICBDYWxs
T3JBcHBseURlcHRoU2NvcGUqIG1fY2FsbE9yQXBwbHlEZXB0aFNjb3BlIHsgbnVsbHB0ciB9Owor
ICAgIGJvb2wgbV9zZWVuVGFnZ2VkVGVtcGxhdGUgeyBmYWxzZSB9OwogfTsKIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggODIyMjlhZDA1ODE3NmE0
Y2EwYmNlMDM4ZjA4NDc5NmYxZjU4YWUwMS4uMmNlYTg4Mjk4MDQ0ZDEzYWZkMGYyOTdlMGE1OTI3
YzhlNDg4ZGFmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMu
aApAQCAtMzA0LDkgKzMwNCwxMCBAQCBjb25zdCBDb2RlRmVhdHVyZXMgQXJyb3dGdW5jdGlvbkNv
bnRleHRGZWF0dXJlID0gMSA8PCA3OwogY29uc3QgQ29kZUZlYXR1cmVzIFN1cGVyQ2FsbEZlYXR1
cmUgPSAgICAgICAgICAgIDEgPDwgODsKIGNvbnN0IENvZGVGZWF0dXJlcyBTdXBlclByb3BlcnR5
RmVhdHVyZSA9ICAgICAgICAxIDw8IDk7CiBjb25zdCBDb2RlRmVhdHVyZXMgTmV3VGFyZ2V0RmVh
dHVyZSA9ICAgICAgICAgICAgMSA8PCAxMDsKK2NvbnN0IENvZGVGZWF0dXJlcyBOb0V2YWxDYWNo
ZUZlYXR1cmUgPSAgICAgICAgICAxIDw8IDExOwogCiBjb25zdCBDb2RlRmVhdHVyZXMgQWxsRmVh
dHVyZXMgPSBFdmFsRmVhdHVyZSB8IEFyZ3VtZW50c0ZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IFRo
aXNGZWF0dXJlIHwgU3RyaWN0TW9kZUZlYXR1cmUgfCBTaGFkb3dzQXJndW1lbnRzRmVhdHVyZSB8
IEFycm93RnVuY3Rpb25GZWF0dXJlIHwgQXJyb3dGdW5jdGlvbkNvbnRleHRGZWF0dXJlIHwKLSAg
ICBTdXBlckNhbGxGZWF0dXJlIHwgU3VwZXJQcm9wZXJ0eUZlYXR1cmUgfCBOZXdUYXJnZXRGZWF0
dXJlOworICAgIFN1cGVyQ2FsbEZlYXR1cmUgfCBTdXBlclByb3BlcnR5RmVhdHVyZSB8IE5ld1Rh
cmdldEZlYXR1cmUgfCBOb0V2YWxDYWNoZUZlYXR1cmU7CiAKIHR5cGVkZWYgdWludDhfdCBJbm5l
ckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXM7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAppbmRleCBlYTJmZGUwMjcwMThiNTVhOWE2NzNm
OGM5ZWU5MjExMGRlMjNlOTRkLi5iODM0YTdjOTgxZWZlNzk4YzY5YzlmYmFkYzQ3NGQzODRmNzUy
MTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0
YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxl
LmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcygp
IHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5udW1WYXJpYWJsZXMoKTsgfQogICAg
IHVuc2lnbmVkIG51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCkgeyByZXR1cm4gbV91bmxp
bmtlZEV2YWxDb2RlQmxvY2stPm51bUZ1bmN0aW9uSG9pc3RpbmdDYW5kaWRhdGVzKCk7IH0KICAg
ICB1bnNpZ25lZCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHMoKSB7IHJldHVybiBtX3VubGlua2Vk
RXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IH0KKyAgICBib29sIGFsbG93
RGlyZWN0RXZhbENhY2hlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2RlQmxvY2st
PmFsbG93RGlyZWN0RXZhbENhY2hlKCk7IH0KIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFz
cyBFeGVjdXRhYmxlQmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAppbmRleCBlOTdhOWI2MmRhMjg2NTEzNDM0MTJkNzI0N2RjYzlmZTk1
MTMzYTQ5Li5jMjk5MjI2ZWE2ZTRhZjk5OWJiOTM3NDIyZGNjMjczNTA1MWUyYTdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0x
MTMsNyArMTEzLDYgQEAKICNpbmNsdWRlICJKU1Byb21pc2VQcm90b3R5cGUuaCIKICNpbmNsdWRl
ICJKU1NldC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJKU1Rl
bXBsYXRlUmVnaXN0cnlLZXkuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMu
aCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmgiCiAjaW5jbHVkZSAiSlNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yLmgiCkBAIC0zNTAsNyArMzQ5LDYgQEAgSlNHbG9iYWxPYmpl
Y3Q6OkpTR2xvYmFsT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEds
b2JhbE9iamVjdE0KICAgICAsIG1fc2V0QWRkV2F0Y2hwb2ludChJc1dhdGNoZWQpCiAgICAgLCBt
X2FycmF5U3BlY2llc1dhdGNocG9pbnQoQ2xlYXJXYXRjaHBvaW50KQogICAgICwgbV9udW1iZXJU
b1N0cmluZ1dhdGNocG9pbnQoSXNXYXRjaGVkKQotICAgICwgbV90ZW1wbGF0ZVJlZ2lzdHJ5KHZt
KQogICAgICwgbV9ydW50aW1lRmxhZ3MoKQogICAgICwgbV9nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZShnbG9iYWxPYmplY3RNZXRob2RUYWJsZSA/IGdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIDogJnNf
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCiAgICAgLCBtX3RocmVhZExvY2FsQ2FjaGUodGhyZWFk
TG9jYWxDYWNoZSA/IFdURk1vdmUodGhyZWFkTG9jYWxDYWNoZSkgOiB2bS5kZWZhdWx0VGhyZWFk
TG9jYWxDYWNoZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCmluZGV4IGQ2OTYxMjgyN2JjNGRlMjdkM2M0OGVhNjY0YTBkZGUyYzM2OGZkMzUuLmNl
ZmU2ZDU1YTcyOWRjZjk0MWIyOWVmOWQ2YjBhMjM3MTA0ZGQ5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNDEsNyArNDEsNiBAQAog
I2luY2x1ZGUgIlNwZWNpYWxQb2ludGVyLmgiCiAjaW5jbHVkZSAiU3RyaW5nUHJvdG90eXBlLmgi
CiAjaW5jbHVkZSAiU3ltYm9sUHJvdG90eXBlLmgiCi0jaW5jbHVkZSAiVGVtcGxhdGVSZWdpc3Ry
eS5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgpAQCAtNDU5LDggKzQ1OCw2IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzTWFwUHJvdG90eXBlU2V0RmFzdEFuZE5vbk9ic2VydmFibGUoKTsKICAgICBib29s
IGlzU2V0UHJvdG90eXBlQWRkRmFzdEFuZE5vbk9ic2VydmFibGUoKTsKIAotICAgIFRlbXBsYXRl
UmVnaXN0cnkgbV90ZW1wbGF0ZVJlZ2lzdHJ5OwotCiAgICAgYm9vbCBtX2V2YWxFbmFibGVkIHsg
dHJ1ZSB9OwogICAgIGJvb2wgbV93ZWJBc3NlbWJseUVuYWJsZWQgeyB0cnVlIH07CiAgICAgU3Ry
aW5nIG1fZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlOwpAQCAtODgwLDggKzg3Nyw2IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm9wYXF1ZUpTQ2xhc3NEYXRhOwogICAgIH0K
IAotICAgIFRlbXBsYXRlUmVnaXN0cnkmIHRlbXBsYXRlUmVnaXN0cnkoKSB7IHJldHVybiBtX3Rl
bXBsYXRlUmVnaXN0cnk7IH0KLQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgd2Vha1JhbmRvbU9mZnNl
dCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV93ZWFrUmFuZG9t
KTsgfQogICAgIGRvdWJsZSB3ZWFrUmFuZG9tTnVtYmVyKCkgeyByZXR1cm4gbV93ZWFrUmFuZG9t
LmdldCgpOyB9CiAgICAgdW5zaWduZWQgd2Vha1JhbmRvbUludGVnZXIoKSB7IHJldHVybiBtX3dl
YWtSYW5kb20uZ2V0VWludDMyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYTRhNDA3ZmQ5MzE5MTA4ODU5MWU3ODkyOTdmYTBiMDQyMmM2OTQwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUZW1wbGF0ZU9iamVjdERlc2Ny
aXB0b3IuY3BwCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgorCisjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5j
bHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU1RlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvcjo6c19pbmZvID0geyAiVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
IiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1RlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvcikgfTsKKworCitKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6
SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IoVk0mIHZtLCBSZWY8VGVtcGxhdGVPYmplY3REZXNj
cmlwdG9yPiYmIGRlc2NyaXB0b3IpCisgICAgOiBCYXNlKHZtLCB2bS50ZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3JTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBtX2Rlc2NyaXB0b3IoV1RGTW92ZShkZXNj
cmlwdG9yKSkKK3sKK30KKworSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqIEpTVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yOjpjcmVhdGUoVk0mIHZtLCBSZWY8VGVtcGxhdGVPYmplY3REZXNjcmlw
dG9yPiYmIGRlc2NyaXB0b3IpCit7CisgICAgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqIHJl
c3VsdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTVGVtcGxhdGVPYmplY3REZXNjcmlw
dG9yPih2bS5oZWFwKSkgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3Iodm0sIFdURk1vdmUoZGVz
Y3JpcHRvcikpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3ZvaWQgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OmRlc3Ryb3koSlND
ZWxsKiBjZWxsKQoreworICAgIHN0YXRpY19jYXN0PEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
Kj4oY2VsbCktPkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjp+SlNUZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3IoKTsKK30KKworSlNBcnJheSogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OmNy
ZWF0ZVRlbXBsYXRlT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICB1
bnNpZ25lZCBjb3VudCA9IGRlc2NyaXB0b3IoKS5jb29rZWRTdHJpbmdzKCkuc2l6ZSgpOworICAg
IEpTQXJyYXkqIHRlbXBsYXRlT2JqZWN0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxs
cHRyLCBjb3VudCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Cisg
ICAgSlNBcnJheSogcmF3T2JqZWN0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRy
LCBjb3VudCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAg
ICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkgeworICAg
ICAgICBhdXRvIGNvb2tlZCA9IGRlc2NyaXB0b3IoKS5jb29rZWRTdHJpbmdzKClbaW5kZXhdOwor
ICAgICAgICBpZiAoY29va2VkKQorICAgICAgICAgICAgdGVtcGxhdGVPYmplY3QtPnB1dERpcmVj
dEluZGV4KGV4ZWMsIGluZGV4LCBqc1N0cmluZyhleGVjLCBjb29rZWQudmFsdWUoKSksIFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlLCBQ
dXREaXJlY3RJbmRleExpa2VQdXREaXJlY3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0
ZW1wbGF0ZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgsIGpzVW5kZWZpbmVkKCks
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlLCBQdXREaXJlY3RJbmRleExpa2VQdXREaXJlY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgICAgICByYXdPYmplY3QtPnB1dERpcmVjdElu
ZGV4KGV4ZWMsIGluZGV4LCBqc1N0cmluZyhleGVjLCBkZXNjcmlwdG9yKCkucmF3U3RyaW5ncygp
W2luZGV4XSksIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlLCBQdXREaXJlY3RJbmRleExpa2VQdXREaXJlY3QpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKyAgICB9CisKKyAgICBvYmplY3RDb25z
dHJ1Y3RvckZyZWV6ZShleGVjLCByYXdPYmplY3QpOworICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0
aW9uKCk7CisKKyAgICB0ZW1wbGF0ZU9iamVjdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5yYXcsIHJhd09iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUpOwor
CisgICAgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoZXhlYywgdGVtcGxhdGVPYmplY3QpOworICAg
IHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisKKyAgICByZXR1cm4gdGVtcGxhdGVPYmplY3Q7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Nzk5YmQ4ZDFkZGM3ZGEwOTk5MTU1MjgzNWMzNTc5YWNmMGViMTMyOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVGVtcGxhdGVPYmplY3REZXNjcmlw
dG9yLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlRlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNUZW1wbGF0ZU9iamVjdERlc2Ny
aXB0b3IgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0g
SlNDZWxsOworCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworICAgIHN0YXRpYyBjb25z
dCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOworICAgIERFQ0xBUkVfSU5GTzsKKworICAg
IHN0YXRpYyBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciogY3JlYXRlKFZNJiwgUmVmPFRlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvcj4mJik7CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7CisgICAgfQorCisgICAgY29uc3QgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZXNjcmlwdG9yLmdldCgpOyB9CisKKyAgICBK
U0FycmF5KiBjcmVhdGVUZW1wbGF0ZU9iamVjdChFeGVjU3RhdGUqKTsKKworcHJvdGVjdGVkOgor
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKK3ByaXZhdGU6CisgICAgSlNUZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3IoVk0mLCBSZWY8VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yPiYm
KTsKKworICAgIFJlZjxUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I+IG1fZGVzY3JpcHRvcjsKK307
CisKK2lubGluZSBib29sIGlzVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKFZNJiB2bSwgSlNDZWxs
KiBjZWxsKQoreworICAgIHJldHVybiBjZWxsLT5jbGFzc0luZm8odm0pID09IEpTVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yOjppbmZvKCk7Cit9CisKK2lubGluZSBib29sIGlzVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yKFZNJiB2bSwgSlNWYWx1ZSB2KQoreworICAgIHJldHVybiB2LmlzQ2VsbCgp
ICYmIGlzVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKHZtLCB2LmFzQ2VsbCgpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1RlbXBsYXRlUmVnaXN0cnlLZXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTQzMjViYTRjZTc3ZDdjMzEzZWRlMjlhNWY4NzEwZjljNzYzZjljYS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1RlbXBsYXRlUmVnaXN0cnlLZXkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+LgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkpTVGVtcGxhdGVSZWdpc3RyeUtleS5oIgotCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotI2lu
Y2x1ZGUgIlZNLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8gSlNUZW1w
bGF0ZVJlZ2lzdHJ5S2V5OjpzX2luZm8gPSB7ICJUZW1wbGF0ZVJlZ2lzdHJ5S2V5IiwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1RlbXBsYXRlUmVnaXN0
cnlLZXkpIH07Ci0KLQotSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpKU1RlbXBsYXRlUmVnaXN0cnlL
ZXkoVk0mIHZtLCBSZWY8VGVtcGxhdGVSZWdpc3RyeUtleT4mJiB0ZW1wbGF0ZVJlZ2lzdHJ5S2V5
KQotICAgIDogQmFzZSh2bSwgdm0udGVtcGxhdGVSZWdpc3RyeUtleVN0cnVjdHVyZS5nZXQoKSkK
LSAgICAsIG1fdGVtcGxhdGVSZWdpc3RyeUtleShXVEZNb3ZlKHRlbXBsYXRlUmVnaXN0cnlLZXkp
KQotewotfQotCi1KU1RlbXBsYXRlUmVnaXN0cnlLZXkqIEpTVGVtcGxhdGVSZWdpc3RyeUtleTo6
Y3JlYXRlKFZNJiB2bSwgUmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+JiYgdGVtcGxhdGVSZWdpc3Ry
eUtleSkKLXsKLSAgICBKU1RlbXBsYXRlUmVnaXN0cnlLZXkqIHJlc3VsdCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTVGVtcGxhdGVSZWdpc3RyeUtleT4odm0uaGVhcCkpIEpTVGVtcGxh
dGVSZWdpc3RyeUtleSh2bSwgV1RGTW92ZSh0ZW1wbGF0ZVJlZ2lzdHJ5S2V5KSk7Ci0gICAgcmVz
dWx0LT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBK
U1RlbXBsYXRlUmVnaXN0cnlLZXk6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQotewotICAgIHN0YXRp
Y19jYXN0PEpTVGVtcGxhdGVSZWdpc3RyeUtleSo+KGNlbGwpLT5KU1RlbXBsYXRlUmVnaXN0cnlL
ZXk6On5KU1RlbXBsYXRlUmVnaXN0cnlLZXkoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1RlbXBsYXRlUmVnaXN0
cnlLZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVGVtcGxhdGVSZWdpc3Ry
eUtleS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2Q1YmFlMjZjZmYxNTVhNDg3
NGRhNWVmY2FkYmQ5NWJiZWM1ZDgxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVGVtcGxhdGVSZWdp
c3RyeUtleS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgotI2luY2x1ZGUgIlRl
bXBsYXRlUmVnaXN0cnlLZXkuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEpTVGVtcGxh
dGVSZWdpc3RyeUtleSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewotcHVibGljOgotICAgIHVzaW5n
IEJhc2UgPSBKU0NlbGw7Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7Ci0gICAgREVDTEFSRV9JTkZP
OwotCi0gICAgc3RhdGljIEpTVGVtcGxhdGVSZWdpc3RyeUtleSogY3JlYXRlKFZNJiwgUmVmPFRl
bXBsYXRlUmVnaXN0cnlLZXk+JiYpOwotCi0gICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOwotICAgIH0KLQotICAgIGNvbnN0IFRlbXBsYXRlUmVnaXN0cnlLZXkmIHRlbXBsYXRl
UmVnaXN0cnlLZXkoKSBjb25zdCB7IHJldHVybiBtX3RlbXBsYXRlUmVnaXN0cnlLZXkuZ2V0KCk7
IH0KLQotcHJvdGVjdGVkOgotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7Ci0KLXBy
aXZhdGU6Ci0gICAgSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5KFZNJiwgUmVmPFRlbXBsYXRlUmVnaXN0
cnlLZXk+JiYpOwotCi0gICAgUmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+IG1fdGVtcGxhdGVSZWdp
c3RyeUtleTsKLX07Ci0KLWlubGluZSBib29sIGlzVGVtcGxhdGVSZWdpc3RyeUtleShWTSYgdm0s
IEpTQ2VsbCogY2VsbCkKLXsKLSAgICByZXR1cm4gY2VsbC0+Y2xhc3NJbmZvKHZtKSA9PSBKU1Rl
bXBsYXRlUmVnaXN0cnlLZXk6OmluZm8oKTsKLX0KLQotaW5saW5lIGJvb2wgaXNUZW1wbGF0ZVJl
Z2lzdHJ5S2V5KFZNJiB2bSwgSlNWYWx1ZSB2KQotewotICAgIHJldHVybiB2LmlzQ2VsbCgpICYm
IGlzVGVtcGxhdGVSZWdpc3RyeUtleSh2bSwgdi5hc0NlbGwoKSk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODUzNDM2NGI1OTQ5ZGQ5M2Uw
ODMwZjRjYjMwNzZkMjY1OTY0YTljOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSwz
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitUZW1wbGF0
ZU9iamVjdERlc2NyaXB0b3I6On5UZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IoKQoreworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzU4ZWEzY2MwMGVk
MTYzMjJlMDJlMzA4OWIwYWFlNzAyMDgyN2M2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oCkBAIC0wLDAg
KzEsMTIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JUYWJsZTsKKworY2xhc3MgVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8VGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yPiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBWZWN0b3I8U3RyaW5nLCA0PiBTdHJp
bmdWZWN0b3I7CisgICAgdHlwZWRlZiBWZWN0b3I8c3RkOjpvcHRpb25hbDxTdHJpbmc+LCA0PiBP
cHRpb25hbFN0cmluZ1ZlY3RvcjsKKworICAgIGVudW0gRGVsZXRlZFZhbHVlVGFnIHsgRGVsZXRl
ZFZhbHVlIH07CisgICAgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKERlbGV0ZWRWYWx1ZVRhZyk7
CisgICAgZW51bSBFbXB0eVZhbHVlVGFnIHsgRW1wdHlWYWx1ZSB9OworICAgIFRlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvcihFbXB0eVZhbHVlVGFnKTsKKworICAgIGJvb2wgaXNEZWxldGVkVmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3Jhd1N0cmluZ3MuaXNFbXB0eSgpICYmIG1faGFzaCA9PSBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7IH0KKworICAgIGJvb2wgaXNFbXB0eVZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV9yYXdTdHJpbmdzLmlzRW1wdHkoKSAmJiAhbV9oYXNoOyB9
CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9CisKKyAgICBj
b25zdCBTdHJpbmdWZWN0b3ImIHJhd1N0cmluZ3MoKSBjb25zdCB7IHJldHVybiBtX3Jhd1N0cmlu
Z3M7IH0KKyAgICBjb25zdCBPcHRpb25hbFN0cmluZ1ZlY3RvciYgY29va2VkU3RyaW5ncygpIGNv
bnN0IHsgcmV0dXJuIG1fY29va2VkU3RyaW5nczsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faGFz
aCA9PSBvdGhlci5tX2hhc2ggJiYgbV9yYXdTdHJpbmdzID09IG90aGVyLm1fcmF3U3RyaW5nczsg
fQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3ImIG90
aGVyKSBjb25zdCB7IHJldHVybiBtX2hhc2ggIT0gb3RoZXIubV9oYXNoIHx8IG1fcmF3U3RyaW5n
cyAhPSBvdGhlci5tX3Jhd1N0cmluZ3M7IH0KKworICAgIHN0cnVjdCBIYXNoZXIgeworICAgICAg
ICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3ImIGtl
eSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25z
dCBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3ImIGEsIGNvbnN0IFRlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvciYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNh
ZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7CisgICAgfTsKKworICAgIHN0YXRp
YyB1bnNpZ25lZCBjYWxjdWxhdGVIYXNoKGNvbnN0IFN0cmluZ1ZlY3RvciYgcmF3U3RyaW5ncyk7
CisgICAgflRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcigpOworCisgICAgc3RhdGljIFJlZjxUZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3I+IGNyZWF0ZShTdHJpbmdWZWN0b3ImJiByYXdTdHJpbmdzLCBP
cHRpb25hbFN0cmluZ1ZlY3RvciYmIGNvb2tlZFN0cmluZ3MpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IoV1RGTW92ZShyYXdTdHJp
bmdzKSwgV1RGTW92ZShjb29rZWRTdHJpbmdzKSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IoU3RyaW5nVmVjdG9yJiYgcmF3U3RyaW5ncywgT3B0aW9u
YWxTdHJpbmdWZWN0b3ImJiBjb29rZWRTdHJpbmdzKTsKKworICAgIFN0cmluZ1ZlY3RvciBtX3Jh
d1N0cmluZ3M7CisgICAgT3B0aW9uYWxTdHJpbmdWZWN0b3IgbV9jb29rZWRTdHJpbmdzOworICAg
IHVuc2lnbmVkIG1faGFzaCB7IDAgfTsKK307CisKK2lubGluZSBUZW1wbGF0ZU9iamVjdERlc2Ny
aXB0b3I6OlRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcihTdHJpbmdWZWN0b3ImJiByYXdTdHJpbmdz
LCBPcHRpb25hbFN0cmluZ1ZlY3RvciYmIGNvb2tlZFN0cmluZ3MpCisgICAgOiBtX3Jhd1N0cmlu
Z3MoV1RGTW92ZShyYXdTdHJpbmdzKSkKKyAgICAsIG1fY29va2VkU3RyaW5ncyhXVEZNb3ZlKGNv
b2tlZFN0cmluZ3MpKQorICAgICwgbV9oYXNoKGNhbGN1bGF0ZUhhc2gocmF3U3RyaW5ncykpCit7
Cit9CisKK2lubGluZSBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OlRlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvcihEZWxldGVkVmFsdWVUYWcpCisgICAgOiBtX2hhc2goc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQoreworfQorCitpbmxpbmUgVGVtcGxhdGVPYmplY3REZXNjcmlw
dG9yOjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IoRW1wdHlWYWx1ZVRhZykKKyAgICA6IG1faGFz
aCgwKQoreworfQorCitpbmxpbmUgdW5zaWduZWQgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpj
YWxjdWxhdGVIYXNoKGNvbnN0IFN0cmluZ1ZlY3RvciYgcmF3U3RyaW5ncykKK3sKKyAgICBTdHJp
bmdIYXNoZXIgaGFzaGVyOworICAgIGZvciAoY29uc3QgU3RyaW5nJiBzdHJpbmcgOiByYXdTdHJp
bmdzKSB7CisgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgICAgICBoYXNoZXIu
YWRkQ2hhcmFjdGVycyhzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgaGFzaGVyLmFkZENoYXJhY3RlcnMoc3RyaW5nLmNoYXJh
Y3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgIH0KKyAgICByZXR1cm4gaGFzaGVyLmhh
c2goKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgewordGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOworCit0ZW1wbGF0ZTw+IHN0cnVjdCBE
ZWZhdWx0SGFzaDxKU0M6OlRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4geworICAgIHR5cGVkZWYg
SlNDOjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6Okhhc2hlciBIYXNoOworfTsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OlRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4gOiBD
dXN0b21IYXNoVHJhaXRzPEpTQzo6VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yPiB7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBsYXRlUmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcGxhdGVSZWdpc3RyeS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0OTZh
OWQyNmUwZmQxYzAzZWRmMGI2ZTkzNjQ2OTUxNDI1YzBiZTguLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcGxhdGVSZWdpc3RyeS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4uCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUZW1wbGF0
ZVJlZ2lzdHJ5LmgiCi0KLSNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKLSNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlICJKU1RlbXBs
YXRlUmVnaXN0cnlLZXkuaCIKLSNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgotI2luY2x1
ZGUgIlRlbXBsYXRlUmVnaXN0cnlLZXkuaCIKLSNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVzLmgi
Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1UZW1wbGF0ZVJlZ2lzdHJ5OjpUZW1wbGF0ZVJlZ2lzdHJ5
KFZNJiB2bSkKLSAgICA6IG1fdGVtcGxhdGVNYXAodm0pCi17Ci19Ci0KLUpTQXJyYXkqIFRlbXBs
YXRlUmVnaXN0cnk6OmdldFRlbXBsYXRlT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNUZW1wbGF0
ZVJlZ2lzdHJ5S2V5KiB0ZW1wbGF0ZUtleU9iamVjdCkKLXsKLSAgICBhdXRvJiB0ZW1wbGF0ZUtl
eSA9IHRlbXBsYXRlS2V5T2JqZWN0LT50ZW1wbGF0ZVJlZ2lzdHJ5S2V5KCk7Ci0gICAgSlNBcnJh
eSogY2FjaGVkID0gbV90ZW1wbGF0ZU1hcC5nZXQoJnRlbXBsYXRlS2V5KTsKLSAgICBpZiAoY2Fj
aGVkKQotICAgICAgICByZXR1cm4gY2FjaGVkOwotCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
LSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgdW5zaWduZWQg
Y291bnQgPSB0ZW1wbGF0ZUtleS5jb29rZWRTdHJpbmdzKCkuc2l6ZSgpOwotICAgIEpTQXJyYXkq
IHRlbXBsYXRlT2JqZWN0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBjb3Vu
dCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgSlNBcnJh
eSogcmF3T2JqZWN0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBjb3VudCk7
Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0KLSAgICBmb3IgKHVu
c2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkgewotICAgICAgICBhdXRv
IGNvb2tlZCA9IHRlbXBsYXRlS2V5LmNvb2tlZFN0cmluZ3MoKVtpbmRleF07Ci0gICAgICAgIGlm
IChjb29rZWQpCi0gICAgICAgICAgICB0ZW1wbGF0ZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZXhl
YywgaW5kZXgsIGpzU3RyaW5nKGV4ZWMsIGNvb2tlZC52YWx1ZSgpKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUsIFB1dERpcmVjdElu
ZGV4TGlrZVB1dERpcmVjdCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlbXBsYXRlT2Jq
ZWN0LT5wdXREaXJlY3RJbmRleChleGVjLCBpbmRleCwganNVbmRlZmluZWQoKSwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUsIFB1dERp
cmVjdEluZGV4TGlrZVB1dERpcmVjdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIG51bGxwdHIpOwotCi0gICAgICAgIHJhd09iamVjdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywg
aW5kZXgsIGpzU3RyaW5nKGV4ZWMsIHRlbXBsYXRlS2V5LnJhd1N0cmluZ3MoKVtpbmRleF0pLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSwgUHV0RGlyZWN0SW5kZXhMaWtlUHV0RGlyZWN0KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgfQotCi0gICAgb2JqZWN0Q29uc3RydWN0b3JGcmVl
emUoZXhlYywgcmF3T2JqZWN0KTsKLSAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotCi0g
ICAgdGVtcGxhdGVPYmplY3QtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cmF3LCBy
YXdPYmplY3QsIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKLQotICAgIC8vIFRl
bXBsYXRlIEpTQXJyYXkgaG9sZCB0aGUgcmVmZXJlbmNlIHRvIEpTVGVtcGxhdGVSZWdpc3RyeUtl
eSB0byBtYWtlIFRlbXBsYXRlUmVnaXN0cnlLZXkgcG9pbnRlciBsaXZlIHVudGlsIHRoaXMgSlNB
cnJheSBpcyBjb2xsZWN0ZWQuCi0gICAgLy8gVGVtcGxhdGVSZWdpc3RyeUtleSBwb2ludGVyIGlz
IHVzZWQgZm9yIFRlbXBsYXRlUmVnaXN0cnkncyBrZXkuCi0gICAgdGVtcGxhdGVPYmplY3QtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudGVtcGxhdGVSZWdp
c3RyeUtleVByaXZhdGVOYW1lKCksIHRlbXBsYXRlS2V5T2JqZWN0LCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSk7Ci0KLSAgICBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShleGVjLCB0
ZW1wbGF0ZU9iamVjdCk7Ci0gICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLQotICAgIG1f
dGVtcGxhdGVNYXAuc2V0KCZ0ZW1wbGF0ZUtleSwgdGVtcGxhdGVPYmplY3QpOwotCi0gICAgcmV0
dXJuIHRlbXBsYXRlT2JqZWN0OwotfQotCi0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlMTMwOTA0MmYwZDU4YTNkNWRkNjM1Mjc2NWEyN2MzZGM4MTg5
MjI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnkuaAorKysgL2Rldi9udWxs
CkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
bmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiV2Vha0dDTWFwLmgiCi0jaW5jbHVkZSA8bGlt
aXRzPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5Owot
Y2xhc3MgVGVtcGxhdGVSZWdpc3RyeUtleTsKLQotY2xhc3MgVGVtcGxhdGVSZWdpc3RyeSB7Ci1w
dWJsaWM6Ci0gICAgVGVtcGxhdGVSZWdpc3RyeShWTSYpOwotCi0gICAgSlNBcnJheSogZ2V0VGVt
cGxhdGVPYmplY3QoRXhlY1N0YXRlKiwgSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5Kik7Ci0KLXByaXZh
dGU6Ci0gICAgV2Vha0dDTWFwPGNvbnN0IFRlbXBsYXRlUmVnaXN0cnlLZXkqLCBKU0FycmF5PiBt
X3RlbXBsYXRlTWFwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5S2V5LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlLZXkuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjI5ZjFiMzQ0Y2M1NWY5ZTM0Y2U4ZGFlODUzMWQ0ZGE4
NTFkNzg5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlLZXkuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiVGVtcGxhdGVSZWdpc3RyeUtleS5oIgotCi0jaW5jbHVkZSAi
VGVtcGxhdGVSZWdpc3RyeUtleVRhYmxlLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1UZW1wbGF0
ZVJlZ2lzdHJ5S2V5Ojp+VGVtcGxhdGVSZWdpc3RyeUtleSgpCi17Ci0gICAgaWYgKG1fdGFibGUp
Ci0gICAgICAgIG1fdGFibGUtPnVucmVnaXN0ZXIoKnRoaXMpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRl
UmVnaXN0cnlLZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVn
aXN0cnlLZXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODgwMzY5ZDA1ZTRiM2Fj
Y2QzZjE2NWUwYjg1YjI0ZWJjZjg0MzI5Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJl
Z2lzdHJ5S2V5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPGxpbWl0cz4KLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgVGVtcGxhdGVS
ZWdpc3RyeUtleVRhYmxlOwotCi1jbGFzcyBUZW1wbGF0ZVJlZ2lzdHJ5S2V5IDogcHVibGljIFJl
ZkNvdW50ZWQ8VGVtcGxhdGVSZWdpc3RyeUtleT4gewotcHVibGljOgotICAgIGZyaWVuZCBjbGFz
cyBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGU7Ci0gICAgdHlwZWRlZiBWZWN0b3I8U3RyaW5nLCA0
PiBTdHJpbmdWZWN0b3I7Ci0gICAgdHlwZWRlZiBWZWN0b3I8c3RkOjpvcHRpb25hbDxTdHJpbmc+
LCA0PiBPcHRpb25hbFN0cmluZ1ZlY3RvcjsKLQotICAgIGVudW0gRGVsZXRlZFZhbHVlVGFnIHsg
RGVsZXRlZFZhbHVlIH07Ci0gICAgVGVtcGxhdGVSZWdpc3RyeUtleShEZWxldGVkVmFsdWVUYWcp
OwotICAgIGVudW0gRW1wdHlWYWx1ZVRhZyB7IEVtcHR5VmFsdWUgfTsKLSAgICBUZW1wbGF0ZVJl
Z2lzdHJ5S2V5KEVtcHR5VmFsdWVUYWcpOwotCi0gICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmF3U3RyaW5ncy5pc0VtcHR5KCkgJiYgbV9oYXNoID09IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsgfQotCi0gICAgYm9vbCBpc0VtcHR5VmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3Jhd1N0cmluZ3MuaXNFbXB0eSgpICYmICFtX2hhc2g7IH0KLQot
ICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KLQotICAgIGNvbnN0
IFN0cmluZ1ZlY3RvciYgcmF3U3RyaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fcmF3U3RyaW5nczsg
fQotICAgIGNvbnN0IE9wdGlvbmFsU3RyaW5nVmVjdG9yJiBjb29rZWRTdHJpbmdzKCkgY29uc3Qg
eyByZXR1cm4gbV9jb29rZWRTdHJpbmdzOyB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
VGVtcGxhdGVSZWdpc3RyeUtleSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faGFzaCA9PSBvdGhl
ci5tX2hhc2ggJiYgbV9yYXdTdHJpbmdzID09IG90aGVyLm1fcmF3U3RyaW5nczsgfQotICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5JiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gbV9oYXNoICE9IG90aGVyLm1faGFzaCB8fCBtX3Jhd1N0cmluZ3MgIT0gb3RoZXIubV9y
YXdTdHJpbmdzOyB9Ci0KLSAgICBzdHJ1Y3QgSGFzaGVyIHsKLSAgICAgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgVGVtcGxhdGVSZWdpc3RyeUtleSYga2V5KSB7IHJldHVybiBrZXkuaGFz
aCgpOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFRlbXBsYXRlUmVnaXN0cnlL
ZXkmIGEsIGNvbnN0IFRlbXBsYXRlUmVnaXN0cnlLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQot
ICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9
IGZhbHNlOwotICAgIH07Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQgY2FsY3VsYXRlSGFzaChjb25z
dCBTdHJpbmdWZWN0b3ImIHJhd1N0cmluZ3MpOwotICAgIH5UZW1wbGF0ZVJlZ2lzdHJ5S2V5KCk7
Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIFJlZjxUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiBjcmVhdGUo
U3RyaW5nVmVjdG9yJiYgcmF3U3RyaW5ncywgT3B0aW9uYWxTdHJpbmdWZWN0b3ImJiBjb29rZWRT
dHJpbmdzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGVtcGxhdGVSZWdp
c3RyeUtleShXVEZNb3ZlKHJhd1N0cmluZ3MpLCBXVEZNb3ZlKGNvb2tlZFN0cmluZ3MpKSk7Ci0g
ICAgfQotCi0gICAgVGVtcGxhdGVSZWdpc3RyeUtleShTdHJpbmdWZWN0b3ImJiByYXdTdHJpbmdz
LCBPcHRpb25hbFN0cmluZ1ZlY3RvciYmIGNvb2tlZFN0cmluZ3MpOwotCi0gICAgVGVtcGxhdGVS
ZWdpc3RyeUtleVRhYmxlKiBtX3RhYmxlIHsgbnVsbHB0ciB9OwotICAgIFN0cmluZ1ZlY3RvciBt
X3Jhd1N0cmluZ3M7Ci0gICAgT3B0aW9uYWxTdHJpbmdWZWN0b3IgbV9jb29rZWRTdHJpbmdzOwot
ICAgIHVuc2lnbmVkIG1faGFzaCB7IDAgfTsKLX07Ci0KLWlubGluZSBUZW1wbGF0ZVJlZ2lzdHJ5
S2V5OjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5KFN0cmluZ1ZlY3RvciYmIHJhd1N0cmluZ3MsIE9wdGlv
bmFsU3RyaW5nVmVjdG9yJiYgY29va2VkU3RyaW5ncykKLSAgICA6IG1fcmF3U3RyaW5ncyhXVEZN
b3ZlKHJhd1N0cmluZ3MpKQotICAgICwgbV9jb29rZWRTdHJpbmdzKFdURk1vdmUoY29va2VkU3Ry
aW5ncykpCi0gICAgLCBtX2hhc2goY2FsY3VsYXRlSGFzaChyYXdTdHJpbmdzKSkKLXsKLX0KLQot
aW5saW5lIFRlbXBsYXRlUmVnaXN0cnlLZXk6OlRlbXBsYXRlUmVnaXN0cnlLZXkoRGVsZXRlZFZh
bHVlVGFnKQotICAgIDogbV9oYXNoKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkKLXsKLX0KLQotaW5saW5lIFRlbXBsYXRlUmVnaXN0cnlLZXk6OlRlbXBsYXRlUmVnaXN0cnlL
ZXkoRW1wdHlWYWx1ZVRhZykKLSAgICA6IG1faGFzaCgwKQotewotfQotCi1pbmxpbmUgdW5zaWdu
ZWQgVGVtcGxhdGVSZWdpc3RyeUtleTo6Y2FsY3VsYXRlSGFzaChjb25zdCBTdHJpbmdWZWN0b3Im
IHJhd1N0cmluZ3MpCi17Ci0gICAgU3RyaW5nSGFzaGVyIGhhc2hlcjsKLSAgICBmb3IgKGNvbnN0
IFN0cmluZyYgc3RyaW5nIDogcmF3U3RyaW5ncykgewotICAgICAgICBpZiAoc3RyaW5nLmlzOEJp
dCgpKQotICAgICAgICAgICAgaGFzaGVyLmFkZENoYXJhY3RlcnMoc3RyaW5nLmNoYXJhY3RlcnM4
KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGhhc2hlci5h
ZGRDaGFyYWN0ZXJzKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwot
Ci1uYW1lc3BhY2UgV1RGIHsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFz
aDsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlNDOjpUZW1wbGF0ZVJlZ2lzdHJ5
S2V5PiB7Ci0gICAgdHlwZWRlZiBKU0M6OlRlbXBsYXRlUmVnaXN0cnlLZXk6Okhhc2hlciBIYXNo
OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OlRlbXBsYXRlUmVnaXN0
cnlLZXk+IDogQ3VzdG9tSGFzaFRyYWl0czxKU0M6OlRlbXBsYXRlUmVnaXN0cnlLZXk+IHsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeUtleVRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDFlM2UzNTg3MTQyYzg2ZWQwM2NkNGUyNGFmOWViZTgzOWI4MTI0MDku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeUtleVRhYmxlLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIlRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5oIgotCi0jaW5jbHVk
ZSAiVGVtcGxhdGVSZWdpc3RyeUtleS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotc3RydWN0IFRl
bXBsYXRlUmVnaXN0cnlLZXlUcmFuc2xhdG9yIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5KiBnZW5lcmF0b3IpIHsgcmV0dXJuIGdlbmVyYXRvci0+aGFzaCgp
OyB9Ci0gICAgc3RhdGljIGlubGluZSBib29sIGVxdWFsKFRlbXBsYXRlUmVnaXN0cnlLZXkqIGtl
eSwgVGVtcGxhdGVSZWdpc3RyeUtleSogZ2VuZXJhdG9yKSB7IHJldHVybiAqa2V5ID09ICpnZW5l
cmF0b3I7IH0KLSAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoVGVtcGxhdGVSZWdpc3RyeUtleSom
IGxvY2F0aW9uLCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5KiBnZW5lcmF0b3IsIHVuc2lnbmVkKSB7IGxv
Y2F0aW9uID0gZ2VuZXJhdG9yOyB9Ci19OwotCi1UZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGU6On5U
ZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUoKQotewotICAgIGZvciAoYXV0byYga2V5IDogbV9hdG9t
aWNUYWJsZSkKLSAgICAgICAga2V5LT5tX3RhYmxlID0gbnVsbHB0cjsKLX0KLQotUmVmPFRlbXBs
YXRlUmVnaXN0cnlLZXk+IFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZTo6Y3JlYXRlS2V5KFRlbXBs
YXRlUmVnaXN0cnlLZXk6OlN0cmluZ1ZlY3RvciYmIHJhd1N0cmluZ3MsIFRlbXBsYXRlUmVnaXN0
cnlLZXk6Ok9wdGlvbmFsU3RyaW5nVmVjdG9yJiYgY29va2VkU3RyaW5ncykKLXsKLSAgICBhdXRv
IGtleSA9IFRlbXBsYXRlUmVnaXN0cnlLZXk6OmNyZWF0ZShXVEZNb3ZlKHJhd1N0cmluZ3MpLCBX
VEZNb3ZlKGNvb2tlZFN0cmluZ3MpKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYXRvbWljVGFi
bGUuYWRkPFRlbXBsYXRlUmVnaXN0cnlLZXlUcmFuc2xhdG9yPihrZXkucHRyKCkpOwotICAgIGlm
IChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgKCphZGRSZXN1bHQuaXRlcmF0b3IpLT5t
X3RhYmxlID0gdGhpczsKLQotICAgIHJldHVybiAqKmFkZFJlc3VsdC5pdGVyYXRvcjsKLX0KLQot
dm9pZCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGU6OnVucmVnaXN0ZXIoVGVtcGxhdGVSZWdpc3Ry
eUtleSYga2V5KQotewotICAgIEFTU0VSVChrZXkubV90YWJsZSA9PSB0aGlzKTsKLSAgICBhdXRv
IGl0ZXJhdG9yID0gbV9hdG9taWNUYWJsZS5maW5kKCZrZXkpOwotICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoaXRlcmF0b3IgIT0gbV9hdG9taWNUYWJsZS5lbmQoKSwgIlRoZSBUZW1wbGF0ZVJlZ2lz
dHJ5S2V5IGJlaW5nIHJlbW92ZWQgaXMgcmVnaXN0ZXJlZCBpbiB0aGUgb3RoZXIgVGVtcGxhdGVS
ZWdpc3RyeUtleVRhYmxlLiIpOwotICAgIG1fYXRvbWljVGFibGUucmVtb3ZlKGl0ZXJhdG9yKTsK
LQotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeUtleVRhYmxlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGMzMjUyYThjN2I0NmQwMWYzODhhNTEwZWE5MTMxMDZhYWY4NTFhYTQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeUtleVRhYmxlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSAiVGVtcGxhdGVSZWdpc3RyeUtleS5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZSB7
Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGVtcGxhdGVSZWdpc3RyeUtleVRhYmxlKTsKLXB1
YmxpYzoKLSAgICB1c2luZyBTdHJpbmdWZWN0b3IgPSBWZWN0b3I8U3RyaW5nLCA0PjsKLSAgICB1
c2luZyBPcHRpb25hbFN0cmluZ1ZlY3RvciA9IFZlY3RvcjxzdGQ6Om9wdGlvbmFsPFN0cmluZz4s
IDQ+OwotCi0gICAgVGVtcGxhdGVSZWdpc3RyeUtleVRhYmxlKCkgPSBkZWZhdWx0OwotCi0gICAg
UmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+IGNyZWF0ZUtleShTdHJpbmdWZWN0b3ImJiByYXdTdHJp
bmdzLCBPcHRpb25hbFN0cmluZ1ZlY3RvciYmIGNvb2tlZFN0cmluZ3MpOwotCi0gICAgdm9pZCB1
bnJlZ2lzdGVyKFRlbXBsYXRlUmVnaXN0cnlLZXkmKTsKLQotICAgIH5UZW1wbGF0ZVJlZ2lzdHJ5
S2V5VGFibGUoKTsKLQotcHJpdmF0ZToKLSAgICBzdHJ1Y3QgS2V5SGFzaCB7Ci0gICAgICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFRlbXBsYXRlUmVnaXN0cnlLZXkqIGtleSkgeyByZXR1
cm4ga2V5LT5oYXNoKCk7IH0KLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVGVtcGxh
dGVSZWdpc3RyeUtleSogYSwgY29uc3QgVGVtcGxhdGVSZWdpc3RyeUtleSogYikgeyByZXR1cm4g
KmEgPT0gKmI7IH0KLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1w
dHlPckRlbGV0ZWQgPSBmYWxzZTsKLSAgICB9OwotCi0gICAgSGFzaFNldDxUZW1wbGF0ZVJlZ2lz
dHJ5S2V5KiwgS2V5SGFzaD4gbV9hdG9taWNUYWJsZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDJiZjViNmY5OTI2NTkxMDNj
MjU4MDVlYWE3OTFkM2I1M2QzODM3OTcuLjMyN2E3YzUwMDI5N2MyZjlmYzM4NmYyNWMzMDYxZWYz
NGM4ODBhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTg3LDcgKzg3
LDcgQEAKICNpbmNsdWRlICJKU1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTb3VyY2VDb2Rl
LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdIZWFwQ2VsbFR5cGUuaCIKLSNpbmNsdWRlICJKU1RlbXBs
YXRlUmVnaXN0cnlLZXkuaCIKKyNpbmNsdWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5o
IgogI2luY2x1ZGUgIkpTV2Vha01hcC5oIgogI2luY2x1ZGUgIkpTV2Vha1NldC5oIgogI2luY2x1
ZGUgIkpTV2ViQXNzZW1ibHkuaCIKQEAgLTM0NCw3ICszNDQsNyBAQCBWTTo6Vk0oVk1UeXBlIHZt
VHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgc2NyaXB0RmV0Y2hQYXJhbWV0ZXJzU3RydWN0
dXJlLnNldCgqdGhpcywgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnM6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKICAgICBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5zZXQoKnRo
aXMsIFN0cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgc3BhcnNlQXJyYXlWYWx1ZU1hcFN0cnVjdHVyZS5zZXQoKnRoaXMsIFNwYXJzZUFycmF5
VmFsdWVNYXA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICB0ZW1w
bGF0ZVJlZ2lzdHJ5S2V5U3RydWN0dXJlLnNldCgqdGhpcywgSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgdGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yU3RydWN0dXJlLnNldCgqdGhpcywgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0
b3I6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBhcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBBcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcykpOwogICAgIHVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB1bmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCmluZGV4IDBhMzI1MWFjNjBkMTk2N2RkZGQ0Njc5NzgyMWU2ZTZhMGUw
YmU2MDEuLjYzYjhkNDBmOTRiNzUwZGQ1OThmNTAxMzkyMjA0ZTQ0MzRiZjM0MDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNTEsNyArNTEsNiBAQAogI2luY2x1ZGUgIlNtYWxs
U3RyaW5ncy5oIgogI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNhY2hl
LmgiCi0jaW5jbHVkZSAiVGVtcGxhdGVSZWdpc3RyeUtleVRhYmxlLmgiCiAjaW5jbHVkZSAiVk1F
bnRyeVJlY29yZC5oIgogI2luY2x1ZGUgIlZNVHJhcHMuaCIKICNpbmNsdWRlICJUaHJlYWRMb2Nh
bENhY2hlLmgiCkBAIC00MzYsNyArNDM1LDcgQEAgcHVibGljOgogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IHNjcmlwdEZldGNoUGFyYW1ldGVyc1N0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBzdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzcGFyc2VB
cnJheVZhbHVlTWFwU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHRlbXBsYXRlUmVn
aXN0cnlLZXlTdHJ1Y3R1cmU7CisgICAgU3Ryb25nPFN0cnVjdHVyZT4gdGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGFycmF5QnVmZmVyTmV1
dGVyaW5nV2F0Y2hwb2ludFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB1bmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB1bmxp
bmtlZFByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmU7CkBAIC00NzQsNyArNDczLDYgQEAgcHVibGlj
OgogCiAgICAgQXRvbWljU3RyaW5nVGFibGUqIG1fYXRvbWljU3RyaW5nVGFibGU7CiAgICAgV1RG
OjpTeW1ib2xSZWdpc3RyeSBtX3N5bWJvbFJlZ2lzdHJ5OwotICAgIFRlbXBsYXRlUmVnaXN0cnlL
ZXlUYWJsZSBtX3RlbXBsYXRlUmVnaXN0cnlLZXl0YWJsZTsKICAgICBDb21tb25JZGVudGlmaWVy
cyogcHJvcGVydHlOYW1lczsKICAgICBjb25zdCBBcmdMaXN0KiBlbXB0eUxpc3Q7CiAgICAgU21h
bGxTdHJpbmdzIHNtYWxsU3RyaW5nczsKQEAgLTQ4OCw4ICs0ODYsNiBAQCBwdWJsaWM6CiAgICAg
QXRvbWljU3RyaW5nVGFibGUqIGF0b21pY1N0cmluZ1RhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9h
dG9taWNTdHJpbmdUYWJsZTsgfQogICAgIFdURjo6U3ltYm9sUmVnaXN0cnkmIHN5bWJvbFJlZ2lz
dHJ5KCkgeyByZXR1cm4gbV9zeW1ib2xSZWdpc3RyeTsgfQogCi0gICAgVGVtcGxhdGVSZWdpc3Ry
eUtleVRhYmxlJiB0ZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUoKSB7IHJldHVybiBtX3RlbXBsYXRl
UmVnaXN0cnlLZXl0YWJsZTsgfQotCiAgICAgV2Vha0dDTWFwPFN5bWJvbEltcGwqLCBTeW1ib2ws
IFB0ckhhc2g8U3ltYm9sSW1wbCo+PiBzeW1ib2xJbXBsVG9TeW1ib2xNYXA7CiAKICAgICBlbnVt
IGNsYXNzIERlbGV0ZVByb3BlcnR5TW9kZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAppbmRleCBhMDYxNjZhODFjOTM2ZjNjNTYxNDg1MTMxZmNl
NjRiMGZhMzZiMDhhLi5kMTA5MTVhZWZmZTJjZWY0MzdiOTY4NjY0OWE0YzNkZTRmZWNhMTFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJWTUVudHJ5U2NvcGUuaCIKIAogI2luY2x1ZGUgIkRp
c2FsbG93Vk1SZWVudHJ5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgogI2luY2x1ZGUgIlRo
cmVhZExvY2FsQ2FjaGVJbmxpbmVzLmgiCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNjMjU3MGI4ZDQ5NGQyOTBhNGJiMzJiZmNiMGRjNzcw
OWQ5MWNiN2IuLjNiNDBjZGFkZTFiYWM3NDJjYTU0MDFhNDgwNmFjZDY5NTFmYzgwZDMgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjMgQEAKKzIwMTgtMDItMTIgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4K
KworICAgICAgICBbSlNDXSBjYWNoZSBUYWdnZWRUZW1wbGF0ZSBhcnJheXMgYnkgY2FsbHNpdGUg
cmF0aGVyIHRoYW4gYnkgY29udGVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MjcxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L2VjbWEyNjIvcHVsbC84OTAg
aW1wb3NlcyBhIGNoYW5nZSB0byB0ZW1wbGF0ZQorICAgICAgICBsaXRlcmFscywgdG8gYWxsb3cg
dGVtcGxhdGUgY2FsbHNpdGUgYXJyYXlzIHRvIGJlIGNvbGxlY3RlZCB3aGVuIHRoZQorICAgICAg
ICBjb2RlIGNvbnRhaW5pbmcgdGhlIHRhZ2dlZCB0ZW1wbGF0ZSBjYWxsIGlzIGNvbGxlY3RlZC4g
VGhpcyBzcGVjIGNoYW5nZQorICAgICAgICBoYXMgcmVjZWl2ZWQgY29uY2Vuc3VzIGFuZCBiZWVu
IHJhdGlmaWVkLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGVsaW1pbmF0ZXMgdGhlIGV0ZXJuYWwg
bWFwIGFzc29jaWF0aW5nIHRlbXBsYXRlIGNvbnRlbnRzCisgICAgICAgIHdpdGggYXJyYXlzLgor
CisgICAgICAgICogc3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZS1vYmplY3QtY29sbGVjdC5qczogUmVu
YW1lZCBmcm9tIEpTVGVzdHMvc3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZS1yZWdpc3RyeS1rZXktY29s
bGVjdC5qcy4KKyAgICAgICAgKiBzdHJlc3MvdGFnZ2VkLXRlbXBsYXRlLW9iamVjdC5qczogUmVu
YW1lZCBmcm9tIEpTVGVzdHMvc3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZS1yZWdpc3RyeS1rZXkuanMu
CisgICAgICAgICogc3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZXMtaWRlbnRpdHkuanM6CisgICAgICAg
ICogc3RyZXNzL3RlbXBsYXRlLXN0cmluZy10YWdzLWV2YWwuanM6CisKIDIwMTgtMDItMDkgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCB3YXN0ZSBtZW1v
cnkgZm9yIGVycm9yLnN0YWNrCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90YWdnZWQtdGVt
cGxhdGUtb2JqZWN0LWNvbGxlY3QuanMgYi9KU1Rlc3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGUt
b2JqZWN0LWNvbGxlY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTFjZDkxMDgxOWRkMzc3MDc4ZDc1ZmUwNTRm
ZTVlMjY4ZTVmZDkzNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3RhZ2dlZC10
ZW1wbGF0ZS1vYmplY3QtY29sbGVjdC5qcwpAQCAtMCwwICsxLDE2IEBACitmdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworCitm
dW5jdGlvbiB0YWcoc2l0ZSkKK3sKKyAgICByZXR1cm4gc2l0ZTsKK30KKworeworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgICAgIGV2YWwoYChmdW5jdGlvbiAoKSB7IHJl
dHVybiB0YWdcYCR7aX1cYDsgfSkoKWApOworfQorZ2MoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZS1vYmplY3QuanMgYi9KU1Rlc3RzL3N0cmVzcy90YWdnZWQt
dGVtcGxhdGUtb2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyYzUxMTQyYjE1NGZlZTdiMmFmNWFmMzNm
MDI3YWZlMzVjNDdmN2IKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90YWdnZWQt
dGVtcGxhdGUtb2JqZWN0LmpzCkBAIC0wLDAgKzEsMjUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0
YWcoc2l0ZSkKK3sKKyAgICByZXR1cm4gc2l0ZTsKK30KKworeworICAgIGZ1bmN0aW9uIGEoKSB7
CisgICAgICAgIHJldHVybiB0YWdgSGVsbG9gOworICAgIH0KKworICAgIGZ1bmN0aW9uIGIoKSB7
CisgICAgICAgIHJldHVybiB0YWdgSGVsbG9gOworICAgIH0KKworICAgIHNob3VsZEJlKGEoKSA9
PT0gYigpLCBmYWxzZSk7CisgICAgZ2MoKTsKKyAgICB2YXIgdGFnQSA9IGEoKTsKKyAgICBnYygp
OworICAgIHNob3VsZEJlKHRhZ0EgPT09IGIoKSwgZmFsc2UpOworfQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlLXJlZ2lzdHJ5LWtleS1jb2xsZWN0LmpzIGIvSlNU
ZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlLXJlZ2lzdHJ5LWtleS1jb2xsZWN0LmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWNkOTEwODE5ZGQzNzcwNzhkNzVmZTA1NGZlNWUy
NjhlNWZkOTM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0pTVGVzdHMvc3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZS1yZWdpc3RyeS1rZXktY29sbGVjdC5qcwor
KysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLWZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKLSAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKLSAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwotfQotCi0KLWZ1bmN0aW9uIHRhZyhz
aXRlKQotewotICAgIHJldHVybiBzaXRlOwotfQotCi17Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxZTQ7ICsraSkKLSAgICAgICAgZXZhbChgKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRhZ1xgJHtp
fVxgOyB9KSgpYCk7Ci19Ci1nYygpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGFnZ2Vk
LXRlbXBsYXRlLXJlZ2lzdHJ5LWtleS5qcyBiL0pTVGVzdHMvc3RyZXNzL3RhZ2dlZC10ZW1wbGF0
ZS1yZWdpc3RyeS1rZXkuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlYjg3NzU3
MTlkZGQyZmViOTUyNTA4YmJiMjVmYTY0ZGY4MjQ4NjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlLXJl
Z2lzdHJ5LWtleS5qcworKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLWZ1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKLSAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
LSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwotfQotCi1m
dW5jdGlvbiB0YWcoc2l0ZSkKLXsKLSAgICByZXR1cm4gc2l0ZTsKLX0KLQotewotICAgIGZ1bmN0
aW9uIGEoKSB7Ci0gICAgICAgIHJldHVybiB0YWdgSGVsbG9gOwotICAgIH0KLQotICAgIGZ1bmN0
aW9uIGIoKSB7Ci0gICAgICAgIHJldHVybiB0YWdgSGVsbG9gOwotICAgIH0KLQotICAgIHNob3Vs
ZEJlKGEoKSA9PT0gYigpLCB0cnVlKTsKLSAgICBnYygpOwotICAgIHZhciB0YWdBID0gYSgpOwot
ICAgIGdjKCk7Ci0gICAgc2hvdWxkQmUodGFnQSA9PT0gYigpLCB0cnVlKTsKLX0KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZXMtaWRlbnRpdHkuanMgYi9KU1Rlc3Rz
L3N0cmVzcy90YWdnZWQtdGVtcGxhdGVzLWlkZW50aXR5LmpzCmluZGV4IDMwMmQwMzE3NDMyMzkw
NzBkMDQ5YjNmNTIzMWZlMWY1YjkwODdlZDguLjJhYjVjN2JlYzAzZTQzZWZlOGFjNmNiY2Y4Mzcw
MjExYjVhMTZlYzQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZXMt
aWRlbnRpdHkuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlcy1pZGVudGl0
eS5qcwpAQCAtMTMsNyArMTMsNyBAQCB0YWdgV29ybGRgOwogdGFnYEhlbGxvYDsKIHNob3VsZEJl
KHRlbXBsYXRlcy5sZW5ndGgsIDMpOwogc2hvdWxkQmUodGVtcGxhdGVzWzBdICE9PSB0ZW1wbGF0
ZXNbMV0sIHRydWUpOwotc2hvdWxkQmUodGVtcGxhdGVzWzBdID09PSB0ZW1wbGF0ZXNbMl0sIHRy
dWUpOworc2hvdWxkQmUodGVtcGxhdGVzWzBdICE9PSB0ZW1wbGF0ZXNbMl0sIHRydWUpOwogCiB0
ZW1wbGF0ZXMgPSBbXTsKIHRhZ2BIZWxsb1xuYDsKQEAgLTI4LDcgKzI4LDcgQEAgZXZhbCgidGFn
YEhlbGxvXG5gIik7CiBldmFsKCJ0YWdgSGVsbG9ccmAiKTsKIGV2YWwoInRhZ2BIZWxsb1x1MjAy
OGAiKTsKIHNob3VsZEJlKHRlbXBsYXRlcy5sZW5ndGgsIDMpOwotc2hvdWxkQmUodGVtcGxhdGVz
WzBdID09PSB0ZW1wbGF0ZXNbMV0sIHRydWUpOworc2hvdWxkQmUodGVtcGxhdGVzWzBdICE9PSB0
ZW1wbGF0ZXNbMV0sIHRydWUpOwogc2hvdWxkQmUodGVtcGxhdGVzWzBdICE9PSB0ZW1wbGF0ZXNb
Ml0sIHRydWUpOwogCiB0ZW1wbGF0ZXMgPSBbXTsKQEAgLTM4LDcgKzM4LDcgQEAgZXZhbCgidGFn
YEhlbGxvXHJgIik7CiBldmFsKCJ0YWdgSGVsbG9cXHJgIik7CiBzaG91bGRCZSh0ZW1wbGF0ZXMu
bGVuZ3RoLCA0KTsKIHNob3VsZEJlKHRlbXBsYXRlc1swXSAhPT0gdGVtcGxhdGVzWzFdLCB0cnVl
KTsKLXNob3VsZEJlKHRlbXBsYXRlc1swXSA9PT0gdGVtcGxhdGVzWzJdLCB0cnVlKTsKK3Nob3Vs
ZEJlKHRlbXBsYXRlc1swXSAhPT0gdGVtcGxhdGVzWzJdLCB0cnVlKTsKIHNob3VsZEJlKHRlbXBs
YXRlc1swXSAhPT0gdGVtcGxhdGVzWzNdLCB0cnVlKTsKIHNob3VsZEJlKHRlbXBsYXRlc1sxXSAh
PT0gdGVtcGxhdGVzWzJdLCB0cnVlKTsKIHNob3VsZEJlKHRlbXBsYXRlc1sxXSAhPT0gdGVtcGxh
dGVzWzNdLCB0cnVlKTsKQEAgLTQ5LDcgKzQ5LDcgQEAgdGVtcGxhdGVzID0gW107CiBldmFsKCJ0
YWdgSGVsbG9cbiR7dn13b3JsZGAiKTsKIGV2YWwoInRhZ2BIZWxsb1xuJHt2fXdvcmxkYCIpOwog
c2hvdWxkQmUodGVtcGxhdGVzLmxlbmd0aCwgMik7Ci1zaG91bGRCZSh0ZW1wbGF0ZXNbMF0gPT09
IHRlbXBsYXRlc1sxXSwgdHJ1ZSk7CitzaG91bGRCZSh0ZW1wbGF0ZXNbMF0gIT09IHRlbXBsYXRl
c1sxXSwgdHJ1ZSk7CiAKIHZhciB2ID0gMDsKIHRlbXBsYXRlcyA9IFtdOwpAQCAtNTcsMyArNTcs
ODUgQEAgZXZhbCgidGFnYEhlbGxvJHt2fVxud29ybGRgIik7CiBldmFsKCJ0YWdgSGVsbG9cbiR7
dn13b3JsZGAiKTsKIHNob3VsZEJlKHRlbXBsYXRlcy5sZW5ndGgsIDIpOwogc2hvdWxkQmUodGVt
cGxhdGVzWzBdICE9PSB0ZW1wbGF0ZXNbMV0sIHRydWUpOworCit2YXIgdiA9IDA7Cit0ZW1wbGF0
ZXMgPSBbXTsKK2ZvciAodiA9IDA7IHYgPCAzOyArK3YpIHsKKyAgICB0YWdgSGVsbG8ke3Z9d29y
bGRgOworICAgIGlmICghdikgY29udGludWU7CisgICAgc2hvdWxkQmUodGVtcGxhdGVzW3ZdID09
PSB0ZW1wbGF0ZXNbdiAtIDFdLCB0cnVlKTsKK30KKwordGVtcGxhdGVzID0gW107Cit0YWdgSGVs
bG8kezF9d29ybGRgOwordGFnYEhlbGxvJHsyfXdvcmxkYDsKK3Nob3VsZEJlKHRlbXBsYXRlc1sw
XSAhPT0gdGVtcGxhdGVzWzFdLCB0cnVlKTsKKworLy8gRGlzYWJsZSBldmFsIGNhY2hpbmcgaWYg
YSB0YWdnZWQgdGVtcGxhdGUgb2NjdXJzIGluIGV2YWwgY29kZQordmFyIHYgPSAwOwordGVtcGxh
dGVzID0gW107Citmb3IgKHYgPSAwOyB2IDwgMzsgKyt2KSB7CisgICAgZXZhbCgidGFnYEhlbGxv
JHt2fXdvcmxkYCIpOworICAgIGlmICghdikgY29udGludWU7CisgICAgc2hvdWxkQmUodGVtcGxh
dGVzW3ZdICE9PSB0ZW1wbGF0ZXNbdiAtIDFdLCB0cnVlKTsKK30KKwordGVtcGxhdGVzID0gW107
CitldmFsKCJ0YWdgSGVsbG8kezF9d29ybGRgIik7CitldmFsKCJ0YWdgSGVsbG8kezJ9d29ybGRg
Iik7CitldmFsKCJ0YWdgSGVsbG8kezN9d29ybGRgIik7CitzaG91bGRCZSh0ZW1wbGF0ZXNbMF0g
IT09IHRlbXBsYXRlc1sxXSwgdHJ1ZSk7CitzaG91bGRCZSh0ZW1wbGF0ZXNbMV0gIT09IHRlbXBs
YXRlc1syXSwgdHJ1ZSk7CisKKworLy8gRGlzYWJsZSBldmFsIGNhY2hpbmcgaWYgYSB0YWdnZWQg
dGVtcGxhdGUgb2NjdXJzIGluIGEgbmVzdGVkIGZ1bmN0aW9uCit2YXIgdiA9IDA7Cit0ZW1wbGF0
ZXMgPSBbXTsKK2ZvciAodiA9IDA7IHYgPCA2OyB2ICs9IDIpIHsKKyAgICBldmFsKCIoZnVuY3Rp
b24oKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgMjsgKytpKSB0YWdgSGVsbG8ke3Z9d29ybGRgIH0p
KCkiKTsKKyAgICBzaG91bGRCZSh0ZW1wbGF0ZXNbdl0gPT09IHRlbXBsYXRlc1t2ICsgMV0sIHRy
dWUpOworfQorCitzaG91bGRCZSh0ZW1wbGF0ZXNbMF0gIT09IHRlbXBsYXRlc1syXSwgdHJ1ZSk7
CitzaG91bGRCZSh0ZW1wbGF0ZXNbMF0gIT09IHRlbXBsYXRlc1s0XSwgdHJ1ZSk7CitzaG91bGRC
ZSh0ZW1wbGF0ZXNbMV0gIT09IHRlbXBsYXRlc1szXSwgdHJ1ZSk7CitzaG91bGRCZSh0ZW1wbGF0
ZXNbMV0gIT09IHRlbXBsYXRlc1s1XSwgdHJ1ZSk7CitzaG91bGRCZSh0ZW1wbGF0ZXNbMl0gIT09
IHRlbXBsYXRlc1s0XSwgdHJ1ZSk7CitzaG91bGRCZSh0ZW1wbGF0ZXNbM10gIT09IHRlbXBsYXRl
c1s1XSwgdHJ1ZSk7CisKK3RlbXBsYXRlcyA9IFtdOworZXZhbCgiKGZ1bmN0aW9uKCkgeyBmb3Ig
KHZhciBpID0gMDsgaSA8IDI7ICsraSkgdGFnYEhlbGxvJHsxfXdvcmxkYCB9KSgpIik7CitldmFs
KCIoZnVuY3Rpb24oKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgMjsgKytpKSB0YWdgSGVsbG8kezJ9
d29ybGRgIH0pKCkiKTsKK2V2YWwoIihmdW5jdGlvbigpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCAy
OyArK2kpIHRhZ2BIZWxsbyR7Mn13b3JsZGAgfSkoKSIpOworc2hvdWxkQmUodGVtcGxhdGVzWzBd
ID09PSB0ZW1wbGF0ZXNbMV0sIHRydWUpOworc2hvdWxkQmUodGVtcGxhdGVzWzBdICE9PSB0ZW1w
bGF0ZXNbMl0sIHRydWUpOworc2hvdWxkQmUodGVtcGxhdGVzWzBdICE9PSB0ZW1wbGF0ZXNbNF0s
IHRydWUpOworc2hvdWxkQmUodGVtcGxhdGVzWzFdICE9PSB0ZW1wbGF0ZXNbM10sIHRydWUpOwor
c2hvdWxkQmUodGVtcGxhdGVzWzFdICE9PSB0ZW1wbGF0ZXNbNV0sIHRydWUpOworc2hvdWxkQmUo
dGVtcGxhdGVzWzJdID09PSB0ZW1wbGF0ZXNbM10sIHRydWUpOworc2hvdWxkQmUodGVtcGxhdGVz
WzJdICE9PSB0ZW1wbGF0ZXNbNF0sIHRydWUpOworc2hvdWxkQmUodGVtcGxhdGVzWzNdICE9PSB0
ZW1wbGF0ZXNbNV0sIHRydWUpOworc2hvdWxkQmUodGVtcGxhdGVzWzRdID09PSB0ZW1wbGF0ZXNb
NV0sIHRydWUpOworCisvLyBEaXNhYmxlIGV2YWwgY2FjaGluZyBpZiBhIHRhZ2dlZCB0ZW1wbGF0
ZSBvY2N1cnMgaW4gYW4gZXZlbiBkZWVwZXIgbmVzdGVkIGZ1bmN0aW9uCit2YXIgdiA9IDA7Cit0
ZW1wbGF0ZXMgPSBbXTsKK2ZvciAodiA9IDA7IHYgPCAzOyArK3YpIHsKKyAgICBldmFsKCIoZnVu
Y3Rpb24oKSB7IChmdW5jdGlvbigpIHsgdGFnYEhlbGxvJHt2fXdvcmxkYCB9KSgpIH0pKCkiKTsK
KyAgICBpZiAoIXYpIGNvbnRpbnVlOworICAgIHNob3VsZEJlKHRlbXBsYXRlc1t2XSAhPT0gdGVt
cGxhdGVzW3YgLSAxXSwgdHJ1ZSk7Cit9CisKK3RlbXBsYXRlcyA9IFtdOworZXZhbCgiKGZ1bmN0
aW9uKCkgeyAoZnVuY3Rpb24oKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgMjsgKytpKSB0YWdgSGVs
bG8kezF9d29ybGRgIH0pKCkgfSkoKSIpOworZXZhbCgiKGZ1bmN0aW9uKCkgeyAoZnVuY3Rpb24o
KSB7IGZvciAodmFyIGkgPSAwOyBpIDwgMjsgKytpKSB0YWdgSGVsbG8kezJ9d29ybGRgIH0pKCkg
fSkoKSIpOworZXZhbCgiKGZ1bmN0aW9uKCkgeyAoZnVuY3Rpb24oKSB7IGZvciAodmFyIGkgPSAw
OyBpIDwgMjsgKytpKSB0YWdgSGVsbG8kezJ9d29ybGRgIH0pKCkgfSkoKSIpOworc2hvdWxkQmUo
dGVtcGxhdGVzWzBdID09PSB0ZW1wbGF0ZXNbMV0sIHRydWUpOworc2hvdWxkQmUodGVtcGxhdGVz
WzBdICE9PSB0ZW1wbGF0ZXNbMl0sIHRydWUpOworc2hvdWxkQmUodGVtcGxhdGVzWzBdICE9PSB0
ZW1wbGF0ZXNbNF0sIHRydWUpOworc2hvdWxkQmUodGVtcGxhdGVzWzFdICE9PSB0ZW1wbGF0ZXNb
M10sIHRydWUpOworc2hvdWxkQmUodGVtcGxhdGVzWzFdICE9PSB0ZW1wbGF0ZXNbNV0sIHRydWUp
Oworc2hvdWxkQmUodGVtcGxhdGVzWzJdID09PSB0ZW1wbGF0ZXNbM10sIHRydWUpOworc2hvdWxk
QmUodGVtcGxhdGVzWzJdICE9PSB0ZW1wbGF0ZXNbNF0sIHRydWUpOworc2hvdWxkQmUodGVtcGxh
dGVzWzNdICE9PSB0ZW1wbGF0ZXNbNV0sIHRydWUpOworc2hvdWxkQmUodGVtcGxhdGVzWzRdID09
PSB0ZW1wbGF0ZXNbNV0sIHRydWUpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGVtcGxh
dGUtc3RyaW5nLXRhZ3MtZXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBsYXRlLXN0cmluZy10
YWdzLWV2YWwuanMKaW5kZXggNDE2ZWQ2YThhZDQ2MTg2NjcxMzA0ZDZiOWNjZGIzZWIyZjZmYWE2
Mi4uNDJiZmYxZWE1MmMzOGM2OWY3MDI0ZmRhODkzZmUxNTc0Yjk4NWYwZCAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9zdHJlc3MvdGVtcGxhdGUtc3RyaW5nLXRhZ3MtZXZhbC5qcworKysgYi9KU1Rlc3Rz
L3N0cmVzcy90ZW1wbGF0ZS1zdHJpbmctdGFncy1ldmFsLmpzCkBAIC0xMyw1ICsxMyw1IEBAIHZh
ciBzaXRlMSA9IGV2YWwoIjAsIHRhZ2BDb2NvYWAiKTsKIHZhciBzaXRlMiA9IGV2YWwoIjEsIHRh
Z2BDYXBwdWNjaW5vYCIpOwogdmFyIHNpdGUzID0gZXZhbCgiMiwgdGFnYENvY29hYCIpOwogCi1z
aG91bGRCZShzaXRlMSA9PT0gc2l0ZTMsIHRydWUpOworc2hvdWxkQmUoc2l0ZTEgIT09IHNpdGUz
LCB0cnVlKTsKIHNob3VsZEJlKHNpdGUxICE9PSBzaXRlMiwgdHJ1ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333693</attachid>
            <date>2018-02-13 09:01:32 -0800</date>
            <delta_ts>2018-02-13 10:10:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182717-20180213120131.patch</filename>
            <type>text/plain</type>
            <size>105403</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4Mzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NGE3MDg2YzliMTMwMmVjY2ZlZjEzYjMxNWM2NzhiZGM3OGI4YjMwLi5lYWZlNDE3ZGViZGVhZGU0
NTI3MGMxNGQ5OGE5NGRiZGNlMzJlZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzYgQEAKKzIwMTgtMDItMTMgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBjYWNoZSBUYWdnZWRUZW1wbGF0ZSBhcnJheXMgYnkgY2FsbHNp
dGUgcmF0aGVyIHRoYW4gYnkgY29udGVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MjcxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L2VjbWEyNjIvcHVsbC84
OTAgaW1wb3NlcyBhIGNoYW5nZSB0byB0ZW1wbGF0ZQorICAgICAgICBsaXRlcmFscywgdG8gYWxs
b3cgdGVtcGxhdGUgY2FsbHNpdGUgYXJyYXlzIHRvIGJlIGNvbGxlY3RlZCB3aGVuIHRoZQorICAg
ICAgICBjb2RlIGNvbnRhaW5pbmcgdGhlIHRhZ2dlZCB0ZW1wbGF0ZSBjYWxsIGlzIGNvbGxlY3Rl
ZC4gVGhpcyBzcGVjIGNoYW5nZQorICAgICAgICBoYXMgcmVjZWl2ZWQgY29uY2Vuc3VzIGFuZCBi
ZWVuIHJhdGlmaWVkLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGVsaW1pbmF0ZXMgdGhlIGV0ZXJu
YWwgbWFwIGFzc29jaWF0aW5nIHRlbXBsYXRlIGNvbnRlbnRzCisgICAgICAgIHdpdGggYXJyYXlz
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNl
dENvbnN0YW50UmVnaXN0ZXJzKToKKyAgICAgICAgKiBieXRlY29kZS9EaXJlY3RFdmFsQ29kZUNh
Y2hlLmNwcDoKKyAgICAgICAgKEpTQzo6RGlyZWN0RXZhbENvZGVDYWNoZTo6c2V0U2xvdyk6Cisg
ICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjph
bGxvd0RpcmVjdEV2YWxDYWNoZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFRl
bXBsYXRlT2JqZWN0Q29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdldFRlbXBsYXRlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmFkZFRlbXBsYXRlUmVnaXN0cnlLZXlDb25zdGFudCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5j
cHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAg
ICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RXZhbEV4
ZWN1dGFibGU6OmFsbG93RGlyZWN0RXZhbENhY2hlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpTR2xv
YmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0ZW1wbGF0ZVJlZ2lzdHJ5KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0pTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnkuY3BwLgorICAg
ICAgICAoSlNDOjpKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6SlNUZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OmRlc3Ryb3kp
OgorICAgICAgICAoSlNDOjpKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6Y3JlYXRlVGVtcGxh
dGVPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3Iu
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVGVtcGxhdGVS
ZWdpc3RyeUtleS5oLgorICAgICAgICAoSlNDOjppc1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcik6
CisgICAgICAgICogcnVudGltZS9KU1RlbXBsYXRlUmVnaXN0cnlLZXkuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIHJ1bnRpbWUvVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlLZXkuY3Bw
LgorICAgICAgICAoSlNDOjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6On5UZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJl
Z2lzdHJ5S2V5LmguCisgICAgICAgIChKU0M6OlRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6b3Bl
cmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6
b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBsYXRlT2JqZWN0RGVzY3JpcHRv
cjo6SGFzaGVyOjpoYXNoKToKKyAgICAgICAgKEpTQzo6VGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
OjpIYXNoZXI6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6VGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OlRlbXBs
YXRlT2JqZWN0RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OlRlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvcjo6Y2FsY3VsYXRlSGFzaCk6CisgICAgICAgICogcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeUtleVRhYmxl
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZN
OjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6dGVtcGxh
dGVSZWdpc3RyeUtleVRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1ZNRW50cnlT
Y29wZS5jcHA6CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6c2V0Q29uc3RhbnRSZWdpc3RlcnMpOgorICAgICAgICAqIGJ5dGVjb2RlL0RpcmVjdEV2
YWxDb2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RFdmFsQ29kZUNhY2hlOjpzZXRT
bG93KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YWxsb3dEaXJlY3RFdmFsQ2FjaGUgY29uc3QpOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRUZW1wbGF0ZU9iamVjdENvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRUZW1wbGF0ZU9iamVjdCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjphZGRUZW1wbGF0ZVJlZ2lzdHJ5S2V5Q29uc3RhbnQp
OiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZU1lbWJlckV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyTW9kZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0V2YWxFeGVjdXRhYmxl
Lmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjphbGxvd0RpcmVjdEV2YWxDYWNoZSBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dGVtcGxhdGVS
ZWdpc3RyeSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU1RlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wbGF0ZVJlZ2lzdHJ5LmNwcC4KKyAgICAgICAgKEpTQzo6SlNUZW1wbGF0ZU9iamVjdERlc2Ny
aXB0b3I6OkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6SlNUZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6SlNUZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3I6OmNyZWF0ZVRlbXBsYXRlT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pT
VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1RlbXBsYXRlUmVnaXN0cnlLZXkuaC4KKyAgICAgICAgKEpTQzo6aXNU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUZW1wbGF0ZVJl
Z2lzdHJ5S2V5LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wbGF0ZVJlZ2lzdHJ5S2V5LmNwcC4KKyAgICAgICAgKEpTQzo6VGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yOjp+VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1l
L1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeUtleS5oLgorICAgICAgICAoSlNDOjpUZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3I6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoSlND
OjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6Okhhc2hlcjo6aGFzaCk6CisgICAgICAgIChKU0M6
OlRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6SGFzaGVyOjplcXVhbCk6CisgICAgICAgIChKU0M6
OlRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yOjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpOgorICAgICAgICAo
SlNDOjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OmNhbGN1bGF0ZUhhc2gpOgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeS5oOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUv
VGVtcGxhdGVSZWdpc3RyeUtleVRhYmxlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1l
L1RlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoK
KyAgICAgICAgKEpTQzo6Vk06OnRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZSk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwOgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENvbnN0YW50UmVnaXN0ZXJzKToKKyAg
ICAgICAgKiBieXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6
RGlyZWN0RXZhbENvZGVDYWNoZTo6c2V0U2xvdyk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFsbG93RGly
ZWN0RXZhbENhY2hlIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkVGVtcGxhdGVP
YmplY3RDb25zdGFudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0
VGVtcGxhdGVPYmplY3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkVGVt
cGxhdGVSZWdpc3RyeUtleUNvbnN0YW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKiBw
YXJzZXIvUGFyc2VyLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAg
ICogcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJs
ZTo6YWxsb3dEaXJlY3RFdmFsQ2FjaGUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmpl
Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OnRlbXBsYXRlUmVnaXN0cnkpOiBEZWxldGVkLgorICAgICAgICAqIHJ1
bnRpbWUvSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeS5jcHAuCisgICAgICAgIChK
U0M6OkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRv
cik6CisgICAgICAgIChKU0M6OkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6ZGVzdHJveSk6CisgICAg
ICAgIChKU0M6OkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpjcmVhdGVUZW1wbGF0ZU9iamVj
dCk6CisgICAgICAgICogcnVudGltZS9KU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oOiBSZW5h
bWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUZW1wbGF0ZVJlZ2lzdHJ5
S2V5LmguCisgICAgICAgIChKU0M6OmlzVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKToKKyAgICAg
ICAgKiBydW50aW1lL0pTVGVtcGxhdGVSZWdpc3RyeUtleS5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogcnVudGltZS9UZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeUtleS5jcHAuCisgICAg
ICAgIChKU0M6OlRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6flRlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvcik6CisgICAgICAgICogcnVudGltZS9UZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlL
ZXkuaC4KKyAgICAgICAgKEpTQzo6VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpvcGVyYXRvcj09
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpvcGVyYXRv
ciE9IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpIYXNo
ZXI6Omhhc2gpOgorICAgICAgICAoSlNDOjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6Okhhc2hl
cjo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OlRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6VGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpj
YWxjdWxhdGVIYXNoKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBsYXRlUmVnaXN0cnkuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToK
KyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjp0ZW1wbGF0ZVJlZ2lz
dHJ5S2V5VGFibGUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNjb3BlLmNw
cDoKKwogMjAxOC0wMi0xMSAgR3VpbGxhdW1lIEVtb250ICA8Z3VpamVtb250QGlnYWxpYS5jb20+
CiAKICAgICAgICAgW01JUFNdIEpTQyBuZWVkcyB0byBiZSBidWlsdCB3aXRoIC1sYXRvbWljCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNjYwY2U4ZDc4NThiNGI3NjgyM2Zh
ZmVlZTNjNmNlYWYzMDZhMTI0Yi4uMDY3Yjg2YTk4Mzg0OGJlNzI4NTIzOGI5YzgyYjBjMTVkYTI3
MDQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODU4LDkgKzg1OCw3
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9GT1JXQVJESU5HX0hFQURFUlMKICAgICBydW50aW1lL1N5
bWJvbC5oCiAgICAgcnVudGltZS9TeW1ib2xQcm90b3R5cGUuaAogICAgIHJ1bnRpbWUvU3ltYm9s
VGFibGUuaAotICAgIHJ1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeS5oCi0gICAgcnVudGltZS9UZW1w
bGF0ZVJlZ2lzdHJ5S2V5LmgKLSAgICBydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5o
CisgICAgcnVudGltZS9UZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaAogICAgIHJ1bnRpbWUvVGVz
dFJ1bm5lclV0aWxzLmgKICAgICBydW50aW1lL1Rocm93U2NvcGUuaAogICAgIHJ1bnRpbWUvVG9O
YXRpdmVGcm9tVmFsdWUuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhOGUzNDQy
NTI0MmIwNTZmNjliODkyYzYyMTdkZjljNWVlZjYxZTZjLi5jZmE3ZTA3YTdhZGU3YTU4OGViZjVm
ODY2YzlmMmVhOWZmMmFkMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA4
OCw5ICsxMDg4LDggQEAKIAkJNzBERTlBMDkxQkU3RDY5RTAwNUQ4OUQ5IC8qIExMSW50QXNzZW1i
bHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwREU5
QTA4MUJFN0Q2NzAwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggKi87IH07CiAJCTcwRUMwRUMz
MUFBMEQ3REEwMEI2QUFGQSAvKiBKU1N0cmluZ0l0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDMEVCRDFBQTBEN0RBMDBCNkFBRkEgLyog
SlNTdHJpbmdJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcwRUMwRUM3MUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvclBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzBFQzBFQzExQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzBFQ0E2MDYx
QUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDExQUZEQkVBMjAwNDQ5NzM5
IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07Ci0JCTcwRUNBNjA4MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0
ZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MEVDQTYwMzFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTcwRUNBNjA5MUFGREJF
QTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVt
cGxhdGVSZWdpc3RyeUtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTcwRUNBNjA2MUFGREJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzBFQ0E2MDExQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBF
Q0E2MDkxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDQxQUZEQkVB
MjAwNDQ5NzM5IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyQUFGN0NFMUQwRDMxQjMwMDVFNjBC
RSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkFBRjdDQzFEMEQzMThCMDA1RTYwQkUgLyogSlND
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oICovOyB9OwogCQk3OTAwODEzOTFFOTVBOEVDMDA1
MkQ3Q0QgLyogV2FzbU1vZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzkwMDgxMzcxRTk1QThFQzAwNTJEN0NEIC8qIFdhc21Nb2R1bGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3OTA1QkI2OTFE
MTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTA1QkI2NzFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5l
QWNjZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTEyMDksNyArMTIwOCw2IEBACiAJCTkzMkY1QkREMDgyMkExQzcwMDczNjk3NSAvKiBqc2Mu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDVFMTJE
ODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi87IH07CiAJCTkzMkY1QkVBMDgyMkExQzcw
MDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUgLyog
SmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwogCQk5MzMwNDAwNDBFNkE3NDk0MDA3ODZF
NkEgLyogU21hbGxTdHJpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5MzMwM0ZFQTBFNkE3MkMwMDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTVENDI2MUFG
NEM4NENFMkFDQkFDOTgxIC8qIFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGQzJGMzdBQjc2NDgzQTk5NjY2
ODhGIC8qIFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk2MDA5N0E2MEVCQUJCNTgwMDdBNzI5NyAvKiBM
YWJlbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NjAwOTdBNTBFQkFCQjU4MDA3QTcyOTcgLyogTGFiZWxTY29wZS5oICovOyB9OwogCQk5Njg4
Q0IxNTBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Njg4Q0IxMzBFRDEyQjRFMDAxRDY0OUYg
LyogQXNzZW1ibGVyQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTY4OENCMTYwRUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTY4OENCMTQw
RUQxMkI0RTAwMUQ2NDlGIC8qIFg4NkFzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xOTQyLDcgKzE5NDAsNiBAQAogCiAvKiBCZWdp
biBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAkJMDAwQkVBRjBERjYwNDQ4MUFGNkFCNjhD
IC8qIE1vZHVsZVNjb3BlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
b2R1bGVTY29wZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDhGQzJGMzdB
Qjc2NDgzQTk5NjY2ODhGIC8qIFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwMTIzMzAxOTQ0RUExQjAwODQzQTBDIC8qIERGR1Zh
bHVlU3RyZW5ndGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
VmFsdWVTdHJlbmd0aC5jcHA7IHBhdGggPSBkZmcvREZHVmFsdWVTdHJlbmd0aC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMDEyMzMxMTk0NEVBMUIwMDg0M0EwQyAvKiBERkdW
YWx1ZVN0cmVuZ3RoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ZhbHVl
U3RyZW5ndGguaDsgcGF0aCA9IGRmZy9ERkdWYWx1ZVN0cmVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMDMzMkJGMThBREZBRTEwMDVGOTc5QSAvKiBFeGl0aW5nSklUVHlw
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGl0aW5nSklUVHlw
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNTkwLDExICszNTg3LDkgQEAK
IAkJNzBFQzBFQkQxQUEwRDdEQTAwQjZBQUZBIC8qIEpTU3RyaW5nSXRlcmF0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdJdGVyYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MEVDMEVDMDFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRl
cmF0b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MEVDMEVDMTFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzBFQ0E2MDAxQUZEQkVBMjAwNDQ5NzM5
IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1RlbXBsYXRlUmVnaXN0cnlLZXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk3MEVDQTYwMTFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZVJlZ2lzdHJ5
S2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVGVtcGxhdGVSZWdpc3Ry
eUtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEVDQTYwMjFBRkRCRUEyMDA0
NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUZW1wbGF0ZVJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNzBFQ0E2MDMxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcGxhdGVSZWdpc3RyeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxh
dGVSZWdpc3RyeUtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wbGF0
ZVJlZ2lzdHJ5S2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwRUNBNjAwMUFG
REJFQTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwRUNBNjAxMUFGREJFQTIwMDQ0OTcz
OSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFBRjdDQjFE
MEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJBQUY3Q0MxRDBEMzE4QjAw
NUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3N0IyNUNCMkMzMDk0QTkyQTM4RTFEQjMgLyogSlNNb2R1
bGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVMb2Fk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3ODQsNyArMzc3OSw2IEBACiAJ
CTg4NTIxNTFBOUMzODQyMzg5QjMyMTVCNyAvKiBTY3JpcHRGZXRjaGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEZldGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOEIxNzM1RUYxRTkyRTUyOTAwMzY5MDU0IC8qIEFzeW5jRnJvbVN5bmNJdGVy
YXRvclByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9
IEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOEIzQkY1RTMxRTNEMzY1QTAwNzZBODdBIC8qIEFzeW5jR2VuZXJhdG9yUHJvdG90
eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY0dlbmVyYXRv
clByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOEI0N0YyMzQz
NjZDNEI3MkFDODUyQTdFIC8qIFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QjYwMTZGMzFGM0UzQ0MwMDBGOURFNkEg
LyogQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCThCNjAxNkY0MUYzRTNDQzAwMEY5REU2QSAvKiBB
c3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCThCOUY2RDU1MUQ1OTEyRkEwMDFDNzM5RiAvKiBJdGVyYXRpb25LaW5k
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEl0ZXJhdGlvbktpbmQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0MTcsNyArNDQxMSw3IEBACiAJCUJDRjYwNTEy
MEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFyZ0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNGRDhDOTAw
RUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKdW1wVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEp1bXBUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlCREI0QjVFMDk5Q0Q0QzFCQjNDMUNGMDUgLyogVGVtcGxhdGVSZWdpc3RyeUtleS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkRCNEI1RTA5OUNENEMxQkIzQzFD
RjA1IC8qIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMjAzMjgxRTE5ODE5NzlEMDA4OEI0OTkgLyogQ3VzdG9tR2xv
YmFsT2JqZWN0Q2xhc3NUZXN0LmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IEN1
c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5jOyBwYXRoID0gQVBJL3Rlc3RzL0N1c3RvbUdsb2Jh
bE9iamVjdENsYXNzVGVzdC5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjAzMjgx
RjE5ODE5NzlEMDA4OEI0OTkgLyogQ3VzdG9tR2xvYmFsT2JqZWN0Q2xhc3NUZXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5o
OyBwYXRoID0gQVBJL3Rlc3RzL0N1c3RvbUdsb2JhbE9iamVjdENsYXNzVGVzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMjBCQTkyQzE2QkIxQzE1MDBCM0FFQTIgLyogU3RydWN0
dXJlUmFyZURhdGFJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NjYyMSw4ICs2NjE1LDggQEAKIAkJCQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcgLyogSlNDSlNW
YWx1ZS5jcHAgKi8sCiAJCQkJMTRBQkIzNkUwOTlDMDc2NDAwRTJBMjRGIC8qIEpTQ0pTVmFsdWUu
aCAqLywKIAkJCQk4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1ZUlubGluZXMu
aCAqLywKLQkJCQlGRTJCMEI3MDFGRDhDNDYzMDA3NURBNUYgLyogSlNDUG9pc29uLmggKi8sCiAJ
CQkJRkUyQjBCNjgxRkQwRDI5NzAwNzVEQTVGIC8qIEpTQ1BvaXNvbi5jcHAgKi8sCisJCQkJRkUy
QjBCNzAxRkQ4QzQ2MzAwNzVEQTVGIC8qIEpTQ1BvaXNvbi5oICovLAogCQkJCTcyQUFGN0NCMUQw
RDMxOEIwMDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcCAqLywKIAkJ
CQk3MkFBRjdDQzFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlv
bi5oICovLAogCQkJCTBGMkI2NkJEMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3LmNwcCAq
LywKQEAgLTY3MzcsOCArNjczMSw4IEBACiAJCQkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8q
IEpTU3RyaW5nSm9pbmVyLmggKi8sCiAJCQkJMEY5MTlEMDkxNTdFRTA5RDAwNEE0RTdEIC8qIEpT
U3ltYm9sVGFibGVPYmplY3QuY3BwICovLAogCQkJCTBGOTE5RDBBMTU3RUUwOUQwMDRBNEU3RCAv
KiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggKi8sCi0JCQkJNzBFQ0E2MDAxQUZEQkVBMjAwNDQ5NzM5
IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5jcHAgKi8sCi0JCQkJNzBFQ0E2MDExQUZEQkVBMjAw
NDQ5NzM5IC8qIEpTVGVtcGxhdGVSZWdpc3RyeUtleS5oICovLAorCQkJCTcwRUNBNjAwMUFGREJF
QTIwMDQ0OTczOSAvKiBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJNzBF
Q0E2MDExQUZEQkVBMjAwNDQ5NzM5IC8qIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi8s
CiAJCQkJMTRBQkI0NTQwOTlDMkEwRjAwRTJBMjRGIC8qIEpTVHlwZS5oICovLAogCQkJCTBGMkI2
NkNDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3BwICovLAog
CQkJCTBGMkI2NkNEMTdCNkI1QUIwMEE3QUUzRiAvKiBKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMu
aCAqLywKQEAgLTY5MzksMTIgKzY5MzMsOCBAQAogCQkJCTcwNUI0MUFBMUE2RTUwMUUwMDcxNjc1
NyAvKiBTeW1ib2xQcm90b3R5cGUuaCAqLywKIAkJCQkwRjkxOUQyNzE1ODU2NzcwMDA0QTRFN0Qg
LyogU3ltYm9sVGFibGUuY3BwICovLAogCQkJCTE0QTM5NkE2MENEMjkzMzEwMEI1QjRGRiAvKiBT
eW1ib2xUYWJsZS5oICovLAotCQkJCTcwRUNBNjAyMUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0
ZVJlZ2lzdHJ5LmNwcCAqLywKLQkJCQk3MEVDQTYwMzFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxh
dGVSZWdpc3RyeS5oICovLAotCQkJCUJEQjRCNUUwOTlDRDRDMUJCM0MxQ0YwNSAvKiBUZW1wbGF0
ZVJlZ2lzdHJ5S2V5LmNwcCAqLywKLQkJCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVt
cGxhdGVSZWdpc3RyeUtleS5oICovLAotCQkJCThCNDdGMjM0MzY2QzRCNzJBQzg1MkE3RSAvKiBU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUuY3BwICovLAotCQkJCTA4RkMyRjM3QUI3NjQ4M0E5OTY2
Njg4RiAvKiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUuaCAqLywKKwkJCQlCREI0QjVFMDk5Q0Q0
QzFCQjNDMUNGMDUgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmNwcCAqLywKKwkJCQk3MEVD
QTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggKi8sCiAJ
CQkJMEZBMkMxNzkxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAgKi8sCiAJ
CQkJMEZBMkMxN0ExN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5oICovLAogCQkJ
CUZFMkU2QTdBMUQ2RUE1RkUwMDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLywKQEAgLTgwODIs
NyArODA3Miw2IEBACiAJCQkJMEYyQUM1NzExRThFRTQ1NDAwMDFFRTNGIC8qIEFpckZvcm1UYWJs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1NzcxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckZy
ZXF1ZW50ZWRCbG9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1NzkxQkRBQ0RDNzAwODBG
Rjc0IC8qIEFpckdlbmVyYXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjc1QTA2MTIwMEQyNjE4
MDAzOEUyQ0YgLyogTG9jYWxBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTdB
MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJHZW5lcmF0aW9uQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZFQzg1N0MxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckhhbmRsZUNhbGxlZVNhdmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU3RTFCREFDREM3MDA4MEZGNzQgLyogQWlySW5zZXJ0
aW9uU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTgxMjEsOCArODExMCw5IEBACiAJCQkJMEZFQzND
NTMxRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQTc2MjBCMURCOTU5RjkwMEI3QTJGRCAvKiBBbGxvY2F0aW5nU2NvcGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRENFMTFDMUZBRTYyMDkwMDZGMzkwMSAvKiBBbGxvY2F0aW9u
RmFpbHVyZU1vZGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGOTYzMDNBMUQ0MTkyQzgwMDU2MDlE
OSAvKiBDZWxsQXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NUEwNjMyMDBEMjYx
RjAwMzhFMkNGIC8qIEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMENCNUUxRkNF
NEUzNzAwNEI1MzIzIC8qIEFsbG9jYXRvckZvck1vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
NzVBMDYyMjAwRDI2MUQwMDM4RTJDRiAvKiBBbGxvY2F0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjM3MzA5MTFDMENENzBDMDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzBFOTE5RjVCMTAxMDA5OEY1RUMg
LyogQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNDhE
MTkxMTc3MjM2NUIwMEM2NUE1RiAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAq
LywKQEAgLTgyNDgsNyArODIzOCw2IEBACiAJCQkJMEY2QjhBREQxQzRFRkFDMzAwOTY5MDUyIC8q
IEIzU1NBQ2FsY3VsYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzM0ZDRjgxQzEzNkUyNTAw
MzIzRjY3IC8qIEIzU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkVDODUzMTFCREFDREFDMDA4MEZGNzQgLyogQjNTdGFja21hcFNwZWNpYWwuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTBGNzVBMDY0MjAwRDI2MjgwMDM4RTJDRiAvKiBUaHJlYWRMb2NhbENhY2hl
TGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOERGMjFCRTkzQUQxMDAxM0M4OEYgLyog
QjNTdGFja21hcFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk0OTU4ODFDNTdGNDc1MDA0
MTNBNDggLyogQjNTdGFja1Nsb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM2MUJEQUNE
QUMwMDgwRkY3NCAvKiBCM1N1Y2Nlc3NvckNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAt
ODI3OCw2ICs4MjY3LDggQEAKIAkJCQk4NjE4MTY3NzFGQjc5MjQyMDBFQ0M0RUMgLyogQmlnSW50
T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4Njk3NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyog
QmlnSW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY0QjI3MjFBNzg0QkFGMDA2
RTRFNjYgLyogQmluYXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMkI5MTZDMjE0REEw
MTRFMDBDQkFDODYgLyogQmxvY2tEaXJlY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGN0RG
MTQ2MUUyQkVGNkEwMDk1OTUxQiAvKiBCbG9ja0RpcmVjdG9yeUlubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDM0VDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBCb29sZWFuT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk5QjQ2OTQzOTFGOTc0MzlFMDBDQ0IzRjkgLyogQm9vbGVhblByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk2QjczMTkxQkRBMDY4MDAwMzMxQjg0IC8qIEJv
b2xlYW5Qcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKQEAgLTgzMzAsNiArODMyMSw3IEBA
CiAJCQkJMEYzQjdFMkIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRTgwQzE5NzFENzc1Q0REMDA4NTEwQzAgLyogQ2F0Y2hTY29wZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyNEU1NDIxN0VBOUY1OTAwQUJCMjE3IC8qIENDYWxsSGVscGVycy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY5NjMwM0ExRDQxOTJDODAwNTYwOUQ5IC8qIENlbGxBdHRy
aWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjA3MEE0NzFENTQzQThCMDA2RTcyMzIgLyog
Q2VsbENvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwNzBBNDgxRDU0M0E5MDAwNkU3
MjMyIC8qIENlbGxDb250YWluZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTFCRDAx
RTFFNzIwMDJBMDAxMzRCQzkgLyogQ2VsbExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtODM1Niw3
ICs4MzQ4LDYgQEAKIAkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogQ29tYmluZWREb21h
aW5zLmpzb24gaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNGMzBFMTZGNUNEMDBCMzQ0NjAgLyog
Q29tbW9uSWRlbnRpZmllcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRCN0E3M0Uw
MDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGNjBGRTkw
MUZGQzM3MDIwMDAzMzIwQSAvKiBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2NTUzQTMzMjE3QTFGMUVFMDA4Q0Y2RjMgLyogQ29tbW9uU2xvd1BhdGhzRXhj
ZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEODJFMzkxNDFBQjE0RDAwMTc5Qzk0IC8q
IENvbXBhY3RKSVRDb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0U1QTNBODE3OTc0MzJE
MDBFODkzQzAgLyogQ29tcGlsYXRpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLApAQCAtODQxOCw3
ICs4NDA5LDYgQEAKIAkJCQkwRjFFM0E0NjE1MzRDQkFGMDAwRjk0NTYgLyogREZHQXJndW1lbnRQ
b3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyREQ4MTIxQUIzRDhCRTAwQkJCOEU4IC8q
IERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkRE
ODE0MUFCM0Q4QkUwMEJCQjhFOCAvKiBERkdBcmd1bWVudHNVdGlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTBGNzVBMDYzMjAwRDI2MUYwMDM4RTJDRiAvKiBBbGxvY2F0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNDg1MzIyMTg3NzUwNTYwMDgzQjY4NyAvKiBERkdBcml0aE1vZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMDVDM0I0MTY4M0NGOTIwMEJBRjQ1QiAvKiBERkdBcnJheWlm
eVNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQ4NTE1RTQ4MTFC
MDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTg1MjcsNyArODUx
Nyw2IEBACiAJCQkJMEY3QzM5RkYxQzkwQzU1QjAwNDgwMTUxIC8qIERGR09wSW5mby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTdEODlDRkUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR09TUkF2YWlsYWJp
bGl0eUFuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTU3MTQxREFGMTAw
MDE3OUM5NCAvKiBERkdPU1JFbnRyeS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY0MkIzQzMyMDFF
QzlGRjAwMzU3MDMxIC8qIFNlY3VyaXR5T3JpZ2luVG9rZW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09T
UkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBE
RkdPU1JFeGl0QmFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NjI5LDYgKzg2MTgsNyBAQAogCQkJ
CUE3NjZCNDRGMEVFOERDRDEwMDk1MThDQSAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxNDczNDFDQzFEQzAyRDcyMDBBQTI5QkEgLyogRXhlY3V0YWJsZUJhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTQyRTUzMUI3OTZFREQwMEY0QkY0QiAvKiBFeGVjdXRh
YmxlSW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY2MEZFOTAxRkZDMzcwMjAwMDMzMjBBIC8q
IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTZBMUQz
MTUwMDBGMzUwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjNBQzc1NDE4OEU1RUM4MDAzMjAyOUYgLyogRXhpdGluZ0pJVFR5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQjEwNTg2MTY3NTQ4MTIwMEY4QUI2RSAvKiBFeGl0S2luZC5oIGluIEhlYWRl
cnMgKi8sCkBAIC04NzAwLDcgKzg2OTAsNiBAQAogCQkJCUZFQTBDNDAzMUNERDdEMUQwMDQ4MTk5
MSAvKiBGdW5jdGlvbldoaXRlbGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQ0U2M0QxOENB
NUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNCRTJDQUUxNEU5ODVBQTAwMDU5M0FEIC8qIEdDQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMEY3NUEwNjAyMDBEMjYwQjAwMzhFMkNGIC8qIExvY2FsQWxsb2NhdG9ySW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdDQXdhcmVK
SVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEMEU1RUExRTQzRDM0RDAwMDZB
QjA4IC8qIEdDQ29uZHVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI0NzY3RTFEOTlBRUE5
MDA4RUE2Q0IgLyogR0NEZWZlcnJhbENvbnRleHQuaCBpbiBIZWFkZXJzICovLApAQCAtODc4NSw3
ICs4Nzc0LDYgQEAKIAkJCQkwRkI3RjM5QTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFk
ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5QjE1RUQ4RTQ2MDBGMTY3QjIg
LyogSW5kZXhpbmdUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDM4NkE3OTFERDY5ODlDMDA4
NjUyQzQgLyogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY3
NUEwNjIyMDBEMjYxRDAwMzhFMkNGIC8qIEFsbG9jYXRvcklubGluZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQkY5MkI5MUZENzZGRkYwMEFDMjhBOCAvKiBJbmZlcnJlZFN0cnVjdHVyZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZCRjkyQkExRkQ3NzAwNDAwQUMyOEE4IC8qIEluZmVycmVkU3Ry
dWN0dXJlV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQTc1MjMxQjk0QkZBOTAw
MTEwNjYwIC8qIEluZmVycmVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04ODY1LDYgKzg4NTMs
NyBAQAogCQkJCUJDMThDNDE1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29yZVByZWZp
eC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyOUQ5MzAwRUQyMkQ3MDAwQjg5NjE5IC8qIEpJVC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxMjIwMjcxQkU3RjU4QzAwMzlFNkYyIC8qIEpJVEFkZEdl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NUEwNjYyMDEzRTRGMTAwMzhFMkNGIC8q
IEpJVEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzQTA2QjIxQzEwQ0I4OTAwMzkw
RkREIC8qIEpJVEJpdEFuZEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzQTA2QTgx
QzEwQkM4MTAwMzkwRkREIC8qIEpJVEJpdEJpbmFyeU9wR2VuZXJhdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRTNBMDZBNjFDMTBCNzJEMDAzOTBGREQgLyogSklUQml0T3JHZW5lcmF0b3IuaCBp
biBIZWFkZXJzICovLApAQCAtODk3MSw3ICs4OTYwLDYgQEAKIAkJCQlFMzNGNTA3OTFCODQyMjU3
MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTMzRjUwODcxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA4NTFCODQzN0EwMDA0MTM4NTYg
LyogSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY3NUEw
NUUyMDBEMjVGNjAwMzhFMkNGIC8qIFRocmVhZExvY2FsQ2FjaGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUzM0Y1MDc1MUI4NDIxQzAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMUUxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2
YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzAxM0NBOEMx
QjQ5MUE5NDAwQ0FFNjEzIC8qIEpTSm9iLmggaW4gSGVhZGVycyAqLywKQEAgLTkwMjMsNyArOTAx
MSw3IEBACiAJCQkJQkMxOEM0MjkwRTE2RjVDRDAwQjM0NDYwIC8qIEpTU3RyaW5nUmVmQ0YuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBMjhENEE4MTc3QjcxQzgwMDA3RkEzQyAvKiBKU1N0cmluZ1Jl
ZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDBEMTU3RUUwQTIwMDRBNEU3RCAv
KiBKU1N5bWJvbFRhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk3MEVDQTYwNjFBRkRC
RUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3MEVDQTYwNjFBRkRCRUEyMDA0NDk3MzkgLyogSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUFENUMzNkVBMUY3NUFENkEwMDBCQ0FBRiAvKiBKU1RvV2Fz
bS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MkEwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM0ODZCQjcxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlw
ZWRBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC05MDkwLDYgKzkwNzgsOCBAQAogCQkJCTUzRkEy
QUUxMUNGMzdGM0YwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3
MiAvKiBMTEludFNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzOUQxNEJDRjQ2
NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjc1QTA2MTIw
MEQyNjE4MDAzOEUyQ0YgLyogTG9jYWxBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
NzVBMDYwMjAwRDI2MEIwMDM4RTJDRiAvKiBMb2NhbEFsbG9jYXRvcklubGluZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMjA4QUQ3MURGMDkyNUQwMDdEMzI2OSAvKiBMb2NrRHVyaW5nTWFya2lu
Zy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MzcwRTE2RjVDRDAwQjM0NDYwIC8qIExvb2t1
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xl
dmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTExMCw4ICs5MTAwLDYgQEAKIAkJ
CQlBNzAwODczQTE3Q0JFODUzMDBDM0U2NDMgLyogTWFwQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3NERFRjk0MTgyRDk5MTQwMDUyMkMyMiAvKiBNYXBJdGVyYXRvclByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcwMDg3M0UxN0NCRThEMzAwQzNFNjQzIC8qIE1hcFBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQzJCOTE2QzIxNERBMDE0RTAwQ0JBQzg2IC8q
IEJsb2NrRGlyZWN0b3J5LmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjdERjE0NjFFMkJFRjZBMDA5
NTk1MUIgLyogQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJE
NkYwOTEzNTM5QTI4MDBCMDJFODYgLyogTWFya2VkQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGN0M1RkI4MUQ4ODhBMEMwMDQ0RjVFMiAvKiBNYXJrZWRCbG9ja0lubGluZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0MTQ0OENCMTNBMTc2RUMwMEY1QkExQSAvKiBNYXJrZWRCbG9ja1NldC5o
IGluIEhlYWRlcnMgKi8sCkBAIC05Mjg1LDYgKzkyNzMsNyBAQAogCQkJCUE1NENGMkZBMTg0RUFF
REEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NTE2NUQ1
MUJERjEzNUEwMDNCNzVDMSAvKiBTY3JpcHRQcm9maWxpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTU0Q0YyRjYxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjQyQjNDMzIwMUVDOUZGMDAzNTcwMzEgLyogU2VjdXJpdHlPcmlnaW5Ub2tl
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyOTlEQTYxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzkwREQ2RTE4MkY0OTk3MDA1ODg4MDcg
LyogU2V0SXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Mjk5REEyMTdE
MTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTM2MCwx
MSArOTM0OSwxMSBAQAogCQkJCTBGMUZCMzhGMUUxNzNBNjcwMEE5QkU1MCAvKiBTeW5jaHJvbm91
c1N0b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODRB
MjY0MTFEMTY2MjIwMDU3NzZBQyAvKiBTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlEQzc5OTc4MzFDREU5RkEwMDA0RDRBMDkgLyogVGFnUmVnaXN0ZXJzTW9kZS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNzBFQ0E2MDgxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnku
aCBpbiBIZWFkZXJzICovLAotCQkJCTcwRUNBNjA5MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0
ZVJlZ2lzdHJ5S2V5LmggaW4gSGVhZGVycyAqLywKLQkJCQk5NUQ0MjYxQUY0Qzg0Q0UyQUNCQUM5
ODEgLyogVGVtcGxhdGVSZWdpc3RyeUtleVRhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MEVD
QTYwOTFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjI0RTU0RjE3RUUyNzQ5MDBBQkIyMTcgLyogVGVtcFJlZ2lzdGVyU2V0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkEyQzE3QzE3RDdDRjg0MDA5RDAxNUYgLyogVGVzdFJ1
bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjc1QTA1RTIwMEQyNUY2MDAzOEUyQ0Yg
LyogVGhyZWFkTG9jYWxDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY3NUEwNjQyMDBEMjYy
ODAwMzhFMkNGIC8qIFRocmVhZExvY2FsQ2FjaGVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZFMzQyMjEyMUQ2QjgxQzMwMDMyQkU4OCAvKiBUaHJvd1Njb3BlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjU3MkQ0RjE2ODc5RkREMDBFNTdGQkQgLyogVGh1bmtHZW5lcmF0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3Mzg2NTU2MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMu
aCBpbiBIZWFkZXJzICovLApAQCAtOTQ3MSw3ICs5NDYwLDYgQEAKIAkJCQkxNEU4NEZBMjE0RUUx
QUNDMDBENkQ1RDQgLyogV2Vha0ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QkU3RDMzMTcx
MzVDRjQwMEQxODA3QSAvKiBXZWFrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdDQTNB
RTQxN0RBNDFBRTAwNjUzOEFGIC8qIFdlYWtNYXBDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMEY3NUEwNjYyMDEzRTRGMTAwMzhFMkNGIC8qIEpJVEFsbG9jYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTNBMzJCQzcxRkM4MzE0NzAwN0Q3RTc2IC8qIFdlYWtNYXBJbXBsLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMzkzQUREODFGRTcwMkQwMDAyMkQ2ODEgLyogV2Vha01hcEltcGxJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0NBM0FFNjE3REE0MUFFMDA2NTM4QUYgLyog
V2Vha01hcFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKaW5kZXggODE5ODgwMjdlNTU5MjYwODE2OThjMTBiZTNlMWM0ZDJjM2Y5ZjQ3MC4uNjA5MzFj
NTljYmU5NzUyNGIwMmRkMjY1NzUwMzhmNDc0MjU0NzdmNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dApAQCAtODM1LDcgKzgzNSw3IEBAIHJ1bnRpbWUvSlNTdHJpbmdJdGVyYXRvci5jcHAK
IHJ1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwCiBydW50aW1lL0pTU3RyaW5nSGVhcENlbGxUeXBl
LmNwcAogcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAotcnVudGltZS9KU1RlbXBsYXRl
UmVnaXN0cnlLZXkuY3BwCitydW50aW1lL0pTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmNwcAog
cnVudGltZS9KU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuY3BwCiBydW50aW1lL0pTVHlwZWRBcnJh
eVByb3RvdHlwZXMuY3BwCiBydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAK
QEAgLTkxNyw5ICs5MTcsNyBAQCBydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAogcnVudGlt
ZS9TeW1ib2xPYmplY3QuY3BwCiBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKIHJ1bnRpbWUv
U3ltYm9sVGFibGUuY3BwCi1ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnkuY3BwCi1ydW50aW1lL1Rl
bXBsYXRlUmVnaXN0cnlLZXkuY3BwCi1ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5j
cHAKK3J1bnRpbWUvVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmNwcAogcnVudGltZS9UZXN0UnVu
bmVyVXRpbHMuY3BwCiBydW50aW1lL1Rocm93U2NvcGUuY3BwCiBydW50aW1lL1R5cGVMb2NhdGlv
bkNhY2hlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAppbmRleCA2ODNhOTY4ZmQwZTViNTFhMDZjMjcyNGNkZjZiMDJjNDgxZjAyNzhhLi4zZGI0MzU4
NjIzODVmMTJhMjNhMDlmZjc1OWM4ZTg1NWU5ZmY5MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNjIsNyArNjIsNyBAQAogI2luY2x1ZGUg
IkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU1NldC5oIgogI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCi0jaW5jbHVkZSAiSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmgiCisjaW5jbHVkZSAi
SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKICNp
bmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIKICNpbmNsdWRlICJMTEludFByb3RvdHlwZUxvYWRB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuaCIKQEAgLTk0Miw4ICs5NDIsOSBAQCB2b2lkIENv
ZGVCbG9jazo6c2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uc3QgVmVjdG9yPFdyaXRlQmFycmllcjxV
bmtub3duPj4mIGNvbnN0YQogICAgICAgICAgICAgICAgICAgICBjbG9uZS0+c2V0UmFyZURhdGFD
b2RlQmxvY2sodGhpcyk7CiAKICAgICAgICAgICAgICAgICBjb25zdGFudCA9IGNsb25lOwotICAg
ICAgICAgICAgfSBlbHNlIGlmIChpc1RlbXBsYXRlUmVnaXN0cnlLZXkodm0sIGNvbnN0YW50KSkg
ewotICAgICAgICAgICAgICAgIGF1dG8qIHRlbXBsYXRlT2JqZWN0ID0gZ2xvYmFsT2JqZWN0LT50
ZW1wbGF0ZVJlZ2lzdHJ5KCkuZ2V0VGVtcGxhdGVPYmplY3QoZXhlYywganNDYXN0PEpTVGVtcGxh
dGVSZWdpc3RyeUtleSo+KGNvbnN0YW50KSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yKHZtLCBjb25zdGFudCkpIHsKKyAgICAgICAgICAgICAgICBh
dXRvIGRlc2NyaXB0b3IgPSBqc0Nhc3Q8SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqPihjb25z
dGFudCk7CisgICAgICAgICAgICAgICAgYXV0byogdGVtcGxhdGVPYmplY3QgPSBkZXNjcmlwdG9y
LT5jcmVhdGVUZW1wbGF0ZU9iamVjdChleGVjKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgICAgICAgICAgICAgIGNvbnN0YW50ID0gdGVt
cGxhdGVPYmplY3Q7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAKaW5kZXggNWJmZWYxMjAxNjE4
MDczNzYyMTYzNjcwODA4MDU5MGY4ZGM4YWIyMi4uMTQ0ODY0MDA3MzhkMmZkOTNjNDI5ZGJjNDNk
ZjlhOWRjNjIxZjYyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcApAQCAtMzIsNiArMzIsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogdm9pZCBEaXJlY3RFdmFsQ29kZUNhY2hlOjpzZXRTbG93KEV4ZWNTdGF0ZSogZXhl
YywgSlNDZWxsKiBvd25lciwgY29uc3QgU3RyaW5nJiBldmFsU291cmNlLCBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlSW5kZXgsIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBldmFsRXhlY3V0YWJsZSkKIHsK
KyAgICBpZiAoIWV2YWxFeGVjdXRhYmxlLT5hbGxvd0RpcmVjdEV2YWxDYWNoZSgpKQorICAgICAg
ICByZXR1cm47CisKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogICAgIG1fY2FjaGVN
YXAuc2V0KENhY2hlS2V5KGV2YWxTb3VyY2UsIGNhbGxTaXRlSW5kZXgpLCBXcml0ZUJhcnJpZXI8
RGlyZWN0RXZhbEV4ZWN1dGFibGU+KGV4ZWMtPnZtKCksIG93bmVyLCBldmFsRXhlY3V0YWJsZSkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAppbmRleCBjNzU5MWUxYjNmNTNhMjMxNjgzZWI5YmFiNzk1ODQ4ZmI3M2VhMjU3Li41
NGQ1YTRlODdmMGZkOTZkNDNhMGMzZDVkMDJmNWM5YTI5MzUxY2NlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMTM0LDYg
KzEzNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ2xhc3NDb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9pc0NsYXNzQ29udGV4dDsgfQogICAgIGJvb2wgaGFzVGFpbENhbGxzKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNUYWlsQ2FsbHM7IH0KICAgICB2b2lkIHNldEhhc1RhaWxDYWxscygpIHsgbV9o
YXNUYWlsQ2FsbHMgPSB0cnVlOyB9CisgICAgYm9vbCBhbGxvd0RpcmVjdEV2YWxDYWNoZSgpIGNv
bnN0IHsgcmV0dXJuICEobV9mZWF0dXJlcyAmIE5vRXZhbENhY2hlRmVhdHVyZSk7IH0KIAogICAg
IHZvaWQgYWRkRXhwcmVzc2lvbkluZm8odW5zaWduZWQgaW5zdHJ1Y3Rpb25PZmZzZXQsIGludCBk
aXZvdCwKICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCB1bnNpZ25lZCBs
aW5lLCB1bnNpZ25lZCBjb2x1bW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA5MmI1ODQyOWEwZjQ3
ODYwN2E1ZTYwMzVkNzU1MjA2MWVmOTFmZjQwLi5iNGQ0ZGMzMDgxMDYyYTNhZGNmZDU1Zjg0Yjk5
ZDc3YzRhOGE5ZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDYsNyArNDYsNyBAQAogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKLSNpbmNsdWRlICJKU1RlbXBsYXRlUmVnaXN0
cnlLZXkuaCIKKyNpbmNsdWRlICJKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIgogI2luY2x1
ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVk
ZSAiU3RhY2tBbGlnbm1lbnQuaCIKQEAgLTMxMzUsMTQgKzMxMzUsMTUgQEAgSlNTdHJpbmcqIEJ5
dGVjb2RlR2VuZXJhdG9yOjphZGRTdHJpbmdDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKQogICAgIHJldHVybiBzdHJpbmdJbk1hcDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmFkZFRlbXBsYXRlUmVnaXN0cnlLZXlDb25zdGFudChSZWY8VGVtcGxhdGVS
ZWdpc3RyeUtleT4mJiB0ZW1wbGF0ZVJlZ2lzdHJ5S2V5KQorUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmFkZFRlbXBsYXRlT2JqZWN0Q29uc3RhbnQoUmVmPFRlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvcj4mJiBkZXNjcmlwdG9yKQogewotICAgIHJldHVybiBtX3RlbXBsYXRlUmVnaXN0cnlL
ZXlNYXAuZW5zdXJlKHRlbXBsYXRlUmVnaXN0cnlLZXkuY29weVJlZigpLCBbJl0gewotICAgICAg
ICBhdXRvKiByZXN1bHQgPSBKU1RlbXBsYXRlUmVnaXN0cnlLZXk6OmNyZWF0ZSgqdm0oKSwgV1RG
TW92ZSh0ZW1wbGF0ZVJlZ2lzdHJ5S2V5KSk7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gYWRk
Q29uc3RhbnRJbmRleCgpOwotICAgICAgICBtX2NvZGVCbG9jay0+YWRkQ29uc3RhbnQocmVzdWx0
KTsKLSAgICAgICAgcmV0dXJuICZtX2NvbnN0YW50UG9vbFJlZ2lzdGVyc1tpbmRleF07CisgICAg
SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqIGRlc2NyaXB0b3JWYWx1ZSA9IG1fdGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yTWFwLmVuc3VyZShkZXNjcmlwdG9yLmNvcHlSZWYoKSwgWyZdIHsKKyAg
ICAgICAgcmV0dXJuIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpjcmVhdGUoKnZtKCksIFdU
Rk1vdmUoZGVzY3JpcHRvcikpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKworICAgIGludCBp
bmRleCA9IGFkZENvbnN0YW50SW5kZXgoKTsKKyAgICBtX2NvZGVCbG9jay0+YWRkQ29uc3RhbnQo
ZGVzY3JpcHRvclZhbHVlKTsKKyAgICByZXR1cm4gJm1fY29uc3RhbnRQb29sUmVnaXN0ZXJzW2lu
ZGV4XTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdBcnJheShS
ZWdpc3RlcklEKiBkc3QsIEVsZW1lbnROb2RlKiBlbGVtZW50cywgdW5zaWduZWQgbGVuZ3RoKQpA
QCAtNDQwMSw4ICs0NDAyLDggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0
aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW8KIAogUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRUZW1wbGF0ZU9iamVjdChSZWdpc3RlcklEKiBk
c3QsIFRhZ2dlZFRlbXBsYXRlTm9kZSogdGFnZ2VkVGVtcGxhdGUpCiB7Ci0gICAgVGVtcGxhdGVS
ZWdpc3RyeUtleTo6U3RyaW5nVmVjdG9yIHJhd1N0cmluZ3M7Ci0gICAgVGVtcGxhdGVSZWdpc3Ry
eUtleTo6T3B0aW9uYWxTdHJpbmdWZWN0b3IgY29va2VkU3RyaW5nczsKKyAgICBUZW1wbGF0ZU9i
amVjdERlc2NyaXB0b3I6OlN0cmluZ1ZlY3RvciByYXdTdHJpbmdzOworICAgIFRlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvcjo6T3B0aW9uYWxTdHJpbmdWZWN0b3IgY29va2VkU3RyaW5nczsKIAogICAg
IFRlbXBsYXRlU3RyaW5nTGlzdE5vZGUqIHRlbXBsYXRlU3RyaW5nID0gdGFnZ2VkVGVtcGxhdGUt
PnRlbXBsYXRlTGl0ZXJhbCgpLT50ZW1wbGF0ZVN0cmluZ3MoKTsKICAgICBmb3IgKDsgdGVtcGxh
dGVTdHJpbmc7IHRlbXBsYXRlU3RyaW5nID0gdGVtcGxhdGVTdHJpbmctPm5leHQoKSkgewpAQCAt
NDQxNCw3ICs0NDE1LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRU
ZW1wbGF0ZU9iamVjdChSZWdpc3RlcklEKiBkc3QsIFRhZ2dlZFRlbXAKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgY29va2VkU3RyaW5ncy5hcHBlbmQoc3RyaW5nLT5jb29rZWQoKS0+aW1wbCgp
KTsKICAgICB9Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbnN0YW50ID0gYWRkVGVtcGxhdGVS
ZWdpc3RyeUtleUNvbnN0YW50KG1fdm0tPnRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZSgpLmNyZWF0
ZUtleShXVEZNb3ZlKHJhd1N0cmluZ3MpLCBXVEZNb3ZlKGNvb2tlZFN0cmluZ3MpKSk7CisgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGNvbnN0YW50ID0gYWRkVGVtcGxhdGVPYmplY3RDb25zdGFudChU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OmNyZWF0ZShXVEZNb3ZlKHJhd1N0cmluZ3MpLCBXVEZN
b3ZlKGNvb2tlZFN0cmluZ3MpKSk7CiAgICAgaWYgKCFkc3QpCiAgICAgICAgIHJldHVybiBjb25z
dGFudC5nZXQoKTsKICAgICByZXR1cm4gZW1pdE1vdmUoZHN0LCBjb25zdGFudC5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKaW5kZXggMTRkYjcwNjg1ZjVmZTU5MzVkM2YwYWJhOWM2YWYyNjUwMTBmNDdiZi4u
ODgyNGE4MTI4MDk0OGM3MjNiNDYwZTQ3MTljNmZlYzdiZDNlNGMwMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApA
QCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiTGFiZWwu
aCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKQEAgLTQzLDcg
KzQ0LDYgQEAKICNpbmNsdWRlICJSZWdpc3RlcklELmgiCiAjaW5jbHVkZSAiU3RhdGljUHJvcGVy
dHlBbmFseXplci5oIgogI2luY2x1ZGUgIlN5bWJvbFRhYmxlLmgiCi0jaW5jbHVkZSAiVGVtcGxh
dGVSZWdpc3RyeUtleS5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KQEAgLTU1
LDcgKzU1LDYgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSWRlbnRpZmllcjsKLSAg
ICBjbGFzcyBKU1RlbXBsYXRlUmVnaXN0cnlLZXk7CiAKICAgICBlbnVtIEV4cGVjdGVkRnVuY3Rp
b24gewogICAgICAgICBOb0V4cGVjdGVkRnVuY3Rpb24sCkBAIC0xMDA4LDcgKzEwMDcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdXNpbmcgTnVtYmVyTWFwID0gSGFzaE1hcDxkb3VibGUs
IEpTVmFsdWU+OwogICAgICAgICB1c2luZyBJZGVudGlmaWVyU3RyaW5nTWFwID0gSGFzaE1hcDxV
bmlxdWVkU3RyaW5nSW1wbCosIEpTU3RyaW5nKiwgSWRlbnRpZmllclJlcEhhc2g+OwogICAgICAg
ICB1c2luZyBJZGVudGlmaWVyQmlnSW50TWFwID0gSGFzaE1hcDxCaWdJbnRNYXBFbnRyeSwgSlNC
aWdJbnQqPjsKLSAgICAgICAgdXNpbmcgVGVtcGxhdGVSZWdpc3RyeUtleU1hcCA9IEhhc2hNYXA8
UmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+LCBSZWdpc3RlcklEKj47CisgICAgICAgIHVzaW5nIFRl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvck1hcCA9IEhhc2hNYXA8UmVmPFRlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvcj4sIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKj47CiAKICAgICAgICAgLy8gSGVs
cGVyIGZvciBlbWl0Q2FsbCgpIGFuZCBlbWl0Q29uc3RydWN0KCkuIFRoaXMgd29ya3MgYmVjYXVz
ZSB0aGUgc2V0IG9mCiAgICAgICAgIC8vIGV4cGVjdGVkIGZ1bmN0aW9ucyBoYXZlIGlkZW50aWNh
bCBiZWhhdmlvciBmb3IgYm90aCBjYWxsIGFuZCBjb25zdHJ1Y3QKQEAgLTEwOTMsNyArMTA5Miw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgSlNTdHJpbmcqIGFkZFN0
cmluZ0NvbnN0YW50KGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgSlNWYWx1ZSBhZGRCaWdJ
bnRDb25zdGFudChjb25zdCBJZGVudGlmaWVyJiwgdWludDhfdCByYWRpeCk7Ci0gICAgICAgIFJl
Z2lzdGVySUQqIGFkZFRlbXBsYXRlUmVnaXN0cnlLZXlDb25zdGFudChSZWY8VGVtcGxhdGVSZWdp
c3RyeUtleT4mJik7CisgICAgICAgIFJlZ2lzdGVySUQqIGFkZFRlbXBsYXRlT2JqZWN0Q29uc3Rh
bnQoUmVmPFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4mJik7CiAKICAgICAgICAgVmVjdG9yPFVu
bGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiYgaW5zdHJ1Y3Rpb25z
KCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KIApAQCAtMTE5Myw3ICsxMTkyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWVNYXAgbV9qc1ZhbHVlTWFwOwogICAgICAgICBJ
ZGVudGlmaWVyU3RyaW5nTWFwIG1fc3RyaW5nTWFwOwogICAgICAgICBJZGVudGlmaWVyQmlnSW50
TWFwIG1fYmlnSW50TWFwOwotICAgICAgICBUZW1wbGF0ZVJlZ2lzdHJ5S2V5TWFwIG1fdGVtcGxh
dGVSZWdpc3RyeUtleU1hcDsKKyAgICAgICAgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yTWFwIG1f
dGVtcGxhdGVPYmplY3REZXNjcmlwdG9yTWFwOwogCiAgICAgICAgIFN0YXRpY1Byb3BlcnR5QW5h
bHl6ZXIgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyIHsgJm1faW5zdHJ1Y3Rpb25zIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBmNDg1MTM2ZDA5OGNhOTlh
ZTEzMGVkZmNiNWQzY2E2ZTg1ZDZiNWU5Li45M2VmZmEzZTYwZmIyNGQ3MTg2NmNmMjkyMTc5NDA4
YjJlYmY2YzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0y
NzIsNiArMjcyLDggQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0
IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAgICAgICAgZmVhdHVyZXMg
fD0gU3RyaWN0TW9kZUZlYXR1cmU7CiAgICAgaWYgKHNjb3BlLT5zaGFkb3dzQXJndW1lbnRzKCkp
CiAgICAgICAgIGZlYXR1cmVzIHw9IFNoYWRvd3NBcmd1bWVudHNGZWF0dXJlOworICAgIGlmICht
X3NlZW5UYWdnZWRUZW1wbGF0ZSkKKyAgICAgICAgZmVhdHVyZXMgfD0gTm9FdmFsQ2FjaGVGZWF0
dXJlOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIGlmIChtX3BhcnNpbmdCdWlsdGluICYmIGlzUHJv
Z3JhbVBhcnNlTW9kZShwYXJzZU1vZGUpKSB7CkBAIC00ODMyLDYgKzQ4MzQsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgZmFpbElmRmFsc2UodGVtcGxhdGVMaXRlcmFs
LCAiQ2Fubm90IHBhcnNlIHRlbXBsYXRlIGxpdGVyYWwiKTsKICAgICAgICAgICAgIGJhc2UgPSBj
b250ZXh0LmNyZWF0ZVRhZ2dlZFRlbXBsYXRlKHN0YXJ0TG9jYXRpb24sIGJhc2UsIHRlbXBsYXRl
TGl0ZXJhbCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCBsYXN0VG9rZW5FbmRQb3Np
dGlvbigpKTsKICAgICAgICAgICAgIG1fcGFyc2VyU3RhdGUubm9uTEhTQ291bnQgPSBub25MSFND
b3VudDsKKyAgICAgICAgICAgIG1fc2VlblRhZ2dlZFRlbXBsYXRlID0gdHJ1ZTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAppbmRleCA3NTAzMDVjMWNkOWIxNzM1MGUwZDc1Nzc2N2ViM2ExZGNm
NTY2MWU0Li4wODMxMjFiNDhjMmMyMTc0MDdmOGI2MThmZTI1M2FiZTE4MWI3MDk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTE4NDEsNiArMTg0MSw3IEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPE1vZHVsZVNjb3BlRGF0YT4gbV9tb2R1bGVTY29wZURhdGE7CiAgICAg
RGVidWdnZXJQYXJzZURhdGEqIG1fZGVidWdnZXJQYXJzZURhdGE7CiAgICAgQ2FsbE9yQXBwbHlE
ZXB0aFNjb3BlKiBtX2NhbGxPckFwcGx5RGVwdGhTY29wZSB7IG51bGxwdHIgfTsKKyAgICBib29s
IG1fc2VlblRhZ2dlZFRlbXBsYXRlIHsgZmFsc2UgfTsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IDgyMjI5YWQwNTgxNzZhNGNhMGJjZTAz
OGYwODQ3OTZmMWY1OGFlMDEuLjJjZWE4ODI5ODA0NGQxM2FmZDBmMjk3ZTBhNTkyN2M4ZTQ4OGRh
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTMw
NCw5ICszMDQsMTAgQEAgY29uc3QgQ29kZUZlYXR1cmVzIEFycm93RnVuY3Rpb25Db250ZXh0RmVh
dHVyZSA9IDEgPDwgNzsKIGNvbnN0IENvZGVGZWF0dXJlcyBTdXBlckNhbGxGZWF0dXJlID0gICAg
ICAgICAgICAxIDw8IDg7CiBjb25zdCBDb2RlRmVhdHVyZXMgU3VwZXJQcm9wZXJ0eUZlYXR1cmUg
PSAgICAgICAgMSA8PCA5OwogY29uc3QgQ29kZUZlYXR1cmVzIE5ld1RhcmdldEZlYXR1cmUgPSAg
ICAgICAgICAgIDEgPDwgMTA7Citjb25zdCBDb2RlRmVhdHVyZXMgTm9FdmFsQ2FjaGVGZWF0dXJl
ID0gICAgICAgICAgMSA8PCAxMTsKIAogY29uc3QgQ29kZUZlYXR1cmVzIEFsbEZlYXR1cmVzID0g
RXZhbEZlYXR1cmUgfCBBcmd1bWVudHNGZWF0dXJlIHwgV2l0aEZlYXR1cmUgfCBUaGlzRmVhdHVy
ZSB8IFN0cmljdE1vZGVGZWF0dXJlIHwgU2hhZG93c0FyZ3VtZW50c0ZlYXR1cmUgfCBBcnJvd0Z1
bmN0aW9uRmVhdHVyZSB8IEFycm93RnVuY3Rpb25Db250ZXh0RmVhdHVyZSB8Ci0gICAgU3VwZXJD
YWxsRmVhdHVyZSB8IFN1cGVyUHJvcGVydHlGZWF0dXJlIHwgTmV3VGFyZ2V0RmVhdHVyZTsKKyAg
ICBTdXBlckNhbGxGZWF0dXJlIHwgU3VwZXJQcm9wZXJ0eUZlYXR1cmUgfCBOZXdUYXJnZXRGZWF0
dXJlIHwgTm9FdmFsQ2FjaGVGZWF0dXJlOwogCiB0eXBlZGVmIHVpbnQ4X3QgSW5uZXJBcnJvd0Z1
bmN0aW9uQ29kZUZlYXR1cmVzOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V2YWxFeGVjdXRhYmxlLmgKaW5kZXggZWEyZmRlMDI3MDE4YjU1YTlhNjczZjhjOWVlOTIx
MTBkZTIzZTk0ZC4uYjgzNGE3Yzk4MWVmZTc5OGM2OWM5ZmJhZGM0NzRkMzg0Zjc1MjE2NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5oCkBAIC02
MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVy
biBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25l
ZCBudW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpIHsgcmV0dXJuIG1fdW5saW5rZWRFdmFs
Q29kZUJsb2NrLT5udW1GdW5jdGlvbkhvaXN0aW5nQ2FuZGlkYXRlcygpOyB9CiAgICAgdW5zaWdu
ZWQgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzKCkgeyByZXR1cm4gbV91bmxpbmtlZEV2YWxDb2Rl
QmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyB9CisgICAgYm9vbCBhbGxvd0RpcmVjdEV2
YWxDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLT5hbGxvd0Rp
cmVjdEV2YWxDYWNoZSgpOyB9CiAKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0
YWJsZUJhc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKaW5kZXggZTk3YTliNjJkYTI4NjUxMzQzNDEyZDcyNDdkY2M5ZmU5NTEzM2E0OS4u
YzI5OTIyNmVhNmU0YWY5OTliYjkzNzQyMmRjYzI3MzUwNTFlMmE3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTEzLDcgKzEx
Myw2IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNTZXQu
aCIKICNpbmNsdWRlICJKU1N0cmluZ0l0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSlNUZW1wbGF0ZVJl
Z2lzdHJ5S2V5LmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmgiCiAjaW5j
bHVkZSAiSlNUeXBlZEFycmF5UHJvdG90eXBlcy5oIgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3Rvci5oIgpAQCAtMzUwLDcgKzM0OSw2IEBAIEpTR2xvYmFsT2JqZWN0OjpKU0ds
b2JhbE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBHbG9iYWxPYmpl
Y3RNCiAgICAgLCBtX3NldEFkZFdhdGNocG9pbnQoSXNXYXRjaGVkKQogICAgICwgbV9hcnJheVNw
ZWNpZXNXYXRjaHBvaW50KENsZWFyV2F0Y2hwb2ludCkKICAgICAsIG1fbnVtYmVyVG9TdHJpbmdX
YXRjaHBvaW50KElzV2F0Y2hlZCkKLSAgICAsIG1fdGVtcGxhdGVSZWdpc3RyeSh2bSkKICAgICAs
IG1fcnVudGltZUZsYWdzKCkKICAgICAsIG1fZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoZ2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUgPyBnbG9iYWxPYmplY3RNZXRob2RUYWJsZSA6ICZzX2dsb2JhbE9i
amVjdE1ldGhvZFRhYmxlKQogICAgICwgbV90aHJlYWRMb2NhbENhY2hlKHRocmVhZExvY2FsQ2Fj
aGUgPyBXVEZNb3ZlKHRocmVhZExvY2FsQ2FjaGUpIDogdm0uZGVmYXVsdFRocmVhZExvY2FsQ2Fj
aGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApp
bmRleCBkNjk2MTI4MjdiYzRkZTI3ZDNjNDhlYTY2NGEwZGRlMmMzNjhmZDM1Li5jZWZlNmQ1NWE3
MjlkY2Y5NDFiMjllZjlkNmIwYTIzNzEwNGRkOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRl
ICJTcGVjaWFsUG9pbnRlci5oIgogI2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgogI2luY2x1
ZGUgIlN5bWJvbFByb3RvdHlwZS5oIgotI2luY2x1ZGUgIlRlbXBsYXRlUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0Jhc2UuaD4KQEAgLTQ1OSw4ICs0NTgsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c01hcFByb3RvdHlwZVNldEZhc3RBbmROb25PYnNlcnZhYmxlKCk7CiAgICAgYm9vbCBpc1NldFBy
b3RvdHlwZUFkZEZhc3RBbmROb25PYnNlcnZhYmxlKCk7CiAKLSAgICBUZW1wbGF0ZVJlZ2lzdHJ5
IG1fdGVtcGxhdGVSZWdpc3RyeTsKLQogICAgIGJvb2wgbV9ldmFsRW5hYmxlZCB7IHRydWUgfTsK
ICAgICBib29sIG1fd2ViQXNzZW1ibHlFbmFibGVkIHsgdHJ1ZSB9OwogICAgIFN0cmluZyBtX2V2
YWxEaXNhYmxlZEVycm9yTWVzc2FnZTsKQEAgLTg4MCw4ICs4NzcsNiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX3JhcmVEYXRhLT5vcGFxdWVKU0NsYXNzRGF0YTsKICAgICB9CiAKLSAgICBU
ZW1wbGF0ZVJlZ2lzdHJ5JiB0ZW1wbGF0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gbV90ZW1wbGF0ZVJl
Z2lzdHJ5OyB9Ci0KICAgICBzdGF0aWMgcHRyZGlmZl90IHdlYWtSYW5kb21PZmZzZXQoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fd2Vha1JhbmRvbSk7IH0KICAg
ICBkb3VibGUgd2Vha1JhbmRvbU51bWJlcigpIHsgcmV0dXJuIG1fd2Vha1JhbmRvbS5nZXQoKTsg
fQogICAgIHVuc2lnbmVkIHdlYWtSYW5kb21JbnRlZ2VyKCkgeyByZXR1cm4gbV93ZWFrUmFuZG9t
LmdldFVpbnQzMigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE0YTQw
N2ZkOTMxOTEwODg1OTFlNzg5Mjk3ZmEwYjA0MjJjNjk0MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmNw
cApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKKworI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlZN
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNUZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3I6OnNfaW5mbyA9IHsgIlRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3IpIH07CisKKworSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I6OkpTVGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yKFZNJiB2bSwgUmVmPFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4m
JiBkZXNjcmlwdG9yKQorICAgIDogQmFzZSh2bSwgdm0udGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
U3RydWN0dXJlLmdldCgpKQorICAgICwgbV9kZXNjcmlwdG9yKFdURk1vdmUoZGVzY3JpcHRvcikp
Cit7Cit9CisKK0pTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKiBKU1RlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvcjo6Y3JlYXRlKFZNJiB2bSwgUmVmPFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4mJiBk
ZXNjcmlwdG9yKQoreworICAgIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKiByZXN1bHQgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4odm0u
aGVhcCkpIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKHZtLCBXVEZNb3ZlKGRlc2NyaXB0b3Ip
KTsKKyAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit2b2lkIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpkZXN0cm95KEpTQ2VsbCogY2Vs
bCkKK3sKKyAgICBzdGF0aWNfY2FzdDxKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcio+KGNlbGwp
LT5KU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6fkpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
KCk7Cit9CisKK0pTQXJyYXkqIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpjcmVhdGVUZW1w
bGF0ZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgdW5zaWduZWQg
Y291bnQgPSBkZXNjcmlwdG9yKCkuY29va2VkU3RyaW5ncygpLnNpemUoKTsKKyAgICBKU0FycmF5
KiB0ZW1wbGF0ZU9iamVjdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgY291
bnQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgIEpTQXJy
YXkqIHJhd09iamVjdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgY291bnQp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgZm9yICh1
bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKKyAgICAgICAgYXV0
byBjb29rZWQgPSBkZXNjcmlwdG9yKCkuY29va2VkU3RyaW5ncygpW2luZGV4XTsKKyAgICAgICAg
aWYgKGNvb2tlZCkKKyAgICAgICAgICAgIHRlbXBsYXRlT2JqZWN0LT5wdXREaXJlY3RJbmRleChl
eGVjLCBpbmRleCwganNTdHJpbmcoZXhlYywgY29va2VkLnZhbHVlKCkpLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSwgUHV0RGlyZWN0
SW5kZXhMaWtlUHV0RGlyZWN0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVtcGxhdGVP
YmplY3QtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4LCBqc1VuZGVmaW5lZCgpLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSwgUHV0
RGlyZWN0SW5kZXhMaWtlUHV0RGlyZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgbnVsbHB0cik7CisKKyAgICAgICAgcmF3T2JqZWN0LT5wdXREaXJlY3RJbmRleChleGVj
LCBpbmRleCwganNTdHJpbmcoZXhlYywgZGVzY3JpcHRvcigpLnJhd1N0cmluZ3MoKVtpbmRleF0p
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSwgUHV0RGlyZWN0SW5kZXhMaWtlUHV0RGlyZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgfQorCisgICAgb2JqZWN0Q29uc3RydWN0b3JG
cmVlemUoZXhlYywgcmF3T2JqZWN0KTsKKyAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwor
CisgICAgdGVtcGxhdGVPYmplY3QtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cmF3
LCByYXdPYmplY3QsIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKKworICAgIG9i
amVjdENvbnN0cnVjdG9yRnJlZXplKGV4ZWMsIHRlbXBsYXRlT2JqZWN0KTsKKyAgICBzY29wZS5h
c3NlcnROb0V4Y2VwdGlvbigpOworCisgICAgcmV0dXJuIHRlbXBsYXRlT2JqZWN0OworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5OWJkOGQx
ZGRjN2RhMDk5OTE1NTI4MzVjMzU3OWFjZjBlYjEzMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oCkBA
IC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yIGZp
bmFsIDogcHVibGljIEpTQ2VsbCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTQ2VsbDsK
KworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBu
ZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMg
SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IqIGNyZWF0ZShWTSYsIFJlZjxUZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3I+JiYpOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgIH0KKworICAgIGNvbnN0IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciYgZGVzY3JpcHRv
cigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRvci5nZXQoKTsgfQorCisgICAgSlNBcnJheSog
Y3JlYXRlVGVtcGxhdGVPYmplY3QoRXhlY1N0YXRlKik7CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCitwcml2YXRlOgorICAgIEpTVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yKFZNJiwgUmVmPFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4mJik7CisKKyAg
ICBSZWY8VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yPiBtX2Rlc2NyaXB0b3I7Cit9OworCitpbmxp
bmUgYm9vbCBpc1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcihWTSYgdm0sIEpTQ2VsbCogY2VsbCkK
K3sKKyAgICByZXR1cm4gY2VsbC0+Y2xhc3NJbmZvKHZtKSA9PSBKU1RlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvcjo6aW5mbygpOworfQorCitpbmxpbmUgYm9vbCBpc1RlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvcihWTSYgdm0sIEpTVmFsdWUgdikKK3sKKyAgICByZXR1cm4gdi5pc0NlbGwoKSAmJiBpc1Rl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvcih2bSwgdi5hc0NlbGwoKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUZW1w
bGF0ZVJlZ2lzdHJ5S2V5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVGVt
cGxhdGVSZWdpc3RyeUtleS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0MzI1
YmE0Y2U3N2Q3YzMxM2VkZTI5YTVmODcxMGY5Yzc2M2Y5Y2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU1RlbXBs
YXRlUmVnaXN0cnlLZXkuaCIKLQotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJW
TS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVtcGxhdGVSZWdp
c3RyeUtleTo6c19pbmZvID0geyAiVGVtcGxhdGVSZWdpc3RyeUtleSIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5KSB9
OwotCi0KLUpTVGVtcGxhdGVSZWdpc3RyeUtleTo6SlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5KFZNJiB2
bSwgUmVmPFRlbXBsYXRlUmVnaXN0cnlLZXk+JiYgdGVtcGxhdGVSZWdpc3RyeUtleSkKLSAgICA6
IEJhc2Uodm0sIHZtLnRlbXBsYXRlUmVnaXN0cnlLZXlTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgLCBt
X3RlbXBsYXRlUmVnaXN0cnlLZXkoV1RGTW92ZSh0ZW1wbGF0ZVJlZ2lzdHJ5S2V5KSkKLXsKLX0K
LQotSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5KiBKU1RlbXBsYXRlUmVnaXN0cnlLZXk6OmNyZWF0ZShW
TSYgdm0sIFJlZjxUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiYmIHRlbXBsYXRlUmVnaXN0cnlLZXkpCi17
Ci0gICAgSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5KiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxKU1RlbXBsYXRlUmVnaXN0cnlLZXk+KHZtLmhlYXApKSBKU1RlbXBsYXRlUmVnaXN0
cnlLZXkodm0sIFdURk1vdmUodGVtcGxhdGVSZWdpc3RyeUtleSkpOwotICAgIHJlc3VsdC0+Zmlu
aXNoQ3JlYXRpb24odm0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgSlNUZW1wbGF0
ZVJlZ2lzdHJ5S2V5OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKLXsKLSAgICBzdGF0aWNfY2FzdDxK
U1RlbXBsYXRlUmVnaXN0cnlLZXkqPihjZWxsKS0+SlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5Ojp+SlNU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUZW1wbGF0ZVJlZ2lzdHJ5S2V5Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1RlbXBsYXRlUmVnaXN0cnlLZXkuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdkNWJhZTI2Y2ZmMTU1YTQ4NzRkYTVlZmNh
ZGJkOTViYmVjNWQ4MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1RlbXBsYXRlUmVnaXN0cnlLZXku
aAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKLSNpbmNsdWRlICJUZW1wbGF0ZVJl
Z2lzdHJ5S2V5LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBKU1RlbXBsYXRlUmVnaXN0
cnlLZXkgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0g
SlNDZWxsOwotCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFz
ZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwotICAgIHN0YXRpYyBjb25z
dCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAgIERFQ0xBUkVfSU5GTzsKLQotICAg
IHN0YXRpYyBKU1RlbXBsYXRlUmVnaXN0cnlLZXkqIGNyZWF0ZShWTSYsIFJlZjxUZW1wbGF0ZVJl
Z2lzdHJ5S2V5PiYmKTsKLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
LSAgICB9Ci0KLSAgICBjb25zdCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5JiB0ZW1wbGF0ZVJlZ2lzdHJ5
S2V5KCkgY29uc3QgeyByZXR1cm4gbV90ZW1wbGF0ZVJlZ2lzdHJ5S2V5LmdldCgpOyB9Ci0KLXBy
b3RlY3RlZDoKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwotCi1wcml2YXRlOgot
ICAgIEpTVGVtcGxhdGVSZWdpc3RyeUtleShWTSYsIFJlZjxUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiYm
KTsKLQotICAgIFJlZjxUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiBtX3RlbXBsYXRlUmVnaXN0cnlLZXk7
Ci19OwotCi1pbmxpbmUgYm9vbCBpc1RlbXBsYXRlUmVnaXN0cnlLZXkoVk0mIHZtLCBKU0NlbGwq
IGNlbGwpCi17Ci0gICAgcmV0dXJuIGNlbGwtPmNsYXNzSW5mbyh2bSkgPT0gSlNUZW1wbGF0ZVJl
Z2lzdHJ5S2V5OjppbmZvKCk7Ci19Ci0KLWlubGluZSBib29sIGlzVGVtcGxhdGVSZWdpc3RyeUtl
eShWTSYgdm0sIEpTVmFsdWUgdikKLXsKLSAgICByZXR1cm4gdi5pc0NlbGwoKSAmJiBpc1RlbXBs
YXRlUmVnaXN0cnlLZXkodm0sIHYuYXNDZWxsKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZU9i
amVjdERlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1MzQzNjRiNTk0OWRkOTNlMDgzMGY0Y2Iz
MDc2ZDI2NTk2NGE5YzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsMzUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworVGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yOjp+VGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKCkKK3sKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1OGVhM2NjMDBlZDE2MzIyZTAy
ZTMwODliMGFhZTcwMjA4MjdjNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaApAQCAtMCwwICsxLDEyMiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGxpbWl0cz4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yVGFibGU7CisKK2NsYXNzIFRlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvciA6IHB1YmxpYyBSZWZDb3VudGVkPFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRv
cj4geworcHVibGljOgorICAgIHR5cGVkZWYgVmVjdG9yPFN0cmluZywgND4gU3RyaW5nVmVjdG9y
OworICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiwgND4gT3B0aW9uYWxT
dHJpbmdWZWN0b3I7CisKKyAgICBlbnVtIERlbGV0ZWRWYWx1ZVRhZyB7IERlbGV0ZWRWYWx1ZSB9
OworICAgIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcihEZWxldGVkVmFsdWVUYWcpOworICAgIGVu
dW0gRW1wdHlWYWx1ZVRhZyB7IEVtcHR5VmFsdWUgfTsKKyAgICBUZW1wbGF0ZU9iamVjdERlc2Ny
aXB0b3IoRW1wdHlWYWx1ZVRhZyk7CisKKyAgICBib29sIGlzRGVsZXRlZFZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV9yYXdTdHJpbmdzLmlzRW1wdHkoKSAmJiBtX2hhc2ggPT0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpOyB9CisKKyAgICBib29sIGlzRW1wdHlWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmF3U3RyaW5ncy5pc0VtcHR5KCkgJiYgIW1faGFzaDsgfQorCisgICAg
dW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaDsgfQorCisgICAgY29uc3QgU3Ry
aW5nVmVjdG9yJiByYXdTdHJpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9yYXdTdHJpbmdzOyB9Cisg
ICAgY29uc3QgT3B0aW9uYWxTdHJpbmdWZWN0b3ImIGNvb2tlZFN0cmluZ3MoKSBjb25zdCB7IHJl
dHVybiBtX2Nvb2tlZFN0cmluZ3M7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2hhc2ggPT0gb3Ro
ZXIubV9oYXNoICYmIG1fcmF3U3RyaW5ncyA9PSBvdGhlci5tX3Jhd1N0cmluZ3M7IH0KKyAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gbV9oYXNoICE9IG90aGVyLm1faGFzaCB8fCBtX3Jhd1N0cmluZ3MgIT0gb3Ro
ZXIubV9yYXdTdHJpbmdzOyB9CisKKyAgICBzdHJ1Y3QgSGFzaGVyIHsKKyAgICAgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yJiBrZXkpIHsgcmV0
dXJuIGtleS5oYXNoKCk7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yJiBhLCBjb25zdCBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3ImIGIp
IHsgcmV0dXJuIGEgPT0gYjsgfQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21w
YXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworICAgIH07CisKKyAgICBzdGF0aWMgdW5zaWdu
ZWQgY2FsY3VsYXRlSGFzaChjb25zdCBTdHJpbmdWZWN0b3ImIHJhd1N0cmluZ3MpOworICAgIH5U
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IoKTsKKworICAgIHN0YXRpYyBSZWY8VGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yPiBjcmVhdGUoU3RyaW5nVmVjdG9yJiYgcmF3U3RyaW5ncywgT3B0aW9uYWxT
dHJpbmdWZWN0b3ImJiBjb29rZWRTdHJpbmdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKFdURk1vdmUocmF3U3RyaW5ncyksIFdU
Rk1vdmUoY29va2VkU3RyaW5ncykpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yKFN0cmluZ1ZlY3RvciYmIHJhd1N0cmluZ3MsIE9wdGlvbmFsU3RyaW5n
VmVjdG9yJiYgY29va2VkU3RyaW5ncyk7CisKKyAgICBTdHJpbmdWZWN0b3IgbV9yYXdTdHJpbmdz
OworICAgIE9wdGlvbmFsU3RyaW5nVmVjdG9yIG1fY29va2VkU3RyaW5nczsKKyAgICB1bnNpZ25l
ZCBtX2hhc2ggeyAwIH07Cit9OworCitpbmxpbmUgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IoU3RyaW5nVmVjdG9yJiYgcmF3U3RyaW5ncywgT3B0aW9u
YWxTdHJpbmdWZWN0b3ImJiBjb29rZWRTdHJpbmdzKQorICAgIDogbV9yYXdTdHJpbmdzKFdURk1v
dmUocmF3U3RyaW5ncykpCisgICAgLCBtX2Nvb2tlZFN0cmluZ3MoV1RGTW92ZShjb29rZWRTdHJp
bmdzKSkKKyAgICAsIG1faGFzaChjYWxjdWxhdGVIYXNoKHJhd1N0cmluZ3MpKQoreworfQorCitp
bmxpbmUgVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3Io
RGVsZXRlZFZhbHVlVGFnKQorICAgIDogbV9oYXNoKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSkKK3sKK30KKworaW5saW5lIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6VGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yKEVtcHR5VmFsdWVUYWcpCisgICAgOiBtX2hhc2goMCkKK3sK
K30KKworaW5saW5lIHVuc2lnbmVkIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6Y2FsY3VsYXRl
SGFzaChjb25zdCBTdHJpbmdWZWN0b3ImIHJhd1N0cmluZ3MpCit7CisgICAgU3RyaW5nSGFzaGVy
IGhhc2hlcjsKKyAgICBmb3IgKGNvbnN0IFN0cmluZyYgc3RyaW5nIDogcmF3U3RyaW5ncykgewor
ICAgICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICAgICAgaGFzaGVyLmFkZENoYXJh
Y3RlcnMoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHN0cmluZy5jaGFyYWN0ZXJzMTYo
KSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICB9CisgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhh
c2g8SlNDOjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I+IHsKKyAgICB0eXBlZGVmIEpTQzo6VGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yOjpIYXNoZXIgSGFzaDsKK307CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEhhc2hUcmFpdHM8SlNDOjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3I+IDogQ3VzdG9tSGFz
aFRyYWl0czxKU0M6OlRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcj4geworfTsKKworfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
bGF0ZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRl
UmVnaXN0cnkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDk2YTlkMjZlMGZk
MWMwM2VkZjBiNmU5MzY0Njk1MTQyNWMwYmU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRl
UmVnaXN0cnkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGVtcGxhdGVSZWdpc3Ry
eS5oIgotCi0jaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgotI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNUZW1wbGF0ZVJlZ2lz
dHJ5S2V5LmgiCi0jaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJUZW1w
bGF0ZVJlZ2lzdHJ5S2V5LmgiCi0jaW5jbHVkZSAiV2Vha0dDTWFwSW5saW5lcy5oIgotCi1uYW1l
c3BhY2UgSlNDIHsKLQotVGVtcGxhdGVSZWdpc3RyeTo6VGVtcGxhdGVSZWdpc3RyeShWTSYgdm0p
Ci0gICAgOiBtX3RlbXBsYXRlTWFwKHZtKQotewotfQotCi1KU0FycmF5KiBUZW1wbGF0ZVJlZ2lz
dHJ5OjpnZXRUZW1wbGF0ZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVGVtcGxhdGVSZWdpc3Ry
eUtleSogdGVtcGxhdGVLZXlPYmplY3QpCi17Ci0gICAgYXV0byYgdGVtcGxhdGVLZXkgPSB0ZW1w
bGF0ZUtleU9iamVjdC0+dGVtcGxhdGVSZWdpc3RyeUtleSgpOwotICAgIEpTQXJyYXkqIGNhY2hl
ZCA9IG1fdGVtcGxhdGVNYXAuZ2V0KCZ0ZW1wbGF0ZUtleSk7Ci0gICAgaWYgKGNhY2hlZCkKLSAg
ICAgICAgcmV0dXJuIGNhY2hlZDsKLQotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHVuc2lnbmVkIGNvdW50ID0g
dGVtcGxhdGVLZXkuY29va2VkU3RyaW5ncygpLnNpemUoKTsKLSAgICBKU0FycmF5KiB0ZW1wbGF0
ZU9iamVjdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgY291bnQpOwotICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwotICAgIEpTQXJyYXkqIHJhd09i
amVjdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgY291bnQpOwotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwotCi0gICAgZm9yICh1bnNpZ25lZCBp
bmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byBjb29rZWQg
PSB0ZW1wbGF0ZUtleS5jb29rZWRTdHJpbmdzKClbaW5kZXhdOwotICAgICAgICBpZiAoY29va2Vk
KQotICAgICAgICAgICAgdGVtcGxhdGVPYmplY3QtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4
LCBqc1N0cmluZyhleGVjLCBjb29rZWQudmFsdWUoKSksIFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlLCBQdXREaXJlY3RJbmRleExpa2VQ
dXREaXJlY3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0ZW1wbGF0ZU9iamVjdC0+cHV0
RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgsIGpzVW5kZWZpbmVkKCksIFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlLCBQdXREaXJlY3RJbmRl
eExpa2VQdXREaXJlY3QpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxs
cHRyKTsKLQotICAgICAgICByYXdPYmplY3QtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4LCBq
c1N0cmluZyhleGVjLCB0ZW1wbGF0ZUtleS5yYXdTdHJpbmdzKClbaW5kZXhdKSwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUsIFB1dERp
cmVjdEluZGV4TGlrZVB1dERpcmVjdCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIG51bGxwdHIpOwotICAgIH0KLQotICAgIG9iamVjdENvbnN0cnVjdG9yRnJlZXplKGV4ZWMs
IHJhd09iamVjdCk7Ci0gICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLQotICAgIHRlbXBs
YXRlT2JqZWN0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnJhdywgcmF3T2JqZWN0
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7Ci0KLSAgICAvLyBUZW1wbGF0ZSBK
U0FycmF5IGhvbGQgdGhlIHJlZmVyZW5jZSB0byBKU1RlbXBsYXRlUmVnaXN0cnlLZXkgdG8gbWFr
ZSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5IHBvaW50ZXIgbGl2ZSB1bnRpbCB0aGlzIEpTQXJyYXkgaXMg
Y29sbGVjdGVkLgotICAgIC8vIFRlbXBsYXRlUmVnaXN0cnlLZXkgcG9pbnRlciBpcyB1c2VkIGZv
ciBUZW1wbGF0ZVJlZ2lzdHJ5J3Mga2V5LgotICAgIHRlbXBsYXRlT2JqZWN0LT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnRlbXBsYXRlUmVnaXN0cnlLZXlQ
cml2YXRlTmFtZSgpLCB0ZW1wbGF0ZUtleU9iamVjdCwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUpOwotCi0gICAgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoZXhlYywgdGVtcGxhdGVP
YmplY3QpOwotICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0KLSAgICBtX3RlbXBsYXRl
TWFwLnNldCgmdGVtcGxhdGVLZXksIHRlbXBsYXRlT2JqZWN0KTsKLQotICAgIHJldHVybiB0ZW1w
bGF0ZU9iamVjdDsKLX0KLQotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnkuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTEzMDkwNDJmMGQ1OGEzZDVkZDYzNTI3NjVhMjdjM2RjODE4OTIyNS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAi
SlNBcnJheS5oIgotI2luY2x1ZGUgIldlYWtHQ01hcC5oIgotI2luY2x1ZGUgPGxpbWl0cz4KLQot
bmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEpTVGVtcGxhdGVSZWdpc3RyeUtleTsKLWNsYXNzIFRl
bXBsYXRlUmVnaXN0cnlLZXk7Ci0KLWNsYXNzIFRlbXBsYXRlUmVnaXN0cnkgewotcHVibGljOgot
ICAgIFRlbXBsYXRlUmVnaXN0cnkoVk0mKTsKLQotICAgIEpTQXJyYXkqIGdldFRlbXBsYXRlT2Jq
ZWN0KEV4ZWNTdGF0ZSosIEpTVGVtcGxhdGVSZWdpc3RyeUtleSopOwotCi1wcml2YXRlOgotICAg
IFdlYWtHQ01hcDxjb25zdCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5KiwgSlNBcnJheT4gbV90ZW1wbGF0
ZU1hcDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeUtleS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5S2V5LmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOTYyOWYxYjM0NGNjNTVmOWUzNGNlOGRhZTg1MzFkNGRhODUxZDc4OS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5S2V5LmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlRlbXBsYXRlUmVnaXN0cnlLZXkuaCIKLQotI2luY2x1ZGUgIlRlbXBsYXRl
UmVnaXN0cnlLZXlUYWJsZS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotVGVtcGxhdGVSZWdpc3Ry
eUtleTo6flRlbXBsYXRlUmVnaXN0cnlLZXkoKQotewotICAgIGlmIChtX3RhYmxlKQotICAgICAg
ICBtX3RhYmxlLT51bnJlZ2lzdGVyKCp0aGlzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5
S2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5S2V5
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4MDM2OWQwNWU0YjNhY2NkM2YxNjVl
MGI4NWIyNGViY2Y4NDMyOTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeUtl
eS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIFRlbXBsYXRlUmVnaXN0cnlL
ZXlUYWJsZTsKLQotY2xhc3MgVGVtcGxhdGVSZWdpc3RyeUtleSA6IHB1YmxpYyBSZWZDb3VudGVk
PFRlbXBsYXRlUmVnaXN0cnlLZXk+IHsKLXB1YmxpYzoKLSAgICBmcmllbmQgY2xhc3MgVGVtcGxh
dGVSZWdpc3RyeUtleVRhYmxlOwotICAgIHR5cGVkZWYgVmVjdG9yPFN0cmluZywgND4gU3RyaW5n
VmVjdG9yOwotICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiwgND4gT3B0
aW9uYWxTdHJpbmdWZWN0b3I7Ci0KLSAgICBlbnVtIERlbGV0ZWRWYWx1ZVRhZyB7IERlbGV0ZWRW
YWx1ZSB9OwotICAgIFRlbXBsYXRlUmVnaXN0cnlLZXkoRGVsZXRlZFZhbHVlVGFnKTsKLSAgICBl
bnVtIEVtcHR5VmFsdWVUYWcgeyBFbXB0eVZhbHVlIH07Ci0gICAgVGVtcGxhdGVSZWdpc3RyeUtl
eShFbXB0eVZhbHVlVGFnKTsKLQotICAgIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3Jhd1N0cmluZ3MuaXNFbXB0eSgpICYmIG1faGFzaCA9PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCk7IH0KLQotICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV9yYXdTdHJpbmdzLmlzRW1wdHkoKSAmJiAhbV9oYXNoOyB9Ci0KLSAgICB1bnNp
Z25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNoOyB9Ci0KLSAgICBjb25zdCBTdHJpbmdW
ZWN0b3ImIHJhd1N0cmluZ3MoKSBjb25zdCB7IHJldHVybiBtX3Jhd1N0cmluZ3M7IH0KLSAgICBj
b25zdCBPcHRpb25hbFN0cmluZ1ZlY3RvciYgY29va2VkU3RyaW5ncygpIGNvbnN0IHsgcmV0dXJu
IG1fY29va2VkU3RyaW5nczsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRlbXBsYXRl
UmVnaXN0cnlLZXkmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2hhc2ggPT0gb3RoZXIubV9oYXNo
ICYmIG1fcmF3U3RyaW5ncyA9PSBvdGhlci5tX3Jhd1N0cmluZ3M7IH0KLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgVGVtcGxhdGVSZWdpc3RyeUtleSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzaCAhPSBvdGhlci5tX2hhc2ggfHwgbV9yYXdTdHJpbmdzICE9IG90aGVyLm1fcmF3U3RyaW5n
czsgfQotCi0gICAgc3RydWN0IEhhc2hlciB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IFRlbXBsYXRlUmVnaXN0cnlLZXkmIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQot
ICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5JiBhLCBj
b25zdCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KLSAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsK
LSAgICB9OwotCi0gICAgc3RhdGljIHVuc2lnbmVkIGNhbGN1bGF0ZUhhc2goY29uc3QgU3RyaW5n
VmVjdG9yJiByYXdTdHJpbmdzKTsKLSAgICB+VGVtcGxhdGVSZWdpc3RyeUtleSgpOwotCi1wcml2
YXRlOgotICAgIHN0YXRpYyBSZWY8VGVtcGxhdGVSZWdpc3RyeUtleT4gY3JlYXRlKFN0cmluZ1Zl
Y3RvciYmIHJhd1N0cmluZ3MsIE9wdGlvbmFsU3RyaW5nVmVjdG9yJiYgY29va2VkU3RyaW5ncykK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRlbXBsYXRlUmVnaXN0cnlLZXko
V1RGTW92ZShyYXdTdHJpbmdzKSwgV1RGTW92ZShjb29rZWRTdHJpbmdzKSkpOwotICAgIH0KLQot
ICAgIFRlbXBsYXRlUmVnaXN0cnlLZXkoU3RyaW5nVmVjdG9yJiYgcmF3U3RyaW5ncywgT3B0aW9u
YWxTdHJpbmdWZWN0b3ImJiBjb29rZWRTdHJpbmdzKTsKLQotICAgIFRlbXBsYXRlUmVnaXN0cnlL
ZXlUYWJsZSogbV90YWJsZSB7IG51bGxwdHIgfTsKLSAgICBTdHJpbmdWZWN0b3IgbV9yYXdTdHJp
bmdzOwotICAgIE9wdGlvbmFsU3RyaW5nVmVjdG9yIG1fY29va2VkU3RyaW5nczsKLSAgICB1bnNp
Z25lZCBtX2hhc2ggeyAwIH07Ci19OwotCi1pbmxpbmUgVGVtcGxhdGVSZWdpc3RyeUtleTo6VGVt
cGxhdGVSZWdpc3RyeUtleShTdHJpbmdWZWN0b3ImJiByYXdTdHJpbmdzLCBPcHRpb25hbFN0cmlu
Z1ZlY3RvciYmIGNvb2tlZFN0cmluZ3MpCi0gICAgOiBtX3Jhd1N0cmluZ3MoV1RGTW92ZShyYXdT
dHJpbmdzKSkKLSAgICAsIG1fY29va2VkU3RyaW5ncyhXVEZNb3ZlKGNvb2tlZFN0cmluZ3MpKQot
ICAgICwgbV9oYXNoKGNhbGN1bGF0ZUhhc2gocmF3U3RyaW5ncykpCi17Ci19Ci0KLWlubGluZSBU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5KERlbGV0ZWRWYWx1ZVRhZykK
LSAgICA6IG1faGFzaChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi17Ci19
Ci0KLWlubGluZSBUZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5KEVtcHR5
VmFsdWVUYWcpCi0gICAgOiBtX2hhc2goMCkKLXsKLX0KLQotaW5saW5lIHVuc2lnbmVkIFRlbXBs
YXRlUmVnaXN0cnlLZXk6OmNhbGN1bGF0ZUhhc2goY29uc3QgU3RyaW5nVmVjdG9yJiByYXdTdHJp
bmdzKQotewotICAgIFN0cmluZ0hhc2hlciBoYXNoZXI7Ci0gICAgZm9yIChjb25zdCBTdHJpbmcm
IHN0cmluZyA6IHJhd1N0cmluZ3MpIHsKLSAgICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAg
ICAgICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJp
bmcubGVuZ3RoKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBoYXNoZXIuYWRkQ2hhcmFj
dGVycyhzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgfQotICAg
IHJldHVybiBoYXNoZXIuaGFzaCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotbmFtZXNw
YWNlIFdURiB7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Ci0KLXRl
bXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEpTQzo6VGVtcGxhdGVSZWdpc3RyeUtleT4gewot
ICAgIHR5cGVkZWYgSlNDOjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpIYXNoZXIgSGFzaDsKLX07Ci0K
LXRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiA6
IEN1c3RvbUhhc2hUcmFpdHM8SlNDOjpUZW1wbGF0ZVJlZ2lzdHJ5S2V5PiB7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxZTNlMzU4NzE0MmM4NmVkMDNjZDRlMjRhZjllYmU4MzliODEyNDA5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUuaCIKLQotI2luY2x1ZGUgIlRlbXBs
YXRlUmVnaXN0cnlLZXkuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXN0cnVjdCBUZW1wbGF0ZVJl
Z2lzdHJ5S2V5VHJhbnNsYXRvciB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goVGVtcGxhdGVS
ZWdpc3RyeUtleSogZ2VuZXJhdG9yKSB7IHJldHVybiBnZW5lcmF0b3ItPmhhc2goKTsgfQotICAg
IHN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbChUZW1wbGF0ZVJlZ2lzdHJ5S2V5KiBrZXksIFRlbXBs
YXRlUmVnaXN0cnlLZXkqIGdlbmVyYXRvcikgeyByZXR1cm4gKmtleSA9PSAqZ2VuZXJhdG9yOyB9
Ci0gICAgc3RhdGljIHZvaWQgdHJhbnNsYXRlKFRlbXBsYXRlUmVnaXN0cnlLZXkqJiBsb2NhdGlv
biwgVGVtcGxhdGVSZWdpc3RyeUtleSogZ2VuZXJhdG9yLCB1bnNpZ25lZCkgeyBsb2NhdGlvbiA9
IGdlbmVyYXRvcjsgfQotfTsKLQotVGVtcGxhdGVSZWdpc3RyeUtleVRhYmxlOjp+VGVtcGxhdGVS
ZWdpc3RyeUtleVRhYmxlKCkKLXsKLSAgICBmb3IgKGF1dG8mIGtleSA6IG1fYXRvbWljVGFibGUp
Ci0gICAgICAgIGtleS0+bV90YWJsZSA9IG51bGxwdHI7Ci19Ci0KLVJlZjxUZW1wbGF0ZVJlZ2lz
dHJ5S2V5PiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGU6OmNyZWF0ZUtleShUZW1wbGF0ZVJlZ2lz
dHJ5S2V5OjpTdHJpbmdWZWN0b3ImJiByYXdTdHJpbmdzLCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpP
cHRpb25hbFN0cmluZ1ZlY3RvciYmIGNvb2tlZFN0cmluZ3MpCi17Ci0gICAgYXV0byBrZXkgPSBU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5OjpjcmVhdGUoV1RGTW92ZShyYXdTdHJpbmdzKSwgV1RGTW92ZShj
b29rZWRTdHJpbmdzKSk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2F0b21pY1RhYmxlLmFkZDxU
ZW1wbGF0ZVJlZ2lzdHJ5S2V5VHJhbnNsYXRvcj4oa2V5LnB0cigpKTsKLSAgICBpZiAoYWRkUmVz
dWx0LmlzTmV3RW50cnkpCi0gICAgICAgICgqYWRkUmVzdWx0Lml0ZXJhdG9yKS0+bV90YWJsZSA9
IHRoaXM7Ci0KLSAgICByZXR1cm4gKiphZGRSZXN1bHQuaXRlcmF0b3I7Ci19Ci0KLXZvaWQgVGVt
cGxhdGVSZWdpc3RyeUtleVRhYmxlOjp1bnJlZ2lzdGVyKFRlbXBsYXRlUmVnaXN0cnlLZXkmIGtl
eSkKLXsKLSAgICBBU1NFUlQoa2V5Lm1fdGFibGUgPT0gdGhpcyk7Ci0gICAgYXV0byBpdGVyYXRv
ciA9IG1fYXRvbWljVGFibGUuZmluZCgma2V5KTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGl0
ZXJhdG9yICE9IG1fYXRvbWljVGFibGUuZW5kKCksICJUaGUgVGVtcGxhdGVSZWdpc3RyeUtleSBi
ZWluZyByZW1vdmVkIGlzIHJlZ2lzdGVyZWQgaW4gdGhlIG90aGVyIFRlbXBsYXRlUmVnaXN0cnlL
ZXlUYWJsZS4iKTsKLSAgICBtX2F0b21pY1RhYmxlLnJlbW92ZShpdGVyYXRvcik7Ci0KLX0KLQot
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjMzI1MmE4YzdiNDZkMDFmMzg4YTUxMGVhOTEzMTA2YWFmODUxYWE0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5oCisrKyAvZGV2L251bGwKQEAg
LTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1
ZGUgIlRlbXBsYXRlUmVnaXN0cnlLZXkuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5h
bWVzcGFjZSBKU0MgewotCi1jbGFzcyBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUgewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZSk7Ci1wdWJsaWM6Ci0g
ICAgdXNpbmcgU3RyaW5nVmVjdG9yID0gVmVjdG9yPFN0cmluZywgND47Ci0gICAgdXNpbmcgT3B0
aW9uYWxTdHJpbmdWZWN0b3IgPSBWZWN0b3I8c3RkOjpvcHRpb25hbDxTdHJpbmc+LCA0PjsKLQot
ICAgIFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZSgpID0gZGVmYXVsdDsKLQotICAgIFJlZjxUZW1w
bGF0ZVJlZ2lzdHJ5S2V5PiBjcmVhdGVLZXkoU3RyaW5nVmVjdG9yJiYgcmF3U3RyaW5ncywgT3B0
aW9uYWxTdHJpbmdWZWN0b3ImJiBjb29rZWRTdHJpbmdzKTsKLQotICAgIHZvaWQgdW5yZWdpc3Rl
cihUZW1wbGF0ZVJlZ2lzdHJ5S2V5Jik7Ci0KLSAgICB+VGVtcGxhdGVSZWdpc3RyeUtleVRhYmxl
KCk7Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IEtleUhhc2ggewotICAgICAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBUZW1wbGF0ZVJlZ2lzdHJ5S2V5KiBrZXkpIHsgcmV0dXJuIGtleS0+
aGFzaCgpOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFRlbXBsYXRlUmVnaXN0
cnlLZXkqIGEsIGNvbnN0IFRlbXBsYXRlUmVnaXN0cnlLZXkqIGIpIHsgcmV0dXJuICphID09ICpi
OyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxl
dGVkID0gZmFsc2U7Ci0gICAgfTsKLQotICAgIEhhc2hTZXQ8VGVtcGxhdGVSZWdpc3RyeUtleSos
IEtleUhhc2g+IG1fYXRvbWljVGFibGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAyYmY1YjZmOTkyNjU5MTAzYzI1ODA1ZWFh
NzkxZDNiNTNkMzgzNzk3Li4zMjdhN2M1MDAyOTdjMmY5ZmMzODZmMjVjMzA2MWVmMzRjODgwYWRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC04Nyw3ICs4Nyw3IEBACiAj
aW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU291cmNlQ29kZS5oIgogI2lu
Y2x1ZGUgIkpTU3RyaW5nSGVhcENlbGxUeXBlLmgiCi0jaW5jbHVkZSAiSlNUZW1wbGF0ZVJlZ2lz
dHJ5S2V5LmgiCisjaW5jbHVkZSAiSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaCIKICNpbmNs
dWRlICJKU1dlYWtNYXAuaCIKICNpbmNsdWRlICJKU1dlYWtTZXQuaCIKICNpbmNsdWRlICJKU1dl
YkFzc2VtYmx5LmgiCkBAIC0zNDQsNyArMzQ0LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhl
YXBUeXBlIGhlYXBUeXBlKQogICAgIHNjcmlwdEZldGNoUGFyYW1ldGVyc1N0cnVjdHVyZS5zZXQo
KnRoaXMsIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CiAgICAgc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTdHJ1
Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHNw
YXJzZUFycmF5VmFsdWVNYXBTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTcGFyc2VBcnJheVZhbHVlTWFw
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgdGVtcGxhdGVSZWdp
c3RyeUtleVN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTVGVtcGxhdGVSZWdpc3RyeUtleTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIHRlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvclN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgYXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50U3RydWN0dXJlLnNldCgqdGhpcywgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMpKTsKICAgICB1bmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgdW5saW5rZWRQcm9ncmFt
Q29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAppbmRleCAwYTMyNTFhYzYwZDE5NjdkZGRkNDY3OTc4MjFlNmU2YTBlMGJlNjAxLi42
M2I4ZDQwZjk0Yjc1MGRkNTk4ZjUwMTM5MjIwNGU0NDM0YmYzNDA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKQEAgLTUxLDcgKzUxLDYgQEAKICNpbmNsdWRlICJTbWFsbFN0cmluZ3Mu
aCIKICNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDYWNoZS5oIgotI2lu
Y2x1ZGUgIlRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5oIgogI2luY2x1ZGUgIlZNRW50cnlSZWNv
cmQuaCIKICNpbmNsdWRlICJWTVRyYXBzLmgiCiAjaW5jbHVkZSAiVGhyZWFkTG9jYWxDYWNoZS5o
IgpAQCAtNDM2LDcgKzQzNSw3IEBAIHB1YmxpYzoKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzY3Jp
cHRGZXRjaFBhcmFtZXRlcnNTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RydWN0
dXJlQ2hhaW5TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3BhcnNlQXJyYXlWYWx1
ZU1hcFN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJlPiB0ZW1wbGF0ZVJlZ2lzdHJ5S2V5
U3RydWN0dXJlOworICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRv
clN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBhcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRQcm9n
cmFtQ29kZUJsb2NrU3RydWN0dXJlOwpAQCAtNDc0LDcgKzQ3Myw2IEBAIHB1YmxpYzoKIAogICAg
IEF0b21pY1N0cmluZ1RhYmxlKiBtX2F0b21pY1N0cmluZ1RhYmxlOwogICAgIFdURjo6U3ltYm9s
UmVnaXN0cnkgbV9zeW1ib2xSZWdpc3RyeTsKLSAgICBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUg
bV90ZW1wbGF0ZVJlZ2lzdHJ5S2V5dGFibGU7CiAgICAgQ29tbW9uSWRlbnRpZmllcnMqIHByb3Bl
cnR5TmFtZXM7CiAgICAgY29uc3QgQXJnTGlzdCogZW1wdHlMaXN0OwogICAgIFNtYWxsU3RyaW5n
cyBzbWFsbFN0cmluZ3M7CkBAIC00ODgsOCArNDg2LDYgQEAgcHVibGljOgogICAgIEF0b21pY1N0
cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXRvbWljU3Ry
aW5nVGFibGU7IH0KICAgICBXVEY6OlN5bWJvbFJlZ2lzdHJ5JiBzeW1ib2xSZWdpc3RyeSgpIHsg
cmV0dXJuIG1fc3ltYm9sUmVnaXN0cnk7IH0KIAotICAgIFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJs
ZSYgdGVtcGxhdGVSZWdpc3RyeUtleVRhYmxlKCkgeyByZXR1cm4gbV90ZW1wbGF0ZVJlZ2lzdHJ5
S2V5dGFibGU7IH0KLQogICAgIFdlYWtHQ01hcDxTeW1ib2xJbXBsKiwgU3ltYm9sLCBQdHJIYXNo
PFN5bWJvbEltcGwqPj4gc3ltYm9sSW1wbFRvU3ltYm9sTWFwOwogCiAgICAgZW51bSBjbGFzcyBE
ZWxldGVQcm9wZXJ0eU1vZGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk1FbnRyeVNjb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
RW50cnlTY29wZS5jcHAKaW5kZXggYTA2MTY2YTgxYzkzNmYzYzU2MTQ4NTEzMWZjZTY0YjBmYTM2
YjA4YS4uZDEwOTE1YWVmZmUyY2VmNDM3Yjk2ODY2NDlhNGMzZGU0ZmVjYTExYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgiCiAKICNpbmNsdWRlICJEaXNhbGxvd1ZN
UmVlbnRyeS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiT3B0aW9u
cy5oIgogI2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIuaCIKICNpbmNsdWRlICJUaHJlYWRMb2Nh
bENhY2hlSW5saW5lcy5oIgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwppbmRleCBjYzI1NzBiOGQ0OTRkMjkwYTRiYjMyYmZjYjBkYzc3MDlkOTFjYjdi
Li5iNDk4MDM2YjhiYTczNzZhZjVmMjhlZjQ1ODFjN2JlNDgzZDk1Yjg0IDEwMDY0NAotLS0gYS9K
U1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBA
CisyMDE4LTAyLTEzICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW0pTQ10gY2FjaGUgVGFnZ2VkVGVtcGxhdGUgYXJyYXlzIGJ5IGNhbGxzaXRlIHJhdGhlciB0
aGFuIGJ5IGNvbnRlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODI3MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9lY21hMjYyL3B1bGwvODkwIGltcG9zZXMg
YSBjaGFuZ2UgdG8gdGVtcGxhdGUKKyAgICAgICAgbGl0ZXJhbHMsIHRvIGFsbG93IHRlbXBsYXRl
IGNhbGxzaXRlIGFycmF5cyB0byBiZSBjb2xsZWN0ZWQgd2hlbiB0aGUKKyAgICAgICAgY29kZSBj
b250YWluaW5nIHRoZSB0YWdnZWQgdGVtcGxhdGUgY2FsbCBpcyBjb2xsZWN0ZWQuIFRoaXMgc3Bl
YyBjaGFuZ2UKKyAgICAgICAgaGFzIHJlY2VpdmVkIGNvbmNlbnN1cyBhbmQgYmVlbiByYXRpZmll
ZC4KKworICAgICAgICBUaGlzIGNoYW5nZSBlbGltaW5hdGVzIHRoZSBldGVybmFsIG1hcCBhc3Nv
Y2lhdGluZyB0ZW1wbGF0ZSBjb250ZW50cworICAgICAgICB3aXRoIGFycmF5cy4KKworICAgICAg
ICAqIHN0cmVzcy90YWdnZWQtdGVtcGxhdGUtb2JqZWN0LWNvbGxlY3QuanM6IFJlbmFtZWQgZnJv
bSBKU1Rlc3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGUtcmVnaXN0cnkta2V5LWNvbGxlY3QuanMu
CisgICAgICAgICogc3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZS1vYmplY3QuanM6IFJlbmFtZWQgZnJv
bSBKU1Rlc3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGUtcmVnaXN0cnkta2V5LmpzLgorICAgICAg
ICAqIHN0cmVzcy90YWdnZWQtdGVtcGxhdGVzLWlkZW50aXR5LmpzOgorICAgICAgICAqIHN0cmVz
cy90ZW1wbGF0ZS1zdHJpbmctdGFncy1ldmFsLmpzOgorICAgICAgICAqIHRlc3QyNjIueWFtbDoK
KwogMjAxOC0wMi0wOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IERvbid0IHdhc3RlIG1lbW9yeSBmb3IgZXJyb3Iuc3RhY2sKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZS1vYmplY3QtY29sbGVjdC5qcyBiL0pTVGVzdHMvc3RyZXNz
L3RhZ2dlZC10ZW1wbGF0ZS1vYmplY3QtY29sbGVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWNkOTEwODE5
ZGQzNzcwNzhkNzVmZTA1NGZlNWUyNjhlNWZkOTM1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlLW9iamVjdC1jb2xsZWN0LmpzCkBAIC0wLDAgKzEsMTYg
QEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBh
Y3R1YWwpOworfQorCisKK2Z1bmN0aW9uIHRhZyhzaXRlKQoreworICAgIHJldHVybiBzaXRlOwor
fQorCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgZXZhbChg
KGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRhZ1xgJHtpfVxgOyB9KSgpYCk7Cit9CitnYygpOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlLW9iamVjdC5qcyBiL0pTVGVz
dHMvc3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZS1vYmplY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjJjNTExNDJi
MTU0ZmVlN2IyYWY1YWYzM2YwMjdhZmUzNWM0N2Y3YgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZS1vYmplY3QuanMKQEAgLTAsMCArMSwyNSBAQAorZnVu
Y3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7
Cit9CisKK2Z1bmN0aW9uIHRhZyhzaXRlKQoreworICAgIHJldHVybiBzaXRlOworfQorCit7Cisg
ICAgZnVuY3Rpb24gYSgpIHsKKyAgICAgICAgcmV0dXJuIHRhZ2BIZWxsb2A7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gYigpIHsKKyAgICAgICAgcmV0dXJuIHRhZ2BIZWxsb2A7CisgICAgfQorCisg
ICAgc2hvdWxkQmUoYSgpID09PSBiKCksIGZhbHNlKTsKKyAgICBnYygpOworICAgIHZhciB0YWdB
ID0gYSgpOworICAgIGdjKCk7CisgICAgc2hvdWxkQmUodGFnQSA9PT0gYigpLCBmYWxzZSk7Cit9
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGUtcmVnaXN0cnkta2V5
LWNvbGxlY3QuanMgYi9KU1Rlc3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGUtcmVnaXN0cnkta2V5
LWNvbGxlY3QuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxY2Q5MTA4MTlkZDM3
NzA3OGQ3NWZlMDU0ZmU1ZTI2OGU1ZmQ5MzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlLXJlZ2lzdHJ5
LWtleS1jb2xsZWN0LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotZnVuY3Rpb24g
c2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewotICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Ci19Ci0K
LQotZnVuY3Rpb24gdGFnKHNpdGUpCi17Ci0gICAgcmV0dXJuIHNpdGU7Ci19Ci0KLXsKLSAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQotICAgICAgICBldmFsKGAoZnVuY3Rpb24gKCkg
eyByZXR1cm4gdGFnXGAke2l9XGA7IH0pKClgKTsKLX0KLWdjKCk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy90YWdnZWQtdGVtcGxhdGUtcmVnaXN0cnkta2V5LmpzIGIvSlNUZXN0cy9zdHJl
c3MvdGFnZ2VkLXRlbXBsYXRlLXJlZ2lzdHJ5LWtleS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYWViODc3NTcxOWRkZDJmZWI5NTI1MDhiYmIyNWZhNjRkZjgyNDg2MC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL3N0cmVzcy90
YWdnZWQtdGVtcGxhdGUtcmVnaXN0cnkta2V5LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAs
MCBAQAotZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewotICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyAr
IGFjdHVhbCk7Ci19Ci0KLWZ1bmN0aW9uIHRhZyhzaXRlKQotewotICAgIHJldHVybiBzaXRlOwot
fQotCi17Ci0gICAgZnVuY3Rpb24gYSgpIHsKLSAgICAgICAgcmV0dXJuIHRhZ2BIZWxsb2A7Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gYigpIHsKLSAgICAgICAgcmV0dXJuIHRhZ2BIZWxsb2A7Ci0g
ICAgfQotCi0gICAgc2hvdWxkQmUoYSgpID09PSBiKCksIHRydWUpOwotICAgIGdjKCk7Ci0gICAg
dmFyIHRhZ0EgPSBhKCk7Ci0gICAgZ2MoKTsKLSAgICBzaG91bGRCZSh0YWdBID09PSBiKCksIHRy
dWUpOwotfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGFnZ2VkLXRlbXBsYXRlcy1pZGVu
dGl0eS5qcyBiL0pTVGVzdHMvc3RyZXNzL3RhZ2dlZC10ZW1wbGF0ZXMtaWRlbnRpdHkuanMKaW5k
ZXggMzAyZDAzMTc0MzIzOTA3MGQwNDliM2Y1MjMxZmUxZjViOTA4N2VkOC4uMmFiNWM3YmVjMDNl
NDNlZmU4YWM2Y2JjZjgzNzAyMTFiNWExNmVjNCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mv
dGFnZ2VkLXRlbXBsYXRlcy1pZGVudGl0eS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy90YWdnZWQt
dGVtcGxhdGVzLWlkZW50aXR5LmpzCkBAIC0xMyw3ICsxMyw3IEBAIHRhZ2BXb3JsZGA7CiB0YWdg
SGVsbG9gOwogc2hvdWxkQmUodGVtcGxhdGVzLmxlbmd0aCwgMyk7CiBzaG91bGRCZSh0ZW1wbGF0
ZXNbMF0gIT09IHRlbXBsYXRlc1sxXSwgdHJ1ZSk7Ci1zaG91bGRCZSh0ZW1wbGF0ZXNbMF0gPT09
IHRlbXBsYXRlc1syXSwgdHJ1ZSk7CitzaG91bGRCZSh0ZW1wbGF0ZXNbMF0gIT09IHRlbXBsYXRl
c1syXSwgdHJ1ZSk7CiAKIHRlbXBsYXRlcyA9IFtdOwogdGFnYEhlbGxvXG5gOwpAQCAtMjgsNyAr
MjgsNyBAQCBldmFsKCJ0YWdgSGVsbG9cbmAiKTsKIGV2YWwoInRhZ2BIZWxsb1xyYCIpOwogZXZh
bCgidGFnYEhlbGxvXHUyMDI4YCIpOwogc2hvdWxkQmUodGVtcGxhdGVzLmxlbmd0aCwgMyk7Ci1z
aG91bGRCZSh0ZW1wbGF0ZXNbMF0gPT09IHRlbXBsYXRlc1sxXSwgdHJ1ZSk7CitzaG91bGRCZSh0
ZW1wbGF0ZXNbMF0gIT09IHRlbXBsYXRlc1sxXSwgdHJ1ZSk7CiBzaG91bGRCZSh0ZW1wbGF0ZXNb
MF0gIT09IHRlbXBsYXRlc1syXSwgdHJ1ZSk7CiAKIHRlbXBsYXRlcyA9IFtdOwpAQCAtMzgsNyAr
MzgsNyBAQCBldmFsKCJ0YWdgSGVsbG9ccmAiKTsKIGV2YWwoInRhZ2BIZWxsb1xccmAiKTsKIHNo
b3VsZEJlKHRlbXBsYXRlcy5sZW5ndGgsIDQpOwogc2hvdWxkQmUodGVtcGxhdGVzWzBdICE9PSB0
ZW1wbGF0ZXNbMV0sIHRydWUpOwotc2hvdWxkQmUodGVtcGxhdGVzWzBdID09PSB0ZW1wbGF0ZXNb
Ml0sIHRydWUpOworc2hvdWxkQmUodGVtcGxhdGVzWzBdICE9PSB0ZW1wbGF0ZXNbMl0sIHRydWUp
Owogc2hvdWxkQmUodGVtcGxhdGVzWzBdICE9PSB0ZW1wbGF0ZXNbM10sIHRydWUpOwogc2hvdWxk
QmUodGVtcGxhdGVzWzFdICE9PSB0ZW1wbGF0ZXNbMl0sIHRydWUpOwogc2hvdWxkQmUodGVtcGxh
dGVzWzFdICE9PSB0ZW1wbGF0ZXNbM10sIHRydWUpOwpAQCAtNDksNyArNDksNyBAQCB0ZW1wbGF0
ZXMgPSBbXTsKIGV2YWwoInRhZ2BIZWxsb1xuJHt2fXdvcmxkYCIpOwogZXZhbCgidGFnYEhlbGxv
XG4ke3Z9d29ybGRgIik7CiBzaG91bGRCZSh0ZW1wbGF0ZXMubGVuZ3RoLCAyKTsKLXNob3VsZEJl
KHRlbXBsYXRlc1swXSA9PT0gdGVtcGxhdGVzWzFdLCB0cnVlKTsKK3Nob3VsZEJlKHRlbXBsYXRl
c1swXSAhPT0gdGVtcGxhdGVzWzFdLCB0cnVlKTsKIAogdmFyIHYgPSAwOwogdGVtcGxhdGVzID0g
W107CkBAIC01NywzICs1Nyw4NSBAQCBldmFsKCJ0YWdgSGVsbG8ke3Z9XG53b3JsZGAiKTsKIGV2
YWwoInRhZ2BIZWxsb1xuJHt2fXdvcmxkYCIpOwogc2hvdWxkQmUodGVtcGxhdGVzLmxlbmd0aCwg
Mik7CiBzaG91bGRCZSh0ZW1wbGF0ZXNbMF0gIT09IHRlbXBsYXRlc1sxXSwgdHJ1ZSk7CisKK3Zh
ciB2ID0gMDsKK3RlbXBsYXRlcyA9IFtdOworZm9yICh2ID0gMDsgdiA8IDM7ICsrdikgeworICAg
IHRhZ2BIZWxsbyR7dn13b3JsZGA7CisgICAgaWYgKCF2KSBjb250aW51ZTsKKyAgICBzaG91bGRC
ZSh0ZW1wbGF0ZXNbdl0gPT09IHRlbXBsYXRlc1t2IC0gMV0sIHRydWUpOworfQorCit0ZW1wbGF0
ZXMgPSBbXTsKK3RhZ2BIZWxsbyR7MX13b3JsZGA7Cit0YWdgSGVsbG8kezJ9d29ybGRgOworc2hv
dWxkQmUodGVtcGxhdGVzWzBdICE9PSB0ZW1wbGF0ZXNbMV0sIHRydWUpOworCisvLyBEaXNhYmxl
IGV2YWwgY2FjaGluZyBpZiBhIHRhZ2dlZCB0ZW1wbGF0ZSBvY2N1cnMgaW4gZXZhbCBjb2RlCit2
YXIgdiA9IDA7Cit0ZW1wbGF0ZXMgPSBbXTsKK2ZvciAodiA9IDA7IHYgPCAzOyArK3YpIHsKKyAg
ICBldmFsKCJ0YWdgSGVsbG8ke3Z9d29ybGRgIik7CisgICAgaWYgKCF2KSBjb250aW51ZTsKKyAg
ICBzaG91bGRCZSh0ZW1wbGF0ZXNbdl0gIT09IHRlbXBsYXRlc1t2IC0gMV0sIHRydWUpOworfQor
Cit0ZW1wbGF0ZXMgPSBbXTsKK2V2YWwoInRhZ2BIZWxsbyR7MX13b3JsZGAiKTsKK2V2YWwoInRh
Z2BIZWxsbyR7Mn13b3JsZGAiKTsKK2V2YWwoInRhZ2BIZWxsbyR7M313b3JsZGAiKTsKK3Nob3Vs
ZEJlKHRlbXBsYXRlc1swXSAhPT0gdGVtcGxhdGVzWzFdLCB0cnVlKTsKK3Nob3VsZEJlKHRlbXBs
YXRlc1sxXSAhPT0gdGVtcGxhdGVzWzJdLCB0cnVlKTsKKworCisvLyBEaXNhYmxlIGV2YWwgY2Fj
aGluZyBpZiBhIHRhZ2dlZCB0ZW1wbGF0ZSBvY2N1cnMgaW4gYSBuZXN0ZWQgZnVuY3Rpb24KK3Zh
ciB2ID0gMDsKK3RlbXBsYXRlcyA9IFtdOworZm9yICh2ID0gMDsgdiA8IDY7IHYgKz0gMikgewor
ICAgIGV2YWwoIihmdW5jdGlvbigpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyArK2kpIHRhZ2BI
ZWxsbyR7dn13b3JsZGAgfSkoKSIpOworICAgIHNob3VsZEJlKHRlbXBsYXRlc1t2XSA9PT0gdGVt
cGxhdGVzW3YgKyAxXSwgdHJ1ZSk7Cit9CisKK3Nob3VsZEJlKHRlbXBsYXRlc1swXSAhPT0gdGVt
cGxhdGVzWzJdLCB0cnVlKTsKK3Nob3VsZEJlKHRlbXBsYXRlc1swXSAhPT0gdGVtcGxhdGVzWzRd
LCB0cnVlKTsKK3Nob3VsZEJlKHRlbXBsYXRlc1sxXSAhPT0gdGVtcGxhdGVzWzNdLCB0cnVlKTsK
K3Nob3VsZEJlKHRlbXBsYXRlc1sxXSAhPT0gdGVtcGxhdGVzWzVdLCB0cnVlKTsKK3Nob3VsZEJl
KHRlbXBsYXRlc1syXSAhPT0gdGVtcGxhdGVzWzRdLCB0cnVlKTsKK3Nob3VsZEJlKHRlbXBsYXRl
c1szXSAhPT0gdGVtcGxhdGVzWzVdLCB0cnVlKTsKKwordGVtcGxhdGVzID0gW107CitldmFsKCIo
ZnVuY3Rpb24oKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgMjsgKytpKSB0YWdgSGVsbG8kezF9d29y
bGRgIH0pKCkiKTsKK2V2YWwoIihmdW5jdGlvbigpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyAr
K2kpIHRhZ2BIZWxsbyR7Mn13b3JsZGAgfSkoKSIpOworZXZhbCgiKGZ1bmN0aW9uKCkgeyBmb3Ig
KHZhciBpID0gMDsgaSA8IDI7ICsraSkgdGFnYEhlbGxvJHsyfXdvcmxkYCB9KSgpIik7CitzaG91
bGRCZSh0ZW1wbGF0ZXNbMF0gPT09IHRlbXBsYXRlc1sxXSwgdHJ1ZSk7CitzaG91bGRCZSh0ZW1w
bGF0ZXNbMF0gIT09IHRlbXBsYXRlc1syXSwgdHJ1ZSk7CitzaG91bGRCZSh0ZW1wbGF0ZXNbMF0g
IT09IHRlbXBsYXRlc1s0XSwgdHJ1ZSk7CitzaG91bGRCZSh0ZW1wbGF0ZXNbMV0gIT09IHRlbXBs
YXRlc1szXSwgdHJ1ZSk7CitzaG91bGRCZSh0ZW1wbGF0ZXNbMV0gIT09IHRlbXBsYXRlc1s1XSwg
dHJ1ZSk7CitzaG91bGRCZSh0ZW1wbGF0ZXNbMl0gPT09IHRlbXBsYXRlc1szXSwgdHJ1ZSk7Citz
aG91bGRCZSh0ZW1wbGF0ZXNbMl0gIT09IHRlbXBsYXRlc1s0XSwgdHJ1ZSk7CitzaG91bGRCZSh0
ZW1wbGF0ZXNbM10gIT09IHRlbXBsYXRlc1s1XSwgdHJ1ZSk7CitzaG91bGRCZSh0ZW1wbGF0ZXNb
NF0gPT09IHRlbXBsYXRlc1s1XSwgdHJ1ZSk7CisKKy8vIERpc2FibGUgZXZhbCBjYWNoaW5nIGlm
IGEgdGFnZ2VkIHRlbXBsYXRlIG9jY3VycyBpbiBhbiBldmVuIGRlZXBlciBuZXN0ZWQgZnVuY3Rp
b24KK3ZhciB2ID0gMDsKK3RlbXBsYXRlcyA9IFtdOworZm9yICh2ID0gMDsgdiA8IDM7ICsrdikg
eworICAgIGV2YWwoIihmdW5jdGlvbigpIHsgKGZ1bmN0aW9uKCkgeyB0YWdgSGVsbG8ke3Z9d29y
bGRgIH0pKCkgfSkoKSIpOworICAgIGlmICghdikgY29udGludWU7CisgICAgc2hvdWxkQmUodGVt
cGxhdGVzW3ZdICE9PSB0ZW1wbGF0ZXNbdiAtIDFdLCB0cnVlKTsKK30KKwordGVtcGxhdGVzID0g
W107CitldmFsKCIoZnVuY3Rpb24oKSB7IChmdW5jdGlvbigpIHsgZm9yICh2YXIgaSA9IDA7IGkg
PCAyOyArK2kpIHRhZ2BIZWxsbyR7MX13b3JsZGAgfSkoKSB9KSgpIik7CitldmFsKCIoZnVuY3Rp
b24oKSB7IChmdW5jdGlvbigpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyArK2kpIHRhZ2BIZWxs
byR7Mn13b3JsZGAgfSkoKSB9KSgpIik7CitldmFsKCIoZnVuY3Rpb24oKSB7IChmdW5jdGlvbigp
IHsgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyArK2kpIHRhZ2BIZWxsbyR7Mn13b3JsZGAgfSkoKSB9
KSgpIik7CitzaG91bGRCZSh0ZW1wbGF0ZXNbMF0gPT09IHRlbXBsYXRlc1sxXSwgdHJ1ZSk7Citz
aG91bGRCZSh0ZW1wbGF0ZXNbMF0gIT09IHRlbXBsYXRlc1syXSwgdHJ1ZSk7CitzaG91bGRCZSh0
ZW1wbGF0ZXNbMF0gIT09IHRlbXBsYXRlc1s0XSwgdHJ1ZSk7CitzaG91bGRCZSh0ZW1wbGF0ZXNb
MV0gIT09IHRlbXBsYXRlc1szXSwgdHJ1ZSk7CitzaG91bGRCZSh0ZW1wbGF0ZXNbMV0gIT09IHRl
bXBsYXRlc1s1XSwgdHJ1ZSk7CitzaG91bGRCZSh0ZW1wbGF0ZXNbMl0gPT09IHRlbXBsYXRlc1sz
XSwgdHJ1ZSk7CitzaG91bGRCZSh0ZW1wbGF0ZXNbMl0gIT09IHRlbXBsYXRlc1s0XSwgdHJ1ZSk7
CitzaG91bGRCZSh0ZW1wbGF0ZXNbM10gIT09IHRlbXBsYXRlc1s1XSwgdHJ1ZSk7CitzaG91bGRC
ZSh0ZW1wbGF0ZXNbNF0gPT09IHRlbXBsYXRlc1s1XSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy90ZW1wbGF0ZS1zdHJpbmctdGFncy1ldmFsLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
dGVtcGxhdGUtc3RyaW5nLXRhZ3MtZXZhbC5qcwppbmRleCA0MTZlZDZhOGFkNDYxODY2NzEzMDRk
NmI5Y2NkYjNlYjJmNmZhYTYyLi40MmJmZjFlYTUyYzM4YzY5ZjcwMjRmZGE4OTNmZTE1NzRiOTg1
ZjBkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy90ZW1wbGF0ZS1zdHJpbmctdGFncy1ldmFs
LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBsYXRlLXN0cmluZy10YWdzLWV2YWwuanMKQEAg
LTEzLDUgKzEzLDUgQEAgdmFyIHNpdGUxID0gZXZhbCgiMCwgdGFnYENvY29hYCIpOwogdmFyIHNp
dGUyID0gZXZhbCgiMSwgdGFnYENhcHB1Y2Npbm9gIik7CiB2YXIgc2l0ZTMgPSBldmFsKCIyLCB0
YWdgQ29jb2FgIik7CiAKLXNob3VsZEJlKHNpdGUxID09PSBzaXRlMywgdHJ1ZSk7CitzaG91bGRC
ZShzaXRlMSAhPT0gc2l0ZTMsIHRydWUpOwogc2hvdWxkQmUoc2l0ZTEgIT09IHNpdGUyLCB0cnVl
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi55YW1sIGIvSlNUZXN0cy90ZXN0MjYyLnlh
bWwKaW5kZXggNGRiZWJiMjc5NjM4ZWI5YTFhY2ZmYTIyMzE0MjQ4MDRhNGE5NWQ4ZS4uNzYzNjMz
ZmFlMTdjNmM3OGVmNDFlMzQzNmM4NTJjYTk3NmExZmY1ZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy90
ZXN0MjYyLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyLnlhbWwKQEAgLTgzODQ2LDE3ICs4Mzg0
NiwxNyBAQAogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvdGFnZ2Vk
LXRlbXBsYXRlL2NhY2hlLWRpZmZlcmVudC1mdW5jdGlvbnMtc2FtZS1zaXRlLmpzCiAgIGNtZDog
cnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQogLSBw
YXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvdGFnZ2VkLXRlbXBsYXRlL2Nh
Y2hlLWRpZmZlcmluZy1leHByZXNzaW9ucy1ldmFsLmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFp
bCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8u
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwg
Ik5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8u
Li8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uv
ZXhwcmVzc2lvbnMvdGFnZ2VkLXRlbXBsYXRlL2NhY2hlLWRpZmZlcmluZy1leHByZXNzaW9ucy1l
dmFsLmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
OnN0cmljdF0KKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4v
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMi
XSwgWzpzdHJpY3RdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy90
YWdnZWQtdGVtcGxhdGUvY2FjaGUtZGlmZmVyaW5nLWV4cHJlc3Npb25zLW5ldy1mdW5jdGlvbi5q
cwotICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKyAg
Y21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KIC0gcGF0
aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL3RhZ2dlZC10ZW1wbGF0ZS9jYWNo
ZS1kaWZmZXJpbmctZXhwcmVzc2lvbnMtbmV3LWZ1bmN0aW9uLmpzCi0gIGNtZDogcnVuVGVzdDI2
MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCiAtIHBhdGg6IHRl
c3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy90YWdnZWQtdGVtcGxhdGUvY2FjaGUtZGlm
ZmVyaW5nLWV4cHJlc3Npb25zLmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0
aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJu
ZXNzL3N0YS5qcyJdLCBbXQorICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9u
IiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyJdLCBbXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMv
dGFnZ2VkLXRlbXBsYXRlL2NhY2hlLWRpZmZlcmluZy1leHByZXNzaW9ucy5qcwotICBjbWQ6IHJ1
blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3Nl
cnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCisgIGNtZDog
cnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQogLSBw
YXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvdGFnZ2VkLXRlbXBsYXRlL2Nh
Y2hlLWRpZmZlcmluZy1yYXctc3RyaW5ncy5qcwogICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwg
Ik5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8u
Li8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uv
ZXhwcmVzc2lvbnMvdGFnZ2VkLXRlbXBsYXRlL2NhY2hlLWRpZmZlcmluZy1yYXctc3RyaW5ncy5q
cwpAQCAtODM4NjYsMTcgKzgzODY2LDE3IEBACiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFn
ZS9leHByZXNzaW9ucy90YWdnZWQtdGVtcGxhdGUvY2FjaGUtZGlmZmVyaW5nLXN0cmluZy1jb3Vu
dC5qcwogICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
OnN0cmljdF0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL3RhZ2dl
ZC10ZW1wbGF0ZS9jYWNoZS1pZGVudGljYWwtc291cmNlLWV2YWwuanMKLSAgY21kOiBydW5UZXN0
MjYyIDpmYWlsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCisgIGNtZDogcnVuVGVzdDI2MiA6
bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9s
YW5ndWFnZS9leHByZXNzaW9ucy90YWdnZWQtdGVtcGxhdGUvY2FjaGUtaWRlbnRpY2FsLXNvdXJj
ZS1ldmFsLmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbOnN0cmljdF0KKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsi
Li4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEu
anMiXSwgWzpzdHJpY3RdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9u
cy90YWdnZWQtdGVtcGxhdGUvY2FjaGUtaWRlbnRpY2FsLXNvdXJjZS1uZXctZnVuY3Rpb24uanMK
LSAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCisgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCiAtIHBhdGg6
IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy90YWdnZWQtdGVtcGxhdGUvY2FjaGUt
aWRlbnRpY2FsLXNvdXJjZS1uZXctZnVuY3Rpb24uanMKLSAgY21kOiBydW5UZXN0MjYyIDpmYWls
LCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorICBjbWQ6IHJ1blRlc3QyNjIgOm5v
cm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIu
Li8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KIC0gcGF0aDogdGVzdDI2Mi90
ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL3RhZ2dlZC10ZW1wbGF0ZS9jYWNoZS1pZGVudGljYWwt
c291cmNlLmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbXQorICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
XQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvdGFnZ2VkLXRlbXBs
YXRlL2NhY2hlLWlkZW50aWNhbC1zb3VyY2UuanMKLSAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAi
Tm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
Ly4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1h
bCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8u
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0
L2xhbmd1YWdlL2V4cHJlc3Npb25zL3RhZ2dlZC10ZW1wbGF0ZS9jYWNoZS1yZWFsbS5qcwogICBj
bWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJu
ZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQogLSBwYXRo
OiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvdGFnZ2VkLXRlbXBsYXRlL2NhY2hl
LXJlYWxtLmpzCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>