<?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>149335</bug_id>
          
          <creation_ts>2015-09-17 22:01:42 -0700</creation_ts>
          <short_desc>Remove register preservation and restoration stub code</short_desc>
          <delta_ts>2015-09-18 09:21:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>Other</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1127059</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-09-17 22:01:42 -0700</bug_when>
    <thetext>With the landing of the callee saves patch in change set r189575: &lt;http://trac.webkit.org/changeset/189575&gt;, there is no longer a need for register preservation and restoration thunks and the code that generates them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127067</commentid>
    <comment_count>1</comment_count>
      <attachid>261491</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-09-17 22:20:34 -0700</bug_when>
    <thetext>Created attachment 261491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127071</commentid>
    <comment_count>2</comment_count>
      <attachid>261493</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-09-17 22:38:33 -0700</bug_when>
    <thetext>Created attachment 261493
Patch with Speculative CMake Build Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127113</commentid>
    <comment_count>3</comment_count>
      <attachid>261493</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-09-18 08:28:02 -0700</bug_when>
    <thetext>Comment on attachment 261493
Patch with Speculative CMake Build Fix

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127123</commentid>
    <comment_count>4</comment_count>
      <attachid>261504</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-09-18 09:03:08 -0700</bug_when>
    <thetext>Created attachment 261504
Patch with deletion of more related code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127126</commentid>
    <comment_count>5</comment_count>
      <attachid>261504</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-09-18 09:08:57 -0700</bug_when>
    <thetext>Comment on attachment 261504
Patch with deletion of more related code

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127131</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-09-18 09:21:21 -0700</bug_when>
    <thetext>Committed r189967: &lt;http://trac.webkit.org/changeset/189967&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261491</attachid>
            <date>2015-09-17 22:20:34 -0700</date>
            <delta_ts>2015-09-17 22:38:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>149335.patch</filename>
            <type>text/plain</type>
            <size>49714</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg5OTYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBA
CisyMDE1LTA5LTE3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFJlbW92ZSByZWdpc3RlciBwcmVzZXJ2YXRpb24gYW5kIHJlc3RvcmF0aW9uIHN0dWIgY29k
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5MzM1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVsZXRl
IHRoZSByZWdpc3RlciBwcmVzZXJ2YXRpb24gYW5kIHJlc3RvcmF0aW9uIHRodW5rcyBhbmQgcmVs
YXRlZCBwbHVtYmluZy4KKworICAgICAgICBNdWNoIG9mIHRoaXMgY2hhbmdlIGlzIHJlbW92aW5n
IHRoZSB1bm5lZWRlZCBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUgcGFyYW1ldGVyCisgICAgICAg
IGZyb20gdmFyaW91cyBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxs
TGlua0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjppc1ZhcmFyZ3NDYWxsVHlw
ZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Q2FsbExpbmtJbmZvKToKKyAgICAgICAg
KEpTQzo6Q2FsbExpbmtJbmZvOjppc1ZhcmFyZ3MpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0lu
Zm86OmlzTGlua2VkKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRVcENhbGxGcm9t
RlRMKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpyZWdpc3RlclByZXNlcnZhdGlvbk1v
ZGUpOiBEZWxldGVkLgorICAgICAgICAqIGZ0bC9GVExKSVRDb2RlLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpKSVRDb2RlOjppbml0aWFsaXplQWRkcmVzc0ZvckNhbGwpOgorICAgICAgICAoSlND
OjpGVEw6OkpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKToKKyAgICAgICAgKiBmdGwvRlRMSklUQ29k
ZS5oOgorICAgICAgICAqIGZ0bC9GVExPU1JFbnRyeS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
cHJlcGFyZU9TUkVudHJ5KToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgICogaml0L0pJVENvZGUu
Y3BwOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6RGly
ZWN0SklUQ29kZTo6ZW5zdXJlV3JhcHBlcnMpOgorICAgICAgICAoSlNDOjpEaXJlY3RKSVRDb2Rl
OjphZGRyZXNzRm9yQ2FsbCk6CisgICAgICAgIChKU0M6Ok5hdGl2ZUpJVENvZGU6OmluaXRpYWxp
emVDb2RlUmVmKToKKyAgICAgICAgKEpTQzo6TmF0aXZlSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwp
OgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6OkpJVENvZGU6OmppdFR5
cGVGb3IpOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjpleGVjdXRhYmxlQWRkcmVzcyk6CisgICAg
ICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9SZWdpc3RlclByZXNl
cnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGppdC9SZWdp
c3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBq
aXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAg
ICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0dWFsVGh1
bmtGb3IpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuaDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjplbnRyeU9TUik6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0
YWJsZS5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6Z2VuZXJhdGVkSklUQ29kZUZv
cik6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjplbnRyeXBvaW50Rm9yKToKKyAgICAg
ICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrRm9y
KToKKyAgICAgICAgKiBydW50aW1lL1JlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oOiBSZW1vdmVk
LgorCiAyMDE1LTA5LTE3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTg5OTM4LCByMTg5OTUyLCBhbmQg
cjE4OTk1Ni4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2
aXNpb24gMTg5OTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjUwLDcgKzY1
MCw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVnLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlckF0T2Zmc2V0LmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAiIC8+Ci0g
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVy
R2VuZXJhdG9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxSZWdpc3Rl
clNldC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVwYXRjaC5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcU2NyYXRjaFJlZ2lzdGVyQWxsb2Nh
dG9yLmNwcCIgLz4KQEAgLTE0NTMsNyArMTQ1Miw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxqaXRcUmVnaXN0ZXJBdE9mZnNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caml0XFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxqaXRcUmVnaXN0ZXJNYXAuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGpp
dFxSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlclNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caml0XFJlcGF0Y2guaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGpp
dFxTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCIgLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVy
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE4OTk0MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMTUwMCw5ICsxNTAwLDYgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0
b3JQcm90b2NvbE9iamVjdHMuY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9G
aWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRc
UmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcCI+Ci0gICAgICA8RmlsdGVy
PmppdDwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCI+CiAgICAgICA8RmlsdGVy
PkRlcml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNDA0Niw5ICs0
MDQzLDYgQEAKICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGF0
YVZpZXdQcm90b3R5cGUubHV0LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRc
UmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmgiPgotICAgICAgPEZpbHRlcj5q
aXQ8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGZ0bFxGVExBYmJyZXZpYXRlZFR5cGVzLmgiPgogICAgICAgPEZpbHRlcj5mdGw8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxODk5NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzc4LDkgKzM3OCw2IEBA
CiAJCTBGNkIxQ0I1MTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExKU0NhbGwuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQjMxODVGQzlFOTAwODQ1
RDk3IC8qIEZUTEpTQ2FsbC5jcHAgKi87IH07CiAJCTBGNkIxQ0I2MTg1RkM5RTkwMDg0NUQ5NyAv
KiBGVExKU0NhbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNkIxQ0I0MTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExKU0NhbGwuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjZCMUNCOTE4NjEyNDRDMDA4
NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0I3MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9k
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBG
NkIxQ0JBMTg2MTI0NEMwMDg0NUQ5NyAvKiBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0I4MTg2MTI0
NEMwMDg0NUQ5NyAvKiBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjZCMUNCRDE4NjEyNDZBMDA4NDVE
OTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0JCMTg2MTI0NkEwMDg0
NUQ5NyAvKiBSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwICovOyB9Owot
CQkwRjZCMUNCRTE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVy
R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjZCMUNCQzE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVy
R2VuZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY2QjFDQzUxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQzExODYyQzQ3
ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uY3BwICovOyB9OwogCQkwRjZCMUNDNjE4NjJDNDc4
MDA4NDVEOTcgLyogRlRMVW53aW5kSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQzIxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZElu
Zm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QzczNEUxQUM5
Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCAqLzsgfTsKQEAgLTIy
MTEsOSArMjIwOCw2IEBACiAJCTBGNkIxQ0IzMTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExKU0NhbGwu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMSlNDYWxsLmNwcDsg
cGF0aCA9IGZ0bC9GVExKU0NhbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjZCMUNCNDE4NUZDOUU5MDA4NDVEOTcgLyogRlRMSlNDYWxsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEZUTEpTQ2FsbC5oOyBwYXRoID0gZnRsL0ZUTEpTQ2FsbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjZCMUNCNzE4NjEyNDRDMDA4NDVEOTcgLyogQXJp
dHlDaGVja01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJpdHlDaGVj
a01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY2QjFDQjgxODYxMjQ0QzAw
ODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMEY2QjFDQkIxODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2Vy
dmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkwRjZCMUNCQzE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0
ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjZCMUNDMTE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53
aW5kSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExVbndp
bmRJbmZvLmNwcDsgcGF0aCA9IGZ0bC9GVExVbndpbmRJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY2QjFDQzIxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMVW53aW5kSW5mby5oOyBwYXRo
ID0gZnRsL0ZUTFVud2luZEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2
QzczNEUxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZhcmlhYmxlV3JpdGVGaXJlRGV0YWls
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNjEsOCArNDE1NSw2IEBACiAJ
CQkJNjU0MEM3OUMxQjgyRDk5RDAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcCAq
LywKIAkJCQk2NTQwQzc5RDFCODJEOTlEMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldExpc3Qu
aCAqLywKIAkJCQk2MjNBMzdFQjFCODdBN0JEMDA3NTQyMDkgLyogUmVnaXN0ZXJNYXAuaCAqLywK
LQkJCQkwRjZCMUNCQjE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFw
cGVyR2VuZXJhdG9yLmNwcCAqLywKLQkJCQkwRjZCMUNCQzE4NjEyNDZBMDA4NDVEOTcgLyogUmVn
aXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmggKi8sCiAJCQkJMEZDMzE0MTQxODE0
NkQ3MDAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmNwcCAqLywKIAkJCQkwRkMzMTQxMDE4MTQ1NTkx
MDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuaCAqLywKIAkJCQkwRjI0RTU0OTE3RUUyNzQ5MDBBQkIy
MTcgLyogUmVwYXRjaC5jcHAgKi8sCkBAIC00OTUzLDcgKzQ5NDUsNiBAQAogCQkJCUY2OTJBODdD
MDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHBPYmplY3QuaCAqLywKIAkJCQlCQ0QyMDJCRjBFMTcw
NkE3MDAyQzdFODIgLyogUmVnRXhwUHJvdG90eXBlLmNwcCAqLywKIAkJCQlCQ0QyMDJDMDBFMTcw
NkE3MDAyQzdFODIgLyogUmVnRXhwUHJvdG90eXBlLmggKi8sCi0JCQkJMEY2QjFDQjgxODYxMjQ0
QzAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oICovLAogCQkJCTBGQjdGMzkx
MTVFRDhFMzgwMEYxNjdCMiAvKiBSZWplY3QuaCAqLywKIAkJCQk3MEIwQTlEMDFBOUI2NjIwMDAw
MTMwNkEgLyogUnVudGltZUZsYWdzLmggKi8sCiAJCQkJNTI3NzczREQxQUFGODNBQzAwQkRFN0U4
IC8qIFJ1bnRpbWVUeXBlLmNwcCAqLywKQEAgLTY3NTIsOCArNjc0Myw2IEBACiAJCQkJQkNEMjAy
QzQwRTE3MDZBNzAwMkM3RTgyIC8qIFJlZ0V4cFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0NUQwRTE2RjVDRDAwQjM0NDYwIC8qIFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5NjlBMDcyQjBFRDFDRTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJRC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMEY2QjFDQkExODYxMjQ0QzAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9u
TW9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY2QjFDQkUxODYxMjQ2QTAwODQ1RDk3IC8qIFJl
Z2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZDMzE0MTIxODE0NTU5MTAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjUwQUYzQzE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTdEMjNFRTE4OTFCNTU0MDAzMUM3RkEgLyogUmVndWxh
ckV4cHJlc3Npb24uaCBpbiBIZWFkZXJzICovLApAQCAtNzkzMyw3ICs3OTIyLDYgQEAKIAkJCQk4
NjQyQzUxMjE1MUMwODNEMDA0NkQ0RUYgLyogUmVnRXhwTWF0Y2hlc0FycmF5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0MjgwODQzMTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHBPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NDQxMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cFBy
b3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRjZCMUNCRDE4NjEyNDZBMDA4NDVEOTcg
LyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQzMxNDE1MTgxNDZENzAwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNTdEMjNFRDE4OTFCNTU0MDAzMUM3RkEgLyogUmVndWxhckV4cHJlc3Np
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMzRjUwNzgxQjg0MjI1NzAwNDEzODU2IC8qIEpT
SW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAx
ODk5NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTczLDggKzczLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIENh
bGxMaW5rSW5mbygpCi0gICAgICAgIDogbV9yZWdpc3RlclByZXNlcnZhdGlvbk1vZGUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFJlZ2lzdGVyUHJlc2VydmF0aW9uTm90UmVxdWlyZWQpKQotICAgICAg
ICAsIG1faGFzU2VlblNob3VsZFJlcGF0Y2goZmFsc2UpCisgICAgICAgIDogbV9oYXNTZWVuU2hv
dWxkUmVwYXRjaChmYWxzZSkKICAgICAgICAgLCBtX2hhc1NlZW5DbG9zdXJlKGZhbHNlKQogICAg
ICAgICAsIG1fY2xlYXJlZEJ5R0MoZmFsc2UpCiAgICAgICAgICwgbV9hbGxvd1N0dWJzKHRydWUp
CkBAIC0xMzUsMTEgKzEzNCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGlzVmFyYXJnc0Nh
bGxUeXBlKHN0YXRpY19jYXN0PENhbGxUeXBlPihtX2NhbGxUeXBlKSk7CiAgICAgfQogCi0gICAg
UmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlIHJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVnaXN0ZXJQcmVzZXJ2YXRpb25N
b2RlPihtX3JlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSk7Ci0gICAgfQotCiAgICAgYm9vbCBpc0xp
bmtlZCgpIHsgcmV0dXJuIG1fc3R1YiB8fCBtX2NhbGxlZTsgfQogICAgIHZvaWQgdW5saW5rKFZN
Jik7CiAKQEAgLTE2OSw3ICsxNjMsNiBAQCBwdWJsaWM6CiAgICAgICAgIENvZGVMb2NhdGlvbk5l
YXJDYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbiwgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGhvdFBh
dGhCZWdpbiwKICAgICAgICAgQ29kZUxvY2F0aW9uTmVhckNhbGwgaG90UGF0aE90aGVyLCB1bnNp
Z25lZCBjYWxsZWVHUFIpCiAgICAgewotICAgICAgICBtX3JlZ2lzdGVyUHJlc2VydmF0aW9uTW9k
ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVk
KTsKICAgICAgICAgbV9jYWxsVHlwZSA9IGNhbGxUeXBlOwogICAgICAgICBtX2NvZGVPcmlnaW4g
PSBjb2RlT3JpZ2luOwogICAgICAgICBtX2NhbGxSZXR1cm5Mb2NhdGlvbiA9IGNhbGxSZXR1cm5M
b2NhdGlvbjsKQEAgLTM0Niw3ICszMzksNiBAQCBwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxK
U0Z1bmN0aW9uPiBtX2xhc3RTZWVuQ2FsbGVlOwogICAgIFJlZlB0cjxQb2x5bW9ycGhpY0NhbGxT
dHViUm91dGluZT4gbV9zdHViOwogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gbV9zbG93U3R1
YjsKLSAgICB1bnNpZ25lZCBtX3JlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSA6IDE7IC8vIFJlYWwg
dHlwZSBpcyBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUKICAgICBib29sIG1faGFzU2VlblNob3Vs
ZFJlcGF0Y2ggOiAxOwogICAgIGJvb2wgbV9oYXNTZWVuQ2xvc3VyZSA6IDE7CiAgICAgYm9vbCBt
X2NsZWFyZWRCeUdDIDogMTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklU
Q29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRD
b2RlLmNwcAkocmV2aXNpb24gMTg5OTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExKSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIEpJVENv
ZGU6OmluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbChDCiAgICAgbV9hZGRyZXNzRm9yQ2FsbCA9IGFk
ZHJlc3M7CiB9CiAKLUpJVENvZGU6OkNvZGVQdHIgSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwoVk0m
LCBFeGVjdXRhYmxlQmFzZSosIEFyaXR5Q2hlY2tNb2RlIGFyaXR5Q2hlY2ssIFJlZ2lzdGVyUHJl
c2VydmF0aW9uTW9kZSkKK0pJVENvZGU6OkNvZGVQdHIgSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwo
QXJpdHlDaGVja01vZGUgYXJpdHlDaGVjaykKIHsKICAgICBzd2l0Y2ggKGFyaXR5Q2hlY2spIHsK
ICAgICBjYXNlIEFyaXR5Q2hlY2tOb3RSZXF1aXJlZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMSklUQ29kZS5oCShyZXZpc2lvbiAxODk5NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEpJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBw
dWJsaWM6CiAgICAgSklUQ29kZSgpOwogICAgIH5KSVRDb2RlKCk7CiAgICAgCi0gICAgQ29kZVB0
ciBhZGRyZXNzRm9yQ2FsbChWTSYsIEV4ZWN1dGFibGVCYXNlKiwgQXJpdHlDaGVja01vZGUsIFJl
Z2lzdGVyUHJlc2VydmF0aW9uTW9kZSkgb3ZlcnJpZGU7CisgICAgQ29kZVB0ciBhZGRyZXNzRm9y
Q2FsbChBcml0eUNoZWNrTW9kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCogZXhlY3V0YWJsZUFkZHJl
c3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBvdmVycmlkZTsKICAgICB2b2lkKiBkYXRhQWRkcmVz
c0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpIG92ZXJyaWRlOwogICAgIHVuc2lnbmVkIG9mZnNldE9m
KHZvaWQqIHBvaW50ZXJJbnRvQ29kZSkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcAkocmV2aXNpb24gMTg5OTQxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw5
ICsxMDAsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAgCiAgICAgZXhlYy0+c2V0Q29k
ZUJsb2NrKGVudHJ5Q29kZUJsb2NrKTsKICAgICAKLSAgICB2b2lkKiByZXN1bHQgPSBlbnRyeUNv
ZGUtPmFkZHJlc3NGb3JDYWxsKAotICAgICAgICB2bSwgZXhlY3V0YWJsZSwgQXJpdHlDaGVja05v
dFJlcXVpcmVkLAotICAgICAgICBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkKS5leGVj
dXRhYmxlQWRkcmVzcygpOworICAgIHZvaWQqIHJlc3VsdCA9IGVudHJ5Q29kZS0+YWRkcmVzc0Zv
ckNhbGwoQXJpdHlDaGVja05vdFJlcXVpcmVkKS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgIGlm
IChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgIGRhdGFMb2coIiAgICBFbnRyeSB3aWxs
IHN1Y2NlZWQsIGdvaW5nIHRvIGFkZHJlc3MiLCBSYXdQb2ludGVyKHJlc3VsdCksICJcbiIpOwog
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENv
bXBpbGVyLmNwcAkocmV2aXNpb24gMTg5OTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBA
CiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJP
cGVyYW5kc0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiUmVn
aXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRlRMIHsKIApAQCAtMzc5LDkgKzM3OCw2IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVT
dHViKAogICAgIC8vIG9sZCBmcmFtZSwgYW5kIGZpbmFsbHkgd2Ugc2F2ZSB0aGUgdmFyaW91cyBj
YWxsZWUtc2F2ZSByZWdpc3RlcnMgaW50byB3aGVyZSB0aGUKICAgICAvLyByZXN0b3JhdGlvbiB0
aHVuayB3b3VsZCByZXN0b3JlIHRoZW0gZnJvbS4KICAgICAKLSAgICBwdHJkaWZmX3Qgb2Zmc2V0
ID0gcmVnaXN0ZXJQcmVzZXJ2YXRpb25PZmZzZXQoKTsKLSAgICBSZWdpc3RlclNldCB0b1NhdmUg
PSByZWdpc3RlcnNUb1ByZXNlcnZlKCk7Ci0gICAgCiAgICAgLy8gQmVmb3JlIHdlIHN0YXJ0IG1l
c3Npbmcgd2l0aCB0aGUgZnJhbWUsIHdlIG5lZWQgdG8gc2V0IGFzaWRlIGFueSByZWdpc3RlcnMg
dGhhdCB0aGUKICAgICAvLyBGVEwgY29kZSB3YXMgcHJlc2VydmluZy4KICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKS0+c2l6ZSgpOyBpLS07KSB7
CkBAIC0zOTcsMjYgKzM5MywxNiBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAvLyBM
ZXQncyBzYXkgdGhhdCB0aGUgRlRMIGZ1bmN0aW9uIGhhZCBmYWlsZWQgaXRzIGFyaXR5IGNoZWNr
LiBJbiB0aGF0IGNhc2UsIHRoZSBzdGFjayB3aWxsCiAgICAgLy8gY29udGFpbiBzb21lIGV4dHJh
IHN0dWZmLgogICAgIC8vCi0gICAgLy8gRmlyc3Qgd2UgY29tcHV0ZSB0aGUgcGFkZGVkIHN0YWNr
IHNwYWNlOgorICAgIC8vIFdlIGNvbXB1dGUgdGhlIHBhZGRlZCBzdGFjayBzcGFjZToKICAgICAv
LwogICAgIC8vICAgICBwYWRkZWRTdGFja1NwYWNlID0gcm91bmRVcChjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMgLSByZWdUMiArIDEpCiAgICAgLy8KLSAgICAvLyBUaGUgc3RhY2sgd2lsbCBoYXZl
IHJlZ1QyICsgQ2FsbEZyYW1lSGVhZGVyU2l6ZSBzdHVmZiwgYnV0IGFib3ZlIGl0IHRoZXJlIHdp
bGwgYmUKLSAgICAvLyBwYWRkZWRTdGFja1NwYWNlIGd1bmsgdXNlZCBieSB0aGUgYXJpdHkgY2hl
Y2sgZmFpbCByZXN0b3JhdGlvbiB0aHVuay4gV2hlbiB0aGF0IGhhcHBlbnMKLSAgICAvLyB3ZSB3
YW50IHRvIG1ha2UgdGhlIHN0YWNrIGxvb2sgbGlrZSB0aGlzLCBmcm9tIGhpZ2hlciBhZGRyZXNz
ZXMgZG93bjoKKyAgICAvLyBUaGUgc3RhY2sgd2lsbCBoYXZlIHJlZ1QyICsgQ2FsbEZyYW1lSGVh
ZGVyU2l6ZSBzdHVmZi4KKyAgICAvLyBXZSB3YW50IHRvIG1ha2UgdGhlIHN0YWNrIGxvb2sgbGlr
ZSB0aGlzLCBmcm9tIGhpZ2hlciBhZGRyZXNzZXMgZG93bjoKICAgICAvLwotICAgIC8vICAgICAt
IHJlZ2lzdGVyIHByZXNlcnZhdGlvbiByZXR1cm4gUEMKLSAgICAvLyAgICAgLSBwcmVzZXJ2ZWQg
cmVnaXN0ZXJzCi0gICAgLy8gICAgIC0gYXJpdHkgY2hlY2sgZmFpbCByZXR1cm4gUEMKICAgICAv
LyAgICAgLSBhcmd1bWVudCBwYWRkaW5nCiAgICAgLy8gICAgIC0gYWN0dWFsIGFyZ3VtZW50cwog
ICAgIC8vICAgICAtIGNhbGwgZnJhbWUgaGVhZGVyCi0gICAgLy8KLSAgICAvLyBTbyB0aGF0IHRo
ZSBhY3R1YWwgY2FsbCBmcmFtZSBoZWFkZXIgYXBwZWFycyB0byByZXR1cm4gdG8gdGhlIGFyaXR5
IGNoZWNrIGZhaWwgcmV0dXJuCi0gICAgLy8gUEMsIGFuZCB0aGF0IHRoZW4gcmV0dXJucyB0byB0
aGUgcmVnaXN0ZXIgcHJlc2VydmF0aW9uIHRodW5rLiBUaGUgYXJpdHkgY2hlY2sgdGh1bmsgdGhh
dAotICAgIC8vIHdlIHJldHVybiB0byB3aWxsIGhhdmUgdGhlIHBhZGRpbmcgc2l6ZSBlbmNvZGVk
IGludG8gaXQuIEl0IHdpbGwgdGhlbiBrbm93IHRvIHJldHVybgotICAgIC8vIGludG8gdGhlIHJl
Z2lzdGVyIHByZXNlcnZhdGlvbiB0aHVuaywgd2hpY2ggdXNlcyB0aGUgYXJndW1lbnQgY291bnQg
dG8gZmlndXJlIG91dCB3aGVyZQotICAgIC8vIHJlZ2lzdGVycyBhcmUgcHJlc2VydmVkLgogCiAg
ICAgLy8gVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggRnVuY3Rpb25D
b2RlLgogICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlv
bkNvZGUpOwpAQCAtNDM2LDcgKzQyMiw2IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogCiAg
ICAgLy8gRmlyc3Qgc2V0IHVwIFNQIHNvIHRoYXQgb3VyIGRhdGEgZG9lc24ndCBnZXQgY2xvYmJl
cmVkIGJ5IHNpZ25hbHMuCiAgICAgdW5zaWduZWQgY29uc2VydmF0aXZlU3RhY2tEZWx0YSA9Ci0g
ICAgICAgIHJlZ2lzdGVyUHJlc2VydmF0aW9uT2Zmc2V0KCkgKwogICAgICAgICAoZXhpdC5tX3Zh
bHVlcy5udW1iZXJPZkxvY2FscygpICsgYmFzZWxpbmVDb2RlQmxvY2stPmNhbGxlZVNhdmVTcGFj
ZUFzVmlydHVhbFJlZ2lzdGVycygpKSAqIHNpemVvZihSZWdpc3RlcikgKwogICAgICAgICBtYXhG
cmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbDsKICAgICBjb25zZXJ2YXRpdmVTdGFja0RlbHRhID0g
V1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKApAQCAtNDQ1LDI1ICs0MzAsMTIgQEAgc3RhdGljIHZv
aWQgY29tcGlsZVN0dWIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoLWNv
bnNlcnZhdGl2ZVN0YWNrRGVsdGEpLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2lu
dGVyUmVnaXN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAg
aml0LmNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7Ci0gICAgCi0gICAgaml0LnN1YlB0cigK
LSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihyZWdpc3RlclByZXNlcnZhdGlv
bk9mZnNldCgpKSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVy
KTsKLSAgICAKLSAgICAvLyBDb3B5IHRoZSBvbGQgZnJhbWUgZGF0YSBpbnRvIGl0cyBuZXcgbG9j
YXRpb24uCi0gICAgaml0LmFkZDMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSlNTdGFj
azo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSksIEdQUkluZm86OnJlZ1QyKTsKLSAgICBqaXQubW92ZShN
YWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QxKTsKLSAg
ICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbG9vcCA9IGppdC5sYWJlbCgpOwotICAgIGppdC5zdWIz
MihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAg
aml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMSwgb2Zmc2V0
KSwgR1BSSW5mbzo6cmVnVDApOwotICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBHUFJJ
bmZvOjpyZWdUMSk7Ci0gICAgaml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgaml0LmJyYW5jaFRlc3Qz
MihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgR1BSSW5mbzo6cmVnVDIpLmxpbmtUbyhsb29wLCAm
aml0KTsKIAorICAgIFJlZ2lzdGVyU2V0IGFsbEZUTENhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6
OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMoKTsKICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYmFz
ZWxpbmVDYWxsZWVTYXZlcyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJz
KCk7CiAKICAgICBmb3IgKFJlZyByZWcgPSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBSZWc6Omxhc3Qo
KTsgcmVnID0gcmVnLm5leHQoKSkgewotICAgICAgICBpZiAoIXRvU2F2ZS5nZXQocmVnKSB8fCAh
cmVnLmlzR1BSKCkpCisgICAgICAgIGlmICghYWxsRlRMQ2FsbGVlU2F2ZXMuZ2V0KHJlZykgfHwg
IXJlZy5pc0dQUigpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHVuc2lnbmVkIHVu
d2luZEluZGV4ID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPmluZGV4T2YocmVn
KTsKICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCogYmFzZWxpbmVSZWdpc3Rlck9mZnNldCA9IGJh
c2VsaW5lQ2FsbGVlU2F2ZXMtPmZpbmQocmVnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDb2RlLmNwcAkocmV2aXNpb24gMTg5OTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2luY2x1
ZGUgIkxMSW50VGh1bmtzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlBy
b3RvQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2Vu
ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewpAQCAtNzcsNyArNzYsNyBAQCBKU1ZhbHVlIEpJVENvZGU6OmV4ZWN1dGUoVk0qIHZtLCBQcm90
b0NhCiAgICAgICAgIEFTU0VSVCghcHJvdG9DYWxsRnJhbWUtPm5lZWRBcml0eUNoZWNrKCkpOwog
ICAgICAgICBlbnRyeUFkZHJlc3MgPSBleGVjdXRhYmxlQWRkcmVzcygpOwogICAgIH0gZWxzZQot
ICAgICAgICBlbnRyeUFkZHJlc3MgPSBhZGRyZXNzRm9yQ2FsbCgqdm0sIGZ1bmN0aW9uLT5leGVj
dXRhYmxlKCksIE11c3RDaGVja0FyaXR5LCBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVk
KS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICBlbnRyeUFkZHJlc3MgPSBhZGRyZXNzRm9y
Q2FsbChNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IEpTVmFsdWU6OmRlY29kZSh2bUVudHJ5VG9KYXZhU2NyaXB0KGVudHJ5QWRkcmVzcywg
dm0sIHByb3RvQ2FsbEZyYW1lKSk7CiAgICAgcmV0dXJuIHZtLT5leGNlcHRpb24oKSA/IGpzTnVs
bCgpIDogcmVzdWx0OwogfQpAQCAtMTg2LDQzICsxODUsMTUgQEAgRGlyZWN0SklUQ29kZTo6UmVn
aXN0ZXJQcmVzZXJ2YXRpb25XcmFwcAogICAgIHJldHVybiBtX3dyYXBwZXJzLmdldCgpOwogfQog
Ci1KSVRDb2RlOjpDb2RlUHRyIERpcmVjdEpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKAotICAgIFZN
JiB2bSwgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUsIEFyaXR5Q2hlY2tNb2RlIGFyaXR5LAot
ICAgIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSByZWdpc3RlcnMpCitKSVRDb2RlOjpDb2RlUHRy
IERpcmVjdEpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tNb2RlIGFyaXR5KQogewog
ICAgIHN3aXRjaCAoYXJpdHkpIHsKICAgICBjYXNlIEFyaXR5Q2hlY2tOb3RSZXF1aXJlZDoKLSAg
ICAgICAgc3dpdGNoIChyZWdpc3RlcnMpIHsKLSAgICAgICAgY2FzZSBSZWdpc3RlclByZXNlcnZh
dGlvbk5vdFJlcXVpcmVkOgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yZWYpOwotICAg
ICAgICAgICAgcmV0dXJuIG1fcmVmLmNvZGUoKTsKLSAgICAgICAgY2FzZSBNdXN0UHJlc2VydmVS
ZWdpc3RlcnM6IHsKLSNpZiBFTkFCTEUoSklUKQotICAgICAgICAgICAgUmVnaXN0ZXJQcmVzZXJ2
YXRpb25XcmFwcGVycyogd3JhcHBlcnMgPSBlbnN1cmVXcmFwcGVycygpOwotICAgICAgICAgICAg
aWYgKCF3cmFwcGVycy0+d2l0aG91dEFyaXR5Q2hlY2spCi0gICAgICAgICAgICAgICAgd3JhcHBl
cnMtPndpdGhvdXRBcml0eUNoZWNrID0gZ2VuZXJhdGVSZWdpc3RlclByZXNlcnZhdGlvbldyYXBw
ZXIodm0sIGV4ZWN1dGFibGUsIG1fcmVmLmNvZGUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gd3Jh
cHBlcnMtPndpdGhvdXRBcml0eUNoZWNrLmNvZGUoKTsKLSNlbHNlCi0gICAgICAgICAgICBVTlVT
RURfUEFSQU0odm0pOwotICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGV4ZWN1dGFibGUpOwotICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgotICAgICAgICB9
IH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yZWYpOworICAgICAgICByZXR1cm4gbV9yZWYu
Y29kZSgpOwogICAgIGNhc2UgTXVzdENoZWNrQXJpdHk6Ci0gICAgICAgIHN3aXRjaCAocmVnaXN0
ZXJzKSB7Ci0gICAgICAgIGNhc2UgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Ob3RSZXF1aXJlZDoKLSAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fd2l0aEFyaXR5Q2hlY2spOwotICAgICAgICAgICAg
cmV0dXJuIG1fd2l0aEFyaXR5Q2hlY2s7Ci0gICAgICAgIGNhc2UgTXVzdFByZXNlcnZlUmVnaXN0
ZXJzOiB7Ci0jaWYgRU5BQkxFKEpJVCkKLSAgICAgICAgICAgIFJlZ2lzdGVyUHJlc2VydmF0aW9u
V3JhcHBlcnMqIHdyYXBwZXJzID0gZW5zdXJlV3JhcHBlcnMoKTsKLSAgICAgICAgICAgIGlmICgh
d3JhcHBlcnMtPndpdGhBcml0eUNoZWNrKQotICAgICAgICAgICAgICAgIHdyYXBwZXJzLT53aXRo
QXJpdHlDaGVjayA9IGdlbmVyYXRlUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyKHZtLCBleGVj
dXRhYmxlLCBtX3dpdGhBcml0eUNoZWNrKTsKLSAgICAgICAgICAgIHJldHVybiB3cmFwcGVycy0+
d2l0aEFyaXR5Q2hlY2suY29kZSgpOwotI2Vsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKLSAgICAgICAgfSB9CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG1fd2l0aEFyaXR5Q2hlY2spOworICAgICAgICByZXR1cm4gbV93aXRoQXJpdHlDaGVjazsK
ICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gQ29k
ZVB0cigpOwpAQCAtMjQ4LDggKzIxOSw3IEBAIHZvaWQgTmF0aXZlSklUQ29kZTo6aW5pdGlhbGl6
ZUNvZGVSZWYoQ28KICAgICBtX3JlZiA9IHJlZjsKIH0KIAotSklUQ29kZTo6Q29kZVB0ciBOYXRp
dmVKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbCgKLSAgICBWTSYsIEV4ZWN1dGFibGVCYXNlKiwgQXJp
dHlDaGVja01vZGUsIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSkKK0pJVENvZGU6OkNvZGVQdHIg
TmF0aXZlSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja01vZGUpCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQoISFtX3JlZik7CiAgICAgcmV0dXJuIG1fcmVmLmNvZGUoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCShyZXZpc2lvbiAxODk5NDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIs
NiBAQAogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgotI2luY2x1ZGUgIlJlZ2lzdGVyUHJlc2Vy
dmF0aW9uTW9kZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTk1LDcgKzE5NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGppdENvZGUtPmppdFR5cGUoKTsKICAgICB9CiAgICAgCi0g
ICAgdmlydHVhbCBDb2RlUHRyIGFkZHJlc3NGb3JDYWxsKFZNJiwgRXhlY3V0YWJsZUJhc2UqLCBB
cml0eUNoZWNrTW9kZSwgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlKSA9IDA7CisgICAgdmlydHVh
bCBDb2RlUHRyIGFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tNb2RlKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkKiBleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpID0gMDsKICAg
ICB2b2lkKiBleGVjdXRhYmxlQWRkcmVzcygpIHsgcmV0dXJuIGV4ZWN1dGFibGVBZGRyZXNzQXRP
ZmZzZXQoMCk7IH0KICAgICB2aXJ0dWFsIHZvaWQqIGRhdGFBZGRyZXNzQXRPZmZzZXQoc2l6ZV90
IG9mZnNldCkgPSAwOwpAQCAtMjQ2LDcgKzI0NSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lk
IGluaXRpYWxpemVDb2RlUmVmKENvZGVSZWYsIENvZGVQdHIgd2l0aEFyaXR5Q2hlY2spOwogCi0g
ICAgdmlydHVhbCBDb2RlUHRyIGFkZHJlc3NGb3JDYWxsKFZNJiwgRXhlY3V0YWJsZUJhc2UqLCBB
cml0eUNoZWNrTW9kZSwgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja01vZGUpIG92ZXJyaWRlOwog
CiBwcml2YXRlOgogICAgIHN0cnVjdCBSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJzIHsKQEAg
LTI2OSw3ICsyNjgsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBpbml0aWFsaXplQ29kZVJl
ZihDb2RlUmVmKTsKIAotICAgIHZpcnR1YWwgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChWTSYsIEV4
ZWN1dGFibGVCYXNlKiwgQXJpdHlDaGVja01vZGUsIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSkg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBDb2RlUHRyIGFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tN
b2RlKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxODk5NDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03NjcsNyArNzY3LDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aQogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOwogICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gMDsKICAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkg
ewotICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcigqdm0sIGtpbmQs
IE11c3RDaGVja0FyaXR5LCBjYWxsTGlua0luZm8tPnJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSgp
KTsKKyAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgTXVz
dENoZWNrQXJpdHkpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICB9IGVsc2UgaWYgKGV4
ZWN1dGFibGUtPmlzV2ViQXNzZW1ibHlFeGVjdXRhYmxlKCkpIHsKICAgICAgICAgV2ViQXNzZW1i
bHlFeGVjdXRhYmxlKiB3ZWJBc3NlbWJseUV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxXZWJBc3Nl
bWJseUV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKQEAgLTc3OSw3ICs3NzksNyBAQCBTbG93UGF0
aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgICAgICBhcml0eSA9IE11
c3RDaGVja0FyaXR5OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcml0eSA9IEFyaXR5Q2hl
Y2tOb3RSZXF1aXJlZDsKLSAgICAgICAgY29kZVB0ciA9IHdlYkFzc2VtYmx5RXhlY3V0YWJsZS0+
ZW50cnlwb2ludEZvcigqdm0sIGtpbmQsIGFyaXR5LCBjYWxsTGlua0luZm8tPnJlZ2lzdGVyUHJl
c2VydmF0aW9uTW9kZSgpKTsKKyAgICAgICAgY29kZVB0ciA9IHdlYkFzc2VtYmx5RXhlY3V0YWJs
ZS0+ZW50cnlwb2ludEZvcihraW5kLCBhcml0eSk7CiAjZW5kaWYKICAgICB9IGVsc2UgewogICAg
ICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwpAQCAtODA0LDcgKzgwNCw3IEBAIFNs
b3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICAgICAgICAgIGFyaXR5
ID0gTXVzdENoZWNrQXJpdHk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFyaXR5ID0gQXJp
dHlDaGVja05vdFJlcXVpcmVkOwotICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxl
LT5lbnRyeXBvaW50Rm9yKCp2bSwga2luZCwgYXJpdHksIGNhbGxMaW5rSW5mby0+cmVnaXN0ZXJQ
cmVzZXJ2YXRpb25Nb2RlKCkpOworICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxl
LT5lbnRyeXBvaW50Rm9yKGtpbmQsIGFyaXR5KTsKICAgICB9CiAgICAgaWYgKCFjYWxsTGlua0lu
Zm8tPnNlZW5PbmNlKCkpCiAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0U2VlbigpOwpAQCAtODY3
LDcgKzg2Nyw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGgKICAg
ICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGV4ZWN1dGFibGUtPmVudHJ5
cG9pbnRGb3IoCi0gICAgICAgICp2bSwga2luZCwgTXVzdENoZWNrQXJpdHksIGNhbGxMaW5rSW5m
by0+cmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlKCkpLmV4ZWN1dGFibGVBZGRyZXNzKCksCisgICAg
ICAgIGtpbmQsIE11c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpLAogICAgICAgICBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsTGlua0luZm8tPmNhbGxNb2RlKCkgPT0gQ2FsbE1v
ZGU6OlRhaWwgPyBSZXVzZVRoZUZyYW1lIDogS2VlcFRoZUZyYW1lKSk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJh
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
UHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE4OTk0MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJh
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmgiCi0KLSNp
ZiBFTkFCTEUoSklUKQotCi0jaW5jbHVkZSAiQXNzZW1ibHlIZWxwZXJzLmgiCi0jaW5jbHVkZSAi
TGlua0J1ZmZlci5oIgotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJTdGFja0Fs
aWdubWVudC5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9Q
cmVzZXJ2ZSgpCi17Ci0gICAgUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6
Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOwotICAgIAotICAgIC8vIE5vIG5lZWQgdG8gcHJlc2VydmUg
RlAgc2luY2UgdGhhdCBhbHdheXMgZ2V0cyBwcmVzZXJ2ZWQgYW55d2F5LgotICAgIGNhbGxlZVNh
dmVzLmNsZWFyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAKLSAgICByZXR1cm4g
Y2FsbGVlU2F2ZXM7Ci19Ci0KLXB0cmRpZmZfdCByZWdpc3RlclByZXNlcnZhdGlvbk9mZnNldCgp
Ci17Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZDYWxsZWVTYXZlcyA9IHJlZ2lzdGVyc1RvUHJlc2Vy
dmUoKS5udW1iZXJPZlNldFJlZ2lzdGVycygpOwotICAgIAotICAgIC8vIE5lZWQgdG8gcHJlc2Vy
dmUgdGhlIG9sZCByZXR1cm4gUEMuCi0gICAgdW5zaWduZWQgbnVtYmVyT2ZWYWx1ZXNUb1NhdmUg
PSBudW1iZXJPZkNhbGxlZVNhdmVzICsgMTsKLSAgICAKLSAgICAvLyBBbGlnbm1lbnQuIFByZXNl
cnZlIHRoZSBzYW1lIGFsaWdubWVudCBpbnZhcmlhbnRzIHRoYXQgdGhlIGNhbGxlciBpbXBvc2Vk
LgotICAgIHVuc2lnbmVkIG51bWJlck9mTmV3U3RhY2tTbG90cyA9Ci0gICAgICAgIFdURjo6cm91
bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBudW1iZXJPZlZhbHVl
c1RvU2F2ZSk7Ci0gICAgCi0gICAgcmV0dXJuIHNpemVvZihSZWdpc3RlcikgKiBudW1iZXJPZk5l
d1N0YWNrU2xvdHM7Ci19Ci0KLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVJlZ2lzdGVy
UHJlc2VydmF0aW9uV3JhcHBlcihWTSYgdm0sIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlLCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgdGFyZ2V0KQotewotI2lmIEVOQUJMRShGVExfSklUKQotICAg
IC8vIFdlIHNob3VsZG4ndCBldmVyIGJlIGdlbmVyYXRpbmcgd3JhcHBlcnMgZm9yIG5hdGl2ZSBm
dW5jdGlvbnMuCi0gICAgUmVnaXN0ZXJTZXQgdG9TYXZlID0gcmVnaXN0ZXJzVG9QcmVzZXJ2ZSgp
OwotICAgIHB0cmRpZmZfdCBvZmZzZXQgPSByZWdpc3RlclByZXNlcnZhdGlvbk9mZnNldCgpOwot
Ci0gICAgQVNTRVJUKCF0b1NhdmUuZ2V0KEdQUkluZm86OnJlZ1QxKSk7Ci0gICAgQVNTRVJUKCF0
b1NhdmUuZ2V0KEdQUkluZm86OnJlZ1QyKSk7Ci0gICAgQVNTRVJUKCF0b1NhdmUuZ2V0KEdQUklu
Zm86OnJlZ1QzKSk7Ci0gICAgCi0gICAgQXNzZW1ibHlIZWxwZXJzIGppdCgmdm0sIDApOwotICAg
IAotICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6cmVnVDEp
OwotICAgIGppdC5sb2FkMzIoCi0gICAgICAgIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcygKLSAg
ICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsCi0gICAgICAg
ICAgICAoSlNTdGFjazo6QXJndW1lbnRDb3VudCAtIEpTU3RhY2s6OkNhbGxlckZyYW1lQW5kUENT
aXplKSAqIHNpemVvZihSZWdpc3RlcikgKyBQYXlsb2FkT2Zmc2V0KSwKLSAgICAgICAgR1BSSW5m
bzo6cmVnVDIpOwotICAgIAotICAgIC8vIFBsYWNlIHRoZSBzdGFjayBwb2ludGVyIHdoZXJlIHdl
IHdhbnQgaXQgdG8gYmUuCi0gICAgaml0LnN1YlB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihvZmZzZXQpLCBBc3NlbWJseUhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAg
ICAKLSAgICAvLyBDb21wdXRlIHRoZSBudW1iZXIgb2YgdGhpbmdzIHdlIHdpbGwgYmUgY29weWlu
Zy4KLSAgICBqaXQuYWRkMzIoCi0gICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMy
KAotICAgICAgICAgICAgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSAtIEpTU3RhY2s6OkNh
bGxlckZyYW1lQW5kUENTaXplKSwKLSAgICAgICAgR1BSSW5mbzo6cmVnVDIpOwotCi0gICAgaml0
Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6cmVn
VDMpOwotICAgIAotICAgIEFzc2VtYmx5SGVscGVyczo6TGFiZWwgbG9vcCA9IGppdC5sYWJlbCgp
OwotICAgIGppdC5zdWIzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5m
bzo6cmVnVDIpOwotICAgIGppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUklu
Zm86OnJlZ1QzLCBvZmZzZXQpLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgaml0LnN0b3JlNjQoR1BS
SW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QzKTsKLSAgICBqaXQuYWRkUHRyKEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpyZWdUMyk7Ci0g
ICAgaml0LmJyYW5jaFRlc3QzMihBc3NlbWJseUhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJl
Z1QyKS5saW5rVG8obG9vcCwgJmppdCk7Ci0KLSAgICAvLyBBdCB0aGlzIHBvaW50IHJlZ1QzICsg
b2Zmc2V0IHBvaW50cyB0byB3aGVyZSB3ZSBzYXZlIHRoaW5ncy4KLSAgICBwdHJkaWZmX3QgY3Vy
cmVudE9mZnNldCA9IDA7Ci0gICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QxLCBBc3NlbWJs
eUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDMsIGN1cnJlbnRPZmZzZXQpKTsKLSAgICAK
LSAgICBmb3IgKEdQUlJlZyBncHIgPSBBc3NlbWJseUhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsg
Z3ByIDw9IEFzc2VtYmx5SGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGdwciA9IHN0YXRpY19jYXN0
PEdQUlJlZz4oZ3ByICsgMSkpIHsKLSAgICAgICAgaWYgKCF0b1NhdmUuZ2V0KGdwcikpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgY3VycmVudE9mZnNldCArPSBzaXplb2YoUmVnaXN0
ZXIpOwotICAgICAgICBqaXQuc3RvcmU2NChncHIsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjpyZWdUMywgY3VycmVudE9mZnNldCkpOwotICAgIH0KLSAgICBmb3IgKEZQUlJlZyBm
cHIgPSBBc3NlbWJseUhlbHBlcnM6OmZpcnN0RlBSZWdpc3RlcigpOyBmcHIgPD0gQXNzZW1ibHlI
ZWxwZXJzOjpsYXN0RlBSZWdpc3RlcigpOyBmcHIgPSBzdGF0aWNfY2FzdDxGUFJSZWc+KGZwciAr
IDEpKSB7Ci0gICAgICAgIGlmICghdG9TYXZlLmdldChmcHIpKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKLSAgICAgICAg
aml0LnN0b3JlRG91YmxlKGZwciwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJl
Z1QzLCBjdXJyZW50T2Zmc2V0KSk7Ci0gICAgfQotICAgIAotICAgIC8vIEFzc3VtZSB0aGF0IHRo
ZXJlIGFyZW4ndCBhbnkgc2F2ZWQgRlAgcmVnaXN0ZXJzLgotICAgIAotICAgIC8vIFJlc3RvcmUg
dGhlIHRhZyByZWdpc3RlcnMuCi0gICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tNjQoVGFnVHlwZU51bWJlciksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0g
ICAgaml0LmFkZDY0KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKFRhZ01hc2sgLSBUYWdU
eXBlTnVtYmVyKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBHUFJJbmZvOjp0YWdN
YXNrUmVnaXN0ZXIpOwotICAgIAotICAgIGppdC5tb3ZlKAotICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoCi0gICAgICAgICAgICB2bS5nZXRDVElTdHViKHJlZ2lzdGVyUmVz
dG9yYXRpb25UaHVua0dlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpLAotICAg
ICAgICBHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICBqaXQucmVzdG9yZVJldHVybkFkZHJlc3NC
ZWZvcmVSZXR1cm4oR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgQXNzZW1ibHlIZWxwZXJzOjpK
dW1wIGp1bXAgPSBqaXQuanVtcCgpOwotICAgIAotICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcih2
bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAgIGxpbmtCdWZmZXIubGluayhqdW1wLCBDb2Rl
TG9jYXRpb25MYWJlbCh0YXJnZXQpKTsKLQotICAgIGlmIChPcHRpb25zOjp2ZXJib3NlRlRMVG9K
U1RodW5rKCkpCi0gICAgICAgIGRhdGFMb2coIk5lZWQgYSB0aHVuayBmb3IgY2FsbHMgZnJvbSBG
VEwgdG8gbm9uLUZUTCB2ZXJzaW9uIG9mICIsICpleGVjdXRhYmxlLCAiXG4iKTsKLSAgICAKLSAg
ICByZXR1cm4gRklOQUxJWkVfREZHX0NPREUobGlua0J1ZmZlciwgKCJSZWdpc3RlciBwcmVzZXJ2
YXRpb24gd3JhcHBlciBmb3IgJXMvJXMsICVwIiwgdG9DU3RyaW5nKGV4ZWN1dGFibGUtPmhhc2hG
b3IoQ29kZUZvckNhbGwpKS5kYXRhKCksIHRvQ1N0cmluZyhleGVjdXRhYmxlLT5oYXNoRm9yKENv
ZGVGb3JDb25zdHJ1Y3QpKS5kYXRhKCksIHRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSk7Ci0j
ZWxzZSAvLyBFTkFCTEUoRlRMX0pJVCkKLSAgICBVTlVTRURfUEFSQU0odm0pOwotICAgIFVOVVNF
RF9QQVJBTShleGVjdXRhYmxlKTsKLSAgICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICAvLyBX
ZSBkb24ndCBzdXBwb3J0IG5vbi1GVEwgYnVpbGRzIGZvciB0d28gcmVhc29uczoKLSAgICAvLyAt
IEl0IGp1c3Qgc28gaGFwcGVucyB0aGF0IGN1cnJlbnRseSBvbmx5IHRoZSBGVEwgYm90dG9tcyBv
dXQgaW4gdGhpcyBjb2RlLgotICAgIC8vIC0gVGhlIGNvZGUgYWJvdmUgdXNlcyA2NC1iaXQgaW5z
dHJ1Y3Rpb25zLiBJdCBkb2Vzbid0IG5lY2Vzc2FyaWx5IGhhdmUgdG87IGl0IHdvdWxkIGJlCi0g
ICAgLy8gICBlYXN5IHRvIGNoYW5nZSBpdCBzbyB0aGF0IGl0IGRvZXNuJ3QuIEJ1dCBvYnZpb3Vz
bHkgbWFraW5nIHRoYXQgY2hhbmdlIHdvdWxkIGJlIGEKLSAgICAvLyAgIHByZXJlcXVpc2l0ZSB0
byByZW1vdmluZyB0aGlzICNpZi4KLSAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSAg
ICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmKCk7Ci0jZW5kaWYgLy8gRU5BQkxFKEZUTF9K
SVQpCi19Ci0KLXN0YXRpYyB2b2lkIGdlbmVyYXRlUmVnaXN0ZXJSZXN0b3JhdGlvbihBc3NlbWJs
eUhlbHBlcnMmIGppdCkKLXsKLSNpZiBFTkFCTEUoRlRMX0pJVCkKLSAgICBSZWdpc3RlclNldCB0
b1NhdmUgPSByZWdpc3RlcnNUb1ByZXNlcnZlKCk7Ci0gICAgcHRyZGlmZl90IG9mZnNldCA9IHJl
Z2lzdGVyUHJlc2VydmF0aW9uT2Zmc2V0KCk7Ci0gICAgCi0gICAgQVNTRVJUKCF0b1NhdmUuZ2V0
KEdQUkluZm86OnJlZ1QxKSk7Ci0gICAgQVNTRVJUKCF0b1NhdmUuZ2V0KEdQUkluZm86OnJlZ1Qy
KSk7Ci0gICAgQVNTRVJUKCF0b1NhdmUuZ2V0KEdQUkluZm86OnJlZ1QzKSk7Ci0KLSAgICAvLyBX
ZSBuZWVkIHRvIHBsYWNlIHRoZSBzdGFjayBwb2ludGVyIGJhY2sgdG8gd2hlcmUgdGhlIGNhbGxl
ciB0aG91Z2h0IHRoZXkgbGVmdCBpdC4KLSAgICAvLyBCdXQgYWxzbywgaW4gb3JkZXIgdG8gcmVj
b3ZlciB0aGUgcmVnaXN0ZXJzLCB3ZSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGJpZyB0aGUKLSAg
ICAvLyBhcmd1bWVudHMgYXJlYSBpcy4KLSAgICAKLSAgICBqaXQubG9hZDMyKAotICAgICAgICBB
c3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoCi0gICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyLAotICAgICAgICAgICAgKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQg
LSBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSkgKiBzaXplb2YoUmVnaXN0ZXIpICsgUGF5
bG9hZE9mZnNldCksCi0gICAgICAgIEdQUkluZm86OnJlZ1QzKTsKLSAgICAKLSAgICBqaXQubW92
ZShHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIpOwotICAgIGppdC5sc2hpZnQzMihBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigzKSwgR1BSSW5mbzo6cmVnVDIpOwotICAgIAotICAg
IGppdC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIob2Zmc2V0KSwgQXNzZW1i
bHlIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgaml0LmFkZFB0cihBc3NlbWJs
eUhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgCi0g
ICAgLy8gV2Ugc2F2ZWQgdGhpbmdzIGF0OgotICAgIC8vCi0gICAgLy8gICAgIGFkalNQICsgKEpT
U3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgLSBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6
ZSArIE51bUFyZ3MpICogOAotICAgIC8vCi0gICAgLy8gV2hlcmU6Ci0gICAgLy8KLSAgICAvLyAg
ICAgYWRqU1AgPSBvcmlnU1AgLSBvZmZzZXQKLSAgICAvLwotICAgIC8vIHJlZ1QyIG5vdyBwb2lu
dHMgYXQ6Ci0gICAgLy8KLSAgICAvLyAgICAgb3JpZ1NQICsgTnVtQXJncyAqIDgKLSAgICAvLyAg
ID0gYWRqU1AgKyBvZmZzZXQgKyBOdW1BcmdzICogOAotICAgIC8vIAotICAgIC8vIFNvIGlmIHdl
IHN1YnRyYWN0IG9mZnNldCBhbmQgdGhlbiBhZGQgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6
ZSBhbmQgc3VidHJhY3QKLSAgICAvLyBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgd2Un
bGwgZ2V0IHRoZSB0aGluZyB3ZSB3YW50LgotICAgIHB0cmRpZmZfdCBjdXJyZW50T2Zmc2V0ID0g
LW9mZnNldCArIHNpemVvZihSZWdpc3RlcikgKiAoCi0gICAgICAgIEpTU3RhY2s6OkNhbGxGcmFt
ZUhlYWRlclNpemUgLSBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSk7Ci0gICAgaml0Lmxv
YWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QyLCBjdXJyZW50T2Zm
c2V0KSwgR1BSSW5mbzo6cmVnVDEpOwotICAgIAotICAgIGZvciAoR1BSUmVnIGdwciA9IEFzc2Vt
Ymx5SGVscGVyczo6Zmlyc3RSZWdpc3RlcigpOyBncHIgPD0gQXNzZW1ibHlIZWxwZXJzOjpsYXN0
UmVnaXN0ZXIoKTsgZ3ByID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihncHIgKyAxKSkgewotICAgICAg
ICBpZiAoIXRvU2F2ZS5nZXQoZ3ByKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBj
dXJyZW50T2Zmc2V0ICs9IHNpemVvZihSZWdpc3Rlcik7Ci0gICAgICAgIGppdC5sb2FkNjQoQXNz
ZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QyLCBjdXJyZW50T2Zmc2V0KSwgZ3By
KTsKLSAgICB9Ci0gICAgZm9yIChGUFJSZWcgZnByID0gQXNzZW1ibHlIZWxwZXJzOjpmaXJzdEZQ
UmVnaXN0ZXIoKTsgZnByIDw9IEFzc2VtYmx5SGVscGVyczo6bGFzdEZQUmVnaXN0ZXIoKTsgZnBy
ID0gc3RhdGljX2Nhc3Q8RlBSUmVnPihmcHIgKyAxKSkgewotICAgICAgICBpZiAoIXRvU2F2ZS5n
ZXQoZnByKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBjdXJyZW50T2Zmc2V0ICs9
IHNpemVvZihSZWdpc3Rlcik7Ci0gICAgICAgIGppdC5sb2FkRG91YmxlKEFzc2VtYmx5SGVscGVy
czo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMiwgY3VycmVudE9mZnNldCksIGZwcik7Ci0gICAgfQot
ICAgIAotICAgIC8vIFRodW5rcyBsaWtlIHRoaXMgcmVseSBvbiB0aGUgQXJndW1lbnRDb3VudCBi
ZWluZyBpbnRhY3QuIFBheSBpdCBmb3J3YXJkLgotICAgIGppdC5zdG9yZTMyKAotICAgICAgICBH
UFJJbmZvOjpyZWdUMywKLSAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKAotICAgICAg
ICAgICAgQXNzZW1ibHlIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwKLSAgICAgICAgICAg
IChKU1N0YWNrOjpBcmd1bWVudENvdW50IC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUp
ICogc2l6ZW9mKFJlZ2lzdGVyKSArIFBheWxvYWRPZmZzZXQpKTsKLSAgICAKLSAgICBpZiAoIUFT
U0VSVF9ESVNBQkxFRCkgewotICAgICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgb2sgPSBqaXQu
YnJhbmNoUHRyKAotICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpBYm92ZSwgR1BSSW5mbzo6
cmVnVDEsIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+
KDB4MTAwMCkpKTsKLSAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihSUFdVbnJlYXNvbmFibGVK
dW1wVGFyZ2V0KTsKLSAgICAgICAgb2subGluaygmaml0KTsKLSAgICB9Ci0gICAgCi0gICAgaml0
Lmp1bXAoR1BSSW5mbzo6cmVnVDEpOwotI2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCi0gICAgVU5V
U0VEX1BBUkFNKGppdCk7Ci0gICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYg
Ly8gRU5BQkxFKEZUTF9KSVQpCi19Ci0KLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiByZWdpc3RlclJl
c3RvcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQotewotICAgIEFzc2VtYmx5SGVscGVycyBq
aXQodm0sIDApOwotICAgIGdlbmVyYXRlUmVnaXN0ZXJSZXN0b3JhdGlvbihqaXQpOwotICAgIExp
bmtCdWZmZXIgbGlua0J1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCAoIlJlZ2lzdGVyIHJlc3RvcmF0aW9uIHRodW5r
IikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFw
cGVyR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuaAkocmV2aXNpb24gMTg5OTQxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJH
ZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgUmVnaXN0ZXJQcmVzZXJ2
YXRpb25XcmFwcGVyR2VuZXJhdG9yX2gKLSNkZWZpbmUgUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFw
cGVyR2VuZXJhdG9yX2gKLQotI2lmIEVOQUJMRShKSVQpCi0KLSNpbmNsdWRlICJBcml0eUNoZWNr
TW9kZS5oIgotI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVycy5oIgotI2luY2x1ZGUgIk1hY3JvQXNz
ZW1ibGVyQ29kZVJlZi5oIgotI2luY2x1ZGUgIlZNLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1S
ZWdpc3RlclNldCByZWdpc3RlcnNUb1ByZXNlcnZlKCk7Ci0KLXB0cmRpZmZfdCByZWdpc3RlclBy
ZXNlcnZhdGlvbk9mZnNldCgpOwotCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVSZWdp
c3RlclByZXNlcnZhdGlvbldyYXBwZXIoVk0mLCBFeGVjdXRhYmxlQmFzZSosIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciB0YXJnZXQpOwotCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgcmVnaXN0ZXJSZXN0
b3JhdGlvblRodW5rR2VuZXJhdG9yKFZNKik7Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5k
aWYgLy8gRU5BQkxFKEpJVCkKLQotI2VuZGlmIC8vIFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBl
ckdlbmVyYXRvcl9oCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAko
cmV2aXNpb24gMTg5OTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzk1LDggKzc5NSw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGlj
Q2FsbCgKICAgICAgICAgCiAgICAgICAgIEFTU0VSVCh2YXJpYW50LmV4ZWN1dGFibGUoKS0+aGFz
SklUQ29kZUZvckNhbGwoKSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRy
ID0KLSAgICAgICAgICAgIHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRKSVRDb2RlRm9y
Q2FsbCgpLT5hZGRyZXNzRm9yQ2FsbCgKLSAgICAgICAgICAgICAgICAqdm0sIHZhcmlhbnQuZXhl
Y3V0YWJsZSgpLCBBcml0eUNoZWNrTm90UmVxdWlyZWQsIGNhbGxMaW5rSW5mby5yZWdpc3RlclBy
ZXNlcnZhdGlvbk1vZGUoKSk7CisgICAgICAgICAgICB2YXJpYW50LmV4ZWN1dGFibGUoKS0+Z2Vu
ZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja05vdFJlcXVp
cmVkKTsKICAgICAgICAgCiAgICAgICAgIGlmIChmYXN0Q291bnRzKSB7CiAgICAgICAgICAgICBz
dHViSml0LmFkZDMyKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMTg5OTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNyArMjAyLDcg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxUaHVua0ZvcihWTQogICAgIGppdC5sb2Fk
UHRyKAogICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoCiAgICAgICAgICAgICBHUFJJbmZv
OjpyZWdUNCwgRXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrRm9y
KAotICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby5zcGVjaWFsaXphdGlvbktpbmQoKSwgY2Fs
bExpbmtJbmZvLnJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSgpKSksCisgICAgICAgICAgICAgICAg
Y2FsbExpbmtJbmZvLnNwZWNpYWxpemF0aW9uS2luZCgpKSksCiAgICAgICAgIEdQUkluZm86OnJl
Z1Q0KTsKICAgICBzbG93Q2FzZS5hcHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJz
OjpaZXJvLCBHUFJJbmZvOjpyZWdUNCkpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCShyZXZpc2lvbiAxODk5NDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw3ICsyNyw2IEBACiAjZGVmaW5lIFRodW5rR2VuZXJhdG9yc19oCiAKICNpbmNsdWRlICJDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmgiCi0jaW5jbHVkZSAiUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2Rl
LmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3IuaCIKIAogI2lmIEVOQUJMRShKSVQpCkBAIC0z
OCw3ICszNyw3IEBAIGNsYXNzIENDYWxsSGVscGVyczsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcihWTSopOwogCi1NYWNyb0Fz
c2VtYmxlckNvZGVSZWYgbGlua0NhbGxUaHVuayhWTSosIENhbGxMaW5rSW5mbyYsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQsIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSk7CitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgbGlua0NhbGxUaHVuayhWTSosIENhbGxMaW5rSW5mbyYsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtDYWxsVGh1bmtHZW5lcmF0b3Io
Vk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5l
cmF0b3IoVk0qKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxODk5NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTcsOSArMzU3
LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVjUwogICAgIGlmIChr
aW5kID09IFByb2xvZ3VlKQogICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+aml0
Q29kZSgpLT5leGVjdXRhYmxlQWRkcmVzcygpLCAwKTsKICAgICBBU1NFUlQoa2luZCA9PSBBcml0
eUNoZWNrKTsKLSAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+aml0Q29kZSgpLT5hZGRy
ZXNzRm9yQ2FsbCgKLSAgICAgICAgKmNvZGVCbG9jay0+dm0oKSwgY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSwgTXVzdENoZWNrQXJpdHksCi0gICAgICAgIFJlZ2lzdGVyUHJlc2VydmF0aW9u
Tm90UmVxdWlyZWQpLmV4ZWN1dGFibGVBZGRyZXNzKCksIDApOworICAgIExMSU5UX1JFVFVSTl9U
V08oY29kZUJsb2NrLT5qaXRDb2RlKCktPmFkZHJlc3NGb3JDYWxsKE11c3RDaGVja0FyaXR5KS5l
eGVjdXRhYmxlQWRkcmVzcygpLCAwKTsKIH0KICNlbHNlIC8vIEVOQUJMRShKSVQpCiBzdGF0aWMg
U2xvd1BhdGhSZXR1cm5UeXBlIGVudHJ5T1NSKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24q
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgY2hhciosIEVudHJ5S2luZCkKQEAgLTExNDIs
NyArMTE0MCw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICNl
bmRpZgogCiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAg
Y29kZVB0ciA9IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Iodm0sIGtpbmQsIE11c3RDaGVja0Fy
aXR5LCBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkKTsKKyAgICAgICAgY29kZVB0ciA9
IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgTXVzdENoZWNrQXJpdHkpOwogICAgIH0g
ZWxzZSBpZiAoIWlzV2ViQXNzZW1ibHlFeGVjdXRhYmxlKSB7CiAgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4oZXhlY3V0YWJsZSk7CiAKQEAgLTExNTksNyArMTE1Nyw3IEBAIGlubGluZSBTbG93UGF0
aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAgICAgICAgICAgIGFyaXR5ID0gTXVzdENoZWNr
QXJpdHk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFyaXR5ID0gQXJpdHlDaGVja05vdFJl
cXVpcmVkOwotICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50
Rm9yKHZtLCBraW5kLCBhcml0eSwgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Ob3RSZXF1aXJlZCk7Cisg
ICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwg
YXJpdHkpOwogICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICBX
ZWJBc3NlbWJseUV4ZWN1dGFibGUqIHdlYkFzc2VtYmx5RXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0
PFdlYkFzc2VtYmx5RXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwpAQCAtMTE3MSw3ICsxMTY5LDcg
QEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlYwogICAgICAgICAgICAg
YXJpdHkgPSBNdXN0Q2hlY2tBcml0eTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXJpdHkg
PSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7Ci0gICAgICAgIGNvZGVQdHIgPSB3ZWJBc3NlbWJseUV4
ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Iodm0sIGtpbmQsIGFyaXR5LCBSZWdpc3RlclByZXNlcnZh
dGlvbk5vdFJlcXVpcmVkKTsKKyAgICAgICAgY29kZVB0ciA9IHdlYkFzc2VtYmx5RXhlY3V0YWJs
ZS0+ZW50cnlwb2ludEZvcihraW5kLCBhcml0eSk7CiAjZW5kaWYKICAgICB9CiAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAx
ODk5NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJJbmZlcnJlZFZhbHVlLmgi
CiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCi0jaW5j
bHVkZSAiUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29s
LmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlR5cGVTZXQuaCIKQEAgLTE2
Myw4ICsxNjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBnZW5lcmF0ZWRKSVRDb2RlRm9y
Q29uc3RydWN0KCk7CiAgICAgfQogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBlbnRy
eXBvaW50Rm9yKAotICAgICAgICBWTSYgdm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwg
QXJpdHlDaGVja01vZGUgYXJpdHksIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSByZWdpc3RlcnMp
CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGVudHJ5cG9pbnRGb3IoQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kLCBBcml0eUNoZWNrTW9kZSBhcml0eSkKICAgICB7CiAgICAgICAgIC8vIENo
ZWNrIGlmIHdlIGhhdmUgYSBjYWNoZWQgcmVzdWx0LiBXZSBvbmx5IGhhdmUgaXQgZm9yIGFyaXR5
IGNoZWNrIGJlY2F1c2Ugd2UgdXNlIHRoZQogICAgICAgICAvLyBuby1hcml0eSBlbnRyeXBvaW50
IGluIG5vbi12aXJ0dWFsIGNhbGxzLCB3aGljaCB3aWxsICJjYWNoZSIgdGhpcyB2YWx1ZSBkaXJl
Y3RseSBpbgpAQCAtMTcyLDU1ICsxNzAsMjUgQEAgcHVibGljOgogICAgICAgICBpZiAoYXJpdHkg
PT0gTXVzdENoZWNrQXJpdHkpIHsKICAgICAgICAgICAgIHN3aXRjaCAoa2luZCkgewogICAgICAg
ICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlZ2lzdGVy
cykgewotICAgICAgICAgICAgICAgIGNhc2UgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Ob3RSZXF1aXJl
ZDoKLSAgICAgICAgICAgICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQg
PSBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2spCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIE11c3RQcmVzZXJ2ZVJlZ2lzdGVyczoKLSAgICAgICAgICAgICAgICAgICAgaWYg
KE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQgPSBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5
Q2hlY2tBbmRQcmVzZXJ2ZVJlZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQgPSBtX2ppdENvZGVG
b3JDYWxsV2l0aEFyaXR5Q2hlY2spCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENvZGVGb3JDb25zdHJ1
Y3Q6Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChyZWdpc3RlcnMpIHsKLSAgICAgICAgICAgICAg
ICBjYXNlIFJlZ2lzdGVyUHJlc2VydmF0aW9uTm90UmVxdWlyZWQ6Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0ID0gbV9qaXRDb2RlRm9yQ29uc3Ry
dWN0V2l0aEFyaXR5Q2hlY2spCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIE11c3RQ
cmVzZXJ2ZVJlZ2lzdGVyczoKLSAgICAgICAgICAgICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciByZXN1bHQgPSBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVja0FuZFBy
ZXNlcnZlUmVncykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBpZiAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdCA9IG1faml0Q29kZUZvckNvbnN0cnVj
dFdpdGhBcml0eUNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQgPQotICAgICAgICAgICAgZ2VuZXJhdGVkSklUQ29k
ZUZvcihraW5kKS0+YWRkcmVzc0ZvckNhbGwodm0sIHRoaXMsIGFyaXR5LCByZWdpc3RlcnMpOwor
ICAgICAgICAgICAgZ2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS0+YWRkcmVzc0ZvckNhbGwoYXJp
dHkpOwogICAgICAgICBpZiAoYXJpdHkgPT0gTXVzdENoZWNrQXJpdHkpIHsKICAgICAgICAgICAg
IC8vIENhY2hlIHRoZSByZXN1bHQ7IHRoaXMgaXMgbmVjZXNzYXJ5IGZvciB0aGUgSklUJ3Mgdmly
dHVhbCBjYWxsIG9wdGltaXphdGlvbnMuCiAgICAgICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKICAg
ICAgICAgICAgIGNhc2UgQ29kZUZvckNhbGw6Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChyZWdp
c3RlcnMpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFJlZ2lzdGVyUHJlc2VydmF0aW9uTm90UmVx
dWlyZWQ6Ci0gICAgICAgICAgICAgICAgICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVj
ayA9IHJlc3VsdDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBNdXN0UHJlc2VydmVSZWdpc3RlcnM6Ci0gICAgICAgICAgICAgICAgICAgIG1faml0Q29k
ZUZvckNhbGxXaXRoQXJpdHlDaGVja0FuZFByZXNlcnZlUmVncyA9IHJlc3VsdDsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1f
aml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjayA9IHJlc3VsdDsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKLSAgICAgICAgICAgICAg
ICBzd2l0Y2ggKHJlZ2lzdGVycykgewotICAgICAgICAgICAgICAgIGNhc2UgUmVnaXN0ZXJQcmVz
ZXJ2YXRpb25Ob3RSZXF1aXJlZDoKLSAgICAgICAgICAgICAgICAgICAgbV9qaXRDb2RlRm9yQ29u
c3RydWN0V2l0aEFyaXR5Q2hlY2sgPSByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgTXVzdFByZXNlcnZlUmVnaXN0ZXJzOgotICAgICAgICAg
ICAgICAgICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVja0FuZFByZXNlcnZl
UmVncyA9IHJlc3VsdDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNr
ID0gcmVzdWx0OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0yMjgsMjMgKzE5NiwxMyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcigKLSAgICAgICAgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kLCBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUgcmVnaXN0ZXJz
KQorICAgICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiAgICAgewogICAgICAgICBz
d2l0Y2ggKGtpbmQpIHsKICAgICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKLSAgICAgICAgICAgIHN3
aXRjaCAocmVnaXN0ZXJzKSB7Ci0gICAgICAgICAgICBjYXNlIFJlZ2lzdGVyUHJlc2VydmF0aW9u
Tm90UmVxdWlyZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVj
dXRhYmxlQmFzZSwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrKTsKLSAgICAgICAgICAg
IGNhc2UgTXVzdFByZXNlcnZlUmVnaXN0ZXJzOgotICAgICAgICAgICAgICAgIHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoRXhlY3V0YWJsZUJhc2UsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVj
a0FuZFByZXNlcnZlUmVncyk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKEV4ZWN1dGFibGVCYXNlLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hl
Y2spOwogICAgICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6Ci0gICAgICAgICAgICBzd2l0Y2gg
KHJlZ2lzdGVycykgewotICAgICAgICAgICAgY2FzZSBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJl
cXVpcmVkOgotICAgICAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRXhlY3V0YWJs
ZUJhc2UsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrKTsKLSAgICAgICAgICAg
IGNhc2UgTXVzdFByZXNlcnZlUmVnaXN0ZXJzOgotICAgICAgICAgICAgICAgIHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoRXhlY3V0YWJsZUJhc2UsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0
eUNoZWNrQW5kUHJlc2VydmVSZWdzKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoRXhlY3V0YWJsZUJhc2UsIG1faml0Q29kZUZvckNvbnN0cnVjdFdp
dGhBcml0eUNoZWNrKTsKICAgICAgICAgfQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oCShyZXZpc2lv
biAxODk5NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdpc3RlclByZXNl
cnZhdGlvbk1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgUmVnaXN0ZXJQcmVz
ZXJ2YXRpb25Nb2RlX2gKLSNkZWZpbmUgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlX2gKLQotbmFt
ZXNwYWNlIEpTQyB7Ci0KLWVudW0gUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlIHsKLSAgICBSZWdp
c3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkLAotICAgIE11c3RQcmVzZXJ2ZVJlZ2lzdGVycwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBSZWdpc3RlclByZXNlcnZhdGlv
bk1vZGVfaAotCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261493</attachid>
            <date>2015-09-17 22:38:33 -0700</date>
            <delta_ts>2015-09-18 09:03:08 -0700</delta_ts>
            <desc>Patch with Speculative CMake Build Fix</desc>
            <filename>149335-2.patch</filename>
            <type>text/plain</type>
            <size>50203</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg5OTYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBA
CisyMDE1LTA5LTE3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFJlbW92ZSByZWdpc3RlciBwcmVzZXJ2YXRpb24gYW5kIHJlc3RvcmF0aW9uIHN0dWIgY29k
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5MzM1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVsZXRl
IHRoZSByZWdpc3RlciBwcmVzZXJ2YXRpb24gYW5kIHJlc3RvcmF0aW9uIHRodW5rcyBhbmQgcmVs
YXRlZCBwbHVtYmluZy4KKworICAgICAgICBNdWNoIG9mIHRoaXMgY2hhbmdlIGlzIHJlbW92aW5n
IHRoZSB1bm5lZWRlZCBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUgcGFyYW1ldGVyCisgICAgICAg
IGZyb20gdmFyaW91cyBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxs
TGlua0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjppc1ZhcmFyZ3NDYWxsVHlw
ZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Q2FsbExpbmtJbmZvKToKKyAgICAgICAg
KEpTQzo6Q2FsbExpbmtJbmZvOjppc1ZhcmFyZ3MpOgorICAgICAgICAoSlNDOjpDYWxsTGlua0lu
Zm86OmlzTGlua2VkKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpzZXRVcENhbGxGcm9t
RlRMKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpyZWdpc3RlclByZXNlcnZhdGlvbk1v
ZGUpOiBEZWxldGVkLgorICAgICAgICAqIGZ0bC9GVExKSVRDb2RlLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpKSVRDb2RlOjppbml0aWFsaXplQWRkcmVzc0ZvckNhbGwpOgorICAgICAgICAoSlND
OjpGVEw6OkpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKToKKyAgICAgICAgKiBmdGwvRlRMSklUQ29k
ZS5oOgorICAgICAgICAqIGZ0bC9GVExPU1JFbnRyeS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
cHJlcGFyZU9TUkVudHJ5KToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgICogaml0L0pJVENvZGUu
Y3BwOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6RGly
ZWN0SklUQ29kZTo6ZW5zdXJlV3JhcHBlcnMpOgorICAgICAgICAoSlNDOjpEaXJlY3RKSVRDb2Rl
OjphZGRyZXNzRm9yQ2FsbCk6CisgICAgICAgIChKU0M6Ok5hdGl2ZUpJVENvZGU6OmluaXRpYWxp
emVDb2RlUmVmKToKKyAgICAgICAgKEpTQzo6TmF0aXZlSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwp
OgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6OkpJVENvZGU6OmppdFR5
cGVGb3IpOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjpleGVjdXRhYmxlQWRkcmVzcyk6CisgICAg
ICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9SZWdpc3RlclByZXNl
cnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGppdC9SZWdp
c3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBq
aXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAg
ICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0dWFsVGh1
bmtGb3IpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuaDoKKyAgICAgICAgKiBsbGlu
dC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjplbnRyeU9TUik6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0
YWJsZS5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6Z2VuZXJhdGVkSklUQ29kZUZv
cik6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjplbnRyeXBvaW50Rm9yKToKKyAgICAg
ICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6Om9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrRm9y
KToKKyAgICAgICAgKiBydW50aW1lL1JlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oOiBSZW1vdmVk
LgorCiAyMDE1LTA5LTE3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTg5OTM4LCByMTg5OTUyLCBhbmQg
cjE4OTk1Ni4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDE4OTk0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMzg4LDcgKzM4OCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAg
ICAgaml0L1JlZy5jcHAKICAgICBqaXQvUmVnaXN0ZXJBdE9mZnNldC5jcHAKICAgICBqaXQvUmVn
aXN0ZXJBdE9mZnNldExpc3QuY3BwCi0gICAgaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBl
ckdlbmVyYXRvci5jcHAKICAgICBqaXQvUmVnaXN0ZXJTZXQuY3BwCiAgICAgaml0L1JlcGF0Y2gu
Y3BwCiAgICAgaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5jcHAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTg5OTQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjUwLDcgKzY1MCw2IEBACiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxqaXRcUmVnLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGpp
dFxSZWdpc3RlckF0T2Zmc2V0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGpp
dFxSZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxqaXRcUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlclNldC5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVwYXRjaC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxqaXRcU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmNwcCIgLz4KQEAgLTE0NTMsNyAr
MTQ1Miw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJBdE9mZnNl
dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XFJlZ2lzdGVyQXRPZmZzZXRM
aXN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJNYXAuaCIg
Lz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlclByZXNlcnZhdGlvbldy
YXBwZXJHZW5lcmF0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxSZWdp
c3RlclNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XFJlcGF0Y2guaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0
b3IuaCIgLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnMJKHJldmlzaW9uIDE4OTk0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29y
a2luZyBjb3B5KQpAQCAtMTUwMCw5ICsxNTAwLDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFw
cGVyR2VuZXJhdG9yLmNwcCI+Ci0gICAgICA8RmlsdGVyPmppdDwvRmlsdGVyPgotICAgIDwvQ2xD
b21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTQ0J1aWx0aW5zLmNwcCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWQgU291cmNlczwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgpAQCAtNDA0Niw5ICs0MDQzLDYgQEAKICAgICAgIDxGaWx0ZXI+
cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGF0YVZpZXdQcm90b3R5cGUubHV0LmgiIC8+
Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFw
cGVyR2VuZXJhdG9yLmgiPgotICAgICAgPEZpbHRlcj5qaXQ8L0ZpbHRlcj4KLSAgICA8L0NsSW5j
bHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0bFxGVExBYmJyZXZpYXRlZFR5cGVz
LmgiPgogICAgICAgPEZpbHRlcj5mdGw8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODk5NDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMzc4LDkgKzM3OCw2IEBACiAJCTBGNkIxQ0I1MTg1RkM5RTkwMDg0
NUQ5NyAvKiBGVExKU0NhbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY2QjFDQjMxODVGQzlFOTAwODQ1RDk3IC8qIEZUTEpTQ2FsbC5jcHAgKi87
IH07CiAJCTBGNkIxQ0I2MTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExKU0NhbGwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0I0MTg1RkM5RTkwMDg0
NUQ5NyAvKiBGVExKU0NhbGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0I3
MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGNkIxQ0JBMTg2MTI0NEMwMDg0NUQ5NyAv
KiBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0I4MTg2MTI0NEMwMDg0NUQ5NyAvKiBSZWdpc3RlclBy
ZXNlcnZhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQkwRjZCMUNCRDE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRp
b25XcmFwcGVyR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNkIxQ0JCMTg2MTI0NkEwMDg0NUQ5NyAvKiBSZWdpc3RlclByZXNlcnZh
dGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwICovOyB9OwotCQkwRjZCMUNCRTE4NjEyNDZBMDA4NDVE
OTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjZCMUNCQzE4NjEyNDZBMDA4NDVE
OTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2QjFDQzUxODYyQzQ3ODAw
ODQ1RDk3IC8qIEZUTFVud2luZEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQzExODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZElu
Zm8uY3BwICovOyB9OwogCQkwRjZCMUNDNjE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53aW5kSW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFD
QzIxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIg
LyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QzczNEUxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxl
V3JpdGVGaXJlRGV0YWlsLmNwcCAqLzsgfTsKQEAgLTIyMTEsOSArMjIwOCw2IEBACiAJCTBGNkIx
Q0IzMTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExKU0NhbGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gRlRMSlNDYWxsLmNwcDsgcGF0aCA9IGZ0bC9GVExKU0NhbGwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjZCMUNCNDE4NUZDOUU5MDA4NDVEOTcg
LyogRlRMSlNDYWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTEpTQ2Fs
bC5oOyBwYXRoID0gZnRsL0ZUTEpTQ2FsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjZCMUNCNzE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJpdHlDaGVja01vZGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMEY2QjFDQjgxODYxMjQ0QzAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2Vy
dmF0aW9uTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpc3RlclBy
ZXNlcnZhdGlvbk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY2QjFDQkIx
ODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdpc3RlclByZXNlcnZh
dGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkw
RjZCMUNCQzE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2Vu
ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2lzdGVyUHJlc2Vy
dmF0aW9uV3JhcHBlckdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjZCMUNDMTE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53aW5kSW5mby5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExVbndpbmRJbmZvLmNwcDsgcGF0aCA9IGZ0bC9G
VExVbndpbmRJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2QjFDQzIx
ODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gRlRMVW53aW5kSW5mby5oOyBwYXRoID0gZnRsL0ZUTFVud2luZEluZm8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2QzczNEUxQUM5Rjk5RjAwQkUxNjgyIC8q
IFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQxNjEsOCArNDE1NSw2IEBACiAJCQkJNjU0MEM3OUMxQjgyRDk5RDAwMEY2
Qjc5IC8qIFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcCAqLywKIAkJCQk2NTQwQzc5RDFCODJEOTlE
MDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldExpc3QuaCAqLywKIAkJCQk2MjNBMzdFQjFCODdB
N0JEMDA3NTQyMDkgLyogUmVnaXN0ZXJNYXAuaCAqLywKLQkJCQkwRjZCMUNCQjE4NjEyNDZBMDA4
NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcCAqLywKLQkJ
CQkwRjZCMUNCQzE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVy
R2VuZXJhdG9yLmggKi8sCiAJCQkJMEZDMzE0MTQxODE0NkQ3MDAwMDMzMjMyIC8qIFJlZ2lzdGVy
U2V0LmNwcCAqLywKIAkJCQkwRkMzMTQxMDE4MTQ1NTkxMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQu
aCAqLywKIAkJCQkwRjI0RTU0OTE3RUUyNzQ5MDBBQkIyMTcgLyogUmVwYXRjaC5jcHAgKi8sCkBA
IC00OTUzLDcgKzQ5NDUsNiBAQAogCQkJCUY2OTJBODdDMDI1NTU5N0QwMUZGNjBGNyAvKiBSZWdF
eHBPYmplY3QuaCAqLywKIAkJCQlCQ0QyMDJCRjBFMTcwNkE3MDAyQzdFODIgLyogUmVnRXhwUHJv
dG90eXBlLmNwcCAqLywKIAkJCQlCQ0QyMDJDMDBFMTcwNkE3MDAyQzdFODIgLyogUmVnRXhwUHJv
dG90eXBlLmggKi8sCi0JCQkJMEY2QjFDQjgxODYxMjQ0QzAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJl
c2VydmF0aW9uTW9kZS5oICovLAogCQkJCTBGQjdGMzkxMTVFRDhFMzgwMEYxNjdCMiAvKiBSZWpl
Y3QuaCAqLywKIAkJCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmgg
Ki8sCiAJCQkJNTI3NzczREQxQUFGODNBQzAwQkRFN0U4IC8qIFJ1bnRpbWVUeXBlLmNwcCAqLywK
QEAgLTY3NTIsOCArNjc0Myw2IEBACiAJCQkJQkNEMjAyQzQwRTE3MDZBNzAwMkM3RTgyIC8qIFJl
Z0V4cFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NUQwRTE2RjVDRDAwQjM0
NDYwIC8qIFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDcyQjBFRDFDRTY5MDBG
MUY2ODEgLyogUmVnaXN0ZXJJRC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY2QjFDQkExODYxMjQ0
QzAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMEY2QjFDQkUxODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBl
ckdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMzE0MTIxODE0NTU5MTAwMDMzMjMy
IC8qIFJlZ2lzdGVyU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjUwQUYzQzE5M0U4QjM5MDA2
NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTdEMjNFRTE4OTFCNTU0MDAzMUM3RkEgLyogUmVndWxhckV4cHJlc3Npb24uaCBpbiBIZWFkZXJz
ICovLApAQCAtNzkzMyw3ICs3OTIyLDYgQEAKIAkJCQk4NjQyQzUxMjE1MUMwODNEMDA0NkQ0RUYg
LyogUmVnRXhwTWF0Y2hlc0FycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjgwODQzMTA3
RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHBPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQy
ODA4NDQxMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQkwRjZCMUNCRDE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25X
cmFwcGVyR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzMxNDE1MTgxNDZENzAw
MDAzMzIzMiAvKiBSZWdpc3RlclNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTdEMjNFRDE4
OTFCNTU0MDAzMUM3RkEgLyogUmVndWxhckV4cHJlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTMzRjUwNzgxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAxODk5NDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDgg
KzczLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIENhbGxMaW5rSW5mbygpCi0gICAgICAgIDog
bV9yZWdpc3RlclByZXNlcnZhdGlvbk1vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlZ2lzdGVy
UHJlc2VydmF0aW9uTm90UmVxdWlyZWQpKQotICAgICAgICAsIG1faGFzU2VlblNob3VsZFJlcGF0
Y2goZmFsc2UpCisgICAgICAgIDogbV9oYXNTZWVuU2hvdWxkUmVwYXRjaChmYWxzZSkKICAgICAg
ICAgLCBtX2hhc1NlZW5DbG9zdXJlKGZhbHNlKQogICAgICAgICAsIG1fY2xlYXJlZEJ5R0MoZmFs
c2UpCiAgICAgICAgICwgbV9hbGxvd1N0dWJzKHRydWUpCkBAIC0xMzUsMTEgKzEzNCw2IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGlzVmFyYXJnc0NhbGxUeXBlKHN0YXRpY19jYXN0PENhbGxU
eXBlPihtX2NhbGxUeXBlKSk7CiAgICAgfQogCi0gICAgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2Rl
IHJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8UmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlPihtX3JlZ2lzdGVyUHJlc2VydmF0
aW9uTW9kZSk7Ci0gICAgfQotCiAgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIG1fc3R1YiB8
fCBtX2NhbGxlZTsgfQogICAgIHZvaWQgdW5saW5rKFZNJik7CiAKQEAgLTE2OSw3ICsxNjMsNiBA
QCBwdWJsaWM6CiAgICAgICAgIENvZGVMb2NhdGlvbk5lYXJDYWxsIGNhbGxSZXR1cm5Mb2NhdGlv
biwgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGhvdFBhdGhCZWdpbiwKICAgICAgICAgQ29kZUxv
Y2F0aW9uTmVhckNhbGwgaG90UGF0aE90aGVyLCB1bnNpZ25lZCBjYWxsZWVHUFIpCiAgICAgewot
ICAgICAgICBtX3JlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkKTsKICAgICAgICAgbV9jYWxsVHlwZSA9
IGNhbGxUeXBlOwogICAgICAgICBtX2NvZGVPcmlnaW4gPSBjb2RlT3JpZ2luOwogICAgICAgICBt
X2NhbGxSZXR1cm5Mb2NhdGlvbiA9IGNhbGxSZXR1cm5Mb2NhdGlvbjsKQEAgLTM0Niw3ICszMzks
NiBAQCBwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2xhc3RTZWVuQ2Fs
bGVlOwogICAgIFJlZlB0cjxQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZT4gbV9zdHViOwogICAg
IFJlZlB0cjxKSVRTdHViUm91dGluZT4gbV9zbG93U3R1YjsKLSAgICB1bnNpZ25lZCBtX3JlZ2lz
dGVyUHJlc2VydmF0aW9uTW9kZSA6IDE7IC8vIFJlYWwgdHlwZSBpcyBSZWdpc3RlclByZXNlcnZh
dGlvbk1vZGUKICAgICBib29sIG1faGFzU2VlblNob3VsZFJlcGF0Y2ggOiAxOwogICAgIGJvb2wg
bV9oYXNTZWVuQ2xvc3VyZSA6IDE7CiAgICAgYm9vbCBtX2NsZWFyZWRCeUdDIDogMTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAkocmV2aXNpb24gMTg5OTQx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIEpJVENvZGU6OmluaXRpYWxpemVBZGRyZXNzRm9y
Q2FsbChDCiAgICAgbV9hZGRyZXNzRm9yQ2FsbCA9IGFkZHJlc3M7CiB9CiAKLUpJVENvZGU6OkNv
ZGVQdHIgSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwoVk0mLCBFeGVjdXRhYmxlQmFzZSosIEFyaXR5
Q2hlY2tNb2RlIGFyaXR5Q2hlY2ssIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSkKK0pJVENvZGU6
OkNvZGVQdHIgSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja01vZGUgYXJpdHlDaGVj
aykKIHsKICAgICBzd2l0Y2ggKGFyaXR5Q2hlY2spIHsKICAgICBjYXNlIEFyaXR5Q2hlY2tOb3RS
ZXF1aXJlZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5oCShyZXZp
c2lvbiAxODk5NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgSklUQ29kZSgpOwog
ICAgIH5KSVRDb2RlKCk7CiAgICAgCi0gICAgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChWTSYsIEV4
ZWN1dGFibGVCYXNlKiwgQXJpdHlDaGVja01vZGUsIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSkg
b3ZlcnJpZGU7CisgICAgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0
KSBvdmVycmlkZTsKICAgICB2b2lkKiBkYXRhQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQp
IG92ZXJyaWRlOwogICAgIHVuc2lnbmVkIG9mZnNldE9mKHZvaWQqIHBvaW50ZXJJbnRvQ29kZSkg
b3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNw
cAkocmV2aXNpb24gMTg5OTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JF
bnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw5ICsxMDAsNyBAQCB2b2lkKiBwcmVwYXJl
T1NSRW50cnkoCiAgICAgCiAgICAgZXhlYy0+c2V0Q29kZUJsb2NrKGVudHJ5Q29kZUJsb2NrKTsK
ICAgICAKLSAgICB2b2lkKiByZXN1bHQgPSBlbnRyeUNvZGUtPmFkZHJlc3NGb3JDYWxsKAotICAg
ICAgICB2bSwgZXhlY3V0YWJsZSwgQXJpdHlDaGVja05vdFJlcXVpcmVkLAotICAgICAgICBSZWdp
c3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgIHZv
aWQqIHJlc3VsdCA9IGVudHJ5Q29kZS0+YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja05vdFJlcXVp
cmVkKS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkp
CiAgICAgICAgIGRhdGFMb2coIiAgICBFbnRyeSB3aWxsIHN1Y2NlZWQsIGdvaW5nIHRvIGFkZHJl
c3MiLCBSYXdQb2ludGVyKHJlc3VsdCksICJcbiIpOwogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTg5
OTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRl
bnRGb3JTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVy
R2VuZXJhdG9yLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIApAQCAtMzc5
LDkgKzM3OCw2IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAgIC8vIG9sZCBmcmFtZSwg
YW5kIGZpbmFsbHkgd2Ugc2F2ZSB0aGUgdmFyaW91cyBjYWxsZWUtc2F2ZSByZWdpc3RlcnMgaW50
byB3aGVyZSB0aGUKICAgICAvLyByZXN0b3JhdGlvbiB0aHVuayB3b3VsZCByZXN0b3JlIHRoZW0g
ZnJvbS4KICAgICAKLSAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gcmVnaXN0ZXJQcmVzZXJ2YXRpb25P
ZmZzZXQoKTsKLSAgICBSZWdpc3RlclNldCB0b1NhdmUgPSByZWdpc3RlcnNUb1ByZXNlcnZlKCk7
Ci0gICAgCiAgICAgLy8gQmVmb3JlIHdlIHN0YXJ0IG1lc3Npbmcgd2l0aCB0aGUgZnJhbWUsIHdl
IG5lZWQgdG8gc2V0IGFzaWRlIGFueSByZWdpc3RlcnMgdGhhdCB0aGUKICAgICAvLyBGVEwgY29k
ZSB3YXMgcHJlc2VydmluZy4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2stPmNhbGxl
ZVNhdmVSZWdpc3RlcnMoKS0+c2l6ZSgpOyBpLS07KSB7CkBAIC0zOTcsMjYgKzM5MywxNiBAQCBz
dGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAvLyBMZXQncyBzYXkgdGhhdCB0aGUgRlRMIGZ1
bmN0aW9uIGhhZCBmYWlsZWQgaXRzIGFyaXR5IGNoZWNrLiBJbiB0aGF0IGNhc2UsIHRoZSBzdGFj
ayB3aWxsCiAgICAgLy8gY29udGFpbiBzb21lIGV4dHJhIHN0dWZmLgogICAgIC8vCi0gICAgLy8g
Rmlyc3Qgd2UgY29tcHV0ZSB0aGUgcGFkZGVkIHN0YWNrIHNwYWNlOgorICAgIC8vIFdlIGNvbXB1
dGUgdGhlIHBhZGRlZCBzdGFjayBzcGFjZToKICAgICAvLwogICAgIC8vICAgICBwYWRkZWRTdGFj
a1NwYWNlID0gcm91bmRVcChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMgLSByZWdUMiArIDEpCiAg
ICAgLy8KLSAgICAvLyBUaGUgc3RhY2sgd2lsbCBoYXZlIHJlZ1QyICsgQ2FsbEZyYW1lSGVhZGVy
U2l6ZSBzdHVmZiwgYnV0IGFib3ZlIGl0IHRoZXJlIHdpbGwgYmUKLSAgICAvLyBwYWRkZWRTdGFj
a1NwYWNlIGd1bmsgdXNlZCBieSB0aGUgYXJpdHkgY2hlY2sgZmFpbCByZXN0b3JhdGlvbiB0aHVu
ay4gV2hlbiB0aGF0IGhhcHBlbnMKLSAgICAvLyB3ZSB3YW50IHRvIG1ha2UgdGhlIHN0YWNrIGxv
b2sgbGlrZSB0aGlzLCBmcm9tIGhpZ2hlciBhZGRyZXNzZXMgZG93bjoKKyAgICAvLyBUaGUgc3Rh
Y2sgd2lsbCBoYXZlIHJlZ1QyICsgQ2FsbEZyYW1lSGVhZGVyU2l6ZSBzdHVmZi4KKyAgICAvLyBX
ZSB3YW50IHRvIG1ha2UgdGhlIHN0YWNrIGxvb2sgbGlrZSB0aGlzLCBmcm9tIGhpZ2hlciBhZGRy
ZXNzZXMgZG93bjoKICAgICAvLwotICAgIC8vICAgICAtIHJlZ2lzdGVyIHByZXNlcnZhdGlvbiBy
ZXR1cm4gUEMKLSAgICAvLyAgICAgLSBwcmVzZXJ2ZWQgcmVnaXN0ZXJzCi0gICAgLy8gICAgIC0g
YXJpdHkgY2hlY2sgZmFpbCByZXR1cm4gUEMKICAgICAvLyAgICAgLSBhcmd1bWVudCBwYWRkaW5n
CiAgICAgLy8gICAgIC0gYWN0dWFsIGFyZ3VtZW50cwogICAgIC8vICAgICAtIGNhbGwgZnJhbWUg
aGVhZGVyCi0gICAgLy8KLSAgICAvLyBTbyB0aGF0IHRoZSBhY3R1YWwgY2FsbCBmcmFtZSBoZWFk
ZXIgYXBwZWFycyB0byByZXR1cm4gdG8gdGhlIGFyaXR5IGNoZWNrIGZhaWwgcmV0dXJuCi0gICAg
Ly8gUEMsIGFuZCB0aGF0IHRoZW4gcmV0dXJucyB0byB0aGUgcmVnaXN0ZXIgcHJlc2VydmF0aW9u
IHRodW5rLiBUaGUgYXJpdHkgY2hlY2sgdGh1bmsgdGhhdAotICAgIC8vIHdlIHJldHVybiB0byB3
aWxsIGhhdmUgdGhlIHBhZGRpbmcgc2l6ZSBlbmNvZGVkIGludG8gaXQuIEl0IHdpbGwgdGhlbiBr
bm93IHRvIHJldHVybgotICAgIC8vIGludG8gdGhlIHJlZ2lzdGVyIHByZXNlcnZhdGlvbiB0aHVu
aywgd2hpY2ggdXNlcyB0aGUgYXJndW1lbnQgY291bnQgdG8gZmlndXJlIG91dCB3aGVyZQotICAg
IC8vIHJlZ2lzdGVycyBhcmUgcHJlc2VydmVkLgogCiAgICAgLy8gVGhpcyBjb2RlIGFzc3VtZXMg
dGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggRnVuY3Rpb25Db2RlLgogICAgIFJFTEVBU0VfQVNTRVJU
KGNvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpOwpAQCAtNDM2LDcgKzQyMiw2
IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogCiAgICAgLy8gRmlyc3Qgc2V0IHVwIFNQIHNv
IHRoYXQgb3VyIGRhdGEgZG9lc24ndCBnZXQgY2xvYmJlcmVkIGJ5IHNpZ25hbHMuCiAgICAgdW5z
aWduZWQgY29uc2VydmF0aXZlU3RhY2tEZWx0YSA9Ci0gICAgICAgIHJlZ2lzdGVyUHJlc2VydmF0
aW9uT2Zmc2V0KCkgKwogICAgICAgICAoZXhpdC5tX3ZhbHVlcy5udW1iZXJPZkxvY2FscygpICsg
YmFzZWxpbmVDb2RlQmxvY2stPmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpKSAq
IHNpemVvZihSZWdpc3RlcikgKwogICAgICAgICBtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bDsKICAgICBjb25zZXJ2YXRpdmVTdGFja0RlbHRhID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9m
KApAQCAtNDQ1LDI1ICs0MzAsMTIgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoLWNvbnNlcnZhdGl2ZVN0YWNrRGVsdGEpLAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIE1hY3JvQXNzZW1i
bGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgaml0LmNoZWNrU3RhY2tQb2ludGVyQWxp
Z25tZW50KCk7Ci0gICAgCi0gICAgaml0LnN1YlB0cigKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihyZWdpc3RlclByZXNlcnZhdGlvbk9mZnNldCgpKSwKLSAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAKLSAgICAvLyBDb3B5IHRo
ZSBvbGQgZnJhbWUgZGF0YSBpbnRvIGl0cyBuZXcgbG9jYXRpb24uCi0gICAgaml0LmFkZDMyKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSks
IEdQUkluZm86OnJlZ1QyKTsKLSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2lu
dGVyUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QxKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
bG9vcCA9IGppdC5sYWJlbCgpOwotICAgIGppdC5zdWIzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgaml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMSwgb2Zmc2V0KSwgR1BSSW5mbzo6cmVnVDApOwotICAg
IGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgaml0LmFk
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHNpemVvZihSZWdpc3RlcikpLCBHUFJJ
bmZvOjpyZWdUMSk7Ci0gICAgaml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVy
bywgR1BSSW5mbzo6cmVnVDIpLmxpbmtUbyhsb29wLCAmaml0KTsKIAorICAgIFJlZ2lzdGVyU2V0
IGFsbEZUTENhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMo
KTsKICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYmFzZWxpbmVDYWxsZWVTYXZlcyA9IGJhc2Vs
aW5lQ29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAKICAgICBmb3IgKFJlZyByZWcg
PSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTsgcmVnID0gcmVnLm5leHQoKSkgewot
ICAgICAgICBpZiAoIXRvU2F2ZS5nZXQocmVnKSB8fCAhcmVnLmlzR1BSKCkpCisgICAgICAgIGlm
ICghYWxsRlRMQ2FsbGVlU2F2ZXMuZ2V0KHJlZykgfHwgIXJlZy5pc0dQUigpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIHVuc2lnbmVkIHVud2luZEluZGV4ID0gY29kZUJsb2NrLT5j
YWxsZWVTYXZlUmVnaXN0ZXJzKCktPmluZGV4T2YocmVnKTsKICAgICAgICAgUmVnaXN0ZXJBdE9m
ZnNldCogYmFzZWxpbmVSZWdpc3Rlck9mZnNldCA9IGJhc2VsaW5lQ2FsbGVlU2F2ZXMtPmZpbmQo
cmVnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkocmV2aXNpb24g
MTg5OTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCi0jaW5jbHVk
ZSAiUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3Rm
L1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNzcsNyArNzYsNyBAQCBKU1Zh
bHVlIEpJVENvZGU6OmV4ZWN1dGUoVk0qIHZtLCBQcm90b0NhCiAgICAgICAgIEFTU0VSVCghcHJv
dG9DYWxsRnJhbWUtPm5lZWRBcml0eUNoZWNrKCkpOwogICAgICAgICBlbnRyeUFkZHJlc3MgPSBl
eGVjdXRhYmxlQWRkcmVzcygpOwogICAgIH0gZWxzZQotICAgICAgICBlbnRyeUFkZHJlc3MgPSBh
ZGRyZXNzRm9yQ2FsbCgqdm0sIGZ1bmN0aW9uLT5leGVjdXRhYmxlKCksIE11c3RDaGVja0FyaXR5
LCBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkKS5leGVjdXRhYmxlQWRkcmVzcygpOwor
ICAgICAgICBlbnRyeUFkZHJlc3MgPSBhZGRyZXNzRm9yQ2FsbChNdXN0Q2hlY2tBcml0eSkuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTVmFsdWU6OmRlY29kZSh2
bUVudHJ5VG9KYXZhU2NyaXB0KGVudHJ5QWRkcmVzcywgdm0sIHByb3RvQ2FsbEZyYW1lKSk7CiAg
ICAgcmV0dXJuIHZtLT5leGNlcHRpb24oKSA/IGpzTnVsbCgpIDogcmVzdWx0OwogfQpAQCAtMTg2
LDQzICsxODUsMTUgQEAgRGlyZWN0SklUQ29kZTo6UmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcAog
ICAgIHJldHVybiBtX3dyYXBwZXJzLmdldCgpOwogfQogCi1KSVRDb2RlOjpDb2RlUHRyIERpcmVj
dEpJVENvZGU6OmFkZHJlc3NGb3JDYWxsKAotICAgIFZNJiB2bSwgRXhlY3V0YWJsZUJhc2UqIGV4
ZWN1dGFibGUsIEFyaXR5Q2hlY2tNb2RlIGFyaXR5LAotICAgIFJlZ2lzdGVyUHJlc2VydmF0aW9u
TW9kZSByZWdpc3RlcnMpCitKSVRDb2RlOjpDb2RlUHRyIERpcmVjdEpJVENvZGU6OmFkZHJlc3NG
b3JDYWxsKEFyaXR5Q2hlY2tNb2RlIGFyaXR5KQogewogICAgIHN3aXRjaCAoYXJpdHkpIHsKICAg
ICBjYXNlIEFyaXR5Q2hlY2tOb3RSZXF1aXJlZDoKLSAgICAgICAgc3dpdGNoIChyZWdpc3RlcnMp
IHsKLSAgICAgICAgY2FzZSBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkOgotICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobV9yZWYpOwotICAgICAgICAgICAgcmV0dXJuIG1fcmVmLmNv
ZGUoKTsKLSAgICAgICAgY2FzZSBNdXN0UHJlc2VydmVSZWdpc3RlcnM6IHsKLSNpZiBFTkFCTEUo
SklUKQotICAgICAgICAgICAgUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVycyogd3JhcHBlcnMg
PSBlbnN1cmVXcmFwcGVycygpOwotICAgICAgICAgICAgaWYgKCF3cmFwcGVycy0+d2l0aG91dEFy
aXR5Q2hlY2spCi0gICAgICAgICAgICAgICAgd3JhcHBlcnMtPndpdGhvdXRBcml0eUNoZWNrID0g
Z2VuZXJhdGVSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXIodm0sIGV4ZWN1dGFibGUsIG1fcmVm
LmNvZGUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gd3JhcHBlcnMtPndpdGhvdXRBcml0eUNoZWNr
LmNvZGUoKTsKLSNlbHNlCi0gICAgICAgICAgICBVTlVTRURfUEFSQU0odm0pOwotICAgICAgICAg
ICAgVU5VU0VEX1BBUkFNKGV4ZWN1dGFibGUpOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSNlbmRpZgotICAgICAgICB9IH0KKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQobV9yZWYpOworICAgICAgICByZXR1cm4gbV9yZWYuY29kZSgpOwogICAgIGNhc2UgTXVzdENo
ZWNrQXJpdHk6Ci0gICAgICAgIHN3aXRjaCAocmVnaXN0ZXJzKSB7Ci0gICAgICAgIGNhc2UgUmVn
aXN0ZXJQcmVzZXJ2YXRpb25Ob3RSZXF1aXJlZDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fd2l0aEFyaXR5Q2hlY2spOwotICAgICAgICAgICAgcmV0dXJuIG1fd2l0aEFyaXR5Q2hlY2s7
Ci0gICAgICAgIGNhc2UgTXVzdFByZXNlcnZlUmVnaXN0ZXJzOiB7Ci0jaWYgRU5BQkxFKEpJVCkK
LSAgICAgICAgICAgIFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlcnMqIHdyYXBwZXJzID0gZW5z
dXJlV3JhcHBlcnMoKTsKLSAgICAgICAgICAgIGlmICghd3JhcHBlcnMtPndpdGhBcml0eUNoZWNr
KQotICAgICAgICAgICAgICAgIHdyYXBwZXJzLT53aXRoQXJpdHlDaGVjayA9IGdlbmVyYXRlUmVn
aXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyKHZtLCBleGVjdXRhYmxlLCBtX3dpdGhBcml0eUNoZWNr
KTsKLSAgICAgICAgICAgIHJldHVybiB3cmFwcGVycy0+d2l0aEFyaXR5Q2hlY2suY29kZSgpOwot
I2Vsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYK
LSAgICAgICAgfSB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fd2l0aEFyaXR5Q2hlY2spOwor
ICAgICAgICByZXR1cm4gbV93aXRoQXJpdHlDaGVjazsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gQ29kZVB0cigpOwpAQCAtMjQ4LDggKzIxOSw3
IEBAIHZvaWQgTmF0aXZlSklUQ29kZTo6aW5pdGlhbGl6ZUNvZGVSZWYoQ28KICAgICBtX3JlZiA9
IHJlZjsKIH0KIAotSklUQ29kZTo6Q29kZVB0ciBOYXRpdmVKSVRDb2RlOjphZGRyZXNzRm9yQ2Fs
bCgKLSAgICBWTSYsIEV4ZWN1dGFibGVCYXNlKiwgQXJpdHlDaGVja01vZGUsIFJlZ2lzdGVyUHJl
c2VydmF0aW9uTW9kZSkKK0pJVENvZGU6OkNvZGVQdHIgTmF0aXZlSklUQ29kZTo6YWRkcmVzc0Zv
ckNhbGwoQXJpdHlDaGVja01vZGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoISFtX3JlZik7CiAg
ICAgcmV0dXJuIG1fcmVmLmNvZGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29k
ZS5oCShyZXZpc2lvbiAxODk5NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENv
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkpJVFN0dWJz
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oIgotI2luY2x1ZGUgIlJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApAQCAtMTk1LDcgKzE5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGpp
dENvZGUtPmppdFR5cGUoKTsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCBDb2RlUHRyIGFkZHJl
c3NGb3JDYWxsKFZNJiwgRXhlY3V0YWJsZUJhc2UqLCBBcml0eUNoZWNrTW9kZSwgUmVnaXN0ZXJQ
cmVzZXJ2YXRpb25Nb2RlKSA9IDA7CisgICAgdmlydHVhbCBDb2RlUHRyIGFkZHJlc3NGb3JDYWxs
KEFyaXR5Q2hlY2tNb2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkKiBleGVjdXRhYmxlQWRkcmVz
c0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpID0gMDsKICAgICB2b2lkKiBleGVjdXRhYmxlQWRkcmVz
cygpIHsgcmV0dXJuIGV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoMCk7IH0KICAgICB2aXJ0dWFs
IHZvaWQqIGRhdGFBZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkgPSAwOwpAQCAtMjQ2LDcg
KzI0NSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGluaXRpYWxpemVDb2RlUmVmKENvZGVS
ZWYsIENvZGVQdHIgd2l0aEFyaXR5Q2hlY2spOwogCi0gICAgdmlydHVhbCBDb2RlUHRyIGFkZHJl
c3NGb3JDYWxsKFZNJiwgRXhlY3V0YWJsZUJhc2UqLCBBcml0eUNoZWNrTW9kZSwgUmVnaXN0ZXJQ
cmVzZXJ2YXRpb25Nb2RlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIENvZGVQdHIgYWRkcmVzc0Zv
ckNhbGwoQXJpdHlDaGVja01vZGUpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBS
ZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJzIHsKQEAgLTI2OSw3ICsyNjgsNyBAQCBwdWJsaWM6
CiAgICAgCiAgICAgdm9pZCBpbml0aWFsaXplQ29kZVJlZihDb2RlUmVmKTsKIAotICAgIHZpcnR1
YWwgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChWTSYsIEV4ZWN1dGFibGVCYXNlKiwgQXJpdHlDaGVj
a01vZGUsIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBD
b2RlUHRyIGFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tNb2RlKSBvdmVycmlkZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxODk5NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjcsNyArNzY3LDcgQEAg
U2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciBjb2RlUHRyOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKICAgICBp
ZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkgewotICAgICAgICBjb2RlUHRyID0gZXhl
Y3V0YWJsZS0+ZW50cnlwb2ludEZvcigqdm0sIGtpbmQsIE11c3RDaGVja0FyaXR5LCBjYWxsTGlu
a0luZm8tPnJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSgpKTsKKyAgICAgICAgY29kZVB0ciA9IGV4
ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgTXVzdENoZWNrQXJpdHkpOwogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICB9IGVsc2UgaWYgKGV4ZWN1dGFibGUtPmlzV2ViQXNzZW1ibHlF
eGVjdXRhYmxlKCkpIHsKICAgICAgICAgV2ViQXNzZW1ibHlFeGVjdXRhYmxlKiB3ZWJBc3NlbWJs
eUV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxXZWJBc3NlbWJseUV4ZWN1dGFibGUqPihleGVjdXRh
YmxlKTsKQEAgLTc3OSw3ICs3NzksNyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElP
TiBvcGVyYXRpCiAgICAgICAgICAgICBhcml0eSA9IE11c3RDaGVja0FyaXR5OwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBhcml0eSA9IEFyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKLSAgICAgICAg
Y29kZVB0ciA9IHdlYkFzc2VtYmx5RXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcigqdm0sIGtpbmQs
IGFyaXR5LCBjYWxsTGlua0luZm8tPnJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSgpKTsKKyAgICAg
ICAgY29kZVB0ciA9IHdlYkFzc2VtYmx5RXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBh
cml0eSk7CiAjZW5kaWYKICAgICB9IGVsc2UgewogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4
ZWN1dGFibGUpOwpAQCAtODA0LDcgKzgwNCw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGkKICAgICAgICAgICAgIGFyaXR5ID0gTXVzdENoZWNrQXJpdHk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGFyaXR5ID0gQXJpdHlDaGVja05vdFJlcXVpcmVkOwotICAg
ICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKCp2bSwga2lu
ZCwgYXJpdHksIGNhbGxMaW5rSW5mby0+cmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlKCkpOworICAg
ICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIGFy
aXR5KTsKICAgICB9CiAgICAgaWYgKCFjYWxsTGlua0luZm8tPnNlZW5PbmNlKCkpCiAgICAgICAg
IGNhbGxMaW5rSW5mby0+c2V0U2VlbigpOwpAQCAtODY3LDcgKzg2Nyw3IEBAIGlubGluZSBTbG93
UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGgKICAgICAgICAgfQogICAgIH0KICAgICByZXR1
cm4gZW5jb2RlUmVzdWx0KGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3IoCi0gICAgICAgICp2bSwg
a2luZCwgTXVzdENoZWNrQXJpdHksIGNhbGxMaW5rSW5mby0+cmVnaXN0ZXJQcmVzZXJ2YXRpb25N
b2RlKCkpLmV4ZWN1dGFibGVBZGRyZXNzKCksCisgICAgICAgIGtpbmQsIE11c3RDaGVja0FyaXR5
KS5leGVjdXRhYmxlQWRkcmVzcygpLAogICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihj
YWxsTGlua0luZm8tPmNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlRhaWwgPyBSZXVzZVRoZUZyYW1l
IDogS2VlcFRoZUZyYW1lKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVy
YXRvci5jcHAJKHJldmlzaW9uIDE4OTk0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSwyNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVnaXN0ZXJQcmVz
ZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmgiCi0KLSNpZiBFTkFCTEUoSklUKQotCi0jaW5jbHVk
ZSAiQXNzZW1ibHlIZWxwZXJzLmgiCi0jaW5jbHVkZSAiTGlua0J1ZmZlci5oIgotI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgotCi1uYW1lc3BhY2Ug
SlNDIHsKLQotUmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9QcmVzZXJ2ZSgpCi17Ci0gICAgUmVnaXN0
ZXJTZXQgY2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOwot
ICAgIAotICAgIC8vIE5vIG5lZWQgdG8gcHJlc2VydmUgRlAgc2luY2UgdGhhdCBhbHdheXMgZ2V0
cyBwcmVzZXJ2ZWQgYW55d2F5LgotICAgIGNhbGxlZVNhdmVzLmNsZWFyKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyKTsKLSAgICAKLSAgICByZXR1cm4gY2FsbGVlU2F2ZXM7Ci19Ci0KLXB0cmRp
ZmZfdCByZWdpc3RlclByZXNlcnZhdGlvbk9mZnNldCgpCi17Ci0gICAgdW5zaWduZWQgbnVtYmVy
T2ZDYWxsZWVTYXZlcyA9IHJlZ2lzdGVyc1RvUHJlc2VydmUoKS5udW1iZXJPZlNldFJlZ2lzdGVy
cygpOwotICAgIAotICAgIC8vIE5lZWQgdG8gcHJlc2VydmUgdGhlIG9sZCByZXR1cm4gUEMuCi0g
ICAgdW5zaWduZWQgbnVtYmVyT2ZWYWx1ZXNUb1NhdmUgPSBudW1iZXJPZkNhbGxlZVNhdmVzICsg
MTsKLSAgICAKLSAgICAvLyBBbGlnbm1lbnQuIFByZXNlcnZlIHRoZSBzYW1lIGFsaWdubWVudCBp
bnZhcmlhbnRzIHRoYXQgdGhlIGNhbGxlciBpbXBvc2VkLgotICAgIHVuc2lnbmVkIG51bWJlck9m
TmV3U3RhY2tTbG90cyA9Ci0gICAgICAgIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0Fs
aWdubWVudFJlZ2lzdGVycygpLCBudW1iZXJPZlZhbHVlc1RvU2F2ZSk7Ci0gICAgCi0gICAgcmV0
dXJuIHNpemVvZihSZWdpc3RlcikgKiBudW1iZXJPZk5ld1N0YWNrU2xvdHM7Ci19Ci0KLU1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlcihWTSYg
dm0sIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgdGFy
Z2V0KQotewotI2lmIEVOQUJMRShGVExfSklUKQotICAgIC8vIFdlIHNob3VsZG4ndCBldmVyIGJl
IGdlbmVyYXRpbmcgd3JhcHBlcnMgZm9yIG5hdGl2ZSBmdW5jdGlvbnMuCi0gICAgUmVnaXN0ZXJT
ZXQgdG9TYXZlID0gcmVnaXN0ZXJzVG9QcmVzZXJ2ZSgpOwotICAgIHB0cmRpZmZfdCBvZmZzZXQg
PSByZWdpc3RlclByZXNlcnZhdGlvbk9mZnNldCgpOwotCi0gICAgQVNTRVJUKCF0b1NhdmUuZ2V0
KEdQUkluZm86OnJlZ1QxKSk7Ci0gICAgQVNTRVJUKCF0b1NhdmUuZ2V0KEdQUkluZm86OnJlZ1Qy
KSk7Ci0gICAgQVNTRVJUKCF0b1NhdmUuZ2V0KEdQUkluZm86OnJlZ1QzKSk7Ci0gICAgCi0gICAg
QXNzZW1ibHlIZWxwZXJzIGppdCgmdm0sIDApOwotICAgIAotICAgIGppdC5wcmVzZXJ2ZVJldHVy
bkFkZHJlc3NBZnRlckNhbGwoR1BSSW5mbzo6cmVnVDEpOwotICAgIGppdC5sb2FkMzIoCi0gICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcygKLSAgICAgICAgICAgIEFzc2VtYmx5SGVscGVy
czo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsCi0gICAgICAgICAgICAoSlNTdGFjazo6QXJndW1lbnRD
b3VudCAtIEpTU3RhY2s6OkNhbGxlckZyYW1lQW5kUENTaXplKSAqIHNpemVvZihSZWdpc3Rlcikg
KyBQYXlsb2FkT2Zmc2V0KSwKLSAgICAgICAgR1BSSW5mbzo6cmVnVDIpOwotICAgIAotICAgIC8v
IFBsYWNlIHRoZSBzdGFjayBwb2ludGVyIHdoZXJlIHdlIHdhbnQgaXQgdG8gYmUuCi0gICAgaml0
LnN1YlB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihvZmZzZXQpLCBBc3NlbWJseUhl
bHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAKLSAgICAvLyBDb21wdXRlIHRoZSBu
dW1iZXIgb2YgdGhpbmdzIHdlIHdpbGwgYmUgY29weWluZy4KLSAgICBqaXQuYWRkMzIoCi0gICAg
ICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKAotICAgICAgICAgICAgSlNTdGFjazo6
Q2FsbEZyYW1lSGVhZGVyU2l6ZSAtIEpTU3RhY2s6OkNhbGxlckZyYW1lQW5kUENTaXplKSwKLSAg
ICAgICAgR1BSSW5mbzo6cmVnVDIpOwotCi0gICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpz
dGFja1BvaW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDMpOwotICAgIAotICAgIEFzc2VtYmx5
SGVscGVyczo6TGFiZWwgbG9vcCA9IGppdC5sYWJlbCgpOwotICAgIGppdC5zdWIzMihBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDIpOwotICAgIGppdC5sb2Fk
NjQoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QzLCBvZmZzZXQpLCBHUFJJ
bmZvOjpyZWdUMCk7Ci0gICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJl
Z1QzKTsKLSAgICBqaXQuYWRkUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKHNpemVv
ZihSZWdpc3RlcikpLCBHUFJJbmZvOjpyZWdUMyk7Ci0gICAgaml0LmJyYW5jaFRlc3QzMihBc3Nl
bWJseUhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QyKS5saW5rVG8obG9vcCwgJmppdCk7
Ci0KLSAgICAvLyBBdCB0aGlzIHBvaW50IHJlZ1QzICsgb2Zmc2V0IHBvaW50cyB0byB3aGVyZSB3
ZSBzYXZlIHRoaW5ncy4KLSAgICBwdHJkaWZmX3QgY3VycmVudE9mZnNldCA9IDA7Ci0gICAgaml0
LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QxLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6cmVnVDMsIGN1cnJlbnRPZmZzZXQpKTsKLSAgICAKLSAgICBmb3IgKEdQUlJlZyBncHIgPSBB
c3NlbWJseUhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgZ3ByIDw9IEFzc2VtYmx5SGVscGVyczo6
bGFzdFJlZ2lzdGVyKCk7IGdwciA9IHN0YXRpY19jYXN0PEdQUlJlZz4oZ3ByICsgMSkpIHsKLSAg
ICAgICAgaWYgKCF0b1NhdmUuZ2V0KGdwcikpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgY3VycmVudE9mZnNldCArPSBzaXplb2YoUmVnaXN0ZXIpOwotICAgICAgICBqaXQuc3RvcmU2
NChncHIsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMywgY3VycmVudE9m
ZnNldCkpOwotICAgIH0KLSAgICBmb3IgKEZQUlJlZyBmcHIgPSBBc3NlbWJseUhlbHBlcnM6OmZp
cnN0RlBSZWdpc3RlcigpOyBmcHIgPD0gQXNzZW1ibHlIZWxwZXJzOjpsYXN0RlBSZWdpc3Rlcigp
OyBmcHIgPSBzdGF0aWNfY2FzdDxGUFJSZWc+KGZwciArIDEpKSB7Ci0gICAgICAgIGlmICghdG9T
YXZlLmdldChmcHIpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGN1cnJlbnRPZmZz
ZXQgKz0gc2l6ZW9mKFJlZ2lzdGVyKTsKLSAgICAgICAgaml0LnN0b3JlRG91YmxlKGZwciwgQXNz
ZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QzLCBjdXJyZW50T2Zmc2V0KSk7Ci0g
ICAgfQotICAgIAotICAgIC8vIEFzc3VtZSB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgc2F2ZWQgRlAg
cmVnaXN0ZXJzLgotICAgIAotICAgIC8vIFJlc3RvcmUgdGhlIHRhZyByZWdpc3RlcnMuCi0gICAg
aml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlciksIEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgaml0LmFkZDY0KEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKFRhZ01hc2sgLSBUYWdUeXBlTnVtYmVyKSwgR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgIAotICAg
IGppdC5tb3ZlKAotICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoCi0gICAg
ICAgICAgICB2bS5nZXRDVElTdHViKHJlZ2lzdGVyUmVzdG9yYXRpb25UaHVua0dlbmVyYXRvciku
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpLAotICAgICAgICBHUFJJbmZvOjpub25BcmdHUFIw
KTsKLSAgICBqaXQucmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oR1BSSW5mbzo6bm9u
QXJnR1BSMCk7Ci0gICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGp1bXAgPSBqaXQuanVtcCgpOwot
ICAgIAotICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcih2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQp
OwotICAgIGxpbmtCdWZmZXIubGluayhqdW1wLCBDb2RlTG9jYXRpb25MYWJlbCh0YXJnZXQpKTsK
LQotICAgIGlmIChPcHRpb25zOjp2ZXJib3NlRlRMVG9KU1RodW5rKCkpCi0gICAgICAgIGRhdGFM
b2coIk5lZWQgYSB0aHVuayBmb3IgY2FsbHMgZnJvbSBGVEwgdG8gbm9uLUZUTCB2ZXJzaW9uIG9m
ICIsICpleGVjdXRhYmxlLCAiXG4iKTsKLSAgICAKLSAgICByZXR1cm4gRklOQUxJWkVfREZHX0NP
REUobGlua0J1ZmZlciwgKCJSZWdpc3RlciBwcmVzZXJ2YXRpb24gd3JhcHBlciBmb3IgJXMvJXMs
ICVwIiwgdG9DU3RyaW5nKGV4ZWN1dGFibGUtPmhhc2hGb3IoQ29kZUZvckNhbGwpKS5kYXRhKCks
IHRvQ1N0cmluZyhleGVjdXRhYmxlLT5oYXNoRm9yKENvZGVGb3JDb25zdHJ1Y3QpKS5kYXRhKCks
IHRhcmdldC5leGVjdXRhYmxlQWRkcmVzcygpKSk7Ci0jZWxzZSAvLyBFTkFCTEUoRlRMX0pJVCkK
LSAgICBVTlVTRURfUEFSQU0odm0pOwotICAgIFVOVVNFRF9QQVJBTShleGVjdXRhYmxlKTsKLSAg
ICBVTlVTRURfUEFSQU0odGFyZ2V0KTsKLSAgICAvLyBXZSBkb24ndCBzdXBwb3J0IG5vbi1GVEwg
YnVpbGRzIGZvciB0d28gcmVhc29uczoKLSAgICAvLyAtIEl0IGp1c3Qgc28gaGFwcGVucyB0aGF0
IGN1cnJlbnRseSBvbmx5IHRoZSBGVEwgYm90dG9tcyBvdXQgaW4gdGhpcyBjb2RlLgotICAgIC8v
IC0gVGhlIGNvZGUgYWJvdmUgdXNlcyA2NC1iaXQgaW5zdHJ1Y3Rpb25zLiBJdCBkb2Vzbid0IG5l
Y2Vzc2FyaWx5IGhhdmUgdG87IGl0IHdvdWxkIGJlCi0gICAgLy8gICBlYXN5IHRvIGNoYW5nZSBp
dCBzbyB0aGF0IGl0IGRvZXNuJ3QuIEJ1dCBvYnZpb3VzbHkgbWFraW5nIHRoYXQgY2hhbmdlIHdv
dWxkIGJlIGEKLSAgICAvLyAgIHByZXJlcXVpc2l0ZSB0byByZW1vdmluZyB0aGlzICNpZi4KLSAg
ICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmKCk7Ci0jZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCi19Ci0KLXN0YXRpYyB2b2lkIGdl
bmVyYXRlUmVnaXN0ZXJSZXN0b3JhdGlvbihBc3NlbWJseUhlbHBlcnMmIGppdCkKLXsKLSNpZiBF
TkFCTEUoRlRMX0pJVCkKLSAgICBSZWdpc3RlclNldCB0b1NhdmUgPSByZWdpc3RlcnNUb1ByZXNl
cnZlKCk7Ci0gICAgcHRyZGlmZl90IG9mZnNldCA9IHJlZ2lzdGVyUHJlc2VydmF0aW9uT2Zmc2V0
KCk7Ci0gICAgCi0gICAgQVNTRVJUKCF0b1NhdmUuZ2V0KEdQUkluZm86OnJlZ1QxKSk7Ci0gICAg
QVNTRVJUKCF0b1NhdmUuZ2V0KEdQUkluZm86OnJlZ1QyKSk7Ci0gICAgQVNTRVJUKCF0b1NhdmUu
Z2V0KEdQUkluZm86OnJlZ1QzKSk7Ci0KLSAgICAvLyBXZSBuZWVkIHRvIHBsYWNlIHRoZSBzdGFj
ayBwb2ludGVyIGJhY2sgdG8gd2hlcmUgdGhlIGNhbGxlciB0aG91Z2h0IHRoZXkgbGVmdCBpdC4K
LSAgICAvLyBCdXQgYWxzbywgaW4gb3JkZXIgdG8gcmVjb3ZlciB0aGUgcmVnaXN0ZXJzLCB3ZSBu
ZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGJpZyB0aGUKLSAgICAvLyBhcmd1bWVudHMgYXJlYSBpcy4K
LSAgICAKLSAgICBqaXQubG9hZDMyKAotICAgICAgICBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Mo
Ci0gICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLAotICAg
ICAgICAgICAgKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgLSBKU1N0YWNrOjpDYWxsZXJGcmFtZUFu
ZFBDU2l6ZSkgKiBzaXplb2YoUmVnaXN0ZXIpICsgUGF5bG9hZE9mZnNldCksCi0gICAgICAgIEdQ
UkluZm86OnJlZ1QzKTsKLSAgICAKLSAgICBqaXQubW92ZShHUFJJbmZvOjpyZWdUMywgR1BSSW5m
bzo6cmVnVDIpOwotICAgIGppdC5sc2hpZnQzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MigzKSwgR1BSSW5mbzo6cmVnVDIpOwotICAgIAotICAgIGppdC5hZGRQdHIoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIob2Zmc2V0KSwgQXNzZW1ibHlIZWxwZXJzOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7Ci0gICAgaml0LmFkZFB0cihBc3NlbWJseUhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgCi0gICAgLy8gV2Ugc2F2ZWQgdGhpbmdzIGF0
OgotICAgIC8vCi0gICAgLy8gICAgIGFkalNQICsgKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNp
emUgLSBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSArIE51bUFyZ3MpICogOAotICAgIC8v
Ci0gICAgLy8gV2hlcmU6Ci0gICAgLy8KLSAgICAvLyAgICAgYWRqU1AgPSBvcmlnU1AgLSBvZmZz
ZXQKLSAgICAvLwotICAgIC8vIHJlZ1QyIG5vdyBwb2ludHMgYXQ6Ci0gICAgLy8KLSAgICAvLyAg
ICAgb3JpZ1NQICsgTnVtQXJncyAqIDgKLSAgICAvLyAgID0gYWRqU1AgKyBvZmZzZXQgKyBOdW1B
cmdzICogOAotICAgIC8vIAotICAgIC8vIFNvIGlmIHdlIHN1YnRyYWN0IG9mZnNldCBhbmQgdGhl
biBhZGQgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSBhbmQgc3VidHJhY3QKLSAgICAvLyBK
U1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgd2UnbGwgZ2V0IHRoZSB0aGluZyB3ZSB3YW50
LgotICAgIHB0cmRpZmZfdCBjdXJyZW50T2Zmc2V0ID0gLW9mZnNldCArIHNpemVvZihSZWdpc3Rl
cikgKiAoCi0gICAgICAgIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgLSBKU1N0YWNrOjpD
YWxsZXJGcmFtZUFuZFBDU2l6ZSk7Ci0gICAgaml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpB
ZGRyZXNzKEdQUkluZm86OnJlZ1QyLCBjdXJyZW50T2Zmc2V0KSwgR1BSSW5mbzo6cmVnVDEpOwot
ICAgIAotICAgIGZvciAoR1BSUmVnIGdwciA9IEFzc2VtYmx5SGVscGVyczo6Zmlyc3RSZWdpc3Rl
cigpOyBncHIgPD0gQXNzZW1ibHlIZWxwZXJzOjpsYXN0UmVnaXN0ZXIoKTsgZ3ByID0gc3RhdGlj
X2Nhc3Q8R1BSUmVnPihncHIgKyAxKSkgewotICAgICAgICBpZiAoIXRvU2F2ZS5nZXQoZ3ByKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IHNpemVvZihS
ZWdpc3Rlcik7Ci0gICAgICAgIGppdC5sb2FkNjQoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQ
UkluZm86OnJlZ1QyLCBjdXJyZW50T2Zmc2V0KSwgZ3ByKTsKLSAgICB9Ci0gICAgZm9yIChGUFJS
ZWcgZnByID0gQXNzZW1ibHlIZWxwZXJzOjpmaXJzdEZQUmVnaXN0ZXIoKTsgZnByIDw9IEFzc2Vt
Ymx5SGVscGVyczo6bGFzdEZQUmVnaXN0ZXIoKTsgZnByID0gc3RhdGljX2Nhc3Q8RlBSUmVnPihm
cHIgKyAxKSkgewotICAgICAgICBpZiAoIXRvU2F2ZS5nZXQoZnByKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IHNpemVvZihSZWdpc3Rlcik7Ci0gICAg
ICAgIGppdC5sb2FkRG91YmxlKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdU
MiwgY3VycmVudE9mZnNldCksIGZwcik7Ci0gICAgfQotICAgIAotICAgIC8vIFRodW5rcyBsaWtl
IHRoaXMgcmVseSBvbiB0aGUgQXJndW1lbnRDb3VudCBiZWluZyBpbnRhY3QuIFBheSBpdCBmb3J3
YXJkLgotICAgIGppdC5zdG9yZTMyKAotICAgICAgICBHUFJJbmZvOjpyZWdUMywKLSAgICAgICAg
QXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKAotICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpz
dGFja1BvaW50ZXJSZWdpc3RlciwKLSAgICAgICAgICAgIChKU1N0YWNrOjpBcmd1bWVudENvdW50
IC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUpICogc2l6ZW9mKFJlZ2lzdGVyKSArIFBh
eWxvYWRPZmZzZXQpKTsKLSAgICAKLSAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAg
ICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgb2sgPSBqaXQuYnJhbmNoUHRyKAotICAgICAgICAgICAg
QXNzZW1ibHlIZWxwZXJzOjpBYm92ZSwgR1BSSW5mbzo6cmVnVDEsIEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDxzaXplX3Q+KDB4MTAwMCkpKTsKLSAgICAgICAgaml0
LmFib3J0V2l0aFJlYXNvbihSUFdVbnJlYXNvbmFibGVKdW1wVGFyZ2V0KTsKLSAgICAgICAgb2su
bGluaygmaml0KTsKLSAgICB9Ci0gICAgCi0gICAgaml0Lmp1bXAoR1BSSW5mbzo6cmVnVDEpOwot
I2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCi0gICAgVU5VU0VEX1BBUkFNKGppdCk7Ci0gICAgVU5S
RUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0jZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCi19Ci0K
LU1hY3JvQXNzZW1ibGVyQ29kZVJlZiByZWdpc3RlclJlc3RvcmF0aW9uVGh1bmtHZW5lcmF0b3Io
Vk0qIHZtKQotewotICAgIEFzc2VtYmx5SGVscGVycyBqaXQodm0sIDApOwotICAgIGdlbmVyYXRl
UmVnaXN0ZXJSZXN0b3JhdGlvbihqaXQpOwotICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcigqdm0s
IGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShsaW5rQnVm
ZmVyLCAoIlJlZ2lzdGVyIHJlc3RvcmF0aW9uIHRodW5rIikpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclByZXNlcnZhdGlvbldyYXBw
ZXJHZW5lcmF0b3IuaAkocmV2aXNpb24gMTg5OTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpZm5kZWYgUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yX2gK
LSNkZWZpbmUgUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yX2gKLQotI2lmIEVO
QUJMRShKSVQpCi0KLSNpbmNsdWRlICJBcml0eUNoZWNrTW9kZS5oIgotI2luY2x1ZGUgIkFzc2Vt
Ymx5SGVscGVycy5oIgotI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgotI2luY2x1
ZGUgIlZNLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1SZWdpc3RlclNldCByZWdpc3RlcnNUb1By
ZXNlcnZlKCk7Ci0KLXB0cmRpZmZfdCByZWdpc3RlclByZXNlcnZhdGlvbk9mZnNldCgpOwotCi1N
YWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXIo
Vk0mLCBFeGVjdXRhYmxlQmFzZSosIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB0YXJnZXQpOwotCi1N
YWNyb0Fzc2VtYmxlckNvZGVSZWYgcmVnaXN0ZXJSZXN0b3JhdGlvblRodW5rR2VuZXJhdG9yKFZN
Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKEpJVCkKLQotI2Vu
ZGlmIC8vIFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvcl9oCi0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMTg5OTQxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzk1
LDggKzc5NSw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAgICAgCiAgICAgICAg
IEFTU0VSVCh2YXJpYW50LmV4ZWN1dGFibGUoKS0+aGFzSklUQ29kZUZvckNhbGwoKSk7CiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyID0KLSAgICAgICAgICAgIHZhcmlhbnQu
ZXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLT5hZGRyZXNzRm9yQ2FsbCgK
LSAgICAgICAgICAgICAgICAqdm0sIHZhcmlhbnQuZXhlY3V0YWJsZSgpLCBBcml0eUNoZWNrTm90
UmVxdWlyZWQsIGNhbGxMaW5rSW5mby5yZWdpc3RlclByZXNlcnZhdGlvbk1vZGUoKSk7CisgICAg
ICAgICAgICB2YXJpYW50LmV4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+
YWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja05vdFJlcXVpcmVkKTsKICAgICAgICAgCiAgICAgICAg
IGlmIChmYXN0Q291bnRzKSB7CiAgICAgICAgICAgICBzdHViSml0LmFkZDMyKApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24g
MTg5OTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNyArMjAyLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IHZpcnR1YWxUaHVua0ZvcihWTQogICAgIGppdC5sb2FkUHRyKAogICAgICAgICBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoCiAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUNCwgRXhlY3V0YWJsZUJhc2U6
Om9mZnNldE9mSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKAotICAgICAgICAgICAgICAgIGNhbGxM
aW5rSW5mby5zcGVjaWFsaXphdGlvbktpbmQoKSwgY2FsbExpbmtJbmZvLnJlZ2lzdGVyUHJlc2Vy
dmF0aW9uTW9kZSgpKSksCisgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLnNwZWNpYWxpemF0
aW9uS2luZCgpKSksCiAgICAgICAgIEdQUkluZm86OnJlZ1Q0KTsKICAgICBzbG93Q2FzZS5hcHBl
bmQoaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpyZWdUNCkp
OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5oCShyZXZpc2lvbiAxODk5NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5r
R2VuZXJhdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIFRo
dW5rR2VuZXJhdG9yc19oCiAKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCi0j
aW5jbHVkZSAiUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5l
cmF0b3IuaCIKIAogI2lmIEVOQUJMRShKSVQpCkBAIC0zOCw3ICszNyw3IEBAIGNsYXNzIENDYWxs
SGVscGVyczsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93RXhjZXB0aW9uRnJvbUNhbGxT
bG93UGF0aEdlbmVyYXRvcihWTSopOwogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua0NhbGxU
aHVuayhWTSosIENhbGxMaW5rSW5mbyYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIFJlZ2lzdGVy
UHJlc2VydmF0aW9uTW9kZSk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua0NhbGxUaHVuayhW
TSosIENhbGxMaW5rSW5mbyYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGxpbmtDYWxsVGh1bmtHZW5lcmF0b3IoVk0qKTsKIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IoVk0qKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lv
biAxODk5NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTcsOSArMzU3LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0
dXJuVHlwZSBlbnRyeU9TUihFeGVjUwogICAgIGlmIChraW5kID09IFByb2xvZ3VlKQogICAgICAg
ICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+aml0Q29kZSgpLT5leGVjdXRhYmxlQWRkcmVz
cygpLCAwKTsKICAgICBBU1NFUlQoa2luZCA9PSBBcml0eUNoZWNrKTsKLSAgICBMTElOVF9SRVRV
Uk5fVFdPKGNvZGVCbG9jay0+aml0Q29kZSgpLT5hZGRyZXNzRm9yQ2FsbCgKLSAgICAgICAgKmNv
ZGVCbG9jay0+dm0oKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgTXVzdENoZWNrQXJp
dHksCi0gICAgICAgIFJlZ2lzdGVyUHJlc2VydmF0aW9uTm90UmVxdWlyZWQpLmV4ZWN1dGFibGVB
ZGRyZXNzKCksIDApOworICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5qaXRDb2RlKCkt
PmFkZHJlc3NGb3JDYWxsKE11c3RDaGVja0FyaXR5KS5leGVjdXRhYmxlQWRkcmVzcygpLCAwKTsK
IH0KICNlbHNlIC8vIEVOQUJMRShKSVQpCiBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGVudHJ5
T1NSKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Y29uc3QgY2hhciosIEVudHJ5S2luZCkKQEAgLTExNDIsNyArMTE0MCw3IEBAIGlubGluZSBTbG93
UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICNlbmRpZgogCiAgICAgaWYgKGV4ZWN1dGFi
bGUtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKLSAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmVu
dHJ5cG9pbnRGb3Iodm0sIGtpbmQsIE11c3RDaGVja0FyaXR5LCBSZWdpc3RlclByZXNlcnZhdGlv
bk5vdFJlcXVpcmVkKTsKKyAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRG
b3Ioa2luZCwgTXVzdENoZWNrQXJpdHkpOwogICAgIH0gZWxzZSBpZiAoIWlzV2ViQXNzZW1ibHlF
eGVjdXRhYmxlKSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRh
YmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAKQEAg
LTExNTksNyArMTE1Nyw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4
ZWMKICAgICAgICAgICAgIGFyaXR5ID0gTXVzdENoZWNrQXJpdHk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGFyaXR5ID0gQXJpdHlDaGVja05vdFJlcXVpcmVkOwotICAgICAgICBjb2RlUHRy
ID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKHZtLCBraW5kLCBhcml0eSwgUmVn
aXN0ZXJQcmVzZXJ2YXRpb25Ob3RSZXF1aXJlZCk7CisgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlv
bkV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgYXJpdHkpOwogICAgIH0gZWxzZSB7CiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICBXZWJBc3NlbWJseUV4ZWN1dGFibGUqIHdl
YkFzc2VtYmx5RXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PFdlYkFzc2VtYmx5RXhlY3V0YWJsZSo+
KGV4ZWN1dGFibGUpOwpAQCAtMTE3MSw3ICsxMTY5LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJu
VHlwZSBzZXRVcENhbGwoRXhlYwogICAgICAgICAgICAgYXJpdHkgPSBNdXN0Q2hlY2tBcml0eTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7
Ci0gICAgICAgIGNvZGVQdHIgPSB3ZWJBc3NlbWJseUV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3Io
dm0sIGtpbmQsIGFyaXR5LCBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkKTsKKyAgICAg
ICAgY29kZVB0ciA9IHdlYkFzc2VtYmx5RXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBh
cml0eSk7CiAjZW5kaWYKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxODk5NDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3
LDYgQEAKICNpbmNsdWRlICJJbmZlcnJlZFZhbHVlLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgog
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCi0jaW5jbHVkZSAiUmVnaXN0ZXJQcmVzZXJ2YXRp
b25Nb2RlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiU291cmNlQ29k
ZS5oIgogI2luY2x1ZGUgIlR5cGVTZXQuaCIKQEAgLTE2Myw4ICsxNjIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCk7CiAgICAgfQogICAg
IAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBlbnRyeXBvaW50Rm9yKAotICAgICAgICBWTSYg
dm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgQXJpdHlDaGVja01vZGUgYXJpdHksIFJl
Z2lzdGVyUHJlc2VydmF0aW9uTW9kZSByZWdpc3RlcnMpCisgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIGVudHJ5cG9pbnRGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBBcml0eUNoZWNr
TW9kZSBhcml0eSkKICAgICB7CiAgICAgICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgYSBjYWNoZWQg
cmVzdWx0LiBXZSBvbmx5IGhhdmUgaXQgZm9yIGFyaXR5IGNoZWNrIGJlY2F1c2Ugd2UgdXNlIHRo
ZQogICAgICAgICAvLyBuby1hcml0eSBlbnRyeXBvaW50IGluIG5vbi12aXJ0dWFsIGNhbGxzLCB3
aGljaCB3aWxsICJjYWNoZSIgdGhpcyB2YWx1ZSBkaXJlY3RseSBpbgpAQCAtMTcyLDU1ICsxNzAs
MjUgQEAgcHVibGljOgogICAgICAgICBpZiAoYXJpdHkgPT0gTXVzdENoZWNrQXJpdHkpIHsKICAg
ICAgICAgICAgIHN3aXRjaCAoa2luZCkgewogICAgICAgICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoK
LSAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlZ2lzdGVycykgewotICAgICAgICAgICAgICAgIGNh
c2UgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Ob3RSZXF1aXJlZDoKLSAgICAgICAgICAgICAgICAgICAg
aWYgKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQgPSBtX2ppdENvZGVGb3JDYWxsV2l0aEFy
aXR5Q2hlY2spCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIE11c3RQcmVzZXJ2ZVJl
Z2lzdGVyczoKLSAgICAgICAgICAgICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBy
ZXN1bHQgPSBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2tBbmRQcmVzZXJ2ZVJlZ3MpCi0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciByZXN1bHQgPSBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2spCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6Ci0gICAgICAgICAgICAgICAgc3dp
dGNoIChyZWdpc3RlcnMpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFJlZ2lzdGVyUHJlc2VydmF0
aW9uTm90UmVxdWlyZWQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgcmVzdWx0ID0gbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2spCi0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIE11c3RQcmVzZXJ2ZVJlZ2lzdGVyczoKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQgPSBtX2ppdENv
ZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVja0FuZFByZXNlcnZlUmVncykKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIHJlc3VsdCA9IG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1
bHQgPQotICAgICAgICAgICAgZ2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS0+YWRkcmVzc0ZvckNh
bGwodm0sIHRoaXMsIGFyaXR5LCByZWdpc3RlcnMpOworICAgICAgICAgICAgZ2VuZXJhdGVkSklU
Q29kZUZvcihraW5kKS0+YWRkcmVzc0ZvckNhbGwoYXJpdHkpOwogICAgICAgICBpZiAoYXJpdHkg
PT0gTXVzdENoZWNrQXJpdHkpIHsKICAgICAgICAgICAgIC8vIENhY2hlIHRoZSByZXN1bHQ7IHRo
aXMgaXMgbmVjZXNzYXJ5IGZvciB0aGUgSklUJ3MgdmlydHVhbCBjYWxsIG9wdGltaXphdGlvbnMu
CiAgICAgICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICAgICAgICAgIGNhc2UgQ29kZUZvckNh
bGw6Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChyZWdpc3RlcnMpIHsKLSAgICAgICAgICAgICAg
ICBjYXNlIFJlZ2lzdGVyUHJlc2VydmF0aW9uTm90UmVxdWlyZWQ6Ci0gICAgICAgICAgICAgICAg
ICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjayA9IHJlc3VsdDsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBNdXN0UHJlc2VydmVSZWdpc3Rl
cnM6Ci0gICAgICAgICAgICAgICAgICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVja0Fu
ZFByZXNlcnZlUmVncyA9IHJlc3VsdDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlD
aGVjayA9IHJlc3VsdDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
Q29kZUZvckNvbnN0cnVjdDoKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlZ2lzdGVycykgewot
ICAgICAgICAgICAgICAgIGNhc2UgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Ob3RSZXF1aXJlZDoKLSAg
ICAgICAgICAgICAgICAgICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2sgPSBy
ZXN1bHQ7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
TXVzdFByZXNlcnZlUmVnaXN0ZXJzOgotICAgICAgICAgICAgICAgICAgICBtX2ppdENvZGVGb3JD
b25zdHJ1Y3RXaXRoQXJpdHlDaGVja0FuZFByZXNlcnZlUmVncyA9IHJlc3VsdDsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1f
aml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrID0gcmVzdWx0OwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMjgsMjMgKzE5NiwxMyBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkpJVENvZGVX
aXRoQXJpdHlDaGVja0ZvcigKLSAgICAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBS
ZWdpc3RlclByZXNlcnZhdGlvbk1vZGUgcmVnaXN0ZXJzKQorICAgICAgICBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQpCiAgICAgewogICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICAgICAg
Y2FzZSBDb2RlRm9yQ2FsbDoKLSAgICAgICAgICAgIHN3aXRjaCAocmVnaXN0ZXJzKSB7Ci0gICAg
ICAgICAgICBjYXNlIFJlZ2lzdGVyUHJlc2VydmF0aW9uTm90UmVxdWlyZWQ6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFeGVjdXRhYmxlQmFzZSwgbV9qaXRDb2RlRm9y
Q2FsbFdpdGhBcml0eUNoZWNrKTsKLSAgICAgICAgICAgIGNhc2UgTXVzdFByZXNlcnZlUmVnaXN0
ZXJzOgotICAgICAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRXhlY3V0YWJsZUJh
c2UsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVja0FuZFByZXNlcnZlUmVncyk7Ci0gICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFibGVC
YXNlLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2spOwogICAgICAgICBjYXNlIENvZGVG
b3JDb25zdHJ1Y3Q6Ci0gICAgICAgICAgICBzd2l0Y2ggKHJlZ2lzdGVycykgewotICAgICAgICAg
ICAgY2FzZSBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkOgotICAgICAgICAgICAgICAg
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRXhlY3V0YWJsZUJhc2UsIG1faml0Q29kZUZvckNvbnN0
cnVjdFdpdGhBcml0eUNoZWNrKTsKLSAgICAgICAgICAgIGNhc2UgTXVzdFByZXNlcnZlUmVnaXN0
ZXJzOgotICAgICAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRXhlY3V0YWJsZUJh
c2UsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrQW5kUHJlc2VydmVSZWdzKTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRXhlY3V0
YWJsZUJhc2UsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrKTsKICAgICAgICAg
fQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4g
MDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ2lzdGVyUHJlc2VydmF0
aW9uTW9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oCShyZXZpc2lvbiAxODk5NDEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdpc3RlclByZXNlcnZhdGlvbk1vZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpZm5kZWYgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlX2gKLSNkZWZpbmUg
UmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlX2gKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWVudW0gUmVn
aXN0ZXJQcmVzZXJ2YXRpb25Nb2RlIHsKLSAgICBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVp
cmVkLAotICAgIE11c3RQcmVzZXJ2ZVJlZ2lzdGVycwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlND
Ci0KLSNlbmRpZiAvLyBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGVfaAotCg==
</data>
<flag name="review"
          id="286680"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261504</attachid>
            <date>2015-09-18 09:03:08 -0700</date>
            <delta_ts>2015-09-18 09:08:57 -0700</delta_ts>
            <desc>Patch with deletion of more related code</desc>
            <filename>149335-3.patch</filename>
            <type>text/plain</type>
            <size>53428</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg5OTY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBA
CisyMDE1LTA5LTE4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFJlbW92ZSByZWdpc3RlciBwcmVzZXJ2YXRpb24gYW5kIHJlc3RvcmF0aW9uIHN0dWIgY29k
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5MzM1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVsZXRl
IHRoZSByZWdpc3RlciBwcmVzZXJ2YXRpb24gYW5kIHJlc3RvcmF0aW9uIHRodW5rcyBhbmQgcmVs
YXRlZCBwbHVtYmluZy4KKworICAgICAgICBNdWNoIG9mIHRoaXMgY2hhbmdlIGlzIHJlbW92aW5n
IHRoZSB1bm5lZWRlZCBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUgcGFyYW1ldGVyCisgICAgICAg
IGZyb20gdmFyaW91cyBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZp
bHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uaDoKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtJbmZvOjppc1ZhcmFyZ3NDYWxsVHlwZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5m
bzo6Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjppc1ZhcmFyZ3Mp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OmlzTGlua2VkKToKKyAgICAgICAgKEpTQzo6
Q2FsbExpbmtJbmZvOjpzZXRVcENhbGxGcm9tRlRMKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJ
bmZvOjpyZWdpc3RlclByZXNlcnZhdGlvbk1vZGUpOiBEZWxldGVkLgorICAgICAgICAqIGZ0bC9G
VExKSVRDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpKSVRDb2RlOjppbml0aWFsaXplQWRk
cmVzc0ZvckNhbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkpJVENvZGU6OmFkZHJlc3NGb3JDYWxs
KToKKyAgICAgICAgKiBmdGwvRlRMSklUQ29kZS5oOgorICAgICAgICAqIGZ0bC9GVExPU1JFbnRy
eS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6cHJlcGFyZU9TUkVudHJ5KToKKyAgICAgICAgKiBm
dGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1
Yik6CisgICAgICAgICogaml0L0pJVENvZGUuY3BwOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjpl
eGVjdXRlKToKKyAgICAgICAgKEpTQzo6RGlyZWN0SklUQ29kZTo6aW5pdGlhbGl6ZUNvZGVSZWYp
OgorICAgICAgICAoSlNDOjpEaXJlY3RKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbCk6CisgICAgICAg
IChKU0M6Ok5hdGl2ZUpJVENvZGU6OmluaXRpYWxpemVDb2RlUmVmKToKKyAgICAgICAgKEpTQzo6
TmF0aXZlSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwpOgorICAgICAgICAoSlNDOjpEaXJlY3RKSVRD
b2RlOjplbnN1cmVXcmFwcGVycyk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVENvZGUuaDoK
KyAgICAgICAgKEpTQzo6SklUQ29kZTo6aml0VHlwZUZvcik6CisgICAgICAgIChKU0M6OkpJVENv
ZGU6OmV4ZWN1dGFibGVBZGRyZXNzKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgICogaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVy
YXRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpT
Qzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5j
cHA6CisgICAgICAgIChKU0M6OnZpcnR1YWxUaHVua0Zvcik6CisgICAgICAgICogaml0L1RodW5r
R2VuZXJhdG9ycy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmVudHJ5T1NSKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFVwQ2Fs
bCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RXhl
Y3V0YWJsZUJhc2U6OmNsZWFyQ29kZSk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6
Omluc3RhbGxDb2RlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlFeGVjdXRhYmxlOjpwcmVw
YXJlRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmdlbmVyYXRlZEpJVENvZGVGb3IpOgorICAgICAgICAo
SlNDOjpFeGVjdXRhYmxlQmFzZTo6ZW50cnlwb2ludEZvcik6CisgICAgICAgIChKU0M6OkV4ZWN1
dGFibGVCYXNlOjpvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVja0Zvcik6CisgICAgICAgICog
cnVudGltZS9SZWdpc3RlclByZXNlcnZhdGlvbk1vZGUuaDogUmVtb3ZlZC4KKwogMjAxNS0wOS0x
NyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFJlbW92ZSB1bnVzZWQgY2FuQ2xlYXJCcm93c2VyQ29va2llcyAvIGNhbkNsZWFy
QnJvd3NlckNhY2hlIHByb3RvY29sIG1ldGhvZHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDE4OTk0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzg4LDcgKzM4OCw2IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaml0L1JlZy5jcHAKICAgICBqaXQvUmVnaXN0ZXJBdE9m
ZnNldC5jcHAKICAgICBqaXQvUmVnaXN0ZXJBdE9mZnNldExpc3QuY3BwCi0gICAgaml0L1JlZ2lz
dGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAKICAgICBqaXQvUmVnaXN0ZXJTZXQu
Y3BwCiAgICAgaml0L1JlcGF0Y2guY3BwCiAgICAgaml0L1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
ci5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNp
b24gMTg5OTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjUwLDcgKzY1MCw2
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVnLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlckF0T2Zmc2V0LmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlckF0T2Zmc2V0TGlzdC5jcHAiIC8+Ci0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2Vu
ZXJhdG9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlclNl
dC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVwYXRjaC5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
LmNwcCIgLz4KQEAgLTE0NTMsNyArMTQ1Miw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxqaXRcUmVnaXN0ZXJBdE9mZnNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aml0XFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxqaXRcUmVnaXN0ZXJNYXAuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxS
ZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlclNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5caml0XFJlcGF0Y2guaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCIgLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE4OTk0MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMTUwMCw5ICsxNTAwLDYgQEAKICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRm
b3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xJbnNwZWN0b3JQ
cm90b2NvbE9iamVjdHMuY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZCBTb3VyY2VzPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVn
aXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcCI+Ci0gICAgICA8RmlsdGVyPmpp
dDwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ0J1aWx0aW5zLmNwcCI+CiAgICAgICA8RmlsdGVyPkRl
cml2ZWQgU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNDA0Niw5ICs0MDQz
LDYgQEAKICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRGF0YVZp
ZXdQcm90b3R5cGUubHV0LmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcUmVn
aXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmgiPgotICAgICAgPEZpbHRlcj5qaXQ8
L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0
bFxGVExBYmJyZXZpYXRlZFR5cGVzLmgiPgogICAgICAgPEZpbHRlcj5mdGw8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxODk5NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzc4LDkgKzM3OCw2IEBACiAJ
CTBGNkIxQ0I1MTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExKU0NhbGwuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQjMxODVGQzlFOTAwODQ1RDk3
IC8qIEZUTEpTQ2FsbC5jcHAgKi87IH07CiAJCTBGNkIxQ0I2MTg1RkM5RTkwMDg0NUQ5NyAvKiBG
VExKU0NhbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNkIxQ0I0MTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExKU0NhbGwuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVE
OTcgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNkIxQ0I3MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGNkIx
Q0JBMTg2MTI0NEMwMDg0NUQ5NyAvKiBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0I4MTg2MTI0NEMw
MDg0NUQ5NyAvKiBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjZCMUNCRDE4NjEyNDZBMDA4NDVEOTcg
LyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNkIxQ0JCMTg2MTI0NkEwMDg0NUQ5
NyAvKiBSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwICovOyB9OwotCQkw
RjZCMUNCRTE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjZCMUNCQzE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2Vu
ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEY2QjFDQzUxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QjFDQzExODYyQzQ3ODAw
ODQ1RDk3IC8qIEZUTFVud2luZEluZm8uY3BwICovOyB9OwogCQkwRjZCMUNDNjE4NjJDNDc4MDA4
NDVEOTcgLyogRlRMVW53aW5kSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY2QjFDQzIxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjZD
NzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QzczNEUxQUM5Rjk5
RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCAqLzsgfTsKQEAgLTIyMTEs
OSArMjIwOCw2IEBACiAJCTBGNkIxQ0IzMTg1RkM5RTkwMDg0NUQ5NyAvKiBGVExKU0NhbGwuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMSlNDYWxsLmNwcDsgcGF0
aCA9IGZ0bC9GVExKU0NhbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjZC
MUNCNDE4NUZDOUU5MDA4NDVEOTcgLyogRlRMSlNDYWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEZUTEpTQ2FsbC5oOyBwYXRoID0gZnRsL0ZUTEpTQ2FsbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjZCMUNCNzE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlD
aGVja01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJpdHlDaGVja01v
ZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY2QjFDQjgxODYxMjQ0QzAwODQ1
RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMEY2QjFDQkIxODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0
aW9uV3JhcHBlckdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkwRjZCMUNCQzE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQ
cmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjZCMUNDMTE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53aW5k
SW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExVbndpbmRJ
bmZvLmNwcDsgcGF0aCA9IGZ0bC9GVExVbndpbmRJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY2QjFDQzIxODYyQzQ3ODAwODQ1RDk3IC8qIEZUTFVud2luZEluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMVW53aW5kSW5mby5oOyBwYXRoID0g
ZnRsL0ZUTFVud2luZEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2Qzcz
NEUxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNjEsOCArNDE1NSw2IEBACiAJCQkJ
NjU0MEM3OUMxQjgyRDk5RDAwMEY2Qjc5IC8qIFJlZ2lzdGVyQXRPZmZzZXRMaXN0LmNwcCAqLywK
IAkJCQk2NTQwQzc5RDFCODJEOTlEMDAwRjZCNzkgLyogUmVnaXN0ZXJBdE9mZnNldExpc3QuaCAq
LywKIAkJCQk2MjNBMzdFQjFCODdBN0JEMDA3NTQyMDkgLyogUmVnaXN0ZXJNYXAuaCAqLywKLQkJ
CQkwRjZCMUNCQjE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVy
R2VuZXJhdG9yLmNwcCAqLywKLQkJCQkwRjZCMUNCQzE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0
ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmggKi8sCiAJCQkJMEZDMzE0MTQxODE0NkQ3
MDAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmNwcCAqLywKIAkJCQkwRkMzMTQxMDE4MTQ1NTkxMDAw
MzMyMzIgLyogUmVnaXN0ZXJTZXQuaCAqLywKIAkJCQkwRjI0RTU0OTE3RUUyNzQ5MDBBQkIyMTcg
LyogUmVwYXRjaC5jcHAgKi8sCkBAIC00OTUzLDcgKzQ5NDUsNiBAQAogCQkJCUY2OTJBODdDMDI1
NTU5N0QwMUZGNjBGNyAvKiBSZWdFeHBPYmplY3QuaCAqLywKIAkJCQlCQ0QyMDJCRjBFMTcwNkE3
MDAyQzdFODIgLyogUmVnRXhwUHJvdG90eXBlLmNwcCAqLywKIAkJCQlCQ0QyMDJDMDBFMTcwNkE3
MDAyQzdFODIgLyogUmVnRXhwUHJvdG90eXBlLmggKi8sCi0JCQkJMEY2QjFDQjgxODYxMjQ0QzAw
ODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oICovLAogCQkJCTBGQjdGMzkxMTVF
RDhFMzgwMEYxNjdCMiAvKiBSZWplY3QuaCAqLywKIAkJCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMw
NkEgLyogUnVudGltZUZsYWdzLmggKi8sCiAJCQkJNTI3NzczREQxQUFGODNBQzAwQkRFN0U4IC8q
IFJ1bnRpbWVUeXBlLmNwcCAqLywKQEAgLTY3NTIsOCArNjc0Myw2IEBACiAJCQkJQkNEMjAyQzQw
RTE3MDZBNzAwMkM3RTgyIC8qIFJlZ0V4cFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEM0NUQwRTE2RjVDRDAwQjM0NDYwIC8qIFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5NjlBMDcyQjBFRDFDRTY5MDBGMUY2ODEgLyogUmVnaXN0ZXJJRC5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMEY2QjFDQkExODYxMjQ0QzAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9k
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEY2QjFDQkUxODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lz
dGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZD
MzE0MTIxODE0NTU5MTAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjUwQUYzQzE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTdEMjNFRTE4OTFCNTU0MDAzMUM3RkEgLyogUmVndWxhckV4
cHJlc3Npb24uaCBpbiBIZWFkZXJzICovLApAQCAtNzkzMyw3ICs3OTIyLDYgQEAKIAkJCQk4NjQy
QzUxMjE1MUMwODNEMDA0NkQ0RUYgLyogUmVnRXhwTWF0Y2hlc0FycmF5LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MjgwODQzMTA3RUMwOTMwMDEzRTdCMiAvKiBSZWdFeHBPYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NDQxMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cFByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRjZCMUNCRDE4NjEyNDZBMDA4NDVEOTcgLyog
UmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGQzMxNDE1MTgxNDZENzAwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNTdEMjNFRDE4OTFCNTU0MDAzMUM3RkEgLyogUmVndWxhckV4cHJlc3Npb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMzRjUwNzgxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50
ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAxODk5
NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHdv
cmtpbmcgY29weSkKQEAgLTczLDggKzczLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIENhbGxM
aW5rSW5mbygpCi0gICAgICAgIDogbV9yZWdpc3RlclByZXNlcnZhdGlvbk1vZGUoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFJlZ2lzdGVyUHJlc2VydmF0aW9uTm90UmVxdWlyZWQpKQotICAgICAgICAs
IG1faGFzU2VlblNob3VsZFJlcGF0Y2goZmFsc2UpCisgICAgICAgIDogbV9oYXNTZWVuU2hvdWxk
UmVwYXRjaChmYWxzZSkKICAgICAgICAgLCBtX2hhc1NlZW5DbG9zdXJlKGZhbHNlKQogICAgICAg
ICAsIG1fY2xlYXJlZEJ5R0MoZmFsc2UpCiAgICAgICAgICwgbV9hbGxvd1N0dWJzKHRydWUpCkBA
IC0xMzUsMTEgKzEzNCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGlzVmFyYXJnc0NhbGxU
eXBlKHN0YXRpY19jYXN0PENhbGxUeXBlPihtX2NhbGxUeXBlKSk7CiAgICAgfQogCi0gICAgUmVn
aXN0ZXJQcmVzZXJ2YXRpb25Nb2RlIHJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSgpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2Rl
PihtX3JlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSk7Ci0gICAgfQotCiAgICAgYm9vbCBpc0xpbmtl
ZCgpIHsgcmV0dXJuIG1fc3R1YiB8fCBtX2NhbGxlZTsgfQogICAgIHZvaWQgdW5saW5rKFZNJik7
CiAKQEAgLTE2OSw3ICsxNjMsNiBAQCBwdWJsaWM6CiAgICAgICAgIENvZGVMb2NhdGlvbk5lYXJD
YWxsIGNhbGxSZXR1cm5Mb2NhdGlvbiwgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGhvdFBhdGhC
ZWdpbiwKICAgICAgICAgQ29kZUxvY2F0aW9uTmVhckNhbGwgaG90UGF0aE90aGVyLCB1bnNpZ25l
ZCBjYWxsZWVHUFIpCiAgICAgewotICAgICAgICBtX3JlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkKTsK
ICAgICAgICAgbV9jYWxsVHlwZSA9IGNhbGxUeXBlOwogICAgICAgICBtX2NvZGVPcmlnaW4gPSBj
b2RlT3JpZ2luOwogICAgICAgICBtX2NhbGxSZXR1cm5Mb2NhdGlvbiA9IGNhbGxSZXR1cm5Mb2Nh
dGlvbjsKQEAgLTM0Niw3ICszMzksNiBAQCBwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxKU0Z1
bmN0aW9uPiBtX2xhc3RTZWVuQ2FsbGVlOwogICAgIFJlZlB0cjxQb2x5bW9ycGhpY0NhbGxTdHVi
Um91dGluZT4gbV9zdHViOwogICAgIFJlZlB0cjxKSVRTdHViUm91dGluZT4gbV9zbG93U3R1YjsK
LSAgICB1bnNpZ25lZCBtX3JlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSA6IDE7IC8vIFJlYWwgdHlw
ZSBpcyBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUKICAgICBib29sIG1faGFzU2VlblNob3VsZFJl
cGF0Y2ggOiAxOwogICAgIGJvb2wgbV9oYXNTZWVuQ2xvc3VyZSA6IDE7CiAgICAgYm9vbCBtX2Ns
ZWFyZWRCeUdDIDogMTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29k
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2Rl
LmNwcAkocmV2aXNpb24gMTg5OTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExK
SVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIEpJVENvZGU6
OmluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbChDCiAgICAgbV9hZGRyZXNzRm9yQ2FsbCA9IGFkZHJl
c3M7CiB9CiAKLUpJVENvZGU6OkNvZGVQdHIgSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwoVk0mLCBF
eGVjdXRhYmxlQmFzZSosIEFyaXR5Q2hlY2tNb2RlIGFyaXR5Q2hlY2ssIFJlZ2lzdGVyUHJlc2Vy
dmF0aW9uTW9kZSkKK0pJVENvZGU6OkNvZGVQdHIgSklUQ29kZTo6YWRkcmVzc0ZvckNhbGwoQXJp
dHlDaGVja01vZGUgYXJpdHlDaGVjaykKIHsKICAgICBzd2l0Y2ggKGFyaXR5Q2hlY2spIHsKICAg
ICBjYXNlIEFyaXR5Q2hlY2tOb3RSZXF1aXJlZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMSklUQ29kZS5oCShyZXZpc2lvbiAxODk5NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEpJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBwdWJs
aWM6CiAgICAgSklUQ29kZSgpOwogICAgIH5KSVRDb2RlKCk7CiAgICAgCi0gICAgQ29kZVB0ciBh
ZGRyZXNzRm9yQ2FsbChWTSYsIEV4ZWN1dGFibGVCYXNlKiwgQXJpdHlDaGVja01vZGUsIFJlZ2lz
dGVyUHJlc2VydmF0aW9uTW9kZSkgb3ZlcnJpZGU7CisgICAgQ29kZVB0ciBhZGRyZXNzRm9yQ2Fs
bChBcml0eUNoZWNrTW9kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCogZXhlY3V0YWJsZUFkZHJlc3NB
dE9mZnNldChzaXplX3Qgb2Zmc2V0KSBvdmVycmlkZTsKICAgICB2b2lkKiBkYXRhQWRkcmVzc0F0
T2Zmc2V0KHNpemVfdCBvZmZzZXQpIG92ZXJyaWRlOwogICAgIHVuc2lnbmVkIG9mZnNldE9mKHZv
aWQqIHBvaW50ZXJJbnRvQ29kZSkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE9TUkVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE9TUkVudHJ5LmNwcAkocmV2aXNpb24gMTg5OTQxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw5ICsx
MDAsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAgCiAgICAgZXhlYy0+c2V0Q29kZUJs
b2NrKGVudHJ5Q29kZUJsb2NrKTsKICAgICAKLSAgICB2b2lkKiByZXN1bHQgPSBlbnRyeUNvZGUt
PmFkZHJlc3NGb3JDYWxsKAotICAgICAgICB2bSwgZXhlY3V0YWJsZSwgQXJpdHlDaGVja05vdFJl
cXVpcmVkLAotICAgICAgICBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkKS5leGVjdXRh
YmxlQWRkcmVzcygpOworICAgIHZvaWQqIHJlc3VsdCA9IGVudHJ5Q29kZS0+YWRkcmVzc0ZvckNh
bGwoQXJpdHlDaGVja05vdFJlcXVpcmVkKS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgIGlmIChP
cHRpb25zOjp2ZXJib3NlT1NSKCkpCiAgICAgICAgIGRhdGFMb2coIiAgICBFbnRyeSB3aWxsIHN1
Y2NlZWQsIGdvaW5nIHRvIGFkZHJlc3MiLCBSYXdQb2ludGVyKHJlc3VsdCksICJcbiIpOwogICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBp
bGVyLmNwcAkocmV2aXNpb24gMTg5OTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBACiAj
aW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJPcGVy
YW5kc0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiUmVnaXN0
ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgRlRMIHsKIApAQCAtMzc5LDkgKzM3OCw2IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHVi
KAogICAgIC8vIG9sZCBmcmFtZSwgYW5kIGZpbmFsbHkgd2Ugc2F2ZSB0aGUgdmFyaW91cyBjYWxs
ZWUtc2F2ZSByZWdpc3RlcnMgaW50byB3aGVyZSB0aGUKICAgICAvLyByZXN0b3JhdGlvbiB0aHVu
ayB3b3VsZCByZXN0b3JlIHRoZW0gZnJvbS4KICAgICAKLSAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0g
cmVnaXN0ZXJQcmVzZXJ2YXRpb25PZmZzZXQoKTsKLSAgICBSZWdpc3RlclNldCB0b1NhdmUgPSBy
ZWdpc3RlcnNUb1ByZXNlcnZlKCk7Ci0gICAgCiAgICAgLy8gQmVmb3JlIHdlIHN0YXJ0IG1lc3Np
bmcgd2l0aCB0aGUgZnJhbWUsIHdlIG5lZWQgdG8gc2V0IGFzaWRlIGFueSByZWdpc3RlcnMgdGhh
dCB0aGUKICAgICAvLyBGVEwgY29kZSB3YXMgcHJlc2VydmluZy4KICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBjb2RlQmxvY2stPmNhbGxlZVNhdmVSZWdpc3RlcnMoKS0+c2l6ZSgpOyBpLS07KSB7CkBA
IC0zOTcsMjYgKzM5MywxNiBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAvLyBMZXQn
cyBzYXkgdGhhdCB0aGUgRlRMIGZ1bmN0aW9uIGhhZCBmYWlsZWQgaXRzIGFyaXR5IGNoZWNrLiBJ
biB0aGF0IGNhc2UsIHRoZSBzdGFjayB3aWxsCiAgICAgLy8gY29udGFpbiBzb21lIGV4dHJhIHN0
dWZmLgogICAgIC8vCi0gICAgLy8gRmlyc3Qgd2UgY29tcHV0ZSB0aGUgcGFkZGVkIHN0YWNrIHNw
YWNlOgorICAgIC8vIFdlIGNvbXB1dGUgdGhlIHBhZGRlZCBzdGFjayBzcGFjZToKICAgICAvLwog
ICAgIC8vICAgICBwYWRkZWRTdGFja1NwYWNlID0gcm91bmRVcChjb2RlQmxvY2stPm51bVBhcmFt
ZXRlcnMgLSByZWdUMiArIDEpCiAgICAgLy8KLSAgICAvLyBUaGUgc3RhY2sgd2lsbCBoYXZlIHJl
Z1QyICsgQ2FsbEZyYW1lSGVhZGVyU2l6ZSBzdHVmZiwgYnV0IGFib3ZlIGl0IHRoZXJlIHdpbGwg
YmUKLSAgICAvLyBwYWRkZWRTdGFja1NwYWNlIGd1bmsgdXNlZCBieSB0aGUgYXJpdHkgY2hlY2sg
ZmFpbCByZXN0b3JhdGlvbiB0aHVuay4gV2hlbiB0aGF0IGhhcHBlbnMKLSAgICAvLyB3ZSB3YW50
IHRvIG1ha2UgdGhlIHN0YWNrIGxvb2sgbGlrZSB0aGlzLCBmcm9tIGhpZ2hlciBhZGRyZXNzZXMg
ZG93bjoKKyAgICAvLyBUaGUgc3RhY2sgd2lsbCBoYXZlIHJlZ1QyICsgQ2FsbEZyYW1lSGVhZGVy
U2l6ZSBzdHVmZi4KKyAgICAvLyBXZSB3YW50IHRvIG1ha2UgdGhlIHN0YWNrIGxvb2sgbGlrZSB0
aGlzLCBmcm9tIGhpZ2hlciBhZGRyZXNzZXMgZG93bjoKICAgICAvLwotICAgIC8vICAgICAtIHJl
Z2lzdGVyIHByZXNlcnZhdGlvbiByZXR1cm4gUEMKLSAgICAvLyAgICAgLSBwcmVzZXJ2ZWQgcmVn
aXN0ZXJzCi0gICAgLy8gICAgIC0gYXJpdHkgY2hlY2sgZmFpbCByZXR1cm4gUEMKICAgICAvLyAg
ICAgLSBhcmd1bWVudCBwYWRkaW5nCiAgICAgLy8gICAgIC0gYWN0dWFsIGFyZ3VtZW50cwogICAg
IC8vICAgICAtIGNhbGwgZnJhbWUgaGVhZGVyCi0gICAgLy8KLSAgICAvLyBTbyB0aGF0IHRoZSBh
Y3R1YWwgY2FsbCBmcmFtZSBoZWFkZXIgYXBwZWFycyB0byByZXR1cm4gdG8gdGhlIGFyaXR5IGNo
ZWNrIGZhaWwgcmV0dXJuCi0gICAgLy8gUEMsIGFuZCB0aGF0IHRoZW4gcmV0dXJucyB0byB0aGUg
cmVnaXN0ZXIgcHJlc2VydmF0aW9uIHRodW5rLiBUaGUgYXJpdHkgY2hlY2sgdGh1bmsgdGhhdAot
ICAgIC8vIHdlIHJldHVybiB0byB3aWxsIGhhdmUgdGhlIHBhZGRpbmcgc2l6ZSBlbmNvZGVkIGlu
dG8gaXQuIEl0IHdpbGwgdGhlbiBrbm93IHRvIHJldHVybgotICAgIC8vIGludG8gdGhlIHJlZ2lz
dGVyIHByZXNlcnZhdGlvbiB0aHVuaywgd2hpY2ggdXNlcyB0aGUgYXJndW1lbnQgY291bnQgdG8g
ZmlndXJlIG91dCB3aGVyZQotICAgIC8vIHJlZ2lzdGVycyBhcmUgcHJlc2VydmVkLgogCiAgICAg
Ly8gVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggRnVuY3Rpb25Db2Rl
LgogICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNv
ZGUpOwpAQCAtNDM2LDcgKzQyMiw2IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogCiAgICAg
Ly8gRmlyc3Qgc2V0IHVwIFNQIHNvIHRoYXQgb3VyIGRhdGEgZG9lc24ndCBnZXQgY2xvYmJlcmVk
IGJ5IHNpZ25hbHMuCiAgICAgdW5zaWduZWQgY29uc2VydmF0aXZlU3RhY2tEZWx0YSA9Ci0gICAg
ICAgIHJlZ2lzdGVyUHJlc2VydmF0aW9uT2Zmc2V0KCkgKwogICAgICAgICAoZXhpdC5tX3ZhbHVl
cy5udW1iZXJPZkxvY2FscygpICsgYmFzZWxpbmVDb2RlQmxvY2stPmNhbGxlZVNhdmVTcGFjZUFz
VmlydHVhbFJlZ2lzdGVycygpKSAqIHNpemVvZihSZWdpc3RlcikgKwogICAgICAgICBtYXhGcmFt
ZUV4dGVudEZvclNsb3dQYXRoQ2FsbDsKICAgICBjb25zZXJ2YXRpdmVTdGFja0RlbHRhID0gV1RG
Ojpyb3VuZFVwVG9NdWx0aXBsZU9mKApAQCAtNDQ1LDI1ICs0MzAsMTIgQEAgc3RhdGljIHZvaWQg
Y29tcGlsZVN0dWIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoLWNvbnNl
cnZhdGl2ZVN0YWNrRGVsdGEpLAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVy
UmVnaXN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgaml0
LmNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7Ci0gICAgCi0gICAgaml0LnN1YlB0cigKLSAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihyZWdpc3RlclByZXNlcnZhdGlvbk9m
ZnNldCgpKSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyKTsK
LSAgICAKLSAgICAvLyBDb3B5IHRoZSBvbGQgZnJhbWUgZGF0YSBpbnRvIGl0cyBuZXcgbG9jYXRp
b24uCi0gICAgaml0LmFkZDMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSlNTdGFjazo6
Q2FsbEZyYW1lSGVhZGVyU2l6ZSksIEdQUkluZm86OnJlZ1QyKTsKLSAgICBqaXQubW92ZShNYWNy
b0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QxKTsKLSAgICBN
YWNyb0Fzc2VtYmxlcjo6TGFiZWwgbG9vcCA9IGppdC5sYWJlbCgpOwotICAgIGppdC5zdWIzMihN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgaml0
LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMSwgb2Zmc2V0KSwg
R1BSSW5mbzo6cmVnVDApOwotICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBHUFJJbmZv
OjpyZWdUMSk7Ci0gICAgaml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHNp
emVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgaml0LmJyYW5jaFRlc3QzMihN
YWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgR1BSSW5mbzo6cmVnVDIpLmxpbmtUbyhsb29wLCAmaml0
KTsKIAorICAgIFJlZ2lzdGVyU2V0IGFsbEZUTENhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6OmZ0
bENhbGxlZVNhdmVSZWdpc3RlcnMoKTsKICAgICBSZWdpc3RlckF0T2Zmc2V0TGlzdCogYmFzZWxp
bmVDYWxsZWVTYXZlcyA9IGJhc2VsaW5lQ29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7
CiAKICAgICBmb3IgKFJlZyByZWcgPSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTsg
cmVnID0gcmVnLm5leHQoKSkgewotICAgICAgICBpZiAoIXRvU2F2ZS5nZXQocmVnKSB8fCAhcmVn
LmlzR1BSKCkpCisgICAgICAgIGlmICghYWxsRlRMQ2FsbGVlU2F2ZXMuZ2V0KHJlZykgfHwgIXJl
Zy5pc0dQUigpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHVuc2lnbmVkIHVud2lu
ZEluZGV4ID0gY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPmluZGV4T2YocmVnKTsK
ICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldCogYmFzZWxpbmVSZWdpc3Rlck9mZnNldCA9IGJhc2Vs
aW5lQ2FsbGVlU2F2ZXMtPmZpbmQocmVnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDb2RlLmNwcAkocmV2aXNpb24gMTg5OTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUg
IkxMSW50VGh1bmtzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlByb3Rv
Q2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJh
dG9yLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtNzcsNyArNzYsNyBAQCBKU1ZhbHVlIEpJVENvZGU6OmV4ZWN1dGUoVk0qIHZtLCBQcm90b0Nh
CiAgICAgICAgIEFTU0VSVCghcHJvdG9DYWxsRnJhbWUtPm5lZWRBcml0eUNoZWNrKCkpOwogICAg
ICAgICBlbnRyeUFkZHJlc3MgPSBleGVjdXRhYmxlQWRkcmVzcygpOwogICAgIH0gZWxzZQotICAg
ICAgICBlbnRyeUFkZHJlc3MgPSBhZGRyZXNzRm9yQ2FsbCgqdm0sIGZ1bmN0aW9uLT5leGVjdXRh
YmxlKCksIE11c3RDaGVja0FyaXR5LCBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkKS5l
eGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICBlbnRyeUFkZHJlc3MgPSBhZGRyZXNzRm9yQ2Fs
bChNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IEpTVmFsdWU6OmRlY29kZSh2bUVudHJ5VG9KYXZhU2NyaXB0KGVudHJ5QWRkcmVzcywgdm0s
IHByb3RvQ2FsbEZyYW1lKSk7CiAgICAgcmV0dXJuIHZtLT5leGNlcHRpb24oKSA/IGpzTnVsbCgp
IDogcmVzdWx0OwogfQpAQCAtMTc5LDUwICsxNzgsMTUgQEAgdm9pZCBEaXJlY3RKSVRDb2RlOjpp
bml0aWFsaXplQ29kZVJlZihKSQogICAgIG1fd2l0aEFyaXR5Q2hlY2sgPSB3aXRoQXJpdHlDaGVj
azsKIH0KIAotRGlyZWN0SklUQ29kZTo6UmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVycyogRGly
ZWN0SklUQ29kZTo6ZW5zdXJlV3JhcHBlcnMoKQotewotICAgIGlmICghbV93cmFwcGVycykKLSAg
ICAgICAgbV93cmFwcGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaXN0ZXJQcmVzZXJ2YXRpb25X
cmFwcGVycz4oKTsKLSAgICByZXR1cm4gbV93cmFwcGVycy5nZXQoKTsKLX0KLQotSklUQ29kZTo6
Q29kZVB0ciBEaXJlY3RKSVRDb2RlOjphZGRyZXNzRm9yQ2FsbCgKLSAgICBWTSYgdm0sIEV4ZWN1
dGFibGVCYXNlKiBleGVjdXRhYmxlLCBBcml0eUNoZWNrTW9kZSBhcml0eSwKLSAgICBSZWdpc3Rl
clByZXNlcnZhdGlvbk1vZGUgcmVnaXN0ZXJzKQorSklUQ29kZTo6Q29kZVB0ciBEaXJlY3RKSVRD
b2RlOjphZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSBhcml0eSkKIHsKICAgICBzd2l0Y2gg
KGFyaXR5KSB7CiAgICAgY2FzZSBBcml0eUNoZWNrTm90UmVxdWlyZWQ6Ci0gICAgICAgIHN3aXRj
aCAocmVnaXN0ZXJzKSB7Ci0gICAgICAgIGNhc2UgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Ob3RSZXF1
aXJlZDoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmVmKTsKLSAgICAgICAgICAgIHJl
dHVybiBtX3JlZi5jb2RlKCk7Ci0gICAgICAgIGNhc2UgTXVzdFByZXNlcnZlUmVnaXN0ZXJzOiB7
Ci0jaWYgRU5BQkxFKEpJVCkKLSAgICAgICAgICAgIFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBl
cnMqIHdyYXBwZXJzID0gZW5zdXJlV3JhcHBlcnMoKTsKLSAgICAgICAgICAgIGlmICghd3JhcHBl
cnMtPndpdGhvdXRBcml0eUNoZWNrKQotICAgICAgICAgICAgICAgIHdyYXBwZXJzLT53aXRob3V0
QXJpdHlDaGVjayA9IGdlbmVyYXRlUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyKHZtLCBleGVj
dXRhYmxlLCBtX3JlZi5jb2RlKCkpOwotICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXJzLT53aXRo
b3V0QXJpdHlDaGVjay5jb2RlKCk7Ci0jZWxzZQotICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHZt
KTsKLSAgICAgICAgICAgIFVOVVNFRF9QQVJBTShleGVjdXRhYmxlKTsKLSAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKLSAgICAgICAgfSB9CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1fcmVmKTsKKyAgICAgICAgcmV0dXJuIG1fcmVmLmNvZGUoKTsKICAg
ICBjYXNlIE11c3RDaGVja0FyaXR5OgotICAgICAgICBzd2l0Y2ggKHJlZ2lzdGVycykgewotICAg
ICAgICBjYXNlIFJlZ2lzdGVyUHJlc2VydmF0aW9uTm90UmVxdWlyZWQ6Ci0gICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChtX3dpdGhBcml0eUNoZWNrKTsKLSAgICAgICAgICAgIHJldHVybiBtX3dp
dGhBcml0eUNoZWNrOwotICAgICAgICBjYXNlIE11c3RQcmVzZXJ2ZVJlZ2lzdGVyczogewotI2lm
IEVOQUJMRShKSVQpCi0gICAgICAgICAgICBSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJzKiB3
cmFwcGVycyA9IGVuc3VyZVdyYXBwZXJzKCk7Ci0gICAgICAgICAgICBpZiAoIXdyYXBwZXJzLT53
aXRoQXJpdHlDaGVjaykKLSAgICAgICAgICAgICAgICB3cmFwcGVycy0+d2l0aEFyaXR5Q2hlY2sg
PSBnZW5lcmF0ZVJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlcih2bSwgZXhlY3V0YWJsZSwgbV93
aXRoQXJpdHlDaGVjayk7Ci0gICAgICAgICAgICByZXR1cm4gd3JhcHBlcnMtPndpdGhBcml0eUNo
ZWNrLmNvZGUoKTsKLSNlbHNlCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotI2VuZGlmCi0gICAgICAgIH0gfQorICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3dpdGhB
cml0eUNoZWNrKTsKKyAgICAgICAgcmV0dXJuIG1fd2l0aEFyaXR5Q2hlY2s7CiAgICAgfQogICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIENvZGVQdHIoKTsKQEAg
LTI0OCw4ICsyMTIsNyBAQCB2b2lkIE5hdGl2ZUpJVENvZGU6OmluaXRpYWxpemVDb2RlUmVmKENv
CiAgICAgbV9yZWYgPSByZWY7CiB9CiAKLUpJVENvZGU6OkNvZGVQdHIgTmF0aXZlSklUQ29kZTo6
YWRkcmVzc0ZvckNhbGwoCi0gICAgVk0mLCBFeGVjdXRhYmxlQmFzZSosIEFyaXR5Q2hlY2tNb2Rl
LCBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUpCitKSVRDb2RlOjpDb2RlUHRyIE5hdGl2ZUpJVENv
ZGU6OmFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tNb2RlKQogewogICAgIFJFTEVBU0VfQVNTRVJU
KCEhbV9yZWYpOwogICAgIHJldHVybiBtX3JlZi5jb2RlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuaAkocmV2aXNpb24gMTg5OTQxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNs
dWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJNYWNy
b0Fzc2VtYmxlckNvZGVSZWYuaCIKLSNpbmNsdWRlICJSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE5NSw3ICsxOTQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBqaXRDb2RlLT5qaXRUeXBlKCk7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwg
Q29kZVB0ciBhZGRyZXNzRm9yQ2FsbChWTSYsIEV4ZWN1dGFibGVCYXNlKiwgQXJpdHlDaGVja01v
ZGUsIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSkgPSAwOworICAgIHZpcnR1YWwgQ29kZVB0ciBh
ZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCogZXhl
Y3V0YWJsZUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSA9IDA7CiAgICAgdm9pZCogZXhl
Y3V0YWJsZUFkZHJlc3MoKSB7IHJldHVybiBleGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KDApOyB9
CiAgICAgdmlydHVhbCB2b2lkKiBkYXRhQWRkcmVzc0F0T2Zmc2V0KHNpemVfdCBvZmZzZXQpID0g
MDsKQEAgLTI0NiwxOSArMjQ1LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGluaXRpYWxp
emVDb2RlUmVmKENvZGVSZWYsIENvZGVQdHIgd2l0aEFyaXR5Q2hlY2spOwogCi0gICAgdmlydHVh
bCBDb2RlUHRyIGFkZHJlc3NGb3JDYWxsKFZNJiwgRXhlY3V0YWJsZUJhc2UqLCBBcml0eUNoZWNr
TW9kZSwgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIENv
ZGVQdHIgYWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVja01vZGUpIG92ZXJyaWRlOwogCiBwcml2YXRl
OgotICAgIHN0cnVjdCBSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJzIHsKLSAgICAgICAgQ29k
ZVJlZiB3aXRob3V0QXJpdHlDaGVjazsKLSAgICAgICAgQ29kZVJlZiB3aXRoQXJpdHlDaGVjazsK
LSAgICB9OwotCi0gICAgUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVycyogZW5zdXJlV3JhcHBl
cnMoKTsKLSAgICAKICAgICBDb2RlUHRyIG1fd2l0aEFyaXR5Q2hlY2s7Ci0gICAgCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlcnM+IG1fd3JhcHBlcnM7CiB9
OwogCiBjbGFzcyBOYXRpdmVKSVRDb2RlIDogcHVibGljIEpJVENvZGVXaXRoQ29kZVJlZiB7CkBA
IC0yNjksNyArMjU5LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgaW5pdGlhbGl6ZUNvZGVS
ZWYoQ29kZVJlZik7CiAKLSAgICB2aXJ0dWFsIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoVk0mLCBF
eGVjdXRhYmxlQmFzZSosIEFyaXR5Q2hlY2tNb2RlLCBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgQ29kZVB0ciBhZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNr
TW9kZSkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTg5OTQxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzY3LDcgKzc2Nyw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGkKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IDA7CiAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkp
IHsKLSAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmVudHJ5cG9pbnRGb3IoKnZtLCBraW5k
LCBNdXN0Q2hlY2tBcml0eSwgY2FsbExpbmtJbmZvLT5yZWdpc3RlclByZXNlcnZhdGlvbk1vZGUo
KSk7CisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIE11
c3RDaGVja0FyaXR5KTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgfSBlbHNlIGlmIChl
eGVjdXRhYmxlLT5pc1dlYkFzc2VtYmx5RXhlY3V0YWJsZSgpKSB7CiAgICAgICAgIFdlYkFzc2Vt
Ymx5RXhlY3V0YWJsZSogd2ViQXNzZW1ibHlFeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8V2ViQXNz
ZW1ibHlFeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CkBAIC03NzksNyArNzc5LDcgQEAgU2xvd1Bh
dGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAgICAgICAgYXJpdHkgPSBN
dXN0Q2hlY2tBcml0eTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXJpdHkgPSBBcml0eUNo
ZWNrTm90UmVxdWlyZWQ7Ci0gICAgICAgIGNvZGVQdHIgPSB3ZWJBc3NlbWJseUV4ZWN1dGFibGUt
PmVudHJ5cG9pbnRGb3IoKnZtLCBraW5kLCBhcml0eSwgY2FsbExpbmtJbmZvLT5yZWdpc3RlclBy
ZXNlcnZhdGlvbk1vZGUoKSk7CisgICAgICAgIGNvZGVQdHIgPSB3ZWJBc3NlbWJseUV4ZWN1dGFi
bGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgYXJpdHkpOwogI2VuZGlmCiAgICAgfSBlbHNlIHsKICAg
ICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKQEAgLTgwNCw3ICs4MDQsNyBAQCBT
bG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgICAgICBhcml0
eSA9IE11c3RDaGVja0FyaXR5OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcml0eSA9IEFy
aXR5Q2hlY2tOb3RSZXF1aXJlZDsKLSAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJs
ZS0+ZW50cnlwb2ludEZvcigqdm0sIGtpbmQsIGFyaXR5LCBjYWxsTGlua0luZm8tPnJlZ2lzdGVy
UHJlc2VydmF0aW9uTW9kZSgpKTsKKyAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJs
ZS0+ZW50cnlwb2ludEZvcihraW5kLCBhcml0eSk7CiAgICAgfQogICAgIGlmICghY2FsbExpbmtJ
bmZvLT5zZWVuT25jZSgpKQogICAgICAgICBjYWxsTGlua0luZm8tPnNldFNlZW4oKTsKQEAgLTg2
Nyw3ICs4NjcsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoCiAg
ICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChleGVjdXRhYmxlLT5lbnRy
eXBvaW50Rm9yKAotICAgICAgICAqdm0sIGtpbmQsIE11c3RDaGVja0FyaXR5LCBjYWxsTGlua0lu
Zm8tPnJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSgpKS5leGVjdXRhYmxlQWRkcmVzcygpLAorICAg
ICAgICBraW5kLCBNdXN0Q2hlY2tBcml0eSkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2FsbExpbmtJbmZvLT5jYWxsTW9kZSgpID09IENhbGxN
b2RlOjpUYWlsID8gUmV1c2VUaGVGcmFtZSA6IEtlZXBUaGVGcmFtZSkpOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVy
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3Rl
clByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxODk5NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVy
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5oIgotCi0j
aWYgRU5BQkxFKEpJVCkKLQotI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVycy5oIgotI2luY2x1ZGUg
IkxpbmtCdWZmZXIuaCIKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3RhY2tB
bGlnbm1lbnQuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLVJlZ2lzdGVyU2V0IHJlZ2lzdGVyc1Rv
UHJlc2VydmUoKQotewotICAgIFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVzID0gUmVnaXN0ZXJTZXQ6
OmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsKLSAgICAKLSAgICAvLyBObyBuZWVkIHRvIHByZXNlcnZl
IEZQIHNpbmNlIHRoYXQgYWx3YXlzIGdldHMgcHJlc2VydmVkIGFueXdheS4KLSAgICBjYWxsZWVT
YXZlcy5jbGVhcihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgCi0gICAgcmV0dXJu
IGNhbGxlZVNhdmVzOwotfQotCi1wdHJkaWZmX3QgcmVnaXN0ZXJQcmVzZXJ2YXRpb25PZmZzZXQo
KQotewotICAgIHVuc2lnbmVkIG51bWJlck9mQ2FsbGVlU2F2ZXMgPSByZWdpc3RlcnNUb1ByZXNl
cnZlKCkubnVtYmVyT2ZTZXRSZWdpc3RlcnMoKTsKLSAgICAKLSAgICAvLyBOZWVkIHRvIHByZXNl
cnZlIHRoZSBvbGQgcmV0dXJuIFBDLgotICAgIHVuc2lnbmVkIG51bWJlck9mVmFsdWVzVG9TYXZl
ID0gbnVtYmVyT2ZDYWxsZWVTYXZlcyArIDE7Ci0gICAgCi0gICAgLy8gQWxpZ25tZW50LiBQcmVz
ZXJ2ZSB0aGUgc2FtZSBhbGlnbm1lbnQgaW52YXJpYW50cyB0aGF0IHRoZSBjYWxsZXIgaW1wb3Nl
ZC4KLSAgICB1bnNpZ25lZCBudW1iZXJPZk5ld1N0YWNrU2xvdHMgPQotICAgICAgICBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbnVtYmVyT2ZWYWx1
ZXNUb1NhdmUpOwotICAgIAotICAgIHJldHVybiBzaXplb2YoUmVnaXN0ZXIpICogbnVtYmVyT2ZO
ZXdTdGFja1Nsb3RzOwotfQotCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVSZWdpc3Rl
clByZXNlcnZhdGlvbldyYXBwZXIoVk0mIHZtLCBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSwg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHRhcmdldCkKLXsKLSNpZiBFTkFCTEUoRlRMX0pJVCkKLSAg
ICAvLyBXZSBzaG91bGRuJ3QgZXZlciBiZSBnZW5lcmF0aW5nIHdyYXBwZXJzIGZvciBuYXRpdmUg
ZnVuY3Rpb25zLgotICAgIFJlZ2lzdGVyU2V0IHRvU2F2ZSA9IHJlZ2lzdGVyc1RvUHJlc2VydmUo
KTsKLSAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gcmVnaXN0ZXJQcmVzZXJ2YXRpb25PZmZzZXQoKTsK
LQotICAgIEFTU0VSVCghdG9TYXZlLmdldChHUFJJbmZvOjpyZWdUMSkpOwotICAgIEFTU0VSVCgh
dG9TYXZlLmdldChHUFJJbmZvOjpyZWdUMikpOwotICAgIEFTU0VSVCghdG9TYXZlLmdldChHUFJJ
bmZvOjpyZWdUMykpOwotICAgIAotICAgIEFzc2VtYmx5SGVscGVycyBqaXQoJnZtLCAwKTsKLSAg
ICAKLSAgICBqaXQucHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUkluZm86OnJlZ1Qx
KTsKLSAgICBqaXQubG9hZDMyKAotICAgICAgICBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoCi0g
ICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLAotICAgICAg
ICAgICAgKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgLSBKU1N0YWNrOjpDYWxsZXJGcmFtZUFuZFBD
U2l6ZSkgKiBzaXplb2YoUmVnaXN0ZXIpICsgUGF5bG9hZE9mZnNldCksCi0gICAgICAgIEdQUklu
Zm86OnJlZ1QyKTsKLSAgICAKLSAgICAvLyBQbGFjZSB0aGUgc3RhY2sgcG9pbnRlciB3aGVyZSB3
ZSB3YW50IGl0IHRvIGJlLgotICAgIGppdC5zdWJQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIob2Zmc2V0KSwgQXNzZW1ibHlIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0g
ICAgCi0gICAgLy8gQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIHRoaW5ncyB3ZSB3aWxsIGJlIGNvcHlp
bmcuCi0gICAgaml0LmFkZDMyKAotICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MigKLSAgICAgICAgICAgIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUgLSBKU1N0YWNrOjpD
YWxsZXJGcmFtZUFuZFBDU2l6ZSksCi0gICAgICAgIEdQUkluZm86OnJlZ1QyKTsKLQotICAgIGpp
dC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEdQUkluZm86OnJl
Z1QzKTsKLSAgICAKLSAgICBBc3NlbWJseUhlbHBlcnM6OkxhYmVsIGxvb3AgPSBqaXQubGFiZWwo
KTsKLSAgICBqaXQuc3ViMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIEdQUklu
Zm86OnJlZ1QyKTsKLSAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJ
bmZvOjpyZWdUMywgb2Zmc2V0KSwgR1BSSW5mbzo6cmVnVDApOwotICAgIGppdC5zdG9yZTY0KEdQ
UkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMyk7Ci0gICAgaml0LmFkZFB0cihBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW0zMihzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6cmVnVDMpOwot
ICAgIGppdC5icmFuY2hUZXN0MzIoQXNzZW1ibHlIZWxwZXJzOjpOb25aZXJvLCBHUFJJbmZvOjpy
ZWdUMikubGlua1RvKGxvb3AsICZqaXQpOwotCi0gICAgLy8gQXQgdGhpcyBwb2ludCByZWdUMyAr
IG9mZnNldCBwb2ludHMgdG8gd2hlcmUgd2Ugc2F2ZSB0aGluZ3MuCi0gICAgcHRyZGlmZl90IGN1
cnJlbnRPZmZzZXQgPSAwOwotICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpyZWdUMSwgQXNzZW1i
bHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QzLCBjdXJyZW50T2Zmc2V0KSk7Ci0gICAg
Ci0gICAgZm9yIChHUFJSZWcgZ3ByID0gQXNzZW1ibHlIZWxwZXJzOjpmaXJzdFJlZ2lzdGVyKCk7
IGdwciA8PSBBc3NlbWJseUhlbHBlcnM6Omxhc3RSZWdpc3RlcigpOyBncHIgPSBzdGF0aWNfY2Fz
dDxHUFJSZWc+KGdwciArIDEpKSB7Ci0gICAgICAgIGlmICghdG9TYXZlLmdldChncHIpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gc2l6ZW9mKFJlZ2lz
dGVyKTsKLSAgICAgICAgaml0LnN0b3JlNjQoZ3ByLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Mo
R1BSSW5mbzo6cmVnVDMsIGN1cnJlbnRPZmZzZXQpKTsKLSAgICB9Ci0gICAgZm9yIChGUFJSZWcg
ZnByID0gQXNzZW1ibHlIZWxwZXJzOjpmaXJzdEZQUmVnaXN0ZXIoKTsgZnByIDw9IEFzc2VtYmx5
SGVscGVyczo6bGFzdEZQUmVnaXN0ZXIoKTsgZnByID0gc3RhdGljX2Nhc3Q8RlBSUmVnPihmcHIg
KyAxKSkgewotICAgICAgICBpZiAoIXRvU2F2ZS5nZXQoZnByKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IHNpemVvZihSZWdpc3Rlcik7Ci0gICAgICAg
IGppdC5zdG9yZURvdWJsZShmcHIsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpy
ZWdUMywgY3VycmVudE9mZnNldCkpOwotICAgIH0KLSAgICAKLSAgICAvLyBBc3N1bWUgdGhhdCB0
aGVyZSBhcmVuJ3QgYW55IHNhdmVkIEZQIHJlZ2lzdGVycy4KLSAgICAKLSAgICAvLyBSZXN0b3Jl
IHRoZSB0YWcgcmVnaXN0ZXJzLgotICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3Rl
ZEltbTY0KFRhZ1R5cGVOdW1iZXIpLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwot
ICAgIGppdC5hZGQ2NChBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihUYWdNYXNrIC0gVGFn
VHlwZU51bWJlciksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgR1BSSW5mbzo6dGFn
TWFza1JlZ2lzdGVyKTsKLSAgICAKLSAgICBqaXQubW92ZSgKLSAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKAotICAgICAgICAgICAgdm0uZ2V0Q1RJU3R1YihyZWdpc3RlclJl
c3RvcmF0aW9uVGh1bmtHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSwKLSAg
ICAgICAgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgaml0LnJlc3RvcmVSZXR1cm5BZGRyZXNz
QmVmb3JlUmV0dXJuKEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgIEFzc2VtYmx5SGVscGVyczo6
SnVtcCBqdW1wID0gaml0Lmp1bXAoKTsKLSAgICAKLSAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIo
dm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgQ29k
ZUxvY2F0aW9uTGFiZWwodGFyZ2V0KSk7Ci0KLSAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUZUTFRv
SlNUaHVuaygpKQotICAgICAgICBkYXRhTG9nKCJOZWVkIGEgdGh1bmsgZm9yIGNhbGxzIGZyb20g
RlRMIHRvIG5vbi1GVEwgdmVyc2lvbiBvZiAiLCAqZXhlY3V0YWJsZSwgIlxuIik7Ci0gICAgCi0g
ICAgcmV0dXJuIEZJTkFMSVpFX0RGR19DT0RFKGxpbmtCdWZmZXIsICgiUmVnaXN0ZXIgcHJlc2Vy
dmF0aW9uIHdyYXBwZXIgZm9yICVzLyVzLCAlcCIsIHRvQ1N0cmluZyhleGVjdXRhYmxlLT5oYXNo
Rm9yKENvZGVGb3JDYWxsKSkuZGF0YSgpLCB0b0NTdHJpbmcoZXhlY3V0YWJsZS0+aGFzaEZvcihD
b2RlRm9yQ29uc3RydWN0KSkuZGF0YSgpLCB0YXJnZXQuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwot
I2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCi0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAgICBVTlVT
RURfUEFSQU0oZXhlY3V0YWJsZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0gICAgLy8g
V2UgZG9uJ3Qgc3VwcG9ydCBub24tRlRMIGJ1aWxkcyBmb3IgdHdvIHJlYXNvbnM6Ci0gICAgLy8g
LSBJdCBqdXN0IHNvIGhhcHBlbnMgdGhhdCBjdXJyZW50bHkgb25seSB0aGUgRlRMIGJvdHRvbXMg
b3V0IGluIHRoaXMgY29kZS4KLSAgICAvLyAtIFRoZSBjb2RlIGFib3ZlIHVzZXMgNjQtYml0IGlu
c3RydWN0aW9ucy4gSXQgZG9lc24ndCBuZWNlc3NhcmlseSBoYXZlIHRvOyBpdCB3b3VsZCBiZQot
ICAgIC8vICAgZWFzeSB0byBjaGFuZ2UgaXQgc28gdGhhdCBpdCBkb2Vzbid0LiBCdXQgb2J2aW91
c2x5IG1ha2luZyB0aGF0IGNoYW5nZSB3b3VsZCBiZSBhCi0gICAgLy8gICBwcmVyZXF1aXNpdGUg
dG8gcmVtb3ZpbmcgdGhpcyAjaWYuCi0gICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7Ci0g
ICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZigpOwotI2VuZGlmIC8vIEVOQUJMRShGVExf
SklUKQotfQotCi1zdGF0aWMgdm9pZCBnZW5lcmF0ZVJlZ2lzdGVyUmVzdG9yYXRpb24oQXNzZW1i
bHlIZWxwZXJzJiBqaXQpCi17Ci0jaWYgRU5BQkxFKEZUTF9KSVQpCi0gICAgUmVnaXN0ZXJTZXQg
dG9TYXZlID0gcmVnaXN0ZXJzVG9QcmVzZXJ2ZSgpOwotICAgIHB0cmRpZmZfdCBvZmZzZXQgPSBy
ZWdpc3RlclByZXNlcnZhdGlvbk9mZnNldCgpOwotICAgIAotICAgIEFTU0VSVCghdG9TYXZlLmdl
dChHUFJJbmZvOjpyZWdUMSkpOwotICAgIEFTU0VSVCghdG9TYXZlLmdldChHUFJJbmZvOjpyZWdU
MikpOwotICAgIEFTU0VSVCghdG9TYXZlLmdldChHUFJJbmZvOjpyZWdUMykpOwotCi0gICAgLy8g
V2UgbmVlZCB0byBwbGFjZSB0aGUgc3RhY2sgcG9pbnRlciBiYWNrIHRvIHdoZXJlIHRoZSBjYWxs
ZXIgdGhvdWdodCB0aGV5IGxlZnQgaXQuCi0gICAgLy8gQnV0IGFsc28sIGluIG9yZGVyIHRvIHJl
Y292ZXIgdGhlIHJlZ2lzdGVycywgd2UgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBiaWcgdGhlCi0g
ICAgLy8gYXJndW1lbnRzIGFyZWEgaXMuCi0gICAgCi0gICAgaml0LmxvYWQzMigKLSAgICAgICAg
QXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKAotICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpz
dGFja1BvaW50ZXJSZWdpc3RlciwKLSAgICAgICAgICAgIChKU1N0YWNrOjpBcmd1bWVudENvdW50
IC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUpICogc2l6ZW9mKFJlZ2lzdGVyKSArIFBh
eWxvYWRPZmZzZXQpLAotICAgICAgICBHUFJJbmZvOjpyZWdUMyk7Ci0gICAgCi0gICAgaml0Lm1v
dmUoR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyKTsKLSAgICBqaXQubHNoaWZ0MzIoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMyksIEdQUkluZm86OnJlZ1QyKTsKLSAgICAKLSAg
ICBqaXQuYWRkUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKG9mZnNldCksIEFzc2Vt
Ymx5SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIGppdC5hZGRQdHIoQXNzZW1i
bHlIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDIpOwotICAgIAot
ICAgIC8vIFdlIHNhdmVkIHRoaW5ncyBhdDoKLSAgICAvLwotICAgIC8vICAgICBhZGpTUCArIChK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1Np
emUgKyBOdW1BcmdzKSAqIDgKLSAgICAvLwotICAgIC8vIFdoZXJlOgotICAgIC8vCi0gICAgLy8g
ICAgIGFkalNQID0gb3JpZ1NQIC0gb2Zmc2V0Ci0gICAgLy8KLSAgICAvLyByZWdUMiBub3cgcG9p
bnRzIGF0OgotICAgIC8vCi0gICAgLy8gICAgIG9yaWdTUCArIE51bUFyZ3MgKiA4Ci0gICAgLy8g
ICA9IGFkalNQICsgb2Zmc2V0ICsgTnVtQXJncyAqIDgKLSAgICAvLyAKLSAgICAvLyBTbyBpZiB3
ZSBzdWJ0cmFjdCBvZmZzZXQgYW5kIHRoZW4gYWRkIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNp
emUgYW5kIHN1YnRyYWN0Ci0gICAgLy8gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUsIHdl
J2xsIGdldCB0aGUgdGhpbmcgd2Ugd2FudC4KLSAgICBwdHJkaWZmX3QgY3VycmVudE9mZnNldCA9
IC1vZmZzZXQgKyBzaXplb2YoUmVnaXN0ZXIpICogKAotICAgICAgICBKU1N0YWNrOjpDYWxsRnJh
bWVIZWFkZXJTaXplIC0gSlNTdGFjazo6Q2FsbGVyRnJhbWVBbmRQQ1NpemUpOwotICAgIGppdC5s
b2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMiwgY3VycmVudE9m
ZnNldCksIEdQUkluZm86OnJlZ1QxKTsKLSAgICAKLSAgICBmb3IgKEdQUlJlZyBncHIgPSBBc3Nl
bWJseUhlbHBlcnM6OmZpcnN0UmVnaXN0ZXIoKTsgZ3ByIDw9IEFzc2VtYmx5SGVscGVyczo6bGFz
dFJlZ2lzdGVyKCk7IGdwciA9IHN0YXRpY19jYXN0PEdQUlJlZz4oZ3ByICsgMSkpIHsKLSAgICAg
ICAgaWYgKCF0b1NhdmUuZ2V0KGdwcikpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
Y3VycmVudE9mZnNldCArPSBzaXplb2YoUmVnaXN0ZXIpOwotICAgICAgICBqaXQubG9hZDY0KEFz
c2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMiwgY3VycmVudE9mZnNldCksIGdw
cik7Ci0gICAgfQotICAgIGZvciAoRlBSUmVnIGZwciA9IEFzc2VtYmx5SGVscGVyczo6Zmlyc3RG
UFJlZ2lzdGVyKCk7IGZwciA8PSBBc3NlbWJseUhlbHBlcnM6Omxhc3RGUFJlZ2lzdGVyKCk7IGZw
ciA9IHN0YXRpY19jYXN0PEZQUlJlZz4oZnByICsgMSkpIHsKLSAgICAgICAgaWYgKCF0b1NhdmUu
Z2V0KGZwcikpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgY3VycmVudE9mZnNldCAr
PSBzaXplb2YoUmVnaXN0ZXIpOwotICAgICAgICBqaXQubG9hZERvdWJsZShBc3NlbWJseUhlbHBl
cnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDIsIGN1cnJlbnRPZmZzZXQpLCBmcHIpOwotICAgIH0K
LSAgICAKLSAgICAvLyBUaHVua3MgbGlrZSB0aGlzIHJlbHkgb24gdGhlIEFyZ3VtZW50Q291bnQg
YmVpbmcgaW50YWN0LiBQYXkgaXQgZm9yd2FyZC4KLSAgICBqaXQuc3RvcmUzMigKLSAgICAgICAg
R1BSSW5mbzo6cmVnVDMsCi0gICAgICAgIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcygKLSAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsCi0gICAgICAgICAg
ICAoSlNTdGFjazo6QXJndW1lbnRDb3VudCAtIEpTU3RhY2s6OkNhbGxlckZyYW1lQW5kUENTaXpl
KSAqIHNpemVvZihSZWdpc3RlcikgKyBQYXlsb2FkT2Zmc2V0KSk7Ci0gICAgCi0gICAgaWYgKCFB
U1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIG9rID0gaml0
LmJyYW5jaFB0cigKLSAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6QWJvdmUsIEdQUkluZm86
OnJlZ1QxLCBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8c2l6ZV90
PigweDEwMDApKSk7Ci0gICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oUlBXVW5yZWFzb25hYmxl
SnVtcFRhcmdldCk7Ci0gICAgICAgIG9rLmxpbmsoJmppdCk7Ci0gICAgfQotICAgIAotICAgIGpp
dC5qdW1wKEdQUkluZm86OnJlZ1QxKTsKLSNlbHNlIC8vIEVOQUJMRShGVExfSklUKQotICAgIFVO
VVNFRF9QQVJBTShqaXQpOwotICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwotI2VuZGlm
IC8vIEVOQUJMRShGVExfSklUKQotfQotCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWYgcmVnaXN0ZXJS
ZXN0b3JhdGlvblRodW5rR2VuZXJhdG9yKFZNKiB2bSkKLXsKLSAgICBBc3NlbWJseUhlbHBlcnMg
aml0KHZtLCAwKTsKLSAgICBnZW5lcmF0ZVJlZ2lzdGVyUmVzdG9yYXRpb24oaml0KTsKLSAgICBM
aW5rQnVmZmVyIGxpbmtCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCJSZWdpc3RlciByZXN0b3JhdGlvbiB0aHVu
ayIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUoSklUKQot
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3Jh
cHBlckdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE4OTk0MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVy
R2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFJlZ2lzdGVyUHJlc2Vy
dmF0aW9uV3JhcHBlckdlbmVyYXRvcl9oCi0jZGVmaW5lIFJlZ2lzdGVyUHJlc2VydmF0aW9uV3Jh
cHBlckdlbmVyYXRvcl9oCi0KLSNpZiBFTkFCTEUoSklUKQotCi0jaW5jbHVkZSAiQXJpdHlDaGVj
a01vZGUuaCIKLSNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKLSNpbmNsdWRlICJNYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaCIKLSNpbmNsdWRlICJWTS5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQot
UmVnaXN0ZXJTZXQgcmVnaXN0ZXJzVG9QcmVzZXJ2ZSgpOwotCi1wdHJkaWZmX3QgcmVnaXN0ZXJQ
cmVzZXJ2YXRpb25PZmZzZXQoKTsKLQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlUmVn
aXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyKFZNJiwgRXhlY3V0YWJsZUJhc2UqLCBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgdGFyZ2V0KTsKLQotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHJlZ2lzdGVyUmVz
dG9yYXRpb25UaHVua0dlbmVyYXRvcihWTSopOwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCi0KLSNlbmRpZiAvLyBSZWdpc3RlclByZXNlcnZhdGlvbldyYXBw
ZXJHZW5lcmF0b3JfaAotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJ
KHJldmlzaW9uIDE4OTk0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc5NSw4ICs3OTUsNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhp
Y0NhbGwoCiAgICAgICAgIAogICAgICAgICBBU1NFUlQodmFyaWFudC5leGVjdXRhYmxlKCktPmhh
c0pJVENvZGVGb3JDYWxsKCkpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0
ciA9Ci0gICAgICAgICAgICB2YXJpYW50LmV4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkSklUQ29kZUZv
ckNhbGwoKS0+YWRkcmVzc0ZvckNhbGwoCi0gICAgICAgICAgICAgICAgKnZtLCB2YXJpYW50LmV4
ZWN1dGFibGUoKSwgQXJpdHlDaGVja05vdFJlcXVpcmVkLCBjYWxsTGlua0luZm8ucmVnaXN0ZXJQ
cmVzZXJ2YXRpb25Nb2RlKCkpOworICAgICAgICAgICAgdmFyaWFudC5leGVjdXRhYmxlKCktPmdl
bmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tOb3RSZXF1
aXJlZCk7CiAgICAgICAgIAogICAgICAgICBpZiAoZmFzdENvdW50cykgewogICAgICAgICAgICAg
c3R1YkppdC5hZGQzMigKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5r
R2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDE4OTk0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDcgKzIwMiw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsVGh1bmtGb3IoVk0KICAgICBqaXQubG9h
ZFB0cigKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKAogICAgICAgICAgICAgR1BSSW5m
bzo6cmVnVDQsIEV4ZWN1dGFibGVCYXNlOjpvZmZzZXRPZkpJVENvZGVXaXRoQXJpdHlDaGVja0Zv
cigKLSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8uc3BlY2lhbGl6YXRpb25LaW5kKCksIGNh
bGxMaW5rSW5mby5yZWdpc3RlclByZXNlcnZhdGlvbk1vZGUoKSkpLAorICAgICAgICAgICAgICAg
IGNhbGxMaW5rSW5mby5zcGVjaWFsaXphdGlvbktpbmQoKSkpLAogICAgICAgICBHUFJJbmZvOjpy
ZWdUNCk7CiAgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVy
czo6WmVybywgR1BSSW5mbzo6cmVnVDQpKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAkocmV2aXNpb24gMTg5OTQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNyArMjcsNiBAQAogI2RlZmluZSBUaHVua0dlbmVyYXRvcnNfaAogCiAjaW5jbHVkZSAiQ29k
ZVNwZWNpYWxpemF0aW9uS2luZC5oIgotI2luY2x1ZGUgIlJlZ2lzdGVyUHJlc2VydmF0aW9uTW9k
ZS5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9yLmgiCiAKICNpZiBFTkFCTEUoSklUKQpAQCAt
MzgsNyArMzcsNyBAQCBjbGFzcyBDQ2FsbEhlbHBlcnM7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiB0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IoVk0qKTsKIAotTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGxpbmtDYWxsVGh1bmsoVk0qLCBDYWxsTGlua0luZm8mLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLCBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUpOworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGxpbmtDYWxsVGh1bmsoVk0qLCBDYWxsTGlua0luZm8mLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2FsbFRodW5rR2VuZXJhdG9y
KFZNKik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2Vu
ZXJhdG9yKFZNKik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTg5OTQxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU3LDkgKzM1
Nyw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgZW50cnlPU1IoRXhlY1MKICAgICBpZiAo
a2luZCA9PSBQcm9sb2d1ZSkKICAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmpp
dENvZGUoKS0+ZXhlY3V0YWJsZUFkZHJlc3MoKSwgMCk7CiAgICAgQVNTRVJUKGtpbmQgPT0gQXJp
dHlDaGVjayk7Ci0gICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmppdENvZGUoKS0+YWRk
cmVzc0ZvckNhbGwoCi0gICAgICAgICpjb2RlQmxvY2stPnZtKCksIGNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCksIE11c3RDaGVja0FyaXR5LAotICAgICAgICBSZWdpc3RlclByZXNlcnZhdGlv
bk5vdFJlcXVpcmVkKS5leGVjdXRhYmxlQWRkcmVzcygpLCAwKTsKKyAgICBMTElOVF9SRVRVUk5f
VFdPKGNvZGVCbG9jay0+aml0Q29kZSgpLT5hZGRyZXNzRm9yQ2FsbChNdXN0Q2hlY2tBcml0eSku
ZXhlY3V0YWJsZUFkZHJlc3MoKSwgMCk7CiB9CiAjZWxzZSAvLyBFTkFCTEUoSklUKQogc3RhdGlj
IFNsb3dQYXRoUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9u
KiwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IGNoYXIqLCBFbnRyeUtpbmQpCkBAIC0xMTQy
LDcgKzExNDAsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjCiAj
ZW5kaWYKIAogICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKSB7Ci0gICAgICAg
IGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKHZtLCBraW5kLCBNdXN0Q2hlY2tB
cml0eSwgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Ob3RSZXF1aXJlZCk7CisgICAgICAgIGNvZGVQdHIg
PSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQsIE11c3RDaGVja0FyaXR5KTsKICAgICB9
IGVsc2UgaWYgKCFpc1dlYkFzc2VtYmx5RXhlY3V0YWJsZSkgewogICAgICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KGV4ZWN1dGFibGUpOwogCkBAIC0xMTU5LDcgKzExNTcsNyBAQCBpbmxpbmUgU2xvd1Bh
dGhSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjCiAgICAgICAgICAgICBhcml0eSA9IE11c3RDaGVj
a0FyaXR5OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhcml0eSA9IEFyaXR5Q2hlY2tOb3RS
ZXF1aXJlZDsKLSAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+ZW50cnlwb2lu
dEZvcih2bSwga2luZCwgYXJpdHksIFJlZ2lzdGVyUHJlc2VydmF0aW9uTm90UmVxdWlyZWQpOwor
ICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKGtpbmQs
IGFyaXR5KTsKICAgICB9IGVsc2UgewogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAg
V2ViQXNzZW1ibHlFeGVjdXRhYmxlKiB3ZWJBc3NlbWJseUV4ZWN1dGFibGUgPSBzdGF0aWNfY2Fz
dDxXZWJBc3NlbWJseUV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKQEAgLTExNzEsNyArMTE2OSw3
IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAgICAgICAgICAg
IGFyaXR5ID0gTXVzdENoZWNrQXJpdHk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFyaXR5
ID0gQXJpdHlDaGVja05vdFJlcXVpcmVkOwotICAgICAgICBjb2RlUHRyID0gd2ViQXNzZW1ibHlF
eGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKHZtLCBraW5kLCBhcml0eSwgUmVnaXN0ZXJQcmVzZXJ2
YXRpb25Ob3RSZXF1aXJlZCk7CisgICAgICAgIGNvZGVQdHIgPSB3ZWJBc3NlbWJseUV4ZWN1dGFi
bGUtPmVudHJ5cG9pbnRGb3Ioa2luZCwgYXJpdHkpOwogI2VuZGlmCiAgICAgfQogICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlz
aW9uIDE4OTk0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw4ICs1Nyw2IEBAIHZvaWQgRXhlY3V0YWJsZUJhc2U6
OmNsZWFyQ29kZSgpCiAgICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0ID0gbnVsbHB0cjsKICAgICBt
X2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsK
ICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVy
Q29kZVB0cigpOwotICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVja0FuZFByZXNlcnZl
UmVncyA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOwotICAgIG1faml0Q29kZUZvckNvbnN0cnVj
dFdpdGhBcml0eUNoZWNrQW5kUHJlc2VydmVSZWdzID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7
CiAjZW5kaWYKICAgICBtX251bVBhcmFtZXRlcnNGb3JDYWxsID0gTlVNX1BBUkFNRVRFUlNfTk9U
X0NPTVBJTEVEOwogICAgIG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdCA9IE5VTV9QQVJBTUVU
RVJTX05PVF9DT01QSUxFRDsKQEAgLTE4MywxMyArMTgxLDExIEBAIHZvaWQgU2NyaXB0RXhlY3V0
YWJsZTo6aW5zdGFsbENvZGUoVk0mIHYKICAgICBjYXNlIENvZGVGb3JDYWxsOgogICAgICAgICBt
X2ppdENvZGVGb3JDYWxsID0gZ2VuZXJpY0NvZGVCbG9jayA/IGdlbmVyaWNDb2RlQmxvY2stPmpp
dENvZGUoKSA6IG51bGxwdHI7CiAgICAgICAgIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVj
ayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOwotICAgICAgICBtX2ppdENvZGVGb3JDYWxsV2l0
aEFyaXR5Q2hlY2tBbmRQcmVzZXJ2ZVJlZ3MgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKICAg
ICAgICAgbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbCA9IGdlbmVyaWNDb2RlQmxvY2sgPyBnZW5lcmlj
Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgOiBOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQ7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKICAgICAgICAgbV9q
aXRDb2RlRm9yQ29uc3RydWN0ID0gZ2VuZXJpY0NvZGVCbG9jayA/IGdlbmVyaWNDb2RlQmxvY2st
PmppdENvZGUoKSA6IG51bGxwdHI7CiAgICAgICAgIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhB
cml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7Ci0gICAgICAgIG1faml0Q29kZUZv
ckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrQW5kUHJlc2VydmVSZWdzID0gTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKCk7CiAgICAgICAgIG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdCA9IGdlbmVyaWND
b2RlQmxvY2sgPyBnZW5lcmljQ29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgOiBOVU1fUEFSQU1F
VEVSU19OT1RfQ09NUElMRUQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTc0NSw3ICs3NDEs
NiBAQCB2b2lkIFdlYkFzc2VtYmx5RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4CiAKICAgICBtX2pp
dENvZGVGb3JDYWxsID0gY29kZUJsb2NrLT5qaXRDb2RlKCk7CiAgICAgbV9qaXRDb2RlRm9yQ2Fs
bFdpdGhBcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7Ci0gICAgbV9qaXRDb2Rl
Rm9yQ2FsbFdpdGhBcml0eUNoZWNrQW5kUHJlc2VydmVSZWdzID0gTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKCk7CiAgICAgbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbCA9IGNvZGVCbG9jay0+bnVtUGFyYW1l
dGVycygpOwogCiAgICAgbV9jb2RlQmxvY2tGb3JDYWxsID0gY29kZUJsb2NrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTg5OTQx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiSW5mZXJyZWRWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUg
IlJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgog
I2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJUeXBlU2V0LmgiCkBAIC0xNjMsOCAr
MTYyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvckNvbnN0
cnVjdCgpOwogICAgIH0KICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgZW50cnlwb2lu
dEZvcigKLSAgICAgICAgVk0mIHZtLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEFyaXR5
Q2hlY2tNb2RlIGFyaXR5LCBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUgcmVnaXN0ZXJzKQorICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBlbnRyeXBvaW50Rm9yKENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCwgQXJpdHlDaGVja01vZGUgYXJpdHkpCiAgICAgewogICAgICAgICAvLyBDaGVjayBp
ZiB3ZSBoYXZlIGEgY2FjaGVkIHJlc3VsdC4gV2Ugb25seSBoYXZlIGl0IGZvciBhcml0eSBjaGVj
ayBiZWNhdXNlIHdlIHVzZSB0aGUKICAgICAgICAgLy8gbm8tYXJpdHkgZW50cnlwb2ludCBpbiBu
b24tdmlydHVhbCBjYWxscywgd2hpY2ggd2lsbCAiY2FjaGUiIHRoaXMgdmFsdWUgZGlyZWN0bHkg
aW4KQEAgLTE3Miw1NSArMTcwLDI1IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGFyaXR5ID09IE11
c3RDaGVja0FyaXR5KSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICAgICAgICAg
IGNhc2UgQ29kZUZvckNhbGw6Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChyZWdpc3RlcnMpIHsK
LSAgICAgICAgICAgICAgICBjYXNlIFJlZ2lzdGVyUHJlc2VydmF0aW9uTm90UmVxdWlyZWQ6Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0ID0gbV9q
aXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBNdXN0UHJlc2VydmVSZWdpc3RlcnM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0ID0gbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNr
QW5kUHJlc2VydmVSZWdzKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0ID0gbV9qaXRDb2RlRm9yQ2Fs
bFdpdGhBcml0eUNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0Ogot
ICAgICAgICAgICAgICAgIHN3aXRjaCAocmVnaXN0ZXJzKSB7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkOgotICAgICAgICAgICAgICAgICAgICBp
ZiAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdCA9IG1faml0Q29kZUZvckNvbnN0cnVjdFdp
dGhBcml0eUNoZWNrKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBNdXN0UHJlc2Vy
dmVSZWdpc3RlcnM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgcmVzdWx0ID0gbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2tBbmRQcmVzZXJ2
ZVJlZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYg
KE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQgPSBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRo
QXJpdHlDaGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgcmVzdWx0ID0KLSAgICAgICAgICAgIGdlbmVyYXRlZEpJVENvZGVGb3Io
a2luZCktPmFkZHJlc3NGb3JDYWxsKHZtLCB0aGlzLCBhcml0eSwgcmVnaXN0ZXJzKTsKKyAgICAg
ICAgICAgIGdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCktPmFkZHJlc3NGb3JDYWxsKGFyaXR5KTsK
ICAgICAgICAgaWYgKGFyaXR5ID09IE11c3RDaGVja0FyaXR5KSB7CiAgICAgICAgICAgICAvLyBD
YWNoZSB0aGUgcmVzdWx0OyB0aGlzIGlzIG5lY2Vzc2FyeSBmb3IgdGhlIEpJVCdzIHZpcnR1YWwg
Y2FsbCBvcHRpbWl6YXRpb25zLgogICAgICAgICAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgICAg
ICAgICBjYXNlIENvZGVGb3JDYWxsOgotICAgICAgICAgICAgICAgIHN3aXRjaCAocmVnaXN0ZXJz
KSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVk
OgotICAgICAgICAgICAgICAgICAgICBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2sgPSBy
ZXN1bHQ7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
TXVzdFByZXNlcnZlUmVnaXN0ZXJzOgotICAgICAgICAgICAgICAgICAgICBtX2ppdENvZGVGb3JD
YWxsV2l0aEFyaXR5Q2hlY2tBbmRQcmVzZXJ2ZVJlZ3MgPSByZXN1bHQ7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX2ppdENv
ZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2sgPSByZXN1bHQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6Ci0gICAgICAgICAgICAgICAgc3dp
dGNoIChyZWdpc3RlcnMpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFJlZ2lzdGVyUHJlc2VydmF0
aW9uTm90UmVxdWlyZWQ6Ci0gICAgICAgICAgICAgICAgICAgIG1faml0Q29kZUZvckNvbnN0cnVj
dFdpdGhBcml0eUNoZWNrID0gcmVzdWx0OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIE11c3RQcmVzZXJ2ZVJlZ2lzdGVyczoKLSAgICAgICAgICAgICAg
ICAgICAgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2tBbmRQcmVzZXJ2ZVJlZ3Mg
PSByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjayA9IHJl
c3VsdDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtMjI4LDIzICsxOTYsMTMgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3IoCi0gICAgICAgIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCwgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlIHJlZ2lzdGVycykKKyAg
ICAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChraW5kKSB7CiAgICAgICAgIGNhc2UgQ29kZUZvckNhbGw6Ci0gICAgICAgICAgICBzd2l0Y2gg
KHJlZ2lzdGVycykgewotICAgICAgICAgICAgY2FzZSBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJl
cXVpcmVkOgotICAgICAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRXhlY3V0YWJs
ZUJhc2UsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjayk7Ci0gICAgICAgICAgICBjYXNl
IE11c3RQcmVzZXJ2ZVJlZ2lzdGVyczoKLSAgICAgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEV4ZWN1dGFibGVCYXNlLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2tBbmRQ
cmVzZXJ2ZVJlZ3MpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihFeGVjdXRhYmxlQmFzZSwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrKTsK
ICAgICAgICAgY2FzZSBDb2RlRm9yQ29uc3RydWN0OgotICAgICAgICAgICAgc3dpdGNoIChyZWdp
c3RlcnMpIHsKLSAgICAgICAgICAgIGNhc2UgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Ob3RSZXF1aXJl
ZDoKLSAgICAgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEV4ZWN1dGFibGVCYXNl
LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjayk7Ci0gICAgICAgICAgICBjYXNl
IE11c3RQcmVzZXJ2ZVJlZ2lzdGVyczoKLSAgICAgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEV4ZWN1dGFibGVCYXNlLCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVj
a0FuZFByZXNlcnZlUmVncyk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKEV4ZWN1dGFibGVCYXNlLCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJp
dHlDaGVjayk7CiAgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yOTMsOCArMjUxLDYgQEAgcHJvdGVjdGVkOgogICAg
IFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGVGb3JDb25zdHJ1Y3Q7CiAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjazsKICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2s7Ci0gICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVja0FuZFByZXNl
cnZlUmVnczsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlRm9yQ29uc3RydWN0
V2l0aEFyaXR5Q2hlY2tBbmRQcmVzZXJ2ZVJlZ3M7CiB9OwogCiBjbGFzcyBOYXRpdmVFeGVjdXRh
YmxlIGZpbmFsIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZS5o
CShyZXZpc2lvbiAxODk5NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdp
c3RlclByZXNlcnZhdGlvbk1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzOSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgUmVn
aXN0ZXJQcmVzZXJ2YXRpb25Nb2RlX2gKLSNkZWZpbmUgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2Rl
X2gKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWVudW0gUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlIHsK
LSAgICBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkLAotICAgIE11c3RQcmVzZXJ2ZVJl
Z2lzdGVycwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBSZWdpc3RlclBy
ZXNlcnZhdGlvbk1vZGVfaAotCg==
</data>
<flag name="review"
          id="286694"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>