<?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>154505</bug_id>
          
          <creation_ts>2016-02-20 13:42:18 -0800</creation_ts>
          <short_desc>Web Inspector: clean up generator selection in generate-inspector-protocol-bindings.py</short_desc>
          <delta_ts>2022-03-01 02:44: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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mattbaker</cc>
    
    <cc>msaboff</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>saam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1166777</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-20 13:42:18 -0800</bug_when>
    <thetext>- alphabetize generators
- make Framework.Test have its own branch
- make the JSC branch test against Framework.JavaScriptCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166778</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-02-20 13:42:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/24758042&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166779</commentid>
    <comment_count>2</comment_count>
      <attachid>271868</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-20 13:48:35 -0800</bug_when>
    <thetext>Created attachment 271868
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166781</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-20 13:50:19 -0800</bug_when>
    <thetext>Attachment 271868 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:133:  [generate_from_specification] Undefined variable &apos;Frameworks&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:135:  [generate_from_specification] Undefined variable &apos;CppAlternateBackendDispatcherHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:149:  [generate_from_specification] Undefined variable &apos;ObjCInternalHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:151:  [generate_from_specification] Undefined variable &apos;Frameworks&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:152:  [generate_from_specification] Undefined variable &apos;JSBackendCommandsGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:153:  [generate_from_specification] Undefined variable &apos;CppAlternateBackendDispatcherHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:154:  [generate_from_specification] Undefined variable &apos;CppBackendDispatcherHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:155:  [generate_from_specification] Undefined variable &apos;CppBackendDispatcherImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:156:  [generate_from_specification] Undefined variable &apos;CppFrontendDispatcherHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:157:  [generate_from_specification] Undefined variable &apos;CppFrontendDispatcherImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:158:  [generate_from_specification] Undefined variable &apos;CppProtocolTypesHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:159:  [generate_from_specification] Undefined variable &apos;CppProtocolTypesImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:160:  [generate_from_specification] Undefined variable &apos;Frameworks&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:161:  [generate_from_specification] Undefined variable &apos;ObjCBackendDispatcherHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:162:  [generate_from_specification] Undefined variable &apos;ObjCBackendDispatcherImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:163:  [generate_from_specification] Undefined variable &apos;ObjCConfigurationHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:164:  [generate_from_specification] Undefined variable &apos;ObjCConfigurationImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:165:  [generate_from_specification] Undefined variable &apos;ObjCConversionHelpersGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:166:  [generate_from_specification] Undefined variable &apos;ObjCFrontendDispatcherImplementationGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:167:  [generate_from_specification] Undefined variable &apos;ObjCHeaderGenerator&apos;  [pylint/E0602] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py:169:  [generate_from_specification] Undefined variable &apos;ObjCProtocolTypesImplementationGenerator&apos;  [pylint/E0602] [5]
Total errors found: 21 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166877</commentid>
    <comment_count>4</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-21 16:05:04 -0800</bug_when>
    <thetext>Committed r196880: &lt;http://trac.webkit.org/changeset/196880&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271868</attachid>
            <date>2016-02-20 13:48:35 -0800</date>
            <delta_ts>2022-03-01 02:44:37 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-154505-20160220134816.patch</filename>
            <type>text/plain</type>
            <size>108803</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2ODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NjYzMGM0NGIwN2NiYWJlZDZlODZkMjViOWMwNjExNjlhODNkZWJjLi5iM2IyYzlhYTU1NWQ1YjIw
Njc3MGI5YzY5MjQ4ZWE1ZjgzZjQ4ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxNi0wMi0yMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBjbGVhbiB1cCBnZW5lcmF0b3Igc2VsZWN0aW9uIGluIGdl
bmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0NTA1CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8yNDc1ODA0Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gZ2VuZXJhdGUgY29kZSBmb3IgYSBmcmFt
ZXdvcmsgdXNpbmcgc29tZSBnZW5lcmF0b3JzCisgICAgICAgIHRoYXQgb3RoZXIgZnJhbWV3b3Jr
cyBhbHNvIHVzZS4gUmlnaHQgbm93IHRoZSBnZW5lcmF0b3Igc2VsZWN0aW9uIGNvZGUgYXNzdW1l
cworICAgICAgICB0aGF0IHVzZSBvZiBhIGdlbmVyYXRvciBpcyBtdXR1YWxseSBleGNsdXNpdmUg
YW1vbmcgbm9uLXRlc3QgZnJhbWV3b3Jrcy4KKworICAgICAgICBNYWtlIHRoaXMgY29kZSBleHBs
aWNpdGx5IHN3aXRjaCBvbiB0aGUgZnJhbWV3b3JrLiBSZW9yZGVyIGdlbmVyYXRvcnMKKyAgICAg
ICAgYWxwYWJldGljYWxseSB3aXRoaW4gZWFjaCBjYXNlLgorCisgICAgICAgICogaW5zcGVjdG9y
L3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5OgorICAgICAg
ICAoZ2VuZXJhdGVfZnJvbV9zcGVjaWZpY2F0aW9uKToKKworICAgICAgICBSZWJhc2VsaW5lIHRl
c3RzIHRoYXQgYXJlIGFmZmVjdGVkIGJ5IGdlbmVyYXRvciByZW9yZGVyaW5ncy4KKworICAgICAg
ICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMt
YXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9k
b21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0OgorICAgICAgICAq
IGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0
OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRo
LW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRz
Lmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0
dGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQ6
CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJh
dGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0Ogor
ICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRp
b24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdDoK
KwogMjAxNi0wMi0xOSAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdtYWlsLmNvbT4K
IAogICAgICAgICBbSU5UTF0gSW1wbGVtZW50IE51bWJlciBGb3JtYXQgRnVuY3Rpb25zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUt
aW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQpp
bmRleCBhMTk4N2FhOTA3MmE3NTU4N2NjOGU0YWNjZjVlYmM3NTcyOWI1ZWEzLi5lYTEzOTQ1ZjA2
ZTU3YjZjY2Q4YzdlMzVkZTUyMGNhNTI3Y2YwOTM0IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJp
bmRpbmdzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9n
ZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKQEAgLTEzMCwxNyArMTMwLDE1
IEBAIGRlZiBnZW5lcmF0ZV9mcm9tX3NwZWNpZmljYXRpb24ocHJpbWFyeV9zcGVjaWZpY2F0aW9u
X2ZpbGVwYXRoPU5vbmUsCiAgICAgcHJvdG9jb2wucmVzb2x2ZV90eXBlcygpCiAKICAgICBnZW5l
cmF0b3JzID0gW10KLSAgICBpc190ZXN0ID0gcHJvdG9jb2wuZnJhbWV3b3JrIGlzIEZyYW1ld29y
a3MuVGVzdAotICAgIGlmIGlzX3Rlc3Qgb3IgcHJvdG9jb2wuZnJhbWV3b3JrIGlzIG5vdCBGcmFt
ZXdvcmtzLldlYkluc3BlY3RvcjoKLSAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoQ3BwQWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3Bl
Y2lmaWNhdGlvbl9maWxlcGF0aCkpCisgICAgaWYgcHJvdG9jb2wuZnJhbWV3b3JrIGlzIEZyYW1l
d29ya3MuVGVzdDoKICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoSlNCYWNrZW5kQ29tbWFuZHNH
ZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCisgICAg
ICAgIGdlbmVyYXRvcnMuYXBwZW5kKENwcEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVySGVhZGVy
R2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQogICAg
ICAgICBnZW5lcmF0b3JzLmFwcGVuZChDcHBCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVyYXRv
cihwcm90b2NvbCwgcHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKICAgICAgICAgZ2Vu
ZXJhdG9ycy5hcHBlbmQoQ3BwQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRv
cihwcm90b2NvbCwgcHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKICAgICAgICAgZ2Vu
ZXJhdG9ycy5hcHBlbmQoQ3BwRnJvbnRlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yKHByb3Rv
Y29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQogICAgICAgICBnZW5lcmF0b3Jz
LmFwcGVuZChDcHBGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihwcm90
b2NvbCwgcHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKICAgICAgICAgZ2VuZXJhdG9y
cy5hcHBlbmQoQ3BwUHJvdG9jb2xUeXBlc0hlYWRlckdlbmVyYXRvcihwcm90b2NvbCwgcHJpbWFy
eV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoQ3Bw
UHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3Nw
ZWNpZmljYXRpb25fZmlsZXBhdGgpKQotICAgIGlmIGlzX3Rlc3Qgb3IgcHJvdG9jb2wuZnJhbWV3
b3JrIGlzIEZyYW1ld29ya3MuV2ViSW5zcGVjdG9yOgogICAgICAgICBnZW5lcmF0b3JzLmFwcGVu
ZChPYmpDQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlf
c3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCiAgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKE9iakNC
YWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5
X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQogICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChPYmpD
Q29uZmlndXJhdGlvbkhlYWRlckdlbmVyYXRvcihwcm90b2NvbCwgcHJpbWFyeV9zcGVjaWZpY2F0
aW9uX2ZpbGVwYXRoKSkKQEAgLTE0OCw4ICsxNDYsMjcgQEAgZGVmIGdlbmVyYXRlX2Zyb21fc3Bl
Y2lmaWNhdGlvbihwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGg9Tm9uZSwKICAgICAgICAg
Z2VuZXJhdG9ycy5hcHBlbmQoT2JqQ0NvbnZlcnNpb25IZWxwZXJzR2VuZXJhdG9yKHByb3RvY29s
LCBwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQogICAgICAgICBnZW5lcmF0b3JzLmFw
cGVuZChPYmpDRnJvbnRlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IocHJvdG9j
b2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCiAgICAgICAgIGdlbmVyYXRvcnMu
YXBwZW5kKE9iakNIZWFkZXJHZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlv
bl9maWxlcGF0aCkpCisgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKE9iakNJbnRlcm5hbEhlYWRl
ckdlbmVyYXRvcihwcm90b2NvbCwgcHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKICAg
ICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoT2JqQ1Byb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdl
bmVyYXRvcihwcm90b2NvbCwgcHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKKyAgICBl
bGlmIHByb3RvY29sLmZyYW1ld29yayBpcyBGcmFtZXdvcmtzLkphdmFTY3JpcHRDb3JlOgorICAg
ICAgICBnZW5lcmF0b3JzLmFwcGVuZChKU0JhY2tlbmRDb21tYW5kc0dlbmVyYXRvcihwcm90b2Nv
bCwgcHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKKyAgICAgICAgZ2VuZXJhdG9ycy5h
cHBlbmQoQ3BwQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IocHJvdG9j
b2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCisgICAgICAgIGdlbmVyYXRvcnMu
YXBwZW5kKENwcEJhY2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yKHByb3RvY29sLCBwcmlt
YXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQorICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChD
cHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKHByb3RvY29sLCBwcmlt
YXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQorICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChD
cHBGcm9udGVuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3Bl
Y2lmaWNhdGlvbl9maWxlcGF0aCkpCisgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKENwcEZyb250
ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3Nw
ZWNpZmljYXRpb25fZmlsZXBhdGgpKQorICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChDcHBQcm90
b2NvbFR5cGVzSGVhZGVyR2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25f
ZmlsZXBhdGgpKQorICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChDcHBQcm90b2NvbFR5cGVzSW1w
bGVtZW50YXRpb25HZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxl
cGF0aCkpCisgICAgZWxpZiBwcm90b2NvbC5mcmFtZXdvcmsgaXMgRnJhbWV3b3Jrcy5XZWJJbnNw
ZWN0b3I6CisgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKE9iakNCYWNrZW5kRGlzcGF0Y2hlckhl
YWRlckdlbmVyYXRvcihwcm90b2NvbCwgcHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkK
KyAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoT2JqQ0JhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50
YXRpb25HZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkp
CisgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKE9iakNDb25maWd1cmF0aW9uSGVhZGVyR2VuZXJh
dG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQorICAgICAgICBn
ZW5lcmF0b3JzLmFwcGVuZChPYmpDQ29uZmlndXJhdGlvbkltcGxlbWVudGF0aW9uR2VuZXJhdG9y
KHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQorICAgICAgICBnZW5l
cmF0b3JzLmFwcGVuZChPYmpDQ29udmVyc2lvbkhlbHBlcnNHZW5lcmF0b3IocHJvdG9jb2wsIHBy
aW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCisgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5k
KE9iakNGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihwcm90b2NvbCwg
cHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKKyAgICAgICAgZ2VuZXJhdG9ycy5hcHBl
bmQoT2JqQ0hlYWRlckdlbmVyYXRvcihwcm90b2NvbCwgcHJpbWFyeV9zcGVjaWZpY2F0aW9uX2Zp
bGVwYXRoKSkKICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoT2JqQ0ludGVybmFsSGVhZGVyR2Vu
ZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQorICAgICAg
ICBnZW5lcmF0b3JzLmFwcGVuZChPYmpDUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJh
dG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQogCiAgICAgc2lu
Z2xlX291dHB1dF9maWxlX2NvbnRlbnRzID0gW10KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgt
YXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRl
Lmpzb24tcmVzdWx0CmluZGV4IDY2ZDBiMDhmNTY0OTQwMWYzODFjYWJiYjQ4NDRhZTI4Y2NlOGMw
OGMuLjdjNWZmMTcyZjc5NWQ0ODhlOTcwOTk0ODAzNzc0YjIyOTczNzlkZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9j
b21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0
aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAgLTEsMyArMSw0NCBAQAorIyMjIEJlZ2lu
IEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcworLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgZnJvbSBjb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uCisvLyBieSB0
aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJh
dGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisKKy8vIERhdGFiYXNlLgorSW5zcGVj
dG9yQmFja2VuZC5yZWdpc3RlckRhdGFiYXNlRGlzcGF0Y2hlciA9IEluc3BlY3RvckJhY2tlbmQu
cmVnaXN0ZXJEb21haW5EaXNwYXRjaGVyLmJpbmQoSW5zcGVjdG9yQmFja2VuZCwgIkRhdGFiYXNl
Iik7CitJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiRGF0YWJhc2UuUHJpbWFyeUNvbG9y
cyIsIHtSZWQ6ICJyZWQiLCBHcmVlbjogImdyZWVuIiwgQmx1ZTogImJsdWUifSk7CitJbnNwZWN0
b3JCYWNrZW5kLnJlZ2lzdGVyQ29tbWFuZCgiRGF0YWJhc2UuZXhlY3V0ZVNRTFN5bmNPcHRpb25h
bFJldHVyblZhbHVlcyIsIFt7Im5hbWUiOiAiZGF0YWJhc2VJZCIsICJ0eXBlIjogIm51bWJlciIs
ICJvcHRpb25hbCI6IGZhbHNlfSwgeyJuYW1lIjogInF1ZXJ5IiwgInR5cGUiOiAic3RyaW5nIiwg
Im9wdGlvbmFsIjogZmFsc2V9XSwgWyJjb2x1bW5OYW1lcyIsICJub3RlcyIsICJ0aW1lc3RhbXAi
LCAidmFsdWVzIiwgInBheWxvYWQiLCAiZGF0YWJhc2VJZCIsICJzcWxFcnJvciIsICJzY3JlZW5D
b2xvciIsICJhbHRlcm5hdGVDb2xvcnMiLCAicHJpbnRDb2xvciJdKTsKK0luc3BlY3RvckJhY2tl
bmQucmVnaXN0ZXJDb21tYW5kKCJEYXRhYmFzZS5leGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVy
blZhbHVlcyIsIFt7Im5hbWUiOiAiZGF0YWJhc2VJZCIsICJ0eXBlIjogIm51bWJlciIsICJvcHRp
b25hbCI6IGZhbHNlfSwgeyJuYW1lIjogInF1ZXJ5IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlv
bmFsIjogZmFsc2V9XSwgWyJjb2x1bW5OYW1lcyIsICJub3RlcyIsICJ0aW1lc3RhbXAiLCAidmFs
dWVzIiwgInBheWxvYWQiLCAiZGF0YWJhc2VJZCIsICJzcWxFcnJvciIsICJzY3JlZW5Db2xvciIs
ICJhbHRlcm5hdGVDb2xvcnMiLCAicHJpbnRDb2xvciJdKTsKK0luc3BlY3RvckJhY2tlbmQucmVn
aXN0ZXJDb21tYW5kKCJEYXRhYmFzZS5leGVjdXRlU1FMU3luYyIsIFt7Im5hbWUiOiAiZGF0YWJh
c2VJZCIsICJ0eXBlIjogIm51bWJlciIsICJvcHRpb25hbCI6IGZhbHNlfSwgeyJuYW1lIjogInF1
ZXJ5IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogZmFsc2V9XSwgWyJjb2x1bW5OYW1l
cyIsICJub3RlcyIsICJ0aW1lc3RhbXAiLCAidmFsdWVzIiwgInBheWxvYWQiLCAiZGF0YWJhc2VJ
ZCIsICJzcWxFcnJvciIsICJhbHRlcm5hdGVDb2xvcnMiLCAic2NyZWVuQ29sb3IiLCAicHJpbnRD
b2xvciJdKTsKK0luc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJEYXRhYmFzZS5leGVj
dXRlU1FMQXN5bmMiLCBbeyJuYW1lIjogImRhdGFiYXNlSWQiLCAidHlwZSI6ICJudW1iZXIiLCAi
b3B0aW9uYWwiOiBmYWxzZX0sIHsibmFtZSI6ICJxdWVyeSIsICJ0eXBlIjogInN0cmluZyIsICJv
cHRpb25hbCI6IGZhbHNlfV0sIFsiY29sdW1uTmFtZXMiLCAibm90ZXMiLCAidGltZXN0YW1wIiwg
InZhbHVlcyIsICJwYXlsb2FkIiwgImRhdGFiYXNlSWQiLCAic3FsRXJyb3IiLCAic2NyZWVuQ29s
b3IiLCAiYWx0ZXJuYXRlQ29sb3JzIiwgInByaW50Q29sb3IiXSk7CitJbnNwZWN0b3JCYWNrZW5k
LmFjdGl2YXRlRG9tYWluKCJEYXRhYmFzZSIpOworIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JCYWNr
ZW5kQ29tbWFuZHMuanMKKwogIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tl
bmREaXNwYXRjaGVycy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCkBAIC02NSw0NyArMTA2LDYgQEAgcHVibGljOgogI2VuZGlmIC8v
ICFkZWZpbmVkKEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQogIyMjIEVu
ZCBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAogCi0jIyMgQmVn
aW4gRmlsZTogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5
IGdlbmVyYXRlZCBmcm9tIGNvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24KLS8vIGJ5
IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5l
cmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKLQotLy8gRGF0YWJhc2UuCi1JbnNw
ZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRGF0YWJhc2VEaXNwYXRjaGVyID0gSW5zcGVjdG9yQmFja2Vu
ZC5yZWdpc3RlckRvbWFpbkRpc3BhdGNoZXIuYmluZChJbnNwZWN0b3JCYWNrZW5kLCAiRGF0YWJh
c2UiKTsKLUluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJEYXRhYmFzZS5QcmltYXJ5Q29s
b3JzIiwge1JlZDogInJlZCIsIEdyZWVuOiAiZ3JlZW4iLCBCbHVlOiAiYmx1ZSJ9KTsKLUluc3Bl
Y3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJEYXRhYmFzZS5leGVjdXRlU1FMU3luY09wdGlv
bmFsUmV0dXJuVmFsdWVzIiwgW3sibmFtZSI6ICJkYXRhYmFzZUlkIiwgInR5cGUiOiAibnVtYmVy
IiwgIm9wdGlvbmFsIjogZmFsc2V9LCB7Im5hbWUiOiAicXVlcnkiLCAidHlwZSI6ICJzdHJpbmci
LCAib3B0aW9uYWwiOiBmYWxzZX1dLCBbImNvbHVtbk5hbWVzIiwgIm5vdGVzIiwgInRpbWVzdGFt
cCIsICJ2YWx1ZXMiLCAicGF5bG9hZCIsICJkYXRhYmFzZUlkIiwgInNxbEVycm9yIiwgInNjcmVl
bkNvbG9yIiwgImFsdGVybmF0ZUNvbG9ycyIsICJwcmludENvbG9yIl0pOwotSW5zcGVjdG9yQmFj
a2VuZC5yZWdpc3RlckNvbW1hbmQoIkRhdGFiYXNlLmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0
dXJuVmFsdWVzIiwgW3sibmFtZSI6ICJkYXRhYmFzZUlkIiwgInR5cGUiOiAibnVtYmVyIiwgIm9w
dGlvbmFsIjogZmFsc2V9LCB7Im5hbWUiOiAicXVlcnkiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0
aW9uYWwiOiBmYWxzZX1dLCBbImNvbHVtbk5hbWVzIiwgIm5vdGVzIiwgInRpbWVzdGFtcCIsICJ2
YWx1ZXMiLCAicGF5bG9hZCIsICJkYXRhYmFzZUlkIiwgInNxbEVycm9yIiwgInNjcmVlbkNvbG9y
IiwgImFsdGVybmF0ZUNvbG9ycyIsICJwcmludENvbG9yIl0pOwotSW5zcGVjdG9yQmFja2VuZC5y
ZWdpc3RlckNvbW1hbmQoIkRhdGFiYXNlLmV4ZWN1dGVTUUxTeW5jIiwgW3sibmFtZSI6ICJkYXRh
YmFzZUlkIiwgInR5cGUiOiAibnVtYmVyIiwgIm9wdGlvbmFsIjogZmFsc2V9LCB7Im5hbWUiOiAi
cXVlcnkiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiBmYWxzZX1dLCBbImNvbHVtbk5h
bWVzIiwgIm5vdGVzIiwgInRpbWVzdGFtcCIsICJ2YWx1ZXMiLCAicGF5bG9hZCIsICJkYXRhYmFz
ZUlkIiwgInNxbEVycm9yIiwgImFsdGVybmF0ZUNvbG9ycyIsICJzY3JlZW5Db2xvciIsICJwcmlu
dENvbG9yIl0pOwotSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIkRhdGFiYXNlLmV4
ZWN1dGVTUUxBc3luYyIsIFt7Im5hbWUiOiAiZGF0YWJhc2VJZCIsICJ0eXBlIjogIm51bWJlciIs
ICJvcHRpb25hbCI6IGZhbHNlfSwgeyJuYW1lIjogInF1ZXJ5IiwgInR5cGUiOiAic3RyaW5nIiwg
Im9wdGlvbmFsIjogZmFsc2V9XSwgWyJjb2x1bW5OYW1lcyIsICJub3RlcyIsICJ0aW1lc3RhbXAi
LCAidmFsdWVzIiwgInBheWxvYWQiLCAiZGF0YWJhc2VJZCIsICJzcWxFcnJvciIsICJzY3JlZW5D
b2xvciIsICJhbHRlcm5hdGVDb2xvcnMiLCAicHJpbnRDb2xvciJdKTsKLUluc3BlY3RvckJhY2tl
bmQuYWN0aXZhdGVEb21haW4oIkRhdGFiYXNlIik7Ci0jIyMgRW5kIEZpbGU6IEluc3BlY3RvckJh
Y2tlbmRDb21tYW5kcy5qcwotCiAjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJzLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KQEAgLTE1MTAsNiArMTUxMCw0NyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5ICgiZGVmYXVsdCIpKSkKIAogIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbC5oCiAKKyMjIyBC
ZWdpbiBGaWxlOiBSV0lQcm90b2NvbEludGVybmFsLmgKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2Vu
ZXJhdGVkIGZyb20gY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbgorLy8gYnkgdGhl
IHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRl
LWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQorCisjaW1wb3J0ICJSV0lQcm90b2NvbC5o
IgorI2ltcG9ydCAiUldJUHJvdG9jb2xKU09OT2JqZWN0SW50ZXJuYWwuaCIKKyNpbXBvcnQgPEph
dmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPgorI2ltcG9ydCA8
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CisKKworCisKKyMjIyBFbmQgRmlsZTog
UldJUHJvdG9jb2xJbnRlcm5hbC5oCisKICMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbFR5cGVz
Lm1tCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCkBAIC0xNTkxLDQ0ICsxNjMyLDMgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
IAogCiAjIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sVHlwZXMubW0KLQotIyMjIEJlZ2luIEZpbGU6
IFJXSVByb3RvY29sSW50ZXJuYWwuaAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2
ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8v
IERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJv
bSBjb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uCi0vLyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9y
LXByb3RvY29sLWJpbmRpbmdzLnB5Ci0KLSNpbXBvcnQgIlJXSVByb3RvY29sLmgiCi0jaW1wb3J0
ICJSV0lQcm90b2NvbEpTT05PYmplY3RJbnRlcm5hbC5oIgotI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KLQotCi0KLQotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2Nv
bEludGVybmFsLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJu
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVy
bi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IGU3ZDYzNzA2ZjY3YWUyNDZhMjc0NTdlMmU0
MDA2OWVhODM5YWMyNzAuLjJjNTFmZGZmMmU1NGM4ZjIwOWQ5MTA4YTI5N2Y1ZjQ5NWU0MGNmYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMu
anNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1l
dGVycy5qc29uLXJlc3VsdApAQCAtMSwzICsxLDQxIEBACisjIyMgQmVnaW4gRmlsZTogSW5zcGVj
dG9yQmFja2VuZENvbW1hbmRzLmpzCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZl
cnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8g
RE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9t
IGNvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uCisvLyBi
eSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2Vu
ZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisKKy8vIERhdGFiYXNlLgorSW5z
cGVjdG9yQmFja2VuZC5yZWdpc3RlckVudW0oIkRhdGFiYXNlLlByaW1hcnlDb2xvcnMiLCB7UmVk
OiAicmVkIiwgR3JlZW46ICJncmVlbiIsIEJsdWU6ICJibHVlIn0pOworSW5zcGVjdG9yQmFja2Vu
ZC5yZWdpc3RlckNvbW1hbmQoIkRhdGFiYXNlLmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMi
LCBbeyJuYW1lIjogImNvbHVtbk5hbWVzIiwgInR5cGUiOiAib2JqZWN0IiwgIm9wdGlvbmFsIjog
dHJ1ZX0sIHsibmFtZSI6ICJub3RlcyIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRy
dWV9LCB7Im5hbWUiOiAidGltZXN0YW1wIiwgInR5cGUiOiAibnVtYmVyIiwgIm9wdGlvbmFsIjog
dHJ1ZX0sIHsibmFtZSI6ICJ2YWx1ZXMiLCAidHlwZSI6ICJvYmplY3QiLCAib3B0aW9uYWwiOiB0
cnVlfSwgeyJuYW1lIjogInBheWxvYWQiLCAidHlwZSI6ICJvYmplY3QiLCAib3B0aW9uYWwiOiB0
cnVlfSwgeyJuYW1lIjogImRhdGFiYXNlSWQiLCAidHlwZSI6ICJudW1iZXIiLCAib3B0aW9uYWwi
OiB0cnVlfSwgeyJuYW1lIjogInNxbEVycm9yIiwgInR5cGUiOiAib2JqZWN0IiwgIm9wdGlvbmFs
IjogdHJ1ZX0sIHsibmFtZSI6ICJzY3JlZW5Db2xvciIsICJ0eXBlIjogInN0cmluZyIsICJvcHRp
b25hbCI6IHRydWV9LCB7Im5hbWUiOiAiYWx0ZXJuYXRlQ29sb3JzIiwgInR5cGUiOiAib2JqZWN0
IiwgIm9wdGlvbmFsIjogdHJ1ZX0sIHsibmFtZSI6ICJwcmludENvbG9yIiwgInR5cGUiOiAic3Ry
aW5nIiwgIm9wdGlvbmFsIjogdHJ1ZX1dLCBbImNvbHVtbk5hbWVzIiwgIm5vdGVzIiwgInRpbWVz
dGFtcCIsICJ2YWx1ZXMiLCAicGF5bG9hZCIsICJkYXRhYmFzZUlkIiwgInNxbEVycm9yIiwgInNj
cmVlbkNvbG9yIiwgImFsdGVybmF0ZUNvbG9ycyIsICJwcmludENvbG9yIl0pOworSW5zcGVjdG9y
QmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIkRhdGFiYXNlLmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1l
dGVycyIsIFt7Im5hbWUiOiAiY29sdW1uTmFtZXMiLCAidHlwZSI6ICJvYmplY3QiLCAib3B0aW9u
YWwiOiBmYWxzZX0sIHsibmFtZSI6ICJub3RlcyIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25h
bCI6IGZhbHNlfSwgeyJuYW1lIjogInRpbWVzdGFtcCIsICJ0eXBlIjogIm51bWJlciIsICJvcHRp
b25hbCI6IGZhbHNlfSwgeyJuYW1lIjogInZhbHVlcyIsICJ0eXBlIjogIm9iamVjdCIsICJvcHRp
b25hbCI6IGZhbHNlfSwgeyJuYW1lIjogInBheWxvYWQiLCAidHlwZSI6ICJvYmplY3QiLCAib3B0
aW9uYWwiOiBmYWxzZX0sIHsibmFtZSI6ICJkYXRhYmFzZUlkIiwgInR5cGUiOiAibnVtYmVyIiwg
Im9wdGlvbmFsIjogZmFsc2V9LCB7Im5hbWUiOiAic3FsRXJyb3IiLCAidHlwZSI6ICJvYmplY3Qi
LCAib3B0aW9uYWwiOiBmYWxzZX0sIHsibmFtZSI6ICJzY3JlZW5Db2xvciIsICJ0eXBlIjogInN0
cmluZyIsICJvcHRpb25hbCI6IGZhbHNlfSwgeyJuYW1lIjogImFsdGVybmF0ZUNvbG9ycyIsICJ0
eXBlIjogIm9iamVjdCIsICJvcHRpb25hbCI6IGZhbHNlfSwgeyJuYW1lIjogInByaW50Q29sb3Ii
LCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiBmYWxzZX1dLCBbImNvbHVtbk5hbWVzIiwg
Im5vdGVzIiwgInRpbWVzdGFtcCIsICJ2YWx1ZXMiLCAicGF5bG9hZCIsICJkYXRhYmFzZUlkIiwg
InNxbEVycm9yIiwgInNjcmVlbkNvbG9yIiwgImFsdGVybmF0ZUNvbG9ycyIsICJwcmludENvbG9y
Il0pOworSW5zcGVjdG9yQmFja2VuZC5hY3RpdmF0ZURvbWFpbigiRGF0YWJhc2UiKTsKKyMjIyBF
bmQgRmlsZTogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCisKICMjIyBCZWdpbiBGaWxlOiBJ
bnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNjMsNDQgKzEwMSw2
IEBAIHB1YmxpYzoKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlcnNfaCkKICMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzLmgKIAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5q
cwotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIERPIE5PVCBFRElUIFRISVMgRklM
RS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBjb21tYW5kcy13aXRoLW9wdGlv
bmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbgotLy8gYnkgdGhlIHNjcmlwdDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90
b2NvbC1iaW5kaW5ncy5weQotCi0vLyBEYXRhYmFzZS4KLUluc3BlY3RvckJhY2tlbmQucmVnaXN0
ZXJFbnVtKCJEYXRhYmFzZS5QcmltYXJ5Q29sb3JzIiwge1JlZDogInJlZCIsIEdyZWVuOiAiZ3Jl
ZW4iLCBCbHVlOiAiYmx1ZSJ9KTsKLUluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJE
YXRhYmFzZS5leGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzIiwgW3sibmFtZSI6ICJjb2x1bW5O
YW1lcyIsICJ0eXBlIjogIm9iamVjdCIsICJvcHRpb25hbCI6IHRydWV9LCB7Im5hbWUiOiAibm90
ZXMiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlfSwgeyJuYW1lIjogInRpbWVz
dGFtcCIsICJ0eXBlIjogIm51bWJlciIsICJvcHRpb25hbCI6IHRydWV9LCB7Im5hbWUiOiAidmFs
dWVzIiwgInR5cGUiOiAib2JqZWN0IiwgIm9wdGlvbmFsIjogdHJ1ZX0sIHsibmFtZSI6ICJwYXls
b2FkIiwgInR5cGUiOiAib2JqZWN0IiwgIm9wdGlvbmFsIjogdHJ1ZX0sIHsibmFtZSI6ICJkYXRh
YmFzZUlkIiwgInR5cGUiOiAibnVtYmVyIiwgIm9wdGlvbmFsIjogdHJ1ZX0sIHsibmFtZSI6ICJz
cWxFcnJvciIsICJ0eXBlIjogIm9iamVjdCIsICJvcHRpb25hbCI6IHRydWV9LCB7Im5hbWUiOiAi
c2NyZWVuQ29sb3IiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlfSwgeyJuYW1l
IjogImFsdGVybmF0ZUNvbG9ycyIsICJ0eXBlIjogIm9iamVjdCIsICJvcHRpb25hbCI6IHRydWV9
LCB7Im5hbWUiOiAicHJpbnRDb2xvciIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRy
dWV9XSwgWyJjb2x1bW5OYW1lcyIsICJub3RlcyIsICJ0aW1lc3RhbXAiLCAidmFsdWVzIiwgInBh
eWxvYWQiLCAiZGF0YWJhc2VJZCIsICJzcWxFcnJvciIsICJzY3JlZW5Db2xvciIsICJhbHRlcm5h
dGVDb2xvcnMiLCAicHJpbnRDb2xvciJdKTsKLUluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21t
YW5kKCJEYXRhYmFzZS5leGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMiLCBbeyJuYW1lIjogImNv
bHVtbk5hbWVzIiwgInR5cGUiOiAib2JqZWN0IiwgIm9wdGlvbmFsIjogZmFsc2V9LCB7Im5hbWUi
OiAibm90ZXMiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiBmYWxzZX0sIHsibmFtZSI6
ICJ0aW1lc3RhbXAiLCAidHlwZSI6ICJudW1iZXIiLCAib3B0aW9uYWwiOiBmYWxzZX0sIHsibmFt
ZSI6ICJ2YWx1ZXMiLCAidHlwZSI6ICJvYmplY3QiLCAib3B0aW9uYWwiOiBmYWxzZX0sIHsibmFt
ZSI6ICJwYXlsb2FkIiwgInR5cGUiOiAib2JqZWN0IiwgIm9wdGlvbmFsIjogZmFsc2V9LCB7Im5h
bWUiOiAiZGF0YWJhc2VJZCIsICJ0eXBlIjogIm51bWJlciIsICJvcHRpb25hbCI6IGZhbHNlfSwg
eyJuYW1lIjogInNxbEVycm9yIiwgInR5cGUiOiAib2JqZWN0IiwgIm9wdGlvbmFsIjogZmFsc2V9
LCB7Im5hbWUiOiAic2NyZWVuQ29sb3IiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiBm
YWxzZX0sIHsibmFtZSI6ICJhbHRlcm5hdGVDb2xvcnMiLCAidHlwZSI6ICJvYmplY3QiLCAib3B0
aW9uYWwiOiBmYWxzZX0sIHsibmFtZSI6ICJwcmludENvbG9yIiwgInR5cGUiOiAic3RyaW5nIiwg
Im9wdGlvbmFsIjogZmFsc2V9XSwgWyJjb2x1bW5OYW1lcyIsICJub3RlcyIsICJ0aW1lc3RhbXAi
LCAidmFsdWVzIiwgInBheWxvYWQiLCAiZGF0YWJhc2VJZCIsICJzcWxFcnJvciIsICJzY3JlZW5D
b2xvciIsICJhbHRlcm5hdGVDb2xvcnMiLCAicHJpbnRDb2xvciJdKTsKLUluc3BlY3RvckJhY2tl
bmQuYWN0aXZhdGVEb21haW4oIkRhdGFiYXNlIik7Ci0jIyMgRW5kIEZpbGU6IEluc3BlY3RvckJh
Y2tlbmRDb21tYW5kcy5qcwotCiAjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXJzLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KQEAgLTEzNjUsNiArMTM2NSw0NyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5ICgiZGVmYXVsdCIpKSkKIAogIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbC5oCiAKKyMjIyBC
ZWdpbiBGaWxlOiBSV0lQcm90b2NvbEludGVybmFsLmgKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2Vu
ZXJhdGVkIGZyb20gY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJz
Lmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKKworI2ltcG9y
dCAiUldJUHJvdG9jb2wuaCIKKyNpbXBvcnQgIlJXSVByb3RvY29sSlNPTk9iamVjdEludGVybmFs
LmgiCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xs
ZXIuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgorCisKKwor
CisjIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sSW50ZXJuYWwuaAorCiAjIyMgQmVnaW4gRmlsZTog
UldJUHJvdG9jb2xUeXBlcy5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMTQ0Niw0NCArMTQ4NywzIEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKIAogIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbFR5cGVzLm1tCi0K
LSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEludGVybmFsLmgKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0vLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2Fs
bHkgZ2VuZXJhdGVkIGZyb20gY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJh
bWV0ZXJzLmpzb24KLS8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKLQot
I2ltcG9ydCAiUldJUHJvdG9jb2wuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sSlNPTk9iamVjdElu
dGVybmFsLmgiCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNv
bnRyb2xsZXIuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgot
Ci0KLQotCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sSW50ZXJuYWwuaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2Rv
bWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRo
LXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAppbmRleCA1NDBlMTUyOGQxMjMyZjgx
YTRjZGZiZDJmODA2NWU1NTc1OTEzMmEwLi5iMzhhZTJmMTNmZWZjM2NmZDY4NDlkZWFiMWM5NWNk
NmU3OGFkOWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5q
c29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJl
c3VsdApAQCAtMSwzICsxLDQ5IEBACisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2VuZENv
bW1hbmRzLmpzCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2Fz
aGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQg
VEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGRvbWFpbnMtd2l0
aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2Nv
bC1iaW5kaW5ncy5weQorCisvLyBOZXR3b3JrMS4KK0luc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJD
b21tYW5kKCJOZXR3b3JrMS5sb2FkUmVzb3VyY2UxIiwgW10sIFtdKTsKK0luc3BlY3RvckJhY2tl
bmQuYWN0aXZhdGVEb21haW4oIk5ldHdvcmsxIik7CisKKy8vIE5ldHdvcmszLgorSW5zcGVjdG9y
QmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIk5ldHdvcmszLmxvYWRSZXNvdXJjZTEiLCBbXSwgW10p
OworSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIk5ldHdvcmszLmxvYWRSZXNvdXJj
ZTIiLCBbXSwgW10pOworSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIk5ldHdvcmsz
LmxvYWRSZXNvdXJjZTMiLCBbXSwgW10pOworSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1h
bmQoIk5ldHdvcmszLmxvYWRSZXNvdXJjZTQiLCBbXSwgW10pOworSW5zcGVjdG9yQmFja2VuZC5y
ZWdpc3RlckNvbW1hbmQoIk5ldHdvcmszLmxvYWRSZXNvdXJjZTUiLCBbXSwgW10pOworSW5zcGVj
dG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIk5ldHdvcmszLmxvYWRSZXNvdXJjZTYiLCBbXSwg
W10pOworSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNvbW1hbmQoIk5ldHdvcmszLmxvYWRSZXNv
dXJjZTciLCBbXSwgW10pOworSW5zcGVjdG9yQmFja2VuZC5hY3RpdmF0ZURvbWFpbigiTmV0d29y
azMiKTsKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCisKICMjIyBC
ZWdpbiBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAt
NzMsNTIgKzExOSw2IEBAIHB1YmxpYzoKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBbHRl
cm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKICMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQWx0ZXJu
YXRlQmFja2VuZERpc3BhdGNoZXJzLmgKIAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckJhY2tl
bmRDb21tYW5kcy5qcwotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9m
IFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIERPIE5PVCBF
RElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBkb21haW5z
LXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24KLS8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJv
dG9jb2wtYmluZGluZ3MucHkKLQotLy8gTmV0d29yazEuCi1JbnNwZWN0b3JCYWNrZW5kLnJlZ2lz
dGVyQ29tbWFuZCgiTmV0d29yazEubG9hZFJlc291cmNlMSIsIFtdLCBbXSk7Ci1JbnNwZWN0b3JC
YWNrZW5kLmFjdGl2YXRlRG9tYWluKCJOZXR3b3JrMSIpOwotCi0vLyBOZXR3b3JrMy4KLUluc3Bl
Y3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJOZXR3b3JrMy5sb2FkUmVzb3VyY2UxIiwgW10s
IFtdKTsKLUluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJOZXR3b3JrMy5sb2FkUmVz
b3VyY2UyIiwgW10sIFtdKTsKLUluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJOZXR3
b3JrMy5sb2FkUmVzb3VyY2UzIiwgW10sIFtdKTsKLUluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJD
b21tYW5kKCJOZXR3b3JrMy5sb2FkUmVzb3VyY2U0IiwgW10sIFtdKTsKLUluc3BlY3RvckJhY2tl
bmQucmVnaXN0ZXJDb21tYW5kKCJOZXR3b3JrMy5sb2FkUmVzb3VyY2U1IiwgW10sIFtdKTsKLUlu
c3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJOZXR3b3JrMy5sb2FkUmVzb3VyY2U2Iiwg
W10sIFtdKTsKLUluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJOZXR3b3JrMy5sb2Fk
UmVzb3VyY2U3IiwgW10sIFtdKTsKLUluc3BlY3RvckJhY2tlbmQuYWN0aXZhdGVEb21haW4oIk5l
dHdvcmszIik7Ci0jIyMgRW5kIEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwotCiAj
IyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTEyNjUs
NyArMTI2NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICMjIyBFbmQgRmlsZTog
UldJUHJvdG9jb2wuaAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xUeXBlcy5tbQorIyMj
IEJlZ2luIEZpbGU6IFJXSVByb3RvY29sSW50ZXJuYWwuaAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTEyOTYsMjUgKzEy
OTYsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIC8vIERPIE5PVCBFRElUIFRISVMg
RklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBkb21haW5zLXdpdGgtdmFy
eWluZy1jb21tYW5kLXNpemVzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmlu
ZGluZ3MucHkKIAotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEludGVy
bmFsLmgiCi0KLSNpbXBvcnQgIlJXSVByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCisj
aW1wb3J0ICJSV0lQcm90b2NvbC5oIgorI2ltcG9ydCAiUldJUHJvdG9jb2xKU09OT2JqZWN0SW50
ZXJuYWwuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29u
dHJvbGxlci5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+Ci0j
aW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgotCi11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
CiAKIAogCisjIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sSW50ZXJuYWwuaAogCi0KLQotCi0jIyMg
RW5kIEZpbGU6IFJXSVByb3RvY29sVHlwZXMubW0KLQotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3Rv
Y29sSW50ZXJuYWwuaAorIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sVHlwZXMubW0KIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CkBAIC0xMzQ1LDEyICsxMzM3LDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAvLyBE
TyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20g
ZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uCiAvLyBieSB0aGUgc2NyaXB0
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVj
dG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgIlJXSVByb3RvY29sLmgiCi0jaW1w
b3J0ICJSV0lQcm90b2NvbEpTT05PYmplY3RJbnRlcm5hbC5oIgotI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg+CisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIlJXSVByb3RvY29sSW50ZXJuYWwuaCIKKworI2ltcG9ydCAiUldJUHJvdG9j
b2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvclZhbHVlcy5oPgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIAordXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAogCiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xJbnRlcm5hbC5o
CisKKworCisKKworIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbFR5cGVzLm1tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
ZW51bS12YWx1ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKaW5kZXggZDk3
MzBmYzdjM2IwZjhlZjkyYzE5MGFiZjVkMjkyZjA0NjkyODVkZi4uYjcwMmIwM2ZiNDM2OTU4ZTNl
M2Y1OGEyOTk4ZGFjM2M3Yzk4NmMxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdApAQCAtMSw0ICsxLDQgQEAKLSMjIyBCZWdpbiBG
aWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorIyMjIEJlZ2luIEZp
bGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTI5LDQwICsyOSwyMSBA
QAogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRl
ZCBmcm9tIGVudW0tdmFsdWVzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmlu
ZGluZ3MucHkKIAotI2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNf
aAotI2RlZmluZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAotCi0jaWYg
RU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCi0KLSNpbmNsdWRlICJJbnNw
ZWN0b3JQcm90b2NvbFR5cGVzLmgiCi0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kUm91dGVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuaD4KLQotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci0KLWNsYXNzIEFsdGVybmF0ZUJh
Y2tlbmREaXNwYXRjaGVyIHsKLXB1YmxpYzoKLSAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVy
KFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBXVEZNb3ZlKGRpc3BhdGNoZXIpOyB9Ci0gICAgQmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQo
KTsgfQotcHJpdmF0ZToKLSAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERp
c3BhdGNoZXI7Ci19OwotCi0KLWNsYXNzIEFsdGVybmF0ZUNvbW1hbmREb21haW5CYWNrZW5kRGlz
cGF0Y2hlciA6IHB1YmxpYyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7Ci1wdWJsaWM6Ci0g
ICAgdmlydHVhbCB+QWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyKCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlKGxvbmcgY2FsbElk
KSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKy8vIFR5cGVEb21haW4uCitJ
bnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiVHlwZURvbWFpbi5UeXBlRG9tYWluRW51bSIs
IHtTaGFyZWQ6ICJzaGFyZWQiLCBSZWQ6ICJyZWQiLCBHcmVlbjogImdyZWVuIiwgQmx1ZTogImJs
dWUifSk7CiAKLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVS
UykKKy8vIENvbW1hbmREb21haW4uCitJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ29tbWFuZCgi
Q29tbWFuZERvbWFpbi5jb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZSIsIFtdLCBbInJldHVyblZh
bHVlIl0pOworSW5zcGVjdG9yQmFja2VuZC5hY3RpdmF0ZURvbWFpbigiQ29tbWFuZERvbWFpbiIp
OwogCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNo
ZXJzX2gpCi0jIyMgRW5kIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVy
cy5oCisvLyBFdmVudERvbWFpbi4KK0luc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFdmVudERvbWFp
bkRpc3BhdGNoZXIgPSBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRG9tYWluRGlzcGF0Y2hlci5i
aW5kKEluc3BlY3RvckJhY2tlbmQsICJFdmVudERvbWFpbiIpOworSW5zcGVjdG9yQmFja2VuZC5y
ZWdpc3RlckVudW0oIkV2ZW50RG9tYWluLkV2ZW50V2l0aEVudW1QYXJhbWV0ZXJQYXJhbWV0ZXIi
LCB7U2hhcmVkOiAic2hhcmVkIiwgQmxhY2s6ICJibGFjayIsIFdoaXRlOiAid2hpdGUifSk7CitJ
bnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRXZlbnQoIkV2ZW50RG9tYWluLmV2ZW50V2l0aEVudW1Q
YXJhbWV0ZXIiLCBbInBhcmFtZXRlciJdKTsKK0luc3BlY3RvckJhY2tlbmQuYWN0aXZhdGVEb21h
aW4oIkV2ZW50RG9tYWluIik7CisjIyMgRW5kIEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5k
cy5qcwogCi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCisjIyMg
QmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CkBAIC05MywxOSArNzQsMzggQEAgcHVibGljOgogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJ
dCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGVudW0tdmFsdWVzLmpzb24KIC8vIGJ5
IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5l
cmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotLy8gVHlwZURvbWFpbi4KLUlu
c3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJUeXBlRG9tYWluLlR5cGVEb21haW5FbnVtIiwg
e1NoYXJlZDogInNoYXJlZCIsIFJlZDogInJlZCIsIEdyZWVuOiAiZ3JlZW4iLCBCbHVlOiAiYmx1
ZSJ9KTsKKyNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKyNk
ZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKIAotLy8gQ29tbWFu
ZERvbWFpbi4KLUluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJDb21tYW5kRG9tYWlu
LmNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlIiwgW10sIFsicmV0dXJuVmFsdWUiXSk7Ci1JbnNw
ZWN0b3JCYWNrZW5kLmFjdGl2YXRlRG9tYWluKCJDb21tYW5kRG9tYWluIik7CisjaWYgRU5BQkxF
KElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAKLS8vIEV2ZW50RG9tYWluLgotSW5z
cGVjdG9yQmFja2VuZC5yZWdpc3RlckV2ZW50RG9tYWluRGlzcGF0Y2hlciA9IEluc3BlY3RvckJh
Y2tlbmQucmVnaXN0ZXJEb21haW5EaXNwYXRjaGVyLmJpbmQoSW5zcGVjdG9yQmFja2VuZCwgIkV2
ZW50RG9tYWluIik7Ci1JbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiRXZlbnREb21haW4u
RXZlbnRXaXRoRW51bVBhcmFtZXRlclBhcmFtZXRlciIsIHtTaGFyZWQ6ICJzaGFyZWQiLCBCbGFj
azogImJsYWNrIiwgV2hpdGU6ICJ3aGl0ZSJ9KTsKLUluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJF
dmVudCgiRXZlbnREb21haW4uZXZlbnRXaXRoRW51bVBhcmFtZXRlciIsIFsicGFyYW1ldGVyIl0p
OwotSW5zcGVjdG9yQmFja2VuZC5hY3RpdmF0ZURvbWFpbigiRXZlbnREb21haW4iKTsKLSMjIyBF
bmQgRmlsZTogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCisjaW5jbHVkZSAiSW5zcGVjdG9y
UHJvdG9jb2xUeXBlcy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJv
dXRlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlciB7CitwdWJsaWM6CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQ
dHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVy
ID0gV1RGTW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0K
K3ByaXZhdGU6CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOworfTsKKworCitjbGFzcyBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNo
ZXIgOiBwdWJsaWMgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgeworcHVibGljOgorICAgIHZp
cnR1YWwgfkFsdGVybmF0ZUNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcigpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShsb25nIGNhbGxJZCkgPSAw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3Bl
Y3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0
b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAogCiAjIyMgQmVnaW4gRmlsZTogSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXJzLmgKIC8qCkBAIC0xMDg0LDcgKzEwODQsNyBAQCBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIAogIyMjIEVuZCBGaWxlOiBSV0lQcm90
b2NvbC5oCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbFR5cGVzLm1tCisjIyMgQmVnaW4g
RmlsZTogUldJUHJvdG9jb2xJbnRlcm5hbC5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMTExNSwyNSArMTExNSwxOSBA
QCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIC8vIERPIE5PVCBFRElU
IFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBlbnVtLXZhbHVl
cy5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBv
cnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xJbnRlcm5hbC5oIgotCi0jaW1wb3J0
ICJSV0lQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgorI2ltcG9ydCAiUldJUHJvdG9j
b2wuaCIKKyNpbXBvcnQgIlJXSVByb3RvY29sSlNPTk9iamVjdEludGVybmFsLmgiCisjaW1wb3J0
IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaD4KICNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgotI2ltcG9ydCA8d3RmL0Fzc2Vy
dGlvbnMuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKLQotCi0KLQotCiAKK0BpbnRl
cmZhY2UgUldJUHJvdG9jb2xFdmVudERvbWFpbkRvbWFpbkV2ZW50RGlzcGF0Y2hlciAoUHJpdmF0
ZSkKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRyb2xsZXI6KEluc3BlY3Rvcjo6QXVnbWVu
dGFibGVJbnNwZWN0b3JDb250cm9sbGVyKiljb250cm9sbGVyOworQGVuZAogCiAKLSMjIyBFbmQg
RmlsZTogUldJUHJvdG9jb2xUeXBlcy5tbQorIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbEludGVy
bmFsLmgKIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sSW50ZXJuYWwuaAorIyMjIEJlZ2lu
IEZpbGU6IFJXSVByb3RvY29sVHlwZXMubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xMTY0LDE0ICsxMTU4LDIwIEBA
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0
IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZW51bS12YWx1ZXMuanNvbgogLy8gYnkg
dGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVy
YXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaW1wb3J0ICJSV0lQcm90b2Nv
bC5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xKU09OT2JqZWN0SW50ZXJuYWwuaCIKLSNpbXBvcnQg
PEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPgorI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJSV0lQcm90b2NvbEludGVybmFsLmgiCisKKyNpbXBvcnQg
IlJXSVByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKLUBp
bnRlcmZhY2UgUldJUHJvdG9jb2xFdmVudERvbWFpbkRvbWFpbkV2ZW50RGlzcGF0Y2hlciAoUHJp
dmF0ZSkKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRyb2xsZXI6KEluc3BlY3Rvcjo6QXVn
bWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyKiljb250cm9sbGVyOwotQGVuZAordXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sSW50ZXJuYWwu
aAorCisKKworCisKKworIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbFR5cGVzLm1tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0
aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IGMxNzg4Nzg3YTQ2MjJjODQw
MGE2YTE4MWFkYzYzNzVlOTY2ZDk0MmMuLjhiZjhhNmM1MTNjY2RlMWJjYWU4ZmE5MjY1ZmI0ZDVh
NzRlOTEzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBA
IC0xLDQgKzEsNCBAQAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVycy5oCisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpz
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgpAQCAtMjksMzYgKzI5LDE0IEBACiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0
IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFy
YW1ldGVycy5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAK
LSNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKLSNkZWZpbmUg
SW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKLQotI2lmIEVOQUJMRShJTlNQ
RUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQotCi0jaW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9j
b2xUeXBlcy5oIgotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5o
PgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+
Ci0KLW5hbWVzcGFjZSBJbnNwZWN0b3IgewotCi1jbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0
Y2hlciB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFj
a2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RG
TW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KLXByaXZh
dGU6Ci0gICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwot
fTsKLQotCi0KLQotfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCi0KLSNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKLQotI2VuZGlmIC8vICFkZWZpbmVkKElu
c3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQotIyMjIEVuZCBGaWxlOiBJbnNw
ZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorLy8gRGF0YWJhc2UuCitJbnNwZWN0
b3JCYWNrZW5kLnJlZ2lzdGVyRGF0YWJhc2VEaXNwYXRjaGVyID0gSW5zcGVjdG9yQmFja2VuZC5y
ZWdpc3RlckRvbWFpbkRpc3BhdGNoZXIuYmluZChJbnNwZWN0b3JCYWNrZW5kLCAiRGF0YWJhc2Ui
KTsKK0luc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFdmVudCgiRGF0YWJhc2UuZGlkRXhlY3V0ZU9w
dGlvbmFsUGFyYW1ldGVycyIsIFsiY29sdW1uTmFtZXMiLCAibm90ZXMiLCAidGltZXN0YW1wIiwg
InZhbHVlcyIsICJwYXlsb2FkIiwgInNxbEVycm9yIiwgInNjcmVlbkNvbG9yIiwgImFsdGVybmF0
ZUNvbG9ycyIsICJwcmludENvbG9yIl0pOworSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckV2ZW50
KCJEYXRhYmFzZS5kaWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMiLCBbImNvbHVtbk5hbWVz
IiwgIm5vdGVzIiwgInRpbWVzdGFtcCIsICJ2YWx1ZXMiLCAicGF5bG9hZCIsICJzcWxFcnJvciIs
ICJzY3JlZW5Db2xvciIsICJhbHRlcm5hdGVDb2xvcnMiLCAicHJpbnRDb2xvciJdKTsKK0luc3Bl
Y3RvckJhY2tlbmQuYWN0aXZhdGVEb21haW4oIkRhdGFiYXNlIik7CisjIyMgRW5kIEZpbGU6IElu
c3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogCi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFj
a2VuZENvbW1hbmRzLmpzCisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2Vu
ZERpc3BhdGNoZXJzLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC04OSwxMiArNjcsMzQgQEAgcHJpdmF0ZToKIC8vIERP
IE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBl
dmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3It
cHJvdG9jb2wtYmluZGluZ3MucHkKIAotLy8gRGF0YWJhc2UuCi1JbnNwZWN0b3JCYWNrZW5kLnJl
Z2lzdGVyRGF0YWJhc2VEaXNwYXRjaGVyID0gSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRvbWFp
bkRpc3BhdGNoZXIuYmluZChJbnNwZWN0b3JCYWNrZW5kLCAiRGF0YWJhc2UiKTsKLUluc3BlY3Rv
ckJhY2tlbmQucmVnaXN0ZXJFdmVudCgiRGF0YWJhc2UuZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1l
dGVycyIsIFsiY29sdW1uTmFtZXMiLCAibm90ZXMiLCAidGltZXN0YW1wIiwgInZhbHVlcyIsICJw
YXlsb2FkIiwgInNxbEVycm9yIiwgInNjcmVlbkNvbG9yIiwgImFsdGVybmF0ZUNvbG9ycyIsICJw
cmludENvbG9yIl0pOwotSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckV2ZW50KCJEYXRhYmFzZS5k
aWRFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMiLCBbImNvbHVtbk5hbWVzIiwgIm5vdGVzIiwg
InRpbWVzdGFtcCIsICJ2YWx1ZXMiLCAicGF5bG9hZCIsICJzcWxFcnJvciIsICJzY3JlZW5Db2xv
ciIsICJhbHRlcm5hdGVDb2xvcnMiLCAicHJpbnRDb2xvciJdKTsKLUluc3BlY3RvckJhY2tlbmQu
YWN0aXZhdGVEb21haW4oIkRhdGFiYXNlIik7Ci0jIyMgRW5kIEZpbGU6IEluc3BlY3RvckJhY2tl
bmRDb21tYW5kcy5qcworI2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnNfaAorI2RlZmluZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorCisj
aWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNpbmNsdWRlICJJ
bnNwZWN0b3JQcm90b2NvbFR5cGVzLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kUm91dGVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEFsdGVybmF0
ZUJhY2tlbmREaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRj
aGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERp
c3BhdGNoZXIgPSBXVEZNb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERpc3BhdGNoZXIq
IGJhY2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5n
ZXQoKTsgfQorcHJpdmF0ZToKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2Vu
ZERpc3BhdGNoZXI7Cit9OworCisKKworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjZW5kaWYg
Ly8gIWRlZmluZWQoSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCisjIyMg
RW5kIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCiAKICMjIyBC
ZWdpbiBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaAogLyoKQEAgLTk3OCw2ICs5
NzgsNDkgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAKICMjIyBF
bmQgRmlsZTogUldJUHJvdG9jb2wuaAogCisjIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xJbnRl
cm5hbC5oCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGlu
Z3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJ
UyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGV2ZW50cy13aXRoLW9w
dGlvbmFsLXBhcmFtZXRlcnMuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5k
aW5ncy5weQorCisjaW1wb3J0ICJSV0lQcm90b2NvbC5oIgorI2ltcG9ydCAiUldJUHJvdG9jb2xK
U09OT2JqZWN0SW50ZXJuYWwuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxl
SW5zcGVjdG9yQ29udHJvbGxlci5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9y
VmFsdWVzLmg+CisKK0BpbnRlcmZhY2UgUldJUHJvdG9jb2xEYXRhYmFzZURvbWFpbkV2ZW50RGlz
cGF0Y2hlciAoUHJpdmF0ZSkKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRyb2xsZXI6KElu
c3BlY3Rvcjo6QXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyKiljb250cm9sbGVyOworQGVu
ZAorCisKKyMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xJbnRlcm5hbC5oCisKICMjIyBCZWdpbiBG
aWxlOiBSV0lQcm90b2NvbFR5cGVzLm1tCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xMDU5LDQ2ICsxMTAyLDMgQEAgdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKIAogCiAjIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sVHlwZXMu
bW0KLQotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sSW50ZXJuYWwuaAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLS8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21h
dGljYWxseSBnZW5lcmF0ZWQgZnJvbSBldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpz
b24KLS8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKLQotI2ltcG9ydCAi
UldJUHJvdG9jb2wuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sSlNPTk9iamVjdEludGVybmFsLmgi
Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIu
aD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgotCi1AaW50ZXJm
YWNlIFJXSVByb3RvY29sRGF0YWJhc2VEb21haW5FdmVudERpc3BhdGNoZXIgKFByaXZhdGUpCi0t
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb250cm9sbGVyOihJbnNwZWN0b3I6OkF1Z21lbnRhYmxl
SW5zcGVjdG9yQ29udHJvbGxlciopY29udHJvbGxlcjsKLUBlbmQKLQotCi0jIyMgRW5kIEZpbGU6
IFJXSVByb3RvY29sSW50ZXJuYWwuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1m
ZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1n
dWFyZHMuanNvbi1yZXN1bHQKaW5kZXggODllMzIyNGE1MDM1NDliZGIzZTc3ODIwMWJiMzM3NjQ5
NDI1NzBmZC4uM2U4NDQzMWU5YTI0NWEyZmFiNjQzNjRiNmM0ZDg4ZjZmZmVhZWMyMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
Z2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CkBAIC0xLDMg
KzEsNDQgQEAKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0
IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZl
YXR1cmUtZ3VhcmRzLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3Mu
cHkKKworLy8gTmV0d29yazEuCitJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ29tbWFuZCgiTmV0
d29yazEubG9hZFJlc291cmNlIiwgW10sIFtdKTsKK0luc3BlY3RvckJhY2tlbmQuYWN0aXZhdGVE
b21haW4oIk5ldHdvcmsxIik7CisKKy8vIE5ldHdvcmszLgorSW5zcGVjdG9yQmFja2VuZC5yZWdp
c3Rlck5ldHdvcmszRGlzcGF0Y2hlciA9IEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJEb21haW5E
aXNwYXRjaGVyLmJpbmQoSW5zcGVjdG9yQmFja2VuZCwgIk5ldHdvcmszIik7CitJbnNwZWN0b3JC
YWNrZW5kLnJlZ2lzdGVyRXZlbnQoIk5ldHdvcmszLnJlc291cmNlTG9hZGVkIiwgW10pOworSW5z
cGVjdG9yQmFja2VuZC5hY3RpdmF0ZURvbWFpbigiTmV0d29yazMiKTsKKyMjIyBFbmQgRmlsZTog
SW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCisKICMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JB
bHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNjQsNDcgKzEwNSw2IEBAIHB1Ymxp
YzoKICNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnNfaCkKICMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJz
LmgKIAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMg
YXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBnZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVy
ZS1ndWFyZHMuanNvbgotLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQot
Ci0vLyBOZXR3b3JrMS4KLUluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDb21tYW5kKCJOZXR3b3Jr
MS5sb2FkUmVzb3VyY2UiLCBbXSwgW10pOwotSW5zcGVjdG9yQmFja2VuZC5hY3RpdmF0ZURvbWFp
bigiTmV0d29yazEiKTsKLQotLy8gTmV0d29yazMuCi1JbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVy
TmV0d29yazNEaXNwYXRjaGVyID0gSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckRvbWFpbkRpc3Bh
dGNoZXIuYmluZChJbnNwZWN0b3JCYWNrZW5kLCAiTmV0d29yazMiKTsKLUluc3BlY3RvckJhY2tl
bmQucmVnaXN0ZXJFdmVudCgiTmV0d29yazMucmVzb3VyY2VMb2FkZWQiLCBbXSk7Ci1JbnNwZWN0
b3JCYWNrZW5kLmFjdGl2YXRlRG9tYWluKCJOZXR3b3JrMyIpOwotIyMjIEVuZCBGaWxlOiBJbnNw
ZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKLQogIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVycy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xMDM0LDYgKzEwMzQsNDkgQEAgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAKICMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2wuaAog
CisjIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xJbnRlcm5hbC5oCisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNh
bGx5IGdlbmVyYXRlZCBmcm9tIGdlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5q
c29uCisvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisKKyNpbXBvcnQg
IlJXSVByb3RvY29sLmgiCisjaW1wb3J0ICJSV0lQcm90b2NvbEpTT05PYmplY3RJbnRlcm5hbC5o
IgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVy
Lmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KKworQGludGVy
ZmFjZSBSV0lQcm90b2NvbE5ldHdvcmszRG9tYWluRXZlbnREaXNwYXRjaGVyIChQcml2YXRlKQor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29udHJvbGxlcjooSW5zcGVjdG9yOjpBdWdtZW50YWJs
ZUluc3BlY3RvckNvbnRyb2xsZXIqKWNvbnRyb2xsZXI7CitAZW5kCisKKworIyMjIEVuZCBGaWxl
OiBSV0lQcm90b2NvbEludGVybmFsLmgKKwogIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sVHlw
ZXMubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KQEAgLTExMTksNDYgKzExNjIsMyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiAKICMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xUeXBlcy5tbQotCi0jIyMgQmVnaW4gRmls
ZTogUldJUHJvdG9jb2xJbnRlcm5hbC5oCi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE0IFVu
aXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
Ly8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBm
cm9tIGdlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uCi0vLyBieSB0aGUg
c2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUt
aW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5Ci0KLSNpbXBvcnQgIlJXSVByb3RvY29sLmgi
Ci0jaW1wb3J0ICJSV0lQcm90b2NvbEpTT05PYmplY3RJbnRlcm5hbC5oIgotI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxK
YXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KLQotQGludGVyZmFjZSBSV0lQcm90b2Nv
bE5ldHdvcmszRG9tYWluRXZlbnREaXNwYXRjaGVyIChQcml2YXRlKQotLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoQ29udHJvbGxlcjooSW5zcGVjdG9yOjpBdWdtZW50YWJsZUluc3BlY3RvckNvbnRy
b2xsZXIqKWNvbnRyb2xsZXI7Ci1AZW5kCi0KLQotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbElu
dGVybmFsLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJl
c3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdAppbmRleCA1YmNm
ZmFjN2RmNWFjYTliNGEwMDJmZGJhYzUyYWJmNTU4OTNjYmEyLi44ZmZjMjFjNjU2NTNkOTIyYjcz
MTVhOGY5MWY2YzAzMTE0Y2FmYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1k
b21haW4uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24t
cmVzdWx0CkBAIC0xLDQgKzEsNCBAQAotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0
ZUJhY2tlbmREaXNwYXRjaGVycy5oCisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2VuZENv
bW1hbmRzLmpzCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgpAQCAtMjgsMzcgKzI4LDkgQEAKIAogLy8gRE8gTk9UIEVESVQgVEhJ
UyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHNhbWUtdHlwZS1pZC1k
aWZmZXJlbnQtZG9tYWluLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGlu
Z3MucHkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAKLSNpZm5k
ZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKLSNkZWZpbmUgSW5zcGVj
dG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKLQotI2lmIEVOQUJMRShJTlNQRUNUT1Jf
QUxURVJOQVRFX0RJU1BBVENIRVJTKQotCi0jaW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9jb2xUeXBl
cy5oIgotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+Ci0KLW5h
bWVzcGFjZSBJbnNwZWN0b3IgewotCi1jbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7
Ci1wdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFja2VuZERp
c3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGTW92ZShk
aXNwYXRjaGVyKTsgfQotICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigp
IGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KLXByaXZhdGU6Ci0g
ICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwotfTsKLQot
Ci0KLQotfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKLQotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rv
ckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JB
bHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAotCi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9y
QmFja2VuZENvbW1hbmRzLmpzCisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC04OCw3ICs2MCwzNSBAQCBwcml2YXRlOgogCiAv
LyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZy
b20gc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbgogLy8gYnkgdGhlIHNjcmlwdDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rv
ci1wcm90b2NvbC1iaW5kaW5ncy5weQotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29t
bWFuZHMuanMKKworI2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNf
aAorI2RlZmluZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorCisjaWYg
RU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNpbmNsdWRlICJJbnNw
ZWN0b3JQcm90b2NvbFR5cGVzLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kUm91dGVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEFsdGVybmF0ZUJh
Y2tlbmREaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVy
KFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3Bh
dGNoZXIgPSBXVEZNb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERpc3BhdGNoZXIqIGJh
Y2tlbmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQo
KTsgfQorcHJpdmF0ZToKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERp
c3BhdGNoZXI7Cit9OworCisKKworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlm
IC8vIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjZW5kaWYgLy8g
IWRlZmluZWQoSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCisjIyMgRW5k
IEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCiAKICMjIyBCZWdp
biBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaAogLyoKQEAgLTc1Miw3ICs3NTIs
NyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAjIyMgRW5kIEZpbGU6IFJXSVByb3Rv
Y29sLmgKIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sVHlwZXMubW0KKyMjIyBCZWdpbiBG
aWxlOiBSV0lQcm90b2NvbEludGVybmFsLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC03ODMsMjMgKzc4MywxNyBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBp
cyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHNhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9t
YWluLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEludGVybmFsLmgiCi0KLSNpbXBv
cnQgIlJXSVByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCisjaW1wb3J0ICJSV0lQcm90
b2NvbC5oIgorI2ltcG9ydCAiUldJUHJvdG9jb2xKU09OT2JqZWN0SW50ZXJuYWwuaCIKKyNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+Ci0jaW1wb3J0IDx3dGYvQXNz
ZXJ0aW9ucy5oPgotCi11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwotCi0KIAogCiAKIAotIyMj
IEVuZCBGaWxlOiBSV0lQcm90b2NvbFR5cGVzLm1tCisjIyMgRW5kIEZpbGU6IFJXSVByb3RvY29s
SW50ZXJuYWwuaAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xJbnRlcm5hbC5oCisjIyMg
QmVnaW4gRmlsZTogUldJUHJvdG9jb2xUeXBlcy5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTgzMCwxMiArODI0LDE4
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUu
IEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gc2FtZS10eXBlLWlkLWRpZmZlcmVu
dC1kb21haW4uanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQog
Ci0jaW1wb3J0ICJSV0lQcm90b2NvbC5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xKU09OT2JqZWN0
SW50ZXJuYWwuaCIKLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9y
Q29udHJvbGxlci5oPgorI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSV0lQcm90b2NvbElu
dGVybmFsLmgiCisKKyNpbXBvcnQgIlJXSVByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgi
CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KKyNpbXBvcnQgPHd0
Zi9Bc3NlcnRpb25zLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIAogCi0jIyMg
RW5kIEZpbGU6IFJXSVByb3RvY29sSW50ZXJuYWwuaAorCisKKworIyMjIEVuZCBGaWxlOiBSV0lQ
cm90b2NvbFR5cGVzLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJz
Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdApp
bmRleCBlNzYxODkxMDA1ODFhZDNmNTc5M2U1M2FjZTAyYWM2OTc2Mjc2MzM0Li45MDUzMjMzZTgy
MjJhZjI5ZmZlM2EzNWM1MDBhODI2MjQ3YjdlNzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9u
YWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNl
dHRlcnMuanNvbi1yZXN1bHQKQEAgLTEsNCArMSw0IEBACi0jIyMgQmVnaW4gRmlsZTogSW5zcGVj
dG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0
b3JCYWNrZW5kQ29tbWFuZHMuanMKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0yOCwzNyArMjgsOSBAQAogCiAvLyBETyBO
T1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gc2hh
ZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJv
dG9jb2wtYmluZGluZ3MucHkKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRz
LmpzCiAKLSNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKLSNk
ZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKLQotI2lmIEVOQUJM
RShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQotCi0jaW5jbHVkZSAiSW5zcGVjdG9y
UHJvdG9jb2xUeXBlcy5oIgotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJv
dXRlci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmg+Ci0KLW5hbWVzcGFjZSBJbnNwZWN0b3IgewotCi1jbGFzcyBBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlciB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQ
dHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVy
ID0gV1RGTW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0K
LXByaXZhdGU6Ci0gICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOwotfTsKLQotCi0KLQotfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCi0KLSNlbmRpZiAvLyBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKLQotI2VuZGlmIC8vICFkZWZp
bmVkKEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQotIyMjIEVuZCBGaWxl
OiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAotCi0jIyMgQmVnaW4gRmls
ZTogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9y
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC04OCw3ICs2MCwzNSBAQCBw
cml2YXRlOgogCiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkg
Z2VuZXJhdGVkIGZyb20gc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24KIC8vIGJ5
IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5l
cmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKLSMjIyBFbmQgRmlsZTogSW5zcGVj
dG9yQmFja2VuZENvbW1hbmRzLmpzCisKKyNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2Vu
ZERpc3BhdGNoZXJzX2gKKyNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNo
ZXJzX2gKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisj
aW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFz
cyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CitwdWJsaWM6CisgICAgdm9pZCBzZXRCYWNr
ZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBt
X2JhY2tlbmREaXNwYXRjaGVyID0gV1RGTW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmRE
aXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERp
c3BhdGNoZXIuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVy
PiBtX2JhY2tlbmREaXNwYXRjaGVyOworfTsKKworCisKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVj
dG9yCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykK
KworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVy
c19oKQorIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMu
aAogCiAjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgKIC8qCkBA
IC04NTMsNiArODUzLDQ3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0Iikp
KQogCiAjIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sLmgKIAorIyMjIEJlZ2luIEZpbGU6IFJXSVBy
b3RvY29sSW50ZXJuYWwuaAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5
IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5P
VCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBzaGFk
b3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90
b2NvbC1iaW5kaW5ncy5weQorCisjaW1wb3J0ICJSV0lQcm90b2NvbC5oIgorI2ltcG9ydCAiUldJ
UHJvdG9jb2xKU09OT2JqZWN0SW50ZXJuYWwuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1
Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUv
SW5zcGVjdG9yVmFsdWVzLmg+CisKKworCisKKyMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xJbnRl
cm5hbC5oCisKICMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbFR5cGVzLm1tCiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC05NDEs
NDQgKzk4MiwzIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIAogIyMjIEVuZCBGaWxl
OiBSV0lQcm90b2NvbFR5cGVzLm1tCi0KLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEludGVy
bmFsLmgKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5n
dG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBETyBOT1QgRURJVCBUSElT
IEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gc2hhZG93ZWQtb3B0aW9u
YWwtdHlwZS1zZXR0ZXJzLmpzb24KLS8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGlu
Z3MucHkKLQotI2ltcG9ydCAiUldJUHJvdG9jb2wuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sSlNP
Tk9iamVjdEludGVybmFsLmgiCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50YWJsZUlu
c3BlY3RvckNvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZh
bHVlcy5oPgotCi0KLQotCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sSW50ZXJuYWwuaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3Vs
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQKaW5k
ZXggYTk3ZDgyMTllNjFhNTBiMWI0MTg2OGE2OGRmMDk5N2VlMTJlNDQwZS4uZjQwMjhhODIxYWM5
Y2Q3MTgzNGJiOGY4ZDg2MDJhMTlkODQxYzMzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24t
YWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1h
bGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0CkBAIC0xLDQgKzEsNCBAQAotIyMjIEJl
Z2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisjIyMgQmVn
aW4gRmlsZTogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjgsMzcgKzI4
LDkgQEAKIAogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdl
bmVyYXRlZCBmcm9tIHR5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29u
CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisjIyMgRW5kIEZpbGU6
IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogCi0jaWZuZGVmIEluc3BlY3RvckFsdGVybmF0
ZUJhY2tlbmREaXNwYXRjaGVyc19oCi0jZGVmaW5lIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmRE
aXNwYXRjaGVyc19oCi0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVS
UykKLQotI2luY2x1ZGUgIkluc3BlY3RvclByb3RvY29sVHlwZXMuaCIKLSNpbmNsdWRlIDxpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgotCi1uYW1lc3BhY2UgSW5zcGVjdG9yIHsK
LQotY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewotcHVibGljOgotICAgIHZvaWQg
c2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNo
ZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURk1vdmUoZGlzcGF0Y2hlcik7IH0KLSAgICBC
YWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2Jh
Y2tlbmREaXNwYXRjaGVyLmdldCgpOyB9Ci1wcml2YXRlOgotICAgIFJlZlB0cjxCYWNrZW5kRGlz
cGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKLX07Ci0KLQotCi0KLX0gLy8gbmFtZXNwYWNl
IEluc3BlY3RvcgotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFU
Q0hFUlMpCi0KLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlz
cGF0Y2hlcnNfaCkKLSMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3Bh
dGNoZXJzLmgKLQotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwor
IyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgpAQCAtODgsNyArNjAsMzUgQEAgcHJpdmF0ZToKIAogLy8gRE8gTk9UIEVESVQgVEhJUyBG
SUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtZGVjbGFyYXRpb24t
YWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29s
LWJpbmRpbmdzLnB5Ci0jIyMgRW5kIEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwor
CisjaWZuZGVmIEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisjZGVmaW5l
IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCisKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2luY2x1ZGUgIkluc3BlY3RvclByb3Rv
Y29sVHlwZXMuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
PgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3Bh
dGNoZXIgeworcHVibGljOgorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJh
Y2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdU
Rk1vdmUoZGlzcGF0Y2hlcik7IH0KKyAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9Citwcml2
YXRlOgorICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsK
K307CisKKworCisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxF
KElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNlbmRpZiAvLyAhZGVmaW5lZChJ
bnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKKyMjIyBFbmQgRmlsZTogSW5z
cGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKIAogIyMjIEJlZ2luIEZpbGU6IElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oCiAvKgpAQCAtNzM5LDcgKzczOSw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2wuaAogCi0j
IyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xUeXBlcy5tbQorIyMjIEJlZ2luIEZpbGU6IFJXSVBy
b3RvY29sSW50ZXJuYWwuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTc3MCwyMSArNzcwLDE3IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRp
Y2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10
eXBlLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEludGVybmFsLmgiCi0KLSNpbXBv
cnQgIlJXSVByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCisjaW1wb3J0ICJSV0lQcm90
b2NvbC5oIgorI2ltcG9ydCAiUldJUHJvdG9jb2xKU09OT2JqZWN0SW50ZXJuYWwuaCIKKyNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+Ci0jaW1wb3J0IDx3dGYvQXNz
ZXJ0aW9ucy5oPgotCi11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAKIAogCi0jIyMgRW5k
IEZpbGU6IFJXSVByb3RvY29sVHlwZXMubW0KKyMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xJbnRl
cm5hbC5oCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEludGVybmFsLmgKKyMjIyBCZWdp
biBGaWxlOiBSV0lQcm90b2NvbFR5cGVzLm1tCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtODE1LDEyICs4MTEsMTYgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQg
aXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQt
cHJpbWl0aXZlLXR5cGUuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5n
cy5weQogCi0jaW1wb3J0ICJSV0lQcm90b2NvbC5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xKU09O
T2JqZWN0SW50ZXJuYWwuaCIKLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5z
cGVjdG9yQ29udHJvbGxlci5oPgorI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSV0lQcm90
b2NvbEludGVybmFsLmgiCisKKyNpbXBvcnQgIlJXSVByb3RvY29sRW51bUNvbnZlcnNpb25IZWxw
ZXJzLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KKyNpbXBv
cnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIAog
Ci0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sSW50ZXJuYWwuaAorCisjIyMgRW5kIEZpbGU6IFJX
SVByb3RvY29sVHlwZXMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUu
anNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0CmluZGV4
IGMyM2JiNWJmNjE4Njk1ODg4ZDczZmE5ZDhlN2Q4N2M1M2Y0NmUyYmMuLmE3Y2NiNGE5NmVmNGZh
MjU5NWU3ZjU4ZWM4NjMzZjM4YjdhNzczMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFy
cmF5LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29u
LXJlc3VsdApAQCAtMSw0ICsxLDQgQEAKLSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JBbHRlcm5h
dGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckJhY2tlbmRD
b21tYW5kcy5qcwogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KQEAgLTI5LDM2ICsyOSwxMSBAQAogLy8gRE8gTk9UIEVESVQgVEhJ
UyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtZGVjbGFyYXRp
b24tYXJyYXktdHlwZS5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdz
LnB5CiAKLSNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKLSNk
ZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKLQotI2lmIEVOQUJM
RShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQotCi0jaW5jbHVkZSAiSW5zcGVjdG9y
UHJvdG9jb2xUeXBlcy5oIgotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJv
dXRlci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmg+Ci0KLW5hbWVzcGFjZSBJbnNwZWN0b3IgewotCi1jbGFzcyBBbHRlcm5hdGVCYWNrZW5k
RGlzcGF0Y2hlciB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQ
dHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVy
ID0gV1RGTW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0K
LXByaXZhdGU6Ci0gICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOwotfTsKLQotCi0KLQotfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCi0KLSNlbmRpZiAvLyBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKLQotI2VuZGlmIC8vICFkZWZp
bmVkKEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQotIyMjIEVuZCBGaWxl
OiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorLy8gRGVidWdnZXIuCitJ
bnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiRGVidWdnZXIuUmVhc29uIiwge0RpZWQ6ICJE
aWVkIiwgRmFpbnRlZDogIkZhaW50ZWQiLCBIdW5ncnk6ICJIdW5ncnkifSk7CisjIyMgRW5kIEZp
bGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogCi0jIyMgQmVnaW4gRmlsZTogSW5zcGVj
dG9yQmFja2VuZENvbW1hbmRzLmpzCisjIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJzLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC04OSw5ICs2NCwzNCBAQCBwcml2YXRlOgog
Ly8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBm
cm9tIHR5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9y
LXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLS8vIERlYnVnZ2VyLgotSW5zcGVjdG9yQmFja2VuZC5y
ZWdpc3RlckVudW0oIkRlYnVnZ2VyLlJlYXNvbiIsIHtEaWVkOiAiRGllZCIsIEZhaW50ZWQ6ICJG
YWludGVkIiwgSHVuZ3J5OiAiSHVuZ3J5In0pOwotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JCYWNr
ZW5kQ29tbWFuZHMuanMKKyNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNo
ZXJzX2gKKyNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKKwor
I2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjaW5jbHVkZSAi
SW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZFJvdXRlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBBbHRlcm5h
dGVCYWNrZW5kRGlzcGF0Y2hlciB7CitwdWJsaWM6CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0
Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gV1RGTW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVy
KiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIu
Z2V0KCk7IH0KK3ByaXZhdGU6CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOworfTsKKworCisKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNl
bmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2VuZGlm
IC8vICFkZWZpbmVkKEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQorIyMj
IEVuZCBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAogCiAjIyMg
QmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgKIC8qCkBAIC04MDQsNyAr
ODA0LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUldJUHJvdG9jb2xEZWJ1Z2dlclJl
YXNvbikgewogCiAjIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sLmgKIAotIyMjIEJlZ2luIEZpbGU6
IFJXSVByb3RvY29sVHlwZXMubW0KKyMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEludGVybmFs
LmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCkBAIC04MzUsMjMgKzgzNSwxNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBSV0lQcm90b2NvbERlYnVnZ2VyUmVhc29uKSB7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUu
IEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNsYXJhdGlvbi1hcnJh
eS10eXBlLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAot
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEludGVybmFsLmgiCi0KLSNp
bXBvcnQgIlJXSVByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCisjaW1wb3J0ICJSV0lQ
cm90b2NvbC5oIgorI2ltcG9ydCAiUldJUHJvdG9jb2xKU09OT2JqZWN0SW50ZXJuYWwuaCIKKyNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPgog
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+Ci0jaW1wb3J0IDx3dGYv
QXNzZXJ0aW9ucy5oPgotCi11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwotCi0KIAogCiAKIAot
IyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbFR5cGVzLm1tCisjIyMgRW5kIEZpbGU6IFJXSVByb3Rv
Y29sSW50ZXJuYWwuaAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xJbnRlcm5hbC5oCisj
IyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xUeXBlcy5tbQogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTg4MiwxMiArODc2
LDE4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJ
TEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNsYXJhdGlvbi1h
cnJheS10eXBlLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkK
IAotI2ltcG9ydCAiUldJUHJvdG9jb2wuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sSlNPTk9iamVj
dEludGVybmFsLmgiCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3Rv
ckNvbnRyb2xsZXIuaD4KKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUldJUHJvdG9jb2xJ
bnRlcm5hbC5oIgorCisjaW1wb3J0ICJSV0lQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5o
IgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CisjaW1wb3J0IDx3
dGYvQXNzZXJ0aW9ucy5oPgogCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAKIAotIyMj
IEVuZCBGaWxlOiBSV0lQcm90b2NvbEludGVybmFsLmgKKworCisKKyMjIyBFbmQgRmlsZTogUldJ
UHJvdG9jb2xUeXBlcy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpz
b24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0CmluZGV4IDNk
ODI4ZDhkNjBjYjI0MGMxNTg0MmU3YmFjOGUyYjA2NGY4YjZjMWMuLjA0ZmJmNjQ2ZDU1OWRhYjBl
MTE2ODJiNWMxZTgzNzg0YzI4ODJjYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0t
dHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1
bHQKQEAgLTEsNCArMSw0IEBACi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFu
ZHMuanMKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCkBAIC0yOSwzNiArMjksMTIgQEAKIC8vIERPIE5PVCBFRElUIFRISVMgRklM
RS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xhcmF0aW9uLWVu
dW0tdHlwZS5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAK
LSNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKLSNkZWZpbmUg
SW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gKLQotI2lmIEVOQUJMRShJTlNQ
RUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQotCi0jaW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9j
b2xUeXBlcy5oIgotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5o
PgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+
Ci0KLW5hbWVzcGFjZSBJbnNwZWN0b3IgewotCi1jbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0
Y2hlciB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFj
a2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RG
TW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KLXByaXZh
dGU6Ci0gICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwot
fTsKLQotCi0KLQotfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCi0KLSNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKLQotI2VuZGlmIC8vICFkZWZpbmVkKElu
c3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQotIyMjIEVuZCBGaWxlOiBJbnNw
ZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAorLy8gUnVudGltZS4KK0luc3BlY3Rv
ckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJSdW50aW1lLkZhcm1BbmltYWxzIiwge1BpZ3M6ICJQaWdz
IiwgQ293czogIkNvd3MiLCBDYXRzOiAiQ2F0cyIsIEhlbnM6ICJIZW5zIn0pOworSW5zcGVjdG9y
QmFja2VuZC5yZWdpc3RlckVudW0oIlJ1bnRpbWUuVHdvTGVnZ2VkQW5pbWFscyIsIHtEdWNrczog
IkR1Y2tzIiwgSGVuczogIkhlbnMiLCBDcm93czogIkNyb3dzIiwgRmxhbWluZ29zOiAiRmxhbWlu
Z29zIn0pOworIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKIAotIyMj
IEJlZ2luIEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcworIyMjIEJlZ2luIEZpbGU6
IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtODksMTAg
KzY1LDM0IEBAIHByaXZhdGU6CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9t
YXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbgog
Ly8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0vLyBSdW50aW1lLgot
SW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckVudW0oIlJ1bnRpbWUuRmFybUFuaW1hbHMiLCB7UGln
czogIlBpZ3MiLCBDb3dzOiAiQ293cyIsIENhdHM6ICJDYXRzIiwgSGVuczogIkhlbnMifSk7Ci1J
bnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRW51bSgiUnVudGltZS5Ud29MZWdnZWRBbmltYWxzIiwg
e0R1Y2tzOiAiRHVja3MiLCBIZW5zOiAiSGVucyIsIENyb3dzOiAiQ3Jvd3MiLCBGbGFtaW5nb3M6
ICJGbGFtaW5nb3MifSk7Ci0jIyMgRW5kIEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5q
cworI2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorI2RlZmlu
ZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorCisjaWYgRU5BQkxFKElO
U1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JQcm90
b2NvbFR5cGVzLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kUm91dGVy
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEFsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVyIHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxC
YWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBX
VEZNb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNw
YXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQorcHJp
dmF0ZToKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7
Cit9OworCisKKworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJM
RShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjZW5kaWYgLy8gIWRlZmluZWQo
SW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCisjIyMgRW5kIEZpbGU6IElu
c3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCiAKICMjIyBCZWdpbiBGaWxlOiBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaAogLyoKQEAgLTgzOCw3ICs4MzgsNyBAQCB0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBSV0lQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxz
KSB7CiAKICMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2wuaAogCi0jIyMgQmVnaW4gRmlsZTogUldJ
UHJvdG9jb2xUeXBlcy5tbQorIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sSW50ZXJuYWwuaAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KQEAgLTg2OSwyMSArODY5LDE3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFJX
SVByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHMpIHsKIC8vIERPIE5PVCBFRElUIFRISVMg
RklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xhcmF0aW9u
LWVudW0tdHlwZS5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5
CiAKLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xJbnRlcm5hbC5oIgot
Ci0jaW1wb3J0ICJSV0lQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgorI2ltcG9ydCAi
UldJUHJvdG9jb2wuaCIKKyNpbXBvcnQgIlJXSVByb3RvY29sSlNPTk9iamVjdEludGVybmFsLmgi
CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIu
aD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgotI2ltcG9ydCA8
d3RmL0Fzc2VydGlvbnMuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogCiAKIAot
IyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbFR5cGVzLm1tCisjIyMgRW5kIEZpbGU6IFJXSVByb3Rv
Y29sSW50ZXJuYWwuaAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xJbnRlcm5hbC5oCisj
IyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xUeXBlcy5tbQogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTkxNCwxMiArOTEw
LDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJ
TEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNsYXJhdGlvbi1l
bnVtLXR5cGUuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQog
Ci0jaW1wb3J0ICJSV0lQcm90b2NvbC5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xKU09OT2JqZWN0
SW50ZXJuYWwuaCIKLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9y
Q29udHJvbGxlci5oPgorI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJSV0lQcm90b2NvbElu
dGVybmFsLmgiCisKKyNpbXBvcnQgIlJXSVByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgi
CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KKyNpbXBvcnQgPHd0
Zi9Bc3NlcnRpb25zLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIAogCiAKLSMj
IyBFbmQgRmlsZTogUldJUHJvdG9jb2xJbnRlcm5hbC5oCisjIyMgRW5kIEZpbGU6IFJXSVByb3Rv
Y29sVHlwZXMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24t
cmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKaW5kZXggODYw
NTFjNmI0MmE2MTAxYTgwZGJlNWYzZWYwMDdlZGJiN2RmNjk4NC4uNmE0ZWQ0OWRiOGQyZGE5YzBh
Y2IyNzQ5N2FhMDM0NzYzZTgwMDNmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0
LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1y
ZXN1bHQKQEAgLTEsNCArMSw0IEBACi0jIyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29t
bWFuZHMuanMKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCkBAIC0yOCwzNyArMjgsOSBAQAogCiAvLyBETyBOT1QgRURJVCBUSElT
IEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNsYXJhdGlv
bi1vYmplY3QtdHlwZS5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdz
LnB5CisjIyMgRW5kIEZpbGU6IEluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogCi0jaWZuZGVm
IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCi0jZGVmaW5lIEluc3BlY3Rv
ckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oCi0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SX0FM
VEVSTkFURV9ESVNQQVRDSEVSUykKLQotI2luY2x1ZGUgIkluc3BlY3RvclByb3RvY29sVHlwZXMu
aCIKLSNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRSb3V0ZXIuaD4KLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oPgotCi1uYW1l
c3BhY2UgSW5zcGVjdG9yIHsKLQotY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewot
cHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNw
YXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURk1vdmUoZGlz
cGF0Y2hlcik7IH0KLSAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBj
b25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9Ci1wcml2YXRlOgotICAg
IFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKLX07Ci0KLQot
Ci0KLX0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
Ul9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCi0KLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JB
bHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaCkKLSMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQWx0
ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmgKLQotIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckJh
Y2tlbmRDb21tYW5kcy5qcworIyMjIEJlZ2luIEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tl
bmREaXNwYXRjaGVycy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtODgsNyArNjAsMzUgQEAgcHJpdmF0ZToKIAogLy8g
RE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9t
IHR5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1w
cm90b2NvbC1iaW5kaW5ncy5weQotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFu
ZHMuanMKKworI2lmbmRlZiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAor
I2RlZmluZSBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnNfaAorCisjaWYgRU5B
QkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCisKKyNpbmNsdWRlICJJbnNwZWN0
b3JQcm90b2NvbFR5cGVzLmgiCisjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Um91dGVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEFsdGVybmF0ZUJhY2tl
bmREaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJl
ZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNo
ZXIgPSBXVEZNb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tl
bmREaXNwYXRjaGVyKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsg
fQorcHJpdmF0ZToKKyAgICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3Bh
dGNoZXI7Cit9OworCisKKworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8v
IEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjZW5kaWYgLy8gIWRl
ZmluZWQoSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gpCisjIyMgRW5kIEZp
bGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCiAKICMjIyBCZWdpbiBG
aWxlOiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaAogLyoKQEAgLTEyNzEsNiArMTI3MSw0
NyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIAogIyMjIEVuZCBG
aWxlOiBSV0lQcm90b2NvbC5oCiAKKyMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEludGVybmFs
LmgKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJ
TEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNsYXJhdGlvbi1v
YmplY3QtdHlwZS5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5
CisKKyNpbXBvcnQgIlJXSVByb3RvY29sLmgiCisjaW1wb3J0ICJSV0lQcm90b2NvbEpTT05PYmpl
Y3RJbnRlcm5hbC5oIgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0
b3JDb250cm9sbGVyLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMu
aD4KKworCisKKworIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbEludGVybmFsLmgKKwogIyMjIEJl
Z2luIEZpbGU6IFJXSVByb3RvY29sVHlwZXMubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTE2OTMsNDQgKzE3MzQsMyBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAKICMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xU
eXBlcy5tbQotCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xJbnRlcm5hbC5oCi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBh
dXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUu
anNvbgotLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQotCi0jaW1wb3J0
ICJSV0lQcm90b2NvbC5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xKU09OT2JqZWN0SW50ZXJuYWwu
aCIKLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxl
ci5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+Ci0KLQotCi0K
LSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xJbnRlcm5hbC5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1
aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNh
c3RzLmpzb24tcmVzdWx0CmluZGV4IDliZTU4NzM5M2ZkZjVlNzkxMDQ5ODU5NGIyNjI5Y2ExNjVl
OGUzNzQuLmViYjY1MTM5OTdjMjFhZTc3OWZlZWVkYTNiZWUxZDhmZDAzNGM2MTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVp
cmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CkBAIC0xLDQgKzEsNCBAQAotIyMjIEJlZ2lu
IEZpbGU6IEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oCisjIyMgQmVnaW4g
RmlsZTogSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzCiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjksMzYgKzI5LDEy
IEBACiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJh
dGVkIGZyb20gdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uCiAvLyBieSB0aGUgc2Ny
aXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5z
cGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXJzX2gKLSNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXJzX2gKLQotI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJT
KQotCi0jaW5jbHVkZSAiSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIgotI2luY2x1ZGUgPGluc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZFJvdXRlci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmg+Ci0KLW5hbWVzcGFjZSBJbnNwZWN0b3Igewot
Ci1jbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBz
ZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hl
cikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGTW92ZShkaXNwYXRjaGVyKTsgfQotICAgIEJh
Y2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPEJhY2tlbmREaXNw
YXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwotfTsKLQotCi0KLQotfSAvLyBuYW1lc3BhY2Ug
SW5zcGVjdG9yCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRD
SEVSUykKLQotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVyc19oKQotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0
Y2hlcnMuaAorLy8gVGVzdC4KK0luc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJUZXN0LlVu
Y2FzdGVkQW5pbWFscyIsIHtQaWdzOiAiUGlncyIsIENvd3M6ICJDb3dzIiwgQ2F0czogIkNhdHMi
LCBIZW5zOiAiSGVucyJ9KTsKK0luc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJFbnVtKCJUZXN0LkNh
c3RlZEFuaW1hbHMiLCB7RHVja3M6ICJEdWNrcyIsIEhlbnM6ICJIZW5zIiwgQ3Jvd3M6ICJDcm93
cyIsIEZsYW1pbmdvczogIkZsYW1pbmdvcyJ9KTsKKyMjIyBFbmQgRmlsZTogSW5zcGVjdG9yQmFj
a2VuZENvbW1hbmRzLmpzCiAKLSMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JCYWNrZW5kQ29tbWFu
ZHMuanMKKyMjIyBCZWdpbiBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hl
cnMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KQEAgLTg5LDEwICs2NSwzNCBAQCBwcml2YXRlOgogLy8gRE8gTk9UIEVESVQg
VEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtcmVxdWly
aW5nLXJ1bnRpbWUtY2FzdHMuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5k
aW5ncy5weQogCi0vLyBUZXN0LgotSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckVudW0oIlRlc3Qu
VW5jYXN0ZWRBbmltYWxzIiwge1BpZ3M6ICJQaWdzIiwgQ293czogIkNvd3MiLCBDYXRzOiAiQ2F0
cyIsIEhlbnM6ICJIZW5zIn0pOwotSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckVudW0oIlRlc3Qu
Q2FzdGVkQW5pbWFscyIsIHtEdWNrczogIkR1Y2tzIiwgSGVuczogIkhlbnMiLCBDcm93czogIkNy
b3dzIiwgRmxhbWluZ29zOiAiRmxhbWluZ29zIn0pOwotIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JC
YWNrZW5kQ29tbWFuZHMuanMKKyNpZm5kZWYgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3Bh
dGNoZXJzX2gKKyNkZWZpbmUgSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzX2gK
KworI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTKQorCisjaW5jbHVk
ZSAiSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIgorI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZFJvdXRlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBBbHRl
cm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CitwdWJsaWM6CisgICAgdm9pZCBzZXRCYWNrZW5kRGlz
cGF0Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tl
bmREaXNwYXRjaGVyID0gV1RGTW92ZShkaXNwYXRjaGVyKTsgfQorICAgIEJhY2tlbmREaXNwYXRj
aGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNo
ZXIuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2Jh
Y2tlbmREaXNwYXRjaGVyOworfTsKKworCisKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKKworI2Vu
ZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyc19oKQor
IyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaAogCiAj
IyMgQmVnaW4gRmlsZTogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgKIC8qCkBAIC0xMTg2
LDYgKzExODYsNDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAK
ICMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2wuaAogCisjIyMgQmVnaW4gRmlsZTogUldJUHJvdG9j
b2xJbnRlcm5hbC5oCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2Yg
V2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVE
SVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtcmVx
dWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1i
aW5kaW5ncy5weQorCisjaW1wb3J0ICJSV0lQcm90b2NvbC5oIgorI2ltcG9ydCAiUldJUHJvdG9j
b2xKU09OT2JqZWN0SW50ZXJuYWwuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRh
YmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVj
dG9yVmFsdWVzLmg+CisKKworCisKKyMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xJbnRlcm5hbC5o
CisKICMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbFR5cGVzLm1tCiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xMzI5LDQ0ICsx
MzcwLDMgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogCiAjIyMgRW5kIEZpbGU6IFJX
SVByb3RvY29sVHlwZXMubW0KLQotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sSW50ZXJuYWwu
aAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIERPIE5PVCBFRElUIFRISVMgRklM
RS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLXJlcXVpcmluZy1ydW50
aW1lLWNhc3RzLmpzb24KLS8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkK
LQotI2ltcG9ydCAiUldJUHJvdG9jb2wuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sSlNPTk9iamVj
dEludGVybmFsLmgiCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3Rv
ckNvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5o
PgotCi0KLQotCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sSW50ZXJuYWwuaAo=
</data>
<flag name="review"
          id="296691"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>