<?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>92565</bug_id>
          
          <creation_ts>2012-07-27 17:35:05 -0700</creation_ts>
          <short_desc>REGRESSION(r123679): Slowed down HTML parsing by 3.6% (Requested by abarth on #webkit).</short_desc>
          <delta_ts>2012-07-27 18:02:52 -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>
          
          <blocked>90321</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>abarth</cc>
    
    <cc>ggaren</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>681279</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-27 17:35:05 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/123679 broke the build:
Slowed down HTML parsing by 3.6% (Requested by abarth on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681281</commentid>
    <comment_count>1</comment_count>
      <attachid>155098</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-27 17:35:50 -0700</bug_when>
    <thetext>Created attachment 155098
ROLLOUT of r123679

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681284</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-27 17:39:33 -0700</bug_when>
    <thetext>msaboff asked me to hold off landing this rollout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681288</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-27 18:00:52 -0700</bug_when>
    <thetext>We discussed this a bit in #webkit.  This patch is part of a series of three that we believe improve performance overall, but msaboff isn&apos;t planning to land the rest of the series until next week.  The plan is to roll this one out for now, verify that all three together are a win, and then land them in quick succession.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681290</commentid>
    <comment_count>4</comment_count>
      <attachid>155098</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-27 18:02:49 -0700</bug_when>
    <thetext>Comment on attachment 155098
ROLLOUT of r123679

Clearing flags on attachment: 155098

Committed r123943: &lt;http://trac.webkit.org/changeset/123943&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681291</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-27 18:02:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155098</attachid>
            <date>2012-07-27 17:35:50 -0700</date>
            <delta_ts>2012-07-27 18:02:49 -0700</delta_ts>
            <desc>ROLLOUT of r123679</desc>
            <filename>bug-92565-20120728004123.patch</filename>
            <type>text/plain</type>
            <size>35300</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzOTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNjZDEzMjVmNTY5ZGZmODc3NTMyNWNk
Y2E0ZThhZTg1ZTQ5YjQ3MGYuLmU3OTg3MTI1ZDM3OTExYzAyYmMyNzg0MTI4MWJmN2YwYjE5NDBh
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMjcgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxMjM2NzkuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyMzY3
OQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI1NjUK
KworICAgICAgICBTbG93ZWQgZG93biBIVE1MIHBhcnNpbmcgYnkgMy42JSAoUmVxdWVzdGVkIGJ5
IGFiYXJ0aCBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0
cmluZy5oOgorCiAyMDEyLTA3LTI3ICBBcm5hdWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Eu
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgdXNlIGNyZWF0ZVVuaW5pdGlhbGl6ZWQgd2hlbiBjcmVh
dGluZyBUeXBlZEFycmF5IGZyb20gYW5vdGhlciBhcnJheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdiNDQxZmMw
YjQwMjg3MmFmNmIyM2ZhNWQ1MDg5YTk2MmE2MDIxZGUuLjE4MDMyMmJkNTg2ZTBiMDA4NTRhYzU3
NDA2NDhmNTBkOTI5YTdkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAxMi0wNy0y
NyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMzY3OS4KKyAgICAgICAgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMTIzNjc5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MjU2NQorCisgICAgICAgIFNsb3dlZCBkb3duIEhUTUwgcGFyc2lu
ZyBieSAzLjYlIChSZXF1ZXN0ZWQgYnkgYWJhcnRoIG9uCisgICAgICAgICN3ZWJraXQpLgorCisg
ICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kKToKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MRW50aXR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlQ
YXJzZXI6OmNvbnN1bWVOYW1lZEVudGl0eSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBh
cnNlcklkaW9tcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXMpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxTb3VyY2VUcmFja2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VUcmFja2VyOjpzb3VyY2VGb3JUb2tlbik6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRTY3JpcHQ6OnNjcmlwdCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TZWdt
ZW50ZWRTdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VnbWVudGVkU3RyaW5nOjpTZWdt
ZW50ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2VnbWVudGVkU3RyaW5nOjpvcGVyYXRv
cj0pOgorICAgICAgICAoV2ViQ29yZTo6U2VnbWVudGVkU3RyaW5nOjpjbGVhcik6CisgICAgICAg
IChXZWJDb3JlOjpTZWdtZW50ZWRTdHJpbmc6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWdtZW50ZWRTdHJpbmc6OnByZXBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2VnbWVudGVkU3Ry
aW5nOjphZHZhbmNlU3Vic3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZFN0cmlu
Zzo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VT
bG93Q2FzZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VBbmRV
cGRhdGVMaW5lTnVtYmVyU2xvd0Nhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvU2VnbWVu
dGVkU3RyaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50ZWRTdWJzdHJpbmc6OlNlZ21l
bnRlZFN1YnN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50ZWRTdWJzdHJpbmc6OmNs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZFN1YnN0cmluZzo6YXBwZW5kVG8pOgor
ICAgICAgICAoU2VnbWVudGVkU3Vic3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRl
ZFN0cmluZzo6U2VnbWVudGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZFN0
cmluZzo6cHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50ZWRTdHJpbmc6OmlzRW1wdHkp
OgorICAgICAgICAoV2ViQ29yZTo6U2VnbWVudGVkU3RyaW5nOjpsb29rQWhlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VnbWVudGVkU3RyaW5nOjpsb29rQWhlYWRJZ25vcmluZ0Nhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VnbWVudGVkU3RyaW5nOjphZHZhbmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlZ21lbnRlZFN0cmluZzo6YWR2YW5jZUFuZEFTU0VSVCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VBbmRBU1NFUlRJZ25vcmluZ0Nhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VnbWVudGVkU3RyaW5nOjphZHZhbmNlUGFzdE5ld2xpbmVBbmRVcGRhdGVM
aW5lTnVtYmVyKToKKyAgICAgICAgKFNlZ21lbnRlZFN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VQYXN0Tm9uTmV3bGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VBbmRVcGRhdGVMaW5lTnVtYmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlZ21lbnRlZFN0cmluZzo6b3BlcmF0b3IqKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlZ21lbnRlZFN0cmluZzo6b3BlcmF0b3ItPik6CisgICAgICAgIChXZWJDb3JlOjpTZWdt
ZW50ZWRTdHJpbmc6OmN1cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VnbWVudGVkU3RyaW5n
OjplcXVhbHNMaXRlcmFsbHkpOgorICAgICAgICAoV2ViQ29yZTo6U2VnbWVudGVkU3RyaW5nOjpl
cXVhbHNJZ25vcmluZ0Nhc2UpOgorICAgICAgICAoV2ViQ29yZTo6U2VnbWVudGVkU3RyaW5nOjps
b29rQWhlYWRJbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6U2VnbWVudGVkU3RyaW5nOjpsb29r
QWhlYWRTbG93Q2FzZSk6CisgICAgICAgICogeG1sL3BhcnNlci9DaGFyYWN0ZXJSZWZlcmVuY2VQ
YXJzZXJJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQ2hhcmFjdGVy
UmVmZXJlbmNlKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL01hcmt1cFRva2VuaXplckJhc2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cFRva2VuaXplckJhc2U6OklucHV0U3RyZWFtUHJlcHJv
Y2Vzc29yOjpuZXh0SW5wdXRDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwVG9r
ZW5pemVyQmFzZTo6SW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OnBlZWspOgorICAgICAgICAoV2Vi
Q29yZTo6TWFya3VwVG9rZW5pemVyQmFzZTo6SW5wdXRTdHJlYW1QcmVwcm9jZXNzb3I6OmFkdmFu
Y2UpOgorCiAyMDEyLTA3LTI3ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBleGVjQ29tbWFuZCBjb3BpZXMgdGhlIGJhY2tncm91bmctY29sb3Ig
b2YgdGhlIGVuY2xvc2luZyBlbGVtZW50IHRvIHRoZSBlbGVtZW50IGJlaW5nIGVkaXRlZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDM1MTQ0ZmE0MzBlNWRlZTRhYjUyZmM2YWY1MWIzYTk5
YTcwMDM0MTkuLjlmNDkyYTdhMWQ2MjM2Yjg3OGU4ZmJiNjIwZDM0ZDE0YTVjYTA0MTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMTkwLDEzICsxOTAsNiBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC0+aXM4Qml0KCk7IH0KIAotICAgIHVu
c2lnbmVkIHNpemVJbkJ5dGVzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9pbXBsKQot
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBtX2ltcGwtPmxlbmd0aCgpICog
KGlzOEJpdCgpID8gc2l6ZW9mKExDaGFyKSA6IHNpemVvZihVQ2hhcikpOwotICAgIH0KLQogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nIGFzY2lpKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIENTdHJpbmcgbGF0aW4xKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IENTdHJpbmcgdXRmOChib29sIHN0cmljdCA9IGZhbHNlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggMzE5YjhkMmZlZDczZjNmMzBi
NmE3NWJiY2Q2ZDFjNWM5YjI4NDE5OC4uMTg2ODljOTdmZDMzOTcwZWMyY2M4MGMzZjc3MTg3OGYw
M2M3MDU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5j
cHAKQEAgLTM2OCw3ICszNjgsNyBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjph
cHBlbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAgICAgbV9kZXN0ID0gbV9idWZm
ZXI7CiAgICAgU2VnbWVudGVkU3RyaW5nIHN0ciA9IHNvdXJjZTsKICAgICB3aGlsZSAoIXN0ci5p
c0VtcHR5KCkpIHsKLSAgICAgICAgVUNoYXIgYyA9IHN0ci5jdXJyZW50Q2hhcigpOworICAgICAg
ICBVQ2hhciBjID0gKnN0cjsKIAogICAgICAgICBpZiAoYyA9PSAnXHInKSB7CiAgICAgICAgICAg
ICAqbV9kZXN0KysgPSAnXG4nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTEVudGl0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RW50aXR5UGFyc2VyLmNwcAppbmRleCAxODcxODA1NGJmYWE0ZjhjY2U4YWY4ZGJkMWYwMzBlYmRm
ZDBmZTZkLi40NDJjZWRiYzJmN2IwMjQ0YjI3MmQ1ODJkNTNjMTUzOGY2ODdmOTk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRW50aXR5UGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRW50aXR5UGFyc2VyLmNwcApAQCAtODcs
NyArODcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgY29uc3VtZWRDaGFyYWN0
ZXJzOwogICAgICAgICBIVE1MRW50aXR5U2VhcmNoIGVudGl0eVNlYXJjaDsKICAgICAgICAgd2hp
bGUgKCFzb3VyY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBjYyA9IHNvdXJjZS5jdXJyZW50
Q2hhcigpOworICAgICAgICAgICAgY2MgPSAqc291cmNlOwogICAgICAgICAgICAgZW50aXR5U2Vh
cmNoLmFkdmFuY2UoY2MpOwogICAgICAgICAgICAgaWYgKCFlbnRpdHlTZWFyY2guaXNFbnRpdHlQ
cmVmaXgoKSkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExNCwxMyArMTE0LDEzIEBAIHB1
YmxpYzoKICAgICAgICAgICAgIGNvbnN0IGludCBsZW5ndGggPSBlbnRpdHlTZWFyY2gubW9zdFJl
Y2VudE1hdGNoKCktPmxlbmd0aDsKICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiByZWZlcmVuY2Ug
PSBlbnRpdHlTZWFyY2gubW9zdFJlY2VudE1hdGNoKCktPmVudGl0eTsKICAgICAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBjYyA9IHNv
dXJjZS5jdXJyZW50Q2hhcigpOworICAgICAgICAgICAgICAgIGNjID0gKnNvdXJjZTsKICAgICAg
ICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHJlZmVyZW5jZSwgY2MgPT0gKnJlZmVyZW5jZSsrKTsK
ICAgICAgICAgICAgICAgICBjb25zdW1lZENoYXJhY3RlcnMuYXBwZW5kKGNjKTsKICAgICAgICAg
ICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVChjYyk7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKCFzb3VyY2UuaXNFbXB0eSgpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNjID0g
c291cmNlLmN1cnJlbnRDaGFyKCk7CisgICAgICAgICAgICBjYyA9ICpzb3VyY2U7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGVudGl0eVNlYXJjaC5tb3N0UmVjZW50TWF0Y2goKS0+bGFzdENoYXJh
Y3RlcigpID09ICc7JwogICAgICAgICAgICAgfHwgIWFkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmlu
ZGV4IDhmMDU3YjEyMmJhY2JkNjFiZDNkMzEzMmFkNzIwYzc4ODRjYTA2NTEuLmMzYmVjYzM2MGQ0
ZmFmZjU3MTQ1N2YzMDk1MGE2MWE2ODg2MzA2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1zdGF0aWMg
U3RyaW5nIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhTdHJpbmcgc3RyaW5nLCBD
aGFyVHlwZSBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCitTdHJpbmcgc3RyaXBMZWFkaW5n
QW5kVHJhaWxpbmdIVE1MU3BhY2VzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIHVuc2ln
bmVkIG51bUxlYWRpbmdTcGFjZXMgPSAwOwotICAgIHVuc2lnbmVkIG51bVRyYWlsaW5nU3BhY2Vz
ID0gMDsKKyAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHN0cmluZy5jaGFyYWN0ZXJzKCk7
CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwogCi0gICAgZm9yICg7IG51
bUxlYWRpbmdTcGFjZXMgPCBsZW5ndGg7ICsrbnVtTGVhZGluZ1NwYWNlcykgeworICAgIHVuc2ln
bmVkIG51bUxlYWRpbmdTcGFjZXM7CisgICAgZm9yIChudW1MZWFkaW5nU3BhY2VzID0gMDsgbnVt
TGVhZGluZ1NwYWNlcyA8IGxlbmd0aDsgKytudW1MZWFkaW5nU3BhY2VzKSB7CiAgICAgICAgIGlm
IChpc05vdEhUTUxTcGFjZShjaGFyYWN0ZXJzW251bUxlYWRpbmdTcGFjZXNdKSkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgIH0KQEAgLTQ4LDMyICs0OCwxNyBAQCBzdGF0aWMgU3RyaW5nIHN0cmlw
TGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhTdHJpbmcgc3RyaW5nLCBDaGFyVHlwZSBjaGFy
YWN0ZQogICAgIGlmIChudW1MZWFkaW5nU3BhY2VzID09IGxlbmd0aCkKICAgICAgICAgcmV0dXJu
IHN0cmluZy5pc051bGwoKSA/IHN0cmluZyA6IGVtcHR5QXRvbS5zdHJpbmcoKTsKIAotICAgIGZv
ciAoOyBudW1UcmFpbGluZ1NwYWNlcyA8IGxlbmd0aDsgKytudW1UcmFpbGluZ1NwYWNlcykgewor
ICAgIHVuc2lnbmVkIG51bVRyYWlsaW5nU3BhY2VzOworICAgIGZvciAobnVtVHJhaWxpbmdTcGFj
ZXMgPSAwOyBudW1UcmFpbGluZ1NwYWNlcyA8IGxlbmd0aDsgKytudW1UcmFpbGluZ1NwYWNlcykg
ewogICAgICAgICBpZiAoaXNOb3RIVE1MU3BhY2UoY2hhcmFjdGVyc1tsZW5ndGggLSBudW1UcmFp
bGluZ1NwYWNlcyAtIDFdKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VS
VChudW1MZWFkaW5nU3BhY2VzICsgbnVtVHJhaWxpbmdTcGFjZXMgPCBsZW5ndGgpOwogCi0gICAg
aWYgKCEobnVtTGVhZGluZ1NwYWNlcyB8IG51bVRyYWlsaW5nU3BhY2VzKSkKLSAgICAgICAgcmV0
dXJuIHN0cmluZzsKLQogICAgIHJldHVybiBzdHJpbmcuc3Vic3RyaW5nKG51bUxlYWRpbmdTcGFj
ZXMsIGxlbmd0aCAtIChudW1MZWFkaW5nU3BhY2VzICsgbnVtVHJhaWxpbmdTcGFjZXMpKTsKIH0K
IAotU3RyaW5nIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhjb25zdCBTdHJpbmcm
IHN0cmluZykKLXsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7Ci0KLSAg
ICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0cmluZy5pc051bGwoKSA/IHN0cmluZyA6
IGVtcHR5QXRvbS5zdHJpbmcoKTsKLQotICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAg
IHJldHVybiBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoc3RyaW5nLCBzdHJpbmcu
Y2hhcmFjdGVyczgoKSwgbGVuZ3RoKTsKLQotICAgIHJldHVybiBzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0hUTUxTcGFjZXMoc3RyaW5nLCBzdHJpbmcuY2hhcmFjdGVycygpLCBsZW5ndGgpOwotfQot
CiBTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlwZShjb25zdCBEZWNpbWFsJiBudW1iZXIpCiB7
CiAgICAgaWYgKG51bWJlci5pc1plcm8oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwCmluZGV4IGIwNDJkZDY1N2VhNGYyMDc5NTIyYzA3
YzZmNDVhMDdmNDlhNjhiMTkuLmU3YzY4NzY0YjgzYzg5ZWY5MzQzNzFkNThkNDEyYjVjZmIyMzIy
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTb3VyY2VUcmFj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU291cmNlVHJhY2tl
ci5jcHAKQEAgLTcxLDEyICs3MSwxMiBAQCBTdHJpbmcgSFRNTFNvdXJjZVRyYWNrZXI6OnNvdXJj
ZUZvclRva2VuKGNvbnN0IEhUTUxUb2tlbiYgdG9rZW4pCiAKICAgICBzaXplX3QgaSA9IDA7CiAg
ICAgZm9yICggOyBpIDwgbGVuZ3RoICYmICFtX3ByZXZpb3VzU291cmNlLmlzRW1wdHkoKTsgKytp
KSB7Ci0gICAgICAgIHNvdXJjZS5hcHBlbmQobV9wcmV2aW91c1NvdXJjZS5jdXJyZW50Q2hhcigp
KTsKKyAgICAgICAgc291cmNlLmFwcGVuZCgqbV9wcmV2aW91c1NvdXJjZSk7CiAgICAgICAgIG1f
cHJldmlvdXNTb3VyY2UuYWR2YW5jZSgpOwogICAgIH0KICAgICBmb3IgKCA7IGkgPCBsZW5ndGg7
ICsraSkgewogICAgICAgICBBU1NFUlQoIW1fY3VycmVudFNvdXJjZS5pc0VtcHR5KCkpOwotICAg
ICAgICBzb3VyY2UuYXBwZW5kKG1fY3VycmVudFNvdXJjZS5jdXJyZW50Q2hhcigpKTsKKyAgICAg
ICAgc291cmNlLmFwcGVuZCgqbV9jdXJyZW50U291cmNlKTsKICAgICAgICAgbV9jdXJyZW50U291
cmNlLmFkdmFuY2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5jcHAKaW5kZXggMDg2ZmExYjNiZDYwNTZkMzYxZDU0NGQwNzQ3YTdlMWUyMGI3
ZWRlZi4uYTJkYTc0NDg5YmQ1ZTU1NWUzNzE4YmJjY2IzYTdiODEyOTFmZGZiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTcxLDcgKzcxLDcg
QEAgY29uc3QgU3RyaW5nJiBDYWNoZWRTY3JpcHQ6OnNjcmlwdCgpCiAgICAgaWYgKCFtX3Njcmlw
dCAmJiBtX2RhdGEpIHsKICAgICAgICAgbV9zY3JpcHQgPSBtX2RlY29kZXItPmRlY29kZShtX2Rh
dGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CiAgICAgICAgIG1fc2NyaXB0ICs9IG1fZGVjb2Rl
ci0+Zmx1c2goKTsKLSAgICAgICAgc2V0RGVjb2RlZFNpemUobV9zY3JpcHQuc2l6ZUluQnl0ZXMo
KSk7CisgICAgICAgIHNldERlY29kZWRTaXplKG1fc2NyaXB0Lmxlbmd0aCgpICogc2l6ZW9mKFVD
aGFyKSk7CiAgICAgfQogICAgIG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyLnN0YXJ0T25lU2hv
dCgwKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2Vn
bWVudGVkU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVk
U3RyaW5nLmNwcAppbmRleCAzZDhiNzc5ZGQ2YTAzZjRmZmViYmM3OTViYmFhYWRjNTAzMmQ0N2Ex
Li42MzM3M2JhN2EzYzEzZTdmNmQ2OTIyNDhiZmI5YTIyMTMxNjI2ZTI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwCkBAIC0yOCwxNiAr
MjgsMTMgQEAgU2VnbWVudGVkU3RyaW5nOjpTZWdtZW50ZWRTdHJpbmcoY29uc3QgU2VnbWVudGVk
U3RyaW5nJiBvdGhlcikKICAgICAsIG1fY3VycmVudFN0cmluZyhvdGhlci5tX2N1cnJlbnRTdHJp
bmcpCiAgICAgLCBtX3N1YnN0cmluZ3Mob3RoZXIubV9zdWJzdHJpbmdzKQogICAgICwgbV9jbG9z
ZWQob3RoZXIubV9jbG9zZWQpCi0gICAgLCBtX2VtcHR5KG90aGVyLm1fZW1wdHkpCi0gICAgLCBt
X2FkdmFuY2VGdW5jKG90aGVyLm1fYWR2YW5jZUZ1bmMpCi0gICAgLCBtX2FkdmFuY2VBbmRVcGRh
dGVMaW5lTnVtYmVyRnVuYyhvdGhlci5tX2FkdmFuY2VBbmRVcGRhdGVMaW5lTnVtYmVyRnVuYykK
IHsKLSAgICBpZiAobV9wdXNoZWRDaGFyMikKLSAgICAgICAgbV9jdXJyZW50Q2hhciA9IG1fcHVz
aGVkQ2hhcjI7Ci0gICAgZWxzZSBpZiAobV9wdXNoZWRDaGFyMSkKLSAgICAgICAgbV9jdXJyZW50
Q2hhciA9IG1fcHVzaGVkQ2hhcjE7CisgICAgaWYgKG90aGVyLm1fY3VycmVudENoYXIgPT0gJm90
aGVyLm1fcHVzaGVkQ2hhcjEpCisgICAgICAgIG1fY3VycmVudENoYXIgPSAmbV9wdXNoZWRDaGFy
MTsKKyAgICBlbHNlIGlmIChvdGhlci5tX2N1cnJlbnRDaGFyID09ICZvdGhlci5tX3B1c2hlZENo
YXIyKQorICAgICAgICBtX2N1cnJlbnRDaGFyID0gJm1fcHVzaGVkQ2hhcjI7CiAgICAgZWxzZQot
ICAgICAgICBtX2N1cnJlbnRDaGFyID0gbV9jdXJyZW50U3RyaW5nLm1fbGVuZ3RoID8gbV9jdXJy
ZW50U3RyaW5nLmdldEN1cnJlbnRDaGFyKCkgOiAwOworICAgICAgICBtX2N1cnJlbnRDaGFyID0g
b3RoZXIubV9jdXJyZW50Q2hhcjsKIH0KIAogY29uc3QgU2VnbWVudGVkU3RyaW5nJiBTZWdtZW50
ZWRTdHJpbmc6Om9wZXJhdG9yPShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIG90aGVyKQpAQCAtNDYs
MjIgKzQzLDE3IEBAIGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgU2VnbWVudGVkU3RyaW5nOjpvcGVy
YXRvcj0oY29uc3QgU2VnbWVudGVkU3RyaW5nJiBvdGhlcikKICAgICBtX3B1c2hlZENoYXIyID0g
b3RoZXIubV9wdXNoZWRDaGFyMjsKICAgICBtX2N1cnJlbnRTdHJpbmcgPSBvdGhlci5tX2N1cnJl
bnRTdHJpbmc7CiAgICAgbV9zdWJzdHJpbmdzID0gb3RoZXIubV9zdWJzdHJpbmdzOwotICAgIGlm
IChtX3B1c2hlZENoYXIyKQotICAgICAgICBtX2N1cnJlbnRDaGFyID0gbV9wdXNoZWRDaGFyMjsK
LSAgICBlbHNlIGlmIChtX3B1c2hlZENoYXIxKQotICAgICAgICBtX2N1cnJlbnRDaGFyID0gbV9w
dXNoZWRDaGFyMTsKKyAgICBpZiAob3RoZXIubV9jdXJyZW50Q2hhciA9PSAmb3RoZXIubV9wdXNo
ZWRDaGFyMSkKKyAgICAgICAgbV9jdXJyZW50Q2hhciA9ICZtX3B1c2hlZENoYXIxOworICAgIGVs
c2UgaWYgKG90aGVyLm1fY3VycmVudENoYXIgPT0gJm90aGVyLm1fcHVzaGVkQ2hhcjIpCisgICAg
ICAgIG1fY3VycmVudENoYXIgPSAmbV9wdXNoZWRDaGFyMjsKICAgICBlbHNlCi0gICAgICAgIG1f
Y3VycmVudENoYXIgPSBtX2N1cnJlbnRTdHJpbmcubV9sZW5ndGggPyBtX2N1cnJlbnRTdHJpbmcu
Z2V0Q3VycmVudENoYXIoKSA6IDA7Ci0KKyAgICAgICAgbV9jdXJyZW50Q2hhciA9IG90aGVyLm1f
Y3VycmVudENoYXI7CiAgICAgbV9jbG9zZWQgPSBvdGhlci5tX2Nsb3NlZDsKLSAgICBtX2VtcHR5
ID0gb3RoZXIubV9lbXB0eTsKICAgICBtX251bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkUHJpb3JU
b0N1cnJlbnRTdHJpbmcgPSBvdGhlci5tX251bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkUHJpb3JU
b0N1cnJlbnRTdHJpbmc7CiAgICAgbV9udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZFByaW9yVG9D
dXJyZW50TGluZSA9IG90aGVyLm1fbnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWRQcmlvclRvQ3Vy
cmVudExpbmU7CiAgICAgbV9jdXJyZW50TGluZSA9IG90aGVyLm1fY3VycmVudExpbmU7CiAKLSAg
ICBtX2FkdmFuY2VGdW5jID0gb3RoZXIubV9hZHZhbmNlRnVuYzsKLSAgICBtX2FkdmFuY2VBbmRV
cGRhdGVMaW5lTnVtYmVyRnVuYyA9IG90aGVyLm1fYWR2YW5jZUFuZFVwZGF0ZUxpbmVOdW1iZXJG
dW5jOwotCiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC0xMDQsOSArOTYsNiBAQCB2b2lkIFNl
Z21lbnRlZFN0cmluZzo6Y2xlYXIoKQogICAgIG1fY3VycmVudExpbmUgPSAwOwogICAgIG1fc3Vi
c3RyaW5ncy5jbGVhcigpOwogICAgIG1fY2xvc2VkID0gZmFsc2U7Ci0gICAgbV9lbXB0eSA9IHRy
dWU7Ci0gICAgbV9hZHZhbmNlRnVuYyA9ICZTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VFbXB0eTsK
LSAgICBtX2FkdmFuY2VBbmRVcGRhdGVMaW5lTnVtYmVyRnVuYyA9ICZTZWdtZW50ZWRTdHJpbmc6
OmFkdmFuY2VFbXB0eTsKIH0KIAogdm9pZCBTZWdtZW50ZWRTdHJpbmc6OmFwcGVuZChjb25zdCBT
ZWdtZW50ZWRTdWJzdHJpbmcmIHMpCkBAIC0xMTgsMTAgKzEwNyw4IEBAIHZvaWQgU2VnbWVudGVk
U3RyaW5nOjphcHBlbmQoY29uc3QgU2VnbWVudGVkU3Vic3RyaW5nJiBzKQogICAgIGlmICghbV9j
dXJyZW50U3RyaW5nLm1fbGVuZ3RoKSB7CiAgICAgICAgIG1fbnVtYmVyT2ZDaGFyYWN0ZXJzQ29u
c3VtZWRQcmlvclRvQ3VycmVudFN0cmluZyArPSBtX2N1cnJlbnRTdHJpbmcubnVtYmVyT2ZDaGFy
YWN0ZXJzQ29uc3VtZWQoKTsKICAgICAgICAgbV9jdXJyZW50U3RyaW5nID0gczsKLSAgICAgICAg
dXBkYXRlQWR2YW5jZUZ1bmN0aW9uUG9pbnRlcnMoKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9z
dWJzdHJpbmdzLmFwcGVuZChzKTsKLSAgICBtX2VtcHR5ID0gZmFsc2U7CiB9CiAKIHZvaWQgU2Vn
bWVudGVkU3RyaW5nOjpwcmVwZW5kKGNvbnN0IFNlZ21lbnRlZFN1YnN0cmluZyYgcykKQEAgLTEz
OCwxNiArMTI1LDEzIEBAIHZvaWQgU2VnbWVudGVkU3RyaW5nOjpwcmVwZW5kKGNvbnN0IFNlZ21l
bnRlZFN1YnN0cmluZyYgcykKICAgICAvLyAgICAgICAgY2FzZXMgaW4gdGhlIGZ1dHVyZS4KICAg
ICBtX251bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkUHJpb3JUb0N1cnJlbnRTdHJpbmcgKz0gbV9j
dXJyZW50U3RyaW5nLm51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCk7CiAgICAgbV9udW1iZXJP
ZkNoYXJhY3RlcnNDb25zdW1lZFByaW9yVG9DdXJyZW50U3RyaW5nIC09IHMubV9sZW5ndGg7Ci0g
ICAgaWYgKCFtX2N1cnJlbnRTdHJpbmcubV9sZW5ndGgpIHsKKyAgICBpZiAoIW1fY3VycmVudFN0
cmluZy5tX2xlbmd0aCkKICAgICAgICAgbV9jdXJyZW50U3RyaW5nID0gczsKLSAgICAgICAgdXBk
YXRlQWR2YW5jZUZ1bmN0aW9uUG9pbnRlcnMoKTsKLSAgICB9IGVsc2UgeworICAgIGVsc2Ugewog
ICAgICAgICAvLyBTaGlmdCBvdXIgbV9jdXJyZW50U3RyaW5nIGludG8gb3VyIGxpc3QuCiAgICAg
ICAgIG1fc3Vic3RyaW5ncy5wcmVwZW5kKG1fY3VycmVudFN0cmluZyk7CiAgICAgICAgIG1fY3Vy
cmVudFN0cmluZyA9IHM7Ci0gICAgICAgIHVwZGF0ZUFkdmFuY2VGdW5jdGlvblBvaW50ZXJzKCk7
CiAgICAgfQotICAgIG1fZW1wdHkgPSBmYWxzZTsKIH0KIAogdm9pZCBTZWdtZW50ZWRTdHJpbmc6
OmNsb3NlKCkKQEAgLTE2OCw3ICsxNTIsNyBAQCB2b2lkIFNlZ21lbnRlZFN0cmluZzo6YXBwZW5k
KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgcykKICAgICAgICAgZm9yICg7IGl0ICE9IGU7ICsraXQp
CiAgICAgICAgICAgICBhcHBlbmQoKml0KTsKICAgICB9Ci0gICAgbV9jdXJyZW50Q2hhciA9IG1f
cHVzaGVkQ2hhcjEgPyBtX3B1c2hlZENoYXIxIDogKG1fY3VycmVudFN0cmluZy5tX2xlbmd0aCA/
IG1fY3VycmVudFN0cmluZy5nZXRDdXJyZW50Q2hhcigpIDogMCk7CisgICAgbV9jdXJyZW50Q2hh
ciA9IG1fcHVzaGVkQ2hhcjEgPyAmbV9wdXNoZWRDaGFyMSA6IG1fY3VycmVudFN0cmluZy5tX2N1
cnJlbnQ7CiB9CiAKIHZvaWQgU2VnbWVudGVkU3RyaW5nOjpwcmVwZW5kKGNvbnN0IFNlZ21lbnRl
ZFN0cmluZyYgcykKQEAgLTE4Miw3ICsxNjYsNyBAQCB2b2lkIFNlZ21lbnRlZFN0cmluZzo6cHJl
cGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHMpCiAgICAgICAgICAgICBwcmVwZW5kKCppdCk7
CiAgICAgfQogICAgIHByZXBlbmQocy5tX2N1cnJlbnRTdHJpbmcpOwotICAgIG1fY3VycmVudENo
YXIgPSBtX3B1c2hlZENoYXIxID8gbV9wdXNoZWRDaGFyMSA6IChtX2N1cnJlbnRTdHJpbmcubV9s
ZW5ndGggPyBtX2N1cnJlbnRTdHJpbmcuZ2V0Q3VycmVudENoYXIoKSA6IDApOworICAgIG1fY3Vy
cmVudENoYXIgPSBtX3B1c2hlZENoYXIxID8gJm1fcHVzaGVkQ2hhcjEgOiBtX2N1cnJlbnRTdHJp
bmcubV9jdXJyZW50OwogfQogCiB2b2lkIFNlZ21lbnRlZFN0cmluZzo6YWR2YW5jZVN1YnN0cmlu
ZygpCkBAIC0xOTQsMTMgKzE3OCw4IEBAIHZvaWQgU2VnbWVudGVkU3RyaW5nOjphZHZhbmNlU3Vi
c3RyaW5nKCkKICAgICAgICAgLy8gc3RyaW5nLCB3ZSBub3cgYWNjb3VudCBmb3IgdGhvc2UgY2hh
cmFjdGVycyBhcyBwYXJ0IG9mIHRoZSBjdXJyZW50CiAgICAgICAgIC8vIHN0cmluZywgbm90IGFz
IHBhcnQgb2YgInByaW9yIHRvIGN1cnJlbnQgc3RyaW5nLiIKICAgICAgICAgbV9udW1iZXJPZkNo
YXJhY3RlcnNDb25zdW1lZFByaW9yVG9DdXJyZW50U3RyaW5nIC09IG1fY3VycmVudFN0cmluZy5u
dW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpOwotICAgICAgICB1cGRhdGVBZHZhbmNlRnVuY3Rp
b25Qb2ludGVycygpOwotICAgIH0gZWxzZSB7CisgICAgfSBlbHNlCiAgICAgICAgIG1fY3VycmVu
dFN0cmluZy5jbGVhcigpOwotICAgICAgICBtX2VtcHR5ID0gdHJ1ZTsKLSAgICAgICAgbV9hZHZh
bmNlRnVuYyA9ICZTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VFbXB0eTsKLSAgICAgICAgbV9hZHZh
bmNlQW5kVXBkYXRlTGluZU51bWJlckZ1bmMgPSAmU2VnbWVudGVkU3RyaW5nOjphZHZhbmNlRW1w
dHk7Ci0gICAgfQogfQogCiBTdHJpbmcgU2VnbWVudGVkU3RyaW5nOjp0b1N0cmluZygpIGNvbnN0
CkBAIC0yMjUsNzEgKzIwNCwyMiBAQCB2b2lkIFNlZ21lbnRlZFN0cmluZzo6YWR2YW5jZSh1bnNp
Z25lZCBjb3VudCwgVUNoYXIqIGNvbnN1bWVkQ2hhcmFjdGVycykKIHsKICAgICBBU1NFUlQoY291
bnQgPD0gbGVuZ3RoKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytp
KSB7Ci0gICAgICAgIGNvbnN1bWVkQ2hhcmFjdGVyc1tpXSA9IGN1cnJlbnRDaGFyKCk7CisgICAg
ICAgIGNvbnN1bWVkQ2hhcmFjdGVyc1tpXSA9ICpjdXJyZW50KCk7CiAgICAgICAgIGFkdmFuY2Uo
KTsKICAgICB9CiB9CiAKLXZvaWQgU2VnbWVudGVkU3RyaW5nOjphZHZhbmNlOCgpCi17Ci0gICAg
QVNTRVJUKCFtX3B1c2hlZENoYXIxKTsKLSAgICBkZWNyZW1lbnRBbmRDaGVja0xlbmd0aCgpOwot
ICAgIG1fY3VycmVudENoYXIgPSBtX2N1cnJlbnRTdHJpbmcuaW5jcmVtZW50QW5kR2V0Q3VycmVu
dENoYXI4KCk7Ci19Ci0KLXZvaWQgU2VnbWVudGVkU3RyaW5nOjphZHZhbmNlMTYoKQotewotICAg
IEFTU0VSVCghbV9wdXNoZWRDaGFyMSk7Ci0gICAgZGVjcmVtZW50QW5kQ2hlY2tMZW5ndGgoKTsK
LSAgICBtX2N1cnJlbnRDaGFyID0gbV9jdXJyZW50U3RyaW5nLmluY3JlbWVudEFuZEdldEN1cnJl
bnRDaGFyMTYoKTsKLX0KLQotdm9pZCBTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VBbmRVcGRhdGVM
aW5lTnVtYmVyOCgpCi17Ci0gICAgQVNTRVJUKCFtX3B1c2hlZENoYXIxKTsKLSAgICBBU1NFUlQo
bV9jdXJyZW50U3RyaW5nLmdldEN1cnJlbnRDaGFyKCkgPT0gbV9jdXJyZW50Q2hhcik7Ci0gICAg
aWYgKG1fY3VycmVudENoYXIgPT0gJ1xuJykgewotICAgICAgICArK21fY3VycmVudExpbmU7Ci0g
ICAgICAgIG1fbnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWRQcmlvclRvQ3VycmVudExpbmUgPSBu
dW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpICsgMTsKLSAgICB9Ci0gICAgZGVjcmVtZW50QW5k
Q2hlY2tMZW5ndGgoKTsKLSAgICBtX2N1cnJlbnRDaGFyID0gbV9jdXJyZW50U3RyaW5nLmluY3Jl
bWVudEFuZEdldEN1cnJlbnRDaGFyOCgpOwotfQotCi12b2lkIFNlZ21lbnRlZFN0cmluZzo6YWR2
YW5jZUFuZFVwZGF0ZUxpbmVOdW1iZXIxNigpCi17Ci0gICAgQVNTRVJUKCFtX3B1c2hlZENoYXIx
KTsKLSAgICBBU1NFUlQobV9jdXJyZW50U3RyaW5nLmdldEN1cnJlbnRDaGFyKCkgPT0gbV9jdXJy
ZW50Q2hhcik7Ci0gICAgaWYgKG1fY3VycmVudENoYXIgPT0gJ1xuJykgewotICAgICAgICArK21f
Y3VycmVudExpbmU7Ci0gICAgICAgIG1fbnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWRQcmlvclRv
Q3VycmVudExpbmUgPSBudW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZCgpICsgMTsKLSAgICB9Ci0g
ICAgZGVjcmVtZW50QW5kQ2hlY2tMZW5ndGgoKTsKLSAgICBtX2N1cnJlbnRDaGFyID0gbV9jdXJy
ZW50U3RyaW5nLmluY3JlbWVudEFuZEdldEN1cnJlbnRDaGFyMTYoKTsKLX0KLQogdm9pZCBTZWdt
ZW50ZWRTdHJpbmc6OmFkdmFuY2VTbG93Q2FzZSgpCiB7CiAgICAgaWYgKG1fcHVzaGVkQ2hhcjEp
IHsKICAgICAgICAgbV9wdXNoZWRDaGFyMSA9IG1fcHVzaGVkQ2hhcjI7CiAgICAgICAgIG1fcHVz
aGVkQ2hhcjIgPSAwOwotCi0gICAgICAgIGlmIChtX3B1c2hlZENoYXIxKSB7Ci0gICAgICAgICAg
ICBtX2N1cnJlbnRDaGFyID0gbV9wdXNoZWRDaGFyMTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIHVwZGF0ZUFkdmFuY2VGdW5jdGlvblBvaW50ZXJzKCk7Ci0gICAg
fSBlbHNlIGlmIChtX2N1cnJlbnRTdHJpbmcubV9sZW5ndGgpIHsKKyAgICB9IGVsc2UgaWYgKG1f
Y3VycmVudFN0cmluZy5tX2N1cnJlbnQpIHsKKyAgICAgICAgKyttX2N1cnJlbnRTdHJpbmcubV9j
dXJyZW50OwogICAgICAgICBpZiAoLS1tX2N1cnJlbnRTdHJpbmcubV9sZW5ndGggPT0gMCkKICAg
ICAgICAgICAgIGFkdmFuY2VTdWJzdHJpbmcoKTsKLSAgICB9IGVsc2UgaWYgKCFpc0NvbXBvc2l0
ZSgpKSB7Ci0gICAgICAgIG1fY3VycmVudFN0cmluZy5jbGVhcigpOwotICAgICAgICBtX2VtcHR5
ID0gdHJ1ZTsKLSAgICAgICAgbV9hZHZhbmNlRnVuYyA9ICZTZWdtZW50ZWRTdHJpbmc6OmFkdmFu
Y2VFbXB0eTsKLSAgICAgICAgbV9hZHZhbmNlQW5kVXBkYXRlTGluZU51bWJlckZ1bmMgPSAmU2Vn
bWVudGVkU3RyaW5nOjphZHZhbmNlRW1wdHk7CiAgICAgfQotICAgIG1fY3VycmVudENoYXIgPSBt
X2N1cnJlbnRTdHJpbmcubV9sZW5ndGggPyBtX2N1cnJlbnRTdHJpbmcuZ2V0Q3VycmVudENoYXIo
KSA6IDA7CisgICAgbV9jdXJyZW50Q2hhciA9IG1fcHVzaGVkQ2hhcjEgPyAmbV9wdXNoZWRDaGFy
MSA6IG1fY3VycmVudFN0cmluZy5tX2N1cnJlbnQ7CiB9CiAKIHZvaWQgU2VnbWVudGVkU3RyaW5n
OjphZHZhbmNlQW5kVXBkYXRlTGluZU51bWJlclNsb3dDYXNlKCkKQEAgLTI5NywzNyArMjI3LDE2
IEBAIHZvaWQgU2VnbWVudGVkU3RyaW5nOjphZHZhbmNlQW5kVXBkYXRlTGluZU51bWJlclNsb3dD
YXNlKCkKICAgICBpZiAobV9wdXNoZWRDaGFyMSkgewogICAgICAgICBtX3B1c2hlZENoYXIxID0g
bV9wdXNoZWRDaGFyMjsKICAgICAgICAgbV9wdXNoZWRDaGFyMiA9IDA7Ci0KLSAgICAgICAgaWYg
KG1fcHVzaGVkQ2hhcjEpIHsKLSAgICAgICAgICAgIG1fY3VycmVudENoYXIgPSBtX3B1c2hlZENo
YXIxOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdXBkYXRlQWR2
YW5jZUZ1bmN0aW9uUG9pbnRlcnMoKTsKLSAgICB9IGVsc2UgaWYgKG1fY3VycmVudFN0cmluZy5t
X2xlbmd0aCkgewotICAgICAgICBpZiAobV9jdXJyZW50U3RyaW5nLmdldEN1cnJlbnRDaGFyKCkg
PT0gJ1xuJyAmJiBtX2N1cnJlbnRTdHJpbmcuZG9Ob3RFeGNsdWRlTGluZU51bWJlcnMoKSkgewor
ICAgIH0gZWxzZSBpZiAobV9jdXJyZW50U3RyaW5nLm1fY3VycmVudCkgeworICAgICAgICBpZiAo
Km1fY3VycmVudFN0cmluZy5tX2N1cnJlbnQrKyA9PSAnXG4nICYmIG1fY3VycmVudFN0cmluZy5k
b05vdEV4Y2x1ZGVMaW5lTnVtYmVycygpKSB7CiAgICAgICAgICAgICArK21fY3VycmVudExpbmU7
CiAgICAgICAgICAgICAvLyBQbHVzIDEgYmVjYXVzZSBudW1iZXJPZkNoYXJhY3RlcnNDb25zdW1l
ZCB2YWx1ZSBoYXNuJ3QgaW5jcmVtZW50ZWQgeWV0OyBpdCBkb2VzIHdpdGggbV9sZW5ndGggZGVj
cmVtZW50IGJlbG93LgogICAgICAgICAgICAgbV9udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZFBy
aW9yVG9DdXJyZW50TGluZSA9IG51bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkKCkgKyAxOwogICAg
ICAgICB9CiAgICAgICAgIGlmICgtLW1fY3VycmVudFN0cmluZy5tX2xlbmd0aCA9PSAwKQogICAg
ICAgICAgICAgYWR2YW5jZVN1YnN0cmluZygpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
X2N1cnJlbnRTdHJpbmcuaW5jcmVtZW50QW5kR2V0Q3VycmVudENoYXIoKTsgLy8gT25seSBuZWVk
IHRoZSArKwotICAgIH0gZWxzZSBpZiAoIWlzQ29tcG9zaXRlKCkpIHsKLSAgICAgICAgbV9jdXJy
ZW50U3RyaW5nLmNsZWFyKCk7Ci0gICAgICAgIG1fZW1wdHkgPSB0cnVlOwotICAgICAgICBtX2Fk
dmFuY2VGdW5jID0gJlNlZ21lbnRlZFN0cmluZzo6YWR2YW5jZUVtcHR5OwotICAgICAgICBtX2Fk
dmFuY2VBbmRVcGRhdGVMaW5lTnVtYmVyRnVuYyA9ICZTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VF
bXB0eTsKICAgICB9Ci0KLSAgICBtX2N1cnJlbnRDaGFyID0gbV9jdXJyZW50U3RyaW5nLm1fbGVu
Z3RoID8gbV9jdXJyZW50U3RyaW5nLmdldEN1cnJlbnRDaGFyKCkgOiAwOwotfQotCi12b2lkIFNl
Z21lbnRlZFN0cmluZzo6YWR2YW5jZUVtcHR5KCkKLXsKLSAgICBBU1NFUlQoIW1fY3VycmVudFN0
cmluZy5tX2xlbmd0aCAmJiAhaXNDb21wb3NpdGUoKSk7Ci0gICAgbV9jdXJyZW50Q2hhciA9IDA7
CisgICAgbV9jdXJyZW50Q2hhciA9IG1fcHVzaGVkQ2hhcjEgPyAmbV9wdXNoZWRDaGFyMSA6IG1f
Y3VycmVudFN0cmluZy5tX2N1cnJlbnQ7CiB9CiAKIE9yZGluYWxOdW1iZXIgU2VnbWVudGVkU3Ry
aW5nOjpjdXJyZW50TGluZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9TZWdtZW50ZWRTdHJpbmcuaAppbmRleCAzNDAyNTBiZDIyNmMzYTk1YTgyOThlNGFmZTVjYTBi
MGRhODQ4ZDk1Li43NzdhNjVlN2FhMWY0NDU0MjZmNmM3MTYyZTJhOTRiYTI0YWIxNzI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmgKQEAgLTMz
LDMyICszMywyMCBAQCBjbGFzcyBTZWdtZW50ZWRTdWJzdHJpbmcgewogcHVibGljOgogICAgIFNl
Z21lbnRlZFN1YnN0cmluZygpCiAgICAgICAgIDogbV9sZW5ndGgoMCkKKyAgICAgICAgLCBtX2N1
cnJlbnQoMCkKICAgICAgICAgLCBtX2RvTm90RXhjbHVkZUxpbmVOdW1iZXJzKHRydWUpCi0gICAg
ICAgICwgbV9pczhCaXQoZmFsc2UpCiAgICAgewotICAgICAgICBtX2RhdGEuc3RyaW5nMTZQdHIg
PSAwOwogICAgIH0KIAogICAgIFNlZ21lbnRlZFN1YnN0cmluZyhjb25zdCBTdHJpbmcmIHN0cikK
ICAgICAgICAgOiBtX2xlbmd0aChzdHIubGVuZ3RoKCkpCi0gICAgICAgICwgbV9kb05vdEV4Y2x1
ZGVMaW5lTnVtYmVycyh0cnVlKQorICAgICAgICAsIG1fY3VycmVudChzdHIuaXNFbXB0eSgpID8g
MCA6IHN0ci5jaGFyYWN0ZXJzKCkpCiAgICAgICAgICwgbV9zdHJpbmcoc3RyKQorICAgICAgICAs
IG1fZG9Ob3RFeGNsdWRlTGluZU51bWJlcnModHJ1ZSkKICAgICB7Ci0gICAgICAgIGlmIChtX2xl
bmd0aCkgewotICAgICAgICAgICAgaWYgKG1fc3RyaW5nLmlzOEJpdCgpKSB7Ci0gICAgICAgICAg
ICAgICAgbV9pczhCaXQgPSB0cnVlOwotICAgICAgICAgICAgICAgIG1fZGF0YS5zdHJpbmc4UHRy
ID0gbV9zdHJpbmcuY2hhcmFjdGVyczgoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgbV9pczhCaXQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBtX2RhdGEuc3RyaW5n
MTZQdHIgPSBtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBtX2lzOEJpdCA9IGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQg
Y2xlYXIoKSB7IG1fbGVuZ3RoID0gMDsgbV9kYXRhLnN0cmluZzE2UHRyID0gMDsgbV9pczhCaXQg
PSBmYWxzZTt9Ci0gICAgCi0gICAgYm9vbCBpczhCaXQoKSB7IHJldHVybiBtX2lzOEJpdDsgfQor
ICAgIHZvaWQgY2xlYXIoKSB7IG1fbGVuZ3RoID0gMDsgbV9jdXJyZW50ID0gMDsgfQogICAgIAog
ICAgIGJvb2wgZXhjbHVkZUxpbmVOdW1iZXJzKCkgY29uc3QgeyByZXR1cm4gIW1fZG9Ob3RFeGNs
dWRlTGluZU51bWJlcnM7IH0KICAgICBib29sIGRvTm90RXhjbHVkZUxpbmVOdW1iZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9kb05vdEV4Y2x1ZGVMaW5lTnVtYmVyczsgfQpAQCAtNjksNzAgKzU3LDE5
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kVG8oU3RyaW5nQnVpbGRlciYgYnVpbGRlcikg
Y29uc3QKICAgICB7Ci0gICAgICAgIGludCBvZmZzZXQgPSBtX3N0cmluZy5sZW5ndGgoKSAtIG1f
bGVuZ3RoOwotCi0gICAgICAgIGlmICghb2Zmc2V0KSB7Ci0gICAgICAgICAgICBpZiAobV9sZW5n
dGgpCi0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcpOwotICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLnN1YnN0cmluZyhvZmZz
ZXQsIG1fbGVuZ3RoKSk7Ci0gICAgfQotCi0gICAgVUNoYXIgZ2V0Q3VycmVudENoYXI4KCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiAqbV9kYXRhLnN0cmluZzhQdHI7Ci0gICAgfQotCi0gICAgVUNo
YXIgZ2V0Q3VycmVudENoYXIxNigpCi0gICAgewotICAgICAgICByZXR1cm4gbV9kYXRhLnN0cmlu
ZzE2UHRyID8gKm1fZGF0YS5zdHJpbmcxNlB0ciA6IDA7Ci0gICAgfQotCi0gICAgVUNoYXIgaW5j
cmVtZW50QW5kR2V0Q3VycmVudENoYXI4KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2RhdGEu
c3RyaW5nOFB0cik7Ci0gICAgICAgIHJldHVybiAqKyttX2RhdGEuc3RyaW5nOFB0cjsKLSAgICB9
Ci0KLSAgICBVQ2hhciBpbmNyZW1lbnRBbmRHZXRDdXJyZW50Q2hhcjE2KCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChtX2RhdGEuc3RyaW5nMTZQdHIpOwotICAgICAgICByZXR1cm4gKisrbV9kYXRh
LnN0cmluZzE2UHRyOwotICAgIH0KLQotICAgIFN0cmluZyBjdXJyZW50U3ViU3RyaW5nKHVuc2ln
bmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIGludCBvZmZzZXQgPSBtX3N0cmluZy5sZW5ndGgo
KSAtIG1fbGVuZ3RoOwotICAgICAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG9mZnNldCwg
bGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIFVDaGFyIGdldEN1cnJlbnRDaGFy
KCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2xlbmd0aCk7Ci0gICAgICAgIGlmIChpczhCaXQo
KSkKLSAgICAgICAgICAgIHJldHVybiBnZXRDdXJyZW50Q2hhcjgoKTsKLSAgICAgICAgcmV0dXJu
IGdldEN1cnJlbnRDaGFyMTYoKTsKLSAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSBVQ2hh
ciBpbmNyZW1lbnRBbmRHZXRDdXJyZW50Q2hhcigpCi0gICAgewotICAgICAgICBBU1NFUlQobV9s
ZW5ndGgpOwotICAgICAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gaW5jcmVt
ZW50QW5kR2V0Q3VycmVudENoYXI4KCk7Ci0gICAgICAgIHJldHVybiBpbmNyZW1lbnRBbmRHZXRD
dXJyZW50Q2hhcjE2KCk7CisgICAgICAgIGlmIChtX3N0cmluZy5jaGFyYWN0ZXJzKCkgPT0gbV9j
dXJyZW50KQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmcobV9jdXJyZW50LCBtX2xlbmd0
aCkpOwogICAgIH0KIAogcHVibGljOgotICAgIHVuaW9uIHsKLSAgICAgICAgY29uc3QgTENoYXIq
IHN0cmluZzhQdHI7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBzdHJpbmcxNlB0cjsKLSAgICB9IG1f
ZGF0YTsKICAgICBpbnQgbV9sZW5ndGg7CisgICAgY29uc3QgVUNoYXIqIG1fY3VycmVudDsKIAog
cHJpdmF0ZToKLSAgICBib29sIG1fZG9Ob3RFeGNsdWRlTGluZU51bWJlcnM7Ci0gICAgYm9vbCBt
X2lzOEJpdDsKICAgICBTdHJpbmcgbV9zdHJpbmc7CisgICAgYm9vbCBtX2RvTm90RXhjbHVkZUxp
bmVOdW1iZXJzOwogfTsKIAogY2xhc3MgU2VnbWVudGVkU3RyaW5nIHsKQEAgLTE0NSw5ICs4Miw2
IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX251bWJlck9mQ2hhcmFjdGVyc0NvbnN1bWVkUHJpb3JU
b0N1cnJlbnRMaW5lKDApCiAgICAgICAgICwgbV9jdXJyZW50TGluZSgwKQogICAgICAgICAsIG1f
Y2xvc2VkKGZhbHNlKQotICAgICAgICAsIG1fZW1wdHkodHJ1ZSkKLSAgICAgICAgLCBtX2FkdmFu
Y2VGdW5jKCZTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VFbXB0eSkKLSAgICAgICAgLCBtX2FkdmFu
Y2VBbmRVcGRhdGVMaW5lTnVtYmVyRnVuYygmU2VnbWVudGVkU3RyaW5nOjphZHZhbmNlRW1wdHkp
CiAgICAgewogICAgIH0KIApAQCAtMTU1LDE2ICs4OSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIDog
bV9wdXNoZWRDaGFyMSgwKQogICAgICAgICAsIG1fcHVzaGVkQ2hhcjIoMCkKICAgICAgICAgLCBt
X2N1cnJlbnRTdHJpbmcoc3RyKQotICAgICAgICAsIG1fY3VycmVudENoYXIoMCkKKyAgICAgICAg
LCBtX2N1cnJlbnRDaGFyKG1fY3VycmVudFN0cmluZy5tX2N1cnJlbnQpCiAgICAgICAgICwgbV9u
dW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZFByaW9yVG9DdXJyZW50U3RyaW5nKDApCiAgICAgICAg
ICwgbV9udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZFByaW9yVG9DdXJyZW50TGluZSgwKQogICAg
ICAgICAsIG1fY3VycmVudExpbmUoMCkKICAgICAgICAgLCBtX2Nsb3NlZChmYWxzZSkKLSAgICAg
ICAgLCBtX2VtcHR5KCFzdHIubGVuZ3RoKCkpCiAgICAgewotICAgICAgICBpZiAobV9jdXJyZW50
U3RyaW5nLm1fbGVuZ3RoKQotICAgICAgICAgICAgbV9jdXJyZW50Q2hhciA9IG1fY3VycmVudFN0
cmluZy5nZXRDdXJyZW50Q2hhcigpOwotICAgICAgICB1cGRhdGVBZHZhbmNlRnVuY3Rpb25Qb2lu
dGVycygpOwogICAgIH0KIAogICAgIFNlZ21lbnRlZFN0cmluZyhjb25zdCBTZWdtZW50ZWRTdHJp
bmcmKTsKQEAgLTE4NCwxNSArMTE0LDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICgh
bV9wdXNoZWRDaGFyMSkgewogICAgICAgICAgICAgbV9wdXNoZWRDaGFyMSA9IGM7Ci0gICAgICAg
ICAgICBtX2N1cnJlbnRDaGFyID0gbV9wdXNoZWRDaGFyMSA/IG1fcHVzaGVkQ2hhcjEgOiBtX2N1
cnJlbnRTdHJpbmcuZ2V0Q3VycmVudENoYXIoKTsKLSAgICAgICAgICAgIHVwZGF0ZVNsb3dDYXNl
RnVuY3Rpb25Qb2ludGVycygpOworICAgICAgICAgICAgbV9jdXJyZW50Q2hhciA9IG1fcHVzaGVk
Q2hhcjEgPyAmbV9wdXNoZWRDaGFyMSA6IG1fY3VycmVudFN0cmluZy5tX2N1cnJlbnQ7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fcHVzaGVkQ2hhcjIpOwogICAgICAg
ICAgICAgbV9wdXNoZWRDaGFyMiA9IGM7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2VtcHR5OyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gIWN1cnJlbnQoKTsgfQogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0Owog
CiAgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VkOyB9CkBAIC0yMDMs
NDcgKzEzMiw2NiBAQCBwdWJsaWM6CiAgICAgICAgIE5vdEVub3VnaENoYXJhY3RlcnMsCiAgICAg
fTsKIAotICAgIExvb2tBaGVhZFJlc3VsdCBsb29rQWhlYWQoY29uc3QgU3RyaW5nJiBzdHJpbmcp
IHsgcmV0dXJuIGxvb2tBaGVhZElubGluZShzdHJpbmcsIHRydWUpOyB9Ci0gICAgTG9va0FoZWFk
UmVzdWx0IGxvb2tBaGVhZElnbm9yaW5nQ2FzZShjb25zdCBTdHJpbmcmIHN0cmluZykgeyByZXR1
cm4gbG9va0FoZWFkSW5saW5lKHN0cmluZywgZmFsc2UpOyB9Ci0KLSAgICBpbmxpbmUgdm9pZCBh
ZHZhbmNlKCkKLSAgICB7Ci0gICAgICAgICh0aGlzLT4qbV9hZHZhbmNlRnVuYykoKTsKLSAgICB9
CisgICAgTG9va0FoZWFkUmVzdWx0IGxvb2tBaGVhZChjb25zdCBTdHJpbmcmIHN0cmluZykgeyBy
ZXR1cm4gbG9va0FoZWFkSW5saW5lPFNlZ21lbnRlZFN0cmluZzo6ZXF1YWxzTGl0ZXJhbGx5Pihz
dHJpbmcpOyB9CisgICAgTG9va0FoZWFkUmVzdWx0IGxvb2tBaGVhZElnbm9yaW5nQ2FzZShjb25z
dCBTdHJpbmcmIHN0cmluZykgeyByZXR1cm4gbG9va0FoZWFkSW5saW5lPFNlZ21lbnRlZFN0cmlu
Zzo6ZXF1YWxzSWdub3JpbmdDYXNlPihzdHJpbmcpOyB9CiAKLSAgICBpbmxpbmUgdm9pZCBhZHZh
bmNlQW5kVXBkYXRlTGluZU51bWJlcigpCisgICAgdm9pZCBhZHZhbmNlKCkKICAgICB7Ci0gICAg
ICAgICh0aGlzLT4qbV9hZHZhbmNlQW5kVXBkYXRlTGluZU51bWJlckZ1bmMpKCk7CisgICAgICAg
IGlmICghbV9wdXNoZWRDaGFyMSAmJiBtX2N1cnJlbnRTdHJpbmcubV9sZW5ndGggPiAxKSB7Cisg
ICAgICAgICAgICAtLW1fY3VycmVudFN0cmluZy5tX2xlbmd0aDsKKyAgICAgICAgICAgIG1fY3Vy
cmVudENoYXIgPSArK21fY3VycmVudFN0cmluZy5tX2N1cnJlbnQ7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgYWR2YW5jZVNsb3dDYXNlKCk7CiAgICAgfQogCiAgICAg
dm9pZCBhZHZhbmNlQW5kQVNTRVJUKFVDaGFyIGV4cGVjdGVkQ2hhcmFjdGVyKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUX1VOVVNFRChleHBlY3RlZENoYXJhY3RlciwgY3VycmVudENoYXIoKSA9PSBl
eHBlY3RlZENoYXJhY3Rlcik7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoZXhwZWN0ZWRDaGFyYWN0
ZXIsICpjdXJyZW50KCkgPT0gZXhwZWN0ZWRDaGFyYWN0ZXIpOwogICAgICAgICBhZHZhbmNlKCk7
CiAgICAgfQogCiAgICAgdm9pZCBhZHZhbmNlQW5kQVNTRVJUSWdub3JpbmdDYXNlKFVDaGFyIGV4
cGVjdGVkQ2hhcmFjdGVyKQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChleHBlY3RlZENo
YXJhY3RlciwgV1RGOjpVbmljb2RlOjpmb2xkQ2FzZShjdXJyZW50Q2hhcigpKSA9PSBXVEY6OlVu
aWNvZGU6OmZvbGRDYXNlKGV4cGVjdGVkQ2hhcmFjdGVyKSk7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQoZXhwZWN0ZWRDaGFyYWN0ZXIsIFdURjo6VW5pY29kZTo6Zm9sZENhc2UoKmN1cnJlbnQoKSkg
PT0gV1RGOjpVbmljb2RlOjpmb2xkQ2FzZShleHBlY3RlZENoYXJhY3RlcikpOwogICAgICAgICBh
ZHZhbmNlKCk7CiAgICAgfQogCisgICAgdm9pZCBhZHZhbmNlUGFzdE5ld2xpbmVBbmRVcGRhdGVM
aW5lTnVtYmVyKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgqY3VycmVudCgpID09ICdcbicpOwor
ICAgICAgICBpZiAoIW1fcHVzaGVkQ2hhcjEgJiYgbV9jdXJyZW50U3RyaW5nLm1fbGVuZ3RoID4g
MSkgeworICAgICAgICAgICAgaW50IG5ld0xpbmVGbGFnID0gbV9jdXJyZW50U3RyaW5nLmRvTm90
RXhjbHVkZUxpbmVOdW1iZXJzKCk7CisgICAgICAgICAgICBtX2N1cnJlbnRMaW5lICs9IG5ld0xp
bmVGbGFnOworICAgICAgICAgICAgaWYgKG5ld0xpbmVGbGFnKQorICAgICAgICAgICAgICAgIG1f
bnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWRQcmlvclRvQ3VycmVudExpbmUgPSBudW1iZXJPZkNo
YXJhY3RlcnNDb25zdW1lZCgpICsgMTsKKyAgICAgICAgICAgIC0tbV9jdXJyZW50U3RyaW5nLm1f
bGVuZ3RoOworICAgICAgICAgICAgbV9jdXJyZW50Q2hhciA9ICsrbV9jdXJyZW50U3RyaW5nLm1f
Y3VycmVudDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhZHZhbmNl
QW5kVXBkYXRlTGluZU51bWJlclNsb3dDYXNlKCk7CisgICAgfQorICAgIAogICAgIHZvaWQgYWR2
YW5jZVBhc3ROb25OZXdsaW5lKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChjdXJyZW50Q2hhcigp
ICE9ICdcbicpOwotICAgICAgICBhZHZhbmNlKCk7CisgICAgICAgIEFTU0VSVCgqY3VycmVudCgp
ICE9ICdcbicpOworICAgICAgICBpZiAoIW1fcHVzaGVkQ2hhcjEgJiYgbV9jdXJyZW50U3RyaW5n
Lm1fbGVuZ3RoID4gMSkgeworICAgICAgICAgICAgLS1tX2N1cnJlbnRTdHJpbmcubV9sZW5ndGg7
CisgICAgICAgICAgICBtX2N1cnJlbnRDaGFyID0gKyttX2N1cnJlbnRTdHJpbmcubV9jdXJyZW50
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFkdmFuY2VTbG93Q2Fz
ZSgpOwogICAgIH0KLQotICAgIHZvaWQgYWR2YW5jZVBhc3ROZXdsaW5lQW5kVXBkYXRlTGluZU51
bWJlcigpCisgICAgCisgICAgdm9pZCBhZHZhbmNlQW5kVXBkYXRlTGluZU51bWJlcigpCiAgICAg
ewotICAgICAgICBBU1NFUlQoY3VycmVudENoYXIoKSA9PSAnXG4nKTsKICAgICAgICAgaWYgKCFt
X3B1c2hlZENoYXIxICYmIG1fY3VycmVudFN0cmluZy5tX2xlbmd0aCA+IDEpIHsKLSAgICAgICAg
ICAgIGludCBuZXdMaW5lRmxhZyA9IG1fY3VycmVudFN0cmluZy5kb05vdEV4Y2x1ZGVMaW5lTnVt
YmVycygpOworICAgICAgICAgICAgaW50IG5ld0xpbmVGbGFnID0gKCptX2N1cnJlbnRTdHJpbmcu
bV9jdXJyZW50ID09ICdcbicpICYgbV9jdXJyZW50U3RyaW5nLmRvTm90RXhjbHVkZUxpbmVOdW1i
ZXJzKCk7CiAgICAgICAgICAgICBtX2N1cnJlbnRMaW5lICs9IG5ld0xpbmVGbGFnOwogICAgICAg
ICAgICAgaWYgKG5ld0xpbmVGbGFnKQogICAgICAgICAgICAgICAgIG1fbnVtYmVyT2ZDaGFyYWN0
ZXJzQ29uc3VtZWRQcmlvclRvQ3VycmVudExpbmUgPSBudW1iZXJPZkNoYXJhY3RlcnNDb25zdW1l
ZCgpICsgMTsKLSAgICAgICAgICAgIGRlY3JlbWVudEFuZENoZWNrTGVuZ3RoKCk7Ci0gICAgICAg
ICAgICBtX2N1cnJlbnRDaGFyID0gbV9jdXJyZW50U3RyaW5nLmluY3JlbWVudEFuZEdldEN1cnJl
bnRDaGFyKCk7CisgICAgICAgICAgICAtLW1fY3VycmVudFN0cmluZy5tX2xlbmd0aDsKKyAgICAg
ICAgICAgIG1fY3VycmVudENoYXIgPSArK21fY3VycmVudFN0cmluZy5tX2N1cnJlbnQ7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYWR2YW5jZUFuZFVwZGF0ZUxpbmVO
dW1iZXJTbG93Q2FzZSgpOwpAQCAtMjY4LDcgKzIxNiw5IEBAIHB1YmxpYzoKIAogICAgIFN0cmlu
ZyB0b1N0cmluZygpIGNvbnN0OwogCi0gICAgVUNoYXIgY3VycmVudENoYXIoKSBjb25zdCB7IHJl
dHVybiBtX2N1cnJlbnRDaGFyOyB9ICAgIAorICAgIGNvbnN0IFVDaGFyJiBvcGVyYXRvciooKSBj
b25zdCB7IHJldHVybiAqY3VycmVudCgpOyB9CisgICAgY29uc3QgVUNoYXIqIG9wZXJhdG9yLT4o
KSBjb25zdCB7IHJldHVybiBjdXJyZW50KCk7IH0KKyAgICAKIAogICAgIC8vIFRoZSBtZXRob2Qg
aXMgbW9kZXJhdGVseSBzbG93LCBjb21wYXJpbmcgdG8gY3VycmVudExpbmUgbWV0aG9kLgogICAg
IE9yZGluYWxOdW1iZXIgY3VycmVudENvbHVtbigpIGNvbnN0OwpAQCAtMjgxLDY4ICsyMzEsMjcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcGVuZChjb25zdCBTZWdtZW50ZWRTdWJzdHJpbmcmKTsK
ICAgICB2b2lkIHByZXBlbmQoY29uc3QgU2VnbWVudGVkU3Vic3RyaW5nJik7CiAKLSAgICB2b2lk
IGFkdmFuY2U4KCk7Ci0gICAgdm9pZCBhZHZhbmNlMTYoKTsKLSAgICB2b2lkIGFkdmFuY2VBbmRV
cGRhdGVMaW5lTnVtYmVyOCgpOwotICAgIHZvaWQgYWR2YW5jZUFuZFVwZGF0ZUxpbmVOdW1iZXIx
NigpOwogICAgIHZvaWQgYWR2YW5jZVNsb3dDYXNlKCk7CiAgICAgdm9pZCBhZHZhbmNlQW5kVXBk
YXRlTGluZU51bWJlclNsb3dDYXNlKCk7Ci0gICAgdm9pZCBhZHZhbmNlRW1wdHkoKTsKICAgICB2
b2lkIGFkdmFuY2VTdWJzdHJpbmcoKTsKLSAgICAKLSAgICB2b2lkIHVwZGF0ZVNsb3dDYXNlRnVu
Y3Rpb25Qb2ludGVycygpCi0gICAgewotICAgICAgICBtX2FkdmFuY2VGdW5jID0gJlNlZ21lbnRl
ZFN0cmluZzo6YWR2YW5jZVNsb3dDYXNlOwotICAgICAgICBtX2FkdmFuY2VBbmRVcGRhdGVMaW5l
TnVtYmVyRnVuYyA9ICZTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VBbmRVcGRhdGVMaW5lTnVtYmVy
U2xvd0Nhc2U7Ci0gICAgfQorICAgIGNvbnN0IFVDaGFyKiBjdXJyZW50KCkgY29uc3QgeyByZXR1
cm4gbV9jdXJyZW50Q2hhcjsgfQogCi0gICAgdm9pZCBkZWNyZW1lbnRBbmRDaGVja0xlbmd0aCgp
Ci0gICAgewotICAgICAgICBBU1NFUlQobV9jdXJyZW50U3RyaW5nLm1fbGVuZ3RoID4gMSk7Ci0g
ICAgICAgIGlmICgtLW1fY3VycmVudFN0cmluZy5tX2xlbmd0aCA9PSAxKQotICAgICAgICAgICAg
dXBkYXRlU2xvd0Nhc2VGdW5jdGlvblBvaW50ZXJzKCk7Ci0gICAgfQorICAgIHN0YXRpYyBib29s
IGVxdWFsc0xpdGVyYWxseShjb25zdCBVQ2hhciogc3RyMSwgY29uc3QgVUNoYXIqIHN0cjIsIHNp
emVfdCBjb3VudCkgeyByZXR1cm4gIW1lbWNtcChzdHIxLCBzdHIyLCBjb3VudCAqIHNpemVvZihV
Q2hhcikpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWxzSWdub3JpbmdDYXNlKGNvbnN0IFVDaGFy
KiBzdHIxLCBjb25zdCBVQ2hhciogc3RyMiwgc2l6ZV90IGNvdW50KSB7IHJldHVybiAhV1RGOjpV
bmljb2RlOjp1bWVtY2FzZWNtcChzdHIxLCBzdHIyLCBjb3VudCk7IH0KIAotICAgIHZvaWQgdXBk
YXRlQWR2YW5jZUZ1bmN0aW9uUG9pbnRlcnMoKQotICAgIHsKLSAgICAgICAgaWYgKChtX2N1cnJl
bnRTdHJpbmcubV9sZW5ndGggPiAxKSAmJiAhbV9wdXNoZWRDaGFyMSkgewotICAgICAgICAgICAg
aWYgKG1fY3VycmVudFN0cmluZy5pczhCaXQoKSkgewotICAgICAgICAgICAgICAgIG1fYWR2YW5j
ZUZ1bmMgPSAmU2VnbWVudGVkU3RyaW5nOjphZHZhbmNlODsKLSAgICAgICAgICAgICAgICBpZiAo
bV9jdXJyZW50U3RyaW5nLmRvTm90RXhjbHVkZUxpbmVOdW1iZXJzKCkpCi0gICAgICAgICAgICAg
ICAgICAgIG1fYWR2YW5jZUFuZFVwZGF0ZUxpbmVOdW1iZXJGdW5jID0gJlNlZ21lbnRlZFN0cmlu
Zzo6YWR2YW5jZUFuZFVwZGF0ZUxpbmVOdW1iZXI4OwotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgbV9hZHZhbmNlQW5kVXBkYXRlTGluZU51bWJlckZ1bmMgPSAmU2Vn
bWVudGVkU3RyaW5nOjphZHZhbmNlODsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIG1fYWR2YW5jZUZ1bmMgPSAmU2VnbWVudGVkU3RyaW5nOjph
ZHZhbmNlMTY7Ci0gICAgICAgICAgICBpZiAobV9jdXJyZW50U3RyaW5nLmRvTm90RXhjbHVkZUxp
bmVOdW1iZXJzKCkpCi0gICAgICAgICAgICAgICAgbV9hZHZhbmNlQW5kVXBkYXRlTGluZU51bWJl
ckZ1bmMgPSAmU2VnbWVudGVkU3RyaW5nOjphZHZhbmNlQW5kVXBkYXRlTGluZU51bWJlcjE2Owot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fYWR2YW5jZUFuZFVwZGF0ZUxpbmVO
dW1iZXJGdW5jID0gJlNlZ21lbnRlZFN0cmluZzo6YWR2YW5jZTE2OwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFtX2N1cnJlbnRTdHJpbmcubV9sZW5ndGgg
JiYgIWlzQ29tcG9zaXRlKCkpIHsKLSAgICAgICAgICAgIG1fYWR2YW5jZUZ1bmMgPSAmU2VnbWVu
dGVkU3RyaW5nOjphZHZhbmNlRW1wdHk7Ci0gICAgICAgICAgICBtX2FkdmFuY2VBbmRVcGRhdGVM
aW5lTnVtYmVyRnVuYyA9ICZTZWdtZW50ZWRTdHJpbmc6OmFkdmFuY2VFbXB0eTsKLSAgICAgICAg
fQotCi0gICAgICAgIHVwZGF0ZVNsb3dDYXNlRnVuY3Rpb25Qb2ludGVycygpOwotICAgIH0KLQot
ICAgIGlubGluZSBMb29rQWhlYWRSZXN1bHQgbG9va0FoZWFkSW5saW5lKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBib29sIGNhc2VTZW5zaXRpdmUpCisgICAgdGVtcGxhdGU8Ym9vbCBlcXVhbHMoY29u
c3QgVUNoYXIqIHN0cjEsIGNvbnN0IFVDaGFyKiBzdHIyLCBzaXplX3QgY291bnQpPgorICAgIGlu
bGluZSBMb29rQWhlYWRSZXN1bHQgbG9va0FoZWFkSW5saW5lKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogICAgIHsKICAgICAgICAgaWYgKCFtX3B1c2hlZENoYXIxICYmIHN0cmluZy5sZW5ndGgoKSA8
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50U3RyaW5nLm1fbGVuZ3RoKSkgewotICAg
ICAgICAgICAgU3RyaW5nIGN1cnJlbnRTdWJzdHJpbmcgPSBtX2N1cnJlbnRTdHJpbmcuY3VycmVu
dFN1YlN0cmluZyhzdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICAgICAgaWYgKGN1cnJlbnRTdWJz
dHJpbmcuc3RhcnRzV2l0aChzdHJpbmcsIGNhc2VTZW5zaXRpdmUpKQorICAgICAgICAgICAgaWYg
KGVxdWFscyhzdHJpbmcuY2hhcmFjdGVycygpLCBtX2N1cnJlbnRTdHJpbmcubV9jdXJyZW50LCBz
dHJpbmcubGVuZ3RoKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBEaWRNYXRjaDsKICAgICAg
ICAgICAgIHJldHVybiBEaWROb3RNYXRjaDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbG9v
a0FoZWFkU2xvd0Nhc2Uoc3RyaW5nLCBjYXNlU2Vuc2l0aXZlKTsKKyAgICAgICAgcmV0dXJuIGxv
b2tBaGVhZFNsb3dDYXNlPGVxdWFscz4oc3RyaW5nKTsKICAgICB9Ci0gICAgCi0gICAgTG9va0Fo
ZWFkUmVzdWx0IGxvb2tBaGVhZFNsb3dDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGNh
c2VTZW5zaXRpdmUpCisKKyAgICB0ZW1wbGF0ZTxib29sIGVxdWFscyhjb25zdCBVQ2hhciogc3Ry
MSwgY29uc3QgVUNoYXIqIHN0cjIsIHNpemVfdCBjb3VudCk+CisgICAgTG9va0FoZWFkUmVzdWx0
IGxvb2tBaGVhZFNsb3dDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKICAgICAgICAg
dW5zaWduZWQgY291bnQgPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgICAgIGlmIChjb3VudCA+IGxl
bmd0aCgpKQpAQCAtMzUxLDcgKzI2MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFN0cmluZyBjb25z
dW1lZFN0cmluZyA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChjb3VudCwgY29uc3VtZWRD
aGFyYWN0ZXJzKTsKICAgICAgICAgYWR2YW5jZShjb3VudCwgY29uc3VtZWRDaGFyYWN0ZXJzKTsK
ICAgICAgICAgTG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IERpZE5vdE1hdGNoOwotICAgICAgICBp
ZiAoY29uc3VtZWRTdHJpbmcuc3RhcnRzV2l0aChzdHJpbmcsIGNhc2VTZW5zaXRpdmUpKQorICAg
ICAgICBpZiAoZXF1YWxzKHN0cmluZy5jaGFyYWN0ZXJzKCksIGNvbnN1bWVkQ2hhcmFjdGVycywg
Y291bnQpKQogICAgICAgICAgICAgcmVzdWx0ID0gRGlkTWF0Y2g7CiAgICAgICAgIHByZXBlbmQo
U2VnbWVudGVkU3RyaW5nKGNvbnN1bWVkU3RyaW5nKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CkBAIC0zNjIsMTUgKzI3MSwxMiBAQCBwcml2YXRlOgogICAgIFVDaGFyIG1fcHVzaGVkQ2hhcjE7
CiAgICAgVUNoYXIgbV9wdXNoZWRDaGFyMjsKICAgICBTZWdtZW50ZWRTdWJzdHJpbmcgbV9jdXJy
ZW50U3RyaW5nOwotICAgIFVDaGFyIG1fY3VycmVudENoYXI7CisgICAgY29uc3QgVUNoYXIqIG1f
Y3VycmVudENoYXI7CiAgICAgaW50IG1fbnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWRQcmlvclRv
Q3VycmVudFN0cmluZzsKICAgICBpbnQgbV9udW1iZXJPZkNoYXJhY3RlcnNDb25zdW1lZFByaW9y
VG9DdXJyZW50TGluZTsKICAgICBpbnQgbV9jdXJyZW50TGluZTsKICAgICBEZXF1ZTxTZWdtZW50
ZWRTdWJzdHJpbmc+IG1fc3Vic3RyaW5nczsKICAgICBib29sIG1fY2xvc2VkOwotICAgIGJvb2wg
bV9lbXB0eTsKLSAgICB2b2lkIChTZWdtZW50ZWRTdHJpbmc6OiptX2FkdmFuY2VGdW5jKSgpOwot
ICAgIHZvaWQgKFNlZ21lbnRlZFN0cmluZzo6Km1fYWR2YW5jZUFuZFVwZGF0ZUxpbmVOdW1iZXJG
dW5jKSgpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9D
aGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVNZXRob2RzLmggYi9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL0NoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaAppbmRleCA5
MmRmNjM2MWNjZDYwOGU0YmY5OGQwNTI4N2QzMGE1NmVjNjIzYzAzLi5kODNjZWNiNmVjMjc2Yjhj
OTVhMWNjODY4NzM1ZmE2MWNlNThiZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL0NoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhvZHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL0NoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZU1ldGhv
ZHMuaApAQCAtNjgsNyArNjgsNyBAQCBib29sIGNvbnN1bWVDaGFyYWN0ZXJSZWZlcmVuY2UoU2Vn
bWVudGVkU3RyaW5nJiBzb3VyY2UsIFN0cmluZ0J1aWxkZXImIGRlY29kZWRDaAogICAgIFN0cmlu
Z0J1aWxkZXIgY29uc3VtZWRDaGFyYWN0ZXJzOwogICAgIAogICAgIHdoaWxlICghc291cmNlLmlz
RW1wdHkoKSkgewotICAgICAgICBVQ2hhciBjYyA9IHNvdXJjZS5jdXJyZW50Q2hhcigpOworICAg
ICAgICBVQ2hhciBjYyA9ICpzb3VyY2U7CiAgICAgICAgIHN3aXRjaCAoZW50aXR5U3RhdGUpIHsK
ICAgICAgICAgY2FzZSBJbml0aWFsOiB7CiAgICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8
IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnIHx8IGNjID09ICc8JyB8
fCBjYyA9PSAnJicpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL01hcmt1
cFRva2VuaXplckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5p
emVyQmFzZS5oCmluZGV4IDkzYTBlZDU4MGU3MmQwODc5Nzk2ZTg0Y2UwNmU5OWZiNDM4ZWQxMzAu
LjBhM2NhZGFmZmExOTc4YjI0M2FkYjcxZTM1YTdhYzA5OWRmMmQyMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVyQmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvTWFya3VwVG9rZW5pemVyQmFzZS5oCkBAIC02Niw3ICs2Niw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgQUxXQVlTX0lO
TElORSBVQ2hhciBuZXh0SW5wdXRDaGFyYWN0ZXIoKSBjb25zdCB7IHJldHVybiBtX25leHRJbnB1
dENoYXJhY3RlcjsgfQorICAgICAgICBVQ2hhciBuZXh0SW5wdXRDaGFyYWN0ZXIoKSBjb25zdCB7
IHJldHVybiBtX25leHRJbnB1dENoYXJhY3RlcjsgfQogCiAgICAgICAgIC8vIFJldHVybnMgd2hl
dGhlciB3ZSBzdWNjZWVkZWQgaW4gcGVla2luZyBhdCB0aGUgbmV4dCBjaGFyYWN0ZXIuCiAgICAg
ICAgIC8vIFRoZSBvbmx5IHdheSB3ZSBjYW4gZmFpbCB0byBwZWVrIGlzIGlmIHRoZXJlIGFyZSBu
byBtb3JlCkBAIC03NCw3ICs3NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgQUxXQVlTX0lOTElO
RSBib29sIHBlZWsoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAgICAgICAgIHsKICAgICAgICAg
UGVla0FnYWluOgotICAgICAgICAgICAgbV9uZXh0SW5wdXRDaGFyYWN0ZXIgPSBzb3VyY2UuY3Vy
cmVudENoYXIoKTsKKyAgICAgICAgICAgIG1fbmV4dElucHV0Q2hhcmFjdGVyID0gKnNvdXJjZTsK
IAogICAgICAgICAgICAgLy8gRXZlcnkgYnJhbmNoIGluIHRoaXMgZnVuY3Rpb24gaXMgZXhwZW5z
aXZlLCBzbyB3ZSBoYXZlIGEKICAgICAgICAgICAgIC8vIGZhc3QtcmVqZWN0IGJyYW5jaCBmb3Ig
Y2hhcmFjdGVycyB0aGF0IGRvbid0IHJlcXVpcmUgc3BlY2lhbApAQCAtOTEsNyArOTEsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VQYXN0TmV3bGluZUFuZFVw
ZGF0ZUxpbmVOdW1iZXIoKTsKICAgICAgICAgICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIG1fbmV4
dElucHV0Q2hhcmFjdGVyID0gc291cmNlLmN1cnJlbnRDaGFyKCk7CisgICAgICAgICAgICAgICAg
bV9uZXh0SW5wdXRDaGFyYWN0ZXIgPSAqc291cmNlOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKG1fbmV4dElucHV0Q2hhcmFjdGVyID09ICdccicpIHsKICAgICAgICAgICAgICAgICBt
X25leHRJbnB1dENoYXJhY3RlciA9ICdcbic7CkBAIC0xMTYsNyArMTE2LDcgQEAgcHJvdGVjdGVk
OgogICAgICAgICB9CiAKICAgICAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZXJlIGFyZSBtb3Jl
IGNoYXJhY3RlcnMgaW4gfHNvdXJjZXwgYWZ0ZXIgYWR2YW5jaW5nLgotICAgICAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgYWR2YW5jZShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKKyAgICAgICAgYm9v
bCBhZHZhbmNlKFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQogICAgICAgICB7CiAgICAgICAgICAg
ICBzb3VyY2UuYWR2YW5jZUFuZFVwZGF0ZUxpbmVOdW1iZXIoKTsKICAgICAgICAgICAgIGlmIChz
b3VyY2UuaXNFbXB0eSgpKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>