<?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>142827</bug_id>
          
          <creation_ts>2015-03-18 08:38:41 -0700</creation_ts>
          <short_desc>Use Shadow DOM for unavaialable plug-in message</short_desc>
          <delta_ts>2015-03-18 08:41:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1078199</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-03-18 08:38:41 -0700</bug_when>
    <thetext>Use Shadow DOM for unavaialable plug-in message</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078202</commentid>
    <comment_count>1</comment_count>
      <attachid>248933</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-03-18 08:41:51 -0700</bug_when>
    <thetext>Created attachment 248933
WIP</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248933</attachid>
            <date>2015-03-18 08:41:51 -0700</date>
            <delta_ts>2015-03-18 08:41:51 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-142827-20150318084120.patch</filename>
            <type>text/plain</type>
            <size>55676</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxMjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCA5YjQ5NDNlZDY4MDM3MWE0OGMxMTZiYThjNzE0MmNiMzc1YWMzNjliLi4zMDQ0ZWZjOGEz
OWE5MTVhZTI2OTYwNWRjOGU2ZGNjOWMxNWI1MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKQEAgLTk4OCw4ICs5ODgsOCBAQCBlbmRpZgogCiBQTFVHX0lOU19SRVNPVVJDRVMgPSAk
KFdlYkNvcmUpL1Jlc291cmNlcy9wbHVnSW5zLmpzCiAKLVBsdWdJbnNSZXNvdXJjZXMuaCA6IGNz
cy9tYWtlLWNzcy1maWxlLWFycmF5cy5wbCBiaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3Nvci5w
bSAkKFBMVUdfSU5TX1JFU09VUkNFUykgJChQTEFURk9STV9GRUFUVVJFX0RFRklORVMpCi0JJChQ
RVJMKSAtSSQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkPCAtLWRlZmluZXMgIiQoRkVBVFVS
RV9ERUZJTkVTKSIgJEAgUGx1Z0luc1Jlc291cmNlc0RhdGEuY3BwICQoUExVR19JTlNfUkVTT1VS
Q0VTKQorUGx1Z0luc1Jlc291cmNlcy5oIDogU2NyaXB0cy9tYWtlLWpzLWZpbGUtYXJyYXlzLnB5
ICQoUExVR19JTlNfUkVTT1VSQ0VTKQorCVBZVEhPTlBBVEg9JChJbnNwZWN0b3JTY3JpcHRzKSAk
KFBZVEhPTikgJDwgJEAgIFBsdWdJbnNSZXNvdXJjZXNEYXRhLmNwcCAkKFBMVUdfSU5TX1JFU09V
UkNFUykKIAogIyAtLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJj
ZXMvcGx1Z0lucy5qcyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wbHVnSW5zLmpzCmluZGV4
IDg2NDE5M2Y3OWM4MWEyYWUzM2Y3NzhlNTliMmZlN2JmZGZjMDc2OTAuLjE2NzY5OGQ2MmMzMjli
MjVjYzU4ZjZmZmU0Y2RmMWNjNDNhMzdlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Jl
c291cmNlcy9wbHVnSW5zLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wbHVnSW5z
LmpzCkBAIC0zNCwzICszNCwyNSBAQCBmdW5jdGlvbiBjcmVhdGVPdmVybGF5KHNoYWRvd1Jvb3Qs
IHRpdGxlVGV4dCwgc3VidGl0bGVUZXh0KQogCiAgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChz
aGFkb3dDb250YWluZXIpOwogfTsKKworZnVuY3Rpb24gY3JlYXRlUGx1Z0luVW5hdmFpbGFibGVN
ZXNzYWdlKHNoYWRvd1Jvb3QsIHBsdWdpblVuYXZhaWxhYmxlVGV4dCwgY2xpY2thYmxlKQorewor
ICAgIHZhciBzaGFkb3dDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICBzaGFkb3dDb250YWluZXIuc2V0QXR0cmlidXRlKCdwc2V1ZG8nLCAnLXdlYmtpdC1wbHVn
aW4tdW5hdmFpbGFibGUtY29udGVudCcpOworICAgIHNoYWRvd0NvbnRhaW5lci5jbGFzc05hbWUg
PSAnLXdlYmtpdC1wbHVnaW4tdW5hdmFpbGFibGUtY29udGVudCc7CisgICAgc2hhZG93Um9vdC5h
cHBlbmRDaGlsZChzaGFkb3dDb250YWluZXIpOworCisgICAgdmFyIHBsdWdpblVuYXZhaWxhYmxl
TGFiZWwgPSBzaGFkb3dDb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2JykpOworICAgIHBsdWdpblVuYXZhaWxhYmxlTGFiZWwuY2xhc3NOYW1lID0gJ3VuYXZh
aWxhYmxlLWxhYmVsJzsKKworICAgIHZhciBwbHVnaW5VbmF2YWlsYWJsZU1lc3NhZ2UgPSBwbHVn
aW5VbmF2YWlsYWJsZUxhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpKTsKKyAgICBwbHVnaW5VbmF2YWlsYWJsZU1lc3NhZ2UuY2xhc3NOYW1lID0gJ3VuYXZhaWxh
YmxlLW1lc3NhZ2UnOworICAgIHBsdWdpblVuYXZhaWxhYmxlTWVzc2FnZS50ZXh0Q29udGVudCA9
IHBsdWdpblVuYXZhaWxhYmxlVGV4dDsKKworICAgIGlmIChjbGlja2FibGUpIHsKKyAgICAgICAg
c2hhZG93Q29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2NsaWNrYWJsZScpOworCisgICAgICAgIHZh
ciBwbHVnaW5VbmF2YWlsYWJsZUdseXBoID0gcGx1Z2luVW5hdmFpbGFibGVMYWJlbC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CisgICAgICAgIHBsdWdpblVuYXZh
aWxhYmxlR2x5cGguY2xhc3NOYW1lID0gJ3VuYXZhaWxhYmxlLWdseXBoJworICAgIH0KK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggOGI3YzQ3MDllNzIxODZkNTllYmY2YWMzNjU0YTA0YTg5MDcwOTcwYi4uNzM5MDMzZTJlNTZl
YTk5MjNkMGI2ZTAxYWJmNDMwMzI4ZmJhYWJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTc5Nyw2ICs1Nzk3LDcgQEAKIAkJ
Q0RGMkIwMTcxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREYyQjAwRDE4MjA1
NDA2MDBGMkI0MjQgLyogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCAqLzsgfTsKIAkJQ0RGMkIw
MTgxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tUcmFja3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGMkIwMEUxODIwNTQwNjAwRjJCNDI0IC8qIE1v
Y2tUcmFja3MuY3BwICovOyB9OwogCQlDREYyQjAxOTE4MjA1NDA3MDBGMkI0MjQgLyogTW9ja1Ry
YWNrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RG
MkIwMEYxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCAqLzsgfTsKKwkJQ0RGNDE5OUEx
QUIwRTIzMDAwNEU2NEUxIC8qIG1pc3NpbmdJbWFnZUAzeC5wbmcgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjQxOTk5MUFCMERBMTQwMDRFNjRFMSAv
KiBtaXNzaW5nSW1hZ2VAM3gucG5nICovOyB9OwogCQlDREY2NUNDODE0NUIxRTc1MDBDNEM3QUEg
LyogTWVkaWFDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDI3RjZFNDE0NTc2Nzg3MDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RGNjVD
Q0ExNDVCNDQ4ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQzkxNDVCNDNBNzAw
QzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNERjc0ODNFMThGRUJDRUMwMDA2RUNDMCAv
KiBHcmlkUmVzb2x2ZWRQb3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREY3NDgzQzE4RkVCQ0VDMDAwNkVDQzAgLyogR3JpZFJlc29sdmVk
UG9zaXRpb24uY3BwICovOyB9OwpAQCAtMjcxMzYsNiArMjcxMzcsNyBAQAogCQkJCTdBMUQ3RkNC
MThGODVGMEYwMEMzODVBRCAvKiBtZWRpYUNvbnRyb2xzTG9jYWxpemVkU3RyaW5ncy5qcyBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkJOTMxNTNCRTIxNDE5NUE1NzAwRkNGNUJFIC8qIG1pc3NpbmdJbWFn
ZS5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTkzMTUzQkRBMTQxODFGN0EwMEZDRjVCRSAvKiBt
aXNzaW5nSW1hZ2VAMngucG5nIGluIFJlc291cmNlcyAqLywKKwkJCQlDREY0MTk5QTFBQjBFMjMw
MDA0RTY0RTEgLyogbWlzc2luZ0ltYWdlQDN4LnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJQkU4
Qzc1MzExMDY4MTMyNDAwMUU5M0Y1IC8qIFNwZWxsaW5nRG90LnBuZyBpbiBSZXNvdXJjZXMgKi8s
CiAJCQkJMDFFNkMyRTQxMTk0QjI4MjAwNTA4MjFDIC8qIFNwZWxsaW5nRG90QDJ4LnBuZyBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkJMUMyNDE3QkExOTkyQzA0MTAwRUY5OTM4IC8qIFNwZWxsaW5nRG90
QDN4LnBuZyBpbiBSZXNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGx1Z0lucy5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGx1Z0lucy5jc3MKaW5kZXggMzkzMjE4
ZjM4MGMzZGYwMDJkNjk4NzBmMWE2ZGM2M2I0YmFmMzg4Ny4uMzJlMjg3OTI0NWM0MDAwYmM5NGRm
MjY0ODlhNDA5ZjM2YWYyNmI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BsdWdJ
bnMuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wbHVnSW5zLmNzcwpAQCAtOTEsMyArOTEs
NzUgQEAgb2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50ID4gLnNuYXBz
aG90LW92ZXJsYXkgPiAuc25hcHNob3QtbGFiZWwKICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAg
ICAgY29sb3I6ICM0NDQ7CiB9CisKKy4td2Via2l0LXBsdWdpbi11bmF2YWlsYWJsZS1jb250ZW50
LAorZW1iZWQ6Oi13ZWJraXQtcGx1Z2luLXVuYXZhaWxhYmxlLWNvbnRlbnQsCitvYmplY3Q6Oi13
ZWJraXQtcGx1Z2luLXVuYXZhaWxhYmxlLWNvbnRlbnQKK3sKKyAgICB3aWR0aDogaW5oZXJpdDsK
KyAgICBoZWlnaHQ6IGluaGVyaXQ7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIGRpc3Bs
YXk6IC13ZWJraXQtYm94OworICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKKyAg
ICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRl
cjsKK30KKworLi13ZWJraXQtcGx1Z2luLXVuYXZhaWxhYmxlLWNvbnRlbnQgPiAudW5hdmFpbGFi
bGUtbGFiZWwsCitlbWJlZDo6LXdlYmtpdC1wbHVnaW4tdW5hdmFpbGFibGUtY29udGVudCA+IC51
bmF2YWlsYWJsZS1sYWJlbCwKK29iamVjdDo6LXdlYmtpdC1wbHVnaW4tdW5hdmFpbGFibGUtY29u
dGVudCA+IC51bmF2YWlsYWJsZS1sYWJlbAoreworICAgIC13ZWJraXQtYm94LXNpemluZzogYm9y
ZGVyLWJveDsKKyAgICBmb250LXNpemU6IDlwdDsKKyAgICBoZWlnaHQ6IGNhbGMoMWVtICsgMTRw
eCk7CisgICAgbGluZS1oZWlnaHQ6IGNhbGMoMWVtICsgMTBweCk7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjk1KTsKKyAgICBib3JkZXI6IDJweCBzb2xpZCBy
Z2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpOworICAgIGJvcmRlci1yYWRpdXM6IGNhbGMoMC41ZW0g
KyA3cHgpOworICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLWZvbnQ7CisgICAgZGlzcGxh
eTogLXdlYmtpdC1ib3g7CisgICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOworICAg
IC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKKyAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVy
OworICAgIGN1cnNvcjogZGVmYXVsdDsKK30KKy4td2Via2l0LXBsdWdpbi11bmF2YWlsYWJsZS1j
b250ZW50LmNsaWNrYWJsZSA+IC51bmF2YWlsYWJsZS1sYWJlbCwKK2VtYmVkOjotd2Via2l0LXBs
dWdpbi11bmF2YWlsYWJsZS1jb250ZW50LmNsaWNrYWJsZSA+IC51bmF2YWlsYWJsZS1sYWJlbCwK
K29iamVjdDo6LXdlYmtpdC1wbHVnaW4tdW5hdmFpbGFibGUtY29udGVudC5jbGlja2FibGUgPiAu
dW5hdmFpbGFibGUtbGFiZWwKK3sKKyAgICBjdXJzb3I6IHBvaW50ZXI7Cit9CisKKy4td2Via2l0
LXBsdWdpbi11bmF2YWlsYWJsZS1jb250ZW50LmNsaWNrYWJsZTphY3RpdmUgPiAudW5hdmFpbGFi
bGUtbGFiZWwsCitlbWJlZDo6LXdlYmtpdC1wbHVnaW4tdW5hdmFpbGFibGUtY29udGVudC5jbGlj
a2FibGU6YWN0aXZlID4gLnVuYXZhaWxhYmxlLWxhYmVsLAorb2JqZWN0Ojotd2Via2l0LXBsdWdp
bi11bmF2YWlsYWJsZS1jb250ZW50LmNsaWNrYWJsZTphY3RpdmUgPiAudW5hdmFpbGFibGUtbGFi
ZWwKK3sKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEwNSwgMTA1LCAxMDUsIDAuOTUpOwor
fQorCisuLXdlYmtpdC1wbHVnaW4tdW5hdmFpbGFibGUtY29udGVudCA+IC51bmF2YWlsYWJsZS1s
YWJlbCA+IC51bmF2YWlsYWJsZS1tZXNzYWdlLAorZW1iZWQ6Oi13ZWJraXQtcGx1Z2luLXVuYXZh
aWxhYmxlLWNvbnRlbnQgPiAudW5hdmFpbGFibGUtbGFiZWwgPiAudW5hdmFpbGFibGUtbWVzc2Fn
ZSwKK29iamVjdDo6LXdlYmtpdC1wbHVnaW4tdW5hdmFpbGFibGUtY29udGVudCA+IC51bmF2YWls
YWJsZS1sYWJlbCA+IC51bmF2YWlsYWJsZS1tZXNzYWdlCit7CisgICAgLXdlYmtpdC11c2VyLXNl
bGVjdDogbm9uZTsKKyAgICBjb2xvcjogd2hpdGU7CisgICAgbWFyZ2luOiAwIDEwcHg7Cit9CisK
Ky4td2Via2l0LXBsdWdpbi11bmF2YWlsYWJsZS1jb250ZW50LmNsaWNrYWJsZSA+IC51bmF2YWls
YWJsZS1sYWJlbCA+IC51bmF2YWlsYWJsZS1tZXNzYWdlLAorZW1iZWQ6Oi13ZWJraXQtcGx1Z2lu
LXVuYXZhaWxhYmxlLWNvbnRlbnQuY2xpY2thYmxlID4gLnVuYXZhaWxhYmxlLWxhYmVsID4gLnVu
YXZhaWxhYmxlLW1lc3NhZ2UsCitvYmplY3Q6Oi13ZWJraXQtcGx1Z2luLXVuYXZhaWxhYmxlLWNv
bnRlbnQuY2xpY2thYmxlID4gLnVuYXZhaWxhYmxlLWxhYmVsID4gLnVuYXZhaWxhYmxlLW1lc3Nh
Z2UKK3sKKyAgICBtYXJnaW46IDAgNXB4IDAgMTBweDsKK30KKworLi13ZWJraXQtcGx1Z2luLXVu
YXZhaWxhYmxlLWNvbnRlbnQgPiAudW5hdmFpbGFibGUtbGFiZWwgPiAudW5hdmFpbGFibGUtZ2x5
cGgsCitlbWJlZDo6LXdlYmtpdC1wbHVnaW4tdW5hdmFpbGFibGUtY29udGVudCA+IC51bmF2YWls
YWJsZS1sYWJlbCA+IC51bmF2YWlsYWJsZS1nbHlwaCwKK29iamVjdDo6LXdlYmtpdC1wbHVnaW4t
dW5hdmFpbGFibGUtY29udGVudCA+IC51bmF2YWlsYWJsZS1sYWJlbCA+IC51bmF2YWlsYWJsZS1n
bHlwaAoreworICAgIGJhY2tncm91bmQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgdmll
d2JveD0iMCAwIDE2IDE2IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0id2hpdGUiPjxkZWZzPjxtYXNrIGlkPSJtYXNrIj48cmVj
dCBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGZpbGw9IndoaXRlIi8+PHBhdGggZD0iTTQsOCBoOCBt
LTQsLTQgbDQsNCBsLTQsNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRo
PSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L21h
c2s+PC9kZWZzPjxjaXJjbGUgc3R5bGU9Im1hc2s6IHVybCgjbWFzaykiIGN4PSI4IiBjeT0iOCIg
cj0iOCIvPjwvc3ZnPicpOworICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CisgICAgd2lkdGg6
IGNhbGMoMWVtICsgNXB4KTsKKyAgICBoZWlnaHQ6IGNhbGMoMWVtICsgNXB4KTsKKyAgICBtYXJn
aW4tcmlnaHQ6IDNweDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDgzNmY1ZGY0MjBj
ZGJmYmJmNDg2YWU5NzM2OWEyMmRjOWMzODNlODYuLjQ1NzMyYWU2OTUyNGEyZWNhMTA3NmIxNDI0
YTUyZWVmODdiNzkzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjMwNSw3ICs2MzA1
LDEzIEBAIHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFw
cGVyV29ybGQmIHdvcmxkKQogICAgIGlmICghanNTdHJpbmcpCiAgICAgICAgIGpzU3RyaW5nID0g
U3RyaW5nKHBsdWdJbnNKYXZhU2NyaXB0LCBzaXplb2YocGx1Z0luc0phdmFTY3JpcHQpKTsKIAot
ICAgIG1fZnJhbWUtPm1haW5GcmFtZSgpLnNjcmlwdCgpLmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRT
b3VyY2VDb2RlKGpzU3RyaW5nKSwgd29ybGQpOworI2lmbmRlZiBOREVCVUcKKyAgICAvLyBTZXR0
aW5nIGEgc2NyaXB0VVJMIGFsbG93cyB0aGUgc291cmNlIHRvIGJlIGRlYnVnZ2FibGUgaW4gdGhl
IGluc3BlY3Rvci4KKyAgICBVUkwgc2NyaXB0VVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgQVND
SUlMaXRlcmFsKCJwbHVnSW5zU2NyaXB0IikpOworI2Vsc2UKKyAgICBVUkwgc2NyaXB0VVJMOwor
I2VuZGlmCisgICAgbV9mcmFtZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZXZhbHVhdGVJbldvcmxk
KFNjcmlwdFNvdXJjZUNvZGUoanNTdHJpbmcsIHNjcmlwdFVSTCksIHdvcmxkKTsKIAogICAgIG1f
aGFzSW5qZWN0ZWRQbHVnSW5zU2NyaXB0ID0gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggNTU4ZDE0OTk2NzIwOWU4NDUzOGI2NGUzNzI4NGI2
NTU3N2E1ZWUyOS4uNzRlZDg5NzA5YTYzZTM2NDQ4ZDFlZDc5NjMzZmY1YjlhMzNiYjAxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTM1LDggKzM1LDEw
IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIk1haW5GcmFt
ZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVk
ZSAiUGx1Z2luUmVwbGFjZW1lbnQuaCIKQEAgLTUwLDYgKzUyLDggQEAKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCiAjaW5jbHVkZSAiU3ViZnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJXaWRnZXQu
aCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNCYXNlLmg+CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICNp
bmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgpAQCAtNjQsNiArNjgsMzMgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCitjbGFzcyBIVE1MUGx1Z0lu
RWxlbWVudFVuYXZhaWxhYmxlQ2FsbGJhY2sgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxIVE1MUGx1Z0luRWxlbWVudFVuYXZhaWxhYmxlQ2FsbGJhY2s+
IGNyZWF0ZShIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEhUTUxQbHVnSW5FbGVtZW50VW5hdmFpbGFibGVDYWxsYmFjayhlbGVt
ZW50KSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SFRNTFBsdWdJbkVsZW1lbnRVbmF2YWlsYWJs
ZUNhbGxiYWNrKCkgeyB9CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRM
aXN0ZW5lciYgb3RoZXIpIG92ZXJyaWRlIHsgcmV0dXJuIHRoaXMgPT0gJm90aGVyOyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50
KiBldmVudCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChtX2VsZW1lbnQgJiYgZXZlbnQt
PnR5cGUoKSA9PSAibWVzc2FnZWNsaWNrZWQiKQorICAgICAgICAgICAgbV9lbGVtZW50LT5oYW5k
bGVVbmF2YWlsYWJsZU1lc3NhZ2VDbGlja2VkKGV2ZW50KTsKKyAgICB9CisKKyAgICB2b2lkIGlu
dmFsaWRhdGUoKSB7IG1fZWxlbWVudCA9IG51bGxwdHI7IH0KKworcHJpdmF0ZToKKyAgICBIVE1M
UGx1Z0luRWxlbWVudFVuYXZhaWxhYmxlQ2FsbGJhY2soSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1l
bnQpCisgICAgICAgIDogRXZlbnRMaXN0ZW5lcihFdmVudExpc3RlbmVyOjpDUFBFdmVudExpc3Rl
bmVyVHlwZSkKKyAgICAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKKyAgICB7CisgICAgfQorICAg
IEhUTUxQbHVnSW5FbGVtZW50KiBtX2VsZW1lbnQ7Cit9OworCiBIVE1MUGx1Z0luRWxlbWVudDo6
SFRNTFBsdWdJbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50KQogICAgIDogSFRNTEZyYW1lT3duZXJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KQogICAgICwgbV9pbkJlZm9yZUxvYWRFdmVudEhhbmRsZXIoZmFsc2UpCkBAIC04Nyw2ICsxMTgs
OSBAQCBIVE1MUGx1Z0luRWxlbWVudDo6fkhUTUxQbHVnSW5FbGVtZW50KCkKICAgICAgICAgbV9O
UE9iamVjdCA9IDA7CiAgICAgfQogI2VuZGlmCisKKyAgICBpZiAobV91bmF2YWlsYWJsZUNhbGxi
YWNrKQorICAgICAgICBtX3VuYXZhaWxhYmxlQ2FsbGJhY2stPmludmFsaWRhdGUoKTsKIH0KIAog
Ym9vbCBIVE1MUGx1Z0luRWxlbWVudDo6Y2FuUHJvY2Vzc0RyYWcoKSBjb25zdApAQCAtMjExLDE3
ICsyNDUsNiBAQCB2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KiBldmVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGlzPFJlbmRlckVtYmVkZGVk
T2JqZWN0PigqcmVuZGVyZXIpKSB7Ci0gICAgICAgIGlmIChkb3duY2FzdDxSZW5kZXJFbWJlZGRl
ZE9iamVjdD4oKnJlbmRlcmVyKS5pc1BsdWdpblVuYXZhaWxhYmxlKCkpIHsKLSAgICAgICAgICAg
IGRvd25jYXN0PFJlbmRlckVtYmVkZGVkT2JqZWN0PigqcmVuZGVyZXIpLmhhbmRsZVVuYXZhaWxh
YmxlUGx1Z2luSW5kaWNhdG9yRXZlbnQoZXZlbnQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKGlzPFJlbmRlclNuYXBzaG90dGVkUGx1Z0luPigqcmVuZGVy
ZXIpICYmIGRpc3BsYXlTdGF0ZSgpIDwgUmVzdGFydGluZykgewotICAgICAgICAgICAgZG93bmNh
c3Q8UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4+KCpyZW5kZXJlcikuaGFuZGxlRXZlbnQoZXZlbnQp
OwotICAgICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KGV2ZW50KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCiAgICAgICAgIGlmIChk
aXNwbGF5U3RhdGUoKSA8IFBsYXlpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MjcwLDYgKzI5Myw1NSBAQCBib29sIEhUTUxQbHVnSW5FbGVtZW50Ojppc1VzZXJPYnNlcnZhYmxl
KCkgY29uc3QKICAgICByZXR1cm4gcGx1Z2luVmlldy5pc1Zpc2libGUoKSAmJiBwbHVnaW5WaWV3
LndpZHRoKCkgPiAyICYmIHBsdWdpblZpZXcuaGVpZ2h0KCkgPiAyOwogfQogCisjaWYgIVBMQVRG
T1JNKElPUykKK3N0YXRpYyBTdHJpbmcgdW5hdmFpbGFibGVQbHVnaW5SZXBsYWNlbWVudFRleHQo
SFRNTFBsdWdJbkVsZW1lbnQ6OlBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uIHBsdWdpblVuYXZh
aWxhYmlsaXR5UmVhc29uKQoreworICAgIHN3aXRjaCAocGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFz
b24pIHsKKyAgICBjYXNlIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpQbHVnaW5NaXNzaW5nOgorICAg
ICAgICByZXR1cm4gbWlzc2luZ1BsdWdpblRleHQoKTsKKyAgICBjYXNlIFJlbmRlckVtYmVkZGVk
T2JqZWN0OjpQbHVnaW5DcmFzaGVkOgorICAgICAgICByZXR1cm4gY3Jhc2hlZFBsdWdpblRleHQo
KTsKKyAgICBjYXNlIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpQbHVnaW5CbG9ja2VkQnlDb250ZW50
U2VjdXJpdHlQb2xpY3k6CisgICAgICAgIHJldHVybiBibG9ja2VkUGx1Z2luQnlDb250ZW50U2Vj
dXJpdHlQb2xpY3lUZXh0KCk7CisgICAgY2FzZSBSZW5kZXJFbWJlZGRlZE9iamVjdDo6SW5zZWN1
cmVQbHVnaW5WZXJzaW9uOgorICAgICAgICByZXR1cm4gaW5zZWN1cmVQbHVnaW5WZXJzaW9uVGV4
dCgpOworICAgIH0KKyAgICAKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisjZW5kaWYKKwordm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6c2V0UGx1Z2lu
VW5hdmFpbGFiaWxpdHlSZWFzb24oUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gcmVhc29uKQor
eworI2lmIFBMQVRGT1JNKElPUykKKyAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKKyNlbHNlCisg
ICAgc2V0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb25XaXRoRGVzY3JpcHRpb24ocmVhc29uLCB1
bmF2YWlsYWJsZVBsdWdpblJlcGxhY2VtZW50VGV4dChyZWFzb24pKTsKKyNlbmRpZgorfQorCit2
b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpzZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbldpdGhE
ZXNjcmlwdGlvbihQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiByZWFzb24sIGNvbnN0IFN0cmlu
ZyYgZGVzY3JpcHRpb24pCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIFVOVVNFRF9QQVJBTShy
ZWFzb24pOworICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdGlvbik7CisjZWxzZQorICAgIGlmICht
X2lzUGx1Z2luVW5hdmFpbGFibGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNQbHVnaW5V
bmF2YWlsYWJsZSA9IHRydWU7CisgICAgbV9wbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiA9IHJl
YXNvbjsKKyAgICBzZXREaXNwbGF5U3RhdGUoUHJlcGFyaW5nVW5hdmFpbGFibGVQbHVnaW5NZXNz
YWdlKTsKKworICAgIGlmIChkZXNjcmlwdGlvbi5pc0VtcHR5KCkpCisgICAgICAgIG1fdW5hdmFp
bGFibGVQbHVnaW5SZXBsYWNlbWVudFRleHQgPSB1bmF2YWlsYWJsZVBsdWdpblJlcGxhY2VtZW50
VGV4dChyZWFzb24pOworICAgIGVsc2UKKyAgICAgICAgbV91bmF2YWlsYWJsZVBsdWdpblJlcGxh
Y2VtZW50VGV4dCA9IGRlc2NyaXB0aW9uOworI2VuZGlmCit9CisKKwogYm9vbCBIVE1MUGx1Z0lu
RWxlbWVudDo6c3VwcG9ydHNGb2N1cygpIGNvbnN0CiB7CiAgICAgaWYgKEhUTUxGcmFtZU93bmVy
RWxlbWVudDo6c3VwcG9ydHNGb2N1cygpKQpAQCAtMzAyLDcgKzM3NCw3IEBAIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBIVE1MUGx1Z0luRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsCiAKIHZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OnN3YXBSZW5kZXJlclRpbWVy
RmlyZWQoKQogewotICAgIEFTU0VSVChkaXNwbGF5U3RhdGUoKSA9PSBQcmVwYXJpbmdQbHVnaW5S
ZXBsYWNlbWVudCB8fCBkaXNwbGF5U3RhdGUoKSA9PSBEaXNwbGF5aW5nU25hcHNob3QpOworICAg
IEFTU0VSVChkaXNwbGF5U3RhdGUoKSA9PSBQcmVwYXJpbmdQbHVnaW5SZXBsYWNlbWVudCB8fCBk
aXNwbGF5U3RhdGUoKSA9PSBEaXNwbGF5aW5nU25hcHNob3QgfHwgZGlzcGxheVN0YXRlKCkgPT0g
UHJlcGFyaW5nVW5hdmFpbGFibGVQbHVnaW5NZXNzYWdlKTsKICAgICBpZiAodXNlckFnZW50U2hh
ZG93Um9vdCgpKQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC0zMTUsMjAgKzM4Nyw4NSBAQCB2
b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpzZXREaXNwbGF5U3RhdGUoRGlzcGxheVN0YXRlIHN0YXRl
KQogewogICAgIG1fZGlzcGxheVN0YXRlID0gc3RhdGU7CiAgICAgCi0gICAgaWYgKChzdGF0ZSA9
PSBEaXNwbGF5aW5nU25hcHNob3QgfHwgZGlzcGxheVN0YXRlKCkgPT0gUHJlcGFyaW5nUGx1Z2lu
UmVwbGFjZW1lbnQpICYmICFtX3N3YXBSZW5kZXJlclRpbWVyLmlzQWN0aXZlKCkpCisgICAgaWYg
KChzdGF0ZSA9PSBEaXNwbGF5aW5nU25hcHNob3QgfHwgZGlzcGxheVN0YXRlKCkgPT0gUHJlcGFy
aW5nUGx1Z2luUmVwbGFjZW1lbnQgfHwgZGlzcGxheVN0YXRlKCkgPT0gUHJlcGFyaW5nVW5hdmFp
bGFibGVQbHVnaW5NZXNzYWdlKSAmJiAhbV9zd2FwUmVuZGVyZXJUaW1lci5pc0FjdGl2ZSgpKQog
ICAgICAgICBtX3N3YXBSZW5kZXJlclRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAorc3RhdGlj
IERPTVdyYXBwZXJXb3JsZCYgcGx1Z0luRWxlbWVudElzb2xhdGVkV29ybGQoKQoreworICAgIHN0
YXRpYyBET01XcmFwcGVyV29ybGQmIGlzb2xhdGVkV29ybGQgPSBET01XcmFwcGVyV29ybGQ6OmNy
ZWF0ZShKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSkubGVha1JlZigpOworICAgIHJldHVybiBpc29s
YXRlZFdvcmxkOworfQorCiB2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRT
aGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiB7Ci0gICAgaWYgKCFtX3BsdWdpblJlcGxhY2Vt
ZW50IHx8ICFkb2N1bWVudCgpLnBhZ2UoKSB8fCBkaXNwbGF5U3RhdGUoKSAhPSBQcmVwYXJpbmdQ
bHVnaW5SZXBsYWNlbWVudCkKKyAgICBpZiAoIWRvY3VtZW50KCkucGFnZSgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgCisKKyAgICBpZiAobV9wbHVnaW5SZXBsYWNlbWVudCAmJiBkaXNwbGF5U3Rh
dGUoKSA9PSBQcmVwYXJpbmdQbHVnaW5SZXBsYWNlbWVudCkgeworICAgICAgICByb290LT5zZXRS
ZXNldFN0eWxlSW5oZXJpdGFuY2UodHJ1ZSk7CisgICAgICAgIGlmIChtX3BsdWdpblJlcGxhY2Vt
ZW50LT5pbnN0YWxsUmVwbGFjZW1lbnQocm9vdCkpIHsKKyAgICAgICAgICAgIHNldERpc3BsYXlT
dGF0ZShEaXNwbGF5aW5nUGx1Z2luUmVwbGFjZW1lbnQpOworICAgICAgICAgICAgc2V0TmVlZHNT
dHlsZVJlY2FsYyhSZWNvbnN0cnVjdFJlbmRlclRyZWUpOworICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKG1faXNQbHVnaW5VbmF2YWlsYWJsZSAmJiBkaXNwbGF5U3RhdGUoKSA9PSBQcmVwYXJp
bmdVbmF2YWlsYWJsZVBsdWdpbk1lc3NhZ2UpCisgICAgICAgIGluc3RhbGxQbHVnSW5VbmF2YWls
YWJsZU1lc3NhZ2Uocm9vdCk7Cit9CisKK3ZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6Omluc3RhbGxQ
bHVnSW5VbmF2YWlsYWJsZU1lc3NhZ2UoU2hhZG93Um9vdCogcm9vdCkKK3sKKyAgICBQYWdlKiBw
YWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBSZXNldCBhbnkgYXV0aG9yIHN0eWxlcyB0aGF0IG1heSBhcHBseSBhcyB3ZSBv
bmx5IHdhbnQgZXhwbGljaXQKKyAgICAvLyBzdHlsZXMgZGVmaW5lZCBpbiB0aGUgaW5qZWN0ZWQg
dXNlciBhZ2VudHMgc3R5bGVzaGVldHMgdG8gc3BlY2lmeQorICAgIC8vIHRoZSBsb29rLWFuZC1m
ZWVsIG9mIHRoZSBzbmFwc2hvdHRlZCBwbHVnLWluIG92ZXJsYXkuCiAgICAgcm9vdC0+c2V0UmVz
ZXRTdHlsZUluaGVyaXRhbmNlKHRydWUpOwotICAgIGlmIChtX3BsdWdpblJlcGxhY2VtZW50LT5p
bnN0YWxsUmVwbGFjZW1lbnQocm9vdCkpIHsKLSAgICAgICAgc2V0RGlzcGxheVN0YXRlKERpc3Bs
YXlpbmdQbHVnaW5SZXBsYWNlbWVudCk7Ci0gICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoUmVj
b25zdHJ1Y3RSZW5kZXJUcmVlKTsKKworICAgIERPTVdyYXBwZXJXb3JsZCYgaXNvbGF0ZWRXb3Js
ZCA9IHBsdWdJbkVsZW1lbnRJc29sYXRlZFdvcmxkKCk7CisgICAgZG9jdW1lbnQoKS5lbnN1cmVQ
bHVnSW5zSW5qZWN0ZWRTY3JpcHQoaXNvbGF0ZWRXb3JsZCk7CisKKyAgICBTY3JpcHRDb250cm9s
bGVyJiBzY3JpcHRDb250cm9sbGVyID0gcGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCk7CisgICAg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEpTQzo6anNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oc2NyaXB0Q29udHJvbGxlci5nbG9iYWxPYmplY3QoaXNvbGF0ZWRXb3JsZCkpOwor
ICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisK
KyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworCisgICAgSlNDOjpNYXJrZWRBcmd1
bWVudEJ1ZmZlciBhcmdMaXN0OworICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlMoZXhlYywgZ2xvYmFs
T2JqZWN0LCByb290KSk7CisgICAgYXJnTGlzdC5hcHBlbmQoanNTdHJpbmcoZXhlYywgdW5hdmFp
bGFibGVQbHVnaW5SZWFzb25EZXNjcmlwdGlvbigpKSk7CisgICAgYXJnTGlzdC5hcHBlbmQoSlND
Ojpqc0Jvb2xlYW4ocGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuc2hvdWxkVW5hdmFpbGFibGVQbHVn
aW5NZXNzYWdlQmVCdXR0b24obV9wbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbikpKTsKKworICAg
IEpTQzo6SlNPYmplY3QqIG92ZXJsYXkgPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBKU0M6Oklk
ZW50aWZpZXIoZXhlYywgImNyZWF0ZVBsdWdJblVuYXZhaWxhYmxlTWVzc2FnZSIpKS50b09iamVj
dChleGVjKTsKKyAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOworICAgIEpTQzo6Q2FsbFR5cGUg
Y2FsbFR5cGUgPSBvdmVybGF5LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvdmVybGF5LCBj
YWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IEpTQzo6Q2FsbFR5cGVOb25lKSB7CisgICAg
ICAgIGlmICghaXNvbGF0ZWRXb3JsZC52bSgpLmV4Y2VwdGlvbigpLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIGlzb2xhdGVkV29ybGQudm0oKS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICByZXR1
cm47CiAgICAgfQorCisgICAgSlNDOjpjYWxsKGV4ZWMsIG92ZXJsYXksIGNhbGxUeXBlLCBjYWxs
RGF0YSwgZ2xvYmFsT2JqZWN0LCBhcmdMaXN0KTsKKyAgICBpZiAoIWlzb2xhdGVkV29ybGQudm0o
KS5leGNlcHRpb24oKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaXNvbGF0ZWRXb3JsZC52bSgpLmNs
ZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fdW5h
dmFpbGFibGVDYWxsYmFjaykKKyAgICAgICAgbV91bmF2YWlsYWJsZUNhbGxiYWNrID0gSFRNTFBs
dWdJbkVsZW1lbnRVbmF2YWlsYWJsZUNhbGxiYWNrOjpjcmVhdGUodGhpcyk7CisgICAgcm9vdC0+
YWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZWNsaWNrZWQiLCBtX3VuYXZhaWxhYmxlQ2FsbGJhY2su
Z2V0KCksIGZhbHNlKTsKKyAgICAKKyAgICBzZXREaXNwbGF5U3RhdGUoRGlzcGxheWluZ1VuYXZh
aWxhYmxlUGx1Z2luTWVzc2FnZSk7CisgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhSZWNvbnN0cnVj
dFJlbmRlclRyZWUpOworfQorCit2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpoYW5kbGVVbmF2YWls
YWJsZU1lc3NhZ2VDbGlja2VkKEV2ZW50KikKK3sKKyAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3Vt
ZW50KCkucGFnZSgpKQorICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS51bmF2YWlsYWJs
ZVBsdWdpbkJ1dHRvbkNsaWNrZWQodGhpcywgbV9wbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbik7
CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVs
ZW1lbnQuaAppbmRleCA4YTc1YmJlNzViOGIxZmJjMGJhOWY4MjMyNjllYzhmZWNhZjJkNWRjLi5j
NDc3ZTBmZmE3YjE1NzZmNWM1ZjZjMWQzMjFmOGU2ZGM0NDZmMGI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIEluc3RhbmNl
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEhUTUxQbHVnSW5FbGVtZW50VW5hdmFp
bGFibGVDYWxsYmFjazsKIGNsYXNzIFBsdWdpblJlcGxhY2VtZW50OwogY2xhc3MgUmVuZGVyRW1i
ZWRkZWRPYmplY3Q7CiBjbGFzcyBSZW5kZXJXaWRnZXQ7CkBAIC02Miw2ICs2Myw4IEBAIHB1Ymxp
YzoKICAgICAgICAgUGxheWluZywKICAgICAgICAgUHJlcGFyaW5nUGx1Z2luUmVwbGFjZW1lbnQs
CiAgICAgICAgIERpc3BsYXlpbmdQbHVnaW5SZXBsYWNlbWVudCwKKyAgICAgICAgUHJlcGFyaW5n
VW5hdmFpbGFibGVQbHVnaW5NZXNzYWdlLAorICAgICAgICBEaXNwbGF5aW5nVW5hdmFpbGFibGVQ
bHVnaW5NZXNzYWdlLAogICAgIH07CiAgICAgRGlzcGxheVN0YXRlIGRpc3BsYXlTdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlzcGxheVN0YXRlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldERpc3Bs
YXlTdGF0ZShEaXNwbGF5U3RhdGUpOwpAQCAtOTAsNyArOTMsMjAgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBpc1BsdWdJbkltYWdlRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICBib29sIGlzVXNlck9ic2VydmFibGUoKSBjb25zdDsKLSAgICAKKworICAgIGVudW0g
UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24geworICAgICAgICBQbHVnaW5NaXNzaW5nLAorICAg
ICAgICBQbHVnaW5DcmFzaGVkLAorICAgICAgICBQbHVnaW5CbG9ja2VkQnlDb250ZW50U2VjdXJp
dHlQb2xpY3ksCisgICAgICAgIEluc2VjdXJlUGx1Z2luVmVyc2lvbiwKKyAgICB9OworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24oUGx1Z2luVW5h
dmFpbGFiaWxpdHlSZWFzb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGx1Z2luVW5h
dmFpbGFiaWxpdHlSZWFzb25XaXRoRGVzY3JpcHRpb24oUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFz
b24sIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pOworICAgIGNvbnN0IFN0cmluZyYgdW5hdmFp
bGFibGVQbHVnaW5SZWFzb25EZXNjcmlwdGlvbigpIHsgcmV0dXJuIG1fdW5hdmFpbGFibGVQbHVn
aW5SZXBsYWNlbWVudFRleHQ7IH0KKyAgICBib29sIGlzUGx1Z2luVW5hdmFpbGFibGUoKSBjb25z
dCB7IHJldHVybiBtX2lzUGx1Z2luVW5hdmFpbGFibGU7IH0KKworICAgIHZvaWQgaGFuZGxlVW5h
dmFpbGFibGVNZXNzYWdlQ2xpY2tlZChFdmVudCopOworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTFBs
dWdJbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKIApA
QCAtMTI1LDYgKzE0MSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRG
b2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBpc1BsdWdpbkVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKIAorICAgIHZvaWQgaW5z
dGFsbFBsdWdJblVuYXZhaWxhYmxlTWVzc2FnZShTaGFkb3dSb290Kik7CisKICAgICBSZWZQdHI8
SlNDOjpCaW5kaW5nczo6SW5zdGFuY2U+IG1faW5zdGFuY2U7CiAgICAgVGltZXIgbV9zd2FwUmVu
ZGVyZXJUaW1lcjsKICAgICBSZWZQdHI8UGx1Z2luUmVwbGFjZW1lbnQ+IG1fcGx1Z2luUmVwbGFj
ZW1lbnQ7CkBAIC0xMzIsNiArMTUwLDExIEBAIHByaXZhdGU6CiAgICAgTlBPYmplY3QqIG1fTlBP
YmplY3Q7CiAjZW5kaWYKICAgICBib29sIG1faXNDYXB0dXJpbmdNb3VzZUV2ZW50czsKKyAgICBi
b29sIG1faXNQbHVnaW5VbmF2YWlsYWJsZSA9IHsgZmFsc2UgfTsKKyAgICBQbHVnaW5VbmF2YWls
YWJpbGl0eVJlYXNvbiBtX3BsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uID0geyBQbHVnaW5NaXNz
aW5nIH07CisgICAgU3RyaW5nIG1fdW5hdmFpbGFibGVQbHVnaW5SZXBsYWNlbWVudFRleHQ7Cisg
ICAgU3RyaW5nIG1fdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbjsKKyAgICBSZWZQdHI8SFRNTFBs
dWdJbkVsZW1lbnRVbmF2YWlsYWJsZUNhbGxiYWNrPiBtX3VuYXZhaWxhYmxlQ2FsbGJhY2s7CiAK
ICAgICBEaXNwbGF5U3RhdGUgbV9kaXNwbGF5U3RhdGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggMDliYzE2NTZlODZjZWI0NDQ1
NjAxZDA5YmI0NzBhNzJjZWJjMGM5Yy4uNzJkM2I4OGI0ZTBjMjg5YTg3M2M4MWU5NDk4ZDFkNTE0
YzFjMDU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwCkBAIC02MzIsNiArNjMyLDExIEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
c3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0IFVSTCYgdXJsKQogICAgIG1fcGx1
Z0luV2FzQ3JlYXRlZCA9IGZhbHNlOwogICAgIG1fZGVmZXJyZWRQcm9tb3Rpb25Ub1ByaW1hcnlQ
bHVnSW4gPSBmYWxzZTsKIAorICAgIGlmIChpc1BsdWdpblVuYXZhaWxhYmxlKCkpIHsKKyAgICAg
ICAgbV9zbmFwc2hvdERlY2lzaW9uID0gTmV2ZXJTbmFwc2hvdDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIGlmICghZG9jdW1lbnQoKS5wYWdlKCkgfHwgIWRvY3VtZW50KCkucGFnZSgp
LT5zZXR0aW5ncygpLnBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQoKSkgewogICAgICAgICBtX3Nu
YXBzaG90RGVjaXNpb24gPSBOZXZlclNuYXBzaG90OwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAppbmRleCBiY2FhOThkOWY2NzViZGZlNTc2
NTkxMWZkNjg0YmEzYjM2YWUxMzJmLi5kYmIwZDBhNmUyMzU4NThkZDAzYmUwMzc4N2FmMDZlOTFm
YmNlOGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKQEAgLTEy
Nyw4ICsxMjcsNyBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjpwbHVnaW5Jc0xvYWRhYmxlKEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdpbkVsZW1lbnQsIGNvbgogICAgICAgICAgICAgcGx1Z2lu
RWxlbWVudC5mYXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6dHlwZUF0dHIpOwogICAgICAgICBp
ZiAoIWRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd09iamVjdEZyb21T
b3VyY2UodXJsKQogICAgICAgICAgICAgfHwgIWRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBv
bGljeSgpLT5hbGxvd1BsdWdpblR5cGUobWltZVR5cGUsIGRlY2xhcmVkTWltZVR5cGUsIHVybCkp
IHsKLSAgICAgICAgICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0KiByZW5kZXJlciA9IHBsdWdpbkVs
ZW1lbnQucmVuZGVyRW1iZWRkZWRPYmplY3QoKTsKLSAgICAgICAgICAgIHJlbmRlcmVyLT5zZXRQ
bHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbihSZW5kZXJFbWJlZGRlZE9iamVjdDo6UGx1Z2luQmxv
Y2tlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KTsKKyAgICAgICAgICAgIHBsdWdpbkVsZW1lbnQu
c2V0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24oSFRNTFBsdWdJbkVsZW1lbnQ6OlBsdWdpbkJs
b2NrZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KIApAQCAtMjY2LDEwICsyNjUsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4gU3Vi
ZnJhbWVMb2FkZXI6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
SAogICAgIGxvZ1BsdWdpblJlcXVlc3QoZG9jdW1lbnQoKS0+cGFnZSgpLCBlbGVtZW50LnNlcnZp
Y2VUeXBlKCksIFN0cmluZygpLCB3aWRnZXQpOwogCiAgICAgaWYgKCF3aWRnZXQpIHsKLSAgICAg
ICAgUmVuZGVyRW1iZWRkZWRPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJFbWJlZGRl
ZE9iamVjdCgpOwotCi0gICAgICAgIGlmICghcmVuZGVyZXItPmlzUGx1Z2luVW5hdmFpbGFibGUo
KSkKLSAgICAgICAgICAgIHJlbmRlcmVyLT5zZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbihS
ZW5kZXJFbWJlZGRlZE9iamVjdDo6UGx1Z2luTWlzc2luZyk7CisgICAgICAgIGVsZW1lbnQuc2V0
UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24oSFRNTFBsdWdJbkVsZW1lbnQ6OlBsdWdpbkJsb2Nr
ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIApAQCAtNDA2LDggKzQwMiw3IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6OmxvYWRQbHVnaW4o
SFRNTFBsdWdJbkltYWdlRWxlbWVudCYgcGx1Z2luRWxlbWVudCwgY29uc3QgVVJMCiAgICAgUmVm
UHRyPFdpZGdldD4gd2lkZ2V0ID0gbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jcmVhdGVQbHVn
aW4oY29udGVudFNpemUsICZwbHVnaW5FbGVtZW50LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFs
dWVzLCBtaW1lVHlwZSwgbG9hZE1hbnVhbGx5KTsKIAogICAgIGlmICghd2lkZ2V0KSB7Ci0gICAg
ICAgIGlmICghcmVuZGVyZXItPmlzUGx1Z2luVW5hdmFpbGFibGUoKSkKLSAgICAgICAgICAgIHJl
bmRlcmVyLT5zZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbihSZW5kZXJFbWJlZGRlZE9iamVj
dDo6UGx1Z2luTWlzc2luZyk7CisgICAgICAgIHBsdWdpbkVsZW1lbnQuc2V0UGx1Z2luVW5hdmFp
bGFiaWxpdHlSZWFzb24oSFRNTFBsdWdJbkVsZW1lbnQ6OlBsdWdpbkJsb2NrZWRCeUNvbnRlbnRT
ZWN1cml0eVBvbGljeSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmNwcAppbmRleCBlYTEyMzZmYjI5ZWI3ZGQ1NDI1ZDg2ODY0ZWQ2YjFhMjg4ODE3MmU4
Li4yYWE1YTdlZTViOTI1YjZmMzM3ZTMyMTQxNDVjNDA3ZjA1OTEwYTRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlBhZ2VHcm91cExvYWREZWZlcnJlci5oIgogI2luY2x1ZGUgIlBvcHVwT3BlbmluZ09ic2VydmVy
LmgiCisjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5o
IgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDU3ODgwM2Y3MGI1YjhhMGUzYTBj
ZmEyMDRlYTJmNDcwZWY0ZTA0ZWQuLjQxODlmMTdhYjA5NmYyMTM2ZjVhZGJiODhjNzI4NGU4NDM4
N2FhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzAsMTIgKzMwLDEyIEBA
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
ICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFBsdWdJbkVsZW1l
bnQuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAiTGF5ZXJGbHVzaFRocm90
dGxlU3RhdGUuaCIKICNpbmNsdWRlICJQYWdlVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUG9wdXBN
ZW51LmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCi0jaW5jbHVkZSAiUmVuZGVyRW1i
ZWRkZWRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlNjcm9s
bGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51LmgiCkBAIC0xODks
OCArMTg5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NpemVDaGFuZ2Vk
KEZyYW1lKiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsUmVjdEludG9WaWV3KGNvbnN0IEludFJlY3QmKSBjb25zdCB7IH07IC8vIEN1cnJlbnRseSBv
bmx5IE1hYyBoYXMgYSBub24gZW1wdHkgaW1wbGVtZW50YXRpb24uCiAKLSAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkVW5hdmFpbGFibGVQbHVnaW5NZXNzYWdlQmVCdXR0b24oUmVuZGVyRW1iZWRkZWRP
YmplY3Q6OlBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgdm9pZCB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoRWxlbWVu
dCosIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbikgY29u
c3QgeyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZFVuYXZhaWxhYmxlUGx1Z2luTWVzc2FnZUJl
QnV0dG9uKEhUTUxQbHVnSW5FbGVtZW50OjpQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbikgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5hdmFpbGFibGVQbHVnaW5C
dXR0b25DbGlja2VkKEVsZW1lbnQqLCBIVE1MUGx1Z0luRWxlbWVudDo6UGx1Z2luVW5hdmFpbGFi
aWxpdHlSZWFzb24pIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgdm9pZCBtb3VzZURpZE1vdmVPdmVy
RWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIHNldFRvb2xUaXAoY29uc3QgU3RyaW5nJiwgVGV4dERpcmVj
dGlvbikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVt
YmVkZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5jcHAKaW5kZXggZDMxZjJlZThjOTY0YjhiMzJkZDliOWRiNzMwMDc3M2UyODkyMjIx
Zi4uNWZhMjY1OGE4Mzg2MDJiYmNkZWMzMDgyOTFmOTc2NGEzMzg3MmJkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCkBAIC02Miw0
MCArNjIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKLXN0YXRpYyBjb25zdCBmbG9hdCByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdEhlaWdo
dCA9IDIyOwotc3RhdGljIGNvbnN0IGZsb2F0IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0TGVm
dFRleHRNYXJnaW4gPSAxMDsKLXN0YXRpYyBjb25zdCBmbG9hdCByZXBsYWNlbWVudFRleHRSb3Vu
ZGVkUmVjdFJpZ2h0VGV4dE1hcmdpbiA9IDEwOwotc3RhdGljIGNvbnN0IGZsb2F0IHJlcGxhY2Vt
ZW50VGV4dFJvdW5kZWRSZWN0UmlnaHRUZXh0TWFyZ2luV2l0aEFycm93ID0gNTsKLXN0YXRpYyBj
b25zdCBmbG9hdCByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFRvcFRleHRNYXJnaW4gPSAtMTsK
LXN0YXRpYyBjb25zdCBmbG9hdCByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJhZGl1cyA9IDEx
Owotc3RhdGljIGNvbnN0IGZsb2F0IHJlcGxhY2VtZW50QXJyb3dMZWZ0TWFyZ2luID0gLTQ7Ci1z
dGF0aWMgY29uc3QgZmxvYXQgcmVwbGFjZW1lbnRBcnJvd1BhZGRpbmcgPSA0Owotc3RhdGljIGNv
bnN0IGZsb2F0IHJlcGxhY2VtZW50QXJyb3dDaXJjbGVQYWRkaW5nID0gMzsKLQotc3RhdGljIGNv
bnN0IENvbG9yJiByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFByZXNzZWRDb2xvcigpCi17Ci0g
ICAgc3RhdGljIGNvbnN0IENvbG9yIHByZXNzZWQoMTA1LCAxMDUsIDEwNSwgMjQyKTsKLSAgICBy
ZXR1cm4gcHJlc3NlZDsKLX0KLQotc3RhdGljIGNvbnN0IENvbG9yJiByZXBsYWNlbWVudFRleHRS
b3VuZGVkUmVjdENvbG9yKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3Igc3RhbmRhcmQoMTI1
LCAxMjUsIDEyNSwgMjQyKTsKLSAgICByZXR1cm4gc3RhbmRhcmQ7Ci19Ci0KLXN0YXRpYyBjb25z
dCBDb2xvciYgcmVwbGFjZW1lbnRUZXh0Q29sb3IoKQotewotICAgIHN0YXRpYyBjb25zdCBDb2xv
ciBzdGFuZGFyZCgyNDAsIDI0MCwgMjQwLCAyNTUpOwotICAgIHJldHVybiBzdGFuZGFyZDsKLX0K
LQotc3RhdGljIGNvbnN0IENvbG9yJiB1bmF2YWlsYWJsZVBsdWdpbkJvcmRlckNvbG9yKCkKLXsK
LSAgICBzdGF0aWMgY29uc3QgQ29sb3Igc3RhbmRhcmQoMjU1LCAyNTUsIDI1NSwgMjE2KTsKLSAg
ICByZXR1cm4gc3RhbmRhcmQ7Ci19Ci0KIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpSZW5kZXJFbWJl
ZGRlZE9iamVjdChIVE1MRnJhbWVPd25lckVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHls
ZT4mJiBzdHlsZSkKICAgICA6IFJlbmRlcldpZGdldChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUp
KQogICAgICwgbV9pc1BsdWdpblVuYXZhaWxhYmxlKGZhbHNlKQpAQCAtMTU2LDExICsxMjIsMTMg
QEAgc3RhdGljIFN0cmluZyB1bmF2YWlsYWJsZVBsdWdpblJlcGxhY2VtZW50VGV4dChSZW5kZXJF
bWJlZGRlZE9iamVjdDo6UGx1Z2luVW5hdmEKIH0KICNlbmRpZgogCi1zdGF0aWMgYm9vbCBzaG91
bGRVbmF2YWlsYWJsZVBsdWdpbk1lc3NhZ2VCZUJ1dHRvbihEb2N1bWVudCYgZG9jdW1lbnQsIFJl
bmRlckVtYmVkZGVkT2JqZWN0OjpQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiBwbHVnaW5VbmF2
YWlsYWJpbGl0eVJlYXNvbikKKy8qCisgc3RhdGljIGJvb2wgc2hvdWxkVW5hdmFpbGFibGVQbHVn
aW5NZXNzYWdlQmVCdXR0b24oRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJFbWJlZGRlZE9iamVj
dDo6UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24p
CiB7CiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LnBhZ2UoKTsKICAgICByZXR1cm4gcGFnZSAm
JiBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5zaG91bGRVbmF2YWlsYWJsZVBsdWdpbk1lc3NhZ2VC
ZUJ1dHRvbihwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbik7CiB9CisgKi8KIAogdm9pZCBSZW5k
ZXJFbWJlZGRlZE9iamVjdDo6c2V0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24oUGx1Z2luVW5h
dmFpbGFiaWxpdHlSZWFzb24gcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24pCiB7CkBAIC0xODgs
MTUgKzE1Niw2IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnNldFBsdWdpblVuYXZhaWxh
YmlsaXR5UmVhc29uV2l0aERlc2NyaXB0aW9uKFBsdWdpblVuCiAjZW5kaWYKIH0KIAotdm9pZCBS
ZW5kZXJFbWJlZGRlZE9iamVjdDo6c2V0VW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JJc1ByZXNz
ZWQoYm9vbCBwcmVzc2VkKQotewotICAgIGlmIChtX3VuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9y
SXNQcmVzc2VkID09IHByZXNzZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdW5hdmFpbGFi
bGVQbHVnaW5JbmRpY2F0b3JJc1ByZXNzZWQgPSBwcmVzc2VkOwotICAgIHJlcGFpbnQoKTsKLX0K
LQogdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRTbmFwc2hvdEltYWdlKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIEltYWdlKiBpbWFn
ZSkKIHsKICAgICBMYXlvdXRVbml0IGNXaWR0aCA9IGNvbnRlbnRXaWR0aCgpOwpAQCAtMjQ2LDcg
KzIwNSw4IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50KFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPCiB7CiAgICAgUGFnZSogcGFnZSA9IGZy
YW1lKCkucGFnZSgpOwogCi0gICAgaWYgKGlzUGx1Z2luVW5hdmFpbGFibGUoKSkgeworICAgIEhU
TUxQbHVnSW5FbGVtZW50JiBwbHVnSW5FbGVtZW50ID0gZG93bmNhc3Q8SFRNTFBsdWdJbkVsZW1l
bnQ+KGZyYW1lT3duZXJFbGVtZW50KCkpOworICAgIGlmIChwbHVnSW5FbGVtZW50LmlzUGx1Z2lu
VW5hdmFpbGFibGUoKSkgewogICAgICAgICBpZiAocGFnZSAmJiBwYWludEluZm8ucGhhc2UgPT0g
UGFpbnRQaGFzZUZvcmVncm91bmQpCiAgICAgICAgICAgICBwYWdlLT5hZGRSZWxldmFudFVucGFp
bnRlZE9iamVjdCh0aGlzLCB2aXN1YWxPdmVyZmxvd1JlY3QoKSk7CiAgICAgICAgIFJlbmRlclJl
cGxhY2VkOjpwYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKQEAgLTI1OSwyMTMgKzIxOSw2
IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPCiAgICAgUmVuZGVyV2lkZ2V0OjpwYWludChwYWlu
dEluZm8sIHBhaW50T2Zmc2V0KTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd1JlcGxhY2VtZW50QXJy
b3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGluc2lkZVJlY3Qp
Ci17Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsK
LQotICAgIEZsb2F0UmVjdCByZWN0KGluc2lkZVJlY3QpOwotICAgIHJlY3QuaW5mbGF0ZSgtcmVw
bGFjZW1lbnRBcnJvd1BhZGRpbmcpOwotCi0gICAgRmxvYXRQb2ludCBjZW50ZXIocmVjdC5jZW50
ZXIoKSk7Ci0gICAgRmxvYXRQb2ludCBhcnJvd1RpcChyZWN0Lm1heFgoKSwgY2VudGVyLnkoKSk7
Ci0KLSAgICBjb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoMik7Ci0gICAgY29udGV4dC0+c2V0
TGluZUNhcChSb3VuZENhcCk7Ci0gICAgY29udGV4dC0+c2V0TGluZUpvaW4oUm91bmRKb2luKTsK
LQotICAgIFBhdGggcGF0aDsKLSAgICBwYXRoLm1vdmVUbyhGbG9hdFBvaW50KHJlY3QueCgpLCBj
ZW50ZXIueSgpKSk7Ci0gICAgcGF0aC5hZGRMaW5lVG8oYXJyb3dUaXApOwotICAgIHBhdGguYWRk
TGluZVRvKEZsb2F0UG9pbnQoY2VudGVyLngoKSwgcmVjdC55KCkpKTsKLSAgICBwYXRoLm1vdmVU
byhhcnJvd1RpcCk7Ci0gICAgcGF0aC5hZGRMaW5lVG8oRmxvYXRQb2ludChjZW50ZXIueCgpLCBy
ZWN0Lm1heFkoKSkpOwotICAgIGNvbnRleHQtPnN0cm9rZVBhdGgocGF0aCk7Ci19Ci0KLXZvaWQg
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKLXsKLSAgICBpZiAoIXNob3dzVW5hdmFp
bGFibGVQbHVnaW5JbmRpY2F0b3IoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHBhaW50
SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKLSAgICBpZiAo
Y29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBGbG9h
dFJlY3QgY29udGVudFJlY3Q7Ci0gICAgRmxvYXRSZWN0IGluZGljYXRvclJlY3Q7Ci0gICAgRmxv
YXRSZWN0IHJlcGxhY2VtZW50VGV4dFJlY3Q7Ci0gICAgRmxvYXRSZWN0IGFycm93UmVjdDsKLSAg
ICBGb250Q2FzY2FkZSBmb250OwotICAgIFRleHRSdW4gcnVuKCIiKTsKLSAgICBmbG9hdCB0ZXh0
V2lkdGg7Ci0gICAgaWYgKCFnZXRSZXBsYWNlbWVudFRleHRHZW9tZXRyeShwYWludE9mZnNldCwg
Y29udGVudFJlY3QsIGluZGljYXRvclJlY3QsIHJlcGxhY2VtZW50VGV4dFJlY3QsIGFycm93UmVj
dCwgZm9udCwgcnVuLCB0ZXh0V2lkdGgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBQYXRoIGJh
Y2tncm91bmQ7Ci0gICAgYmFja2dyb3VuZC5hZGRSb3VuZGVkUmVjdChpbmRpY2F0b3JSZWN0LCBG
bG9hdFNpemUocmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSYWRpdXMsIHJlcGxhY2VtZW50VGV4
dFJvdW5kZWRSZWN0UmFkaXVzKSk7Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoKmNvbnRleHQpOwotICAgIGNvbnRleHQtPmNsaXAoY29udGVudFJlY3QpOwotICAg
IGNvbnRleHQtPnNldEZpbGxDb2xvcihtX3VuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9ySXNQcmVz
c2VkID8gcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RQcmVzc2VkQ29sb3IoKSA6IHJlcGxhY2Vt
ZW50VGV4dFJvdW5kZWRSZWN0Q29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwotICAgIGNv
bnRleHQtPmZpbGxQYXRoKGJhY2tncm91bmQpOwotCi0gICAgUGF0aCBzdHJva2VQYXRoOwotICAg
IEZsb2F0UmVjdCBzdHJva2VSZWN0KGluZGljYXRvclJlY3QpOwotICAgIHN0cm9rZVJlY3QuaW5m
bGF0ZSgxKTsKLSAgICBzdHJva2VQYXRoLmFkZFJvdW5kZWRSZWN0KHN0cm9rZVJlY3QsIEZsb2F0
U2l6ZShyZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJhZGl1cyArIDEsIHJlcGxhY2VtZW50VGV4
dFJvdW5kZWRSZWN0UmFkaXVzICsgMSkpOwotCi0gICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
dW5hdmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7Ci0g
ICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwotICAgIGNvbnRleHQtPnN0cm9rZVBh
dGgoc3Ryb2tlUGF0aCk7Ci0KLSAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBm
b250LmZvbnRNZXRyaWNzKCk7Ci0gICAgZmxvYXQgbGFiZWxYID0gcm91bmRmKHJlcGxhY2VtZW50
VGV4dFJlY3QubG9jYXRpb24oKS54KCkgKyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdExlZnRU
ZXh0TWFyZ2luKTsKLSAgICBmbG9hdCBsYWJlbFkgPSByb3VuZGYocmVwbGFjZW1lbnRUZXh0UmVj
dC5sb2NhdGlvbigpLnkoKSArIChyZXBsYWNlbWVudFRleHRSZWN0LnNpemUoKS5oZWlnaHQoKSAt
IGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIgKyBmb250TWV0cmljcy5hc2NlbnQoKSArIHJlcGxh
Y2VtZW50VGV4dFJvdW5kZWRSZWN0VG9wVGV4dE1hcmdpbik7Ci0gICAgY29udGV4dC0+c2V0Rmls
bENvbG9yKHJlcGxhY2VtZW50VGV4dENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKLSAg
ICBjb250ZXh0LT5kcmF3QmlkaVRleHQoZm9udCwgcnVuLCBGbG9hdFBvaW50KGxhYmVsWCwgbGFi
ZWxZKSk7Ci0KLSAgICBpZiAoc2hvdWxkVW5hdmFpbGFibGVQbHVnaW5NZXNzYWdlQmVCdXR0b24o
ZG9jdW1lbnQoKSwgbV9wbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbikpIHsKLSAgICAgICAgYXJy
b3dSZWN0LmluZmxhdGUoLXJlcGxhY2VtZW50QXJyb3dDaXJjbGVQYWRkaW5nKTsKLQotICAgICAg
ICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEuMCk7Ci0gICAgICAgIGNvbnRleHQt
PnNldEZpbGxDb2xvcihyZXBsYWNlbWVudFRleHRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2Uo
KSk7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxFbGxpcHNlKGFycm93UmVjdCk7Ci0KLSAgICAgICAg
Y29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNsZWFyKTsKLSAgICAgICAg
ZHJhd1JlcGxhY2VtZW50QXJyb3coY29udGV4dCwgYXJyb3dSZWN0KTsKLSAgICAgICAgY29udGV4
dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKLSAgICB9Ci19Ci0KLXZvaWQgUmVuZGVyRW1iZWRk
ZWRPYmplY3Q6OnNldFVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9ySXNIaWRkZW4oYm9vbCBoaWRk
ZW4pCi17Ci0gICAgaWYgKG1faXNVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvckhpZGRlbiA9PSBo
aWRkZW4pCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faXNVbmF2YWlsYWJsZVBsdWdpbkluZGlj
YXRvckhpZGRlbiA9IGhpZGRlbjsKLSAgICByZXBhaW50KCk7Ci19Ci0KLWJvb2wgUmVuZGVyRW1i
ZWRkZWRPYmplY3Q6OmdldFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5KGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCwgRmxvYXRSZWN0JiBjb250ZW50UmVjdCwgRmxvYXRSZWN0JiBp
bmRpY2F0b3JSZWN0LCBGbG9hdFJlY3QmIHJlcGxhY2VtZW50VGV4dFJlY3QsIEZsb2F0UmVjdCYg
YXJyb3dSZWN0LCBGb250Q2FzY2FkZSYgZm9udCwgVGV4dFJ1biYgcnVuLCBmbG9hdCYgdGV4dFdp
ZHRoKSBjb25zdAotewotICAgIGJvb2wgaW5jbHVkZXNBcnJvdyA9IHNob3VsZFVuYXZhaWxhYmxl
UGx1Z2luTWVzc2FnZUJlQnV0dG9uKGRvY3VtZW50KCksIG1fcGx1Z2luVW5hdmFpbGFiaWxpdHlS
ZWFzb24pOwotCi0gICAgY29udGVudFJlY3QgPSBjb250ZW50Qm94UmVjdCgpOwotICAgIGNvbnRl
bnRSZWN0Lm1vdmVCeShyb3VuZGVkSW50UG9pbnQoYWNjdW11bGF0ZWRPZmZzZXQpKTsKLQotICAg
IEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgUmVuZGVyVGhlbWU6OmRlZmF1
bHRUaGVtZSgpLT5zeXN0ZW1Gb250KENTU1ZhbHVlV2Via2l0U21hbGxDb250cm9sLCBmb250RGVz
Y3JpcHRpb24pOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodEJvbGQp
OwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRSZW5kZXJpbmdNb2RlKGZyYW1lKCkuc2V0dGluZ3Mo
KS5mb250UmVuZGVyaW5nTW9kZSgpKTsKLSAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRT
aXplKDEyKTsKLSAgICBmb250ID0gRm9udENhc2NhZGUoZm9udERlc2NyaXB0aW9uLCAwLCAwKTsK
LSAgICBmb250LnVwZGF0ZSgwKTsKLQotICAgIHJ1biA9IFRleHRSdW4obV91bmF2YWlsYWJsZVBs
dWdpblJlcGxhY2VtZW50VGV4dCk7Ci0gICAgdGV4dFdpZHRoID0gZm9udC53aWR0aChydW4pOwot
Ci0gICAgcmVwbGFjZW1lbnRUZXh0UmVjdC5zZXRTaXplKEZsb2F0U2l6ZSh0ZXh0V2lkdGggKyBy
ZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdExlZnRUZXh0TWFyZ2luICsgKGluY2x1ZGVzQXJyb3cg
PyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJpZ2h0VGV4dE1hcmdpbldpdGhBcnJvdyA6IHJl
cGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0UmlnaHRUZXh0TWFyZ2luKSwgcmVwbGFjZW1lbnRUZXh0
Um91bmRlZFJlY3RIZWlnaHQpKTsKLSAgICBmbG9hdCB4ID0gKGNvbnRlbnRSZWN0LnNpemUoKS53
aWR0aCgpIC8gMiAtIHJlcGxhY2VtZW50VGV4dFJlY3Quc2l6ZSgpLndpZHRoKCkgLyAyKSArIGNv
bnRlbnRSZWN0LmxvY2F0aW9uKCkueCgpOwotICAgIGZsb2F0IHkgPSAoY29udGVudFJlY3Quc2l6
ZSgpLmhlaWdodCgpIC8gMiAtIHJlcGxhY2VtZW50VGV4dFJlY3Quc2l6ZSgpLmhlaWdodCgpIC8g
MikgKyBjb250ZW50UmVjdC5sb2NhdGlvbigpLnkoKTsKLSAgICByZXBsYWNlbWVudFRleHRSZWN0
LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoeCwgeSkpOwotCi0gICAgaW5kaWNhdG9yUmVjdCA9IHJl
cGxhY2VtZW50VGV4dFJlY3Q7Ci0KLSAgICAvLyBFeHBhbmQgdGhlIGJhY2tncm91bmQgcmVjdCB0
byBpbmNsdWRlIHRoZSBhcnJvdywgaWYgaXQgd2lsbCBiZSB1c2VkLgotICAgIGlmIChpbmNsdWRl
c0Fycm93KSB7Ci0gICAgICAgIGFycm93UmVjdCA9IGluZGljYXRvclJlY3Q7Ci0gICAgICAgIGFy
cm93UmVjdC5zZXRYKGNlaWxmKGFycm93UmVjdC5tYXhYKCkgKyByZXBsYWNlbWVudEFycm93TGVm
dE1hcmdpbikpOwotICAgICAgICBhcnJvd1JlY3Quc2V0V2lkdGgoYXJyb3dSZWN0LmhlaWdodCgp
KTsKLSAgICAgICAgaW5kaWNhdG9yUmVjdC51bml0ZShhcnJvd1JlY3QpOwotICAgIH0KLQotICAg
IHJldHVybiB0cnVlOwotfQotCi1MYXlvdXRSZWN0IFJlbmRlckVtYmVkZGVkT2JqZWN0Ojp1bmF2
YWlsYWJsZVBsdWdpbkluZGljYXRvckJvdW5kcyhjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQpIGNvbnN0Ci17Ci0gICAgRmxvYXRSZWN0IGNvbnRlbnRSZWN0OwotICAgIEZsb2F0
UmVjdCBpbmRpY2F0b3JSZWN0OwotICAgIEZsb2F0UmVjdCByZXBsYWNlbWVudFRleHRSZWN0Owot
ICAgIEZsb2F0UmVjdCBhcnJvd1JlY3Q7Ci0gICAgRm9udENhc2NhZGUgZm9udDsKLSAgICBUZXh0
UnVuIHJ1bigiIiwgMCk7Ci0gICAgZmxvYXQgdGV4dFdpZHRoOwotICAgIGlmIChnZXRSZXBsYWNl
bWVudFRleHRHZW9tZXRyeShhY2N1bXVsYXRlZE9mZnNldCwgY29udGVudFJlY3QsIGluZGljYXRv
clJlY3QsIHJlcGxhY2VtZW50VGV4dFJlY3QsIGFycm93UmVjdCwgZm9udCwgcnVuLCB0ZXh0V2lk
dGgpKQotICAgICAgICByZXR1cm4gTGF5b3V0UmVjdChpbmRpY2F0b3JSZWN0KTsKLQotICAgIHJl
dHVybiBMYXlvdXRSZWN0KCk7Ci19Ci0KLWJvb2wgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmlzUmVw
bGFjZW1lbnRPYnNjdXJlZCgpIGNvbnN0Ci17Ci0gICAgLy8gUmV0dXJuIHdoZXRoZXIgb3Igbm90
IHRoZSByZXBsYWNlbWVudCBjb250ZW50IGZvciBibG9ja2VkIHBsdWdpbnMgaXMgYWNjZXNzaWJs
ZSB0byB0aGUgdXNlci4KLQotICAgIC8vIENoZWNrIHRoZSBvcGFjaXR5IG9mIGVhY2ggbGF5ZXIg
Y29udGFpbmluZyB0aGUgZWxlbWVudCBvciBpdHMgYW5jZXN0b3JzLgotICAgIGZsb2F0IG9wYWNp
dHkgPSAxLjA7Ci0gICAgZm9yIChSZW5kZXJMYXllciogbGF5ZXIgPSBlbmNsb3NpbmdMYXllcigp
OyBsYXllcjsgbGF5ZXIgPSBsYXllci0+cGFyZW50KCkpIHsKLSAgICAgICAgb3BhY2l0eSAqPSBs
YXllci0+cmVuZGVyZXIoKS5zdHlsZSgpLm9wYWNpdHkoKTsKLSAgICAgICAgaWYgKG9wYWNpdHkg
PCAwLjEpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBDYWxjdWxh
dGUgdGhlIGFic29sdXRlIHJlY3QgZm9yIHRoZSBibG9ja2VkIHBsdWdpbiByZXBsYWNlbWVudCB0
ZXh0LgotICAgIEludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveCA9IGFic29sdXRlQm91bmRpbmdC
b3hSZWN0KCk7Ci0gICAgTGF5b3V0UG9pbnQgYWJzb2x1dGVMb2NhdGlvbihhYnNvbHV0ZUJvdW5k
aW5nQm94LmxvY2F0aW9uKCkpOwotICAgIExheW91dFJlY3QgcmVjdCA9IHVuYXZhaWxhYmxlUGx1
Z2luSW5kaWNhdG9yQm91bmRzKGFic29sdXRlTG9jYXRpb24pOwotICAgIGlmIChyZWN0LmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBSZW5kZXJWaWV3KiByb290UmVuZGVy
VmlldyA9IGRvY3VtZW50KCkudG9wRG9jdW1lbnQoKS5yZW5kZXJWaWV3KCk7Ci0gICAgQVNTRVJU
KHJvb3RSZW5kZXJWaWV3KTsKLSAgICBpZiAoIXJvb3RSZW5kZXJWaWV3KQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgIEludFJlY3Qgcm9vdFZpZXdSZWN0ID0gdmlldygpLmZyYW1lVmlldygp
LmNvbnZlcnRUb1Jvb3RWaWV3KHNuYXBwZWRJbnRSZWN0KHJlY3QpKTsKLSAgICAKLSAgICBIaXRU
ZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1
ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcgfCBIaXRUZXN0UmVx
dWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50IHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRG
cmFtZUNvbnRlbnQpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0OwotICAgIEhpdFRlc3RMb2Nh
dGlvbiBsb2NhdGlvbjsKLSAgICAKLSAgICBMYXlvdXRVbml0IHggPSByb290Vmlld1JlY3QueCgp
OwotICAgIExheW91dFVuaXQgeSA9IHJvb3RWaWV3UmVjdC55KCk7Ci0gICAgTGF5b3V0VW5pdCB3
aWR0aCA9IHJvb3RWaWV3UmVjdC53aWR0aCgpOwotICAgIExheW91dFVuaXQgaGVpZ2h0ID0gcm9v
dFZpZXdSZWN0LmhlaWdodCgpOwotICAgIAotICAgIC8vIEhpdCB0ZXN0IHRoZSBjZW50ZXIgYW5k
IG5lYXIgdGhlIGNvcm5lcnMgb2YgdGhlIHJlcGxhY2VtZW50IHRleHQgdG8gZW5zdXJlCi0gICAg
Ly8gaXQgaXMgdmlzaWJsZSBhbmQgaXMgbm90IG1hc2tlZCBieSBvdGhlciBlbGVtZW50cy4KLSAg
ICBib29sIGhpdCA9IGZhbHNlOwotICAgIGxvY2F0aW9uID0gTGF5b3V0UG9pbnQoeCArIHdpZHRo
IC8gMiwgeSArIGhlaWdodCAvIDIpOwotICAgIGhpdCA9IHJvb3RSZW5kZXJWaWV3LT5oaXRUZXN0
KHJlcXVlc3QsIGxvY2F0aW9uLCByZXN1bHQpOwotICAgIGlmICghaGl0IHx8IHJlc3VsdC5pbm5l
ck5vZGUoKSAhPSAmZnJhbWVPd25lckVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgCi0gICAgbG9jYXRpb24gPSBMYXlvdXRQb2ludCh4LCB5KTsKLSAgICBoaXQgPSByb290UmVu
ZGVyVmlldy0+aGl0VGVzdChyZXF1ZXN0LCBsb2NhdGlvbiwgcmVzdWx0KTsKLSAgICBpZiAoIWhp
dCB8fCByZXN1bHQuaW5uZXJOb2RlKCkgIT0gJmZyYW1lT3duZXJFbGVtZW50KCkpCi0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIAotICAgIGxvY2F0aW9uID0gTGF5b3V0UG9pbnQoeCArIHdpZHRo
LCB5KTsKLSAgICBoaXQgPSByb290UmVuZGVyVmlldy0+aGl0VGVzdChyZXF1ZXN0LCBsb2NhdGlv
biwgcmVzdWx0KTsKLSAgICBpZiAoIWhpdCB8fCByZXN1bHQuaW5uZXJOb2RlKCkgIT0gJmZyYW1l
T3duZXJFbGVtZW50KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIAotICAgIGxvY2F0aW9u
ID0gTGF5b3V0UG9pbnQoeCArIHdpZHRoLCB5ICsgaGVpZ2h0KTsKLSAgICBoaXQgPSByb290UmVu
ZGVyVmlldy0+aGl0VGVzdChyZXF1ZXN0LCBsb2NhdGlvbiwgcmVzdWx0KTsKLSAgICBpZiAoIWhp
dCB8fCByZXN1bHQuaW5uZXJOb2RlKCkgIT0gJmZyYW1lT3duZXJFbGVtZW50KCkpCi0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIAotICAgIGxvY2F0aW9uID0gTGF5b3V0UG9pbnQoeCwgeSArIGhl
aWdodCk7Ci0gICAgaGl0ID0gcm9vdFJlbmRlclZpZXctPmhpdFRlc3QocmVxdWVzdCwgbG9jYXRp
b24sIHJlc3VsdCk7Ci0gICAgaWYgKCFoaXQgfHwgcmVzdWx0LmlubmVyTm9kZSgpICE9ICZmcmFt
ZU93bmVyRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQogdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6bGF5b3V0KCkKIHsKICAgICBTdGFj
a1N0YXRzOjpMYXlvdXRDaGVja1BvaW50IGxheW91dENoZWNrUG9pbnQ7CkBAIC01NzUsNjkgKzMy
OCw4IEBAIGJvb2wgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmxvZ2ljYWxTY3JvbGwoU2Nyb2xsTG9n
aWNhbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sCiAgICAgcmV0dXJuIHNjcm9sbChsb2dpY2Fs
VG9QaHlzaWNhbChkaXJlY3Rpb24sIHRydWUsIGZhbHNlKSwgZ3JhbnVsYXJpdHksIG11bHRpcGxp
ZXIsIHN0b3BFbGVtZW50KTsKIH0KIAotCi1ib29sIFJlbmRlckVtYmVkZGVkT2JqZWN0Ojppc0lu
VW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0
Ci17Ci0gICAgRmxvYXRSZWN0IGNvbnRlbnRSZWN0OwotICAgIEZsb2F0UmVjdCBpbmRpY2F0b3JS
ZWN0OwotICAgIEZsb2F0UmVjdCByZXBsYWNlbWVudFRleHRSZWN0OwotICAgIEZsb2F0UmVjdCBh
cnJvd1JlY3Q7Ci0gICAgRm9udENhc2NhZGUgZm9udDsKLSAgICBUZXh0UnVuIHJ1bigiIik7Ci0g
ICAgZmxvYXQgdGV4dFdpZHRoOwotICAgIHJldHVybiBnZXRSZXBsYWNlbWVudFRleHRHZW9tZXRy
eShJbnRQb2ludCgpLCBjb250ZW50UmVjdCwgaW5kaWNhdG9yUmVjdCwgcmVwbGFjZW1lbnRUZXh0
UmVjdCwgYXJyb3dSZWN0LCBmb250LCBydW4sIHRleHRXaWR0aCkKLSAgICAgICAgJiYgaW5kaWNh
dG9yUmVjdC5jb250YWlucyhwb2ludCk7Ci19Ci0KLWJvb2wgUmVuZGVyRW1iZWRkZWRPYmplY3Q6
OmlzSW5VbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcihjb25zdCBNb3VzZUV2ZW50JiBldmVudCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gaXNJblVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yKGFic29s
dXRlVG9Mb2NhbChldmVudC5hYnNvbHV0ZUxvY2F0aW9uKCksIFVzZVRyYW5zZm9ybXMpKTsKLX0K
LQotdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6aGFuZGxlVW5hdmFpbGFibGVQbHVnaW5JbmRp
Y2F0b3JFdmVudChFdmVudCogZXZlbnQpCi17Ci0gICAgaWYgKCFzaG91bGRVbmF2YWlsYWJsZVBs
dWdpbk1lc3NhZ2VCZUJ1dHRvbihkb2N1bWVudCgpLCBtX3BsdWdpblVuYXZhaWxhYmlsaXR5UmVh
c29uKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFpczxNb3VzZUV2ZW50PigqZXZlbnQp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBNb3VzZUV2ZW50JiBtb3VzZUV2ZW50ID0gZG93bmNh
c3Q8TW91c2VFdmVudD4oKmV2ZW50KTsKLSAgICBIVE1MUGx1Z0luRWxlbWVudCYgZWxlbWVudCA9
IGRvd25jYXN0PEhUTUxQbHVnSW5FbGVtZW50PihmcmFtZU93bmVyRWxlbWVudCgpKTsKLSAgICBp
ZiAobW91c2VFdmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYmIG1v
dXNlRXZlbnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewotICAgICAgICBtX21vdXNlRG93bldh
c0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IgPSBpc0luVW5hdmFpbGFibGVQbHVnaW5JbmRp
Y2F0b3IobW91c2VFdmVudCk7Ci0gICAgICAgIGlmIChtX21vdXNlRG93bldhc0luVW5hdmFpbGFi
bGVQbHVnaW5JbmRpY2F0b3IpIHsKLSAgICAgICAgICAgIGZyYW1lKCkuZXZlbnRIYW5kbGVyKCku
c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KCZlbGVtZW50KTsKLSAgICAgICAgICAgIGVs
ZW1lbnQuc2V0SXNDYXB0dXJpbmdNb3VzZUV2ZW50cyh0cnVlKTsKLSAgICAgICAgICAgIHNldFVu
YXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9ySXNQcmVzc2VkKHRydWUpOwotICAgICAgICB9Ci0gICAg
ICAgIG1vdXNlRXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKLSAgICB9Ci0gICAgaWYgKG1vdXNl
RXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQgJiYgbW91c2VFdmVudC5i
dXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB7Ci0gICAgICAgIGlmIChtX3VuYXZhaWxhYmxlUGx1Z2lu
SW5kaWNhdG9ySXNQcmVzc2VkKSB7Ci0gICAgICAgICAgICBmcmFtZSgpLmV2ZW50SGFuZGxlcigp
LnNldENhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudChudWxscHRyKTsKLSAgICAgICAgICAgIGVs
ZW1lbnQuc2V0SXNDYXB0dXJpbmdNb3VzZUV2ZW50cyhmYWxzZSk7Ci0gICAgICAgICAgICBzZXRV
bmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcklzUHJlc3NlZChmYWxzZSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKG1fbW91c2VEb3duV2FzSW5VbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvciAmJiBp
c0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IobW91c2VFdmVudCkpIHsKLSAgICAgICAgICAg
IGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpCi0gICAgICAgICAgICAgICAgcGFn
ZS0+Y2hyb21lKCkuY2xpZW50KCkudW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKCZlbGVt
ZW50LCBtX3BsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKTsKLSAgICAgICAgfQotICAgICAgICBt
X21vdXNlRG93bldhc0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IgPSBmYWxzZTsKLSAgICAg
ICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0gICAgfQotICAgIGlmIChtb3VzZUV2ZW50
LnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpIHsKLSAgICAgICAgc2V0VW5h
dmFpbGFibGVQbHVnaW5JbmRpY2F0b3JJc1ByZXNzZWQobV9tb3VzZURvd25XYXNJblVuYXZhaWxh
YmxlUGx1Z2luSW5kaWNhdG9yICYmIGlzSW5VbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcihtb3Vz
ZUV2ZW50KSk7Ci0gICAgICAgIG1vdXNlRXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKLSAgICB9
Ci19Ci0KIEN1cnNvckRpcmVjdGl2ZSBSZW5kZXJFbWJlZGRlZE9iamVjdDo6Z2V0Q3Vyc29yKGNv
bnN0IExheW91dFBvaW50JiBwb2ludCwgQ3Vyc29yJiBjdXJzb3IpIGNvbnN0CiB7Ci0gICAgaWYg
KHNob3dzVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IoKSAmJiBzaG91bGRVbmF2YWlsYWJsZVBs
dWdpbk1lc3NhZ2VCZUJ1dHRvbihkb2N1bWVudCgpLCBtX3BsdWdpblVuYXZhaWxhYmlsaXR5UmVh
c29uKSAmJiBpc0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IocG9pbnQpKSB7Ci0gICAgICAg
IGN1cnNvciA9IGhhbmRDdXJzb3IoKTsKLSAgICAgICAgcmV0dXJuIFNldEN1cnNvcjsKLSAgICB9
CiAgICAgaWYgKHdpZGdldCgpICYmIHdpZGdldCgpLT5pc1BsdWdpblZpZXdCYXNlKCkpIHsKICAg
ICAgICAgLy8gQSBwbHVnLWluIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHRoZSBjdXJzb3Ig
d2hlbiB0aGUgcG9pbnRlciBpcyBvdmVyIGl0LgogICAgICAgICByZXR1cm4gRG9Ob3RTZXRDdXJz
b3I7CkBAIC02NDcsNiArMzM5LDkgQEAgQ3Vyc29yRGlyZWN0aXZlIFJlbmRlckVtYmVkZGVkT2Jq
ZWN0OjpnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBDdXJzb3IKIAogYm9vbCBS
ZW5kZXJFbWJlZGRlZE9iamVjdDo6Y2FuSGF2ZUNoaWxkcmVuKCkgY29uc3QKIHsKKyAgICBpZiAo
aXM8SFRNTFBsdWdJbkVsZW1lbnQ+KGZyYW1lT3duZXJFbGVtZW50KCkpICYmICBkb3duY2FzdDxI
VE1MUGx1Z0luRWxlbWVudD4oZnJhbWVPd25lckVsZW1lbnQoKSkuaXNQbHVnaW5VbmF2YWlsYWJs
ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIGlmIChpc1NuYXBzaG90dGVkUGx1Z0lu
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oCmluZGV4IGJkNjY2OGQzNDhmYzcwYjEwMmE5MjFiZTA5
NWQxOTQ1YThkYWUzZDguLmYyZmYxYzIxOGU3ZGQyMTFlZGUyYTAyMDEzMTIzMmJhZDQ4NGVhNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5o
CkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93c0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmcoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBwYWludFJl
cGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGUgZmluYWw7CiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3Zl
cnJpZGU7CiAKICAgICB2aXJ0dWFsIEN1cnNvckRpcmVjdGl2ZSBnZXRDdXJzb3IoY29uc3QgTGF5
b3V0UG9pbnQmLCBDdXJzb3ImKSBjb25zdCBvdmVycmlkZTsKQEAgLTgzLDEyICs4Miw2IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIHNjcm9sbChTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdy
YW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyID0gMSwgRWxlbWVudCoqIHN0b3BFbGVtZW50ID0g
bnVsbHB0ciwgUmVuZGVyQm94KiBzdGFydEJveCA9IG51bGxwdHIsIGNvbnN0IEludFBvaW50JiB3
aGVlbEV2ZW50QWJzb2x1dGVQb2ludCA9IEludFBvaW50KCkpIG92ZXJyaWRlIGZpbmFsOwogICAg
IHZpcnR1YWwgYm9vbCBsb2dpY2FsU2Nyb2xsKFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24sIFNjcm9s
bEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyLCBFbGVtZW50Kiogc3RvcEVsZW1lbnQpIG92
ZXJyaWRlIGZpbmFsOwogCi0gICAgdm9pZCBzZXRVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcklz
UHJlc3NlZChib29sKTsKLSAgICBib29sIGlzSW5VbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcihj
b25zdCBNb3VzZUV2ZW50JikgY29uc3Q7Ci0gICAgYm9vbCBpc0luVW5hdmFpbGFibGVQbHVnaW5J
bmRpY2F0b3IoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwotICAgIGJvb2wgZ2V0UmVwbGFjZW1l
bnRUZXh0R2VvbWV0cnkoY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBGbG9h
dFJlY3QmIGNvbnRlbnRSZWN0LCBGbG9hdFJlY3QmIGluZGljYXRvclJlY3QsIEZsb2F0UmVjdCYg
cmVwbGFjZW1lbnRUZXh0UmVjdCwgRmxvYXRSZWN0JiBhcnJvd1JlY3QsIEZvbnRDYXNjYWRlJiwg
VGV4dFJ1biYsIGZsb2F0JiB0ZXh0V2lkdGgpIGNvbnN0OwotICAgIExheW91dFJlY3QgdW5hdmFp
bGFibGVQbHVnaW5JbmRpY2F0b3JCb3VuZHMoY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKLQog
ICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSBmaW5hbDsK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZVdpZGdldCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDJjYmY4MjQ2ZGExMGEwY2Q0
ZDhlOWE1NGQ2NGRmMjFiZGY5YTQyNTEuLjg3YTkwOGZjMDJiNGU4YzYxMjRjNDE1N2RlYmQ5YTRk
MDE4YTdhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIzMzUsNyAr
MjMzNSw3IEBAIGJvb2wgSW50ZXJuYWxzOjppc1BsdWdpblVuYXZhaWxhYmlsaXR5SW5kaWNhdG9y
T2JzY3VyZWQoRWxlbWVudCogZWxlbWVudCwgRXhjZXB0CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KCpyZW5k
ZXJlcikuaXNSZXBsYWNlbWVudE9ic2N1cmVkKCk7CisgICAgcmV0dXJuIGZhbHNlOyAvLyBkb3du
Y2FzdDxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnJlbmRlcmVyKS5pc1JlcGxhY2VtZW50T2JzY3Vy
ZWQoKTsKIH0KICAgICAKIGJvb2wgSW50ZXJuYWxzOjppc1BsdWdpblNuYXBzaG90dGVkKEVsZW1l
bnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tCmluZGV4IDc2MDA1ODM2OTBkNzk2MGM1ZDhhNTlhNzNlNzJkMDI1ZGIyY2ZmMzcuLjNhODYx
OGFkYmRjYzc2NDg3ZDI0YWM1NmQ1NTZmMzMwYWUwOTY5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBs
dWdpblZpZXcubW0KQEAgLTQyOCw4ICs0MjgsNyBAQCBleHRlcm4gIkMiIHsKIAogLSAodm9pZClw
bHVnaW5Ib3N0RGllZAogewotICAgIGlmIChpczxSZW5kZXJFbWJlZGRlZE9iamVjdD4oX2VsZW1l
bnQtPnJlbmRlcmVyKCkpKQotICAgICAgICBkb3duY2FzdDxSZW5kZXJFbWJlZGRlZE9iamVjdD4o
Kl9lbGVtZW50LT5yZW5kZXJlcigpKS5zZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbihSZW5k
ZXJFbWJlZGRlZE9iamVjdDo6UGx1Z2luQ3Jhc2hlZCk7CisgICAgX2VsZW1lbnQtPnNldFBsdWdp
blVuYXZhaWxhYmlsaXR5UmVhc29uKEhUTUxQbHVnSW5FbGVtZW50OjpQbHVnaW5DcmFzaGVkKTsK
IAogICAgIF9wbHVnaW5MYXllciA9IG5pbDsKICAgICBfcHJveHkgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA4MTUy
NjhiZmNkNjRhYzc1YmIwZDYxNjdmNzJjNjAzODMxODc4YTRjLi5kZDAzMmIxNzMxZmM2NmZlMzE0
ZGM0N2ZkODZlMDRmODIzYTAwODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMTEyLDggKzExMiw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBXVEY6OlN0cmluZyYpIG92
ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhcnNNb2RlRGlkQ2hhbmdlKCkgY29u
c3Qgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFVuYXZhaWxhYmxlUGx1Z2lu
TWVzc2FnZUJlQnV0dG9uKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpQbHVnaW5VbmF2
YWlsYWJpbGl0eVJlYXNvbikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVuYXZh
aWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZChXZWJDb3JlOjpFbGVtZW50KiwgV2ViQ29yZTo6UmVu
ZGVyRW1iZWRkZWRPYmplY3Q6OlBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVW5hdmFpbGFibGVQbHVnaW5NZXNzYWdlQmVC
dXR0b24oV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OlBsdWdpblVuYXZhaWxhYmlsaXR5UmVh
c29uKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5hdmFpbGFibGVQbHVnaW5C
dXR0b25DbGlja2VkKFdlYkNvcmU6OkVsZW1lbnQqLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVu
dDo6UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24pIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0VG9vbFRpcChjb25zdCBXVEY6OlN0cmluZyYsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24p
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lm1tCmluZGV4IDgzZDQ4NjU5NDFhZmM3NjEwNWU3MzlhOGU5ZGJhOWU1MzRh
MmRjMzQuLjdkMTI0ZDMyMDgwMGNjMzFiMGZlYmQ2NzIwNThiNzEyOWEyMjMyOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0K
QEAgLTYzNywxOSArNjM3LDE5IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzY3JvbGxSZWN0SW50
b1ZpZXcoY29uc3QgSW50UmVjdCYgcikgY29uc3QKIAogLy8gRW5kIGhvc3Qgd2luZG93IG1ldGhv
ZHMuCiAKLWJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzaG91bGRVbmF2YWlsYWJsZVBsdWdpbk1lc3Nh
Z2VCZUJ1dHRvbihSZW5kZXJFbWJlZGRlZE9iamVjdDo6UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFz
b24gcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24pIGNvbnN0Citib29sIFdlYkNocm9tZUNsaWVu
dDo6c2hvdWxkVW5hdmFpbGFibGVQbHVnaW5NZXNzYWdlQmVCdXR0b24oSFRNTFBsdWdJbkVsZW1l
bnQ6OlBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uIHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29u
KSBjb25zdAogewotICAgIGlmIChwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiA9PSBSZW5kZXJF
bWJlZGRlZE9iamVjdDo6UGx1Z2luTWlzc2luZykKKyAgICBpZiAocGx1Z2luVW5hdmFpbGFiaWxp
dHlSZWFzb24gPT0gSFRNTFBsdWdJbkVsZW1lbnQ6OlBsdWdpbk1pc3NpbmcpCiAgICAgICAgIHJl
dHVybiBbW21fd2ViVmlldyBVSURlbGVnYXRlXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHdlYlZpZXc6ZGlkUHJlc3NNaXNzaW5nUGx1Z2luQnV0dG9uOildOwogCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6dW5hdmFpbGFibGVQbHVnaW5CdXR0b25D
bGlja2VkKEVsZW1lbnQqIGVsZW1lbnQsIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpQbHVnaW5VbmF2
YWlsYWJpbGl0eVJlYXNvbiBwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbikgY29uc3QKK3ZvaWQg
V2ViQ2hyb21lQ2xpZW50Ojp1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoRWxlbWVudCog
ZWxlbWVudCwgSFRNTFBsdWdJbkVsZW1lbnQ6OlBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uIHBs
dWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50LT5o
YXNUYWdOYW1lKG9iamVjdFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShlbWJlZFRhZykgfHwg
ZWxlbWVudC0+aGFzVGFnTmFtZShhcHBsZXRUYWcpKTsKIAotICAgIEFTU0VSVChwbHVnaW5VbmF2
YWlsYWJpbGl0eVJlYXNvbiA9PSBSZW5kZXJFbWJlZGRlZE9iamVjdDo6UGx1Z2luTWlzc2luZyk7
CisgICAgQVNTRVJUKHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uID09IEhUTUxQbHVnSW5FbGVt
ZW50OjpQbHVnaW5NaXNzaW5nKTsKICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxl
Y3Rvcih3ZWJWaWV3OmRpZFByZXNzTWlzc2luZ1BsdWdpbkJ1dHRvbjopLCBraXQoZWxlbWVudCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDk2NmY3YTJkYzg1NTQwNGVlZTAxZTQ5ODExYWNj
ZThkZTI2Mzc5YmYuLmQ5ZjlmNjhmMWQ1YzRlODE1ZTZhN2M1OWNlOTM2YzBlOWM3Y2Y0MGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCkBAIC0xOTU0LDggKzE5NTQsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4g
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBzaXplLCBI
VE1MUAogICAgIGlmIChwbHVnaW5QYWNrYWdlKSB7CiAgICAgICAgIGlmIChXS1Nob3VsZEJsb2Nr
UGx1Z2luKFtwbHVnaW5QYWNrYWdlIGJ1bmRsZUlkZW50aWZpZXJdLCBbcGx1Z2luUGFja2FnZSBi
dW5kbGVWZXJzaW9uXSkpIHsKICAgICAgICAgICAgIGVycm9yQ29kZSA9IFdlYktpdEVycm9yQmxv
Y2tlZFBsdWdJblZlcnNpb247Ci0gICAgICAgICAgICBpZiAoaXM8UmVuZGVyRW1iZWRkZWRPYmpl
Y3Q+KCplbGVtZW50LT5yZW5kZXJlcigpKSkKLSAgICAgICAgICAgICAgICBkb3duY2FzdDxSZW5k
ZXJFbWJlZGRlZE9iamVjdD4oKmVsZW1lbnQtPnJlbmRlcmVyKCkpLnNldFBsdWdpblVuYXZhaWxh
YmlsaXR5UmVhc29uKFJlbmRlckVtYmVkZGVkT2JqZWN0OjpJbnNlY3VyZVBsdWdpblZlcnNpb24p
OworICAgICAgICAgICAgZWxlbWVudC0+c2V0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24oSFRN
TFBsdWdJbkVsZW1lbnQ6Okluc2VjdXJlUGx1Z2luVmVyc2lvbik7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBpZiAoW3BsdWdpblBhY2thZ2UgaXNLaW5kT2ZDbGFzczpbV2ViUGx1Z2lu
UGFja2FnZSBjbGFzc11dKQogICAgICAgICAgICAgICAgIHZpZXcgPSBwbHVnaW5WaWV3KG1fd2Vi
RnJhbWUuZ2V0KCksIChXZWJQbHVnaW5QYWNrYWdlICopcGx1Z2luUGFja2FnZSwgYXR0cmlidXRl
S2V5cywga2l0KHBhcmFtVmFsdWVzKSwgYmFzZVVSTCwga2l0KGVsZW1lbnQpLCBsb2FkTWFudWFs
bHkpOwpAQCAtMjA1OSw4ICsyMDU4LDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHMKICAgICBp
ZiAocGx1Z2luUGFja2FnZSkgewogICAgICAgICBpZiAoV0tTaG91bGRCbG9ja1BsdWdpbihbcGx1
Z2luUGFja2FnZSBidW5kbGVJZGVudGlmaWVyXSwgW3BsdWdpblBhY2thZ2UgYnVuZGxlVmVyc2lv
bl0pKSB7CiAgICAgICAgICAgICBlcnJvckNvZGUgPSBXZWJLaXRFcnJvckJsb2NrZWRQbHVnSW5W
ZXJzaW9uOwotICAgICAgICAgICAgaWYgKGlzPFJlbmRlckVtYmVkZGVkT2JqZWN0PigqZWxlbWVu
dC0+cmVuZGVyZXIoKSkpCi0gICAgICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyRW1iZWRkZWRP
YmplY3Q+KCplbGVtZW50LT5yZW5kZXJlcigpKS5zZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNv
bihSZW5kZXJFbWJlZGRlZE9iamVjdDo6SW5zZWN1cmVQbHVnaW5WZXJzaW9uKTsKKyAgICAgICAg
ICAgIGVsZW1lbnQtPnNldFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKEhUTUxQbHVnSW5FbGVt
ZW50OjpJbnNlY3VyZVBsdWdpblZlcnNpb24pOwogICAgICAgICB9IGVsc2UgewogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgICAgICAgICAgaWYgKFtwbHVnaW5QYWNrYWdlIGlz
S2luZE9mQ2xhc3M6W1dlYk5ldHNjYXBlUGx1Z2luUGFja2FnZSBjbGFzc11dKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDUxYmI5ZTRjZjRkOGI0YWMz
YzAyOTNhYWNmYzdkYmFmOTQwY2Y2NjMuLjM2OGFiNGY0NmRkNjUzOWEzODNhMDk3ZjgxNmIzNzdi
ZmNlZjZiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC0xMDMsNiArMTAzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzRGlyZWN0aW9u
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9IVE1MUGx1Z0luRWxlbWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyRW1iZWRk
ZWRPYmplY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLmg+
CkBAIC0zNDMxLDcgKzM0MzIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hdmFpbGFibGVQbHVn
aW5CdXR0b25DbGlja2VkKHVpbnQzMl90IG9wYXF1ZVBsdWdpblVuYXZhaWxhYgogICAgIHBsdWdp
bkluZm9ybWF0aW9uID0gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KHBsdWdpbiwg
ZnJhbWVVUkxTdHJpbmcsIG1pbWVUeXBlLCBwYWdlVVJMU3RyaW5nLCBwbHVnaW5zcGFnZUF0dHJp
YnV0ZVVSTFN0cmluZywgcGx1Z2luVVJMU3RyaW5nKTsKIAogICAgIFdLUGx1Z2luVW5hdmFpbGFi
aWxpdHlSZWFzb24gcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gPSBrV0tQbHVnaW5VbmF2YWls
YWJpbGl0eVJlYXNvblBsdWdpbk1pc3Npbmc7Ci0gICAgc3dpdGNoIChzdGF0aWNfY2FzdDxSZW5k
ZXJFbWJlZGRlZE9iamVjdDo6UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24+KG9wYXF1ZVBsdWdp
blVuYXZhaWxhYmlsaXR5UmVhc29uKSkgeworICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8SFRNTFBs
dWdJbkVsZW1lbnQ6OlBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uPihvcGFxdWVQbHVnaW5VbmF2
YWlsYWJpbGl0eVJlYXNvbikpIHsKICAgICBjYXNlIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpQbHVn
aW5NaXNzaW5nOgogICAgICAgICBwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiA9IGtXS1BsdWdp
blVuYXZhaWxhYmlsaXR5UmVhc29uUGx1Z2luTWlzc2luZzsKICAgICAgICAgYnJlYWs7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXgg
NTkzOTdjYjkwOWVkOTIwZGQzZTA3ZTJmNjBhZDQwMzg0NmE3OTZhNy4uMzg3N2E4YTdhYTA2Mjc2
MTk2ZWRiMmQ5YzI2OGQ4YWFmMjM2MmM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTUwNCw3ICsxNTA0LDcgQEAgdm9pZCBQ
bHVnaW5WaWV3OjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZCgpCiAKICAgICBtX3BsdWdpbkVsZW1lbnQt
PnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwogCi0gICAgZG93bmNh
c3Q8UmVuZGVyRW1iZWRkZWRPYmplY3Q+KCptX3BsdWdpbkVsZW1lbnQtPnJlbmRlcmVyKCkpLnNl
dFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKFJlbmRlckVtYmVkZGVkT2JqZWN0OjpQbHVnaW5D
cmFzaGVkKTsKKyAgICBtX3BsdWdpbkVsZW1lbnQtPnNldFBsdWdpblVuYXZhaWxhYmlsaXR5UmVh
c29uKEhUTUxQbHVnSW5FbGVtZW50OjpQbHVnaW5DcmFzaGVkKTsKICAgICAKICAgICBXaWRnZXQ6
OmludmFsaWRhdGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBhMmVhZGQ4OWYz
ZDc2Y2E3MzkwNGQxN2M2OTJmMjBhOTE1NTgyNDY1Li4zOTk0ZTZmNTVjZTlkYjU1NDk1YTMzNmFm
N2NkNTZhMGMwNjE1M2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC01NDYsMTggKzU0
NiwxOCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2Nyb2xsUmVjdEludG9WaWV3KGNvbnN0IElu
dFJlY3QmKSBjb25zdAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wgV2ViQ2hyb21l
Q2xpZW50OjpzaG91bGRVbmF2YWlsYWJsZVBsdWdpbk1lc3NhZ2VCZUJ1dHRvbihSZW5kZXJFbWJl
ZGRlZE9iamVjdDo6UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gcGx1Z2luVW5hdmFpbGFiaWxp
dHlSZWFzb24pIGNvbnN0Citib29sIFdlYkNocm9tZUNsaWVudDo6c2hvdWxkVW5hdmFpbGFibGVQ
bHVnaW5NZXNzYWdlQmVCdXR0b24oSFRNTFBsdWdJbkVsZW1lbnQ6OlBsdWdpblVuYXZhaWxhYmls
aXR5UmVhc29uIHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKSBjb25zdAogewogICAgIHN3aXRj
aCAocGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24pIHsKLSAgICBjYXNlIFJlbmRlckVtYmVkZGVk
T2JqZWN0OjpQbHVnaW5NaXNzaW5nOgorICAgIGNhc2UgSFRNTFBsdWdJbkVsZW1lbnQ6OlBsdWdp
bk1pc3Npbmc6CiAgICAgICAgIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vODc5NDM5Nz4gV2Ug
c2hvdWxkIG9ubHkgcmV0dXJuIHRydWUgd2hlbiB0aGVyZSBpcyBhCiAgICAgICAgIC8vIG1pc3Np
bmdQbHVnaW5CdXR0b25DbGlja2VkIGNhbGxiYWNrIGRlZmluZWQgb24gdGhlIFBhZ2UgVUkgY2xp
ZW50LgotICAgIGNhc2UgUmVuZGVyRW1iZWRkZWRPYmplY3Q6Okluc2VjdXJlUGx1Z2luVmVyc2lv
bjoKKyAgICBjYXNlIEhUTUxQbHVnSW5FbGVtZW50OjpJbnNlY3VyZVBsdWdpblZlcnNpb246CiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAKLSAgICBjYXNlIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpQ
bHVnaW5DcmFzaGVkOgotICAgIGNhc2UgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OlBsdWdpbkJsb2Nr
ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeToKKyAgICBjYXNlIEhUTUxQbHVnSW5FbGVtZW50OjpQ
bHVnaW5DcmFzaGVkOgorICAgIGNhc2UgSFRNTFBsdWdJbkVsZW1lbnQ6OlBsdWdpbkJsb2NrZWRC
eUNvbnRlbnRTZWN1cml0eVBvbGljeToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtNTY1LDExICs1NjUsMTEgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnNob3VsZFVuYXZhaWxh
YmxlUGx1Z2luTWVzc2FnZUJlQnV0dG9uKFJlbmRlckVtYmVkZGVkT2JqZWMKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAgICAgCi12b2lkIFdlYkNocm9tZUNsaWVudDo6dW5hdmFpbGFibGVQbHVnaW5C
dXR0b25DbGlja2VkKEVsZW1lbnQqIGVsZW1lbnQsIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpQbHVn
aW5VbmF2YWlsYWJpbGl0eVJlYXNvbiBwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbikgY29uc3QK
K3ZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoRWxl
bWVudCogZWxlbWVudCwgSFRNTFBsdWdJbkVsZW1lbnQ6OlBsdWdpblVuYXZhaWxhYmlsaXR5UmVh
c29uIHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKSBjb25zdAogewogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQogICAgIEFTU0VSVChlbGVtZW50LT5oYXNUYWdOYW1lKG9iamVjdFRh
ZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShlbWJlZFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFt
ZShhcHBsZXRUYWcpKTsKLSAgICBBU1NFUlQocGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gPT0g
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OlBsdWdpbk1pc3NpbmcgfHwgcGx1Z2luVW5hdmFpbGFiaWxp
dHlSZWFzb24gPT0gUmVuZGVyRW1iZWRkZWRPYmplY3Q6Okluc2VjdXJlUGx1Z2luVmVyc2lvbiB8
fCBwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbik7CisgICAgQVNTRVJUKHBsdWdpblVuYXZhaWxh
YmlsaXR5UmVhc29uID09IEhUTUxQbHVnSW5FbGVtZW50OjpQbHVnaW5NaXNzaW5nIHx8IHBsdWdp
blVuYXZhaWxhYmlsaXR5UmVhc29uID09IEhUTUxQbHVnSW5FbGVtZW50OjpJbnNlY3VyZVBsdWdp
blZlcnNpb24gfHwgcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24pOwogCiAgICAgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudCogcGx1Z2luRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQqPihlbGVtZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggMTc2MDA2NWM1
YWI5ZDIzOWFjOTY1Y2E3YjBjZjY1OWQ3NWY3NGQ4NS4uZDM3NTNkOGNjNTEzMWIzMzExYzk1Zjhl
ZGNlMjdkZGYxODllMzhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0xMjUsOCArMTI1LDgg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChXZWJDb3Jl
OjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsUmVjdEludG9WaWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBj
b25zdCBvdmVycmlkZTsgLy8gQ3VycmVudGx5IG9ubHkgTWFjIGhhcyBhIG5vbiBlbXB0eSBpbXBs
ZW1lbnRhdGlvbi4KIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVbmF2YWlsYWJsZVBsdWdpbk1l
c3NhZ2VCZUJ1dHRvbihXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6UGx1Z2luVW5hdmFp
bGFiaWxpdHlSZWFzb24pIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1bmF2YWls
YWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoV2ViQ29yZTo6RWxlbWVudCosIFdlYkNvcmU6OlJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBib29sIHNob3VsZFVuYXZhaWxhYmxlUGx1Z2luTWVzc2FnZUJlQnV0
dG9uKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50OjpQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNv
bikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHVuYXZhaWxhYmxlUGx1Z2luQnV0
dG9uQ2xpY2tlZChXZWJDb3JlOjpFbGVtZW50KiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6
OlBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgdm9pZCBzY3JvbGxiYXJzTW9kZURpZENoYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZDFiOGI3ZGI3ZWQyMGRh
ZDcwZmQ2YTg1YjIzYTk4NTNhMjg5MDAxYS4uM2RkZTBiN2I4NDJlNzcwOTgwYmU2YTEzZGRmNTk3
YThlYmFkNjlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtNzA4LDEyICs3MDgsOSBAQCBQYXNzUmVmUHRyPFBsdWdpbj4gV2ViUGFnZTo6
Y3JlYXRlUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdQogCiAg
ICAgaWYgKGlzQmxvY2tlZFBsdWdpbikgewogICAgICAgICBib29sIHJlcGxhY2VtZW50T2JzY3Vy
ZWQgPSBmYWxzZTsKLSAgICAgICAgaWYgKGlzPFJlbmRlckVtYmVkZGVkT2JqZWN0PigqcGx1Z2lu
RWxlbWVudC0+cmVuZGVyZXIoKSkpIHsKLSAgICAgICAgICAgIGF1dG8mIHJlbmRlck9iamVjdCA9
IGRvd25jYXN0PFJlbmRlckVtYmVkZGVkT2JqZWN0PigqcGx1Z2luRWxlbWVudC0+cmVuZGVyZXIo
KSk7Ci0gICAgICAgICAgICByZW5kZXJPYmplY3Quc2V0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFz
b25XaXRoRGVzY3JpcHRpb24oUmVuZGVyRW1iZWRkZWRPYmplY3Q6Okluc2VjdXJlUGx1Z2luVmVy
c2lvbiwgdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICByZXBsYWNlbWVu
dE9ic2N1cmVkID0gcmVuZGVyT2JqZWN0LmlzUmVwbGFjZW1lbnRPYnNjdXJlZCgpOwotICAgICAg
ICAgICAgcmVuZGVyT2JqZWN0LnNldFVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9ySXNIaWRkZW4o
cmVwbGFjZW1lbnRPYnNjdXJlZCk7Ci0gICAgICAgIH0KKyAgICAgICAgcGx1Z2luRWxlbWVudC0+
c2V0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb25XaXRoRGVzY3JpcHRpb24oSFRNTFBsdWdJbkVs
ZW1lbnQ6Okluc2VjdXJlUGx1Z2luVmVyc2lvbiwgdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbik7
CisvLyAgICAgICAgaWYgKGlzPFJlbmRlckVtYmVkZGVkT2JqZWN0PigqcGx1Z2luRWxlbWVudC0+
cmVuZGVyZXIoKSkpCisvLyAgICAgICAgICAgIHJlcGxhY2VtZW50T2JzY3VyZWQgPSBkb3duY2Fz
dDxSZW5kZXJFbWJlZGRlZE9iamVjdD4oKnBsdWdpbkVsZW1lbnQtPnJlbmRlcmVyKCkpLmlzUmVw
bGFjZW1lbnRPYnNjdXJlZCgpOwogCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24ocGFyYW1ldGVycy5taW1lVHlwZSwgcGFy
YW1ldGVycy51cmwuc3RyaW5nKCksIGZyYW1lVVJMU3RyaW5nLCBwYWdlVVJMU3RyaW5nLCByZXBs
YWNlbWVudE9ic2N1cmVkKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>