<?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>208044</bug_id>
          
          <creation_ts>2020-02-20 23:11:42 -0800</creation_ts>
          <short_desc>Move WebAudio to the media process</short_desc>
          <delta_ts>2022-02-09 10:14:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>208179</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1621579</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-02-20 23:11:42 -0800</bug_when>
    <thetext>We need to migrate WebAudio to GPU Process.

&lt;rdar://problem/59046981&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621586</commentid>
    <comment_count>1</comment_count>
      <attachid>391385</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-02-21 00:19:22 -0800</bug_when>
    <thetext>Created attachment 391385
WIP1

I&apos;ve written code to create a mapping in GPU Process whenever AudioDestination is created.
The next step is to hook it up with a ring buffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621865</commentid>
    <comment_count>2</comment_count>
      <attachid>391457</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-02-22 01:05:27 -0800</bug_when>
    <thetext>Created attachment 391457
WIP2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622508</commentid>
    <comment_count>3</comment_count>
      <attachid>391629</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-02-24 22:51:57 -0800</bug_when>
    <thetext>Created attachment 391629
WIP3

Alright, I can hear stuff on https://forestmist.org/share/web-audio-api-demo now</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391385</attachid>
            <date>2020-02-21 00:19:22 -0800</date>
            <delta_ts>2020-02-21 00:19:22 -0800</delta_ts>
            <desc>WIP1</desc>
            <filename>webaudio-wip1.patch</filename>
            <type>text/plain</type>
            <size>48271</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAJKHJldmlzaW9uIDI1NzAyNikKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIkF1ZGlv
Q29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJhdGVneS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
YXRlZ2llcy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBA
IC04NCw4ICs4Niw4IEBACiB7CiAgICAgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlID0gQXVkaW9E
ZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCk7CiAgICAgTE9HKFdlYkF1ZGlvLCAiPj4+
PiBoYXJkd2FyZVNhbXBsZVJhdGUgPSAlZlxuIiwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKLSAgICAK
LSAgICBtX2Rlc3RpbmF0aW9uID0gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCp0aGlzLCBtX2lu
cHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBjaGFubmVsQ291bnQoKSwgaGFy
ZHdhcmVTYW1wbGVSYXRlKTsKKworICAgIG1fZGVzdGluYXRpb24gPSBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+bWVkaWFTdHJhdGVneSgpLmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oKnRoaXMsIG1faW5w
dXREZXZpY2VJZCwgbV9udW1iZXJPZklucHV0Q2hhbm5lbHMsIGNoYW5uZWxDb3VudCgpLCBoYXJk
d2FyZVNhbXBsZVJhdGUpOwogfQogCiB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
ZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKQpJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjU3MDI2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODg5LDYgKzI4ODksOCBAQAogCQk5QUIxRjM4MDE4RTI0
ODlBMDA1MzQ3NDMgLyogQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUFCMUYzN0UxOEUyNDg5QTAwNTM0NzQz
IC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjAyRTBDODIzNUVBRDJBMDA0MDQ0QjIgLyogVGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlCMDJFMEMzMjM1RTc2QUEwMDQwNDRCMiAvKiBUZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTlCMEFCQ0FFMjM2QkI0MzEwMEI0NTA4NSAvKiBUYXNrU291cmNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjBBQkNBQzIzNkJCNDBB
MDBCNDUwODUgLyogVGFza1NvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTlCMTIyOUM0MjNGRTRCRDIwMDhDQTc1MSAvKiBBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMzE1MTg2MjM1Nzc0NUUwMDExNUU2RSAvKiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5QjEyMjlD
NzIzRkU0RDZBMDA4Q0E3NTEgLyogTWVkaWFTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIxMjI5QzYyM0ZFNEQ1RjAwOENBNzUxIC8qIE1l
ZGlhU3RyYXRlZ3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5QjI0REU4RTE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjRERThDMTUxOTRC
OTUwMEM1OUMyNyAvKiBIVE1MQkRJRWxlbWVudC5oICovOyB9OwogCQk5QjI3RkM2MDIzNEQ5QURC
MDAzOTRBNDYgLyogV2luZG93RXZlbnRMb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QjI3RkM1RTIzNEQ5QURBMDAzOTRBNDYgLyogV2luZG93RXZl
bnRMb29wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOUIyRDhBNzkxNDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9TdGVwLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjJEOEE3ODE0OTk3Q0NGMDBFQ0VGM0Ug
LyogVW5kb1N0ZXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNTA3MCw3ICs1MDcyLDcgQEAKIAkJRkQzMTYwN0ExMkIwMjZGNzAwQzFBMzU5IC8q
IEF1ZGlvQXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZEMzE2MDQ0MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0FycmF5LmggKi87IH07CiAJCUZE
MzE2MDdDMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0J1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNDYxMkIwMjZGNzAwQzFBMzU5IC8qIEF1
ZGlvQnVzLmggKi87IH07CiAJCUZEMzE2MDdFMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0NoYW5u
ZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE2
MDQ4MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0NoYW5uZWwuaCAqLzsgfTsKLQkJRkQzMTYwN0Yx
MkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE2MDQ5MTJCMDI2RjcwMEMxQTM1OSAvKiBB
dWRpb0Rlc3RpbmF0aW9uLmggKi87IH07CisJCUZEMzE2MDdGMTJCMDI2RjcwMEMxQTM1OSAvKiBB
dWRpb0Rlc3RpbmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRDMxNjA0OTEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZEMzE2MDgw
MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0RTUEtlcm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNEExMkIwMjZGNzAwQzFBMzU5IC8qIEF1
ZGlvRFNQS2VybmVsLmggKi87IH07CiAJCUZEMzE2MDgyMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRp
b0RTUEtlcm5lbFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkQzMTYwNEMxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQS2VybmVsUHJv
Y2Vzc29yLmggKi87IH07CiAJCUZEMzE2MDgzMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0ZpbGVS
ZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZE
MzE2MDREMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFkZXIuaCAqLzsgfTsKQEAgLTEx
MTk2LDYgKzExMTk4LDcgQEAKIAkJOUIwQUJDQTQyMzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2
ZW50TG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExv
b3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwQUJDQUMyMzZCQjQwQTAwQjQ1
MDg1IC8qIFRhc2tTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFza1NvdXJjZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5QjBGRTg3MzFEOUUwMkRGMDA0QThBQ0IgLyogRG9jdW1l
bnRPclNoYWRvd1Jvb3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvY3VtZW50T3JTaGFk
b3dSb290LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIxMjI5QzYyM0ZFNEQ1
RjAwOENBNzUxIC8qIE1lZGlhU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJhdGVn
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjEzMjU3QjFGM0QyQUJBMDBEQUFC
NjkgLyogRGF0YVRyYW5zZmVySXRlbUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRGF0YVRyYW5zZmVySXRlbUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5QjE5QjY3RTFCOTY0RTUyMDAzNDg3NDUgLyogU2hhZG93Um9vdC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hhZG93Um9vdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTlCMUFCMDc5MTY0OEM2OUQwMDUxRjNGMiAvKiBIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU5MjIsNiArMjU5MjUsNyBAQAogCQkJCUNERjJCMDAz
MTgxRjA1OUMwMEYyQjQyNCAvKiBNZWRpYURlc2NyaXB0aW9uLmggKi8sCiAJCQkJQ0Q2NDFFQzcx
ODFFRDYwMTAwRUU0QzQxIC8qIE1lZGlhU2FtcGxlLmggKi8sCiAJCQkJQTE3RDI3NUQxRUFDNTc5
ODAwQkYwMUU3IC8qIE1lZGlhU2VsZWN0aW9uT3B0aW9uLmggKi8sCisJCQkJOUIxMjI5QzYyM0ZF
NEQ1RjAwOENBNzUxIC8qIE1lZGlhU3RyYXRlZ3kuaCAqLywKIAkJCQlCQzc3MkM0QzBDNEVCMzA0
MDA4MzI4NUYgLyogTUlNRVR5cGVSZWdpc3RyeS5jcHAgKi8sCiAJCQkJQkM3NzJDNEQwQzRFQjMw
NDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnkuaCAqLywKIAkJCQlFMTUxM0Q1MDE2NzdGMDg4
MDAxNDlGQ0IgLyogTm90SW1wbGVtZW50ZWQuY3BwICovLApAQCAtMjk3MTQsNiArMjk3MTgsNyBA
QAogCQkJCUUzMTUwRUE3MURBNzIxOTMwMDE5NDAxMiAvKiBET01KSVRIZWxwZXJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFM0E3NzY2NzFEQzg1RDI4MDBCNjkwRDggLyogRE9NSklUSURMQ29udmVy
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNBNzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJ
VElETFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTlCMTIyOUM0MjNGRTRCRDIwMDhDQTc1MSAv
KiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNTgwMkI2MURD
ODQzNUQwMEE5NzczQyAvKiBET01KSVRJRExUeXBlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4MzZBQ0VDQTFFQ0E5NTY5MDA0QkQwMTIgLyogRE9NTWF0cml4LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3Q0JCQkNDNzFGNTYwNTgxMDA1RUZBQUMgLyogRE9NTWF0cml4MkRJbml0LmggaW4gSGVh
ZGVycyAqLywKQEAgLTMxMTk4LDYgKzMxMjAzLDcgQEAKIAkJCQk2RUU4QTc3MzEwRjgwM0YzMDA1
QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzJDQkY0RTE0MEYxQUJEMDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNkUzRkFEMzkxNDczM0Y0MDExRTQyMzA3IC8qIEpTV2ViR0xEZWJ1Z1JlbmRl
cmVySW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUIxMjI5QzcyM0ZFNEQ2QTAwOENBNzUxIC8q
IE1lZGlhU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFM0ZBRDM5MTQ3MzNGNDAyMkU0
MjMwNyAvKiBKU1dlYkdMRGVidWdTaGFkZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTNGQUQz
OTE0NzMzRjQwMDBFNDIzMDcgLyogSlNXZWJHTERlcHRoVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNkVCRjBFNzcxMkE5ODY4ODAwREIxNzBBIC8qIEpTV2ViR0xEcmF3QnVmZmVycy5oIGlu
IEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTdHJhdGVneS5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU3RyYXRlZ3ku
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEF1ZGlvRGVzdGluYXRpb247CitjbGFzcyBBdWRpb0lPQ2FsbGJhY2s7CisKK2NsYXNz
IFdFQkNPUkVfRVhQT1JUIE1lZGlhU3RyYXRlZ3kgeworcHVibGljOgorICAgIHZpcnR1YWwgc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oCisg
ICAgICAgIEF1ZGlvSU9DYWxsYmFjayYsIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdW5z
aWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzLCBmbG9hdCBzYW1wbGVSYXRlKSA9IDA7Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+TWVk
aWFTdHJhdGVneSgpID0gZGVmYXVsdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZp
c2lvbiAyNTcwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiBjbGFzcyBCbG9iUmVnaXN0
cnk7CiBjbGFzcyBMb2FkZXJTdHJhdGVneTsKK2NsYXNzIE1lZGlhU3RyYXRlZ3k7CiBjbGFzcyBQ
YXN0ZWJvYXJkU3RyYXRlZ3k7CiAKIGNsYXNzIFBsYXRmb3JtU3RyYXRlZ2llcyB7CkBAIC0zOSw3
ICs0MCw3IEBACiAgICAgICAgICAgICBtX2xvYWRlclN0cmF0ZWd5ID0gY3JlYXRlTG9hZGVyU3Ry
YXRlZ3koKTsKICAgICAgICAgcmV0dXJuIG1fbG9hZGVyU3RyYXRlZ3k7CiAgICAgfQotICAgIAor
CiAgICAgUGFzdGVib2FyZFN0cmF0ZWd5KiBwYXN0ZWJvYXJkU3RyYXRlZ3koKQogICAgIHsKICAg
ICAgICAgaWYgKCFtX3Bhc3RlYm9hcmRTdHJhdGVneSkKQEAgLTQ3LDYgKzQ4LDEzIEBACiAgICAg
ICAgIHJldHVybiBtX3Bhc3RlYm9hcmRTdHJhdGVneTsKICAgICB9CiAKKyAgICBNZWRpYVN0cmF0
ZWd5JiBtZWRpYVN0cmF0ZWd5KCkKKyAgICB7CisgICAgICAgIGlmICghbV9tZWRpYVN0cmF0ZWd5
KQorICAgICAgICAgICAgbV9tZWRpYVN0cmF0ZWd5ID0gY3JlYXRlTWVkaWFTdHJhdGVneSgpOwor
ICAgICAgICByZXR1cm4gKm1fbWVkaWFTdHJhdGVneTsKKyAgICB9CisKICAgICBCbG9iUmVnaXN0
cnkqIGJsb2JSZWdpc3RyeSgpCiAgICAgewogICAgICAgICBpZiAoIW1fYmxvYlJlZ2lzdHJ5KQpA
QCAtNjQsMTAgKzcyLDEyIEBACiBwcml2YXRlOgogICAgIHZpcnR1YWwgTG9hZGVyU3RyYXRlZ3kq
IGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkgPSAwOwogICAgIHZpcnR1YWwgUGFzdGVib2FyZFN0cmF0
ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKSA9IDA7CisgICAgdmlydHVhbCBNZWRpYVN0
cmF0ZWd5KiBjcmVhdGVNZWRpYVN0cmF0ZWd5KCkgPSAwOwogICAgIHZpcnR1YWwgQmxvYlJlZ2lz
dHJ5KiBjcmVhdGVCbG9iUmVnaXN0cnkoKSA9IDA7CiAKICAgICBMb2FkZXJTdHJhdGVneSogbV9s
b2FkZXJTdHJhdGVneSB7IH07CiAgICAgUGFzdGVib2FyZFN0cmF0ZWd5KiBtX3Bhc3RlYm9hcmRT
dHJhdGVneSB7IH07CisgICAgTWVkaWFTdHJhdGVneSogbV9tZWRpYVN0cmF0ZWd5IHsgfTsKICAg
ICBCbG9iUmVnaXN0cnkqIG1fYmxvYlJlZ2lzdHJ5IHsgfTsKIH07CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmgJKHJldmlzaW9u
IDI1NzAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQAogcHVibGljOgogICAgIC8vIFBh
c3MgaW4gKG51bWJlck9mSW5wdXRDaGFubmVscyA+IDApIGlmIGxpdmUvbG9jYWwgYXVkaW8gaW5w
dXQgaXMgZGVzaXJlZC4KICAgICAvLyBQb3J0LXNwZWNpZmljIGRldmljZSBpZGVudGlmaWNhdGlv
biBpbmZvcm1hdGlvbiBmb3IgbGl2ZS9sb2NhbCBpbnB1dCBzdHJlYW1zIGNhbiBiZSBwYXNzZWQg
aW4gdGhlIGlucHV0RGV2aWNlSWQuCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rl
c3RpbmF0aW9uPiBjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiwgY29uc3QgU3RyaW5nJiBpbnB1dERl
dmljZUlkLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gY3JlYXRlKEF1ZGlvSU9DYWxs
YmFjayYsIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlKTsKIAogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb24oKSA9IGRlZmF1bHQ7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHJl
dmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAtMTYsNiArMTYsNyBAQAogJChQUk9KRUNUX0RJUikv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgorJChQUk9K
RUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJ
KHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGx1Z2luUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9Q
bHVnaW5Qcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1BsdWdpblByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
TWVzc2FnZXMuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlck1lc3Nh
Z2VzUmVwbGllcy5oCkluZGV4OiBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAy
NTcwMjYpCisrKyBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTE0Myw2ICsxNDMsNyBAQAogICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdl
ciBcCiAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5IFwKICAgICBQbHVnaW5Qcm94eSBcCisgICAgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIgXAogICAgIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyTWFuYWdlciBcCiAgICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXIgXAogICAgIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkgXApJbmRleDogU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAkocmV2aXNpb24gMjU3MDI2KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4
IEBACiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzUHJveHkuaCIKICNpbmNsdWRlICJMaWJXZWJS
VENDb2RlY3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
IlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAiUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNZXNzYWdlcy5oIgpAQCAtMTI0LDYgKzEyNiwxNCBA
QAogICAgIENSQVNIKCk7CiB9CiAKK1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyJiBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcigpCit7
CisgICAgaWYgKCFtX3JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKQorICAgICAgICBtX3Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyID0gbWFrZVVuaXF1ZTxSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlcj4oKTsKKworICAgIHJldHVybiAqbV9yZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlcjsKK30KKwogUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXImIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKCkKIHsKICAgICBpZiAoIW1f
cmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIpCkBAIC0xODgsMTMgKzE5OCwxOSBAQAogCiB2b2lk
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogeworICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICByZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIHJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5KCkuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0gZWxzZSBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICByZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eSgpLmRpZFJlY2VpdmVQbGF5ZXJNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAg
ICAgICByZXR1cm47Ci0gICAgfSBlbHNlIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSA9PSBNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgeworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKICAgICAgICAgcmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIoKS5kaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTI0MCw2ICsyNTYsMTEgQEAKIAogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29k
ZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIp
CiB7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Cisg
ICAgICAgIHJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKCkuZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlRnJvbVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgewogICAgICAgICByZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgp
LmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIs
IHJlcGx5RW5jb2Rlcik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24g
MjU3MDI2KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogCiBjbGFzcyBHUFVQcm9j
ZXNzOwogY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHk7CitjbGFzcyBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlcjsKIGNsYXNzIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
TWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OwogY2xhc3MgUmVt
b3RlTWVkaWFSZWNvcmRlck1hbmFnZXI7CkBAIC03Myw2ICs3NCw3IEBACiBwcml2YXRlOgogICAg
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEKTsK
IAorICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyJiByZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlcigpOwogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiByZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eSgpOwogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElC
V0VCUlRDKQogICAgIExpYldlYlJUQ0NvZGVjc1Byb3h5JiBsaWJXZWJSVENDb2RlY3NQcm94eSgp
OwpAQCAtOTcsNiArOTksNyBAQAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlv
bjsKICAgICBSZWY8R1BVUHJvY2Vzcz4gbV9ncHVQcm9jZXNzOwogICAgIGNvbnN0IFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXI7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyPiBtX3JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVNZWRpYVJlc291cmNlTWFu
YWdlcj4gbV9yZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk+IG1fcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9BdWRpb0Rlc3RpbmF0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoKSA9
IGRlZmF1bHQ7CitSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6flJlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyKCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyOjpjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZp
Y2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLAorICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIHVpbnQzMl90IGEgPSBudW1iZXJPZklucHV0Q2hhbm5lbHMgKyBudW1iZXJPZk91
dHB1dENoYW5uZWxzOworICAgIGZsb2F0IHggPSBzYW1wbGVSYXRlICsgYTsKKyAgICB4ICs9IGlu
cHV0RGV2aWNlSWQubGVuZ3RoKCk7CisKKyAgICBhdXRvIG5ld0lEID0gUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOworICAgIG1fYXVkaW9EZXN0
aW5hdGlvbnMuYWRkKG5ld0lELCBudWxscHRyKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdJ
RCk7Cit9CisKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmRlbGV0ZUF1ZGlv
RGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byog
YXVkaW9EZXN0aW5hdGlvbiA9IG1fYXVkaW9EZXN0aW5hdGlvbnMuZ2V0KGlkKSkKKyAgICAgICAg
YXVkaW9EZXN0aW5hdGlvbi0+c3RvcCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisK
K3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlv
bihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiBhdWRpb0Rlc3Rp
bmF0aW9uID0gbV9hdWRpb0Rlc3RpbmF0aW9ucy5nZXQoaWQpOworICAgIGlmICghYXVkaW9EZXN0
aW5hdGlvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICBh
dWRpb0Rlc3RpbmF0aW9uLT5zdG9wKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoYXVkaW9EZXN0
aW5hdGlvbi0+aXNQbGF5aW5nKCkpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRp
ZmllciBpZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBhdXRvKiBhdWRpb0Rlc3RpbmF0aW9uID0gbV9hdWRpb0Rlc3RpbmF0aW9ucy5n
ZXQoaWQpOworICAgIGlmICghYXVkaW9EZXN0aW5hdGlvbikKKyAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTs7CisgICAgYXVkaW9EZXN0aW5hdGlvbi0+c3RvcCgpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKGF1ZGlvRGVzdGluYXRpb24tPmlzUGxheWluZygpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8bWVtb3J5PgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEF1ZGlvRGVzdGluYXRpb247CisKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIEF1ZGlvRGVzdGluYXRpb247CisKK2NsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXIpOworcHVibGljOgorICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyKCk7CisgICAgflJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKCk7CisKKyAgICB2b2lk
IGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50
MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbklkZW50aWZpZXIpPiYmKTsKKworICAgIHZvaWQgZGVsZXRlQXVkaW9EZXN0aW5h
dGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKworICAgIHZvaWQgc3RhcnRBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
KyAgICB2b2lkIHN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVy
KQorICAgIHsKKyAgICAgICAgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIGVuY29kZXIpOworICAgIH0KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlBy
b2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIp
IHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KKworcHJpdmF0ZToK
KyAgICBIYXNoTWFwPFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbj4+IG1fYXVkaW9EZXN0aW5hdGlvbnM7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlOworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4JKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKK21l
c3NhZ2VzIC0+IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewor
CisgICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcgaW5wdXREZXZpY2VJZCwgdWludDMy
X3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlKSAtPiAoV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRl
bnRpZmllciBpZCkgU3luY2hyb25vdXMKKworICAgIERlbGV0ZUF1ZGlvRGVzdGluYXRpb24oV2Vi
S2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZCkgLT4gKCkgQXN5bmMKKwor
ICAgIFN0YXJ0QXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyIGlkKSAtPiAoYm9vbCBpc1BsYXlpbmcpIFN5bmNocm9ub3VzCisgICAgU3RvcEF1
ZGlvRGVzdGluYXRpb24oV2ViS2l0OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBp
ZCkgLT4gKGJvb2wgaXNQbGF5aW5nKSBTeW5jaHJvbm91cworCit9CisKKyNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRl
Z2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDI1NzAyNikKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwxMSBAQAogICAgIHJldHVybiBudWxs
cHRyOwogfQogCitNZWRpYVN0cmF0ZWd5KiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2ll
czo6Y3JlYXRlTWVkaWFTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIEJs
b2JSZWdpc3RyeSogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZUJsb2JS
ZWdpc3RyeSgpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
c1BsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiAyNTcwMjYpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICAgICAvLyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0
ZWdpZXMKICAgICBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSogY3JlYXRlTG9hZGVyU3RyYXRlZ3ko
KSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0ZVBhc3Rl
Ym9hcmRTdHJhdGVneSgpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6Ok1lZGlhU3RyYXRlZ3kqIGNy
ZWF0ZU1lZGlhU3RyYXRlZ3koKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnkq
IGNyZWF0ZUJsb2JSZWdpc3RyeSgpIG92ZXJyaWRlOwogfTsKIApJbmRleDogU291cmNlL1dlYktp
dC9QbGF0Zm9ybU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
TWFjLmNtYWtlCShyZXZpc2lvbiAyNTcwMjYpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFj
LmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNiArMTcwLDcgQEAKICAgICBHUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5tZXNzYWdlcy5pbgog
ICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXIubWVzc2FnZXMuaW4KIAorICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkubWVzc2FnZXMuaW4KICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCiAgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpJbmRleDogU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAyNTcwMjYpCisrKyBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsNiAr
MjI3LDcgQEAKICAgICAgICAgJ1dlYktpdDo6TUROU1JlZ2lzdGVySWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXInLAogICAgICAg
ICAnV2ViS2l0OjpNZWRpYVJlY29yZGVySWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3Rl
TWVkaWFSZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSVENEZWNvZGVySWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJUQ0VuY29kZXJJZGVudGlmaWVyJywKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitlbnVtIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyVHlwZSB7IH07Cit1
c2luZyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjU3
MDI2KQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC02NDQsNiArNjQ0LDcgQEAKIEdQVVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiBMaWJXZWJS
VENDb2RlY3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIExpYldlYlJUQ0NvZGVjc01lc3NhZ2VS
ZWNlaXZlci5jcHAKK1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcAogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyTWVzc2FnZVJl
Y2VpdmVyLmNwcAogUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwCiBSZW1vdGVNZWRpYVJlY29yZGVyTWVzc2FnZVJlY2VpdmVyLmNwcApJbmRleDog
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyNTcwMjYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNDA1LDYgKzE0MDUsOSBAQAogCQk5QjAyRTBDQjIz
NUVCOTUzMDA0MDQ0QjIgLyogX1dLVGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAyRTBDOTIzNUVCNjJEMDA0
MDQ0QjIgLyogX1dLVGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUIwMkUwQ0MyMzVFQjk1NzAwNDA0NEIy
IC8qIF9XS1RleHRNYW5pcHVsYXRpb25JdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAyRTBDQTIzNUVCODg0MDA0MDQ0QjIgLyogX1dLVGV4dE1h
bmlwdWxhdGlvbkl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5QjAyRTBENzIzNUZDOTRGMDA0MDQ0QjIgLyogX1dLVGV4dE1hbmlwdWxhdGlv
blRva2VuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
QjAyRTBDRDIzNUVCOTY3MDA0MDQ0QjIgLyogX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOUIxMjI5Q0Qy
M0ZGMjVGMjAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjEyMjlDQjIzRkYyNUYy
MDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCAqLzsgfTsKKwkJOUIx
MjI5Q0UyM0ZGMjVGMjAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMTIyOUND
MjNGRjI1RjIwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAgKi87
IH07CisJCTlCMTIyOUQyMjNGRjJCQ0MwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUIxMjI5RDAyM0ZGMkE1RTAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVu
dGlmaWVyLmggKi87IH07CiAJCTlCNTQ5OUFEMjM2MkE2RjkwMERGOEJBNSAvKiBfV0tUZXh0TWFu
aXB1bGF0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUI1NDk5QUMyMzYyQTZGNjAwREY4QkE1IC8qIF9XS1RleHRNYW5pcHVs
YXRpb25Db25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOUI1NDk5QjIyMzYyQTdFQzAwREY4QkE1IC8qIF9XS1RleHRNYW5pcHVs
YXRpb25FeGNsdXNpb25SdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QjU0OTlCMDIzNjJBN0VDMDBERjhCQTUgLyogX1dLVGV4dE1hbmlwdWxhdGlv
bkV4Y2x1c2lvblJ1bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5RkI1RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1h
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUZCNUYz
OTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDM3OCw2ICs0MzgxLDEwIEBA
CiAJCTlCMDJFMENEMjM1RUI5NjcwMDQwNDRCMiAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTlCMDJFMENFMjM1RUJCMTQwMDQwNDRCMiAvKiBfV0tUZXh0TWFu
aXB1bGF0aW9uVG9rZW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tUZXh0TWFuaXB1bGF0
aW9uVG9rZW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDJFMEQwMjM1RUJD
Q0EwMDQwNDRCMiAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IF9XS1RleHRNYW5pcHVsYXRpb25JdGVtLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5QjEyMjlDQjIzRkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIxMjI5Q0MyM0ZGMjVGMjAwOENBNzUx
IC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOUIxMjI5Q0YyM0ZGMjgxNDAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2Vy
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjEyMjlEMDIzRkYy
QTVFMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUI1NDk5QUMyMzYyQTZGNjAwREY4QkE1IC8qIF9XS1RleHRNYW5p
cHVsYXRpb25Db25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1RleHRNYW5pcHVsYXRp
b25Db25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNTQ5OUFF
MjM2MkE3QTcwMERGOEJBNSAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbi5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjU0OTlCMDIzNjJBN0VDMDBERjhCQTUg
LyogX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dL
VGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTUyODIsNiArNTI4OSw5IEBACiAJCTA3Qzc1QzE3MjM5OUEzREIwMDg4RTY1QiAvKiBt
ZWRpYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOUIx
MjI5Q0MyM0ZGMjVGMjAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNw
cCAqLywKKwkJCQk5QjEyMjlDQjIzRkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXIuaCAqLywKKwkJCQk5QjEyMjlDRjIzRkYyODE0MDA4Q0E3NTEgLyogUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJMDcxQkM1N0UyM0NB
NURCMTAwNjgwRDdDIC8qIFJlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAgKi8sCiAJCQkJMDcxQkM1
N0YyM0NBNURCMTAwNjgwRDdDIC8qIFJlbW90ZUF1ZGlvVHJhY2tQcm94eS5oICovLAogCQkJCTA3
MjVFRkFEMjM5QjAyNDUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5j
cHAgKi8sCkBAIC01NzQxLDYgKzU3NTEsNyBAQAogCQkJCUUxOEM5MkYzMTJEQjlFNzEwMENGMkFF
QiAvKiBQcmludEluZm8uY3BwICovLAogCQkJCUUxQ0MxQjhFMTJEN0VBREYwMDYyNTgzOCAvKiBQ
cmludEluZm8uaCAqLywKIAkJCQk0NjNGRDQ4MTFFQjk0RUFEMDBBMjk4MkMgLyogUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uLmggKi8sCisJCQkJOUIxMjI5RDAyM0ZGMkE1RTAwOENBNzUxIC8qIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmggKi8sCiAJCQkJRjZBMEMxM0YxMzI4MUU2
RTAwNzA0MzBGIC8qIFJlc291cmNlQ2FjaGVzVG9DbGVhci5oICovLAogCQkJCTVDQjdBRkU2MjND
NjgxQjAwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWRJbmZvLmggKi8sCiAJCQkJNDEwNDgyQ0IxRERE
MkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwICovLApAQCAtMTAwNzksNiArMTAwOTAsNyBA
QAogCQkJCTlCNTQ5OUIyMjM2MkE3RUMwMERGOEJBNSAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uRXhj
bHVzaW9uUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIwMkUwQ0MyMzVFQjk1NzAwNDA0NEIy
IC8qIF9XS1RleHRNYW5pcHVsYXRpb25JdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjAyRTBE
NzIzNUZDOTRGMDA0MDQ0QjIgLyogX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5QjEyMjlDRDIzRkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENkIzNzFCMThBOTY3QUQwMDQyQUU4
MCAvKiBfV0tUaHVtYm5haWxWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkyREFDRTY0RTE4QURC
RkYwMDBFNENBNzYgLyogX1dLVGh1bWJuYWlsVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5OUU3MTg5QzIxRjc5RDlFMDA1NUU5NzUgLyogX1dLVG91Y2hFdmVudEdlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMDU5Nyw2ICsxMDYwOSw3IEBACiAJCQkJNTNDRkJCQzgyMjI0
RDFCNTAwMjY2NTQ2IC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUE1RTREQTQxMkQzQkQzRDAwOTlBMkJCIC8qIFRleHRDaGVja2VyU3RhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNFMUEwQkQ3MUE0OEU2QzYwMDU0RUY3NCAvKiBUZXh0SW5wdXRTUEkuaCBp
biBIZWFkZXJzICovLAorCQkJCTlCMTIyOUQyMjNGRjJCQ0MwMDhDQTc1MSAvKiBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjI2MzkxNDY4
N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUYwNUQ4NzE0Njg4MzQ4MDA4QjFFODEgLyogVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkY4MzM2ODYxRkExMzlERjAw
QzZFMDgwIC8qIFRvdWNoQmFyTWVudURhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMTIyMjAsNiAr
MTIyMzMsNyBAQAogCQkJCTkzNjhFRURFMjMwM0E5MDIwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdl
clNldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4MzIxMkI2
QTcxMDBGNDkzRkQgLyogU3RyaW5nUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJE
MTFCNzUxMjEyNkEyODIwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMS1tbS5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTlCMTIyOUNFMjNGRjI1RjIwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDExQjc1MjIxMjZBMjgyMDA2Rjg4
NzggLyogVW5pZmllZFNvdXJjZTEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3NTQyMTI2
QTI4MjAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJE
MTFCNzUzMjEyNkEyODIwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSBpbiBTb3VyY2Vz
ICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjU3MDI2
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw5IEBACiAKICNpbmNsdWRl
ICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCIKKyNpbmNs
dWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
UmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCIKICNpbmNsdWRlICJSZW1vdGVN
ZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1J
TUVUeXBlQ2FjaGUuaCIKQEAgLTM4LDcgKzQxLDkgQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlv
bkNvY29hLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvTWVkaWFTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KQEAgLTI0MCw2ICsyNDUsOTEgQEAKICAgICAgICAgcGxheWVyLT5kaWRSZWNlaXZlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKIH0KIAorY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uLyosIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPiovIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IGNyZWF0ZShBdWRpb0lPQ2FsbGJhY2sm
IGNhbGxiYWNrLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsCisgICAgICAgIHVuc2lnbmVk
IG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywg
ZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90
ZUF1ZGlvRGVzdGluYXRpb24+KGNhbGxiYWNrLCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0
Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOworICAgIH0KKwor
ICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgY29u
c3QgU3RyaW5nJiBpbnB1dERldmljZUlkLAorICAgICAgICB1bnNpZ25lZCBudW1iZXJPZklucHV0
Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJh
dGUpCisgICAgICAgIDogbV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCisgICAgeworICAgICAgICBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBkZXN0aW5hdGlvbklEOworCisgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmRTeW5jKAorICAgICAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGlucHV0RGV2aWNlSWQsIG51
bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSks
CisgICAgICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNy
ZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5KGRlc3RpbmF0aW9uSUQpLCAwKTsKKworICAgICAg
ICBtX2Rlc3RpbmF0aW9uSUQgPSBkZXN0aW5hdGlvbklEOworICAgICAgICBtX3JlYWxEZXN0aW5h
dGlvbiA9IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShjYWxsYmFjaywgaW5wdXREZXZpY2VJZCwg
bnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRl
KTsKKyAgICB9CisKKyAgICB+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbigpCisgICAgeworICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoCisgICAgICAgICAgICBNZXNzYWdlczo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkRlbGV0ZUF1ZGlvRGVzdGluYXRpb24obV9kZXN0
aW5hdGlvbklEKSwgW10geworICAgICAgICAgICAgLy8gV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGlz
LgorICAgICAgICB9KTsKKyAgICB9CisKK3ByaXZhdGU6CisKKyAgICB2b2lkIHN0YXJ0KCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKAorICAgICAgICAgICAgTWVz
c2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdGFydEF1ZGlvRGVzdGluYXRp
b24obV9kZXN0aW5hdGlvbklEKSwKKyAgICAgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjo6U3RhcnRBdWRpb0Rlc3RpbmF0aW9uOjpSZXBseShtX2lzUGxheWlu
ZyksIDApOworICAgICAgICBtX3JlYWxEZXN0aW5hdGlvbi0+c3RhcnQoKTsKKyAgICB9CisKKyAg
ICB2b2lkIHN0b3AoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMo
CisgICAgICAgICAgICBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlN0
b3BBdWRpb0Rlc3RpbmF0aW9uKG1fZGVzdGluYXRpb25JRCksCisgICAgICAgICAgICBNZXNzYWdl
czo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlN0b3BBdWRpb0Rlc3RpbmF0aW9uOjpS
ZXBseShtX2lzUGxheWluZyksIDApOworICAgICAgICBtX3JlYWxEZXN0aW5hdGlvbi0+c3RvcCgp
OworICAgIH0KKworICAgIGJvb2wgaXNQbGF5aW5nKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IHJldHVybiBtX3JlYWxEZXN0aW5hdGlvbi0+aXNQbGF5aW5nKCk7CisgICAgfQorCisgICAgZmxv
YXQgc2FtcGxlUmF0ZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gbV9z
YW1wbGVSYXRlOworICAgIH0KKworICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKKyAgICBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBtX2Rlc3RpbmF0aW9uSUQ7CisgICAgYm9vbCBtX2lz
UGxheWluZyB7IGZhbHNlIH07CisgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+
IG1fcmVhbERlc3RpbmF0aW9uOworfTsKKworY2xhc3MgV2ViTWVkaWFTdHJhdGVneSA6IHB1Ymxp
YyBXZWJDb3JlOjpNZWRpYVN0cmF0ZWd5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBzX3Vz
ZUdQVVByb2Nlc3M7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB+V2ViTWVkaWFTdHJhdGVneSgp
IHsgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb24+IGNy
ZWF0ZUF1ZGlvRGVzdGluYXRpb24oQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgY29uc3QgU3Ry
aW5nJiBpbnB1dERldmljZUlkLAorICAgICAgICB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5l
bHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpIG92
ZXJyaWRlOworfTsKKworYm9vbCBXZWJNZWRpYVN0cmF0ZWd5OjpzX3VzZUdQVVByb2Nlc3MgPSBm
YWxzZTsKKworc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb24+IFdlYk1l
ZGlhU3RyYXRlZ3k6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oQXVkaW9JT0NhbGxiYWNrJiBjYWxs
YmFjaywgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLAorICAgIHVuc2lnbmVkIG51bWJlck9m
SW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2Ft
cGxlUmF0ZSkKK3sKKyAgICBpZiAoc191c2VHUFVQcm9jZXNzKQorICAgICAgICByZXR1cm4gUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKGNhbGxiYWNrLCBpbnB1dERldmljZUlkLCBudW1i
ZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoY2FsbGJhY2ssIGlu
cHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cywgc2FtcGxlUmF0ZSk7Cit9CisKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjp1cGRh
dGVQcmVmZXJlbmNlcyhjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgYXV0byByZWdp
c3RlckVuZ2luZSA9IFt0aGlzXShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIsIE1lZGlh
UGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVy
KSB7CkBAIC0yNTUsNiArMzQ1LDkgQEAKICAgICAgICAgICAgIHJldHVybiBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLnNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllck1hbmFnZXIoKS5jcmVhdGVMYXllcihjbGllbnQsIGhpZGVSb290TGF5ZXIsIHNpemUp
OwogICAgICAgICB9KTsKICAgICB9CisKKyAgICAvLyBGSVhNRTogdXNlR1BVUHJvY2Vzc0Zvck1l
ZGlhIHNob3VsZCByZWFsbHkgYmUgYSBSdW50aW1lRW5hYmxlZEZlYXR1cmUgc2luY2UgaXQncyBn
bG9iYWwuCisgICAgV2ViTWVkaWFTdHJhdGVneTo6c191c2VHUFVQcm9jZXNzID0gc2V0dGluZ3Mu
dXNlR1BVUHJvY2Vzc0Zvck1lZGlhKCk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCwxMSArNDQsMTMgQEAKICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJv
eHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvYWRlclN0cmF0ZWd5Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9NZWRpYVN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VHcm91cC5oPgpAQCAtNzMsNiArNzUsOCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjsK
Kwogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKQogewogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM+IHBsYXRmb3JtU3RyYXRlZ2ll
czsKQEAgLTkzLDYgKzk3LDE5IEBACiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKK2NsYXNzIFdlYk1l
ZGlhU3RyYXRlZ3kgOiBwdWJsaWMgV2ViQ29yZTo6TWVkaWFTdHJhdGVneSB7Citwcml2YXRlOgor
ICAgIHZpcnR1YWwgfldlYk1lZGlhU3RyYXRlZ3koKSB7IH0KKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKEF1ZGlvSU9DYWxsYmFj
ayYgY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwKKyAgICAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlKSBvdmVycmlkZTsKK307CisKK01lZGlhU3RyYXRlZ3kqIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlTWVkaWFTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIG5l
dyBXZWJNZWRpYVN0cmF0ZWd5OworfQorCiBCbG9iUmVnaXN0cnkqIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKIHsKICAgICByZXR1cm4gbmV3IEJsb2JSZWdpc3Ry
eVByb3h5OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkocmV2aXNpb24gMjU3
MDI2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAgICAgLy8g
V2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzCiAgICAgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kq
IGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6UGFzdGVib2Fy
ZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKSBvdmVycmlkZTsKKyAgICBXZWJD
b3JlOjpNZWRpYVN0cmF0ZWd5KiBjcmVhdGVNZWRpYVN0cmF0ZWd5KCkgb3ZlcnJpZGU7CiAgICAg
V2ViQ29yZTo6QmxvYlJlZ2lzdHJ5KiBjcmVhdGVCbG9iUmVnaXN0cnkoKSBvdmVycmlkZTsKIAog
ICAgIC8vIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneQpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgJKHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw2ICs0Myw3IEBACiAgICAgLy8gV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzCiAgICAg
V2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kqIGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkgb3ZlcnJpZGU7
CiAgICAgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRl
Z3koKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpNZWRpYVN0cmF0ZWd5KiBjcmVhdGVNZWRpYVN0
cmF0ZWd5KCkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5KiBjcmVhdGVCbG9i
UmVnaXN0cnkoKSBvdmVycmlkZTsKIAogICAgIC8vIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVn
eQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQkocmV2aXNpb24gMjU3MDI2KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCwxMSBAQAogI2ltcG9ydCAiV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2ltcG9ydCAiV2ViUGx1Z2luUGFja2FnZS5oIgog
I2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCisjaW1wb3J0IDxXZWJDb3JlL0F1
ZGlvRGVzdGluYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvQmxvYlJlZ2lzdHJ5SW1wbC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgorI2lt
cG9ydCA8V2ViQ29yZS9NZWRpYVN0cmF0ZWd5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkSXRlbUluZm8uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1QYXN0ZWJvYXJkLmg+CkBAIC01Nyw2ICs1OSwyMSBA
QAogICAgIHJldHVybiBuZXcgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOwogfQogCitjbGFzcyBX
ZWJNZWRpYVN0cmF0ZWd5IGZpbmFsIDogcHVibGljIE1lZGlhU3RyYXRlZ3kgeworcHJpdmF0ZToK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgaW5wdXREZXZp
Y2VJZCwKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgcmV0dXJuIEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShjYWxsYmFjaywgaW5wdXRE
ZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBz
YW1wbGVSYXRlKTsKKyAgICB9Cit9OworCitNZWRpYVN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNyZWF0ZU1lZGlhU3RyYXRlZ3koKQoreworICAgIHJldHVybiBuZXcgV2ViTWVkaWFT
dHJhdGVneTsKK30KKwogUGFzdGVib2FyZFN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpCiB7CiAgICAgcmV0dXJuIHRoaXM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391457</attachid>
            <date>2020-02-22 01:05:27 -0800</date>
            <delta_ts>2020-02-22 01:05:27 -0800</delta_ts>
            <desc>WIP2</desc>
            <filename>webaudio-wip2.patch</filename>
            <type>text/plain</type>
            <size>81348</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjU3MDI2KQorKysgU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTAyMyw2ICsxMDIzLDcgQEAKICAg
ICBwbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaAogCiAgICAgcGxhdGZvcm0vYXVk
aW8vQXVkaW9IYXJkd2FyZUxpc3RlbmVyLmgKKyAgICBwbGF0Zm9ybS9hdWRpby9BdWRpb0lPQ2Fs
bGJhY2suaAogICAgIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCiAgICAgcGxhdGZvcm0v
YXVkaW8vQXVkaW9Tb3VyY2VQcm92aWRlci5oCiAgICAgcGxhdGZvcm0vYXVkaW8vQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbi5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCShyZXZp
c2lvbiAyNTcwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAK
ICNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyYXRlZ3kuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgpAQCAtODQsOCArODYsOCBAQAogewogICAgIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSA9IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpOwogICAgIExP
RyhXZWJBdWRpbywgIj4+Pj4gaGFyZHdhcmVTYW1wbGVSYXRlID0gJWZcbiIsIGhhcmR3YXJlU2Ft
cGxlUmF0ZSk7Ci0gICAgCi0gICAgbV9kZXN0aW5hdGlvbiA9IEF1ZGlvRGVzdGluYXRpb246OmNy
ZWF0ZSgqdGhpcywgbV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVscywgY2hh
bm5lbENvdW50KCksIGhhcmR3YXJlU2FtcGxlUmF0ZSk7CisKKyAgICBtX2Rlc3RpbmF0aW9uID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPm1lZGlhU3RyYXRlZ3koKS5jcmVhdGVBdWRpb0Rlc3RpbmF0
aW9uKCp0aGlzLCBtX2lucHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBjaGFu
bmVsQ291bnQoKSwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKIH0KIAogdm9pZCBEZWZhdWx0QXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OmVuYWJsZUlucHV0KGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjg4OSw2ICsyODg5LDggQEAK
IAkJOUFCMUYzODAxOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlBQjFGMzdF
MThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUIwMkUwQzgyMzVFQUQy
QTAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAyRTBDMzIzNUU3NkFBMDA0MDQ0QjIg
LyogVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjBBQkNBRTIzNkJCNDMxMDBCNDUwODUgLyogVGFz
a1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5QjEyMjlDNDIzRkU0QkQyMDA4Q0E3
NTEgLyogQXVkaW9EZXN0aW5hdGlvbkNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMxNTE4NjIzNTc3NDVFMDAxMTVFNkUgLyogQXVkaW9EZXN0
aW5hdGlvbkNvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJOUIxMjI5QzcyM0ZFNEQ2QTAwOENBNzUxIC8qIE1lZGlhU3RyYXRlZ3kuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMTIyOUM2MjNGRTRE
NUYwMDhDQTc1MSAvKiBNZWRpYVN0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUIyNERFOEUxNTE5NEI5NTAwQzU5QzI3IC8qIEhUTUxC
RElFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5QjI0REU4QzE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCAqLzsgfTsKIAkJ
OUIyN0ZDNjAyMzREOUFEQjAwMzk0QTQ2IC8qIFdpbmRvd0V2ZW50TG9vcC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyN0ZDNUUyMzREOUFEQTAwMzk0
QTQ2IC8qIFdpbmRvd0V2ZW50TG9vcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTlCMkQ4QTc5MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyRDhBNzgx
NDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9TdGVwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUwNjcsMTAgKzUwNjksMTAgQEAKIAkJRkQzMTYwMzYx
MkIwMjY3NjAwQzFBMzU5IC8qIFNjcmlwdFByb2Nlc3Nvck5vZGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE1RkVDMTJCMDI2NzYwMEMxQTM1OSAv
KiBTY3JpcHRQcm9jZXNzb3JOb2RlLmggKi87IH07CiAJCUZEMzE2MDNDMTJCMDI2NzYwMEMxQTM1
OSAvKiBSZWFsdGltZUFuYWx5c2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRDMxNUZGMjEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFseXNl
ci5oICovOyB9OwogCQlGRDMxNjAzRTEyQjAyNjc2MDBDMUEzNTkgLyogQW5hbHlzZXJOb2RlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZGNDEy
QjAyNjc2MDBDMUEzNTkgLyogQW5hbHlzZXJOb2RlLmggKi87IH07Ci0JCUZEMzE2MDdBMTJCMDI2
RjcwMEMxQTM1OSAvKiBBdWRpb0FycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA0NDEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9BcnJheS5o
ICovOyB9OwotCQlGRDMxNjA3QzEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9CdXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE2MDQ2MTJCMDI2Rjcw
MEMxQTM1OSAvKiBBdWRpb0J1cy5oICovOyB9OwotCQlGRDMxNjA3RTEyQjAyNkY3MDBDMUEzNTkg
LyogQXVkaW9DaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRDMxNjA0ODEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9DaGFubmVsLmggKi87IH07
Ci0JCUZEMzE2MDdGMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA0OTEyQjAyNkY3
MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbi5oICovOyB9OworCQlGRDMxNjA3QTEyQjAyNkY3
MDBDMUEzNTkgLyogQXVkaW9BcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkQzMTYwNDQxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQXJyYXkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRDMxNjA3
QzEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9CdXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE2MDQ2MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0J1
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZE
MzE2MDdFMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0NoYW5uZWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE2MDQ4MTJCMDI2RjcwMEMxQTM1OSAv
KiBBdWRpb0NoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlGRDMxNjA3RjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNDkx
MkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRDMxNjA4MDEyQjAyNkY3MDBDMUEzNTkg
LyogQXVkaW9EU1BLZXJuZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZEMzE2MDRBMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0RTUEtlcm5lbC5oICov
OyB9OwogCQlGRDMxNjA4MjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9EU1BLZXJuZWxQcm9jZXNz
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE2
MDRDMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5oICovOyB9Owog
CQlGRDMxNjA4MzEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA0RDEyQjAyNkY3MDBD
MUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyLmggKi87IH07CkBAIC01MTQ4LDcgKzUxNTAsNyBAQAog
CQlGREIxNzAwNjE0QTJCQUIyMDBBMkI1RDkgLyogTXVsdGlDaGFubmVsUmVzYW1wbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREIxNzAwNDE0QTJC
QUIyMDBBMkI1RDkgLyogTXVsdGlDaGFubmVsUmVzYW1wbGVyLmggKi87IH07CiAJCUZEQkQ0ODBE
MTU5QkM2ODcwMDkzRUI0RiAvKiBKU01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREJENDgwQjE1OUJDNjg3
MDA5M0VCNEYgLyogSlNNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oICovOyB9OwogCQlGREM1
NEYwNTEzOTlCMERBMDA4RDkxMTcgLyogQmlxdWFkRmlsdGVyTm9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRDNTRGMDIxMzk5QjBEQTAwOEQ5MTE3
IC8qIEJpcXVhZEZpbHRlck5vZGUuaCAqLzsgfTsKLQkJRkRFMkQ1NUIxNTlFNjZFQjAwRENDQ0Y4
IC8qIEF1ZGlvSU9DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkRFMkQ1NUExNTlFNjZFQjAwRENDQ0Y4IC8qIEF1ZGlvSU9DYWxsYmFjay5o
ICovOyB9OworCQlGREUyRDU1QjE1OUU2NkVCMDBEQ0NDRjggLyogQXVkaW9JT0NhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREUyRDU1QTE1
OUU2NkVCMDBEQ0NDRjggLyogQXVkaW9JT0NhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkRFQTYyNDMxNTIxMDJFMjAwNDc5REYwIC8q
IEpTT3NjaWxsYXRvck5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZERUE2MjQxMTUyMTAyRTIwMDQ3OURGMCAvKiBKU09zY2lsbGF0b3JOb2RlLmgg
Ki87IH07CiAJCUZERUE2MjQ3MTUyMTAyRkMwMDQ3OURGMCAvKiBKU1BlcmlvZGljV2F2ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRFQTYyNDUxNTIx
MDJGQzAwNDc5REYwIC8qIEpTUGVyaW9kaWNXYXZlLmggKi87IH07CiAJCUZERjA5REM5MTM5OUI2
MjIwMDY4OEU1QiAvKiBKU0JpcXVhZEZpbHRlck5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZERjA5REM3MTM5OUI2MjIwMDY4OEU1QiAvKiBKU0Jp
cXVhZEZpbHRlck5vZGUuaCAqLzsgfTsKQEAgLTExMTk2LDYgKzExMTk4LDcgQEAKIAkJOUIwQUJD
QTQyMzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGFza1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjBG
RTg3MzFEOUUwMkRGMDA0QThBQ0IgLyogRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IERvY3VtZW50T3JTaGFkb3dSb290LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOUIxMjI5QzYyM0ZFNEQ1RjAwOENBNzUxIC8qIE1lZGlhU3RyYXRlZ3ku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5QjEzMjU3QjFGM0QyQUJBMDBEQUFCNjkgLyogRGF0YVRyYW5zZmVySXRlbUxpc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YVRyYW5zZmVySXRl
bUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjE5QjY3RTFCOTY0RTUy
MDAzNDg3NDUgLyogU2hhZG93Um9vdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hhZG93
Um9vdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMUFCMDc5MTY0OEM2OUQw
MDUxRjNGMiAvKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU5
MjIsNiArMjU5MjUsNyBAQAogCQkJCUNERjJCMDAzMTgxRjA1OUMwMEYyQjQyNCAvKiBNZWRpYURl
c2NyaXB0aW9uLmggKi8sCiAJCQkJQ0Q2NDFFQzcxODFFRDYwMTAwRUU0QzQxIC8qIE1lZGlhU2Ft
cGxlLmggKi8sCiAJCQkJQTE3RDI3NUQxRUFDNTc5ODAwQkYwMUU3IC8qIE1lZGlhU2VsZWN0aW9u
T3B0aW9uLmggKi8sCisJCQkJOUIxMjI5QzYyM0ZFNEQ1RjAwOENBNzUxIC8qIE1lZGlhU3RyYXRl
Z3kuaCAqLywKIAkJCQlCQzc3MkM0QzBDNEVCMzA0MDA4MzI4NUYgLyogTUlNRVR5cGVSZWdpc3Ry
eS5jcHAgKi8sCiAJCQkJQkM3NzJDNEQwQzRFQjMwNDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0
cnkuaCAqLywKIAkJCQlFMTUxM0Q1MDE2NzdGMDg4MDAxNDlGQ0IgLyogTm90SW1wbGVtZW50ZWQu
Y3BwICovLApAQCAtMjk3MTQsNiArMjk3MTgsNyBAQAogCQkJCUUzMTUwRUE3MURBNzIxOTMwMDE5
NDAxMiAvKiBET01KSVRIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFM0E3NzY2NzFEQzg1
RDI4MDBCNjkwRDggLyogRE9NSklUSURMQ29udmVydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNB
Nzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTlCMTIyOUM0MjNGRTRCRDIwMDhDQTc1MSAvKiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCBp
biBIZWFkZXJzICovLAogCQkJCUUzNTgwMkI2MURDODQzNUQwMEE5NzczQyAvKiBET01KSVRJRExU
eXBlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzZBQ0VDQTFFQ0E5NTY5MDA0QkQwMTIg
LyogRE9NTWF0cml4LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0JCQkNDNzFGNTYwNTgxMDA1RUZB
QUMgLyogRE9NTWF0cml4MkRJbml0LmggaW4gSGVhZGVycyAqLywKQEAgLTMxMTk4LDYgKzMxMjAz
LDcgQEAKIAkJCQk2RUU4QTc3MzEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRy
aWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzJDQkY0RTE0MEYxQUJEMDAzODc5QkUgLyog
SlNXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkUzRkFEMzkxNDczM0Y0
MDExRTQyMzA3IC8qIEpTV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJOUIxMjI5QzcyM0ZFNEQ2QTAwOENBNzUxIC8qIE1lZGlhU3RyYXRlZ3kuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTZFM0ZBRDM5MTQ3MzNGNDAyMkU0MjMwNyAvKiBKU1dlYkdMRGVidWdTaGFkZXJz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTNGQUQzOTE0NzMzRjQwMDBFNDIzMDcgLyogSlNXZWJH
TERlcHRoVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVCRjBFNzcxMkE5ODY4ODAwREIx
NzBBIC8qIEpTV2ViR0xEcmF3QnVmZmVycy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTWVkaWFTdHJhdGVneS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lZGlhU3RyYXRlZ3kuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvRGVzdGluYXRpb247Citj
bGFzcyBBdWRpb0lPQ2FsbGJhY2s7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIE1lZGlhU3RyYXRl
Z3kgeworcHVibGljOgorICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRp
b24+IGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oCisgICAgICAgIEF1ZGlvSU9DYWxsYmFjayYsIGNv
bnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxz
LCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKSA9IDA7
Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+TWVkaWFTdHJhdGVneSgpID0gZGVmYXVsdDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiAyNTcwMjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksNyBAQAogCiBjbGFzcyBCbG9iUmVnaXN0cnk7CiBjbGFzcyBMb2FkZXJTdHJhdGVneTsK
K2NsYXNzIE1lZGlhU3RyYXRlZ3k7CiBjbGFzcyBQYXN0ZWJvYXJkU3RyYXRlZ3k7CiAKIGNsYXNz
IFBsYXRmb3JtU3RyYXRlZ2llcyB7CkBAIC0zOSw3ICs0MCw3IEBACiAgICAgICAgICAgICBtX2xv
YWRlclN0cmF0ZWd5ID0gY3JlYXRlTG9hZGVyU3RyYXRlZ3koKTsKICAgICAgICAgcmV0dXJuIG1f
bG9hZGVyU3RyYXRlZ3k7CiAgICAgfQotICAgIAorCiAgICAgUGFzdGVib2FyZFN0cmF0ZWd5KiBw
YXN0ZWJvYXJkU3RyYXRlZ3koKQogICAgIHsKICAgICAgICAgaWYgKCFtX3Bhc3RlYm9hcmRTdHJh
dGVneSkKQEAgLTQ3LDYgKzQ4LDEzIEBACiAgICAgICAgIHJldHVybiBtX3Bhc3RlYm9hcmRTdHJh
dGVneTsKICAgICB9CiAKKyAgICBNZWRpYVN0cmF0ZWd5JiBtZWRpYVN0cmF0ZWd5KCkKKyAgICB7
CisgICAgICAgIGlmICghbV9tZWRpYVN0cmF0ZWd5KQorICAgICAgICAgICAgbV9tZWRpYVN0cmF0
ZWd5ID0gY3JlYXRlTWVkaWFTdHJhdGVneSgpOworICAgICAgICByZXR1cm4gKm1fbWVkaWFTdHJh
dGVneTsKKyAgICB9CisKICAgICBCbG9iUmVnaXN0cnkqIGJsb2JSZWdpc3RyeSgpCiAgICAgewog
ICAgICAgICBpZiAoIW1fYmxvYlJlZ2lzdHJ5KQpAQCAtNjQsMTAgKzcyLDEyIEBACiBwcml2YXRl
OgogICAgIHZpcnR1YWwgTG9hZGVyU3RyYXRlZ3kqIGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkgPSAw
OwogICAgIHZpcnR1YWwgUGFzdGVib2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRl
Z3koKSA9IDA7CisgICAgdmlydHVhbCBNZWRpYVN0cmF0ZWd5KiBjcmVhdGVNZWRpYVN0cmF0ZWd5
KCkgPSAwOwogICAgIHZpcnR1YWwgQmxvYlJlZ2lzdHJ5KiBjcmVhdGVCbG9iUmVnaXN0cnkoKSA9
IDA7CiAKICAgICBMb2FkZXJTdHJhdGVneSogbV9sb2FkZXJTdHJhdGVneSB7IH07CiAgICAgUGFz
dGVib2FyZFN0cmF0ZWd5KiBtX3Bhc3RlYm9hcmRTdHJhdGVneSB7IH07CisgICAgTWVkaWFTdHJh
dGVneSogbV9tZWRpYVN0cmF0ZWd5IHsgfTsKICAgICBCbG9iUmVnaXN0cnkqIG1fYmxvYlJlZ2lz
dHJ5IHsgfTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
RGVzdGluYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb0Rlc3RpbmF0aW9uLmgJKHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NyArNDUsNyBAQAogcHVibGljOgogICAgIC8vIFBhc3MgaW4gKG51bWJlck9mSW5wdXRDaGFubmVs
cyA+IDApIGlmIGxpdmUvbG9jYWwgYXVkaW8gaW5wdXQgaXMgZGVzaXJlZC4KICAgICAvLyBQb3J0
LXNwZWNpZmljIGRldmljZSBpZGVudGlmaWNhdGlvbiBpbmZvcm1hdGlvbiBmb3IgbGl2ZS9sb2Nh
bCBpbnB1dCBzdHJlYW1zIGNhbiBiZSBwYXNzZWQgaW4gdGhlIGlucHV0RGV2aWNlSWQuCi0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGUoQXVkaW9JT0Nh
bGxiYWNrJiwgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1bnNpZ25lZCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBs
ZVJhdGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9E
ZXN0aW5hdGlvbj4gY3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYsIGNvbnN0IFN0cmluZyYgaW5wdXRE
ZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZpcnR1YWwgfkF1ZGlv
RGVzdGluYXRpb24oKSA9IGRlZmF1bHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAt
MTYsNiArMTYsNyBAQAogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL0dQVVByb2Nl
c3MubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWFjL2NvbS5hcHBsZS5X
ZWJLaXQuR1BVUHJvY2Vzcy5zYi5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0xMDgsNiArMTA5LDcgQEAKICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1By
aXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9MaWJXZWJSVENDb2RlY3MubWVzc2FnZXMuaW4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjU3MDI2KQorKysg
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkod29ya2luZyBj
b3B5KQpAQCAtMTIzLDYgKzEyMywxMCBAQAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUGx1Z2luUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbHVnaW5Qcm94eU1lc3NhZ2VzLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1BsdWdpblByb3h5
TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyTWVzc2FnZXMuY3BwCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eU1lc3NhZ2VzLmNwcAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyTWVzc2FnZXMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTQzLDYgKzE0Myw4IEBA
CiAgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyIFwKICAgICBQbHVnaW5Qcm9jZXNz
UHJveHkgXAogICAgIFBsdWdpblByb3h5IFwKKyAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlciBcCisgICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IFwKICAgICBSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIgXAogICAgIFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyIFwKICAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
IFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzYsNiArMzYsOCBAQAogI2luY2x1ZGUgIkxpYldlYlJUQ0NvZGVjc1Byb3h5LmgiCiAjaW5j
bHVkZSAiTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIgorI2luY2x1ZGUg
IlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1v
dGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIlJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZXMuaCIKQEAgLTEy
NCw2ICsxMjYsMTQgQEAKICAgICBDUkFTSCgpOwogfQogCitSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlciYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXIoKQoreworICAgIGlmICghbV9yZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcikK
KyAgICAgICAgbV9yZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlciA9IG1ha2VVbmlxdWU8UmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI+KCp0aGlzKTsKKworICAgIHJldHVybiAqbV9yZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjsKK30KKwogUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXImIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
KCkKIHsKICAgICBpZiAoIW1fcmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIpCkBAIC0xODgsMTMg
KzE5OCwxOSBAQAogCiB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQogeworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewor
ICAgICAgICByZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVNZXNzYWdl
RnJvbVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAg
ICAgICAgIHJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkuZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwotICAg
IH0gZWxzZSBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgIH0KKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICByZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLmRpZFJlY2VpdmVQbGF5ZXJNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47Ci0gICAgfSBlbHNlIGlmIChkZWNvZGVyLm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgcmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXIoKS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTI0MCw2ICsyNTYsMTEgQEAKIAogdm9pZCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JiByZXBseUVuY29kZXIpCiB7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKSB7CisgICAgICAgIHJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKCku
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2Rlciwg
cmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICByZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eSgpLmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNv
bm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAkocmV2aXNpb24gMjU3MDI2KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBA
QAogCiBjbGFzcyBHUFVQcm9jZXNzOwogY2xhc3MgTGliV2ViUlRDQ29kZWNzUHJveHk7CitjbGFz
cyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjsKIGNsYXNzIFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI7CkBAIC03Myw2ICs3NCw3
IEBACiBwcml2YXRlOgogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoR1BVUHJvY2VzcyYs
IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIs
IFBBTDo6U2Vzc2lvbklEKTsKIAorICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyJiBy
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcigpOwogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5JiByZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpOwogI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQogICAgIExpYldlYlJUQ0NvZGVjc1Byb3h5JiBsaWJX
ZWJSVENDb2RlY3NQcm94eSgpOwpAQCAtOTcsNiArOTksNyBAQAogICAgIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBSZWY8R1BVUHJvY2Vzcz4gbV9ncHVQcm9jZXNzOwog
ICAgIGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fd2ViUHJvY2Vzc0lkZW50aWZp
ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyPiBt
X3JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlcj4gbV9yZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk+IG1fcmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ci5oIgorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUg
IlJlbW90ZUF1ZGlvQnVzRGF0YS5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0J1cy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0Nh
bGxiYWNrLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24gOiBwdWJsaWMgV2ViQ29y
ZTo6QXVkaW9JT0NhbGxiYWNrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKTsKK3B1YmxpYzoKKyAg
ICB1c2luZyBBdWRpb0J1cyA9IFdlYkNvcmU6OkF1ZGlvQnVzOworICAgIHVzaW5nIEF1ZGlvRGVz
dGluYXRpb24gPSBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOworICAgIHVzaW5nIFNoYXJlZEJ1
ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjsKKworICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbklkZW50aWZpZXIgaWQsCisgICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJ
ZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1
dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLAorICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzaGFyZWRCdWZmZXIpCisgICAgICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAg
ICAgICwgbV9pZChpZCkKKyAgICAgICAgLCBtX2Rlc3RpbmF0aW9uKEF1ZGlvRGVzdGluYXRpb246
OmNyZWF0ZSgqdGhpcywgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKSkKKyAgICAgICAgLCBtX3NoYXJlZEJ1ZmZl
cihzaGFyZWRCdWZmZXIpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgflJlbW90ZUF1ZGlv
RGVzdGluYXRpb24oKQorICAgIHsKKyAgICAgICAgaWYgKG1fZGVzdGluYXRpb24tPmlzUGxheWlu
ZygpKQorICAgICAgICAgICAgbV9kZXN0aW5hdGlvbi0+c3RvcCgpOworICAgIH0KKworICAgIHZv
aWQgcmVuZGVyKEF1ZGlvQnVzKiwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGRlc3Rp
bmF0aW9uQnVzKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGZyYW1lc1RvUHJvY2Vzcyk7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXNdIHsKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi5j
b25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHk6OlJlbmRlckJ1ZmZlcihSZW1vdGVBdWRpb0J1c0RhdGEgeyB9KSwgW10oKSB7
CisgICAgICAgICAgICAgICAgLy8gRG9uJ3QgY2FyZS4KKyAgICAgICAgICAgIH0sIG1faWQudG9V
SW50NjQoKSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHZvaWQgaXNQbGF5aW5nRGlkQ2hh
bmdlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXNdIHsK
KyAgICAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpEaWRDaGFuZ2VJc1BsYXlpbmcobV9kZXN0aW5hdGlv
bi0+aXNQbGF5aW5nKCkpLCBtX2lkLnRvVUludDY0KCkpOworICAgICAgICB9KTsKKyAgICB9CisK
KyAgICB2b2lkIHN0YXJ0KCkgeyBtX2Rlc3RpbmF0aW9uLT5zdGFydCgpOyB9CisgICAgdm9pZCBz
dG9wKCkgeyBtX2Rlc3RpbmF0aW9uLT5zdG9wKCk7IH0KKyAgICBib29sIGlzUGxheWluZygpIHsg
cmV0dXJuIG1fZGVzdGluYXRpb24tPmlzUGxheWluZygpOyB9CisKK3ByaXZhdGU6CisgICAgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uOworICAgIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyIG1faWQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGlu
YXRpb24+IG1fZGVzdGluYXRpb247CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9zaGFyZWRC
dWZmZXI7Cit9OworCitSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikK
KyAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25uZWN0aW9uKQoreworfQorCitS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6flJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5h
Z2VyKCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpj
cmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMy
X3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlLAorICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbklkZW50aWZpZXIpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIC8v
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBhdXRvIG5ld0lEID0gUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOworICAg
IGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+KG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgbnVsbHB0cik7
CisgICAgbV9hdWRpb0Rlc3RpbmF0aW9ucy5hZGQobmV3SUQsIFdURk1vdmUoY2FsbGJhY2spKTsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdJRCk7Cit9CisKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OmRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIgaWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBtX2F1ZGlvRGVzdGluYXRpb25zLnJlbW92ZShpZCk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKK30KKwordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
cjo6c3RhcnRBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
IGlkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGJvb2wgaXNQbGF5aW5nID0gZmFsc2U7CisgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1
ZGlvRGVzdGluYXRpb25zLmdldChpZCkpIHsKKyAgICAgICAgaXRlbS0+c3RhcnQoKTsKKyAgICAg
ICAgaXNQbGF5aW5nID0gaXRlbS0+aXNQbGF5aW5nKCk7CisgICAgfQorICAgIGNvbXBsZXRpb25I
YW5kbGVyKGlzUGxheWluZyk7Cit9CisKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXI6OnN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
IGlkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGJvb2wgaXNQbGF5aW5nID0gZmFsc2U7CisgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1
ZGlvRGVzdGluYXRpb25zLmdldChpZCkpIHsKKyAgICAgICAgaXRlbS0+c3RvcCgpOworICAgICAg
ICBpc1BsYXlpbmcgPSBpdGVtLT5pc1BsYXlpbmcoKTsKKyAgICB9CisgICAgY29tcGxldGlvbkhh
bmRsZXIoaXNQbGF5aW5nKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8bWVtb3J5PgorCisjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzczsKK2NsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb247CisKK2NsYXNzIFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIpOworcHVibGljOgorICAgIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB+UmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIoKTsKKworICAgIHZvaWQgY3JlYXRlQXVkaW9EZXN0aW5hdGlv
bihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFu
bmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllcik+
JiYpOworICAgIHZvaWQgZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHN0
YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzdG9wQXVkaW9EZXN0aW5h
dGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQ
cm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikKKyAgICB7CisgICAgICAg
IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKKyAg
ICB9CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBjb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgeyByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpOworCisgICAgSGFzaE1hcDxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+PiBtX2F1ZGlvRGVz
dGluYXRpb25zOworICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
NyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKKworbWVzc2FnZXMgLT4gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIg
Tm90UmVmQ291bnRlZCB7CisKKyAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBpbnB1
dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpIC0+IChXZWJLaXQ6OlJlbW90ZUF1
ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkKSBTeW5jaHJvbm91cworCisgICAgRGVsZXRlQXVk
aW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlk
KSAtPiAoKSBBc3luYworCisgICAgU3RhcnRBdWRpb0Rlc3RpbmF0aW9uKFdlYktpdDo6UmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWQpIC0+IChib29sIGlzUGxheWluZykgU3luY2hy
b25vdXMKKyAgICBTdG9wQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25JZGVudGlmaWVyIGlkKSAtPiAoYm9vbCBpc1BsYXlpbmcpIFN5bmNocm9ub3VzCisKK30K
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkocmV2aXNp
b24gMjU3MDI2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
c1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDExIEBA
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK01lZGlhU3RyYXRlZ3kqIE5ldHdvcmtQcm9jZXNz
UGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVNZWRpYVN0cmF0ZWd5KCkKK3sKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogQmxvYlJlZ2lzdHJ5KiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRl
Z2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0
Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDI1NzAyNikK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogICAgIC8vIFdlYkNv
cmU6OlBsYXRmb3JtU3RyYXRlZ2llcwogICAgIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBjcmVh
dGVMb2FkZXJTdHJhdGVneSgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJh
dGVneSogY3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6
TWVkaWFTdHJhdGVneSogY3JlYXRlTWVkaWFTdHJhdGVneSgpIG92ZXJyaWRlOwogICAgIFdlYkNv
cmU6OkJsb2JSZWdpc3RyeSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CiB9OwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UJKHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAsNyBA
QAogICAgIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyLm1lc3NhZ2VzLmluCiAgICAgR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlci5tZXNzYWdlcy5pbgogCisgICAgR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgogICAgIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgogICAgIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIubWVzc2FnZXMuaW4KICAgICBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHJldmlzaW9uIDI1NzAy
NikKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTIyNyw2ICsyMjcsNyBAQAogICAgICAgICAnV2ViS2l0OjpNRE5TUmVnaXN0ZXJJ
ZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6Ok1lZGlhUmVjb3JkZXJJZGVudGlmaWVyJywKKyAg
ICAgICAgJ1dlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXInLAogICAgICAg
ICAnV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJL
aXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UlRDRW5jb2Rlcklk
ZW50aWZpZXInLApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbklkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50
aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyID0g
T2JqZWN0SWRlbnRpZmllcjxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllclR5cGU+Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHJldmlz
aW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTUzNCwxMSArNTM0LDEzIEBACiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcCBAbm8tdW5pZnkKIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9WaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1l
ZGlhU3RyYXRlZ3kuY3BwCiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNw
cAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAogV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQJKHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjQ0LDYgKzY0NCw4IEBACiBHUFVQcm9jZXNzTWVz
c2FnZVJlY2VpdmVyLmNwcAogTGliV2ViUlRDQ29kZWNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiBMaWJXZWJSVENDb2RlY3NNZXNzYWdlUmVjZWl2ZXIuY3BwCitSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKK1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
TWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyTWVzc2FnZVJlY2VpdmVyLmNwcAogUmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2VSZWNl
aXZlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjU3MDI2KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQwNSw4ICsxNDA1LDE0
IEBACiAJCTlCMDJFMENCMjM1RUI5NTMwMDQwNDRCMiAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uRGVs
ZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlC
MDJFMEM5MjM1RUI2MkQwMDQwNDRCMiAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjAyRTBD
QzIzNUVCOTU3MDA0MDQ0QjIgLyogX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDJFMENBMjM1RUI4ODQwMDQw
NDRCMiAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlCMDJFMEQ3MjM1RkM5NEYwMDQwNDRCMiAvKiBf
V0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlCMDJFMENEMjM1RUI5NjcwMDQwNDRCMiAvKiBfV0tUZXh0TWFuaXB1
bGF0aW9uVG9rZW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk5QjEyMjlDRDIzRkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlCMTIyOUNCMjNGRjI1RjIwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ci5oICovOyB9OworCQk5QjEyMjlDRTIzRkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUIxMjI5Q0MyM0ZGMjVGMjAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25NYW5hZ2VyLmNwcCAqLzsgfTsKKwkJOUIxMjI5RDIyM0ZGMkJDQzAwOENBNzUxIC8qIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QjEyMjlEMDIzRkYyQTVFMDA4Q0E3NTEgLyogUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCAqLzsgfTsKIAkJOUI1NDk5QUQyMzYyQTZGOTAwREY4
QkE1IC8qIF9XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjU0OTlBQzIzNjJBNkY2MDBERjhCQTUg
LyogX1dLVGV4dE1hbmlwdWxhdGlvbkNvbmZpZ3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjU0OTlCMjIzNjJBN0VDMDBERjhCQTUg
LyogX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNTQ5OUIwMjM2MkE3RUMwMERGOEJBNSAvKiBf
V0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTlCNUJFQzI2MjQwMEY0QTkwMDcwQzZFRiAvKiBX
ZWJNZWRpYVN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QjVCRUMyNDI0MDBGNEE5MDA3MEM2RUYgLyogV2ViTWVkaWFTdHJhdGVneS5oICov
OyB9OworCQk5QjVCRUMyQTI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
QjVCRUMyODI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lmgg
Ki87IH07CisJCTlCNUJFQzMxMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEu
aCBpbiBDb3B5RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1QkVD
MzAyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVzRGF0YS5oICovOyB9OwogCQk5RkI1
RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUZCNUYzOTMxNjlFNkE4MDAwMkMy
NUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTAyQTcwODFFQzBFRUU5MDBEODFEODIgLyogY29tLm1h
Y3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5wbHVnaW4uc2IgaW4gQ29weSBQbHVnLWluIFNhbmRi
b3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E1RTM5NDkx
RDVCRDhBNzAwQjRCN0NFIC8qIGNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1Z2lu
LnNiICovOyB9OwogCQlBMTA0NkVBMTIwNzkyNjMxMDBGMEM1RDggLyogV0tQREZWaWV3LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTA0NkU5RjIwNzky
NjMxMDBGMEM1RDggLyogV0tQREZWaWV3LmggKi87IH07CkBAIC0yMDU5LDYgKzIwNjUsNyBAQAog
CQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CiAJCQlmaWxlcyA9ICgKIAkJCQkyREI5NjA1MzIzOTg4
NkMxMDAxMDI3OTEgLyogY29tLmFwcGxlLldlYktpdC5HUFUuc2IgaW4gQ29weUZpbGVzICovLAor
CQkJCTlCNUJFQzMxMjQwMTAyMjIwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCBpbiBD
b3B5RmlsZXMgKi8sCiAJCQkJQTc4Q0NEREIxOTNBQzlGODAwNUVDQzI1IC8qIGNvbS5hcHBsZS5X
ZWJLaXQuTmV0d29ya2luZy5zYiBpbiBDb3B5RmlsZXMgKi8sCiAJCQkJQTc4Q0NEREMxOTNBQzlG
QjAwNUVDQzI1IC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYiBpbiBDb3B5RmlsZXMg
Ki8sCiAJCQkpOwpAQCAtNDM3OCwxMCArNDM4NSwyMCBAQAogCQk5QjAyRTBDRDIzNUVCOTY3MDA0
MDQ0QjIgLyogX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Rl
eHRNYW5pcHVsYXRpb25Ub2tlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjAy
RTBDRTIzNUVCQjE0MDA0MDQ0QjIgLyogX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5QjAyRTBEMDIzNUVCQ0NBMDA0MDQ0QjIgLyogX1dLVGV4dE1h
bmlwdWxhdGlvbkl0ZW0ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tUZXh0TWFuaXB1bGF0
aW9uSXRlbS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIxMjI5Q0IyM0ZGMjVG
MjAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTlCMTIyOUNDMjNGRjI1RjIwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMTIyOUNGMjNGRjI4
MTQwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIxMjI5RDAyM0ZGMkE1RTAwOENBNzUxIC8qIFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNTQ5
OUFDMjM2MkE2RjYwMERGOEJBNSAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBfV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjU0OTlBRTIzNjJBN0E3MDBERjhCQTUgLyogX1dL
VGV4dE1hbmlwdWxhdGlvbkNvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBf
V0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUI1NDk5QjAyMzYyQTdFQzAwREY4QkE1IC8qIF9XS1RleHRNYW5pcHVsYXRpb25F
eGNsdXNpb25SdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNp
b25SdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNTQ5OUIxMjM2MkE3RUMw
MERGOEJBNSAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9uUnVsZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IF9XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5QjVCRUMyNDI0MDBGNEE5MDA3MEM2RUYgLyogV2ViTWVk
aWFTdHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNZWRpYVN0cmF0ZWd5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCNUJFQzI1MjQwMEY0QTkwMDcwQzZFRiAvKiBXZWJNZWRp
YVN0cmF0ZWd5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk1lZGlhU3RyYXRlZ3kuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjVCRUMyODI0MDEwMTU4MDA3MEM2RUYgLyog
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjVCRUMy
OTI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCNUJFQzJFMjQwMTAxOEMwMDcwQzZFRiAvKiBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjVC
RUMzMDI0MDEwMjIyMDA3MEM2RUYgLyogUmVtb3RlQXVkaW9CdXNEYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUF1ZGlvQnVzRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
QkM1OUQ2QzFFRkNDQ0I2MDAxRThEMDkgLyogQ2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlCQzU5RDZEMUVGQ0RDNkQwMDFFOEQwOSAvKiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9uYWxDYWxsYmFja0lELmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBBdXhp
bGlhcnlQcm9jZXNzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTUyNjIsNiArNTI3OSwxMCBAQAogCQkJCTA3OTIzMTMyMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuaCAqLywKIAkJCQkwN0IxRDA0QjIzRDM4RkNFMDAzOTlBNkUg
LyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluICovLAogCQkJCTA3OTIzMTRF
MjM5RDVGNTMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgg
Ki8sCisJCQkJOUI1QkVDMzAyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVzRGF0YS5o
ICovLAorCQkJCTlCNUJFQzJFMjQwMTAxOEMwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJOUI1QkVDMjkyNDAxMDE1ODAwNzBDNkVGIC8q
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAgKi8sCisJCQkJOUI1QkVDMjgyNDAxMDE1
ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oICovLAogCQkJCTA3Qjkz
RkY1MjNBRjBDQjgwMDM2RjhFQSAvKiBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaCAq
LywKIAkJCQkwNzkyMzEzMDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLmNwcCAqLywKIAkJCQkwNzkyMzEzNDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmggKi8sCkBAIC01Mjc1LDYgKzUyOTYsOCBAQAogCQkJCTA3RTE5RjA5MjNE
NTMzQkEwMDk0RkZCNCAvKiBUZXh0VHJhY2tQcml2YXRlUmVtb3RlLmggKi8sCiAJCQkJMDcxQkM1
ODMyM0NDMkJENTAwNjgwRDdDIC8qIFZpZGVvVHJhY2tQcml2YXRlUmVtb3RlLmNwcCAqLywKIAkJ
CQkwNzFCQzU4MjIzQ0MyQkQzMDA2ODBEN0MgLyogVmlkZW9UcmFja1ByaXZhdGVSZW1vdGUuaCAq
LywKKwkJCQk5QjVCRUMyNTI0MDBGNEE5MDA3MEM2RUYgLyogV2ViTWVkaWFTdHJhdGVneS5jcHAg
Ki8sCisJCQkJOUI1QkVDMjQyNDAwRjRBOTAwNzBDNkVGIC8qIFdlYk1lZGlhU3RyYXRlZ3kuaCAq
LywKIAkJCSk7CiAJCQlwYXRoID0gbWVkaWE7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtNTI4Miw2ICs1MzA1LDkgQEAKIAkJMDdDNzVDMTcyMzk5QTNEQjAwODhFNjVCIC8qIG1lZGlh
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5QjEyMjlD
QzIzRkYyNUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwICov
LAorCQkJCTlCMTIyOUNCMjNGRjI1RjIwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlci5oICovLAorCQkJCTlCMTIyOUNGMjNGRjI4MTQwMDhDQTc1MSAvKiBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLywKIAkJCQkwNzFCQzU3RTIzQ0E1REIx
MDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcCAqLywKIAkJCQkwNzFCQzU3RjIz
Q0E1REIxMDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFja1Byb3h5LmggKi8sCiAJCQkJMDcyNUVG
QUQyMzlCMDI0NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCAq
LywKQEAgLTU3NDEsNiArNTc2Nyw3IEBACiAJCQkJRTE4QzkyRjMxMkRCOUU3MTAwQ0YyQUVCIC8q
IFByaW50SW5mby5jcHAgKi8sCiAJCQkJRTFDQzFCOEUxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50
SW5mby5oICovLAogCQkJCTQ2M0ZENDgxMUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWlu
YXRpb25SZWFzb24uaCAqLywKKwkJCQk5QjEyMjlEMDIzRkYyQTVFMDA4Q0E3NTEgLyogUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCAqLywKIAkJCQlGNkEwQzEzRjEzMjgxRTZFMDA3
MDQzMEYgLyogUmVzb3VyY2VDYWNoZXNUb0NsZWFyLmggKi8sCiAJCQkJNUNCN0FGRTYyM0M2ODFC
MDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZEluZm8uaCAqLywKIAkJCQk0MTA0ODJDQjFEREQyRkI1
MDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAgKi8sCkBAIC0xMDAwNiw2ICsxMDAzMyw3IEBACiAJ
CQkJNjMxMDhGOTYxRjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTYzMTA4Rjk5MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNh
dGlvbk1hbmlmZXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0NDI5MTkyMUZBNTkx
QzkwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5QjVCRUMy
NjI0MDBGNEE5MDA3MEM2RUYgLyogV2ViTWVkaWFTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRjQ0MjkxOTYxRkE1OTQyQTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTlFNzE0QzUxQzEyNEEwNDAwNjY1QjNBIC8qIF9XS0F1dG9tYXRp
b25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkwRDI4QUIxQzY0MjBDNjAwOTg2OTc3
IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDc5LDYgKzEw
MTA3LDcgQEAKIAkJCQk5QjU0OTlCMjIzNjJBN0VDMDBERjhCQTUgLyogX1dLVGV4dE1hbmlwdWxh
dGlvbkV4Y2x1c2lvblJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCMDJFMENDMjM1RUI5NTcw
MDQwNDRCMiAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OUIwMkUwRDcyMzVGQzk0RjAwNDA0NEIyIC8qIF9XS1RleHRNYW5pcHVsYXRpb25Ub2tlbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOUIxMjI5Q0QyM0ZGMjVGMjAwOENBNzUxIC8qIFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZCMzcxQjE4QTk2N0FE
MDA0MkFFODAgLyogX1dLVGh1bWJuYWlsVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBQ0U2
NEUxOEFEQkZGMDAwRTRDQTc2IC8qIF9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTlFNzE4OUMyMUY3OUQ5RTAwNTVFOTc1IC8qIF9XS1RvdWNoRXZlbnRHZW5l
cmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMTA1OTcsNiArMTA2MjYsNyBAQAogCQkJCTUzQ0ZC
QkM4MjIyNEQxQjUwMDI2NjU0NiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBNUU0REE0MTJEM0JEM0QwMDk5QTJCQiAvKiBUZXh0Q2hlY2tlclN0YXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRTFBMEJENzFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0
U1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQk5QjEyMjlEMjIzRkYyQkNDMDA4Q0E3NTEgLyogUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUYy
NjM5MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFGMDVEODcxNDY4ODM0ODAwOEIxRTgxIC8qIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJGODMzNjg2MUZB
MTM5REYwMEM2RTA4MCAvKiBUb3VjaEJhck1lbnVEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTEx
MjQyLDYgKzExMjcyLDcgQEAKIAkJCQkzNzk1Nzg5QzE4QUQ0RjE5MDBCOUVEMkUgLyogV0tXZWJQ
cm9jZXNzUGx1Z0luRm9ybURlbGVnYXRlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUY3
NTA2QjExODU5MTYzNzAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxRjc1MDZCODE4NTkxNjVEMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1
Z0luRnJhbWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUI1QkVDMkEyNDAxMDE1ODAw
NzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzczRDEyMkQxOEE0QjZFQjAwNjZEOUNDIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUY3NTA2QjIxODU5MTYzRTAwRUMwRkY3IC8qIFdL
V2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGNzUw
NkI3MTg1OTE2NUEwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMTIyMjAsNiArMTIyNTEsNyBAQAogCQkJCTkzNjhF
RURFMjMwM0E5MDIwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4MzIxMkI2QTcxMDBGNDkzRkQgLyogU3RyaW5n
UmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCNzUxMjEyNkEyODIwMDZGODg3
OCAvKiBVbmlmaWVkU291cmNlMS1tbS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTlCMTIyOUNFMjNG
RjI1RjIwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDExQjc1MjIxMjZBMjgyMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTEu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3NTQyMTI2QTI4MjAwNkY4ODc4IC8qIFVuaWZp
ZWRTb3VyY2UyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCNzUzMjEyNkEyODIwMDZGODg3
OCAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAJ
KHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw4IEBACiAjaW5j
bHVkZSAiTGliV2ViUlRDQ29kZWNzLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUF1
ZGlvRGVzdGluYXRpb25Qcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgpAQCAtNzcs
NiArNzksOSBAQAogCiB2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsK
KyAgICBpZiAobV9yZWNlaXZlck1hcC5kaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cikpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCktPmRpZFJlY2VpdmVQbGF5ZXJNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAy
NTcwMjYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyTWFwLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC01Niw2ICs1NywxNiBAQAogICAgIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXImIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoKTsKICNlbmRpZgogCisgICAgdm9p
ZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2Vp
dmVyKQorICAgIHsKKyAgICAgICAgbV9yZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVz
c2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCwgcmVjZWl2ZXIpOworICAgIH0KKworICAg
IHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCisgICAgeworICAgICAgICBtX3Jl
Y2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0
aW5hdGlvbklEKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
SVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIApAQCAtNjYsNiArNzcsNyBAQAogCiAgICAg
Ly8gVGhlIGNvbm5lY3Rpb24gZnJvbSB0aGUgd2ViIHByb2Nlc3MgdG8gdGhlIEdQVSBwcm9jZXNz
LgogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlck1hcCBtX3JlY2VpdmVyTWFwOwogCiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAg
ICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBtX2F1ZGl0VG9rZW47CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvQnVzRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9CdXNEYXRh
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0J1c0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2hh
cmVkQnVmZmVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgUmVtb3RlQXVkaW9C
dXNEYXRhIHsKKyAgICBWZWN0b3I8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGNoYW5uZWxC
dWZmZXJzOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4oY2hhbm5lbEJ1ZmZlcnMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjaGFubmVsQnVmZmVycy5zaXplKCk7ICsraSkKKyAgICAgICAgICAg
IGVuY29kZXIgPDwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsgY2hhbm5lbEJ1ZmZl
cnNbaV0uZ2V0KCkgfTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgor
ICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVBdWRpb0J1c0Rh
dGEmIHJlc3VsdCkKKyAgICB7CisgICAgICAgIHVpbnQ2NF90IHNpemUgPSAwOworICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZGF0YSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmVzdWx0
LmNoYW5uZWxCdWZmZXJzLmFwcGVuZChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgiCisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCisKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXJNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordXNpbmcgQXVkaW9CdXMgPSBXZWJDb3JlOjpBdWRpb0J1czsKK3VzaW5n
IEF1ZGlvRGVzdGluYXRpb24gPSBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOwordXNpbmcgQXVk
aW9JT0NhbGxiYWNrID0gV2ViQ29yZTo6QXVkaW9JT0NhbGxiYWNrOworCitzdGF0aWMgSGFzaE1h
cDxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5Kj4mIHJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eU1hcCgpCit7CisgICAgUkVMRUFT
RV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8UmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eSo+PiBtYXA7CisgICAgcmV0dXJuIG1hcDsKK30KKworc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVz
dGluYXRpb24+IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y3JlYXRlKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssCisgICAgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1bnNpZ25l
ZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMs
IGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5PihjYWxsYmFjaywgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKK30KKworUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5KiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmZpbmRC
eURlc3RpbmF0aW9uSUQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWQpCit7Cisg
ICAgcmV0dXJuIHJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eU1hcCgpLmdldChpZCk7Cit9CisK
K1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
KEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwg
dW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENo
YW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKKyAg
ICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQoreworICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQ7CisKKyAgICBhdXRvJiBjb25uZWN0aW9uID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICBj
b25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kU3luYygKKyAgICAgICAgTWVzc2FnZXM6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKGlucHV0RGV2
aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2Ft
cGxlUmF0ZSksCisgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
cjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbjo6UmVwbHkoZGVzdGluYXRpb25JRCksIDApOworICAg
IGNvbm5lY3Rpb24uYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgZGVzdGluYXRpb25JRC50b1VJbnQ2
NCgpLCAqdGhpcyk7CisKKyAgICBtX2Rlc3RpbmF0aW9uSUQgPSBkZXN0aW5hdGlvbklEOworICAg
IG1fcmVhbERlc3RpbmF0aW9uID0gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCp0aGlzLCBpbnB1
dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMs
IHNhbXBsZVJhdGUpOworfQorCitSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6On5SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uUHJveHkoKQoreworICAgIGF1dG8mIGNvbm5lY3Rpb24gPSAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICBjb25u
ZWN0aW9uLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZGVzdGluYXRpb25JRC50b1VJbnQ2
NCgpKTsKKworICAgIGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseSgK
KyAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpEZWxldGVB
dWRpb0Rlc3RpbmF0aW9uKG1fZGVzdGluYXRpb25JRCksIFtdIHsKKyAgICAgICAgLy8gQ2FuJ3Qg
cmVtb3ZlIHRoaXMgZnJvbSBwcm94eU1hcCgpIGhlcmUgYmVjYXVzZSB0aGUgb2JqZWN0IHdvdWxk
IGhhdmUgYmVlbiBhbHJlYXkgZGVsZXRlZC4KKyAgICB9KTsKK30KKwordm9pZCBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHk6OnN0YXJ0KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYygKKyAg
ICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdGFydEF1ZGlv
RGVzdGluYXRpb24obV9kZXN0aW5hdGlvbklEKSwKKyAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdGFydEF1ZGlvRGVzdGluYXRpb246OlJlcGx5KG1faXNQ
bGF5aW5nKSwgMCk7CisgICAgbV9yZWFsRGVzdGluYXRpb24tPnN0YXJ0KCk7Cit9CisKK3ZvaWQg
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdG9wKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
U3luYygKKyAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpT
dG9wQXVkaW9EZXN0aW5hdGlvbihtX2Rlc3RpbmF0aW9uSUQpLAorICAgICAgICBNZXNzYWdlczo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlN0b3BBdWRpb0Rlc3RpbmF0aW9uOjpSZXBs
eShtX2lzUGxheWluZyksIDApOworICAgIG1fcmVhbERlc3RpbmF0aW9uLT5zdG9wKCk7Cit9CisK
K3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpyZW5kZXIoQXVkaW9CdXMqIHNvdXJj
ZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQor
eworICAgIGZwcmludGYoc3RkZXJyLCAicmVuZGVyIHNvdXJjZUJ1cz0lcCBkZXN0aW5hdGlvbkJ1
cz0lcCBmcmFtZXNUb1Byb2Nlc3M9JWx1XG4iLCBzb3VyY2VCdXMsIGRlc3RpbmF0aW9uQnVzLCBm
cmFtZXNUb1Byb2Nlc3MpOworICAgIG1fY2FsbGJhY2sucmVuZGVyKHNvdXJjZUJ1cywgZGVzdGlu
YXRpb25CdXMsIGZyYW1lc1RvUHJvY2Vzcyk7Cit9CisKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5OjpyZW5kZXJCdWZmZXIoY29uc3QgV2ViS2l0OjpSZW1vdGVBdWRpb0J1c0RhdGEm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
ZnByaW50ZihzdGRlcnIsICJyZW5kZXJCdWZmZXIhIVxuIik7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKK30KKwordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmRpZENoYW5nZUlz
UGxheWluZyhib29sIGlzUGxheWluZykKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgImRpZENoYW5n
ZUlzUGxheWluZyEhIGlzUGxheWluZz0lZFxuIiwgaXNQbGF5aW5nKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxl
bWVudC5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvQnVzRGF0YS5oIgorI2luY2x1ZGUgIlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rl
c3RpbmF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0lPQ2FsbGJhY2suaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisvKgorY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IGZp
bmFsIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkpOworcHVibGljOgorICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5PiBjcmVhdGUoKSB7
IHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eT4oKTsgfQorCisg
ICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KCk7CisgICAgflJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eSgpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9jZXNz
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CisKKyAgICB2b2lkIHJlbmRl
cihjb25zdCBXZWJLaXQ6OlJlbW90ZUF1ZGlvQnVzRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBpc1BsYXlpbmdEaWRDaGFuZ2UoKTsKKworICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworCitwcml2YXRlOgorICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Cit9Owor
Ki8KK2NsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpB
dWRpb0Rlc3RpbmF0aW9uLCBwcml2YXRlIFdlYkNvcmU6OkF1ZGlvSU9DYWxsYmFjaywgcHJpdmF0
ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KTsKK3B1
YmxpYzoKKyAgICB1c2luZyBBdWRpb0J1cyA9IFdlYkNvcmU6OkF1ZGlvQnVzOworICAgIHVzaW5n
IEF1ZGlvSU9DYWxsYmFjayA9IFdlYkNvcmU6OkF1ZGlvSU9DYWxsYmFjazsKKworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gY3JlYXRlKEF1ZGlvSU9DYWxsYmFj
ayYgY2FsbGJhY2ssCisgICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdW5zaWdu
ZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBmbG9hdCBzYW1wbGVSYXRlKTsKKworICAgIHN0YXRpYyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkqIGZpbmRCeURlc3RpbmF0aW9uSUQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIpOworCisgICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KEF1ZGlvSU9DYWxsYmFjayYs
IGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsK
KyAgICB+UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KCk7CisKKyAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlRnJvbUdQVVByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7IH0KKworICAgIHZvaWQgcmVuZGVyQnVmZmVyKGNvbnN0IFdlYktpdDo6UmVtb3RlQXVkaW9C
dXNEYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRpZENoYW5n
ZUlzUGxheWluZyhib29sIGlzUGxheWluZyk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzdGFydCgp
IG92ZXJyaWRlOworICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNQbGF5aW5n
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWFsRGVzdGluYXRpb24tPmlzUGxheWluZygpOyB9Cisg
ICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2FtcGxlUmF0
ZTsgfQorCisgICAgLy8gQXVkaW9JT0NhbGxiYWNrCisgICAgdm9pZCByZW5kZXIoQXVkaW9CdXMq
IHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKSBvdmVycmlkZTsKKyAgICB2b2lkIGlzUGxheWluZ0RpZENoYW5nZSgpIG92ZXJyaWRlIHsg
bV9jYWxsYmFjay5pc1BsYXlpbmdEaWRDaGFuZ2UoKTsgfQorCisgICAgLy8gSVBDOjpNZXNzYWdl
UmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgQXVkaW9JT0NhbGxiYWNrJiBtX2NhbGxiYWNrOwor
ICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKKyAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRp
ZmllciBtX2Rlc3RpbmF0aW9uSUQ7CisgICAgYm9vbCBtX2lzUGxheWluZyB7IGZhbHNlIH07Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IG1fcmVhbERlc3RpbmF0aW9uOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4JKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
IyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
KworbWVzc2FnZXMgLT4gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IE5vdFJlZkNvdW50ZWQg
eworCisgICAgUmVuZGVyQnVmZmVyKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZUF1ZGlvQnVzRGF0YSBk
YXRhKSAtPiAoKSBBc3luYworICAgIERpZENoYW5nZUlzUGxheWluZyhib29sIGlzUGxheWluZykK
KworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcAkocmV2aXNpb24g
MjU3MDI2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQ
cml2YXRlUmVtb3RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBACiAgICAg
ICAgIGNsaWVudC0+cGFyc2VXZWJWVFRDdWVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOwogfQogCi12b2lkIFRleHRUcmFja1ByaXZh
dGVSZW1vdGU6OnBhcnNlV2ViVlRUQ3VlRGF0YVN0cnVjdChJU09XZWJWVFRDdWUmJiBjdWVEYXRh
KQordm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjpwYXJzZVdlYlZUVEN1ZURhdGFTdHJ1Y3Qo
V2ViQ29yZTo6SVNPV2ViVlRUQ3VlJiYgY3VlRGF0YSkKIHsKICAgICBBU1NFUlQoY2xpZW50KCkp
OwogICAgIGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJp
dmF0ZVJlbW90ZS5oCShyZXZpc2lvbiAyNTcwMjYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0
aW9uLmgiCiAjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oPgpAQCAtMzksNiArNDAsOSBAQAog
Y2xhc3MgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZSBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJbmJh
bmRUZXh0VHJhY2tQcml2YXRlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZXh0VHJhY2tQ
cml2YXRlUmVtb3RlKQogcHVibGljOgorICAgIHVzaW5nIEdlbmVyaWNDdWVEYXRhID0gV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE7CisgICAgdXNpbmcgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSA9
IFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU7CisKICAgICBzdGF0aWMgUmVmPFRl
eHRUcmFja1ByaXZhdGVSZW1vdGU+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVSZW1vdGUmIHBs
YXllciwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZGVuZGlmaWVyLCBUZXh0VHJhY2tQ
cml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0VHJhY2tQcml2YXRlUmVtb3RlKHBsYXllciwgaWRl
bmRpZmllciwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOwpAQCAtNTgsNyArNjIsNyBAQAogCiAg
ICAgdm9pZCBwYXJzZVdlYlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYpOwogICAgIHZvaWQgcGFyc2VX
ZWJWVFRDdWVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwotICAgIHZvaWQgcGFyc2VX
ZWJWVFRDdWVEYXRhU3RydWN0KElTT1dlYlZUVEN1ZSYmKTsKKyAgICB2b2lkIHBhcnNlV2ViVlRU
Q3VlRGF0YVN0cnVjdChXZWJDb3JlOjpJU09XZWJWVFRDdWUmJik7CiAKICAgICB2b2lkIHVwZGF0
ZUNvbmZpZ3VyYXRpb24oVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mJik7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVn
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9X
ZWJNZWRpYVN0cmF0ZWd5LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViTWVkaWFTdHJhdGVneS5oIgorCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL0F1ZGlvSU9DYWxsYmFjay5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKworI2VuZGlmCisKK1dlYk1lZGlhU3RyYXRlZ3k6On5XZWJNZWRpYVN0
cmF0ZWd5KCkgPSBkZWZhdWx0OworCitzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QXVkaW9EZXN0
aW5hdGlvbj4gV2ViTWVkaWFTdHJhdGVneTo6Y3JlYXRlQXVkaW9EZXN0aW5hdGlvbihXZWJDb3Jl
OjpBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQs
CisgICAgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQoreworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKKyAgICBpZiAobV91c2VHUFVQcm9jZXNzKQorICAgICAgICByZXR1cm4gUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5OjpjcmVhdGUoY2FsbGJhY2ssIGlucHV0RGV2aWNlSWQsIG51bWJlck9m
SW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CisjZW5k
aWYKKyAgICByZXR1cm4gV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKGNhbGxiYWNr
LCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMsIHNhbXBsZVJhdGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJh
dGVneS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvV2ViTWVkaWFTdHJhdGVneS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTdHJhdGVn
eS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
blByb3h5MjsKKworY2xhc3MgV2ViTWVkaWFTdHJhdGVneSA6IHB1YmxpYyBXZWJDb3JlOjpNZWRp
YVN0cmF0ZWd5IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJNZWRpYVN0cmF0ZWd5KCk7CisK
KyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgdm9pZCBzZXRVc2VHUFVQcm9jZXNzKGJvb2wg
dXNlR1BVUHJvY2VzcykgeyBtX3VzZUdQVVByb2Nlc3MgPSB1c2VHUFVQcm9jZXNzOyB9CisjZW5k
aWYKKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbj4gY3JlYXRlQXVkaW9EZXN0aW5hdGlvbihXZWJDb3JlOjpBdWRpb0lPQ2FsbGJhY2smLAor
ICAgICAgICBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVuc2lnbmVkIG51bWJlck9mSW5w
dXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxl
UmF0ZSkgb3ZlcnJpZGU7CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgYm9vbCBtX3Vz
ZUdQVVByb2Nlc3MgeyBmYWxzZSB9OworI2VuZGlmCisKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIu
Y3BwCShyZXZpc2lvbiAyNTcwMjYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNiArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0ludFNpemUuaD4KKwogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcAkocmV2aXNpb24gMjU3MDI2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDE2ICszOSwxOSBAQAogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAi
V2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJMb2FkZXJTdHJhdGVneS5oIgor
I2luY2x1ZGUgIldlYk1lZGlhU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5j
bHVkZSAiV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5oIgogI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9u
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1l
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9hZGVyU3RyYXRlZ3kuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL01lZGlhU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUdyb3VwLmg+CkBAIC03Myw2ICs3Niw4IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitjbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
OworCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpCiB7CiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFdlYlBsYXRmb3JtU3RyYXRlZ2llcz4gcGxhdGZvcm1TdHJhdGVn
aWVzOwpAQCAtOTMsNiArOTgsMTEgQEAKICAgICByZXR1cm4gdGhpczsKIH0KIAorTWVkaWFTdHJh
dGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVNZWRpYVN0cmF0ZWd5KCkKK3sKKyAg
ICByZXR1cm4gbmV3IFdlYk1lZGlhU3RyYXRlZ3k7Cit9CisKIEJsb2JSZWdpc3RyeSogV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkoKQogewogICAgIHJldHVybiBuZXcg
QmxvYlJlZ2lzdHJ5UHJveHk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCShy
ZXZpc2lvbiAyNTcwMjYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcg
QEAKICAgICAvLyBXZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMKICAgICBXZWJDb3JlOjpMb2Fk
ZXJTdHJhdGVneSogY3JlYXRlTG9hZGVyU3RyYXRlZ3koKSBvdmVycmlkZTsKICAgICBXZWJDb3Jl
OjpQYXN0ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpIG92ZXJyaWRl
OworICAgIFdlYkNvcmU6Ok1lZGlhU3RyYXRlZ3kqIGNyZWF0ZU1lZGlhU3RyYXRlZ3koKSBvdmVy
cmlkZTsKICAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnkqIGNyZWF0ZUJsb2JSZWdpc3RyeSgpIG92
ZXJyaWRlOwogCiAgICAgLy8gV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjU3
MDI2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsNyBAQAogI2luY2x1ZGUgIldlYkluc3BlY3RvclVJ
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJMb2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIldl
Yk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVN0cmF0ZWd5Lmgi
CiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmgiCkBAIC0xOTksNiArMjAwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BpbmdMb2FkZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Q
bGF0Zm9ybVN0cmF0ZWdpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRvY3VtZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Qb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1ByaW50Q29udGV4dC5oPgpAQCAtMzY4MSw2ICszNjgzLDggQEAKICAgICAgICAg
bV9kcmF3aW5nQXJlYS0+dXBkYXRlUHJlZmVyZW5jZXMoc3RvcmUpOwogCiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQorICAgIC8vIEZJWE1FOiB1c2VHUFVQcm9jZXNzRm9yTWVkaWEgc2hvdWxkIGJl
IGEgUnVudGltZUVuYWJsZWRGZWF0dXJlIHNpbmNlIGl0J3MgZ2xvYmFsLgorICAgIHN0YXRpY19j
YXN0PFdlYk1lZGlhU3RyYXRlZ3kmPihwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bWVkaWFTdHJhdGVn
eSgpKS5zZXRVc2VHUFVQcm9jZXNzKHNldHRpbmdzLnVzZUdQVVByb2Nlc3NGb3JNZWRpYSgpKTsK
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlcj4oKS0+dXBkYXRlUHJlZmVyZW5jZXMoc2V0dGluZ3MpOwogI2VuZGlmCiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkocmV2aXNpb24gMjU3MDI2KQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICAgICAvLyBXZWJDb3JlOjpQbGF0Zm9y
bVN0cmF0ZWdpZXMKICAgICBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSogY3JlYXRlTG9hZGVyU3Ry
YXRlZ3koKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0
ZVBhc3RlYm9hcmRTdHJhdGVneSgpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6Ok1lZGlhU3RyYXRl
Z3kqIGNyZWF0ZU1lZGlhU3RyYXRlZ3koKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpCbG9iUmVn
aXN0cnkqIGNyZWF0ZUJsb2JSZWdpc3RyeSgpIG92ZXJyaWRlOwogCiAgICAgLy8gV2ViQ29yZTo6
UGFzdGVib2FyZFN0cmF0ZWd5CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCShy
ZXZpc2lvbiAyNTcwMjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDEx
IEBACiAjaW1wb3J0ICJXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW1wb3J0ICJXZWJQ
bHVnaW5QYWNrYWdlLmgiCiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIKKyNp
bXBvcnQgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9CbG9i
UmVnaXN0cnlJbXBsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ZyYW1lLmg+CisjaW1wb3J0IDxXZWJDb3JlL01lZGlhU3RyYXRlZ3kuaD4KICNpbXBvcnQg
PFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3Rl
Ym9hcmRJdGVtSW5mby5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVBhc3RlYm9hcmQuaD4K
QEAgLTU3LDYgKzU5LDIxIEBACiAgICAgcmV0dXJuIG5ldyBXZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI7CiB9CiAKK2NsYXNzIFdlYk1lZGlhU3RyYXRlZ3kgZmluYWwgOiBwdWJsaWMgTWVkaWFTdHJh
dGVneSB7Citwcml2YXRlOgorCisgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+
IGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgY29uc3Qg
U3RyaW5nJiBpbnB1dERldmljZUlkLAorICAgICAgICB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hh
bm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUp
IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRl
KGNhbGxiYWNrLCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOworICAgIH0KK307CisKK01lZGlhU3RyYXRlZ3kq
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlTWVkaWFTdHJhdGVneSgpCit7CisgICAgcmV0
dXJuIG5ldyBXZWJNZWRpYVN0cmF0ZWd5OworfQorCiBQYXN0ZWJvYXJkU3RyYXRlZ3kqIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCkKIHsKICAgICByZXR1
cm4gdGhpczsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391629</attachid>
            <date>2020-02-24 22:51:57 -0800</date>
            <delta_ts>2020-02-24 22:51:57 -0800</delta_ts>
            <desc>WIP3</desc>
            <filename>webaudio-wip3.patch</filename>
            <type>text/plain</type>
            <size>88912</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjU3MDI2KQorKysgU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTAyMyw2ICsxMDIzLDcgQEAKICAg
ICBwbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uaAogCiAgICAgcGxhdGZvcm0vYXVk
aW8vQXVkaW9IYXJkd2FyZUxpc3RlbmVyLmgKKyAgICBwbGF0Zm9ybS9hdWRpby9BdWRpb0lPQ2Fs
bGJhY2suaAogICAgIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCiAgICAgcGxhdGZvcm0v
YXVkaW8vQXVkaW9Tb3VyY2VQcm92aWRlci5oCiAgICAgcGxhdGZvcm0vYXVkaW8vQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbi5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCShyZXZp
c2lvbiAyNTcwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAK
ICNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyYXRlZ3kuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgpAQCAtODQsOCArODYsOCBAQAogewogICAgIGZsb2F0IGhhcmR3YXJlU2Ft
cGxlUmF0ZSA9IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpOwogICAgIExP
RyhXZWJBdWRpbywgIj4+Pj4gaGFyZHdhcmVTYW1wbGVSYXRlID0gJWZcbiIsIGhhcmR3YXJlU2Ft
cGxlUmF0ZSk7Ci0gICAgCi0gICAgbV9kZXN0aW5hdGlvbiA9IEF1ZGlvRGVzdGluYXRpb246OmNy
ZWF0ZSgqdGhpcywgbV9pbnB1dERldmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVscywgY2hh
bm5lbENvdW50KCksIGhhcmR3YXJlU2FtcGxlUmF0ZSk7CisKKyAgICBtX2Rlc3RpbmF0aW9uID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPm1lZGlhU3RyYXRlZ3koKS5jcmVhdGVBdWRpb0Rlc3RpbmF0
aW9uKCp0aGlzLCBtX2lucHV0RGV2aWNlSWQsIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBjaGFu
bmVsQ291bnQoKSwgaGFyZHdhcmVTYW1wbGVSYXRlKTsKIH0KIAogdm9pZCBEZWZhdWx0QXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OmVuYWJsZUlucHV0KGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjg4OSw2ICsyODg5LDggQEAK
IAkJOUFCMUYzODAxOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlBQjFGMzdF
MThFMjQ4OUEwMDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUIwMkUwQzgyMzVFQUQy
QTAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAyRTBDMzIzNUU3NkFBMDA0MDQ0QjIg
LyogVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjBBQkNBRTIzNkJCNDMxMDBCNDUwODUgLyogVGFz
a1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5QjEyMjlDNDIzRkU0QkQyMDA4Q0E3
NTEgLyogQXVkaW9EZXN0aW5hdGlvbkNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMxNTE4NjIzNTc3NDVFMDAxMTVFNkUgLyogQXVkaW9EZXN0
aW5hdGlvbkNvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJOUIxMjI5QzcyM0ZFNEQ2QTAwOENBNzUxIC8qIE1lZGlhU3RyYXRlZ3kuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMTIyOUM2MjNGRTRE
NUYwMDhDQTc1MSAvKiBNZWRpYVN0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUIyNERFOEUxNTE5NEI5NTAwQzU5QzI3IC8qIEhUTUxC
RElFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5QjI0REU4QzE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCAqLzsgfTsKIAkJ
OUIyN0ZDNjAyMzREOUFEQjAwMzk0QTQ2IC8qIFdpbmRvd0V2ZW50TG9vcC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyN0ZDNUUyMzREOUFEQTAwMzk0
QTQ2IC8qIFdpbmRvd0V2ZW50TG9vcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTlCMkQ4QTc5MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIyRDhBNzgx
NDk5N0NDRjAwRUNFRjNFIC8qIFVuZG9TdGVwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUwNjcsMTAgKzUwNjksMTAgQEAKIAkJRkQzMTYwMzYx
MkIwMjY3NjAwQzFBMzU5IC8qIFNjcmlwdFByb2Nlc3Nvck5vZGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE1RkVDMTJCMDI2NzYwMEMxQTM1OSAv
KiBTY3JpcHRQcm9jZXNzb3JOb2RlLmggKi87IH07CiAJCUZEMzE2MDNDMTJCMDI2NzYwMEMxQTM1
OSAvKiBSZWFsdGltZUFuYWx5c2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRDMxNUZGMjEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFseXNl
ci5oICovOyB9OwogCQlGRDMxNjAzRTEyQjAyNjc2MDBDMUEzNTkgLyogQW5hbHlzZXJOb2RlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNUZGNDEy
QjAyNjc2MDBDMUEzNTkgLyogQW5hbHlzZXJOb2RlLmggKi87IH07Ci0JCUZEMzE2MDdBMTJCMDI2
RjcwMEMxQTM1OSAvKiBBdWRpb0FycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA0NDEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9BcnJheS5o
ICovOyB9OwotCQlGRDMxNjA3QzEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9CdXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE2MDQ2MTJCMDI2Rjcw
MEMxQTM1OSAvKiBBdWRpb0J1cy5oICovOyB9OwotCQlGRDMxNjA3RTEyQjAyNkY3MDBDMUEzNTkg
LyogQXVkaW9DaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRDMxNjA0ODEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9DaGFubmVsLmggKi87IH07
Ci0JCUZEMzE2MDdGMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA0OTEyQjAyNkY3
MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbi5oICovOyB9OworCQlGRDMxNjA3QTEyQjAyNkY3
MDBDMUEzNTkgLyogQXVkaW9BcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkQzMTYwNDQxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQXJyYXkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRDMxNjA3
QzEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9CdXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE2MDQ2MTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0J1
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZE
MzE2MDdFMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0NoYW5uZWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE2MDQ4MTJCMDI2RjcwMEMxQTM1OSAv
KiBBdWRpb0NoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlGRDMxNjA3RjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNDkx
MkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRDMxNjA4MDEyQjAyNkY3MDBDMUEzNTkg
LyogQXVkaW9EU1BLZXJuZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZEMzE2MDRBMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0RTUEtlcm5lbC5oICov
OyB9OwogCQlGRDMxNjA4MjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9EU1BLZXJuZWxQcm9jZXNz
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE2
MDRDMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5oICovOyB9Owog
CQlGRDMxNjA4MzEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDMxNjA0RDEyQjAyNkY3MDBD
MUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyLmggKi87IH07CkBAIC01MTQ4LDcgKzUxNTAsNyBAQAog
CQlGREIxNzAwNjE0QTJCQUIyMDBBMkI1RDkgLyogTXVsdGlDaGFubmVsUmVzYW1wbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREIxNzAwNDE0QTJC
QUIyMDBBMkI1RDkgLyogTXVsdGlDaGFubmVsUmVzYW1wbGVyLmggKi87IH07CiAJCUZEQkQ0ODBE
MTU5QkM2ODcwMDkzRUI0RiAvKiBKU01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREJENDgwQjE1OUJDNjg3
MDA5M0VCNEYgLyogSlNNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oICovOyB9OwogCQlGREM1
NEYwNTEzOTlCMERBMDA4RDkxMTcgLyogQmlxdWFkRmlsdGVyTm9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRDNTRGMDIxMzk5QjBEQTAwOEQ5MTE3
IC8qIEJpcXVhZEZpbHRlck5vZGUuaCAqLzsgfTsKLQkJRkRFMkQ1NUIxNTlFNjZFQjAwRENDQ0Y4
IC8qIEF1ZGlvSU9DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkRFMkQ1NUExNTlFNjZFQjAwRENDQ0Y4IC8qIEF1ZGlvSU9DYWxsYmFjay5o
ICovOyB9OworCQlGREUyRDU1QjE1OUU2NkVCMDBEQ0NDRjggLyogQXVkaW9JT0NhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREUyRDU1QTE1
OUU2NkVCMDBEQ0NDRjggLyogQXVkaW9JT0NhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkRFQTYyNDMxNTIxMDJFMjAwNDc5REYwIC8q
IEpTT3NjaWxsYXRvck5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZERUE2MjQxMTUyMTAyRTIwMDQ3OURGMCAvKiBKU09zY2lsbGF0b3JOb2RlLmgg
Ki87IH07CiAJCUZERUE2MjQ3MTUyMTAyRkMwMDQ3OURGMCAvKiBKU1BlcmlvZGljV2F2ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRFQTYyNDUxNTIx
MDJGQzAwNDc5REYwIC8qIEpTUGVyaW9kaWNXYXZlLmggKi87IH07CiAJCUZERjA5REM5MTM5OUI2
MjIwMDY4OEU1QiAvKiBKU0JpcXVhZEZpbHRlck5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZERjA5REM3MTM5OUI2MjIwMDY4OEU1QiAvKiBKU0Jp
cXVhZEZpbHRlck5vZGUuaCAqLzsgfTsKQEAgLTExMTk2LDYgKzExMTk4LDcgQEAKIAkJOUIwQUJD
QTQyMzY3OUFDRjAwQjQ1MDg1IC8qIFdvcmtlckV2ZW50TG9vcC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXb3JrZXJFdmVudExvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUIwQUJDQUMyMzZCQjQwQTAwQjQ1MDg1IC8qIFRhc2tTb3VyY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGFza1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjBG
RTg3MzFEOUUwMkRGMDA0QThBQ0IgLyogRG9jdW1lbnRPclNoYWRvd1Jvb3QuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IERvY3VtZW50T3JTaGFkb3dSb290LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOUIxMjI5QzYyM0ZFNEQ1RjAwOENBNzUxIC8qIE1lZGlhU3RyYXRlZ3ku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5QjEzMjU3QjFGM0QyQUJBMDBEQUFCNjkgLyogRGF0YVRyYW5zZmVySXRlbUxpc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YVRyYW5zZmVySXRl
bUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjE5QjY3RTFCOTY0RTUy
MDAzNDg3NDUgLyogU2hhZG93Um9vdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hhZG93
Um9vdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMUFCMDc5MTY0OEM2OUQw
MDUxRjNGMiAvKiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU5
MjIsNiArMjU5MjUsNyBAQAogCQkJCUNERjJCMDAzMTgxRjA1OUMwMEYyQjQyNCAvKiBNZWRpYURl
c2NyaXB0aW9uLmggKi8sCiAJCQkJQ0Q2NDFFQzcxODFFRDYwMTAwRUU0QzQxIC8qIE1lZGlhU2Ft
cGxlLmggKi8sCiAJCQkJQTE3RDI3NUQxRUFDNTc5ODAwQkYwMUU3IC8qIE1lZGlhU2VsZWN0aW9u
T3B0aW9uLmggKi8sCisJCQkJOUIxMjI5QzYyM0ZFNEQ1RjAwOENBNzUxIC8qIE1lZGlhU3RyYXRl
Z3kuaCAqLywKIAkJCQlCQzc3MkM0QzBDNEVCMzA0MDA4MzI4NUYgLyogTUlNRVR5cGVSZWdpc3Ry
eS5jcHAgKi8sCiAJCQkJQkM3NzJDNEQwQzRFQjMwNDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0
cnkuaCAqLywKIAkJCQlFMTUxM0Q1MDE2NzdGMDg4MDAxNDlGQ0IgLyogTm90SW1wbGVtZW50ZWQu
Y3BwICovLApAQCAtMjk3MTQsNiArMjk3MTgsNyBAQAogCQkJCUUzMTUwRUE3MURBNzIxOTMwMDE5
NDAxMiAvKiBET01KSVRIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFM0E3NzY2NzFEQzg1
RDI4MDBCNjkwRDggLyogRE9NSklUSURMQ29udmVydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNB
Nzc2NjgxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETFR5cGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTlCMTIyOUM0MjNGRTRCRDIwMDhDQTc1MSAvKiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaCBp
biBIZWFkZXJzICovLAogCQkJCUUzNTgwMkI2MURDODQzNUQwMEE5NzczQyAvKiBET01KSVRJRExU
eXBlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzZBQ0VDQTFFQ0E5NTY5MDA0QkQwMTIg
LyogRE9NTWF0cml4LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0JCQkNDNzFGNTYwNTgxMDA1RUZB
QUMgLyogRE9NTWF0cml4MkRJbml0LmggaW4gSGVhZGVycyAqLywKQEAgLTMxMTk4LDYgKzMxMjAz
LDcgQEAKIAkJCQk2RUU4QTc3MzEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRy
aWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzJDQkY0RTE0MEYxQUJEMDAzODc5QkUgLyog
SlNXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkUzRkFEMzkxNDczM0Y0
MDExRTQyMzA3IC8qIEpTV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJOUIxMjI5QzcyM0ZFNEQ2QTAwOENBNzUxIC8qIE1lZGlhU3RyYXRlZ3kuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTZFM0ZBRDM5MTQ3MzNGNDAyMkU0MjMwNyAvKiBKU1dlYkdMRGVidWdTaGFkZXJz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTNGQUQzOTE0NzMzRjQwMDBFNDIzMDcgLyogSlNXZWJH
TERlcHRoVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkVCRjBFNzcxMkE5ODY4ODAwREIx
NzBBIC8qIEpTV2ViR0xEcmF3QnVmZmVycy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTWVkaWFTdHJhdGVneS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lZGlhU3RyYXRlZ3kuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvRGVzdGluYXRpb247Citj
bGFzcyBBdWRpb0lPQ2FsbGJhY2s7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIE1lZGlhU3RyYXRl
Z3kgeworcHVibGljOgorICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRp
b24+IGNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oCisgICAgICAgIEF1ZGlvSU9DYWxsYmFjayYsIGNv
bnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxz
LCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKSA9IDA7
Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+TWVkaWFTdHJhdGVneSgpID0gZGVmYXVsdDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiAyNTcwMjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksNyBAQAogCiBjbGFzcyBCbG9iUmVnaXN0cnk7CiBjbGFzcyBMb2FkZXJTdHJhdGVneTsK
K2NsYXNzIE1lZGlhU3RyYXRlZ3k7CiBjbGFzcyBQYXN0ZWJvYXJkU3RyYXRlZ3k7CiAKIGNsYXNz
IFBsYXRmb3JtU3RyYXRlZ2llcyB7CkBAIC0zOSw3ICs0MCw3IEBACiAgICAgICAgICAgICBtX2xv
YWRlclN0cmF0ZWd5ID0gY3JlYXRlTG9hZGVyU3RyYXRlZ3koKTsKICAgICAgICAgcmV0dXJuIG1f
bG9hZGVyU3RyYXRlZ3k7CiAgICAgfQotICAgIAorCiAgICAgUGFzdGVib2FyZFN0cmF0ZWd5KiBw
YXN0ZWJvYXJkU3RyYXRlZ3koKQogICAgIHsKICAgICAgICAgaWYgKCFtX3Bhc3RlYm9hcmRTdHJh
dGVneSkKQEAgLTQ3LDYgKzQ4LDEzIEBACiAgICAgICAgIHJldHVybiBtX3Bhc3RlYm9hcmRTdHJh
dGVneTsKICAgICB9CiAKKyAgICBNZWRpYVN0cmF0ZWd5JiBtZWRpYVN0cmF0ZWd5KCkKKyAgICB7
CisgICAgICAgIGlmICghbV9tZWRpYVN0cmF0ZWd5KQorICAgICAgICAgICAgbV9tZWRpYVN0cmF0
ZWd5ID0gY3JlYXRlTWVkaWFTdHJhdGVneSgpOworICAgICAgICByZXR1cm4gKm1fbWVkaWFTdHJh
dGVneTsKKyAgICB9CisKICAgICBCbG9iUmVnaXN0cnkqIGJsb2JSZWdpc3RyeSgpCiAgICAgewog
ICAgICAgICBpZiAoIW1fYmxvYlJlZ2lzdHJ5KQpAQCAtNjQsMTAgKzcyLDEyIEBACiBwcml2YXRl
OgogICAgIHZpcnR1YWwgTG9hZGVyU3RyYXRlZ3kqIGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkgPSAw
OwogICAgIHZpcnR1YWwgUGFzdGVib2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRl
Z3koKSA9IDA7CisgICAgdmlydHVhbCBNZWRpYVN0cmF0ZWd5KiBjcmVhdGVNZWRpYVN0cmF0ZWd5
KCkgPSAwOwogICAgIHZpcnR1YWwgQmxvYlJlZ2lzdHJ5KiBjcmVhdGVCbG9iUmVnaXN0cnkoKSA9
IDA7CiAKICAgICBMb2FkZXJTdHJhdGVneSogbV9sb2FkZXJTdHJhdGVneSB7IH07CiAgICAgUGFz
dGVib2FyZFN0cmF0ZWd5KiBtX3Bhc3RlYm9hcmRTdHJhdGVneSB7IH07CisgICAgTWVkaWFTdHJh
dGVneSogbV9tZWRpYVN0cmF0ZWd5IHsgfTsKICAgICBCbG9iUmVnaXN0cnkqIG1fYmxvYlJlZ2lz
dHJ5IHsgfTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
QnVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9C
dXMuaAkocmV2aXNpb24gMjU3MDI2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9CdXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTAgKzY2LDEwIEBACiAgICAgLy8gYWxs
b2NhdGUgaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRvIGluaXRpYWxseSBoYXZlIHRoZSBBdWRp
b0NoYW5uZWxzIGNyZWF0ZWQgd2l0aCBtYW5hZ2VkIHN0b3JhZ2UuCiAgICAgLy8gTm9ybWFsIHVz
YWdlIGlzIHRvIHBhc3MgdHJ1ZSBoZXJlLCBpbiB3aGljaCBjYXNlIHRoZSBBdWRpb0NoYW5uZWxz
IHdpbGwgbWVtb3J5LW1hbmFnZSB0aGVpciBvd24gc3RvcmFnZS4KICAgICAvLyBJZiBhbGxvY2F0
ZSBpcyBmYWxzZSB0aGVuIHNldENoYW5uZWxNZW1vcnkoKSBoYXMgdG8gYmUgY2FsbGVkIGxhdGVy
IG9uIGZvciBlYWNoIGNoYW5uZWwgYmVmb3JlIHRoZSBBdWRpb0J1cyBpcyB1c2VhYmxlLi4uCi0g
ICAgc3RhdGljIFJlZlB0cjxBdWRpb0J1cz4gY3JlYXRlKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5l
bHMsIHNpemVfdCBsZW5ndGgsIGJvb2wgYWxsb2NhdGUgPSB0cnVlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPEF1ZGlvQnVzPiBjcmVhdGUodW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscywgc2l6ZV90IGxlbmd0aCwgYm9vbCBhbGxvY2F0ZSA9IHRydWUpOwogCiAgICAgLy8gVGVs
bHMgdGhlIGdpdmVuIGNoYW5uZWwgdG8gdXNlIGFuIGV4dGVybmFsbHkgYWxsb2NhdGVkIGJ1ZmZl
ci4KLSAgICB2b2lkIHNldENoYW5uZWxNZW1vcnkodW5zaWduZWQgY2hhbm5lbEluZGV4LCBmbG9h
dCogc3RvcmFnZSwgc2l6ZV90IGxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRD
aGFubmVsTWVtb3J5KHVuc2lnbmVkIGNoYW5uZWxJbmRleCwgZmxvYXQqIHN0b3JhZ2UsIHNpemVf
dCBsZW5ndGgpOwogCiAgICAgLy8gQ2hhbm5lbHMKICAgICB1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFubmVscy5zaXplKCk7IH0KQEAgLTEyNiw3ICsxMjYs
NyBAQAogCiAgICAgLy8gQ29waWVzIHRoZSBzYW1wbGVzIGZyb20gdGhlIHNvdXJjZSBidXMgdG8g
dGhpcyBvbmUuCiAgICAgLy8gVGhpcyBpcyBqdXN0IGEgc2ltcGxlIHBlci1jaGFubmVsIGNvcHkg
aWYgdGhlIG51bWJlciBvZiBjaGFubmVscyBtYXRjaCwgb3RoZXJ3aXNlIGFuIHVwLW1peCBvciBk
b3duLW1peCBpcyBkb25lLgotICAgIHZvaWQgY29weUZyb20oY29uc3QgQXVkaW9CdXMmIHNvdXJj
ZUJ1cywgQ2hhbm5lbEludGVycHJldGF0aW9uID0gU3BlYWtlcnMpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29weUZyb20oY29uc3QgQXVkaW9CdXMmIHNvdXJjZUJ1cywgQ2hhbm5lbEludGVy
cHJldGF0aW9uID0gU3BlYWtlcnMpOwogCiAgICAgLy8gU3VtcyB0aGUgc2FtcGxlcyBmcm9tIHRo
ZSBzb3VyY2UgYnVzIHRvIHRoaXMgb25lLgogICAgIC8vIFRoaXMgaXMganVzdCBhIHNpbXBsZSBw
ZXItY2hhbm5lbCBzdW1taW5nIGlmIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgbWF0Y2gsIG90aGVy
d2lzZSBhbiB1cC1taXggb3IgZG93bi1taXggaXMgZG9uZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmgJKHJldmlzaW9uIDI1NzAy
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGluYXRpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQAogcHVibGljOgogICAgIC8vIFBhc3MgaW4g
KG51bWJlck9mSW5wdXRDaGFubmVscyA+IDApIGlmIGxpdmUvbG9jYWwgYXVkaW8gaW5wdXQgaXMg
ZGVzaXJlZC4KICAgICAvLyBQb3J0LXNwZWNpZmljIGRldmljZSBpZGVudGlmaWNhdGlvbiBpbmZv
cm1hdGlvbiBmb3IgbGl2ZS9sb2NhbCBpbnB1dCBzdHJlYW1zIGNhbiBiZSBwYXNzZWQgaW4gdGhl
IGlucHV0RGV2aWNlSWQuCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0
aW9uPiBjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiwgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlk
LCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gY3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYs
IGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsK
IAogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb24oKSA9IGRlZmF1bHQ7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9EZXN0aW5hdGlvbkNvY29hLmNwcAkocmV2aXNpb24gMjU3MDI2KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE1LDYgKzExNSwxMSBAQAogICAgIG1fY2FsbGJhY2suaXNQbGF5aW5nRGlk
Q2hhbmdlKCk7CiB9CiAKK3Vuc2lnbmVkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cmVuZGVyQnVm
ZmVyU2l6ZSgpCit7CisgICAgcmV0dXJuIGtSZW5kZXJCdWZmZXJTaXplOworfQorCiB2b2lkIEF1
ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRm9ybWF0LCBmbG9hdCBzYW1wbGVSYXRlKQog
ewogICAgIGNvbnN0IGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29h
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9EZXN0aW5hdGlvbkNvY29hLmgJKHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NSw2ICs0NSw5IEBACiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ3JlYXRl
QXVkaW9EZXN0aW5hdGlvbkNvY29hT3ZlcnJpZGUgY3JlYXRlT3ZlcnJpZGU7CiAKKyAgICBzdGF0
aWMgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgcmVuZGVyQnVmZmVyU2l6ZSgpOworICAgIHN0YXRp
YyBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mLCBmbG9hdCBzYW1wbGVSYXRlKTsKKwogcHJvdGVjdGVk
OgogICAgIHZvaWQgc2V0SXNQbGF5aW5nKGJvb2wpOwogCkBAIC01NSw4ICs1OCw2IEBACiAgICAg
Ly8gRGVmYXVsdE91dHB1dFVuaXQgY2FsbGJhY2sKICAgICBzdGF0aWMgT1NTdGF0dXMgaW5wdXRQ
cm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyosIGNvbnN0IEF1
ZGlvVGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwgVUludDMyIG51bWJlck9mRnJhbWVzLCBB
dWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CiAKLSAgICB2b2lkIHNldEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbihBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mLCBmbG9hdCBzYW1wbGVSYXRl
KTsKLQogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9w
KCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNTcwMjYpCisrKyBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTE2LDYgKzE2LDcgQEAK
ICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0LkdQVVByb2Nl
c3Muc2IuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
ci5tZXNzYWdlcy5pbgpAQCAtMTA4LDYgKzEwOSw3IEBACiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRD
Q29kZWNzLm1lc3NhZ2VzLmluCkluZGV4OiBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2
ICsxMjMsMTAgQEAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1BsdWdpblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUGx1Z2luUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbHVnaW5Qcm94eU1lc3NhZ2VzUmVwbGll
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlck1lc3NhZ2VzLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXJNZXNz
YWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHlNZXNzYWdlcy5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eU1lc3Nh
Z2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oCkluZGV4OiBTb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlCShyZXZpc2lvbiAyNTcwMjYpCisrKyBTb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw2ICsxNDMsOCBAQAogICAgIFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlciBcCiAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5IFwKICAgICBQ
bHVnaW5Qcm94eSBcCisgICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIgXAorICAgIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSBcCiAgICAgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJNYW5hZ2VyIFwKICAgICBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlciBcCiAgICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSBcCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCShyZXZpc2lvbiAyNTcwMjYpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDgg
QEAKICNpbmNsdWRlICJMaWJXZWJSVENDb2RlY3NQcm94eS5oIgogI2luY2x1ZGUgIkxpYldlYlJU
Q0NvZGVjc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAi
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1lc3NhZ2VzLmgiCkBAIC0xMjQsNiArMTI2LDE0IEBA
CiAgICAgQ1JBU0goKTsKIH0KIAorUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXImIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKCkKK3sK
KyAgICBpZiAoIW1fcmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIpCisgICAgICAgIG1fcmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIgPSBtYWtlVW5pcXVlPFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25NYW5hZ2VyPigqdGhpcyk7CisKKyAgICByZXR1cm4gKm1fcmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXI7Cit9CisKIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyJiBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcigpCiB7CiAgICAgaWYg
KCFtX3JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKQpAQCAtMTg4LDEzICsxOTgsMTkgQEAKIAog
dm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgcmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNz
KGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICByZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3Mo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKLSAgICB9IGVsc2UgaWYgKGRl
Y29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
clByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICB9CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgcmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkoKS5kaWRSZWNlaXZlUGxheWVyTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsK
ICAgICAgICAgcmV0dXJuOwotICAgIH0gZWxzZSBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpIHsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CiAgICAgICAgIHJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyKCkuZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0yNDAsNiArMjU2LDExIEBACiAKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNv
ZGVyKQogeworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkg
eworICAgICAgICByZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVTeW5j
TWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkoKS5kaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNv
ZGVyLCByZXBseUVuY29kZXIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlz
aW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKIAogY2xhc3MgR1BV
UHJvY2VzczsKIGNsYXNzIExpYldlYlJUQ0NvZGVjc1Byb3h5OworY2xhc3MgUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbk1hbmFnZXI7CiBjbGFzcyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlck1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKIGNsYXNz
IFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOwpAQCAtNzMsNiArNzQsNyBAQAogcHJpdmF0ZToK
ICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKEdQVVByb2Nlc3MmLCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25J
RCk7CiAKKyAgICBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlciYgcmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXIoKTsKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSYgcmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKTsKICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNF
KExJQldFQlJUQykKICAgICBMaWJXZWJSVENDb2RlY3NQcm94eSYgbGliV2ViUlRDQ29kZWNzUHJv
eHkoKTsKQEAgLTk3LDYgKzk5LDcgQEAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb247CiAgICAgUmVmPEdQVVByb2Nlc3M+IG1fZ3B1UHJvY2VzczsKICAgICBjb25zdCBXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX3dlYlByb2Nlc3NJZGVudGlmaWVyOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcj4gbV9yZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXI+IG1fcmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5PiBtX3JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwpJbmRleDogU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVk
aW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCIKKworI2luY2x1
ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb0J1
c0RhdGEuaCIKKyNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9CdXMu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0F1ZGlvSU9DYWxsYmFjay5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
CisjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CisKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUg
PEF1ZGlvVW5pdC9BdWRpb1VuaXQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRp
b25Db2NvYS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjZW5kaWYKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24gOiBwdWJs
aWMgV2ViQ29yZTo6QXVkaW9JT0NhbGxiYWNrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKTsKK3B1
YmxpYzoKKyAgICB1c2luZyBBdWRpb0J1cyA9IFdlYkNvcmU6OkF1ZGlvQnVzOworICAgIHVzaW5n
IEF1ZGlvRGVzdGluYXRpb24gPSBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOworICAgIHVzaW5n
IFNoYXJlZEJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjsKKworICAgIFJlbW90ZUF1ZGlv
RGVzdGluYXRpb24oR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWQsCisgICAgICAgIGNvbnN0IFN0cmluZyYgaW5w
dXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQorICAgICAgICA6IG1fY29ubmVj
dGlvbihjb25uZWN0aW9uKQorICAgICAgICAsIG1faWQoaWQpCisgICAgICAgICwgbV9kZXN0aW5h
dGlvbihBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoKnRoaXMsIGlucHV0RGV2aWNlSWQsIG51bWJl
ck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSkpCisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgICwgbV9yaW5nQnVmZmVyKG1ha2VVbmlxdWVSZWY8
U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KG51bGxwdHIpKQorI2VuZGlmCisgICAgeworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgICAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gZGVzY3Jp
cHRpb247CisgICAgICAgIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0QXVkaW9T
dHJlYW1CYXNpY0Rlc2NyaXB0aW9uKGRlc2NyaXB0aW9uLCBzYW1wbGVSYXRlKTsKKyAgICAgICAg
bV9yaW5nQnVmZmVyLmFsbG9jYXRlKGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0
aW9uQ29jb2E6OnJlbmRlckJ1ZmZlclNpemUoKSAqIDE2KTsKKyAgICAgICAgU2hhcmVkTWVtb3J5
OjpIYW5kbGUgaGFuZGxlOworICAgICAgICBtX3NoYXJlZE1lbW9yeSA9IHN0YXRpY19jYXN0PFNo
YXJlZFJpbmdCdWZmZXJTdG9yYWdlJj4obV9yaW5nQnVmZmVyLnN0b3JhZ2UoKSkuc3RvcmFnZSgp
OworI2VuZGlmCisgICAgfQorCisgICAgdmlydHVhbCB+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbigp
CisgICAgeworICAgICAgICBpZiAobV9kZXN0aW5hdGlvbi0+aXNQbGF5aW5nKCkpCisgICAgICAg
ICAgICBtX2Rlc3RpbmF0aW9uLT5zdG9wKCk7CisgICAgfQorCisgICAgU2hhcmVkTWVtb3J5KiBz
aGFyZWRNZW1vcnkoKSB7IHJldHVybiBtX3NoYXJlZE1lbW9yeS5nZXQoKTsgfQorCisgICAgdm9p
ZCByZW5kZXIoQXVkaW9CdXMqIHNvdXJjZUJ1cywgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKGZy
YW1lc1RvUHJvY2VzcyA9PSBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnJlbmRlckJ1
ZmZlclNpemUoKSk7CisgICAgICAgIEJpbmFyeVNlbWFwaG9yZSByZW5kZXJTZW1hcGhvcmU7CisK
KyAgICAgICAgVmVjdG9yPFJlZjxTaGFyZWRNZW1vcnk+PiBidWZmZXJzOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVzdGluYXRpb25CdXMtPm51bWJlck9mQ2hhbm5lbHMoKTsg
KytpKSB7CisgICAgICAgICAgICBhdXRvIG1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUo
c2l6ZW9mKGZsb2F0KSAqIFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6cmVuZGVyQnVm
ZmVyU2l6ZSgpKTsKKyAgICAgICAgICAgIGJ1ZmZlcnMuYXBwZW5kKCptZW1vcnkpOworICAgICAg
ICB9CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgJmJ1ZmZlcnMsICZyZW5kZXJT
ZW1hcGhvcmVdIHsKKyAgICAgICAgICAgIFJlbW90ZUF1ZGlvQnVzRGF0YSBidXNEYXRhIHsgYnVm
ZmVycy5tYXAoW10oYXV0byYgbWVtb3J5KSB7IHJldHVybiBtZW1vcnkuY29weVJlZigpOyB9KSB9
OworICAgICAgICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6UmVuZGVyQnVmZmVyKGJ1
c0RhdGEpLCBbJl0oKSB7CisgICAgICAgICAgICAgICAgcmVuZGVyU2VtYXBob3JlLnNpZ25hbCgp
OworICAgICAgICAgICAgfSwgbV9pZC50b1VJbnQ2NCgpKTsKKyAgICAgICAgfSk7CisgICAgICAg
IHJlbmRlclNlbWFwaG9yZS53YWl0KCk7CisKKyAgICAgICAgYXV0byBhdWRpb0J1cyA9IEF1ZGlv
QnVzOjpjcmVhdGUoYnVmZmVycy5zaXplKCksIGZyYW1lc1RvUHJvY2VzcywgZmFsc2UpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVmZmVycy5zaXplKCk7ICsraSkKKyAgICAg
ICAgICAgIGF1ZGlvQnVzLT5zZXRDaGFubmVsTWVtb3J5KGksIChmbG9hdCopYnVmZmVyc1tpXS0+
ZGF0YSgpLCBmcmFtZXNUb1Byb2Nlc3MpOworICAgICAgICBkZXN0aW5hdGlvbkJ1cy0+Y29weUZy
b20oKmF1ZGlvQnVzKTsKKworICAgIH0KKworICAgIHZvaWQgaXNQbGF5aW5nRGlkQ2hhbmdlKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXNdIHsKKyAgICAg
ICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQXVk
aW9EZXN0aW5hdGlvblByb3h5OjpEaWRDaGFuZ2VJc1BsYXlpbmcobV9kZXN0aW5hdGlvbi0+aXNQ
bGF5aW5nKCkpLCBtX2lkLnRvVUludDY0KCkpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICB2
b2lkIHN0YXJ0KCkgeyBtX2Rlc3RpbmF0aW9uLT5zdGFydCgpOyB9CisgICAgdm9pZCBzdG9wKCkg
eyBtX2Rlc3RpbmF0aW9uLT5zdG9wKCk7IH0KKyAgICBib29sIGlzUGxheWluZygpIHsgcmV0dXJu
IG1fZGVzdGluYXRpb24tPmlzUGxheWluZygpOyB9CisKK3ByaXZhdGU6CisgICAgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uOworICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyIG1faWQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+
IG1fZGVzdGluYXRpb247CisgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV2ViQ29yZTo6Q0FSaW5nQnVmZmVyIG1fcmluZ0J1
ZmZlcjsKKyNlbmRpZgorfTsKKworUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5l
Y3Rpb24pCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29ubmVjdGlvbikKK3sK
K30KKworUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6On5SZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlcigpID0gZGVmYXVsdDsKKwordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFu
YWdlcjo6Y3JlYXRlQXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQs
IHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRs
ZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIC8vIFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisKKyAgICBhdXRvIG5ld0lEID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpOworICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtl
VW5pcXVlPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+KG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cywgbmV3SUQsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CisKKyAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBo
YW5kbGU7CisgICAgaWYgKGF1dG8qIHNoYXJlZE1lbW9yeSA9IGNhbGxiYWNrLT5zaGFyZWRNZW1v
cnkoKSkKKyAgICAgICAgc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CisKKyAgICBtX2F1ZGlvRGVzdGluYXRpb25z
LmFkZChuZXdJRCwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG5l
d0lELCBoYW5kbGUpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpk
ZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlk
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
bV9hdWRpb0Rlc3RpbmF0aW9ucy5yZW1vdmUoaWQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
Cit9CisKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0
aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBib29sIGlzUGxh
eWluZyA9IGZhbHNlOworICAgIGlmIChhdXRvKiBpdGVtID0gbV9hdWRpb0Rlc3RpbmF0aW9ucy5n
ZXQoaWQpKSB7CisgICAgICAgIGl0ZW0tPnN0YXJ0KCk7CisgICAgICAgIGlzUGxheWluZyA9IGl0
ZW0tPmlzUGxheWluZygpOworICAgIH0KKyAgICBjb21wbGV0aW9uSGFuZGxlcihpc1BsYXlpbmcp
OworfQorCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0
aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciBpZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBib29sIGlzUGxh
eWluZyA9IGZhbHNlOworICAgIGlmIChhdXRvKiBpdGVtID0gbV9hdWRpb0Rlc3RpbmF0aW9ucy5n
ZXQoaWQpKSB7CisgICAgICAgIGl0ZW0tPnN0b3AoKTsKKyAgICAgICAgaXNQbGF5aW5nID0gaXRl
bS0+aXNQbGF5aW5nKCk7CisgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKGlzUGxheWluZyk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSAiUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCIKKyNpbmNs
dWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPG1lbW9yeT4KKworI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOworCitjbGFzcyBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlciA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKTsKK3B1YmxpYzoKKyAgICBSZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CisgICAg
flJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyKCk7CisKKyAgICB2b2lkIGNyZWF0ZUF1ZGlv
RGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNh
bXBsZVJhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJik+JiYpOworICAgIHZvaWQgZGVs
ZXRlQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHN0YXJ0QXVkaW9EZXN0aW5hdGlv
bihSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CisgICAgdm9pZCBzdG9wQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisK
KyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikKKyAgICB7CisgICAgICAgIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKKyAgICB9CisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOyB9CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCkgeyByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOyB9CisKK3By
aXZhdGU6CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworCisg
ICAgSGFzaE1hcDxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUF1ZGlvRGVzdGluYXRpb24+PiBtX2F1ZGlvRGVzdGluYXRpb25zOworICAgIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIu
bWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworbWVz
c2FnZXMgLT4gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIgTm90UmVmQ291bnRlZCB7CisK
KyAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmljZUlkLCB1aW50MzJf
dCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMs
IGZsb2F0IHNhbXBsZVJhdGUpIC0+IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVu
dGlmaWVyIGlkLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIHJpbmdCdWZmZXJTdG9yYWdl
KSBTeW5jaHJvbm91cworCisgICAgRGVsZXRlQXVkaW9EZXN0aW5hdGlvbihXZWJLaXQ6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkKSAtPiAoKSBBc3luYworCisgICAgU3RhcnRB
dWRpb0Rlc3RpbmF0aW9uKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIg
aWQpIC0+IChib29sIGlzUGxheWluZykgU3luY2hyb25vdXMKKyAgICBTdG9wQXVkaW9EZXN0aW5h
dGlvbihXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkKSAtPiAoYm9v
bCBpc1BsYXlpbmcpIFN5bmNocm9ub3VzCisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkocmV2aXNpb24gMjU3MDI2KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDExIEBACiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
K01lZGlhU3RyYXRlZ3kqIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVN
ZWRpYVN0cmF0ZWd5KCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogQmxvYlJlZ2lzdHJ5
KiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkK
IHsKICAgICB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzUGxhdGZvcm1T
dHJhdGVnaWVzLmgJKHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNiArMzgsNyBAQAogICAgIC8vIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcwogICAg
IFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpIG92ZXJyaWRl
OwogICAgIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSogY3JlYXRlUGFzdGVib2FyZFN0cmF0
ZWd5KCkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6TWVkaWFTdHJhdGVneSogY3JlYXRlTWVkaWFT
dHJhdGVneSgpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3JlYXRlQmxv
YlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
TWFjLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UJ
KHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAsNyBAQAogICAgIEdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLm1lc3NhZ2VzLmluCiAgICAgR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5tZXNzYWdl
cy5pbgogCisgICAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ci5tZXNzYWdlcy5pbgogICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5tZXNzYWdlcy5pbgogICAgIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXIubWVzc2FnZXMuaW4KICAgICBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkJKHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTIyNyw2ICsyMjcsNyBAQAog
ICAgICAgICAnV2ViS2l0OjpNRE5TUmVnaXN0ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6
Ok1lZGlhUmVjb3JkZXJJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291
cmNlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYktpdDo6UlRDRW5jb2RlcklkZW50aWZpZXInLApJbmRleDogU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmll
ci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5j
bHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Vu
dW0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90
ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUzNCwxMSArNTM0LDEzIEBACiBXZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlh
L0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1F
VHlwZUNhY2hlLmNwcCBAbm8tdW5pZnkKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VQcm94eS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVS
ZW1vdGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZS5j
cHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCiBXZWJQcm9jZXNz
L0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01l
ZGlhUmVjb3JkZXJQcml2YXRlLmNwcAogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3Jk
ZXJQcm92aWRlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI1NzAy
NikKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
NjQ0LDYgKzY0NCw4IEBACiBHUFVQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAogTGliV2ViUlRD
Q29kZWNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiBMaWJXZWJSVENDb2RlY3NNZXNzYWdlUmVj
ZWl2ZXIuY3BwCitSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5j
cHAKK1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKIFJlbW90
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAK
IFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWVzc2FnZVJlY2VpdmVyLmNwcAog
UmVtb3RlTWVkaWFSZWNvcmRlck1lc3NhZ2VSZWNlaXZlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjU3MDI2
KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTQwNSw4ICsxNDA1LDE0IEBACiAJCTlCMDJFMENCMjM1RUI5NTMwMDQw
NDRCMiAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDJFMEM5MjM1RUI2MkQwMDQwNDRCMiAvKiBf
V0tUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5QjAyRTBDQzIzNUVCOTU3MDA0MDQ0QjIgLyogX1dLVGV4
dE1hbmlwdWxhdGlvbkl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlCMDJFMENBMjM1RUI4ODQwMDQwNDRCMiAvKiBfV0tUZXh0TWFuaXB1bGF0aW9u
SXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTlCMDJFMEQ3MjM1RkM5NEYwMDQwNDRCMiAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDJFMENEMjM1
RUI5NjcwMDQwNDRCMiAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5QjEyMjlDRDIzRkYyNUYyMDA4
Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMTIyOUNCMjNGRjI1RjIwMDhDQTc1MSAv
KiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oICovOyB9OworCQk5QjEyMjlDRTIzRkYy
NUYyMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIxMjI5Q0MyM0ZGMjVGMjAw
OENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmNwcCAqLzsgfTsKKwkJOUIx
MjI5RDIyM0ZGMkJDQzAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjEyMjlE
MDIzRkYyQTVFMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCAq
LzsgfTsKIAkJOUI1NDk5QUQyMzYyQTZGOTAwREY4QkE1IC8qIF9XS1RleHRNYW5pcHVsYXRpb25D
b25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5QjU0OTlBQzIzNjJBNkY2MDBERjhCQTUgLyogX1dLVGV4dE1hbmlwdWxhdGlvbkNvbmZp
Z3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5QjU0OTlCMjIzNjJBN0VDMDBERjhCQTUgLyogX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1
c2lvblJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlCNTQ5OUIwMjM2MkE3RUMwMERGOEJBNSAvKiBfV0tUZXh0TWFuaXB1bGF0aW9uRXhjbHVzaW9u
UnVsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTlCNUJFQzI2MjQwMEY0QTkwMDcwQzZFRiAvKiBXZWJNZWRpYVN0cmF0ZWd5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVCRUMyNDI0MDBGNEE5MDA3
MEM2RUYgLyogV2ViTWVkaWFTdHJhdGVneS5oICovOyB9OworCQk5QjVCRUMyQTI0MDEwMTU4MDA3
MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjVCRUMyODI0MDEwMTU4MDA3MEM2RUYgLyog
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmggKi87IH07CisJCTlCNUJFQzMxMjQwMTAyMjIw
MDcwQzZFRiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCBpbiBDb3B5RmlsZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1QkVDMzAyNDAxMDIyMjAwNzBDNkVGIC8qIFJlbW90
ZUF1ZGlvQnVzRGF0YS5oICovOyB9OwogCQk5RkI1RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tD
b250ZXh0UHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTAy
QTcwODFFQzBFRUU5MDBEODFEODIgLyogY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyIEVTUi5w
bHVnaW4uc2IgaW4gQ29weSBQbHVnLWluIFNhbmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0E1RTM5NDkxRDVCRDhBNzAwQjRCN0NFIC8qIGNvbS5tYWNy
b21lZGlhLkZsYXNoIFBsYXllciBFU1IucGx1Z2luLnNiICovOyB9OwogCQlBMTA0NkVBMTIwNzky
NjMxMDBGMEM1RDggLyogV0tQREZWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTA0NkU5RjIwNzkyNjMxMDBGMEM1RDggLyogV0tQREZWaWV3Lmgg
Ki87IH07CkBAIC0yMDU5LDYgKzIwNjUsNyBAQAogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CiAJ
CQlmaWxlcyA9ICgKIAkJCQkyREI5NjA1MzIzOTg4NkMxMDAxMDI3OTEgLyogY29tLmFwcGxlLldl
YktpdC5HUFUuc2IgaW4gQ29weUZpbGVzICovLAorCQkJCTlCNUJFQzMxMjQwMTAyMjIwMDcwQzZF
RiAvKiBSZW1vdGVBdWRpb0J1c0RhdGEuaCBpbiBDb3B5RmlsZXMgKi8sCiAJCQkJQTc4Q0NEREIx
OTNBQzlGODAwNUVDQzI1IC8qIGNvbS5hcHBsZS5XZWJLaXQuTmV0d29ya2luZy5zYiBpbiBDb3B5
RmlsZXMgKi8sCiAJCQkJQTc4Q0NEREMxOTNBQzlGQjAwNUVDQzI1IC8qIGNvbS5hcHBsZS5XZWJL
aXQuV2ViQ29udGVudC5zYiBpbiBDb3B5RmlsZXMgKi8sCiAJCQkpOwpAQCAtNDM3OCwxMCArNDM4
NSwyMCBAQAogCQk5QjAyRTBDRDIzNUVCOTY3MDA0MDQ0QjIgLyogX1dLVGV4dE1hbmlwdWxhdGlv
blRva2VuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1RleHRNYW5pcHVsYXRpb25Ub2tlbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjAyRTBDRTIzNUVCQjE0MDA0MDQ0QjIgLyogX1dL
VGV4dE1hbmlwdWxhdGlvblRva2VuLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLVGV4dE1h
bmlwdWxhdGlvblRva2VuLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjAyRTBE
MDIzNUVCQ0NBMDA0MDQ0QjIgLyogX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0ubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOUIxMjI5Q0IyM0ZGMjVGMjAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMTIyOUNDMjNGRjI1RjIw
MDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTlCMTIyOUNGMjNGRjI4MTQwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUIxMjI5
RDAyM0ZGMkE1RTAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNTQ5OUFDMjM2MkE2RjYwMERGOEJBNSAvKiBfV0tU
ZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tUZXh0TWFu
aXB1bGF0aW9uQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
QjU0OTlBRTIzNjJBN0E3MDBERjhCQTUgLyogX1dLVGV4dE1hbmlwdWxhdGlvbkNvbmZpZ3VyYXRp
b24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJh
dGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI1NDk5QjAyMzYyQTdFQzAw
REY4QkE1IC8qIF9XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS1RleHRNYW5pcHVsYXRpb25FeGNsdXNpb25SdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlCNTQ5OUIxMjM2MkE3RUMwMERGOEJBNSAvKiBfV0tUZXh0TWFuaXB1bGF0
aW9uRXhjbHVzaW9uUnVsZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1RleHRNYW5pcHVs
YXRpb25FeGNsdXNpb25SdWxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjVC
RUMyNDI0MDBGNEE5MDA3MEM2RUYgLyogV2ViTWVkaWFTdHJhdGVneS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJNZWRpYVN0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCNUJF
QzI1MjQwMEY0QTkwMDcwQzZFRiAvKiBXZWJNZWRpYVN0cmF0ZWd5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYk1lZGlhU3RyYXRlZ3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5QjVCRUMyODI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5QjVCRUMyOTI0MDEwMTU4MDA3MEM2RUYgLyogUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCNUJF
QzJFMjQwMTAxOEMwMDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QjVCRUMzMDI0MDEwMjIyMDA3MEM2RUYgLyogUmVt
b3RlQXVkaW9CdXNEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUF1ZGlvQnVzRGF0YS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkM1OUQ2QzFFRkNDQ0I2MDAxRThEMDkgLyog
Q2FsbGJhY2tJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsYmFja0lE
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCQzU5RDZEMUVGQ0RDNkQwMDFFOEQw
OSAvKiBPcHRpb25hbENhbGxiYWNrSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT3B0aW9uYWxDYWxsYmFja0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlG
NTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBBdXhpbGlhcnlQcm9jZXNzTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyNjIsNiArNTI3OSwxMCBAQAogCQkJCTA3
OTIzMTMyMjM5QjNCMEMwMDk1OThFMiAvKiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCAqLywK
IAkJCQkwN0IxRDA0QjIzRDM4RkNFMDAzOTlBNkUgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Lm1lc3NhZ2VzLmluICovLAogCQkJCTA3OTIzMTRFMjM5RDVGNTMwMDk1OThFMiAvKiBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggKi8sCisJCQkJOUI1QkVDMzAyNDAxMDIyMjAw
NzBDNkVGIC8qIFJlbW90ZUF1ZGlvQnVzRGF0YS5oICovLAorCQkJCTlCNUJFQzJFMjQwMTAxOEMw
MDcwQzZFRiAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4gKi8sCisJ
CQkJOUI1QkVDMjkyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eS5jcHAgKi8sCisJCQkJOUI1QkVDMjgyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eS5oICovLAogCQkJCTA3QjkzRkY1MjNBRjBDQjgwMDM2RjhFQSAvKiBSZW1v
dGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQkwNzkyMzEzMDIzOUIzQjBDMDA5
NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCAqLywKIAkJCQkwNzkyMzEzNDIz
OUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmggKi8sCkBAIC01Mjc1
LDYgKzUyOTYsOCBAQAogCQkJCTA3RTE5RjA5MjNENTMzQkEwMDk0RkZCNCAvKiBUZXh0VHJhY2tQ
cml2YXRlUmVtb3RlLmggKi8sCiAJCQkJMDcxQkM1ODMyM0NDMkJENTAwNjgwRDdDIC8qIFZpZGVv
VHJhY2tQcml2YXRlUmVtb3RlLmNwcCAqLywKIAkJCQkwNzFCQzU4MjIzQ0MyQkQzMDA2ODBEN0Mg
LyogVmlkZW9UcmFja1ByaXZhdGVSZW1vdGUuaCAqLywKKwkJCQk5QjVCRUMyNTI0MDBGNEE5MDA3
MEM2RUYgLyogV2ViTWVkaWFTdHJhdGVneS5jcHAgKi8sCisJCQkJOUI1QkVDMjQyNDAwRjRBOTAw
NzBDNkVGIC8qIFdlYk1lZGlhU3RyYXRlZ3kuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWVkaWE7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTI4Miw2ICs1MzA1LDkgQEAKIAkJMDdD
NzVDMTcyMzk5QTNEQjAwODhFNjVCIC8qIG1lZGlhICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5QjEyMjlDQzIzRkYyNUYyMDA4Q0E3NTEgLyogUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwICovLAorCQkJCTlCMTIyOUNCMjNGRjI1RjIwMDhD
QTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oICovLAorCQkJCTlCMTIyOUNG
MjNGRjI4MTQwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdl
cy5pbiAqLywKIAkJCQkwNzFCQzU3RTIzQ0E1REIxMDA2ODBEN0MgLyogUmVtb3RlQXVkaW9UcmFj
a1Byb3h5LmNwcCAqLywKIAkJCQkwNzFCQzU3RjIzQ0E1REIxMDA2ODBEN0MgLyogUmVtb3RlQXVk
aW9UcmFja1Byb3h5LmggKi8sCiAJCQkJMDcyNUVGQUQyMzlCMDI0NTAwQTUzOEE5IC8qIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCAqLywKQEAgLTU3NDEsNiArNTc2Nyw3IEBACiAJ
CQkJRTE4QzkyRjMxMkRCOUU3MTAwQ0YyQUVCIC8qIFByaW50SW5mby5jcHAgKi8sCiAJCQkJRTFD
QzFCOEUxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oICovLAogCQkJCTQ2M0ZENDgxMUVC
OTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLywKKwkJCQk5QjEy
MjlEMDIzRkYyQTVFMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIu
aCAqLywKIAkJCQlGNkEwQzEzRjEzMjgxRTZFMDA3MDQzMEYgLyogUmVzb3VyY2VDYWNoZXNUb0Ns
ZWFyLmggKi8sCiAJCQkJNUNCN0FGRTYyM0M2ODFCMDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZElu
Zm8uaCAqLywKIAkJCQk0MTA0ODJDQjFEREQyRkI1MDBGMDA2RDAgLyogUlRDTmV0d29yay5jcHAg
Ki8sCkBAIC0xMDAwNiw2ICsxMDAzMyw3IEBACiAJCQkJNjMxMDhGOTYxRjk2NzE5QzAwQTBEQjg0
IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTYzMTA4Rjk5
MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUY0NDI5MTkyMUZBNTkxQzkwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5QjVCRUMyNjI0MDBGNEE5MDA3MEM2RUYgLyogV2ViTWVk
aWFTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ0MjkxOTYxRkE1OTQyQTAwMkNDOTNF
IC8qIF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlFNzE0QzUx
QzEyNEEwNDAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTkwRDI4QUIxQzY0MjBDNjAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uLmgg
aW4gSGVhZGVycyAqLywKQEAgLTEwMDc5LDYgKzEwMTA3LDcgQEAKIAkJCQk5QjU0OTlCMjIzNjJB
N0VDMDBERjhCQTUgLyogX1dLVGV4dE1hbmlwdWxhdGlvbkV4Y2x1c2lvblJ1bGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTlCMDJFMENDMjM1RUI5NTcwMDQwNDRCMiAvKiBfV0tUZXh0TWFuaXB1bGF0
aW9uSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIwMkUwRDcyMzVGQzk0RjAwNDA0NEIyIC8q
IF9XS1RleHRNYW5pcHVsYXRpb25Ub2tlbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUIxMjI5Q0Qy
M0ZGMjVGMjAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRDZCMzcxQjE4QTk2N0FEMDA0MkFFODAgLyogX1dLVGh1bWJuYWlsVmll
dy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBQ0U2NEUxOEFEQkZGMDAwRTRDQTc2IC8qIF9XS1Ro
dW1ibmFpbFZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlFNzE4OUMyMUY3OUQ5
RTAwNTVFOTc1IC8qIF9XS1RvdWNoRXZlbnRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAt
MTA1OTcsNiArMTA2MjYsNyBAQAogCQkJCTUzQ0ZCQkM4MjIyNEQxQjUwMDI2NjU0NiAvKiBUZXh0
Q2hlY2tlckNvbXBsZXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNUU0REE0MTJEM0JEM0Qw
MDk5QTJCQiAvKiBUZXh0Q2hlY2tlclN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTFBMEJE
NzFBNDhFNkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQk5
QjEyMjlEMjIzRkYyQkNDMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUYyNjM5MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMDVEODcx
NDY4ODM0ODAwOEIxRTgxIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkuaCBp
biBIZWFkZXJzICovLAogCQkJCTJGODMzNjg2MUZBMTM5REYwMEM2RTA4MCAvKiBUb3VjaEJhck1l
bnVEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTExMjQyLDYgKzExMjcyLDcgQEAKIAkJCQkzNzk1
Nzg5QzE4QUQ0RjE5MDBCOUVEMkUgLyogV0tXZWJQcm9jZXNzUGx1Z0luRm9ybURlbGVnYXRlUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUY3NTA2QjExODU5MTYzNzAwRUMwRkY3IC8qIFdL
V2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRjc1MDZCODE4NTkx
NjVEMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWVJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOUI1QkVDMkEyNDAxMDE1ODAwNzBDNkVGIC8qIFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzczRDEyMkQxOEE0QjZFQjAwNjZEOUND
IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUY3NTA2QjIxODU5MTYzRTAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1
bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGNzUwNkI3MTg1OTE2NUEwMEVDMEZGNyAvKiBXS1dl
YlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAt
MTIyMjAsNiArMTIyNTEsNyBAQAogCQkJCTkzNjhFRURFMjMwM0E5MDIwMEJEQjExQSAvKiBTdG9y
YWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDky
QTc4MzIxMkI2QTcxMDBGNDkzRkQgLyogU3RyaW5nUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJEMTFCNzUxMjEyNkEyODIwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMS1tbS5tbSBp
biBTb3VyY2VzICovLAorCQkJCTlCMTIyOUNFMjNGRjI1RjIwMDhDQTc1MSAvKiBSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDExQjc1MjIxMjZB
MjgyMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQx
MUI3NTQyMTI2QTI4MjAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJEMTFCNzUzMjEyNkEyODIwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMi1tbS5tbSBp
biBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAJKHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzLmgiCiAj
aW5jbHVkZSAiTGliV2ViUlRDQ29kZWNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgpAQCAtNzcsNiArNzksOSBAQAogCiB2b2lkIEdQVVByb2Nl
c3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKKyAgICBpZiAobV9yZWNlaXZlck1hcC5kaXNw
YXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlcikpCisgICAgICAgIHJldHVybjsKKwogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCkt
PmRpZFJlY2VpdmVQbGF5ZXJNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICBy
ZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAyNTcwMjYpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC01Niw2ICs1NywxNiBAQAogICAg
IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXImIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1hbmFnZXIoKTsKICNlbmRpZgogCisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQorICAgIHsKKyAgICAgICAgbV9yZWNl
aXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRp
b25JRCwgcmVjZWl2ZXIpOworICAgIH0KKworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpCisgICAgeworICAgICAgICBtX3JlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICB9CisKIHByaXZh
dGU6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
KTsKIApAQCAtNjYsNiArNzcsNyBAQAogCiAgICAgLy8gVGhlIGNvbm5lY3Rpb24gZnJvbSB0aGUg
d2ViIHByb2Nlc3MgdG8gdGhlIEdQVSBwcm9jZXNzLgogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+
IG1fY29ubmVjdGlvbjsKKyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCBtX3JlY2VpdmVyTWFw
OwogCiAjaWYgSEFWRShBVURJVF9UT0tFTikKICAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBt
X2F1ZGl0VG9rZW47CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUF1ZGlvQnVzRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9CdXNEYXRhLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0J1c0RhdGEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2hh
cmVkQnVmZmVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgUmVtb3RlQXVkaW9C
dXNEYXRhIHsKKyAgICBWZWN0b3I8UmVmPFNoYXJlZE1lbW9yeT4+IGNoYW5uZWxCdWZmZXJzOwor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4oY2hhbm5lbEJ1ZmZlcnMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjaGFubmVsQnVmZmVycy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgU2hhcmVk
TWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgICAgICAgICAgY2hhbm5lbEJ1ZmZlcnNbaV0tPmNy
ZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsK
KyAgICAgICAgICAgIGVuY29kZXIgPDwgaGFuZGxlOworICAgICAgICB9CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4KKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgUmVtb3RlQXVkaW9CdXNEYXRhJiByZXN1bHQpCisgICAgeworICAgICAgICB1
aW50NjRfdCBzaXplID0gMDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgeworICAgICAgICAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwor
ICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGF1dG8gbWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojpt
YXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CisgICAgICAg
ICAgICBpZiAobWVtb3J5KQorICAgICAgICAgICAgICAgIHJlc3VsdC5jaGFubmVsQnVmZmVycy5h
cHBlbmQoKm1lbW9yeSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1
ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0F1ZGlvQnVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rl
c3RpbmF0aW9uLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJTaGFyZWRSaW5n
QnVmZmVyU3RvcmFnZS5oIgorI2luY2x1ZGUgPEF1ZGlvVW5pdC9BdWRpb1VuaXQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
Q0FSaW5nQnVmZmVyLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIEF1
ZGlvQnVzID0gV2ViQ29yZTo6QXVkaW9CdXM7Cit1c2luZyBBdWRpb0Rlc3RpbmF0aW9uID0gV2Vi
Q29yZTo6QXVkaW9EZXN0aW5hdGlvbjsKK3VzaW5nIEF1ZGlvSU9DYWxsYmFjayA9IFdlYkNvcmU6
OkF1ZGlvSU9DYWxsYmFjazsKKworc3RhdGljIEhhc2hNYXA8UmVtb3RlQXVkaW9EZXN0aW5hdGlv
bklkZW50aWZpZXIsIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSo+JiByZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHlNYXAoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVu
dGlmaWVyLCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkqPj4gbWFwOworICAgIHJldHVybiBt
YXA7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHk6OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAorICAgIGNv
bnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxz
LCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKQorewor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eT4oY2FsbGJh
Y2ssIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgc2FtcGxlUmF0ZSk7Cit9CisKK1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSog
UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpmaW5kQnlEZXN0aW5hdGlvbklEKFJlbW90ZUF1
ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkKQoreworICAgIHJldHVybiByZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHlNYXAoKS5nZXQoaWQpOworfQorCitSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
UHJveHk6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eShBdWRpb0lPQ2FsbGJhY2smIGNhbGxi
YWNrLCBjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRD
aGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0
ZSkKKyAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxl
UmF0ZSkKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAsIG1fcmluZ0J1ZmZlcihtYWtlVW5pcXVl
UmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPihudWxscHRyKSkKKyNlbmRpZgoreworICAgIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQ7CisKKyAgICBhdXRv
JiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24oKTsKKyAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSByaW5nQnVmZmVySGFuZGxlOwor
ICAgIGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmRTeW5jKAorICAgICAgICBNZXNzYWdlczo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oaW5w
dXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBzYW1wbGVSYXRlKSwKKyAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uOjpSZXBseShkZXN0aW5hdGlvbklELCByaW5n
QnVmZmVySGFuZGxlKSwgMCk7CisgICAgY29ubmVjdGlvbi5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksICp0aGlzKTsKKworICAgIGF1dG8gc3RvcmFnZSA9
IG1ha2VVbmlxdWU8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KG51bGxwdHIpOworICAgIHN0b3Jh
Z2UtPnNldFN0b3JhZ2UoU2hhcmVkTWVtb3J5OjptYXAocmluZ0J1ZmZlckhhbmRsZSwgU2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpKTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBkZXNjcmlwdGlvbjsKKyAgICBXZWJDb3Jl
OjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnNldEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbihk
ZXNjcmlwdGlvbiwgc2FtcGxlUmF0ZSk7CisgICAgbV9yaW5nQnVmZmVyLmFsbG9jYXRlKGRlc2Ny
aXB0aW9uLCBXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnJlbmRlckJ1ZmZlclNpemUo
KSAqIDE2KTsKKyNlbmRpZgorCisgICAgbV9kZXN0aW5hdGlvbklEID0gZGVzdGluYXRpb25JRDsK
Ky8vICAgIG1fcmVhbERlc3RpbmF0aW9uID0gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCp0aGlz
LCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMsIHNhbXBsZVJhdGUpOworfQorCitSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6On5S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkoKQoreworICAgIGF1dG8mIGNvbm5lY3Rpb24gPSAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAg
ICBjb25uZWN0aW9uLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlQXVkaW9E
ZXN0aW5hdGlvblByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZGVzdGluYXRpb25JRC50
b1VJbnQ2NCgpKTsKKworICAgIGNvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNS
ZXBseSgKKyAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpE
ZWxldGVBdWRpb0Rlc3RpbmF0aW9uKG1fZGVzdGluYXRpb25JRCksIFtdIHsKKyAgICAgICAgLy8g
Q2FuJ3QgcmVtb3ZlIHRoaXMgZnJvbSBwcm94eU1hcCgpIGhlcmUgYmVjYXVzZSB0aGUgb2JqZWN0
IHdvdWxkIGhhdmUgYmVlbiBhbHJlYXkgZGVsZXRlZC4KKyAgICB9KTsKK30KKwordm9pZCBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0YXJ0KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3lu
YygKKyAgICAgICAgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdGFy
dEF1ZGlvRGVzdGluYXRpb24obV9kZXN0aW5hdGlvbklEKSwKKyAgICAgICAgTWVzc2FnZXM6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpTdGFydEF1ZGlvRGVzdGluYXRpb246OlJlcGx5
KG1faXNQbGF5aW5nKSwgMCk7CisgICAgaWYgKG1fcmVhbERlc3RpbmF0aW9uKQorICAgICAgICBt
X3JlYWxEZXN0aW5hdGlvbi0+c3RhcnQoKTsKK30KKwordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uUHJveHk6OnN0b3AoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKAorICAgICAgICBNZXNz
YWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OlN0b3BBdWRpb0Rlc3RpbmF0aW9u
KG1fZGVzdGluYXRpb25JRCksCisgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlcjo6U3RvcEF1ZGlvRGVzdGluYXRpb246OlJlcGx5KG1faXNQbGF5aW5nKSwgMCk7
CisgICAgaWYgKG1fcmVhbERlc3RpbmF0aW9uKQorICAgICAgICBtX3JlYWxEZXN0aW5hdGlvbi0+
c3RvcCgpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVuZGVyKEF1
ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbkJ1cywgc2l6ZV90IGZyYW1l
c1RvUHJvY2VzcykKK3sKKyAgICBBU1NFUlQobV9yZWFsRGVzdGluYXRpb24pOworICAgIGZwcmlu
dGYoc3RkZXJyLCAicmVuZGVyIHNvdXJjZUJ1cz0lcCBkZXN0aW5hdGlvbkJ1cz0lcCBkZXN0aW5h
dGlvbkJ1cy5sZW5ndGg9JXp1IGZyYW1lc1RvUHJvY2Vzcz0lbHVcbiIsIHNvdXJjZUJ1cywgZGVz
dGluYXRpb25CdXMsIGRlc3RpbmF0aW9uQnVzLT5sZW5ndGgoKSwgZnJhbWVzVG9Qcm9jZXNzKTsK
KyAgICBtX2NhbGxiYWNrLnJlbmRlcihzb3VyY2VCdXMsIGRlc3RpbmF0aW9uQnVzLCBmcmFtZXNU
b1Byb2Nlc3MpOworfQorCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6cmVuZGVy
QnVmZmVyKGNvbnN0IFdlYktpdDo6UmVtb3RlQXVkaW9CdXNEYXRhJiBhdWRpb0J1c0RhdGEsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICB1bnNp
Z25lZCBmcmFtZXNUb1Byb2Nlc3MgPSBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnJlbmRlckJ1ZmZl
clNpemUoKTsKKyAgICBhdXRvIGF1ZGlvQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShhdWRpb0J1c0Rh
dGEuY2hhbm5lbEJ1ZmZlcnMuc2l6ZSgpLCBmcmFtZXNUb1Byb2Nlc3MsIGZhbHNlKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXVkaW9CdXNEYXRhLmNoYW5uZWxCdWZmZXJzLnNpemUo
KTsgKytpKQorICAgICAgICBhdWRpb0J1cy0+c2V0Q2hhbm5lbE1lbW9yeShpLCAoZmxvYXQqKWF1
ZGlvQnVzRGF0YS5jaGFubmVsQnVmZmVyc1tpXS0+ZGF0YSgpLCBmcmFtZXNUb1Byb2Nlc3MpOwor
CisgICAgbV9jYWxsYmFjay5yZW5kZXIoMCwgYXVkaW9CdXMuZ2V0KCksIGZyYW1lc1RvUHJvY2Vz
cyk7CisKKy8qCisKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gZGVzY3JpcHRpb247
CisgICAgV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24oZGVzY3JpcHRpb24sIHNhbXBsZVJhdGUpOworCisgICAgV2ViQXVkaW9CdWZm
ZXJMaXN0IGF1ZGlvRGF0YShtX2Rlc2NyaXB0aW9uLCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnJl
bmRlckJ1ZmZlclNpemUoKSk7CisKKyAgICB1bnNpZ25lZCBjaGFubmVsQ291bnQgPSAyOworICAg
IGF1dG8gZGVzdGluYXRpb24gPSBBdWRpb0J1czo6Y3JlYXRlKGNoYW5uZWxDb3VudCwgQXVkaW9E
ZXN0aW5hdGlvbkNvY29hOjpyZW5kZXJCdWZmZXJTaXplKCkpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBjaGFubmVsQ291bnQ7ICsraSkKKyAgICAgICAgZGVzdGluYXRpb24tPnNldENo
YW5uZWxNZW1vcnkoY2hhbm5lbENvdW50LCApOworCisgICAgV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbkNvY29hOjpyZW5kZXJCdWZmZXJTaXplKCkKKworICAgIGZwcmludGYoc3RkZXJyLCAicmVu
ZGVyQnVmZmVyISFcbiIpOyovCisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwordm9pZCBS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmRpZENoYW5nZUlzUGxheWluZyhib29sIGlzUGxh
eWluZykKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgImRpZENoYW5nZUlzUGxheWluZyEhIGlzUGxh
eWluZz0lZFxuIiwgaXNQbGF5aW5nKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUg
IlJlbW90ZUF1ZGlvQnVzRGF0YS5oIgorI2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25J
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9BdWRpb0lPQ2FsbGJhY2suaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQor
I2luY2x1ZGUgPFdlYkNvcmUvQ0FSaW5nQnVmZmVyLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdl
YktpdCB7CisvKgorY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IGZpbmFsIDogcHVi
bGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkpOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5PiBjcmVhdGUoKSB7IHJldHVybiBt
YWtlVW5pcXVlPFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eT4oKTsgfQorCisgICAgUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5KCk7CisgICAgflJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eSgpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9jZXNzKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CisKKyAgICB2b2lkIHJlbmRlcihjb25zdCBX
ZWJLaXQ6OlJlbW90ZUF1ZGlvQnVzRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgdm9pZCBpc1BsYXlpbmdEaWRDaGFuZ2UoKTsKKworICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBzdXBwbGVtZW50TmFtZSgpOworCitwcml2YXRlOgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Cit9OworKi8KK2NsYXNz
IFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uLCBwcml2YXRlIFdlYkNvcmU6OkF1ZGlvSU9DYWxsYmFjaywgcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KTsKK3B1YmxpYzoKKyAg
ICB1c2luZyBBdWRpb0J1cyA9IFdlYkNvcmU6OkF1ZGlvQnVzOworICAgIHVzaW5nIEF1ZGlvSU9D
YWxsYmFjayA9IFdlYkNvcmU6OkF1ZGlvSU9DYWxsYmFjazsKKworICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gY3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJh
Y2ssCisgICAgICAgIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBz
YW1wbGVSYXRlKTsKKworICAgIHN0YXRpYyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkqIGZp
bmRCeURlc3RpbmF0aW9uSUQoUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIpOworCisg
ICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KEF1ZGlvSU9DYWxsYmFjayYsIGNvbnN0IFN0
cmluZyYgaW5wdXREZXZpY2VJZCwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNp
Z25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICB+UmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5KCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
RnJvbUdQVVByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIm
IGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KKwor
ICAgIHZvaWQgcmVuZGVyQnVmZmVyKGNvbnN0IFdlYktpdDo6UmVtb3RlQXVkaW9CdXNEYXRhJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGRpZENoYW5nZUlzUGxheWlu
Zyhib29sIGlzUGxheWluZyk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzdGFydCgpIG92ZXJyaWRl
OworICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNQbGF5aW5nKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9yZWFsRGVzdGluYXRpb24gPyBtX3JlYWxEZXN0aW5hdGlvbi0+aXNQbGF5
aW5nKCkgOiBtX2lzUGxheWluZzsgfQorICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KKworICAgIC8vIEF1ZGlvSU9DYWxsYmFjawor
ICAgIHZvaWQgcmVuZGVyKEF1ZGlvQnVzKiBzb3VyY2VCdXMsIEF1ZGlvQnVzKiBkZXN0aW5hdGlv
bkJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CisgICAgdm9pZCBpc1BsYXlp
bmdEaWRDaGFuZ2UoKSBvdmVycmlkZSB7IG1fY2FsbGJhY2suaXNQbGF5aW5nRGlkQ2hhbmdlKCk7
IH0KKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworICAgIEF1ZGlv
SU9DYWxsYmFjayYgbV9jYWxsYmFjazsKKyAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CisgICAgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgbV9kZXN0aW5hdGlvbklEOworICAgIGJvb2wg
bV9pc1BsYXlpbmcgeyBmYWxzZSB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0
aW9uPiBtX3JlYWxEZXN0aW5hdGlvbjsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFdlYkNv
cmU6OkNBUmluZ0J1ZmZlciBtX3JpbmdCdWZmZXI7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvblByb3h5Lm1lc3NhZ2VzLmluCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5Lm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKK21lc3NhZ2VzIC0+IFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eSBOb3RSZWZDb3VudGVkIHsKKworICAgIFJlbmRlckJ1
ZmZlcihzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVBdWRpb0J1c0RhdGEgZGF0YSkgLT4gKCkgQXN5bmMK
KyAgICBEaWRDaGFuZ2VJc1BsYXlpbmcoYm9vbCBpc1BsYXlpbmcpCisKK30KKworI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVS
ZW1vdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAJKHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQAogICAgICAgICBjbGllbnQtPnBhcnNl
V2ViVlRUQ3VlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSks
IGRhdGEuc2l6ZSgpKTsKIH0KIAotdm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjpwYXJzZVdl
YlZUVEN1ZURhdGFTdHJ1Y3QoSVNPV2ViVlRUQ3VlJiYgY3VlRGF0YSkKK3ZvaWQgVGV4dFRyYWNr
UHJpdmF0ZVJlbW90ZTo6cGFyc2VXZWJWVFRDdWVEYXRhU3RydWN0KFdlYkNvcmU6OklTT1dlYlZU
VEN1ZSYmIGN1ZURhdGEpCiB7CiAgICAgQVNTRVJUKGNsaWVudCgpKTsKICAgICBpZiAoYXV0byog
Y2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaAkocmV2
aXNpb24gMjU3MDI2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0
VHJhY2tQcml2YXRlUmVtb3RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUg
IlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luYmFu
ZFRleHRUcmFja1ByaXZhdGUuaD4KQEAgLTM5LDYgKzQwLDkgQEAKIGNsYXNzIFRleHRUcmFja1By
aXZhdGVSZW1vdGUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZSkKIHB1
YmxpYzoKKyAgICB1c2luZyBHZW5lcmljQ3VlRGF0YSA9IFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRh
OworICAgIHVzaW5nIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUgPSBXZWJDb3JlOjpTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3VlOworCiAgICAgc3RhdGljIFJlZjxUZXh0VHJhY2tQcml2YXRlUmVt
b3RlPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlJiBwbGF5ZXIsIFRyYWNrUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIgaWRlbmRpZmllciwgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZp
Z3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZShwbGF5ZXIsIGlkZW5kaWZpZXIsIFdURk1vdmUo
Y29uZmlndXJhdGlvbikpKTsKQEAgLTU4LDcgKzYyLDcgQEAKIAogICAgIHZvaWQgcGFyc2VXZWJW
VFRGaWxlSGVhZGVyKFN0cmluZyYmKTsKICAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKLSAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YVN0cnVj
dChJU09XZWJWVFRDdWUmJik7CisgICAgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGFTdHJ1Y3QoV2Vi
Q29yZTo6SVNPV2ViVlRUQ3VlJiYpOwogCiAgICAgdm9pZCB1cGRhdGVDb25maWd1cmF0aW9uKFRl
eHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiYpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5j
cHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9X
ZWJNZWRpYVN0cmF0ZWd5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYk1lZGlhU3RyYXRlZ3ku
aCIKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvblByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdWRpb0lPQ2FsbGJh
Y2suaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisK
KyNlbmRpZgorCitXZWJNZWRpYVN0cmF0ZWd5Ojp+V2ViTWVkaWFTdHJhdGVneSgpID0gZGVmYXVs
dDsKKworc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb24+IFdlYk1lZGlh
U3RyYXRlZ3k6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24oV2ViQ29yZTo6QXVkaW9JT0NhbGxiYWNr
JiBjYWxsYmFjaywgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLAorICAgIHVuc2lnbmVkIG51
bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSkKK3sKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgaWYgKG1fdXNl
R1BVUHJvY2VzcykKKyAgICAgICAgcmV0dXJuIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6
Y3JlYXRlKGNhbGxiYWNrLCBpbnB1dERldmljZUlkLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOworI2VuZGlmCisgICAgcmV0dXJuIFdl
YkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShjYWxsYmFjaywgaW5wdXREZXZpY2VJZCwg
bnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRl
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRl
Z3kuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU3RyYXRlZ3kuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTI7CisKK2NsYXNz
IFdlYk1lZGlhU3RyYXRlZ3kgOiBwdWJsaWMgV2ViQ29yZTo6TWVkaWFTdHJhdGVneSB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+V2ViTWVkaWFTdHJhdGVneSgpOworCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQorICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzcyhib29sIHVzZUdQVVByb2Nlc3MpIHsg
bV91c2VHUFVQcm9jZXNzID0gdXNlR1BVUHJvY2VzczsgfQorI2VuZGlmCisKK3ByaXZhdGU6Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb24+IGNyZWF0ZUF1ZGlv
RGVzdGluYXRpb24oV2ViQ29yZTo6QXVkaW9JT0NhbGxiYWNrJiwKKyAgICAgICAgY29uc3QgU3Ry
aW5nJiBpbnB1dERldmljZUlkLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2ln
bmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUpIG92ZXJyaWRlOwor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGJvb2wgbV91c2VHUFVQcm9jZXNzIHsgZmFs
c2UgfTsKKyNlbmRpZgorCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjU3
MDI2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDkgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
YW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbnRT
aXplLmg+CisKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJl
dmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxNiArMzks
MTkgQEAKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiV2ViTG9hZGVyU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJXZWJNZWRp
YVN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhc3RlYm9h
cmRPdmVycmlkZXMuaCIKICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdl
cy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0xvYWRlclN0cmF0ZWd5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRp
YVN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5o
PgpAQCAtNzMsNiArNzYsOCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAorY2xhc3MgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbjsKKwogdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM+IHBsYXRmb3JtU3RyYXRlZ2llczsKQEAgLTkzLDYgKzk4
LDExIEBACiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKK01lZGlhU3RyYXRlZ3kqIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y3JlYXRlTWVkaWFTdHJhdGVneSgpCit7CisgICAgcmV0dXJuIG5ldyBXZWJN
ZWRpYVN0cmF0ZWd5OworfQorCiBCbG9iUmVnaXN0cnkqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKIHsKICAgICByZXR1cm4gbmV3IEJsb2JSZWdpc3RyeVByb3h5
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkocmV2aXNpb24gMjU3MDI2KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAgICAgLy8gV2ViQ29y
ZTo6UGxhdGZvcm1TdHJhdGVnaWVzCiAgICAgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kqIGNyZWF0
ZUxvYWRlclN0cmF0ZWd5KCkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0
ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRlZ3koKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpN
ZWRpYVN0cmF0ZWd5KiBjcmVhdGVNZWRpYVN0cmF0ZWd5KCkgb3ZlcnJpZGU7CiAgICAgV2ViQ29y
ZTo6QmxvYlJlZ2lzdHJ5KiBjcmVhdGVCbG9iUmVnaXN0cnkoKSBvdmVycmlkZTsKIAogICAgIC8v
IFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDEsNiArMTAxLDcgQEAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJXZWJNZWRpYUtleVN0b3JhZ2VN
YW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViTWVkaWFTdHJhdGVneS5oIgogI2luY2x1ZGUgIldlYk5v
dGlmaWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgpAQCAtMTk5LDYgKzIw
MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QaW5nTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUG9pbnRlckNhcHR1cmVDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QcmludENv
bnRleHQuaD4KQEAgLTM2ODEsNiArMzY4Myw4IEBACiAgICAgICAgIG1fZHJhd2luZ0FyZWEtPnVw
ZGF0ZVByZWZlcmVuY2VzKHN0b3JlKTsKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICAv
LyBGSVhNRTogdXNlR1BVUHJvY2Vzc0Zvck1lZGlhIHNob3VsZCBiZSBhIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZSBzaW5jZSBpdCdzIGdsb2JhbC4KKyAgICBzdGF0aWNfY2FzdDxXZWJNZWRpYVN0cmF0
ZWd5Jj4ocGxhdGZvcm1TdHJhdGVnaWVzKCktPm1lZGlhU3RyYXRlZ3koKSkuc2V0VXNlR1BVUHJv
Y2VzcyhzZXR0aW5ncy51c2VHUFVQcm9jZXNzRm9yTWVkaWEoKSk7CiAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuc3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCktPnVwZGF0
ZVByZWZlcmVuY2VzKHNldHRpbmdzKTsKICNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgJKHJldmlzaW9uIDI1NzAyNikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw2ICs0Myw3IEBACiAgICAgLy8gV2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzCiAgICAg
V2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kqIGNyZWF0ZUxvYWRlclN0cmF0ZWd5KCkgb3ZlcnJpZGU7
CiAgICAgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJkU3RyYXRl
Z3koKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpNZWRpYVN0cmF0ZWd5KiBjcmVhdGVNZWRpYVN0
cmF0ZWd5KCkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5KiBjcmVhdGVCbG9i
UmVnaXN0cnkoKSBvdmVycmlkZTsKIAogICAgIC8vIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVn
eQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQkocmV2aXNpb24gMjU3MDI2KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCwxMSBAQAogI2ltcG9ydCAiV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogI2ltcG9ydCAiV2ViUGx1Z2luUGFja2FnZS5oIgog
I2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCisjaW1wb3J0IDxXZWJDb3JlL0F1
ZGlvRGVzdGluYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvQmxvYlJlZ2lzdHJ5SW1wbC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgorI2lt
cG9ydCA8V2ViQ29yZS9NZWRpYVN0cmF0ZWd5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkSXRlbUluZm8uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1QYXN0ZWJvYXJkLmg+CkBAIC01Nyw2ICs1OSwyMSBA
QAogICAgIHJldHVybiBuZXcgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOwogfQogCitjbGFzcyBX
ZWJNZWRpYVN0cmF0ZWd5IGZpbmFsIDogcHVibGljIE1lZGlhU3RyYXRlZ3kgeworcHJpdmF0ZToK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGVBdWRpb0Rlc3Rp
bmF0aW9uKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgaW5wdXREZXZp
Y2VJZCwKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgcmV0dXJuIEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShjYWxsYmFjaywgaW5wdXRE
ZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBz
YW1wbGVSYXRlKTsKKyAgICB9Cit9OworCitNZWRpYVN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNyZWF0ZU1lZGlhU3RyYXRlZ3koKQoreworICAgIHJldHVybiBuZXcgV2ViTWVkaWFT
dHJhdGVneTsKK30KKwogUGFzdGVib2FyZFN0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpCiB7CiAgICAgcmV0dXJuIHRoaXM7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>