<?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>85757</bug_id>
          
          <creation_ts>2012-05-06 18:51:21 -0700</creation_ts>
          <short_desc>[Chromium] Move idbFactory to Platform.h</short_desc>
          <delta_ts>2012-12-19 13:37:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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>105460</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>
          
          <blocked>82948</blocked>
          <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>fishd</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>617265</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-06 18:51:21 -0700</bug_when>
    <thetext>[Chromium] Move idbFactory to Platform.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617266</commentid>
    <comment_count>1</comment_count>
      <attachid>140448</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-06 18:52:34 -0700</bug_when>
    <thetext>Created attachment 140448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617268</commentid>
    <comment_count>2</comment_count>
      <attachid>140448</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-06 18:55:18 -0700</bug_when>
    <thetext>Comment on attachment 140448
Patch

Looks OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617269</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-06 18:55:42 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617270</commentid>
    <comment_count>4</comment_count>
      <attachid>140448</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-06 18:56:40 -0700</bug_when>
    <thetext>Comment on attachment 140448
Patch

Removing r+ since it requires approval from API reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617287</commentid>
    <comment_count>5</comment_count>
      <attachid>140448</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-06 19:13:28 -0700</bug_when>
    <thetext>Comment on attachment 140448
Patch

Attachment 140448 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12631904</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617290</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-06 19:22:47 -0700</bug_when>
    <thetext>EWS bot result appears to be flake. Not sure why this patch would cause a segmentation fault.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617332</commentid>
    <comment_count>7</comment_count>
      <attachid>140448</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-06 20:29:30 -0700</bug_when>
    <thetext>Comment on attachment 140448
Patch

WebIDBFactory is a bit trickier.  Specifically, line 58 of WebKitPlatformSupport.h says:

class WebIDBFactory; // FIXME: Does this belong in platform?

The trouble is that WebIDBFactory::getDatabaseNames depends on WebFrame.  Source/Platform isn&apos;t allowed to know about Frames or WebFrames, so there&apos;s a bit of untangling to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793920</commentid>
    <comment_count>8</comment_count>
      <attachid>179999</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-12-18 12:16:46 -0800</bug_when>
    <thetext>Created attachment 179999
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794896</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-12-19 13:37:38 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 105460 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140448</attachid>
            <date>2012-05-06 18:52:34 -0700</date>
            <delta_ts>2012-12-18 12:16:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85757-20120506215151.patch</filename>
            <type>text/plain</type>
            <size>4134</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2MjU4KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA1LTA2ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1v
dmUgaWRiRmFjdG9yeSB0byBQbGF0Zm9ybS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NTc1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBhcnQgb2YgYSByZWZhY3RvcmluZyBzZXJpZXMuIFNlZSB0cmFj
a2luZyBidWcgODI5NDguCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChQbGF0Zm9ybSk6CisgICAgICAgIChXZWJLaXQ6
OlBsYXRmb3JtOjppZGJGYWN0b3J5KToKKwogMjAxMi0wNS0wNCAgVG9tbXkgV2lkZW5mbHljaHQg
IDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IE1ha2UgUGVl
ckNvbm5lY3Rpb24wMCdzIEFQSSBmdWxseSBjb21wbGlhbnQgd2l0aCB0aGUgZHJhZnQKSW5kZXg6
IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEx
NjI1NSkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFdlYkF1ZGlvQnVzOworY2xhc3MgV2ViSURCRmFjdG9yeTsKIGNsYXNzIFdlYk1lZGlhU3RyZWFt
Q2VudGVyOwogY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQ7CiBjbGFzcyBXZWJNaW1l
UmVnaXN0cnk7CkBAIC0yOTksNiArMzAwLDEwIEBAIHB1YmxpYzoKICAgICAvLyBNYXkgcmV0dXJu
IG51bGwgaWYgV2ViUlRDIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGF2YWxpYWJsZSBvciBvdXQgb2Yg
cmVzb3VyY2VzLgogICAgIHZpcnR1YWwgV2ViTWVkaWFTdHJlYW1DZW50ZXIqIGNyZWF0ZU1lZGlh
U3RyZWFtQ2VudGVyKFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50KikgeyByZXR1cm4gMDsgfQog
CisgICAgLy8gSW5kZXhlZCBEYXRhYmFzZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICB2aXJ0dWFsIFdlYklEQkZhY3RvcnkqIGlkYkZh
Y3RvcnkoKSB7IHJldHVybiAwOyB9CisKIHByb3RlY3RlZDoKICAgICB+UGxhdGZvcm0oKSB7IH0K
IH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2MjU4KQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNyBAQAorMjAxMi0wNS0wNiAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW0Nocm9taXVtXSBNb3ZlIGlkYkZhY3RvcnkgdG8gUGxhdGZvcm0uaAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU3NTcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IG9mIGEgcmVm
YWN0b3Jpbmcgc2VyaWVzLiBTZWUgdHJhY2tpbmcgYnVnIDgyOTQ4LgorCisgICAgICAgICogcHVi
bGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAoV2ViS2l0UGxh
dGZvcm1TdXBwb3J0KToKKyAgICAgICAgKiBzcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OklEQkZhY3RvcnlCYWNrZW5kUHJveHk6OklEQkZhY3RvcnlCYWNr
ZW5kUHJveHkpOgorCiAyMDEyLTA1LTA2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQ1NQIHNob3VsZCBsZXQgc2l0ZXMgYm90aCBlbmZvcmNlIG9uZSBwb2xpY3kg
YW5kIG1vbml0b3IgYW5vdGhlcgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgJKHJl
dmlzaW9uIDExNjI1NSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDYg
QEAgcHVibGljOgogCiAgICAgLy8gSW5kZXhlZCBEYXRhYmFzZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLSAgICB2aXJ0dWFsIFdlYklEQkZh
Y3RvcnkqIGlkYkZhY3RvcnkoKSB7IHJldHVybiAwOyB9CiAgICAgLy8gRklYTUU6IFJlbW92ZSBX
ZWJTdHJpbmcga2V5UGF0aCBvdmVybG9hZCBvbmNlIGNhbGxlcnMgYXJlIHVwZGF0ZWQuCiAgICAg
Ly8gaHR0cDovL3dlYmtpdC5vcmcvYi84NDIwNwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJREJL
ZXlzRnJvbVNlcmlhbGl6ZWRWYWx1ZXNBbmRLZXlQYXRoKGNvbnN0IFdlYlZlY3RvcjxXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWU+JiB2YWx1ZXMsICBjb25zdCBXZWJTdHJpbmcmIGtleVBhdGgsIFdl
YlZlY3RvcjxXZWJJREJLZXk+JiBrZXlzKSB7IGNyZWF0ZUlEQktleXNGcm9tU2VyaWFsaXplZFZh
bHVlc0FuZEtleVBhdGgodmFsdWVzLCBXZWJJREJLZXlQYXRoKGtleVBhdGgpLCBrZXlzKTsgfQpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJh
Y2tlbmRQcm94eS5jcHAJKHJldmlzaW9uIDExNjI1NSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3
ICs0Miw2IEBACiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIldl
YklEQkZhY3RvcnkuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJXZWJQZXJtaXNzaW9uQ2xpZW50Lmgi
CiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwu
aCIKQEAgLTUyLDcgKzUxLDcgQEAKICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQu
aCIKLQorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIApAQCAtNjQsNyArNjMsNyBAQCBQYXNzUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW50
ZXJmYWNlPiBJCiB9CiAKIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OklEQkZhY3RvcnlCYWNrZW5k
UHJveHkoKQotICAgIDogbV93ZWJJREJGYWN0b3J5KHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5p
ZGJGYWN0b3J5KCkpCisgICAgOiBtX3dlYklEQkZhY3RvcnkoV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT5pZGJGYWN0b3J5KCkpCiB7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179999</attachid>
            <date>2012-12-18 12:16:46 -0800</date>
            <delta_ts>2012-12-18 12:16:46 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-85757-20121218151316.patch</filename>
            <type>text/plain</type>
            <size>124135</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTM4MDUwKQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4MyBAQAorMjAxMi0xMi0xOCAgTWFy
ayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBN
b3ZlIGlkYkZhY3RvcnkgdG8gUGxhdGZvcm0uaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU3NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgd29yay1pbi1wcm9ncmVzcyBwYXRjaCB3aGlj
aCBtb3ZlcyBXZWJJREJGYWN0b3J5IGFuZCBhbGwKKyAgICAgICAgcmVsYXRlZCBkZXBlbmRlbmNp
ZXMgdG8gUGxhdGZvcm0vLCBhbmQgbW92ZXMKKyAgICAgICAgV2ViS2l0UGxhdGZvcm1TdXBwb3J0
OjppZGJGYWN0b3J5IHRvIHRoZSBuZXcgUGxhdGZvcm0uaC4gVGhpcworICAgICAgICByZXF1aXJl
cyByZW1vdmluZyBhIFdlYkZyYW1lKiBwYXJhbWV0ZXIgaW4gc2V2ZXJhbAorICAgICAgICBXZWJJ
REJGYWN0b3J5IG1ldGhvZHMsIHdoaWNoIHdpbGwgcmVxdWlyZSBzb21lIGNoYW5nZXMgaW4KKyAg
ICAgICAgZG93bnN0cmVhbSBDaHJvbWl1bSAodG8gcmVtb3ZlIHRoZSBXZWJGcmFtZSogcGFyYW1l
dGVyIGluIHRoZQorICAgICAgICBtYXRjaGluZyBtZXRob2RzKSBiZWZvcmUgd2UgY2FuIGxhbmQg
dGhpcyBwYXRjaCBpbiBXZWJLaXQuCisKKyAgICAgICAgUGFydCBvZiBhIHJlZmFjdG9yaW5nIHNl
cmllczsgc2VlIHRyYWNraW5nIGJ1ZyA4Mjk0OC4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoUGxhdGZvcm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybTo6aWRiRmFj
dG9yeSk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkRPTVN0cmluZ0xpc3QuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViRE9NU3RyaW5nTGlzdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRPTVN0cmluZ0xpc3Q6On5XZWJET01TdHJpbmdMaXN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRE9NU3RyaW5nTGlzdDo6V2ViRE9NU3RyaW5nTGlzdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkRPTVN0cmluZ0xpc3Q6Om9wZXJhdG9yPSk6CisgICAgICAgICogY2hyb21p
dW0vcHVibGljL1dlYkV4Y2VwdGlvbkNvZGUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViSURCQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCQ2FsbGJhY2tzOjp+V2ViSURCQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ2FsbGJhY2tzOjpvbkVycm9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ2FsbGJh
Y2tzOjpvblN1Y2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDYWxsYmFja3M6Om9uQmxv
Y2tlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNhbGxiYWNrczo6b25TdWNjZXNzV2l0aFBy
ZWZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzOjpvblVwZ3JhZGVOZWVk
ZWQpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJREJDdXJzb3IuaDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViSURCQ3Vyc29yKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCQ3Vyc29yOjp+V2ViSURCQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
Q3Vyc29yOjphZHZhbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29yOjpjb250aW51
ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvcjo6cHJlZmV0Y2hDb250aW51ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvcjo6cHJlZmV0Y2hSZXNldCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkN1cnNvcjo6cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJDdXJzb3I6OldlYklEQkN1cnNvcik6CisgICAgICAgICogY2hyb21p
dW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYklEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2U6
On5XZWJJREJEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjptZXRh
ZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9y
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpjcmVhdGVUcmFuc2FjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkRhdGFiYXNlOjpmb3JjZUNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0
YWJhc2U6OmFib3J0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2U6OmNvbW1pdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpnZXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJEYXRhYmFzZTo6cHV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2U6
OnNldEluZGV4S2V5cyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpzZXRJbmRl
eGVzUmVhZHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZTo6b3BlbkN1cnNvcik6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpjb3VudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkRhdGFiYXNlOjpkZWxldGVSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkRhdGFiYXNlOjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpXZWJJ
REJEYXRhYmFzZSk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlQ2Fs
bGJhY2tzLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklEQkRhdGFi
YXNlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3M6
On5XZWJJREJEYXRhYmFzZUNhbGxiYWNrcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFi
YXNlQ2FsbGJhY2tzOjpvbkZvcmNlZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0
YWJhc2VDYWxsYmFja3M6Om9uVmVyc2lvbkNoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkRhdGFiYXNlQ2FsbGJhY2tzOjpvbkFib3J0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0
YWJhc2VDYWxsYmFja3M6Om9uQ29tcGxldGUpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9X
ZWJJREJEYXRhYmFzZUVycm9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYklEQkRhdGFiYXNlRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUVy
cm9yOjp+V2ViSURCRGF0YWJhc2VFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFi
YXNlRXJyb3I6OldlYklEQkRhdGFiYXNlRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJE
YXRhYmFzZUVycm9yOjpvcGVyYXRvcj0pOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViSURCRmFjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkZh
Y3Rvcnk6On5XZWJJREJGYWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRmFjdG9yeTo6
Z2V0RGF0YWJhc2VOYW1lcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkZhY3Rvcnk6Om9wZW4p
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5OjpkZWxldGVEYXRhYmFzZSk6CisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYklEQkluZGV4Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYklEQkluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5k
ZXg6On5XZWJJREJJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkluZGV4OjpvcGVuT2Jq
ZWN0Q3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5kZXg6Om9wZW5LZXlDdXJzb3Ip
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRleDo6Y291bnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJJbmRleDo6Z2V0T2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5kZXg6
OmdldEtleSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkluZGV4OjpXZWJJREJJbmRleCk6Cisg
ICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYklEQktleS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJJREJLZXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXk6
OldlYklEQktleSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQktleTo6fldlYklEQktleSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQktleTo6b3BlcmF0b3I9KToKKyAgICAgICAgKiBjaHJvbWl1
bS9wdWJsaWMvV2ViSURCS2V5UGF0aC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJJREJLZXlQYXRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0aDo6V2Vi
SURCS2V5UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQktleVBhdGg6On5XZWJJREJLZXlQ
YXRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0aDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5UmFuZ2UuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViSURCS2V5UmFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJLZXlSYW5nZTo6fldlYklEQktleVJhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5
UmFuZ2U6OldlYklEQktleVJhbmdlKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViSURC
TWV0YWRhdGEuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQk1ldGFkYXRhOjpXZWJJREJNZXRhZGF0YSk6CisgICAg
ICAgIChXZWJJREJNZXRhZGF0YSk6CisgICAgICAgIChPYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQk1ldGFkYXRhOjpPYmplY3RTdG9yZTo6T2JqZWN0U3RvcmUpOgorICAgICAg
ICAoSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJNZXRhZGF0YTo6SW5kZXg6OkluZGV4
KToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViSURCT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZTo6fldlYklEQk9iamVjdFN0b3JlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmU6OmdldCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQk9iamVjdFN0b3JlOjpwdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9y
ZTo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZTo6
Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZTo6c2V0SW5kZXhLZXlzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmU6OnNldEluZGV4ZXNSZWFkeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjppbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQk9iamVjdFN0b3JlOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
Qk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0
U3RvcmU6OmNvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmU6OldlYklE
Qk9iamVjdFN0b3JlKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViSURCVHJhbnNhY3Rp
b24uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViSURCVHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbjo6fldlYklEQlRyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb246OmNvbW1pdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QlRyYW5zYWN0aW9uOjpkaWRDb21wbGV0ZVRhc2tFdmVudHMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJUcmFuc2FjdGlvbjo6c2V0Q2FsbGJhY2tzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
VHJhbnNhY3Rpb246OmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uOjphZGRQZW5kaW5nRXZlbnRzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb246OldlYklEQlRyYW5zYWN0aW9uKToKKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrczo6fldlYklEQlRyYW5z
YWN0aW9uQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb25DYWxs
YmFja3M6Om9uQWJvcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbkNhbGxi
YWNrczo6b25Db21wbGV0ZSk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNlY3VyaXR5
T3JpZ2luLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNlY3VyaXR5
T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VjdXJpdHlPcmlnaW46On5XZWJTZWN1cml0
eU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0
eU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNlY3VyaXR5T3JpZ2luOjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbjo6aXNOdWxsKToKKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6IEFkZGVkLgorICAg
ICAgICAodjgpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6fldl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmlzTnVsbCk6CisKIDIwMTItMTItMTggIEphbWVzIFJv
Ymluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEZpeCBp
bmNsdWRlIHN0eWxlIGluIFdlYlRyYW5zZm9ybU9wZXJhdGlvbnMuaApJbmRleDogU291cmNlL1Bs
YXRmb3JtL1BsYXRmb3JtLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL1BsYXRm
b3JtLmd5cGkJKHJldmlzaW9uIDEzODA0OCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5n
eXBpCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw5IEBACiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYkNvb2tpZUphci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
V2ViRGF0YS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRGVsZWdhdGVkUmVu
ZGVyZXJMYXllci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRE9NU3RyaW5n
TGlzdC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRHJhZ0RhdGEuaCcsCisg
ICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkV4Y2VwdGlvbkNvZGUuaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudC5oJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUluZm8uaCcsCkBAIC03NCw2ICs3
NiwyMSBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJIVFRQQm9keS5oJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViSFRUUEhlYWRlclZpc2l0b3IuaCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkhUVFBMb2FkSW5mby5oJywKKyAgICAgICAgICAg
ICdjaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2suaCcsCisgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYklEQkN1cnNvci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
V2ViSURCRGF0YWJhc2UuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYklEQkRh
dGFiYXNlQ2FsbGJhY2tzLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJJREJE
YXRhYmFzZUVycm9yLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFj
dG9yeS5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViSURCSW5kZXguaCcsCisg
ICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYklEQktleS5oJywKKyAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5UGF0aC5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViSURCS2V5UmFuZ2UuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dl
YklEQk1ldGFkYXRhLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmpl
Y3RTdG9yZS5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViSURCVHJhbnNhY3Rp
b24uaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZS5oJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViSW1hZ2VMYXllci5oJywKICAgICAgICAgICAg
ICdjaHJvbWl1bS9wdWJsaWMvV2ViSU9TdXJmYWNlTGF5ZXIuaCcsCkBAIC0xMTgsNiArMTM1LDgg
QEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIuaCcsCiAg
ICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkuaCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhclRoZW1lUGFpbnRlci5o
JywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU2VjdXJpdHlPcmlnaW4uaCcsCisg
ICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Qu
aCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNpemUuaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vcHVibGljL1dlYlNvY2tldFN0cmVhbUVycm9yLmgnLApJbmRleDogU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAkocmV2aXNpb24gMTM4MDQ4KQor
KysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Niw2ICs1Niw3IEBAIGNsYXNzIFdlYkZpbGVVdGlsaXRpZXM7CiBjbGFzcyBXZWJG
bGluZ0FuaW1hdG9yOwogY2xhc3MgV2ViR2VzdHVyZUN1cnZlVGFyZ2V0OwogY2xhc3MgV2ViR2Vz
dHVyZUN1cnZlOworY2xhc3MgV2ViSURCRmFjdG9yeTsKIGNsYXNzIFdlYk1lZGlhU3RyZWFtQ2Vu
dGVyOwogY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQ7CiBjbGFzcyBXZWJNZXNzYWdl
UG9ydENoYW5uZWw7CkBAIC0xNzgsNiArMTc5LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHNp
emVfdCBjb21wdXRlTGFzdEh5cGhlbkxvY2F0aW9uKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJz
LCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgYmVmb3JlSW5kZXgsIGNvbnN0IFdlYlN0cmluZyYgbG9j
YWxlKSB7IHJldHVybiAwOyB9CiAKIAorICAgIC8vIEluZGV4ZWQgRGF0YWJhc2UgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdmlydHVh
bCBXZWJJREJGYWN0b3J5KiBpZGJGYWN0b3J5KCkgeyByZXR1cm4gMDsgfQorCisKICAgICAvLyBL
ZXlnZW4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogICAgIC8vIEhhbmRsZSB0aGUgPGtleWdlbj4gdGFnIGZvciBnZW5lcmF0
aW5nIGNsaWVudCBjZXJ0aWZpY2F0ZXMKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViRE9NU3RyaW5nTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViRE9NU3RyaW5nTGlzdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJET01TdHJpbmdMaXN0LmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkRPTVN0cmluZ0xpc3RfaAorI2RlZmluZSBXZWJE
T01TdHJpbmdMaXN0X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlBy
aXZhdGVQdHIuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eyBjbGFzcyBET01TdHJpbmdMaXN0OyB9CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCituYW1l
c3BhY2UgV1RGIHsgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7IH0KKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRE9NU3RyaW5nTGlzdCB7Citw
dWJsaWM6CisgICAgfldlYkRPTVN0cmluZ0xpc3QoKSB7IHJlc2V0KCk7IH0KKworICAgIFdFQktJ
VF9FWFBPUlQgV2ViRE9NU3RyaW5nTGlzdCgpOworICAgIFdlYkRPTVN0cmluZ0xpc3QoY29uc3Qg
V2ViRE9NU3RyaW5nTGlzdCYgbCkgeyBhc3NpZ24obCk7IH0KKyAgICBXZWJET01TdHJpbmdMaXN0
JiBvcGVyYXRvcj0oY29uc3QgV2ViRE9NU3RyaW5nTGlzdCYgbCkKKyAgICB7CisgICAgICAgIGFz
c2lnbihsKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIFdFQktJVF9FWFBP
UlQgdm9pZCByZXNldCgpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2Vi
RE9NU3RyaW5nTGlzdCYpOworCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBX
ZWJTdHJpbmcmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0Owor
ICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGl0ZW0odW5zaWduZWQpIGNvbnN0OworCisjaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViRE9NU3RyaW5nTGlzdChjb25zdCBXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6RE9NU3RyaW5nTGlzdD4mKTsKKyAgICBXZWJET01TdHJpbmdMaXN0
JiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRPTVN0cmluZ0xpc3Q+
Jik7CisgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRPTVN0cmluZ0xpc3Q+
KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6
OkRPTVN0cmluZ0xpc3Q+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXhjZXB0
aW9uQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViRXhjZXB0aW9uQ29kZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJFeGNlcHRpb25Db2RlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYkV4Y2VwdGlvbkNvZGVfaAorI2RlZmluZSBXZWJFeGNlcHRpb25Db2RlX2gK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFRoaXMgc2hvdWxkIG1hdGNoIGhvdyBFeGNlcHRp
b25Db2RlIGlzIGRlZmluZWQgaW4gV2ViQ29yZS4KK3R5cGVkZWYgaW50IFdlYkV4Y2VwdGlvbkNv
ZGU7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYklEQkNhbGxi
YWNrc19oCisjZGVmaW5lIFdlYklEQkNhbGxiYWNrc19oCisKKyNpbmNsdWRlICJXZWJDb21tb24u
aCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYkRPTVN0cmluZ0xpc3Q7CitjbGFzcyBXZWJJREJDdXJzb3I7CitjbGFzcyBXZWJJREJEYXRh
YmFzZTsKK2NsYXNzIFdlYklEQkRhdGFiYXNlRXJyb3I7CitjbGFzcyBXZWJJREJLZXk7CitjbGFz
cyBXZWJJREJLZXlQYXRoOworY2xhc3MgV2ViSURCSW5kZXg7CitjbGFzcyBXZWJJREJPYmplY3RT
dG9yZTsKK2NsYXNzIFdlYklEQlRyYW5zYWN0aW9uOworY2xhc3MgV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlOworCitjbGFzcyBXZWJJREJDYWxsYmFja3MgeworcHVibGljOgorICAgIHZpcnR1YWwg
fldlYklEQkNhbGxiYWNrcygpIHsgfQorCisgICAgLy8gRm9yIGNsYXNzZXMgdGhhdCBmb2xsb3cg
dGhlIFBJbXBsIHBhdHRlcm4sIHBhc3MgYSBjb25zdCByZWZlcmVuY2UuCisgICAgLy8gRm9yIHRo
ZSByZXN0LCBwYXNzIG93bmVyc2hpcCB0byB0aGUgY2FsbGVlIHZpYSBhIHBvaW50ZXIuCisgICAg
dmlydHVhbCB2b2lkIG9uRXJyb3IoY29uc3QgV2ViSURCRGF0YWJhc2VFcnJvciYpIHsgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25z
dCBXZWJET01TdHJpbmdMaXN0JikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdlYklEQkN1cnNvciosIGNvbnN0IFdlYklEQktleSYg
a2V5LCBjb25zdCBXZWJJREJLZXkmIHByaW1hcnlLZXksIGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhXZWJJREJEYXRhYmFzZSopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJJREJLZXkmKSB7IFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
Y29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGNvbnN0IFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYsIGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdlYklEQktleVBhdGgmKSB7IFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
bG9uZyBsb25nKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViSURCS2V5JiBrZXksIGNvbnN0IFdlYklEQktl
eSYgcHJpbWFyeUtleSwgY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJikgeyBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgeyBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2Vk
KGxvbmcgbG9uZyBvbGRWZXJzaW9uKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29uc3QgV2ViVmVjdG9yPFdl
YklEQktleT4mIGtleXMsIGNvbnN0IFdlYlZlY3RvcjxXZWJJREJLZXk+JiBwcmltYXJ5S2V5cywg
Y29uc3QgV2ViVmVjdG9yPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIHZhbHVlcykgeyBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVl
ZGVkKGxvbmcgbG9uZyBvbGRWZXJzaW9uLCBXZWJJREJUcmFuc2FjdGlvbiosIFdlYklEQkRhdGFi
YXNlKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViSURCQ2FsbGJhY2tzX2gKSW5kZXg6IFNvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJREJDdXJzb3IuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYklEQkN1cnNvcl9oCisj
ZGVmaW5lIFdlYklEQkN1cnNvcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRl
ICJXZWJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzLmgiCisjaW5j
bHVkZSAiV2ViSURCS2V5LmgiCisjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgi
CisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBTZWUg
Y29tbWVudCBpbiBXZWJJREJGYWN0b3J5IGZvciBhIGhpZ2ggbGV2ZWwgb3ZlcnZpZXcgdGhlc2Ug
Y2xhc3Nlcy4KK2NsYXNzIFdlYklEQkN1cnNvciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2Vi
SURCQ3Vyc29yKCkgeyB9CisKKyAgICBlbnVtIERpcmVjdGlvbiB7CisgICAgICAgIE5leHQgPSAw
LAorICAgICAgICBOZXh0Tm9EdXBsaWNhdGUgPSAxLAorICAgICAgICBQcmV2ID0gMiwKKyAgICAg
ICAgUHJldk5vRHVwbGljYXRlID0gMywKKyAgICB9OworCisgICAgdmlydHVhbCB2b2lkIGFkdmFu
Y2UodW5zaWduZWQgbG9uZywgV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVl
RnVuY3Rpb24oY29uc3QgV2ViSURCS2V5JiwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9u
Q29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZUZ1bmN0aW9uKFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaENv
bnRpbnVlKGludCBudW1iZXJUb0ZldGNoLCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25D
b2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVzKSB7
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBwb3N0U3Vj
Y2Vzc0hhbmRsZXJDYWxsYmFjaygpIHsgfSAvLyBPbmx5IHVzZWQgaW4gZnJvbnRlbmQuCisKK3By
b3RlY3RlZDoKKyAgICBXZWJJREJDdXJzb3IoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gV2ViSURCQ3Vyc29yX2gKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYklEQkRhdGFiYXNlX2gKKyNk
ZWZpbmUgV2ViSURCRGF0YWJhc2VfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVk
ZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgorI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkNvZGUuaCIKKyNp
bmNsdWRlICJXZWJJREJNZXRhZGF0YS5oIgorI2luY2x1ZGUgIldlYklEQlRyYW5zYWN0aW9uLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJREJDYWxsYmFja3M7CitjbGFzcyBX
ZWJJREJEYXRhYmFzZUNhbGxiYWNrczsKK2NsYXNzIFdlYklEQktleTsKK2NsYXNzIFdlYklEQktl
eVBhdGg7CitjbGFzcyBXZWJJREJLZXlSYW5nZTsKK2NsYXNzIFdlYklEQk9iamVjdFN0b3JlOwor
Y2xhc3MgV2ViSURCVHJhbnNhY3Rpb247CisKKy8vIFNlZSBjb21tZW50IGluIFdlYklEQkZhY3Rv
cnkgZm9yIGEgaGlnaCBsZXZlbCBvdmVydmlldyBvZiB0aGVzZSBjbGFzc2VzLgorY2xhc3MgV2Vi
SURCRGF0YWJhc2UgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYklEQkRhdGFiYXNlKCkgeyB9
CisKKyAgICB2aXJ0dWFsIFdlYklEQk1ldGFkYXRhIG1ldGFkYXRhKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFdlYklE
Qk1ldGFkYXRhKCk7CisgICAgfQorICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0
ZU9iamVjdFN0b3JlKGxvbmcgbG9uZywgY29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViSURCS2V5
UGF0aCYsIGJvb2wsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYp
CisgICAgeworICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUobG9uZyBs
b25nIG9iamVjdFN0b3JlSWQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwg
V2ViRXhjZXB0aW9uQ29kZSYgZWMpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Cisg
ICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTIzLgorICAgIHZpcnR1YWwgV2ViSURCVHJhbnNhY3Rpb24q
IGNyZWF0ZVRyYW5zYWN0aW9uKGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViVmVjdG9yPGxvbmcgbG9u
Zz4mLCB1bnNpZ25lZCBzaG9ydCBtb2RlKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
cmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVHJhbnNhY3Rpb24obG9uZyBsb25n
IGlkLCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJWZWN0b3I8
bG9uZyBsb25nPiYsIHVuc2lnbmVkIHNob3J0IG1vZGUpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZm9yY2VDbG9zZSgpIHsgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWJvcnQobG9uZyBsb25nIHRy
YW5zYWN0aW9uSWQpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVh
bCB2b2lkIGNvbW1pdChsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCkgeyBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKworICAgIGVudW0gVGFza1R5cGUgeworICAgICAgICBOb3JtYWxUYXNr
ID0gMCwKKyAgICAgICAgUHJlZW1wdGl2ZVRhc2sKKyAgICB9OworCisgICAgZW51bSBQdXRNb2Rl
IHsKKyAgICAgICAgQWRkT3JVcGRhdGUsCisgICAgICAgIEFkZE9ubHksCisgICAgICAgIEN1cnNv
clVwZGF0ZQorICAgIH07CisKKyAgICB0eXBlZGVmIFdlYlZlY3RvcjxXZWJJREJLZXk+IFdlYklu
ZGV4S2V5czsKKworICAgIHZpcnR1YWwgdm9pZCBnZXQobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQs
IGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkLCBsb25nIGxvbmcgaW5kZXhJZCwgY29uc3QgV2ViSURC
S2V5UmFuZ2UmLCBib29sIGtleU9ubHksIFdlYklEQkNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHB1dChsb25nIGxvbmcgdHJhbnNh
Y3Rpb25JZCwgbG9uZyBsb25nIG9iamVjdFN0b3JlSWQsIGNvbnN0IFdlYlZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPiYgdmFsdWUsIGNvbnN0IFdlYklEQktleSYsIFB1dE1vZGUsIFdlYklEQkNhbGxiYWNr
cyosIGNvbnN0IFdlYlZlY3Rvcjxsb25nIGxvbmc+JiBpbmRleElkcywgY29uc3QgV2ViVmVjdG9y
PFdlYkluZGV4S2V5cz4mKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzZXRJbmRleEtleXMobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxvbmcgbG9u
ZyBvYmplY3RTdG9yZUlkLCBjb25zdCBXZWJJREJLZXkmLCBjb25zdCBXZWJWZWN0b3I8bG9uZyBs
b25nPiYgaW5kZXhJZHMsIGNvbnN0IFdlYlZlY3RvcjxXZWJJbmRleEtleXM+JikgeyBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhlc1JlYWR5
KGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgY29uc3Qg
V2ViVmVjdG9yPGxvbmcgbG9uZz4mIGluZGV4SWRzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKGxvbmcgbG9uZyB0cmFuc2FjdGlv
bklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgbG9uZyBsb25nIGluZGV4SWQsIGNvbnN0IFdl
YklEQktleVJhbmdlJiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRh
c2tUeXBlLCBXZWJJREJDYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBjb3VudChsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCwgbG9uZyBs
b25nIG9iamVjdFN0b3JlSWQsIGxvbmcgbG9uZyBpbmRleElkLCBjb25zdCBXZWJJREJLZXlSYW5n
ZSYsIFdlYklEQkNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJhbmdlKGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25n
IGxvbmcgb2JqZWN0U3RvcmVJZCwgY29uc3QgV2ViSURCS2V5UmFuZ2UmLCBXZWJJREJDYWxsYmFj
a3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBj
bGVhcihsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCwgbG9uZyBsb25nIG9iamVjdFN0b3JlSWQsIFdl
YklEQkNhbGxiYWNrcyopICB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCitwcm90
ZWN0ZWQ6CisgICAgV2ViSURCRGF0YWJhc2UoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gV2ViSURCRGF0YWJhc2VfaApJbmRleDogU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3Mu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSURC
RGF0YWJhc2VDYWxsYmFja3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NfaAorI2RlZmluZSBXZWJJREJEYXRhYmFz
ZUNhbGxiYWNrc19oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJJREJE
YXRhYmFzZUVycm9yLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+V2ViSURCRGF0YWJhc2VDYWxsYmFja3MoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBv
bkZvcmNlZENsb3NlKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGxvbmcgbG9uZyBvbGRWZXJzaW9uLCBsb25nIGxvbmcg
bmV3VmVyc2lvbikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgb25WZXJzaW9uQ2hhbmdlKGNvbnN0IFdlYlN0cmluZyYgcmVxdWVzdGVkVmVyc2lvbikg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBvbkFi
b3J0KGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBjb25zdCBXZWJJREJEYXRhYmFzZUVycm9yJikg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25Db21w
bGV0ZShsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViSURCRGF0
YWJhc2VDYWxsYmFja3NfaApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJJREJEYXRhYmFzZUVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZUVycm9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlRXJyb3IuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSURCRGF0YWJhc2VFcnJvcl9oCisjZGVm
aW5lIFdlYklEQkRhdGFiYXNlRXJyb3JfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5j
bHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7IGNsYXNzIElEQkRhdGFiYXNlRXJyb3I7IH0KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKKy8vIFNlZSBjb21tZW50IGluIFdlYklEQkZhY3RvcnkgZm9yIGEgaGlnaCBsZXZlbCBv
dmVydmlldyB0aGVzZSBjbGFzc2VzLgorY2xhc3MgV2ViSURCRGF0YWJhc2VFcnJvciB7CitwdWJs
aWM6CisgICAgfldlYklEQkRhdGFiYXNlRXJyb3IoKSB7IHJlc2V0KCk7IH0KKworICAgIFdlYklE
QkRhdGFiYXNlRXJyb3IodW5zaWduZWQgc2hvcnQgY29kZSwgY29uc3QgV2ViU3RyaW5nJiBtZXNz
YWdlKSB7IGFzc2lnbihjb2RlLCBtZXNzYWdlKTsgfQorICAgIFdlYklEQkRhdGFiYXNlRXJyb3Io
Y29uc3QgV2ViSURCRGF0YWJhc2VFcnJvciYgZXJyb3IpIHsgYXNzaWduKGVycm9yKTsgfQorICAg
IFdlYklEQkRhdGFiYXNlRXJyb3ImIG9wZXJhdG9yPShjb25zdCBXZWJJREJEYXRhYmFzZUVycm9y
JiBlcnJvcikKKyAgICB7CisgICAgICAgIGFzc2lnbihlcnJvcik7CisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYklE
QkRhdGFiYXNlRXJyb3ImKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKworICAg
IFdFQktJVF9FWFBPUlQgdW5zaWduZWQgc2hvcnQgY29kZSgpIGNvbnN0OworICAgIFdFQktJVF9F
WFBPUlQgV2ViU3RyaW5nIG1lc3NhZ2UoKSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgorICAgIFdlYklEQkRhdGFiYXNlRXJyb3IoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkRhdGFiYXNlRXJyb3I+Jik7CisgICAgV2ViSURCRGF0YWJhc2VFcnJvciYgb3BlcmF0
b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVycm9yPiYpOwor
ICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVycm9yPigp
IGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2ln
bih1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpOworCisgICAg
V2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVycm9yPiBtX3ByaXZhdGU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYklEQkRhdGFiYXNlRXJyb3Jf
aApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViSURCRGF0YWJhc2VFeGNlcHRpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2VFeGNlcHRpb24uaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSURCRGF0YWJhc2VFeGNlcHRpb25faAorI2RlZmlu
ZSBXZWJJREJEYXRhYmFzZUV4Y2VwdGlvbl9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVt
IFdlYklEQkRhdGFiYXNlRXhjZXB0aW9uIHsKKyAgICBXZWJJREJEYXRhYmFzZUV4Y2VwdGlvbkRh
dGFFcnJvciA9IDEyMDMsCisgICAgV2ViSURCRGF0YWJhc2VFeGNlcHRpb25RdW90YUVycm9yID0g
MTIxMiwKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViSURCRGF0
YWJhc2VFeGNlcHRpb25faApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJJREJGYWN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJJREJGYWN0b3J5LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViSURCRmFjdG9yeV9oCisjZGVmaW5lIFdlYklEQkZhY3RvcnlfaAorCisj
aW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgorI2lu
Y2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIldlYklEQk1ldGFkYXRhLmgiCisj
aW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNp
bmNsdWRlICJXZWJWZWN0b3IuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYklE
QkRhdGFiYXNlOworY2xhc3MgV2ViSURCRGF0YWJhc2VDYWxsYmFja3M7CitjbGFzcyBXZWJTZWN1
cml0eU9yaWdpbjsKKworLy8gVGhlIGVudHJ5IHBvaW50IGludG8gdGhlIEluZGV4ZWREYXRhYmFz
ZSBBUEkuIFRoZXNlIGNsYXNzZXMgbWF0Y2ggdGhlaXIgRm9vIGFuZAorLy8gRm9vU3luYyBjb3Vu
dGVycGFydHMgaW4gdGhlIHNwZWMsIGJ1dCBvcGVyYXRlIG9ubHkgaW4gYW4gYXN5bmMgbWFubmVy
LgorLy8gaHR0cDovL2Rldi53My5vcmcvMjAwNi93ZWJhcGkvV2ViU2ltcGxlREIvCitjbGFzcyBX
ZWJJREJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJREJG
YWN0b3J5KiBjcmVhdGUoKTsKKworICAgIHZpcnR1YWwgfldlYklEQkZhY3RvcnkoKSB7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFdlYklEQkNhbGxiYWNrcyogY2FsbGJh
Y2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBXZWJTdHJpbmcmIGRh
dGFEaXIpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAgICAvLyBGSVhNRTog
UmVtb3ZlIHRoaXMgbWV0aG9kIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDM5MjMuCisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYklEQkRh
dGFiYXNlQ2FsbGJhY2tzKiBkYXRhYmFzZUNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmln
aW4mIG9yaWdpbiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgbG9uZyBsb25nIHZlcnNpb24sIGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBXZWJJREJDYWxs
YmFja3MqIGNhbGxiYWNrcywgV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqIGRhdGFiYXNlQ2FsbGJh
Y2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBXZWJTdHJpbmcmIGRh
dGFEaXIpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3Mq
LCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikgeyBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gV2ViSURCRmFjdG9yeV9oCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYklEQkluZGV4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJJREJJbmRleC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJREJJbmRleC5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJREJJbmRleF9oCisjZGVmaW5lIFdlYklEQklu
ZGV4X2gKKworI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJXZWJJREJL
ZXlQYXRoLmgiCisjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJT
dHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYklEQkNhbGxiYWNrczsK
K2NsYXNzIFdlYklEQktleTsKK2NsYXNzIFdlYklEQktleVJhbmdlOworCisvLyBTZWUgY29tbWVu
dCBpbiBXZWJJREJGYWN0b3J5IGZvciBhIGhpZ2ggbGV2ZWwgb3ZlcnZpZXcgb2YgdGhlc2UgY2xh
c3Nlcy4KK2NsYXNzIFdlYklEQkluZGV4IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJJREJJ
bmRleCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIG9wZW5PYmplY3RDdXJzb3IoY29uc3QgV2Vi
SURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNhbGxiYWNrcyos
IGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIG9wZW5LZXlDdXJzb3IoY29u
c3QgV2ViSURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFdlYklEQkNhbGxi
YWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGNvdW50KGNvbnN0
IFdlYklEQktleVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rp
b24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0KGNvbnN0IFdlYklEQktleVJhbmdlJiwgV2ViSURC
Q2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0S2V5
KGNvbnN0IFdlYklEQktleVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJh
bnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KKworcHJvdGVjdGVkOgorICAgIFdlYklEQkluZGV4KCkgeyB9Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYklEQkluZGV4X2gKSW5kZXg6IFNvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXkuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5LmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYklEQktleV9oCisjZGVmaW5lIFdlYklE
QktleV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlUHRy
LmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSURCS2V5OyB9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJJREJLZXkgeworcHVibGljOgorICAgIC8vIFBsZWFzZSB1c2Ugb25lIG9mIHRo
ZSBmYWN0b3J5IG1ldGhvZHMuIFRoaXMgaXMgcHVibGljIG9ubHkgdG8gYWxsb3cgV2ViVmVjdG9y
LgorICAgIFdlYklEQktleSgpIHsgfQorICAgIH5XZWJJREJLZXkoKSB7IHJlc2V0KCk7IH0KKwor
ICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklEQktleSBjcmVhdGVBcnJheShjb25zdCBXZWJW
ZWN0b3I8V2ViSURCS2V5PiYpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklEQktleSBj
cmVhdGVTdHJpbmcoY29uc3QgV2ViU3RyaW5nJik7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMg
V2ViSURCS2V5IGNyZWF0ZURhdGUoZG91YmxlKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBX
ZWJJREJLZXkgY3JlYXRlTnVtYmVyKGRvdWJsZSk7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMg
V2ViSURCS2V5IGNyZWF0ZUludmFsaWQoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJ
REJLZXkgY3JlYXRlTnVsbCgpOworCisgICAgV2ViSURCS2V5KGNvbnN0IFdlYklEQktleSYgZSkg
eyBhc3NpZ24oZSk7IH0KKyAgICBXZWJJREJLZXkmIG9wZXJhdG9yPShjb25zdCBXZWJJREJLZXkm
IGUpCisgICAgeworICAgICAgICBhc3NpZ24oZSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYklEQktleSYpOwor
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ25BcnJheShjb25zdCBXZWJWZWN0b3I8V2ViSURC
S2V5PiYpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ25TdHJpbmcoY29uc3QgV2ViU3Ry
aW5nJik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbkRhdGUoZG91YmxlKTsKKyAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduTnVtYmVyKGRvdWJsZSk7CisgICAgV0VCS0lUX0VYUE9S
VCB2b2lkIGFzc2lnbkludmFsaWQoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduTnVs
bCgpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworCisgICAgZW51bSBUeXBlIHsK
KyAgICAgICAgSW52YWxpZFR5cGUgPSAwLAorICAgICAgICBBcnJheVR5cGUsCisgICAgICAgIFN0
cmluZ1R5cGUsCisgICAgICAgIERhdGVUeXBlLAorICAgICAgICBOdW1iZXJUeXBlLAorICAgICAg
ICBOdWxsVHlwZSwKKyAgICB9OworCisgICAgV0VCS0lUX0VYUE9SVCBUeXBlIHR5cGUoKSBjb25z
dDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNWYWxpZCgpIGNvbnN0OworICAgIFdFQktJVF9F
WFBPUlQgV2ViVmVjdG9yPFdlYklEQktleT4gYXJyYXkoKSBjb25zdDsgLy8gT25seSB2YWxpZCBm
b3IgQXJyYXlUeXBlLgorICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHN0cmluZygpIGNvbnN0
OyAvLyBPbmx5IHZhbGlkIGZvciBTdHJpbmdUeXBlLgorICAgIFdFQktJVF9FWFBPUlQgZG91Ymxl
IGRhdGUoKSBjb25zdDsgLy8gT25seSB2YWxpZCBmb3IgRGF0ZVR5cGUuCisgICAgV0VCS0lUX0VY
UE9SVCBkb3VibGUgbnVtYmVyKCkgY29uc3Q7IC8vIE9ubHkgdmFsaWQgZm9yIE51bWJlclR5cGUu
CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJJREJLZXkoY29uc3QgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4mKTsKKyAgICBXZWJJREJLZXkmIG9wZXJhdG9yPShj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiYpOworICAgIG9wZXJhdG9yIFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0
ZToKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OklEQktleT4gbV9wcml2YXRlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJJREJLZXlfaApJbmRleDogU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXlQYXRoLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXlQYXRoLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklEQktleVBhdGgu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSURCS2V5
UGF0aF9oCisjZGVmaW5lIFdlYklEQktleVBhdGhfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgi
CisjaW5jbHVkZSAiV2ViUHJpdmF0ZU93blB0ci5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgor
I2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIElEQktl
eVBhdGg7IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYklEQktleVBhdGggewor
cHVibGljOgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklEQktleVBhdGggY3JlYXRlKGNv
bnN0IFdlYlN0cmluZyYpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklEQktleVBhdGgg
Y3JlYXRlKGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+Jik7CisgICAgV0VCS0lUX0VYUE9SVCBz
dGF0aWMgV2ViSURCS2V5UGF0aCBjcmVhdGVOdWxsKCk7CisKKyAgICBXZWJJREJLZXlQYXRoKGNv
bnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgpIHsgYXNzaWduKGtleVBhdGgpOyB9CisgICAgdmly
dHVhbCB+V2ViSURCS2V5UGF0aCgpIHsgcmVzZXQoKTsgfQorICAgIFdlYklEQktleVBhdGgmIG9w
ZXJhdG9yPShjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRoKQorICAgIHsKKyAgICAgICAgYXNz
aWduKGtleVBhdGgpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25z
dCBXZWJJREJLZXlQYXRoJik7CisKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBOdWxsVHlwZSA9
IDAsCisgICAgICAgIFN0cmluZ1R5cGUsCisgICAgICAgIEFycmF5VHlwZSwKKyAgICB9OworCisg
ICAgV0VCS0lUX0VYUE9SVCBib29sIGlzVmFsaWQoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JU
IFR5cGUgdHlwZSgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2ViVmVjdG9yPFdlYlN0cmlu
Zz4gYXJyYXkoKSBjb25zdDsgLy8gT25seSB2YWxpZCBmb3IgQXJyYXlUeXBlLgorICAgIFdFQktJ
VF9FWFBPUlQgV2ViU3RyaW5nIHN0cmluZygpIGNvbnN0OyAvLyBPbmx5IHZhbGlkIGZvciBTdHJp
bmdUeXBlLgorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViSURCS2V5UGF0aChj
b25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJik7CisgICAgV2ViSURCS2V5UGF0aCYgb3BlcmF0b3I9
KGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmKTsKKyAgICBvcGVyYXRvciBjb25zdCBXZWJDb3Jl
OjpJREJLZXlQYXRoJigpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0
ZU93blB0cjxXZWJDb3JlOjpJREJLZXlQYXRoPiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYklEQktleVBhdGhfaApJbmRleDogU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXlSYW5nZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5UmFuZ2UuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5UmFuZ2UuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSURCS2V5UmFu
Z2VfaAorI2RlZmluZSBXZWJJREJLZXlSYW5nZV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIK
KyNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3Mg
SURCS2V5UmFuZ2U7IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYklEQktleTsK
K2NsYXNzIFdlYlN0cmluZzsKKworY2xhc3MgV2ViSURCS2V5UmFuZ2UgeworcHVibGljOgorICAg
IH5XZWJJREJLZXlSYW5nZSgpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViSURCS2V5UmFuZ2UoY29u
c3QgV2ViSURCS2V5UmFuZ2UmIGtleVJhbmdlKSB7IGFzc2lnbihrZXlSYW5nZSk7IH0KKyAgICBX
ZWJJREJLZXlSYW5nZShjb25zdCBXZWJJREJLZXkmIGxvd2VyLCBjb25zdCBXZWJJREJLZXkmIHVw
cGVyLCBib29sIGxvd2VyT3BlbiwgYm9vbCB1cHBlck9wZW4pIHsgYXNzaWduKGxvd2VyLCB1cHBl
ciwgbG93ZXJPcGVuLCB1cHBlck9wZW4pOyB9CisKKyAgICBXRUJLSVRfRVhQT1JUIFdlYklEQktl
eSBsb3dlcigpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2ViSURCS2V5IHVwcGVyKCkgY29u
c3Q7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGxvd2VyT3BlbigpIGNvbnN0OworICAgIFdFQktJ
VF9FWFBPUlQgYm9vbCB1cHBlck9wZW4oKSBjb25zdDsKKworICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBhc3NpZ24oY29uc3QgV2ViSURCS2V5UmFuZ2UmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
YXNzaWduKGNvbnN0IFdlYklEQktleSYgbG93ZXIsIGNvbnN0IFdlYklEQktleSYgdXBwZXIsIGJv
b2wgbG93ZXJPcGVuLCBib29sIHVwcGVyT3Blbik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJl
c2V0KCk7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJJREJLZXlSYW5nZShj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+Jik7CisgICAgV2ViSURC
S2V5UmFuZ2UmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5
UmFuZ2U+Jik7CisgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleVJh
bmdlPigpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJD
b3JlOjpJREJLZXlSYW5nZT4gbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBXZWJJREJLZXlSYW5nZV9oCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYklEQk1ldGFkYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJREJNZXRhZGF0YS5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJREJNZXRhZGF0YS5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJREJNZXRhZGF0YV9oCisjZGVm
aW5lIFdlYklEQk1ldGFkYXRhX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUg
IldlYklEQktleVBhdGguaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJW
ZWN0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IElEQkRhdGFiYXNlTWV0YWRh
dGE7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViSURCTWV0YWRhdGEgewor
ICAgIGVudW0geworICAgICAgICBOb0ludFZlcnNpb24gPSAtMQorICAgIH07CisgICAgc3RydWN0
IEluZGV4OworICAgIHN0cnVjdCBPYmplY3RTdG9yZTsKKworICAgIFdlYlN0cmluZyBuYW1lOwor
ICAgIC8vIEZJWE1FOiBCb3RoIHZlcnNpb24gbWVtYmVycyBuZWVkIHRvIGJlIHByZXNlbnQgd2hp
bGUgd2Ugc3VwcG9ydCBib3RoIHRoZQorICAgIC8vIG9sZCBzZXRWZXJzaW9uIGFuZCBuZXcgdXBn
cmFkZW5lZWRlZCBBUEkuIE9uY2Ugd2Ugbm8gbG9uZ2VyIHN1cHBvcnQKKyAgICAvLyBzZXRWZXJz
aW9uLCBXZWJTdHJpbmcgdmVyc2lvbiBjYW4gYmUgcmVtb3ZlZC4KKyAgICBXZWJTdHJpbmcgdmVy
c2lvbjsKKyAgICBsb25nIGxvbmcgaW50VmVyc2lvbjsKKyAgICBsb25nIGxvbmcgaWQ7CisgICAg
bG9uZyBsb25nIG1heE9iamVjdFN0b3JlSWQ7CisgICAgV2ViVmVjdG9yPE9iamVjdFN0b3JlPiBv
YmplY3RTdG9yZXM7CisgICAgV2ViSURCTWV0YWRhdGEoKQorICAgICAgICA6IGludFZlcnNpb24o
Tm9JbnRWZXJzaW9uKSB7IH0KKworICAgIHN0cnVjdCBPYmplY3RTdG9yZSB7CisgICAgICAgIFdl
YlN0cmluZyBuYW1lOworICAgICAgICBXZWJJREJLZXlQYXRoIGtleVBhdGg7CisgICAgICAgIGJv
b2wgYXV0b0luY3JlbWVudDsKKyAgICAgICAgbG9uZyBsb25nIGlkOworICAgICAgICBsb25nIGxv
bmcgbWF4SW5kZXhJZDsKKyAgICAgICAgV2ViVmVjdG9yPEluZGV4PiBpbmRleGVzOworICAgICAg
ICBPYmplY3RTdG9yZSgpCisgICAgICAgICAgICA6IGtleVBhdGgoV2ViSURCS2V5UGF0aDo6Y3Jl
YXRlTnVsbCgpKQorICAgICAgICAgICAgLCBhdXRvSW5jcmVtZW50KGZhbHNlKSB7IH0KKyAgICB9
OworCisgICAgc3RydWN0IEluZGV4IHsKKyAgICAgICAgV2ViU3RyaW5nIG5hbWU7CisgICAgICAg
IFdlYklEQktleVBhdGgga2V5UGF0aDsKKyAgICAgICAgYm9vbCB1bmlxdWU7CisgICAgICAgIGJv
b2wgbXVsdGlFbnRyeTsKKyAgICAgICAgbG9uZyBsb25nIGlkOworICAgICAgICBJbmRleCgpCisg
ICAgICAgICAgICA6IGtleVBhdGgoV2ViSURCS2V5UGF0aDo6Y3JlYXRlTnVsbCgpKQorICAgICAg
ICAgICAgLCB1bmlxdWUoZmFsc2UpCisgICAgICAgICAgICAsIG11bHRpRW50cnkoZmFsc2UpIHsg
fQorICAgIH07CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJJREJNZXRhZGF0
YShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhJik7CisgICAgb3BlcmF0b3IgV2Vi
Q29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YSgpIGNvbnN0OworI2VuZGlmCit9OworCisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViSURCTWV0YWRhdGFfaApJbmRleDogU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSURC
T2JqZWN0U3RvcmUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViSURCT2JqZWN0U3RvcmVfaAorI2RlZmluZSBXZWJJREJPYmplY3RTdG9yZV9oCisKKyNp
bmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJET01TdHJpbmdMaXN0LmgiCisjaW5j
bHVkZSAiV2ViRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgor
I2luY2x1ZGUgIldlYklEQkN1cnNvci5oIgorI2luY2x1ZGUgIldlYklEQktleVBhdGguaCIKKyNp
bmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViSURCS2V5UmFuZ2U7CitjbGFzcyBXZWJJREJU
cmFuc2FjdGlvbjsKKworLy8gU2VlIGNvbW1lbnQgaW4gV2ViSURCRmFjdG9yeSBmb3IgYSBoaWdo
IGxldmVsIG92ZXJ2aWV3IHRoZXNlIGNsYXNzZXMuCitjbGFzcyBXZWJJREJPYmplY3RTdG9yZSB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViSURCT2JqZWN0U3RvcmUoKSB7IH0KKworICAgIHZp
cnR1YWwgdm9pZCBnZXQoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCBXZWJJREJDYWxsYmFja3MqLCBj
b25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgZW51bSBQdXRNb2RlIHsKKyAgICAgICAgQWRkT3JV
cGRhdGUsCisgICAgICAgIEFkZE9ubHksCisgICAgICAgIEN1cnNvclVwZGF0ZQorICAgIH07CisK
KyAgICB0eXBlZGVmIFdlYlZlY3RvcjxXZWJJREJLZXk+IFdlYkluZGV4S2V5czsKKworICAgIHZp
cnR1YWwgdm9pZCBwdXQoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgY29uc3QgV2Vi
SURCS2V5JiwgUHV0TW9kZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rp
b24mLCBjb25zdCBXZWJWZWN0b3I8bG9uZyBsb25nPiYgaW5kZXhJZHMsIGNvbnN0IFdlYlZlY3Rv
cjxXZWJJbmRleEtleXM+JikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5UmFuZ2UmLCBXZWJJREJD
YWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhcihX
ZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNv
ZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgV2ViSURC
SW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYklEQktleVBhdGgm
LCBib29sLCBib29sLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUm
KQorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisgICAgdmlydHVhbCBXZWJJREJJbmRleCogY3JlYXRlSW5kZXgobG9u
ZyBsb25nLCBjb25zdCBXZWJTdHJpbmcmLCBjb25zdCBXZWJJREJLZXlQYXRoJiwgYm9vbCwgYm9v
bCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikKKyAgICB7Cisg
ICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleEtleXMoY29uc3QgV2ViSURCS2V5JiwgY29u
c3QgV2ViVmVjdG9yPGxvbmcgbG9uZz4mLCBjb25zdCBXZWJWZWN0b3I8V2ViSW5kZXhLZXlzPiYs
IGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhlc1JlYWR5KGNvbnN0IFdlYlZlY3Rvcjxsb25n
IGxvbmc+JiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfTsKKyAgICAvLyBUcmFuc2ZlcnMgb3duZXJzaGlwIG9mIHRoZSBXZWJJREJJbmRl
eCB0byB0aGUgY2FsbGVyLgorICAgIHZpcnR1YWwgV2ViSURCSW5kZXgqIGluZGV4KGxvbmcgbG9u
ZykKKyAgICB7CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChsb25nIGxvbmcg
aW5kZXhJZCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNv
cihjb25zdCBXZWJJREJLZXlSYW5nZSYsIFdlYklEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlv
biwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViSURCVHJhbnNhY3Rpb246OlRhc2tUeXBlLCBjb25zdCBX
ZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjb3VudChjb25zdCBXZWJJREJLZXlSYW5n
ZSYsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0
aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKK3Byb3RlY3RlZDoK
KyAgICBXZWJJREJPYmplY3RTdG9yZSgpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBXZWJJREJPYmplY3RTdG9yZV9oCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJREJUcmFu
c2FjdGlvbl9oCisjZGVmaW5lIFdlYklEQlRyYW5zYWN0aW9uX2gKKworI2luY2x1ZGUgIldlYkV4
Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeyBjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7IH0KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYklEQk9iamVjdFN0b3JlOworY2xhc3MgV2ViSURCVHJhbnNh
Y3Rpb25DYWxsYmFja3M7CisKKy8vIFNlZSBjb21tZW50IGluIFdlYklEQkZhY3RvcnkgZm9yIGEg
aGlnaCBsZXZlbCBvdmVydmlldyBvZiB0aGVzZSBjbGFzc2VzLgorY2xhc3MgV2ViSURCVHJhbnNh
Y3Rpb24geworcHVibGljOgorICAgIHZpcnR1YWwgfldlYklEQlRyYW5zYWN0aW9uKCkgeyB9CisK
KyAgICBlbnVtIFRhc2tUeXBlIHsKKyAgICAgICAgTm9ybWFsVGFzayA9IDAsCisgICAgICAgIFBy
ZWVtcHRpdmVUYXNrCisgICAgfTsKKworICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIG9i
amVjdFN0b3JlKGxvbmcgbG9uZywgV2ViRXhjZXB0aW9uQ29kZSYpCisgICAgeworICAgICAgICBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICB2aXJ0dWFsIHZvaWQgY29tbWl0KCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVRhc2tFdmVudHMoKSB7IFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFja3MoV2ViSURC
VHJhbnNhY3Rpb25DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQor
CisgICAgLy8gRklYTUU6IHRoaXMgaXMgbmV2ZXIgY2FsbGVkIGZyb20gV2ViQ29yZS4gRmluZCBh
IGNsZWFuZXIgc29sdXRpb24uCisgICAgdmlydHVhbCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqIGdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
UGVuZGluZ0V2ZW50cyhpbnQpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKK3By
b3RlY3RlZDoKKyAgICBXZWJJREJUcmFuc2FjdGlvbigpIHsgfQorfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJJREJUcmFuc2FjdGlvbl9oCkluZGV4OiBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFuc2Fj
dGlvbkNhbGxiYWNrcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc19oCisj
ZGVmaW5lIFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzX2gKKworI2luY2x1ZGUgIldlYkNvbW1v
bi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViSURCRGF0YWJhc2VFcnJvcjsK
KworY2xhc3MgV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3MgeworcHVibGljOgorICAgIHZpcnR1
YWwgfldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
b25BYm9ydChjb25zdCBXZWJJREJEYXRhYmFzZUVycm9yJikgeyBXRUJLSVRfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25Db21wbGV0ZSgpIHsgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzX2gKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViU2VjdXJpdHlPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNlY3VyaXR5T3JpZ2luLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNlY3VyaXR5T3JpZ2luLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
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
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTZWN1cml0eU9yaWdpbl9o
CisjZGVmaW5lIFdlYlNlY3VyaXR5T3JpZ2luX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgor
CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOyB9CituYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIFBhc3NSZWZQdHI7IH0KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlOworY2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2ViVVJM
OworCitjbGFzcyBXZWJTZWN1cml0eU9yaWdpbiB7CitwdWJsaWM6CisgICAgfldlYlNlY3VyaXR5
T3JpZ2luKCkgeyByZXNldCgpOyB9CisKKyAgICBXZWJTZWN1cml0eU9yaWdpbigpIDogbV9wcml2
YXRlKDApIHsgfQorICAgIFdlYlNlY3VyaXR5T3JpZ2luKGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2lu
JiBzKSA6IG1fcHJpdmF0ZSgwKSB7IGFzc2lnbihzKTsgfQorICAgIFdlYlNlY3VyaXR5T3JpZ2lu
JiBvcGVyYXRvcj0oY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIHMpCisgICAgeworICAgICAgICBh
c3NpZ24ocyk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfRVhQ
T1JUIHN0YXRpYyBXZWJTZWN1cml0eU9yaWdpbiBjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVy
KGNvbnN0IFdlYlN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKTsKKyAgICBXRUJLSVRfRVhQT1JU
IHN0YXRpYyBXZWJTZWN1cml0eU9yaWdpbiBjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFdlYlN0cmlu
ZyYpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlNlY3VyaXR5T3JpZ2luIGNyZWF0ZShj
b25zdCBXZWJVUkwmKTsKKworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mKTsKKworICAg
IGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fcHJpdmF0ZTsgfQorCisgICAgV0VCS0lU
X0VYUE9SVCBXZWJTdHJpbmcgcHJvdG9jb2woKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIFdl
YlN0cmluZyBob3N0KCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBzaG9ydCBw
b3J0KCkgY29uc3Q7CisKKyAgICAvLyBBIHVuaXF1ZSBXZWJTZWN1cml0eU9yaWdpbiBpcyB0aGUg
bGVhc3QgcHJpdmlsZWdlZCBXZWJTZWN1cml0eU9yaWdpbi4KKyAgICBXRUJLSVRfRVhQT1JUIGJv
b2wgaXNVbmlxdWUoKSBjb25zdDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIFdlYlNl
Y3VyaXR5T3JpZ2luIGNhbiBzY3JpcHQgb2JqZWN0cyBpbiB0aGUgZ2l2ZW4KKyAgICAvLyBTZWN1
cml0eU9yaWdpbi4gRm9yIGV4YW1wbGUsIGNhbGwgdGhpcyBmdW5jdGlvbiBiZWZvcmUgYWxsb3dp
bmcKKyAgICAvLyBzY3JpcHQgZnJvbSBvbmUgc2VjdXJpdHkgb3JpZ2luIHRvIHJlYWQgb3Igd3Jp
dGUgb2JqZWN0cyBmcm9tCisgICAgLy8gYW5vdGhlciBTZWN1cml0eU9yaWdpbi4KKyAgICBXRUJL
SVRfRVhQT1JUIGJvb2wgY2FuQWNjZXNzKGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJikgY29uc3Q7
CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBXZWJTZWN1cml0eU9yaWdpbiBjYW4gcmVh
ZCBjb250ZW50IHJldHJpZXZlZCBmcm9tCisgICAgLy8gdGhlIGdpdmVuIFVSTC4gRm9yIGV4YW1w
bGUsIGNhbGwgdGhpcyBmdW5jdGlvbiBiZWZvcmUgYWxsb3dpbmcgc2NyaXB0CisgICAgLy8gZnJv
bSBhIGdpdmVuIHNlY3VyaXR5IG9yaWdpbiB0byByZWNlaXZlIGNvbnRlbnRzIGZyb20gYSBnaXZl
biBVUkwuCisgICAgV0VCS0lUX0VYUE9SVCBib29sIGNhblJlcXVlc3QoY29uc3QgV2ViVVJMJikg
Y29uc3Q7CisKKyAgICAvLyBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBX
ZWJTZWN1cml0eU9yaWdpbi4gVGhlIGVtcHR5CisgICAgLy8gV2ViU2VjdXJpdHlPcmlnaW4gaXMg
cmVwcmVzZW50ZWQgYnkgIm51bGwiLiBUaGUgcmVwcmVzZW50YXRpb24gb2YgYQorICAgIC8vIG5v
bi1lbXB0eSBXZWJTZWN1cml0eU9yaWdpbiByZXNlbWJsZXMgYSBzdGFuZGFyZCBVUkwuCisgICAg
V0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKworICAgIC8vIFJldHVy
bnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBXZWJTZWN1cml0eU9yaWdpbiB0aGF0
IGNhbgorICAgIC8vIGJlIHVzZWQgYXMgYSBmaWxlLiBTaG91bGQgYmUgdXNlZCBpbiBzdG9yYWdl
IEFQSXMgb25seS4KKyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBkYXRhYmFzZUlkZW50aWZp
ZXIoKSBjb25zdDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIFdlYlNlY3VyaXR5T3Jp
Z2luIGNhbiBhY2Nlc3MgdXNlcm5hbWVzIGFuZCAKKyAgICAvLyBwYXNzd29yZHMgc3RvcmVkIGlu
IHBhc3N3b3JkIG1hbmFnZXIuCisgICAgV0VCS0lUX0VYUE9SVCBib29sIGNhbkFjY2Vzc1Bhc3N3
b3JkTWFuYWdlcigpIGNvbnN0OworCisgICAgLy8gQWxsb3dzIHRoaXMgV2ViU2VjdXJpdHlPcmln
aW4gYWNjZXNzIHRvIGxvY2FsIHJlc291cmNlcy4KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZ3Jh
bnRMb2FkTG9jYWxSZXNvdXJjZXMoKSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgorICAgIFdlYlNlY3VyaXR5T3JpZ2luKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbj4mKTsKKyAgICBXZWJTZWN1cml0eU9yaWdpbiYgb3BlcmF0b3I9KGNvbnN0
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mKTsKKyAgICBvcGVyYXRv
ciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+KCkgY29uc3Q7CisgICAg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIGdldCgpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6
CisgICAgdm9pZCBhc3NpZ24oV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlKik7CisgICAgV2ViU2Vj
dXJpdHlPcmlnaW5Qcml2YXRlKiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
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
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWVfaAorI2RlZmluZSBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWVfaAorCisjaW5jbHVkZSAi
V2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7IGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsgfQorCisjaWYgV0VCS0lUX1VTSU5H
X1Y4CituYW1lc3BhY2UgdjggeworY2xhc3MgVmFsdWU7Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xh
c3MgSGFuZGxlOworfQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViU3Ry
aW5nOworCisvLyBGSVhNRTogU2hvdWxkIHRoaXMgY2xhc3MgYmUgaW4gcGxhdGZvcm0/CitjbGFz
cyBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUgeworcHVibGljOgorICAgIH5XZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUoKSB7IHJlc2V0KCk7IH0KKworICAgIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSgpIHsgfQorICAgIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShjb25zdCBXZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUmIGQpIHsgYXNzaWduKGQpOyB9CisgICAgV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlJiBvcGVyYXRvcj0oY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBkKQorICAgIHsK
KyAgICAgICAgYXNzaWduKGQpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAg
V0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlIGZyb21TdHJpbmco
Y29uc3QgV2ViU3RyaW5nJik7CisKKyNpZiBXRUJLSVRfVVNJTkdfVjgKKyAgICBXRUJLSVRfRVhQ
T1JUIHN0YXRpYyBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUgc2VyaWFsaXplKHY4OjpIYW5kbGU8
djg6OlZhbHVlPik7CisjZW5kaWYKKworICAgIC8vIENyZWF0ZSBhIFdlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSB0aGF0IHJlcHJlc2VudHMgYSBzZXJpYWxpemF0aW9uIGVycm9yLgorICAgIFdFQktJ
VF9FWFBPUlQgc3RhdGljIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBjcmVhdGVJbnZhbGlkKCk7
CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgYXNzaWduKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpOworCisgICAgYm9vbCBp
c051bGwoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KKworICAgIC8vIFJl
dHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIFdlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS4KKyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB0b1N0cmluZygpIGNvbnN0OworCisj
aWYgV0VCS0lUX1VTSU5HX1Y4CisgICAgLy8gQ29udmVydCB0aGUgc2VyaWFsaXplZCB2YWx1ZSB0
byBhIHBhcnNlZCB2OCB2YWx1ZS4KKyAgICBXRUJLSVRfRVhQT1JUIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBkZXNlcmlhbGl6ZSgpOworI2VuZGlmCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
KyAgICBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mKTsKKyAgICBXZWJTZXJpYWxpemVkU2NyaXB0VmFs
dWUmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiYpOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU+KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQ
cml2YXRlUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9wcml2YXRlOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEzODA1MCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTItMTItMTggIE1hcmsg
UGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gTW92
ZSBpZGJGYWN0b3J5IHRvIFBsYXRmb3JtLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg1NzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHdvcmstaW4tcHJvZ3Jlc3MgcGF0Y2ggd2hpY2gg
bW92ZXMgV2ViSURCRmFjdG9yeSBhbmQgYWxsCisgICAgICAgIHJlbGF0ZWQgZGVwZW5kZW5jaWVz
IHRvIFBsYXRmb3JtLywgYW5kIG1vdmVzCisgICAgICAgIFdlYktpdFBsYXRmb3JtU3VwcG9ydDo6
aWRiRmFjdG9yeSB0byB0aGUgbmV3IFBsYXRmb3JtLmguIFRoaXMKKyAgICAgICAgcmVxdWlyZXMg
cmVtb3ZpbmcgYSBXZWJGcmFtZSogcGFyYW1ldGVyIGluIHNldmVyYWwKKyAgICAgICAgV2ViSURC
RmFjdG9yeSBtZXRob2RzLCB3aGljaCB3aWxsIHJlcXVpcmUgc29tZSBjaGFuZ2VzIGluCisgICAg
ICAgIGRvd25zdHJlYW0gQ2hyb21pdW0gKHRvIHJlbW92ZSB0aGUgV2ViRnJhbWUqIHBhcmFtZXRl
ciBpbiB0aGUKKyAgICAgICAgbWF0Y2hpbmcgbWV0aG9kcykgYmVmb3JlIHdlIGNhbiBsYW5kIHRo
aXMgcGF0Y2ggaW4gV2ViS2l0LgorCisgICAgICAgIFBhcnQgb2YgYSByZWZhY3RvcmluZyBzZXJp
ZXM7IHNlZSB0cmFja2luZyBidWcgODI5NDguCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRE9NU3Ry
aW5nTGlzdC5oOgorICAgICAgICAqIHB1YmxpYy9XZWJFeGNlcHRpb25Db2RlLmg6CisgICAgICAg
ICogcHVibGljL1dlYklEQkNhbGxiYWNrcy5oOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJDdXJz
b3IuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKiBwdWJs
aWMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3MuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCRGF0
YWJhc2VFcnJvci5oOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJEYXRhYmFzZUV4Y2VwdGlvbi5o
OgorICAgICAgICAqIHB1YmxpYy9XZWJJREJGYWN0b3J5Lmg6CisgICAgICAgICogcHVibGljL1dl
YklEQkluZGV4Lmg6CisgICAgICAgICogcHVibGljL1dlYklEQktleS5oOgorICAgICAgICAqIHB1
YmxpYy9XZWJJREJLZXlQYXRoLmg6CisgICAgICAgICogcHVibGljL1dlYklEQktleVJhbmdlLmg6
CisgICAgICAgICogcHVibGljL1dlYklEQk1ldGFkYXRhLmg6CisgICAgICAgICogcHVibGljL1dl
YklEQk9iamVjdFN0b3JlLmg6CisgICAgICAgICogcHVibGljL1dlYklEQlRyYW5zYWN0aW9uLmg6
CisgICAgICAgICogcHVibGljL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmg6CisgICAgICAg
ICogcHVibGljL1dlYlNlY3VyaXR5T3JpZ2luLmg6CisgICAgICAgICogcHVibGljL3BsYXRmb3Jt
L1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdFBsYXRmb3JtU3VwcG9ydCk6CisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIHNyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCRmFjdG9yeUJhY2tlbmRQcm94eTo6SURCRmFjdG9y
eUJhY2tlbmRQcm94eSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpJREJG
YWN0b3J5QmFja2VuZFByb3h5OjpnZXREYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6
SURCRmFjdG9yeUJhY2tlbmRQcm94eTo6b3Blbik6CisgICAgICAgIChXZWJLaXQ6OklEQkZhY3Rv
cnlCYWNrZW5kUHJveHk6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKiBzcmMvV2ViSURCRmFj
dG9yeUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5SW1wbDo6Z2V0RGF0
YWJhc2VOYW1lcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkZhY3RvcnlJbXBsOjpvcGVuKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCRmFjdG9yeUltcGw6OmRlbGV0ZURhdGFiYXNlKToKKyAg
ICAgICAgKiBzcmMvV2ViSURCRmFjdG9yeUltcGwuaDoKKyAgICAgICAgKFdlYklEQkZhY3RvcnlJ
bXBsKToKKwogMjAxMi0xMi0xOCAgV2VpIEppYSAgPHdqaWFAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEVuYWJsZSBtZWRpYSBzdHJlYW0gb24gQW5kcm9pZCBmb3IgQ2hyb21pdW0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRPTVN0cmluZ0xpc3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJET01TdHJpbmdMaXN0LmgJKHJl
dmlzaW9uIDEzODA0OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRPTVN0
cmluZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNDkgKzI4LDQgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBXZWJET01TdHJpbmdMaXN0X2gKLSNkZWZpbmUgV2ViRE9NU3Ry
aW5nTGlzdF9oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgRE9NU3RyaW5nTGlzdDsgfQotI2lmIFdFQktJ
VF9JTVBMRU1FTlRBVElPTgotbmFtZXNwYWNlIFdURiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBj
bGFzcyBQYXNzUmVmUHRyOyB9Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNz
IFdlYkRPTVN0cmluZ0xpc3QgewotcHVibGljOgotICAgIH5XZWJET01TdHJpbmdMaXN0KCkgeyBy
ZXNldCgpOyB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdlYkRPTVN0cmluZ0xpc3QoKTsKLSAgICBX
ZWJET01TdHJpbmdMaXN0KGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmIGwpIHsgYXNzaWduKGwpOyB9
Ci0gICAgV2ViRE9NU3RyaW5nTGlzdCYgb3BlcmF0b3I9KGNvbnN0IFdlYkRPTVN0cmluZ0xpc3Qm
IGwpCi0gICAgewotICAgICAgICBhc3NpZ24obCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAg
ICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgYXNzaWduKGNvbnN0IFdlYkRPTVN0cmluZ0xpc3QmKTsKLQotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBhcHBlbmQoY29uc3QgV2ViU3RyaW5nJik7Ci0gICAgV0VCS0lUX0VYUE9SVCB1bnNp
Z25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBpdGVtKHVu
c2lnbmVkKSBjb25zdDsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYkRPTVN0
cmluZ0xpc3QoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRPTVN0cmluZ0xpc3Q+Jik7
Ci0gICAgV2ViRE9NU3RyaW5nTGlzdCYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpET01TdHJpbmdMaXN0PiYpOwotICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpET01TdHJpbmdMaXN0PigpIGNvbnN0OwotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAg
V2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpET01TdHJpbmdMaXN0PiBtX3ByaXZhdGU7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCisjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkRPTVN0cmluZ0xpc3QuaCIKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkV4Y2VwdGlvbkNvZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFeGNlcHRpb25Db2RlLmgJKHJldmlzaW9uIDEz
ODA0OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkV4Y2VwdGlvbkNvZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTQgKzI4LDQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBXZWJFeGNlcHRpb25Db2RlX2gKLSNkZWZpbmUgV2ViRXhjZXB0aW9uQ29kZV9o
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBUaGlzIHNob3VsZCBtYXRjaCBob3cgRXhjZXB0
aW9uQ29kZSBpcyBkZWZpbmVkIGluIFdlYkNvcmUuCi10eXBlZGVmIGludCBXZWJFeGNlcHRpb25D
b2RlOwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCisjaW5jbHVkZSAiLi4vLi4v
Li4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4Y2VwdGlvbkNvZGUuaCIKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oCShyZXZp
c2lvbiAxMzgwNDgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxs
YmFja3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNDcgKzIzLDQgQEAKICAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmbmRlZiBXZWJJREJDYWxsYmFja3NfaAotI2RlZmluZSBXZWJJREJDYWxsYmFja3Nf
aAotCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0v
V2ViVmVjdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJET01TdHJpbmdM
aXN0OwotY2xhc3MgV2ViSURCQ3Vyc29yOwotY2xhc3MgV2ViSURCRGF0YWJhc2U7Ci1jbGFzcyBX
ZWJJREJEYXRhYmFzZUVycm9yOwotY2xhc3MgV2ViSURCS2V5OwotY2xhc3MgV2ViSURCS2V5UGF0
aDsKLWNsYXNzIFdlYklEQkluZGV4OwotY2xhc3MgV2ViSURCT2JqZWN0U3RvcmU7Ci1jbGFzcyBX
ZWJJREJUcmFuc2FjdGlvbjsKLWNsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLQotY2xh
c3MgV2ViSURCQ2FsbGJhY2tzIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJJREJDYWxsYmFj
a3MoKSB7IH0KLQotICAgIC8vIEZvciBjbGFzc2VzIHRoYXQgZm9sbG93IHRoZSBQSW1wbCBwYXR0
ZXJuLCBwYXNzIGEgY29uc3QgcmVmZXJlbmNlLgotICAgIC8vIEZvciB0aGUgcmVzdCwgcGFzcyBv
d25lcnNoaXAgdG8gdGhlIGNhbGxlZSB2aWEgYSBwb2ludGVyLgotICAgIHZpcnR1YWwgdm9pZCBv
bkVycm9yKGNvbnN0IFdlYklEQkRhdGFiYXNlRXJyb3ImKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViRE9NU3RyaW5n
TGlzdCYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhXZWJJREJDdXJzb3IqLCBjb25zdCBXZWJJREJLZXkmIGtleSwgY29uc3QgV2Vi
SURCS2V5JiBwcmltYXJ5S2V5LCBjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmKSB7IFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
V2ViSURCRGF0YWJhc2UqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZp
cnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViSURCS2V5JikgeyBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGNvbnN0IFdlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAg
dmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBj
b25zdCBXZWJJREJLZXkmLCBjb25zdCBXZWJJREJLZXlQYXRoJikgeyBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGxvbmcgbG9uZykgeyBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKGNvbnN0IFdlYklEQktleSYga2V5LCBjb25zdCBXZWJJREJLZXkmIHByaW1hcnlLZXks
IGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpIHsgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZChsb25nIGxvbmcgb2xk
VmVyc2lvbikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFdlYlZlY3RvcjxXZWJJREJLZXk+JiBrZXlz
LCBjb25zdCBXZWJWZWN0b3I8V2ViSURCS2V5PiYgcHJpbWFyeUtleXMsIGNvbnN0IFdlYlZlY3Rv
cjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiB2YWx1ZXMpIHsgV0VCS0lUX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZChsb25nIGxvbmcg
b2xkVmVyc2lvbiwgV2ViSURCVHJhbnNhY3Rpb24qLCBXZWJJREJEYXRhYmFzZSopIHsgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIFdlYklEQkNhbGxiYWNrc19oCisjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oIgpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgJKHJldmlzaW9uIDEzODA0OCkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkN1cnNvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw0MSArMjMsNCBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYklEQkN1
cnNvcl9oCi0jZGVmaW5lIFdlYklEQkN1cnNvcl9oCi0KLSNpbmNsdWRlICJXZWJFeGNlcHRpb25D
b2RlLmgiCi0jaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiV2ViSURCS2V5
LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0v
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5n
LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBTZWUgY29tbWVudCBpbiBXZWJJREJGYWN0
b3J5IGZvciBhIGhpZ2ggbGV2ZWwgb3ZlcnZpZXcgdGhlc2UgY2xhc3Nlcy4KLWNsYXNzIFdlYklE
QkN1cnNvciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2ViSURCQ3Vyc29yKCkgeyB9Ci0KLSAg
ICBlbnVtIERpcmVjdGlvbiB7Ci0gICAgICAgIE5leHQgPSAwLAotICAgICAgICBOZXh0Tm9EdXBs
aWNhdGUgPSAxLAotICAgICAgICBQcmV2ID0gMiwKLSAgICAgICAgUHJldk5vRHVwbGljYXRlID0g
MywKLSAgICB9OwotCi0gICAgdmlydHVhbCB2b2lkIGFkdmFuY2UodW5zaWduZWQgbG9uZywgV2Vi
SURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgV2ViSURC
S2V5JiwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFdlYklE
QkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaENvbnRpbnVlKGludCBudW1iZXJUb0Zl
dGNoLCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hSZXNldChpbnQgdXNl
ZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygp
IHsgfSAvLyBPbmx5IHVzZWQgaW4gZnJvbnRlbmQuCi0KLXByb3RlY3RlZDoKLSAgICBXZWJJREJD
dXJzb3IoKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2Vi
SURCQ3Vyc29yX2gKKyNpbmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViSURCQ3Vyc29yLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJ
REJEYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklEQkRhdGFiYXNlLmgJKHJldmlzaW9uIDEzODA0OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDc3ICsy
Myw0IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViSURCRGF0YWJhc2VfaAotI2Rl
ZmluZSBXZWJJREJEYXRhYmFzZV9oCi0KLSNpbmNsdWRlICJXZWJET01TdHJpbmdMaXN0LmgiCi0j
aW5jbHVkZSAiV2ViRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIldlYklEQk1ldGFkYXRhLmgi
Ci0jaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJD
b21tb24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkZyYW1lOwotY2xhc3Mg
V2ViSURCQ2FsbGJhY2tzOwotY2xhc3MgV2ViSURCRGF0YWJhc2VDYWxsYmFja3M7Ci1jbGFzcyBX
ZWJJREJLZXk7Ci1jbGFzcyBXZWJJREJLZXlQYXRoOwotY2xhc3MgV2ViSURCS2V5UmFuZ2U7Ci1j
bGFzcyBXZWJJREJPYmplY3RTdG9yZTsKLWNsYXNzIFdlYklEQlRyYW5zYWN0aW9uOwotCi0vLyBT
ZWUgY29tbWVudCBpbiBXZWJJREJGYWN0b3J5IGZvciBhIGhpZ2ggbGV2ZWwgb3ZlcnZpZXcgb2Yg
dGhlc2UgY2xhc3Nlcy4KLWNsYXNzIFdlYklEQkRhdGFiYXNlIHsKLXB1YmxpYzoKLSAgICB2aXJ0
dWFsIH5XZWJJREJEYXRhYmFzZSgpIHsgfQotCi0gICAgdmlydHVhbCBXZWJJREJNZXRhZGF0YSBt
ZXRhZGF0YSgpIGNvbnN0Ci0gICAgewotICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybiBXZWJJREJNZXRhZGF0YSgpOwotICAgIH0KLSAgICB2aXJ0dWFs
IFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShsb25nIGxvbmcsIGNvbnN0IFdl
YlN0cmluZyYsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sLCBjb25zdCBXZWJJREJUcmFuc2Fj
dGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKQotICAgIHsKLSAgICAgICAgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgdmlydHVhbCB2b2lk
IGRlbGV0ZU9iamVjdFN0b3JlKGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkLCBjb25zdCBXZWJJREJU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKSB7IFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtZXRob2Qg
aW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzkyMy4KLSAgICB2
aXJ0dWFsIFdlYklEQlRyYW5zYWN0aW9uKiBjcmVhdGVUcmFuc2FjdGlvbihsb25nIGxvbmcgaWQs
IGNvbnN0IFdlYlZlY3Rvcjxsb25nIGxvbmc+JiwgdW5zaWduZWQgc2hvcnQgbW9kZSkgeyBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZVRyYW5zYWN0aW9uKGxvbmcgbG9uZyBpZCwgV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqIGNh
bGxiYWNrcywgY29uc3QgV2ViVmVjdG9yPGxvbmcgbG9uZz4mLCB1bnNpZ25lZCBzaG9ydCBtb2Rl
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBjbG9z
ZSgpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGZv
cmNlQ2xvc2UoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotCi0gICAgdmlydHVh
bCB2b2lkIGFib3J0KGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBjb21taXQobG9uZyBsb25nIHRyYW5zYWN0
aW9uSWQpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0KLSAgICBlbnVtIFRhc2tU
eXBlIHsKLSAgICAgICAgTm9ybWFsVGFzayA9IDAsCi0gICAgICAgIFByZWVtcHRpdmVUYXNrCi0g
ICAgfTsKLQotICAgIGVudW0gUHV0TW9kZSB7Ci0gICAgICAgIEFkZE9yVXBkYXRlLAotICAgICAg
ICBBZGRPbmx5LAotICAgICAgICBDdXJzb3JVcGRhdGUKLSAgICB9OwotCi0gICAgdHlwZWRlZiBX
ZWJWZWN0b3I8V2ViSURCS2V5PiBXZWJJbmRleEtleXM7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
KGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgbG9uZyBs
b25nIGluZGV4SWQsIGNvbnN0IFdlYklEQktleVJhbmdlJiwgYm9vbCBrZXlPbmx5LCBXZWJJREJD
YWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwg
dm9pZCBwdXQobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxvbmcgbG9uZyBvYmplY3RTdG9yZUlk
LCBjb25zdCBXZWJWZWN0b3I8dW5zaWduZWQgY2hhcj4mIHZhbHVlLCBjb25zdCBXZWJJREJLZXkm
LCBQdXRNb2RlLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJWZWN0b3I8bG9uZyBsb25nPiYg
aW5kZXhJZHMsIGNvbnN0IFdlYlZlY3RvcjxXZWJJbmRleEtleXM+JikgeyBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKGxvbmcgbG9u
ZyB0cmFuc2FjdGlvbklkLCBsb25nIGxvbmcgb2JqZWN0U3RvcmVJZCwgY29uc3QgV2ViSURCS2V5
JiwgY29uc3QgV2ViVmVjdG9yPGxvbmcgbG9uZz4mIGluZGV4SWRzLCBjb25zdCBXZWJWZWN0b3I8
V2ViSW5kZXhLZXlzPiYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHNldEluZGV4ZXNSZWFkeShsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCwgbG9uZyBs
b25nIG9iamVjdFN0b3JlSWQsIGNvbnN0IFdlYlZlY3Rvcjxsb25nIGxvbmc+JiBpbmRleElkcykg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1
cnNvcihsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCwgbG9uZyBsb25nIG9iamVjdFN0b3JlSWQsIGxv
bmcgbG9uZyBpbmRleElkLCBjb25zdCBXZWJJREJLZXlSYW5nZSYsIHVuc2lnbmVkIHNob3J0IGRp
cmVjdGlvbiwgYm9vbCBrZXlPbmx5LCBUYXNrVHlwZSwgV2ViSURCQ2FsbGJhY2tzKikgeyBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY291bnQobG9uZyBs
b25nIHRyYW5zYWN0aW9uSWQsIGxvbmcgbG9uZyBvYmplY3RTdG9yZUlkLCBsb25nIGxvbmcgaW5k
ZXhJZCwgY29uc3QgV2ViSURCS2V5UmFuZ2UmLCBXZWJJREJDYWxsYmFja3MqKSB7IFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSYW5nZShsb25n
IGxvbmcgdHJhbnNhY3Rpb25JZCwgbG9uZyBsb25nIG9iamVjdFN0b3JlSWQsIGNvbnN0IFdlYklE
QktleVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXIobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGxv
bmcgbG9uZyBvYmplY3RTdG9yZUlkLCBXZWJJREJDYWxsYmFja3MqKSAgeyBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KLQotcHJvdGVjdGVkOgotICAgIFdlYklEQkRhdGFiYXNlKCkgeyB9
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYklEQkRhdGFiYXNl
X2gKKyNpbmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0
YWJhc2UuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFi
YXNlQ2FsbGJhY2tzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3MuaAkocmV2aXNpb24gMTM4MDQ4KQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsMjcgKzIzLDQgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBX
ZWJJREJEYXRhYmFzZUNhbGxiYWNrc19oCi0jZGVmaW5lIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tz
X2gKLQotI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIKLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzIHsKLXB1YmxpYzoK
LSAgICB2aXJ0dWFsIH5XZWJJREJEYXRhYmFzZUNhbGxiYWNrcygpIHsgfQotCi0gICAgdmlydHVh
bCB2b2lkIG9uRm9yY2VkQ2xvc2UoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UobG9uZyBsb25nIG9sZFZlcnNpb24sIGxv
bmcgbG9uZyBuZXdWZXJzaW9uKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAg
IHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgV2ViU3RyaW5nJiByZXF1ZXN0ZWRW
ZXJzaW9uKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotCi0gICAgdmlydHVhbCB2
b2lkIG9uQWJvcnQobG9uZyBsb25nIHRyYW5zYWN0aW9uSWQsIGNvbnN0IFdlYklEQkRhdGFiYXNl
RXJyb3ImKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBvbkNvbXBsZXRlKGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBX
ZWJJREJEYXRhYmFzZUNhbGxiYWNrc19oCisjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZUVycm9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2VFcnJvci5oCShyZXZp
c2lvbiAxMzgwNDgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRh
YmFzZUVycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDQ4ICsyNiw0IEBACiAgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgV2ViSURCRGF0YWJhc2VFcnJvcl9oCi0jZGVmaW5lIFdlYklEQkRh
dGFiYXNlRXJyb3JfaAotCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVk
ZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmlu
Zy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIElEQkRhdGFiYXNlRXJyb3I7IH0KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIFNlZSBjb21tZW50IGluIFdlYklEQkZhY3RvcnkgZm9y
IGEgaGlnaCBsZXZlbCBvdmVydmlldyB0aGVzZSBjbGFzc2VzLgotY2xhc3MgV2ViSURCRGF0YWJh
c2VFcnJvciB7Ci1wdWJsaWM6Ci0gICAgfldlYklEQkRhdGFiYXNlRXJyb3IoKSB7IHJlc2V0KCk7
IH0KLQotICAgIFdlYklEQkRhdGFiYXNlRXJyb3IodW5zaWduZWQgc2hvcnQgY29kZSwgY29uc3Qg
V2ViU3RyaW5nJiBtZXNzYWdlKSB7IGFzc2lnbihjb2RlLCBtZXNzYWdlKTsgfQotICAgIFdlYklE
QkRhdGFiYXNlRXJyb3IoY29uc3QgV2ViSURCRGF0YWJhc2VFcnJvciYgZXJyb3IpIHsgYXNzaWdu
KGVycm9yKTsgfQotICAgIFdlYklEQkRhdGFiYXNlRXJyb3ImIG9wZXJhdG9yPShjb25zdCBXZWJJ
REJEYXRhYmFzZUVycm9yJiBlcnJvcikKLSAgICB7Ci0gICAgICAgIGFzc2lnbihlcnJvcik7Ci0g
ICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNz
aWduKGNvbnN0IFdlYklEQkRhdGFiYXNlRXJyb3ImKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
cmVzZXQoKTsKLQotICAgIFdFQktJVF9FWFBPUlQgdW5zaWduZWQgc2hvcnQgY29kZSgpIGNvbnN0
OwotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIG1lc3NhZ2UoKSBjb25zdDsKLQotI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYklEQkRhdGFiYXNlRXJyb3IoY29uc3QgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+Jik7Ci0gICAgV2ViSURCRGF0YWJh
c2VFcnJvciYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRh
YmFzZUVycm9yPiYpOwotICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJE
YXRhYmFzZUVycm9yPigpIGNvbnN0OwotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIGFzc2lnbih1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBXZWJTdHJpbmcmIG1l
c3NhZ2UpOwotCi0gICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVycm9yPiBt
X3ByaXZhdGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYklE
QkRhdGFiYXNlRXJyb3JfaAorI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJJREJEYXRhYmFzZUVycm9yLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlRXhjZXB0aW9uLmgJKHJldmlzaW9u
IDEzODA0OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNl
RXhjZXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE2ICsyOCw0IEBACiAgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgV2ViSURCRGF0YWJhc2VFeGNlcHRpb25faAotI2RlZmluZSBX
ZWJJREJEYXRhYmFzZUV4Y2VwdGlvbl9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIFdl
YklEQkRhdGFiYXNlRXhjZXB0aW9uIHsKLSAgICBXZWJJREJEYXRhYmFzZUV4Y2VwdGlvbkRhdGFF
cnJvciA9IDEyMDMsCi0gICAgV2ViSURCRGF0YWJhc2VFeGNlcHRpb25RdW90YUVycm9yID0gMTIx
MiwKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViSURCRGF0YWJh
c2VFeGNlcHRpb25faAorI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaAkocmV2aXNpb24gMTM4MDQ4KQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw0MyArMjYsNCBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYklEQkZhY3Rv
cnlfaAotI2RlZmluZSBXZWJJREJGYWN0b3J5X2gKLQotI2luY2x1ZGUgIldlYkRPTVN0cmluZ0xp
c3QuaCIKLSNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJXZWJJREJNZXRh
ZGF0YS5oIgotI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAicGxhdGZv
cm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVk
ZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBX
ZWJGcmFtZTsKLWNsYXNzIFdlYklEQkRhdGFiYXNlOwotY2xhc3MgV2ViSURCRGF0YWJhc2VDYWxs
YmFja3M7Ci1jbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKLQotLy8gVGhlIGVudHJ5IHBvaW50IGlu
dG8gdGhlIEluZGV4ZWREYXRhYmFzZSBBUEkuICBUaGVzZSBjbGFzc2VzIG1hdGNoIHRoZWlyIEZv
byBhbmQKLS8vIEZvb1N5bmMgY291bnRlcnBhcnRzIGluIHRoZSBzcGVjLCBidXQgb3BlcmF0ZSBv
bmx5IGluIGFuIGFzeW5jIG1hbm5lci4KLS8vIGh0dHA6Ly9kZXYudzMub3JnLzIwMDYvd2ViYXBp
L1dlYlNpbXBsZURCLwotY2xhc3MgV2ViSURCRmFjdG9yeSB7Ci1wdWJsaWM6Ci0gICAgV0VCS0lU
X0VYUE9SVCBzdGF0aWMgV2ViSURCRmFjdG9yeSogY3JlYXRlKCk7Ci0KLSAgICB2aXJ0dWFsIH5X
ZWJJREJGYWN0b3J5KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhX
ZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdp
biwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0KLSAgICAvLyBUaGUgV2ViS2l0IGltcGxlbWVudGF0aW9u
IG9mIG9wZW4gaWdub3JlcyB0aGUgV2ViRnJhbWUqIHBhcmFtZXRlci4KLSAgICAvLyBGSVhNRTog
UmVtb3ZlIHRoaXMgbWV0aG9kIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDM5MjMuCi0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBsb25nIGxvbmcgdmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYklEQkRh
dGFiYXNlQ2FsbGJhY2tzKiBkYXRhYmFzZUNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmln
aW4mIG9yaWdpbiwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpIHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29u
c3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwgbG9uZyBsb25nIHRyYW5zYWN0
aW9uSWQsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJJREJEYXRhYmFzZUNhbGxiYWNr
cyogZGF0YWJhc2VDYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdl
YkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQotCi0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmln
aW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikgeyBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYg
Ly8gV2ViSURCRmFjdG9yeV9oCisjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYklEQkZhY3RvcnkuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYklEQkluZGV4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCSW5kZXguaAkocmV2aXNpb24gMTM4MDQ4KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCSW5kZXguaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMzUgKzIz
LDQgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJJREJJbmRleF9oCi0jZGVmaW5l
IFdlYklEQkluZGV4X2gKLQotI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRl
ICJXZWJJREJLZXlQYXRoLmgiCi0jaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb24uaCIKLSNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNz
IFdlYklEQkNhbGxiYWNrczsKLWNsYXNzIFdlYklEQktleTsKLWNsYXNzIFdlYklEQktleVJhbmdl
OwotCi0vLyBTZWUgY29tbWVudCBpbiBXZWJJREJGYWN0b3J5IGZvciBhIGhpZ2ggbGV2ZWwgb3Zl
cnZpZXcgb2YgdGhlc2UgY2xhc3Nlcy4KLWNsYXNzIFdlYklEQkluZGV4IHsKLXB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5XZWJJREJJbmRleCgpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIG9wZW5PYmpl
Y3RDdXJzb3IoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24s
IFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9u
Q29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lk
IG9wZW5LZXlDdXJzb3IoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCB1bnNpZ25lZCBzaG9ydCBkaXJl
Y3Rpb24sIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhj
ZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGNvdW50KGNvbnN0IFdlYklEQktleVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29u
c3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0KGNvbnN0IFdlYklE
QktleVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBX
ZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0S2V5KGNvbnN0IFdlYklEQktleVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tz
KiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLQotcHJvdGVjdGVkOgotICAgIFdlYklEQkluZGV4KCkg
e30KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViSURCSW5kZXhf
aAorI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJREJJbmRl
eC5oIgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5LmgJKHJl
dmlzaW9uIDEzODA0OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQktl
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3MyArMjMsNCBAQAogICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIFdlYklEQktleV9oCi0jZGVmaW5lIFdlYklEQktleV9oCi0KLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgi
Ci0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2Vi
VmVjdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSURCS2V5OyB9Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJJREJLZXkgewotcHVibGljOgotICAgIC8vIFBsZWFz
ZSB1c2Ugb25lIG9mIHRoZSBmYWN0b3J5IG1ldGhvZHMuIFRoaXMgaXMgcHVibGljIG9ubHkgdG8g
YWxsb3cgV2ViVmVjdG9yLgotICAgIFdlYklEQktleSgpIHsgfQotICAgIH5XZWJJREJLZXkoKSB7
IHJlc2V0KCk7IH0KLQotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklEQktleSBjcmVhdGVB
cnJheShjb25zdCBXZWJWZWN0b3I8V2ViSURCS2V5PiYpOwotICAgIFdFQktJVF9FWFBPUlQgc3Rh
dGljIFdlYklEQktleSBjcmVhdGVTdHJpbmcoY29uc3QgV2ViU3RyaW5nJik7Ci0gICAgV0VCS0lU
X0VYUE9SVCBzdGF0aWMgV2ViSURCS2V5IGNyZWF0ZURhdGUoZG91YmxlKTsKLSAgICBXRUJLSVRf
RVhQT1JUIHN0YXRpYyBXZWJJREJLZXkgY3JlYXRlTnVtYmVyKGRvdWJsZSk7Ci0gICAgV0VCS0lU
X0VYUE9SVCBzdGF0aWMgV2ViSURCS2V5IGNyZWF0ZUludmFsaWQoKTsKLSAgICBXRUJLSVRfRVhQ
T1JUIHN0YXRpYyBXZWJJREJLZXkgY3JlYXRlTnVsbCgpOwotCi0gICAgV2ViSURCS2V5KGNvbnN0
IFdlYklEQktleSYgZSkgeyBhc3NpZ24oZSk7IH0KLSAgICBXZWJJREJLZXkmIG9wZXJhdG9yPShj
b25zdCBXZWJJREJLZXkmIGUpCi0gICAgewotICAgICAgICBhc3NpZ24oZSk7Ci0gICAgICAgIHJl
dHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0
IFdlYklEQktleSYpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ25BcnJheShjb25zdCBX
ZWJWZWN0b3I8V2ViSURCS2V5PiYpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ25TdHJp
bmcoY29uc3QgV2ViU3RyaW5nJik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbkRhdGUo
ZG91YmxlKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduTnVtYmVyKGRvdWJsZSk7Ci0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbkludmFsaWQoKTsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgYXNzaWduTnVsbCgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwotCi0g
ICAgZW51bSBUeXBlIHsKLSAgICAgICAgSW52YWxpZFR5cGUgPSAwLAotICAgICAgICBBcnJheVR5
cGUsCi0gICAgICAgIFN0cmluZ1R5cGUsCi0gICAgICAgIERhdGVUeXBlLAotICAgICAgICBOdW1i
ZXJUeXBlLAotICAgICAgICBOdWxsVHlwZSwKLSAgICB9OwotCi0gICAgV0VCS0lUX0VYUE9SVCBU
eXBlIHR5cGUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNWYWxpZCgpIGNvbnN0
OwotICAgIFdFQktJVF9FWFBPUlQgV2ViVmVjdG9yPFdlYklEQktleT4gYXJyYXkoKSBjb25zdDsg
Ly8gT25seSB2YWxpZCBmb3IgQXJyYXlUeXBlLgotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5n
IHN0cmluZygpIGNvbnN0OyAvLyBPbmx5IHZhbGlkIGZvciBTdHJpbmdUeXBlLgotICAgIFdFQktJ
VF9FWFBPUlQgZG91YmxlIGRhdGUoKSBjb25zdDsgLy8gT25seSB2YWxpZCBmb3IgRGF0ZVR5cGUu
Ci0gICAgV0VCS0lUX0VYUE9SVCBkb3VibGUgbnVtYmVyKCkgY29uc3Q7IC8vIE9ubHkgdmFsaWQg
Zm9yIE51bWJlclR5cGUuCi0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJJREJL
ZXkoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4mKTsKLSAgICBXZWJJREJL
ZXkmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiYpOwot
ICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+KCkgY29uc3Q7Ci0j
ZW5kaWYKLQotcHJpdmF0ZToKLSAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OklEQktleT4gbV9w
cml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJJREJL
ZXlfaAorI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJREJL
ZXkuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQktleVBhdGgu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXlQ
YXRoLmgJKHJldmlzaW9uIDEzODA0OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklEQktleVBhdGguaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNTYgKzIzLDQgQEAKICAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJJREJLZXlQYXRoX2gKLSNkZWZpbmUgV2ViSURCS2V5
UGF0aF9oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJQcml2YXRlT3duUHRyLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgi
Ci0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsg
Y2xhc3MgSURCS2V5UGF0aDsgfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViSURC
S2V5UGF0aCB7Ci1wdWJsaWM6Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViSURCS2V5UGF0
aCBjcmVhdGUoY29uc3QgV2ViU3RyaW5nJik7Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2Vi
SURCS2V5UGF0aCBjcmVhdGUoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mKTsKLSAgICBXRUJL
SVRfRVhQT1JUIHN0YXRpYyBXZWJJREJLZXlQYXRoIGNyZWF0ZU51bGwoKTsKLQotICAgIFdlYklE
QktleVBhdGgoY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCkgeyBhc3NpZ24oa2V5UGF0aCk7
IH0KLSAgICB2aXJ0dWFsIH5XZWJJREJLZXlQYXRoKCkgeyByZXNldCgpOyB9Ci0gICAgV2ViSURC
S2V5UGF0aCYgb3BlcmF0b3I9KGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgpCi0gICAgewot
ICAgICAgICBhc3NpZ24oa2V5UGF0aCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0K
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
YXNzaWduKGNvbnN0IFdlYklEQktleVBhdGgmKTsKLQotICAgIGVudW0gVHlwZSB7Ci0gICAgICAg
IE51bGxUeXBlID0gMCwKLSAgICAgICAgU3RyaW5nVHlwZSwKLSAgICAgICAgQXJyYXlUeXBlLAot
ICAgIH07Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwotICAgIFdF
QktJVF9FWFBPUlQgVHlwZSB0eXBlKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJWZWN0
b3I8V2ViU3RyaW5nPiBhcnJheSgpIGNvbnN0OyAvLyBPbmx5IHZhbGlkIGZvciBBcnJheVR5cGUu
Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgc3RyaW5nKCkgY29uc3Q7IC8vIE9ubHkgdmFs
aWQgZm9yIFN0cmluZ1R5cGUuCi0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJJ
REJLZXlQYXRoKGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmKTsKLSAgICBXZWJJREJLZXlQYXRo
JiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYpOwotICAgIG9wZXJhdG9yIGNv
bnN0IFdlYkNvcmU6OklEQktleVBhdGgmKCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAg
ICBXZWJQcml2YXRlT3duUHRyPFdlYkNvcmU6OklEQktleVBhdGg+IG1fcHJpdmF0ZTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViSURCS2V5UGF0aF9oCisjaW5j
bHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklEQktleVBhdGguaCIK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQktleVJhbmdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5UmFuZ2Uu
aAkocmV2aXNpb24gMTM4MDQ4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
SURCS2V5UmFuZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNDUgKzIzLDQgQEAKICAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBXZWJJREJLZXlSYW5nZV9oCi0jZGVmaW5lIFdlYklEQktleVJh
bmdlX2gKLQotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlByaXZhdGVQdHIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJREJLZXlS
YW5nZTsgfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViSURCS2V5OwotY2xhc3Mg
V2ViU3RyaW5nOwotCi1jbGFzcyBXZWJJREJLZXlSYW5nZSB7Ci1wdWJsaWM6Ci0gICAgfldlYklE
QktleVJhbmdlKCkgeyByZXNldCgpOyB9Ci0KLSAgICBXZWJJREJLZXlSYW5nZShjb25zdCBXZWJJ
REJLZXlSYW5nZSYga2V5UmFuZ2UpIHsgYXNzaWduKGtleVJhbmdlKTsgfQotICAgIFdlYklEQktl
eVJhbmdlKGNvbnN0IFdlYklEQktleSYgbG93ZXIsIGNvbnN0IFdlYklEQktleSYgdXBwZXIsIGJv
b2wgbG93ZXJPcGVuLCBib29sIHVwcGVyT3BlbikgeyBhc3NpZ24obG93ZXIsIHVwcGVyLCBsb3dl
ck9wZW4sIHVwcGVyT3Blbik7IH0KLQotICAgIFdFQktJVF9FWFBPUlQgV2ViSURCS2V5IGxvd2Vy
KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJJREJLZXkgdXBwZXIoKSBjb25zdDsKLSAg
ICBXRUJLSVRfRVhQT1JUIGJvb2wgbG93ZXJPcGVuKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9S
VCBib29sIHVwcGVyT3BlbigpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2ln
bihjb25zdCBXZWJJREJLZXlSYW5nZSYpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24o
Y29uc3QgV2ViSURCS2V5JiBsb3dlciwgY29uc3QgV2ViSURCS2V5JiB1cHBlciwgYm9vbCBsb3dl
ck9wZW4sIGJvb2wgdXBwZXJPcGVuKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsK
LQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYklEQktleVJhbmdlKGNvbnN0IFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4mKTsKLSAgICBXZWJJREJLZXlSYW5n
ZSYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4m
KTsKLSAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+KCkg
Y29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OklE
QktleVJhbmdlPiBtX3ByaXZhdGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8vIFdlYklEQktleVJhbmdlX2gKKyNpbmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViSURCS2V5UmFuZ2UuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklEQk1ldGFkYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCTWV0YWRhdGEuaAkocmV2aXNpb24gMTM4MDQ4KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCTWV0YWRhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMsNzAgKzIzLDQgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJJREJN
ZXRhZGF0YV9oCi0jZGVmaW5lIFdlYklEQk1ldGFkYXRhX2gKLQotI2luY2x1ZGUgIldlYklEQktl
eVBhdGguaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGE7Ci19Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViSURCTWV0YWRhdGEgewotICAgIGVudW0gewotICAg
ICAgICBOb0ludFZlcnNpb24gPSAtMQotICAgIH07Ci0gICAgc3RydWN0IEluZGV4OwotICAgIHN0
cnVjdCBPYmplY3RTdG9yZTsKLQotICAgIFdlYlN0cmluZyBuYW1lOwotICAgIC8vIEZJWE1FOiBC
b3RoIHZlcnNpb24gbWVtYmVycyBuZWVkIHRvIGJlIHByZXNlbnQgd2hpbGUgd2Ugc3VwcG9ydCBi
b3RoIHRoZQotICAgIC8vIG9sZCBzZXRWZXJzaW9uIGFuZCBuZXcgdXBncmFkZW5lZWRlZCBBUEku
IE9uY2Ugd2Ugbm8gbG9uZ2VyIHN1cHBvcnQKLSAgICAvLyBzZXRWZXJzaW9uLCBXZWJTdHJpbmcg
dmVyc2lvbiBjYW4gYmUgcmVtb3ZlZC4KLSAgICBXZWJTdHJpbmcgdmVyc2lvbjsKLSAgICBsb25n
IGxvbmcgaW50VmVyc2lvbjsKLSAgICBsb25nIGxvbmcgaWQ7Ci0gICAgbG9uZyBsb25nIG1heE9i
amVjdFN0b3JlSWQ7Ci0gICAgV2ViVmVjdG9yPE9iamVjdFN0b3JlPiBvYmplY3RTdG9yZXM7Ci0g
ICAgV2ViSURCTWV0YWRhdGEoKQotICAgICAgICA6IGludFZlcnNpb24oTm9JbnRWZXJzaW9uKSB7
IH0KLQotICAgIHN0cnVjdCBPYmplY3RTdG9yZSB7Ci0gICAgICAgIFdlYlN0cmluZyBuYW1lOwot
ICAgICAgICBXZWJJREJLZXlQYXRoIGtleVBhdGg7Ci0gICAgICAgIGJvb2wgYXV0b0luY3JlbWVu
dDsKLSAgICAgICAgbG9uZyBsb25nIGlkOwotICAgICAgICBsb25nIGxvbmcgbWF4SW5kZXhJZDsK
LSAgICAgICAgV2ViVmVjdG9yPEluZGV4PiBpbmRleGVzOwotICAgICAgICBPYmplY3RTdG9yZSgp
Ci0gICAgICAgICAgICA6IGtleVBhdGgoV2ViSURCS2V5UGF0aDo6Y3JlYXRlTnVsbCgpKQotICAg
ICAgICAgICAgLCBhdXRvSW5jcmVtZW50KGZhbHNlKSB7IH0KLSAgICB9OwotCi0gICAgc3RydWN0
IEluZGV4IHsKLSAgICAgICAgV2ViU3RyaW5nIG5hbWU7Ci0gICAgICAgIFdlYklEQktleVBhdGgg
a2V5UGF0aDsKLSAgICAgICAgYm9vbCB1bmlxdWU7Ci0gICAgICAgIGJvb2wgbXVsdGlFbnRyeTsK
LSAgICAgICAgbG9uZyBsb25nIGlkOwotICAgICAgICBJbmRleCgpCi0gICAgICAgICAgICA6IGtl
eVBhdGgoV2ViSURCS2V5UGF0aDo6Y3JlYXRlTnVsbCgpKQotICAgICAgICAgICAgLCB1bmlxdWUo
ZmFsc2UpCi0gICAgICAgICAgICAsIG11bHRpRW50cnkoZmFsc2UpIHsgfQotICAgIH07Ci0KLSNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJJREJNZXRhZGF0YShjb25zdCBXZWJDb3Jl
OjpJREJEYXRhYmFzZU1ldGFkYXRhJik7Ci0gICAgb3BlcmF0b3IgV2ViQ29yZTo6SURCRGF0YWJh
c2VNZXRhZGF0YSgpIGNvbnN0OwotI2VuZGlmCi19OwotCi0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gV2ViSURCTWV0YWRhdGFfaAorI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJREJNZXRhZGF0YS5oIgpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCShyZXZpc2lvbiAx
MzgwNDgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9y
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2NyArMjMsNCBAQAogICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaWZuZGVmIFdlYklEQk9iamVjdFN0b3JlX2gKLSNkZWZpbmUgV2ViSURCT2JqZWN0U3RvcmVf
aAotCi0jaW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgotI2luY2x1ZGUgIldlYkV4Y2VwdGlv
bkNvZGUuaCIKLSNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJXZWJJREJD
dXJzb3IuaCIKLSNpbmNsdWRlICJXZWJJREJLZXlQYXRoLmgiCi0jaW5jbHVkZSAiV2ViSURCVHJh
bnNhY3Rpb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJTdHJpbmcuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYklE
QktleVJhbmdlOwotY2xhc3MgV2ViSURCVHJhbnNhY3Rpb247Ci0KLS8vIFNlZSBjb21tZW50IGlu
IFdlYklEQkZhY3RvcnkgZm9yIGEgaGlnaCBsZXZlbCBvdmVydmlldyB0aGVzZSBjbGFzc2VzLgot
Y2xhc3MgV2ViSURCT2JqZWN0U3RvcmUgewotcHVibGljOgotICAgIHZpcnR1YWwgfldlYklEQk9i
amVjdFN0b3JlKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0KGNvbnN0IFdlYklEQktleVJh
bmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNl
cHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLQotICAgIGVudW0g
UHV0TW9kZSB7Ci0gICAgICAgIEFkZE9yVXBkYXRlLAotICAgICAgICBBZGRPbmx5LAotICAgICAg
ICBDdXJzb3JVcGRhdGUKLSAgICB9OwotCi0gICAgdHlwZWRlZiBXZWJWZWN0b3I8V2ViSURCS2V5
PiBXZWJJbmRleEtleXM7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcHV0KGNvbnN0IFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSYsIGNvbnN0IFdlYklEQktleSYsIFB1dE1vZGUsIFdlYklEQkNhbGxiYWNr
cyosIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgY29uc3QgV2ViVmVjdG9yPGxvbmcgbG9uZz4m
IGluZGV4SWRzLCBjb25zdCBXZWJWZWN0b3I8V2ViSW5kZXhLZXlzPiYpIHsgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKGNvbnN0
IFdlYklEQktleVJhbmdlJiwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rp
b24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJh
bnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KLSAgICB2aXJ0dWFsIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJp
bmcmLCBjb25zdCBXZWJJREJLZXlQYXRoJiwgYm9vbCwgYm9vbCwgY29uc3QgV2ViSURCVHJhbnNh
Y3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikKLSAgICB7Ci0gICAgICAgIFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHZpcnR1YWwgV2Vi
SURCSW5kZXgqIGNyZWF0ZUluZGV4KGxvbmcgbG9uZywgY29uc3QgV2ViU3RyaW5nJiwgY29uc3Qg
V2ViSURCS2V5UGF0aCYsIGJvb2wsIGJvb2wsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2Vi
RXhjZXB0aW9uQ29kZSYpCi0gICAgewotICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhL
ZXlzKGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdlYlZlY3Rvcjxsb25nIGxvbmc+JiwgY29uc3Qg
V2ViVmVjdG9yPFdlYkluZGV4S2V5cz4mLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYpIHsgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEluZGV4ZXNS
ZWFkeShjb25zdCBXZWJWZWN0b3I8bG9uZyBsb25nPiYsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9u
JikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH07Ci0gICAgLy8gVHJhbnNmZXJzIG93
bmVyc2hpcCBvZiB0aGUgV2ViSURCSW5kZXggdG8gdGhlIGNhbGxlci4KLSAgICB2aXJ0dWFsIFdl
YklEQkluZGV4KiBpbmRleChsb25nIGxvbmcpCi0gICAgewotICAgICAgICBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlSW5kZXgobG9uZyBsb25nIGluZGV4SWQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9u
JiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCBXZWJJREJD
dXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24sIFdlYklEQkNhbGxiYWNrcyosIFdlYklEQlRyYW5z
YWN0aW9uOjpUYXNrVHlwZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25D
b2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
Y291bnQoY29uc3QgV2ViSURCS2V5UmFuZ2UmLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJ
REJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgV2ViSURCT2JqZWN0U3RvcmUoKSB7fQotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJJREJPYmplY3RTdG9yZV9o
CisjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVj
dFN0b3JlLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFu
c2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQlRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDEzODA0OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDUx
ICsyMyw0IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViSURCVHJhbnNhY3Rpb25f
aAotI2RlZmluZSBXZWJJREJUcmFuc2FjdGlvbl9oCi0KLSNpbmNsdWRlICJXZWJFeGNlcHRpb25D
b2RlLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsgY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOyB9Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1jbGFzcyBXZWJJREJPYmplY3RTdG9yZTsKLWNsYXNzIFdlYklEQlRyYW5z
YWN0aW9uQ2FsbGJhY2tzOwotCi0vLyBTZWUgY29tbWVudCBpbiBXZWJJREJGYWN0b3J5IGZvciBh
IGhpZ2ggbGV2ZWwgb3ZlcnZpZXcgb2YgdGhlc2UgY2xhc3Nlcy4KLWNsYXNzIFdlYklEQlRyYW5z
YWN0aW9uIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJJREJUcmFuc2FjdGlvbigpIHsgfQot
Ci0gICAgZW51bSBUYXNrVHlwZSB7Ci0gICAgICAgIE5vcm1hbFRhc2sgPSAwLAotICAgICAgICBQ
cmVlbXB0aXZlVGFzawotICAgIH07Ci0KLSAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBv
YmplY3RTdG9yZShsb25nIGxvbmcsIFdlYkV4Y2VwdGlvbkNvZGUmKQotICAgIHsKLSAgICAgICAg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0g
ICAgdmlydHVhbCB2b2lkIGNvbW1pdCgpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
Ci0gICAgdmlydHVhbCB2b2lkIGFib3J0KCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVUYXNrRXZlbnRzKCkgeyBXRUJLSVRfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FsbGJhY2tzKFdlYklE
QlRyYW5zYWN0aW9uQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
LQotICAgIC8vIEZJWE1FOiB0aGlzIGlzIG5ldmVyIGNhbGxlZCBmcm9tIFdlYkNvcmUuIEZpbmQg
YSBjbGVhbmVyIHNvbHV0aW9uLgotICAgIHZpcnR1YWwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiBnZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGFk
ZFBlbmRpbmdFdmVudHMoaW50KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotCi1w
cm90ZWN0ZWQ6Ci0gICAgV2ViSURCVHJhbnNhY3Rpb24oKSB7fQotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJJREJUcmFuc2FjdGlvbl9oCisjaW5jbHVkZSAiLi4v
Li4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0aW9uLmgiCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNr
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQlRy
YW5zYWN0aW9uQ2FsbGJhY2tzLmgJKHJldmlzaW9uIDEzODA0OCkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDIzICsyMyw0IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViSURC
VHJhbnNhY3Rpb25DYWxsYmFja3NfaAotI2RlZmluZSBXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNr
c19oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLWNsYXNzIFdlYklEQkRhdGFiYXNlRXJyb3I7Ci0KLWNsYXNzIFdlYklEQlRyYW5zYWN0
aW9uQ2FsbGJhY2tzIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJJREJUcmFuc2FjdGlvbkNh
bGxiYWNrcygpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIG9uQWJvcnQoY29uc3QgV2ViSURCRGF0
YWJhc2VFcnJvciYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIG9uQ29tcGxldGUoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJJREJUcmFuc2FjdGlvbkNh
bGxiYWNrc19oCisjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJTZWN1cml0eU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNlY3VyaXR5T3JpZ2luLmgJKHJldmlzaW9uIDEzODA0OCkKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNlY3VyaXR5T3JpZ2luLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDg5ICsyOCw0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgV2ViU2VjdXJpdHlPcmlnaW5faAotI2RlZmluZSBXZWJTZWN1cml0eU9yaWdpbl9oCi0KLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgotbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBTZWN1cml0eU9yaWdpbjsgfQotbmFtZXNwYWNl
IFdURiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOyB9Ci0jZW5kaWYK
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZTsK
LWNsYXNzIFdlYlN0cmluZzsKLWNsYXNzIFdlYlVSTDsKLQotY2xhc3MgV2ViU2VjdXJpdHlPcmln
aW4gewotcHVibGljOgotICAgIH5XZWJTZWN1cml0eU9yaWdpbigpIHsgcmVzZXQoKTsgfQotCi0g
ICAgV2ViU2VjdXJpdHlPcmlnaW4oKSA6IG1fcHJpdmF0ZSgwKSB7IH0KLSAgICBXZWJTZWN1cml0
eU9yaWdpbihjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgcykgOiBtX3ByaXZhdGUoMCkgeyBhc3Np
Z24ocyk7IH0KLSAgICBXZWJTZWN1cml0eU9yaWdpbiYgb3BlcmF0b3I9KGNvbnN0IFdlYlNlY3Vy
aXR5T3JpZ2luJiBzKQotICAgIHsKLSAgICAgICAgYXNzaWduKHMpOwotICAgICAgICByZXR1cm4g
KnRoaXM7Ci0gICAgfQotCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViU2VjdXJpdHlPcmln
aW4gY3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBXZWJTdHJpbmcmIGRhdGFiYXNl
SWRlbnRpZmllcik7Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViU2VjdXJpdHlPcmlnaW4g
Y3JlYXRlRnJvbVN0cmluZyhjb25zdCBXZWJTdHJpbmcmKTsKLSAgICBXRUJLSVRfRVhQT1JUIHN0
YXRpYyBXZWJTZWN1cml0eU9yaWdpbiBjcmVhdGUoY29uc3QgV2ViVVJMJik7Ci0KLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNv
bnN0IFdlYlNlY3VyaXR5T3JpZ2luJik7Ci0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0
dXJuICFtX3ByaXZhdGU7IH0KLQotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHByb3RvY29s
KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgaG9zdCgpIGNvbnN0OwotICAg
IFdFQktJVF9FWFBPUlQgdW5zaWduZWQgc2hvcnQgcG9ydCgpIGNvbnN0OwotCi0gICAgLy8gQSB1
bmlxdWUgV2ViU2VjdXJpdHlPcmlnaW4gaXMgdGhlIGxlYXN0IHByaXZpbGVnZWQgV2ViU2VjdXJp
dHlPcmlnaW4uCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIGlzVW5pcXVlKCkgY29uc3Q7Ci0KLSAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBXZWJTZWN1cml0eU9yaWdpbiBjYW4gc2NyaXB0IG9i
amVjdHMgaW4gdGhlIGdpdmVuCi0gICAgLy8gU2VjdXJpdHlPcmlnaW4uIEZvciBleGFtcGxlLCBj
YWxsIHRoaXMgZnVuY3Rpb24gYmVmb3JlIGFsbG93aW5nCi0gICAgLy8gc2NyaXB0IGZyb20gb25l
IHNlY3VyaXR5IG9yaWdpbiB0byByZWFkIG9yIHdyaXRlIG9iamVjdHMgZnJvbQotICAgIC8vIGFu
b3RoZXIgU2VjdXJpdHlPcmlnaW4uCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIGNhbkFjY2Vzcyhj
b25zdCBXZWJTZWN1cml0eU9yaWdpbiYpIGNvbnN0OwotCi0gICAgLy8gUmV0dXJucyB0cnVlIGlm
IHRoaXMgV2ViU2VjdXJpdHlPcmlnaW4gY2FuIHJlYWQgY29udGVudCByZXRyaWV2ZWQgZnJvbQot
ICAgIC8vIHRoZSBnaXZlbiBVUkwuIEZvciBleGFtcGxlLCBjYWxsIHRoaXMgZnVuY3Rpb24gYmVm
b3JlIGFsbG93aW5nIHNjcmlwdAotICAgIC8vIGZyb20gYSBnaXZlbiBzZWN1cml0eSBvcmlnaW4g
dG8gcmVjZWl2ZSBjb250ZW50cyBmcm9tIGEgZ2l2ZW4gVVJMLgotICAgIFdFQktJVF9FWFBPUlQg
Ym9vbCBjYW5SZXF1ZXN0KGNvbnN0IFdlYlVSTCYpIGNvbnN0OwotCi0gICAgLy8gUmV0dXJucyBh
IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgV2ViU2VjdXJpdHlPcmlnaW4uICBUaGUgZW1w
dHkKLSAgICAvLyBXZWJTZWN1cml0eU9yaWdpbiBpcyByZXByZXNlbnRlZCBieSAibnVsbCIuICBU
aGUgcmVwcmVzZW50YXRpb24gb2YgYQotICAgIC8vIG5vbi1lbXB0eSBXZWJTZWN1cml0eU9yaWdp
biByZXNlbWJsZXMgYSBzdGFuZGFyZCBVUkwuCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcg
dG9TdHJpbmcoKSBjb25zdDsKLQotICAgIC8vIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRp
b24gb2YgdGhpcyBXZWJTZWN1cml0eU9yaWdpbiB0aGF0IGNhbgotICAgIC8vIGJlIHVzZWQgYXMg
YSBmaWxlLiAgU2hvdWxkIGJlIHVzZWQgaW4gc3RvcmFnZSBBUElzIG9ubHkuCi0gICAgV0VCS0lU
X0VYUE9SVCBXZWJTdHJpbmcgZGF0YWJhc2VJZGVudGlmaWVyKCkgY29uc3Q7Ci0KLSAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgdGhpcyBXZWJTZWN1cml0eU9yaWdpbiBjYW4gYWNjZXNzIHVzZXJuYW1l
cyBhbmQgCi0gICAgLy8gcGFzc3dvcmRzIHN0b3JlZCBpbiBwYXNzd29yZCBtYW5hZ2VyLgotICAg
IFdFQktJVF9FWFBPUlQgYm9vbCBjYW5BY2Nlc3NQYXNzd29yZE1hbmFnZXIoKSBjb25zdDsKLQot
ICAgIC8vIEFsbG93cyB0aGlzIFdlYlNlY3VyaXR5T3JpZ2luIGFjY2VzcyB0byBsb2NhbCByZXNv
dXJjZXMuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGdyYW50TG9hZExvY2FsUmVzb3VyY2VzKCkg
Y29uc3Q7Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJTZWN1cml0eU9yaWdp
bihjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+Jik7Ci0gICAg
V2ViU2VjdXJpdHlPcmlnaW4mIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+Jik7Ci0gICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPigpIGNvbnN0OwotICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
KiBnZXQoKSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIHZvaWQgYXNzaWduKFdlYlNl
Y3VyaXR5T3JpZ2luUHJpdmF0ZSopOwotICAgIFdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZSogbV9w
cml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgorI2luY2x1ZGUg
Ii4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTZWN1cml0eU9yaWdpbi5oIgpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZv
cm1TdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
cGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgJKHJldmlzaW9uIDEzODA0OCkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9y
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxNyArMzUsMTEgQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLWNsYXNzIFdlYklEQkZhY3Rvcnk7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25nIGlu
IHBsYXRmb3JtPwogY2xhc3MgV2ViU2hhcmVkV29ya2VyUmVwb3NpdG9yeTsgLy8gRklYTUU6IERv
ZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CiAKIC8vIEZJWE1FOiBFdmVudHVhbGx5IGFsbCB0
aGVzZSBBUEkgd2lsbCBuZWVkIHRvIG1vdmUgdG8gV2ViS2l0OjpQbGF0Zm9ybS4KIGNsYXNzIFdl
YktpdFBsYXRmb3JtU3VwcG9ydCA6IHB1YmxpYyBQbGF0Zm9ybSB7CiBwdWJsaWM6Ci0gICAgLy8g
SW5kZXhlZCBEYXRhYmFzZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLSAgICB2aXJ0dWFsIFdlYklEQkZhY3RvcnkqIGlkYkZhY3RvcnkoKSB7
IHJldHVybiAwOyB9Ci0KLQogICAgIC8vIFNoYXJlZCBXb3JrZXJzIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgdmlydHVhbCBXZWJT
aGFyZWRXb3JrZXJSZXBvc2l0b3J5KiBzaGFyZWRXb3JrZXJSZXBvc2l0b3J5KCkgeyByZXR1cm4g
MDsgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgJKHJldmlzaW9uIDEz
ODA0OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2OSArMjgsNCBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZV9oCi0j
ZGVmaW5lIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZV9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24u
aCIKLSNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xh
c3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOyB9Ci0KLSNpZiBXRUJLSVRfVVNJTkdfVjgKLW5hbWVz
cGFjZSB2OCB7Ci1jbGFzcyBWYWx1ZTsKLXRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBIYW5kbGU7
Ci19Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJTdHJpbmc7Ci0KLS8v
IEZJWE1FOiBTaG91bGQgdGhpcyBjbGFzcyBiZSBpbiBwbGF0Zm9ybT8KLWNsYXNzIFdlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSB7Ci1wdWJsaWM6Ci0gICAgfldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSgpIHsgcmVzZXQoKTsgfQotCi0gICAgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKCkgeyB9Ci0g
ICAgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYgZCkgeyBhc3NpZ24oZCk7IH0KLSAgICBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIG9wZXJh
dG9yPShjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIGQpCi0gICAgewotICAgICAgICBh
c3NpZ24oZCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBXRUJLSVRfRVhQ
T1JUIHN0YXRpYyBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUgZnJvbVN0cmluZyhjb25zdCBXZWJT
dHJpbmcmKTsKLQotI2lmIFdFQktJVF9VU0lOR19WOAotICAgIFdFQktJVF9FWFBPUlQgc3RhdGlj
IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBzZXJpYWxpemUodjg6OkhhbmRsZTx2ODo6VmFsdWU+
KTsKLSNlbmRpZgotCi0gICAgLy8gQ3JlYXRlIGEgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlIHRo
YXQgcmVwcmVzZW50cyBhIHNlcmlhbGl6YXRpb24gZXJyb3IuCi0gICAgV0VCS0lUX0VYUE9SVCBz
dGF0aWMgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlIGNyZWF0ZUludmFsaWQoKTsKLQotICAgIFdF
QktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24o
Y29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJik7Ci0KLSAgICBib29sIGlzTnVsbCgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQotCi0gICAgLy8gUmV0dXJucyBhIHN0
cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLgotICAg
IFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0KLSNpZiBXRUJLSVRf
VVNJTkdfVjgKLSAgICAvLyBDb252ZXJ0IHRoZSBzZXJpYWxpemVkIHZhbHVlIHRvIGEgcGFyc2Vk
IHY4IHZhbHVlLgotICAgIFdFQktJVF9FWFBPUlQgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2Vy
aWFsaXplKCk7Ci0jZW5kaWYKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYpOwotICAgIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgb3BlcmF0
b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+
Jik7Ci0gICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4oKSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFdlYlByaXZhdGVQdHI8
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX3ByaXZhdGU7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5j
cHAJKHJldmlzaW9uIDEzODA0OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZh
Y3RvcnlCYWNrZW5kUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBACiAj
aW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0v
V2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAj
aW5jbHVkZSA8cHVibGljL1dlYlZlY3Rvci5oPgogCiAKQEAgLTY3LDcgKzY3LDcgQEAgUGFzc1Jl
ZlB0cjxJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gSQogfQogCiBJREJGYWN0b3J5QmFja2Vu
ZFByb3h5OjpJREJGYWN0b3J5QmFja2VuZFByb3h5KCkKLSAgICA6IG1fd2ViSURCRmFjdG9yeSh3
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+aWRiRmFjdG9yeSgpKQorICAgIDogbV93ZWJJREJGYWN0
b3J5KFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+aWRiRmFjdG9yeSgpKQogewogfQogCkBA
IC0xODMsMTYgKzE4Myw2IEBAIGJvb2wgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6YWxsb3dJbmRl
eGUKICAgICByZXR1cm4gYWxsb3dlZDsKIH0KIAotc3RhdGljIFdlYkZyYW1lSW1wbCogZ2V0V2Vi
RnJhbWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29u
dGV4dC0+aXNEb2N1bWVudCgpIHx8IGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKLSAgICBp
ZiAoY29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBXZWJGcmFt
ZUltcGw6OmZyb21GcmFtZShkb2N1bWVudC0+ZnJhbWUoKSk7Ci0gICAgfQotICAgIHJldHVybiAw
OwotfQotCiB2b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmdldERhdGFiYXNlTmFtZXMoUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgZGF0YURpcikKIHsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MocHJwQ2FsbGJhY2tzKTsKQEAgLTIwMCw4ICsxOTAsNyBAQCB2b2lkIElEQkZhY3RvcnlCYWNr
ZW5kUHJveHk6OmdldERhdGFiYXNlCiAgICAgaWYgKCFhbGxvd0luZGV4ZWREQihjb250ZXh0LCAi
RGF0YWJhc2UgTGlzdGluZyIsIG9yaWdpbiwgY2FsbGJhY2tzKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IGdldFdlYkZyYW1lKGNvbnRleHQpOwotICAg
IG1fd2ViSURCRmFjdG9yeS0+Z2V0RGF0YWJhc2VOYW1lcyhuZXcgV2ViSURCQ2FsbGJhY2tzSW1w
bChjYWxsYmFja3MpLCBvcmlnaW4sIHdlYkZyYW1lLCBkYXRhRGlyKTsKKyAgICBtX3dlYklEQkZh
Y3RvcnktPmdldERhdGFiYXNlTmFtZXMobmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tz
KSwgb3JpZ2luLCBkYXRhRGlyKTsKIH0KIAogCkBAIC0yMTQsOCArMjAzLDcgQEAgdm9pZCBJREJG
YWN0b3J5QmFja2VuZFByb3h5OjpvcGVuKGNvbnN0CiAgICAgaWYgKCFhbGxvd0luZGV4ZWREQihj
b250ZXh0LCBuYW1lLCBvcmlnaW4sIGNhbGxiYWNrcykpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBnZXRXZWJGcmFtZShjb250ZXh0KTsKLSAgICBtX3dl
YklEQkZhY3RvcnktPm9wZW4obmFtZSwgdmVyc2lvbiwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwo
Y2FsbGJhY2tzKSwgbmV3IFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbChkYXRhYmFzZUNhbGxi
YWNrcyksIG9yaWdpbiwgd2ViRnJhbWUsIGRhdGFEaXIpOworICAgIG1fd2ViSURCRmFjdG9yeS0+
b3BlbihuYW1lLCB2ZXJzaW9uLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBu
ZXcgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKGRhdGFiYXNlQ2FsbGJhY2tzKSwgb3JpZ2lu
LCBkYXRhRGlyKTsKIH0KIAogdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVuKGNvbnN0
IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VDYWxsYmFja3M+IHBycERhdGFiYXNlQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBzZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBkYXRhRGlyKQpAQCAtMjI2LDggKzIxNCw3IEBAIHZvaWQgSURCRmFjdG9yeUJh
Y2tlbmRQcm94eTo6b3Blbihjb25zdAogICAgIGlmICghYWxsb3dJbmRleGVkREIoY29udGV4dCwg
bmFtZSwgb3JpZ2luLCBjYWxsYmFja3MpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJGcmFt
ZUltcGwqIHdlYkZyYW1lID0gZ2V0V2ViRnJhbWUoY29udGV4dCk7Ci0gICAgbV93ZWJJREJGYWN0
b3J5LT5vcGVuKG5hbWUsIHZlcnNpb24sIHRyYW5zYWN0aW9uSWQsIG5ldyBXZWJJREJDYWxsYmFj
a3NJbXBsKGNhbGxiYWNrcyksIG5ldyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoZGF0YWJh
c2VDYWxsYmFja3MpLCBvcmlnaW4sIHdlYkZyYW1lLCBkYXRhRGlyKTsKKyAgICBtX3dlYklEQkZh
Y3RvcnktPm9wZW4obmFtZSwgdmVyc2lvbiwgdHJhbnNhY3Rpb25JZCwgbmV3IFdlYklEQkNhbGxi
YWNrc0ltcGwoY2FsbGJhY2tzKSwgbmV3IFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbChkYXRh
YmFzZUNhbGxiYWNrcyksIG9yaWdpbiwgZGF0YURpcik7CiB9CiAKIHZvaWQgSURCRmFjdG9yeUJh
Y2tlbmRQcm94eTo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBz
ZWN1cml0eU9yaWdpbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBkYXRhRGlyKQpAQCAtMjM3LDggKzIyNCw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRQ
cm94eTo6ZGVsZXRlRGF0YWIKICAgICBpZiAoIWFsbG93SW5kZXhlZERCKGNvbnRleHQsIG5hbWUs
IG9yaWdpbiwgY2FsbGJhY2tzKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViRnJhbWVJbXBs
KiB3ZWJGcmFtZSA9IGdldFdlYkZyYW1lKGNvbnRleHQpOwotICAgIG1fd2ViSURCRmFjdG9yeS0+
ZGVsZXRlRGF0YWJhc2UobmFtZSwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwg
b3JpZ2luLCB3ZWJGcmFtZSwgZGF0YURpcik7CisgICAgbV93ZWJJREJGYWN0b3J5LT5kZWxldGVE
YXRhYmFzZShuYW1lLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBvcmlnaW4s
IGRhdGFEaXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHAJKHJldmlzaW9uIDEz
ODA0OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTMgKzYwLDEzIEBAIFdlYklEQkZhY3RvcnlJbXBsOjp+
V2ViSURCRmFjdG9yeUltcGwoKQogewogfQogCi12b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpnZXRE
YXRhYmFzZU5hbWVzKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0
eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikKK3Zv
aWQgV2ViSURCRmFjdG9yeUltcGw6OmdldERhdGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiBj
YWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFdlYlN0cmlu
ZyYgZGF0YURpcikKIHsKICAgICBtX2lkYkZhY3RvcnlCYWNrZW5kLT5nZXREYXRhYmFzZU5hbWVz
KElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIG9yaWdpbiwg
MCwgZGF0YURpcik7CiB9CiAKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtZXRob2QgaW4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzkyMy4KLXZvaWQgV2ViSURCRmFj
dG9yeUltcGw6Om9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBsb25nIGxvbmcgdmVyc2lvbiwg
V2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzKiBkYXRh
YmFzZUNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUq
LCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCit2b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpvcGVu
KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgbG9uZyBsb25nIHZlcnNpb24sIFdlYklEQkNhbGxiYWNr
cyogY2FsbGJhY2tzLCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyogZGF0YWJhc2VDYWxsYmFja3Ms
IGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFdlYlN0cmluZyYgZGF0YURp
cikKIHsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzUHJveHk+IGNhbGxiYWNrc1Byb3h5ID0gSURC
Q2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKTsKICAgICBSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4gZGF0YWJhc2VDYWxsYmFja3NQcm94eSA9IElEQkRh
dGFiYXNlQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihkYXRhYmFzZUNhbGxiYWNrcykp
OwpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpvcGVuKGNvbnN0IFdl
YlN0CiAgICAgbV9pZGJGYWN0b3J5QmFja2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCBjYWxsYmFj
a3NQcm94eS5nZXQoKSwgZGF0YWJhc2VDYWxsYmFja3NQcm94eS5nZXQoKSwgb3JpZ2luLCAwLCBk
YXRhRGlyKTsKIH0KIAotdm9pZCBXZWJJREJGYWN0b3J5SW1wbDo6b3Blbihjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIGxvbmcgbG9uZyB2ZXJzaW9uLCBsb25nIGxvbmcgdHJhbnNhY3Rpb25JZCwgV2Vi
SURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzKiBkYXRhYmFz
ZUNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqLCBj
b25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCit2b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpvcGVuKGNv
bnN0IFdlYlN0cmluZyYgbmFtZSwgbG9uZyBsb25nIHZlcnNpb24sIGxvbmcgbG9uZyB0cmFuc2Fj
dGlvbklkLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViSURCRGF0YWJhc2VDYWxsYmFj
a3MqIGRhdGFiYXNlQ2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBj
b25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCiB7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrc1Byb3h5
PiBjYWxsYmFja3NQcm94eSA9IElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2Fs
bGJhY2tzKSk7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IGRhdGFiYXNl
Q2FsbGJhY2tzUHJveHkgPSBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQ
dHIoZGF0YWJhc2VDYWxsYmFja3MpKTsKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBXZWJJREJGYWN0
b3J5SW1wbDo6b3Blbihjb25zdCBXZWJTdAogICAgIG1faWRiRmFjdG9yeUJhY2tlbmQtPm9wZW4o
bmFtZSwgdmVyc2lvbiwgdHJhbnNhY3Rpb25JZCwgY2FsbGJhY2tzUHJveHkuZ2V0KCksIGRhdGFi
YXNlQ2FsbGJhY2tzUHJveHkuZ2V0KCksIG9yaWdpbiwgMCwgZGF0YURpcik7CiB9CiAKLXZvaWQg
V2ViSURCRmFjdG9yeUltcGw6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
V2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmln
aW4sIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKQordm9pZCBXZWJJREJGYWN0
b3J5SW1wbDo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxs
YmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgY29uc3Qg
V2ViU3RyaW5nJiBkYXRhRGlyKQogewogICAgIG1faWRiRmFjdG9yeUJhY2tlbmQtPmRlbGV0ZURh
dGFiYXNlKG5hbWUsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tz
KSksIG9yaWdpbiwgMCwgZGF0YURpcik7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmgJKHJldmlzaW9uIDEzODA0OCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDExICs0NCwxMSBAQCBwdWJsaWM6CiAgICAgV2ViSURCRmFjdG9yeUltcGwoKTsKICAg
ICB2aXJ0dWFsIH5XZWJJREJGYWN0b3J5SW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGdldERh
dGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBX
ZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcik7CisgICAgdmlydHVhbCB2b2lkIGdl
dERhdGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4m
LCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpOwogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBt
ZXRob2QgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzkyMy4K
LSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGxvbmcgbG9uZyB2
ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqLCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyosIGNvbnN0
IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIp
OwotICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgbG9uZyBsb25n
IHZlcnNpb24sIGxvbmcgbG9uZyB0cmFuc2FjdGlvbklkLCBXZWJJREJDYWxsYmFja3MqLCBXZWJJ
REJEYXRhYmFzZUNhbGxiYWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUq
LCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRh
YmFzZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYlNl
Y3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpOworICAg
IHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgbG9uZyBsb25nIHZlcnNp
b24sIFdlYklEQkNhbGxiYWNrcyosIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzKiwgY29uc3QgV2Vi
U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpOworICAgIHZpcnR1YWwg
dm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgbG9uZyBsb25nIHZlcnNpb24sIGxvbmcg
bG9uZyB0cmFuc2FjdGlvbklkLCBXZWJJREJDYWxsYmFja3MqLCBXZWJJREJEYXRhYmFzZUNhbGxi
YWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGly
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFdlYlN0
cmluZyYgZGF0YURpcik7CiAKIHByaXZhdGU6CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SURC
RmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IG1faWRiRmFjdG9yeUJhY2tlbmQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>