<?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>134556</bug_id>
          
          <creation_ts>2014-07-02 13:42:11 -0700</creation_ts>
          <short_desc>Begin ripping out the old session state code</short_desc>
          <delta_ts>2014-07-02 16:03:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1020017</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-07-02 13:42:11 -0700</bug_when>
    <thetext>Begin ripping out the old session state code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020018</commentid>
    <comment_count>1</comment_count>
      <attachid>234275</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-07-02 13:42:26 -0700</bug_when>
    <thetext>Created attachment 234275
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020019</commentid>
    <comment_count>2</comment_count>
      <attachid>234275</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-07-02 13:43:19 -0700</bug_when>
    <thetext>Comment on attachment 234275
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020020</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-07-02 13:43:42 -0700</bug_when>
    <thetext>Committed r170719: &lt;http://trac.webkit.org/changeset/170719&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020084</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-07-02 16:03:03 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Committed r170719: &lt;http://trac.webkit.org/changeset/170719&gt;

and the !CF buildfix landed in https://trac.webkit.org/changeset/170731</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234275</attachid>
            <date>2014-07-02 13:42:26 -0700</date>
            <delta_ts>2014-07-02 13:43:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134556-20140702134210.patch</filename>
            <type>text/plain</type>
            <size>29185</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwNzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjYzNTFkNGQ3MzU2Yzgw
NTUzODU1NWNmMjVkMTlkM2NiYTUwNmFiYi4uMmFhNjU1OTQxNjhhZjM2NTFkODYyNmYwN2UyYzIx
MGNiNTdlYTUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDE0LTA3LTAyICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgQmVnaW4gcmlwcGlu
ZyBvdXQgdGhlIG9sZCBzZXNzaW9uIHN0YXRlIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDU1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c2Vzc2lvblN0YXRlRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVzdG9yZUZyb21TZXNzaW9uU3RhdGVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBX
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKzIwMTQtMDctMDIgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBVc2UgbGVnYWN5IHN0YXRl
IGNvZGluZyBkaXJlY3RseSBpbiBXS1dlYlZpZXcKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDU1MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKaW5kZXggNzMwNWIwYWU1NTI0NmNmOTVlODJhMmU2Yjgx
ODk5M2Q1MTY5YmMwZS4uOWFlYzBhMTZjN2ExZWZjOWYxODFjM2YxOWY5ZDQ2MzYxMjQ3MWU3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaApAQCAt
NzIsMTMgKzcyLDYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gYmFja0xp
c3RBc0FQSUFycmF5V2l0aExpbWl0KHVuc2lnbmVkIGxpbWl0KSBjb25zdDsKICAgICBQYXNzUmVm
UHRyPEFQSTo6QXJyYXk+IGZvcndhcmRMaXN0QXNBUElBcnJheVdpdGhMaW1pdCh1bnNpZ25lZCBs
aW1pdCkgY29uc3Q7CiAKLSNpZiBVU0UoQ0YpCi0gICAgQ0ZEaWN0aW9uYXJ5UmVmIGNyZWF0ZUNG
RGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKHN0ZDo6ZnVuY3Rpb248Ym9vbCAoV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSYpPikgY29uc3Q7Ci0gICAgYm9vbCByZXN0b3JlRnJvbUNGRGljdGlvbmFyeVJl
cHJlc2VudGF0aW9uKENGRGljdGlvbmFyeVJlZik7Ci0gICAgYm9vbCByZXN0b3JlRnJvbVYwQ0ZE
aWN0aW9uYXJ5UmVwcmVzZW50YXRpb24oQ0ZEaWN0aW9uYXJ5UmVmKTsKLSAgICBib29sIHJlc3Rv
cmVGcm9tVjFDRkRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbihDRkRpY3Rpb25hcnlSZWYpOwotI2Vu
ZGlmCi0KICAgICBCYWNrRm9yd2FyZExpc3RTdGF0ZSBiYWNrRm9yd2FyZExpc3RTdGF0ZShjb25z
dCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4mKSBjb25zdDsK
ICAgICB2b2lkIHJlc3RvcmVGcm9tU3RhdGUoQmFja0ZvcndhcmRMaXN0U3RhdGUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNzI2NmEwY2I0M2UwYjBkNWJj
YzI0YTMxMzc0MWRmMDU5YTU0NGVmMC4uMjYwNWQxYjg4MTAwY2JkM2FlZjQwZGE4MGEzMWNiNTE4
ZmJhZjU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNTUx
LDggKzU1MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlcm1pbmF0ZVByb2Nlc3MoKTsKIAogICAg
IFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChXZWJC
YWNrRm9yd2FyZExpc3RJdGVtJik+JiA9IG51bGxwdHIpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8
QVBJOjpEYXRhPiBzZXNzaW9uU3RhdGVEYXRhKHN0ZDo6ZnVuY3Rpb248Ym9vbCAoV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSYpPikgY29uc3Q7Ci0gICAgdWludDY0X3QgcmVzdG9yZUZyb21TZXNzaW9u
U3RhdGVEYXRhKEFQSTo6RGF0YSopOwogICAgIHVpbnQ2NF90IHJlc3RvcmVGcm9tU2Vzc2lvblN0
YXRlKFNlc3Npb25TdGF0ZSk7CiAKICAgICBib29sIHN1cHBvcnRzVGV4dFpvb20oKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExp
c3RDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0
Q0YuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWIwMWY2YzI0OTllZjc4ZWZj
Y2I0ZTIzM2I2YmYxMDI5ZWQ3MThkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExp
c3RDRi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCwgMjAxMSwgMjAxMiwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJCYWNrRm9y
d2FyZExpc3QuaCIKLQotI2luY2x1ZGUgIkFQSURhdGEuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgi
Ci0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLSNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdWludDY0X3QgZ2Vu
ZXJhdGVXZWJCYWNrRm9yd2FyZEl0ZW1JRCgpOwotCi1zdGF0aWMgQ0ZOdW1iZXJSZWYgc2Vzc2lv
bkhpc3RvcnlDdXJyZW50VmVyc2lvbigpCi17Ci0gICAgc3RhdGljIENGSW5kZXggY3VycmVudFZl
cnNpb25Bc0NGSW5kZXggPSAxOwotICAgIHJldHVybiBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1i
ZXJDRkluZGV4VHlwZSwgJmN1cnJlbnRWZXJzaW9uQXNDRkluZGV4KTsKLX0KLQotc3RhdGljIENG
U3RyaW5nUmVmIHNlc3Npb25IaXN0b3J5VmVyc2lvbktleSA9IENGU1RSKCJTZXNzaW9uSGlzdG9y
eVZlcnNpb24iKTsKLXN0YXRpYyBDRlN0cmluZ1JlZiBzZXNzaW9uSGlzdG9yeUN1cnJlbnRJbmRl
eEtleSA9IENGU1RSKCJTZXNzaW9uSGlzdG9yeUN1cnJlbnRJbmRleCIpOwotc3RhdGljIENGU3Ry
aW5nUmVmIHNlc3Npb25IaXN0b3J5RW50cmllc0tleSA9IENGU1RSKCJTZXNzaW9uSGlzdG9yeUVu
dHJpZXMiKTsKLXN0YXRpYyBDRlN0cmluZ1JlZiBzZXNzaW9uSGlzdG9yeUVudHJ5VGl0bGVLZXkg
PSBDRlNUUigiU2Vzc2lvbkhpc3RvcnlFbnRyeVRpdGxlIik7Ci1zdGF0aWMgQ0ZTdHJpbmdSZWYg
c2Vzc2lvbkhpc3RvcnlFbnRyeVVSTEtleSA9IENGU1RSKCJTZXNzaW9uSGlzdG9yeUVudHJ5VVJM
Iik7Ci1zdGF0aWMgQ0ZTdHJpbmdSZWYgc2Vzc2lvbkhpc3RvcnlFbnRyeU9yaWdpbmFsVVJMS2V5
ID0gQ0ZTVFIoIlNlc3Npb25IaXN0b3J5RW50cnlPcmlnaW5hbFVSTCIpOwotc3RhdGljIENGU3Ry
aW5nUmVmIHNlc3Npb25IaXN0b3J5RW50cnlEYXRhS2V5ID0gQ0ZTVFIoIlNlc3Npb25IaXN0b3J5
RW50cnlEYXRhIik7Ci1zdGF0aWMgQ0ZTdHJpbmdSZWYgc2Vzc2lvbkhpc3RvcnlFbnRyeVNuYXBz
aG90VVVJREtleSA9IENGU1RSKCJTZXNzaW9uSGlzdG9yeUVudHJ5U25hcHNob3RVVUlEIik7Ci0K
LXN0YXRpYyBib29sIGV4dHJhY3RCYWNrRm9yd2FyZExpc3RFbnRyaWVzRnJvbUFycmF5KENGQXJy
YXlSZWYsIEJhY2tGb3J3YXJkTGlzdEl0ZW1WZWN0b3ImKTsKLQotc3RhdGljIENGRGljdGlvbmFy
eVJlZiBjcmVhdGVFbXB0eVNlc3Npb25IaXN0b3J5RGljdGlvbmFyeSgpCi17Ci0gICAgc3RhdGlj
IGNvbnN0IHZvaWQqIGtleXNbMV0gPSB7IHNlc3Npb25IaXN0b3J5VmVyc2lvbktleSB9OwotICAg
IHN0YXRpYyBjb25zdCB2b2lkKiB2YWx1ZXNbMV0gPSB7IHNlc3Npb25IaXN0b3J5Q3VycmVudFZl
cnNpb24oKSB9OwotCi0gICAgcmV0dXJuIENGRGljdGlvbmFyeUNyZWF0ZSgwLCBrZXlzLCB2YWx1
ZXMsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5
VmFsdWVDYWxsQmFja3MpOwotfQotCi1DRkRpY3Rpb25hcnlSZWYgV2ViQmFja0ZvcndhcmRMaXN0
OjpjcmVhdGVDRkRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbihzdGQ6OmZ1bmN0aW9uPGJvb2wgKFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4gZmlsdGVyKSBjb25zdAotewotICAgIEFTU0VSVCghbV9o
YXNDdXJyZW50SW5kZXggfHwgbV9jdXJyZW50SW5kZXggPCBtX2VudHJpZXMuc2l6ZSgpKTsKLQot
ICAgIGlmICghbV9oYXNDdXJyZW50SW5kZXgpIHsKLSAgICAgICAgLy8gV2UgcmVwcmVzZW50IGhh
dmluZyBubyBjdXJyZW50IGluZGV4IGJ5IHdyaXRpbmcgb3V0IGFuIGVtcHR5IGRpY3Rpb25hcnkg
KGJlc2lkZXMgdGhlIHZlcnNpb24pLgotICAgICAgICByZXR1cm4gY3JlYXRlRW1wdHlTZXNzaW9u
SGlzdG9yeURpY3Rpb25hcnkoKTsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJy
YXlSZWY+IGVudHJpZXMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIG1fZW50cmll
cy5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLQotICAgIC8vIFdlIG1heSBuZWVk
IHRvIHVwZGF0ZSB0aGUgY3VycmVudCBpbmRleCB0byBhY2NvdW50IGZvciBlbnRyaWVzIHRoYXQg
YXJlIGZpbHRlcmVkIGJ5IHRoZSBjYWxsYmFjay4KLSAgICBDRkluZGV4IGN1cnJlbnRJbmRleCA9
IG1fY3VycmVudEluZGV4OwotICAgIGJvb2wgaGFzQ3VycmVudEluZGV4ID0gdHJ1ZTsKLQotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9lbnRyaWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IC8vIElmIHdlIHNvbWVob3cgZW5kZWQgdXAgd2l0aCBhIG51bGwgZW50cnkgdGhlbiB3ZSBzaG91
bGQgY29uc2lkZXIgdGhlIGRhdGEgaW52YWxpZCBhbmQgbm90IHNhdmUgc2Vzc2lvbiBoaXN0b3J5
IGF0IGFsbC4KLSAgICAgICAgQVNTRVJUKG1fZW50cmllc1tpXSk7Ci0gICAgICAgIGlmICghbV9l
bnRyaWVzW2ldKSB7Ci0gICAgICAgICAgICBMT0coU2Vzc2lvblN0YXRlLCAiV2ViQmFja0Zvcndh
cmRMaXN0IGNvbnRhaW5lZCBhIG51bGwgZW50cnkgYXQgaW5kZXggJWx1IiwgaSk7Ci0gICAgICAg
ICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChmaWx0ZXIgJiYgIWZpbHRl
cigqbV9lbnRyaWVzW2ldKSkgewotICAgICAgICAgICAgaWYgKGkgPD0gbV9jdXJyZW50SW5kZXgp
Ci0gICAgICAgICAgICAgICAgY3VycmVudEluZGV4LS07Ci0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmwg
PSBtX2VudHJpZXNbaV0tPnVybCgpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdGl0bGUgPSBtX2VudHJpZXNbaV0tPnRpdGxlKCkuY3JlYXRlQ0ZTdHJp
bmcoKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBvcmlnaW5hbFVSTCA9IG1fZW50
cmllc1tpXS0+b3JpZ2luYWxVUkwoKS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHV1aWQgPSBtX2VudHJpZXNbaV0tPnNuYXBzaG90VVVJRCgpLmNyZWF0
ZUNGU3RyaW5nKCk7Ci0KLSAgICAgICAgLy8gRklYTUU6IFRoaXMgdXNlcyB0aGUgSVBDIGRhdGEg
ZW5jb2RpbmcgZm9ybWF0LCB3aGljaCBtZWFucyB0aGF0IHdoZW5ldmVyIHdlIGNoYW5nZSB0aGUg
SVBDIGVuY29kaW5nIHdlIG5lZWQgdG8gYnVtcCB0aGUgQ3VycmVudFNlc3Npb25TdGF0ZURhdGFW
ZXJzaW9uCi0gICAgICAgIC8vIGNvbnN0YW50IGluIFdlYlBhZ2VQcm94eUNGLmNwcC4gVGhlIElQ
QyBkYXRhIGZvcm1hdCBpcyBtZWFudCB0byBiZSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIGFu
ZCBub3Qgc29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gZGlzay4KLSAgICAgICAg
UmVmUHRyPEFQSTo6RGF0YT4gYmFja0ZvcndhcmREYXRhID0gbV9lbnRyaWVzW2ldLT5iYWNrRm9y
d2FyZERhdGEoKTsKLSAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZW50cnlEYXRhID0gYWRv
cHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYmFja0ZvcndhcmREYXRhLT5i
eXRlcygpLCBiYWNrRm9yd2FyZERhdGEtPnNpemUoKSkpOwotCi0gICAgICAgIGNvbnN0IHZvaWQq
IGtleXNbNV0gPSB7IHNlc3Npb25IaXN0b3J5RW50cnlVUkxLZXksIHNlc3Npb25IaXN0b3J5RW50
cnlUaXRsZUtleSwgc2Vzc2lvbkhpc3RvcnlFbnRyeU9yaWdpbmFsVVJMS2V5LCBzZXNzaW9uSGlz
dG9yeUVudHJ5RGF0YUtleSwgc2Vzc2lvbkhpc3RvcnlFbnRyeVNuYXBzaG90VVVJREtleSB9Owot
ICAgICAgICBjb25zdCB2b2lkKiB2YWx1ZXNbNV0gPSB7IHVybC5nZXQoKSwgdGl0bGUuZ2V0KCks
IG9yaWdpbmFsVVJMLmdldCgpLCBlbnRyeURhdGEuZ2V0KCksIHV1aWQuZ2V0KCkgfTsKLQotICAg
ICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBlbnRyeURpY3Rpb25hcnkgPSBhZG9wdENG
KENGRGljdGlvbmFyeUNyZWF0ZSgwLCBrZXlzLCB2YWx1ZXMsIDUsICZrQ0ZUeXBlRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLSAgICAg
ICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGVudHJpZXMuZ2V0KCksIGVudHJ5RGljdGlvbmFyeS5nZXQo
KSk7Ci0gICAgfQotICAgICAgICAKLSAgICBBU1NFUlQoY3VycmVudEluZGV4ID09IC0xIHx8IChj
dXJyZW50SW5kZXggPiAtMSAmJiBjdXJyZW50SW5kZXggPCBDRkFycmF5R2V0Q291bnQoZW50cmll
cy5nZXQoKSkpKTsKLSAgICBpZiAoY3VycmVudEluZGV4IDwgLTEgfHwgY3VycmVudEluZGV4ID49
IENGQXJyYXlHZXRDb3VudChlbnRyaWVzLmdldCgpKSkgewotICAgICAgICBMT0coU2Vzc2lvblN0
YXRlLCAiRmlsdGVyaW5nIGVudHJpZXMgdG8gYmUgc2F2ZWQgcmVzdWx0ZWQgaW4gYW4gaW5jb25z
aXN0ZW50IHN0YXRlIHRoYXQgd2UgY2Fubm90IHJlcHJlc2VudCIpOwotICAgICAgICByZXR1cm4g
MDsKLSAgICB9Ci0KLSAgICAvLyBJZiB3ZSBoYXZlIGFuIGluZGV4IGFuZCBhbGwgaXRlbXMgYmVm
b3JlIGFuZCBpbmNsdWRpbmcgdGhlIGN1cnJlbnQgaXRlbSB3ZXJlIGZpbHRlcmVkIHRoZW4gY3Vy
cmVudEluZGV4IHdpbGwgYmUgLTEuCi0gICAgLy8gSW4gdGhpcyBjYXNlIHRoZSBuZXcgY3VycmVu
dCBpbmRleCBzaG91bGQgcG9pbnQgYXQgdGhlIGZpcnN0IGl0ZW0uCi0gICAgLy8gSXQncyBhbHNv
IHBvc3NpYmxlIHRoYXQgYWxsIGl0ZW1zIHdlcmUgZmlsdGVyZWQgc28gd2Ugc2hvdWxkIHJlcHJl
c2VudCBub3QgaGF2aW5nIGEgY3VycmVudCBpbmRleC4KLSAgICBpZiAoY3VycmVudEluZGV4ID09
IC0xKSB7Ci0gICAgICAgIGlmIChDRkFycmF5R2V0Q291bnQoZW50cmllcy5nZXQoKSkpCi0gICAg
ICAgICAgICBjdXJyZW50SW5kZXggPSAwOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBoYXND
dXJyZW50SW5kZXggPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoaGFzQ3VycmVudEluZGV4KSB7
Ci0gICAgICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gY3VycmVudEluZGV4TnVtYmVyID0gYWRv
cHRDRihDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJDRkluZGV4VHlwZSwgJmN1cnJlbnRJbmRl
eCkpOwotICAgICAgICBjb25zdCB2b2lkKiBrZXlzWzNdID0geyBzZXNzaW9uSGlzdG9yeVZlcnNp
b25LZXksIHNlc3Npb25IaXN0b3J5Q3VycmVudEluZGV4S2V5LCBzZXNzaW9uSGlzdG9yeUVudHJp
ZXNLZXkgfTsKLSAgICAgICAgY29uc3Qgdm9pZCogdmFsdWVzWzNdID0geyBzZXNzaW9uSGlzdG9y
eUN1cnJlbnRWZXJzaW9uKCksIGN1cnJlbnRJbmRleE51bWJlci5nZXQoKSwgZW50cmllcy5nZXQo
KSB9OwotIAotICAgICAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKDAsIGtleXMsIHZhbHVl
cywgMywgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcyk7Ci0gICAgfQotCi0gICAgLy8gV2UgcmVwcmVzZW50IGhhdmluZyBubyBj
dXJyZW50IGluZGV4IGJ5IHdyaXRpbmcgb3V0IGFuIGVtcHR5IGRpY3Rpb25hcnkgKGJlc2lkZXMg
dGhlIHZlcnNpb24pLgotICAgIHJldHVybiBjcmVhdGVFbXB0eVNlc3Npb25IaXN0b3J5RGljdGlv
bmFyeSgpOwotfQotCi1ib29sIFdlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21DRkRpY3Rp
b25hcnlSZXByZXNlbnRhdGlvbihDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKLXsKLSAgICBD
Rk51bWJlclJlZiBjZlZlcnNpb24gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
ZGljdGlvbmFyeSwgc2Vzc2lvbkhpc3RvcnlWZXJzaW9uS2V5KTsKLSAgICBpZiAoIWNmVmVyc2lv
bikgewotICAgICAgICAvLyB2MCBzZXNzaW9uIGhpc3RvcnkgZGljdGlvbmFyaWVzIGRpZCBub3Qg
Y29udGFpbiB2ZXJzaW9uaW5nCi0gICAgICAgIHJldHVybiByZXN0b3JlRnJvbVYwQ0ZEaWN0aW9u
YXJ5UmVwcmVzZW50YXRpb24oZGljdGlvbmFyeSk7Ci0gICAgfQotICAgIAotICAgIGlmIChDRkdl
dFR5cGVJRChjZlZlcnNpb24pICE9IENGTnVtYmVyR2V0VHlwZUlEKCkpIHsKLSAgICAgICAgTE9H
KFNlc3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBkaWN0aW9uYXJ5IHJlcHJlc2VudGF0
aW9uIGNvbnRhaW5zIGEgdmVyc2lvbiB0aGF0IGlzIG5vdCBhIG51bWJlciIpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgQ0ZJbmRleCB2ZXJzaW9uOwotICAgIGlmICghQ0ZO
dW1iZXJHZXRWYWx1ZShjZlZlcnNpb24sIGtDRk51bWJlckNGSW5kZXhUeXBlLCAmdmVyc2lvbikp
IHsKLSAgICAgICAgTE9HKFNlc3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBkaWN0aW9u
YXJ5IHJlcHJlc2VudGF0aW9uIGRvZXMgbm90IGhhdmUgYSBjb3JyZWN0bHkgdHlwZWQgY3VycmVu
dCB2ZXJzaW9uIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgaWYg
KHZlcnNpb24gPT0gMSkKLSAgICAgICAgcmV0dXJuIHJlc3RvcmVGcm9tVjFDRkRpY3Rpb25hcnlS
ZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5KTsKLSAgICAKLSAgICBMT0coU2Vzc2lvblN0YXRlLCAi
V2ViQmFja0ZvcndhcmRMaXN0IGRpY3Rpb25hcnkgcmVwcmVzZW50YXRpb24gaGFzIGFuIGludmFs
aWQgY3VycmVudCB2ZXJzaW9uICglbGQpIiwgdmVyc2lvbik7Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1ib29sIFdlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21WMENGRGljdGlvbmFyeVJl
cHJlc2VudGF0aW9uKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQotewotICAgIENGTnVtYmVy
UmVmIGNmSW5kZXggPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFy
eSwgc2Vzc2lvbkhpc3RvcnlDdXJyZW50SW5kZXhLZXkpOwotICAgIGlmICghY2ZJbmRleCB8fCBD
RkdldFR5cGVJRChjZkluZGV4KSAhPSBDRk51bWJlckdldFR5cGVJRCgpKSB7Ci0gICAgICAgIExP
RyhTZXNzaW9uU3RhdGUsICJXZWJCYWNrRm9yd2FyZExpc3QgZGljdGlvbmFyeSByZXByZXNlbnRh
dGlvbiBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgY3VycmVudCBpbmRleCIpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgQ0ZJbmRleCBjdXJyZW50Q0ZJbmRleDsKLSAgICBpZiAo
IUNGTnVtYmVyR2V0VmFsdWUoY2ZJbmRleCwga0NGTnVtYmVyQ0ZJbmRleFR5cGUsICZjdXJyZW50
Q0ZJbmRleCkpIHsKLSAgICAgICAgTE9HKFNlc3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlz
dCBkaWN0aW9uYXJ5IHJlcHJlc2VudGF0aW9uIGRvZXMgbm90IGhhdmUgYSBjb3JyZWN0bHkgdHlw
ZWQgY3VycmVudCBpbmRleCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAot
ICAgIGlmIChjdXJyZW50Q0ZJbmRleCA8IC0xKSB7Ci0gICAgICAgIExPRyhTZXNzaW9uU3RhdGUs
ICJXZWJCYWNrRm9yd2FyZExpc3QgZGljdGlvbmFyeSByZXByZXNlbnRhdGlvbiBjb250YWlucyBh
biB1bmV4cGVjdGVkIG5lZ2F0aXZlIGN1cnJlbnQgaW5kZXggKCVsZCkiLCBjdXJyZW50Q0ZJbmRl
eCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBDRkFycmF5UmVmIGNmRW50
cmllcyA9IChDRkFycmF5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIHNlc3Np
b25IaXN0b3J5RW50cmllc0tleSk7Ci0gICAgaWYgKCFjZkVudHJpZXMgfHwgQ0ZHZXRUeXBlSUQo
Y2ZFbnRyaWVzKSAhPSBDRkFycmF5R2V0VHlwZUlEKCkpIHsKLSAgICAgICAgTE9HKFNlc3Npb25T
dGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBkaWN0aW9uYXJ5IHJlcHJlc2VudGF0aW9uIGRvZXMg
bm90IGhhdmUgYSB2YWxpZCBsaXN0IG9mIGVudHJpZXMiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIENGSW5kZXggc2l6ZSA9IENGQXJyYXlHZXRDb3VudChjZkVudHJpZXMp
OwotICAgIGlmIChzaXplIDwgMCB8fCBjdXJyZW50Q0ZJbmRleCA+PSBzaXplKSB7Ci0gICAgICAg
IExPRyhTZXNzaW9uU3RhdGUsICJXZWJCYWNrRm9yd2FyZExpc3QgZGljdGlvbmFyeSByZXByZXNl
bnRhdGlvbiBjb250YWlucyBhbiBpbnZhbGlkIGN1cnJlbnQgaW5kZXggKCVsZCkgZm9yIHRoZSBu
dW1iZXIgb2YgZW50cmllcyAoJWxkKSIsIGN1cnJlbnRDRkluZGV4LCBzaXplKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIFZlcnNpb24gMCBzZXNzaW9uIGhpc3Rvcnkg
cmVsaWVkIG9uIGN1cnJlbnRJbmRleCA9PSAtMSB0byByZXByZXNlbnQgdGhlIHNhbWUgdGhpbmcg
YXMgbm90IGhhdmluZyBhIGN1cnJlbnQgaW5kZXguCi0gICAgYm9vbCBoYXNDdXJyZW50SW5kZXgg
PSBjdXJyZW50Q0ZJbmRleCAhPSAtMTsKLQotICAgIGlmICghaGFzQ3VycmVudEluZGV4ICYmIHNp
emUpIHsKLSAgICAgICAgTE9HKFNlc3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBkaWN0
aW9uYXJ5IHJlcHJlc2VudGF0aW9uIHNheXMgdGhlcmUgaXMgbm8gY3VycmVudCBpbmRleCwgYnV0
IHRoZXJlIGlzIGEgbGlzdCBvZiAlbGQgZW50cmllcyIsIHNpemUpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIAotICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1WZWN0b3IgZW50cmll
czsKLSAgICBpZiAoIWV4dHJhY3RCYWNrRm9yd2FyZExpc3RFbnRyaWVzRnJvbUFycmF5KGNmRW50
cmllcywgZW50cmllcykpIHsKLSAgICAgICAgLy8gZXh0cmFjdEJhY2tGb3J3YXJkTGlzdEVudHJp
ZXNGcm9tQXJyYXkgaGFzIGFscmVhZHkgbG9nZ2VkIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBtZXNz
YWdlLgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgQVNTRVJUKGVudHJpZXMu
c2l6ZSgpID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSk7Ci0gICAgCi0gICAgbV9oYXND
dXJyZW50SW5kZXggPSBoYXNDdXJyZW50SW5kZXg7Ci0gICAgbV9jdXJyZW50SW5kZXggPSBtX2hh
c0N1cnJlbnRJbmRleCA/IHN0YXRpY19jYXN0PHVpbnQzMl90PihjdXJyZW50Q0ZJbmRleCkgOiAw
OwotICAgIG1fZW50cmllcyA9IGVudHJpZXM7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCBXZWJCYWNrRm9yd2FyZExpc3Q6OnJlc3RvcmVGcm9tVjFDRkRpY3Rpb25hcnlSZXByZXNlbnRh
dGlvbihDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKLXsKLSAgICBDRk51bWJlclJlZiBjZklu
ZGV4ID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIHNlc3Np
b25IaXN0b3J5Q3VycmVudEluZGV4S2V5KTsKLSAgICBpZiAoIWNmSW5kZXgpIHsKLSAgICAgICAg
Ly8gTm8gY3VycmVudCBpbmRleCBtZWFucyB0aGUgZGljdGlvbmFyeSByZXByZXNlbnRzIGFuIGVt
cHR5IHNlc3Npb24uCi0gICAgICAgIG1faGFzQ3VycmVudEluZGV4ID0gZmFsc2U7Ci0gICAgICAg
IG1fY3VycmVudEluZGV4ID0gMDsKLSAgICAgICAgbV9lbnRyaWVzLmNsZWFyKCk7Ci0KLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYgKENGR2V0VHlwZUlEKGNmSW5kZXgpICE9
IENGTnVtYmVyR2V0VHlwZUlEKCkpIHsKLSAgICAgICAgTE9HKFNlc3Npb25TdGF0ZSwgIldlYkJh
Y2tGb3J3YXJkTGlzdCBkaWN0aW9uYXJ5IHJlcHJlc2VudGF0aW9uIGRvZXMgbm90IGhhdmUgYSB2
YWxpZCBjdXJyZW50IGluZGV4Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICBDRkluZGV4IGN1cnJlbnRDRkluZGV4OwotICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1ZShjZklu
ZGV4LCBrQ0ZOdW1iZXJDRkluZGV4VHlwZSwgJmN1cnJlbnRDRkluZGV4KSkgewotICAgICAgICBM
T0coU2Vzc2lvblN0YXRlLCAiV2ViQmFja0ZvcndhcmRMaXN0IGRpY3Rpb25hcnkgcmVwcmVzZW50
YXRpb24gZG9lcyBub3QgaGF2ZSBhIGNvcnJlY3RseSB0eXBlZCBjdXJyZW50IGluZGV4Iik7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGN1cnJlbnRDRkluZGV4
IDwgMCkgewotICAgICAgICBMT0coU2Vzc2lvblN0YXRlLCAiV2ViQmFja0ZvcndhcmRMaXN0IGRp
Y3Rpb25hcnkgcmVwcmVzZW50YXRpb24gY29udGFpbnMgYW4gdW5leHBlY3RlZCBuZWdhdGl2ZSBj
dXJyZW50IGluZGV4ICglbGQpIiwgY3VycmVudENGSW5kZXgpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgQ0ZBcnJheVJlZiBjZkVudHJpZXMgPSAoQ0ZBcnJheVJlZilDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBzZXNzaW9uSGlzdG9yeUVudHJpZXNLZXkpOwot
ICAgIGlmICghY2ZFbnRyaWVzIHx8IENGR2V0VHlwZUlEKGNmRW50cmllcykgIT0gQ0ZBcnJheUdl
dFR5cGVJRCgpKSB7Ci0gICAgICAgIExPRyhTZXNzaW9uU3RhdGUsICJXZWJCYWNrRm9yd2FyZExp
c3QgZGljdGlvbmFyeSByZXByZXNlbnRhdGlvbiBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgbGlzdCBv
ZiBlbnRyaWVzIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBDRkluZGV4
IHNpemUgPSBDRkFycmF5R2V0Q291bnQoY2ZFbnRyaWVzKTsKLSAgICBpZiAoY3VycmVudENGSW5k
ZXggPj0gc2l6ZSkgewotICAgICAgICBMT0coU2Vzc2lvblN0YXRlLCAiV2ViQmFja0ZvcndhcmRM
aXN0IGRpY3Rpb25hcnkgcmVwcmVzZW50YXRpb24gY29udGFpbnMgYW4gaW52YWxpZCBjdXJyZW50
IGluZGV4ICglbGQpIGZvciB0aGUgbnVtYmVyIG9mIGVudHJpZXMgKCVsZCkiLCBjdXJyZW50Q0ZJ
bmRleCwgc2l6ZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgQmFj
a0ZvcndhcmRMaXN0SXRlbVZlY3RvciBlbnRyaWVzOwotICAgIGlmICghZXh0cmFjdEJhY2tGb3J3
YXJkTGlzdEVudHJpZXNGcm9tQXJyYXkoY2ZFbnRyaWVzLCBlbnRyaWVzKSkgewotICAgICAgICAv
LyBleHRyYWN0QmFja0ZvcndhcmRMaXN0RW50cmllc0Zyb21BcnJheSBoYXMgYWxyZWFkeSBsb2dn
ZWQgdGhlIGFwcHJvcHJpYXRlIGVycm9yIG1lc3NhZ2UuCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgCi0gICAgQVNTRVJUKGVudHJpZXMuc2l6ZSgpID09IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzaXplKSk7Ci0gICAgCi0gICAgbV9oYXNDdXJyZW50SW5kZXggPSB0cnVlOwotICAg
IG1fY3VycmVudEluZGV4ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGN1cnJlbnRDRkluZGV4KTsK
LSAgICBtX2VudHJpZXMgPSBlbnRyaWVzOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRp
YyBib29sIGV4dHJhY3RCYWNrRm9yd2FyZExpc3RFbnRyaWVzRnJvbUFycmF5KENGQXJyYXlSZWYg
Y2ZFbnRyaWVzLCBCYWNrRm9yd2FyZExpc3RJdGVtVmVjdG9yJiBlbnRyaWVzKQotewotICAgIENG
SW5kZXggc2l6ZSA9IENGQXJyYXlHZXRDb3VudChjZkVudHJpZXMpOwotCi0gICAgZW50cmllcy5y
ZXNlcnZlQ2FwYWNpdHkoc2l6ZSk7Ci0gICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgc2l6ZTsg
KytpKSB7Ci0gICAgICAgIENGRGljdGlvbmFyeVJlZiBlbnRyeURpY3Rpb25hcnkgPSAoQ0ZEaWN0
aW9uYXJ5UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoY2ZFbnRyaWVzLCBpKTsKLSAgICAgICAg
aWYgKCFlbnRyeURpY3Rpb25hcnkgfHwgQ0ZHZXRUeXBlSUQoZW50cnlEaWN0aW9uYXJ5KSAhPSBD
RkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkgewotICAgICAgICAgICAgTE9HKFNlc3Npb25TdGF0ZSwg
IldlYkJhY2tGb3J3YXJkTGlzdCBlbnRyeSBhcnJheSBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgZW50
cnkgYXQgaW5kZXggJWkiLCAoaW50KWkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBDRlN0cmluZ1JlZiBlbnRyeVVSTCA9IChDRlN0cmlu
Z1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShlbnRyeURpY3Rpb25hcnksIHNlc3Npb25IaXN0b3J5
RW50cnlVUkxLZXkpOwotICAgICAgICBpZiAoIWVudHJ5VVJMIHx8IENGR2V0VHlwZUlEKGVudHJ5
VVJMKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7Ci0gICAgICAgICAgICBMT0coU2Vzc2lvblN0
YXRlLCAiV2ViQmFja0ZvcndhcmRMaXN0IGVudHJ5IGF0IGluZGV4ICVpIGRvZXMgbm90IGhhdmUg
YSB2YWxpZCBVUkwiLCAoaW50KWkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgQ0ZTdHJpbmdSZWYgZW50cnlUaXRsZSA9IChDRlN0cmluZ1JlZilDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShlbnRyeURpY3Rpb25hcnksIHNlc3Npb25IaXN0b3J5RW50cnlUaXRs
ZUtleSk7Ci0gICAgICAgIGlmICghZW50cnlUaXRsZSB8fCBDRkdldFR5cGVJRChlbnRyeVRpdGxl
KSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7Ci0gICAgICAgICAgICBMT0coU2Vzc2lvblN0YXRl
LCAiV2ViQmFja0ZvcndhcmRMaXN0IGVudHJ5IGF0IGluZGV4ICVpIGRvZXMgbm90IGhhdmUgYSB2
YWxpZCB0aXRsZSIsIChpbnQpaSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLQotICAgICAgICBDRlN0cmluZ1JlZiBvcmlnaW5hbFVSTCA9IChDRlN0cmluZ1JlZilDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShlbnRyeURpY3Rpb25hcnksIHNlc3Npb25IaXN0b3J5RW50cnlPcmln
aW5hbFVSTEtleSk7Ci0gICAgICAgIGlmICghb3JpZ2luYWxVUkwgfHwgQ0ZHZXRUeXBlSUQob3Jp
Z2luYWxVUkwpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKLSAgICAgICAgICAgIExPRyhTZXNz
aW9uU3RhdGUsICJXZWJCYWNrRm9yd2FyZExpc3QgZW50cnkgYXQgaW5kZXggJWkgZG9lcyBub3Qg
aGF2ZSBhIHZhbGlkIG9yaWdpbmFsIFVSTCIsIChpbnQpaSk7Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBDRkRhdGFSZWYgYmFja0ZvcndhcmREYXRhID0g
KENGRGF0YVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShlbnRyeURpY3Rpb25hcnksIHNlc3Npb25I
aXN0b3J5RW50cnlEYXRhS2V5KTsKLSAgICAgICAgaWYgKCFiYWNrRm9yd2FyZERhdGEgfHwgQ0ZH
ZXRUeXBlSUQoYmFja0ZvcndhcmREYXRhKSAhPSBDRkRhdGFHZXRUeXBlSUQoKSkgewotICAgICAg
ICAgICAgTE9HKFNlc3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBlbnRyeSBhdCBpbmRl
eCAlaSBkb2VzIG5vdCBoYXZlIGJhY2svZm9yd2FyZCBkYXRhIiwgKGludClpKTsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gaXRlbSA9IFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShvcmlnaW5hbFVSTCwgZW50cnlVUkwsIGVudHJ5VGl0
bGUsIENGRGF0YUdldEJ5dGVQdHIoYmFja0ZvcndhcmREYXRhKSwgQ0ZEYXRhR2V0TGVuZ3RoKGJh
Y2tGb3J3YXJkRGF0YSksIGdlbmVyYXRlV2ViQmFja0ZvcndhcmRJdGVtSUQoKSk7Ci0KLSAgICAg
ICAgQ0ZTdHJpbmdSZWYgc25hcHNob3RVVUlEID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdl
dFZhbHVlKGVudHJ5RGljdGlvbmFyeSwgc2Vzc2lvbkhpc3RvcnlFbnRyeVNuYXBzaG90VVVJREtl
eSk7Ci0gICAgICAgIGlmIChzbmFwc2hvdFVVSUQgJiYgQ0ZHZXRUeXBlSUQoc25hcHNob3RVVUlE
KSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICAgICAgaXRlbS0+c2V0U25hcHNob3RV
VUlEKHNuYXBzaG90VVVJRCk7Ci0KLSAgICAgICAgZW50cmllcy5hcHBlbmQoaXRlbSk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAKaW5kZXggNjIzN2Fm
ZDY4NDk3NDM4YTg0YTgyMDAwOTdiNjFjOGEwMmNiNDY0Zi4uNDM3ZmRhMzZlM2U0M2ZjMTNlZDBi
ZGM1NmIyZTNiOGQ5NWY5NDhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2NmL1dlYlBhZ2VQcm94eUNGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2Yv
V2ViUGFnZVByb3h5Q0YuY3BwCkBAIC0yNiwxNCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogCi0jaW5jbHVkZSAiQVBJRGF0YS5oIgotI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJMZWdhY3lTZXNzaW9uU3RhdGUuaCIK
LSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCi0j
aW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5Lmgi
Ci0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZQcm9wZXJ0eUxpc3QuaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2NmL1R5cGVDYXN0cy5oPgogCkBAIC00MSwx
NDggKzMzLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1zdGF0aWMgQ0ZTdHJpbmdSZWYgc2Vzc2lvbkhpc3RvcnlLZXkgPSBDRlNUUigiU2Vzc2lv
bkhpc3RvcnkiKTsKLXN0YXRpYyBDRlN0cmluZ1JlZiBwcm92aXNpb25hbFVSTEtleSA9IENGU1RS
KCJQcm92aXNpb25hbFVSTCIpOwotCi1zdGF0aWMgY29uc3QgVUludDMyIEN1cnJlbnRTZXNzaW9u
U3RhdGVEYXRhVmVyc2lvbiA9IDI7Ci0KLVBhc3NSZWZQdHI8QVBJOjpEYXRhPiBXZWJQYWdlUHJv
eHk6OnNlc3Npb25TdGF0ZURhdGEoc3RkOjpmdW5jdGlvbjxib29sIChXZWJCYWNrRm9yd2FyZExp
c3RJdGVtJik+IGZpbHRlcikgY29uc3QKLXsKLSAgICBjb25zdCB2b2lkKiBrZXlzWzJdOwotICAg
IGNvbnN0IHZvaWQqIHZhbHVlc1syXTsKLSAgICBDRkluZGV4IG51bVZhbHVlcyA9IDA7Ci0KLSAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBzZXNzaW9uSGlzdG9yeURpY3Rpb25hcnkgPSBh
ZG9wdENGKG1fYmFja0ZvcndhcmRMaXN0LT5jcmVhdGVDRkRpY3Rpb25hcnlSZXByZXNlbnRhdGlv
bihzdGQ6Om1vdmUoZmlsdGVyKSkpOwotICAgIGlmIChzZXNzaW9uSGlzdG9yeURpY3Rpb25hcnkp
IHsKLSAgICAgICAga2V5c1tudW1WYWx1ZXNdID0gc2Vzc2lvbkhpc3RvcnlLZXk7Ci0gICAgICAg
IHZhbHVlc1tudW1WYWx1ZXNdID0gc2Vzc2lvbkhpc3RvcnlEaWN0aW9uYXJ5LmdldCgpOwotICAg
ICAgICArK251bVZhbHVlczsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBy
b3Zpc2lvbmFsVVJMU3RyaW5nOwotICAgIGlmIChtX21haW5GcmFtZSkgewotICAgICAgICBTdHJp
bmcgcHJvdmlzaW9uYWxVUkwgPSBtX3BhZ2VMb2FkU3RhdGUucGVuZGluZ0FQSVJlcXVlc3RVUkwo
KTsKLSAgICAgICAgaWYgKHByb3Zpc2lvbmFsVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHBy
b3Zpc2lvbmFsVVJMID0gbV9tYWluRnJhbWUtPnByb3Zpc2lvbmFsVVJMKCk7Ci0gICAgICAgIGlm
ICghcHJvdmlzaW9uYWxVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBwcm92aXNpb25hbFVS
TFN0cmluZyA9IHByb3Zpc2lvbmFsVVJMLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgICAgICAgICBr
ZXlzW251bVZhbHVlc10gPSBwcm92aXNpb25hbFVSTEtleTsKLSAgICAgICAgICAgIHZhbHVlc1tu
dW1WYWx1ZXNdID0gcHJvdmlzaW9uYWxVUkxTdHJpbmcuZ2V0KCk7Ci0gICAgICAgICAgICArK251
bVZhbHVlczsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghbnVtVmFsdWVzKQotICAgICAg
ICByZXR1cm4gMDsKLQotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHN0YXRlRGljdGlv
bmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKDAsIGtleXMsIHZhbHVlcywgbnVtVmFs
dWVzLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZXcml0ZVN0cmVhbVJlZj4gd3JpdGVT
dHJlYW0gPSBhZG9wdENGKENGV3JpdGVTdHJlYW1DcmVhdGVXaXRoQWxsb2NhdGVkQnVmZmVycygw
LCAwKSk7Ci0gICAgaWYgKCF3cml0ZVN0cmVhbSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0g
ICAgaWYgKCFDRldyaXRlU3RyZWFtT3Blbih3cml0ZVN0cmVhbS5nZXQoKSkpCi0gICAgICAgIHJl
dHVybiAwOwotICAgIAotICAgIGlmICghQ0ZQcm9wZXJ0eUxpc3RXcml0ZShzdGF0ZURpY3Rpb25h
cnkuZ2V0KCksIHdyaXRlU3RyZWFtLmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRf
djFfMCwgMCwgMCkpCi0gICAgICAgIHJldHVybiAwOwotICAgICAgICAKLSAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBzdGF0ZUNGRGF0YSA9IGFkb3B0Q0YoKENGRGF0YVJlZilDRldyaXRlU3RyZWFt
Q29weVByb3BlcnR5KHdyaXRlU3RyZWFtLmdldCgpLCBrQ0ZTdHJlYW1Qcm9wZXJ0eURhdGFXcml0
dGVuKSk7Ci0KLSAgICBDRkluZGV4IGxlbmd0aCA9IENGRGF0YUdldExlbmd0aChzdGF0ZUNGRGF0
YS5nZXQoKSk7Ci0gICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IHN0YXRlVmVjdG9yKGxlbmd0aCAr
IHNpemVvZihVSW50MzIpKTsKLSAgICAKLSAgICAvLyBQdXQgdGhlIHNlc3Npb24gc3RhdGUgdmVy
c2lvbiBudW1iZXIgYXQgdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIKLSAgICBzdGF0ZVZlY3Rvci5k
YXRhKClbMF0gPSAoQ3VycmVudFNlc3Npb25TdGF0ZURhdGFWZXJzaW9uICYgMHhGRjAwMDAwMCkg
Pj4gMjQ7Ci0gICAgc3RhdGVWZWN0b3IuZGF0YSgpWzFdID0gKEN1cnJlbnRTZXNzaW9uU3RhdGVE
YXRhVmVyc2lvbiAmIDB4MDBGRjAwMDApID4+IDE2OwotICAgIHN0YXRlVmVjdG9yLmRhdGEoKVsy
XSA9IChDdXJyZW50U2Vzc2lvblN0YXRlRGF0YVZlcnNpb24gJiAweDAwMDBGRjAwKSA+PiA4Owot
ICAgIHN0YXRlVmVjdG9yLmRhdGEoKVszXSA9IChDdXJyZW50U2Vzc2lvblN0YXRlRGF0YVZlcnNp
b24gJiAweDAwMDAwMEZGKTsKLSAgICAKLSAgICAvLyBDb3B5IGluIHRoZSBhY3R1YWwgc2Vzc2lv
biBzdGF0ZSBkYXRhCi0gICAgQ0ZEYXRhR2V0Qnl0ZXMoc3RhdGVDRkRhdGEuZ2V0KCksIENGUmFu
Z2VNYWtlKDAsIGxlbmd0aCksIHN0YXRlVmVjdG9yLmRhdGEoKSArIHNpemVvZihVSW50MzIpKTsK
LSAgICAKLSAgICByZXR1cm4gQVBJOjpEYXRhOjpjcmVhdGUoc3RhdGVWZWN0b3IpOwotfQotCi11
aW50NjRfdCBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YShBUEk6OkRh
dGEqIGFwaURhdGEpCi17Ci0gICAgaWYgKCFhcGlEYXRhIHx8IGFwaURhdGEtPnNpemUoKSA8IHNp
emVvZihVSW50MzIpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGJ1ZmZlciA9IGFwaURhdGEtPmJ5dGVzKCk7Ci0gICAgVUludDMyIHZlcnNpb25IZWFkZXIg
PSAoYnVmZmVyWzBdIDw8IDI0KSArIChidWZmZXJbMV0gPDwgMTYpICsgKGJ1ZmZlclsyXSA8PCA4
KSArIGJ1ZmZlclszXTsKLSAgICAKLSAgICBpZiAodmVyc2lvbkhlYWRlciAhPSBDdXJyZW50U2Vz
c2lvblN0YXRlRGF0YVZlcnNpb24pIHsKLSAgICAgICAgTE9HKFNlc3Npb25TdGF0ZSwgIlVucmVj
b2duaXplZCB2ZXJzaW9uIGhlYWRlciBmb3Igc2Vzc2lvbiBzdGF0ZSBkYXRhIC0gY2Fubm90IHJl
c3RvcmUiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIAotICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZSgwLCBhcGlEYXRhLT5ieXRlcygp
ICsgc2l6ZW9mKFVJbnQzMiksIGFwaURhdGEtPnNpemUoKSAtIHNpemVvZihVSW50MzIpKSk7Ci0K
LSAgICBDRkVycm9yUmVmIHByb3BlcnR5TGlzdEVycm9yID0gMDsKLSAgICBhdXRvIHByb3BlcnR5
TGlzdCA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YSgwLCBkYXRhLmdldCgp
LCBrQ0ZQcm9wZXJ0eUxpc3RJbW11dGFibGUsIDAsICZwcm9wZXJ0eUxpc3RFcnJvcikpOwotICAg
IGlmIChwcm9wZXJ0eUxpc3RFcnJvcikgewotICAgICAgICBDRlJlbGVhc2UocHJvcGVydHlMaXN0
RXJyb3IpOwotICAgICAgICBMT0coU2Vzc2lvblN0YXRlLCAiQ291bGQgbm90IHJlYWQgc2Vzc2lv
biBzdGF0ZSBwcm9wZXJ0eSBsaXN0Iik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAg
IGlmICghcHJvcGVydHlMaXN0KQotICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgCi0gICAgaWYg
KENGR2V0VHlwZUlEKHByb3BlcnR5TGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlE
KCkpIHsKLSAgICAgICAgTE9HKFNlc3Npb25TdGF0ZSwgIlNlc3Npb25TdGF0ZSBwcm9wZXJ0eSBs
aXN0IGlzIG5vdCBhIENGRGljdGlvbmFyeVJlZiAoJWkpIC0gaXRzIENGVHlwZUlEIGlzICVpIiwg
KGludClDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSwgKGludClDRkdldFR5cGVJRChwcm9wZXJ0eUxp
c3QuZ2V0KCkpKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgQ0ZEaWN0aW9uYXJ5
UmVmIGJhY2tGb3J3YXJkTGlzdERpY3Rpb25hcnkgPSAwOwotICAgIGlmIChDRlR5cGVSZWYgdmFs
dWUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KHBy
b3BlcnR5TGlzdC5nZXQoKSksIHNlc3Npb25IaXN0b3J5S2V5KSkgewotICAgICAgICBpZiAoQ0ZH
ZXRUeXBlSUQodmFsdWUpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKQotICAgICAgICAgICAg
TE9HKFNlc3Npb25TdGF0ZSwgIlNlc3Npb25TdGF0ZSBkaWN0aW9uYXJ5IGhhcyBhIFNlc3Npb25I
aXN0b3J5IGtleSwgYnV0IHRoZSB2YWx1ZSBpcyBub3QgYSBkaWN0aW9uYXJ5Iik7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGJhY2tGb3J3YXJkTGlzdERpY3Rpb25hcnkgPSBzdGF0aWNfY2Fz
dDxDRkRpY3Rpb25hcnlSZWY+KHZhbHVlKTsKLSAgICB9Ci0KLSAgICBDRlN0cmluZ1JlZiBwcm92
aXNpb25hbFVSTCA9IDA7Ci0gICAgaWYgKENGVHlwZVJlZiB2YWx1ZSA9IENGRGljdGlvbmFyeUdl
dFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4ocHJvcGVydHlMaXN0LmdldCgpKSwg
cHJvdmlzaW9uYWxVUkxLZXkpKSB7Ci0gICAgICAgIGlmIChDRkdldFR5cGVJRCh2YWx1ZSkgIT0g
Q0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIExPRyhTZXNzaW9uU3RhdGUsICJTZXNz
aW9uU3RhdGUgZGljdGlvbmFyeSBoYXMgYSBQcm92aXNpb25hbFZhbHVlIGtleSwgYnV0IHRoZSB2
YWx1ZSBpcyBub3QgYSBzdHJpbmciKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJvdmlz
aW9uYWxVUkwgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4odmFsdWUpOwotICAgIH0KLQotICAg
IGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKLQotICAg
IGlmIChiYWNrRm9yd2FyZExpc3REaWN0aW9uYXJ5KSB7Ci0gICAgICAgIGlmICghbV9iYWNrRm9y
d2FyZExpc3QtPnJlc3RvcmVGcm9tQ0ZEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24oYmFja0Zvcndh
cmRMaXN0RGljdGlvbmFyeSkpCi0gICAgICAgICAgICBMT0coU2Vzc2lvblN0YXRlLCAiRmFpbGVk
IHRvIHJlc3RvcmUgYmFjay9mb3J3YXJkIGxpc3QgZnJvbSBTZXNzaW9uSGlzdG9yeSBkaWN0aW9u
YXJ5Iik7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgY29uc3QgQmFja0ZvcndhcmRMaXN0
SXRlbVZlY3RvciYgZW50cmllcyA9IG1fYmFja0ZvcndhcmRMaXN0LT5lbnRyaWVzKCk7Ci0gICAg
ICAgICAgICBpZiAoc2l6ZV90IHNpemUgPSBlbnRyaWVzLnNpemUoKSkgewotICAgICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICAgICAgICAgICAg
ICBwcm9jZXNzKCkucmVnaXN0ZXJOZXdXZWJCYWNrRm9yd2FyZExpc3RJdGVtKGVudHJpZXNbaV0u
Z2V0KCkpOwotCi0gICAgICAgICAgICAgICAgTGVnYWN5U2Vzc2lvblN0YXRlIHN0YXRlKG1fYmFj
a0ZvcndhcmRMaXN0LT5lbnRyaWVzKCksIG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SW5kZXgo
KSk7Ci0gICAgICAgICAgICAgICAgaWYgKHByb3Zpc2lvbmFsVVJMKQotICAgICAgICAgICAgICAg
ICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9yZVNlc3Npb24oc3Rh
dGUpLCBtX3BhZ2VJRCk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtID0gbV9iYWNrRm9yd2FyZExpc3Qt
PmN1cnJlbnRJdGVtKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2VMb2FkU3RhdGUu
c2V0UGVuZGluZ0FQSVJlcXVlc3RVUkwodHJhbnNhY3Rpb24sIGl0ZW0tPnVybCgpKTsKLQotICAg
ICAgICAgICAgICAgICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQgPSBnZW5lcmF0ZU5hdmlnYXRp
b25JRCgpOwotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UmVzdG9yZVNlc3Npb25BbmROYXZpZ2F0ZVRvQ3VycmVudEl0ZW0obmF2aWdhdGlvbklE
LCBzdGF0ZSksIG1fcGFnZUlEKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hdmlnYXRp
b25JRDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBpZiAocHJvdmlzaW9uYWxVUkwpCi0gICAgICAgIHJldHVybiBsb2FkUmVxdWVzdChV
UkwoVVJMKCksIHByb3Zpc2lvbmFsVVJMKSk7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQogc3RhdGlj
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQog
ewogICAgIHJldHVybiBTdHJpbmcoImNvbS5hcHBsZS5XZWJLaXQuc2VhcmNoRmllbGQ6IiArIG5h
bWUpLmNyZWF0ZUNGU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzYzNmRhYmVlYmVhYjQ0ZGMwZGVlYzk4YTIyZTc2
NTM5MzJmN2U0OS4uMjAzYzQwMWQwYjc4MzNhOWY0MjY4ZGY0MmI3Mjg0NWQ2MGIzMmI4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtOTMzLDcgKzkzMyw2IEBACiAJCTUxQUNCQkExMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250
ZXh0TWVudVByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFBQ0JCOUYxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlN
YWMubW0gKi87IH07CiAJCTUxQjE1QTg0MTM4NDNBMzkwMDMyMUFEOCAvKiBFbnZpcm9ubWVudFV0
aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUIxNUE4MjEzODQzQTM5MDAzMjFBRDggLyogRW52aXJvbm1lbnRVdGlsaXRpZXMuY3BwICov
OyB9OwogCQk1MUIxNUE4NTEzODQzQTM5MDAzMjFBRDggLyogRW52aXJvbm1lbnRVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjE1QTgz
MTM4NDNBMzkwMDMyMUFEOCAvKiBFbnZpcm9ubWVudFV0aWxpdGllcy5oICovOyB9OwotCQk1MUIz
MDA1MDEyNTI5RDBFMDAwQjVDQTAgLyogV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCMzAwNEUxMjUyOUQwRTAw
MEI1Q0EwIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCAqLzsgfTsKIAkJNTFCMzAwNTExMjUy
OUQwRTAwMEI1Q0EwIC8qIFdlYlBhZ2VQcm94eUNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjMwMDRGMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJQ
YWdlUHJveHlDRi5jcHAgKi87IH07CiAJCTUxQkEyNDQ0MTg1OEVFMzAwMEVBMjgxMSAvKiBBc3lu
Y1Rhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
QkEyNDQzMTg1OEVFMzAwMEVBMjgxMSAvKiBBc3luY1Rhc2suaCAqLzsgfTsKIAkJNTFCQTI0NDYx
ODU4RjU1RDAwRUEyODExIC8qIFdlYkNyb3NzVGhyZWFkQ29waWVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkEyNDQ1MTg1OEY0MTUwMEVBMjgx
MSAvKiBXZWJDcm9zc1RocmVhZENvcGllci5jcHAgKi87IH07CkBAIC0yOTUyLDcgKzI5NTEsNiBA
QAogCQk1MUFDQzkzNTE2MjgwNjQ4MDAzNDI1NTAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzc01lc3NhZ2Vz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjE1QTgyMTM4NDNBMzkwMDMyMUFE
OCAvKiBFbnZpcm9ubWVudFV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBFbnZpcm9ubWVudFV0aWxpdGllcy5jcHA7IHBhdGggPSB1bml4L0Vudmlyb25t
ZW50VXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMTVBODMx
Mzg0M0EzOTAwMzIxQUQ4IC8qIEVudmlyb25tZW50VXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEVudmlyb25tZW50VXRpbGl0aWVzLmg7IHBhdGggPSB1bml4L0Vu
dmlyb25tZW50VXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxQjMw
MDRFMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJCYWNrRm9yd2FyZExpc3RDRi5jcHA7IHBh
dGggPSBjZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxQjMwMDRGMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJQYWdlUHJveHlDRi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJQYWdlUHJveHlDRi5jcHA7IHBh
dGggPSBjZi9XZWJQYWdlUHJveHlDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxQkEyNDQzMTg1OEVFMzAwMEVBMjgxMSAvKiBBc3luY1Rhc2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxQkEyNDQ1MTg1OEY0MTUwMEVBMjgxMSAvKiBXZWJDcm9zc1RocmVhZENvcGllci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDcm9zc1RocmVhZENvcGllci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01Mzc5LDcgKzUzNzcsNiBAQAogCQk1MUIzMDA0RDEyNTI5Q0Y1
MDAwQjVDQTAgLyogY2YgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAotCQkJCTUxQjMwMDRFMTI1MjlEMEUwMDBCNUNBMCAvKiBXZWJCYWNrRm9yd2FyZExpc3RDRi5j
cHAgKi8sCiAJCQkJNTFCMzAwNEYxMjUyOUQwRTAwMEI1Q0EwIC8qIFdlYlBhZ2VQcm94eUNGLmNw
cCAqLywKIAkJCSk7CiAJCQluYW1lID0gY2Y7CkBAIC05MDY1LDcgKzkwNjIsNiBAQAogCQkJCTUx
MkE5NzY5MTgwRTA5QjgwMDM5QTE0OSAvKiBEYXRhYmFzZVByb2Nlc3NQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNUUxQUZFRTE2QjIxMDI1MDA2Q0MxRjIgLyog
QVBJV2ViQXJjaGl2ZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNzJCQTFEMTFF
NjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJNTFCMzAwNTAxMjUyOUQwRTAwMEI1Q0EwIC8qIFdlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBQzEzMzc0MTg1N0MyMUUwMEYzRUMwNSAvKiBBUElHZW9tZXRy
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MThEMkNBRDEyRDUxNTNCMDAzQkI5M0IgLyogV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzcyQjlGQTExRTY0
NzZCMDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwIGluIFNvdXJjZXMgKi8s
Cg==
</data>
<flag name="review"
          id="258816"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>