<?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>136517</bug_id>
          
          <creation_ts>2014-09-03 16:57:42 -0700</creation_ts>
          <short_desc>Remove iOS specific disk image cache</short_desc>
          <delta_ts>2014-09-04 10:36:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pratik Solanki">psolanki</reporter>
          <assigned_to name="Pratik Solanki">psolanki</assigned_to>
          <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>psolanki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1033095</commentid>
    <comment_count>0</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-09-03 16:57:42 -0700</bug_when>
    <thetext>We don&apos;t use the disk image cache in WebKit2 and the code is now complicating SharedBuffer unnecessarily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033098</commentid>
    <comment_count>1</comment_count>
      <attachid>237602</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-09-03 17:07:04 -0700</bug_when>
    <thetext>Created attachment 237602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033105</commentid>
    <comment_count>2</comment_count>
      <attachid>237602</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-09-03 17:40:13 -0700</bug_when>
    <thetext>Comment on attachment 237602
Patch

r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033234</commentid>
    <comment_count>3</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2014-09-04 10:36:41 -0700</bug_when>
    <thetext>Committed r173265: &lt;http://trac.webkit.org/changeset/173265&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237602</attachid>
            <date>2014-09-03 17:07:04 -0700</date>
            <delta_ts>2014-09-03 17:40:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136517-20140903170658.patch</filename>
            <type>text/plain</type>
            <size>84570</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjNWRkMTA5NzUwNGI3NjM3YjcyMWRi
ZDU3MmIwZmE1YzMxZmU0YzkuLmQ2NDQ2ZGEzYWUzMWNlMTY0NzZmNTY3ZTRjZTA4MDNjZmRkMzc4
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMDktMDMgIFByYXRpayBTb2xhbmtpICA8cHNv
bGFua2lAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBpT1Mgc3BlY2lmaWMgZGlzayBpbWFn
ZSBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTM2NTE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RGlzayBpbWFnZSBjYWNoZSBjb2RlIHVubmVjZXNzYXJpbHkgY29tcGxpY2F0ZXMgU2hhcmVkQnVm
ZmVyIGltcGxlbWVudGF0aW9uLiBXZSBjYW4gcmVtb3ZlCisgICAgICAgIHRoaXMgbm93IHNpbmNl
IHdlIGRvbid0IGVuYWJsZSBpdCBpbiBXZWJLaXQyIG9uIGlPUy4KKworICAgICAgICAqIHd0Zi9G
ZWF0dXJlRGVmaW5lcy5oOgorCiAyMDE0LTA5LTAzICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBs
ZS5jb20+CiAKICAgICAgICAgR2V0IHJpZCBvZiBISUdIX0RQSV9DQU5WQVMgbGVmdG92ZXJzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggYjk3ZjBiZjE1YTJjYWRhYmVmYzg4ZGZiMDVlNGJjNjRkMWE1YjA4YS4uYTA5
ZWFlODUzN2VkYTZhOGFkNWVlOTI1ZGVmMWQ3MzBjNTE5YmEwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDYyIEBACisyMDE0LTA5LTAzICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNv
bT4KKworICAgICAgICBSZW1vdmUgaU9TIHNwZWNpZmljIGRpc2sgaW1hZ2UgY2FjaGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjUxNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERpc2sgaW1hZ2UgY2Fj
aGUgY29kZSB1bm5lY2Vzc2FyaWx5IGNvbXBsaWNhdGVzIFNoYXJlZEJ1ZmZlciBpbXBsZW1lbnRh
dGlvbi4gV2UgY2FuIHJlbW92ZQorICAgICAgICB0aGlzIG5vdyBzaW5jZSB3ZSBkb24ndCBlbmFi
bGUgaXQgaW4gV2ViS2l0MiBvbiBpT1MuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9h
ZGVyL1Jlc291cmNlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlQnVmZmVy
Ojppc1VzaW5nRGlza0ltYWdlQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUJ1ZmZlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y2FuVXNlRGlza0ltYWdlQ2FjaGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVzZURpc2tJbWFnZUNhY2hlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OmlzVXNpbmdEaXNrSW1hZ2VDYWNoZSk6IERlbGV0ZWQuCisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZTo6Y2FuVXNlRGlza0ltYWdlQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OnVzZURpc2tJbWFnZUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
Q2FjaGU6OlR5cGVTdGF0aXN0aWM6OmFkZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUNhY2hlOjpkdW1wU3RhdHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmR1
bXBMUlVMaXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6Zmx1c2hDYWNoZWRJ
bWFnZXNUb0Rpc2spOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OlR5cGVTdGF0aXN0aWM6OlR5cGVT
dGF0aXN0aWMpOgorICAgICAgICAqIGxvYWRlci9pb3MvRGlza0ltYWdlQ2FjaGVDbGllbnRJT1Mu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBsb2FkZXIvaW9zL0Rpc2tJbWFnZUNhY2hlSU9TLmg6IFJl
bW92ZWQuCisgICAgICAgICogbG9hZGVyL2lvcy9EaXNrSW1hZ2VDYWNoZUlPUy5tbTogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2dnaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6flNoYXJlZEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzQWxsb3dlZFRvQmVNZW1vcnlNYXBwZWQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphbGxvd1RvQmVNZW1v
cnlNYXBwZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpmYWls
ZWRNZW1vcnlNYXApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpt
YXJrQXNNZW1vcnlNYXBwZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjptZW1vcnlNYXBwZWROb3RpZmljYXRpb25DYWxsYmFja0RhdGEpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptZW1vcnlNYXBwZWROb3RpZmljYXRpb25DYWxs
YmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNldE1lbW9y
eU1hcHBlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNNZW1v
cnlNYXBwZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvU2hhcmVkQnVmZmVyTWFjLm1tOgorICAgICAgICAoLVtXZWJD
b3JlU2hhcmVkQnVmZmVyRGF0YSBsZW5ndGhdKToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1
ZmZlckRhdGEgYnl0ZXNdKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
Q0ZEYXRhKToKKyAgICAgICAgKC1bV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhNZW1v
cnlNYXBwZWRTaGFyZWRCdWZmZXI6XSk6IERlbGV0ZWQuCisKIDIwMTQtMDktMDMgIEVucmljYSBD
YXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgUExBVEZPUk0oSU9T
KSBmcm9tIFdlYkNvcmUvZWRpdGluZyAoUGFydCAxKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMmFlOTBiOGEzY2E2
MmMxZjkzNTExMzUzNGQxODY2M2Q4MjhlN2I4ZC4uMzZhYjU4ZWE5Yjk3YjY2MGI2ZjJhMWI4N2Nl
Y2Q1NTlkNWY3ZjkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wOS0wMyAgUHJh
dGlrIFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGlPUyBz
cGVjaWZpYyBkaXNrIGltYWdlIGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzY1MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBEaXNrIGltYWdlIGNhY2hlIGNvZGUgdW5uZWNlc3NhcmlseSBjb21w
bGljYXRlcyBTaGFyZWRCdWZmZXIgaW1wbGVtZW50YXRpb24uIFdlIGNhbiByZW1vdmUKKyAgICAg
ICAgdGhpcyBub3cgc2luY2Ugd2UgZG9uJ3QgZW5hYmxlIGl0IGluIFdlYktpdDIgb24gaU9TLgor
CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTQtMDgt
MjkgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dml3ZWQsIHJlbW92ZSBlbXB0eSBkaXJlY3Rvcmllcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRleCBlNDY0
ZTY2ZTJlOWY2NjJkMzg5NGMxMjZjNjIwMGEzMjM0NDJjZTI1Li45ZjYxODlmOTE4M2QxNWUyYmE5
Yjk1YmMxNDFiNjM1NDA1OWE1NmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTQtMDktMDMgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgorCisgICAg
ICAgIFJlbW92ZSBpT1Mgc3BlY2lmaWMgZGlzayBpbWFnZSBjYWNoZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2NTE3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGlzayBpbWFnZSBjYWNoZSBjb2RlIHVu
bmVjZXNzYXJpbHkgY29tcGxpY2F0ZXMgU2hhcmVkQnVmZmVyIGltcGxlbWVudGF0aW9uLiBXZSBj
YW4gcmVtb3ZlCisgICAgICAgIHRoaXMgbm93IHNpbmNlIHdlIGRvbid0IGVuYWJsZSBpdCBpbiBX
ZWJLaXQyIG9uIGlPUy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRpc2tJbWFnZUNh
Y2hlQ2xpZW50SU9TLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRGlz
a0ltYWdlQ2FjaGVDbGllbnRJT1MubW06IFJlbW92ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJQ
REZWaWV3UGxhY2Vob2xkZXIubW06CisgICAgICAgICgtW1dlYlBERlZpZXdQbGFjZWhvbGRlciBm
aW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKC1bV2ViUERGVmlld1Bs
YWNlaG9sZGVyIGRhdGFTb3VyY2VNZW1vcnlNYXBwZWRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViUERGVmlld1BsYWNlaG9sZGVyIGRhdGFTb3VyY2VNZW1vcnlNYXBGYWlsZWRdKTogRGVsZXRl
ZC4KKwogMjAxNC0wOC0zMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgKGFuZCB1bm5lY2Vzc2FyaWx5IGlPUy1zcGVj
aWZpYykgc2V0U3Ryb2tlQW5kRmlsbENvbG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggOWFkODMxZTZk
N2UxMWUzNmFjYjQ2MWEzYjQ0NGI1ZWYzYjdjNDBiZS4uN2MyYzY1MWMxZGU3OTNjNWZmZTQxOGRm
MGM0ZjQ5MjYwZmVjMDI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE0
LTA5LTAzICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmUgaU9TIHNwZWNpZmljIGRpc2sgaW1hZ2UgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjUxNworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERpc2sgaW1hZ2UgY2FjaGUgY29kZSB1bm5lY2Vz
c2FyaWx5IGNvbXBsaWNhdGVzIFNoYXJlZEJ1ZmZlciBpbXBsZW1lbnRhdGlvbi4gV2UgY2FuIHJl
bW92ZQorICAgICAgICB0aGlzIG5vdyBzaW5jZSB3ZSBkb24ndCBlbmFibGUgaXQgaW4gV2ViS2l0
MiBvbiBpT1MuCisKKyAgICAgICAgKiBNaXNjL1dlYkNhY2hlLm1tOgorICAgICAgICAoK1tXZWJD
YWNoZSBzdGF0aXN0aWNzXSk6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgor
ICAgICAgICAoLVtXZWJEYXRhU291cmNlIF9zZXRBbGxvd1RvQmVNZW1vcnlNYXBwZWRdKToKKyAg
ICAgICAgKC1bV2ViRGF0YVNvdXJjZSBzZXREYXRhU291cmNlRGVsZWdhdGU6XSk6CisgICAgICAg
ICgtW1dlYkRhdGFTb3VyY2UgZGF0YVNvdXJjZURlbGVnYXRlXSk6CisgICAgICAgICgtW1dlYkRh
dGFTb3VyY2UgZGVhbGxvY10pOgorICAgICAgICAoQnVmZmVyTWVtb3J5TWFwcGVkKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2Vz
IGluaXRpYWxpemVdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgZGlza0ltYWdlQ2FjaGVF
bmFibGVkXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNldERpc2tJbWFn
ZUNhY2hlRW5hYmxlZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgZGlz
a0ltYWdlQ2FjaGVNaW5pbXVtSW1hZ2VTaXplXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlBy
ZWZlcmVuY2VzIHNldERpc2tJbWFnZUNhY2hlTWluaW11bUltYWdlU2l6ZTpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgZGlza0ltYWdlQ2FjaGVNYXhpbXVtQ2FjaGVTaXpl
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNldERpc2tJbWFnZUNhY2hl
TWF4aW11bUNhY2hlU2l6ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMg
X2Rpc2tJbWFnZUNhY2hlU2F2ZWRDYWNoZURpcmVjdG9yeV0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJQcmVmZXJlbmNlcyBfc2V0RGlza0ltYWdlQ2FjaGVTYXZlZENhY2hlRGlyZWN0b3J5Ol0p
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6Cisg
ICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25J
bml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoK1tXZWJW
aWV3IF9oYW5kbGVNZW1vcnlXYXJuaW5nXSk6CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVu
Y2VzQ2hhbmdlZDpdKToKKwogMjAxNC0wOS0wMyAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBQTEFURk9STShJT1MpIGZyb20gV2ViQ29yZS9lZGl0
aW5nIChQYXJ0IDEpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMu
aCBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggMmNlMDk0MjJkMmU4ZjVk
MjY0ZmQzOWU3NmQ3NjZhNzBhNjZkYTFkNi4uMTgxNzlmOTc5NzgyZDlmMDI5Y2U5ODg4NmRjYTRj
NzVmNjAyYTIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC03MCwxMCArNzAsNiBAQAog
I2RlZmluZSBFTkFCTEVfQ1VSU09SX1NVUFBPUlQgMAogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChF
TkFCTEVfRElTS19JTUFHRV9DQUNIRSkKLSNkZWZpbmUgRU5BQkxFX0RJU0tfSU1BR0VfQ0FDSEUg
MQotI2VuZGlmCi0KICNpZiAhZGVmaW5lZChFTkFCTEVfRFJBR19TVVBQT1JUKQogI2RlZmluZSBF
TkFCTEVfRFJBR19TVVBQT1JUIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBjZTc3
YjM2NGMwNGU1YWI5MDk2ZmI2YjEyNGZiNmZhYTM2MzYwNTAwLi5hNTZmODkwMWE4NDFlZDczYTEx
ZDhhNTNhYTg5ZWU1M2QzOTNiZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMzAyNywxNiAr
MzAyNyw2IEBAIF9fWk43V2ViQ29yZTI3U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlMjRzZXRI
b3Jpem9udGFsU25hcE9mZnNldHNFUktOM1dURjZWZWN0CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50
MTZhbm5vdGF0ZWRSZWdpb25zRXYKICNlbmRpZgogCi0jaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FD
SEUpCi1fX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMjNmbHVzaENhY2hlZEltYWdlc1RvRGlza0V2
Ci1fX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjIxYWxsb3dUb0JlTWVtb3J5TWFwcGVkRXYKLV9f
Wk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyMzVzZXRNZW1vcnlNYXBwZWROb3RpZmljYXRpb25DYWxs
YmFja0VQRnZOM1dURjEwUGFzc1JlZlB0cklTMF9FRU5TMF8xNkNvbXBsZXRpb25TdGF0dXNFUHZF
UzVfCi1fX1pON1dlYkNvcmUxNGRpc2tJbWFnZUNhY2hlRXYKLV9fWk5LN1dlYkNvcmUxMlNoYXJl
ZEJ1ZmZlcjI1aXNBbGxvd2VkVG9CZU1lbW9yeU1hcHBlZEV2Ci1fX1pOSzdXZWJDb3JlMTJTaGFy
ZWRCdWZmZXIzMm1lbW9yeU1hcHBlZE5vdGlmaWNhdGlvbkNhbGxiYWNrRXYKLV9fWk5LN1dlYkNv
cmUxMlNoYXJlZEJ1ZmZlcjM2bWVtb3J5TWFwcGVkTm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhRXYK
LSNlbmRpZgotCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIF9fWk43V2ViQ29yZTEyRXZlbnRI
YW5kbGVyMTdkcmFnU291cmNlRW5kZWRBdEVSS05TXzE4UGxhdGZvcm1Nb3VzZUV2ZW50RU5TXzEz
RHJhZ09wZXJhdGlvbkUKIF9fWk43V2ViQ29yZTE0RHJhZ0NvbnRyb2xsZXIxMGRyYWdFeGl0ZWRF
Uk5TXzhEcmFnRGF0YUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBhOTkzMzQ3YTRjMjkxODZhYTBkMTMzMzRiYTg1ZWFlZmI2ZWZj
MmM0Li5jMDc1OTcwOTA5Y2RmMGE2OGU0NzNjMDFhYjcyNDNjMjFjMGI5MTYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzgw
LDcgKzM3ODAsNiBAQAogCQlBNUFCQjc4NzEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRl
cmF0b3JQb29sSUNVLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNV
LmggKi87IH07CiAJCUE1QUZCMzRGMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBRkIzNEQxMTUx
NTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAgKi87IH07CiAJCUE1QUZCMzUwMTE1MTUxQTcw
MEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1QUZCMzRFMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNUM1NjZBQjEy
N0EzQUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QzU2NkFBMTI3QTNBQUQwMEU4QTNG
RiAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1REVCREEzMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJL
aXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1REVCRDlGMTZGQjkwODcwMDgzNkZFMCAvKiBX
ZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcCAqLzsgfTsKIAkJQTVERUJE
QTQxNkZCOTA4NzAwODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1REVC
REEwMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2
ZW50LmggKi87IH07CiAJCUE1RTYxNjczMTg5NDU4MUYwMDlBREY1MCAvKiBXZWJEZWJ1Z2dlckFn
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
RTYxNjcxMTg5NDU4MUYwMDlBREY1MCAvKiBXZWJEZWJ1Z2dlckFnZW50LmNwcCAqLzsgfTsKQEAg
LTM3ODgsOCArMzc4Nyw2IEBACiAJCUE1RjM2RDNBMThGNzU4NzIwMDU0QzAyNCAvKiBQYWdlU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTVGMzZEMzgxOEY3NTg3MjAwNTRDMDI0IC8qIFBhZ2VTY3JpcHREZWJ1Z1NlcnZl
ci5jcHAgKi87IH07CiAJCUE1RjM2RDNCMThGNzU4NzIwMDU0QzAyNCAvKiBQYWdlU2NyaXB0RGVi
dWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1RjM2RDM5MThGNzU4NzIwMDU0QzAyNCAvKiBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCAqLzsg
fTsKIAkJQTVGNkUxNkIxMzJFRDQ2RTAwOEVEQUUzIC8qIEF1dG9jYXBpdGFsaXplLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RjZFMTZDMTMyRUQ0
NkUwMDhFREFFMyAvKiBBdXRvY2FwaXRhbGl6ZS5jcHAgKi87IH07Ci0JCUE1RjlFRjcwMTI2Njc1
MEQwMEZDQ0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RjlFRjZFMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNr
SW1hZ2VDYWNoZUlPUy5tbSAqLzsgfTsKLQkJQTVGOUVGNzExMjY2NzUwRDAwRkNDRjUyIC8qIERp
c2tJbWFnZUNhY2hlSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNUY5RUY2RjEyNjY3NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNjE0OEE2
MjEyRTQxRDNBMDA0NEE3ODQgLyogRE9NSFRNTEtleWdlbkVsZW1lbnRJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTYxNDhBNjExMkU0MUQz
QTAwNDRBNzg0IC8qIERPTUhUTUxLZXlnZW5FbGVtZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJQTYx
NDhBNjcxMkU0MUQ5NDAwNDRBNzg0IC8qIERPTUhUTUxLZXlnZW5FbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNjE0OEE2NTEyRTQxRDk0MDA0
NEE3ODQgLyogRE9NSFRNTEtleWdlbkVsZW1lbnQuaCAqLzsgfTsKIAkJQTYxNDhBNjgxMkU0MUQ5
NDAwNDRBNzg0IC8qIERPTUhUTUxLZXlnZW5FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTYxNDhBNjYxMkU0MUQ5NDAwNDRBNzg0IC8qIERP
TUhUTUxLZXlnZW5FbGVtZW50Lm1tICovOyB9OwpAQCAtMTA5MzIsNyArMTA5MjksNiBAQAogCQlB
NUFCQjc4NjEzQjkwNEJDMDBGMTk3RTMgLyogTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUFGQjM0RDExNTE1MUE3MDBCMDQ1Q0Ig
LyogU3RlcFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
ZXBSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUZCMzRFMTE1MTUx
QTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3RlcFJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1QzU2NkFBMTI3
QTNBQUQwMEU4QTNGRiAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNUM5NzRDRjExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRD
b2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZXlFdmVudENvY29hLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1Qzk3NEQwMTE0ODVGRjEwMDY2RjJBQiAv
KiBLZXlFdmVudENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gS2V5RXZlbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVERUJE
OUYxNkZCOTA4NzAwODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZl
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0UGxheWJh
Y2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMDk0Myw4ICsxMDkzOSw2IEBACiAJCUE1RjM2RDM4MThGNzU4NzIwMDU0QzAyNCAvKiBQ
YWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTVGMzZEMzkxOEY3NTg3MjAwNTRDMDI0IC8qIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVGNkUxNkMxMzJFRDQ2RTAwOEVEQUUz
IC8qIEF1dG9jYXBpdGFsaXplLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEF1dG9jYXBpdGFsaXplLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTVG
OUVGNkUxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGlza0ltYWdlQ2FjaGVJT1MubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1RjlFRjZGMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNr
SW1hZ2VDYWNoZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNrSW1h
Z2VDYWNoZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNjE0OEE2MTEyRTQx
RDNBMDA0NEE3ODQgLyogRE9NSFRNTEtleWdlbkVsZW1lbnRJbnRlcm5hbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MS2V5Z2VuRWxlbWVudEludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE2MTQ4QTY1MTJFNDFEOTQwMDQ0QTc4NCAvKiBE
T01IVE1MS2V5Z2VuRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01IVE1MS2V5Z2VuRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNjE0
OEE2NjEyRTQxRDk0MDA0NEE3ODQgLyogRE9NSFRNTEtleWdlbkVsZW1lbnQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MS2V5Z2VuRWxlbWVudC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNTM4LDE2ICsyMTUzMiw2IEBACiAJCQlw
YXRoID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJQ0U3OUQ2ODYx
N0YyMjBFRDAwODE1QzAwIC8qIGlvcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hp
bGRyZW4gPSAoCi0JCQkJQTVDNTY2QUExMjdBM0FBRDAwRThBM0ZGIC8qIERpc2tJbWFnZUNhY2hl
Q2xpZW50SU9TLmggKi8sCi0JCQkJQTVGOUVGNkYxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFn
ZUNhY2hlSU9TLmggKi8sCi0JCQkJQTVGOUVGNkUxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFn
ZUNhY2hlSU9TLm1tICovLAotCQkJKTsKLQkJCXBhdGggPSBpb3M7Ci0JCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwotCQl9OwogCQlERjlBRkQ2RjEzRkMzMUIwMDAxNUZFQjcgLyogb2JqYyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yMzY4Nyw4ICsyMzY3
MSw2IEBACiAJCQkJRDBCRDRGNUQxNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJ
T1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNjAyM0YwMTUzMkM0MEMwMEQ1MEZGNCAvKiBEaWN0
aW9uYXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlGREFGMTk5OTE1MTNEMTMxMDA4REIwQzMgLyog
RGlyZWN0Q29udm9sdmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNUM1NjZBQjEyN0EzQUFEMDBF
OEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1
RjlFRjcxMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlPUy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDlBRjJENjkxNDQzNUQwNTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ4QzREQzAxNDI4MjIyQzAwMjZDRTcyIC8qIERpc3Bs
YXlTbGVlcERpc2FibGVyQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDkxMTJCMDI2
RjcwMEMxQTM1OSAvKiBEaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzMzOSw3ICsyNzMy
MSw2IEBACiAJCQkJRDBCRDRGNUMxNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJ
T1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEyRDY3QjExNTM1NjkxRjAwNTYzRDBEIC8qIERp
Y3Rpb25hcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkRBRjE5OTgxNTEzRDEzMTAwOERCMEMz
IC8qIERpcmVjdENvbnZvbHZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBNUY5RUY3MDEyNjY3
NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk0
OUZDN0E1MDE0NDRBRjVGMDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGOTdBNjU4MTU1REE4MUUwMEZBREQ0QyAvKiBEaXNwbGF5UmVmcmVz
aE1vbml0b3JJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk0OUFGMkQ2QzE0NDM1RDIxMDAxNkE3
ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUJ1ZmZlci5jcHAKaW5kZXggYmUwMjQ3YTViZjRlZjJkNWVi
OTZkMDg4NmY0N2I0M2U3MmE5MGY4OC4uYTZiYThjZTU1ZDEyN2RlM2E2MjZiMTM3NTU5ODkyMGJj
NzYyNjM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VCdWZmZXIuY3BwCkBAIC0x
MTksMTIgKzExOSw0IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IFJlc291cmNlQnVmZmVyOjpjcmVh
dGVDRkRhdGEoKQogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKLWJv
b2wgUmVzb3VyY2VCdWZmZXI6OmlzVXNpbmdEaXNrSW1hZ2VDYWNoZSgpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKG1fc2hhcmVkQnVmZmVyKTsKLSAgICByZXR1cm4gbV9zaGFyZWRCdWZmZXIgJiYgbV9z
aGFyZWRCdWZmZXItPmlzQWxsb3dlZFRvQmVNZW1vcnlNYXBwZWQoKTsKLX0KLSNlbmRpZgotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUJ1ZmZlci5o
CmluZGV4IDllZmVhNmYwYjk4ZTBmY2YwNWEwNTI4MGY1ZjA2ZTliMmE1YTVlYTEuLmRlMTIxZTM4
MGViYzIzOWQyMGJjY2I3ODYxMDIyMjExNmYxOTk3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUJ1ZmZlci5oCkBAIC03NCw5ICs3NCw2IEBAIHB1YmxpYzoKICNpZiBVU0UoQ0YpCiAg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCk7CiAjZW5kaWYKLSNpZiBFTkFC
TEUoRElTS19JTUFHRV9DQUNIRSkKLSAgICBib29sIGlzVXNpbmdEaXNrSW1hZ2VDYWNoZSgpIGNv
bnN0OwotI2VuZGlmCiAKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUJ1
ZmZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5k
ZXggZjQ5ZDdhZDA0ZjgyMmE3ZWMwZjI4ZDIxYTg5OTFjYzJlNzQ4MjEzOS4uMzI3YWUzZmMwOGNh
Mzk3ZjNjZDRiYWYwMjQwNDIyY2ViMTFhZTcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC01NiwxMCArNTYsNiBAQAogI2luY2x1ZGUgIlBERkRv
Y3VtZW50SW1hZ2UuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCi0j
aW5jbHVkZSAiRGlza0ltYWdlQ2FjaGVJT1MuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCwgU2Vzc2lvbklEIHNlc3Npb25JRCkKQEAgLTUwNSw0MCArNTAxLDYgQEAg
Ym9vbCBDYWNoZWRJbWFnZTo6Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyKQogICAgIHJldHVybiBpbWFnZS0+Y3VycmVudEZyYW1lS25vd25U
b0JlT3BhcXVlKCk7CiB9CiAKLSNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKLWJvb2wgQ2Fj
aGVkSW1hZ2U6OmNhblVzZURpc2tJbWFnZUNhY2hlKCkgY29uc3QKLXsKLSAgICBpZiAoaXNMb2Fk
aW5nKCkgfHwgZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoIW1fZGF0YSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKG1fZGF0YS0+c2l6
ZSgpIDwgZGlza0ltYWdlQ2FjaGUoKS5taW5pbXVtSW1hZ2VTaXplKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIC8vICJDYWNoZS1Db250cm9sOiBuby1zdG9yZSIgcmVzb3VyY2VzIG1h
eSBiZSBtYXJrZWQgYXMgc3VjaCBiZWNhdXNlIHRoZXkgbWF5Ci0gICAgLy8gY29udGFpbiBzZW5z
aXRpdmUgaW5mb3JtYXRpb24uIFdlIHNob3VsZCBub3Qgd3JpdGUgdGhlc2UgcmVzb3VyY2VzIHRv
IGRpc2suCi0gICAgaWYgKG1fcmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIFRlc3Rpbmcgc2hvd3MgdGhhdCBQREYg
aW1hZ2VzIGRpZCBub3Qgd29yayB3aGVuIG1lbW9yeSBtYXBwZWQuCi0gICAgLy8gSG93ZXZlciwg
U1ZHIGltYWdlcyBhbmQgQml0bWFwIGltYWdlcyB3ZXJlIGZpbmUuIFNlZToKLSAgICAvLyA8cmRh
cjovL3Byb2JsZW0vODU5MTgzND4gRGlzayBJbWFnZSBDYWNoZSBzaG91bGQgc3VwcG9ydCBQREYg
SW1hZ2VzCi0gICAgaWYgKG1fcmVzcG9uc2UubWltZVR5cGUoKSA9PSAiYXBwbGljYXRpb24vcGRm
IikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQg
Q2FjaGVkSW1hZ2U6OnVzZURpc2tJbWFnZUNhY2hlKCkKLXsKLSAgICBBU1NFUlQoY2FuVXNlRGlz
a0ltYWdlQ2FjaGUoKSk7Ci0gICAgQVNTRVJUKCFpc1VzaW5nRGlza0ltYWdlQ2FjaGUoKSk7Ci0g
ICAgbV9kYXRhLT5zaGFyZWRCdWZmZXIoKS0+YWxsb3dUb0JlTWVtb3J5TWFwcGVkKCk7Ci19Ci0j
ZW5kaWYKLQogYm9vbCBDYWNoZWRJbWFnZTo6aXNPcmlnaW5DbGVhbihTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgaWYgKCFpbWFnZSgpLT5oYXNTaW5nbGVTZWN1cml0eU9y
aWdpbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA5
OWY1YTg2NzVkNzljNzExZWJiZWUwY2NiNmUzNWUxZjRlNGRjZDYwLi5jYjRlMmEwMjQ5ZTk4MTli
NmYyYzU3Y2JmMWI3ZjcxOTYyYjY5Y2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaApAQCAtODUsMTEgKzg1LDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNNYW51
YWxseUNhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNYW51YWxseUNhY2hlZDsgfQogICAgIHZp
cnR1YWwgYm9vbCBtdXN0UmV2YWxpZGF0ZUR1ZVRvQ2FjaGVIZWFkZXJzKENhY2hlUG9saWN5KSBj
b25zdDsKIAotI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQotICAgIHZpcnR1YWwgYm9vbCBj
YW5Vc2VEaXNrSW1hZ2VDYWNoZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1
c2VEaXNrSW1hZ2VDYWNoZSgpIG92ZXJyaWRlOwotI2VuZGlmCi0KICAgICBib29sIGlzT3JpZ2lu
Q2xlYW4oU2VjdXJpdHlPcmlnaW4qKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGMzZTA5MjkzMWM5ZDdiOWY2MTQ2
MGM4Yzc3MmRlYjUyNjMzZmRkODIuLjY4NThlYTRmMjk1MjA2NDU5NjUzYjM1N2U5NTgyNGIyZWYx
MGRiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcApAQCAtODUwLDEzICs4NTAsNiBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNv
dXJjZUNhbGxiYWNrOjp0aW1lckZpcmVkKFRpbWVyPENhY2hlZFJlc291cmNlQ2FsbAogICAgIG1f
cmVzb3VyY2UtPmRpZEFkZENsaWVudChtX2NsaWVudCk7CiB9CiAKLSNpZiBFTkFCTEUoRElTS19J
TUFHRV9DQUNIRSkKLWJvb2wgQ2FjaGVkUmVzb3VyY2U6OmlzVXNpbmdEaXNrSW1hZ2VDYWNoZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGF0YSAmJiBtX2RhdGEtPmlzVXNpbmdEaXNrSW1hZ2VD
YWNoZSgpOwotfQotI2VuZGlmCi0KICNpZiBVU0UoRk9VTkRBVElPTikKIHZvaWQgQ2FjaGVkUmVz
b3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbmV3
QnVmZmVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
aAppbmRleCA1NTdhMjBiNzAwNzg5N2ZkYTY3M2IxY2I3ZmZlM2QyNWM1Y2FmMTRmLi5iY2IyNjY0
OTc1OTRlMzU4MzczMGY5YTczMzE0ZjlhNzM5NmViMDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMjQ3LDEyICsyNDcsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRMb2FkRmluaXNoVGltZShkb3VibGUgZmluaXNoVGltZSkgeyBtX2xvYWRG
aW5pc2hUaW1lID0gZmluaXNoVGltZTsgfQogICAgIGRvdWJsZSBsb2FkRmluaXNoVGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9hZEZpbmlzaFRpbWU7IH0KIAotI2lmIEVOQUJMRShESVNLX0lNQUdF
X0NBQ0hFKQotICAgIGJvb2wgaXNVc2luZ0Rpc2tJbWFnZUNhY2hlKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIGNhblVzZURpc2tJbWFnZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgdXNlRGlza0ltYWdlQ2FjaGUoKSB7IEFTU0VSVChjYW5Vc2VEaXNr
SW1hZ2VDYWNoZSgpKTsgfQotI2VuZGlmCi0KICAgICB2aXJ0dWFsIGJvb2wgY2FuUmV1c2UoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAjaWYgVVNFKEZP
VU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApp
bmRleCAzODA0MTM0MGQ1YTUzMWNkZmVlNzYwYzQyZjQwYjFkY2UwMTIxMWI0Li45ZmZiOTViOThl
M2RkNmJlYjI1YjU2NWVmZjI3NDc1ODQwZWVmMmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTQ5LDExICs0OSw2IEBACiAjaW5jbHVkZSA8d3Rm
L1RlbXBvcmFyeUNoYW5nZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lm
IEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQotI2luY2x1ZGUgIkRpc2tJbWFnZUNhY2hlSU9TLmgi
Ci0jaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBjb25zdCBpbnQgY0RlZmF1bHRDYWNoZUNhcGFjaXR5ID0gODE5MiAqIDEw
MjQ7CkBAIC00NDgsNDUgKzQ0Myw2IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnBydW5lRGVhZFJlc291
cmNlc1RvU2l6ZSh1bnNpZ25lZCB0YXJnZXRTaXplKQogICAgIH0KIH0KIAotI2lmIEVOQUJMRShE
SVNLX0lNQUdFX0NBQ0hFKQotdm9pZCBNZW1vcnlDYWNoZTo6Zmx1c2hDYWNoZWRJbWFnZXNUb0Rp
c2soKQotewotICAgIGlmICghZGlza0ltYWdlQ2FjaGUoKS5pc0VuYWJsZWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIGRvdWJsZSBzdGFydCA9IFdURjo6Y3VycmVu
dFRpbWVNUygpOwotICAgIHVuc2lnbmVkIHJlc291cmNlQ291bnQgPSAwOwotICAgIHVuc2lnbmVk
IGNhY2hlZFNpemUgPSAwOwotI2VuZGlmCi0KLSAgICBmb3IgKHNpemVfdCBpID0gbV9hbGxSZXNv
dXJjZXMuc2l6ZSgpOyBpOyApIHsKLSAgICAgICAgLS1pOwotICAgICAgICBDYWNoZWRSZXNvdXJj
ZSogY3VycmVudCA9IG1fYWxsUmVzb3VyY2VzW2ldLm1fdGFpbDsKLSAgICAgICAgd2hpbGUgKGN1
cnJlbnQpIHsKLSAgICAgICAgICAgIENhY2hlZFJlc291cmNlKiBwcmV2aW91cyA9IGN1cnJlbnQt
Pm1fcHJldkluQWxsUmVzb3VyY2VzTGlzdDsKLQotICAgICAgICAgICAgaWYgKCFjdXJyZW50LT5p
c1VzaW5nRGlza0ltYWdlQ2FjaGUoKSAmJiBjdXJyZW50LT5jYW5Vc2VEaXNrSW1hZ2VDYWNoZSgp
KSB7Ci0gICAgICAgICAgICAgICAgY3VycmVudC0+dXNlRGlza0ltYWdlQ2FjaGUoKTsKLSAgICAg
ICAgICAgICAgICBjdXJyZW50LT5kZXN0cm95RGVjb2RlZERhdGEoKTsKLSNpZm5kZWYgTkRFQlVH
Ci0gICAgICAgICAgICAgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiQ2FjaGU6OmRpc2tDYWNoZVJl
c291cmNlcygpOiBhdHRlbXB0aW5nIHRvIHNhdmUgKCVkKSBieXRlcyIsIGN1cnJlbnQtPnJlc291
cmNlQnVmZmVyKCktPnNoYXJlZEJ1ZmZlcigpLT5zaXplKCkpOwotICAgICAgICAgICAgICAgICsr
cmVzb3VyY2VDb3VudDsKLSAgICAgICAgICAgICAgICBjYWNoZWRTaXplICs9IGN1cnJlbnQtPnJl
c291cmNlQnVmZmVyKCktPnNoYXJlZEJ1ZmZlcigpLT5zaXplKCk7Ci0jZW5kaWYKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgY3VycmVudCA9IHByZXZpb3VzOwotICAgICAgICB9Ci0gICAg
fQotCi0jaWZuZGVmIE5ERUJVRwotICAgIGRvdWJsZSBlbmQgPSBXVEY6OmN1cnJlbnRUaW1lTVMo
KTsKLSAgICBMT0coRGlza0ltYWdlQ2FjaGUsICJEaXNrSW1hZ2VDYWNoZTogdG9vayAoJWYpIG1z
IHRvIGNhY2hlICglZCkgYnl0ZXMgZm9yICglZCkgcmVzb3VyY2VzIiwgZW5kIC0gc3RhcnQsIGNh
Y2hlZFNpemUsIHJlc291cmNlQ291bnQpOwotI2VuZGlmCi19Ci0jZW5kaWYgLy8gRU5BQkxFKERJ
U0tfSU1BR0VfQ0FDSEUpCi0KIHZvaWQgTWVtb3J5Q2FjaGU6OnNldENhcGFjaXRpZXModW5zaWdu
ZWQgbWluRGVhZEJ5dGVzLCB1bnNpZ25lZCBtYXhEZWFkQnl0ZXMsIHVuc2lnbmVkIHRvdGFsQnl0
ZXMpCiB7CiAgICAgQVNTRVJUKG1pbkRlYWRCeXRlcyA8PSBtYXhEZWFkQnl0ZXMpOwpAQCAtODQ1
LDEwICs4MDEsNiBAQCB2b2lkIE1lbW9yeUNhY2hlOjpUeXBlU3RhdGlzdGljOjphZGRSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZSogbykKICAgICBzaXplICs9IG8tPnNpemUoKTsKICAgICBsaXZlU2l6
ZSArPSBvLT5oYXNDbGllbnRzKCkgPyBvLT5zaXplKCkgOiAwOwogICAgIGRlY29kZWRTaXplICs9
IG8tPmRlY29kZWRTaXplKCk7Ci0jaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCi0gICAgLy8g
T25seSB0aGUgZGF0YSBpbnNpZGUgdGhlIHJlc291cmNlIHdhcyBtYXBwZWQsIG5vdCB0aGUgZW50
aXJlIHJlc291cmNlLgotICAgIG1hcHBlZFNpemUgKz0gby0+aXNVc2luZ0Rpc2tJbWFnZUNhY2hl
KCkgPyBvLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaGFyZWRCdWZmZXIoKS0+c2l6ZSgpIDogMDsKLSNl
bmRpZgogfQogCiBNZW1vcnlDYWNoZTo6U3RhdGlzdGljcyBNZW1vcnlDYWNoZTo6Z2V0U3RhdGlz
dGljcygpCkBAIC05NDQsMTUgKzg5Niw5IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnBydW5lVG9QZXJj
ZW50YWdlKGZsb2F0IHRhcmdldFBlcmNlbnRMaXZlKQogdm9pZCBNZW1vcnlDYWNoZTo6ZHVtcFN0
YXRzKCkKIHsKICAgICBTdGF0aXN0aWNzIHMgPSBnZXRTdGF0aXN0aWNzKCk7Ci0jaWYgRU5BQkxF
KERJU0tfSU1BR0VfQ0FDSEUpCi0gICAgcHJpbnRmKCIlLTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAl
LTEzcyAlLTEzcyAlLTEzc1xuIiwgIiIsICJDb3VudCIsICJTaXplIiwgIkxpdmVTaXplIiwgIkRl
Y29kZWRTaXplIiwgIk1hcHBlZCIsICJcIlJlYWxcIiIpOwotICAgIHByaW50ZigiJS0xM3MgJS0x
M3MgJS0xM3MgJS0xM3MgJS0xM3MgJS0xM3MgJS0xM3NcbiIsICItLS0tLS0tLS0tLS0tIiwgIi0t
LS0tLS0tLS0tLS0iLCAiLS0tLS0tLS0tLS0tLSIsICItLS0tLS0tLS0tLS0tIiwgIi0tLS0tLS0t
LS0tLS0iLCAiLS0tLS0tLS0tLS0tLSIsICItLS0tLS0tLS0tLS0tIik7Ci0gICAgcHJpbnRmKCIl
LTEzcyAlMTNkICUxM2QgJTEzZCAlMTNkICUxM2QgJTEzZFxuIiwgIkltYWdlcyIsIHMuaW1hZ2Vz
LmNvdW50LCBzLmltYWdlcy5zaXplLCBzLmltYWdlcy5saXZlU2l6ZSwgcy5pbWFnZXMuZGVjb2Rl
ZFNpemUsIHMuaW1hZ2VzLm1hcHBlZFNpemUsIHMuaW1hZ2VzLnNpemUgLSBzLmltYWdlcy5tYXBw
ZWRTaXplKTsKLSNlbHNlCiAgICAgcHJpbnRmKCIlLTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAlLTEz
c1xuIiwgIiIsICJDb3VudCIsICJTaXplIiwgIkxpdmVTaXplIiwgIkRlY29kZWRTaXplIik7CiAg
ICAgcHJpbnRmKCIlLTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAlLTEzc1xuIiwgIi0tLS0tLS0tLS0t
LS0iLCAiLS0tLS0tLS0tLS0tLSIsICItLS0tLS0tLS0tLS0tIiwgIi0tLS0tLS0tLS0tLS0iLCAi
LS0tLS0tLS0tLS0tLSIpOwogICAgIHByaW50ZigiJS0xM3MgJTEzZCAlMTNkICUxM2QgJTEzZFxu
IiwgIkltYWdlcyIsIHMuaW1hZ2VzLmNvdW50LCBzLmltYWdlcy5zaXplLCBzLmltYWdlcy5saXZl
U2l6ZSwgcy5pbWFnZXMuZGVjb2RlZFNpemUpOwotI2VuZGlmCiAgICAgcHJpbnRmKCIlLTEzcyAl
MTNkICUxM2QgJTEzZCAlMTNkXG4iLCAiQ1NTIiwgcy5jc3NTdHlsZVNoZWV0cy5jb3VudCwgcy5j
c3NTdHlsZVNoZWV0cy5zaXplLCBzLmNzc1N0eWxlU2hlZXRzLmxpdmVTaXplLCBzLmNzc1N0eWxl
U2hlZXRzLmRlY29kZWRTaXplKTsKICNpZiBFTkFCTEUoWFNMVCkKICAgICBwcmludGYoIiUtMTNz
ICUxM2QgJTEzZCAlMTNkICUxM2RcbiIsICJYU0wiLCBzLnhzbFN0eWxlU2hlZXRzLmNvdW50LCBz
LnhzbFN0eWxlU2hlZXRzLnNpemUsIHMueHNsU3R5bGVTaGVldHMubGl2ZVNpemUsIHMueHNsU3R5
bGVTaGVldHMuZGVjb2RlZFNpemUpOwpAQCAtOTY0LDExICs5MTAsNyBAQCB2b2lkIE1lbW9yeUNh
Y2hlOjpkdW1wU3RhdHMoKQogCiB2b2lkIE1lbW9yeUNhY2hlOjpkdW1wTFJVTGlzdHMoYm9vbCBp
bmNsdWRlTGl2ZSkgY29uc3QKIHsKLSNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKLSAgICBw
cmludGYoIkxSVS1TUCBsaXN0cyBpbiBldmljdGlvbiBvcmRlciAoS2lsb2J5dGVzIGRlY29kZWQs
IEtpbG9ieXRlcyBlbmNvZGVkLCBBY2Nlc3MgY291bnQsIFJlZmVyZW5jZWQsIGlzTWVtb3J5TWFw
cGVkKTpcbiIpOwotI2Vsc2UKICAgICBwcmludGYoIkxSVS1TUCBsaXN0cyBpbiBldmljdGlvbiBv
cmRlciAoS2lsb2J5dGVzIGRlY29kZWQsIEtpbG9ieXRlcyBlbmNvZGVkLCBBY2Nlc3MgY291bnQs
IFJlZmVyZW5jZWQpOlxuIik7Ci0jZW5kaWYKIAogICAgIGludCBzaXplID0gbV9hbGxSZXNvdXJj
ZXMuc2l6ZSgpOwogICAgIGZvciAoaW50IGkgPSBzaXplIC0gMTsgaSA+PSAwOyBpLS0pIHsKQEAg
LTk3NywxMSArOTE5LDcgQEAgdm9pZCBNZW1vcnlDYWNoZTo6ZHVtcExSVUxpc3RzKGJvb2wgaW5j
bHVkZUxpdmUpIGNvbnN0CiAgICAgICAgIHdoaWxlIChjdXJyZW50KSB7CiAgICAgICAgICAgICBD
YWNoZWRSZXNvdXJjZSogcHJldiA9IGN1cnJlbnQtPm1fcHJldkluQWxsUmVzb3VyY2VzTGlzdDsK
ICAgICAgICAgICAgIGlmIChpbmNsdWRlTGl2ZSB8fCAhY3VycmVudC0+aGFzQ2xpZW50cygpKQot
I2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQotICAgICAgICAgICAgICAgIHByaW50ZigiKCUu
MWZLLCAlLjFmSywgJXVBLCAlZFIsICVkKTsgIiwgY3VycmVudC0+ZGVjb2RlZFNpemUoKSAvIDEw
MjQuMGYsIChjdXJyZW50LT5lbmNvZGVkU2l6ZSgpICsgY3VycmVudC0+b3ZlcmhlYWRTaXplKCkp
IC8gMTAyNC4wZiwgY3VycmVudC0+YWNjZXNzQ291bnQoKSwgY3VycmVudC0+aGFzQ2xpZW50cygp
LCBjdXJyZW50LT5pc1VzaW5nRGlza0ltYWdlQ2FjaGUoKSk7Ci0jZWxzZQogICAgICAgICAgICAg
ICAgIHByaW50ZigiKCUuMWZLLCAlLjFmSywgJXVBLCAlZFIpOyAiLCBjdXJyZW50LT5kZWNvZGVk
U2l6ZSgpIC8gMTAyNC4wZiwgKGN1cnJlbnQtPmVuY29kZWRTaXplKCkgKyBjdXJyZW50LT5vdmVy
aGVhZFNpemUoKSkgLyAxMDI0LjBmLCBjdXJyZW50LT5hY2Nlc3NDb3VudCgpLCBjdXJyZW50LT5o
YXNDbGllbnRzKCkpOwotI2VuZGlmCiAKICAgICAgICAgICAgIGN1cnJlbnQgPSBwcmV2OwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IDFi
NzdmZjNjNDJkM2E0M2VjNDlmY2JlMTYxYzg0ZmI1MGQxMmFjZjEuLmQzMmQ3NzRkMjRiZjkyYTAz
ZTI1MjFkZWZjM2IxYTViNzc4OGY0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oCkBAIC04NSwxOSArODUsMTMgQEAgcHVibGljOgogICAgICAgICBpbnQgc2l6
ZTsKICAgICAgICAgaW50IGxpdmVTaXplOwogICAgICAgICBpbnQgZGVjb2RlZFNpemU7Ci0jaWYg
RU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCi0gICAgICAgIGludCBtYXBwZWRTaXplOwotI2VuZGlm
CiAKICAgICAgICAgVHlwZVN0YXRpc3RpYygpCiAgICAgICAgICAgICA6IGNvdW50KDApCiAgICAg
ICAgICAgICAsIHNpemUoMCkKICAgICAgICAgICAgICwgbGl2ZVNpemUoMCkKICAgICAgICAgICAg
ICwgZGVjb2RlZFNpemUoMCkKLSNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKLSAgICAgICAg
ICAgICwgbWFwcGVkU2l6ZSgwKQotI2VuZGlmCi0gICAgICAgIHsKKyAgICAgICAgeyAKICAgICAg
ICAgfQogCiAgICAgICAgIHZvaWQgYWRkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKQEAgLTE1
OCwxMCArMTUyLDYgQEAgcHVibGljOgogICAgIHZvaWQgYWRkVG9MaXZlUmVzb3VyY2VzU2l6ZShD
YWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgcmVtb3ZlRnJvbUxpdmVSZXNvdXJjZXNTaXplKENh
Y2hlZFJlc291cmNlKik7CiAKLSNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGZsdXNoQ2FjaGVkSW1hZ2VzVG9EaXNrKCk7IC8vIEZsdXNoIGVuY29k
ZWQgZGF0YSBmcm9tIHJlc291cmNlcyBzdGlsbCByZWZlcmVuY2VkIGJ5IHdlYiBwYWdlcy4KLSNl
bmRpZgotCiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlVXJsRnJvbUNhY2hlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgU2Vzc2lvbklEKTsKICAgICBzdGF0
aWMgdm9pZCByZW1vdmVSZXF1ZXN0RnJvbUNhY2hlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZXNzaW9uSUQpOwogICAgIHN0YXRpYyB2b2lkIHJlbW92
ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0Rpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0Rp
c2tJbWFnZUNhY2hlQ2xpZW50SU9TLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJl
OTEzNjM1ZTlmOWZmNDEyNDZmZTFiMTEyMDA1M2I1N2JlOWJkMWYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9E
aXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgRGlza0ltYWdlQ2FjaGVDbGllbnRJT1NfaAotI2RlZmluZSBE
aXNrSW1hZ2VDYWNoZUNsaWVudElPU19oCi0KLSNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkg
JiYgUExBVEZPUk0oSU9TKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBE
aXNrSW1hZ2VDYWNoZUNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPERpc2tJbWFnZUNhY2hlQ2xp
ZW50PiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RGlza0ltYWdlQ2FjaGVDbGllbnQoKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRGlza0ltYWdlQ2FjaGVEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJiBkaXJlY3RvcnkpID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKSAmJiBQTEFURk9STShJT1MpCi0KLSNl
bmRpZiAvLyBEaXNrSW1hZ2VDYWNoZUNsaWVudElPU19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0Rpc2tJbWFnZUNhY2hlSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0Rpc2tJbWFnZUNhY2hlSU9TLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDQ1ZTE5OTkwMDZhNjZiYjE5NmQ3YTQ4YjBmY2JjOTlmYTE3ODlmM2EuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9EaXNrSW1hZ2VDYWNoZUlPUy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIERpc2tJbWFnZUNhY2hlSU9TX2gKLSNkZWZpbmUgRGlza0ltYWdl
Q2FjaGVJT1NfaAotCi0jaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpICYmIFBMQVRGT1JNKElP
UykKLQotI2luY2x1ZGUgIkRpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmgiCi0jaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotCi10eXBlZGVmIHVuc2lnbmVkIERpc2tJbWFnZUNhY2hlSWQ7Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2hhcmVkQnVmZmVyOwotCi0vLyBHbG9iYWwgZGlzayBp
bWFnZSBjYWNoZSBvYmplY3QuCi1jbGFzcyBEaXNrSW1hZ2VDYWNoZSB7Ci0gICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoRGlza0ltYWdlQ2FjaGUpOwotcHJpdmF0ZToKLQotICAgIC8vIExpZmV0aW1l
IG9mIHRoaXMgRW50cnkgYW5kIHRoZSBTaGFyZWRCdWZmZXIgaXQgd3JhcHMgaXMgbWFuYWdlZCBv
biB0aGUgV2ViVGhyZWFkLgotICAgIGNsYXNzIEVudHJ5IDogcHVibGljIFJlZkNvdW50ZWQ8RW50
cnk+IHsKLSAgICBwcml2YXRlOgotICAgICAgICBFbnRyeShTaGFyZWRCdWZmZXIqLCBEaXNrSW1h
Z2VDYWNoZUlkKTsKLQotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlz
a0ltYWdlQ2FjaGU6OkVudHJ5PiBjcmVhdGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIERpc2tJbWFn
ZUNhY2hlSWQgaWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RGlza0ltYWdlQ2FjaGU6OkVudHJ5KGJ1ZmZlciwgaWQpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IH5FbnRyeSgpOwotCi0gICAgICAgIHZvaWQgbWFwKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0gICAg
ICAgIHZvaWQgdW5tYXAoKTsKLSAgICAgICAgdm9pZCByZW1vdmVGaWxlKCk7Ci0gICAgICAgIHZv
aWQgY2xlYXJEYXRhV2l0aG91dE1hcHBpbmcoKTsKLQotICAgICAgICBEaXNrSW1hZ2VDYWNoZUlk
IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQotICAgICAgICB1bnNpZ25lZCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX21hcHBpbmc7IH0KLSAgICAgICAgYm9vbCBpc01hcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
bWFwcGluZyAhPSBudWxscHRyOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBib29sIG1hcElu
dGVybmFsKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci0gICAgICAgIGludCB3cml0ZVRvRmlsZUludGVy
bmFsKFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0KLSAgICAgICAgU2hhcmVkQnVmZmVyKiBtX2J1ZmZl
cjsKLSAgICAgICAgRGlza0ltYWdlQ2FjaGVJZCBtX2lkOwotICAgICAgICB1bnNpZ25lZCBtX3Np
emU7Ci0gICAgICAgIHZvaWQqIG1fbWFwcGluZzsKLSAgICAgICAgU3RyaW5nIG1fcGF0aDsKLSAg
ICB9OwotCi1wdWJsaWM6Ci0gICAgRGlza0ltYWdlQ2FjaGUoKTsKLSAgICBmcmllbmQgRGlza0lt
YWdlQ2FjaGUmIGRpc2tJbWFnZUNhY2hlKCk7Ci0gICAgc3RhdGljIGNvbnN0IERpc2tJbWFnZUNh
Y2hlSWQgaW52YWxpZERpc2tDYWNoZUlkID0gMDsKLQotICAgIC8vIFdyaXRlIG91dCBhbiBpdGVt
LgotICAgIERpc2tJbWFnZUNhY2hlSWQgd3JpdGVJdGVtKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
Pik7Ci0KLSAgICAvLyBSZW1vdmUgaXRlbS4KLSAgICB2b2lkIHJlbW92ZUl0ZW0oRGlza0ltYWdl
Q2FjaGVJZCk7Ci0KLSAgICAvLyBNYXBwaW5nIGZvciBhbiBpdGVtLgotICAgIHZvaWQqIGRhdGFG
b3JJdGVtKERpc2tJbWFnZUNhY2hlSWQpOwotCi0gICAgLy8gU2V0dXAgYSBjbGllbnQgZm9yIGNh
bGxiYWNrcy4KLSAgICB2b2lkIHNldENsaWVudChQYXNzUmVmUHRyPERpc2tJbWFnZUNhY2hlQ2xp
ZW50PiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KLQotICAgIGJvb2wgaXNFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9Ci0gICAgdm9pZCBzZXRFbmFibGVkKGJvb2wg
ZW5hYmxlZCkgeyBtX2VuYWJsZWQgPSBlbmFibGVkOyB9Ci0KLSAgICB1bnNpZ25lZCBtYXhpbXVt
Q2FjaGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtQ2FjaGVTaXplOyB9Ci0gICAgdm9p
ZCBzZXRNYXhpbXVtQ2FjaGVTaXplKHVuc2lnbmVkIG1heGltdW0pIHsgbV9tYXhpbXVtQ2FjaGVT
aXplID0gbWF4aW11bTsgfQotCi0gICAgdW5zaWduZWQgbWluaW11bUltYWdlU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWluaW11bUltYWdlU2l6ZTsgfQotICAgIHZvaWQgc2V0TWluaW11bUltYWdl
U2l6ZSh1bnNpZ25lZCBtaW5pbXVtKSB7IG1fbWluaW11bUltYWdlU2l6ZSA9IG1pbmltdW07IH0K
LQotICAgIGNvbnN0IFN0cmluZyYgY2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlRGlyZWN0b3J5OyB9Ci0KLSAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplOyB9Ci0gICAgYm9vbCBpc0Z1bGwoKSBjb25zdCB7IHJldHVybiBtX3NpemUgPj0gbV9tYXhp
bXVtQ2FjaGVTaXplOyB9Ci0KLXByaXZhdGU6Ci0gICAgfkRpc2tJbWFnZUNhY2hlKCkgeyB9Ci0K
LSAgICBib29sIGNyZWF0ZURpcmVjdG9yeUlmTmVlZGVkKCk7Ci0gICAgRGlza0ltYWdlQ2FjaGVJ
ZCBuZXh0QXZhaWxhYmxlSWQoKTsKLQotICAgIFN0cmluZyB0ZW1wb3JhcnlEaXJlY3RvcnkoKTsK
LSAgICBTdHJpbmcgdGVtcG9yYXJ5RmlsZSgpOwotCi0gICAgdm9pZCB1cGRhdGVTaXplKHVuc2ln
bmVkIGRlbHRhKTsKLQotICAgIGJvb2wgbV9lbmFibGVkOwotICAgIHVuc2lnbmVkIG1fc2l6ZTsK
LSAgICB1bnNpZ25lZCBtX21heGltdW1DYWNoZVNpemU7Ci0gICAgdW5zaWduZWQgbV9taW5pbXVt
SW1hZ2VTaXplOwotICAgIERpc2tJbWFnZUNhY2hlSWQgbV9uZXh0QXZhaWxhYmxlSWQ7Ci0gICAg
U3RyaW5nIG1fY2FjaGVEaXJlY3Rvcnk7Ci0KLSAgICBSZWZQdHI8RGlza0ltYWdlQ2FjaGVDbGll
bnQ+IG1fY2xpZW50OwotICAgIEhhc2hNYXA8RGlza0ltYWdlQ2FjaGVJZCwgUmVmUHRyPERpc2tJ
bWFnZUNhY2hlOjpFbnRyeT4+IG1fdGFibGU7Ci0KLSAgICBNdXRleCBtX211dGV4OwotfTsKLQot
Ly8gRnVuY3Rpb24gdG8gb2J0YWluIHRoZSBnbG9iYWwgZGlzayBpbWFnZSBjYWNoZS4KLVdFQkNP
UkVfRVhQT1JUIERpc2tJbWFnZUNhY2hlJiBkaXNrSW1hZ2VDYWNoZSgpOwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkgJiYgUExB
VEZPUk0oSU9TKQotCi0jZW5kaWYgLy8gRGlza0ltYWdlQ2FjaGVJT1NfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9EaXNrSW1hZ2VDYWNoZUlPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pb3MvRGlza0ltYWdlQ2FjaGVJT1MubW0KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDkxMGY2NGRjM2ZlNDIxYzU0ZjBhM2ZkNGNhMWJlNmRhNzg3ODZlMTguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9EaXNrSW1hZ2VDYWNoZUlPUy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDMy
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRp
c2tJbWFnZUNhY2hlSU9TLmgiCi0KLSNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkgJiYgUExB
VEZPUk0oSU9TKQotCi0jaW5jbHVkZSAiRmlsZVN5c3RlbUlPUy5oIgotI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlICJXZWJDb3JlVGhyZWFk
LmgiCi0jaW5jbHVkZSAiV2ViQ29yZVRocmVhZFJ1bi5oIgotI2luY2x1ZGUgPGVycm5vLmg+Ci0j
aW5jbHVkZSA8c3lzL21tYW4uaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRGlza0ltYWdlQ2FjaGUmIGRpc2tJbWFnZUNh
Y2hlKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RGlza0ltYWdlQ2FjaGU+IGNhY2hl
OwotICAgIHJldHVybiBjYWNoZTsKLX0KLQotRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpFbnRyeShT
aGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGlza0ltYWdlQ2FjaGVJZCBpZCkKLSAgICA6IG1fYnVmZmVy
KGJ1ZmZlcikKLSAgICAsIG1faWQoaWQpCi0gICAgLCBtX3NpemUoMCkKLSAgICAsIG1fbWFwcGlu
ZyhudWxscHRyKQotewotICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgQVNT
RVJUKFdlYlRocmVhZElzTG9ja2VkKCkpOwotICAgIEFTU0VSVChtX2J1ZmZlcik7Ci0gICAgbV9i
dWZmZXItPnJlZigpOwotfQotCi1EaXNrSW1hZ2VDYWNoZTo6RW50cnk6On5FbnRyeSgpCi17Ci0g
ICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNM
b2NrZWQoKSk7Ci0gICAgQVNTRVJUKCFtX2J1ZmZlcik7Ci0gICAgQVNTRVJUKCFtX21hcHBpbmcp
OwotfQotCi1ib29sIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6bWFwSW50ZXJuYWwoY29uc3QgU3Ry
aW5nJiBwYXRoKQotewotICAgIEFTU0VSVChtX2J1ZmZlcik7Ci0gICAgQVNTRVJUKCFtX21hcHBp
bmcpOwotCi0gICAgbV9wYXRoID0gcGF0aDsKLSAgICBtX3NpemUgPSBtX2J1ZmZlci0+c2l6ZSgp
OwotCi0gICAgLy8gT3BlbiB0aGUgZmlsZSBmb3IgcmVhZGluZyBhbmQgd3JpdGluZy4KLSAgICBQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gb3BlbihtX3BhdGgudXRmOCgpLmRhdGEoKSwgT19D
UkVBVCB8IE9fUkRXUiB8IE9fVFJVTkMsIHN0YXRpY19jYXN0PG1vZGVfdD4oMDYwMCkpOwotICAg
IGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGUgZmlsZS4KLSAgICBpZiAod3JpdGVUb0ZpbGVJbnRl
cm5hbChoYW5kbGUpID09IC0xKSB7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOwotICAgICAg
ICBkZWxldGVGaWxlKG1fcGF0aCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICAvLyBTZWVrIGJhY2sgdG8gdGhlIGJlZ2lubmluZy4KLSAgICBpZiAoc2Vla0ZpbGUoaGFuZGxl
LCAwLCBTZWVrRnJvbUJlZ2lubmluZykgPT0gLTEpIHsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRs
ZSk7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9wYXRoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIC8vIFBlcmZvcm0gbWVtb3J5IG1hcHBpbmcgZm9yIHJlYWRpbmcuCi0gICAg
Ly8gTk9URTogVGhpcyBtdXN0IG5vdCBjb25mbGljdCB3aXRoIHRoZSBvcGVuKCkgYWJvdmUsIHdo
aWNoIG11c3QgYWxzbyBvcGVuIGZvciByZWFkaW5nLgotICAgIG1fbWFwcGluZyA9IG1tYXAobnVs
bHB0ciwgbV9zaXplLCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsIGhhbmRsZSwgMCk7Ci0gICAgY2xv
c2VGaWxlKGhhbmRsZSk7Ci0gICAgaWYgKG1fbWFwcGluZyA9PSBNQVBfRkFJTEVEKSB7Ci0gICAg
ICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hlOiBtYXBwaW5nIGZhaWxlZCAo
JWQpOiAoJXMpIiwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIG1fbWFwcGluZyA9
IG51bGxwdHI7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9wYXRoKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIERpc2tJbWFnZUNhY2hl
OjpFbnRyeTo6bWFwKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBBU1NFUlQobV9idWZmZXIp
OwotICAgIEFTU0VSVCghbV9tYXBwaW5nKTsKLSAgICBEaXNrSW1hZ2VDYWNoZTo6RW50cnkqIHRo
aXNFbnRyeSA9IHRoaXM7Ci0KLSAgICBib29sIGZpbGVNYXBwZWQgPSBtYXBJbnRlcm5hbChwYXRo
KTsKLSAgICBpZiAoIWZpbGVNYXBwZWQpIHsKLSAgICAgICAgLy8gTm90aWZ5IHRoZSBidWZmZXIg
aW4gdGhlIGNhc2Ugb2YgYSBmYWlsZWQgbWFwcGluZy4KLSAgICAgICAgV2ViVGhyZWFkUnVuKF57
Ci0gICAgICAgICAgICBtX2J1ZmZlci0+ZmFpbGVkTWVtb3J5TWFwKCk7Ci0gICAgICAgICAgICBt
X2J1ZmZlci0+ZGVyZWYoKTsKLSAgICAgICAgICAgIG1fYnVmZmVyID0gMDsKLSAgICAgICAgICAg
IHRoaXNFbnRyeS0+ZGVyZWYoKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICAvLyBOb3RpZnkgdGhlIGJ1ZmZlciBpbiB0aGUgY2FzZSBvZiBhIHN1Y2Nlc3NmdWwg
bWFwcGluZy4KLSAgICAvLyBUaGlzIHNob3VsZCBoYXBwZW4gb24gdGhlIFdlYlRocmVhZCBiZWNh
dXNlIHRoaXMgaXMgYmVpbmcgcnVuCi0gICAgLy8gYXN5bmNocm9ub3VzbHkgaW5zaWRlIGEgZGlz
cGF0Y2ggcXVldWUuCi0gICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgIG1fYnVmZmVyLT5tYXJr
QXNNZW1vcnlNYXBwZWQoKTsKLSAgICAgICAgbV9idWZmZXItPmRlcmVmKCk7Ci0gICAgICAgIG1f
YnVmZmVyID0gMDsKLSAgICAgICAgdGhpc0VudHJ5LT5kZXJlZigpOwotICAgIH0pOwotfQotCi12
b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6dW5tYXAoKQotewotICAgIGlmICghbV9tYXBwaW5n
KSB7Ci0gICAgICAgIEFTU0VSVCghbV9zaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChtdW5tYXAobV9tYXBwaW5nLCBtX3NpemUpID09IC0xKQotICAgICAgICBMT0dfRVJS
T1IoIkRpc2tJbWFnZUNhY2hlOiBDb3VsZCBub3QgbXVubWFwIGEgbWVtb3J5IG1hcHBlZCBmaWxl
IHdpdGggaWQgKCVkKSIsIG1faWQpOwotCi0gICAgbV9tYXBwaW5nID0gbnVsbHB0cjsKLSAgICBt
X3NpemUgPSAwOwotfQotCi12b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6cmVtb3ZlRmlsZSgp
Ci17Ci0gICAgQVNTRVJUKCFtX21hcHBpbmcpOwotICAgIEFTU0VSVCghbV9zaXplKTsKLQotICAg
IGlmICghZGVsZXRlRmlsZShtX3BhdGgpKQotICAgICAgICBMT0dfRVJST1IoIkRpc2tJbWFnZUNh
Y2hlOiBDb3VsZCBub3QgZGVsZXRlIG1lbW9yeSBtYXBwZWQgZmlsZSAoJXMpIiwgbV9wYXRoLnV0
ZjgoKS5kYXRhKCkpOwotfQotCi12b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y2xlYXJEYXRh
V2l0aG91dE1hcHBpbmcoKQotewotICAgIEFTU0VSVCghbV9tYXBwaW5nKTsKLSAgICBBU1NFUlQo
bV9idWZmZXIpOwotICAgIG1fYnVmZmVyLT5kZXJlZigpOwotICAgIG1fYnVmZmVyID0gMDsKLX0K
LQotaW50IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6d3JpdGVUb0ZpbGVJbnRlcm5hbChQbGF0Zm9y
bUZpbGVIYW5kbGUgaGFuZGxlKQotewotICAgIEFTU0VSVChtX2J1ZmZlcik7Ci0gICAgaW50IHRv
dGFsQnl0ZXNXcml0dGVuID0gMDsKLQotICAgIGNvbnN0IGNoYXIqIHNlZ21lbnQgPSBudWxscHRy
OwotICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gMDsKLSAgICB3aGlsZSAodW5zaWduZWQgbGVuZ3Ro
ID0gbV9idWZmZXItPmdldFNvbWVEYXRhKHNlZ21lbnQsIHBvc2l0aW9uKSkgewotICAgICAgICBp
bnQgYnl0ZXNXcml0dGVuID0gd3JpdGVUb0ZpbGUoaGFuZGxlLCBzZWdtZW50LCBsZW5ndGgpOwot
ICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIC0xOwot
Ci0gICAgICAgIHRvdGFsQnl0ZXNXcml0dGVuICs9IGJ5dGVzV3JpdHRlbjsKLSAgICAgICAgcG9z
aXRpb24gKz0gbGVuZ3RoOwotICAgIH0KLQotICAgIHJldHVybiB0b3RhbEJ5dGVzV3JpdHRlbjsK
LX0KLQotCi1EaXNrSW1hZ2VDYWNoZTo6RGlza0ltYWdlQ2FjaGUoKQotICAgIDogbV9lbmFibGVk
KGZhbHNlKQotICAgICwgbV9zaXplKDApCi0gICAgLCBtX21heGltdW1DYWNoZVNpemUoMTAwICog
MTAyNCAqIDEwMjQpCi0gICAgLCBtX21pbmltdW1JbWFnZVNpemUoMTAwICogMTAyNCkKLSAgICAs
IG1fbmV4dEF2YWlsYWJsZUlkKERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQgKyAx
KQotewotfQotCi1EaXNrSW1hZ2VDYWNoZUlkIERpc2tJbWFnZUNhY2hlOjp3cml0ZUl0ZW0oUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IGl0ZW0pCi17Ci0gICAgaWYgKCFpc0VuYWJsZWQoKSB8fCAh
Y3JlYXRlRGlyZWN0b3J5SWZOZWVkZWQoKSkKLSAgICAgICAgcmV0dXJuIERpc2tJbWFnZUNhY2hl
OjppbnZhbGlkRGlza0NhY2hlSWQ7Ci0KLSAgICAvLyBXZSBhcmUgYWxyZWFkeSBmdWxsLCBjYW5u
b3QgYWRkIGFueXRoaW5nIHVudGlsIHNvbWV0aGluZyBpcyByZW1vdmVkLgotICAgIGlmIChpc0Z1
bGwoKSkgewotICAgICAgICBMT0coRGlza0ltYWdlQ2FjaGUsICJEaXNrSW1hZ2VDYWNoZTogY291
bGQgbm90IHByb2Nlc3MgYW4gaXRlbSBiZWNhdXNlIHRoZSBjYWNoZSB3YXMgZnVsbCBhdCAoJWQp
LiBUaGUgXCJtYXhcIiBiZWluZyAoJWQpIiwgbV9zaXplLCBtX21heGltdW1DYWNoZVNpemUpOwot
ICAgICAgICByZXR1cm4gRGlza0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZDsKLSAgICB9
Ci0KLSAgICAvLyBDcmVhdGUgYW4gZW50cnkuCi0gICAgRGlza0ltYWdlQ2FjaGVJZCBpZCA9IG5l
eHRBdmFpbGFibGVJZCgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGl0ZW07
Ci0gICAgUmVmUHRyPERpc2tJbWFnZUNhY2hlOjpFbnRyeT4gZW50cnkgPSBEaXNrSW1hZ2VDYWNo
ZTo6RW50cnk6OmNyZWF0ZShidWZmZXIuZ2V0KCksIGlkKTsKLSAgICBtX3RhYmxlLmFkZChpZCwg
ZW50cnkpOwotCi0gICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUgcGF0aC4KLSAgICBTdHJp
bmcgcGF0aCA9IHRlbXBvcmFyeUZpbGUoKTsKLSAgICBMT0coRGlza0ltYWdlQ2FjaGUsICJEaXNr
SW1hZ2VDYWNoZTogY3JlYXRpbmcgZW50cnkgKCVkKSBhdCAoJXMpIiwgaWQsIHBhdGgudXRmOCgp
LmRhdGEoKSk7Ci0gICAgaWYgKHBhdGguaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBEaXNrSW1h
Z2VDYWNoZTo6aW52YWxpZERpc2tDYWNoZUlkOwotCi0gICAgLy8gVGhlIGxpZmV0aW1lIG9mIHRo
ZSBFbnRyeSBpcyBoYW5kbGVkIG9uIHRoZSBXZWJUaHJlYWQuCi0gICAgLy8gQmVmb3JlIHdlIHNl
bmQgdG8gYSBkaXNwYXRjaCBxdWV1ZSB3ZSBuZWVkIHRvIHJlZiBzbwotICAgIC8vIHRoYXQgd2Ug
YXJlIHN1cmUgdGhlIG9iamVjdCBzdGlsbCBleGlzdHMuIFRoaXMgY2FsbAotICAgIC8vIGlzIGJh
bGFuY2VkIGluIHRoZSBXZWJUaHJlYWRSdW4gaW5zaWRlIG9mIEVudHJ5OjptYXAuCi0gICAgLy8g
b3IgdGhlIGVhcmx5IHJldHVybiBpbiB0aGlzIGRpc3BhdGNoLgotICAgIERpc2tJbWFnZUNhY2hl
OjpFbnRyeSogbG9jYWxFbnRyeUZvckJsb2NrID0gZW50cnkuZ2V0KCk7Ci0gICAgbG9jYWxFbnRy
eUZvckJsb2NrLT5yZWYoKTsKLQotICAgIC8vIE1hcCB0byBkaXNrIGFzeW5jaHJvbm91c2x5Lgot
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVF
VUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIF57Ci0gICAgICAgIC8vIFRoZSBjYWNoZSBiZWNhbWUg
ZnVsbCBzaW5jZSB0aGUgdGltZSB3ZSB3ZXJlIGFkZGVkIHRvIHRoZSBxdWV1ZS4gRG9uJ3QgbWFw
LgotICAgICAgICBpZiAoZGlza0ltYWdlQ2FjaGUoKS5pc0Z1bGwoKSkgewotICAgICAgICAgICAg
V2ViVGhyZWFkUnVuKF57Ci0gICAgICAgICAgICAgICAgbG9jYWxFbnRyeUZvckJsb2NrLT5jbGVh
ckRhdGFXaXRob3V0TWFwcGluZygpOwotICAgICAgICAgICAgICAgIGxvY2FsRW50cnlGb3JCbG9j
ay0+ZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgbG9jYWxFbnRyeUZvckJsb2NrLT5tYXAocGF0aCk7Ci0KLSAgICAgICAg
Ly8gVXBkYXRlIHRoZSBzaXplIG9uIGEgc3VjY2Vzc2Z1bCBtYXBwaW5nLgotICAgICAgICBpZiAo
bG9jYWxFbnRyeUZvckJsb2NrLT5pc01hcHBlZCgpKQotICAgICAgICAgICAgZGlza0ltYWdlQ2Fj
aGUoKS51cGRhdGVTaXplKGxvY2FsRW50cnlGb3JCbG9jay0+c2l6ZSgpKTsKLSAgICB9KTsKLQot
ICAgIHJldHVybiBpZDsKLX0KLQotdm9pZCBEaXNrSW1hZ2VDYWNoZTo6dXBkYXRlU2l6ZSh1bnNp
Z25lZCBkZWx0YSkKLXsKLSAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOwotICAgIG1fc2l6
ZSArPSBkZWx0YTsKLX0KLQotdm9pZCBEaXNrSW1hZ2VDYWNoZTo6cmVtb3ZlSXRlbShEaXNrSW1h
Z2VDYWNoZUlkIGlkKQotewotICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hl
OiByZW1vdmVJdGVtICglZCkiLCBpZCk7Ci0gICAgUmVmUHRyPERpc2tJbWFnZUNhY2hlOjpFbnRy
eT4gZW50cnkgPSBtX3RhYmxlLmdldChpZCk7Ci0gICAgbV90YWJsZS5yZW1vdmUoaWQpOwotICAg
IGlmICghZW50cnktPmlzTWFwcGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVwZGF0ZVNp
emUoLShlbnRyeS0+c2l6ZSgpKSk7Ci0KLSAgICBEaXNrSW1hZ2VDYWNoZTo6RW50cnkgKmxvY2Fs
RW50cnlGb3JCbG9jayA9IGVudHJ5LmdldCgpOwotICAgIGxvY2FsRW50cnlGb3JCbG9jay0+cmVm
KCk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRD
SF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKSwgXnsKLSAgICAgICAgbG9jYWxFbnRyeUZvckJs
b2NrLT51bm1hcCgpOwotICAgICAgICBsb2NhbEVudHJ5Rm9yQmxvY2stPnJlbW92ZUZpbGUoKTsK
LSAgICAgICAgV2ViVGhyZWFkUnVuKF57IGxvY2FsRW50cnlGb3JCbG9jay0+ZGVyZWYoKTsgfSk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQqIERpc2tJbWFnZUNhY2hlOjpkYXRhRm9ySXRlbShEaXNrSW1h
Z2VDYWNoZUlkIGlkKQotewotICAgIEFTU0VSVChpZCk7Ci0KLSAgICBSZWZQdHI8RGlza0ltYWdl
Q2FjaGU6OkVudHJ5PiBlbnRyeSA9IG1fdGFibGUuZ2V0KGlkKTsKLSAgICBBU1NFUlQoZW50cnkt
PmlzTWFwcGVkKCkpOwotICAgIHJldHVybiBlbnRyeS0+ZGF0YSgpOwotfQotCi1ib29sIERpc2tJ
bWFnZUNhY2hlOjpjcmVhdGVEaXJlY3RvcnlJZk5lZWRlZCgpCi17Ci0gICAgaWYgKCFtX2NhY2hl
RGlyZWN0b3J5LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIG1fY2FjaGVE
aXJlY3RvcnkgPSB0ZW1wb3JhcnlEaXJlY3RvcnkoKTsKLSAgICBMT0coRGlza0ltYWdlQ2FjaGUs
ICJEaXNrSW1hZ2VDYWNoZTogQ3JlYXRlZCB0ZW1wb3JhcnkgZGlyZWN0b3J5ICglcykiLCBtX2Nh
Y2hlRGlyZWN0b3J5LnV0ZjgoKS5kYXRhKCkpOwotICAgIGlmIChtX2NhY2hlRGlyZWN0b3J5Lmlz
TnVsbCgpKSB7Ci0gICAgICAgIExPR19FUlJPUigiRGlza0ltYWdlQ2FjaGU6IGNvdWxkIG5vdCBj
cmVhdGUgY2FjaGUgZGlyZWN0b3J5Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRDcmVhdGVEaXNrSW1hZ2VD
YWNoZURpcmVjdG9yeShtX2NhY2hlRGlyZWN0b3J5KTsKLQotICAgIHJldHVybiB0cnVlOwotfQot
Ci1EaXNrSW1hZ2VDYWNoZUlkIERpc2tJbWFnZUNhY2hlOjpuZXh0QXZhaWxhYmxlSWQoKQotewot
ICAgIHJldHVybiBtX25leHRBdmFpbGFibGVJZCsrOwotfQotCi1TdHJpbmcgRGlza0ltYWdlQ2Fj
aGU6OnRlbXBvcmFyeURpcmVjdG9yeSgpCi17Ci0gICAgTlNTdHJpbmcgKnRlbXBEaXNrQ2FjaGVE
aXJlY3RvcnkgPSBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJEaXNrSW1hZ2VDYWNoZSIpOwot
ICAgIGlmICghdGVtcERpc2tDYWNoZURpcmVjdG9yeSkKLSAgICAgICAgTE9HX0VSUk9SKCJEaXNr
SW1hZ2VDYWNoZTogQ291bGQgbm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkuIik7Ci0K
LSAgICByZXR1cm4gdGVtcERpc2tDYWNoZURpcmVjdG9yeTsKLX0KLQotU3RyaW5nIERpc2tJbWFn
ZUNhY2hlOjp0ZW1wb3JhcnlGaWxlKCkKLXsKLSAgICBOU1N0cmluZyAqdGVtcEZpbGUgPSBjcmVh
dGVUZW1wb3JhcnlGaWxlKG1fY2FjaGVEaXJlY3RvcnksIEAidG1wIik7Ci0gICAgaWYgKCF0ZW1w
RmlsZSkKLSAgICAgICAgTE9HX0VSUk9SKCJEaXNrSW1hZ2VDYWNoZTogQ291bGQgbm90IGNyZWF0
ZSBhIHRlbXBvcmFyeSBmaWxlLiIpOwotCi0gICAgcmV0dXJuIHRlbXBGaWxlOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkg
JiYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9n
Z2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDUyNTkzYTY4
OGVhZDBiMjE0MDA2OWMzMjUyMTk0ODM3ZjYwZjBkNGIuLjQ4NmRlMmI2YjcwNWJiNDBjZGE5YmJj
ZWNiYjRkMGE4ZTEwNWM0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xv
Z2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTQyLDcg
KzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oQXJjaGl2ZXMpIFwKICAgICBNKEJh
Y2tGb3J3YXJkKSBcCiAgICAgTShDb21wb3NpdGluZykgXAotICAgIE0oRGlza0ltYWdlQ2FjaGUp
IFwKICAgICBNKEVkaXRpbmcpIFwKICAgICBNKEV2ZW50cykgXAogICAgIE0oRlRQKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBhNmQ2MjMzZGE0N2ZlMjNi
OThkMWQ5OTU2YmZjYzA5NDg2MzBlZGM0Li5kMTEwZTBiYTAwMGJmZDg1MGVkM2U5Y2VhYzE4NmYz
N2VhMjIxODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAg
LTMxLDEwICszMSw2IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvdW5pY29kZS9VVEY4Lmg+CiAKLSNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKLSNpbmNs
dWRlICJEaXNrSW1hZ2VDYWNoZUlPUy5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogI2lmICFVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCkBAIC02NiwzNiArNjIs
MTggQEAgc3RhdGljIGlubGluZSB2b2lkIGZyZWVTZWdtZW50KGNoYXIqIHApCiBTaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcigpCiAgICAgOiBtX3NpemUoMCkKICAgICAsIG1fYnVmZmVyKGFkb3B0
UmVmKG5ldyBEYXRhQnVmZmVyKSkKLSNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKLSAgICAs
IG1faXNNZW1vcnlNYXBwZWQoZmFsc2UpCi0gICAgLCBtX2Rpc2tJbWFnZUNhY2hlSWQoRGlza0lt
YWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZCkKLSAgICAsIG1fbm90aWZ5TWVtb3J5TWFwcGVk
Q2FsbGJhY2sobnVsbHB0cikKLSAgICAsIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2tEYXRh
KG51bGxwdHIpCi0jZW5kaWYKIHsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIodW5z
aWduZWQgc2l6ZSkKICAgICA6IG1fc2l6ZShzaXplKQogICAgICwgbV9idWZmZXIoYWRvcHRSZWYo
bmV3IERhdGFCdWZmZXIpKQotI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQotICAgICwgbV9p
c01lbW9yeU1hcHBlZChmYWxzZSkKLSAgICAsIG1fZGlza0ltYWdlQ2FjaGVJZChEaXNrSW1hZ2VD
YWNoZTo6aW52YWxpZERpc2tDYWNoZUlkKQotICAgICwgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxs
YmFjayhudWxscHRyKQotICAgICwgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFja0RhdGEobnVs
bHB0cikKLSNlbmRpZgogewogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAgIDogbV9zaXplKDApCiAgICAgLCBtX2J1ZmZl
cihhZG9wdFJlZihuZXcgRGF0YUJ1ZmZlcikpCi0jaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUp
Ci0gICAgLCBtX2lzTWVtb3J5TWFwcGVkKGZhbHNlKQotICAgICwgbV9kaXNrSW1hZ2VDYWNoZUlk
KERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQpCi0gICAgLCBtX25vdGlmeU1lbW9y
eU1hcHBlZENhbGxiYWNrKG51bGxwdHIpCi0gICAgLCBtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxi
YWNrRGF0YShudWxscHRyKQotI2VuZGlmCiB7CiAgICAgYXBwZW5kKGRhdGEsIHNpemUpOwogfQpA
QCAtMTAzLDI1ICs4MSwxMiBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFy
KiBkYXRhLCB1bnNpZ25lZCBzaXplKQogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3Qg
dW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAgICA6IG1fc2l6ZSgwKQogICAg
ICwgbV9idWZmZXIoYWRvcHRSZWYobmV3IERhdGFCdWZmZXIpKQotI2lmIEVOQUJMRShESVNLX0lN
QUdFX0NBQ0hFKQotICAgICwgbV9pc01lbW9yeU1hcHBlZChmYWxzZSkKLSAgICAsIG1fZGlza0lt
YWdlQ2FjaGVJZChEaXNrSW1hZ2VDYWNoZTo6aW52YWxpZERpc2tDYWNoZUlkKQotICAgICwgbV9u
b3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFjayhudWxscHRyKQotICAgICwgbV9ub3RpZnlNZW1vcnlN
YXBwZWRDYWxsYmFja0RhdGEobnVsbHB0cikKLSNlbmRpZgogewogICAgIGFwcGVuZChyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgc2l6ZSk7CiB9CiAgICAgCiBTaGFyZWRCdWZm
ZXI6On5TaGFyZWRCdWZmZXIoKQogewotI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQotICAg
IGlmIChtX2Rpc2tJbWFnZUNhY2hlSWQpIHsKLSAgICAgICAgZGlza0ltYWdlQ2FjaGUoKS5yZW1v
dmVJdGVtKG1fZGlza0ltYWdlQ2FjaGVJZCk7Ci0gICAgICAgIG1faXNNZW1vcnlNYXBwZWQgPSBm
YWxzZTsKLSAgICAgICAgbV9kaXNrSW1hZ2VDYWNoZUlkID0gRGlza0ltYWdlQ2FjaGU6OmludmFs
aWREaXNrQ2FjaGVJZDsKLSAgICB9Ci0jZW5kaWYKICAgICBjbGVhcigpOwogfQogCkBAIC0xNDEs
NzIgKzEwNiw4IEBAIHVuc2lnbmVkIFNoYXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fc2l6ZTsKIH0KIAotI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQotYm9vbCBTaGFy
ZWRCdWZmZXI6OmlzQWxsb3dlZFRvQmVNZW1vcnlNYXBwZWQoKSBjb25zdAotewotICAgIHJldHVy
biBtX2Rpc2tJbWFnZUNhY2hlSWQgIT0gRGlza0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJ
ZDsKLX0KLQotU2hhcmVkQnVmZmVyOjpNZW1vcnlNYXBwaW5nU3RhdGUgU2hhcmVkQnVmZmVyOjph
bGxvd1RvQmVNZW1vcnlNYXBwZWQoKQotewotICAgIGlmIChpc01lbW9yeU1hcHBlZCgpKQotICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpTdWNjZXNzQWxyZWFkeU1hcHBlZDsKLQotICAgIGlm
IChpc0FsbG93ZWRUb0JlTWVtb3J5TWFwcGVkKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OlByZXZpb3VzbHlRdWV1ZWRGb3JNYXBwaW5nOwotCi0gICAgbV9kaXNrSW1hZ2VDYWNoZUlk
ID0gZGlza0ltYWdlQ2FjaGUoKS53cml0ZUl0ZW0odGhpcyk7Ci0gICAgaWYgKG1fZGlza0ltYWdl
Q2FjaGVJZCA9PSBEaXNrSW1hZ2VDYWNoZTo6aW52YWxpZERpc2tDYWNoZUlkKQotICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpGYWlsdXJlQ2FjaGVGdWxsOwotCi0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6UXVldWVkRm9yTWFwcGluZzsKLX0KLQotdm9pZCBTaGFyZWRCdWZmZXI6OmZhaWxl
ZE1lbW9yeU1hcCgpCi17Ci0gICAgaWYgKG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2spCi0g
ICAgICAgIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2sodGhpcywgU2hhcmVkQnVmZmVyOjpG
YWlsZWQsIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2tEYXRhKTsKLX0KLQotdm9pZCBTaGFy
ZWRCdWZmZXI6Om1hcmtBc01lbW9yeU1hcHBlZCgpCi17Ci0gICAgQVNTRVJUKCFpc01lbW9yeU1h
cHBlZCgpKTsKLQotICAgIG1faXNNZW1vcnlNYXBwZWQgPSB0cnVlOwotICAgIHVuc2lnbmVkIHNh
dmVkU2l6ZSA9IHNpemUoKTsKLSAgICBjbGVhcigpOwotICAgIG1fc2l6ZSA9IHNhdmVkU2l6ZTsK
LQotICAgIGlmIChtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrKQotICAgICAgICBtX25vdGlm
eU1lbW9yeU1hcHBlZENhbGxiYWNrKHRoaXMsIFNoYXJlZEJ1ZmZlcjo6U3VjY2VlZGVkLCBtX25v
dGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrRGF0YSk7Ci19Ci0KLVNoYXJlZEJ1ZmZlcjo6TWVtb3J5
TWFwcGVkTm90aWZ5Q2FsbGJhY2tEYXRhIFNoYXJlZEJ1ZmZlcjo6bWVtb3J5TWFwcGVkTm90aWZp
Y2F0aW9uQ2FsbGJhY2tEYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9ub3RpZnlNZW1vcnlN
YXBwZWRDYWxsYmFja0RhdGE7Ci19Ci0KLVNoYXJlZEJ1ZmZlcjo6TWVtb3J5TWFwcGVkTm90aWZ5
Q2FsbGJhY2sgU2hhcmVkQnVmZmVyOjptZW1vcnlNYXBwZWROb3RpZmljYXRpb25DYWxsYmFjaygp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2s7Ci19Ci0K
LXZvaWQgU2hhcmVkQnVmZmVyOjpzZXRNZW1vcnlNYXBwZWROb3RpZmljYXRpb25DYWxsYmFjayhN
ZW1vcnlNYXBwZWROb3RpZnlDYWxsYmFjayBjYWxsYmFjaywgTWVtb3J5TWFwcGVkTm90aWZ5Q2Fs
bGJhY2tEYXRhIGRhdGEpCi17Ci0gICAgQVNTRVJUKCFtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxi
YWNrIHx8ICFjYWxsYmFjayk7Ci0gICAgQVNTRVJUKCFtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxi
YWNrRGF0YSB8fCAhZGF0YSk7Ci0KLSAgICBtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrID0g
Y2FsbGJhY2s7Ci0gICAgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFja0RhdGEgPSBkYXRhOwot
fQotI2VuZGlmCi0KIGNvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiB7Ci0j
aWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCi0gICAgaWYgKGlzTWVtb3J5TWFwcGVkKCkpCi0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGlza0ltYWdlQ2FjaGUoKS5k
YXRhRm9ySXRlbShtX2Rpc2tJbWFnZUNhY2hlSWQpKTsKLSNlbmRpZgogCiAgICAgaWYgKGhhc1Bs
YXRmb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gcGxhdGZvcm1EYXRhKCk7CkBAIC0yNTgsOSAr
MTU5LDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChTaGFyZWRCdWZmZXIqIGRhdGEpCiAK
IHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKQogewotI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQotICAgIEFTU0VSVCghaXNNZW1v
cnlNYXBwZWQoKSk7Ci0jZW5kaWYKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0zOTMsOSArMjkxLDYgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlCdWZmZXJBbmRDbGVh
cihjaGFyKiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgYnl0ZXNUb0NvcHkpIGMKIAogY29uc3QgVmVj
dG9yPGNoYXI+JiBTaGFyZWRCdWZmZXI6OmJ1ZmZlcigpIGNvbnN0CiB7Ci0jaWYgRU5BQkxFKERJ
U0tfSU1BR0VfQ0FDSEUpCi0gICAgQVNTRVJUKCFpc01lbW9yeU1hcHBlZCgpKTsKLSNlbmRpZgog
ICAgIHVuc2lnbmVkIGJ1ZmZlclNpemUgPSBtX2J1ZmZlci0+ZGF0YS5zaXplKCk7CiAgICAgaWYg
KG1fc2l6ZSA+IGJ1ZmZlclNpemUpIHsKICAgICAgICAgZHVwbGljYXRlRGF0YUJ1ZmZlcklmTmVj
ZXNzYXJ5KCk7CkBAIC00MTMsMTUgKzMwOCw2IEBAIHVuc2lnbmVkIFNoYXJlZEJ1ZmZlcjo6Z2V0
U29tZURhdGEoY29uc3QgY2hhciomIHNvbWVEYXRhLCB1bnNpZ25lZCBwb3NpdGlvbikgY29uCiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQot
ICAgIEFTU0VSVChwb3NpdGlvbiA8IHNpemUoKSk7Ci0gICAgaWYgKGlzTWVtb3J5TWFwcGVkKCkp
IHsKLSAgICAgICAgY29uc3QgY2hhciogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihk
aXNrSW1hZ2VDYWNoZSgpLmRhdGFGb3JJdGVtKG1fZGlza0ltYWdlQ2FjaGVJZCkpOwotICAgICAg
ICBzb21lRGF0YSA9IGRhdGEgKyBwb3NpdGlvbjsKLSAgICAgICAgcmV0dXJuIHNpemUoKSAtIHBv
c2l0aW9uOwotICAgIH0KLSNlbmRpZgotCiAgICAgaWYgKGhhc1BsYXRmb3JtRGF0YSgpKSB7CiAg
ICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHBvc2l0aW9uIDwgc2l6ZSgp
KTsKICAgICAgICAgc29tZURhdGEgPSBkYXRhKCkgKyBwb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggODU5ZDRiNWMxMDYxNGM2NjllMTM3MzlmMTljYTk1
MmM2ZjlhZmUxNS4uY2NiMDI5ZDc5ODE4ZjZkOWNiZDdhZmJlNjU1MDRlMDU2NjliNzNlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTExOCwzMCArMTE4LDYgQEAg
cHVibGljOgogICAgIC8vICAgICAgfQogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGdldFNv
bWVEYXRhKGNvbnN0IGNoYXIqJiBkYXRhLCB1bnNpZ25lZCBwb3NpdGlvbiA9IDApIGNvbnN0Owog
Ci0jaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCi0gICAgZW51bSBNZW1vcnlNYXBwaW5nU3Rh
dGUgeyBRdWV1ZWRGb3JNYXBwaW5nLCBQcmV2aW91c2x5UXVldWVkRm9yTWFwcGluZywgU3VjY2Vz
c0FscmVhZHlNYXBwZWQsIEZhaWx1cmVDYWNoZUZ1bGwgfTsKLQotICAgIC8vIENhbGxpbmcgdGhp
cyB3aWxsIGNhdXNlIHRoaXMgYnVmZmVyIHRvIGJlIG1lbW9yeSBtYXBwZWQuCi0gICAgV0VCQ09S
RV9FWFBPUlQgTWVtb3J5TWFwcGluZ1N0YXRlIGFsbG93VG9CZU1lbW9yeU1hcHBlZCgpOwotICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNBbGxvd2VkVG9CZU1lbW9yeU1hcHBlZCgpIGNvbnN0Owot
Ci0gICAgLy8gVGhpcyBpcyBjYWxsZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgbWVtb3J5IG1hcHBp
bmcgZmFpbGVkLgotICAgIHZvaWQgZmFpbGVkTWVtb3J5TWFwKCk7Ci0KLSAgICAvLyBUaGlzIGlz
IGNhbGxlZCBvbmx5IG9uY2UgdGhlIGJ1ZmZlciBoYXMgYmVlbiBjb21wbGV0ZWx5IG1lbW9yeSBt
YXBwZWQuCi0gICAgdm9pZCBtYXJrQXNNZW1vcnlNYXBwZWQoKTsKLSAgICBib29sIGlzTWVtb3J5
TWFwcGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc01lbW9yeU1hcHBlZDsgfQotCi0gICAgLy8gVGhp
cyBjYWxsYmFjayBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuIGVpdGhlciB0aGUgYnVmZmVy
IGhhcyBiZWVuIG1lbW9yeSBtYXBwZWQgb3IgZmFpbGVkIHRvIGJlIG1lbW9yeSBtYXBwZWQuCi0g
ICAgZW51bSBDb21wbGV0aW9uU3RhdHVzIHsgRmFpbGVkLCBTdWNjZWVkZWQgfTsKLSAgICB0eXBl
ZGVmIHZvaWQqIE1lbW9yeU1hcHBlZE5vdGlmeUNhbGxiYWNrRGF0YTsKLSAgICB0eXBlZGVmIHZv
aWQgKCpNZW1vcnlNYXBwZWROb3RpZnlDYWxsYmFjaykoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
LCBDb21wbGV0aW9uU3RhdHVzLCBNZW1vcnlNYXBwZWROb3RpZnlDYWxsYmFja0RhdGEpOwotCi0g
ICAgV0VCQ09SRV9FWFBPUlQgTWVtb3J5TWFwcGVkTm90aWZ5Q2FsbGJhY2tEYXRhIG1lbW9yeU1h
cHBlZE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JU
IE1lbW9yeU1hcHBlZE5vdGlmeUNhbGxiYWNrIG1lbW9yeU1hcHBlZE5vdGlmaWNhdGlvbkNhbGxi
YWNrKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZW1vcnlNYXBwZWROb3Rp
ZmljYXRpb25DYWxsYmFjayhNZW1vcnlNYXBwZWROb3RpZnlDYWxsYmFjaywgTWVtb3J5TWFwcGVk
Tm90aWZ5Q2FsbGJhY2tEYXRhKTsKLSNlbmRpZgotCiAgICAgdm9pZCB0cnlSZXBsYWNlQ29udGVu
dHNXaXRoUGxhdGZvcm1CdWZmZXIoU2hhcmVkQnVmZmVyKik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBoYXNQbGF0Zm9ybURhdGEoKSBjb25zdDsKIApAQCAtMTgyLDEyICsxNTgsNiBAQCBwcml2
YXRlOgogI2Vsc2UKICAgICBtdXRhYmxlIFZlY3RvcjxjaGFyKj4gbV9zZWdtZW50czsKICNlbmRp
ZgotI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQotICAgIGJvb2wgbV9pc01lbW9yeU1hcHBl
ZDsKLSAgICB1bnNpZ25lZCBtX2Rpc2tJbWFnZUNhY2hlSWQ7IC8vIERpc2tJbWFnZUNhY2hlSWQg
aXMgdW5zaWduZWQuCi0gICAgTWVtb3J5TWFwcGVkTm90aWZ5Q2FsbGJhY2sgbV9ub3RpZnlNZW1v
cnlNYXBwZWRDYWxsYmFjazsKLSAgICBNZW1vcnlNYXBwZWROb3RpZnlDYWxsYmFja0RhdGEgbV9u
b3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFja0RhdGE7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCiAgICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gbV9jZkRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFy
ZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHAKaW5kZXggNzgxMTYyNTE5NjAyMzM3NzExMmUyZTgwY2Y1OTM4MmM2ZGJmZTQyZi4uYWMx
OTg3MDk5MTcwZWY2ODA4YjA2ZjNkMjBhNjVkZTU0MGZhYjZkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtMzAsMjEgKzMwLDExIEBACiAK
ICNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzLmg+CiAKLSNpZiBFTkFCTEUoRElTS19JTUFHRV9D
QUNIRSkKLSNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZUlPUy5oIgotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGNmRGF0
YSkKICAgICA6IG1fc2l6ZSgwKQogICAgICwgbV9idWZmZXIoYWRvcHRSZWYobmV3IERhdGFCdWZm
ZXIpKQotI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQotICAgICwgbV9pc01lbW9yeU1hcHBl
ZChmYWxzZSkKLSAgICAsIG1fZGlza0ltYWdlQ2FjaGVJZChEaXNrSW1hZ2VDYWNoZTo6aW52YWxp
ZERpc2tDYWNoZUlkKQotICAgICwgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFjayhudWxscHRy
KQotICAgICwgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFja0RhdGEobnVsbHB0cikKLSNlbmRp
ZgogICAgICwgbV9jZkRhdGEoY2ZEYXRhKQogewogfQpAQCAtMTI4LDEyICsxMTgsNiBAQCBQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp3cmFwQ0ZEYXRhQXJyYXkoQ0ZBcnJh
eVJlZiBjZkRhdGFBcnJheSkKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGQXJyYXlSZWYg
Y2ZEYXRhQXJyYXkpCiAgICAgOiBtX3NpemUoMCkKICAgICAsIG1fYnVmZmVyKGFkb3B0UmVmKG5l
dyBEYXRhQnVmZmVyKSkKLSNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKLSAgICAsIG1faXNN
ZW1vcnlNYXBwZWQoZmFsc2UpCi0gICAgLCBtX2Rpc2tJbWFnZUNhY2hlSWQoRGlza0ltYWdlQ2Fj
aGU6OmludmFsaWREaXNrQ2FjaGVJZCkKLSAgICAsIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJh
Y2sobnVsbHB0cikKLSAgICAsIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2tEYXRhKG51bGxw
dHIpCi0jZW5kaWYKICAgICAsIG1fY2ZEYXRhKG51bGxwdHIpCiB7CiAgICAgQ0ZJbmRleCBkYXRh
QXJyYXlDb3VudCA9IENGQXJyYXlHZXRDb3VudChjZkRhdGFBcnJheSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2hhcmVkQnVmZmVyTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1NoYXJlZEJ1ZmZlck1hYy5tbQppbmRleCBlNzhlMzhiMjZiMjk2
ZDBjMzE4MGZiYjVkMWM4NjY2ZGMxYzlmYTk4Li5lYTQ4MmYwNmYwODE2OGE5YWZkNThjNmQwMGFi
NWNmMGIzM2UwNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2hh
cmVkQnVmZmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TaGFyZWRC
dWZmZXJNYWMubW0KQEAgLTM3LDE1ICszNyw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
QGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQogewogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI6OkRhdGFCdWZmZXI+IHNoYXJlZEJ1ZmZlckRhdGFCdWZmZXI7Ci0jaWYg
RU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVk
QnVmZmVyOwotI2VuZGlmCiB9CiAKIC0gKGlkKWluaXRXaXRoU2hhcmVkQnVmZmVyRGF0YUJ1ZmZl
cjooU2hhcmVkQnVmZmVyOjpEYXRhQnVmZmVyKilkYXRhQnVmZmVyOwotI2lmIEVOQUJMRShESVNL
X0lNQUdFX0NBQ0hFKQotLSAoaWQpaW5pdFdpdGhNZW1vcnlNYXBwZWRTaGFyZWRCdWZmZXI6KFNo
YXJlZEJ1ZmZlciYpbWVtb3J5TWFwcGVkU2hhcmVkQnVmZmVyOwotI2VuZGlmCiBAZW5kCiAKIEBp
bXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YQpAQCAtODIsMzUgKzc2LDEzIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIHJldHVybiBzZWxmOwogfQogCi0jaWYgRU5B
QkxFKERJU0tfSU1BR0VfQ0FDSEUpCi0tIChpZClpbml0V2l0aE1lbW9yeU1hcHBlZFNoYXJlZEJ1
ZmZlcjooU2hhcmVkQnVmZmVyJiltZW1vcnlNYXBwZWRTaGFyZWRCdWZmZXIKLXsKLSAgICBBU1NF
UlQobWVtb3J5TWFwcGVkU2hhcmVkQnVmZmVyLmlzTWVtb3J5TWFwcGVkKCkpOwotICAgIHNlbGYg
PSBbc3VwZXIgaW5pdF07Ci0KLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0K
LSAgICBzaGFyZWRCdWZmZXIgPSAmbWVtb3J5TWFwcGVkU2hhcmVkQnVmZmVyOwotICAgIHJldHVy
biBzZWxmOwotfQotI2VuZGlmCi0KIC0gKE5TVUludGVnZXIpbGVuZ3RoCiB7Ci0jaWYgRU5BQkxF
KERJU0tfSU1BR0VfQ0FDSEUpCi0gICAgaWYgKHNoYXJlZEJ1ZmZlcikKLSAgICAgICAgcmV0dXJu
IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpOwotI2VuZGlmCiAgICAgcmV0dXJuIHNoYXJlZEJ1ZmZlckRh
dGFCdWZmZXItPmRhdGEuc2l6ZSgpOwogfQogCiAtIChjb25zdCB2b2lkICopYnl0ZXMKIHsKLSNp
ZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKLSAgICBpZiAoc2hhcmVkQnVmZmVyKQotICAgICAg
ICByZXR1cm4gc2hhcmVkQnVmZmVyLT5kYXRhKCk7Ci0jZW5kaWYKICAgICByZXR1cm4gc2hhcmVk
QnVmZmVyRGF0YUJ1ZmZlci0+ZGF0YS5kYXRhKCk7CiB9CiAKQEAgLTE0NiwxMSArMTE4LDYgQEAg
UmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKQogICAgIGlm
IChDRkRhdGFSZWYgY2ZEYXRhID0gZXhpc3RpbmdDRkRhdGEoKSkKICAgICAgICAgcmV0dXJuIGNm
RGF0YTsKIAotI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQotICAgIGlmIChpc01lbW9yeU1h
cHBlZCgpKQotICAgICAgICByZXR1cm4gYWRvcHRDRigoQ0ZEYXRhUmVmKWFkb3B0TlMoW1tXZWJD
b3JlU2hhcmVkQnVmZmVyRGF0YSBhbGxvY10gaW5pdFdpdGhNZW1vcnlNYXBwZWRTaGFyZWRCdWZm
ZXI6KnRoaXNdKS5sZWFrUmVmKCkpOwotI2VuZGlmCi0KICAgICBkYXRhKCk7IC8vIEZvcmNlIGRh
dGEgaW50byBtX2J1ZmZlciBmcm9tIHNlZ21lbnRzIG9yIGRhdGEgYXJyYXkuCiAgICAgcmV0dXJu
IGFkb3B0Q0YoKENGRGF0YVJlZilhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxs
b2NdIGluaXRXaXRoU2hhcmVkQnVmZmVyRGF0YUJ1ZmZlcjptX2J1ZmZlci5nZXQoKV0pLmxlYWtS
ZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBjZWExNzNjNjZkMjY4YmFmNzhmOWEzOWY2ZjZhYmMyNjZlZjE0ZjA0Li45NGM0
YTA3MmI3MDVkMDViNjZkMGE0MWQzZWJlMTJjMmJhMzUzMDZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1OCw4ICszNTgsNiBAQAog
CQlBMTBDMUQ2MzE4MjAzMDBFMDAzNjg4M0EgLyogV2ViQ2FyZXRDaGFuZ2VMaXN0ZW5lci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwQzFENDkxODIw
MzAwRTAwMzY4ODNBIC8qIFdlYkNhcmV0Q2hhbmdlTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMTBDMUQ2NDE4MjAzMDBFMDAzNjg4
M0EgLyogV2ViQ2hyb21lQ2xpZW50SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTBDMUQ0QTE4MjAzMDBFMDAzNjg4M0EgLyogV2ViQ2hyb21lQ2xp
ZW50SU9TLmggKi87IH07CiAJCUExMEMxRDY1MTgyMDMwMEUwMDM2ODgzQSAvKiBXZWJDaHJvbWVD
bGllbnRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMTBDMUQ0QjE4MjAzMDBFMDAzNjg4M0EgLyogV2ViQ2hyb21lQ2xpZW50SU9TLm1tICovOyB9
OwotCQlBMTBDMUQ2NjE4MjAzMDBFMDAzNjg4M0EgLyogV2ViRGlza0ltYWdlQ2FjaGVDbGllbnRJ
T1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMEMx
RDRDMTgyMDMwMEUwMDM2ODgzQSAvKiBXZWJEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oICovOyB9
OwotCQlBMTBDMUQ2NzE4MjAzMDBFMDAzNjg4M0EgLyogV2ViRGlza0ltYWdlQ2FjaGVDbGllbnRJ
T1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTBD
MUQ0RDE4MjAzMDBFMDAzNjg4M0EgLyogV2ViRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MubW0gKi87
IH07CiAJCUExMEMxRDY4MTgyMDMwMEUwMDM2ODgzQSAvKiBXZWJGaXhlZFBvc2l0aW9uQ29udGVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwQzFE
NEUxODIwMzAwRTAwMzY4ODNBIC8qIFdlYkZpeGVkUG9zaXRpb25Db250ZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTEwQzFENjkxODIwMzAw
RTAwMzY4ODNBIC8qIFdlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwQzFENEYxODIwMzAwRTAwMzY4ODNBIC8q
IFdlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tICovOyB9OwogCQlBMTBDMUQ2QTE4MjAzMDBFMDAz
Njg4M0EgLyogV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwQzFENTAxODIwMzAwRTAwMzY4ODNB
IC8qIFdlYkZpeGVkUG9zaXRpb25Db250ZW50SW50ZXJuYWwuaCAqLzsgfTsKQEAgLTc0NCw4ICs3
NDIsNiBAQAogCQlBMTBDMUQ0OTE4MjAzMDBFMDAzNjg4M0EgLyogV2ViQ2FyZXRDaGFuZ2VMaXN0
ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJDYXJldENoYW5nZUxp
c3RlbmVyLmg7IHBhdGggPSBpb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2FyZXRDaGFuZ2VMaXN0ZW5l
ci5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCUExMEMxRDRBMTgyMDMwMEUwMDM2
ODgzQSAvKiBXZWJDaHJvbWVDbGllbnRJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV2ViQ2hyb21lQ2xpZW50SU9TLmg7IHBhdGggPSBpb3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50SU9TLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJQTEwQzFE
NEIxODIwMzAwRTAwMzY4ODNBIC8qIFdlYkNocm9tZUNsaWVudElPUy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkNocm9tZUNsaWVudElPUy5tbTsgcGF0aCA9
IGlvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MubW07IHNvdXJjZVRyZWUgPSBT
T1VSQ0VfUk9PVDsgfTsKLQkJQTEwQzFENEMxODIwMzAwRTAwMzY4ODNBIC8qIFdlYkRpc2tJbWFn
ZUNhY2hlQ2xpZW50SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkRp
c2tJbWFnZUNhY2hlQ2xpZW50SU9TLmg7IHBhdGggPSBpb3MvV2ViQ29yZVN1cHBvcnQvV2ViRGlz
a0ltYWdlQ2FjaGVDbGllbnRJT1MuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQlB
MTBDMUQ0RDE4MjAzMDBFMDAzNjg4M0EgLyogV2ViRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJEaXNrSW1hZ2VDYWNo
ZUNsaWVudElPUy5tbTsgcGF0aCA9IGlvcy9XZWJDb3JlU3VwcG9ydC9XZWJEaXNrSW1hZ2VDYWNo
ZUNsaWVudElPUy5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlBMTBDMUQ0RTE4
MjAzMDBFMDAzNjg4M0EgLyogV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQuaDsgcGF0aCA9IGlv
cy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5oOyBzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7IH07CiAJCUExMEMxRDRGMTgyMDMwMEUwMDM2ODgzQSAvKiBXZWJGaXhlZFBv
c2l0aW9uQ29udGVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFdlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tOyBwYXRoID0gaW9zL1dlYkNvcmVTdXBwb3J0L1dl
YkZpeGVkUG9zaXRpb25Db250ZW50Lm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJ
CUExMEMxRDUwMTgyMDMwMEUwMDM2ODgzQSAvKiBXZWJGaXhlZFBvc2l0aW9uQ29udGVudEludGVy
bmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkZpeGVkUG9zaXRpb25D
b250ZW50SW50ZXJuYWwuaDsgcGF0aCA9IGlvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0
aW9uQ29udGVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKQEAgLTE0
NDAsOCArMTQzNiw2IEBACiAJCQkJQTEwQzFENDkxODIwMzAwRTAwMzY4ODNBIC8qIFdlYkNhcmV0
Q2hhbmdlTGlzdGVuZXIuaCAqLywKIAkJCQlBMTBDMUQ0QTE4MjAzMDBFMDAzNjg4M0EgLyogV2Vi
Q2hyb21lQ2xpZW50SU9TLmggKi8sCiAJCQkJQTEwQzFENEIxODIwMzAwRTAwMzY4ODNBIC8qIFdl
YkNocm9tZUNsaWVudElPUy5tbSAqLywKLQkJCQlBMTBDMUQ0QzE4MjAzMDBFMDAzNjg4M0EgLyog
V2ViRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCAqLywKLQkJCQlBMTBDMUQ0RDE4MjAzMDBFMDAz
Njg4M0EgLyogV2ViRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MubW0gKi8sCiAJCQkJQTEwQzFENEUx
ODIwMzAwRTAwMzY4ODNBIC8qIFdlYkZpeGVkUG9zaXRpb25Db250ZW50LmggKi8sCiAJCQkJQTEw
QzFENEYxODIwMzAwRTAwMzY4ODNBIC8qIFdlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tICovLAog
CQkJCUExMEMxRDUwMTgyMDMwMEUwMDM2ODgzQSAvKiBXZWJGaXhlZFBvc2l0aW9uQ29udGVudElu
dGVybmFsLmggKi8sCkBAIC0xNjg4LDcgKzE2ODIsNiBAQAogCQkJCTdDMDFDQjg1MTczNDM1Qzkw
MEM1RDgwNyAvKiBQb3B1cE1lbnVNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMEMxRDFFMTgy
MDJGOUMwMDM2ODgzQSAvKiBXZWJEZWZhdWx0VUlLaXREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUEyREJFOUYwRjI1MUUzQTAwMzZGOEE2IC8qIFByb3h5SW5zdGFuY2UuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUExMEMxRDY2MTgyMDMwMEUwMDM2ODgzQSAvKiBXZWJEaXNrSW1hZ2VDYWNo
ZUNsaWVudElPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE2OTgzNjIxMTM0NkQxQjAwODk0MTE1
IC8qIFByb3h5UnVudGltZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MwMUNCODcxNzM0
MzVDOTAwQzVEODA3IC8qIFNlYXJjaFBvcHVwTWVudU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTEwQzFENkYxODIwMzAwRTAwMzY4ODNBIC8qIFdlYkdlb2xvY2F0aW9uSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjE5Miw3ICsyMTg1LDYgQEAKIAkJCQk5Mzk4MTExMzA4MjRCRjAxMDA4
REYwMzggLyogV2ViSGlzdG9yeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMEJEMDgyNEJG
MDEwMDhERjAzOCAvKiBXZWJIaXN0b3J5SXRlbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQUY1
RkMwMEVERTNBOTIwMDhEODgzRCAvKiBXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0gaW4g
U291cmNlcyAqLywKLQkJCQlBMTBDMUQ2NzE4MjAzMDBFMDAzNjg4M0EgLyogV2ViRGlza0ltYWdl
Q2FjaGVDbGllbnRJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTBGMzA4MjRCRjAxMDA4
REYwMzggLyogV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5
ODEwRjQwODI0QkYwMTAwOERGMDM4IC8qIFdlYkhUTUxWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTEwQzFEN0YxODIwMzAzRDAwMzY4ODNBIC8qIFdlYkZyYW1lVmlld1dBS0NvbXBhdGliaWxp
dHkubSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCBiL1NvdXJjZS9XZWJLaXQvaW9z
L1dlYkNvcmVTdXBwb3J0L1dlYkRpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGVhMjE2MDE1ZDhkYzZmMmM5YmNmNjgxY2YwZDVkZDlmMjMwNTMz
ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaAor
KysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgRU5BQkxFKERJ
U0tfSU1BR0VfQ0FDSEUpICYmIFBMQVRGT1JNKElPUykKLQotI2ltcG9ydCA8V2ViQ29yZS9EaXNr
SW1hZ2VDYWNoZUNsaWVudElPUy5oPgotCi1jbGFzcyBXZWJEaXNrSW1hZ2VDYWNoZUNsaWVudCBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZUNsaWVudCB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRGlza0ltYWdlQ2FjaGVDbGllbnQ+IGNyZWF0ZSgpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJEaXNrSW1hZ2VDYWNoZUNsaWVudCgpKTsgfQotcHJpdmF0
ZToKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRGlza0ltYWdlQ2FjaGVEaXJlY3RvcnkoY29u
c3QgV1RGOjpTdHJpbmcmIGRpcmVjdG9yeSkgb3ZlcnJpZGU7Ci19OwotCi12b2lkIFdlYktpdElu
aXRpYWxpemVXZWJEaXNrSW1hZ2VDYWNoZSgpOwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkRpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLm1t
IGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRGlza0ltYWdlQ2FjaGVDbGll
bnRJT1MubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhNWQyOGU2YjI0MDM4ZjA3
ZjRhZDlkZGU5MGVjYWIzODYwNmJlODUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRGlza0lt
YWdlQ2FjaGVDbGllbnRJT1MubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbXBvcnQgIldlYkRpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmgiCi0KLSNpZiBF
TkFCTEUoRElTS19JTUFHRV9DQUNIRSkgJiYgUExBVEZPUk0oSU9TKQotCi0jaW1wb3J0ICJXZWJQ
cmVmZXJlbmNlcy5oIgotI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgiCi0jaW1wb3J0
IDxXZWJDb3JlL0Rpc2tJbWFnZUNhY2hlSU9TLmg+Ci0jaW1wb3J0IDxzeXMvcGFyYW0uaD4KLQot
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLXZvaWQgV2ViRGlza0ltYWdlQ2FjaGVDbGllbnQ6
OmRpZENyZWF0ZURpc2tJbWFnZUNhY2hlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBkaXJl
Y3RvcnkpCi17Ci0gICAgLy8gU2V0IHRoZSBOU0ZpbGVQcm90ZWN0aW9uQ29tcGxldGUgYXR0cmli
dXRlIG9uIHRoZSBkaXJlY3Rvcnkgc28gdGhhdCBpdHMgY29udGVudHMgYXJlIGluYWNjZXNzaWJs
ZSB3aGVuIHRoZSBkZXZpY2UgaXMgbG9ja2VkLgotICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwot
ICAgIE5TU3RyaW5nICpkaXJlY3RvcnlQYXRoID0gZGlyZWN0b3J5OwotICAgIE5TRGljdGlvbmFy
eSAqYXR0cmlidXRlcyA9IEB7TlNGaWxlUHJvdGVjdGlvbktleTogTlNGaWxlUHJvdGVjdGlvbkNv
bXBsZXRlfTsKLSAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gc2V0QXR0
cmlidXRlczphdHRyaWJ1dGVzIG9mSXRlbUF0UGF0aDpkaXJlY3RvcnlQYXRoIGVycm9yOiZlcnJv
cl0pCi0gICAgICAgIE5TTG9nKEAiRGlza0ltYWdlQ2FjaGU6IEZhaWxlZCB0byBzZXQgYXR0cmli
dXRlcyBvbiBkaXNrIGltYWdlIGNhY2hlIGRpcmVjdG9yeTogJUAiLCBlcnJvcik7Ci0KLSAgICBX
ZWJQcmVmZXJlbmNlcyAqc3RhbmRhcmRQcmVmZXJlbmNlcyA9IFtXZWJQcmVmZXJlbmNlcyBzdGFu
ZGFyZFByZWZlcmVuY2VzXTsKLSAgICBBU1NFUlQoIVtbc3RhbmRhcmRQcmVmZXJlbmNlcyBfZGlz
a0ltYWdlQ2FjaGVTYXZlZENhY2hlRGlyZWN0b3J5XSBsZW5ndGhdKTsKLSAgICBbc3RhbmRhcmRQ
cmVmZXJlbmNlcyBfc2V0RGlza0ltYWdlQ2FjaGVTYXZlZENhY2hlRGlyZWN0b3J5OmRpcmVjdG9y
eV07Ci19Ci0KLXN0YXRpYyB2b2lkIHJlbW92ZU9sZERpc2tJbWFnZUNhY2hlRGlyZWN0b3J5KCkK
LXsKLSAgICBXZWJQcmVmZXJlbmNlcyAqc3RhbmRhcmRQcmVmZXJlbmNlcyA9IFtXZWJQcmVmZXJl
bmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXTsKLSAgICBOU1N0cmluZyAqb2xkRGlyZWN0b3J5ID0g
W3N0YW5kYXJkUHJlZmVyZW5jZXMgX2Rpc2tJbWFnZUNhY2hlU2F2ZWRDYWNoZURpcmVjdG9yeV07
Ci0gICAgW3N0YW5kYXJkUHJlZmVyZW5jZXMgX3NldERpc2tJbWFnZUNhY2hlU2F2ZWRDYWNoZURp
cmVjdG9yeTpAIiJdOwotCi0gICAgaWYgKCFbb2xkRGlyZWN0b3J5IGxlbmd0aF0pCi0gICAgICAg
IHJldHVybjsKLQotICAgIGNvbnN0IGNoYXIqIG9sZERpcmVjdG9yeUNTdHJpbmcgPSBbb2xkRGly
ZWN0b3J5IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl07Ci0gICAgY29uc3Qgc2l6ZV90IGxlbmd0
aCA9IHN0cmxlbihvbGREaXJlY3RvcnlDU3RyaW5nKSArIDE7IC8vIEZvciBOVUxMIHRlcm1pbmF0
b3IuCi0gICAgQVNTRVJUKGxlbmd0aCA8IE1BWFBBVEhMRU4pOwotICAgIGlmIChsZW5ndGggPj0g
TUFYUEFUSExFTikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGhpcyBkZWxldGVzIHdoYXRl
dmVyIGRpcmVjdG9yeSB3YXMgbmFtZWQgaW4gdGhlIHVzZXIgZGVmYXVsdHMga2V5LgotICAgIC8v
IFRvIGJlIHNhZmUsIHdlIHJlc29sdmUgdGhlIGFic29sdXRlIHBhdGgsIGFuZCB2ZXJpZnkgdGhh
dCB0aGUKLSAgICAvLyBsYXN0IHBhdGggY29tcG9uZW50IHN0YXJ0cyB3aXRoICJEaXNrSW1hZ2VD
YWNoZSIuCi0KLSAgICAvLyBSZXNvbHZlIHRoZSBvbGQgZGlyZWN0b3J5IHBhdGggdG8gYW4gYWJz
b2x1dGUgcGF0aC4KLSAgICBWZWN0b3I8Y2hhciwgTUFYUEFUSExFTj4gcGF0aChsZW5ndGgpOwot
ICAgIG1lbWNweShwYXRoLmRhdGEoKSwgb2xkRGlyZWN0b3J5Q1N0cmluZywgbGVuZ3RoKTsKLSAg
ICBjaGFyIGFic29sdXRlUGF0aFtNQVhQQVRITEVOXTsKLSAgICBpZiAoIXJlYWxwYXRoKHBhdGgu
ZGF0YSgpLCBhYnNvbHV0ZVBhdGgpKSB7Ci0gICAgICAgIE5TTG9nKEAiRGlza0ltYWdlQ2FjaGU6
IENvdWxkIG5vdCByZXNvbHZlIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBvbGQgZGlyZWN0b3J5
LiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gVmVyaWZ5IHRoZSBsYXN0IHBh
dGggY29tcG9uZW50IHN0YXJ0cyB3aXRoICJEaXNrSW1hZ2VDYWNoZSIuCi0gICAgY29uc3Qgc2l6
ZV90IGFic29sdXRlTGVuZ3RoID0gc3RybGVuKGFic29sdXRlUGF0aCk7Ci0gICAgTlNTdHJpbmcg
KnJlc29sdmVkQWJzb2x1dGVQYXRoID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBz
dHJpbmdXaXRoRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOmFic29sdXRlUGF0aCBsZW5ndGg6YWJz
b2x1dGVMZW5ndGhdOwotICAgIE5TU3RyaW5nICpwcmVmaXggPSBAIkRpc2tJbWFnZUNhY2hlIjsK
LSAgICBpZiAoIVtbcmVzb2x2ZWRBYnNvbHV0ZVBhdGggbGFzdFBhdGhDb21wb25lbnRdIGhhc1By
ZWZpeDpwcmVmaXhdKSB7Ci0gICAgICAgIE5TTG9nKEAiRGlza0ltYWdlQ2FjaGU6IFRoZSBvbGQg
ZGlyZWN0b3J5IGRpZCBub3Qgc3RhcnQgd2l0aCB0aGUgcHJvcGVyIHByZWZpeC4iKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9nbG9i
YWxfcXVldWUoMCwgMCksIF57Ci0gICAgICAgIE5TRXJyb3IgKmVycm9yOwotICAgICAgICBpZiAo
IVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDpvbGREaXJl
Y3RvcnkgZXJyb3I6JmVycm9yXSkKLSAgICAgICAgICAgIE5TTG9nKEAiRGlza0ltYWdlQ2FjaGU6
IEZhaWxlZCB0byBSZW1vdmUgT2xkIERpcmVjdG9yeTogJUAiLCBbZXJyb3IgbG9jYWxpemVkRmFp
bHVyZVJlYXNvbl0pOwotICAgIH0pOwotfQotCi12b2lkIFdlYktpdEluaXRpYWxpemVXZWJEaXNr
SW1hZ2VDYWNoZSgpCi17Ci0gICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKLSAg
ICBpZiAoaW5pdGlhbGl6ZWQpCi0gICAgICAgIHJldHVybjsKLSAgICBpbml0aWFsaXplZCA9IHRy
dWU7Ci0KLSAgICByZW1vdmVPbGREaXNrSW1hZ2VDYWNoZURpcmVjdG9yeSgpOwotCi0gICAgUmVm
UHRyPFdlYkRpc2tJbWFnZUNhY2hlQ2xpZW50PiBzaGFyZWRDbGllbnQgPSBXZWJEaXNrSW1hZ2VD
YWNoZUNsaWVudDo6Y3JlYXRlKCk7Ci0gICAgZGlza0ltYWdlQ2FjaGUoKS5zZXRDbGllbnQoc2hh
cmVkQ2xpZW50LnJlbGVhc2UoKSk7Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoRElTS19JTUFHRV9D
QUNIRSkgJiYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2Vi
Vmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3
L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQppbmRleCA0YjUyMTI3MmU5OWNiMWQ5YzYyMjAxZWM2
NGFmMDE0NzVjZDY0ZDBiLi4xZGRmZTAzMWU3ZjRjZmQ0ODYyMzRlMGI3ODZmM2FmNWY1NzdjMmEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhv
bGRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhv
bGRlci5tbQpAQCAtMjQ5LDMyICsyNDksNiBAQCBzdGF0aWMgY29uc3QgZmxvYXQgUEFHRV9IRUlH
SFRfSU5TRVQgPSA0LjBmICogMi4wZjsKIHsKIH0KIAotI3ByYWdtYSBtYXJrIFdlYkRhdGFTb3Vy
Y2VQcml2YXRlRGVsZWdhdGUgcHJvdG9jb2wKLQotI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hF
KQotLSAodm9pZClkYXRhU291cmNlTWVtb3J5TWFwcGVkCi17Ci0gICAgX2RpZEZpbmlzaExvYWRB
bmRNZW1vcnlNYXAgPSBZRVM7Ci0KLSAgICBDR0RhdGFQcm92aWRlclJlZiBwcm92aWRlciA9IENH
RGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRhUmVmKVtfZGF0YVNvdXJjZSBkYXRh
XSk7Ci0gICAgaWYgKCFwcm92aWRlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX2RvY3VtZW50
ID0gQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihwcm92aWRlcik7Ci0KLSAgICAvLyBE
dW1wIHRoZSBkYXRhIHByb3ZpZGVyIGFzIHNvb24gYXMgcG9zc2libGUgc2luY2UgdGhlIENHUERG
RG9jdW1lbnQgd2lsbCBub3QgaG9sZCBvbnRvIGl0LgotICAgIENHRGF0YVByb3ZpZGVyUmVsZWFz
ZShwcm92aWRlcik7Ci0KLSAgICBbc2VsZiBfZG9Qb3N0TG9hZE9yVW5sb2NrVGFza3NdOwotfQot
Ci0tICh2b2lkKWRhdGFTb3VyY2VNZW1vcnlNYXBGYWlsZWQKLXsKLSAgICAvLyBOb3RoaW5nIHdl
IGNhbiBkbyBhYm91dCB0aGlzLCBqdXN0IGRvIHdoYXQgd2Ugd291bGQgbm9ybWFsbHkgZG8gaW4g
bWVtb3J5LgotICAgIFtzZWxmIGRhdGFTb3VyY2VNZW1vcnlNYXBwZWRdOwotfQotI2VuZGlmCi0K
ICNwcmFnbWEgbWFyayBXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uIHByb3RvY29sCiAKIC0gKHZv
aWQpcmVjZWl2ZWREYXRhOihOU0RhdGEgKilkYXRhIHdpdGhEYXRhU291cmNlOihXZWJEYXRhU291
cmNlICopZGF0YVNvdXJjZQpAQCAtMzAyLDEzICsyNzYsNiBAQCBzdGF0aWMgY29uc3QgZmxvYXQg
UEFHRV9IRUlHSFRfSU5TRVQgPSA0LjBmICogMi4wZjsKIC0gKHZvaWQpZmluaXNoZWRMb2FkaW5n
V2l0aERhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiB7CiAgICAgW3NlbGYg
ZGF0YVNvdXJjZVVwZGF0ZWQ6ZGF0YVNvdXJjZV07Ci0KLSNpZiBFTkFCTEUoRElTS19JTUFHRV9D
QUNIRSkKLSAgICBbZGF0YVNvdXJjZSBzZXREYXRhU291cmNlRGVsZWdhdGU6KE5TT2JqZWN0PFdl
YkRhdGFTb3VyY2VQcml2YXRlRGVsZWdhdGU+ICopc2VsZl07Ci0gICAgW2RhdGFTb3VyY2UgX3Nl
dEFsbG93VG9CZU1lbW9yeU1hcHBlZF07Ci0jZWxzZQotICAgIFtzZWxmIGRhdGFTb3VyY2VNZW1v
cnlNYXBwZWRdOwotI2VuZGlmCiB9CiAKIC0gKEJPT0wpY2FuUHJvdmlkZURvY3VtZW50U291cmNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbQppbmRleCA2MWY2YzFlNjdkZDZmODE3ZDZiZjE5
ZjBlNmMzYzNmMjFhYTIzODczLi45NDMyYTkxYjlmYmM1YzM4Y2FlMDFiN2ZjMDM4MDY5NzMxMzJj
ZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNhY2hlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ2FjaGUubW0KQEAgLTEwOCwxOCArMTA4LDYgQEAK
ICNlbmRpZgogICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cy5zY3JpcHRzLmRl
Y29kZWRTaXplXSwgQCJKYXZhU2NyaXB0IiwKICAgICAgICAgICAgIG5pbF0sCi0jaWYgRU5BQkxF
KERJU0tfSU1BR0VfQ0FDSEUpICYmIFBMQVRGT1JNKElPUykKLSAgICAgICAgW05TRGljdGlvbmFy
eSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6cy5pbWFnZXMubWFwcGVkU2l6ZV0sIEAiSW1hZ2VzIiwKLSAgICAgICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoSW50OnMuY3NzU3R5bGVTaGVldHMubWFwcGVkU2l6ZV0gLEAi
Q1NTIiwKLSNpZiBFTkFCTEUoWFNMVCkKLSAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
SW50OnMueHNsU3R5bGVTaGVldHMubWFwcGVkU2l6ZV0sIEAiWFNMIiwKLSNlbHNlCi0gICAgICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDowXSwgQCJYU0wiLAotI2VuZGlmCi0gICAgICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzLnNjcmlwdHMubWFwcGVkU2l6ZV0sIEAiSmF2
YVNjcmlwdCIsCi0gICAgICAgICAgICBuaWxdLAotI2VuZGlmIC8vIEVOQUJMRShESVNLX0lNQUdF
X0NBQ0hFKSAmJiBQTEFURk9STShJT1MpCiAgICAgICAgIG5pbF07CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCAyZDZiMzY3Y2M4NmUwMmE2MWY1
NmQ2ZjVhNWJhNjVkMGUyN2Y4M2NiLi5iMDIyYzcxNTNiODM4OWU3Y2RjNzY5MGJiOWE5NjljYjhh
MjE3N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBA
IC0xMTIsMTcgKzExMiw2IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZVByaXZhdGUqIHRv
UHJpdmF0ZSh2b2lkKiBwcml2YXRlQXR0cmlidXRlKQogICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PFdlYkRhdGFTb3VyY2VQcml2YXRlKj4ocHJpdmF0ZUF0dHJpYnV0ZSk7CiB9CiAKLSNpZiBF
TkFCTEUoRElTS19JTUFHRV9DQUNIRSkgJiYgUExBVEZPUk0oSU9TKQotc3RhdGljIHZvaWQgQnVm
ZmVyTWVtb3J5TWFwcGVkKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIsIFNoYXJlZEJ1
ZmZlcjo6Q29tcGxldGlvblN0YXR1cyBtYXBTdGF0dXMsIFNoYXJlZEJ1ZmZlcjo6TWVtb3J5TWFw
cGVkTm90aWZ5Q2FsbGJhY2tEYXRhIGRhdGEpCi17Ci0gICAgTlNPYmplY3Q8V2ViRGF0YVNvdXJj
ZVByaXZhdGVEZWxlZ2F0ZT4gKmRlbGVnYXRlID0gWyhXZWJEYXRhU291cmNlICopZGF0YSBkYXRh
U291cmNlRGVsZWdhdGVdOwotICAgIGlmIChtYXBTdGF0dXMgPT0gU2hhcmVkQnVmZmVyOjpTdWNj
ZWVkZWQpCi0gICAgICAgIFtkZWxlZ2F0ZSBkYXRhU291cmNlTWVtb3J5TWFwcGVkXTsKLSAgICBl
bHNlCi0gICAgICAgIFtkZWxlZ2F0ZSBkYXRhU291cmNlTWVtb3J5TWFwRmFpbGVkXTsKLX0KLSNl
bmRpZgotCiBAaW50ZXJmYWNlIFdlYkRhdGFTb3VyY2UgKFdlYkZpbGVJbnRlcm5hbCkKIEBlbmQK
IApAQCAtMjM0LDUwICsyMjMsMTUgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFR5cGVzRnJvbUNs
YXNzKE5TTXV0YWJsZURpY3Rpb25hcnkgKmFsbFR5cGVzLCBDbGFzcyBvYmpDQ2wKIAogLSAodm9p
ZClfc2V0QWxsb3dUb0JlTWVtb3J5TWFwcGVkCiB7Ci0jaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FD
SEUpICYmIFBMQVRGT1JNKElPUykKLSAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IG1haW5SZXNv
dXJjZUJ1ZmZlciA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0
YSgpOwotICAgIGlmICghbWFpblJlc291cmNlQnVmZmVyKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlQnVm
ZmVyLT5zaGFyZWRCdWZmZXIoKTsKLSAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChtYWluUmVzb3VyY2VEYXRhLT5tZW1vcnlNYXBwZWROb3RpZmlj
YXRpb25DYWxsYmFjaygpICE9IEJ1ZmZlck1lbW9yeU1hcHBlZCkgewotICAgICAgICBBU1NFUlQo
IW1haW5SZXNvdXJjZURhdGEtPm1lbW9yeU1hcHBlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKCkgJiYg
IW1haW5SZXNvdXJjZURhdGEtPm1lbW9yeU1hcHBlZE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YSgp
KTsKLSAgICAgICAgbWFpblJlc291cmNlRGF0YS0+c2V0TWVtb3J5TWFwcGVkTm90aWZpY2F0aW9u
Q2FsbGJhY2soQnVmZmVyTWVtb3J5TWFwcGVkLCBzZWxmKTsKLSAgICB9Ci0KLSAgICBzd2l0Y2gg
KG1haW5SZXNvdXJjZURhdGEtPmFsbG93VG9CZU1lbW9yeU1hcHBlZCgpKSB7Ci0gICAgY2FzZSBT
aGFyZWRCdWZmZXI6OlN1Y2Nlc3NBbHJlYWR5TWFwcGVkOgotICAgICAgICBbW3NlbGYgZGF0YVNv
dXJjZURlbGVnYXRlXSBkYXRhU291cmNlTWVtb3J5TWFwcGVkXTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgU2hhcmVkQnVmZmVyOjpQcmV2aW91c2x5UXVldWVkRm9yTWFwcGluZzoKLSAgICBj
YXNlIFNoYXJlZEJ1ZmZlcjo6UXVldWVkRm9yTWFwcGluZzoKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgU2hhcmVkQnVmZmVyOjpGYWlsdXJlQ2FjaGVGdWxsOgotICAgICAgICBbW3NlbGYgZGF0
YVNvdXJjZURlbGVnYXRlXSBkYXRhU291cmNlTWVtb3J5TWFwRmFpbGVkXTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgogfQogCiAtICh2
b2lkKXNldERhdGFTb3VyY2VEZWxlZ2F0ZTooTlNPYmplY3Q8V2ViRGF0YVNvdXJjZVByaXZhdGVE
ZWxlZ2F0ZT4gKilkZWxlZ2F0ZQogewotI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKSAmJiBQ
TEFURk9STShJT1MpCi0gICAgQVNTRVJUKCF0b1ByaXZhdGUoX3ByaXZhdGUpLT5fZGF0YVNvdXJj
ZURlbGVnYXRlKTsKLSAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5fZGF0YVNvdXJjZURlbGVnYXRl
ID0gZGVsZWdhdGU7Ci0jZW5kaWYKIH0KIAogLSAoTlNPYmplY3Q8V2ViRGF0YVNvdXJjZVByaXZh
dGVEZWxlZ2F0ZT4gKilkYXRhU291cmNlRGVsZWdhdGUKIHsKLSNpZiBFTkFCTEUoRElTS19JTUFH
RV9DQUNIRSkgJiYgUExBVEZPUk0oSU9TKQotICAgIHJldHVybiB0b1ByaXZhdGUoX3ByaXZhdGUp
LT5fZGF0YVNvdXJjZURlbGVnYXRlOwotI2Vsc2UKICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRp
ZgogfQogCiBAZW5kCkBAIC00ODAsMjQgKzQzNCw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRU
eXBlc0Zyb21DbGFzcyhOU011dGFibGVEaWN0aW9uYXJ5ICphbGxUeXBlcywgQ2xhc3Mgb2JqQ0Ns
CiAgICAgaWYgKHRvUHJpdmF0ZShfcHJpdmF0ZSkgJiYgdG9Qcml2YXRlKF9wcml2YXRlKS0+aW5j
bHVkZWRJbldlYktpdFN0YXRpc3RpY3MpCiAgICAgICAgIC0tV2ViRGF0YVNvdXJjZUNvdW50Owog
Ci0jaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpICYmIFBMQVRGT1JNKElPUykKLSAgICAvLyBU
aGUgY29kZSB0byByZW1vdmUgbWVtb3J5IG1hcHBlZCBub3RpZmljYXRpb24gaXMgb25seSBuZWVk
ZWQgd2hlbiB3ZSBhcmUgdmlld2luZyBhIFBERiBmaWxlLgotICAgIC8vIEluIHN1Y2ggYSBjYXNl
LCBXZWJQREZWaWV3UGxhY2Vob2xkZXIgc2V0cyBpdHNlbGYgYXMgdGhlIGRhdGFTb3VyY2VEZWxl
Z2F0ZS4gR3VhcmQgdGhlIGFjY2VzcwotICAgIC8vIHRvIG1haW5SZXNvdXJjZURhdGEgd2l0aCB0
aGlzIG5pbCBjaGVjayBzbyB0aGF0IHdlIGF2b2lkIGFzc2VydGlvbnMgZHVlIHRvIHRoZSByZXNv
dXJjZSBiZWluZwotICAgIC8vIG1hZGUgcHVyZ2VhYmxlLgotICAgIGlmIChfcHJpdmF0ZSAmJiBb
c2VsZiBkYXRhU291cmNlRGVsZWdhdGVdKSB7Ci0gICAgICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZl
cj4gbWFpblJlc291cmNlQnVmZmVyID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWlu
UmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgIGlmIChtYWluUmVzb3VyY2VCdWZmZXIpIHsKLSAgICAg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBtYWluUmVzb3Vy
Y2VCdWZmZXItPnNoYXJlZEJ1ZmZlcigpOwotICAgICAgICAgICAgaWYgKG1haW5SZXNvdXJjZURh
dGEgJiYgCi0gICAgICAgICAgICAgICAgbWFpblJlc291cmNlRGF0YS0+bWVtb3J5TWFwcGVkTm90
aWZpY2F0aW9uQ2FsbGJhY2tEYXRhKCkgPT0gc2VsZiAmJgotICAgICAgICAgICAgICAgIG1haW5S
ZXNvdXJjZURhdGEtPm1lbW9yeU1hcHBlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKCkgPT0gQnVmZmVy
TWVtb3J5TWFwcGVkKSB7Ci0gICAgICAgICAgICAgICAgbWFpblJlc291cmNlRGF0YS0+c2V0TWVt
b3J5TWFwcGVkTm90aWZpY2F0aW9uQ2FsbGJhY2sobnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLSAgICAKICNpZiBVU0UoUVVJQ0tfTE9P
SykKICAgICAvLyBBZGRlZCBpbiAtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgY29u
bmVjdGlvbjpkaWRSZWNlaXZlUmVzcG9uc2U6XS4KICAgICBpZiAoTlNVUkwgKnVybCA9IFtbc2Vs
ZiByZXNwb25zZV0gVVJMXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCmluZGV4IGRiYjRkYWVmMDM0MWM5ZTMzOWIwZDlhMTYw
NjA3N2UxZTIyY2U4YmEuLjAzZDA4NGU3YzExYWVjYjNkMjAxNWZmYTI1YjlkZDAzNjc5NjdhZjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5
c1ByaXZhdGUuaApAQCAtMTg3LDkgKzE4Nyw0IEBACiAjZGVmaW5lIFdlYktpdE5ldHdvcmtJbnRl
cmZhY2VOYW1lUHJlZmVyZW5jZUtleSBAIldlYktpdE5ldHdvcmtJbnRlcmZhY2VOYW1lUHJlZmVy
ZW5jZUtleSIKICNlbmRpZgogCi0jZGVmaW5lIFdlYktpdERpc2tJbWFnZUNhY2hlRW5hYmxlZFBy
ZWZlcmVuY2VLZXkgQCJXZWJLaXREaXNrSW1hZ2VDYWNoZUVuYWJsZWQiCi0jZGVmaW5lIFdlYktp
dERpc2tJbWFnZUNhY2hlTWluaW11bUltYWdlU2l6ZVByZWZlcmVuY2VLZXkgQCJXZWJLaXREaXNr
SW1hZ2VDYWNoZU1pbmltdW1JbWFnZVNpemUiCi0jZGVmaW5lIFdlYktpdERpc2tJbWFnZUNhY2hl
TWF4aW11bUNhY2hlU2l6ZVByZWZlcmVuY2VLZXkgQCJXZWJLaXREaXNrSW1hZ2VDYWNoZU1heGlt
dW1DYWNoZVNpemUiCi0jZGVmaW5lIFdlYktpdERpc2tJbWFnZUNhY2hlU2F2ZWRDYWNoZURpcmVj
dG9yeUtleSBAIldlYktpdERpc2tJbWFnZUNhY2hlU2F2ZWRDYWNoZURpcmVjdG9yeSIKLQogI2Rl
ZmluZSBXZWJLaXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnRQcmVmZXJlbmNlS2V5IEAi
V2ViS2l0RW5hYmxlSW5oZXJpdFVSSVF1ZXJ5Q29tcG9uZW50IgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KaW5kZXggM2ZmZGZjMTY4YzMyZTRmYzBiNzM3YmMw
ZDMzMDE3MGIwMTRiZGViOS4uMjZkYzUzYzM4NGQ4N2U5NGZkOGEwYTQ1YmVlNjY1NTgyZTY0MGIw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCkBAIC01
NjUsMTEgKzU2NSw2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykK
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpXS0dldE1pbmltdW1ab29tRm9udFNp
emUoKV0sIFdlYktpdE1pbmltdW1ab29tRm9udFNpemVQcmVmZXJlbmNlS2V5LAogI2VuZGlmCi0j
aWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpICYmIFBMQVRGT1JNKElPUykKLSAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sIFdlYktpdERpc2tJbWFnZUNhY2hlRW5hYmxlZFBy
ZWZlcmVuY2VLZXksCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6KDEw
MCAqIDEwMjQpXSwgV2ViS2l0RGlza0ltYWdlQ2FjaGVNaW5pbXVtSW1hZ2VTaXplUHJlZmVyZW5j
ZUtleSwKLSAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDooMTAwICogMTAy
NCAqIDEwMjQpXSwgV2ViS2l0RGlza0ltYWdlQ2FjaGVNYXhpbXVtQ2FjaGVTaXplUHJlZmVyZW5j
ZUtleSwKLSNlbmRpZgogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aExvbmdMb25nOkFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhKCldLCBXZWJLaXRBcHBsaWNhdGlvbkNhY2hlVG90
YWxRdW90YSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhMb25nTG9uZzpBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6bm9RdW90YSgpXSwgV2ViS2l0QXBwbGljYXRpb25DYWNoZURlZmF1bHRP
cmlnaW5RdW90YSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJL
aXRRVEtpdEVuYWJsZWRQcmVmZXJlbmNlS2V5LApAQCAtMTkwOSw0OCArMTkwNCw2IEBAIHN0YXRp
YyBOU1N0cmluZyAqY2xhc3NJQkNyZWF0b3JJRCA9IG5pbDsKICAgICBbc2VsZiBfc2V0Qm9vbFZh
bHVlOmVuYWJsZWQgZm9yS2V5OldlYktpdEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkUHJlZmVy
ZW5jZUtleV07CiB9CiAKLSNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkgJiYgUExBVEZPUk0o
SU9TKQotLSAoQk9PTClkaXNrSW1hZ2VDYWNoZUVuYWJsZWQKLXsKLSAgICByZXR1cm4gW3NlbGYg
X2Jvb2xWYWx1ZUZvcktleTpXZWJLaXREaXNrSW1hZ2VDYWNoZUVuYWJsZWRQcmVmZXJlbmNlS2V5
XTsKLX0KLQotLSAodm9pZClzZXREaXNrSW1hZ2VDYWNoZUVuYWJsZWQ6KEJPT0wpZW5hYmxlZAot
ewotICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6ZW5hYmxlZCBmb3JLZXk6V2ViS2l0RGlza0ltYWdl
Q2FjaGVFbmFibGVkUHJlZmVyZW5jZUtleV07Ci19Ci0KLS0gKHVuc2lnbmVkKWRpc2tJbWFnZUNh
Y2hlTWluaW11bUltYWdlU2l6ZQotewotICAgIHJldHVybiBbc2VsZiBfaW50ZWdlclZhbHVlRm9y
S2V5OldlYktpdERpc2tJbWFnZUNhY2hlTWluaW11bUltYWdlU2l6ZVByZWZlcmVuY2VLZXldOwot
fQotCi0tICh2b2lkKXNldERpc2tJbWFnZUNhY2hlTWluaW11bUltYWdlU2l6ZToodW5zaWduZWQp
bWluaW11bVNpemUKLXsKLSAgICBbc2VsZiBfc2V0SW50ZWdlclZhbHVlOm1pbmltdW1TaXplIGZv
cktleTpXZWJLaXREaXNrSW1hZ2VDYWNoZU1pbmltdW1JbWFnZVNpemVQcmVmZXJlbmNlS2V5XTsK
LX0KLQotLSAodW5zaWduZWQpZGlza0ltYWdlQ2FjaGVNYXhpbXVtQ2FjaGVTaXplCi17Ci0gICAg
cmV0dXJuIFtzZWxmIF9pbnRlZ2VyVmFsdWVGb3JLZXk6V2ViS2l0RGlza0ltYWdlQ2FjaGVNYXhp
bXVtQ2FjaGVTaXplUHJlZmVyZW5jZUtleV07Ci19Ci0KLS0gKHZvaWQpc2V0RGlza0ltYWdlQ2Fj
aGVNYXhpbXVtQ2FjaGVTaXplOih1bnNpZ25lZCltYXhpbXVtU2l6ZQotewotICAgIFtzZWxmIF9z
ZXRJbnRlZ2VyVmFsdWU6bWF4aW11bVNpemUgZm9yS2V5OldlYktpdERpc2tJbWFnZUNhY2hlTWF4
aW11bUNhY2hlU2l6ZVByZWZlcmVuY2VLZXldOwotfQotCi0tIChOU1N0cmluZyAqKV9kaXNrSW1h
Z2VDYWNoZVNhdmVkQ2FjaGVEaXJlY3RvcnkKLXsKLSAgICByZXR1cm4gW1tzZWxmIF9zdHJpbmdW
YWx1ZUZvcktleTpXZWJLaXREaXNrSW1hZ2VDYWNoZVNhdmVkQ2FjaGVEaXJlY3RvcnlLZXldIHN0
cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdOwotfQotCi0tICh2b2lkKV9zZXREaXNrSW1hZ2VDYWNo
ZVNhdmVkQ2FjaGVEaXJlY3Rvcnk6KE5TU3RyaW5nICopcGF0aAotewotICAgIFtzZWxmIF9zZXRT
dHJpbmdWYWx1ZTpbcGF0aCBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSBmb3JLZXk6V2ViS2l0
RGlza0ltYWdlQ2FjaGVTYXZlZENhY2hlRGlyZWN0b3J5S2V5XTsKLX0KLSNlbmRpZiAvLyBFTkFC
TEUoRElTS19JTUFHRV9DQUNIRSkgJiYgUExBVEZPUk0oSU9TKQotCiAtIChCT09MKWlzRnJhbWVG
bGF0dGVuaW5nRW5hYmxlZAogewogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5Oldl
YktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDMyNmE5Y2Rh
YWIyMDMxNDRkNmEyOGUzNGQxNTg4NmY0MmVhYzdjNTIuLmU0ZGExZmYyMDAzNjk2ZDU4N2IzNTE0
NTNlZDFjYmFkMjBlZWUyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMjcxLDE4ICsyNzEsNiBAQCBleHRlcm4gTlNTdHJp
bmcgKldlYlByZWZlcmVuY2VzQ2FjaGVNb2RlbENoYW5nZWRJbnRlcm5hbE5vdGlmaWNhdGlvbjsK
IC0gKHZvaWQpX3NldE1pbmltdW1ab29tRm9udFNpemU6KGZsb2F0KXNpemU7CiAtIChmbG9hdClf
bWluaW11bVpvb21Gb250U2l6ZTsKIAotLSAoQk9PTClkaXNrSW1hZ2VDYWNoZUVuYWJsZWQ7Ci0t
ICh2b2lkKXNldERpc2tJbWFnZUNhY2hlRW5hYmxlZDooQk9PTCllbmFibGVkOwotCi0tICh1bnNp
Z25lZClkaXNrSW1hZ2VDYWNoZU1pbmltdW1JbWFnZVNpemU7Ci0tICh2b2lkKXNldERpc2tJbWFn
ZUNhY2hlTWluaW11bUltYWdlU2l6ZToodW5zaWduZWQpbWluaW11bVNpemU7Ci0KLS0gKHVuc2ln
bmVkKWRpc2tJbWFnZUNhY2hlTWF4aW11bUNhY2hlU2l6ZTsKLS0gKHZvaWQpc2V0RGlza0ltYWdl
Q2FjaGVNYXhpbXVtQ2FjaGVTaXplOih1bnNpZ25lZCltYXhpbXVtU2l6ZTsKLQotLSAoTlNTdHJp
bmcgKilfZGlza0ltYWdlQ2FjaGVTYXZlZENhY2hlRGlyZWN0b3J5OwotLSAodm9pZClfc2V0RGlz
a0ltYWdlQ2FjaGVTYXZlZENhY2hlRGlyZWN0b3J5OihOU1N0cmluZyAqKXBhdGg7Ci0KIC0gKHZv
aWQpc2V0TWVkaWFQbGF5YmFja0FsbG93c0FpclBsYXk6KEJPT0wpZmxhZzsKIC0gKEJPT0wpbWVk
aWFQbGF5YmFja0FsbG93c0FpclBsYXk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQppbmRleCAzZjJmODdlMGY0OTgzMTNiYjc2NTE4NTAxOGViNTY1NzUzYjBiMTdmLi41
NTE2OTUyY2QyNTBmOGY5YTg2NWRmMmE1MzgwOTEyZmRjYWEwZWM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0yNTQsMTEgKzI1NCw2IEBACiAjaW1wb3J0IDxXZWJLaXRM
ZWdhY3kvV2ViRGFzaGJvYXJkUmVnaW9uLmg+CiAjZW5kaWYKIAotI2lmIEVOQUJMRShESVNLX0lN
QUdFX0NBQ0hFKSAmJiBQTEFURk9STShJT1MpCi0jaW1wb3J0ICJXZWJEaXNrSW1hZ2VDYWNoZUNs
aWVudElPUy5oIgotI2ltcG9ydCA8V2ViQ29yZS9EaXNrSW1hZ2VDYWNoZUlPUy5oPgotI2VuZGlm
Ci0KICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICNpbXBvcnQgPEphdmFTY3JpcHRDb3Jl
L1JlbW90ZUluc3BlY3Rvci5oPgogI2lmIFBMQVRGT1JNKElPUykKQEAgLTI3OCwxMSArMjczLDYg
QEAKICNpbXBvcnQgPFdlYkNvcmUvV2ViRXZlbnRSZWdpb24uaD4KICNlbmRpZgogCi0jaWYgRU5B
QkxFKERJU0tfSU1BR0VfQ0FDSEUpCi0jaW1wb3J0ICJXZWJEaXNrSW1hZ2VDYWNoZUNsaWVudElP
Uy5oIgotI2ltcG9ydCA8V2ViQ29yZS9EaXNrSW1hZ2VDYWNoZUlPUy5oPgotI2VuZGlmCi0KICNp
ZiBFTkFCTEUoR0FNRVBBRCkKICNpbXBvcnQgPFdlYkNvcmUvSElER2FtZXBhZFByb3ZpZGVyLmg+
CiAjZW5kaWYKQEAgLTkwMyw5ICs4OTMsNiBAQCBzdGF0aWMgdm9pZCBXZWJLaXRJbml0aWFsaXpl
R2FtZXBhZFByb3ZpZGVySWZOZWNlc3NhcnkoKQogI2VuZGlmCiAgICAgICAgIFdlYktpdEluaXRp
YWxpemVTdG9yYWdlSWZOZWNlc3NhcnkoKTsKICAgICAgICAgV2ViS2l0SW5pdGlhbGl6ZUFwcGxp
Y2F0aW9uQ2FjaGVQYXRoSWZOZWNlc3NhcnkoKTsKLSNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNI
RSkgJiYgUExBVEZPUk0oSU9TKQotICAgICAgICBXZWJLaXRJbml0aWFsaXplV2ViRGlza0ltYWdl
Q2FjaGUoKTsKLSNlbmRpZgogI2lmIEVOQUJMRShHQU1FUEFEKQogICAgICAgICBXZWJLaXRJbml0
aWFsaXplR2FtZXBhZFByb3ZpZGVySWZOZWNlc3NhcnkoKTsKICNlbmRpZgpAQCAtMTIzMCwxMyAr
MTIxNyw2IEBAIHN0YXRpYyB2b2lkIFdlYktpdEluaXRpYWxpemVHYW1lcGFkUHJvdmlkZXJJZk5l
Y2Vzc2FyeSgpCiAKICAgICB0aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIoKS50cmltVW5wYXJl
bnRlZFRpbGVzVG9UYXJnZXQoMCk7CiAKLSNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKLSAg
ICB7Ci0gICAgICAgIFdlYktpdDo6TWVtb3J5TWVhc3VyZSBtZWFzdXJlcigiTWVtb3J5IHdhcm5p
bmc6IGZsdXNoaW5nIGltYWdlcyB0byBkaXNrLiIpOwotICAgICAgICBXZWJDb3JlOjptZW1vcnlD
YWNoZSgpLT5mbHVzaENhY2hlZEltYWdlc1RvRGlzaygpOwotICAgIH0KLSNlbmRpZgotCiAgICAg
W1dlYlN0b3JhZ2VNYW5hZ2VyIGNsb3NlSWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlc107CiAKICAg
ICBbV2ViVmlldyBfcmVsZWFzZU1lbW9yeU5vd107CkBAIC0yNDA5LDEzICsyMzg5LDYgQEAgc3Rh
dGljIGJvb2wgbmVlZHNTZWxmUmV0YWluV2hpbGVMb2FkaW5nUXVpcmsoKQogICAgIGlmIChfcHJp
dmF0ZS0+em9vbXNUZXh0T25seSAhPSB6b29tc1RleHRPbmx5KQogICAgICAgICBbc2VsZiBfc2V0
Wm9vbU11bHRpcGxpZXI6X3ByaXZhdGUtPnpvb21NdWx0aXBsaWVyIGlzVGV4dE9ubHk6em9vbXNU
ZXh0T25seV07CiAKLSNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkgJiYgUExBVEZPUk0oSU9T
KQotICAgIERpc2tJbWFnZUNhY2hlJiBkaXNrSW1hZ2VDYWNoZSA9IFdlYkNvcmU6OmRpc2tJbWFn
ZUNhY2hlKCk7Ci0gICAgZGlza0ltYWdlQ2FjaGUuc2V0RW5hYmxlZChbcHJlZmVyZW5jZXMgZGlz
a0ltYWdlQ2FjaGVFbmFibGVkXSk7Ci0gICAgZGlza0ltYWdlQ2FjaGUuc2V0TWluaW11bUltYWdl
U2l6ZShbcHJlZmVyZW5jZXMgZGlza0ltYWdlQ2FjaGVNaW5pbXVtSW1hZ2VTaXplXSk7Ci0gICAg
ZGlza0ltYWdlQ2FjaGUuc2V0TWF4aW11bUNhY2hlU2l6ZShbcHJlZmVyZW5jZXMgZGlza0ltYWdl
Q2FjaGVNYXhpbXVtQ2FjaGVTaXplXSk7Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKElPUykKICAg
ICBbW3NlbGYgd2luZG93XSBzZXRUaWxlQm9yZGVyc1Zpc2libGU6W3ByZWZlcmVuY2VzIHNob3dE
ZWJ1Z0JvcmRlcnNdXTsKICAgICBbW3NlbGYgd2luZG93XSBzZXRUaWxlUGFpbnRDb3VudHNWaXNp
YmxlOltwcmVmZXJlbmNlcyBzaG93UmVwYWludENvdW50ZXJdXTsK
</data>
<flag name="review"
          id="262333"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>