<?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>81111</bug_id>
          
          <creation_ts>2012-03-14 08:17:15 -0700</creation_ts>
          <short_desc>Move EntryArray, EntryBase, EntryCallback, and Entry to Modules/filesystem/</short_desc>
          <delta_ts>2012-03-20 00:56:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>81353</dup_id>
          
          <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="Mark Pilgrim (Google)">pilgrim</reporter>
          <assigned_to name="Mark Pilgrim (Google)">pilgrim</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>578407</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-03-14 08:17:15 -0700</bug_when>
    <thetext>Move EntryArray, EntryBase, EntryCallback, and Entry to Modules/filesystem/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578409</commentid>
    <comment_count>1</comment_count>
      <attachid>131852</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-03-14 08:19:08 -0700</bug_when>
    <thetext>Created attachment 131852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578437</commentid>
    <comment_count>2</comment_count>
      <attachid>131852</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-14 08:47:19 -0700</bug_when>
    <thetext>Comment on attachment 131852
Patch

Attachment 131852 did not pass win-ews (win):
Output: http://queues.webkit.org/results/11958060</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578471</commentid>
    <comment_count>3</comment_count>
      <attachid>131852</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-14 09:11:53 -0700</bug_when>
    <thetext>Comment on attachment 131852
Patch

Attachment 131852 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11957073</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579491</commentid>
    <comment_count>4</comment_count>
      <attachid>132074</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-03-15 10:33:18 -0700</bug_when>
    <thetext>Created attachment 132074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579497</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-15 10:36:09 -0700</bug_when>
    <thetext>Attachment 132074 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/Modules/filesystem/EntryArray.h:51:  The parameter name &quot;entry&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/Modules/filesystem/Entry.h:54:  The parameter name &quot;errorCallback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/Modules/filesystem/Entry.h:55:  The parameter name &quot;errorCallback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/Modules/filesystem/Entry.h:56:  The parameter name &quot;errorCallback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/Modules/filesystem/Entry.h:57:  The parameter name &quot;errorCallback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/Modules/filesystem/Entry.h:58:  The parameter name &quot;errorCallback&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 6 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579529</commentid>
    <comment_count>6</comment_count>
      <attachid>132074</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-15 11:07:13 -0700</bug_when>
    <thetext>Comment on attachment 132074
Patch

Attachment 132074 did not pass win-ews (win):
Output: http://queues.webkit.org/results/11952907</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579574</commentid>
    <comment_count>7</comment_count>
      <attachid>132074</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-15 11:34:08 -0700</bug_when>
    <thetext>Comment on attachment 132074
Patch

Attachment 132074 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11956706</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580525</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-03-16 08:14:03 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 81353 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582833</commentid>
    <comment_count>9</comment_count>
      <attachid>132074</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-20 00:56:11 -0700</bug_when>
    <thetext>Comment on attachment 132074
Patch

Cleared review? from attachment 132074 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131852</attachid>
            <date>2012-03-14 08:19:08 -0700</date>
            <delta_ts>2012-03-15 10:33:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81111-20120314111853.patch</filename>
            <type>text/plain</type>
            <size>115804</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDcwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAzLTE0ICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIEVudHJ5QXJyYXks
IEVudHJ5QmFzZSwgRW50cnlDYWxsYmFjaywgYW5kIEVudHJ5IHRvIE1vZHVsZXMvZmlsZXN5c3Rl
bS8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMTEx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBhbGwgZXhpc3RpbmcgdGVzdHMgcGFzcy4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMucHJpOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogTW9k
dWxlcy9maWxlc3lzdGVtL0VudHJ5LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9FbnRyeS5jcHAuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Lmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaC4KKyAgICAgICAgKiBNb2R1
bGVzL2ZpbGVzeXN0ZW0vRW50cnkuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0VudHJ5LmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheS5jcHAuCisg
ICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5LmguCisgICAgICAgICogTW9kdWxlcy9maWxl
c3lzdGVtL0VudHJ5QXJyYXkuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0VudHJ5QXJyYXkuaWRsLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5
U3luYy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5
bmMuY3BwLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmguCisgICAg
ICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmlkbDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5U3luYy5pZGwuCisgICAgICAgICogTW9k
dWxlcy9maWxlc3lzdGVtL0VudHJ5QmFzZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRW50cnlCYXNlLmNwcC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50
cnlCYXNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmgu
CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUNhbGxiYWNrLmguCisgICAgICAgICogTW9k
dWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0VudHJ5Q2FsbGJhY2suaWRsLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5
c3RlbS9FbnRyeVN5bmMuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Vu
dHJ5U3luYy5jcHAuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5oLgorICAgICAgICAq
IE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0VudHJ5U3luYy5pZGwuCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGZpbGVhcGkvRW50cnkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRW50cnku
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5LmlkbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBmaWxlYXBpL0VudHJ5QXJyYXkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkv
RW50cnlBcnJheS5oOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRW50cnlBcnJheS5pZGw6
IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9FbnRyeUFycmF5U3luYy5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogZmlsZWFwaS9FbnRyeUFycmF5U3luYy5oOiBSZW1vdmVkLgorICAgICAgICAq
IGZpbGVhcGkvRW50cnlBcnJheVN5bmMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkv
RW50cnlCYXNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5QmFzZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRW50cnlDYWxsYmFjay5oOiBSZW1vdmVkLgorICAg
ICAgICAqIGZpbGVhcGkvRW50cnlDYWxsYmFjay5pZGw6IFJlbW92ZWQuCisgICAgICAgICogZmls
ZWFwaS9FbnRyeVN5bmMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRW50cnlTeW5j
Lmg6IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9FbnRyeVN5bmMuaWRsOiBSZW1vdmVkLgor
CiAyMDEyLTAzLTE0ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4K
IAogICAgICAgICBbUXRdIFJ1bkxvb3BRdCBpcyBtaXNzaW5nIHJlZW50cmFuY3kgZ3VhcmRzCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTEwNjk3KQorKysgU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE2NDQsMTEgKzE2NDQsMTEgQEAg
aWYgKEVOQUJMRV9GSUxFX1NZU1RFTSkKICAgICAgICAgZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFz
ZS5jcHAKICAgICAgICAgZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5jcHAKICAgICAgICAgZmls
ZWFwaS9ET01XaW5kb3dGaWxlU3lzdGVtLmNwcAotICAgICAgICBmaWxlYXBpL0VudHJ5LmNwcAot
ICAgICAgICBmaWxlYXBpL0VudHJ5QXJyYXkuY3BwCi0gICAgICAgIGZpbGVhcGkvRW50cnlBcnJh
eVN5bmMuY3BwCi0gICAgICAgIGZpbGVhcGkvRW50cnlCYXNlLmNwcAotICAgICAgICBmaWxlYXBp
L0VudHJ5U3luYy5jcHAKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmNwcAorICAg
ICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5jcHAKKyAgICAgICAgTW9kdWxlcy9m
aWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmNwcAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0v
RW50cnlCYXNlLmNwcAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmNwcAog
ICAgICAgICBmaWxlYXBpL0ZpbGVFbnRyeS5jcHAKICAgICAgICAgZmlsZWFwaS9GaWxlRW50cnlT
eW5jLmNwcAogICAgICAgICBmaWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCkBAIC0xNjY4
LDExICsxNjY4LDExIEBAIGlmIChFTkFCTEVfRklMRV9TWVNURU0pCiAgICAgICAgIGZpbGVhcGkv
RE9NRmlsZVN5c3RlbVN5bmMuaWRsCiAgICAgICAgIGZpbGVhcGkvRE9NV2luZG93RmlsZVN5c3Rl
bS5pZGwKICAgICAgICAgZmlsZWFwaS9FbnRyaWVzQ2FsbGJhY2suaWRsCi0gICAgICAgIGZpbGVh
cGkvRW50cnkuaWRsCi0gICAgICAgIGZpbGVhcGkvRW50cnlTeW5jLmlkbAotICAgICAgICBmaWxl
YXBpL0VudHJ5QXJyYXkuaWRsCi0gICAgICAgIGZpbGVhcGkvRW50cnlBcnJheVN5bmMuaWRsCi0g
ICAgICAgIGZpbGVhcGkvRW50cnlDYWxsYmFjay5pZGwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lz
dGVtL0VudHJ5LmlkbAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmlkbAor
ICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5pZGwKKyAgICAgICAgTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmlkbAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRW50cnlDYWxsYmFjay5pZGwKICAgICAgICAgZmlsZWFwaS9FcnJvckNhbGxiYWNrLmlkbAog
ICAgICAgICBmaWxlYXBpL0ZpbGVDYWxsYmFjay5pZGwKICAgICAgICAgZmlsZWFwaS9GaWxlRW50
cnkuaWRsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDExMDYy
MSkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkK
QEAgLTIwMywxMSArMjAzLDExIEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5jLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9maWxlYXBpL0VudHJpZXNDYWxsYmFjay5pZGwgXAotICAgICQoV2ViQ29yZSkvZmlsZWFwaS9F
bnRyeS5pZGwgXAotICAgICQoV2ViQ29yZSkvZmlsZWFwaS9FbnRyeUFycmF5LmlkbCBcCi0gICAg
JChXZWJDb3JlKS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmlkbCBcCi0gICAgJChXZWJDb3JlKS9m
aWxlYXBpL0VudHJ5Q2FsbGJhY2suaWRsIFwKLSAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRW50cnlT
eW5jLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuaWRsIFwK
KyAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmlkbCBcCisgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuaWRsIFwKKyAgICAk
KFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUNhbGxiYWNrLmlkbCBcCisgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9maWxlYXBpL0Vycm9yQ2FsbGJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRmls
ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvZmlsZWFwaS9GaWxlQ2FsbGJhY2suaWRsIFwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkJKHJldmlzaW9uIDExMDYyMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkod29ya2luZyBjb3B5KQpAQCAtMjI0LDExICsyMjQs
MTEgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICAkJFBXRC9maWxlYXBpL0RPTUZpbGVTeXN0ZW1T
eW5jLmlkbCBcCiAgICAgJCRQV0QvZmlsZWFwaS9ET01XaW5kb3dGaWxlU3lzdGVtLmlkbCBcCiAg
ICAgJCRQV0QvZmlsZWFwaS9FbnRyaWVzQ2FsbGJhY2suaWRsIFwKLSAgICAkJFBXRC9maWxlYXBp
L0VudHJ5LmlkbCBcCi0gICAgJCRQV0QvZmlsZWFwaS9FbnRyeUFycmF5LmlkbCBcCi0gICAgJCRQ
V0QvZmlsZWFwaS9FbnRyeUFycmF5U3luYy5pZGwgXAotICAgICQkUFdEL2ZpbGVhcGkvRW50cnlD
YWxsYmFjay5pZGwgXAotICAgICQkUFdEL2ZpbGVhcGkvRW50cnlTeW5jLmlkbCBcCisgICAgJCRQ
V0QvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmlkbCBcCisgICAgJCRQV0QvTW9kdWxlcy9maWxl
c3lzdGVtL0VudHJ5QXJyYXkuaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50
cnlBcnJheVN5bmMuaWRsIFwKKyAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlDYWxs
YmFjay5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaWRsIFwK
ICAgICAkJFBXRC9maWxlYXBpL0Vycm9yQ2FsbGJhY2suaWRsIFwKICAgICAkJFBXRC9maWxlYXBp
L0ZpbGUuaWRsIFwKICAgICAkJFBXRC9maWxlYXBpL0ZpbGVDYWxsYmFjay5pZGwgXApJbmRleDog
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMTA2OTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yMDU2LDE3ICsy
MDU2LDE3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9E
T01XaW5kb3dGaWxlU3lzdGVtLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01XaW5k
b3dGaWxlU3lzdGVtLmggXAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cmllc0NhbGxiYWNr
LmggXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuY3BwIFwKLQlTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0VudHJ5LmggXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheS5j
cHAgXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheS5oIFwKLQlTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9FbnRyeUFycmF5U3luYy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QmFzZS5j
cHAgXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmggXAotCVNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRW50cnlDYWxsYmFjay5oIFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Vu
dHJ5U3luYy5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlTeW5jLmggXAorCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9FbnRyeUFycmF5LmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeUFycmF5U3luYy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeUFycmF5U3luYy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RW50cnlCYXNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5
QmFzZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFj
ay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Vycm9yQ2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlQ2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBc
CkBAIC00ODczLDExICs0ODczLDExIEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29y
ZSkvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5pZGwgXAogCSQoV2ViQ29yZSkv
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsIFwKIAkkKFdlYkNvcmUp
L2ZpbGVhcGkvRW50cmllc0NhbGxiYWNrLmlkbCBcCi0JJChXZWJDb3JlKS9maWxlYXBpL0VudHJ5
LmlkbCBcCi0JJChXZWJDb3JlKS9maWxlYXBpL0VudHJ5QXJyYXkuaWRsIFwKLQkkKFdlYkNvcmUp
L2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuaWRsIFwKLQkkKFdlYkNvcmUpL2ZpbGVhcGkvRW50cnlD
YWxsYmFjay5pZGwgXAotCSQoV2ViQ29yZSkvZmlsZWFwaS9FbnRyeVN5bmMuaWRsIFwKKwkkKFdl
YkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5
c3RlbS9FbnRyeUFycmF5U3luYy5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVt
L0VudHJ5Q2FsbGJhY2suaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRy
eVN5bmMuaWRsIFwKIAkkKFdlYkNvcmUpL2ZpbGVhcGkvRXJyb3JDYWxsYmFjay5pZGwgXAogCSQo
V2ViQ29yZSkvZmlsZWFwaS9GaWxlQ2FsbGJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL2ZpbGVhcGkv
RmlsZUVudHJ5LmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDExMDY5NykKKysrIFNv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTY3MCwxMSArNjcwLDEx
IEBAIFNPVVJDRVMgKz0gXAogICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5
bmMuY3BwIFwKICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyLmNwcCBcCiAg
ICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwIFwKLSAgICBmaWxl
YXBpL0VudHJ5LmNwcCBcCi0gICAgZmlsZWFwaS9FbnRyeUFycmF5LmNwcCBcCi0gICAgZmlsZWFw
aS9FbnRyeUFycmF5U3luYy5jcHAgXAotICAgIGZpbGVhcGkvRW50cnlCYXNlLmNwcCBcCi0gICAg
ZmlsZWFwaS9FbnRyeVN5bmMuY3BwIFwKKyAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuY3Bw
IFwKKyAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5jcHAgXAorICAgIE1vZHVsZXMv
ZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5jcHAgXAorICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9F
bnRyeUJhc2UuY3BwIFwKKyAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmNwcCBcCiAg
ICAgZmlsZWFwaS9GaWxlLmNwcCBcCiAgICAgZmlsZWFwaS9GaWxlRW50cnkuY3BwIFwKICAgICBm
aWxlYXBpL0ZpbGVFbnRyeVN5bmMuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9u
IDExMDY5NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpA
QCAtODk0LDExICs4OTQsMTEgQEAKICAgICAgICAgICAgICdmaWxlYXBpL0RPTUZpbGVTeXN0ZW1T
eW5jLmlkbCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9ET01XaW5kb3dGaWxlU3lzdGVtLmlkbCcs
CiAgICAgICAgICAgICAnZmlsZWFwaS9FbnRyaWVzQ2FsbGJhY2suaWRsJywKLSAgICAgICAgICAg
ICdmaWxlYXBpL0VudHJ5LmlkbCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9FbnRyeUFycmF5Lmlk
bCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9FbnRyeUFycmF5U3luYy5pZGwnLAotICAgICAgICAg
ICAgJ2ZpbGVhcGkvRW50cnlDYWxsYmFjay5pZGwnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRW50
cnlTeW5jLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmlkbCcs
CisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaWRsJywKKyAgICAg
ICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuaWRsJywKKyAgICAgICAg
ICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFjay5pZGwnLAorICAgICAgICAgICAg
J01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaWRsJywKICAgICAgICAgICAgICdmaWxlYXBp
L0Vycm9yQ2FsbGJhY2suaWRsJywKICAgICAgICAgICAgICdmaWxlYXBpL0ZpbGUuaWRsJywKICAg
ICAgICAgICAgICdmaWxlYXBpL0ZpbGVDYWxsYmFjay5pZGwnLApJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuY3BwCShyZXZpc2lvbiAxMTA2MjEpCShmcm9t
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuY3BwOjExMDYyMSkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRW50cnkuaCIKKworI2lmIEVOQUJM
RShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUg
IkRpcmVjdG9yeUVudHJ5LmgiCisjaW5jbHVkZSAiRW50cnlDYWxsYmFjay5oIgorI2luY2x1ZGUg
IkVycm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJGaWxlRXJyb3IuaCIKKyNpbmNsdWRlICJGaWxl
U3lzdGVtQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgorI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgorI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitFbnRyeTo6RW50cnkoUGFzc1JlZlB0
cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkK
KyAgICA6IEVudHJ5QmFzZShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKK3sKK30KKwordm9pZCBFbnRy
eTo6Z2V0TWV0YWRhdGEoUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikKK3sKKyAgICBS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVmKTsKKyAg
ICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0TWV0YWRhdGEodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKSkKKyAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVy
cm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFM
SURfTU9ESUZJQ0FUSU9OX0VSUikpOworfQorCit2b2lkIEVudHJ5Ojptb3ZlVG8oUGFzc1JlZlB0
cjxEaXJlY3RvcnlFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8
RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2tSZWYpIGNvbnN0Cit7CisgICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFja1JlZik7CisgICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPm1v
dmUodGhpcywgcGFyZW50LmdldCgpLCBuYW1lLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2spKQorICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFj
ay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklD
QVRJT05fRVJSKSk7Cit9CisKK3ZvaWQgRW50cnk6OmNvcHlUbyhQYXNzUmVmUHRyPERpcmVjdG9y
eUVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFja1JlZikgY29uc3QKK3sKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
ayhlcnJvckNhbGxiYWNrUmVmKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Y29weSh0aGlzLCBw
YXJlbnQuZ2V0KCksIG5hbWUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCisgICAg
ICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLnJlbGVhc2Uo
KSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIp
KTsKK30KKwordm9pZCBFbnRyeTo6cmVtb3ZlKFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikg
Y29uc3QKK3sKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNh
bGxiYWNrUmVmKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVtb3ZlKHRoaXMsIHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCisgICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVD
YWxsYmFjayhlcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVy
cm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKK30KKwordm9pZCBFbnRyeTo6Z2V0UGFy
ZW50KFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYpIGNvbnN0Cit7CisgICAgUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFja1JlZik7CisgICAgaWYgKCFt
X2ZpbGVTeXN0ZW0tPmdldFBhcmVudCh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2spKQorICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFj
ay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklD
QVRJT05fRVJSKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeS5oCShyZXZpc2lvbiAxMTA2MjEpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RW50cnkuaDoxMTA2MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50
cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFbnRyeV9oCisjZGVm
aW5lIEVudHJ5X2gKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkRPTUZp
bGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJFbnRyeUJhc2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgRGlyZWN0b3J5RW50cnk7CitjbGFzcyBFbnRyeUNhbGxiYWNrOworY2xhc3Mg
RW50cnlTeW5jOworY2xhc3MgRXJyb3JDYWxsYmFjazsKK2NsYXNzIE1ldGFkYXRhQ2FsbGJhY2s7
CitjbGFzcyBWb2lkQ2FsbGJhY2s7CisKK2NsYXNzIEVudHJ5IDogcHVibGljIEVudHJ5QmFzZSB7
CitwdWJsaWM6CisgICAgRE9NRmlsZVN5c3RlbSogZmlsZXN5c3RlbSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PERPTUZpbGVTeXN0ZW0qPihtX2ZpbGVTeXN0ZW0uZ2V0KCkpOyB9CisKKyAg
ICB2b2lkIGdldE1ldGFkYXRhKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCk7
CisgICAgdm9pZCBtb3ZlVG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gcGFyZW50LCBjb25z
dCBTdHJpbmcmIG5hbWUgPSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sg
PSAwKSBjb25zdDsKKyAgICB2b2lkIGNvcHlUbyhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBw
YXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjayA9IDApIGNvbnN0OworICAgIHZvaWQgcmVtb3ZlKFBhc3NSZWZQdHI8Vm9pZENh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2sgPSAwKSBjb25zdDsKKyAgICB2b2lkIGdldFBhcmVudChQYXNzUmVmUHRyPEVu
dHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgRW50cnkoUGFz
c1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVN
KQorCisjZW5kaWYgLy8gRW50cnlfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0VudHJ5LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRW50cnkuaWRsCShyZXZpc2lvbiAxMTA2MjEpCShmcm9tIFNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRW50cnkuaWRsOjExMDYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9FbnRyeS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBz
dG9yYWdlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RF
TSwKKyAgICAgICAgQ3VzdG9tVG9KU09iamVjdCwKKyAgICAgICAgSlNOb1N0YXRpY1RhYmxlcwor
ICAgIF0gRW50cnkgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc0ZpbGU7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzRGlyZWN0b3J5OworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgZnVsbFBhdGg7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01GaWxlU3lzdGVtIGZpbGVzeXN0ZW07CisKKyAgICAgICAgdm9pZCBnZXRNZXRhZGF0YShpbiBb
Q2FsbGJhY2tdIE1ldGFkYXRhQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWws
IENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOworICAgICAgICB2b2lkIG1v
dmVUbyhpbiBEaXJlY3RvcnlFbnRyeSBwYXJlbnQsIGluIFtPcHRpb25hbCwgVHJlYXROdWxsQXM9
TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZSwg
aW4gW09wdGlvbmFsLCBDYWxsYmFja10gRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGlu
IFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CisgICAg
ICAgIHZvaWQgY29weVRvKGluIERpcmVjdG9yeUVudHJ5IHBhcmVudCwgaW4gW09wdGlvbmFsLCBU
cmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0
cmluZyBuYW1lLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFbnRyeUNhbGxiYWNrIHN1Y2Nlc3ND
YWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxi
YWNrKTsKKyAgICAgICAgRE9NU3RyaW5nIHRvVVJMKCk7CisgICAgICAgIHZvaWQgcmVtb3ZlKGlu
IFtDYWxsYmFja10gVm9pZENhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBD
YWxsYmFja10gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKKyAgICAgICAgdm9pZCBnZXRQ
YXJlbnQoaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJh
Y2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7
CisgICAgfTsKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRy
eUFycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRW50cnlBcnJheS5jcHAJKHJldmlzaW9uIDExMDYyMSkJKGZyb20gU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9FbnRyeUFycmF5LmNwcDoxMTA2MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFbnRyeUFycmF5LmgiCisKKyNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRW50cnlBcnJheTo6RW50
cnlBcnJheSgpCit7Cit9CisKK0VudHJ5KiBFbnRyeUFycmF5OjppdGVtKHVuc2lnbmVkIGluZGV4
KSBjb25zdAoreworICAgIGlmIChpbmRleCA+PSBtX2VudHJpZXMuc2l6ZSgpKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gbV9lbnRyaWVzW2luZGV4XS5nZXQoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaAkocmV2aXNpb24gMTEw
NjIxKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXkuaDoxMTA2MjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEVudHJ5QXJyYXlfaAorI2RlZmluZSBFbnRy
eUFycmF5X2gKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkVudHJ5Lmgi
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVudHJ5QXJyYXkgOiBwdWJsaWMgUmVm
Q291bnRlZDxFbnRyeUFycmF5PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RW50
cnlBcnJheT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRW50
cnlBcnJheSgpKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVy
biBtX2VudHJpZXMuc2l6ZSgpOyB9CisgICAgRW50cnkqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNv
bnN0OworICAgIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBQYXNzUmVmUHRyPEVudHJ5PiBlbnRy
eSk7CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2VudHJpZXMuaXNFbXB0
eSgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9lbnRyaWVzLmNsZWFyKCk7IH0KKyAgICB2b2lk
IGFwcGVuZChQYXNzUmVmUHRyPEVudHJ5PiBlbnRyeSkgeyBtX2VudHJpZXMuYXBwZW5kKGVudHJ5
KTsgfQorCitwcml2YXRlOgorICAgIEVudHJ5QXJyYXkoKTsKKworICAgIFZlY3RvcjxSZWZQdHI8
RW50cnk+ID4gbV9lbnRyaWVzOworfTsKKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIEVO
QUJMRShGSUxFX1NZU1RFTSkKKworI2VuZGlmIC8vIEVudHJ5QXJyYXlfaApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmlkbAkocmV2aXNp
b24gMTEwNjIxKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXkuaWRsOjEx
MDYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHN0b3JhZ2UgeworICAgIGlu
dGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAorICAgICAgICBJbmRl
eGVkR2V0dGVyLAorICAgICAgICBKU05vU3RhdGljVGFibGVzCisgICAgXSBFbnRyeUFycmF5IHsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAgICAg
ICBFbnRyeSBpdGVtKGluIFtJc0luZGV4XSB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICB9Owor
fQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5j
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50
cnlBcnJheVN5bmMuY3BwCShyZXZpc2lvbiAxMTA2MjEpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRW50cnlBcnJheVN5bmMuY3BwOjExMDYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFbnRyeUFycmF5U3luYy5oIgor
CisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiRW50cnlBcnJheS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8RW50cnlBcnJheVN5bmM+IEVudHJ5QXJy
YXlTeW5jOjpjcmVhdGUoRW50cnlBcnJheSogZW50cmllcykKK3sKKyAgICBSZWZQdHI8RW50cnlB
cnJheVN5bmM+IGVudHJpZXNTeW5jID0gYWRvcHRSZWYobmV3IEVudHJ5QXJyYXlTeW5jKCkpOwor
ICAgIGlmIChlbnRyaWVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbnRy
aWVzLT5sZW5ndGgoKTsgKytpKQorICAgICAgICAgICAgZW50cmllc1N5bmMtPmFwcGVuZChFbnRy
eVN5bmM6OmNyZWF0ZShlbnRyaWVzLT5pdGVtKGkpKSk7CisgICAgfQorICAgIHJldHVybiBlbnRy
aWVzU3luYy5yZWxlYXNlKCk7Cit9CisKK0VudHJ5QXJyYXlTeW5jOjpFbnRyeUFycmF5U3luYygp
Cit7Cit9CisKK0VudHJ5U3luYyogRW50cnlBcnJheVN5bmM6Oml0ZW0odW5zaWduZWQgaW5kZXgp
IGNvbnN0Cit7CisgICAgaWYgKGluZGV4ID49IG1fZW50cmllcy5zaXplKCkpCisgICAgICAgIHJl
dHVybiAwOworICAgIHJldHVybiBtX2VudHJpZXNbaW5kZXhdLmdldCgpOworfQorCit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuaAkocmV2aXNpb24gMTEwNjIxKQko
ZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmg6MTEwNjIxKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRW50cnlBcnJheVN5bmNfaAorI2RlZmlu
ZSBFbnRyeUFycmF5U3luY19oCisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRl
ICJFbnRyeVN5bmMuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRW50cnlBcnJh
eTsKKworY2xhc3MgRW50cnlBcnJheVN5bmMgOiBwdWJsaWMgUmVmQ291bnRlZDxFbnRyeUFycmF5
U3luYz4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVudHJ5QXJyYXlTeW5jPiBj
cmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbnRyeUFycmF5U3lu
YygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeUFycmF5U3luYz4gY3Jl
YXRlKEVudHJ5QXJyYXkqKTsKKworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fZW50cmllcy5zaXplKCk7IH0KKyAgICBFbnRyeVN5bmMqIGl0ZW0odW5zaWduZWQgaW5kZXgp
IGNvbnN0OworCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9lbnRyaWVzLmlz
RW1wdHkoKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZW50cmllcy5jbGVhcigpOyB9CisgICAg
dm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxFbnRyeVN5bmM+IGVudHJ5KSB7IG1fZW50cmllcy5hcHBl
bmQoZW50cnkpOyB9CisKK3ByaXZhdGU6CisgICAgRW50cnlBcnJheVN5bmMoKTsKKworICAgIFZl
Y3RvcjxSZWZQdHI8RW50cnlTeW5jPiA+IG1fZW50cmllczsKK307CisKK30KKworI2VuZGlmIC8v
IEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2VuZGlmIC8vIEVudHJ5QXJyYXlTeW5jX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlT
eW5jLmlkbAkocmV2aXNpb24gMTEwNjIxKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Vu
dHJ5QXJyYXlTeW5jLmlkbDoxMTA2MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRW50cnlBcnJheVN5bmMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitt
b2R1bGUgc3RvcmFnZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9RklM
RV9TWVNURU0sCisgICAgICAgIEluZGV4ZWRHZXR0ZXIsCisgICAgICAgIEpTTm9TdGF0aWNUYWJs
ZXMKKyAgICBdIEVudHJ5QXJyYXlTeW5jIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgbGVuZ3RoOworICAgICAgICBFbnRyeVN5bmMgaXRlbShpbiBbSXNJbmRleF0g
dW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgfTsKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUJhc2UuY3BwCShyZXZpc2lvbiAxMTA2MjEpCShm
cm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmNwcDoxMTA2MjEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlCYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVudHJ5QmFz
ZS5oIgorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiQXN5bmNGaWxlU3lz
dGVtLmgiCisjaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKKyNpbmNsdWRlICJET01GaWxlU3lzdGVt
QmFzZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitFbnRyeUJhc2U6OkVu
dHJ5QmFzZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBT
dHJpbmcmIGZ1bGxQYXRoKQorICAgIDogbV9maWxlU3lzdGVtKGZpbGVTeXN0ZW0pCisgICAgLCBt
X2Z1bGxQYXRoKGZ1bGxQYXRoKQorICAgICwgbV9uYW1lKERPTUZpbGVQYXRoOjpnZXROYW1lKGZ1
bGxQYXRoKSkKK3sKK30KKworRW50cnlCYXNlOjp+RW50cnlCYXNlKCkKK3sKK30KKworU3RyaW5n
IEVudHJ5QmFzZTo6dG9VUkwoKQoreworICAgIHJldHVybiBtX2ZpbGVTeXN0ZW0tPmFzeW5jRmls
ZVN5c3RlbSgpLT50b1VSTChtX2ZpbGVTeXN0ZW0tPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5n
KCksIG1fZnVsbFBhdGgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRW50cnlCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0VudHJ5QmFzZS5oCShyZXZpc2lvbiAxMTA2MjEpCShmcm9tIFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRW50cnlCYXNlLmg6MTEwNjIxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEVudHJ5QmFzZV9oCisjZGVmaW5lIEVudHJ5QmFzZV9oCisKKyNpZiBFTkFCTEUoRklM
RV9TWVNURU0pCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBET01GaWxlU3lzdGVtQmFzZTsKK2NsYXNzIEVudHJ5U3luYzsKKwor
Ly8gQSBjb21tb24gYmFzZSBjbGFzcyBmb3IgRW50cnkgYW5kIEVudHJ5U3luYy4KK2NsYXNzIEVu
dHJ5QmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPEVudHJ5QmFzZT4geworcHVibGljOgorICAgIHZp
cnR1YWwgfkVudHJ5QmFzZSgpOworCisgICAgRE9NRmlsZVN5c3RlbUJhc2UqIGZpbGVzeXN0ZW0o
KSBjb25zdCB7IHJldHVybiBtX2ZpbGVTeXN0ZW0uZ2V0KCk7IH0KKworICAgIHZpcnR1YWwgYm9v
bCBpc0ZpbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0Rp
cmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBjb25zdCBTdHJpbmcmIGZ1
bGxQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9mdWxsUGF0aDsgfQorICAgIGNvbnN0IFN0cmluZyYg
bmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorCisgICAgU3RyaW5nIHRvVVJMKCk7CisK
K3Byb3RlY3RlZDoKKyAgICBFbnRyeUJhc2UoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4s
IGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOworICAgIGZyaWVuZCBjbGFzcyBFbnRyeVN5bmM7CisK
KyAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IG1fZmlsZVN5c3RlbTsKKworICAgIC8vIFRo
aXMgaXMgYSB2aXJ0dWFsIHBhdGguCisgICAgU3RyaW5nIG1fZnVsbFBhdGg7CisKKyAgICBTdHJp
bmcgbV9uYW1lOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQorCisj
ZW5kaWYgLy8gRW50cnlCYXNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9FbnRyeUNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaAkocmV2aXNpb24gMTEwNjIxKQkoZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5Q2FsbGJhY2suaDoxMTA2MjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEVudHJ5Q2FsbGJhY2tfaAorI2RlZmluZSBFbnRyeUNhbGxi
YWNrX2gKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRW50cnk7CisKK2NsYXNzIEVu
dHJ5Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxFbnRyeUNhbGxiYWNrPiB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+RW50cnlDYWxsYmFjaygpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBoYW5k
bGVFdmVudChFbnRyeSopID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZiAvLyBF
TkFCTEUoRklMRV9TWVNURU0pCisKKyNlbmRpZiAvLyBFbnRyeUNhbGxiYWNrX2gKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUNhbGxiYWNrLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFjay5p
ZGwJKHJldmlzaW9uIDExMDYyMSkJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUNh
bGxiYWNrLmlkbDoxMTA2MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RW50cnlDYWxsYmFjay5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBz
dG9yYWdlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RF
TSwKKyAgICAgICAgQ2FsbGJhY2sKKyAgICBdIEVudHJ5Q2FsbGJhY2sgeworICAgICAgICBib29s
ZWFuIGhhbmRsZUV2ZW50KGluIEVudHJ5IGVudHJ5KTsKKyAgICB9OworfQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5jcHAJKHJldmlzaW9u
IDExMDYyMSkJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeVN5bmMuY3BwOjExMDYy
MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkVudHJ5U3luYy5oIgorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAi
RE9NRmlsZVBhdGguaCIKKyNpbmNsdWRlICJET01GaWxlU3lzdGVtU3luYy5oIgorI2luY2x1ZGUg
IkRpcmVjdG9yeUVudHJ5LmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlTeW5jLmgiCisjaW5j
bHVkZSAiRmlsZUVudHJ5U3luYy5oIgorI2luY2x1ZGUgIkZpbGVFeGNlcHRpb24uaCIKKyNpbmNs
dWRlICJNZXRhZGF0YS5oIgorI2luY2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8RW50cnlTeW5jPiBFbnRyeVN5bmM6OmNyZWF0
ZShFbnRyeUJhc2UqIGVudHJ5KQoreworICAgIGlmIChlbnRyeS0+aXNGaWxlKCkpCisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgRmlsZUVudHJ5U3luYyhlbnRyeS0+bV9maWxlU3lzdGVtLCBl
bnRyeS0+bV9mdWxsUGF0aCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlyZWN0b3J5RW50
cnlTeW5jKGVudHJ5LT5tX2ZpbGVTeXN0ZW0sIGVudHJ5LT5tX2Z1bGxQYXRoKSk7Cit9CisKK1Bh
c3NSZWZQdHI8TWV0YWRhdGE+IEVudHJ5U3luYzo6Z2V0TWV0YWRhdGEoRXhjZXB0aW9uQ29kZSYg
ZWMpCit7CisgICAgZWMgPSAwOworICAgIE1ldGFkYXRhU3luY0NhbGxiYWNrSGVscGVyIGhlbHBl
cihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKKyAgICBpZiAoIW1fZmlsZVN5c3Rl
bS0+Z2V0TWV0YWRhdGEodGhpcywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJy
b3JDYWxsYmFjaygpKSkgeworICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9E
SUZJQ0FUSU9OX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBoZWxw
ZXIuZ2V0UmVzdWx0KGVjKTsKK30KKworUGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6
bW92ZVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBwYXJlbnQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgZWMgPSAwOworICAgIEVu
dHJ5U3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3Rl
bSgpKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+bW92ZSh0aGlzLCBwYXJlbnQuZ2V0KCksIG5h
bWUsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsK
KyAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7
Cit9CisKK1Bhc3NSZWZQdHI8RW50cnlTeW5jPiBFbnRyeVN5bmM6OmNvcHlUbyhQYXNzUmVmUHRy
PERpcmVjdG9yeUVudHJ5U3luYz4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKSBjb25zdAoreworICAgIGVjID0gMDsKKyAgICBFbnRyeVN5bmNDYWxsYmFja0hl
bHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5hc3luY0ZpbGVTeXN0ZW0oKSk7CisgICAgaWYgKCFt
X2ZpbGVTeXN0ZW0tPmNvcHkodGhpcywgcGFyZW50LmdldCgpLCBuYW1lLCBoZWxwZXIuc3VjY2Vz
c0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7CisgICAgICAgIGVjID0gRmls
ZUV4Y2VwdGlvbjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisgICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1bHQoZWMpOworfQorCit2b2lkIEVudHJ5
U3luYzo6cmVtb3ZlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAoreworICAgIGVjID0gMDsKKyAg
ICBWb2lkU3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5
c3RlbSgpKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVtb3ZlKHRoaXMsIGhlbHBlci5zdWNj
ZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKKyAgICAgICAgZWMgPSBG
aWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgaGVscGVyLmdldFJlc3VsdChlYyk7Cit9CisKK1Bhc3NSZWZQdHI8RW50cnlT
eW5jPiBFbnRyeVN5bmM6OmdldFBhcmVudCgpIGNvbnN0Cit7CisgICAgLy8gU3luYyB2ZXJpb24g
b2YgZ2V0UGFyZW50IGRvZXNuJ3QgdGhyb3cgZXhjZXB0aW9ucy4KKyAgICBTdHJpbmcgcGFyZW50
UGF0aCA9IERPTUZpbGVQYXRoOjpnZXREaXJlY3RvcnkoZnVsbFBhdGgoKSk7CisgICAgcmV0dXJu
IERpcmVjdG9yeUVudHJ5U3luYzo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwgcGFyZW50UGF0aCk7Cit9
CisKK0VudHJ5U3luYzo6RW50cnlTeW5jKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZp
bGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCisgICAgOiBFbnRyeUJhc2UoZmlsZVN5
c3RlbSwgZnVsbFBhdGgpCit7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RF
TSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5j
LmgJKHJldmlzaW9uIDExMDYyMSkJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeVN5
bmMuaDoxMTA2MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlT
eW5jLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRW50cnlTeW5jX2gK
KyNkZWZpbmUgRW50cnlTeW5jX2gKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1
ZGUgIkRPTUZpbGVTeXN0ZW1TeW5jLmgiCisjaW5jbHVkZSAiRW50cnlCYXNlLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGly
ZWN0b3J5RW50cnlTeW5jOworY2xhc3MgTWV0YWRhdGE7CisKK3R5cGVkZWYgaW50IEV4Y2VwdGlv
bkNvZGU7CisKK2NsYXNzIEVudHJ5U3luYyA6IHB1YmxpYyBFbnRyeUJhc2UgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVudHJ5U3luYz4gY3JlYXRlKEVudHJ5QmFzZSopOworCisg
ICAgRE9NRmlsZVN5c3RlbVN5bmMqIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxET01GaWxlU3lzdGVtU3luYyo+KG1fZmlsZVN5c3RlbS5nZXQoKSk7IH0KKworICAgIFBh
c3NSZWZQdHI8TWV0YWRhdGE+IGdldE1ldGFkYXRhKEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNz
UmVmUHRyPEVudHJ5U3luYz4gbW92ZVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBw
YXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgIFBh
c3NSZWZQdHI8RW50cnlTeW5jPiBjb3B5VG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+
IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAg
dm9pZCByZW1vdmUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8RW50cnlT
eW5jPiBnZXRQYXJlbnQoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIEVudHJ5U3luYyhQYXNz
UmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNlbmRpZiAvLyBFbnRyeVN5
bmNfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5
U3luYy5pZGwJKHJldmlzaW9uIDExMDYyMSkJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9F
bnRyeVN5bmMuaWRsOjExMDYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeVN5bmMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgc3Rv
cmFnZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0s
CisgICAgICAgIEN1c3RvbVRvSlNPYmplY3QsCisgICAgICAgIEpTTm9TdGF0aWNUYWJsZXMKKyAg
ICBdIEVudHJ5U3luYyB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzRmls
ZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNEaXJlY3Rvcnk7CisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBmdWxsUGF0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTUZpbGVTeXN0ZW1TeW5jIGZpbGVzeXN0ZW07CisKKyAgICAgICAgTWV0YWRhdGEgZ2V0TWV0
YWRhdGEoKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOworICAgICAgICBFbnRyeVN5bmMgbW92ZVRv
KGluIERpcmVjdG9yeUVudHJ5U3luYyBwYXJlbnQsIGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5n
LCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBuYW1lKSByYWlzZXMgKEZp
bGVFeGNlcHRpb24pOworICAgICAgICBFbnRyeVN5bmMgY29weVRvKGluIERpcmVjdG9yeUVudHJ5
U3luYyBwYXJlbnQsIGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFz
PU51bGxTdHJpbmddIERPTVN0cmluZyBuYW1lKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOworICAg
ICAgICBET01TdHJpbmcgdG9VUkwoKTsKKyAgICAgICAgdm9pZCByZW1vdmUoKSByYWlzZXMgKEZp
bGVFeGNlcHRpb24pOworICAgICAgICBEaXJlY3RvcnlFbnRyeVN5bmMgZ2V0UGFyZW50KCk7Cisg
ICAgfTsKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCShyZXZpc2lvbiAxMTA2OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjQwOTIsNiArMjQwOTIsNDYgQEAK
IAkJCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXERpcmVjdG9y
eVJlYWRlclN5bmMuaCIKIAkJCQkgICAgICAgID4KIAkJCSAgICAgICAgPC9GaWxlPgorCQkJICAg
ICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0
ZW1cRW50cnkuY3BwIgorCQkJCSAgICAgICAgPgorCQkJICAgICAgICA8L0ZpbGU+CisJCQkgICAg
ICAgIDxGaWxlCisJCQkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3Rl
bVxFbnRyeS5oIgorCQkJCSAgICAgICAgPgorCQkJICAgICAgICA8L0ZpbGU+CisJCQkgICAgICAg
IDxGaWxlCisJCQkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxF
bnRyeUFycmF5LmNwcCIKKwkJCQkgICAgICAgID4KKwkJCSAgICAgICAgPC9GaWxlPgorCQkJICAg
ICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0
ZW1cRW50cnlBcnJheS5oIgorCQkJCSAgICAgICAgPgorCQkJICAgICAgICA8L0ZpbGU+CisJCQkg
ICAgICAgIDxGaWxlCisJCQkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5
c3RlbVxFbnRyeUFycmF5U3luYy5jcHAiCisJCQkJICAgICAgICA+CisJCQkgICAgICAgIDwvRmls
ZT4KKwkJCSAgICAgICAgPEZpbGUKKwkJCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cTW9kdWxl
c1xmaWxlc3lzdGVtXEVudHJ5QXJyYXlTeW5jLmgiCisJCQkJICAgICAgICA+CisJCQkgICAgICAg
IDwvRmlsZT4KKwkJCSAgICAgICAgPEZpbGUKKwkJCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5c
TW9kdWxlc1xmaWxlc3lzdGVtXEVudHJ5QmFzZS5oIgorCQkJCSAgICAgICAgPgorCQkJICAgICAg
ICA8L0ZpbGU+CisJCQkgICAgICAgIDxGaWxlCisJCQkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4u
XE1vZHVsZXNcZmlsZXN5c3RlbVxFbnRyeUNhbGxiYWNrLmgiCisJCQkJICAgICAgICA+CisJCQkg
ICAgICAgIDwvRmlsZT4KKwkJCSAgICAgICAgPEZpbGUKKwkJCQkgICAgICAgIFJlbGF0aXZlUGF0
aD0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEVudHJ5U3luYy5jcHAiCisJCQkJICAgICAgICA+CisJ
CQkgICAgICAgIDwvRmlsZT4KKwkJCSAgICAgICAgPEZpbGUKKwkJCQkgICAgICAgIFJlbGF0aXZl
UGF0aD0iLi5cTW9kdWxlc1xmaWxlc3lzdGVtXEVudHJ5U3luYy5oIgorCQkJCSAgICAgICAgPgor
CQkJICAgICAgICA8L0ZpbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbHRlcj4KIAkJ
CTxGaWx0ZXIKIAkJCQlOYW1lPSJnZW9sb2NhdGlvbiIKQEAgLTU2OTUwLDQ2ICs1Njk5MCw2IEBA
CiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVh
cGlcRW50cnkuY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQ
YXRoPSIuLlxmaWxlYXBpXEVudHJ5LmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcRW50cnlBcnJheS5jcHAiCi0JCQkJPgotCQkJPC9G
aWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcRW50cnlBcnJheS5o
IgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxl
YXBpXEVudHJ5QXJyYXlTeW5jLmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxFbnRyeUFycmF5U3luYy5oIgotCQkJCT4KLQkJCTwv
RmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXEVudHJ5QmFzZS5o
IgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxl
YXBpXEVudHJ5Q2FsbGJhY2suaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJl
bGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxFbnRyeVN5bmMuY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4K
LQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXEVudHJ5U3luYy5oIgotCQkJ
CT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXEVy
cm9yQ2FsbGJhY2suaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTA2OTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTk4MDEsMTEgKzk4MDEsMTEgQEAKIAkJODkzQzQ3RjUxMjQ4QkQzOTAw
MkIzRDg2IC8qIERPTUZpbGVTeXN0ZW1CYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERPTUZpbGVTeXN0ZW1CYXNlLmg7IHBhdGggPSBmaWxlYXBpL0RPTUZpbGVTeXN0ZW1C
YXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5M0M0N0Y2MTI0OEJEMzkwMDJC
M0Q4NiAvKiBET01GaWxlU3lzdGVtU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBET01GaWxlU3lzdGVtU3luYy5jcHA7IHBhdGggPSBmaWxlYXBpL0RPTUZpbGVT
eXN0ZW1TeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkzQzQ3RjcxMjQ4
QkQzOTAwMkIzRDg2IC8qIERPTUZpbGVTeXN0ZW1TeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERPTUZpbGVTeXN0ZW1TeW5jLmg7IHBhdGggPSBmaWxlYXBpL0RPTUZpbGVT
eXN0ZW1TeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0Y4MTI0OEJE
MzkwMDJCM0Q4NiAvKiBFbnRyeUFycmF5U3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBFbnRyeUFycmF5U3luYy5jcHA7IHBhdGggPSBmaWxlYXBpL0VudHJ5QXJy
YXlTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODkzQzQ3RjkxMjQ4QkQz
OTAwMkIzRDg2IC8qIEVudHJ5QXJyYXlTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEVudHJ5QXJyYXlTeW5jLmg7IHBhdGggPSBmaWxlYXBpL0VudHJ5QXJyYXlTeW5jLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0ZCMTI0OEJEMzkwMDJCM0Q4NiAv
KiBFbnRyeUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRW50cnlCYXNl
Lmg7IHBhdGggPSBmaWxlYXBpL0VudHJ5QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk4OTNDNDdGQzEyNDhCRDM5MDAyQjNEODYgLyogRW50cnlTeW5jLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEVudHJ5U3luYy5jcHA7IHBhdGggPSBmaWxlYXBp
L0VudHJ5U3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0ZEMTI0
OEJEMzkwMDJCM0Q4NiAvKiBFbnRyeVN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRW50cnlTeW5jLmg7IHBhdGggPSBmaWxlYXBpL0VudHJ5U3luYy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4OTNDNDdGODEyNDhCRDM5MDAyQjNEODYgLyogRW50cnlBcnJh
eVN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRW50cnlBcnJh
eVN5bmMuY3BwOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODkzQzQ3RjkxMjQ4QkQzOTAwMkIzRDg2IC8q
IEVudHJ5QXJyYXlTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEVudHJ5
QXJyYXlTeW5jLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5bmMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODkzQzQ3RkIxMjQ4QkQzOTAwMkIzRDg2IC8q
IEVudHJ5QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBFbnRyeUJhc2Uu
aDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUJhc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODkzQzQ3RkMxMjQ4QkQzOTAwMkIzRDg2IC8qIEVudHJ5U3luYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBFbnRyeVN5bmMuY3BwOyBwYXRo
ID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTg5M0M0N0ZEMTI0OEJEMzkwMDJCM0Q4NiAvKiBFbnRyeVN5bmMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRW50cnlTeW5jLmg7IHBhdGggPSBNb2R1bGVzL2Zp
bGVzeXN0ZW0vRW50cnlTeW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5M0M0
N0ZFMTI0OEJEMzkwMDJCM0Q4NiAvKiBGaWxlRW50cnlTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZpbGVFbnRyeVN5bmMuY3BwOyBwYXRoID0gZmlsZWFwaS9G
aWxlRW50cnlTeW5jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkzQzQ3RkYx
MjQ4QkQzOTAwMkIzRDg2IC8qIEZpbGVFbnRyeVN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gRmlsZUVudHJ5U3luYy5oOyBwYXRoID0gZmlsZWFwaS9GaWxlRW50cnlTeW5j
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5M0M0ODIwMTI0OTUzNUIwMDJCM0Q4
NiAvKiBKU0RpcmVjdG9yeUVudHJ5U3luY0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0RpcmVjdG9yeUVudHJ5U3luY0N1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05ODMxLDExICs5ODMxLDExIEBACiAJCTg5ODc4NTNGMTIy
Q0EwNjQwMDNBQUJEQSAvKiBET01GaWxlU3lzdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERPTUZpbGVTeXN0ZW0uY3BwOyBwYXRoID0gZmlsZWFwaS9ET01GaWxl
U3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODk4Nzg1NDAxMjJDQTA2
NDAwM0FBQkRBIC8qIERPTUZpbGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRE9NRmlsZVN5c3RlbS5oOyBwYXRoID0gZmlsZWFwaS9ET01GaWxlU3lzdGVtLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5ODc4NTQxMTIyQ0EwNjQwMDNBQUJEQSAvKiBF
bnRyaWVzQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRW50cmll
c0NhbGxiYWNrLmg7IHBhdGggPSBmaWxlYXBpL0VudHJpZXNDYWxsYmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODU0MjEyMkNBMDY0MDAzQUFCREEgLyogRW50cnkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRW50cnkuY3BwOyBwYXRoID0g
ZmlsZWFwaS9FbnRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5ODc4NTQz
MTIyQ0EwNjQwMDNBQUJEQSAvKiBFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBFbnRyeS5oOyBwYXRoID0gZmlsZWFwaS9FbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk4OTg3ODU0NDEyMkNBMDY0MDAzQUFCREEgLyogRW50cnlBcnJheS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBFbnRyeUFycmF5LmNwcDsgcGF0aCA9
IGZpbGVhcGkvRW50cnlBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5
ODc4NTQ1MTIyQ0EwNjQwMDNBQUJEQSAvKiBFbnRyeUFycmF5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEVudHJ5QXJyYXkuaDsgcGF0aCA9IGZpbGVhcGkvRW50cnlBcnJheS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODU0NjEyMkNBMDY0MDAzQUFCREEg
LyogRW50cnlDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBFbnRy
eUNhbGxiYWNrLmg7IHBhdGggPSBmaWxlYXBpL0VudHJ5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODk4Nzg1NDIxMjJDQTA2NDAwM0FBQkRBIC8qIEVudHJ5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEVudHJ5LmNwcDsgcGF0aCA9IE1v
ZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg5ODc4NTQzMTIyQ0EwNjQwMDNBQUJEQSAvKiBFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBFbnRyeS5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5ODc4NTQ0MTIyQ0EwNjQwMDNBQUJEQSAv
KiBFbnRyeUFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEVu
dHJ5QXJyYXkuY3BwOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTg3ODU0NTEyMkNBMDY0MDAzQUFCREEgLyog
RW50cnlBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBFbnRyeUFycmF5
Lmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4OTg3ODU0NjEyMkNBMDY0MDAzQUFCREEgLyogRW50cnlDYWxsYmFj
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBFbnRyeUNhbGxiYWNrLmg7IHBh
dGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4OTg3ODU0NzEyMkNBMDY0MDAzQUFCREEgLyogRXJyb3JDYWxsYmFjay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBFcnJvckNhbGxiYWNrLmg7IHBhdGgg
PSBmaWxlYXBpL0Vycm9yQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODk4Nzg1NDgxMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVFbnRyeS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGaWxlRW50cnkuY3BwOyBwYXRoID0gZmlsZWFwaS9GaWxl
RW50cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTg3ODU0OTEyMkNBMDY0
MDAzQUFCREEgLyogRmlsZUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEZpbGVFbnRyeS5oOyBwYXRoID0gZmlsZWFwaS9GaWxlRW50cnkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTEyNzI1LDcgKzEyNzI1LDcgQEAKIAkJQzZGMDkwMjUxNDMyN0Q0RjAw
Njg1ODQ5IC8qIEpTV2ViS2l0TXV0YXRpb25PYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzZGMDkxN0UxNDNBMkJCOTAwNjg1ODQ5IC8qIEpTV2ViS2l0TXV0YXRp
b25PYnNlcnZlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1dlYktpdE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDNkYwOTE4NDE0M0E2QzNCMDA2ODU4NDkgLyogSlNNdXRhdGlvbkNhbGxiYWNr
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTXV0YXRp
b25DYWxsYmFja0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUM2RjQx
MDQ2MTMwQzZFODkwMDM5M0RFNCAvKiBFbnRyeUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gRW50cnlCYXNlLmNwcDsgcGF0aCA9IGZpbGVhcGkvRW50cnlCYXNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNDEwNDYxMzBDNkU4OTAwMzkz
REU0IC8qIEVudHJ5QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBFbnRyeUJhc2UuY3BwOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QmFzZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0JGNjdCMTBEOTlCQUUwMEU2Q0U1MyAv
KiBTY3JvbGxBbmltYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY3JvbGxBbmltYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0JG
NjdEMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTY3JvbGxBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDQUU5RjkwRDE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NBc3BlY3RSYXRpb1Zh
bHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTA5LDExICsxMjkwOSwx
MSBAQAogCQlFMUFCMUVBRTE0RTlFMzBCMDA0NDlFMTMgLyogRGlyZWN0b3J5UmVhZGVyU3luYy5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyU3luYy5pZGw7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxQUIxRUFGMTRFOUUzMTcwMDQ0OUUxMyAvKiBET01GaWxlU3lzdGVtU3luYy5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0g
RE9NRmlsZVN5c3RlbVN5bmMuaWRsOyBwYXRoID0gZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUIxRUIwMTRFOUUzMjMwMDQ0OUUx
MyAvKiBFbnRyaWVzQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEVudHJpZXNDYWxsYmFjay5pZGw7IHBhdGgg
PSBmaWxlYXBpL0VudHJpZXNDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUUxQUIxRUIxMTRFOUUzMkEwMDQ0OUUxMyAvKiBFbnRyeS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRW50cnkuaWRs
OyBwYXRoID0gZmlsZWFwaS9FbnRyeS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUUxQUIxRUIyMTRFOUUzMzIwMDQ0OUUxMyAvKiBFbnRyeUFycmF5LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBFbnRyeUFy
cmF5LmlkbDsgcGF0aCA9IGZpbGVhcGkvRW50cnlBcnJheS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUUxQUIxRUIzMTRFOUUzMzkwMDQ0OUUxMyAvKiBFbnRyeUFycmF5U3luYy5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gRW50cnlBcnJheVN5bmMuaWRsOyBwYXRoID0gZmlsZWFwaS9FbnRyeUFycmF5U3lu
Yy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQUIxRUI0MTRFOUUzNDUwMDQ0
OUUxMyAvKiBFbnRyeUNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBFbnRyeUNhbGxiYWNrLmlkbDsgcGF0aCA9
IGZpbGVhcGkvRW50cnlDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUUxQUIxRUI1MTRFOUUzNEIwMDQ0OUUxMyAvKiBFbnRyeVN5bmMuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEVudHJ5U3lu
Yy5pZGw7IHBhdGggPSBmaWxlYXBpL0VudHJ5U3luYy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUxQUIxRUIxMTRFOUUzMkEwMDQ0OUUxMyAvKiBFbnRyeS5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRW50
cnkuaWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTFBQjFFQjIxNEU5RTMzMjAwNDQ5RTEzIC8qIEVudHJ5QXJyYXku
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgbmFtZSA9IEVudHJ5QXJyYXkuaWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5
QXJyYXkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUFCMUVCMzE0RTlFMzM5
MDA0NDlFMTMgLyogRW50cnlBcnJheVN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEVudHJ5QXJyYXlTeW5jLmlkbDsg
cGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUxQUIxRUI0MTRFOUUzNDUwMDQ0OUUxMyAvKiBFbnRyeUNhbGxi
YWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IG5hbWUgPSBFbnRyeUNhbGxiYWNrLmlkbDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeUNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFBQjFF
QjUxNEU5RTM0QjAwNDQ5RTEzIC8qIEVudHJ5U3luYy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRW50cnlTeW5jLmlkbDsg
cGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMUFCMUVCNjE0RTlFMzUyMDA0NDlFMTMgLyogRXJyb3JDYWxsYmFjay5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gRXJyb3JDYWxsYmFjay5pZGw7IHBhdGggPSBmaWxlYXBpL0Vycm9yQ2FsbGJhY2su
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVCNzE0RTlFMzU4MDA0NDlF
MTMgLyogRmlsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmlsZS5pZGw7IHBhdGggPSBmaWxlYXBpL0ZpbGUuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVCODE0RTlFMzYyMDA0NDlFMTMgLyog
RmlsZUNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGaWxlQ2FsbGJhY2suaWRsOyBwYXRoID0gZmlsZWFwaS9G
aWxlQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9FbnRyeS5jcHAJKHJldmlzaW9uIDExMDYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkVudHJ5LmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0K
LSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5o
IgotI2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgi
Ci0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrcy5o
IgotI2luY2x1ZGUgIk1ldGFkYXRhQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJWb2lk
Q2FsbGJhY2suaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotRW50cnk6OkVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJh
c2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCi0gICAgOiBFbnRyeUJhc2Uo
ZmlsZVN5c3RlbSwgZnVsbFBhdGgpCi17Ci19Ci0KLXZvaWQgRW50cnk6OmdldE1ldGFkYXRhKFBh
c3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYpCi17Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFja1JlZik7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0
ZW0tPmdldE1ldGFkYXRhKHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCi0g
ICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLnJlbGVh
c2UoKSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9F
UlIpKTsKLX0KLQotdm9pZCBFbnRyeTo6bW92ZVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+
IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrUmVm
KSBjb25zdAotewotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKGVycm9y
Q2FsbGJhY2tSZWYpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5tb3ZlKHRoaXMsIHBhcmVudC5n
ZXQoKSwgbmFtZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkKLSAgICAgICAgZmls
ZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxl
RXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwotfQot
Ci12b2lkIEVudHJ5Ojpjb3B5VG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gcGFyZW50LCBj
b25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYpIGNvbnN0Ci17
Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFja1Jl
Zik7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmNvcHkodGhpcywgcGFyZW50LmdldCgpLCBuYW1l
LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQotICAgICAgICBmaWxlc3lzdGVtKCkt
PnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3Jl
YXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci19Ci0KLXZvaWQgRW50
cnk6OnJlbW92ZShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYpIGNvbnN0Ci17Ci0gICAgUmVm
UHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFja1JlZik7Ci0gICAg
aWYgKCFtX2ZpbGVTeXN0ZW0tPnJlbW92ZSh0aGlzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2Fs
bGJhY2spKQotICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxs
YmFjay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJ
RklDQVRJT05fRVJSKSk7Ci19Ci0KLXZvaWQgRW50cnk6OmdldFBhcmVudChQYXNzUmVmUHRyPEVu
dHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrUmVmKSBjb25zdAotewotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXRQ
YXJlbnQodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkKLSAgICAgICAgZmls
ZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxl
RXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5oCShyZXZpc2lvbiAxMTA2MjEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0VudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgRW50cnlfaAotI2RlZmluZSBFbnRyeV9oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0p
Ci0KLSNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiRW50cnlCYXNlLmgiCi0j
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERpcmVjdG9yeUVudHJ5OwotY2xhc3MgRW50
cnlDYWxsYmFjazsKLWNsYXNzIEVudHJ5U3luYzsKLWNsYXNzIEVycm9yQ2FsbGJhY2s7Ci1jbGFz
cyBNZXRhZGF0YUNhbGxiYWNrOwotY2xhc3MgVm9pZENhbGxiYWNrOwotCi1jbGFzcyBFbnRyeSA6
IHB1YmxpYyBFbnRyeUJhc2UgewotcHVibGljOgotICAgIERPTUZpbGVTeXN0ZW0qIGZpbGVzeXN0
ZW0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxET01GaWxlU3lzdGVtKj4obV9maWxlU3lz
dGVtLmdldCgpKTsgfQotCi0gICAgdm9pZCBnZXRNZXRhZGF0YShQYXNzUmVmUHRyPE1ldGFkYXRh
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4g
ZXJyb3JDYWxsYmFjayA9IDApOwotICAgIHZvaWQgbW92ZVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5
RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lID0gU3RyaW5nKCksIFBhc3NSZWZQdHI8
RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrID0gMCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8oUGFzc1JlZlB0
cjxEaXJlY3RvcnlFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUgPSBTdHJpbmcoKSwg
UGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKSBjb25zdDsKLSAgICB2b2lkIHJlbW92
ZShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCkgY29uc3Q7Ci0gICAgdm9pZCBnZXRQ
YXJlbnQoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKSBjb25zdDsKLQotcHJvdGVj
dGVkOgotICAgIEVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25zdCBTdHJp
bmcmIGZ1bGxQYXRoKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIEVudHJ5X2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRW50cnkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRW50cnkuaWRsCShyZXZpc2lvbiAxMTA2MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0VudHJ5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHN0b3Jh
Z2UgewotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAot
ICAgICAgICBDdXN0b21Ub0pTT2JqZWN0LAotICAgICAgICBKU05vU3RhdGljVGFibGVzCi0gICAg
XSBFbnRyeSB7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzRmlsZTsKLSAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNEaXJlY3Rvcnk7Ci0gICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBmdWxsUGF0aDsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTUZp
bGVTeXN0ZW0gZmlsZXN5c3RlbTsKLQotICAgICAgICB2b2lkIGdldE1ldGFkYXRhKGluIFtDYWxs
YmFja10gTWV0YWRhdGFDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2Fs
bGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgIHZvaWQgbW92ZVRv
KGluIERpcmVjdG9yeUVudHJ5IHBhcmVudCwgaW4gW09wdGlvbmFsLCBUcmVhdE51bGxBcz1OdWxs
U3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBuYW1lLCBpbiBb
T3B0aW9uYWwsIENhbGxiYWNrXSBFbnRyeUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW09w
dGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLSAgICAgICAg
dm9pZCBjb3B5VG8oaW4gRGlyZWN0b3J5RW50cnkgcGFyZW50LCBpbiBbT3B0aW9uYWwsIFRyZWF0
TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5n
IG5hbWUsIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxi
YWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2sp
OwotICAgICAgICBET01TdHJpbmcgdG9VUkwoKTsKLSAgICAgICAgdm9pZCByZW1vdmUoaW4gW0Nh
bGxiYWNrXSBWb2lkQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWwsIENhbGxi
YWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwotICAgICAgICB2b2lkIGdldFBhcmVu
dChpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFbnRyeUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywg
aW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLSAg
ICB9OwotfQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXkuY3BwCShyZXZpc2lv
biAxMTA2MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
RW50cnlBcnJheS5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLUVudHJ5QXJyYXk6OkVudHJ5QXJyYXkoKQotewotfQotCi1FbnRyeSogRW50cnlB
cnJheTo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKLXsKLSAgICBpZiAoaW5kZXggPj0gbV9l
bnRyaWVzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fZW50cmllc1tp
bmRleF0uZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklM
RV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXkuaAkocmV2aXNpb24g
MTEwNjIxKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRW50cnlBcnJheV9oCi0jZGVmaW5lIEVudHJ5
QXJyYXlfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRW50cnkuaCIK
LSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRW50cnlBcnJheSA6IHB1YmxpYyBSZWZD
b3VudGVkPEVudHJ5QXJyYXk+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRy
eUFycmF5PiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbnRy
eUFycmF5KCkpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fZW50cmllcy5zaXplKCk7IH0KLSAgICBFbnRyeSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29u
c3Q7Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIFBhc3NSZWZQdHI8RW50cnk+IGVudHJ5
KTsKLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cmllcy5pc0VtcHR5
KCk7IH0KLSAgICB2b2lkIGNsZWFyKCkgeyBtX2VudHJpZXMuY2xlYXIoKTsgfQotICAgIHZvaWQg
YXBwZW5kKFBhc3NSZWZQdHI8RW50cnk+IGVudHJ5KSB7IG1fZW50cmllcy5hcHBlbmQoZW50cnkp
OyB9Ci0KLXByaXZhdGU6Ci0gICAgRW50cnlBcnJheSgpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxF
bnRyeT4gPiBtX2VudHJpZXM7Ci19OwotCi19IC8vIG5hbWVzcGFjZQotCi0jZW5kaWYgLy8gRU5B
QkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRW50cnlBcnJheV9oCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRW50cnlBcnJheS5pZGwJKHJldmlzaW9uIDExMDYyMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsNDAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLW1vZHVsZSBzdG9yYWdlIHsKLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25h
bD1GSUxFX1NZU1RFTSwKLSAgICAgICAgSW5kZXhlZEdldHRlciwKLSAgICAgICAgSlNOb1N0YXRp
Y1RhYmxlcwotICAgIF0gRW50cnlBcnJheSB7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICAgICAgRW50cnkgaXRlbShpbiBbSXNJbmRleF0gdW5z
aWduZWQgbG9uZyBpbmRleCk7Ci0gICAgfTsKLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRW50cnlBcnJheVN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRW50cnlBcnJheVN5bmMuY3BwCShyZXZpc2lvbiAxMTA2MjEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkVudHJ5QXJyYXlTeW5jLmgiCi0KLSNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJFbnRyeUFycmF5LmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotUGFzc1JlZlB0cjxFbnRyeUFycmF5U3luYz4gRW50cnlBcnJheVN5
bmM6OmNyZWF0ZShFbnRyeUFycmF5KiBlbnRyaWVzKQotewotICAgIFJlZlB0cjxFbnRyeUFycmF5
U3luYz4gZW50cmllc1N5bmMgPSBhZG9wdFJlZihuZXcgRW50cnlBcnJheVN5bmMoKSk7Ci0gICAg
aWYgKGVudHJpZXMpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVudHJpZXMt
Pmxlbmd0aCgpOyArK2kpCi0gICAgICAgICAgICBlbnRyaWVzU3luYy0+YXBwZW5kKEVudHJ5U3lu
Yzo6Y3JlYXRlKGVudHJpZXMtPml0ZW0oaSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGVudHJpZXNT
eW5jLnJlbGVhc2UoKTsKLX0KLQotRW50cnlBcnJheVN5bmM6OkVudHJ5QXJyYXlTeW5jKCkKLXsK
LX0KLQotRW50cnlTeW5jKiBFbnRyeUFycmF5U3luYzo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29u
c3QKLXsKLSAgICBpZiAoaW5kZXggPj0gbV9lbnRyaWVzLnNpemUoKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgcmV0dXJuIG1fZW50cmllc1tpbmRleF0uZ2V0KCk7Ci19Ci0KLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50
cnlBcnJheVN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5
QXJyYXlTeW5jLmgJKHJldmlzaW9uIDExMDYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RW50cnlBcnJheVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBF
bnRyeUFycmF5U3luY19oCi0jZGVmaW5lIEVudHJ5QXJyYXlTeW5jX2gKLQotI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkVudHJ5U3luYy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBFbnRyeUFycmF5OwotCi1jbGFzcyBFbnRyeUFycmF5U3luYyA6IHB1Ymxp
YyBSZWZDb3VudGVkPEVudHJ5QXJyYXlTeW5jPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8RW50cnlBcnJheVN5bmM+IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEVudHJ5QXJyYXlTeW5jKCkpOwotICAgIH0KLQotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEVudHJ5QXJyYXlTeW5jPiBjcmVhdGUoRW50cnlBcnJheSopOwotCi0gICAgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9lbnRyaWVzLnNpemUoKTsgfQotICAgIEVudHJ5U3lu
YyogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiBtX2VudHJpZXMuaXNFbXB0eSgpOyB9Ci0gICAgdm9pZCBjbGVhcigpIHsgbV9l
bnRyaWVzLmNsZWFyKCk7IH0KLSAgICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPEVudHJ5U3luYz4g
ZW50cnkpIHsgbV9lbnRyaWVzLmFwcGVuZChlbnRyeSk7IH0KLQotcHJpdmF0ZToKLSAgICBFbnRy
eUFycmF5U3luYygpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxFbnRyeVN5bmM+ID4gbV9lbnRyaWVz
OwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8g
RW50cnlBcnJheVN5bmNfaApJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5
U3luYy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5
U3luYy5pZGwJKHJldmlzaW9uIDExMDYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50
cnlBcnJheVN5bmMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1tb2R1bGUgc3Rv
cmFnZSB7Ci0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0s
Ci0gICAgICAgIEluZGV4ZWRHZXR0ZXIsCi0gICAgICAgIEpTTm9TdGF0aWNUYWJsZXMKLSAgICBd
IEVudHJ5QXJyYXlTeW5jIHsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgbGVuZ3RoOwotICAgICAgICBFbnRyeVN5bmMgaXRlbShpbiBbSXNJbmRleF0gdW5zaWduZWQg
bG9uZyBpbmRleCk7Ci0gICAgfTsKLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50
cnlCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QmFz
ZS5jcHAJKHJldmlzaW9uIDExMDYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlC
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkVudHJ5QmFzZS5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0j
aW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKLSNp
bmNsdWRlICJET01GaWxlU3lzdGVtQmFzZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
Ci0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1FbnRyeUJhc2U6OkVudHJ5QmFzZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNl
PiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIDogbV9maWxlU3lzdGVt
KGZpbGVTeXN0ZW0pCi0gICAgLCBtX2Z1bGxQYXRoKGZ1bGxQYXRoKQotICAgICwgbV9uYW1lKERP
TUZpbGVQYXRoOjpnZXROYW1lKGZ1bGxQYXRoKSkKLXsKLX0KLQotRW50cnlCYXNlOjp+RW50cnlC
YXNlKCkKLXsKLX0KLQotU3RyaW5nIEVudHJ5QmFzZTo6dG9VUkwoKQotewotICAgIHJldHVybiBt
X2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpLT50b1VSTChtX2ZpbGVTeXN0ZW0tPnNlY3Vy
aXR5T3JpZ2luKCktPnRvU3RyaW5nKCksIG1fZnVsbFBhdGgpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0VudHJ5QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRW50cnlCYXNlLmgJKHJldmlzaW9uIDExMDYyMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRW50cnlCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNzYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgRW50cnlCYXNlX2gKLSNkZWZpbmUgRW50cnlCYXNlX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKLQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIERPTUZpbGVTeXN0ZW1CYXNlOwotY2xhc3MgRW50cnlTeW5jOwotCi0vLyBB
IGNvbW1vbiBiYXNlIGNsYXNzIGZvciBFbnRyeSBhbmQgRW50cnlTeW5jLgotY2xhc3MgRW50cnlC
YXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RW50cnlCYXNlPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVh
bCB+RW50cnlCYXNlKCk7Ci0KLSAgICBET01GaWxlU3lzdGVtQmFzZSogZmlsZXN5c3RlbSgpIGNv
bnN0IHsgcmV0dXJuIG1fZmlsZVN5c3RlbS5nZXQoKTsgfQotCi0gICAgdmlydHVhbCBib29sIGlz
RmlsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRGlyZWN0
b3J5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIGNvbnN0IFN0cmluZyYgZnVsbFBh
dGgoKSBjb25zdCB7IHJldHVybiBtX2Z1bGxQYXRoOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9Ci0KLSAgICBTdHJpbmcgdG9VUkwoKTsKLQotcHJv
dGVjdGVkOgotICAgIEVudHJ5QmFzZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwgY29u
c3QgU3RyaW5nJiBmdWxsUGF0aCk7Ci0gICAgZnJpZW5kIGNsYXNzIEVudHJ5U3luYzsKLQotICAg
IFJlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gbV9maWxlU3lzdGVtOwotCi0gICAgLy8gVGhpcyBp
cyBhIHZpcnR1YWwgcGF0aC4KLSAgICBTdHJpbmcgbV9mdWxsUGF0aDsKLQotICAgIFN0cmluZyBt
X25hbWU7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRp
ZiAvLyBFbnRyeUJhc2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUNhbGxi
YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUNhbGxiYWNr
LmgJKHJldmlzaW9uIDExMDYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlDYWxs
YmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEVudHJ5Q2FsbGJh
Y2tfaAotI2RlZmluZSBFbnRyeUNhbGxiYWNrX2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkK
LQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgRW50cnk7Ci0KLWNsYXNzIEVudHJ5Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxF
bnRyeUNhbGxiYWNrPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RW50cnlDYWxsYmFjaygpIHsg
fQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChFbnRyeSopID0gMDsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNlbmRpZiAvLyBF
bnRyeUNhbGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlDYWxsYmFj
ay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUNhbGxiYWNr
LmlkbAkocmV2aXNpb24gMTEwNjIxKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUNh
bGxiYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHN0b3JhZ2Ug
ewotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAg
ICAgICBDYWxsYmFjawotICAgIF0gRW50cnlDYWxsYmFjayB7Ci0gICAgICAgIGJvb2xlYW4gaGFu
ZGxlRXZlbnQoaW4gRW50cnkgZW50cnkpOwotICAgIH07Ci19CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0VudHJ5U3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9FbnRyeVN5bmMuY3BwCShyZXZpc2lvbiAxMTA2MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0VudHJ5U3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRW50cnlTeW5jLmgiCi0KLSNpZiBFTkFCTEUoRklM
RV9TWVNURU0pCi0KLSNpbmNsdWRlICJET01GaWxlUGF0aC5oIgotI2luY2x1ZGUgIkRPTUZpbGVT
eXN0ZW1TeW5jLmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKLSNpbmNsdWRlICJEaXJl
Y3RvcnlFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJGaWxlRW50cnlTeW5jLmgiCi0jaW5jbHVkZSAi
RmlsZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIk1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiU3luY0Nh
bGxiYWNrSGVscGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc1JlZlB0cjxFbnRy
eVN5bmM+IEVudHJ5U3luYzo6Y3JlYXRlKEVudHJ5QmFzZSogZW50cnkpCi17Ci0gICAgaWYgKGVu
dHJ5LT5pc0ZpbGUoKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlRW50cnlTeW5j
KGVudHJ5LT5tX2ZpbGVTeXN0ZW0sIGVudHJ5LT5tX2Z1bGxQYXRoKSk7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBEaXJlY3RvcnlFbnRyeVN5bmMoZW50cnktPm1fZmlsZVN5c3RlbSwgZW50cnkt
Pm1fZnVsbFBhdGgpKTsKLX0KLQotUGFzc1JlZlB0cjxNZXRhZGF0YT4gRW50cnlTeW5jOjpnZXRN
ZXRhZGF0YShFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBlYyA9IDA7Ci0gICAgTWV0YWRhdGFT
eW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkp
OwotICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXRNZXRhZGF0YSh0aGlzLCBoZWxwZXIuc3VjY2Vz
c0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7Ci0gICAgICAgIGVjID0gRmls
ZUV4Y2VwdGlvbjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOwotICAgICAgICByZXR1cm4gMDsK
LSAgICB9Ci0gICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1bHQoZWMpOwotfQotCi1QYXNzUmVmUHRy
PEVudHJ5U3luYz4gRW50cnlTeW5jOjptb3ZlVG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5
bmM+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QK
LXsKLSAgICBlYyA9IDA7Ci0gICAgRW50cnlTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmls
ZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5tb3Zl
KHRoaXMsIHBhcmVudC5nZXQoKSwgbmFtZSwgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxw
ZXIuZXJyb3JDYWxsYmFjaygpKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFM
SURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVy
biBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQotUGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5
U3luYzo6Y29weVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBwYXJlbnQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Ci17Ci0gICAgZWMgPSAwOwot
ICAgIEVudHJ5U3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmls
ZVN5c3RlbSgpKTsKLSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Y29weSh0aGlzLCBwYXJlbnQuZ2V0
KCksIG5hbWUsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2so
KSkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9F
UlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gaGVscGVyLmdldFJlc3Vs
dChlYyk7Ci19Ci0KLXZvaWQgRW50cnlTeW5jOjpyZW1vdmUoRXhjZXB0aW9uQ29kZSYgZWMpIGNv
bnN0Ci17Ci0gICAgZWMgPSAwOwotICAgIFZvaWRTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1f
ZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5y
ZW1vdmUodGhpcywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFj
aygpKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9O
X0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsK
LX0KLQotUGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6Z2V0UGFyZW50KCkgY29uc3QK
LXsKLSAgICAvLyBTeW5jIHZlcmlvbiBvZiBnZXRQYXJlbnQgZG9lc24ndCB0aHJvdyBleGNlcHRp
b25zLgotICAgIFN0cmluZyBwYXJlbnRQYXRoID0gRE9NRmlsZVBhdGg6OmdldERpcmVjdG9yeShm
dWxsUGF0aCgpKTsKLSAgICByZXR1cm4gRGlyZWN0b3J5RW50cnlTeW5jOjpjcmVhdGUobV9maWxl
U3lzdGVtLCBwYXJlbnRQYXRoKTsKLX0KLQotRW50cnlTeW5jOjpFbnRyeVN5bmMoUGFzc1JlZlB0
cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkK
LSAgICA6IEVudHJ5QmFzZShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKLXsKLX0KLQotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9F
bnRyeVN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3lu
Yy5oCShyZXZpc2lvbiAxMTA2MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3lu
Yy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEVudHJ5U3luY19oCi0j
ZGVmaW5lIEVudHJ5U3luY19oCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRl
ICJET01GaWxlU3lzdGVtU3luYy5oIgotI2luY2x1ZGUgIkVudHJ5QmFzZS5oIgotI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERpcmVj
dG9yeUVudHJ5U3luYzsKLWNsYXNzIE1ldGFkYXRhOwotCi10eXBlZGVmIGludCBFeGNlcHRpb25D
b2RlOwotCi1jbGFzcyBFbnRyeVN5bmMgOiBwdWJsaWMgRW50cnlCYXNlIHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeVN5bmM+IGNyZWF0ZShFbnRyeUJhc2UqKTsKLQotICAg
IERPTUZpbGVTeXN0ZW1TeW5jKiBmaWxlc3lzdGVtKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RE9NRmlsZVN5c3RlbVN5bmMqPihtX2ZpbGVTeXN0ZW0uZ2V0KCkpOyB9Ci0KLSAgICBQYXNz
UmVmUHRyPE1ldGFkYXRhPiBnZXRNZXRhZGF0YShFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1Jl
ZlB0cjxFbnRyeVN5bmM+IG1vdmVUbyhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gcGFy
ZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBQYXNz
UmVmUHRyPEVudHJ5U3luYz4gY29weVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBw
YXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwotICAgIHZv
aWQgcmVtb3ZlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEVudHJ5U3lu
Yz4gZ2V0UGFyZW50KCkgY29uc3Q7Ci0KLXByb3RlY3RlZDoKLSAgICBFbnRyeVN5bmMoUGFzc1Jl
ZlB0cjxET01GaWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwotfTsKLQot
fQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRW50cnlTeW5j
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlTeW5jLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5pZGwJKHJldmlzaW9uIDExMDYy
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlTeW5jLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHN0b3JhZ2UgewotICAgIGludGVyZmFjZSBbCi0gICAg
ICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAgICAgICBDdXN0b21Ub0pTT2JqZWN0LAot
ICAgICAgICBKU05vU3RhdGljVGFibGVzCi0gICAgXSBFbnRyeVN5bmMgewotICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc0ZpbGU7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIGlzRGlyZWN0b3J5OwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIG5hbWU7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZnVsbFBhdGg7
Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01GaWxlU3lzdGVtU3luYyBmaWxlc3lzdGVt
OwotCi0gICAgICAgIE1ldGFkYXRhIGdldE1ldGFkYXRhKCkgcmFpc2VzIChGaWxlRXhjZXB0aW9u
KTsKLSAgICAgICAgRW50cnlTeW5jIG1vdmVUbyhpbiBEaXJlY3RvcnlFbnRyeVN5bmMgcGFyZW50
LCBpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5n
XSBET01TdHJpbmcgbmFtZSkgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKLSAgICAgICAgRW50cnlT
eW5jIGNvcHlUbyhpbiBEaXJlY3RvcnlFbnRyeVN5bmMgcGFyZW50LCBpbiBbVHJlYXROdWxsQXM9
TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZSkg
cmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKLSAgICAgICAgRE9NU3RyaW5nIHRvVVJMKCk7Ci0gICAg
ICAgIHZvaWQgcmVtb3ZlKCkgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKLSAgICAgICAgRGlyZWN0
b3J5RW50cnlTeW5jIGdldFBhcmVudCgpOwotICAgIH07Ci19Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132074</attachid>
            <date>2012-03-15 10:33:18 -0700</date>
            <delta_ts>2012-03-20 00:56:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81111-20120315133315.patch</filename>
            <type>text/plain</type>
            <size>117133</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDg2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAzLTE1ICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIEVudHJ5QXJyYXks
IEVudHJ5QmFzZSwgRW50cnlDYWxsYmFjaywgYW5kIEVudHJ5IHRvIE1vZHVsZXMvZmlsZXN5c3Rl
bS8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMTEx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBhbGwgZXhpc3RpbmcgdGVzdHMgcGFzcy4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMucHJpOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogTW9k
dWxlcy9maWxlc3lzdGVtL0VudHJ5LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9FbnRyeS5jcHAuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Lmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaC4KKyAgICAgICAgKiBNb2R1
bGVzL2ZpbGVzeXN0ZW0vRW50cnkuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0VudHJ5LmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5j
cHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheS5jcHAuCisg
ICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5LmguCisgICAgICAgICogTW9kdWxlcy9maWxl
c3lzdGVtL0VudHJ5QXJyYXkuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0VudHJ5QXJyYXkuaWRsLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5
U3luYy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5
bmMuY3BwLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmguCisgICAg
ICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmlkbDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5U3luYy5pZGwuCisgICAgICAgICogTW9k
dWxlcy9maWxlc3lzdGVtL0VudHJ5QmFzZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRW50cnlCYXNlLmNwcC4KKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50
cnlCYXNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmgu
CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUNhbGxiYWNrLmguCisgICAgICAgICogTW9k
dWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0VudHJ5Q2FsbGJhY2suaWRsLgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5
c3RlbS9FbnRyeVN5bmMuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Vu
dHJ5U3luYy5jcHAuCisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5oLgorICAgICAgICAq
IE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0VudHJ5U3luYy5pZGwuCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGZpbGVhcGkvRW50cnkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRW50cnku
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5LmlkbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBmaWxlYXBpL0VudHJ5QXJyYXkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkv
RW50cnlBcnJheS5oOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRW50cnlBcnJheS5pZGw6
IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9FbnRyeUFycmF5U3luYy5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogZmlsZWFwaS9FbnRyeUFycmF5U3luYy5oOiBSZW1vdmVkLgorICAgICAgICAq
IGZpbGVhcGkvRW50cnlBcnJheVN5bmMuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkv
RW50cnlCYXNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5QmFzZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRW50cnlDYWxsYmFjay5oOiBSZW1vdmVkLgorICAg
ICAgICAqIGZpbGVhcGkvRW50cnlDYWxsYmFjay5pZGw6IFJlbW92ZWQuCisgICAgICAgICogZmls
ZWFwaS9FbnRyeVN5bmMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGZpbGVhcGkvRW50cnlTeW5j
Lmg6IFJlbW92ZWQuCisgICAgICAgICogZmlsZWFwaS9FbnRyeVN5bmMuaWRsOiBSZW1vdmVkLgor
CiAyMDEyLTAzLTE1ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgog
CiAgICAgICAgIFt3eF0gVW5yZXZpZXdlZC4gQnVpbGQgZml4ZXMgZm9yIE1hYyBhbmQgRE9NIGJp
bmRpbmdzLgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDExMDg1NikKKysrIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNjQ0LDExICsx
NjQ0LDExIEBAIGlmIChFTkFCTEVfRklMRV9TWVNURU0pCiAgICAgICAgIGZpbGVhcGkvRE9NRmls
ZVN5c3RlbUJhc2UuY3BwCiAgICAgICAgIGZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwCiAg
ICAgICAgIGZpbGVhcGkvRE9NV2luZG93RmlsZVN5c3RlbS5jcHAKLSAgICAgICAgZmlsZWFwaS9F
bnRyeS5jcHAKLSAgICAgICAgZmlsZWFwaS9FbnRyeUFycmF5LmNwcAotICAgICAgICBmaWxlYXBp
L0VudHJ5QXJyYXlTeW5jLmNwcAotICAgICAgICBmaWxlYXBpL0VudHJ5QmFzZS5jcHAKLSAgICAg
ICAgZmlsZWFwaS9FbnRyeVN5bmMuY3BwCisgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRy
eS5jcHAKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuY3BwCisgICAgICAg
IE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5jcHAKKyAgICAgICAgTW9kdWxlcy9m
aWxlc3lzdGVtL0VudHJ5QmFzZS5jcHAKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5
U3luYy5jcHAKICAgICAgICAgZmlsZWFwaS9GaWxlRW50cnkuY3BwCiAgICAgICAgIGZpbGVhcGkv
RmlsZUVudHJ5U3luYy5jcHAKICAgICAgICAgZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNw
cApAQCAtMTY2OCwxMSArMTY2OCwxMSBAQCBpZiAoRU5BQkxFX0ZJTEVfU1lTVEVNKQogICAgICAg
ICBmaWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmlkbAogICAgICAgICBmaWxlYXBpL0RPTVdpbmRv
d0ZpbGVTeXN0ZW0uaWRsCiAgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyaWVzQ2FsbGJh
Y2suaWRsCi0gICAgICAgIGZpbGVhcGkvRW50cnkuaWRsCi0gICAgICAgIGZpbGVhcGkvRW50cnlT
eW5jLmlkbAotICAgICAgICBmaWxlYXBpL0VudHJ5QXJyYXkuaWRsCi0gICAgICAgIGZpbGVhcGkv
RW50cnlBcnJheVN5bmMuaWRsCi0gICAgICAgIGZpbGVhcGkvRW50cnlDYWxsYmFjay5pZGwKKyAg
ICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmlkbAorICAgICAgICBNb2R1bGVzL2ZpbGVz
eXN0ZW0vRW50cnlTeW5jLmlkbAorICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJh
eS5pZGwKKyAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmlkbAorICAg
ICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFjay5pZGwKICAgICAgICAgZmlsZWFw
aS9FcnJvckNhbGxiYWNrLmlkbAogICAgICAgICBmaWxlYXBpL0ZpbGVDYWxsYmFjay5pZGwKICAg
ICAgICAgZmlsZWFwaS9GaWxlRW50cnkuaWRsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UJKHJldmlzaW9uIDExMDg1NikKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTIwMywxMSArMjAzLDExIEBAIEJJTkRJTkdfSURMUyA9
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIuaWRs
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXJTeW5j
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cmllc0NhbGxiYWNr
LmlkbCBcCi0gICAgJChXZWJDb3JlKS9maWxlYXBpL0VudHJ5LmlkbCBcCi0gICAgJChXZWJDb3Jl
KS9maWxlYXBpL0VudHJ5QXJyYXkuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRW50cnlB
cnJheVN5bmMuaWRsIFwKLSAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRW50cnlDYWxsYmFjay5pZGwg
XAotICAgICQoV2ViQ29yZSkvZmlsZWFwaS9FbnRyeVN5bmMuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9m
aWxlc3lzdGVtL0VudHJ5QXJyYXkuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5
c3RlbS9FbnRyeUFycmF5U3luYy5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lz
dGVtL0VudHJ5Q2FsbGJhY2suaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeVN5bmMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvRXJyb3JDYWxsYmFjay5p
ZGwgXAogICAgICQoV2ViQ29yZSkvZmlsZWFwaS9GaWxlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9m
aWxlYXBpL0ZpbGVDYWxsYmFjay5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnBy
aQkocmV2aXNpb24gMTEwODU2KQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJp
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsMTEgKzIyNCwxMSBAQCBJRExfQklORElOR1MgKz0gXAog
ICAgICQkUFdEL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuaWRsIFwKICAgICAkJFBXRC9maWxl
YXBpL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uaWRsIFwKICAgICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRW50cmllc0NhbGxiYWNrLmlkbCBcCi0gICAgJCRQV0QvZmlsZWFwaS9FbnRyeS5pZGwgXAot
ICAgICQkUFdEL2ZpbGVhcGkvRW50cnlBcnJheS5pZGwgXAotICAgICQkUFdEL2ZpbGVhcGkvRW50
cnlBcnJheVN5bmMuaWRsIFwKLSAgICAkJFBXRC9maWxlYXBpL0VudHJ5Q2FsbGJhY2suaWRsIFwK
LSAgICAkJFBXRC9maWxlYXBpL0VudHJ5U3luYy5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvZmls
ZXN5c3RlbS9FbnRyeS5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFy
cmF5LmlkbCBcCisgICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmlk
bCBcCisgICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaWRsIFwKKyAg
ICAkJFBXRC9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmlkbCBcCiAgICAgJCRQV0QvZmls
ZWFwaS9FcnJvckNhbGxiYWNrLmlkbCBcCiAgICAgJCRQV0QvZmlsZWFwaS9GaWxlLmlkbCBcCiAg
ICAgJCRQV0QvZmlsZWFwaS9GaWxlQ2FsbGJhY2suaWRsIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTEwODU2KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjA2MSwxNyArMjA2MSwxNyBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NV2luZG93RmlsZVN5
c3RlbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NV2luZG93RmlsZVN5c3RlbS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cmllc0NhbGxiYWNrLmgg
XAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0VudHJ5LmggXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheS5jcHAg
XAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheS5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvZmlsZWFwaS9F
bnRyeUFycmF5U3luYy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QmFzZS5jcHAg
XAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmggXAotCVNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRW50cnlDYWxsYmFjay5oIFwKLQlTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5
U3luYy5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlTeW5jLmggXAorCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRW50cnlBcnJheS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9FbnRyeUFycmF5LmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9F
bnRyeUFycmF5U3luYy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9F
bnRyeUFycmF5U3luYy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50
cnlCYXNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QmFz
ZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFjay5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Vycm9yQ2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlQ2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBcCkBA
IC00ODgxLDExICs0ODgxLDExIEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkv
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlci5pZGwgXAogCSQoV2ViQ29yZSkvTW9k
dWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeVJlYWRlclN5bmMuaWRsIFwKIAkkKFdlYkNvcmUpL01v
ZHVsZXMvZmlsZXN5c3RlbS9FbnRyaWVzQ2FsbGJhY2suaWRsIFwKLQkkKFdlYkNvcmUpL2ZpbGVh
cGkvRW50cnkuaWRsIFwKLQkkKFdlYkNvcmUpL2ZpbGVhcGkvRW50cnlBcnJheS5pZGwgXAotCSQo
V2ViQ29yZSkvZmlsZWFwaS9FbnRyeUFycmF5U3luYy5pZGwgXAotCSQoV2ViQ29yZSkvZmlsZWFw
aS9FbnRyeUNhbGxiYWNrLmlkbCBcCi0JJChXZWJDb3JlKS9maWxlYXBpL0VudHJ5U3luYy5pZGwg
XAorCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmlkbCBcCisJJChXZWJDb3Jl
KS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRW50cnlDYWxsYmFjay5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9maWxlc3lz
dGVtL0VudHJ5U3luYy5pZGwgXAogCSQoV2ViQ29yZSkvZmlsZWFwaS9FcnJvckNhbGxiYWNrLmlk
bCBcCiAJJChXZWJDb3JlKS9maWxlYXBpL0ZpbGVDYWxsYmFjay5pZGwgXAogCSQoV2ViQ29yZSkv
ZmlsZWFwaS9GaWxlRW50cnkuaWRsIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTEwODU2
KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtNjcyLDEx
ICs2NzIsMTEgQEAgU09VUkNFUyArPSBcCiAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9y
eUVudHJ5U3luYy5jcHAgXAogICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlSZWFkZXIu
Y3BwIFwKICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAgXAot
ICAgIGZpbGVhcGkvRW50cnkuY3BwIFwKLSAgICBmaWxlYXBpL0VudHJ5QXJyYXkuY3BwIFwKLSAg
ICBmaWxlYXBpL0VudHJ5QXJyYXlTeW5jLmNwcCBcCi0gICAgZmlsZWFwaS9FbnRyeUJhc2UuY3Bw
IFwKLSAgICBmaWxlYXBpL0VudHJ5U3luYy5jcHAgXAorICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9F
bnRyeS5jcHAgXAorICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmNwcCBcCisgICAg
TW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmNwcCBcCisgICAgTW9kdWxlcy9maWxl
c3lzdGVtL0VudHJ5QmFzZS5jcHAgXAorICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMu
Y3BwIFwKICAgICBmaWxlYXBpL0ZpbGUuY3BwIFwKICAgICBmaWxlYXBpL0ZpbGVFbnRyeS5jcHAg
XAogICAgIGZpbGVhcGkvRmlsZUVudHJ5U3luYy5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQko
cmV2aXNpb24gMTEwODU2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5n
IGNvcHkpCkBAIC04OTcsMTEgKzg5NywxMSBAQAogICAgICAgICAgICAgJ2ZpbGVhcGkvRE9NRmls
ZVN5c3RlbVN5bmMuaWRsJywKICAgICAgICAgICAgICdmaWxlYXBpL0RPTVdpbmRvd0ZpbGVTeXN0
ZW0uaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cmllc0NhbGxiYWNr
LmlkbCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9FbnRyeS5pZGwnLAotICAgICAgICAgICAgJ2Zp
bGVhcGkvRW50cnlBcnJheS5pZGwnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRW50cnlBcnJheVN5
bmMuaWRsJywKLSAgICAgICAgICAgICdmaWxlYXBpL0VudHJ5Q2FsbGJhY2suaWRsJywKLSAgICAg
ICAgICAgICdmaWxlYXBpL0VudHJ5U3luYy5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmls
ZXN5c3RlbS9FbnRyeS5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9FbnRy
eUFycmF5LmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlT
eW5jLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2su
aWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmlkbCcsCiAg
ICAgICAgICAgICAnZmlsZWFwaS9FcnJvckNhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnZmls
ZWFwaS9GaWxlLmlkbCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9GaWxlQ2FsbGJhY2suaWRsJywK
QEAgLTI0NTYsMTcgKzI0NTYsMTcgQEAKICAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0v
RGlyZWN0b3J5UmVhZGVyU3luYy5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlSZWFkZXJTeW5jLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyaWVzQ2FsbGJhY2suaCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9FbnRyeS5jcHAnLAot
ICAgICAgICAgICAgJ2ZpbGVhcGkvRW50cnkuaCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9FbnRy
eUFycmF5LmNwcCcsCi0gICAgICAgICAgICAnZmlsZWFwaS9FbnRyeUFycmF5LmgnLAotICAgICAg
ICAgICAgJ2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuY3BwJywKLSAgICAgICAgICAgICdmaWxlYXBp
L0VudHJ5QXJyYXlTeW5jLmgnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRW50cnlCYXNlLmNwcCcs
Ci0gICAgICAgICAgICAnZmlsZWFwaS9FbnRyeUJhc2UuaCcsCi0gICAgICAgICAgICAnZmlsZWFw
aS9FbnRyeUNhbGxiYWNrLmgnLAotICAgICAgICAgICAgJ2ZpbGVhcGkvRW50cnlTeW5jLmNwcCcs
Ci0gICAgICAgICAgICAnZmlsZWFwaS9FbnRyeVN5bmMuaCcsCisgICAgICAgICAgICAnTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5LmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVt
L0VudHJ5LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmNw
cCcsCisgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaCcsCisgICAg
ICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmNwcCcsCisgICAgICAg
ICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmgnLAorICAgICAgICAgICAg
J01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUJhc2UuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVz
L2ZpbGVzeXN0ZW0vRW50cnlCYXNlLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeUNhbGxiYWNrLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9FbnRy
eVN5bmMuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmgn
LAogICAgICAgICAgICAgJ2ZpbGVhcGkvRXJyb3JDYWxsYmFjay5oJywKICAgICAgICAgICAgICdm
aWxlYXBpL0ZpbGUuY3BwJywKICAgICAgICAgICAgICdmaWxlYXBpL0ZpbGUuaCcsCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5jcHAJKHJldmlzaW9uIDEx
MDg1NikJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5jcHA6MTEwODU2KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFbnRyeS5oIgor
CisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgi
CisjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKKyNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgi
CisjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVFcnJvci5oIgorI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKKyNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNr
LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0VudHJ5OjpFbnRy
eShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcm
IGZ1bGxQYXRoKQorICAgIDogRW50cnlCYXNlKGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKQoreworfQor
Cit2b2lkIEVudHJ5OjpnZXRNZXRhZGF0YShQYXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrUmVm
KQoreworICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJh
Y2tSZWYpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXRNZXRhZGF0YSh0aGlzLCBzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQorICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxl
Q2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVF
cnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Cit9CisKK3ZvaWQgRW50cnk6Om1vdmVU
byhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
UGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikgY29uc3QKK3sKKyAgICBSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVmKTsKKyAgICBpZiAoIW1fZmls
ZVN5c3RlbS0+bW92ZSh0aGlzLCBwYXJlbnQuZ2V0KCksIG5hbWUsIHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaykpCisgICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhl
cnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZB
TElEX01PRElGSUNBVElPTl9FUlIpKTsKK30KKwordm9pZCBFbnRyeTo6Y29weVRvKFBhc3NSZWZQ
dHI8RGlyZWN0b3J5RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRy
PEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrUmVmKSBjb25zdAoreworICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5j
b3B5KHRoaXMsIHBhcmVudC5nZXQoKSwgbmFtZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrKSkKKyAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJh
Y2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9ESUZJ
Q0FUSU9OX0VSUikpOworfQorCit2b2lkIEVudHJ5OjpyZW1vdmUoUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrUmVmKSBjb25zdAoreworICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrKGVycm9yQ2FsbGJhY2tSZWYpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5yZW1vdmUodGhp
cywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkKKyAgICAgICAgZmlsZXN5c3RlbSgp
LT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNy
ZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOworfQorCit2b2lkIEVu
dHJ5OjpnZXRQYXJlbnQoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ss
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikgY29uc3QKK3sKKyAg
ICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVmKTsK
KyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0UGFyZW50KHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaykpCisgICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhl
cnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZB
TElEX01PRElGSUNBVElPTl9FUlIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5LmgJKHJldmlzaW9uIDExMDg1NikJKGZyb20gU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9FbnRyeS5oOjExMDg1NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9FbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEVu
dHJ5X2gKKyNkZWZpbmUgRW50cnlfaAorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5j
bHVkZSAiRE9NRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkVudHJ5QmFzZS5oIgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBEaXJlY3RvcnlFbnRyeTsKK2NsYXNzIEVudHJ5Q2FsbGJh
Y2s7CitjbGFzcyBFbnRyeVN5bmM7CitjbGFzcyBFcnJvckNhbGxiYWNrOworY2xhc3MgTWV0YWRh
dGFDYWxsYmFjazsKK2NsYXNzIFZvaWRDYWxsYmFjazsKKworY2xhc3MgRW50cnkgOiBwdWJsaWMg
RW50cnlCYXNlIHsKK3B1YmxpYzoKKyAgICBET01GaWxlU3lzdGVtKiBmaWxlc3lzdGVtKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRmlsZVN5c3RlbSo+KG1fZmlsZVN5c3RlbS5nZXQo
KSk7IH0KKworICAgIHZvaWQgZ2V0TWV0YWRhdGEoUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2sgPSAwKTsKKyAgICB2b2lkIG1vdmVUbyhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBw
YXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjayA9IDApIGNvbnN0OworICAgIHZvaWQgY29weVRvKFBhc3NSZWZQdHI8RGlyZWN0
b3J5RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lID0gU3RyaW5nKCksIFBhc3NSZWZQ
dHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCkgY29uc3Q7CisgICAgdm9pZCByZW1vdmUoUGFzc1Jl
ZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OworICAgIHZvaWQgZ2V0UGFyZW50KFBh
c3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAg
ICBFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBmdWxs
UGF0aCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCisKKyNlbmRpZiAvLyBFbnRyeV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnkuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5pZGwJKHJldmlzaW9uIDExMDg1NikJKGZyb20gU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5pZGw6MTEwODU2KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworbW9kdWxlIHN0b3JhZ2UgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFs
PUZJTEVfU1lTVEVNLAorICAgICAgICBDdXN0b21Ub0pTT2JqZWN0LAorICAgICAgICBKU05vU3Rh
dGljVGFibGVzCisgICAgXSBFbnRyeSB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29s
ZWFuIGlzRmlsZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNEaXJlY3Rv
cnk7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBmdWxsUGF0aDsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTUZpbGVTeXN0ZW0gZmlsZXN5c3RlbTsKKworICAgICAgICB2b2lkIGdldE1l
dGFkYXRhKGluIFtDYWxsYmFja10gTWV0YWRhdGFDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGlu
IFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CisgICAg
ICAgIHZvaWQgbW92ZVRvKGluIERpcmVjdG9yeUVudHJ5IHBhcmVudCwgaW4gW09wdGlvbmFsLCBU
cmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0
cmluZyBuYW1lLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFbnRyeUNhbGxiYWNrIHN1Y2Nlc3ND
YWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxi
YWNrKTsKKyAgICAgICAgdm9pZCBjb3B5VG8oaW4gRGlyZWN0b3J5RW50cnkgcGFyZW50LCBpbiBb
T3B0aW9uYWwsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0
cmluZ10gRE9NU3RyaW5nIG5hbWUsIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVudHJ5Q2FsbGJh
Y2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNr
IGVycm9yQ2FsbGJhY2spOworICAgICAgICBET01TdHJpbmcgdG9VUkwoKTsKKyAgICAgICAgdm9p
ZCByZW1vdmUoaW4gW0NhbGxiYWNrXSBWb2lkQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBb
T3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOworICAgICAg
ICB2b2lkIGdldFBhcmVudChpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFbnRyeUNhbGxiYWNrIHN1
Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFjayBlcnJv
ckNhbGxiYWNrKTsKKyAgICB9OworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0VudHJ5QXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmNwcAkocmV2aXNpb24gMTEwODU2KQkoZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXkuY3BwOjExMDg1NikKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIK
KworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitFbnRy
eUFycmF5OjpFbnRyeUFycmF5KCkKK3sKK30KKworRW50cnkqIEVudHJ5QXJyYXk6Oml0ZW0odW5z
aWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKGluZGV4ID49IG1fZW50cmllcy5zaXplKCkp
CisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2VudHJpZXNbaW5kZXhdLmdldCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5oCShy
ZXZpc2lvbiAxMTA4NTYpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheS5o
OjExMDg1NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRW50cnlBcnJheV9oCisj
ZGVmaW5lIEVudHJ5QXJyYXlfaAorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVk
ZSAiRW50cnkuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRW50cnlBcnJheSA6
IHB1YmxpYyBSZWZDb3VudGVkPEVudHJ5QXJyYXk+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxFbnRyeUFycmF5PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBFbnRyeUFycmF5KCkpOworICAgIH0KKworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fZW50cmllcy5zaXplKCk7IH0KKyAgICBFbnRyeSogaXRlbSh1bnNpZ25l
ZCBpbmRleCkgY29uc3Q7CisgICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIFBhc3NSZWZQdHI8
RW50cnk+IGVudHJ5KTsKKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZW50
cmllcy5pc0VtcHR5KCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX2VudHJpZXMuY2xlYXIoKTsg
fQorICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8RW50cnk+IGVudHJ5KSB7IG1fZW50cmllcy5h
cHBlbmQoZW50cnkpOyB9CisKK3ByaXZhdGU6CisgICAgRW50cnlBcnJheSgpOworCisgICAgVmVj
dG9yPFJlZlB0cjxFbnRyeT4gPiBtX2VudHJpZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZQorCisj
ZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjZW5kaWYgLy8gRW50cnlBcnJheV9oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXku
aWRsCShyZXZpc2lvbiAxMTA4NTYpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlB
cnJheS5pZGw6MTEwODU2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Vu
dHJ5QXJyYXkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgc3RvcmFn
ZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9RklMRV9TWVNURU0sCisg
ICAgICAgIEluZGV4ZWRHZXR0ZXIsCisgICAgICAgIEpTTm9TdGF0aWNUYWJsZXMKKyAgICBdIEVu
dHJ5QXJyYXkgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5n
dGg7CisgICAgICAgIEVudHJ5IGl0ZW0oaW4gW0lzSW5kZXhdIHVuc2lnbmVkIGxvbmcgaW5kZXgp
OworICAgIH07Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50
cnlBcnJheVN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9FbnRyeUFycmF5U3luYy5jcHAJKHJldmlzaW9uIDExMDg1NikJKGZyb20gU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5U3luYy5jcHA6MTEwODU2KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlTeW5jLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkVudHJ5QXJy
YXlTeW5jLmgiCisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJFbnRyeUFy
cmF5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxFbnRyeUFycmF5U3lu
Yz4gRW50cnlBcnJheVN5bmM6OmNyZWF0ZShFbnRyeUFycmF5KiBlbnRyaWVzKQoreworICAgIFJl
ZlB0cjxFbnRyeUFycmF5U3luYz4gZW50cmllc1N5bmMgPSBhZG9wdFJlZihuZXcgRW50cnlBcnJh
eVN5bmMoKSk7CisgICAgaWYgKGVudHJpZXMpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGVudHJpZXMtPmxlbmd0aCgpOyArK2kpCisgICAgICAgICAgICBlbnRyaWVzU3luYy0+
YXBwZW5kKEVudHJ5U3luYzo6Y3JlYXRlKGVudHJpZXMtPml0ZW0oaSkpKTsKKyAgICB9CisgICAg
cmV0dXJuIGVudHJpZXNTeW5jLnJlbGVhc2UoKTsKK30KKworRW50cnlBcnJheVN5bmM6OkVudHJ5
QXJyYXlTeW5jKCkKK3sKK30KKworRW50cnlTeW5jKiBFbnRyeUFycmF5U3luYzo6aXRlbSh1bnNp
Z25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXggPj0gbV9lbnRyaWVzLnNpemUoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1fZW50cmllc1tpbmRleF0uZ2V0KCk7Cit9
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5oCShyZXZpc2lv
biAxMTA4NTYpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuaDox
MTA4NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJheVN5
bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFbnRyeUFycmF5U3lu
Y19oCisjZGVmaW5lIEVudHJ5QXJyYXlTeW5jX2gKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkK
KworI2luY2x1ZGUgIkVudHJ5U3luYy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBFbnRyeUFycmF5OworCitjbGFzcyBFbnRyeUFycmF5U3luYyA6IHB1YmxpYyBSZWZDb3VudGVk
PEVudHJ5QXJyYXlTeW5jPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RW50cnlB
cnJheVN5bmM+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVu
dHJ5QXJyYXlTeW5jKCkpOworICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVudHJ5QXJy
YXlTeW5jPiBjcmVhdGUoRW50cnlBcnJheSopOworCisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9lbnRyaWVzLnNpemUoKTsgfQorICAgIEVudHJ5U3luYyogaXRlbSh1bnNp
Z25lZCBpbmRleCkgY29uc3Q7CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X2VudHJpZXMuaXNFbXB0eSgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9lbnRyaWVzLmNsZWFy
KCk7IH0KKyAgICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPEVudHJ5U3luYz4gZW50cnkpIHsgbV9l
bnRyaWVzLmFwcGVuZChlbnRyeSk7IH0KKworcHJpdmF0ZToKKyAgICBFbnRyeUFycmF5U3luYygp
OworCisgICAgVmVjdG9yPFJlZlB0cjxFbnRyeVN5bmM+ID4gbV9lbnRyaWVzOworfTsKKworfQor
CisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjZW5kaWYgLy8gRW50cnlBcnJheVN5
bmNfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlT
eW5jLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RW50cnlBcnJheVN5bmMuaWRsCShyZXZpc2lvbiAxMTA4NTYpCShmcm9tIFNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuaWRsOjExMDg1NikKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3luYy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK21vZHVsZSBzdG9yYWdlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25k
aXRpb25hbD1GSUxFX1NZU1RFTSwKKyAgICAgICAgSW5kZXhlZEdldHRlciwKKyAgICAgICAgSlNO
b1N0YXRpY1RhYmxlcworICAgIF0gRW50cnlBcnJheVN5bmMgeworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisgICAgICAgIEVudHJ5U3luYyBpdGVtKGlu
IFtJc0luZGV4XSB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICB9OworfQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QmFzZS5jcHAJKHJldmlzaW9u
IDExMDg1NikJKGZyb20gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUJhc2UuY3BwOjExMDg1
NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUJhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRW50cnlCYXNlLmgiCisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJB
c3luY0ZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJET01GaWxlUGF0aC5oIgorI2luY2x1ZGUgIkRP
TUZpbGVTeXN0ZW1CYXNlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Vu
dHJ5QmFzZTo6RW50cnlCYXNlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0
ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCisgICAgOiBtX2ZpbGVTeXN0ZW0oZmlsZVN5c3Rl
bSkKKyAgICAsIG1fZnVsbFBhdGgoZnVsbFBhdGgpCisgICAgLCBtX25hbWUoRE9NRmlsZVBhdGg6
OmdldE5hbWUoZnVsbFBhdGgpKQoreworfQorCitFbnRyeUJhc2U6On5FbnRyeUJhc2UoKQorewor
fQorCitTdHJpbmcgRW50cnlCYXNlOjp0b1VSTCgpCit7CisgICAgcmV0dXJuIG1fZmlsZVN5c3Rl
bS0+YXN5bmNGaWxlU3lzdGVtKCktPnRvVVJMKG1fZmlsZVN5c3RlbS0+c2VjdXJpdHlPcmlnaW4o
KS0+dG9TdHJpbmcoKSwgbV9mdWxsUGF0aCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlCYXNlLmgJKHJldmlzaW9uIDExMDg1NikJKGZyb20g
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUJhc2UuaDoxMTA4NTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgRW50cnlCYXNlX2gKKyNkZWZpbmUgRW50cnlCYXNlX2gKKworI2lm
IEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTUZpbGVTeXN0ZW1CYXNlOworY2xhc3MgRW50
cnlTeW5jOworCisvLyBBIGNvbW1vbiBiYXNlIGNsYXNzIGZvciBFbnRyeSBhbmQgRW50cnlTeW5j
LgorY2xhc3MgRW50cnlCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RW50cnlCYXNlPiB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+RW50cnlCYXNlKCk7CisKKyAgICBET01GaWxlU3lzdGVtQmFzZSog
ZmlsZXN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVN5c3RlbS5nZXQoKTsgfQorCisgICAg
dmlydHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGlzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIGNvbnN0
IFN0cmluZyYgZnVsbFBhdGgoKSBjb25zdCB7IHJldHVybiBtX2Z1bGxQYXRoOyB9CisgICAgY29u
c3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisKKyAgICBTdHJpbmcg
dG9VUkwoKTsKKworcHJvdGVjdGVkOgorICAgIEVudHJ5QmFzZShQYXNzUmVmUHRyPERPTUZpbGVT
eXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7CisgICAgZnJpZW5kIGNsYXNzIEVu
dHJ5U3luYzsKKworICAgIFJlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gbV9maWxlU3lzdGVtOwor
CisgICAgLy8gVGhpcyBpcyBhIHZpcnR1YWwgcGF0aC4KKyAgICBTdHJpbmcgbV9mdWxsUGF0aDsK
KworICAgIFN0cmluZyBtX25hbWU7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRklMRV9T
WVNURU0pCisKKyNlbmRpZiAvLyBFbnRyeUJhc2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFjay5oCShyZXZpc2lvbiAxMTA4NTYp
CShmcm9tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlDYWxsYmFjay5oOjExMDg1NikKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUNhbGxiYWNrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRW50cnlDYWxsYmFja19oCisjZGVmaW5l
IEVudHJ5Q2FsbGJhY2tfaAorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFbnRyeTsK
KworY2xhc3MgRW50cnlDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPEVudHJ5Q2FsbGJhY2s+
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5FbnRyeUNhbGxiYWNrKCkgeyB9CisgICAgdmlydHVh
bCBib29sIGhhbmRsZUV2ZW50KEVudHJ5KikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UKKwor
I2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2VuZGlmIC8vIEVudHJ5Q2FsbGJhY2tf
aApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5Q2FsbGJhY2su
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9FbnRy
eUNhbGxiYWNrLmlkbAkocmV2aXNpb24gMTEwODU2KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0VudHJ5Q2FsbGJhY2suaWRsOjExMDg1NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9FbnRyeUNhbGxiYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworbW9kdWxlIHN0b3JhZ2UgeworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFs
PUZJTEVfU1lTVEVNLAorICAgICAgICBDYWxsYmFjaworICAgIF0gRW50cnlDYWxsYmFjayB7Cisg
ICAgICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoaW4gRW50cnkgZW50cnkpOworICAgIH07Cit9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmNw
cAkocmV2aXNpb24gMTEwODU2KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3lu
Yy5jcHA6MTEwODU2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5
U3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRW50cnlTeW5jLmgiCisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisK
KyNpbmNsdWRlICJET01GaWxlUGF0aC5oIgorI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1TeW5jLmgi
CisjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKKyNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5
bmMuaCIKKyNpbmNsdWRlICJGaWxlRW50cnlTeW5jLmgiCisjaW5jbHVkZSAiRmlsZUV4Y2VwdGlv
bi5oIgorI2luY2x1ZGUgIk1ldGFkYXRhLmgiCisjaW5jbHVkZSAiU3luY0NhbGxiYWNrSGVscGVy
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5
U3luYzo6Y3JlYXRlKEVudHJ5QmFzZSogZW50cnkpCit7CisgICAgaWYgKGVudHJ5LT5pc0ZpbGUo
KSkKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlRW50cnlTeW5jKGVudHJ5LT5tX2Zp
bGVTeXN0ZW0sIGVudHJ5LT5tX2Z1bGxQYXRoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBE
aXJlY3RvcnlFbnRyeVN5bmMoZW50cnktPm1fZmlsZVN5c3RlbSwgZW50cnktPm1fZnVsbFBhdGgp
KTsKK30KKworUGFzc1JlZlB0cjxNZXRhZGF0YT4gRW50cnlTeW5jOjpnZXRNZXRhZGF0YShFeGNl
cHRpb25Db2RlJiBlYykKK3sKKyAgICBlYyA9IDA7CisgICAgTWV0YWRhdGFTeW5jQ2FsbGJhY2tI
ZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOworICAgIGlmICgh
bV9maWxlU3lzdGVtLT5nZXRNZXRhZGF0YSh0aGlzLCBoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCks
IGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7CisgICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6
SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAg
cmV0dXJuIGhlbHBlci5nZXRSZXN1bHQoZWMpOworfQorCitQYXNzUmVmUHRyPEVudHJ5U3luYz4g
RW50cnlTeW5jOjptb3ZlVG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IHBhcmVudCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK3sKKyAgICBlYyA9
IDA7CisgICAgRW50cnlTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5
bmNGaWxlU3lzdGVtKCkpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5tb3ZlKHRoaXMsIHBhcmVu
dC5nZXQoKSwgbmFtZSwgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxs
YmFjaygpKSkgeworICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FU
SU9OX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBoZWxwZXIuZ2V0
UmVzdWx0KGVjKTsKK30KKworUGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6Y29weVRv
KFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgZWMgPSAwOworICAgIEVudHJ5U3lu
Y0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsK
KyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Y29weSh0aGlzLCBwYXJlbnQuZ2V0KCksIG5hbWUsIGhl
bHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKKyAgICAg
ICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7Cit9CisK
K3ZvaWQgRW50cnlTeW5jOjpyZW1vdmUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAg
ZWMgPSAwOworICAgIFZvaWRTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+
YXN5bmNGaWxlU3lzdGVtKCkpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5yZW1vdmUodGhpcywg
aGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgeworICAg
ICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKK30KKworUGFzc1Jl
ZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6Z2V0UGFyZW50KCkgY29uc3QKK3sKKyAgICAvLyBT
eW5jIHZlcmlvbiBvZiBnZXRQYXJlbnQgZG9lc24ndCB0aHJvdyBleGNlcHRpb25zLgorICAgIFN0
cmluZyBwYXJlbnRQYXRoID0gRE9NRmlsZVBhdGg6OmdldERpcmVjdG9yeShmdWxsUGF0aCgpKTsK
KyAgICByZXR1cm4gRGlyZWN0b3J5RW50cnlTeW5jOjpjcmVhdGUobV9maWxlU3lzdGVtLCBwYXJl
bnRQYXRoKTsKK30KKworRW50cnlTeW5jOjpFbnRyeVN5bmMoUGFzc1JlZlB0cjxET01GaWxlU3lz
dGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKKyAgICA6IEVudHJ5
QmFzZShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKK3sKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxF
KEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0Vu
dHJ5U3luYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9FbnRyeVN5bmMuaAkocmV2aXNpb24gMTEwODU2KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0VudHJ5U3luYy5oOjExMDg1NikKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9FbnRyeVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBF
bnRyeVN5bmNfaAorI2RlZmluZSBFbnRyeVN5bmNfaAorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQorCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbVN5bmMuaCIKKyNpbmNsdWRlICJFbnRyeUJhc2Uu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBEaXJlY3RvcnlFbnRyeVN5bmM7CitjbGFzcyBNZXRhZGF0YTsKKwordHlwZWRlZiBp
bnQgRXhjZXB0aW9uQ29kZTsKKworY2xhc3MgRW50cnlTeW5jIDogcHVibGljIEVudHJ5QmFzZSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RW50cnlTeW5jPiBjcmVhdGUoRW50cnlC
YXNlKik7CisKKyAgICBET01GaWxlU3lzdGVtU3luYyogZmlsZXN5c3RlbSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PERPTUZpbGVTeXN0ZW1TeW5jKj4obV9maWxlU3lzdGVtLmdldCgpKTsg
fQorCisgICAgUGFzc1JlZlB0cjxNZXRhZGF0YT4gZ2V0TWV0YWRhdGEoRXhjZXB0aW9uQ29kZSYp
OworICAgIFBhc3NSZWZQdHI8RW50cnlTeW5jPiBtb3ZlVG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlF
bnRyeVN5bmM+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJikgY29u
c3Q7CisgICAgUGFzc1JlZlB0cjxFbnRyeVN5bmM+IGNvcHlUbyhQYXNzUmVmUHRyPERpcmVjdG9y
eUVudHJ5U3luYz4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSBj
b25zdDsKKyAgICB2b2lkIHJlbW92ZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgUGFzc1Jl
ZlB0cjxFbnRyeVN5bmM+IGdldFBhcmVudCgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgRW50
cnlTeW5jKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+LCBjb25zdCBTdHJpbmcmIGZ1bGxQ
YXRoKTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2VuZGlm
IC8vIEVudHJ5U3luY19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RW50cnlTeW5jLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRW50cnlTeW5jLmlkbAkocmV2aXNpb24gMTEwODU2KQkoZnJvbSBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0VudHJ5U3luYy5pZGw6MTEwODU2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5U3luYy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K21vZHVsZSBzdG9yYWdlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1G
SUxFX1NZU1RFTSwKKyAgICAgICAgQ3VzdG9tVG9KU09iamVjdCwKKyAgICAgICAgSlNOb1N0YXRp
Y1RhYmxlcworICAgIF0gRW50cnlTeW5jIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJv
b2xlYW4gaXNGaWxlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc0RpcmVj
dG9yeTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZ1bGxQYXRoOworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NRmlsZVN5c3RlbVN5bmMgZmlsZXN5c3RlbTsKKworICAgICAgICBNZXRh
ZGF0YSBnZXRNZXRhZGF0YSgpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7CisgICAgICAgIEVudHJ5
U3luYyBtb3ZlVG8oaW4gRGlyZWN0b3J5RW50cnlTeW5jIHBhcmVudCwgaW4gW1RyZWF0TnVsbEFz
PU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWUp
IHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7CisgICAgICAgIEVudHJ5U3luYyBjb3B5VG8oaW4gRGly
ZWN0b3J5RW50cnlTeW5jIHBhcmVudCwgaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0
VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWUpIHJhaXNlcyAoRmlsZUV4Y2Vw
dGlvbik7CisgICAgICAgIERPTVN0cmluZyB0b1VSTCgpOworICAgICAgICB2b2lkIHJlbW92ZSgp
IHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7CisgICAgICAgIERpcmVjdG9yeUVudHJ5U3luYyBnZXRQ
YXJlbnQoKTsKKyAgICB9OworfQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDExMDg1NikKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNDA5Niw2ICsy
NDA5Niw0NiBAQAogCQkJCSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0
ZW1cRW50cmllc0NhbGxiYWNrLmgiCiAJCQkJICAgICAgICA+CiAJCQkgICAgICAgIDwvRmlsZT4K
KwkJCSAgICAgICAgPEZpbGUKKwkJCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xm
aWxlc3lzdGVtXEVudHJ5LmNwcCIKKwkJCQkgICAgICAgID4KKwkJCSAgICAgICAgPC9GaWxlPgor
CQkJICAgICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZp
bGVzeXN0ZW1cRW50cnkuaCIKKwkJCQkgICAgICAgID4KKwkJCSAgICAgICAgPC9GaWxlPgorCQkJ
ICAgICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVz
eXN0ZW1cRW50cnlBcnJheS5jcHAiCisJCQkJICAgICAgICA+CisJCQkgICAgICAgIDwvRmlsZT4K
KwkJCSAgICAgICAgPEZpbGUKKwkJCQkgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xm
aWxlc3lzdGVtXEVudHJ5QXJyYXkuaCIKKwkJCQkgICAgICAgID4KKwkJCSAgICAgICAgPC9GaWxl
PgorCQkJICAgICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVz
XGZpbGVzeXN0ZW1cRW50cnlBcnJheVN5bmMuY3BwIgorCQkJCSAgICAgICAgPgorCQkJICAgICAg
ICA8L0ZpbGU+CisJCQkgICAgICAgIDxGaWxlCisJCQkJICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4u
XE1vZHVsZXNcZmlsZXN5c3RlbVxFbnRyeUFycmF5U3luYy5oIgorCQkJCSAgICAgICAgPgorCQkJ
ICAgICAgICA8L0ZpbGU+CisJCQkgICAgICAgIDxGaWxlCisJCQkJICAgICAgICBSZWxhdGl2ZVBh
dGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxFbnRyeUJhc2UuaCIKKwkJCQkgICAgICAgID4KKwkJ
CSAgICAgICAgPC9GaWxlPgorCQkJICAgICAgICA8RmlsZQorCQkJCSAgICAgICAgUmVsYXRpdmVQ
YXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRW50cnlDYWxsYmFjay5oIgorCQkJCSAgICAgICAg
PgorCQkJICAgICAgICA8L0ZpbGU+CisJCQkgICAgICAgIDxGaWxlCisJCQkJICAgICAgICBSZWxh
dGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxFbnRyeVN5bmMuY3BwIgorCQkJCSAgICAg
ICAgPgorCQkJICAgICAgICA8L0ZpbGU+CisJCQkgICAgICAgIDxGaWxlCisJCQkJICAgICAgICBS
ZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxFbnRyeVN5bmMuaCIKKwkJCQkgICAg
ICAgID4KKwkJCSAgICAgICAgPC9GaWxlPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWx0
ZXI+CiAJCQk8RmlsdGVyCiAJCQkJTmFtZT0iZ2VvbG9jYXRpb24iCkBAIC01Njk1MCw0NiArNTY5
OTAsNiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIu
LlxmaWxlYXBpXEVudHJ5LmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJl
bGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxFbnRyeS5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxG
aWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXEVudHJ5QXJyYXkuY3BwIgotCQkJCT4K
LQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxmaWxlYXBpXEVudHJ5
QXJyYXkuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0i
Li5cZmlsZWFwaVxFbnRyeUFycmF5U3luYy5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZp
bGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcRW50cnlBcnJheVN5bmMuaCIKLQkJCQk+
Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxFbnRy
eUJhc2UuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0i
Li5cZmlsZWFwaVxFbnRyeUNhbGxiYWNrLmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUK
LQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcRW50cnlTeW5jLmNwcCIKLQkJCQk+Ci0JCQk8
L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxFbnRyeVN5bmMu
aCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmls
ZWFwaVxFcnJvckNhbGxiYWNrLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTEwODU2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC05ODAzLDExICs5ODAzLDExIEBACiAJCTg5M0M0N0Y1MTI0
OEJEMzkwMDJCM0Q4NiAvKiBET01GaWxlU3lzdGVtQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBET01GaWxlU3lzdGVtQmFzZS5oOyBwYXRoID0gZmlsZWFwaS9ET01GaWxl
U3lzdGVtQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTNDNDdGNjEyNDhC
RDM5MDAyQjNEODYgLyogRE9NRmlsZVN5c3RlbVN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gRE9NRmlsZVN5c3RlbVN5bmMuY3BwOyBwYXRoID0gZmlsZWFwaS9E
T01GaWxlU3lzdGVtU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5M0M0
N0Y3MTI0OEJEMzkwMDJCM0Q4NiAvKiBET01GaWxlU3lzdGVtU3luYy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBET01GaWxlU3lzdGVtU3luYy5oOyBwYXRoID0gZmlsZWFwaS9E
T01GaWxlU3lzdGVtU3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTNDNDdG
ODEyNDhCRDM5MDAyQjNEODYgLyogRW50cnlBcnJheVN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gRW50cnlBcnJheVN5bmMuY3BwOyBwYXRoID0gZmlsZWFwaS9F
bnRyeUFycmF5U3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0Y5
MTI0OEJEMzkwMDJCM0Q4NiAvKiBFbnRyeUFycmF5U3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBFbnRyeUFycmF5U3luYy5oOyBwYXRoID0gZmlsZWFwaS9FbnRyeUFycmF5
U3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTNDNDdGQjEyNDhCRDM5MDAy
QjNEODYgLyogRW50cnlCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEVu
dHJ5QmFzZS5oOyBwYXRoID0gZmlsZWFwaS9FbnRyeUJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJODkzQzQ3RkMxMjQ4QkQzOTAwMkIzRDg2IC8qIEVudHJ5U3luYy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBFbnRyeVN5bmMuY3BwOyBwYXRoID0g
ZmlsZWFwaS9FbnRyeVN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTND
NDdGRDEyNDhCRDM5MDAyQjNEODYgLyogRW50cnlTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEVudHJ5U3luYy5oOyBwYXRoID0gZmlsZWFwaS9FbnRyeVN5bmMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODkzQzQ3RjgxMjQ4QkQzOTAwMkIzRDg2IC8qIEVu
dHJ5QXJyYXlTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEVu
dHJ5QXJyYXlTeW5jLmNwcDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3lu
Yy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5M0M0N0Y5MTI0OEJEMzkwMDJC
M0Q4NiAvKiBFbnRyeUFycmF5U3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBFbnRyeUFycmF5U3luYy5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5QXJyYXlT
eW5jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5M0M0N0ZCMTI0OEJEMzkwMDJC
M0Q4NiAvKiBFbnRyeUJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRW50
cnlCYXNlLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlCYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5M0M0N0ZDMTI0OEJEMzkwMDJCM0Q4NiAvKiBFbnRyeVN5
bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRW50cnlTeW5jLmNw
cDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4OTNDNDdGRDEyNDhCRDM5MDAyQjNEODYgLyogRW50cnlTeW5jLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEVudHJ5U3luYy5oOyBwYXRoID0gTW9k
dWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4OTNDNDdGRTEyNDhCRDM5MDAyQjNEODYgLyogRmlsZUVudHJ5U3luYy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGaWxlRW50cnlTeW5jLmNwcDsgcGF0aCA9IGZp
bGVhcGkvRmlsZUVudHJ5U3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5
M0M0N0ZGMTI0OEJEMzkwMDJCM0Q4NiAvKiBGaWxlRW50cnlTeW5jLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVFbnRyeVN5bmMuaDsgcGF0aCA9IGZpbGVhcGkvRmlsZUVu
dHJ5U3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTNDNDgyMDEyNDk1MzVC
MDAyQjNEODYgLyogSlNEaXJlY3RvcnlFbnRyeVN5bmNDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEaXJlY3RvcnlFbnRyeVN5bmNDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTgzMywxMSArOTgzMywxMSBAQAogCQk4OTg3
ODUzRjEyMkNBMDY0MDAzQUFCREEgLyogRE9NRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBET01GaWxlU3lzdGVtLmNwcDsgcGF0aCA9IGZpbGVhcGkv
RE9NRmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5ODc4NTQw
MTIyQ0EwNjQwMDNBQUJEQSAvKiBET01GaWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERPTUZpbGVTeXN0ZW0uaDsgcGF0aCA9IGZpbGVhcGkvRE9NRmlsZVN5c3Rl
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTg3ODU0MTEyMkNBMDY0MDAzQUFC
REEgLyogRW50cmllc0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEVudHJpZXNDYWxsYmFjay5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJpZXNDYWxs
YmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODU0MjEyMkNBMDY0MDAz
QUFCREEgLyogRW50cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
RW50cnkuY3BwOyBwYXRoID0gZmlsZWFwaS9FbnRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTg5ODc4NTQzMTIyQ0EwNjQwMDNBQUJEQSAvKiBFbnRyeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBFbnRyeS5oOyBwYXRoID0gZmlsZWFwaS9FbnRyeS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODU0NDEyMkNBMDY0MDAzQUFCREEgLyog
RW50cnlBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBFbnRy
eUFycmF5LmNwcDsgcGF0aCA9IGZpbGVhcGkvRW50cnlBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTg5ODc4NTQ1MTIyQ0EwNjQwMDNBQUJEQSAvKiBFbnRyeUFycmF5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEVudHJ5QXJyYXkuaDsgcGF0aCA9IGZp
bGVhcGkvRW50cnlBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTg3ODU0
NjEyMkNBMDY0MDAzQUFCREEgLyogRW50cnlDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBFbnRyeUNhbGxiYWNrLmg7IHBhdGggPSBmaWxlYXBpL0VudHJ5Q2FsbGJh
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODk4Nzg1NDIxMjJDQTA2NDAwM0FB
QkRBIC8qIEVudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEVu
dHJ5LmNwcDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg5ODc4NTQzMTIyQ0EwNjQwMDNBQUJEQSAvKiBFbnRyeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBFbnRyeS5oOyBwYXRoID0gTW9kdWxlcy9m
aWxlc3lzdGVtL0VudHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5ODc4NTQ0
MTIyQ0EwNjQwMDNBQUJEQSAvKiBFbnRyeUFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEVudHJ5QXJyYXkuY3BwOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVt
L0VudHJ5QXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTg3ODU0NTEy
MkNBMDY0MDAzQUFCREEgLyogRW50cnlBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBFbnRyeUFycmF5Lmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlBcnJh
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTg3ODU0NjEyMkNBMDY0MDAzQUFC
REEgLyogRW50cnlDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBF
bnRyeUNhbGxiYWNrLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlDYWxsYmFjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTg3ODU0NzEyMkNBMDY0MDAzQUFCREEg
LyogRXJyb3JDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBFcnJv
ckNhbGxiYWNrLmg7IHBhdGggPSBmaWxlYXBpL0Vycm9yQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODk4Nzg1NDgxMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVFbnRyeS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGaWxlRW50cnkuY3BwOyBw
YXRoID0gZmlsZWFwaS9GaWxlRW50cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4OTg3ODU0OTEyMkNBMDY0MDAzQUFCREEgLyogRmlsZUVudHJ5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVFbnRyeS5oOyBwYXRoID0gZmlsZWFwaS9GaWxlRW50cnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzI3LDcgKzEyNzI3LDcgQEAKIAkJ
QzZGMDkwMjUxNDMyN0Q0RjAwNjg1ODQ5IC8qIEpTV2ViS2l0TXV0YXRpb25PYnNlcnZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZGMDkxN0UxNDNBMkJCOTAwNjg1ODQ5
IC8qIEpTV2ViS2l0TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYktpdE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkYwOTE4NDE0M0E2QzNCMDA2ODU4NDkgLyog
SlNNdXRhdGlvbkNhbGxiYWNrQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTXV0YXRpb25DYWxsYmFja0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUM2RjQxMDQ2MTMwQzZFODkwMDM5M0RFNCAvKiBFbnRyeUJhc2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRW50cnlCYXNlLmNwcDsgcGF0aCA9
IGZpbGVhcGkvRW50cnlCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZG
NDEwNDYxMzBDNkU4OTAwMzkzREU0IC8qIEVudHJ5QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBFbnRyeUJhc2UuY3BwOyBwYXRoID0gTW9kdWxlcy9maWxlc3lz
dGVtL0VudHJ5QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0JGNjdC
MTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxBbmltYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNBM0JGNjdEMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxBbmltYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQUU5RjkwRDE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NT
QXNwZWN0UmF0aW9WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEyOTExLDExICsxMjkxMSwxMSBAQAogCQlFMUFCMUVBRTE0RTlFMzBCMDA0NDlFMTMgLyogRGly
ZWN0b3J5UmVhZGVyU3luYy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyU3luYy5pZGw7IHBhdGgg
PSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxQUIxRUFGMTRFOUUzMTcwMDQ0OUUxMyAvKiBET01GaWxlU3lz
dGVtU3luYy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBuYW1lID0gRE9NRmlsZVN5c3RlbVN5bmMuaWRsOyBwYXRoID0gZmlsZWFwaS9E
T01GaWxlU3lzdGVtU3luYy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUIx
RUIwMTRFOUUzMjMwMDQ0OUUxMyAvKiBFbnRyaWVzQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEVudHJpZXND
YWxsYmFjay5pZGw7IHBhdGggPSBmaWxlYXBpL0VudHJpZXNDYWxsYmFjay5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQUIxRUIxMTRFOUUzMkEwMDQ0OUUxMyAvKiBFbnRyeS5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gRW50cnkuaWRsOyBwYXRoID0gZmlsZWFwaS9FbnRyeS5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUUxQUIxRUIyMTRFOUUzMzIwMDQ0OUUxMyAvKiBFbnRyeUFycmF5
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBFbnRyeUFycmF5LmlkbDsgcGF0aCA9IGZpbGVhcGkvRW50cnlBcnJheS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxQUIxRUIzMTRFOUUzMzkwMDQ0OUUxMyAv
KiBFbnRyeUFycmF5U3luYy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRW50cnlBcnJheVN5bmMuaWRsOyBwYXRoID0gZmls
ZWFwaS9FbnRyeUFycmF5U3luYy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUx
QUIxRUI0MTRFOUUzNDUwMDQ0OUUxMyAvKiBFbnRyeUNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBFbnRyeUNh
bGxiYWNrLmlkbDsgcGF0aCA9IGZpbGVhcGkvRW50cnlDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUUxQUIxRUI1MTRFOUUzNEIwMDQ0OUUxMyAvKiBFbnRyeVN5bmMu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgbmFtZSA9IEVudHJ5U3luYy5pZGw7IHBhdGggPSBmaWxlYXBpL0VudHJ5U3luYy5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxQUIxRUIxMTRFOUUzMkEwMDQ0OUUxMyAvKiBF
bnRyeS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBuYW1lID0gRW50cnkuaWRsOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFBQjFFQjIxNEU5RTMzMjAwNDQ5
RTEzIC8qIEVudHJ5QXJyYXkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEVudHJ5QXJyYXkuaWRsOyBwYXRoID0gTW9kdWxl
cy9maWxlc3lzdGVtL0VudHJ5QXJyYXkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMUFCMUVCMzE0RTlFMzM5MDA0NDlFMTMgLyogRW50cnlBcnJheVN5bmMuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEVu
dHJ5QXJyYXlTeW5jLmlkbDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUFycmF5U3lu
Yy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxQUIxRUI0MTRFOUUzNDUwMDQ0
OUUxMyAvKiBFbnRyeUNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBFbnRyeUNhbGxiYWNrLmlkbDsgcGF0aCA9
IE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeUNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTFBQjFFQjUxNEU5RTM0QjAwNDQ5RTEzIC8qIEVudHJ5U3luYy5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1l
ID0gRW50cnlTeW5jLmlkbDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9FbnRyeVN5bmMuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVCNjE0RTlFMzUyMDA0NDlFMTMg
LyogRXJyb3JDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRXJyb3JDYWxsYmFjay5pZGw7IHBhdGggPSBmaWxl
YXBpL0Vycm9yQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFC
MUVCNzE0RTlFMzU4MDA0NDlFMTMgLyogRmlsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmlsZS5pZGw7IHBhdGggPSBm
aWxlYXBpL0ZpbGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVCODE0
RTlFMzYyMDA0NDlFMTMgLyogRmlsZUNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGaWxlQ2FsbGJhY2suaWRs
OyBwYXRoID0gZmlsZWFwaS9GaWxlQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5jcHAJKHJldmlzaW9uIDExMDg1NikKKysr
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkVudHJ5LmgiCi0KLSNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRl
ICJEaXJlY3RvcnlFbnRyeS5oIgotI2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKLSNpbmNsdWRl
ICJFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVkZSAiRmls
ZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIk1ldGFkYXRhQ2FsbGJhY2suaCIKLSNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKLSNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRW50cnk6OkVudHJ5KFBhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgp
Ci0gICAgOiBFbnRyeUJhc2UoZmlsZVN5c3RlbSwgZnVsbFBhdGgpCi17Ci19Ci0KLXZvaWQgRW50
cnk6OmdldE1ldGFkYXRhKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYpCi17Ci0gICAg
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFja1JlZik7Ci0g
ICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmdldE1ldGFkYXRhKHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaykpCi0gICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhl
cnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZB
TElEX01PRElGSUNBVElPTl9FUlIpKTsKLX0KLQotdm9pZCBFbnRyeTo6bW92ZVRvKFBhc3NSZWZQ
dHI8RGlyZWN0b3J5RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRy
PEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrUmVmKSBjb25zdAotewotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5t
b3ZlKHRoaXMsIHBhcmVudC5nZXQoKSwgbmFtZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrKSkKLSAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJh
Y2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9ESUZJ
Q0FUSU9OX0VSUikpOwotfQotCi12b2lkIEVudHJ5Ojpjb3B5VG8oUGFzc1JlZlB0cjxEaXJlY3Rv
cnlFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2tSZWYpIGNvbnN0Ci17Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2soZXJyb3JDYWxsYmFja1JlZik7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmNvcHkodGhpcywg
cGFyZW50LmdldCgpLCBuYW1lLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQotICAg
ICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxlYXNl
KCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJS
KSk7Ci19Ci0KLXZvaWQgRW50cnk6OnJlbW92ZShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYp
IGNvbnN0Ci17Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soZXJyb3JD
YWxsYmFja1JlZik7Ci0gICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPnJlbW92ZSh0aGlzLCBzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQotICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxl
Q2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVF
cnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci19Ci0KLXZvaWQgRW50cnk6OmdldFBh
cmVudChQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrUmVmKSBjb25zdAotewotICAgIFJlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOwotICAgIGlmICgh
bV9maWxlU3lzdGVtLT5nZXRQYXJlbnQodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrKSkKLSAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJh
Y2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OklOVkFMSURfTU9ESUZJ
Q0FUSU9OX0VSUikpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5oCShyZXZpc2lvbiAx
MTA4NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgRW50cnlfaAotI2RlZmluZSBFbnRyeV9oCi0KLSNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCi0jaW5jbHVk
ZSAiRW50cnlCYXNlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERpcmVjdG9y
eUVudHJ5OwotY2xhc3MgRW50cnlDYWxsYmFjazsKLWNsYXNzIEVudHJ5U3luYzsKLWNsYXNzIEVy
cm9yQ2FsbGJhY2s7Ci1jbGFzcyBNZXRhZGF0YUNhbGxiYWNrOwotY2xhc3MgVm9pZENhbGxiYWNr
OwotCi1jbGFzcyBFbnRyeSA6IHB1YmxpYyBFbnRyeUJhc2UgewotcHVibGljOgotICAgIERPTUZp
bGVTeXN0ZW0qIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxET01GaWxl
U3lzdGVtKj4obV9maWxlU3lzdGVtLmdldCgpKTsgfQotCi0gICAgdm9pZCBnZXRNZXRhZGF0YShQ
YXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApOwotICAgIHZvaWQgbW92ZVRvKFBh
c3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lID0gU3Ry
aW5nKCksIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCkgY29uc3Q7Ci0gICAgdm9p
ZCBjb3B5VG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcm
IG5hbWUgPSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKSBjb25z
dDsKLSAgICB2b2lkIHJlbW92ZShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCkgY29u
c3Q7Ci0gICAgdm9pZCBnZXRQYXJlbnQoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNz
Q2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAw
KSBjb25zdDsKLQotcHJvdGVjdGVkOgotICAgIEVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3Rl
bUJhc2U+LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2VuZGlmIC8vIEVudHJ5
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaWRsCShyZXZpc2lvbiAxMTA4NTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0g
KgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotbW9kdWxlIHN0b3JhZ2UgewotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlv
bmFsPUZJTEVfU1lTVEVNLAotICAgICAgICBDdXN0b21Ub0pTT2JqZWN0LAotICAgICAgICBKU05v
U3RhdGljVGFibGVzCi0gICAgXSBFbnRyeSB7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBi
b29sZWFuIGlzRmlsZTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNEaXJl
Y3Rvcnk7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKLSAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBmdWxsUGF0aDsKLSAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTUZpbGVTeXN0ZW0gZmlsZXN5c3RlbTsKLQotICAgICAgICB2b2lkIGdl
dE1ldGFkYXRhKGluIFtDYWxsYmFja10gTWV0YWRhdGFDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ss
IGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0g
ICAgICAgIHZvaWQgbW92ZVRvKGluIERpcmVjdG9yeUVudHJ5IHBhcmVudCwgaW4gW09wdGlvbmFs
LCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERP
TVN0cmluZyBuYW1lLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFbnRyeUNhbGxiYWNrIHN1Y2Nl
c3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFjayBlcnJvckNh
bGxiYWNrKTsKLSAgICAgICAgdm9pZCBjb3B5VG8oaW4gRGlyZWN0b3J5RW50cnkgcGFyZW50LCBp
biBbT3B0aW9uYWwsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVs
bFN0cmluZ10gRE9NU3RyaW5nIG5hbWUsIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVudHJ5Q2Fs
bGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxi
YWNrIGVycm9yQ2FsbGJhY2spOwotICAgICAgICBET01TdHJpbmcgdG9VUkwoKTsKLSAgICAgICAg
dm9pZCByZW1vdmUoaW4gW0NhbGxiYWNrXSBWb2lkQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBp
biBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwotICAg
ICAgICB2b2lkIGdldFBhcmVudChpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFbnRyeUNhbGxiYWNr
IHN1Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFjayBl
cnJvckNhbGxiYWNrKTsKLSAgICB9OwotfQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9F
bnRyeUFycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5
QXJyYXkuY3BwCShyZXZpc2lvbiAxMTA4NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Vu
dHJ5QXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiRW50cnlBcnJheS5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUVudHJ5QXJyYXk6OkVudHJ5QXJyYXkoKQotewot
fQotCi1FbnRyeSogRW50cnlBcnJheTo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKLXsKLSAg
ICBpZiAoaW5kZXggPj0gbV9lbnRyaWVzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
cmV0dXJuIG1fZW50cmllc1tpbmRleF0uZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0VudHJ5QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5
QXJyYXkuaAkocmV2aXNpb24gMTEwODU2KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRy
eUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24u
Ci0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRW50cnlBcnJh
eV9oCi0jZGVmaW5lIEVudHJ5QXJyYXlfaAotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0j
aW5jbHVkZSAiRW50cnkuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRW50cnlB
cnJheSA6IHB1YmxpYyBSZWZDb3VudGVkPEVudHJ5QXJyYXk+IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxFbnRyeUFycmF5PiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBFbnRyeUFycmF5KCkpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fZW50cmllcy5zaXplKCk7IH0KLSAgICBFbnRyeSogaXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIFBhc3NS
ZWZQdHI8RW50cnk+IGVudHJ5KTsKLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fZW50cmllcy5pc0VtcHR5KCk7IH0KLSAgICB2b2lkIGNsZWFyKCkgeyBtX2VudHJpZXMuY2xl
YXIoKTsgfQotICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8RW50cnk+IGVudHJ5KSB7IG1fZW50
cmllcy5hcHBlbmQoZW50cnkpOyB9Ci0KLXByaXZhdGU6Ci0gICAgRW50cnlBcnJheSgpOwotCi0g
ICAgVmVjdG9yPFJlZlB0cjxFbnRyeT4gPiBtX2VudHJpZXM7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gRW50cnlBcnJh
eV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXkuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheS5pZGwJKHJldmlzaW9uIDEx
MDg1NikKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLW1vZHVsZSBzdG9yYWdlIHsKLSAgICBpbnRlcmZhY2UgWwot
ICAgICAgICBDb25kaXRpb25hbD1GSUxFX1NZU1RFTSwKLSAgICAgICAgSW5kZXhlZEdldHRlciwK
LSAgICAgICAgSlNOb1N0YXRpY1RhYmxlcwotICAgIF0gRW50cnlBcnJheSB7Ci0gICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICAgICAgRW50cnkgaXRl
bShpbiBbSXNJbmRleF0gdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgfTsKLX0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuY3BwCShyZXZpc2lvbiAxMTA4NTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw2MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkVudHJ5
QXJyYXlTeW5jLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJFbnRy
eUFycmF5LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc1JlZlB0cjxFbnRyeUFycmF5
U3luYz4gRW50cnlBcnJheVN5bmM6OmNyZWF0ZShFbnRyeUFycmF5KiBlbnRyaWVzKQotewotICAg
IFJlZlB0cjxFbnRyeUFycmF5U3luYz4gZW50cmllc1N5bmMgPSBhZG9wdFJlZihuZXcgRW50cnlB
cnJheVN5bmMoKSk7Ci0gICAgaWYgKGVudHJpZXMpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGVudHJpZXMtPmxlbmd0aCgpOyArK2kpCi0gICAgICAgICAgICBlbnRyaWVzU3lu
Yy0+YXBwZW5kKEVudHJ5U3luYzo6Y3JlYXRlKGVudHJpZXMtPml0ZW0oaSkpKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIGVudHJpZXNTeW5jLnJlbGVhc2UoKTsKLX0KLQotRW50cnlBcnJheVN5bmM6OkVu
dHJ5QXJyYXlTeW5jKCkKLXsKLX0KLQotRW50cnlTeW5jKiBFbnRyeUFycmF5U3luYzo6aXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3QKLXsKLSAgICBpZiAoaW5kZXggPj0gbV9lbnRyaWVzLnNpemUo
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fZW50cmllc1tpbmRleF0uZ2V0KCk7
Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmgJKHJldmlzaW9uIDExMDg1NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBFbnRyeUFycmF5U3luY19oCi0jZGVmaW5lIEVudHJ5QXJyYXlTeW5j
X2gKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkVudHJ5U3luYy5oIgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFbnRyeUFycmF5OwotCi1jbGFzcyBFbnRy
eUFycmF5U3luYyA6IHB1YmxpYyBSZWZDb3VudGVkPEVudHJ5QXJyYXlTeW5jPiB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RW50cnlBcnJheVN5bmM+IGNyZWF0ZSgpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVudHJ5QXJyYXlTeW5jKCkpOwotICAgIH0KLQot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVudHJ5QXJyYXlTeW5jPiBjcmVhdGUoRW50cnlBcnJheSop
OwotCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9lbnRyaWVzLnNpemUo
KTsgfQotICAgIEVudHJ5U3luYyogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0KLSAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2VudHJpZXMuaXNFbXB0eSgpOyB9Ci0gICAg
dm9pZCBjbGVhcigpIHsgbV9lbnRyaWVzLmNsZWFyKCk7IH0KLSAgICB2b2lkIGFwcGVuZChQYXNz
UmVmUHRyPEVudHJ5U3luYz4gZW50cnkpIHsgbV9lbnRyaWVzLmFwcGVuZChlbnRyeSk7IH0KLQot
cHJpdmF0ZToKLSAgICBFbnRyeUFycmF5U3luYygpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxFbnRy
eVN5bmM+ID4gbV9lbnRyaWVzOwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lT
VEVNKQotCi0jZW5kaWYgLy8gRW50cnlBcnJheVN5bmNfaApJbmRleDogU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9FbnRyeUFycmF5U3luYy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9FbnRyeUFycmF5U3luYy5pZGwJKHJldmlzaW9uIDExMDg1NikKKysrIFNvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi1tb2R1bGUgc3RvcmFnZSB7Ci0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0
aW9uYWw9RklMRV9TWVNURU0sCi0gICAgICAgIEluZGV4ZWRHZXR0ZXIsCi0gICAgICAgIEpTTm9T
dGF0aWNUYWJsZXMKLSAgICBdIEVudHJ5QXJyYXlTeW5jIHsKLSAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwotICAgICAgICBFbnRyeVN5bmMgaXRlbShpbiBb
SXNJbmRleF0gdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgfTsKLX0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0VudHJ5QmFzZS5jcHAJKHJldmlzaW9uIDExMDg1NikKKysrIFNvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRW50cnlCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkVudHJ5QmFzZS5oIgotCi0jaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAi
RE9NRmlsZVBhdGguaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtQmFzZS5oIgotI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1FbnRyeUJhc2U6OkVudHJ5QmFzZShQYXNzUmVmUHRy
PERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQot
ICAgIDogbV9maWxlU3lzdGVtKGZpbGVTeXN0ZW0pCi0gICAgLCBtX2Z1bGxQYXRoKGZ1bGxQYXRo
KQotICAgICwgbV9uYW1lKERPTUZpbGVQYXRoOjpnZXROYW1lKGZ1bGxQYXRoKSkKLXsKLX0KLQot
RW50cnlCYXNlOjp+RW50cnlCYXNlKCkKLXsKLX0KLQotU3RyaW5nIEVudHJ5QmFzZTo6dG9VUkwo
KQotewotICAgIHJldHVybiBtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpLT50b1VSTCht
X2ZpbGVTeXN0ZW0tPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCksIG1fZnVsbFBhdGgpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNU
RU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5QmFzZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmgJKHJldmlzaW9uIDExMDg1NikK
KysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICog
bWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgRW50cnlCYXNlX2gKLSNkZWZpbmUgRW50cnlCYXNlX2gKLQot
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0j
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERPTUZpbGVTeXN0ZW1CYXNlOwotY2xhc3Mg
RW50cnlTeW5jOwotCi0vLyBBIGNvbW1vbiBiYXNlIGNsYXNzIGZvciBFbnRyeSBhbmQgRW50cnlT
eW5jLgotY2xhc3MgRW50cnlCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RW50cnlCYXNlPiB7Ci1w
dWJsaWM6Ci0gICAgdmlydHVhbCB+RW50cnlCYXNlKCk7Ci0KLSAgICBET01GaWxlU3lzdGVtQmFz
ZSogZmlsZXN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVN5c3RlbS5nZXQoKTsgfQotCi0g
ICAgdmlydHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIGNv
bnN0IFN0cmluZyYgZnVsbFBhdGgoKSBjb25zdCB7IHJldHVybiBtX2Z1bGxQYXRoOyB9Ci0gICAg
Y29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9Ci0KLSAgICBTdHJp
bmcgdG9VUkwoKTsKLQotcHJvdGVjdGVkOgotICAgIEVudHJ5QmFzZShQYXNzUmVmUHRyPERPTUZp
bGVTeXN0ZW1CYXNlPiwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7Ci0gICAgZnJpZW5kIGNsYXNz
IEVudHJ5U3luYzsKLQotICAgIFJlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gbV9maWxlU3lzdGVt
OwotCi0gICAgLy8gVGhpcyBpcyBhIHZpcnR1YWwgcGF0aC4KLSAgICBTdHJpbmcgbV9mdWxsUGF0
aDsKLQotICAgIFN0cmluZyBtX25hbWU7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRklM
RV9TWVNURU0pCi0KLSNlbmRpZiAvLyBFbnRyeUJhc2VfaApJbmRleDogU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9FbnRyeUNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9FbnRyeUNhbGxiYWNrLmgJKHJldmlzaW9uIDExMDg1NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRW50cnlDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIEVudHJ5Q2FsbGJhY2tfaAotI2RlZmluZSBFbnRyeUNhbGxiYWNrX2gKLQotI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRW50cnk7Ci0KLWNsYXNzIEVudHJ5Q2FsbGJhY2sgOiBw
dWJsaWMgUmVmQ291bnRlZDxFbnRyeUNhbGxiYWNrPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+
RW50cnlDYWxsYmFjaygpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChFbnRyeSop
ID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNU
RU0pCi0KLSNlbmRpZiAvLyBFbnRyeUNhbGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRW50cnlDYWxsYmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9FbnRyeUNhbGxiYWNrLmlkbAkocmV2aXNpb24gMTEwODU2KQorKysgU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9FbnRyeUNhbGxiYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSwzOCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotbW9kdWxlIHN0b3JhZ2UgewotICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFs
PUZJTEVfU1lTVEVNLAotICAgICAgICBDYWxsYmFjawotICAgIF0gRW50cnlDYWxsYmFjayB7Ci0g
ICAgICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoaW4gRW50cnkgZW50cnkpOwotICAgIH07Ci19Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9FbnRyeVN5bmMuY3BwCShyZXZpc2lvbiAxMTA4NTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRW50cnlTeW5jLmgi
Ci0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJET01GaWxlUGF0aC5oIgot
I2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1TeW5jLmgiCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50cnku
aCIKLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJGaWxlRW50cnlT
eW5jLmgiCi0jaW5jbHVkZSAiRmlsZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIk1ldGFkYXRhLmgi
Ci0jaW5jbHVkZSAiU3luY0NhbGxiYWNrSGVscGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotUGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6Y3JlYXRlKEVudHJ5QmFzZSogZW50
cnkpCi17Ci0gICAgaWYgKGVudHJ5LT5pc0ZpbGUoKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBGaWxlRW50cnlTeW5jKGVudHJ5LT5tX2ZpbGVTeXN0ZW0sIGVudHJ5LT5tX2Z1bGxQYXRo
KSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXJlY3RvcnlFbnRyeVN5bmMoZW50cnktPm1f
ZmlsZVN5c3RlbSwgZW50cnktPm1fZnVsbFBhdGgpKTsKLX0KLQotUGFzc1JlZlB0cjxNZXRhZGF0
YT4gRW50cnlTeW5jOjpnZXRNZXRhZGF0YShFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBlYyA9
IDA7Ci0gICAgTWV0YWRhdGFTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+
YXN5bmNGaWxlU3lzdGVtKCkpOwotICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXRNZXRhZGF0YSh0
aGlzLCBoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7
Ci0gICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1bHQoZWMp
OwotfQotCi1QYXNzUmVmUHRyPEVudHJ5U3luYz4gRW50cnlTeW5jOjptb3ZlVG8oUGFzc1JlZlB0
cjxEaXJlY3RvcnlFbnRyeVN5bmM+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRp
b25Db2RlJiBlYykgY29uc3QKLXsKLSAgICBlYyA9IDA7Ci0gICAgRW50cnlTeW5jQ2FsbGJhY2tI
ZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwotICAgIGlmICgh
bV9maWxlU3lzdGVtLT5tb3ZlKHRoaXMsIHBhcmVudC5nZXQoKSwgbmFtZSwgaGVscGVyLnN1Y2Nl
c3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgewotICAgICAgICBlYyA9IEZp
bGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotICAgIHJldHVybiBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQotUGFzc1JlZlB0
cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6Y29weVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlT
eW5jPiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
Ci17Ci0gICAgZWMgPSAwOwotICAgIEVudHJ5U3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2Zp
bGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKLSAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Y29w
eSh0aGlzLCBwYXJlbnQuZ2V0KCksIG5hbWUsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVs
cGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKLSAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZB
TElEX01PRElGSUNBVElPTl9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1
cm4gaGVscGVyLmdldFJlc3VsdChlYyk7Ci19Ci0KLXZvaWQgRW50cnlTeW5jOjpyZW1vdmUoRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0Ci17Ci0gICAgZWMgPSAwOwotICAgIFZvaWRTeW5jQ2FsbGJh
Y2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwotICAgIGlm
ICghbV9maWxlU3lzdGVtLT5yZW1vdmUodGhpcywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBo
ZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgewotICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklO
VkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBoZWxw
ZXIuZ2V0UmVzdWx0KGVjKTsKLX0KLQotUGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6
Z2V0UGFyZW50KCkgY29uc3QKLXsKLSAgICAvLyBTeW5jIHZlcmlvbiBvZiBnZXRQYXJlbnQgZG9l
c24ndCB0aHJvdyBleGNlcHRpb25zLgotICAgIFN0cmluZyBwYXJlbnRQYXRoID0gRE9NRmlsZVBh
dGg6OmdldERpcmVjdG9yeShmdWxsUGF0aCgpKTsKLSAgICByZXR1cm4gRGlyZWN0b3J5RW50cnlT
eW5jOjpjcmVhdGUobV9maWxlU3lzdGVtLCBwYXJlbnRQYXRoKTsKLX0KLQotRW50cnlTeW5jOjpF
bnRyeVN5bmMoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBmdWxsUGF0aCkKLSAgICA6IEVudHJ5QmFzZShmaWxlU3lzdGVtLCBmdWxsUGF0aCkK
LXsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpJbmRleDogU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9FbnRyeVN5bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0VudHJ5U3luYy5oCShyZXZpc2lvbiAxMTA4NTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0VudHJ5U3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIEVudHJ5U3luY19oCi0jZGVmaW5lIEVudHJ5U3luY19oCi0KLSNpZiBFTkFCTEUoRklMRV9T
WVNURU0pCi0KLSNpbmNsdWRlICJET01GaWxlU3lzdGVtU3luYy5oIgotI2luY2x1ZGUgIkVudHJ5
QmFzZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIERpcmVjdG9yeUVudHJ5U3luYzsKLWNsYXNzIE1ldGFkYXRhOwotCi10eXBl
ZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi1jbGFzcyBFbnRyeVN5bmMgOiBwdWJsaWMgRW50cnlC
YXNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeVN5bmM+IGNyZWF0ZShF
bnRyeUJhc2UqKTsKLQotICAgIERPTUZpbGVTeXN0ZW1TeW5jKiBmaWxlc3lzdGVtKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRmlsZVN5c3RlbVN5bmMqPihtX2ZpbGVTeXN0ZW0uZ2V0
KCkpOyB9Ci0KLSAgICBQYXNzUmVmUHRyPE1ldGFkYXRhPiBnZXRNZXRhZGF0YShFeGNlcHRpb25D
b2RlJik7Ci0gICAgUGFzc1JlZlB0cjxFbnRyeVN5bmM+IG1vdmVUbyhQYXNzUmVmUHRyPERpcmVj
dG9yeUVudHJ5U3luYz4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUm
KSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEVudHJ5U3luYz4gY29weVRvKFBhc3NSZWZQdHI8RGly
ZWN0b3J5RW50cnlTeW5jPiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29k
ZSYpIGNvbnN0OwotICAgIHZvaWQgcmVtb3ZlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBQ
YXNzUmVmUHRyPEVudHJ5U3luYz4gZ2V0UGFyZW50KCkgY29uc3Q7Ci0KLXByb3RlY3RlZDoKLSAg
ICBFbnRyeVN5bmMoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4sIGNvbnN0IFN0cmluZyYg
ZnVsbFBhdGgpOwotfTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0j
ZW5kaWYgLy8gRW50cnlTeW5jX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlT
eW5jLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5p
ZGwJKHJldmlzaW9uIDExMDg1NikKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlTeW5j
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHN0b3JhZ2UgewotICAg
IGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFsPUZJTEVfU1lTVEVNLAotICAgICAgICBD
dXN0b21Ub0pTT2JqZWN0LAotICAgICAgICBKU05vU3RhdGljVGFibGVzCi0gICAgXSBFbnRyeVN5
bmMgewotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc0ZpbGU7Ci0gICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzRGlyZWN0b3J5OwotICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgZnVsbFBhdGg7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01GaWxlU3lz
dGVtU3luYyBmaWxlc3lzdGVtOwotCi0gICAgICAgIE1ldGFkYXRhIGdldE1ldGFkYXRhKCkgcmFp
c2VzIChGaWxlRXhjZXB0aW9uKTsKLSAgICAgICAgRW50cnlTeW5jIG1vdmVUbyhpbiBEaXJlY3Rv
cnlFbnRyeVN5bmMgcGFyZW50LCBpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRl
ZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZSkgcmFpc2VzIChGaWxlRXhjZXB0aW9u
KTsKLSAgICAgICAgRW50cnlTeW5jIGNvcHlUbyhpbiBEaXJlY3RvcnlFbnRyeVN5bmMgcGFyZW50
LCBpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5n
XSBET01TdHJpbmcgbmFtZSkgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKLSAgICAgICAgRE9NU3Ry
aW5nIHRvVVJMKCk7Ci0gICAgICAgIHZvaWQgcmVtb3ZlKCkgcmFpc2VzIChGaWxlRXhjZXB0aW9u
KTsKLSAgICAgICAgRGlyZWN0b3J5RW50cnlTeW5jIGdldFBhcmVudCgpOwotICAgIH07Ci19Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>