<?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>231740</bug_id>
          
          <creation_ts>2021-10-14 07:17:30 -0700</creation_ts>
          <short_desc>REGRESSION(r284151): WTR is crashing inside JSDOMWindow::getOwnPropertySlot on GTK and WPE</short_desc>
          <delta_ts>2021-10-14 07:25:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230602</see_also>
          <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>
          
          <blocked>230602</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>lmoura</cc>
    
    <cc>pmates</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1804258</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-10-14 07:17:30 -0700</bug_when>
    <thetext>https://commits.webkit.org/r284151 introduced a regression:
WTR

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804260</commentid>
    <comment_count>1</comment_count>
      <attachid>441211</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-10-14 07:17:45 -0700</bug_when>
    <thetext>Created attachment 441211
REVERT of r284151

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804265</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-14 07:24:58 -0700</bug_when>
    <thetext>Committed r284159 (242979@main): &lt;https://commits.webkit.org/242979@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441211.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804266</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-14 07:25:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/84254684&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441211</attachid>
            <date>2021-10-14 07:17:45 -0700</date>
            <delta_ts>2021-10-14 07:24:59 -0700</delta_ts>
            <desc>REVERT of r284151</desc>
            <filename>bug-231740-20211014071744.patch</filename>
            <type>text/plain</type>
            <size>83027</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YWNjNmQ5OTExZDhmYjY1YjQ5YWVhZTU4MmJlZGVlYzRlNWU1NzI5Li4xZTBiYzVkYzgwMmMwYmM4
ZDM0ZjUzMDc1M2IwMzNmMDAxYmUxMmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0xMC0xNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODQxNTEuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE3NDAKKworICAgICAg
ICBXVFIKKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIlRlc3QgY292
ZXJhZ2UgZm9yIEpTQyBzaGFkb3cgcmVhbG1zIGltcGxlbWVudGF0aW9uIgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNjAyCisgICAgICAgIGh0dHBz
Oi8vY29tbWl0cy53ZWJraXQub3JnL3IyODQxNTEKKwogMjAyMS0xMC0xNCAgUGhpbGxpcCBNYXRl
cyAgPHBtYXRlc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIHNoYWRvdyByZWFsbXMgaW1wbGVtZW50
YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA4YjkxODJjZWQxMDE5
NTFhOGQwMDViMDZiN2UxN2MxOTYxYWRhMDc2Li5kNzBiYTUyZDYxZmRmMDk5NWNiMWEyMmIwZGZh
ZmQ4ZTJlMGJkM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMDMs
OCArMTAzLDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvUmVnRXhwU3RyaW5nSXRlcmF0
b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCi0gICAgcnVudGlt
ZS9TaGFkb3dSZWFsbU9iamVjdC5jcHAKLSAgICBydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBl
LmNwcAogICAgIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKQEAgLTM3
NSw3ICszNzMsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7
SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlw
ZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9TZXRJdGVyYXRvclByb3Rv
dHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9TZXRQcm90b3R5cGUu
anMKLSAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvU2hhZG93UmVhbG1Qcm90b3R5
cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvU3RyaW5nQ29uc3RydWN0
b3IuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvU3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvU3RyaW5nUHJv
dG90eXBlLmpzCkBAIC0xMTYwLDcgKzExNTcsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCiAgICAg
cnVudGltZS9TY3JpcHRGZXRjaFBhcmFtZXRlcnMuaAogICAgIHJ1bnRpbWUvU2NyaXB0RmV0Y2hl
ci5oCi0gICAgcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5oCiAgICAgcnVudGltZS9TbG93UGF0
aEZ1bmN0aW9uLmgKICAgICBydW50aW1lL1Nsb3dQYXRoUmV0dXJuVHlwZS5oCiAgICAgcnVudGlt
ZS9TbWFsbFN0cmluZ3MuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA5MjJjNWM0N2U0M2Y2MzkxMWVhNzM4ZTU3
MDRjZmRlNjg3NDBmNGEwLi4wNmIyMTc1MTJjNmZiYzJkODUyNzI0YWFhNzZmYTU3OTRlM2RhZDZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdApAQCAtNTAsNyArNTAsNiBAQCAkKFBST0pFQ1RfRElSKS9idWlsdGlucy9S
ZWdFeHBQcm90b3R5cGUuanMKICQoUFJPSkVDVF9ESVIpL2J1aWx0aW5zL1JlZ0V4cFN0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlLmpzCiAkKFBST0pFQ1RfRElSKS9idWlsdGlucy9TZXRJdGVyYXRvclBy
b3RvdHlwZS5qcwogJChQUk9KRUNUX0RJUikvYnVpbHRpbnMvU2V0UHJvdG90eXBlLmpzCi0kKFBS
T0pFQ1RfRElSKS9idWlsdGlucy9TaGFkb3dSZWFsbVByb3RvdHlwZS5qcwogJChQUk9KRUNUX0RJ
UikvYnVpbHRpbnMvU3RyaW5nQ29uc3RydWN0b3IuanMKICQoUFJPSkVDVF9ESVIpL2J1aWx0aW5z
L1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmpzCiAkKFBST0pFQ1RfRElSKS9idWlsdGlucy9TdHJp
bmdQcm90b3R5cGUuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAxMTIyOWQ1N2IyYjNiZTg4ZjE4MGNjNmU4
MDcxNzM1ZWU0Y2ZhOWVjLi5jYjA1ZDgyMTYyYWQ5YzRjZmY2NGNhMThjYWVhZTE4NzFiZWM2ZjYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CkBAIC02Miw4ICs2Miw2IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9SZWZsZWN0T2JqZWN0Lmx1dC5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvUmVnRXhwQ29uc3Ry
dWN0b3IubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9SZWdFeHBKaXRUYWJsZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL1NldFByb3RvdHlwZS5sdXQuaAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1NoYWRvd1JlYWxtT2JqZWN0Lmx1
dC5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
U2hhZG93UmVhbG1Qcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9TdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1N0cmluZ1Byb3RvdHlw
ZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlL1N5bWJvbENvbnN0cnVjdG9yLmx1dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCmluZGV4IGM5MjdhNTRlZjc1MzhlYjk1ZDUzNTY3Zjg2MTdlZWFiODE1NTJm
MGUuLmNmZjY5ZTUzZTIwZTU2OTQ1ZTBmZWMwZjVmM2Y0NGU5MzJjNzIxMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMjIsNyArMTIyLDYgQEAgSmF2
YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUyA9IFwKICAgICAke0phdmFTY3JpcHRDb3JlfS9i
dWlsdGlucy9SZWdFeHBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2Ny
aXB0Q29yZSkvYnVpbHRpbnMvU2V0SXRlcmF0b3JQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNj
cmlwdENvcmUpL2J1aWx0aW5zL1NldFByb3RvdHlwZS5qcyBcCi0gICAgJChKYXZhU2NyaXB0Q29y
ZSkvYnVpbHRpbnMvU2hhZG93UmVhbG1Qcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENv
cmUpL2J1aWx0aW5zL1N0cmluZ0NvbnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3Jl
KS9idWlsdGlucy9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0
Q29yZSkvYnVpbHRpbnMvU3RyaW5nUHJvdG90eXBlLmpzIFwKQEAgLTE4OCw3ICsxODcsNiBAQCBP
QkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgUmVmbGVjdE9iamVjdC5sdXQuaCBcCiAgICAgUmVn
RXhwQ29uc3RydWN0b3IubHV0LmggXAogICAgIFNldFByb3RvdHlwZS5sdXQuaCBcCi0gICAgU2hh
ZG93UmVhbG1Qcm90b3R5cGUubHV0LmggXAogICAgIFN0cmluZ0NvbnN0cnVjdG9yLmx1dC5oIFwK
ICAgICBTdHJpbmdQcm90b3R5cGUubHV0LmggXAogICAgIFN5bWJvbENvbnN0cnVjdG9yLmx1dC5o
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2RmM2E2MTg2ZjYzZjgzNDQyZGYx
N2NlMjkzNDIwNDI4OTNmMmJkZi4uZWQxNzkyN2MzNjQzOGY4MDAyNzA4OWNlMjE1Nzk2OTE1NzZi
ZGJkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNjMsOSArMTI2Myw2IEBA
CiAJCTg2MDE2MUUzMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAxNjFERjBG
M0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2MDE2MUU1MEYzQTgzQzEwMEY4
NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMTYxRTEwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNz
ZW1ibGVyWDg2XzY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJODYwMTYxRTYwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjAx
NjFFMjBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4NjAyOTYwMjI2RkI1
NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMjk1RkMyNkZCNTUyQzAwNzhFQjYyIC8q
IFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQk4NjAyOTYwNDI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVh
bG1PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2MDI5NUZFMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTg2MDI5NjA1MjZGQjU1
MkQwMDc4RUI2MiAvKiBTaGFkb3dSZWFsbVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYwMjk1RkYyNkZCNTUyRDAwNzhFQjYyIC8qIFNo
YWRvd1JlYWxtUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODYwNkRERUExOERBNDRBQjAwQTM4M0QwIC8qIElkZW50aWZpZXJJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjA2
RERFOTE4REE0NEFCMDBBMzgzRDAgLyogSWRlbnRpZmllcklubGluZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjBCRDgwMTE0OEVBNkYyMDAx
MTJCMkYgLyogSW50cmluc2ljLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODYxMkU0Q0QxNTIz
ODlFQzAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NjEyRTRDQjE1MjI5MTg0MDBDODM2QkUgLyogTWF0Y2hSZXN1
bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NDI0NSwxMiArNDI0Miw2IEBACiAJCTg2MDE2MURGMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYwMTYx
RTEwRjNBODNDMTAwRjg0NzEwIC8qIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyWDg2XzY0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NjAyOTVG
QTI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NjAyOTVGQjI2RkI1NTJDMDA3OEVCNjIgLyogU2hh
ZG93UmVhbG1PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2hhZG93UmVhbG1PYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4NjAy
OTVGQzI2RkI1NTJDMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2MDI5NUZEMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFk
b3dSZWFsbUNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNoYWRvd1JlYWxtQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk4NjAyOTVGRTI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1PYmplY3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZG93UmVhbG1PYmplY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODYwMjk1RkYyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRv
d1JlYWxtUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYWRv
d1JlYWxtUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MDRGNEYy
MTQzQTZDNDQwMEIyOTVGNSAvKiBDaGFuZ2VMb2cgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IENoYW5n
ZUxvZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYwNkRERTkxOERBNDRBQjAwQTM4
M0QwIC8qIElkZW50aWZpZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IElkZW50aWZpZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2
MTJFNENCMTUyMjkxODQwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNYXRjaFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODAwMiwxMiArNzk5Myw2IEBACiAJCQkJQTc5MERENjgxODJGNDk5NzAwNTg4ODA3IC8q
IFNldEl0ZXJhdG9yUHJvdG90eXBlLmggKi8sCiAJCQkJQTcyOTlEOUYxN0QxMjg0ODAwNUY1RkY5
IC8qIFNldFByb3RvdHlwZS5jcHAgKi8sCiAJCQkJQTcyOTlEQTAxN0QxMjg0ODAwNUY1RkY5IC8q
IFNldFByb3RvdHlwZS5oICovLAotCQkJCTg2MDI5NUZEMjZGQjU1MkQwMDc4RUI2MiAvKiBTaGFk
b3dSZWFsbUNvbnN0cnVjdG9yLmNwcCAqLywKLQkJCQk4NjAyOTVGQzI2RkI1NTJDMDA3OEVCNjIg
LyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oICovLAotCQkJCTg2MDI5NUZCMjZGQjU1MkMwMDc4
RUI2MiAvKiBTaGFkb3dSZWFsbU9iamVjdC5jcHAgKi8sCi0JCQkJODYwMjk1RkUyNkZCNTUyRDAw
NzhFQjYyIC8qIFNoYWRvd1JlYWxtT2JqZWN0LmggKi8sCi0JCQkJODYwMjk1RkEyNkZCNTUyQzAw
NzhFQjYyIC8qIFNoYWRvd1JlYWxtUHJvdG90eXBlLmNwcCAqLywKLQkJCQk4NjAyOTVGRjI2RkI1
NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuaCAqLywKIAkJCQkwRjJCNjZENjE3
QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwICovLAogCQkJ
CTBGMkI2NkQ3MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5o
ICovLAogCQkJCUZFOEMwMzExMjY0QTY5MTAwMDFBNDRBRCAvKiBTbG93UGF0aEZ1bmN0aW9uLmgg
Ki8sCkBAIC0xMDczMCw5ICsxMDcxNSw2IEBACiAJCQkJMEZFRTk4NDExQTg4NjVCNzAwNzU0RTkz
IC8qIFNldHVwVmFyYXJnc0ZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQzE3RTgxODFDOUM5
MUQ5MDA4QTZBQjMgLyogU2hhZG93Q2hpY2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREMxN0U4
MTkxQzlDOTFEQjAwOEE2QUIzIC8qIFNoYWRvd0NoaWNrZW5JbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKLQkJCQk4NjAyOTYwMjI2RkI1NTJEMDA3OEVCNjIgLyogU2hhZG93UmVhbG1Db25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODYwMjk2MDQyNkZCNTUyRDAwNzhFQjYyIC8qIFNoYWRv
d1JlYWxtT2JqZWN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk4NjAyOTYwNTI2RkI1NTJEMDA3OEVC
NjIgLyogU2hhZG93UmVhbG1Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzAyMkQz
MUUzRDczQTUwMEJBQzQ5MyAvKiBTaWdpbGxDcmFzaEFuYWx5emVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjREOEM3ODFGQ0EzQ0ZBMDAxRDMyQUMgLyogU2ltcGxlTWFya2luZ0NvbnN0cmFpbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NzA1MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVU
eXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKaW5kZXggZTBlMjNhMmYzNmMxMjVlOTY3ZjBlZmE1YzRkOWI5OGRhODhjZWMxMy4uZjA0
NDUxZDAzOGRiMzBjNzUxZjQ2YTlhNGQ3NDg2M2NiNmIyZDg1NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dApAQCAtOTcwLDkgKzk3MCw2IEBAIHJ1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5j
cHAKIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwCiBydW50aW1lL1Byb3h5UmV2b2tlLmNwcAogcnVu
dGltZS9SYW5kb21pemluZ0Z1enplckFnZW50LmNwcAotcnVudGltZS9TaGFkb3dSZWFsbU9iamVj
dC5jcHAKLXJ1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5jcHAKLXJ1bnRpbWUvU2hhZG93
UmVhbG1Qcm90b3R5cGUuY3BwCiBydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCiBydW50aW1lL1Jl
Z0V4cC5jcHAKIHJ1bnRpbWUvUmVnRXhwQ2FjaGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggY2VkMzBhOGVhOGY3MWY3YTAyYTYyZWI0
MmI1ZTE1NzY2Mjg5ZGEzNC4uMjliYzNhZTAxMDQxMzBlNTFlYTJlMDlhZTM3ZDQwYmYwMjExMzE1
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApA
QCAtNjIsNyArNjIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhOdW1iZXIpIFwKICAg
ICBtYWNybyhBcnJheSkgXAogICAgIG1hY3JvKEFycmF5QnVmZmVyKSBcCi0gICAgbWFjcm8oU2hh
ZG93UmVhbG0pIFwKICAgICBtYWNybyhSZWdFeHApIFwKICAgICBtYWNybyhtaW4pIFwKICAgICBt
YWNybyh0cnVuYykgXApAQCAtMTE2LDggKzExNSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1h
Y3JvKGFzeW5jR2VuZXJhdG9yUXVldWVJdGVtTmV4dCkgXAogICAgIG1hY3JvKGRhdGVUaW1lRm9y
bWF0KSBcCiAgICAgbWFjcm8odGhpcykgXAotICAgIG1hY3JvKGltcG9ydEluUmVhbG0pIFwKLSAg
ICBtYWNybyhldmFsSW5SZWFsbSkgXAogICAgIG1hY3JvKHRoaXNUaW1lVmFsdWUpIFwKICAgICBt
YWNybyhuZXdUYXJnZXRMb2NhbCkgXAogICAgIG1hY3JvKGRlcml2ZWRDb25zdHJ1Y3RvcikgXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1NoYWRvd1JlYWxtUHJv
dG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1NoYWRvd1JlYWxtUHJv
dG90eXBlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzAwMzU5N2VmNjA4MzRj
YTBiN2FlMDAwYzAzZjUyYTg0ZGVmNGE2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TaGFkb3dSZWFs
bVByb3RvdHlwZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotQGdsb2JhbFByaXZhdGUKLWZ1
bmN0aW9uIHdyYXAodGFyZ2V0KQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmIChAaXND
YWxsYWJsZSh0YXJnZXQpKSB7Ci0gICAgICAgIHZhciB3cmFwcGVkID0gZnVuY3Rpb24oLyogYXJn
cy4uLiAqLykgewotICAgICAgICAgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7Ci0g
ICAgICAgICAgICB2YXIgd3JhcHBlZEFyZ3MgPSBAbmV3QXJyYXlXaXRoU2l6ZShsZW5ndGgpOwot
ICAgICAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgKytpbmRleCkK
LSAgICAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3Qod3JhcHBlZEFyZ3MsIGluZGV4LCBAd3Jh
cChhcmd1bWVudHNbaW5kZXhdKSk7Ci0KLSAgICAgICAgICAgIHZhciByZXN1bHQgPSB0YXJnZXQu
QGFwcGx5KEB1bmRlZmluZWQsIHdyYXBwZWRBcmdzKTsKLSAgICAgICAgICAgIHJldHVybiBAd3Jh
cChyZXN1bHQpOwotICAgICAgICB9OwotICAgICAgICBkZWxldGUgd3JhcHBlZFsnbmFtZSddOwot
ICAgICAgICBkZWxldGUgd3JhcHBlZFsnbGVuZ3RoJ107Ci0gICAgICAgIHJldHVybiB3cmFwcGVk
OwotICAgIH0gZWxzZSBpZiAoQGlzT2JqZWN0KHRhcmdldCkpIHsKLSAgICAgICAgQHRocm93VHlw
ZUVycm9yKCJ2YWx1ZSBwYXNzaW5nIGJldHdlZW4gcmVhbG1zIG11c3QgYmUgY2FsbGFibGUgb3Ig
cHJpbWl0aXZlIik7Ci0gICAgfQotICAgIHJldHVybiB0YXJnZXQ7Ci19Ci0KLWZ1bmN0aW9uIGV2
YWx1YXRlKHNvdXJjZVRleHQpCi17Ci0gICAgInVzZSBzdHJpY3QiOwotCi0gICAgaWYgKCFAaXNT
aGFkb3dSZWFsbSh0aGlzKSkKLSAgICAgICAgQHRocm93VHlwZUVycm9yKCJgJVNoYWRvd1JlYWxt
JS5ldmFsdWF0ZSByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBhIFNoYWRvd1JlYWxtIGluc3RhbmNl
Iik7Ci0KLSAgICBpZiAodHlwZW9mIHNvdXJjZVRleHQgIT09ICdzdHJpbmcnKQotICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoImAlU2hhZG93UmVhbG0lLmV2YWx1YXRlIHJlcXVpcmVzIHRoYXQgdGhl
IHxzb3VyY2VUZXh0fCBhcmd1bWVudCBiZSBhIHN0cmluZyIpOwotCi0gICAgdmFyIHJlc3VsdCA9
IEBldmFsSW5SZWFsbSh0aGlzLCBzb3VyY2VUZXh0KQotICAgIHJldHVybiBAd3JhcChyZXN1bHQp
OwotfQotCi1mdW5jdGlvbiBpbXBvcnRWYWx1ZShzcGVjaWZpZXIsIGV4cG9ydE5hbWUpCi17Ci0g
ICAgInVzZSBzdHJpY3QiOwotCi0gICAgaWYgKCFAaXNTaGFkb3dSZWFsbSh0aGlzKSkKLSAgICAg
ICAgQHRocm93VHlwZUVycm9yKCJgJVNoYWRvd1JlYWxtJS5pbXBvcnRWYWx1ZSByZXF1aXJlcyB0
aGF0IHx0aGlzfCBiZSBhIFNoYWRvd1JlYWxtIGluc3RhbmNlIik7Ci0KLSAgICB2YXIgZXhwb3J0
TmFtZVN0cmluZyA9IEB0b1N0cmluZyhleHBvcnROYW1lKTsKLSAgICB2YXIgc3BlY2lmaWVyU3Ry
aW5nID0gQHRvU3RyaW5nKHNwZWNpZmllcik7Ci0KLSAgICB2YXIgbG9va3VwQmluZGluZyA9ICht
b2R1bGUpID0+IHsKLSAgICAgICAgdmFyIGxvb2t1cCA9IG1vZHVsZVtleHBvcnROYW1lU3RyaW5n
XQotICAgICAgICBpZiAobG9va3VwID09PSBAdW5kZWZpbmVkKQotICAgICAgICAgICAgQHRocm93
VHlwZUVycm9yKCIlU2hhZG93UmVhbG0lLmltcG9ydFZhbHVlIHJlcXVpcmVzIHxleHBvcnROYW1l
fCB0byBleGlzdCBpbiB0aGUgfHNwZWNpZmllcnwiKTsKLQotICAgICAgICByZXR1cm4gQHdyYXAo
bG9va3VwKTsKLSAgICB9OwotCi0gICAgdmFyIGNyb3NzUmVhbG1UaHJvdyA9IChlcnJvcikgPT4g
ewotICAgICAgICAvLyByZS10aHJvdyBiZWNhdXNlIGltcG9ydCBpc3N1ZXMgcmFpc2UgZXJyb3Jz
IHVzaW5nIHRoZSByZWFsbSdzIGdsb2JhbCBvYmplY3QKLSAgICAgICAgQHRocm93VHlwZUVycm9y
KEB0b1N0cmluZyhlcnJvcikpOwotICAgIH07Ci0KLSAgICByZXR1cm4gQGltcG9ydEluUmVhbG0o
dGhpcywgc3BlY2lmaWVyU3RyaW5nKS5AdGhlbihsb29rdXBCaW5kaW5nLCBjcm9zc1JlYWxtVGhy
b3cpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKaW5kZXggYjMyY2NkYWY0M2E2NjJjODc3OTU1ODA3
ZjZkNDFmMTI1OTE5NGY1Mi4uODU1NTk3Nzg2NzA3MmYyZmZmNjdhNjU1OWFjZDlhNDU0ZDUyZDI3
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCkBAIC02Niw3ICs2Niw2IEBAIGVudW0gY2xhc3MgTGlu
a1RpbWVDb25zdGFudCA6IGludDMyX3Q7CiAgICAgbWFjcm8oaXNSZWdFeHBPYmplY3QpIFwKICAg
ICBtYWNybyhpc01hcCkgXAogICAgIG1hY3JvKGlzU2V0KSBcCi0gICAgbWFjcm8oaXNTaGFkb3dS
ZWFsbSkgXAogICAgIG1hY3JvKGlzU3RyaW5nSXRlcmF0b3IpIFwKICAgICBtYWNybyhpc0FycmF5
SXRlcmF0b3IpIFwKICAgICBtYWNybyhpc01hcEl0ZXJhdG9yKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRleCAxZTUyMzhkZGYy
ZGJkMDY2YmUyNmZhMjBhZmUzN2M5Yjc0ZTBmZjhhLi5iZmJhZDJhNTJmMTY0YTRjNWY1ZTk3N2E0
MmNiY2M4YjllYTdhMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTc4LDggKzc4LDYgQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3Q7CiAgICAgdihob3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIsIG51bGxwdHIpIFwKICAgICB2
KFNldCwgbnVsbHB0cikgXAogICAgIHYodGhpc1RpbWVWYWx1ZSwgbnVsbHB0cikgXAotICAgIHYo
aW1wb3J0SW5SZWFsbSwgbnVsbHB0cikgXAotICAgIHYoZXZhbEluUmVhbG0sIG51bGxwdHIpIFwK
ICAgICB2KGlzQ29uc3RydWN0b3IsIG51bGxwdHIpIFwKICAgICB2KHNhbWVWYWx1ZSwgbnVsbHB0
cikgXAogICAgIHYocmVnRXhwUHJvdG9GbGFnc0dldHRlciwgbnVsbHB0cikgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CmluZGV4IGYzNzVhNzhlMzAzZTUyMWFhODA5NTFmYTI4ZWRmN2ZiNzJhN2Y1YTcuLjI3N2IxNTUy
OGQxZTgwYzc2NzZiZWM1MTFmNzc2MWU1NWI3ZjkzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTg4NSw3
ICs4ODUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzUmVn
RXhwT2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0
SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIFJlZ0V4cE9iamVjdFR5cGUpOyB9CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRJc01hcChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyBy
ZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU01hcFR5cGUpOyB9CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRJc1NldChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykg
eyByZXR1cm4gZW1pdElzQ2VsbFdpdGhUeXBlKGRzdCwgc3JjLCBKU1NldFR5cGUpOyB9Ci0gICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRJc1NoYWRvd1JlYWxtKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogc3JjKSB7IHJldHVybiBlbWl0SXNDZWxsV2l0aFR5cGUoZHN0LCBzcmMsIFNoYWRvd1Jl
YWxtVHlwZSk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzU3RyaW5nSXRlcmF0b3IoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlw
ZShkc3QsIHNyYywgSlNTdHJpbmdJdGVyYXRvclR5cGUpOyB9CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRJc0FycmF5SXRlcmF0b3IoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpIHsg
cmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywgSlNBcnJheUl0ZXJhdG9yVHlwZSk7
IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdElzTWFwSXRlcmF0b3IoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBzcmMpIHsgcmV0dXJuIGVtaXRJc0NlbGxXaXRoVHlwZShkc3QsIHNyYywg
SlNNYXBJdGVyYXRvclR5cGUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZmVkZjI5YWUxMGM5OTZiZGJkZjdmZGNk
NDY2MTkzNmU2ODBkMTY4OC4uMTU4ODBlNmJlNjE2YmYyYTQ1Y2QzYjY3Y2M3ZDc5M2I2N2Q1NTIx
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcApAQCAtMTg5NCw3ICsxODk0LDYgQEAgQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJB
TkRfQ0hFQ0soaXNQcm9taXNlLCBJc1Byb21pc2UpCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFO
RF9DSEVDSyhpc1JlZ0V4cE9iamVjdCwgSXNSZWdFeHBPYmplY3QpCiBDUkVBVEVfSU5UUklOU0lD
X0ZPUl9CUkFORF9DSEVDSyhpc01hcCwgSXNNYXApCiBDUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFO
RF9DSEVDSyhpc1NldCwgSXNTZXQpCi1DUkVBVEVfSU5UUklOU0lDX0ZPUl9CUkFORF9DSEVDSyhp
c1NoYWRvd1JlYWxtLCBJc1NoYWRvd1JlYWxtKQogQ1JFQVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRf
Q0hFQ0soaXNTdHJpbmdJdGVyYXRvciwgSXNTdHJpbmdJdGVyYXRvcikKIENSRUFURV9JTlRSSU5T
SUNfRk9SX0JSQU5EX0NIRUNLKGlzQXJyYXlJdGVyYXRvciwgSXNBcnJheUl0ZXJhdG9yKQogQ1JF
QVRFX0lOVFJJTlNJQ19GT1JfQlJBTkRfQ0hFQ0soaXNNYXBJdGVyYXRvciwgSXNNYXBJdGVyYXRv
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNGY0ZTI1YzNkMmNhMzlkNGFjZTE2NTM2YjhjMmY3
ZTQ5YTQyYzRkNi4uYzVmNjkzOWVkMDQ2ZGZjZDJjM2RmMDk5OWU4MWRjMGVmYTI5ZTdjMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKQEAgLTM2NCw3ICszNjQsNiBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckNyZWF0ZVJlYWxtKTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyRXZhbFNjcmlwdCk7CiBzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckdDKTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyQ2xlYXJLZXB0T2JqZWN0cyk7Ci1zdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckdsb2JhbE9iamVjdEZv
cik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckFnZW50
U3RhcnQpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJB
Z2VudFJlY2VpdmVCcm9hZGNhc3QpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
ZnVuY3Rpb25Eb2xsYXJBZ2VudFJlcG9ydCk7CkBAIC02NDcsNyArNjQ2LDYgQEAgcHJpdmF0ZToK
ICAgICAgICAgYWRkRnVuY3Rpb24odm0sIGRvbGxhciwgImV2YWxTY3JpcHQiLCBmdW5jdGlvbkRv
bGxhckV2YWxTY3JpcHQsIDEsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6Tm9uZSkpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9sbGFyLCAiZ2MiLCBmdW5jdGlv
bkRvbGxhckdDLCAwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5v
bmUpKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sIGRvbGxhciwgImNsZWFyS2VwdE9iamVjdHMi
LCBmdW5jdGlvbkRvbGxhckNsZWFyS2VwdE9iamVjdHMsIDAsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOwotICAgICAgICBhZGRGdW5jdGlvbih2bSwgZG9s
bGFyLCAiZ2xvYmFsT2JqZWN0Rm9yIiwgZnVuY3Rpb25Eb2xsYXJHbG9iYWxPYmplY3RGb3IsIDEs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOwogICAgICAg
ICAKICAgICAgICAgZG9sbGFyLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJnbG9iYWwiKSwgZ2xvYmFsVGhpcygpKTsKICAgICAgICAgZG9sbGFyLT5wdXREaXJlY3RD
dXN0b21BY2Nlc3Nvcih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIklzSFRNTEREQSIp
LApAQCAtMjA2OCwyMCArMjA2Niw2IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlv
bkRvbGxhckNsZWFyS2VwdE9iamVjdHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyR2xvYmFsT2JqZWN0Rm9yLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQotewotICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0KLSAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUs
IGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBlbm91Z2ggYXJndW1lbnRzIl9zKSkpOwot
ICAgIEpTVmFsdWUgYXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBpZiAoYXJnLmlz
Q2VsbCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFyZy5hc0NlbGwoKS0+c3Ry
dWN0dXJlKHZtKS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFRoaXMoKSk7Ci0KLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotfQotCiBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oZnVuY3Rpb25Eb2xsYXJBZ2VudFN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBmZTNm
OTllZDc5OTM5MjgyOWZmYjlmZjY2NjNjZTFkN2IxNzVmZTYzLi4xZTJlN2UxNjdmZTczYzZmNWQw
NzJjMGU5ZTU1NTQyNjVlZDRlYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCkBAIC01MDk2LDcgKzUwOTYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAg
ICAgICAgICAgbmV3Q291bnQtLTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goSURFTlQpLCAiXCJuZXcuXCIgY2FuIG9u
bHkgYmUgZm9sbG93ZWQgd2l0aCB0YXJnZXQiKTsKKyAgICAgICAgICAgIGZhaWxJZlRydWUobWF0
Y2goSURFTlQpLCAiXCJuZXcuXCIgY2FuIG9ubHkgZm9sbG93ZWQgd2l0aCB0YXJnZXQiKTsKICAg
ICAgICAgICAgIGZhaWxEdWVUb1VuZXhwZWN0ZWRUb2tlbigpOwogICAgICAgICB9CiAgICAgfQpA
QCAtNTEzMSw3ICs1MTMxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAg
ICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVJbXBvcnRNZXRhRXhwcihsb2NhdGlvbiwgY3JlYXRl
UmVzb2x2ZUFuZFVzZVZhcmlhYmxlKGNvbnRleHQsICZtX3ZtLnByb3BlcnR5TmFtZXMtPm1ldGFQ
cml2YXRlTmFtZSwgZmFsc2UsIGV4cHJlc3Npb25TdGFydCwgbG9jYXRpb24pKTsKICAgICAgICAg
ICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGZh
aWxJZlRydWUobWF0Y2goSURFTlQpLCAiXCJpbXBvcnQuXCIgY2FuIG9ubHkgYmUgZm9sbG93ZWQg
d2l0aCBtZXRhIik7CisgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChJREVOVCksICJc
ImltcG9ydC5cIiBjYW4gb25seSBmb2xsb3dlZCB3aXRoIG1ldGEiKTsKICAgICAgICAgICAgICAg
ICBmYWlsRHVlVG9VbmV4cGVjdGVkVG9rZW4oKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCmluZGV4IDc4MjhkMDA4YTg1MzQ2MWU0OGUzNmQyZmJlYTYxYzcwOTU3NmRkYWYuLjQw
YzE1OWU4ZDdjNTQwNDlmZDk4YzhhNjY2OGE2NGE4ZGY0ZWEzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtNTIsNyArNTIs
NiBAQAogICAgIG1hY3JvKE9iamVjdCkgXAogICAgIG1hY3JvKFBsdXJhbFJ1bGVzKSBcCiAgICAg
bWFjcm8oUHJvbWlzZSkgXAotICAgIG1hY3JvKFNoYWRvd1JlYWxtKSBcCiAgICAgbWFjcm8oUmVm
bGVjdCkgXAogICAgIG1hY3JvKFJlZ0V4cCkgXAogICAgIG1hY3JvKFJlbGF0aXZlVGltZUZvcm1h
dCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RF
dmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVj
dEV2YWxFeGVjdXRhYmxlLmNwcAppbmRleCA0YjMyMmU1NmExYzcxZDczZjczYjUwYzMzY2IxMGVl
OWJjNDFiNmY5Li5lNGZmNjFjYmZiMTlmNjY0OWVjNThmMDJlY2NmNjdmMTgyYjA1NjYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxF
eGVjdXRhYmxlLmNwcApAQCAtMzQsOSArMzQsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBFcnJvckhhbmRsZXJGdW5jdG9yPgotaW5saW5lIEluZGlyZWN0RXZh
bEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZUltcGwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIEVycm9ySGFuZGxlckZ1bmN0b3IgZXJy
b3JIYW5kbGVyKQorSW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJs
ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC01Miw3ICs1MCw3IEBAIGlubGluZSBJbmRpcmVjdEV2YWxF
eGVjdXRhYmxlKiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGVJbXBsKEpTR2xvYmFsT2Jq
ZWN0CiAKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBPcHRpb25TZXQ8Q29kZUdlbmVyYXRp
b25Nb2RlPiBjb2RlR2VuZXJhdGlvbk1vZGUgPSBnbG9iYWxPYmplY3QtPmRlZmF1bHRDb2RlR2Vu
ZXJhdGlvbk1vZGUoKTsKLQorICAgIAogICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5r
ZWRFdmFsQ29kZSA9IHZtLmNvZGVDYWNoZSgpLT5nZXRVbmxpbmtlZEV2YWxDb2RlQmxvY2soCiAg
ICAgICAgIHZtLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJTdHJp
Y3RNb2RlOjpOb3RTdHJpY3QsIGNvZGVHZW5lcmF0aW9uTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0
VHlwZSk7CiAKQEAgLTYwLDggKzU4LDcgQEAgaW5saW5lIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUq
IEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZUltcGwoSlNHbG9iYWxPYmplY3QKICAgICAg
ICAgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoZ2xvYmFsT2JqZWN0LCBl
eGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5lKCksIGVycm9yLm1lc3Nh
Z2UoKSk7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGVycm9ySGFuZGxl
cihleGVjdXRhYmxlLT5zb3VyY2UoKSwgJmVycm9yKTsKLSAgICAgICAgc2NvcGUucmVsZWFzZSgp
OworICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3IudG9FcnJv
ck9iamVjdChnbG9iYWxPYmplY3QsIGV4ZWN1dGFibGUtPnNvdXJjZSgpKSk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNzAsMjQgKzY3LDYgQEAgaW5saW5lIEluZGlyZWN0
RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZUltcGwoSlNHbG9i
YWxPYmplY3QKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KIAotSW5kaXJlY3RFdmFsRXhlY3V0
YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlIGRl
cml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4
dFR5cGUgZXZhbENvbnRleHRUeXBlLCBOYWtlZFB0cjxKU09iamVjdD4mIHJlc3VsdGluZ0Vycm9y
KQotewotICAgIGF1dG8gaGFuZGxlRXJyb3IgPSBbJl0oY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBQYXJzZXJFcnJvciogZXJyb3IpIHsKLSAgICAgICAgcmVzdWx0aW5nRXJyb3IgPSBlcnJvci0+
dG9FcnJvck9iamVjdChnbG9iYWxPYmplY3QsIHNvdXJjZSk7Ci0gICAgfTsKLSAgICByZXR1cm4g
Y3JlYXRlSW1wbChnbG9iYWxPYmplY3QsIHNvdXJjZSwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUsIGhhbmRsZUVycm9yKTsKLX0KLQot
SW5kaXJlY3RFdmFsRXhlY3V0YWJsZSogSW5kaXJlY3RFdmFsRXhlY3V0YWJsZTo6dHJ5Q3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
RGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQotewotICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIGhhbmRsZUVycm9yID0gWyZdKGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3IqIGVycm9yKSB7Ci0gICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAgICAgdGhyb3dWTUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsIGVycm9yLT50b0Vycm9yT2JqZWN0KGdsb2JhbE9iamVjdCwgc291
cmNlKSk7Ci0gICAgfTsKLSAgICByZXR1cm4gY3JlYXRlSW1wbChnbG9iYWxPYmplY3QsIHNvdXJj
ZSwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBldmFsQ29udGV4
dFR5cGUsIGhhbmRsZUVycm9yKTsKLX0KLQogY29uc3RleHByIGJvb2wgaW5TdHJpY3RDb250ZXh0
ID0gZmFsc2U7CiBjb25zdGV4cHIgYm9vbCBpbnNpZGVPcmRpbmFyeUZ1bmN0aW9uID0gZmFsc2U7
CiBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRGVyaXZlZENv
bnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0
LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhlY3V0YWJsZS5oCmluZGV4IDM3MDRi
MjQ2OGE0Y2FiNDZkNzljNTMzNWZkNzEyMDFhNDZhYjNmNGMuLjQ5OGI1Yzg3MDk4YWIzNzQ3OTdh
MjViZjQ4MTYzN2NmYmI5MmVkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmgKQEAgLTMxLDEyICszMSw4IEBAIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlIGZpbmFsIDogcHVi
bGljIEV2YWxFeGVjdXRhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgSW5kaXJlY3RFdmFsRXhl
Y3V0YWJsZSogdHJ5Q3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERl
cml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4
dFR5cGUpOwotICAgIHN0YXRpYyBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBjcmVhdGUoSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlz
QXJyb3dGdW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSwgTmFrZWRQdHI8SlNPYmplY3Q+
Jik7CisgICAgc3RhdGljIEluZGlyZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBlKTsKIHByaXZhdGU6Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgRXJyb3JIYW5kbGVyRnVuY3Rvcj4KLSAgICBpbmxpbmUgc3RhdGljIEluZGly
ZWN0RXZhbEV4ZWN1dGFibGUqIGNyZWF0ZUltcGwoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgRGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IEV2YWxDb250ZXh0VHlwZSwgRXJyb3JIYW5kbGVyRnVuY3Rvcik7Ci0KICAgICBJbmRpcmVjdEV2
YWxFeGVjdXRhYmxlKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIERlcml2ZWRD
b250ZXh0VHlwZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBFdmFsQ29udGV4dFR5cGUp
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCmluZGV4IDc0ZmYzNmQ2YjlmMmI5MTYzNDc3NzBjZWVlMjkxZTg4YjdiM2E5ZWMuLmUw
Y2ViNGJlMDIzMTUwY2U1YTk0ZGI4YTg4YmNkNmQxYzBmZWVlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTE5Niw5ICsxOTYs
NiBAQAogI2luY2x1ZGUgIlNldENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiU2V0SXRlcmF0b3JQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJTZXRQcm90b3R5cGUuaCIKLSNpbmNsdWRlICJTaGFkb3dS
ZWFsbUNvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiU2hhZG93UmVhbG1PYmplY3QuaCIKLSNpbmNs
dWRlICJTaGFkb3dSZWFsbVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0
aW9uLmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJTdHJpbmdJ
dGVyYXRvclByb3RvdHlwZS5oIgpAQCAtOTI3LDkgKzkyNCw2IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OmluaXQoVk0mIHZtKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJPZkFy
cmF5SW5kZXhpbmdNb2RlczsgKytpKQogICAgICAgICBtX2FycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdTaGFwZUR1cmluZ0FsbG9jYXRpb25baV0gPSBtX29yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJ
bmRleGluZ1NoYXBlW2ldOwogCi0gICAgbV9zaGFkb3dSZWFsbVByb3RvdHlwZS5zZXQodm0sIHRo
aXMsIFNoYWRvd1JlYWxtUHJvdG90eXBlOjpjcmVhdGUodm0sIFNoYWRvd1JlYWxtUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwot
ICAgIG1fc2hhZG93UmVhbG1PYmplY3RTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBTaGFkb3dSZWFs
bU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3NoYWRvd1JlYWxtUHJvdG90eXBl
LmdldCgpKSk7Ci0KICAgICBtX3JlZ0V4cFByb3RvdHlwZS5zZXQodm0sIHRoaXMsIFJlZ0V4cFBy
b3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBSZWdFeHBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV9yZWdFeHBTdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBSZWdFeHBPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9yZWdFeHBQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0
cnVjdHVyZS5zZXQodm0sIHRoaXMsIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSh2
bSwgdGhpcykpOwpAQCAtMTAzNiwxMCArMTAzMCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6Omlu
aXQoVk0mIHZtKQogICAgIEFycmF5Q29uc3RydWN0b3IqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJh
eUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90
b3R5cGUuZ2V0KCksIG1fc3BlY2llc0dldHRlclNldHRlci5nZXQoKSk7CiAgICAgbV9hcnJheUNv
bnN0cnVjdG9yLnNldCh2bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rvcik7CiAgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6QXJyYXkp
XS5zZXQodm0sIHRoaXMsIGFycmF5Q29uc3RydWN0b3IpOwotCi0gICAgU2hhZG93UmVhbG1Db25z
dHJ1Y3Rvciogc2hhZG93UmVhbG1Db25zdHJ1Y3RvciA9IFNoYWRvd1JlYWxtQ29uc3RydWN0b3I6
OmNyZWF0ZSh2bSwgU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9zaGFkb3dSZWFsbVByb3RvdHlwZS5n
ZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKTsKLSAgICBtX3NoYWRvd1JlYWxtQ29u
c3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBzaGFkb3dSZWFsbUNvbnN0cnVjdG9yKTsKLQorICAgIAog
ICAgIFJlZ0V4cENvbnN0cnVjdG9yKiByZWdFeHBDb25zdHJ1Y3RvciA9IFJlZ0V4cENvbnN0cnVj
dG9yOjpjcmVhdGUodm0sIFJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSwg
bV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKTsKICAgICBtX3JlZ0V4cENvbnN0cnVjdG9yLnNl
dCh2bSwgdGhpcywgcmVnRXhwQ29uc3RydWN0b3IpOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlJlZ0V4cCldLnNldCh2bSwg
dGhpcywgcmVnRXhwQ29uc3RydWN0b3IpOwpAQCAtMTExOSw3ICsxMTEwLDYgQEAgY2FwaXRhbE5h
bWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFn
ID8gY2FwaXRhbE5hbWUKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGZ1bmN0aW9uQ29u
c3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKICAgICBtX2FycmF5UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGFycmF5Q29uc3RydWN0b3IsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBtX3Jl
Z0V4cFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCByZWdFeHBDb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotICAgIG1fc2hhZG93UmVhbG1Qcm90
b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5j
b25zdHJ1Y3Rvciwgc2hhZG93UmVhbG1Db25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIAogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5PYmplY3QsIG9iamVjdENvbnN0cnVj
dG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkZ1
bmN0aW9uLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CkBAIC0xMjcxLDggKzEyNjEsNiBAQCBjYXBpdGFsTmFt
ZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcg
PyBjYXBpdGFsTmFtZQogICAgICAgICBUZW1wb3JhbE9iamVjdCogdGVtcG9yYWwgPSBUZW1wb3Jh
bE9iamVjdDo6Y3JlYXRlKHZtLCBUZW1wb3JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzKSk7CiAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5UZW1wb3JhbCwgdGVtcG9yYWwsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICB9Ci0gICAgaWYgKE9wdGlvbnM6OnVzZVNoYWRv
d1JlYWxtKCkpCi0gICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5TaGFkb3dSZWFsbSwgc2hhZG93UmVhbG1Db25zdHJ1Y3Rvciwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCiAgICAgbV9tb2R1
bGVMb2FkZXIuaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNNb2R1
bGVMb2FkZXI+JiBpbml0KSB7CkBAIC0xNDQ1LDEyICsxNDMzLDYgQEAgY2FwaXRhbE5hbWUgIyMg
Q29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2Fw
aXRhbE5hbWUKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50Ojpob3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIpXS5pbml0TGF0ZXIo
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMiwgU3RyaW5nKCksIGdsb2JhbEZ1bmNIb3N0UHJvbWlzZVJlamVjdGlvblRy
YWNrZXIpKTsKICAgICAgICAgfSk7Ci0gICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6aW1wb3J0SW5SZWFsbSldLmluaXRMYXRlcihb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewotICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAwLCBTdHJpbmcoKSwgaW1wb3J0SW5SZWFsbSkpOwotICAgICAgICB9KTsKLSAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjpldmFsSW5SZWFsbSldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxs
PiYgaW5pdCkgewotICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQu
dm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZXZh
bEluUmVhbG0pKTsKLSAgICAgICAgfSk7CiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6dGhpc1RpbWVWYWx1ZSldLmluaXRMYXRl
cihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewogICAgICAgICAgICAgaW5p
dC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZGF0ZVByb3RvRnVuY0dldFRpbWUsIERhdGVQcm90
b3R5cGVHZXRUaW1lSW50cmluc2ljKSk7CiAgICAgICAgIH0pOwpAQCAtMjEzNSw3ICsyMTE3LDYg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBW
aXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1fVVJJRXJyb3JTdHJ1Y3R1cmUudmlz
aXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9hZ2dyZWdhdGVFcnJvclN0cnVjdHVyZS52
aXNpdCh2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FycmF5Q29u
c3RydWN0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2hhZG93UmVhbG1D
b25zdHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBDb25z
dHJ1Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9vYmplY3RDb25zdHJ1
Y3Rvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvbkNvbnN0cnVj
dG9yKTsKQEAgLTIyMzMsNyArMjIxNCw2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hp
bGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0
LT5tX2N1c3RvbVNldHRlckZ1bmN0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRo
aXNPYmplY3QtPm1fYm91bmRGdW5jdGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX25hdGl2ZVN0ZEZ1bmN0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwot
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2hhZG93UmVhbG1PYmplY3RTdHJ1Y3R1
cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0
dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jRnVuY3Rpb25TdHJ1
Y3R1cmUpOwpAQCAtMjU5MCwxMyArMjU3MCw2IEBAIEpTR2xvYmFsT2JqZWN0KiBKU0dsb2JhbE9i
amVjdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgcmV0dXJuIGds
b2JhbE9iamVjdDsKIH0KIAotSlNHbG9iYWxPYmplY3QqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVX
aXRoQ3VzdG9tTWV0aG9kVGFibGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
R2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKQotewotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dsb2JhbE9i
amVjdD4odm0uaGVhcCkpIEpTR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIG1ldGhvZFRhYmxl
KTsKLSAgICBnbG9iYWxPYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICByZXR1cm4gZ2xv
YmFsT2JqZWN0OwotfQotCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiB7CiAgICAgRGVmZXJUZXJtaW5hdGlvbiBkZWZlclRlcm1pbmF0aW9uKHZtKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDk0ZTEy
YTIzYmJhYjI1MzU5Njc2ZDBiMTljYmYyN2ViNDI4M2JkZDQuLmUwNmE1YWIyZDRiMGY0OTYzNjcy
MWVmZjFjY2RmZWExYmJjNmQ4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMTE1LDggKzExNSw2IEBAIGNsYXNzIE51bGxTZXR0ZXJG
dW5jdGlvbjsKIGNsYXNzIE9iamVjdENvbnN0cnVjdG9yOwogY2xhc3MgUHJvZ3JhbUNvZGVCbG9j
azsKIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwotY2xhc3MgU2hhZG93UmVhbG1Db25zdHJ1Y3Rv
cjsKLWNsYXNzIFNoYWRvd1JlYWxtUHJvdG90eXBlOwogY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7
CiBjbGFzcyBSZWdFeHBQcm90b3R5cGU7CiBjbGFzcyBTZXRJdGVyYXRvclByb3RvdHlwZTsKQEAg
LTMxMyw3ICszMTEsNiBAQCBwdWJsaWM6CiAKICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3Ry
dWN0b3I+IG1fb2JqZWN0Q29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5Q29uc3Ry
dWN0b3I+IG1fYXJyYXlDb25zdHJ1Y3RvcjsKLSAgICBXcml0ZUJhcnJpZXI8U2hhZG93UmVhbG1D
b25zdHJ1Y3Rvcj4gbV9zaGFkb3dSZWFsbUNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxS
ZWdFeHBDb25zdHJ1Y3Rvcj4gbV9yZWdFeHBDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8
RnVuY3Rpb25Db25zdHJ1Y3Rvcj4gbV9mdW5jdGlvbkNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFy
cmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7CkBAIC0zNjEs
NyArMzU4LDYgQEAgcHVibGljOgogICAgIFdyaXRlQmFycmllcjxPYmplY3RQcm90b3R5cGU+IG1f
b2JqZWN0UHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxGdW5jdGlvblByb3RvdHlwZT4gbV9m
dW5jdGlvblByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlQcm90b3R5cGU+IG1fYXJy
YXlQcm90b3R5cGU7Ci0gICAgV3JpdGVCYXJyaWVyPFNoYWRvd1JlYWxtUHJvdG90eXBlPiBtX3No
YWRvd1JlYWxtUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxSZWdFeHBQcm90b3R5cGU+IG1f
cmVnRXhwUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxJdGVyYXRvclByb3RvdHlwZT4gbV9p
dGVyYXRvclByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8QXN5bmNJdGVyYXRvclByb3RvdHlw
ZT4gbV9hc3luY0l0ZXJhdG9yUHJvdG90eXBlOwpAQCAtNDE4LDcgKzQxNCw2IEBAIHB1YmxpYzoK
ICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jdXN0b21TZXR0
ZXJGdW5jdGlvblN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0
cnVjdHVyZT4gbV9uYXRpdmVTdGRGdW5jdGlvblN0cnVjdHVyZTsKICAgICBQcm9wZXJ0eU9mZnNl
dCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKLSAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3No
YWRvd1JlYWxtT2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
cmVnRXhwU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxBc3luY0Z1bmN0aW9uUHJvdG90eXBl
PiBtX2FzeW5jRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEFzeW5jR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGU+IG1fYXN5bmNHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsK
QEAgLTYyMSw3ICs2MTYsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIEpTR2xvYmFsT2JqZWN0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNHbG9iYWxPYmplY3QqIGNyZWF0ZVdpdGhDdXN0b21N
ZXRob2RUYWJsZShWTSYsIFN0cnVjdHVyZSosIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
Kik7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCkBAIC03MjYsNyArNzIwLDYgQEAgcHVi
bGljOgogICAgIEJpZ0ludFByb3RvdHlwZSogYmlnSW50UHJvdG90eXBlKCkgY29uc3QgeyByZXR1
cm4gbV9iaWdJbnRQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBKU09iamVjdCogZGF0ZVByb3RvdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0ZVN0cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7IH0KICAg
ICBKU09iamVjdCogc3ltYm9sUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xPYmpl
Y3RTdHJ1Y3R1cmUucHJvdG90eXBlSW5pdGlhbGl6ZWRPbk1haW5UaHJlYWQodGhpcyk7IH0KLSAg
ICBTaGFkb3dSZWFsbVByb3RvdHlwZSogc2hhZG93UmVhbG1Qcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3NoYWRvd1JlYWxtUHJvdG90eXBlLmdldCgpOyB9CiAgICAgUmVnRXhwUHJvdG90eXBl
KiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5nZXQo
KTsgfQogICAgIEpTT2JqZWN0KiBlcnJvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJy
b3JTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOyB9CiAgICAgSXRlcmF0b3JQcm90b3R5cGUqIGl0
ZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvdHlwZS5nZXQo
KTsgfQpAQCAtODQ0LDcgKzgzNyw2IEBAIHB1YmxpYzoKICAgICBQcm9wZXJ0eU9mZnNldCBmdW5j
dGlvbk5hbWVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uTmFtZU9mZnNldDsgfQog
ICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9u
dW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFN0cnVjdHVyZS5nZXQoKTsgfQotICAg
IFN0cnVjdHVyZSogc2hhZG93UmVhbG1TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3NoYWRv
d1JlYWxtT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQog
ICAgIFN0cnVjdHVyZSogYXN5bmNHZW5lcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2FzeW5jR2VuZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBnZW5lcmF0
b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVuY3Rpb25T
dHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCBmOTliOWRmYzVmNzgyZjVl
NzNkODNiMjBhNDUxOWVmOWQ1MmI2M2VhLi5jOGQ5MTJhYWVkMjA4ZGNjYTRmMmI1NTk3MjM0OWY4
Nzc1ZmQ3Nzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC00OTIsNyArNDkyLDcgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGdsb2JhbEZ1bmNFdmFsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW0KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwYXJzZWRP
YmplY3QpOwogCiAgICAgU291cmNlT3JpZ2luIHNvdXJjZU9yaWdpbiA9IGNhbGxGcmFtZS0+Y2Fs
bGVyU291cmNlT3JpZ2luKHZtKTsKLSAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEluZGlyZWN0
RXZhbEV4ZWN1dGFibGU6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uocywgc291
cmNlT3JpZ2luKSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRU
eXBlOjpOb25lKTsKKyAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IEluZGlyZWN0RXZhbEV4ZWN1
dGFibGU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1ha2VTb3VyY2Uocywgc291cmNlT3JpZ2luKSwg
RGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsK
ICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIWV2YWwpOwogICAg
IGlmICghZXZhbCkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmNwcAppbmRleCAwOTFjMzBhZDA1NzJjZjVjN2QxYmE5
ODM1ODFhZmUwNTczNDNlNDBjLi41YThhMTRhM2NjNmFkMTllZDQwODI0YjgzMDJkYjkwYzRjNDc0
YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5jcHAKQEAgLTk2LDcg
Kzk2LDYgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6SlNUeXBl
IHR5cGUpCiAgICAgQ0FTRShTdHJpY3RFdmFsQWN0aXZhdGlvblR5cGUpCiAgICAgQ0FTRShXaXRo
U2NvcGVUeXBlKQogICAgIENBU0UoTW9kdWxlTmFtZXNwYWNlT2JqZWN0VHlwZSkKLSAgICBDQVNF
KFNoYWRvd1JlYWxtVHlwZSkKICAgICBDQVNFKFJlZ0V4cE9iamVjdFR5cGUpCiAgICAgQ0FTRShK
U0RhdGVUeXBlKQogICAgIENBU0UoUHJveHlPYmplY3RUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaAppbmRleCA0MzFiYmFmYzg0ZTY1MzQ0YzAwMmU0ZTVmNDc2N2M3YTM0
NTU1OTQxLi42NWVhOTRlZjU2M2Y0YjNhZTIxOTE3NTFjNzkyZWM1MTBkNTc0MWMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAtMTEwLDcgKzExMCw2IEBAIGVudW0g
SlNUeXBlIDogdWludDhfdCB7CiAgICAgLy8gRW5kIEpTU2NvcGUgdHlwZXMuCiAKICAgICBNb2R1
bGVOYW1lc3BhY2VPYmplY3RUeXBlLAotICAgIFNoYWRvd1JlYWxtVHlwZSwKICAgICBSZWdFeHBP
YmplY3RUeXBlLAogICAgIEpTRGF0ZVR5cGUsCiAgICAgUHJveHlPYmplY3RUeXBlLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggNzU3ZjMxZmFhYTNl
NDQwYjE3ZGY4M2NkMTZmN2Y2MmE5OGQxOWZiYS4uZTA3ODMzZjQ3YWJjMWE0YjA5MjQyMTVjNTc1
N2JmNmViZGU1NjQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
TGlzdC5oCkBAIC01NDAsOCArNTQwLDYgQEAgYm9vbCBjYW5Vc2VXZWJBc3NlbWJseUZhc3RNZW1v
cnkoKTsKICAgICB2KEJvb2wsIHVzZUhhc093biwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBP
YmplY3QuaGFzT3duIG1ldGhvZCIpIFwKICAgICB2KEJvb2wsIHVzZUludGxFbnVtZXJhdGlvbiwg
dHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBJbnRsIGVudW1lcmF0aW9uIEFQSXMuIikgXAogICAg
IHYoQm9vbCwgdXNlU2hhcmVkQXJyYXlCdWZmZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwK
LSAgICAvKiBGSVhNRTogU2hhZG93blJlYWxtIGNhbiBiZSBlbmFibGVkIG9uY2UgV2ViQ29yZSdz
IEpTR2xvYmFsT2JqZWN0ID09IEpTRE9NR2xvYmFsT2JqZWN0IGFzc3VtcHRpb24gaXMgcmVtb3Zl
ZCwgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE1MDYgKi9cCi0g
ICAgdihCb29sLCB1c2VTaGFkb3dSZWFsbSwgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgU2hh
ZG93UmVhbG0gb2JqZWN0LiIpIFwKICAgICB2KEJvb2wsIHVzZVRlbXBvcmFsLCBmYWxzZSwgTm9y
bWFsLCAiRXhwb3NlIHRoZSBUZW1wb3JhbCBvYmplY3QuIikgXAogICAgIHYoQm9vbCwgdXNlV2Vi
QXNzZW1ibHlUaHJlYWRpbmcsIHRydWUsIE5vcm1hbCwgIkFsbG93IGluc3RydWN0aW9ucyBmcm9t
IHRoZSB3YXNtIHRocmVhZGluZyBzcGVjLiIpIFwKICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5
VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMsIGZhbHNlLCBOb3JtYWwsICJBbGxvdyBmdW5jdGlvbiB0
eXBlcyBmcm9tIHRoZSB3YXNtIHR5cGVkIGZ1bmN0aW9uIHJlZmVyZW5jZXMgc3BlYy4iKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbUNvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtQ29u
c3RydWN0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmU4YWFjM2RhZjMx
Y2FiZjZiMTg5ZWFkMWIzMzE2YzRhYzE1N2Y3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1Jl
YWxtQ29uc3RydWN0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5oIgotCi0jaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgotI2luY2x1ZGUgIlNoYWRvd1JlYWxtT2JqZWN0LmgiCi0KLW5hbWVzcGFj
ZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8gU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNoYWRvd1JlYWxtQ29uc3RydWN0b3IpIH07Ci0KLVNU
QVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShTaGFkb3dSZWFsbUNvbnN0cnVj
dG9yKTsKLQotc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY2FsbFNoYWRvd1JlYWxt
KTsKLXN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFdpdGhTaGFkb3dS
ZWFsbUNvbnN0cnVjdG9yKTsKLQotU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcjo6U2hhZG93UmVhbG1D
b25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIDogSW50ZXJuYWxG
dW5jdGlvbih2bSwgc3RydWN0dXJlLCBjYWxsU2hhZG93UmVhbG0sIGNvbnN0cnVjdFdpdGhTaGFk
b3dSZWFsbUNvbnN0cnVjdG9yKQotewotfQotCi12b2lkIFNoYWRvd1JlYWxtQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2hhZG93UmVhbG1Qcm90b3R5cGUqIHNoYWRvd1JlYWxt
UHJvdG90eXBlKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCB2bS5wcm9wZXJ0
eU5hbWVzLT5TaGFkb3dSZWFsbS5zdHJpbmcoKSwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhv
dXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBzaGFkb3dSZWFsbVByb3RvdHlwZSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwotfQotCi1KU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oY29uc3RydWN0V2l0aFNoYWRvd1JlYWxtQ29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7Ci0gICAgU3RydWN0dXJlKiBzaGFkb3dSZWFsbVN0cnVjdHVyZSA9IFNoYWRvd1Jl
YWxtT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5zaGFkb3dSZWFsbVByb3RvdHlwZSgpKTsKLSAgICBKU09iamVjdCogc2hhZG93UmVhbG1PYmpl
Y3QgPSBTaGFkb3dSZWFsbU9iamVjdDo6Y3JlYXRlKHZtLCBzaGFkb3dSZWFsbVN0cnVjdHVyZSwg
Z2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHNoYWRvd1JlYWxtT2JqZWN0KTsKLX0KLQotSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGNhbGxTaGFkb3dSZWFsbSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSopKQotewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdsb2Jh
bE9iamVjdC0+dm0oKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVj
dG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJTaGFkb3dSZWFsbSIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbUNvbnN0cnVjdG9yLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwY2I5NGM4MDE3YzJlMTVjOTlkZmYyMzM1MjVk
NzliNTFjMThiZmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Db25zdHJ1Y3Rvci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MSBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkludGVy
bmFsRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJTaGFkb3dSZWFsbVByb3RvdHlwZS5oIgotCi1uYW1l
c3BhY2UgSlNDIHsKLQotY2xhc3MgR2V0dGVyU2V0dGVyOwotCi1jbGFzcyBTaGFkb3dSZWFsbUNv
bnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewotcHVibGljOgotICAg
IHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQotICAgIHN0YXRp
YyBTaGFkb3dSZWFsbUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgU2hhZG93UmVhbG1Qcm90b3R5cGUqIHNoYWRvd1JlYWxtUHJvdG90eXBlLCBHZXR0ZXJT
ZXR0ZXIqKQotICAgIHsKLSAgICAgICAgU2hhZG93UmVhbG1Db25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTaGFkb3dSZWFsbUNvbnN0cnVjdG9yPih2
bS5oZWFwKSkgU2hhZG93UmVhbG1Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKLSAgICAgICAg
Y29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBzaGFkb3dSZWFsbVByb3RvdHlwZSk7Ci0g
ICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKLSAgICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0K
LSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIFNoYWRvd1JlYWxtQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUq
KTsKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgU2hhZG93UmVhbG1Qcm90b3R5cGUqKTsK
LX07Ci1TVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShTaGFkb3dSZWFsbUNvbnN0
cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtT2JqZWN0LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU0NDdhNzFlZTE1MDg1MzdiNDU2ZmEzNmI0
YmYxYWNjMzQ4ZGI0NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIx
IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJT
aGFkb3dSZWFsbU9iamVjdC5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotU1RBVElDX0FTU0VSVF9J
U19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKFNoYWRvd1JlYWxtT2JqZWN0KTsKLQotfSAvLyBuYW1l
c3BhY2UgSlNDCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8gU2hhZG93UmVh
bG1PYmplY3Q6OnNfaW5mbyA9IHsgIlNoYWRvd1JlYWxtIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShTaGFkb3dSZWFsbU9iamVjdCkgfTsKLQot
U2hhZG93UmVhbG1PYmplY3Q6OlNoYWRvd1JlYWxtT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCi0gICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCi17Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIFZpc2l0b3I+Ci12b2lkIFNoYWRvd1JlYWxtT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1w
bChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgU2hhZG93UmVhbG1PYmpl
Y3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U2hhZG93UmVhbG1PYmplY3QqPihjZWxsKTsKLSAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLQotICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fZ2xvYmFsT2JqZWN0KTsKLX0KLQotREVGSU5FX1ZJU0lUX0NISUxEUkVO
KFNoYWRvd1JlYWxtT2JqZWN0KTsKLQotU2hhZG93UmVhbG1PYmplY3QqIFNoYWRvd1JlYWxtT2Jq
ZWN0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgR2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKQotewotICAgIFNoYWRvd1JlYWxtT2JqZWN0KiBv
YmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTaGFkb3dSZWFsbU9iamVjdD4odm0u
aGVhcCkpIFNoYWRvd1JlYWxtT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpOwotICAgIG9iamVjdC0+Zmlu
aXNoQ3JlYXRpb24odm0pOwotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBKU0ds
b2JhbE9iamVjdDo6Y3JlYXRlV2l0aEN1c3RvbU1ldGhvZFRhYmxlKHZtLCBKU0dsb2JhbE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIG1ldGhvZFRhYmxlKTsKLSAgICBvYmpl
Y3QtPm1fZ2xvYmFsT2JqZWN0LnNldCh2bSwgb2JqZWN0LCBnbG9iYWxPYmplY3QpOwotICAgIHJl
dHVybiBvYmplY3Q7Ci19Ci0KLXZvaWQgU2hhZG93UmVhbG1PYmplY3Q6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgQVNTRVJUKGlu
aGVyaXRzKHZtLCBpbmZvKCkpKTsKLSAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5T
SVRJT04oKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1PYmplY3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZDA4OGZmNzg0MmUyMGFlNTQyNTJmNmRiMDVkNGM3ZTg0ZjllYjE1Yy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TaGFkb3dSZWFsbU9iamVjdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVk
ZSAiSlNPYmplY3QuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIFNoYWRvd1JlYWxtT2Jq
ZWN0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewotcHVibGljOgotICAgIHVzaW5n
IEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgotICAgIHN0YXRpYyBJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHZtLnNoYWRv
d1JlYWxtU3BhY2U8bW9kZT4oKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKFNoYWRvd1JlYWxtVHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIHN0
YXRpYyBTaGFkb3dSZWFsbU9iamVjdCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgY29uc3QgR2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUqKTsKLQotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QoKSB7IHJldHVybiBtX2dsb2JhbE9iamVjdC5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIFNo
YWRvd1JlYWxtT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYpOwotICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU47Ci0KLSAgICBXcml0ZUJhcnJpZXI8
SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVBy
b3RvdHlwZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZDk4ZTNiOWJjYzIx
MTVkMzRkOWM1YWM5ZjFiMmY2NDQ4N2ZkY2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVh
bG1Qcm90b3R5cGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjEgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlNoYWRvd1JlYWxtUHJvdG90eXBlLmgiCi0KLSNpbmNsdWRlICJJbmRp
cmVjdEV2YWxFeGVjdXRhYmxlLmgiCi0jaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKLSNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCi0jaW5j
bHVkZSAiSlNNb2R1bGVMb2FkZXIuaCIKLSNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgot
Ci0jaW5jbHVkZSAiU2hhZG93UmVhbG1Qcm90b3R5cGUubHV0LmgiCi0KLW5hbWVzcGFjZSBKU0Mg
ewotCi0vKiBTb3VyY2UgZm9yIFNoYWRvd1JlYWxtUHJvdG90eXBlLmx1dC5oCi1AYmVnaW4gc2hh
ZG93UmVhbG1Qcm90b3R5cGVUYWJsZQotICBldmFsdWF0ZSAgICBKU0J1aWx0aW4gICAgIERvbnRF
bnVtfEZ1bmN0aW9uICAxCi0gIGltcG9ydFZhbHVlIEpTQnVpbHRpbiAgICAgRG9udEVudW18RnVu
Y3Rpb24gIDIKLUBlbmQKLSovCi0KLWNvbnN0IENsYXNzSW5mbyBTaGFkb3dSZWFsbVByb3RvdHlw
ZTo6c19pbmZvID0geyAiU2hhZG93UmVhbG0iLCAmQmFzZTo6c19pbmZvLCAmc2hhZG93UmVhbG1Q
cm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShTaGFkb3dSZWFsbVBy
b3RvdHlwZSkgfTsKLQotU2hhZG93UmVhbG1Qcm90b3R5cGU6OlNoYWRvd1JlYWxtUHJvdG90eXBl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KHZt
LCBzdHJ1Y3R1cmUpCi17Ci19Ci0KLXZvaWQgU2hhZG93UmVhbG1Qcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgQVNT
RVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKLSAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VU
X1RSQU5TSVRJT04oKTsKLX0KLQotSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGltcG9ydEluUmVh
bG0sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
Ci17Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBTaGFkb3dSZWFsbU9iamVjdCogdGhpc1Jl
YWxtID0ganNEeW5hbWljQ2FzdDxTaGFkb3dSZWFsbU9iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwot
ICAgIEFTU0VSVCh0aGlzUmVhbG0pOwotCi0gICAgYXV0byogcHJvbWlzZSA9IEpTUHJvbWlzZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnByb21pc2VTdHJ1Y3R1cmUoKSk7Ci0KLSAgICBhdXRv
IHNvdXJjZU9yaWdpbiA9IGNhbGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKHZtKTsKLSAgICBh
dXRvKiBzcGVjaWZpZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5n
KGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLQot
ICAgIEpTR2xvYmFsT2JqZWN0KiByZWFsbUdsb2JhbE9iamVjdCA9IHRoaXNSZWFsbS0+Z2xvYmFs
T2JqZWN0KCk7Ci0gICAgYXV0byogaW50ZXJuYWxQcm9taXNlID0gcmVhbG1HbG9iYWxPYmplY3Qt
Pm1vZHVsZUxvYWRlcigpLT5pbXBvcnRNb2R1bGUocmVhbG1HbG9iYWxPYmplY3QsIHNwZWNpZmll
ciwganNVbmRlZmluZWQoKSwgc291cmNlT3JpZ2luKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cmVqZWN0V2l0aENhdWdodEV4Y2VwdGlv
bihyZWFsbUdsb2JhbE9iamVjdCwgc2NvcGUpKSk7Ci0KLSAgICBzY29wZS5yZWxlYXNlKCk7Ci0g
ICAgcHJvbWlzZS0+cmVzb2x2ZShnbG9iYWxPYmplY3QsIGludGVybmFsUHJvbWlzZSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlKTsKLX0KLQotSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGV2YWxJblJlYWxtLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQotewotICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgU2hhZG93UmVhbG1PYmplY3Qq
IHRoaXNSZWFsbSA9IGpzRHluYW1pY0Nhc3Q8U2hhZG93UmVhbG1PYmplY3QqPih2bSwgdGhpc1Zh
bHVlKTsKLSAgICBBU1NFUlQodGhpc1JlYWxtKTsKLSAgICBKU0dsb2JhbE9iamVjdCogcmVhbG1H
bG9iYWxPYmplY3QgPSB0aGlzUmVhbG0tPmdsb2JhbE9iamVjdCgpOwotCi0gICAgSlNWYWx1ZSBl
dmFsQXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKLSAgICAvLyBldmFsIGNvZGUgYWRhcHRl
ZCBmcm9tIEpTR2xvYmFsT2JqZWNGdW5jdGlvbnM6Omdsb2JhbEZ1bmNFdmFsCi0gICAgU3RyaW5n
IHNjcmlwdCA9IGFzU3RyaW5nKGV2YWxBcmcpLT52YWx1ZShnbG9iYWxPYmplY3QpOwotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0KLSAgICBOYWtlZFB0cjxKU09iamVjdD4g
ZXhlY3V0YWJsZUVycm9yOwotICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShzY3Jp
cHQsIGNhbGxGcmFtZS0+Y2FsbGVyU291cmNlT3JpZ2luKHZtKSk7Ci0gICAgRXZhbEV4ZWN1dGFi
bGUqIGV2YWwgPSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUocmVhbG1HbG9iYWxPYmpl
Y3QsIHNvdXJjZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgRXZhbENvbnRleHRU
eXBlOjpOb25lLCBleGVjdXRhYmxlRXJyb3IpOwotICAgIGlmIChleGVjdXRhYmxlRXJyb3IpIHsK
LSAgICAgICAgRXJyb3JJbnN0YW5jZSogZXJyb3IgPSBqc0R5bmFtaWNDYXN0PEVycm9ySW5zdGFu
Y2UqPih2bSwgSlNWYWx1ZShleGVjdXRhYmxlRXJyb3IuZ2V0KCkpKTsKLSAgICAgICAgaWYgKGVy
cm9yICE9IG51bGxwdHIgJiYgZXJyb3ItPmVycm9yVHlwZSgpID09IEVycm9yVHlwZTo6U3ludGF4
RXJyb3IpIHsKLSAgICAgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7Ci0gICAgICAgICAg
ICBjb25zdCBTdHJpbmcgc3ludGF4RXJyb3JNZXNzYWdlID0gZXJyb3ItPnNhbml0aXplZE1lc3Nh
Z2VTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7Ci0gICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCBzeW50YXhFcnJvck1lc3NhZ2UpKTsK
LSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkVycm9yIGVuY291bnRlcmVkIGR1
cmluZyBldmFsdWF0aW9uIl9zKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgfQotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
Ci0KLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHZtLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwsIHJl
YWxtR2xvYmFsT2JqZWN0LCByZWFsbUdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpLCByZWFsbUds
b2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSk7Ci0gICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2Vw
dGlvbigpKSkgewotICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsICJFcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZXZhbHVhdGlvbiJfcykpOwotICAg
IH0KLQotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5ZWFlYjBiOGJhYjM5YzE2Nzk2MDE5NmI0MmY2NDIxZmNlNTFlYzliLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKLQotbmFtZXNwYWNl
IEpTQyB7Ci0KLWNsYXNzIFNoYWRvd1JlYWxtUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgewotcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpT
dHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7Ci0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+Ci0gICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCi0gICAgewotICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShTaGFkb3dSZWFsbVByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJl
dHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU2hhZG93UmVh
bG1Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsK
LSAgICAgICAgU2hhZG93UmVhbG1Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFNoYWRvd1JlYWxtUHJvdG90eXBlPih2bS5oZWFwKSkgU2hhZG93UmVhbG1Q
cm90b3R5cGUodm0sIHN0cnVjdHVyZSk7Ci0gICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRp
b24odm0pOwotICAgICAgICByZXR1cm4gcHJvdG90eXBlOwotICAgIH0KLQotICAgIERFQ0xBUkVf
SU5GTzsKLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0K
LQotcHJpdmF0ZToKLSAgICBTaGFkb3dSZWFsbVByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwot
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLX07Ci0KLUpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04oaW1wb3J0SW5SZWFsbSk7Ci1KU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGV2YWxJblJl
YWxtKTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKaW5kZXggMmZhYzczNDM1NDg5ZWI3MGQ0ZDk2ZThkMjliMzRiZDNiNjhkYjhjZi4uMzhlOTUx
MjliYTlmMDIxMTBhMWM0M2UwNTFjNGFhNjc4YzZmZDBkMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcApAQCAtMTU2LDcgKzE1Niw2IEBACiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9m
aWxlci5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNoYWRvd0No
aWNrZW4uaCIKLSNpbmNsdWRlICJTaGFkb3dSZWFsbU9iamVjdC5oIgogI2luY2x1ZGUgIlNpbXBs
ZVR5cGVkQXJyYXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXJDYWNoZS5o
IgogI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgiCkBAIC0xNTg4LDcgKzE1ODcsNiBA
QCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc2NyaXB0RmV0Y2hlclNw
YWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHNldEJ1Y2tldFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1NldDo6
QnVja2V0VHlwZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzZXRJ
dGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1NldEl0ZXJhdG9yKQogRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNldFNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBKU1NldCkKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhzaGFkb3dSZWFsbVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTaGFkb3dSZWFs
bU9iamVjdCkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzdHJpY3RF
dmFsQWN0aXZhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTdHJpY3RFdmFsQWN0
aXZhdGlvbikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzdHJpbmdJ
dGVyYXRvclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1N0cmluZ0l0ZXJhdG9yKQog
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHNvdXJjZUNvZGVTcGFjZSwg
ZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNTb3VyY2VDb2RlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYmRmNDMxZTg0ZWYwOTQ4NTZiYzAyNzMwYzQwZmZl
NmVkYWE1YzFkNi4uYWE4OWIyOGFkZTJmMjViNmNjODQ0MGQ2MTRiYzk0N2FlM2JhNGY3NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC01OTIsNyArNTkyLDYgQEAgcHVibGljOgog
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2V0QnVja2V0U3BhY2UpCiAg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzZXRJdGVyYXRvclNwYWNlKQog
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc2V0U3BhY2UpCi0gICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzaGFkb3dSZWFsbVNwYWNlKTsKICAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN0cmljdEV2YWxBY3RpdmF0aW9uU3Bh
Y2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzdHJpbmdJdGVyYXRv
clNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc291cmNlQ29k
ZVNwYWNlKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCBlNjE3MjVkMDQyY2U4YTRkMzhiOGM0MmU4NTA4MWUwM2VhYzViNWQzLi40NzIyZTg0
MGZmNjM4YTM3ZDIwYjFjN2Y5OGQwOGI4NTNkZjdlMzFjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTEw
LTE0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBV
bnJldmlld2VkLCByZXZlcnRpbmcgcjI4NDE1MS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTc0MAorCisgICAgICAgIFdUUgorCisgICAgICAgIFJl
dmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiVGVzdCBjb3ZlcmFnZSBmb3IgSlNDIHNoYWRv
dyByZWFsbXMgaW1wbGVtZW50YXRpb24iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzA2MDIKKyAgICAgICAgaHR0cHM6Ly9jb21taXRzLndlYmtpdC5v
cmcvcjI4NDE1MQorCiAyMDIxLTEwLTE0ICBQaGlsbGlwIE1hdGVzICA8cG1hdGVzQGlnYWxpYS5j
b20+CiAKICAgICAgICAgVGVzdCBjb3ZlcmFnZSBmb3IgSlNDIHNoYWRvdyByZWFsbXMgaW1wbGVt
ZW50YXRpb24KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbW9kdWxlcy9pbXBvcnQtbWV0YS1zeW50YXgu
anMgYi9KU1Rlc3RzL21vZHVsZXMvaW1wb3J0LW1ldGEtc3ludGF4LmpzCmluZGV4IDU5YTJiMzYz
NDYwYTYwMzVjN2ExMDVmMDhjMjM2ZjlmNGE5NDM1MWEuLjNlZGY0ZTUxMjBlMTJhNWI2ODk0OTEz
YjA1YWE3MGFjNjc2ODU2NjIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvbW9kdWxlcy9pbXBvcnQtbWV0
YS1zeW50YXguanMKKysrIGIvSlNUZXN0cy9tb2R1bGVzL2ltcG9ydC1tZXRhLXN5bnRheC5qcwpA
QCAtMTAsNyArMTAsNyBAQCBzaG91bGROb3RUaHJvdygoKSA9PiB7CiAKIHNob3VsZFRocm93KCgp
ID0+IHsKICAgICBjaGVja01vZHVsZVN5bnRheChgKGltcG9ydC5jb2NvYSlgKTsKLX0sIGBTeW50
YXhFcnJvcjogVW5leHBlY3RlZCBpZGVudGlmaWVyICdjb2NvYScuICJpbXBvcnQuIiBjYW4gb25s
eSBiZSBmb2xsb3dlZCB3aXRoIG1ldGEuOjFgKTsKK30sIGBTeW50YXhFcnJvcjogVW5leHBlY3Rl
ZCBpZGVudGlmaWVyICdjb2NvYScuICJpbXBvcnQuIiBjYW4gb25seSBmb2xsb3dlZCB3aXRoIG1l
dGEuOjFgKTsKIAogc2hvdWxkVGhyb3coKCkgPT4gewogICAgIGNoZWNrTW9kdWxlU3ludGF4KGAo
aW1wb3J0WyJDb2NvYSJdKWApOwpAQCAtMTgsNyArMTgsNyBAQCBzaG91bGRUaHJvdygoKSA9PiB7
CiAKIHNob3VsZFRocm93KCgpID0+IHsKICAgICBjaGVja01vZHVsZVN5bnRheChgaW1wb3J0LmNv
Y29hYCk7Ci19LCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAnY29jb2EnLiAi
aW1wb3J0LiIgY2FuIG9ubHkgYmUgZm9sbG93ZWQgd2l0aCBtZXRhLjoxYCk7Cit9LCBgU3ludGF4
RXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAnY29jb2EnLiAiaW1wb3J0LiIgY2FuIG9ubHkg
Zm9sbG93ZWQgd2l0aCBtZXRhLjoxYCk7CiAKIHNob3VsZFRocm93KCgpID0+IHsKICAgICBjaGVj
a01vZHVsZVN5bnRheChgaW1wb3J0WyJDb2NvYSJdYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9ldmFsLWluZGlyZWN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvZXZhbC1pbmRpcmVjdC5qcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjFiNTkxNDA1YWYxYzBjZWFlY2I2MGE4MzBm
MTBhMDJiNjFhMmQxZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9KU1Rlc3RzL3N0cmVzcy9ldmFsLWluZGlyZWN0LmpzCisrKyAvZGV2L251bGwKQEAgLTEs
MzQgKzAsMCBAQAotCi1mdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Ci0gICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0
ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxk
VGhyb3coZnVuYywgZXJyb3JUeXBlLCBhc3NlcnRpb25GbikgewotICAgIGxldCBlcnJvcjsKLSAg
ICB0cnkgewotICAgICAgICBmdW5jKCk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBlcnJv
ciA9IGU7Ci0gICAgfQotCi0gICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQot
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBlLm5hbWV9IGJ1dCBn
b3QgJHtlcnJvci5uYW1lfWApOwotCi0gICAgYXNzZXJ0aW9uRm4oZXJyb3IpOwotfQotCi1zaG91
bGRCZSgoMCwgZXZhbCkoIigpID0+IHsgcmV0dXJuIDE7IH0iKSgpLCAxKTsKLQotc2hvdWxkVGhy
b3coCi0gICgpID0+IHsgKDAsIGV2YWwpKCIuLiIpIH0sCi0gIFN5bnRheEVycm9yLAotICAoZXJy
KSA9PiB7Ci0gICAgICBzaG91bGRCZShTdHJpbmcoZXJyKSwgYFN5bnRheEVycm9yOiBVbmV4cGVj
dGVkIHRva2VuICcuJ2ApOwotICB9KTsKLQotLy8gTk9URTogbW9yZSBpdGVyYXRpb25zIChsaWtl
IDIwMDAwKSB3aWxsIHRyaWdnZXIgYSBHQy9PT00gaXNzdWUgb24gMzItYml0IGRldmljZXMuCi1m
b3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkgewotICAgIGxldCBmID0gKDAsIGV2YWwpKCIo
KSA9PiB7IHJldHVybiAxOyB9Iik7Ci0gICAgc2hvdWxkQmUoZigpLCAxKTsKLX0KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2ltcG9ydC1zeW50YXguanMgYi9KU1Rlc3RzL3N0cmVzcy9pbXBv
cnQtc3ludGF4LmpzCmluZGV4IDk0ZTA4NTBmN2IyODkyYTg2MWFkNWQwZjQ1MGZmNDRmOTE3MjRk
MjEuLjI1YTNmYmJmNjg2NjE1N2IxNzVkYThlZGFlNzhjMGU5ZTI4MTVjMjYgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvc3RyZXNzL2ltcG9ydC1zeW50YXguanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW1w
b3J0LXN5bnRheC5qcwpAQCAtMjksNyArMjksNyBAQCBhc3luYyBmdW5jdGlvbiB0ZXN0U3ludGF4
KHNjcmlwdCwgbWVzc2FnZSkgewogCiB0ZXN0U3ludGF4RXJyb3IoYGltcG9ydClgLCBgU3ludGF4
RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJyknLiBpbXBvcnQgY2FsbCBleHBlY3RzIGV4YWN0bHkg
b25lIGFyZ3VtZW50LmApOwogdGVzdFN5bnRheEVycm9yKGBuZXcgaW1wb3J0KGAsIGBTeW50YXhF
cnJvcjogQ2Fubm90IHVzZSBuZXcgd2l0aCBpbXBvcnQuYCk7Ci10ZXN0U3ludGF4RXJyb3IoYGlt
cG9ydC5oZWxsbygpYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGlkZW50aWZpZXIgJ2hlbGxv
Jy4gImltcG9ydC4iIGNhbiBvbmx5IGJlIGZvbGxvd2VkIHdpdGggbWV0YS5gKTsKK3Rlc3RTeW50
YXhFcnJvcihgaW1wb3J0LmhlbGxvKClgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRp
ZmllciAnaGVsbG8nLiAiaW1wb3J0LiIgY2FuIG9ubHkgZm9sbG93ZWQgd2l0aCBtZXRhLmApOwog
dGVzdFN5bnRheEVycm9yKGBpbXBvcnRbYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2Vu
ICdbJy4gaW1wb3J0IGNhbGwgZXhwZWN0cyBleGFjdGx5IG9uZSBhcmd1bWVudC5gKTsKIHRlc3RT
eW50YXhFcnJvcihgaW1wb3J0PGAsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPCcu
IGltcG9ydCBjYWxsIGV4cGVjdHMgZXhhY3RseSBvbmUgYXJndW1lbnQuYCk7CiAKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy9zaGFkb3ctcmVhbG0tZXhhbXBsZS1tb2R1bGUu
anMgYi9KU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMvc2hhZG93LXJlYWxtLWV4YW1wbGUtbW9kdWxl
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjRmNTc5YzJmOWE2ZGMyMzkwYmUy
ZmEwNTVjZTY4ZDY4MDMzMGYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0pTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy9zaGFkb3ctcmVhbG0tZXhhbXBsZS1t
b2R1bGUuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi12YXIgY2FsbENvdW50ID0g
MDsKLQotZnVuY3Rpb24gcHV0SW5HbG9iYWwoa2V5LCB2YWwpIHsKLSAgICBjYWxsQ291bnQrKzsK
LSAgICBnbG9iYWxUaGlzLmtleSA9IHZhbDsKLX0KLQotZnVuY3Rpb24gZ2V0RnJvbUdsb2JhbChr
ZXkpIHsKLSAgICBjYWxsQ291bnQrKzsKLSAgICByZXR1cm4gZ2xvYmFsVGhpcy5rZXk7Ci19Ci0K
LXZhciBhbk9iamVjdCA9IG5ldyBPYmplY3QoKTsKLQotZnVuY3Rpb24gZ2V0QW5PYmplY3QoKSB7
Ci0gICAgY2FsbENvdW50Kys7Ci0gICAgcmV0dXJuIGFuT2JqZWN0OwotfQotCi1mdW5jdGlvbiBn
ZXRDYWxsQ291bnQoKSB7Ci0gICAgcmV0dXJuIGNhbGxDb3VudDsKLX0KLQotdmFyIGFuc3dlciA9
IDY7Ci1leHBvcnQgeyBhbk9iamVjdCwgYW5zd2VyLCBnZXRDYWxsQ291bnQsIGdldEZyb21HbG9i
YWwsIGdldEFuT2JqZWN0LCBwdXRJbkdsb2JhbCB9OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3Mvc2hhZG93LXJlYWxtLWV2YWx1YXRlLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc2hhZG93LXJlYWxt
LWV2YWx1YXRlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzAzZjgzOGI4NmUy
OWIwZjk2ZDFiNDk1ZDE0MDVkZDViM2UyMmNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvc3RyZXNzL3NoYWRvdy1yZWFsbS1ldmFsdWF0ZS5q
cworKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi0vL0AgcmVxdWlyZU9wdGlvbnMoIi0t
dXNlU2hhZG93UmVhbG09MSIpCi0KLWZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQp
IHsKLSAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOwotfQotCi1mdW5jdGlv
biBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUsIGFzc2VydGlvbkZuKSB7Ci0gICAgbGV0IGVy
cm9yOwotICAgIHRyeSB7Ci0gICAgICAgIGZ1bmMoKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAg
ICAgIGVycm9yID0gZTsKLSAgICB9Ci0KLSAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9y
VHlwZSkpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFt
ZX0gYnV0IGdvdCAke2Vycm9yLm5hbWV9YCk7Ci0KLSAgICBhc3NlcnRpb25GbihlcnJvcik7Ci19
Ci0KLS8vIGJhc2ljIGV2YWx1YXRpb24gYW5kIHN0YXRlIHNldHRpbmcKLXsKLSAgICBsZXQgcmVh
bG0gPSBuZXcgU2hhZG93UmVhbG0oKTsKLSAgICBsZXQgb3RoZXJSZWFsbSA9IG5ldyBTaGFkb3dS
ZWFsbSgpOwotCi0gICAgc2hvdWxkQmUocmVhbG0uZXZhbHVhdGUoIjEiKSwgMSk7Ci0gICAgdmFy
IHggPSAyOwotICAgIHJlYWxtLmV2YWx1YXRlKCJ2YXIgeCA9IDEiKTsKLSAgICBzaG91bGRCZShy
ZWFsbS5ldmFsdWF0ZSgieCIpLCAxKTsKLSAgICBzaG91bGRCZSh4LCAyKTsKLQotICAgIC8vIHNj
b3BlIGlzbid0IHNoYXJlZCBhY3Jvc3MgcmVhbG1zCi0gICAgc2hvdWxkQmUob3RoZXJSZWFsbS5l
dmFsdWF0ZSgiZ2xvYmFsVGhpcy54IiksIHVuZGVmaW5lZCk7Ci19Ci0KLS8vIGFjY2Vzc2luZyBg
Z2xvYmFsVGhpc2Agd2l0aGluIGFuZCBvdXRzaWRlIG9mIGEgc2hhZG93IHJlYWxtCi17Ci0gICAg
bGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7Ci0gICAgZ2xvYmFsVGhpcy5oaSA9IDY7Ci0K
LSAgICBzaG91bGRCZShyZWFsbS5ldmFsdWF0ZSgiZ2xvYmFsVGhpcy5oaSIpLCB1bmRlZmluZWQp
OwotCi0gICAgcmVhbG0uZXZhbHVhdGUoImdsb2JhbFRoaXMuaGkgPSAnZmFsYSBhbWlnbyciKTsK
LQotICAgIHNob3VsZEJlKHJlYWxtLmV2YWx1YXRlKCJnbG9iYWxUaGlzLmhpIiksICJmYWxhIGFt
aWdvIik7Ci0gICAgc2hvdWxkQmUoZ2xvYmFsVGhpcy5oaSwgNik7Ci19Ci0KLS8vIGVuc3VyZSB0
aGF0IGVycm9ycyB0aHJvd24gaXNuJ3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBzaGFkb3cgcmVhbG0n
cyBnbG9iYWwgb2JqZWN0Ci17Ci0gICAgbGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7Ci0g
ICAgc2hvdWxkVGhyb3coCi0gICAgICAoKSA9PiB7IHJlYWxtLmV2YWx1YXRlKCIuLiIpOyB9LAot
ICAgICAgU3ludGF4RXJyb3IsCi0gICAgICAoZXJyKSA9PiB7Ci0gICAgICAgICAgc2hvdWxkQmUo
JC5nbG9iYWxPYmplY3RGb3IoZXJyKSwgZ2xvYmFsVGhpcyk7Ci0gICAgICAgICAgc2hvdWxkQmUo
U3RyaW5nKGVyciksIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnLidgKTsKLSAgICAg
IH0pOwotfQotCi0vLyBlbnN1cmUgdGhhdCBlcnJvcnMgdGhyb3duIGRvbid0IGNhcnJ5IGluZm9y
bWF0aW9uIGZyb20gdGhlIHNoYWRvdyByZWFsbQotewotICAgIGxldCByZWFsbSA9IG5ldyBTaGFk
b3dSZWFsbSgpOwotICAgIHNob3VsZFRocm93KAotICAgICAgKCkgPT4geyByZWFsbS5ldmFsdWF0
ZSgidGhyb3cgbmV3IEVycm9yKCdzZWNyZXQnKSIpOyB9LAotICAgICAgVHlwZUVycm9yLAotICAg
ICAgKGVycikgPT4gewotICAgICAgICAgIHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGVyciks
IGdsb2JhbFRoaXMpOwotICAgICAgICAgIHNob3VsZEJlKFN0cmluZyhlcnIpLCAiVHlwZUVycm9y
OiBFcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZXZhbHVhdGlvbiIpOwotICAgICAgfSk7Ci19Ci0K
LS8vIHdyYXBwZWQgZnVuY3Rpb25zIHByb3RlY3QgdGhlIHNoYWRvdyByZWFsbQotewotICAgIGxl
dCByZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOwotICAgIGxldCB3cmFwcGVkSW52b2tlQW5kQWRk
ID0gcmVhbG0uZXZhbHVhdGUoImZ1bmN0aW9uIGludm9rZUFuZEFkZCh4Rm4sIHlGbikgeyByZXR1
cm4geEZuKCkgKyB5Rm4oKTsgfTsgaW52b2tlQW5kQWRkIik7Ci0gICAgc2hvdWxkQmUod3JhcHBl
ZEludm9rZUFuZEFkZCgoKSA9PiB7IHJldHVybiAxIH0sICgpID0+IHsgcmV0dXJuIDIgfSksIDMp
OwotICAgIHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKHdyYXBwZWRJbnZva2VBbmRBZGQpLCBn
bG9iYWxUaGlzKTsKLQotICAgIC8vIG5hbWUgYW5kIGxlbmd0aCBwcm9wZXJ0aWVzIGZyb20gd3Jh
cHBlZCBmdW5jdGlvbiBhcmUgYWJzZW50Ci0gICAgc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcih3cmFwcGVkSW52b2tlQW5kQWRkLCAibGVuZ3RoIiksIHVuZGVmaW5lZCk7
Ci0gICAgc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3cmFwcGVkSW52
b2tlQW5kQWRkLCAibmFtZSIpLCB1bmRlZmluZWQpOwotCi0gICAgLy8gY2FuJ3QgcGFzcyBvYmpl
Y3RzIGludG8gYSBzaGFkb3cgcmVhbG0td3JhcHBlZCBmdW5jdGlvbgotICAgIGxldCBudW1iZXJP
YmogPSB7IHZhbHVlT2YoKSB7IHJldHVybiAtMSB9IH07Ci0gICAgc2hvdWxkVGhyb3coCi0gICAg
ICAoKSA9PiB7IHdyYXBwZWRJbnZva2VBbmRBZGQobnVtYmVyT2JqLCAxKTsgfSwKLSAgICAgIFR5
cGVFcnJvciwKLSAgICAgIChlcnIpID0+IHsKLSAgICAgICAgICBzaG91bGRCZSgkLmdsb2JhbE9i
amVjdEZvcihlcnIpLCBnbG9iYWxUaGlzKTsKLSAgICAgICAgICBzaG91bGRCZShTdHJpbmcoZXJy
KSwgIlR5cGVFcnJvcjogdmFsdWUgcGFzc2luZyBiZXR3ZWVuIHJlYWxtcyBtdXN0IGJlIGNhbGxh
YmxlIG9yIHByaW1pdGl2ZSIpOwotICAgICAgfSk7Ci19Ci0KLXsKLSAgICBsZXQgcmVhbG0gPSBu
ZXcgU2hhZG93UmVhbG0oKTsKLSAgICAvLyBjYW4ndCBjYWxsIGBldmFsdWF0ZWAgb24gYSBub24g
c2hhZG93IHJlYWxtCi0gICAgbGV0IG5vdFJlYWxtID0ge307Ci0gICAgc2hvdWxkVGhyb3coCi0g
ICAgICAoKSA9PiB7IHJlYWxtLmV2YWx1YXRlLmNhbGwobm90UmVhbG0sICcxJyk7IH0sCi0gICAg
ICBUeXBlRXJyb3IsCi0gICAgICAoZXJyKSA9PiB7IHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9y
KGVyciksIGdsb2JhbFRoaXMpOyB9Ci0gICAgKTsKLX0KLQotLy8gdHJpZ2dlciBKSVQKLXsKLSAg
ICBmdW5jdGlvbiBkb0V2YWwocmVhbG0sIHMpCi0gICAgewotICAgICAgICByZXR1cm4gcmVhbG0u
ZXZhbHVhdGUocyk7Ci0gICAgfQotCi0gICAgbm9JbmxpbmUoZG9FdmFsKTsKLQotICAgIGxldCBy
ZWFsbSA9IG5ldyBTaGFkb3dSZWFsbSgpOwotICAgIHJlYWxtLmV2YWx1YXRlKCJnbG9iYWxUaGlz
LnNlY3JldCA9IDE7Iik7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQotICAg
ICAgICBzaG91bGRCZShkb0V2YWwocmVhbG0sICc0MicpLCA0Mik7Ci0KLSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDA7ICsraSkgewotICAgICAgICBsZXQgZiA9IGRvRXZhbChyZWFsbSwgJyh4
KSA9PiB7IHJldHVybiB4KCkgKyBnbG9iYWxUaGlzLnNlY3JldDsgfScpOwotICAgICAgICBzaG91
bGRCZSgkLmdsb2JhbE9iamVjdEZvcihmKSwgZ2xvYmFsVGhpcyk7Ci0gICAgICAgIHNob3VsZEJl
KGYoKCkgPT4geyByZXR1cm4gNDE7IH0pLCA0Mik7Ci0gICAgfQotICAgIC8vIChwb3RlbnRpYWwp
IGlubGluaW5nIG9mIHdyYXBwZWQgZnVuY3Rpb24gdXNlcyBjb3JyZWN0IGdsb2JhbCBvYmplY3QK
LSAgICBsZXQgZiA9IGRvRXZhbChyZWFsbSwgJyh4KSA9PiB7IHJldHVybiB4KCkgKyBnbG9iYWxU
aGlzLnNlY3JldDsgfScpOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgewot
ICAgICAgICBzaG91bGRCZSgkLmdsb2JhbE9iamVjdEZvcihmKSwgZ2xvYmFsVGhpcyk7Ci0gICAg
ICAgIHNob3VsZEJlKGYoKCkgPT4geyByZXR1cm4gNDE7IH0pLCA0Mik7Ci0gICAgfQotICAgIC8v
IChwb3RlbnRpYWwpIGlubGluaW5nIGluc2lkZSBhIHJlYWxtIHVzZXMgY29ycmVjdCBnbG9iYWwg
b2JqZWN0Ci0gICAgbGV0IGxvb3BJbnNpZGUgPSBkb0V2YWwocmVhbG0sICcoeCkgPT4geyBsZXQg
YWNjID0gMDsgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7IGFjYyArPSB4KCk7IH07
IHJldHVybiBhY2M7IH0nKTsKLSAgICBnbG9iYWxUaGlzLnNlY3JldCA9IC0xOwotICAgIHNob3Vs
ZEJlKGxvb3BJbnNpZGUoKCkgPT4geyByZXR1cm4gZ2xvYmFsVGhpcy5zZWNyZXQ7IH0pLCAtMTAw
MDApOwotfQotCi0vLyBldmFsdWF0ZSBzcGVjcwotewotICAgIHNob3VsZEJlKHR5cGVvZiBTaGFk
b3dSZWFsbS5wcm90b3R5cGUuZXZhbHVhdGUsICJmdW5jdGlvbiIpOwotCi0gICAgbGV0IGV2YWx1
YXRlTmFtZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0ucHJv
dG90eXBlLmV2YWx1YXRlLCAibmFtZSIpOwotICAgIHNob3VsZEJlKGV2YWx1YXRlTmFtZS52YWx1
ZSwgImV2YWx1YXRlIik7Ci0gICAgc2hvdWxkQmUoZXZhbHVhdGVOYW1lLmVudW1lcmFibGUsIGZh
bHNlKTsKLSAgICBzaG91bGRCZShldmFsdWF0ZU5hbWUud3JpdGFibGUsIGZhbHNlKTsKLSAgICBz
aG91bGRCZShldmFsdWF0ZU5hbWUuY29uZmlndXJhYmxlLCB0cnVlKTsKLQotICAgIGxldCBldmFs
dWF0ZUxlbmd0aCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0u
cHJvdG90eXBlLmV2YWx1YXRlLCAibGVuZ3RoIik7Ci0gICAgc2hvdWxkQmUoZXZhbHVhdGVMZW5n
dGgudmFsdWUsIDEpOwotICAgIHNob3VsZEJlKGV2YWx1YXRlTGVuZ3RoLmVudW1lcmFibGUsIGZh
bHNlKTsKLSAgICBzaG91bGRCZShldmFsdWF0ZUxlbmd0aC53cml0YWJsZSwgZmFsc2UpOwotICAg
IHNob3VsZEJlKGV2YWx1YXRlTGVuZ3RoLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7Ci19CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0taW1wb3J0LXZhbHVlLmpzIGIvSlNUZXN0
cy9zdHJlc3Mvc2hhZG93LXJlYWxtLWltcG9ydC12YWx1ZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjQzY2Q4ZTYyM2YxZjZkMTM5MzFjN2I5ZGI4ZGRlMzA4NDYwOGE4NS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL3N0cmVz
cy9zaGFkb3ctcmVhbG0taW1wb3J0LXZhbHVlLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICsw
LDAgQEAKLS8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VTaGFkb3dSZWFsbT0xIikKLQotdmFyIGFi
b3J0ID0gJHZtLmFib3J0OwotCi1mdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihg
ZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKLX0KLQotZnVuY3Rpb24g
c2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlKSB7Ci0gICAgbGV0IGVycm9yOwotICAgIHRyeSB7
Ci0gICAgICAgIGZ1bmMoKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGVycm9yID0gZTsK
LSAgICB9Ci0KLSAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCi0gICAgICAg
IHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hIGdvdCAke2Vycm9y
Lm5hbWV9YCk7Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIHNob3VsZFRocm93QXN5bmMoZnVuYywgZXJy
b3JUeXBlKSB7Ci0gICAgbGV0IGVycm9yOwotICAgIHRyeSB7Ci0gICAgICAgIGF3YWl0IGZ1bmMo
KTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGVycm9yID0gZTsKLSAgICB9Ci0KLSAgICBp
ZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCi0gICAgICAgIHRocm93IG5ldyBFcnJv
cihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hIGdvdCAke2Vycm9yLm5hbWV9IHdpdGggbWVz
c2FnZSAke2Vycm9yLm1lc3NhZ2V9YCk7Ci19Ci0KLShhc3luYyBmdW5jdGlvbiAoKSB7Ci0gICAg
Y29uc3QgaW1wb3J0UGF0aCA9ICIuL3Jlc291cmNlcy9zaGFkb3ctcmVhbG0tZXhhbXBsZS1tb2R1
bGUuanMiOwotICAgIGNvbnN0IHsgYW5zd2VyLCBnZXRDYWxsQ291bnQsIHB1dEluR2xvYmFsLCBn
ZXRGcm9tR2xvYmFsLCBnZXRBbk9iamVjdCB9ID0gYXdhaXQgaW1wb3J0KGltcG9ydFBhdGgpOwot
ICAgIGNvbnN0IG91dGVyQW5zd2VyID0gYW5zd2VyOwotICAgIGNvbnN0IG91dGVyR2V0Q2FsbENv
dW50ID0gZ2V0Q2FsbENvdW50OwotICAgIGNvbnN0IG91dGVyUHV0SW5HbG9iYWwgPSBwdXRJbkds
b2JhbDsKLSAgICBjb25zdCBvdXRlckdldEZyb21HbG9iYWwgPSBnZXRGcm9tR2xvYmFsOwotICAg
IGNvbnN0IG91dGVyR2V0QW5PYmplY3QgPSBnZXRBbk9iamVjdDsKLQotICAgIHsKLSAgICAgICAg
bGV0IHJlYWxtID0gbmV3IFNoYWRvd1JlYWxtKCk7Ci0KLSAgICAgICAgLy8gdXBkYXRlIGxvY2Fs
IG1vZHVsZSBzdGF0ZSArIGNoZWNrIGl0Ci0gICAgICAgIHNob3VsZEJlKG91dGVyR2V0Q2FsbENv
dW50KCksIDApOwotICAgICAgICBvdXRlckdldEFuT2JqZWN0KCk7Ci0gICAgICAgIHNob3VsZEJl
KG91dGVyR2V0Q2FsbENvdW50KCksIDEpOwotICAgICAgICAvLyB1cGRhdGUgcmVhbG0gbW9kdWxl
IHN0YXRlICsgY2hlY2sgaXQKLSAgICAgICAgbGV0IGlubmVyR2V0Q2FsbENvdW50ID0gYXdhaXQg
cmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgImdldENhbGxDb3VudCIpOwotICAgICAgICBs
ZXQgaW5uZXJQdXRJbkdsb2JhbCA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgs
ICJwdXRJbkdsb2JhbCIpOwotICAgICAgICBzaG91bGRCZShpbm5lckdldENhbGxDb3VudCgpLCAw
KTsKLSAgICAgICAgaW5uZXJQdXRJbkdsb2JhbCgic29tZXRoaW5nIiwgInJhbmRvbSIpOwotICAg
ICAgICBzaG91bGRCZShpbm5lckdldENhbGxDb3VudCgpLCAxKTsKLSAgICAgICAgLy8gcmUtaW1w
b3J0aW5nIHRoZSBtb2R1bGUgaW50byB0aGUgcmVhbG0gZG9lc24ndCByZWxvYWQgdGhlIG1vZHVs
ZQotICAgICAgICBpbm5lckdldENhbGxDb3VudCA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKGlt
cG9ydFBhdGgsICJnZXRDYWxsQ291bnQiKTsKLSAgICAgICAgc2hvdWxkQmUoaW5uZXJHZXRDYWxs
Q291bnQoKSwgMSk7Ci0gICAgICAgIC8vIHRoZSAob3V0ZXIpIGxvY2FsIG1vZHVsZSBzdGF0ZSBz
dGF5cyBpbnRhY3QKLSAgICAgICAgc2hvdWxkQmUob3V0ZXJHZXRDYWxsQ291bnQoKSwgMSk7Ci0K
LSAgICAgICAgLy8gb25lIGNhbiBpbXBvcnRlZCBwcmltaXRpdmUvY2FsbGFibGUgdmFyaWFibGVz
IGp1c3QgZmluZQotICAgICAgICAvLyBzaG91bGRCZShpbm5lckFuc3dlciwgb3V0ZXJBbnN3ZXIp
OwotICAgICAgICBsZXQgaW5uZXJBbnN3ZXIgPSBhd2FpdCByZWFsbS5pbXBvcnRWYWx1ZShpbXBv
cnRQYXRoLCAiYW5zd2VyIik7Ci0gICAgICAgIHNob3VsZEJlKGlubmVyQW5zd2VyLCBvdXRlckFu
c3dlcik7Ci0KLSAgICAgICAgLy8gaW1wb3J0ZWQgdmFyaWFibGVzIGFyZSBjaGVja2VkIGZvciBw
cmltdGl2ZS9jYWxsYWJsZS1uZXNzCi0gICAgICAgIGF3YWl0IHNob3VsZFRocm93QXN5bmMoYXN5
bmMgKCkgPT4geyBsZXQgeCA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJh
bk9iamVjdCIpOyB9LCBUeXBlRXJyb3IpOwotCi0gICAgICAgIC8vIGltcG9ydGluZyBub24tZXhp
c3RlbnQgcmVmIGZhaWxzCi0gICAgICAgIGF3YWl0IHNob3VsZFRocm93QXN5bmMoYXN5bmMgKCkg
PT4geyBsZXQgeCA9IGF3YWl0IHJlYWxtLmltcG9ydFZhbHVlKGltcG9ydFBhdGgsICJub3RoaW5n
Iik7IH0sIFR5cGVFcnJvcik7Ci0KLSAgICAgICAgLy8gaW1wb3J0aW5nIGZyb20gbm9uLWV4aXN0
ZW50IGZpbGUgZmFpbHMKLSAgICAgICAgYXdhaXQgc2hvdWxkVGhyb3dBc3luYyhhc3luYyAoKSA9
PiB7IGxldCB4ID0gYXdhaXQgcmVhbG0uaW1wb3J0VmFsdWUoInJhbmRvbSIsICJub3RoaW5nIik7
IH0sIFR5cGVFcnJvcik7Ci0KLSAgICAgICAgLy8gd2UgY2FuIGltcG9ydCBmdW5jdGlvbnMgdGhy
b3VnaCBhbiBpbm5lciByZWFsbSBmb3IgdXNlIGluIHRoZSBvdXRlcgotICAgICAgICBsZXQgaW5u
ZXJHZXRGcm9tR2xvYmFsID0gYXdhaXQgcmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgImdl
dEZyb21HbG9iYWwiKTsKLSAgICAgICAgaW5uZXJQdXRJbkdsb2JhbCgic2FsdXRhdGlvbiIsICJz
YXJhdmEiKTsKLSAgICAgICAgc2hvdWxkQmUoaW5uZXJHZXRGcm9tR2xvYmFsKCJzYWx1dGF0aW9u
IiksICJzYXJhdmEiKTsKLQotICAgICAgICAvLyBpbm5lciBnbG9iYWwgc3RhdGUgaXMgdW5jaGFu
Z2VkIGJ5IG91dGVyIGdsb2JhbCBzdGF0ZSBjaGFuZ2UKLSAgICAgICAgb3V0ZXJQdXRJbkdsb2Jh
bCgic2FsdXRhdGlvbiIsICJoZWxsbyB3b3JsZCEiKTsKLSAgICAgICAgc2hvdWxkQmUob3V0ZXJH
ZXRGcm9tR2xvYmFsKCJzYWx1dGF0aW9uIiksICJoZWxsbyB3b3JsZCEiKTsKLSAgICAgICAgc2hv
dWxkQmUoaW5uZXJHZXRGcm9tR2xvYmFsKCJzYWx1dGF0aW9uIiksICJzYXJhdmEiKTsKLQotICAg
ICAgICAvLyB3cmFwcGVkIGZ1bmN0aW9ucyBjaGVjayBhcmd1bWVudHMgZm9yIHByaW1pdGl2ZS9j
YWxsYWJsZS1uZXNzCi0gICAgICAgIHNob3VsZFRocm93KCgpID0+IHsgaW5uZXJQdXRJbkdsb2Jh
bCgidHJlYXN1cmUiLCBuZXcgT2JqZWN0KCkpOyB9LCBUeXBlRXJyb3IpOwotCi0gICAgICAgIC8v
IGltcG9ydGVkIGZ1bmN0aW9ucyBhcmUgd3JhcHBlZCB3aXRoIGNvcnJlY3QgcmV0dXJuIHZhbHVl
IGNoZWNrcwotICAgICAgICBsZXQgZ2V0QW5PYmplY3RGbiA9IGF3YWl0IHJlYWxtLmltcG9ydFZh
bHVlKGltcG9ydFBhdGgsICJnZXRBbk9iamVjdCIpOwotICAgICAgICBzaG91bGRUaHJvdygoKSA9
PiB7IGdldEFuT2JqZWN0Rm4oKTsgfSwgVHlwZUVycm9yKTsKLQotICAgICAgICAvLyB0aHJlYWQg
YSBmdW5jdGlvbiBpbiBhbmQgb3V0IG9mIGEgcmVhbG0gdG8gd3JhcCBpdCB1cAotICAgICAgICBp
bm5lclB1dEluR2xvYmFsKCJvdXRlci1yZWFsbS1wdXQiLCBvdXRlclB1dEluR2xvYmFsKTsKLSAg
ICAgICAgd3JhcHBlZE91dGVyUHV0SW5HbG9iYWwgPSBpbm5lckdldEZyb21HbG9iYWwoIm91dGVy
LXJlYWxtLXB1dCIpOwotCi0gICAgICAgIC8vIGl0IHN0aWxsIG1hbmlwdWF0ZXMgdGhlIGNvcnJl
Y3QgZ2xvYmFsIG9iamVjdCBzdGF0ZQotICAgICAgICB3cmFwcGVkT3V0ZXJQdXRJbkdsb2JhbCgi
dHJlYXN1cmUiLCAic2hpbnkgdGluIHNjcmFwIik7Ci0gICAgICAgIHNob3VsZEJlKG91dGVyR2V0
RnJvbUdsb2JhbCgidHJlYXN1cmUiKSwgInNoaW55IHRpbiBzY3JhcCIpOwotCi0gICAgICAgIC8v
IHdyYXBwZWQgZnVuY3Rpb25zIGNoZWNrIGFyZ3VtZW50cyBmb3IgcHJpbWl0aXZlL2NhbGxhYmxl
LW5lc3MKLSAgICAgICAgc2hvdWxkVGhyb3coKCkgPT4geyB3cmFwcGVkT3V0ZXJQdXRJbkdsb2Jh
bCgidHJlYXN1cmUiLCBuZXcgT2JqZWN0KCkpOyB9LCBUeXBlRXJyb3IpOwotICAgICAgICBzaG91
bGRUaHJvdygoKSA9PiB7IHdyYXBwZWRPdXRlclB1dEluR2xvYmFsKG5ldyBPYmplY3QoKSwgInNo
aW55IHRpbiBzY3JhcCIpOyB9LCBUeXBlRXJyb3IpOwotCi0gICAgICAgIC8vIG11c3QgYmUgY2Fs
bGVkIG9uIGEgU2hhZG93UmVhbG0KLSAgICAgICAgbGV0IG5vdFJlYWxtID0ge307Ci0gICAgICAg
IHNob3VsZFRocm93KAotICAgICAgICAgICgpID0+IHsgcmVhbG0uaW1wb3J0VmFsdWUuY2FsbChu
b3RSZWFsbSwgaW1wb3J0UGF0aCwgImFuc3dlciIpOyB9LAotICAgICAgICAgIFR5cGVFcnJvciwK
LSAgICAgICAgICAoZXJyKSA9PiB7IHNob3VsZEJlKCQuZ2xvYmFsT2JqZWN0Rm9yKGVyciksIGds
b2JhbFRoaXMpOyB9Ci0gICAgICAgICk7Ci0gICAgfQotCi0gICAgLy8gdHJpZ2dlciBKSVQKLSAg
ICB7Ci0gICAgICAgIGZ1bmN0aW9uIGRvSW1wb3J0KHJlYWxtLCBzKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gcmVhbG0uaW1wb3J0VmFsdWUoaW1wb3J0UGF0aCwgcyk7Ci0gICAgICAg
IH0KLQotICAgICAgICBub0lubGluZShkb0ltcG9ydCk7Ci0KLSAgICAgICAgbGV0IHJlYWxtID0g
bmV3IFNoYWRvd1JlYWxtKCk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsr
aSkgewotICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGRvSW1wb3J0KHJlYWxtLCAiZ2V0
Q2FsbENvdW50Iik7Ci0gICAgICAgICAgICBzaG91bGRCZShyZXN1bHQoKSwgMCk7Ci0gICAgICAg
IH0KLSAgICB9Ci19KCkpLmNhdGNoKChlcnJvcikgPT4gewotICAgIHByaW50KFN0cmluZyhlcnJv
cikpOwotICAgIGFib3J0KCk7Ci19KTsKLQotewotICAgIHNob3VsZEJlKHR5cGVvZiBTaGFkb3dS
ZWFsbS5wcm90b3R5cGUuaW1wb3J0VmFsdWUsICJmdW5jdGlvbiIpOwotCi0gICAgbGV0IGltcG9y
dFZhbHVlTmFtZSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0u
cHJvdG90eXBlLmltcG9ydFZhbHVlLCAibmFtZSIpOwotICAgIHNob3VsZEJlKGltcG9ydFZhbHVl
TmFtZS52YWx1ZSwgImltcG9ydFZhbHVlIik7Ci0gICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVOYW1l
LmVudW1lcmFibGUsIGZhbHNlKTsKLSAgICBzaG91bGRCZShpbXBvcnRWYWx1ZU5hbWUud3JpdGFi
bGUsIGZhbHNlKTsKLSAgICBzaG91bGRCZShpbXBvcnRWYWx1ZU5hbWUuY29uZmlndXJhYmxlLCB0
cnVlKTsKLQotICAgIGxldCBpbXBvcnRWYWx1ZUxlbmd0aCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoU2hhZG93UmVhbG0ucHJvdG90eXBlLmltcG9ydFZhbHVlLCAibGVuZ3RoIik7
Ci0gICAgc2hvdWxkQmUoaW1wb3J0VmFsdWVMZW5ndGgudmFsdWUsIDIpOwotICAgIHNob3VsZEJl
KGltcG9ydFZhbHVlTGVuZ3RoLmVudW1lcmFibGUsIGZhbHNlKTsKLSAgICBzaG91bGRCZShpbXBv
cnRWYWx1ZUxlbmd0aC53cml0YWJsZSwgZmFsc2UpOwotICAgIHNob3VsZEJlKGltcG9ydFZhbHVl
TGVuZ3RoLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7Ci19CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9zaGFkb3ctcmVhbG0uanMgYi9KU1Rlc3RzL3N0cmVzcy9zaGFkb3ctcmVhbG0uanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2MmI4OGM2ZTM5NTk5NTYzNGQ3ZWQ4ZWY5ZTk5ZjJj
M2ZkODg2YTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
SlNUZXN0cy9zdHJlc3Mvc2hhZG93LXJlYWxtLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAs
MCBAQAotLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVNoYWRvd1JlYWxtPTEiKQotCi1mdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdv
dCAke2FjdHVhbH1gKTsKLX0KLQotLy8gc2hhZG93IHJlYWxtIHNwZWNzCi17Ci0gICAgbGV0IHNo
YWRvd1JlYWxtUHJvcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywgIlNo
YWRvd1JlYWxtIik7Ci0gICAgc2hvdWxkQmUoc2hhZG93UmVhbG1Qcm9wLmVudW1lcmFibGUsIGZh
bHNlKTsKLSAgICBzaG91bGRCZShzaGFkb3dSZWFsbVByb3Aud3JpdGFibGUsIHRydWUpOwotICAg
IHNob3VsZEJlKHNoYWRvd1JlYWxtUHJvcC5jb25maWd1cmFibGUsIHRydWUpOwotCi0gICAgbGV0
IHNoYWRvd1JlYWxtRXZhbHVhdGUgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNo
YWRvd1JlYWxtLnByb3RvdHlwZSwgImV2YWx1YXRlIik7Ci0gICAgc2hvdWxkQmUoc2hhZG93UmVh
bG1FdmFsdWF0ZS5lbnVtZXJhYmxlLCBmYWxzZSk7Ci0gICAgc2hvdWxkQmUoc2hhZG93UmVhbG1F
dmFsdWF0ZS53cml0YWJsZSwgdHJ1ZSk7Ci0gICAgc2hvdWxkQmUoc2hhZG93UmVhbG1FdmFsdWF0
ZS5jb25maWd1cmFibGUsIHRydWUpOwotCi0gICAgbGV0IHNoYWRvd1JlYWxtSW1wb3J0VmFsdWUg
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFNoYWRvd1JlYWxtLnByb3RvdHlwZSwg
ImltcG9ydFZhbHVlIik7Ci0gICAgc2hvdWxkQmUoc2hhZG93UmVhbG1JbXBvcnRWYWx1ZS5lbnVt
ZXJhYmxlLCBmYWxzZSk7Ci0gICAgc2hvdWxkQmUoc2hhZG93UmVhbG1JbXBvcnRWYWx1ZS53cml0
YWJsZSwgdHJ1ZSk7Ci0gICAgc2hvdWxkQmUoc2hhZG93UmVhbG1JbXBvcnRWYWx1ZS5jb25maWd1
cmFibGUsIHRydWUpOwotCi0gICAgbGV0IHNoYWRvd1JlYWxtTmFtZSA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoU2hhZG93UmVhbG0sICJuYW1lIik7Ci0gICAgc2hvdWxkQmUoc2hh
ZG93UmVhbG1OYW1lLnZhbHVlLCAiU2hhZG93UmVhbG0iKTsKLSAgICBzaG91bGRCZShzaGFkb3dS
ZWFsbU5hbWUuZW51bWVyYWJsZSwgZmFsc2UpOwotICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtTmFt
ZS53cml0YWJsZSwgZmFsc2UpOwotICAgIHNob3VsZEJlKHNoYWRvd1JlYWxtTmFtZS5jb25maWd1
cmFibGUsIHRydWUpOwotCi0gICAgbGV0IHNoYWRvd1JlYWxtTGVuZ3RoID0gT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihTaGFkb3dSZWFsbSwgImxlbmd0aCIpOwotICAgIHNob3VsZEJl
KHNoYWRvd1JlYWxtTGVuZ3RoLnZhbHVlLCAwKTsKLSAgICBzaG91bGRCZShzaGFkb3dSZWFsbUxl
bmd0aC5lbnVtZXJhYmxlLCBmYWxzZSk7Ci0gICAgc2hvdWxkQmUoc2hhZG93UmVhbG1MZW5ndGgu
d3JpdGFibGUsIGZhbHNlKTsKLSAgICBzaG91bGRCZShzaGFkb3dSZWFsbUxlbmd0aC5jb25maWd1
cmFibGUsIHRydWUpOwotfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1s
IGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDk2MmQ1MjQ2MjUyNWFmYmIyOTZk
OWFjZmQ2ZDhhMGExNDRmMjBiMzQuLjg5MDhkY2VkYmIzOTQ5N2RjMDE3ZGRkZWE2ZDMzODliMjhk
NGZkZmQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rl
c3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTksNyArOSw2IEBAIGZsYWdzOgogICBUZW1wb3Jh
bDogdXNlVGVtcG9yYWwKICAgYXJyYXktZmluZC1mcm9tLWxhc3Q6IHVzZUFycmF5RmluZExhc3RN
ZXRob2QKICAgT2JqZWN0Lmhhc093bjogdXNlSGFzT3duCi0gIFNoYWRvd1JlYWxtOiB1c2VTaGFk
b3dSZWFsbQogc2tpcDoKICAgZmVhdHVyZXM6CiAgICAgLSBBdG9taWNzLndhaXRBc3luYwpAQCAt
MjEsNiArMjAsNyBAQCBza2lwOgogICAgIC0ganNvbi1tb2R1bGVzCiAgICAgLSBjbGFzcy1zdGF0
aWMtYmxvY2sKICAgICAtIGNhbGxhYmxlLWJvdW5kYXJ5LXJlYWxtcworICAgIC0gU2hhZG93UmVh
bG0KICAgcGF0aHM6CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9DYWxlbmRhcgogICAg
IC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvSW5zdGFudAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>