<?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>148058</bug_id>
          
          <creation_ts>2015-08-15 11:05:07 -0700</creation_ts>
          <short_desc>REGRESSION(r188508): Caused 10 tests to crash (Requested by smfr on #webkit).</short_desc>
          <delta_ts>2015-08-15 11:09:32 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>147979</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>cdumez</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1117955</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-15 11:05:07 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/188508 broke the build:
Caused 10 tests to crash (Requested by smfr on #webkit).

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>1117957</commentid>
    <comment_count>1</comment_count>
      <attachid>259097</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-15 11:05:37 -0700</bug_when>
    <thetext>Created attachment 259097
ROLLOUT of r188508

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 rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout 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>1117959</commentid>
    <comment_count>2</comment_count>
      <attachid>259097</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-15 11:09:27 -0700</bug_when>
    <thetext>Comment on attachment 259097
ROLLOUT of r188508

Clearing flags on attachment: 259097

Committed r188513: &lt;http://trac.webkit.org/changeset/188513&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117960</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-15 11:09:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259097</attachid>
            <date>2015-08-15 11:05:37 -0700</date>
            <delta_ts>2015-08-15 11:09:27 -0700</delta_ts>
            <desc>ROLLOUT of r188508</desc>
            <filename>bug-148058-20150815110516.patch</filename>
            <type>text/plain</type>
            <size>100826</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM5OGNhMzhmZTY0OTk5
NmViYjk3NTk1YjY0MTc3ODJiMDM0NzMxOS4uZjcwNGJjOWQ4ZGI3MmFmZjg2NTE2NzQxMjMwMmFl
YzIwZjFjMDljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE1LTA4LTE1ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTg4NTA4LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ4MDU4CisKKyAgICAgICAgQ2F1c2VkIDEwIHRlc3RzIHRvIGNyYXNo
IChSZXF1ZXN0ZWQgYnkgc21mciBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFu
Z2VzZXQ6CisKKyAgICAgICAgIlJlZmFjdG9yIEhUTUxDb2xsZWN0aW9uIHRvIGJlIGFzIGZhc3Qg
YXMgQ2FjaGVkTGl2ZU5vZGVMaXN0IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ3OTc5CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzE4ODUwOAorCiAyMDE1LTA4LTE0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBwYXJzaW5nIGZvciBDU1Mgd2lsbC1jaGFu
Z2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDkxNmMzZDQ4YmRmNDZlYmNlYjBjOTlmOGE2ZDUz
NGM1ODlmMzE4YS4uYzNmYTgyYWMwZDQ2ZWRhMDYzM2Y2YTlhNTRjOWY4N2I0OTA2NTMyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTE2MDgsNyArMTYwOCw2IEBAIHNldChXZWJDb3JlX1NPVVJD
RVMKICAgICBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKICAgICBodG1sL0Zvcm1Db250
cm9sbGVyLmNwcAogICAgIGh0bWwvRm9ybURhdGFMaXN0LmNwcAotICAgIGh0bWwvR2VuZXJpY0Nh
Y2hlZEhUTUxDb2xsZWN0aW9uLmNwcAogICAgIGh0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCiAg
ICAgaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxBcHBsZXRFbGVtZW50
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oK
aW5kZXggZGExMjA3MzdhN2JkM2Q0YzQ2Y2VlZGU5YTk3OTE0NmQ5MjBkNjQ0Ny4uYzRlNjUyNWE0
ODE0OTc1ZjhjYzM5OWY5NzQyYWY5YjJkYTZiODkzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0xNjEyMSw3ICsxNjEyMSw2IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXEZvcm1Db250cm9sbGVyLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxcRm9ybURhdGFMaXN0LmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxcRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIiAvPgot
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rp
b24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxIaWRkZW5JbnB1dFR5
cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxIVE1MQWxsQ29sbGVj
dGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXEhUTUxBbmNob3JF
bGVtZW50LmNwcCI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZTcxODhmODE3NTBmZDJjZTk1MTE3ODUyNmJlYTU1MmEwNWY5ZDA1
Mi4uMjk1MWE4ZWZkZTdhOGQ3ZjA0NjMxNzM3YmUwNzY5ZGI5YzM5ZmZhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY4OSw3
ICsxNjg5LDYgQEAKIAkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFB
OUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkRCN0Q1NzFCMjBGRTQ2MDA1NjUxQjIgLyogVk5v
ZGVUcmFja2VyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZEQjdENTYxQjIwRkUzQzAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlckNvY29hLmNw
cCAqLzsgfTsKIAkJNDZEQkI2NTAxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REJCNjRF
MUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVyTWFjLmggKi87IH07Ci0JCTQ2RUJFQTAy
MUI3RDRENjUwMEJFNDk0MSAvKiBDb2xsZWN0aW9uVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkVCRUEwMTFCN0Q0RDVEMDBCRTQ5NDEg
LyogQ29sbGVjdGlvblRyYXZlcnNhbC5oICovOyB9OwogCQk0NkYzRTNGOTFCMjEwOTAwMDA4N0VE
MTMgLyogVk5vZGVUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2REI3RDU4MUIyMEZFNTgwMDU2NTFCMiAvKiBWTm9kZVRyYWNrZXIuY3Bw
ICovOyB9OwogCQk0NkYzRTNGQTFCMjEwOTEwMDA4N0VEMTMgLyogVk5vZGVUcmFja2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRCN0Q1OTFCMjBG
RTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZGQ0I2MTgxQTcwODIwRTAwQzVBMjFFIC8qIERpYWdu
b3N0aWNMb2dnaW5nS2V5cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0QzN0IzNzUxNUMxQTdFMTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0y
Njc0LDExICsyNjczLDYgQEAKIAkJODJBQjE3NzYxMjVDODI2NzAwQzUwNjlEIC8qIEluc3BlY3Rv
clJlc291cmNlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgyQUIxNzcyMTI1QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmggKi87IH07CiAJCTgyRTNEOERFMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJj
ZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODJFM0Q4REMxMjJFQTBEMTAwM0FFNUJDIC8qIENTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAgKi87
IH07CiAJCTgyRTNEOERGMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyRTNEOERE
MTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk4MzAwMzBGNTFCN0QzM0I1MDBF
RDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDAzMEYzMUI3RDMzQTYwMEVEM0FBQyAv
KiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwICovOyB9OwotCQk4MzAwMzBGNjFCN0Qz
M0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzAwMzBGNDFCN0QzM0E2MDBFRDNB
QUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi87IH07Ci0JCTgzMDAzMEY4MUI3
RDNCNzgwMEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwMDMwRjcxQjdEMzk4ODAwRUQzQUFDIC8q
IENhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi87IH07Ci0JCTgzMUQ0OEMwMUI3RDlBNTIwMDZERTM5
QSAvKiBDbGFzc05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzMUQ0OEJFMUI3RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNw
cCAqLzsgfTsKLQkJODMxRDQ4QzExQjdEOUE1MjAwNkRFMzlBIC8qIENsYXNzTm9kZUxpc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMUQ0OEJGMUI3
RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmggKi87IH07CiAJCTgzMkI4NDM0MTlEOEU1
NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBT
VkdBbmltYXRlRWxlbWVudEJhc2UuaCAqLzsgfTsKIAkJODMyQjg0MzYxOUQ4RTU3NDAwQjI2MDU1
IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJCODQzNTE5RDhFNTc0MDBCMjYwNTUgLyogU1ZHQW5pbWF0
ZUVsZW1lbnRCYXNlLmNwcCAqLzsgfTsKIAkJODM1MjBDN0UxQTcxQkZDQzAwNkJEMkFBIC8qIENT
U0ZvbnRGYW1pbHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzNTIwQzdEMUE3MUJGQ0MwMDZCRDJBQSAvKiBDU1NGb250RmFtaWx5LmggKi87IH07CkBA
IC01NDIwLDYgKzU0MTQsOCBAQAogCQlCQzhCRjE1QTEwNTgxNDE4MDBBNDBBMDcgLyogVXNlclN0
eWxlU2hlZXRUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM4QkYxNTkxMDU4MTQxODAwQTQwQTA3IC8qIFVzZXJTdHlsZVNoZWV0VHlwZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzhDOEZB
RDBERENEMzFCMDBCNTkyRjQgLyogUmVuZGVyU3R5bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4QzhGQUIwRERDRDMxQjAwQjU5MkY0IC8qIFJl
bmRlclN0eWxlLmNwcCAqLzsgfTsKIAkJQkM4QzhGQUUwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRl
clN0eWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzhDOEZBQzBERENEMzFCMDBCNTkyRjQgLyogUmVuZGVyU3R5bGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzkwNEI3NjBEMTA5OThGMDA2ODBE
MzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzkwNEI3MjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5j
cHAgKi87IH07CisJCUJDOTA0Qjc3MEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzkwNEI3MzBE
MTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5oICovOyB9OwogCQlCQzkyNkY4MDBDMDU1
MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTI2RjdFMEMwNTUyNDcwMDgyNzc2QiAv
KiBKU0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwICovOyB9OwogCQlCQzkyNkY4MTBDMDU1MjQ3MDA4
Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzkyNkY3RjBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1M
RnJhbWVTZXRFbGVtZW50LmggKi87IH07CiAJCUJDOTQzOUMzMTE2Q0Y0OTQwMDQ4Qzc1MCAvKiBK
U05vZGVDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDOTQzOUMyMTE2Q0Y0OTQwMDQ4Qzc1MCAvKiBKU05vZGVDdXN0b20uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODkzNiw3ICs4OTMyLDYg
QEAKIAkJNDZEQjdENTgxQjIwRkU1ODAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWTm9kZVRyYWNrZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRCN0Q1OTFCMjBGRTU4MDA1NjUxQjIgLyogVk5vZGVU
cmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZOb2RlVHJhY2tlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRCQjY0RTFBQjhDOTZGMDBEOUE4MTMg
LyogUG93ZXJPYnNlcnZlck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
b3dlck9ic2VydmVyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ2RUJFQTAx
MUI3RDRENUQwMEJFNDk0MSAvKiBDb2xsZWN0aW9uVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbGxlY3Rpb25UcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDkwNzA3RTQxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJp
ZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFOR0xFV2ViS2l0
QnJpZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkwNzA3RTUxMjE5QzA0
MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFOR0xFV2ViS2l0QnJpZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ5MjkxRTRBMTM0MTcyQzgwMEU3NTNERSAvKiBJbWFnZVJlbmRlcmluZ01vZGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VSZW5kZXJpbmdNb2RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDAzNywxMSArMTAwMzIsNiBAQAogCQk4MkFCMTc3
MjEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgyRTNEOERDMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9w
ZXJ0eVNvdXJjZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODJFM0Q4REQxMjJFQTBEMTAwM0FFNUJDIC8qIENTU1Byb3BlcnR5U291cmNlRGF0YS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODMwMDMwRjMxQjdEMzNBNjAwRUQzQUFDIC8qIEdl
bmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk4MzAwMzBGNDFCN0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hl
ZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVy
aWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4
MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODMxRDQ4QkUxQjdEOUE0NjAwNkRFMzlBIC8qIENsYXNz
Tm9kZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xhc3NO
b2RlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzMUQ0OEJGMUI3RDlB
NDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENsYXNzTm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMy
Qjg0MzMxOUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlRWxlbWVudEJhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMyQjg0MzUxOUQ4RTU3NDAwQjI2MDU1IC8qIFNWR0Fu
aW1hdGVFbGVtZW50QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzUyMEM3RDFBNzFCRkNDMDA2QkQyQUEgLyogQ1NTRm9udEZhbWlseS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NGb250RmFtaWx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMzAxMCw2ICsxMzAwMCw4IEBACiAJCUJDOEJGMTU5MTA1ODE0MTgwMEE0
MEEwNyAvKiBVc2VyU3R5bGVTaGVldFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFVzZXJTdHlsZVNoZWV0VHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkM4QzhGQUIwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclN0eWxlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkM4QzhGQUMwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclN0eWxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDOTA0QjcyMEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFz
c05vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNz
Tm9kZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzkwNEI3MzBEMTA5
OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDbGFzc05vZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
OTI2RjdFMEMwNTUyNDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTEZyYW1lU2V0RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOTI2RjdGMEMwNTUyNDcwMDgyNzc2
QiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTSFRNTEZyYW1lU2V0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzk0MzlDMjExNkNGNDk0MDA0OEM3NTAgLyogSlNOb2RlQ3VzdG9tLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTm9kZUN1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTgxODAsMTIgKzE4MTcyLDEwIEBACiAJCQkJRjU1QjNEN0ExMjUxRjEy
RDAwM0VGMjY5IC8qIEJhc2VUZXh0SW5wdXRUeXBlLmggKi8sCiAJCQkJRjU1QjNEN0IxMjUxRjEy
RDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlwZS5jcHAgKi8sCiAJCQkJRjU1QjNEN0MxMjUxRjEy
RDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlwZS5oICovLAotCQkJCTgzMDAzMEY3MUI3RDM5ODgw
MEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICovLAogCQkJCUY1NUIzRDdEMTI1MUYx
MkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5jcHAgKi8sCiAJCQkJRjU1QjNEN0UxMjUx
RjEyRDAwM0VGMjY5IC8qIENoZWNrYm94SW5wdXRUeXBlLmggKi8sCiAJCQkJNEFDQkMwQkMxMjcx
M0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5jcHAgKi8sCiAJCQkJNEFDQkMwQkQxMjcxM0NCRDAw
OTRGOUIyIC8qIENsYXNzTGlzdC5oICovLAotCQkJCTQ2RUJFQTAxMUI3RDRENUQwMEJFNDk0MSAv
KiBDb2xsZWN0aW9uVHJhdmVyc2FsLmggKi8sCiAJCQkJOTNDNDQxRkYwRjgxM0FFMTAwQzFBNjM0
IC8qIENvbGxlY3Rpb25UeXBlLmggKi8sCiAJCQkJQkMyOTkzNUMxN0ExREQ1ODAwQkNFODgwIC8q
IENvbG9ySW5wdXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0Q4MDEyNTFGMTJEMDAzRUYyNjkgLyog
Q29sb3JJbnB1dFR5cGUuaCAqLywKQEAgLTE4MjIwLDggKzE4MjEwLDYgQEAKIAkJCQk5QjUwQjFE
QzE3Q0Q0QzBGMDA4N0Y2M0MgLyogRm9ybU5hbWVkSXRlbS5oICovLAogCQkJCTk3MjA1QUFEMTIz
OTI4Q0EwMEIxNzM4MCAvKiBGVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgKi8sCiAJCQkJOTcyMDVB
QUUxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERpcmVjdG9yeURvY3VtZW50LmggKi8sCi0JCQkJODMw
MDMwRjMxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAg
Ki8sCi0JCQkJODMwMDMwRjQxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29s
bGVjdGlvbi5oICovLAogCQkJCUY1NUIzRDhCMTI1MUYxMkQwMDNFRjI2OSAvKiBIaWRkZW5JbnB1
dFR5cGUuY3BwICovLAogCQkJCUY1NUIzRDhDMTI1MUYxMkQwMDNFRjI2OSAvKiBIaWRkZW5JbnB1
dFR5cGUuaCAqLywKIAkJCQlCQzk3RTIzOTEwOTE0NDk1MDAxMEQzNjEgLyogSFRNTEFsbENvbGxl
Y3Rpb24uY3BwICovLApAQCAtMjMxNzcsOCArMjMxNjUsOCBAQAogCQkJCTgzRDI2RDNDMUFGREND
NTAwMDFCMzg3MyAvKiBDaGlsZE5vZGUuaWRsICovLAogCQkJCUE4MTg3MjFBMDk3N0QzQzAwMDU4
MjZEOSAvKiBDaGlsZE5vZGVMaXN0LmNwcCAqLywKIAkJCQlBODE4NzIxNTA5NzdEM0MwMDA1ODI2
RDkgLyogQ2hpbGROb2RlTGlzdC5oICovLAotCQkJCTgzMUQ0OEJFMUI3RDlBNDYwMDZERTM5QSAv
KiBDbGFzc05vZGVMaXN0LmNwcCAqLywKLQkJCQk4MzFENDhCRjFCN0Q5QTQ2MDA2REUzOUEgLyog
Q2xhc3NOb2RlTGlzdC5oICovLAorCQkJCUJDOTA0QjcyMEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFz
c05vZGVMaXN0LmNwcCAqLywKKwkJCQlCQzkwNEI3MzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NO
b2RlTGlzdC5oICovLAogCQkJCUJDQzA2NTc3MEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0
LmNwcCAqLywKIAkJCQlCQ0MwNjU3ODBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdC5oICov
LAogCQkJCUJDQzA2NTc5MEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmlkbCAqLywKQEAg
LTI0MTk0LDYgKzI0MTgyLDcgQEAKIAkJCQkxNEQ4MjM1MjBBRjkyQTc5MDAwNEYwNTcgLyogQ2hy
b21lLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEQ4MjQwODBBRjkzQUVCMDAwNEYwNTcgLyogQ2hy
b21lQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QUNCQzBCRjEyNzEzQ0JEMDA5NEY5QjIg
LyogQ2xhc3NMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzkwNEI3NzBEMTA5OThGMDA2ODBE
MzIgLyogQ2xhc3NOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDMDY1N0UwRjNDRTFC
NzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQzA2NTgxMEYz
Q0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUw
MzFCNDAwQTQ0RUZDNzAwRjk5MkUwIC8qIENsaXBib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTI0NDY1LDcgKzI0NDU0LDYgQEAKIAkJCQk4MzcyREIzMTFBNjc4MEE4MDBDNjk3QzUgLyog
RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUNBREZD
NzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNFQ0FERkM5MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmggaW4g
SGVhZGVycyAqLywKLQkJCQk0NkVCRUEwMjFCN0Q0RDY1MDBCRTQ5NDEgLyogQ29sbGVjdGlvblRy
YXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDBCRDRGNUQxNDA4ODUwRjAwNjgzOUI2IC8q
IERpY3RhdGlvbkNvbW1hbmRJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTE1MTQ1QjkwMUIzQTFD
RTAwMDY2MkJGNyAvKiBNZWRpYURldmljZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNjAy
M0YwMTUzMkM0MEMwMEQ1MEZGNCAvKiBEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLywKQEAgLTI0
NTcxLDcgKzI0NTU5LDYgQEAKIAkJCQk4NUU3MTE5NjBBQzVENTM1MDA1MzI3MEYgLyogRE9NRG9j
dW1lbnRUeXBlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MThEQ0U5MEE5Q0M4MEQw
MDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVF
NzExOTcwQUM1RDUzNTAwNTMyNzBGIC8qIERPTURPTUltcGxlbWVudGF0aW9uSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAotCQkJCTgzMUQ0OEMxMUI3RDlBNTIwMDZERTM5QSAvKiBDbGFzc05vZGVM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkNDQTlFODE1RTNGNjRDMDA1M0M3N0YgLyogRE9N
RE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJDQ0E5RUExNUUz
RjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb25JbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkQ5QTI0NzQxNUI5QzJFMzAwRDM0NTI3IC8qIERPTURPTVNlY3VyaXR5
UG9saWN5LmggaW4gSGVhZGVycyAqLywKQEAgLTI1NjU1LDcgKzI1NjQyLDYgQEAKIAkJCQlGREEx
NUVCMjEyQjAzRUUxMDAzQTU4M0EgLyogSlNQYW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4QTlBNTg3NTExRTg0QzgxMDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOEE5QTU4NzExMUU4NEMzNjAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VOYXZpZ2F0
aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQk4MzAwMzBGNjFCN0QzM0I1MDBFRDNBQUMgLyogR2Vu
ZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTlBNTg4ODEx
RTg0RjM3MDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZVRpbWluZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkRFQTYyNDcxNTIxMDJGQzAwNDc5REYwIC8qIEpTUGVyaW9kaWNXYXZlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5M0I3MEQ2QzA5RUIwQzdDMDA5RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVu
Y3Rpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTI2OTk2LDcgKzI2OTgyLDYgQEAKIAkJCQlCMjIy
N0E1MTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTnVtYmVyTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjIyMjdBNTQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhaW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyN0E1NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGFyc2VyVXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLywKLQkJCQk4MzAwMzBGODFCN0QzQjc4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENv
bGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJEM0EwRTM2MTNBN0Q3NjEwMEU4NUFGMCAv
KiBTVkdQYXJzaW5nRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0QzY3ODREMTIxNDgxNDcw
MEE5MjkwMiAvKiBTVkdQYXRoQmxlbmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3NkM5RUIx
MURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI3
OTkyLDYgKzI3OTc3LDcgQEAKIAkJCQkxNEQ4MjM4QjBBRjkyREY2MDAwNEYwNTcgLyogQ2hyb21l
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFCQUYyMjA4MEMwM0IxQzcwMEIwQkNGMCAvKiBDaHJv
bWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk0QUNCQzBCRTEyNzEzQ0JEMDA5NEY5QjIgLyog
Q2xhc3NMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDOTA0Qjc2MEQxMDk5OEYwMDY4MEQz
MiAvKiBDbGFzc05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQzA2NTdEMEYzQ0Ux
QjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQzA2NTgw
MEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NTAzMUIzRjBBNDRFRkM3MDBGOTkyRTAgLyogQ2xpcGJvYXJkRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0yODk5OCw3ICsyODk4NCw2IEBACiAJCQkJQTlDNkU2NEMwRDc0NjVFNzAwNjQ0
MkU5IC8qIEpTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlD
NkU2NEQwRDc0NjVFNzAwNjQ0MkU5IC8qIEpTRE9NUGx1Z2luQ3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxNzJBRjhGMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RPTVByb21pc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJODMxRDQ4QzAxQjdEOUE1MjAwNkRFMzlBIC8qIENsYXNzTm9kZUxp
c3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1QTg2QjUwQzMzNjdFODAwRUVBNjQ5IC8qIEpT
RE9NU2VsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRBQ0JDMENBMTI3MTNEMEEwMDk0
RjlCMiAvKiBKU0RPTVNldHRhYmxlVG9rZW5MaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1
MTM3Q0YyMTFBNTgzNzgwMDRBREI5OSAvKiBKU0RPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0yOTI5MSw3ICsyOTI3Niw2IEBACiAJCQkJMDc5NjlEQkQxN0QxNDE1MTAwN0ZGODQy
IC8qIEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMDdEMDdCMTQxODM0MTU4ODAwQUJERDNDIC8qIEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OTY5REJGMTdEMTQxNTEwMDdGRjg0MiAvKiBK
U1JUQ1N0YXRzQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODMwMDMwRjUxQjdEMzNC
NTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwNzk2OURDMTE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENTdGF0c1JlcG9ydC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwNzk2OURDMzE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENTdGF0
c1Jlc3BvbnNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3REM1RkQ0MTdEM0VFRTkwMDk5Rjg5
MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggYmU5NjRiY2ZjNGFiZDllNjY4ZjM0ZjBkNGIy
MDM1MTE3MDZkN2U2ZS4uYmUzYTNjMTg3YTg1YzFjN2U5Zjg2NGZkM2NkN2IxYTdkZTI2ZGE2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2lu
Y2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgotI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1
ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaCIKQEAgLTkw
Myw3ICs5MDIsNyBAQCBSZWZQdHI8UmFkaW9Ob2RlTGlzdD4gQ29udGFpbmVyTm9kZTo6cmFkaW9O
b2RlTGlzdChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4g
Q29udGFpbmVyTm9kZTo6Y2hpbGRyZW4oKQogewotICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgp
LmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxD
b2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRzPE5vZGVDaGlsZHJlbj46OnRyYXZlcnNhbFR5
cGU+PigqdGhpcywgTm9kZUNoaWxkcmVuKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENv
bGxlY3Rpb24oTm9kZUNoaWxkcmVuKTsKIH0KIAogRWxlbWVudCogQ29udGFpbmVyTm9kZTo6Zmly
c3RFbGVtZW50Q2hpbGQoKSBjb25zdApAQCAtOTQwLDYgKzkzOSwyMiBAQCB2b2lkIENvbnRhaW5l
ck5vZGU6OnByZXBlbmQoVmVjdG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3Is
IEV4Y2VwdGlvbgogICAgIGluc2VydEJlZm9yZShub2RlLnJlbGVhc2UoKSwgZmlyc3RDaGlsZCgp
LCBlYyk7CiB9CiAKK1JlZjxIVE1MQ29sbGVjdGlvbj4gQ29udGFpbmVyTm9kZTo6ZW5zdXJlQ2Fj
aGVkSFRNTENvbGxlY3Rpb24oQ29sbGVjdGlvblR5cGUgdHlwZSkKK3sKKyAgICBpZiAoSFRNTENv
bGxlY3Rpb24qIGNvbGxlY3Rpb24gPSBjYWNoZWRIVE1MQ29sbGVjdGlvbih0eXBlKSkKKyAgICAg
ICAgcmV0dXJuICpjb2xsZWN0aW9uOworCisgICAgaWYgKHR5cGUgPT0gVGFibGVSb3dzKQorICAg
ICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRD
b2xsZWN0aW9uPEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uPihkb3duY2FzdDxIVE1MVGFibGVFbGVt
ZW50PigqdGhpcyksIHR5cGUpOworICAgIGVsc2UgaWYgKHR5cGUgPT0gU2VsZWN0T3B0aW9ucykK
KyAgICAgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2Fj
aGVkQ29sbGVjdGlvbjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+KGRvd25jYXN0PEhUTUxTZWxlY3RF
bGVtZW50PigqdGhpcyksIHR5cGUpOworICAgIGVsc2UgaWYgKHR5cGUgPT0gRm9ybUNvbnRyb2xz
KSB7CisgICAgICAgIEFTU0VSVChoYXNUYWdOYW1lKEhUTUxOYW1lczo6Zm9ybVRhZykgfHwgaGFz
VGFnTmFtZShIVE1MTmFtZXM6OmZpZWxkc2V0VGFnKSk7CisgICAgICAgIHJldHVybiBlbnN1cmVS
YXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248SFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24+KCp0aGlzLCB0eXBlKTsKKyAgICB9CisgICAgcmV0dXJuIGVuc3Vy
ZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MQ29s
bGVjdGlvbj4oKnRoaXMsIHR5cGUpOworfQorCiBIVE1MQ29sbGVjdGlvbiogQ29udGFpbmVyTm9k
ZTo6Y2FjaGVkSFRNTENvbGxlY3Rpb24oQ29sbGVjdGlvblR5cGUgdHlwZSkKIHsKICAgICByZXR1
cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YSgpLT5ub2RlTGlzdHMoKSA/IHJhcmVEYXRhKCkt
Pm5vZGVMaXN0cygpLT5jYWNoZWRDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uPih0eXBlKSA6IG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCAwNWIzZmNhZWQ4NDhkZGRi
NjY1MTcxODQ3NWNiNzY0ZWY5NTAxMWI1Li5kYTA2MjFkN2YwNWM2ZWFiODFmMGM1N2ExZGZmNTYw
YmZlNjg5OWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTE2OSw2ICsxNjks
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRGaXJzdENoaWxkKE5vZGUqIGNoaWxkKSB7IG1f
Zmlyc3RDaGlsZCA9IGNoaWxkOyB9CiAgICAgdm9pZCBzZXRMYXN0Q2hpbGQoTm9kZSogY2hpbGQp
IHsgbV9sYXN0Q2hpbGQgPSBjaGlsZDsgfQogCisgICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBlbnN1
cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihDb2xsZWN0aW9uVHlwZSk7CiAgICAgSFRNTENvbGxlY3Rp
b24qIGNhY2hlZEhUTUxDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBlKTsKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQxMjhhMjE4MjdkM2NjZTI4YmRmZGE5MDdjMzk3OGYy
MWEwOTM4NzkuLjlkZWM2YzgwMmYxZDg1NjEzMGFmYzQ1ZDEzZjI0NGFmZDNmMTM5Y2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjMsMTIgKzYzLDEyIEBACiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgotI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1
ZGUgIkhUTUxBbGxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MQmFzZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnRG
YWN0b3J5LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgpAQCAtNDc3Miw1
MSArNDc3Miw1MCBAQCBib29sIERvY3VtZW50OjpoYXNTVkdSb290Tm9kZSgpIGNvbnN0CiAgICAg
cmV0dXJuIGRvY3VtZW50RWxlbWVudCgpICYmIGRvY3VtZW50RWxlbWVudCgpLT5oYXNUYWdOYW1l
KFNWR05hbWVzOjpzdmdUYWcpOwogfQogCi10ZW1wbGF0ZSA8Q29sbGVjdGlvblR5cGUgY29sbGVj
dGlvblR5cGU+Ci1SZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjplbnN1cmVDYWNoZWRDb2xs
ZWN0aW9uKCkKK1JlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmVuc3VyZUNhY2hlZENvbGxl
Y3Rpb24oQ29sbGVjdGlvblR5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEo
KS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1M
Q29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0czxjb2xsZWN0aW9uVHlwZT46OnRyYXZlcnNh
bFR5cGU+PigqdGhpcywgY29sbGVjdGlvblR5cGUpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0
YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb24+
KCp0aGlzLCB0eXBlKTsKIH0KIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6aW1hZ2Vz
KCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbjxEb2NJbWFnZXM+KCk7Cisg
ICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb24oRG9jSW1hZ2VzKTsKIH0KIAogUmVmPEhU
TUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6YXBwbGV0cygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNh
Y2hlZENvbGxlY3Rpb248RG9jQXBwbGV0cz4oKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29s
bGVjdGlvbihEb2NBcHBsZXRzKTsKIH0KIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6
ZW1iZWRzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbjxEb2NFbWJlZHM+
KCk7CisgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb24oRG9jRW1iZWRzKTsKIH0KIAog
UmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6cGx1Z2lucygpCiB7CiAgICAgLy8gVGhpcyBp
cyBhbiBhbGlhcyBmb3IgZW1iZWRzKCkgcmVxdWlyZWQgZm9yIHRoZSBKUyBET00gYmluZGluZ3Mu
Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb248RG9jRW1iZWRzPigpOworICAgIHJl
dHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uKERvY0VtYmVkcyk7CiB9CiAKIFJlZjxIVE1MQ29s
bGVjdGlvbj4gRG9jdW1lbnQ6OnNjcmlwdHMoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRD
b2xsZWN0aW9uPERvY1NjcmlwdHM+KCk7CisgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rp
b24oRG9jU2NyaXB0cyk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6Omxpbmtz
KCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbjxEb2NMaW5rcz4oKTsKKyAg
ICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbihEb2NMaW5rcyk7CiB9CiAKIFJlZjxIVE1M
Q29sbGVjdGlvbj4gRG9jdW1lbnQ6OmZvcm1zKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVk
Q29sbGVjdGlvbjxEb2NGb3Jtcz4oKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlv
bihEb2NGb3Jtcyk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFuY2hvcnMo
KQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uPERvY0FuY2hvcnM+KCk7Cisg
ICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb24oRG9jQW5jaG9ycyk7CiB9CiAKIFJlZjxI
VE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFsbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGU1
M2JmM2UxYzZjMWVmMjA5YjMyOTMzNmYzNzJlMWY4MTBjZTlmOTcuLjgwZmU3YTQ4ZWVmMjFiNzQx
MDU0MjQyMjhhNmY3MzI2ZjZjZDRhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTMsNiAr
MTEzLDcgQEAgY2xhc3MgSFRNTElGcmFtZUVsZW1lbnQ7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50
OwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3Mg
SFRNTE5hbWVDb2xsZWN0aW9uOwogY2xhc3MgSFRNTFNjcmlwdEVsZW1lbnQ7CiBjbGFzcyBIaXRU
ZXN0UmVxdWVzdDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CkBAIC0xMzQ0LDggKzEzNDUsNyBAQCBw
cml2YXRlOgogCiAgICAgTm9kZSogbm9kZUZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xp
ZW50UG9pbnQsIExheW91dFBvaW50KiBsb2NhbFBvaW50ID0gbnVsbHB0cik7CiAKLSAgICB0ZW1w
bGF0ZSA8Q29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGU+Ci0gICAgUmVmPEhUTUxDb2xsZWN0
aW9uPiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uKCk7CisgICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBl
bnN1cmVDYWNoZWRDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBlKTsKIAogI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKICAgICB2b2lkIGRpc3BhdGNoRnVsbFNjcmVlbkNoYW5nZU9yRXJyb3JFdmVu
dChEZXF1ZTxSZWZQdHI8Tm9kZT4+JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUsIGJv
b2wgc2hvdWxkTm90aWZ5TWVkaWFFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRD
aGlsZEl0ZXJhdG9yLmgKaW5kZXggMWE5NDZiYjhmYjE5M2M2MDQ1MjA5ZmZiZDUyY2QzNWE4OWNm
ZWM5ZS4uOTRjZDMxMzIyNDM0YmRhMDVjOWY1NmUxN2IwZTA2NGMyMjVlNTFjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0ZXJhdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0ZXJhdG9yLmgKQEAgLTQxLDcgKzQxLDYgQEAgcHVi
bGljOgogCiAgICAgRWxlbWVudENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFy
ZW50KTsKICAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiBwYXJl
bnQsIEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKLSAgICBFbGVtZW50Q2hpbGRJdGVyYXRvciYgb3Bl
cmF0b3ItLSgpOwogICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CiB9Owog
CkBAIC01Niw3ICs1NSw2IEBAIHB1YmxpYzoKIAogICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0
b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKICAgICBFbGVtZW50Q2hpbGRDb25zdEl0
ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCwgY29uc3QgRWxlbWVudFR5cGUqIGN1
cnJlbnQpOwotICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsKICAg
ICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CiB9OwogCkBAIC0xMTAs
MTIgKzEwOCw2IEBAIGlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVs
ZW1lbnRDaGlsZEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vCiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBFbGVtZW50VHlwZT4KLWlubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4mIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItLSgpCi17Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+
KEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKCkp
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudENo
aWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlw
ZT46Om9wZXJhdG9yKysoKQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRJ
dGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2
ZXJzZU5leHRTaWJsaW5nKCkpOwpAQCAtMTM2LDEzICsxMjgsNiBAQCBpbmxpbmUgRWxlbWVudENo
aWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3Io
Y29uc3QgQwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+Ci1pbmxpbmUgRWxl
bWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDaGlsZENvbnN0SXRl
cmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvci0tKCkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKCkpOwotfQotCi0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50Q2hpbGRDb25z
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT46Om9wZXJhdG9yKysoKQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hp
bGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9MaXZlTm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3Qu
aAppbmRleCAwMTA0MjY2OTcxYzVhYzE2ODVlYmQ2ZjQyNDQ1NDQ4MWRkNjJhY2JhLi4xOTZlNTBi
YjgyYmViY2NmNzI2NGI0NjNhMmVlZTYzZWE2ZDEwYWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2Rl
TGlzdC5oCkBAIC0yNSw3ICsyNSw2IEBACiAjZGVmaW5lIExpdmVOb2RlTGlzdF9oCiAKICNpbmNs
dWRlICJDb2xsZWN0aW9uSW5kZXhDYWNoZS5oIgotI2luY2x1ZGUgIkNvbGxlY3Rpb25UcmF2ZXJz
YWwuaCIKICNpbmNsdWRlICJDb2xsZWN0aW9uVHlwZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgpAQCAtODEsMjggKzgwLDI1
IEBAIGNsYXNzIENhY2hlZExpdmVOb2RlTGlzdCA6IHB1YmxpYyBMaXZlTm9kZUxpc3QgewogcHVi
bGljOgogICAgIHZpcnR1YWwgfkNhY2hlZExpdmVOb2RlTGlzdCgpOwogCi0gICAgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVD
b3VudChub2RlTGlzdCgpKTsgfQotICAgIE5vZGUqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUF0KG5vZGVMaXN0KCks
IG9mZnNldCk7IH0KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsOworICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0IG92
ZXJyaWRlIGZpbmFsOwogCiAgICAgLy8gRm9yIENvbGxlY3Rpb25JbmRleENhY2hlCi0gICAgRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBD
b2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46
OmJlZ2luKG5vZGVMaXN0KCksIHJvb3ROb2RlKCkpOyB9Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvciBjb2xsZWN0aW9uTGFzdCgpIGNvbnN0IHsgcmV0dXJuIENvbGxlY3Rpb25UcmF2ZXJz
YWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6bGFzdChub2RlTGlzdCgp
LCByb290Tm9kZSgpKTsgfQorICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgY29sbGVjdGlv
bkJlZ2luKCkgY29uc3Q7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0aW9u
TGFzdCgpIGNvbnN0OwogICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgY29sbGVjdGlvbkVu
ZCgpIGNvbnN0IHsgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoKTsgfQotICAgIHZv
aWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBj
dXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdCB7
IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRz
Pjo6dHJhdmVyc2VGb3J3YXJkKG5vZGVMaXN0KCksIGN1cnJlbnQsIGNvdW50LCB0cmF2ZXJzZWRD
b3VudCk7IH0KLSAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KSBjb25zdCB7IENvbGxlY3Rp
b25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVy
c2VCYWNrd2FyZChub2RlTGlzdCgpLCBjdXJyZW50LCBjb3VudCk7IH0KKyAgICB2b2lkIGNvbGxl
Y3Rpb25UcmF2ZXJzZUZvcndhcmQoRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYsIHVuc2lnbmVk
IGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0OworICAgIHZvaWQgY29sbGVj
dGlvblRyYXZlcnNlQmFja3dhcmQoRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYsIHVuc2lnbmVk
IGNvdW50KSBjb25zdDsKICAgICBib29sIGNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJhY2t3YXJkKCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgd2lsbFZhbGlkYXRlSW5kZXhDYWNoZSgp
IGNvbnN0IHsgZG9jdW1lbnQoKS5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0
X2Nhc3Q8Q2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT4mPigqdGhpcykpOyB9CisgICAg
dm9pZCB3aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQg
aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JikgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmly
dHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1f
aW5kZXhDYWNoZS5tZW1vcnlDb3N0KCk7IH0KKyAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKIHByb3RlY3RlZDoKICAgICBDYWNoZWRMaXZlTm9k
ZUxpc3QoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSk7
CiAKIHByaXZhdGU6Ci0gICAgTm9kZUxpc3RUeXBlJiBub2RlTGlzdCgpIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsgfQotICAgIGNvbnN0IE5vZGVMaXN0VHlwZSYg
bm9kZUxpc3QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUm
PigqdGhpcyk7IH0KLQogICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKCkgY29uc3Q7CiAKICAg
ICBtdXRhYmxlIENvbGxlY3Rpb25JbmRleENhY2hlPE5vZGVMaXN0VHlwZSwgRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcj4gbV9pbmRleENhY2hlOwpAQCAtMTM1LDMzICsxMzEsMTE1IEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmlidXRlQ2hhbmdlKE5vZGVM
aXN0SW52YWxpZGF0aW9uVHlwCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgogQ2FjaGVk
TGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OkNhY2hlZExpdmVOb2RlTGlzdChDb250YWluZXJO
b2RlJiBvd25lck5vZGUsIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBl
KQogICAgIDogTGl2ZU5vZGVMaXN0KG93bmVyTm9kZSwgaW52YWxpZGF0aW9uVHlwZSkKLSAgICAs
IG1faW5kZXhDYWNoZShub2RlTGlzdCgpKQorICAgICwgbV9pbmRleENhY2hlKHN0YXRpY19jYXN0
PE5vZGVMaXN0VHlwZSY+KCp0aGlzKSkKIHsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0
VHlwZT4KIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojp+Q2FjaGVkTGl2ZU5vZGVM
aXN0KCkKIHsKLSAgICBpZiAobV9pbmRleENhY2hlLmhhc1ZhbGlkQ2FjaGUobm9kZUxpc3QoKSkp
CisgICAgYXV0byYgbm9kZUxpc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigq
dGhpcyk7CisgICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKG5vZGVMaXN0KSkKICAg
ICAgICAgZG9jdW1lbnQoKS51bnJlZ2lzdGVyTm9kZUxpc3RGb3JJbnZhbGlkYXRpb24oKnRoaXMp
OwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgogaW5saW5lIENvbnRhaW5lck5v
ZGUmIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpyb290Tm9kZSgpIGNvbnN0CiB7
Ci0gICAgaWYgKG5vZGVMaXN0KCkuaXNSb290ZWRBdERvY3VtZW50KCkgJiYgb3duZXJOb2RlKCku
aW5Eb2N1bWVudCgpKQorICAgIGlmIChzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigq
dGhpcykuaXNSb290ZWRBdERvY3VtZW50KCkgJiYgb3duZXJOb2RlKCkuaW5Eb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gb3duZXJOb2RlKCkuZG9jdW1lbnQoKTsKIAogICAgIHJldHVybiBvd25l
ck5vZGUoKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KK0VsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rp
b25CZWdpbigpIGNvbnN0Cit7CisgICAgYXV0byYgbm9kZUxpc3QgPSBzdGF0aWNfY2FzdDxjb25z
dCBOb2RlTGlzdFR5cGUmPigqdGhpcyk7CisgICAgYXV0byBkZXNjZW5kYW50cyA9IGVsZW1lbnRE
ZXNjZW5kYW50cyhyb290Tm9kZSgpKTsKKyAgICBhdXRvIGVuZCA9IGRlc2NlbmRhbnRzLmVuZCgp
OworICAgIGZvciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgeworICAgICAgICBpZiAobm9kZUxpc3QuZWxlbWVudE1hdGNoZXMoKml0KSkKKyAgICAgICAg
ICAgIHJldHVybiBpdDsKKyAgICB9CisgICAgcmV0dXJuIGVuZDsKK30KKwordGVtcGxhdGUgPGNs
YXNzIE5vZGVMaXN0VHlwZT4KK0VsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgQ2FjaGVkTGl2ZU5v
ZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25MYXN0KCkgY29uc3QKK3sKKyAgICBhdXRv
JiBub2RlTGlzdCA9IHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsKKyAg
ICBhdXRvIGRlc2NlbmRhbnRzID0gZWxlbWVudERlc2NlbmRhbnRzKHJvb3ROb2RlKCkpOworICAg
IGF1dG8gZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ID0gZGVzY2Vu
ZGFudHMubGFzdCgpOyBpdCAhPSBlbmQ7IC0taXQpIHsKKyAgICAgICAgaWYgKG5vZGVMaXN0LmVs
ZW1lbnRNYXRjaGVzKCppdCkpCisgICAgICAgICAgICByZXR1cm4gaXQ7CisgICAgfQorICAgIHJl
dHVybiBlbmQ7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+Cit2b2lkIENhY2hl
ZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25l
ZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0Cit7CisgICAgYXV0byYgbm9kZUxpc3QgPSBzdGF0aWNf
Y2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigqdGhpcyk7CisgICAgQVNTRVJUKG5vZGVMaXN0LmVs
ZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CisgICAgYXV0byBlbmQgPSBjb2xsZWN0aW9uRW5kKCk7
CisgICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsr
dHJhdmVyc2VkQ291bnQpIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgKytjdXJyZW50Owor
ICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gZW5kKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfSB3aGlsZSAoIW5vZGVMaXN0LmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7Cisg
ICAgfQorfQorCit0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgordm9pZCBDYWNoZWRMaXZl
Tm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQoRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpIGNvbnN0Cit7Cisg
ICAgYXV0byYgbm9kZUxpc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigqdGhp
cyk7CisgICAgQVNTRVJUKG5vZGVMaXN0LmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CisgICAg
YXV0byBlbmQgPSBjb2xsZWN0aW9uRW5kKCk7CisgICAgZm9yICg7IGNvdW50OyAtLWNvdW50KSB7
CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIC0tY3VycmVudDsKKyAgICAgICAgICAgIGlmIChj
dXJyZW50ID09IGVuZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gd2hpbGUg
KCFub2RlTGlzdC5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIH0KK30KKwordGVtcGxh
dGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KK3ZvaWQgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0
VHlwZT46OndpbGxWYWxpZGF0ZUluZGV4Q2FjaGUoKSBjb25zdAoreworICAgIGRvY3VtZW50KCku
cmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbihjb25zdF9jYXN0PE5vZGVMaXN0VHlwZSY+
KHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKSkpOworfQorCit0ZW1wbGF0
ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgogdm9pZCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RU
eXBlPjo6aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIHsKLSAgICBp
ZiAoIW1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKG5vZGVMaXN0KCkpKQorICAgIGF1dG8mIG5v
ZGVMaXN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpOworICAgIGlm
ICghbV9pbmRleENhY2hlLmhhc1ZhbGlkQ2FjaGUobm9kZUxpc3QpKQogICAgICAgICByZXR1cm47
Ci0gICAgZG9jdW1lbnQudW5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nh
c3Q8Tm9kZUxpc3RUeXBlJj4obm9kZUxpc3QoKSkpOwotICAgIG1faW5kZXhDYWNoZS5pbnZhbGlk
YXRlKG5vZGVMaXN0KCkpOworICAgIGRvY3VtZW50LnVucmVnaXN0ZXJOb2RlTGlzdEZvckludmFs
aWRhdGlvbihjb25zdF9jYXN0PE5vZGVMaXN0VHlwZSY+KG5vZGVMaXN0KSk7CisgICAgbV9pbmRl
eENhY2hlLmludmFsaWRhdGUobm9kZUxpc3QpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxp
c3RUeXBlPgordW5zaWduZWQgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46Omxlbmd0
aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5kZXhDYWNoZS5ub2RlQ291bnQoc3RhdGljX2Nh
c3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIE5v
ZGVMaXN0VHlwZT4KK05vZGUqIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+OjppdGVt
KHVuc2lnbmVkIG9mZnNldCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVB
dChzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigqdGhpcyksIG9mZnNldCk7Cit9CisK
K3RlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+CitzaXplX3QgQ2FjaGVkTGl2ZU5vZGVMaXN0
PE5vZGVMaXN0VHlwZT46Om1lbW9yeUNvc3QoKSBjb25zdAoreworICAgIHJldHVybiBtX2luZGV4
Q2FjaGUubWVtb3J5Q29zdCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDgxNzYwMjBiMTExZjRlNmM3Y2Y0ZDVlYjQ0NWMzM2RlYTA0N2NiNjMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENhY2hlZEhUTUxDb2xsZWN0aW9uX2gKLSNkZWZpbmUg
Q2FjaGVkSFRNTENvbGxlY3Rpb25faAotCi0jaW5jbHVkZSAiQ29sbGVjdGlvblRyYXZlcnNhbC5o
IgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rp
b25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KLWNsYXNzIENh
Y2hlZEhUTUxDb2xsZWN0aW9uIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKLXB1YmxpYzoKLSAg
ICBDYWNoZWRIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlw
ZSk7Ci0KLSAgICB2aXJ0dWFsIH5DYWNoZWRIVE1MQ29sbGVjdGlvbigpOwotCi0gICAgdmlydHVh
bCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2luZGV4
Q2FjaGUubm9kZUNvdW50KGNvbGxlY3Rpb24oKSk7IH0KLSAgICB2aXJ0dWFsIEVsZW1lbnQqIGl0
ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2luZGV4
Q2FjaGUubm9kZUF0KGNvbGxlY3Rpb24oKSwgb2Zmc2V0KTsgfQotICAgIHZpcnR1YWwgRWxlbWVu
dCogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0
dXJuIG1faW5kZXhDYWNoZS5tZW1vcnlDb3N0KCkgKyBIVE1MQ29sbGVjdGlvbjo6bWVtb3J5Q29z
dCgpOyB9Ci0KLSAgICAvLyBGb3IgQ29sbGVjdGlvbkluZGV4Q2FjaGU7IGRvIG5vdCB1c2UgZWxz
ZXdoZXJlLgotICAgIHVzaW5nIENvbGxlY3Rpb25UcmF2ZXJzYWxJdGVyYXRvciA9IHR5cGVuYW1l
IENvbGxlY3Rpb25UcmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT46Okl0ZXJhdG9yOwotICAgIENvbGxl
Y3Rpb25UcmF2ZXJzYWxJdGVyYXRvciBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBD
b2xsZWN0aW9uVHJhdmVyc2FsPHRyYXZlcnNhbFR5cGU+OjpiZWdpbihjb2xsZWN0aW9uKCksIHJv
b3ROb2RlKCkpOyB9Ci0gICAgQ29sbGVjdGlvblRyYXZlcnNhbEl0ZXJhdG9yIGNvbGxlY3Rpb25M
YXN0KCkgY29uc3QgeyByZXR1cm4gQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6
bGFzdChjb2xsZWN0aW9uKCksIHJvb3ROb2RlKCkpOyB9Ci0gICAgQ29sbGVjdGlvblRyYXZlcnNh
bEl0ZXJhdG9yIGNvbGxlY3Rpb25FbmQoKSBjb25zdCB7IHJldHVybiBDb2xsZWN0aW9uVHJhdmVy
c2FsPHRyYXZlcnNhbFR5cGU+OjplbmQocm9vdE5vZGUoKSk7IH0KLSAgICB2b2lkIGNvbGxlY3Rp
b25UcmF2ZXJzZUZvcndhcmQoQ29sbGVjdGlvblRyYXZlcnNhbEl0ZXJhdG9yJiBjdXJyZW50LCB1
bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdCB7IENvbGxlY3Rp
b25UcmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT46OnRyYXZlcnNlRm9yd2FyZChjb2xsZWN0aW9uKCks
IGN1cnJlbnQsIGNvdW50LCB0cmF2ZXJzZWRDb3VudCk7IH0KLSAgICB2b2lkIGNvbGxlY3Rpb25U
cmF2ZXJzZUJhY2t3YXJkKENvbGxlY3Rpb25UcmF2ZXJzYWxJdGVyYXRvciYgY3VycmVudCwgdW5z
aWduZWQgY291bnQpIGNvbnN0IHsgQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6
dHJhdmVyc2VCYWNrd2FyZChjb2xsZWN0aW9uKCksIGN1cnJlbnQsIGNvdW50KTsgfQotICAgIGJv
b2wgY29sbGVjdGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSBjb25zdCB7IHJldHVybiB0cmF2ZXJz
YWxUeXBlICE9IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seTsgfQot
ICAgIHZvaWQgd2lsbFZhbGlkYXRlSW5kZXhDYWNoZSgpIGNvbnN0IHsgZG9jdW1lbnQoKS5yZWdp
c3RlckNvbGxlY3Rpb24oY29uc3RfY2FzdDxDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVj
dGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPiY+KCp0aGlzKSk7IH0KLQotICAgIHZpcnR1YWwgdm9p
ZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmKSBvdmVycmlkZTsKLQotICAgIGJvb2wgZWxlbWVu
dE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIEhUTUxDb2xsZWN0aW9u
Q2xhc3MmIGNvbGxlY3Rpb24oKSB7IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MQ29sbGVjdGlvbkNs
YXNzJj4oKnRoaXMpOyB9Ci0gICAgY29uc3QgSFRNTENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxDb2xsZWN0aW9uQ2xhc3Mm
PigqdGhpcyk7IH0KLQotICAgIG11dGFibGUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8SFRNTENvbGxl
Y3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbEl0ZXJhdG9yPiBtX2luZGV4Q2FjaGU7Ci19
OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRy
YXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KLUNhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xs
ZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+OjpDYWNoZWRIVE1MQ29sbGVjdGlvbihDb250YWlu
ZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSkKLSAgICA6IEhUTUxD
b2xsZWN0aW9uKGJhc2UsIGNvbGxlY3Rpb25UeXBlKQotICAgICwgbV9pbmRleENhY2hlKGNvbGxl
Y3Rpb24oKSkKLXsgfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywg
Q29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KLUNhY2hlZEhUTUxDb2xsZWN0
aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+Ojp+Q2FjaGVkSFRNTENvbGxl
Y3Rpb24oKQotewotICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9u
KCkpKQotICAgICAgICBkb2N1bWVudCgpLnVucmVnaXN0ZXJDb2xsZWN0aW9uKCp0aGlzKTsKLX0K
LQotdGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2
ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+Ci12b2lkIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxD
b2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+OjppbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQm
IGRvY3VtZW50KQotewotICAgIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoZG9jdW1l
bnQpOwotICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKCkpKSB7
Ci0gICAgICAgIGRvY3VtZW50LnVucmVnaXN0ZXJDb2xsZWN0aW9uKCp0aGlzKTsKLSAgICAgICAg
bV9pbmRleENhY2hlLmludmFsaWRhdGUoY29sbGVjdGlvbigpKTsKLSAgICB9Ci19Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZSB0cmF2ZXJzYWxUeXBlPgotYm9vbCBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlv
bkNsYXNzLCB0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0Ci17
Ci0gICAgLy8gV2UgY2FsbCB0aGUgZWxlbWVudE1hdGNoZXMoKSBtZXRob2QgZGlyZWN0bHkgb24g
dGhlIHN1YmNsYXNzIGluc3RlYWQgZm9yIHBlcmZvcm1hbmNlLgotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIG5hbWVT
aG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKEhUTUxFbGVtZW50JiBlbGVtZW50KQotewotICAg
IC8vIFRoZSBkb2N1bWVudC5hbGwgY29sbGVjdGlvbiByZXR1cm5zIG9ubHkgY2VydGFpbiB0eXBl
cyBvZiBlbGVtZW50cyBieSBuYW1lLAotICAgIC8vIGFsdGhvdWdoIGl0IHJldHVybnMgYW55IHR5
cGUgb2YgZWxlbWVudCBieSBpZC4KLSAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxO
YW1lczo6YXBwbGV0VGFnKQotICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjplbWJlZFRhZykKLSAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Zm9y
bVRhZykKLSAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW1nVGFnKQot
ICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykKLSAgICAg
ICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b2JqZWN0VGFnKQotICAgICAgICB8
fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzZWxlY3RUYWcpOwotfQotCi1zdGF0aWMg
aW5saW5lIGJvb2wgbmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwoRWxlbWVudCYgZWxl
bWVudCkKLXsKLSAgICByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpICYmIG5hbWVTaG91
bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKGRvd25jYXN0PEhUTUxFbGVtZW50PihlbGVtZW50KSk7
Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9u
VHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgotRWxlbWVudCogQ2FjaGVkSFRNTENvbGxlY3Rp
b248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT46Om5hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0Ci17Ci0gICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0
LmNvbS93b3Jrc2hvcC9hdXRob3IvZGh0bWwvcmVmZXJlbmNlL21ldGhvZHMvbmFtZWRpdGVtLmFz
cAotICAgIC8vIFRoaXMgbWV0aG9kIGZpcnN0IHNlYXJjaGVzIGZvciBhbiBvYmplY3Qgd2l0aCBh
IG1hdGNoaW5nIGlkCi0gICAgLy8gYXR0cmlidXRlLiBJZiBhIG1hdGNoIGlzIG5vdCBmb3VuZCwg
dGhlIG1ldGhvZCB0aGVuIHNlYXJjaGVzIGZvciBhbgotICAgIC8vIG9iamVjdCB3aXRoIGEgbWF0
Y2hpbmcgbmFtZSBhdHRyaWJ1dGUsIGJ1dCBvbmx5IG9uIHRob3NlIGVsZW1lbnRzCi0gICAgLy8g
dGhhdCBhcmUgYWxsb3dlZCBhIG5hbWUgYXR0cmlidXRlLgotCi0gICAgaWYgKG5hbWUuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIENvbnRhaW5lck5vZGUmIHJvb3Qg
PSByb290Tm9kZSgpOwotICAgIGlmICh0cmF2ZXJzYWxUeXBlICE9IENvbGxlY3Rpb25UcmF2ZXJz
YWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seSAmJiByb290LmlzSW5UcmVlU2NvcGUoKSkgewotICAg
ICAgICBFbGVtZW50KiBjYW5kaWRhdGUgPSBudWxscHRyOwotCi0gICAgICAgIFRyZWVTY29wZSYg
dHJlZVNjb3BlID0gcm9vdC50cmVlU2NvcGUoKTsKLSAgICAgICAgaWYgKHRyZWVTY29wZS5oYXNF
bGVtZW50V2l0aElkKCpuYW1lLmltcGwoKSkpIHsKLSAgICAgICAgICAgIGlmICghdHJlZVNjb3Bl
LmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChuYW1lKSkKLSAgICAgICAgICAgICAgICBj
YW5kaWRhdGUgPSB0cmVlU2NvcGUuZ2V0RWxlbWVudEJ5SWQobmFtZSk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAodHJlZVNjb3BlLmhhc0VsZW1lbnRXaXRoTmFtZSgqbmFtZS5pbXBsKCkpKSB7Ci0gICAg
ICAgICAgICBpZiAoIXRyZWVTY29wZS5jb250YWluc011bHRpcGxlRWxlbWVudHNXaXRoTmFtZShu
YW1lKSkgewotICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IHRyZWVTY29wZS5nZXRFbGVtZW50
QnlOYW1lKG5hbWUpOwotICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgJiYgdHlwZSgpID09
IERvY0FsbCAmJiAhbmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwoKmNhbmRpZGF0ZSkp
Ci0gICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAg
aWYgKGNhbmRpZGF0ZSAmJiBjb2xsZWN0aW9uKCkuZWxlbWVudE1hdGNoZXMoKmNhbmRpZGF0ZSkp
IHsKLSAgICAgICAgICAgIGlmICh0cmF2ZXJzYWxUeXBlID09IENvbGxlY3Rpb25UcmF2ZXJzYWxU
eXBlOjpDaGlsZHJlbk9ubHkgPyBjYW5kaWRhdGUtPnBhcmVudE5vZGUoKSA9PSAmcm9vdCA6IGNh
bmRpZGF0ZS0+aXNEZXNjZW5kYW50T2YoJnJvb3QpKQotICAgICAgICAgICAgICAgIHJldHVybiBj
YW5kaWRhdGU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gbmFtZWRJdGVtU2xvdyhu
YW1lKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQ2FjaGVkSFRN
TENvbGxlY3Rpb25faAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rp
b25UcmF2ZXJzYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDdiOTJjM2U5MmQxNzIzYTQ4YTU5ZTcx
YWEwNmU5ZTZkODVhYjU5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oCisrKyAvZGV2
L251bGwKQEAgLTEsMjM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENvbGxlY3Rpb25U
cmF2ZXJzYWxfaAotI2RlZmluZSBDb2xsZWN0aW9uVHJhdmVyc2FsX2gKLQotI2luY2x1ZGUgIkNv
bGxlY3Rpb25UeXBlLmgiCi0jaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKLSNpbmNs
dWRlICJFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotdGVtcGxhdGUgPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+Ci1zdHJ1
Y3QgQ29sbGVjdGlvblRyYXZlcnNhbCB7IH07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgQ29sbGVj
dGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+IHsKLSAg
ICB1c2luZyBJdGVyYXRvciA9IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I7Ci0KLSAgICBzdGF0
aWMgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBlbmQoQ29udGFpbmVyTm9kZSYpIHsgcmV0dXJu
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoKTsgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENvbGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBi
ZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7Ci0K
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotICAgIHN0YXRpYyBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yIGxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFp
bmVyTm9kZSYgcm9vdE5vZGUpOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25D
bGFzcz4KLSAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQs
IHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCk7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29s
bGVjdGlvbkNsYXNzPgotICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29s
bGVjdGlvbkNsYXNzJiwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWdu
ZWQgY291bnQpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLWlu
bGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVj
dGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6YmVnaW4oY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKLXsKLSAgICBhdXRvIGRl
c2NlbmRhbnRzID0gZWxlbWVudERlc2NlbmRhbnRzKHJvb3ROb2RlKTsKLSAgICBhdXRvIGVuZCA9
IGRlc2NlbmRhbnRzLmVuZCgpOwotICAgIGZvciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoY29sbGVjdGlvbi5lbGVtZW50TWF0
Y2hlcygqaXQpKQotICAgICAgICAgICAgcmV0dXJuIGl0OwotICAgIH0KLSAgICByZXR1cm4gZW5k
OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotaW5saW5lIEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3IgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVy
c2FsVHlwZTo6RGVzY2VuZGFudHM+OjpsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVj
dGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpCi17Ci0gICAgYXV0byBkZXNjZW5kYW50cyA9
IGVsZW1lbnREZXNjZW5kYW50cyhyb290Tm9kZSk7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvciBpbnZhbGlkOwotICAgIGZvciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmxhc3QoKTsgaXQg
IT0gaW52YWxpZDsgLS1pdCkgewotICAgICAgICBpZiAoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hl
cygqaXQpKQotICAgICAgICAgICAgcmV0dXJuIGl0OwotICAgIH0KLSAgICByZXR1cm4gaW52YWxp
ZDsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLWlubGluZSB2b2lk
IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRz
Pjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVk
JiB0cmF2ZXJzZWRDb3VudCkKLXsKLSAgICBBU1NFUlQoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hl
cygqY3VycmVudCkpOwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgaW52YWxpZDsKLSAg
ICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2
ZXJzZWRDb3VudCkgewotICAgICAgICBkbyB7Ci0gICAgICAgICAgICArK2N1cnJlbnQ7Ci0gICAg
ICAgICAgICBpZiAoY3VycmVudCA9PSBpbnZhbGlkKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfSB3aGlsZSAoIWNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsK
LSAgICB9Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci1pbmxpbmUg
dm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5k
YW50cz46OnRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9u
LCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkKLXsK
LSAgICBBU1NFUlQoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwotICAgIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgaW52YWxpZDsKLSAgICBmb3IgKDsgY291bnQ7IC0tY291
bnQpIHsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgLS1jdXJyZW50OwotICAgICAgICAgICAg
aWYgKGN1cnJlbnQgPT0gaW52YWxpZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0gd2hpbGUgKCFjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7Ci0gICAgfQot
fQotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT4gewotICAgIHVzaW5nIEl0ZXJhdG9yID0gRWxlbWVu
dENoaWxkSXRlcmF0b3I8RWxlbWVudD47Ci0KLSAgICBzdGF0aWMgRWxlbWVudENoaWxkSXRlcmF0
b3I8RWxlbWVudD4gZW5kKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSB7IHJldHVybiBFbGVtZW50
Q2hpbGRJdGVyYXRvcjxFbGVtZW50Pihyb290Tm9kZSk7IH0KLQotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3RhdGljIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVs
ZW1lbnQ+IGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlKTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci0gICAgc3Rh
dGljIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGxhc3QoY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENvbGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29uc3Qg
Q29sbGVjdGlvbkNsYXNzJiwgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQs
IHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpOwotCi0gICAgdGVtcGxh
dGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KLSAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJh
Y2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1l
bnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
Q29sbGVjdGlvbkNsYXNzPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IENv
bGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46
OmJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9kZSYg
cm9vdE5vZGUpCi17Ci0gICAgYXV0byBjaGlsZHJlbiA9IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+
KHJvb3ROb2RlKTsKLSAgICBhdXRvIGVuZCA9IGNoaWxkcmVuLmVuZCgpOwotICAgIGZvciAoYXV0
byBpdCA9IGNoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAo
Y29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqaXQpKQotICAgICAgICAgICAgcmV0dXJuIGl0Owot
ICAgIH0KLSAgICByZXR1cm4gZW5kOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlv
bkNsYXNzPgotaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IENvbGxlY3Rpb25U
cmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46Omxhc3QoY29u
c3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkK
LXsKLSAgICBhdXRvIGNoaWxkcmVuID0gY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUp
OwotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGludmFsaWQoY29sbGVjdGlvbi5y
b290Tm9kZSgpKTsKLSAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBsYXN0KHJvb3RO
b2RlLCBjaGlsZHJlbi5sYXN0KCkpOwotICAgIGZvciAoYXV0byBpdCA9IGxhc3Q7IGl0ICE9IGlu
dmFsaWQ7IC0taXQpIHsKLSAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKml0
KSkKLSAgICAgICAgICAgIHJldHVybiBpdDsKLSAgICB9Ci0gICAgcmV0dXJuIGludmFsaWQ7Ci19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Ci1pbmxpbmUgdm9pZCBDb2xs
ZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+Ojp0
cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBFbGVtZW50
Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVk
JiB0cmF2ZXJzZWRDb3VudCkKLXsKLSAgICBBU1NFUlQoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hl
cygqY3VycmVudCkpOwotICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGludmFsaWQo
Y29sbGVjdGlvbi5yb290Tm9kZSgpKTsKLSAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJh
dmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2ZXJzZWRDb3VudCkgewotICAgICAgICBkbyB7Ci0g
ICAgICAgICAgICArK2N1cnJlbnQ7Ci0gICAgICAgICAgICBpZiAoY3VycmVudCA9PSBpbnZhbGlk
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSB3aGlsZSAoIWNvbGxlY3Rpb24u
ZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZSBDb2xsZWN0aW9uQ2xhc3M+Ci1pbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxl
Y3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVu
dD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KQotewotICAgIEFTU0VSVChjb2xsZWN0aW9uLmVs
ZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7Ci0gICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVu
dD4gaW52YWxpZChjb2xsZWN0aW9uLnJvb3ROb2RlKCkpOwotICAgIGZvciAoOyBjb3VudDsgLS1j
b3VudCkgewotICAgICAgICBkbyB7Ci0gICAgICAgICAgICAtLWN1cnJlbnQ7Ci0gICAgICAgICAg
ICBpZiAoY3VycmVudCA9PSBpbnZhbGlkKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfSB3aGlsZSAoIWNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAgICB9
Ci19Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9u
VHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk+IHsKLSAgICB1c2luZyBJdGVyYXRvciA9
IEVsZW1lbnQqOwotCi0gICAgc3RhdGljIEVsZW1lbnQqIGVuZChDb250YWluZXJOb2RlJikgeyBy
ZXR1cm4gbnVsbHB0cjsgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFz
cz4KLSAgICBzdGF0aWMgRWxlbWVudCogYmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29u
dGFpbmVyTm9kZSYpOwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4K
LSAgICBzdGF0aWMgRWxlbWVudCogbGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWlu
ZXJOb2RlJik7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotICAg
IHN0YXRpYyB2b2lkIHRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVt
ZW50KiYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCk7
Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgotICAgIHN0YXRpYyB2
b2lkIHRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgRWxlbWVudComLCB1
bnNpZ25lZCBjb3VudCk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgotaW5saW5lIEVsZW1lbnQqIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNh
bFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5Pjo6YmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBj
b2xsZWN0aW9uLCBDb250YWluZXJOb2RlJikKLXsKLSAgICByZXR1cm4gY29sbGVjdGlvbi5jdXN0
b21FbGVtZW50QWZ0ZXIobnVsbHB0cik7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0
aW9uQ2xhc3M+Ci1pbmxpbmUgRWxlbWVudCogQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9u
VHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk+OjpsYXN0KGNvbnN0IENvbGxlY3Rpb25D
bGFzcyYsIENvbnRhaW5lck5vZGUmKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBudWxscHRyOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgotaW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZTo6Q3VzdG9tRm9yd2FyZE9ubHk+Ojp0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiBjb2xsZWN0aW9uLCBFbGVtZW50KiYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2ln
bmVkJiB0cmF2ZXJzZWRDb3VudCkKLXsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gY3VycmVudDsK
LSAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0
cmF2ZXJzZWRDb3VudCkgewotICAgICAgICBlbGVtZW50ID0gY29sbGVjdGlvbi5jdXN0b21FbGVt
ZW50QWZ0ZXIoZWxlbWVudCk7Ci0gICAgICAgIGlmICghZWxlbWVudCkgewotICAgICAgICAgICAg
Y3VycmVudCA9IG51bGxwdHI7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgY3VycmVudCA9IGVsZW1lbnQ7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0
aW9uQ2xhc3M+Ci1pbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2
ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seT46OnRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29s
bGVjdGlvbkNsYXNzJiwgRWxlbWVudComLCB1bnNpZ25lZCBjb3VudCkKLXsKLSAgICBVTlVTRURf
UEFSQU0oY291bnQpOwotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBDb2xsZWN0aW9uVHJhdmVyc2FsX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ29sbGVjdGlvblR5cGUuaAppbmRleCAxYTkyMmQwZmY5MDYwODRhZDE3MzRiMDcwZjg1
YTA0Y2ZiODk0YjFlLi41MTMwYWY5MWRhZTg2OGE3MTRmNmUwNTUwYmZhYWRmNDAxZjY1YmJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UeXBlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHlwZS5oCkBAIC01Myw0MiArNTMsNiBAQCBlbnVt
IENvbGxlY3Rpb25UeXBlIHsKICAgICBGb3JtQ29udHJvbHMKIH07CiAKLWVudW0gY2xhc3MgQ29s
bGVjdGlvblRyYXZlcnNhbFR5cGUgeyBEZXNjZW5kYW50cywgQ2hpbGRyZW5Pbmx5LCBDdXN0b21G
b3J3YXJkT25seSB9OwotdGVtcGxhdGU8Q29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGU+Ci1z
dHJ1Y3QgQ29sbGVjdGlvblR5cGVUcmFpdHMgewotICAgIHN0YXRpYyBjb25zdCBDb2xsZWN0aW9u
VHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlID0gQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRl
c2NlbmRhbnRzOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IENvbGxlY3Rpb25UeXBlVHJhaXRz
PE5vZGVDaGlsZHJlbj4gewotICAgIHN0YXRpYyBjb25zdCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZSB0cmF2ZXJzYWxUeXBlID0gQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seTsK
LX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBDb2xsZWN0aW9uVHlwZVRyYWl0czxUUkNlbGxzPiB7
Ci0gICAgc3RhdGljIGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGUg
PSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5OwotfTsKLQotdGVtcGxhdGU8
Pgotc3RydWN0IENvbGxlY3Rpb25UeXBlVHJhaXRzPFRTZWN0aW9uUm93cz4gewotICAgIHN0YXRp
YyBjb25zdCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlID0gQ29sbGVjdGlv
blRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBD
b2xsZWN0aW9uVHlwZVRyYWl0czxUYWJsZVRCb2RpZXM+IHsKLSAgICBzdGF0aWMgY29uc3QgQ29s
bGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZSA9IENvbGxlY3Rpb25UcmF2ZXJzYWxU
eXBlOjpDaGlsZHJlbk9ubHk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQ29sbGVjdGlvblR5
cGVUcmFpdHM8VGFibGVSb3dzPiB7Ci0gICAgc3RhdGljIGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJz
YWxUeXBlIHRyYXZlcnNhbFR5cGUgPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9y
d2FyZE9ubHk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgQ29sbGVjdGlvblR5cGVUcmFpdHM8
Rm9ybUNvbnRyb2xzPiB7Ci0gICAgc3RhdGljIGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBl
IHRyYXZlcnNhbFR5cGUgPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9u
bHk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xs
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0
aW9uLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjZiY2VkYTAxYmI4NTM5OTgz
ZTRjNTdiZjYzM2UzM2RiOWU0ZmVhZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVj
dGlvbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
IgotCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQu
aCIKLSNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci0KLXRlbXBsYXRlIDxDb2xsZWN0aW9uVHJh
dmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgotYm9vbCBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rp
b248dHJhdmVyc2FsVHlwZT46OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0
Ci17Ci0gICAgc3dpdGNoICh0aGlzLT50eXBlKCkpIHsKLSAgICBjYXNlIE5vZGVDaGlsZHJlbjoK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBEb2NJbWFnZXM6Ci0gICAgICAgIHJldHVy
biBlbGVtZW50Lmhhc1RhZ05hbWUoaW1nVGFnKTsKLSAgICBjYXNlIERvY1NjcmlwdHM6Ci0gICAg
ICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoc2NyaXB0VGFnKTsKLSAgICBjYXNlIERvY0Zv
cm1zOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGZvcm1UYWcpOwotICAgIGNh
c2UgVGFibGVUQm9kaWVzOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKHRib2R5
VGFnKTsKLSAgICBjYXNlIFRSQ2VsbHM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05h
bWUodGRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZSh0aFRhZyk7Ci0gICAgY2FzZSBUU2VjdGlv
blJvd3M6Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUodHJUYWcpOwotICAgIGNh
c2UgU2VsZWN0ZWRPcHRpb25zOgotICAgICAgICByZXR1cm4gaXM8SFRNTE9wdGlvbkVsZW1lbnQ+
KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KS5zZWxlY3Rl
ZCgpOwotICAgIGNhc2UgRGF0YUxpc3RPcHRpb25zOgotICAgICAgICBpZiAoaXM8SFRNTE9wdGlv
bkVsZW1lbnQ+KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0
aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpOwotICAgICAgICAgICAg
aWYgKCFvcHRpb24uaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgIW9wdGlvbi52YWx1ZSgpLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgY2FzZSBNYXBBcmVhczoKLSAgICAgICAgcmV0dXJuIGVsZW1l
bnQuaGFzVGFnTmFtZShhcmVhVGFnKTsKLSAgICBjYXNlIERvY0FwcGxldHM6Ci0gICAgICAgIHJl
dHVybiBpczxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkgfHwgKGlzPEhUTUxPYmplY3RFbGVt
ZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkuY29u
dGFpbnNKYXZhQXBwbGV0KCkpOwotICAgIGNhc2UgRG9jRW1iZWRzOgotICAgICAgICByZXR1cm4g
ZWxlbWVudC5oYXNUYWdOYW1lKGVtYmVkVGFnKTsKLSAgICBjYXNlIERvY0xpbmtzOgotICAgICAg
ICByZXR1cm4gKGVsZW1lbnQuaGFzVGFnTmFtZShhVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUo
YXJlYVRhZykpICYmIGVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShocmVmQXR0cik7Ci0gICAgY2Fz
ZSBEb2NBbmNob3JzOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGFUYWcpICYm
IGVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShuYW1lQXR0cik7Ci0gICAgY2FzZSBEb2NBbGw6Ci0g
ICAgY2FzZSBEb2N1bWVudE5hbWVkSXRlbXM6Ci0gICAgY2FzZSBGb3JtQ29udHJvbHM6Ci0gICAg
Y2FzZSBTZWxlY3RPcHRpb25zOgotICAgIGNhc2UgVGFibGVSb3dzOgotICAgIGNhc2UgV2luZG93
TmFtZWRJdGVtczoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIC8vIFJlbWFpbmluZyBjb2xs
ZWN0aW9uIHR5cGVzIGhhdmUgdGhlaXIgb3duIENhY2hlZEhUTUxDb2xsZWN0aW9uIHN1YmNsYXNz
ZXMgYW5kIGFyZSBub3QgdXNpbmcgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLgotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLXRlbXBsYXRlIGJvb2wg
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNj
ZW5kYW50cz46OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdDsKLXRlbXBsYXRlIGJvb2wg
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGls
ZHJlbk9ubHk+OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Q7Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hl
ZEhUTUxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1M
Q29sbGVjdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjMzMTMzZmRhMGEy
YTNmMmJiY2EzYWU1ZWM5NGUxM2M3NmViOGUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxD
b2xsZWN0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb25faAotI2RlZmluZSBHZW5lcmljQ2Fj
aGVkSFRNTENvbGxlY3Rpb25faAotCi0jaW5jbHVkZSAiQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10ZW1wbGF0ZSA8Q29sbGVjdGlvblRyYXZlcnNhbFR5
cGUgdHJhdmVyc2FsVHlwZT4KLWNsYXNzIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbiBmaW5h
bCA6IHB1YmxpYyBDYWNoZWRIVE1MQ29sbGVjdGlvbjxHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rp
b248dHJhdmVyc2FsVHlwZT4sIHRyYXZlcnNhbFR5cGU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbj4gY3JlYXRlKENvbnRhaW5lck5vZGUmIGJh
c2UsIENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uKGJhc2UsIGNvbGxlY3Rp
b25UeXBlKSk7Ci0gICAgfQotCi0gICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29u
c3Q7Ci0KLXByaXZhdGU6Ci0gICAgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uKENvbnRhaW5l
ck5vZGUmIGJhc2UsIENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlKQotICAgICAgICA6IENh
Y2hlZEhUTUxDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjx0cmF2ZXJzYWxU
eXBlPiwgdHJhdmVyc2FsVHlwZT4oYmFzZSwgY29sbGVjdGlvblR5cGUpCi0gICAgeyB9Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBHZW5lcmljQ2FjaGVkSFRNTENv
bGxlY3Rpb25faAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xs
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCmlu
ZGV4IGRhYjA1MDBmYWQ4OGM2NTRhNWI5MWNiZTVkM2Q5YTc0NjI3OThiMWIuLjAxNjY4NzE0ZWNi
YmJkMGZlYmQxZTUwYzRhYmQ0YjA5MTNiNDI3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFsbENvbGxlY3Rpb24uY3BwCkBAIC0zNiw3ICszNiw3IEBAIFJlZjxIVE1MQWxsQ29sbGVjdGlv
bj4gSFRNTEFsbENvbGxlY3Rpb246OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rp
b25UCiB9CiAKIGlubGluZSBIVE1MQWxsQ29sbGVjdGlvbjo6SFRNTEFsbENvbGxlY3Rpb24oRG9j
dW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlKQotICAgIDogQ2FjaGVkSFRNTENv
bGxlY3Rpb248SFRNTEFsbENvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPERvY0FsbD46
OnRyYXZlcnNhbFR5cGU+KGRvY3VtZW50LCB0eXBlKQorICAgIDogSFRNTENvbGxlY3Rpb24oZG9j
dW1lbnQsIHR5cGUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFsbENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24u
aAppbmRleCBiNjAxMWI0OTYyZGUwYzc3NzNjYjMxYmU5MTY2ZDNlOThiOTA0ZGMwLi41MTQ1MTE3
NGJkMjgzYjIwMWM4OTJlMmVhNGE1YWI5ZmI2MTViZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQWxsQ29sbGVjdGlvbi5oCkBAIC0yNiwxOSArMjYsMTYgQEAKICNpZm5kZWYgSFRNTEFsbENv
bGxlY3Rpb25faAogI2RlZmluZSBIVE1MQWxsQ29sbGVjdGlvbl9oCiAKLSNpbmNsdWRlICJDYWNo
ZWRIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTEFsbENvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMg
Q2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTEFsbENvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJh
aXRzPERvY0FsbD46OnRyYXZlcnNhbFR5cGU+IHsKK2NsYXNzIEhUTUxBbGxDb2xsZWN0aW9uIGZp
bmFsIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhU
TUxBbGxDb2xsZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmLCBDb2xsZWN0aW9uVHlwZSk7CiAKICAg
ICBFbGVtZW50KiBuYW1lZEl0ZW1XaXRoSW5kZXgoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCB1
bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAKLSAgICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24u
Ci0gICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQotCiBwcml2YXRlOgogICAgIEhUTUxBbGxDb2xsZWN0aW9uKERvY3VtZW50JiwgQ29sbGVjdGlv
blR5cGUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKaW5kZXggMTE4
MmNmYmRmYzFmYmEzNmRhNmY1M2ExM2NjNTljMWVhNTg4ZjZhNy4uM2I0YjYyZjcyNmJjNDUwMzhj
YjM5MzExNjA0Zjg1NzUzMGI2ODFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlv
bi5jcHAKQEAgLTIzLDE0ICsyMyw0OCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkhUTUxDb2xsZWN0aW9uLmgiCiAKLSNpbmNsdWRlICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgor
I2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKKyNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJIVE1MTmFtZUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
KyNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVt
ZW50LmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAorc3RhdGljIGJvb2wgc2hvdWxkT25seUlu
Y2x1ZGVEaXJlY3RDaGlsZHJlbihDb2xsZWN0aW9uVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAo
dHlwZSkgeworICAgIGNhc2UgRG9jQWxsOgorICAgIGNhc2UgRG9jQW5jaG9yczoKKyAgICBjYXNl
IERvY0FwcGxldHM6CisgICAgY2FzZSBEb2NFbWJlZHM6CisgICAgY2FzZSBEb2NGb3JtczoKKyAg
ICBjYXNlIERvY0ltYWdlczoKKyAgICBjYXNlIERvY0xpbmtzOgorICAgIGNhc2UgRG9jU2NyaXB0
czoKKyAgICBjYXNlIERvY3VtZW50TmFtZWRJdGVtczoKKyAgICBjYXNlIE1hcEFyZWFzOgorICAg
IGNhc2UgVGFibGVSb3dzOgorICAgIGNhc2UgU2VsZWN0T3B0aW9uczoKKyAgICBjYXNlIFNlbGVj
dGVkT3B0aW9uczoKKyAgICBjYXNlIERhdGFMaXN0T3B0aW9uczoKKyAgICBjYXNlIFdpbmRvd05h
bWVkSXRlbXM6CisgICAgY2FzZSBGb3JtQ29udHJvbHM6CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBjYXNlIE5vZGVDaGlsZHJlbjoKKyAgICBjYXNlIFRSQ2VsbHM6CisgICAgY2FzZSBUU2Vj
dGlvblJvd3M6CisgICAgY2FzZSBUYWJsZVRCb2RpZXM6CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IGlubGluZSBhdXRvIEhUTUxDb2xsZWN0aW9uOjpyb290VHlwZUZyb21Db2xsZWN0aW9uVHlwZShD
b2xsZWN0aW9uVHlwZSB0eXBlKSAtPiBSb290VHlwZQogewogICAgIHN3aXRjaCAodHlwZSkgewpA
QCAtOTcsMjkgKzEzMSwyNjIgQEAgc3RhdGljIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZh
bGlkYXRpb25UeXBlRXhjbHVkaW5nSWRBbmROYW1lQXR0cmlidXRlcyhDb2wKICAgICByZXR1cm4g
RG9Ob3RJbnZhbGlkYXRlT25BdHRyaWJ1dGVDaGFuZ2VzOwogfQogCi1IVE1MQ29sbGVjdGlvbjo6
SFRNTENvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlLCBDb2xsZWN0aW9uVHlwZSB0
eXBlKQorSFRNTENvbGxlY3Rpb246OkhUTUxDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIG93bmVy
Tm9kZSwgQ29sbGVjdGlvblR5cGUgdHlwZSwgRWxlbWVudFRyYXZlcnNhbFR5cGUgdHJhdmVyc2Fs
VHlwZSkKICAgICA6IG1fb3duZXJOb2RlKG93bmVyTm9kZSkKKyAgICAsIG1faW5kZXhDYWNoZSgq
dGhpcykKICAgICAsIG1fY29sbGVjdGlvblR5cGUodHlwZSkKICAgICAsIG1faW52YWxpZGF0aW9u
VHlwZShpbnZhbGlkYXRpb25UeXBlRXhjbHVkaW5nSWRBbmROYW1lQXR0cmlidXRlcyh0eXBlKSkK
ICAgICAsIG1fcm9vdFR5cGUocm9vdFR5cGVGcm9tQ29sbGVjdGlvblR5cGUodHlwZSkpCisgICAg
LCBtX3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4oc2hvdWxkT25seUluY2x1ZGVEaXJl
Y3RDaGlsZHJlbih0eXBlKSkKKyAgICAsIG1fdXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2Fs
KHRyYXZlcnNhbFR5cGUgPT0gQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwpCiB7CiAgICAgQVNT
RVJUKG1fcm9vdFR5cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJvb3RUeXBlRnJvbUNvbGxl
Y3Rpb25UeXBlKHR5cGUpKSk7CiAgICAgQVNTRVJUKG1faW52YWxpZGF0aW9uVHlwZSA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaW52YWxpZGF0aW9uVHlwZUV4Y2x1ZGluZ0lkQW5kTmFtZUF0dHJp
YnV0ZXModHlwZSkpKTsKICAgICBBU1NFUlQobV9jb2xsZWN0aW9uVHlwZSA9PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4odHlwZSkpOwogfQogCitSZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxDb2xsZWN0
aW9uOjpjcmVhdGUoQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUgdHlwZSkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1MQ29sbGVjdGlvbihiYXNlLCB0eXBlKSk7Cit9
CisKIEhUTUxDb2xsZWN0aW9uOjp+SFRNTENvbGxlY3Rpb24oKQogeworICAgIGlmIChtX2luZGV4
Q2FjaGUuaGFzVmFsaWRDYWNoZSgqdGhpcykpCisgICAgICAgIGRvY3VtZW50KCkudW5yZWdpc3Rl
ckNvbGxlY3Rpb24oKnRoaXMpOwogICAgIGlmIChoYXNOYW1lZEVsZW1lbnRDYWNoZSgpKQogICAg
ICAgICBkb2N1bWVudCgpLmNvbGxlY3Rpb25XaWxsQ2xlYXJJZE5hbWVNYXAoKnRoaXMpOwotCiAg
ICAgLy8gSFRNTE5hbWVDb2xsZWN0aW9uIHJlbW92ZXMgY2FjaGUgYnkgaXRzZWxmLgogICAgIGlm
ICh0eXBlKCkgIT0gV2luZG93TmFtZWRJdGVtcyAmJiB0eXBlKCkgIT0gRG9jdW1lbnROYW1lZEl0
ZW1zKQogICAgICAgICBvd25lck5vZGUoKS5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVkQ29sbGVj
dGlvbih0aGlzKTsKIH0KIAotdm9pZCBIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlKERv
Y3VtZW50JiBkb2N1bWVudCkKK0NvbnRhaW5lck5vZGUmIEhUTUxDb2xsZWN0aW9uOjpyb290Tm9k
ZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzUm9vdGVkQXREb2N1bWVudCgpICYmIG93bmVyTm9kZSgp
LmluRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIG93bmVyTm9kZSgpLmRvY3VtZW50KCk7CisK
KyAgICByZXR1cm4gb3duZXJOb2RlKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc01hdGNo
aW5nSFRNTEVsZW1lbnQoY29uc3QgSFRNTENvbGxlY3Rpb24mIGNvbGxlY3Rpb24sIEhUTUxFbGVt
ZW50JiBlbGVtZW50KQogeworICAgIHN3aXRjaCAoY29sbGVjdGlvbi50eXBlKCkpIHsKKyAgICBj
YXNlIERvY0ltYWdlczoKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShpbWdUYWcp
OworICAgIGNhc2UgRG9jU2NyaXB0czoKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFt
ZShzY3JpcHRUYWcpOworICAgIGNhc2UgRG9jRm9ybXM6CisgICAgICAgIHJldHVybiBlbGVtZW50
Lmhhc1RhZ05hbWUoZm9ybVRhZyk7CisgICAgY2FzZSBUYWJsZVRCb2RpZXM6CisgICAgICAgIHJl
dHVybiBlbGVtZW50Lmhhc1RhZ05hbWUodGJvZHlUYWcpOworICAgIGNhc2UgVFJDZWxsczoKKyAg
ICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZSh0ZFRhZykgfHwgZWxlbWVudC5oYXNUYWdO
YW1lKHRoVGFnKTsKKyAgICBjYXNlIFRTZWN0aW9uUm93czoKKyAgICAgICAgcmV0dXJuIGVsZW1l
bnQuaGFzVGFnTmFtZSh0clRhZyk7CisgICAgY2FzZSBTZWxlY3RPcHRpb25zOgorICAgICAgICBy
ZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKG9wdGlvblRhZyk7CisgICAgY2FzZSBTZWxlY3RlZE9w
dGlvbnM6CisgICAgICAgIHJldHVybiBpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkgJiYg
ZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpLnNlbGVjdGVkKCk7CisgICAgY2Fz
ZSBEYXRhTGlzdE9wdGlvbnM6CisgICAgICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxl
bWVudCkpIHsKKyAgICAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50JiBvcHRpb24gPSBkb3duY2Fz
dDxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCk7CisgICAgICAgICAgICBpZiAoIW9wdGlvbi5p
c0Rpc2FibGVkRm9ybUNvbnRyb2woKSAmJiAhb3B0aW9uLnZhbHVlKCkuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBjYXNlIE1hcEFyZWFzOgorICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1l
KGFyZWFUYWcpOworICAgIGNhc2UgRG9jQXBwbGV0czoKKyAgICAgICAgcmV0dXJuIGlzPEhUTUxB
cHBsZXRFbGVtZW50PihlbGVtZW50KSB8fCAoaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQp
ICYmIGRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KS5jb250YWluc0phdmFBcHBs
ZXQoKSk7CisgICAgY2FzZSBEb2NFbWJlZHM6CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1Rh
Z05hbWUoZW1iZWRUYWcpOworICAgIGNhc2UgRG9jTGlua3M6CisgICAgICAgIHJldHVybiAoZWxl
bWVudC5oYXNUYWdOYW1lKGFUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShhcmVhVGFnKSkgJiYg
ZWxlbWVudC5mYXN0SGFzQXR0cmlidXRlKGhyZWZBdHRyKTsKKyAgICBjYXNlIERvY0FuY2hvcnM6
CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoYVRhZykgJiYgZWxlbWVudC5mYXN0
SGFzQXR0cmlidXRlKG5hbWVBdHRyKTsKKyAgICBjYXNlIERvY3VtZW50TmFtZWRJdGVtczoKKyAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50TmFtZUNvbGxlY3Rpb24+KGNvbGxlY3Rpb24p
LmVsZW1lbnRNYXRjaGVzKGVsZW1lbnQpOworICAgIGNhc2UgRG9jQWxsOgorICAgIGNhc2UgTm9k
ZUNoaWxkcmVuOgorICAgIGNhc2UgV2luZG93TmFtZWRJdGVtczoKKyAgICBjYXNlIEZvcm1Db250
cm9sczoKKyAgICBjYXNlIFRhYmxlUm93czoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGlubGlu
ZSBib29sIGlzTWF0Y2hpbmdFbGVtZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9uJiBjb2xsZWN0aW9u
LCBFbGVtZW50JiBlbGVtZW50KQoreworICAgIC8vIENvbGxlY3Rpb24gdHlwZXMgdGhhdCBkZWFs
IHdpdGggYW55IHR5cGUgb2YgRWxlbWVudHMsIG5vdCBqdXN0IEhUTUxFbGVtZW50cy4KKyAgICBz
d2l0Y2ggKGNvbGxlY3Rpb24udHlwZSgpKSB7CisgICAgY2FzZSBEb2NBbGw6CisgICAgY2FzZSBO
b2RlQ2hpbGRyZW46CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgV2luZG93TmFtZWRJ
dGVtczoKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdpbmRvd05hbWVDb2xsZWN0aW9uPihjb2xs
ZWN0aW9uKS5lbGVtZW50TWF0Y2hlcyhlbGVtZW50KTsKKyAgICBkZWZhdWx0OgorICAgICAgICAv
LyBDb2xsZWN0aW9uIHR5cGVzIHRoYXQgb25seSBkZWFsIHdpdGggSFRNTEVsZW1lbnRzLgorICAg
ICAgICByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpICYmIGlzTWF0Y2hpbmdIVE1MRWxl
bWVudChjb2xsZWN0aW9uLCBkb3duY2FzdDxIVE1MRWxlbWVudD4oZWxlbWVudCkpOworICAgIH0K
K30KKworc3RhdGljIGlubGluZSBFbGVtZW50KiBwcmV2aW91c0VsZW1lbnQoQ29udGFpbmVyTm9k
ZSYgYmFzZSwgRWxlbWVudCYgZWxlbWVudCwgYm9vbCBvbmx5SW5jbHVkZURpcmVjdENoaWxkcmVu
KQoreworICAgIHJldHVybiBvbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuID8gRWxlbWVudFRyYXZl
cnNhbDo6cHJldmlvdXNTaWJsaW5nKGVsZW1lbnQpIDogRWxlbWVudFRyYXZlcnNhbDo6cHJldmlv
dXMoZWxlbWVudCwgJmJhc2UpOworfQorCitBTFdBWVNfSU5MSU5FIEVsZW1lbnQqIEhUTUxDb2xs
ZWN0aW9uOjppdGVyYXRlRm9yUHJldmlvdXNFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0
Cit7CisgICAgYm9vbCBvbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuID0gbV9zaG91bGRPbmx5SW5j
bHVkZURpcmVjdENoaWxkcmVuOworICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlID0gdGhpcy0+
cm9vdE5vZGUoKTsKKyAgICBmb3IgKDsgZWxlbWVudDsgZWxlbWVudCA9IHByZXZpb3VzRWxlbWVu
dChyb290Tm9kZSwgKmVsZW1lbnQsIG9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4pKSB7CisgICAg
ICAgIGlmIChpc01hdGNoaW5nRWxlbWVudCgqdGhpcywgKmVsZW1lbnQpKQorICAgICAgICAgICAg
cmV0dXJuIGVsZW1lbnQ7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMg
aW5saW5lIEVsZW1lbnQqIGZpcnN0TWF0Y2hpbmdFbGVtZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9u
JiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290KQoreworICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbihyb290KTsKKyAgICB3aGlsZSAoZWxl
bWVudCAmJiAhaXNNYXRjaGluZ0VsZW1lbnQoY29sbGVjdGlvbiwgKmVsZW1lbnQpKQorICAgICAg
ICBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dCgqZWxlbWVudCwgJnJvb3QpOworICAg
IHJldHVybiBlbGVtZW50OworfQorCitzdGF0aWMgaW5saW5lIEVsZW1lbnQqIG5leHRNYXRjaGlu
Z0VsZW1lbnQoY29uc3QgSFRNTENvbGxlY3Rpb24mIGNvbGxlY3Rpb24sIEVsZW1lbnQmIGVsZW1l
bnQsIENvbnRhaW5lck5vZGUmIHJvb3QpCit7CisgICAgRWxlbWVudCogbmV4dCA9ICZlbGVtZW50
OworICAgIGRvIHsKKyAgICAgICAgbmV4dCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoKm5leHQs
ICZyb290KTsKKyAgICB9IHdoaWxlIChuZXh0ICYmICFpc01hdGNoaW5nRWxlbWVudChjb2xsZWN0
aW9uLCAqbmV4dCkpOworICAgIHJldHVybiBuZXh0OworfQorCit1bnNpZ25lZCBIVE1MQ29sbGVj
dGlvbjo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVDb3Vu
dCgqdGhpcyk7Cit9CisKK0VsZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjppdGVtKHVuc2lnbmVkIG9m
ZnNldCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVBdCgqdGhpcywgb2Zm
c2V0KTsKK30KKworc3RhdGljIGlubGluZSBib29sIG5hbWVTaG91bGRCZVZpc2libGVJbkRvY3Vt
ZW50QWxsKEhUTUxFbGVtZW50JiBlbGVtZW50KQoreworICAgIC8vIFRoZSBkb2N1bWVudC5hbGwg
Y29sbGVjdGlvbiByZXR1cm5zIG9ubHkgY2VydGFpbiB0eXBlcyBvZiBlbGVtZW50cyBieSBuYW1l
LAorICAgIC8vIGFsdGhvdWdoIGl0IHJldHVybnMgYW55IHR5cGUgb2YgZWxlbWVudCBieSBpZC4K
KyAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGFwcGxldFRhZykKKyAgICAgICAgfHwgZWxl
bWVudC5oYXNUYWdOYW1lKGVtYmVkVGFnKQorICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUo
Zm9ybVRhZykKKyAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGltZ1RhZykKKyAgICAgICAg
fHwgZWxlbWVudC5oYXNUYWdOYW1lKGlucHV0VGFnKQorICAgICAgICB8fCBlbGVtZW50Lmhhc1Rh
Z05hbWUob2JqZWN0VGFnKQorICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoc2VsZWN0VGFn
KTsKK30KKworc3RhdGljIGlubGluZSBib29sIG5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50
QWxsKEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGlzPEhUTUxFbGVtZW50PihlbGVt
ZW50KSAmJiBuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVudEFsbChkb3duY2FzdDxIVE1MRWxl
bWVudD4oZWxlbWVudCkpOworfQorCitzdGF0aWMgaW5saW5lIEVsZW1lbnQqIGZpcnN0TWF0Y2hp
bmdDaGlsZEVsZW1lbnQoY29uc3QgSFRNTENvbGxlY3Rpb24mIG5vZGVMaXN0LCBDb250YWluZXJO
b2RlJiByb290KQoreworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpm
aXJzdFdpdGhpbihyb290KTsKKyAgICB3aGlsZSAoZWxlbWVudCAmJiAhaXNNYXRjaGluZ0VsZW1l
bnQobm9kZUxpc3QsICplbGVtZW50KSkKKyAgICAgICAgZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJz
YWw6Om5leHRTaWJsaW5nKCplbGVtZW50KTsKKyAgICByZXR1cm4gZWxlbWVudDsKK30KKworc3Rh
dGljIGlubGluZSBFbGVtZW50KiBuZXh0TWF0Y2hpbmdTaWJsaW5nRWxlbWVudChjb25zdCBIVE1M
Q29sbGVjdGlvbiYgbm9kZUxpc3QsIEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgRWxlbWVudCog
bmV4dCA9ICZlbGVtZW50OworICAgIGRvIHsKKyAgICAgICAgbmV4dCA9IEVsZW1lbnRUcmF2ZXJz
YWw6Om5leHRTaWJsaW5nKCpuZXh0KTsKKyAgICB9IHdoaWxlIChuZXh0ICYmICFpc01hdGNoaW5n
RWxlbWVudChub2RlTGlzdCwgKm5leHQpKTsKKyAgICByZXR1cm4gbmV4dDsKK30KKworaW5saW5l
IGJvb2wgSFRNTENvbGxlY3Rpb246OnVzZXNDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fdXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsOworfQor
CitpbmxpbmUgRWxlbWVudCogSFRNTENvbGxlY3Rpb246OmZpcnN0RWxlbWVudChDb250YWluZXJO
b2RlJiByb290KSBjb25zdAoreworICAgIGlmICh1c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJz
YWwoKSkKKyAgICAgICAgcmV0dXJuIGN1c3RvbUVsZW1lbnRBZnRlcihudWxscHRyKTsKKyAgICBp
ZiAobV9zaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKQorICAgICAgICByZXR1cm4gZmly
c3RNYXRjaGluZ0NoaWxkRWxlbWVudCgqdGhpcywgcm9vdCk7CisgICAgcmV0dXJuIGZpcnN0TWF0
Y2hpbmdFbGVtZW50KCp0aGlzLCByb290KTsKK30KKworaW5saW5lIEVsZW1lbnQqIEhUTUxDb2xs
ZWN0aW9uOjp0cmF2ZXJzZUZvcndhcmQoRWxlbWVudCYgY3VycmVudCwgdW5zaWduZWQgY291bnQs
IHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCwgQ29udGFpbmVyTm9kZSYgcm9vdCkgY29uc3QKK3sK
KyAgICBFbGVtZW50KiBlbGVtZW50ID0gJmN1cnJlbnQ7CisgICAgaWYgKHVzZXNDdXN0b21Gb3J3
YXJkT25seVRyYXZlcnNhbCgpKSB7CisgICAgICAgIGZvciAodHJhdmVyc2VkQ291bnQgPSAwOyB0
cmF2ZXJzZWRDb3VudCA8IGNvdW50OyArK3RyYXZlcnNlZENvdW50KSB7CisgICAgICAgICAgICBl
bGVtZW50ID0gY3VzdG9tRWxlbWVudEFmdGVyKGVsZW1lbnQpOworICAgICAgICAgICAgaWYgKCFl
bGVtZW50KQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAg
fSBlbHNlIGlmIChtX3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4pIHsKKyAgICAgICAg
Zm9yICh0cmF2ZXJzZWRDb3VudCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVy
c2VkQ291bnQpIHsKKyAgICAgICAgICAgIGVsZW1lbnQgPSBuZXh0TWF0Y2hpbmdTaWJsaW5nRWxl
bWVudCgqdGhpcywgKmVsZW1lbnQpOworICAgICAgICAgICAgaWYgKCFlbGVtZW50KQorICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJh
dmVyc2VkQ291bnQpIHsKKyAgICAgICAgICAgIGVsZW1lbnQgPSBuZXh0TWF0Y2hpbmdFbGVtZW50
KCp0aGlzLCAqZWxlbWVudCwgcm9vdCk7CisgICAgICAgICAgICBpZiAoIWVsZW1lbnQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IGVsZW1lbnQ7Cit9CisKK0VsZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjpjb2xsZWN0aW9uQmVnaW4o
KSBjb25zdAoreworICAgIHJldHVybiBmaXJzdEVsZW1lbnQocm9vdE5vZGUoKSk7Cit9CisKK0Vs
ZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjpjb2xsZWN0aW9uTGFzdCgpIGNvbnN0Cit7CisgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGJlIG9wdGltaXplZCBzaW1pbGFybHkgdG8gdGhlIGZvcndhcmQg
Y2FzZS4KKyAgICBhdXRvJiByb290ID0gcm9vdE5vZGUoKTsKKyAgICBFbGVtZW50KiBsYXN0ID0g
bV9zaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuID8gRWxlbWVudFRyYXZlcnNhbDo6bGFz
dENoaWxkKHJvb3QpIDogRWxlbWVudFRyYXZlcnNhbDo6bGFzdFdpdGhpbihyb290KTsKKyAgICBy
ZXR1cm4gaXRlcmF0ZUZvclByZXZpb3VzRWxlbWVudChsYXN0KTsKK30KKwordm9pZCBIVE1MQ29s
bGVjdGlvbjo6Y29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChFbGVtZW50KiYgY3VycmVudCwgdW5z
aWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3QKK3sKKyAgICBjdXJy
ZW50ID0gdHJhdmVyc2VGb3J3YXJkKCpjdXJyZW50LCBjb3VudCwgdHJhdmVyc2VkQ291bnQsIHJv
b3ROb2RlKCkpOworfQorCit2b2lkIEhUTUxDb2xsZWN0aW9uOjpjb2xsZWN0aW9uVHJhdmVyc2VC
YWNrd2FyZChFbGVtZW50KiYgY3VycmVudCwgdW5zaWduZWQgY291bnQpIGNvbnN0Cit7CisgICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG9wdGltaXplZCBzaW1pbGFybHkgdG8gdGhlIGZvcndh
cmQgY2FzZS4KKyAgICBpZiAobV9zaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKSB7Cisg
ICAgICAgIGZvciAoOyBjb3VudCAmJiBjdXJyZW50OyAtLWNvdW50KQorICAgICAgICAgICAgY3Vy
cmVudCA9IGl0ZXJhdGVGb3JQcmV2aW91c0VsZW1lbnQoRWxlbWVudFRyYXZlcnNhbDo6cHJldmlv
dXNTaWJsaW5nKCpjdXJyZW50KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byYg
cm9vdCA9IHJvb3ROb2RlKCk7CisgICAgZm9yICg7IGNvdW50ICYmIGN1cnJlbnQ7IC0tY291bnQp
CisgICAgICAgIGN1cnJlbnQgPSBpdGVyYXRlRm9yUHJldmlvdXNFbGVtZW50KEVsZW1lbnRUcmF2
ZXJzYWw6OnByZXZpb3VzKCpjdXJyZW50LCAmcm9vdCkpOworfQorCit2b2lkIEhUTUxDb2xsZWN0
aW9uOjppbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAoreworICAgIGlm
IChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZSgqdGhpcykpIHsKKyAgICAgICAgZG9jdW1lbnQu
dW5yZWdpc3RlckNvbGxlY3Rpb24oY29uc3RfY2FzdDxIVE1MQ29sbGVjdGlvbiY+KCp0aGlzKSk7
CisgICAgICAgIG1faW5kZXhDYWNoZS5pbnZhbGlkYXRlKCp0aGlzKTsKKyAgICB9CiAgICAgaWYg
KGhhc05hbWVkRWxlbWVudENhY2hlKCkpCiAgICAgICAgIGludmFsaWRhdGVOYW1lZEVsZW1lbnRD
YWNoZShkb2N1bWVudCk7CiB9CkBAIC0xMzEsOCArMzk4LDQwIEBAIHZvaWQgSFRNTENvbGxlY3Rp
b246OmludmFsaWRhdGVOYW1lZEVsZW1lbnRDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0
CiAgICAgbV9uYW1lZEVsZW1lbnRDYWNoZSA9IG51bGxwdHI7CiB9CiAKLUVsZW1lbnQqIEhUTUxD
b2xsZWN0aW9uOjpuYW1lZEl0ZW1TbG93KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QK
K0VsZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lKSBjb25zdAogeworICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vd29ya3Nob3Av
YXV0aG9yL2RodG1sL3JlZmVyZW5jZS9tZXRob2RzL25hbWVkaXRlbS5hc3AKKyAgICAvLyBUaGlz
IG1ldGhvZCBmaXJzdCBzZWFyY2hlcyBmb3IgYW4gb2JqZWN0IHdpdGggYSBtYXRjaGluZyBpZAor
ICAgIC8vIGF0dHJpYnV0ZS4gSWYgYSBtYXRjaCBpcyBub3QgZm91bmQsIHRoZSBtZXRob2QgdGhl
biBzZWFyY2hlcyBmb3IgYW4KKyAgICAvLyBvYmplY3Qgd2l0aCBhIG1hdGNoaW5nIG5hbWUgYXR0
cmlidXRlLCBidXQgb25seSBvbiB0aG9zZSBlbGVtZW50cworICAgIC8vIHRoYXQgYXJlIGFsbG93
ZWQgYSBuYW1lIGF0dHJpYnV0ZS4KKworICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBDb250YWluZXJOb2RlJiByb290ID0gcm9vdE5vZGUoKTsK
KyAgICBpZiAoIXVzZXNDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCgpICYmIHJvb3QuaXNJblRy
ZWVTY29wZSgpKSB7CisgICAgICAgIEVsZW1lbnQqIGNhbmRpZGF0ZSA9IG51bGxwdHI7CisKKyAg
ICAgICAgVHJlZVNjb3BlJiB0cmVlU2NvcGUgPSByb290LnRyZWVTY29wZSgpOworICAgICAgICBp
ZiAodHJlZVNjb3BlLmhhc0VsZW1lbnRXaXRoSWQoKm5hbWUuaW1wbCgpKSkgeworICAgICAgICAg
ICAgaWYgKCF0cmVlU2NvcGUuY29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aElkKG5hbWUpKQor
ICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IHRyZWVTY29wZS5nZXRFbGVtZW50QnlJZChuYW1l
KTsKKyAgICAgICAgfSBlbHNlIGlmICh0cmVlU2NvcGUuaGFzRWxlbWVudFdpdGhOYW1lKCpuYW1l
LmltcGwoKSkpIHsKKyAgICAgICAgICAgIGlmICghdHJlZVNjb3BlLmNvbnRhaW5zTXVsdGlwbGVF
bGVtZW50c1dpdGhOYW1lKG5hbWUpKSB7CisgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gdHJl
ZVNjb3BlLmdldEVsZW1lbnRCeU5hbWUobmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKGNhbmRp
ZGF0ZSAmJiB0eXBlKCkgPT0gRG9jQWxsICYmICFuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVu
dEFsbCgqY2FuZGlkYXRlKSkKKyAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gbnVsbHB0
cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgICAgICBpZiAoY2FuZGlkYXRlICYmIGlzTWF0Y2hpbmdFbGVtZW50KCp0aGlz
LCAqY2FuZGlkYXRlKSkgeworICAgICAgICAgICAgaWYgKG1fc2hvdWxkT25seUluY2x1ZGVEaXJl
Y3RDaGlsZHJlbiA/IGNhbmRpZGF0ZS0+cGFyZW50Tm9kZSgpID09ICZyb290IDogY2FuZGlkYXRl
LT5pc0Rlc2NlbmRhbnRPZigmcm9vdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0
ZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8vIFRoZSBwYXRob2xvZ2ljYWwgY2FzZS4gV2Ug
bmVlZCB0byB3YWxrIHRoZSBlbnRpcmUgc3VidHJlZS4KICAgICB1cGRhdGVOYW1lZEVsZW1lbnRD
YWNoZSgpOwogICAgIEFTU0VSVChtX25hbWVkRWxlbWVudENhY2hlKTsKQEAgLTE1Nyw5ICs0NTYs
OSBAQCB2b2lkIEhUTUxDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0
CiAKICAgICBhdXRvIGNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVt
ZW50Q2FjaGU+KCk7CiAKLSAgICB1bnNpZ25lZCBzaXplID0gbGVuZ3RoKCk7CisgICAgdW5zaWdu
ZWQgc2l6ZSA9IG1faW5kZXhDYWNoZS5ub2RlQ291bnQoKnRoaXMpOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgRWxlbWVudCYgZWxlbWVudCA9ICpp
dGVtKGkpOworICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0gKm1faW5kZXhDYWNoZS5ub2RlQXQo
KnRoaXMsIGkpOwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gZWxlbWVudC5nZXRJ
ZEF0dHJpYnV0ZSgpOwogICAgICAgICBpZiAoIWlkLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNh
Y2hlLT5hcHBlbmRUb0lkQ2FjaGUoaWQsIGVsZW1lbnQpOwpAQCAtMjE0LDQgKzUxMywxMCBAQCBQ
YXNzUmVmUHRyPE5vZGVMaXN0PiBIVE1MQ29sbGVjdGlvbjo6dGFncyhjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgcmV0dXJuIG93bmVyTm9kZSgpLmdldEVsZW1lbnRzQnlUYWdOYW1lKG5hbWUpOwog
fQogCitFbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6Y3VzdG9tRWxlbWVudEFmdGVyKEVsZW1lbnQq
KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRy
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0
aW9uLmgKaW5kZXggYjQyMDYxYTEyMWRmZjQwODY2MzQ0MmJjNWMxZWRkNjQ3M2Y1Yzg4Zi4uNDcx
NGU5MDhkZGI1ZDliODg5YzNiNmNlNjU3YTE0MGQ3YTNjNTllMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENvbGxlY3Rpb24uaApAQCAtNjAsMzkgKzYwLDU3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEhU
TUxDb2xsZWN0aW9uIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8
SFRNTENvbGxlY3Rpb24+IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEhUTUxDb2xsZWN0aW9u
PiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUpOwogICAgIHZpcnR1
YWwgfkhUTUxDb2xsZWN0aW9uKCk7CiAKICAgICAvLyBET00gQVBJCi0gICAgdmlydHVhbCB1bnNp
Z25lZCBsZW5ndGgoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBFbGVtZW50KiBpdGVtKHVuc2ln
bmVkIG9mZnNldCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgRWxlbWVudCogbmFtZWRJdGVtKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QgPSAwOworICAgIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0OworICAgIEVsZW1lbnQqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdDsKKyAgICB2
aXJ0dWFsIEVsZW1lbnQqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0
OwogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IHRhZ3MoY29uc3QgU3RyaW5nJik7CiAKICAgICAv
LyBOb24tRE9NIEFQSQogICAgIGJvb2wgaGFzTmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSkgY29uc3Q7CiAgICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRJdGVtcyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwotICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3Qo
KSBjb25zdDsKKyAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0OwogCiAgICAgYm9vbCBpc1Jv
b3RlZEF0RG9jdW1lbnQoKSBjb25zdDsKICAgICBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52
YWxpZGF0aW9uVHlwZSgpIGNvbnN0OwogICAgIENvbGxlY3Rpb25UeXBlIHR5cGUoKSBjb25zdDsK
ICAgICBDb250YWluZXJOb2RlJiBvd25lck5vZGUoKSBjb25zdDsKLSAgICBDb250YWluZXJOb2Rl
JiByb290Tm9kZSgpIGNvbnN0OwotICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlKGNvbnN0IFF1YWxp
ZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2Fj
aGUoRG9jdW1lbnQmKTsKKyAgICB2b2lkIGludmFsaWRhdGVDYWNoZShjb25zdCBRdWFsaWZpZWRO
YW1lKiBhdHRyaWJ1dGVOYW1lKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNh
Y2hlKERvY3VtZW50JikgY29uc3Q7CisKKyAgICAvLyBGb3IgQ29sbGVjdGlvbkluZGV4Q2FjaGU7
IGRvIG5vdCB1c2UgZWxzZXdoZXJlLgorICAgIEVsZW1lbnQqIGNvbGxlY3Rpb25CZWdpbigpIGNv
bnN0OworICAgIEVsZW1lbnQqIGNvbGxlY3Rpb25MYXN0KCkgY29uc3Q7CisgICAgRWxlbWVudCog
Y29sbGVjdGlvbkVuZCgpIGNvbnN0OworICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2Fy
ZChFbGVtZW50KiYsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNv
bnN0OworICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQoRWxlbWVudComLCB1bnNp
Z25lZCBjb3VudCkgY29uc3Q7CisgICAgYm9vbCBjb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNrd2Fy
ZCgpIGNvbnN0OworICAgIHZvaWQgd2lsbFZhbGlkYXRlSW5kZXhDYWNoZSgpIGNvbnN0OwogCiAg
ICAgYm9vbCBoYXNOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAg
SFRNTENvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUpOworICAg
IGVudW0gRWxlbWVudFRyYXZlcnNhbFR5cGUgeyBOb3JtYWxUcmF2ZXJzYWwsIEN1c3RvbUZvcndh
cmRPbmx5VHJhdmVyc2FsIH07CisgICAgSFRNTENvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgYmFz
ZSwgQ29sbGVjdGlvblR5cGUsIEVsZW1lbnRUcmF2ZXJzYWxUeXBlID0gTm9ybWFsVHJhdmVyc2Fs
KTsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0Owot
ICAgIEVsZW1lbnQqIG5hbWVkSXRlbVNsb3coY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25z
dDsKIAogICAgIHZvaWQgc2V0TmFtZWRJdGVtQ2FjaGUoc3RkOjp1bmlxdWVfcHRyPENvbGxlY3Rp
b25OYW1lZEVsZW1lbnRDYWNoZT4pIGNvbnN0OwogICAgIGNvbnN0IENvbGxlY3Rpb25OYW1lZEVs
ZW1lbnRDYWNoZSYgbmFtZWRJdGVtQ2FjaGVzKCkgY29uc3Q7CiAKK3ByaXZhdGU6CiAgICAgRG9j
dW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7CisgICAgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUoKSBj
b25zdDsKKyAgICBib29sIHVzZXNDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCgpIGNvbnN0Owor
CisgICAgRWxlbWVudCogaXRlcmF0ZUZvclByZXZpb3VzRWxlbWVudChFbGVtZW50KikgY29uc3Q7
CisgICAgRWxlbWVudCogZmlyc3RFbGVtZW50KENvbnRhaW5lck5vZGUmIHJvb3QpIGNvbnN0Owor
ICAgIEVsZW1lbnQqIHRyYXZlcnNlRm9yd2FyZChFbGVtZW50JiwgdW5zaWduZWQgY291bnQsIHVu
c2lnbmVkJiB0cmF2ZXJzZWRDb3VudCwgQ29udGFpbmVyTm9kZSYgcm9vdCkgY29uc3Q7CisKKyAg
ICB2aXJ0dWFsIEVsZW1lbnQqIGN1c3RvbUVsZW1lbnRBZnRlcihFbGVtZW50KikgY29uc3Q7CiAK
ICAgICB2b2lkIGludmFsaWRhdGVOYW1lZEVsZW1lbnRDYWNoZShEb2N1bWVudCYpIGNvbnN0Owog
CkBAIC0xMDEsMjEgKzExOSwxNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBSZWY8Q29udGFpbmVyTm9k
ZT4gbV9vd25lck5vZGU7CiAKKyAgICBtdXRhYmxlIENvbGxlY3Rpb25JbmRleENhY2hlPEhUTUxD
b2xsZWN0aW9uLCBFbGVtZW50Kj4gbV9pbmRleENhY2hlOwogICAgIG11dGFibGUgc3RkOjp1bmlx
dWVfcHRyPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4gbV9uYW1lZEVsZW1lbnRDYWNoZTsK
IAogICAgIGNvbnN0IHVuc2lnbmVkIG1fY29sbGVjdGlvblR5cGUgOiA1OwogICAgIGNvbnN0IHVu
c2lnbmVkIG1faW52YWxpZGF0aW9uVHlwZSA6IDQ7CiAgICAgY29uc3QgdW5zaWduZWQgbV9yb290
VHlwZSA6IDE7CisgICAgY29uc3QgdW5zaWduZWQgbV9zaG91bGRPbmx5SW5jbHVkZURpcmVjdENo
aWxkcmVuIDogMTsKKyAgICBjb25zdCB1bnNpZ25lZCBtX3VzZXNDdXN0b21Gb3J3YXJkT25seVRy
YXZlcnNhbCA6IDE7CiB9OwogCi1pbmxpbmUgQ29udGFpbmVyTm9kZSYgSFRNTENvbGxlY3Rpb246
OnJvb3ROb2RlKCkgY29uc3QKLXsKLSAgICBpZiAoaXNSb290ZWRBdERvY3VtZW50KCkgJiYgb3du
ZXJOb2RlKCkuaW5Eb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gb3duZXJOb2RlKCkuZG9jdW1l
bnQoKTsKLQotICAgIHJldHVybiBvd25lck5vZGUoKTsKLX0KLQogaW5saW5lIGNvbnN0IFZlY3Rv
cjxFbGVtZW50Kj4qIENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZTo6ZmluZEVsZW1lbnRzV2l0
aElkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZpbmQobV9p
ZE1hcCwgaWQpOwpAQCAtMTY0LDcgKzE3Nyw3IEBAIGlubGluZSB2b2lkIENvbGxlY3Rpb25OYW1l
ZEVsZW1lbnRDYWNoZTo6YXBwZW5kKFN0cmluZ1RvRWxlbWVudHNNYXAmIG1hcCwgY29uc3QKIAog
aW5saW5lIHNpemVfdCBIVE1MQ29sbGVjdGlvbjo6bWVtb3J5Q29zdCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fbmFtZWRFbGVtZW50Q2FjaGUgPyBtX25hbWVkRWxlbWVudENhY2hlLT5tZW1vcnlD
b3N0KCkgOiAwOworICAgIHJldHVybiBtX2luZGV4Q2FjaGUubWVtb3J5Q29zdCgpICsgKG1fbmFt
ZWRFbGVtZW50Q2FjaGUgPyBtX25hbWVkRWxlbWVudENhY2hlLT5tZW1vcnlDb3N0KCkgOiAwKTsK
IH0KIAogaW5saW5lIGJvb2wgSFRNTENvbGxlY3Rpb246OmlzUm9vdGVkQXREb2N1bWVudCgpIGNv
bnN0CkBAIC0xOTIsNyArMjA1LDcgQEAgaW5saW5lIERvY3VtZW50JiBIVE1MQ29sbGVjdGlvbjo6
ZG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX293bmVyTm9kZS0+ZG9jdW1lbnQoKTsKIH0K
IAotaW5saW5lIHZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZShjb25zdCBRdWFs
aWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKQoraW5saW5lIHZvaWQgSFRNTENvbGxlY3Rpb246Omlu
dmFsaWRhdGVDYWNoZShjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKSBjb25zdAog
ewogICAgIGlmICghYXR0cmlidXRlTmFtZSB8fCBzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmli
dXRlQ2hhbmdlKGludmFsaWRhdGlvblR5cGUoKSwgKmF0dHJpYnV0ZU5hbWUpKQogICAgICAgICBp
bnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQoKSk7CkBAIC0yMDAsNiArMjEzLDIxIEBAIGlubGluZSB2
b2lkIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoY29uc3QgUXVhbGlmaWVkTmFtZSog
YXR0cmlidXRlTmFtZSkKICAgICAgICAgaW52YWxpZGF0ZU5hbWVkRWxlbWVudENhY2hlKGRvY3Vt
ZW50KCkpOwogfQogCitpbmxpbmUgRWxlbWVudCogSFRNTENvbGxlY3Rpb246OmNvbGxlY3Rpb25F
bmQoKSBjb25zdAoreworICAgIHJldHVybiBudWxscHRyOworfQorCitpbmxpbmUgYm9vbCBIVE1M
Q29sbGVjdGlvbjo6Y29sbGVjdGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSBjb25zdAoreworICAg
IHJldHVybiAhbV91c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWw7Cit9CisKK2lubGluZSB2
b2lkIEhUTUxDb2xsZWN0aW9uOjp3aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3QKK3sKKyAg
ICBkb2N1bWVudCgpLnJlZ2lzdGVyQ29sbGVjdGlvbihjb25zdF9jYXN0PEhUTUxDb2xsZWN0aW9u
Jj4oKnRoaXMpKTsKK30KKwogaW5saW5lIGJvb2wgSFRNTENvbGxlY3Rpb246Omhhc05hbWVkRWxl
bWVudENhY2hlKCkgY29uc3QKIHsKICAgICByZXR1cm4gISFtX25hbWVkRWxlbWVudENhY2hlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAKaW5kZXggMjg0NjU0
NzZkZmQ0OTk3YjFiMWFiNzI3MTA5ZDc1YjMxMjIwZWIwMS4uZmU1ZTc2ZmFkNWVkNmYzYWNhY2Vh
ZWY2NGIwNDUzMzI3NzQ2NWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RGF0YUxpc3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlz
dEVsZW1lbnQuY3BwCkBAIC0zMywxMCArMzMsOCBAQAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVN
RU5UKQogI2luY2x1ZGUgIkhUTUxEYXRhTGlzdEVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkdlbmVy
aWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgIklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oIgotI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUyLDcgKzUwLDcgQEAgUmVmPEhUTUxEYXRh
TGlzdEVsZW1lbnQ+IEhUTUxEYXRhTGlzdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW0KIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MRGF0YUxpc3RFbGVtZW50Ojpv
cHRpb25zKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMo
KS5hZGRDYWNoZWRDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0
aW9uVHlwZVRyYWl0czxEYXRhTGlzdE9wdGlvbnM+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIERh
dGFMaXN0T3B0aW9ucyk7CisgICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKERh
dGFMaXN0T3B0aW9ucyk7CiB9CiAKIHZvaWQgSFRNTERhdGFMaXN0RWxlbWVudDo6b3B0aW9uRWxl
bWVudENoaWxkcmVuQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGaWVsZFNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRF
bGVtZW50LmNwcAppbmRleCA0MDBhMGJhZTBlZDk0ZmUwNTNmZDYzNTcxYjQwYWFjOThmYmFjOGRk
Li5hYzMzMmU4NzAyMjYxOGMyZTQ5M2I2OTc3YjA4M2Q1NWFiODZhZDdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKQEAgLTI2LDExICsyNiwxMCBAQAog
I2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkVsZW1lbnRJdGVy
YXRvci5oIgotI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCisjaW5jbHVk
ZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTGVnZW5kRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCi0jaW5j
bHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmllbGRzZXQuaCIKICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTE2Miw3ICsxNjEsNyBAQCBIVE1MTGVnZW5k
RWxlbWVudCogSFRNTEZpZWxkU2V0RWxlbWVudDo6bGVnZW5kKCkgY29uc3QKIAogUmVmPEhUTUxD
b2xsZWN0aW9uPiBIVE1MRmllbGRTZXRFbGVtZW50OjplbGVtZW50cygpCiB7Ci0gICAgcmV0dXJu
IGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbj4oKnRoaXMsIEZvcm1Db250cm9scyk7CisgICAgcmV0
dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKEZvcm1Db250cm9scyk7CiB9CiAKIHZvaWQg
SFRNTEZpZWxkU2V0RWxlbWVudDo6cmVmcmVzaEVsZW1lbnRzSWZOZWVkZWQoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcApp
bmRleCAzMDI1MGJiMjY0YjQ5OGY4ODg4MjFlMDc4OTE4ZmVkNzZkODMzZTlhLi4wZGVlY2MyNGVj
ZDliNWMzN2IwYWMwOWMzMTc1MjczNDJiNzExZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcApAQCAtMzYsNyArMzYsNyBAQCB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogLy8gY2FsY3VsYXRpb24gZXZlcnkgdGltZSBpZiBh
bnl0aGluZyBoYXMgY2hhbmdlZC4KIAogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSkKLSAgICA6IENh
Y2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLCBDb2xsZWN0aW9u
VHlwZVRyYWl0czxGb3JtQ29udHJvbHM+Ojp0cmF2ZXJzYWxUeXBlPihvd25lck5vZGUsIEZvcm1D
b250cm9scykKKyAgICA6IEhUTUxDb2xsZWN0aW9uKG93bmVyTm9kZSwgRm9ybUNvbnRyb2xzLCBD
dXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCkKICAgICAsIG1fY2FjaGVkRWxlbWVudChudWxscHRy
KQogICAgICwgbV9jYWNoZWRFbGVtZW50T2Zmc2V0SW5BcnJheSgwKQogewpAQCAtMTc3LDkgKzE3
Nyw5IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVu
dENhY2hlKCkgY29uc3QKICAgICBzZXROYW1lZEl0ZW1DYWNoZShXVEY6Om1vdmUoY2FjaGUpKTsK
IH0KIAotdm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlKERv
Y3VtZW50JiBkb2N1bWVudCkKK3ZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmludmFs
aWRhdGVDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7Ci0gICAgQ2FjaGVkSFRNTENv
bGxlY3Rpb248SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRz
PEZvcm1Db250cm9scz46OnRyYXZlcnNhbFR5cGU+OjppbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQp
OworICAgIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQpOwogICAgIG1f
Y2FjaGVkRWxlbWVudCA9IG51bGxwdHI7CiAgICAgbV9jYWNoZWRFbGVtZW50T2Zmc2V0SW5BcnJh
eSA9IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmgKaW5kZXggYzBkNTIwZjZhZjIxZGFlNGJkMjFkZmIxMjIwMDc4NzE4ZDU0NDJhZS4u
YjE2OGFkOWMwNjA1NDQ4YTk5NDlkNGE4ZTE1ZTQ0NjVkNzg1YmI3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaApAQCAtMjMsNyArMjMs
NyBAQAogI2lmbmRlZiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbl9oCiAjZGVmaW5lIEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uX2gKIAotI2luY2x1ZGUgIkNhY2hlZEhUTUxDb2xsZWN0aW9u
LmgiCisjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNCwyMyArMzQsMjEgQEAgY2xhc3MgSFRNTElt
YWdlRWxlbWVudDsKIC8vIFRoaXMgY2xhc3MgaXMganVzdCBhIGJpZyBoYWNrIHRvIGZpbmQgZm9y
bSBlbGVtZW50cyBldmVuIGluIG1hbGZvcm1lZCBIVE1MIGVsZW1lbnRzLgogLy8gVGhlIGZhbW91
cyA8dGFibGU+PHRyPjxmb3JtPjx0ZD4gcHJvYmxlbS4KIAotY2xhc3MgSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPEZvcm1Db250cm9scz46OnRy
YXZlcnNhbFR5cGU+IHsKK2NsYXNzIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uIGZpbmFsIDog
cHVibGljIEhUTUxDb2xsZWN0aW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uPiBjcmVhdGUoQ29udGFpbmVyTm9kZSYsIENvbGxlY3Rpb25UeXBl
KTsKICAgICB2aXJ0dWFsIH5IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbigpOwogCi0gICAgLy8g
Rm9yIENhY2hlZEhUTUxDb2xsZWN0aW9uLgotICAgIEVsZW1lbnQqIGN1c3RvbUVsZW1lbnRBZnRl
cihFbGVtZW50KikgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYpOwogCiAgICAgdmlydHVhbCBIVE1MRWxlbWVu
dCogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDYWNoZShEb2N1bWVudCYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgZm9ybUNvbnRy
b2xFbGVtZW50cygpIGNvbnN0OwogICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4m
IGZvcm1JbWFnZUVsZW1lbnRzKCkgY29uc3Q7CisgICAgdmlydHVhbCBFbGVtZW50KiBjdXN0b21F
bGVtZW50QWZ0ZXIoRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgbXV0YWJsZSBFbGVt
ZW50KiBtX2NhY2hlZEVsZW1lbnQ7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2NhY2hlZEVsZW1l
bnRPZmZzZXRJbkFycmF5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmlu
ZGV4IDA1NDI3OWZmMWVmNWE4YzNiMTgwYTRiODBkMjBmYmM5ZWJmYWUxODEuLjVmZmEzYThhNzE5
OTc4N2Y3ZGY3ZGYxZjgwOWE2OGFlNjQzZDAxZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtRWxlbWVudC5jcHAKQEAgLTM3LDEyICszNywxMSBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgot
I2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTENv
bGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxU
YWJsZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKICNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCkBAIC02MzksNyArNjM4LDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlbW92
ZUltZ0VsZW1lbnQoSFRNTEltYWdlRWxlbWVudCogZSkKIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBI
VE1MRm9ybUVsZW1lbnQ6OmVsZW1lbnRzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEo
KS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uPigqdGhpcywgRm9ybUNvbnRyb2xzKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVk
SFRNTENvbGxlY3Rpb24oRm9ybUNvbnRyb2xzKTsKIH0KIAogU3RyaW5nIEhUTUxGb3JtRWxlbWVu
dDo6bmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCmluZGV4
IDNlZTYxYmFhMDAxZTIzNGE0YjMzZjdkMTU4YmM2ODY5OTJjNDZjZjguLmEzYzljMzM5MjNhNzBm
YzhlYjk2ZDNlMzBkYTBjNDNiZTdhYTAyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVs
ZW1lbnQuY3BwCkBAIC0yNSwxMiArMjUsMTEgQEAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgotI2luY2x1
ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxBcmVhRWxl
bWVudC5oIgorI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEltYWdl
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnRTaXpl
LmgiCi0jaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTEzLDcgKzExMiw3IEBAIHZvaWQgSFRNTE1hcEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluCiAKIFJlZjxIVE1MQ29s
bGVjdGlvbj4gSFRNTE1hcEVsZW1lbnQ6OmFyZWFzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlUmFy
ZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEdlbmVyaWNDYWNo
ZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0czxNYXBBcmVhcz46OnRyYXZlcnNh
bFR5cGU+PigqdGhpcywgTWFwQXJlYXMpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29s
bGVjdGlvbihNYXBBcmVhcyk7CiB9CiAKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVl
c3QgSFRNTE1hcEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiBpbnNlcnRpb25Q
b2ludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcAppbmRleCAz
Mjk3NDliYmIwZDMwZjkwYzc0NTg3NGQwMTVhMzc0NTUyMzMzNWY0Li4zN2Y1OGMxNGUxY2RjNWQ2
MWMyMzU1MmFmZTYxNjY4MGU5ZmY5ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFt
ZUNvbGxlY3Rpb24uY3BwCkBAIC0zNiw2ICszNiwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKK0hUTUxOYW1lQ29sbGVjdGlvbjo6SFRNTE5h
bWVDb2xsZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKQorICAgIDogSFRNTENvbGxlY3Rpb24oZG9jdW1lbnQsIHR5
cGUpCisgICAgLCBtX25hbWUobmFtZSkKK3sKK30KKworSFRNTE5hbWVDb2xsZWN0aW9uOjp+SFRN
TE5hbWVDb2xsZWN0aW9uKCkKK3sKKyAgICBBU1NFUlQodHlwZSgpID09IFdpbmRvd05hbWVkSXRl
bXMgfHwgdHlwZSgpID09IERvY3VtZW50TmFtZWRJdGVtcyk7CisKKyAgICBkb2N1bWVudCgpLm5v
ZGVMaXN0cygpLT5yZW1vdmVDYWNoZWRDb2xsZWN0aW9uKHRoaXMsIG1fbmFtZSk7Cit9CisKIGJv
b2wgV2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRlTWF0
Y2goY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICByZXR1cm4gaXM8SFRNTEltYWdlRWxl
bWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEZvcm1FbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1M
QXBwbGV0RWxlbWVudD4oZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE5hbWVDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVj
dGlvbi5oCmluZGV4IDYwNDY2Yzg1YmJkOTMyZjEzMzlkMjg3ODI2OWQ4M2Y0NDAyNGZiOGMuLjMy
MDc0M2Q1YWE5Y2ZiYjgyMTg0NTU4ZDgyMDE3ODk4YzA4Zjc3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uaApAQCAtMjMsMjAgKzIzLDE4IEBACiAjaWZuZGVmIEhU
TUxOYW1lQ29sbGVjdGlvbl9oCiAjZGVmaW5lIEhUTUxOYW1lQ29sbGVjdGlvbl9oCiAKLSNpbmNs
dWRlICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgotI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgor
I2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZSB0cmF2ZXJzYWxUeXBlPgotY2xhc3MgSFRNTE5hbWVDb2xsZWN0aW9uIDogcHVibGljIENhY2hl
ZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+IHsKK2Ns
YXNzIEhUTUxOYW1lQ29sbGVjdGlvbiA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+SFRNTE5hbWVDb2xsZWN0aW9uKCk7CiAKLSAgICBEb2N1bWVudCYgZG9j
dW1lbnQoKSB7IHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4odGhpcy0+b3duZXJOb2RlKCkpOyB9
CisgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgeyByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KG93
bmVyTm9kZSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE5hbWVDb2xsZWN0aW9uKERvY3Vt
ZW50JiwgQ29sbGVjdGlvblR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CkBAIC00NCwy
OSArNDIsMTMgQEAgcHJvdGVjdGVkOgogICAgIEF0b21pY1N0cmluZyBtX25hbWU7CiB9OwogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNh
bFR5cGUgdHJhdmVyc2FsVHlwZT4KLUhUTUxOYW1lQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNs
YXNzLCB0cmF2ZXJzYWxUeXBlPjo6SFRNTE5hbWVDb2xsZWN0aW9uKERvY3VtZW50JiBkb2N1bWVu
dCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQotICAgIDog
Q2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT4o
ZG9jdW1lbnQsIHR5cGUpCi0gICAgLCBtX25hbWUobmFtZSkKLXsKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZl
cnNhbFR5cGU+Ci1IVE1MTmFtZUNvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVy
c2FsVHlwZT46On5IVE1MTmFtZUNvbGxlY3Rpb24oKQotewotICAgIEFTU0VSVCh0aGlzLT50eXBl
KCkgPT0gV2luZG93TmFtZWRJdGVtcyB8fCB0aGlzLT50eXBlKCkgPT0gRG9jdW1lbnROYW1lZEl0
ZW1zKTsKLQotICAgIGRvY3VtZW50KCkubm9kZUxpc3RzKCktPnJlbW92ZUNhY2hlZENvbGxlY3Rp
b24odGhpcywgbV9uYW1lKTsKLX0KLQotY2xhc3MgV2luZG93TmFtZUNvbGxlY3Rpb24gZmluYWwg
OiBwdWJsaWMgSFRNTE5hbWVDb2xsZWN0aW9uPFdpbmRvd05hbWVDb2xsZWN0aW9uLCBDb2xsZWN0
aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+IHsKK2NsYXNzIFdpbmRvd05hbWVDb2xsZWN0
aW9uIGZpbmFsIDogcHVibGljIEhUTUxOYW1lQ29sbGVjdGlvbiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxXaW5kb3dOYW1lQ29sbGVjdGlvbj4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwg
Q29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2luZG93TmFtZUNvbGxlY3Rpb24oZG9jdW1lbnQs
IHR5cGUsIG5hbWUpKTsKICAgICB9CiAKLSAgICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24u
CiAgICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50KSBjb25zdCB7
IHJldHVybiBlbGVtZW50TWF0Y2hlcyhlbGVtZW50LCBtX25hbWUuaW1wbCgpKTsgfQogCiAgICAg
c3RhdGljIGJvb2wgZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2goY29uc3QgRWxlbWVu
dCYpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTc1LDEzICs1NywxMyBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgV2luZG93TmFtZUNvbGxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0
aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCi0gICAgICAgIDogSFRNTE5h
bWVDb2xsZWN0aW9uPFdpbmRvd05hbWVDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZTo6RGVzY2VuZGFudHM+KGRvY3VtZW50LCB0eXBlLCBuYW1lKQorICAgICAgICA6IEhUTUxOYW1l
Q29sbGVjdGlvbihkb2N1bWVudCwgdHlwZSwgbmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh0
eXBlID09IFdpbmRvd05hbWVkSXRlbXMpOwogICAgIH0KIH07CiAKLWNsYXNzIERvY3VtZW50TmFt
ZUNvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTE5hbWVDb2xsZWN0aW9uPERvY3VtZW50TmFt
ZUNvbGxlY3Rpb24sIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz4geworY2xh
c3MgRG9jdW1lbnROYW1lQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MTmFtZUNvbGxlY3Rp
b24gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RG9jdW1lbnROYW1lQ29sbGVjdGlvbj4gY3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKQogICAgIHsKQEAgLTkwLDE1ICs3MiwxMyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgYm9vbCBlbGVtZW50TWF0Y2hlc0lmSWRBdHRyaWJ1dGVNYXRjaChjb25zdCBFbGVtZW50
Jik7CiAgICAgc3RhdGljIGJvb2wgZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaChj
b25zdCBFbGVtZW50Jik7Ci0KLSAgICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCiAgICAg
Ym9vbCBlbGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50KSBjb25zdCB7IHJldHVy
biBlbGVtZW50TWF0Y2hlcyhlbGVtZW50LCBtX25hbWUuaW1wbCgpKTsgfQogCiAgICAgc3RhdGlj
IGJvb2wgZWxlbWVudE1hdGNoZXMoY29uc3QgRWxlbWVudCYsIGNvbnN0IEF0b21pY1N0cmluZ0lt
cGwqKTsKIAogcHJpdmF0ZToKICAgICBEb2N1bWVudE5hbWVDb2xsZWN0aW9uKERvY3VtZW50JiBk
b2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQot
ICAgICAgICA6IEhUTUxOYW1lQ29sbGVjdGlvbjxEb2N1bWVudE5hbWVDb2xsZWN0aW9uLCBDb2xs
ZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+KGRvY3VtZW50LCB0eXBlLCBuYW1lKQor
ICAgICAgICA6IEhUTUxOYW1lQ29sbGVjdGlvbihkb2N1bWVudCwgdHlwZSwgbmFtZSkKICAgICB7
CiAgICAgICAgIEFTU0VSVCh0eXBlID09IERvY3VtZW50TmFtZWRJdGVtcyk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCmluZGV4IGQ5YWRh
MDZiMzVhMDhmOTQ2MDBmMDExODU0MWFjYzM2YWMyMWM0YjcuLjE1MDhiNDE1YzQyZGFlYjEwODAx
Y2Q4OWMyOTE0NmQ3NzA5MzEyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbnNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRp
b25zQ29sbGVjdGlvbi5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb24oSFRNTFNlbGVj
dEVsZW1lbnQmIHNlbGVjdCkKLSAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxPcHRpb25z
Q29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8U2VsZWN0T3B0aW9ucz46OnRyYXZlcnNh
bFR5cGU+KHNlbGVjdCwgU2VsZWN0T3B0aW9ucykKKyAgICA6IEhUTUxDb2xsZWN0aW9uKHNlbGVj
dCwgU2VsZWN0T3B0aW9ucykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLmgKaW5kZXggYzVmZDE3YmY3MjY3ZjI1Yjc0NWQ0MDQ4MzBmODc4NWI0YmQx
YmJmYy4uNjM2Njg2NWU1NWMxYzNhNjc3OTQxNTM5ZTMzNzExMWQzYWYzOWUxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCkBAIC0yNCw3ICsyNCw3IEBA
CiAjaWZuZGVmIEhUTUxPcHRpb25zQ29sbGVjdGlvbl9oCiAjZGVmaW5lIEhUTUxPcHRpb25zQ29s
bGVjdGlvbl9oCiAKLSNpbmNsdWRlICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUg
IkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBIVE1MT3B0aW9uRWxlbWVu
dDsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uIGZpbmFsIDogcHVibGljIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxPcHRpb25zQ29s
bGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8U2VsZWN0T3B0aW9ucz46OnRyYXZlcnNhbFR5
cGU+IHsKK2NsYXNzIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MQ29s
bGVjdGlvbiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+
IGNyZWF0ZShIVE1MU2VsZWN0RWxlbWVudCYsIENvbGxlY3Rpb25UeXBlKTsKIApAQCAtNTAsMTgg
KzUwLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0TGVuZ3RoKHVuc2lnbmVkLCBFeGNlcHRp
b25Db2RlJik7CiAKLSAgICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCi0gICAgYm9vbCBl
bGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
SFRNTE9wdGlvbnNDb2xsZWN0aW9uKEhUTUxTZWxlY3RFbGVtZW50Jik7CiB9OwogCi1pbmxpbmUg
Ym9vbCBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIGVsZW1l
bnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6Om9w
dGlvblRhZyk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19IVE1MQ09MTEVDVElPTihIVE1MT3B0aW9uc0NvbGxlY3Rpb24sIFNlbGVjdE9wdGlv
bnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IGM4YjQy
NjMyMzM5NzA0NmQ4YjRlMzkxMmJlZjdmNDM5OWU1MDNjODIuLmQ1MDVmM2YxMGEwYzQ4NTI0NDU4
Yjk0NTRkNGVlYmQ0Yzk1N2Q3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUg
IkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPcHRHcm91cEVsZW1l
bnQuaCIKQEAgLTQ3LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5j
bHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKLSNpbmNs
dWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEJveC5oIgpAQCAtMzc2LDEyICsz
NzQsMTIgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cihjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QKIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MU2Vs
ZWN0RWxlbWVudDo6c2VsZWN0ZWRPcHRpb25zKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlUmFyZURh
dGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRI
VE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0czxTZWxlY3RlZE9wdGlvbnM+Ojp0cmF2
ZXJzYWxUeXBlPj4oKnRoaXMsIFNlbGVjdGVkT3B0aW9ucyk7CisgICAgcmV0dXJuIGVuc3VyZUNh
Y2hlZEhUTUxDb2xsZWN0aW9uKFNlbGVjdGVkT3B0aW9ucyk7CiB9CiAKIFJlZjxIVE1MT3B0aW9u
c0NvbGxlY3Rpb24+IEhUTUxTZWxlY3RFbGVtZW50OjpvcHRpb25zKCkKIHsKLSAgICByZXR1cm4g
ZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEhU
TUxPcHRpb25zQ29sbGVjdGlvbj4oKnRoaXMsIFNlbGVjdE9wdGlvbnMpOworICAgIHJldHVybiBk
b3duY2FzdDxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+KGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9u
KFNlbGVjdE9wdGlvbnMpLmdldCgpKTsKIH0KIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dXBk
YXRlTGlzdEl0ZW1TZWxlY3RlZFN0YXRlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVF
bGVtZW50LmNwcAppbmRleCAwMjgwODZhNjE4ZGY2YjM0ZWUzNDRhZjFkMDM3YTQwNzRlNjY0ODVj
Li43NDU3MzYxYjZlMTI1ZWFlZjk2NWFmNTQ1MzNiZjMzZjY4NDZlYWE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKQEAgLTMxLDE0ICszMSwxMiBAQAogI2luY2x1
ZGUgIkNTU1ZhbHVlUG9vbC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKLSNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFy
c2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlUm93c0NvbGxl
Y3Rpb24uaCIKICNpbmNsdWRlICJIVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oIgotI2luY2x1ZGUg
Ik5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCiAjaW5jbHVkZSAiU3R5
bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtNTUzLDEyICs1NTEsMTIg
QEAgYm9vbCBIVE1MVGFibGVFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
IGF0dHJpYnV0ZSkgY29uc3QKIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVFbGVtZW50
Ojpyb3dzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMo
KS5hZGRDYWNoZWRDb2xsZWN0aW9uPEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uPigqdGhpcywgVGFi
bGVSb3dzKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oVGFibGVSb3dz
KTsKIH0KIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVFbGVtZW50Ojp0Qm9kaWVzKCkK
IHsKLSAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNo
ZWRDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRy
YWl0czxUYWJsZVRCb2RpZXM+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIFRhYmxlVEJvZGllcyk7
CisgICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKFRhYmxlVEJvZGllcyk7CiB9
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFRhYmxlRWxlbWVudDo6cnVsZXMoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAKaW5kZXggYzg3MjU5
ZjVlY2I5NmQwYWE2MDQ4ZDRkMTRhZThiNjBmOTNiNjhiNi4uZDQzNTFlYWZjYTVlNmY3NTUyNmI5
N2EzMDRiYTY3YWZhNjgwN2VhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVSb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJv
d0VsZW1lbnQuY3BwCkBAIC0yNiwxMyArMjYsMTIgQEAKICNpbmNsdWRlICJIVE1MVGFibGVSb3dF
bGVtZW50LmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiR2VuZXJp
Y0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVDZWxsRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVTZWN0aW9u
RWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCi0jaW5jbHVkZSAiTm9kZVJhcmVEYXRh
LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTcsNyAr
MTU2LDcgQEAgdm9pZCBIVE1MVGFibGVSb3dFbGVtZW50OjpkZWxldGVDZWxsKGludCBpbmRleCwg
RXhjZXB0aW9uQ29kZSYgZWMpCiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gSFRNTFRhYmxlUm93RWxl
bWVudDo6Y2VsbHMoKQogewotICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVM
aXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENv
bGxlY3Rpb25UeXBlVHJhaXRzPFRSQ2VsbHM+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIFRSQ2Vs
bHMpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihUUkNlbGxzKTsKIH0K
IAogdm9pZCBIVE1MVGFibGVSb3dFbGVtZW50OjpzZXRDZWxscyhIVE1MQ29sbGVjdGlvbiosIEV4
Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVSb3dzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3ND
b2xsZWN0aW9uLmNwcAppbmRleCAyZDkxZDlkNDhmNzg3ODY3Zjc3OGU4MGM2OTI1MGVlMzZkNmUw
ZGEyLi5iZmE1ZjZkNzhkMGZiY2E3M2I4M2ViZTNhMmUwMWMyYTQxMzYwYTI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcApAQCAtMTQ5LDcg
KzE0OSw3IEBAIEhUTUxUYWJsZVJvd0VsZW1lbnQqIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjps
YXN0Um93KEhUTUxUYWJsZUVsZW1lbnQmIHRhYmxlKQogfQogCiBIVE1MVGFibGVSb3dzQ29sbGVj
dGlvbjo6SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24oSFRNTFRhYmxlRWxlbWVudCYgdGFibGUpCi0g
ICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MVGFibGVSb3dzQ29sbGVjdGlvbiwgQ29sbGVj
dGlvblR5cGVUcmFpdHM8VGFibGVSb3dzPjo6dHJhdmVyc2FsVHlwZT4odGFibGUsIFRhYmxlUm93
cykKKyAgICA6IEhUTUxDb2xsZWN0aW9uKHRhYmxlLCBUYWJsZVJvd3MsIEN1c3RvbUZvcndhcmRP
bmx5VHJhdmVyc2FsKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZVJvd3NDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJv
d3NDb2xsZWN0aW9uLmgKaW5kZXggYmYwN2EzMjlmNTgxNTU5NDE2ZjQyZGJkNjdjMTIwODZjNWUx
MjE2Zi4uOWViNWZhNmE3YTI5ODE0ZjIzZTE0ZTM3YWE5OTUzNmRkZWRhZjk0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaApAQCAtMjksMTQgKzI5
LDE0IEBACiAjaWZuZGVmIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uX2gKICNkZWZpbmUgSFRNTFRh
YmxlUm93c0NvbGxlY3Rpb25faAogCi0jaW5jbHVkZSAiQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIK
KyNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MVGFibGVSb3dFbGVtZW50Owog
Ci1jbGFzcyBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBDYWNoZWRIVE1M
Q29sbGVjdGlvbjxIVE1MVGFibGVSb3dzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8
VGFibGVSb3dzPjo6dHJhdmVyc2FsVHlwZT4geworY2xhc3MgSFRNTFRhYmxlUm93c0NvbGxlY3Rp
b24gZmluYWwgOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24gewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24+IGNyZWF0ZShIVE1MVGFibGVFbGVtZW50JiwgQ29s
bGVjdGlvblR5cGUpOwogCkBAIC00NiwxMSArNDYsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBI
VE1MVGFibGVSb3dFbGVtZW50KiByb3dBZnRlcihIVE1MVGFibGVFbGVtZW50JiwgSFRNTFRhYmxl
Um93RWxlbWVudCopOwogICAgIHN0YXRpYyBIVE1MVGFibGVSb3dFbGVtZW50KiBsYXN0Um93KEhU
TUxUYWJsZUVsZW1lbnQmKTsKIAotICAgIC8vIEZvciBDYWNoZWRIVE1MQ29sbGVjdGlvbi4KLSAg
ICBFbGVtZW50KiBjdXN0b21FbGVtZW50QWZ0ZXIoRWxlbWVudCopIGNvbnN0OwotCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uKEhUTUxUYWJsZUVsZW1lbnQm
KTsKKworICAgIHZpcnR1YWwgRWxlbWVudCogY3VzdG9tRWxlbWVudEFmdGVyKEVsZW1lbnQqKSBj
b25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKaW5kZXggOWU0NTMxNmY4
ZjNmNGZjNmRhOGUzZGNkYjFiM2U0ZTJkZDkyN2Q4Ni4uZjc1NzE3ZTU5ODI5MmI3NGVkNDIyNzU4
YzQ4MDZkYzVjMDA3YmJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVTZWN0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVT
ZWN0aW9uRWxlbWVudC5jcHAKQEAgLTI2LDEzICsyNiwxMSBAQAogI2luY2x1ZGUgIkhUTUxUYWJs
ZVNlY3Rpb25FbGVtZW50LmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVk
ZSAiR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rp
b24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVSb3dFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVMaXN0
LmgiCi0jaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0xNDksNyArMTQ3LDcgQEAgdm9pZCBIVE1MVGFibGVTZWN0aW9u
RWxlbWVudDo6c2V0VkFsaWduKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAKIFJlZjxIVE1M
Q29sbGVjdGlvbj4gSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnJvd3MoKQogewotICAgIHJldHVy
biBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRzPFRTZWN0aW9u
Um93cz46OnRyYXZlcnNhbFR5cGU+PigqdGhpcywgVFNlY3Rpb25Sb3dzKTsKKyAgICByZXR1cm4g
ZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oVFNlY3Rpb25Sb3dzKTsKIH0KIAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>