<?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>88791</bug_id>
          
          <creation_ts>2012-06-11 11:00:28 -0700</creation_ts>
          <short_desc>Web Inspector: use jsdifflib for revision diff calculation.</short_desc>
          <delta_ts>2012-06-12 09:44:58 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>646102</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-06-11 11:00:28 -0700</bug_when>
    <thetext>Present diff calculation is incomplete, it does not properly handle the following case:
    [a, b, c, d, e, f, g, h] =&gt; [c, d, e, f, g, h, a, b]

It detects [a, b] as the lcs.

I imported jsdifflib from https://github.com/cemerick/jsdifflib. It has BSD license that is compatible with WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646108</commentid>
    <comment_count>1</comment_count>
      <attachid>146877</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-06-11 11:11:54 -0700</bug_when>
    <thetext>Created attachment 146877
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647015</commentid>
    <comment_count>2</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-06-12 09:44:58 -0700</bug_when>
    <thetext>Committed r120085: &lt;http://trac.webkit.org/changeset/120085&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146877</attachid>
            <date>2012-06-11 11:11:54 -0700</date>
            <delta_ts>2012-06-12 09:03:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88791-20120611221148.patch</filename>
            <type>text/plain</type>
            <size>28274</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5ODk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNjN2UzZGNlOGNlMDIz
NzkxZTJmM2UzZjQxZmQ4ZWIwYjc5OGU5Zi4uZTAzYWIzZWJhY2JjOWU5OWY4NzBmM2NhNDM3YTY5
Yjg3ODE2ODhlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA2LTExICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHVzZSBqc2RpZmZsaWIgZm9yIHJldmlzaW9uIGRpZmYgY2FsY3VsYXRpb24uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODc5MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXNlbnQgZGlmZiBjYWxj
dWxhdGlvbiBpcyBpbmNvbXBsZXRlLCBpdCBkb2VzIG5vdCBwcm9wZXJseSBoYW5kbGUgdGhlIGZv
bGxvd2luZyBjYXNlOgorICAgICAgICAgICAgW2EsIGIsIGMsIGQsIGUsIGYsIGcsIGhdID0+IFtj
LCBkLCBlLCBmLCBnLCBoLCBhLCBiXQorICAgICAgICBXZSBzaG91bGQgbm90IGJlIGltcGxlbWVu
dGluZyBkaWZmIGJ5IG91cnNlbHZlcy4gSSBpbXBvcnRlZCBqc2RpZmZsaWIgZnJvbQorICAgICAg
ICBodHRwczovL2dpdGh1Yi5jb20vY2VtZXJpY2svanNkaWZmbGliLiBJdCBoYXMgQlNEIGxpY2Vu
c2UgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggV2ViS2l0LgorCisgICAgICAgICogV2ViQ29yZS5n
eXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvUmV2aXNpb25IaXN0b3J5Vmlldy5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXZpc2lvbkhpc3RvcnlUcmVlRWxlbWVudC5wcm90b3R5cGUub25leHBhbmQu
c3RlcDIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJldmlzaW9uSGlzdG9yeVRyZWVFbGVtZW50
LnByb3RvdHlwZS5vbmV4cGFuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmV2aXNpb25IaXN0
b3J5VHJlZUVsZW1lbnQucHJvdG90eXBlLl9jcmVhdGVMaW5lLmFwcGVuZExpbmVOdW1iZXIpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJldmlzaW9uSGlzdG9yeVRyZWVFbGVtZW50LnByb3RvdHlw
ZS5fY3JlYXRlTGluZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJj
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qczoKKyAgICAgICAgKGRp
ZmZsaWIuc3RyaW5nQXNMaW5lcyk6CisgICAgICAgIChkaWZmbGliLlNlcXVlbmNlTWF0Y2hlcik6
CisgICAgICAgIChkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci5wcm90b3R5cGUuZ2V0X29wY29kZXMp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9qc2RpZmZsaWIuanM6IEFkZGVkLgorICAgICAgICAoZGlm
ZmxpYi5kZWZhdWx0SnVua0Z1bmN0aW9uKToKKyAgICAgICAgKGRpZmZsaWIuc3RyaXBMaW5lYnJl
YWtzKToKKyAgICAgICAgKGRpZmZsaWIuc3RyaW5nQXNMaW5lcyk6CisgICAgICAgIChkaWZmbGli
Ll9fcmVkdWNlKToKKyAgICAgICAgKGRpZmZsaWIuX19udHVwbGVjb21wKToKKyAgICAgICAgKGRp
ZmZsaWIuX19jYWxjdWxhdGVfcmF0aW8pOgorICAgICAgICAoZGlmZmxpYi5fX2RpY3RnZXQpOgor
ICAgICAgICAoZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIudGhpcy5zZXRfc2Vxcyk6CisgICAgICAg
IChkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci50aGlzLnNldF9zZXExKToKKyAgICAgICAgKGRpZmZs
aWIuU2VxdWVuY2VNYXRjaGVyLnRoaXMuc2V0X3NlcTIpOgorICAgICAgICAoZGlmZmxpYi5TZXF1
ZW5jZU1hdGNoZXIudGhpcy5fX2NoYWluX2IpOgorICAgICAgICAoZGlmZmxpYi5TZXF1ZW5jZU1h
dGNoZXIudGhpcy5maW5kX2xvbmdlc3RfbWF0Y2gpOgorICAgICAgICAoZGlmZmxpYi5TZXF1ZW5j
ZU1hdGNoZXIudGhpcy5nZXRfbWF0Y2hpbmdfYmxvY2tzKToKKyAgICAgICAgKGRpZmZsaWIuU2Vx
dWVuY2VNYXRjaGVyLnRoaXMuZ2V0X29wY29kZXMpOgorICAgICAgICAoZGlmZmxpYi5TZXF1ZW5j
ZU1hdGNoZXIudGhpcy5nZXRfZ3JvdXBlZF9vcGNvZGVzKToKKyAgICAgICAgKGRpZmZsaWIuU2Vx
dWVuY2VNYXRjaGVyLnRoaXMucXVpY2tfcmF0aW8pOgorICAgICAgICAoZGlmZmxpYi5TZXF1ZW5j
ZU1hdGNoZXIudGhpcy5yZWFsX3F1aWNrX3JhdGlvKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL3JldmlzaW9uSGlzdG9yeS5jc3M6CisgICAgICAgICgucmV2aXNpb24taGlzdG9yeS1s
aW5lLXNlcGFyYXRvciAud2Via2l0LWxpbmUtbnVtYmVyKToKKwogMjAxMi0wNi0wOSAgRXVnZW5l
IEtseXVjaG5pa292ICA8ZXVzdGFzLmJ1Z0BnbWFpbC5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogQWRkIG1lc3NhZ2UgbG9vcCBpbnN0cnVtZW50YXRpb24gdG8gcHVibGljIEFQSSBhbmQg
dGltZWxpbmUgYWdlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA1NGQ0YjU1NjYxNGZmNGFmOWRlNDMy
MjRjYWYxMGYxMDM2N2U5Y2E3Li4xYjZmNTVjNTExMTQ4NmYzNzAxZDM3MTgzZmJhZDdkM2IzZTBl
OTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02NDMzLDYgKzY0MzMsNyBAQAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdEZvcm1hdHRlci5qcycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlLmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFtZS5qcycsCisgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9qc2RpZmZsaWIuanMnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcycsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL2Zyb250LWVuZC9MaW5raWZpZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qcycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGY5MTA5N2VjNDI2MDliYTMzOTIwMmFlODY3MGRm
N2U1ZjlmYjBjYjYuLjliY2Y5ZTYxOGRmYTFhOWY1NzY5ODQxN2Q5ODRmZDQ4MmQ4OTI0OTggMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03NDc1
OCw2ICs3NDc1OCwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxqc2RpZmZsaWIuanMiCisJCQkJCT4K
KwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3Jc
ZnJvbnQtZW5kXEtleWJvYXJkU2hvcnRjdXQuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JldmlzaW9uSGlzdG9y
eVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JldmlzaW9uSGlz
dG9yeVZpZXcuanMKaW5kZXggZmI1YzY0YjEwMjhhYjNiNDZhNDZlMGZhOTcyMzMwNDMwOTBhZTA2
MS4uNTgxYmFiZjUwOTRhODA4MGNlNzVhNmRkN2E5MGI5ODk4ZTZlZGJlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXZpc2lvbkhpc3RvcnlWaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmV2aXNpb25IaXN0b3J5
Vmlldy5qcwpAQCAtMTYxLDEwNCArMTYxLDc5IEBAIFdlYkluc3BlY3Rvci5SZXZpc2lvbkhpc3Rv
cnlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9yZXZpc2lvbi5y
ZXF1ZXN0Q29udGVudChzdGVwMi5iaW5kKHRoaXMsIGJhc2VDb250ZW50KSk7CiAgICAgICAgIH0K
IAotICAgICAgICBmdW5jdGlvbiBzdGVwMihiYXNlQ29udGVudCwgcmV2aXNpb25Db250ZW50KQor
ICAgICAgICBmdW5jdGlvbiBzdGVwMihiYXNlQ29udGVudCwgbmV3Q29udGVudCkKICAgICAgICAg
ewotICAgICAgICAgICAgdmFyIG9sZExpbmVzID0gYmFzZUNvbnRlbnQuc3BsaXQoL1xyP1xuLyk7
Ci0gICAgICAgICAgICB2YXIgbmV3TGluZXMgPSByZXZpc2lvbkNvbnRlbnQuc3BsaXQoL1xyP1xu
Lyk7Ci0gICAgICAgICAgICB2YXIgZGlmZkRhdGEgPSB0aGlzLl9kaWZmKG9sZExpbmVzLCBuZXdM
aW5lcyk7Ci0KLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlmZkRhdGEuYWRkZWQu
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgbGluZU51bWJlciA9IGRpZmZEYXRh
LmFkZGVkW2ldOwotICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUxpbmUobGluZU51bWJlciwg
bmV3TGluZXNbbGluZU51bWJlcl0sICJhZGRlZCIpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpZmZEYXRhLnJlbW92ZWQubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgICAgICB2YXIgbGluZU51bWJlciA9IGRpZmZEYXRhLnJlbW92ZWRbaV07Ci0g
ICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlTGluZShsaW5lTnVtYmVyLCBvbGRMaW5lc1tsaW5l
TnVtYmVyXSwgInJlbW92ZWQiKTsKKyAgICAgICAgICAgIHZhciBiYXNlTGluZXMgPSBkaWZmbGli
LnN0cmluZ0FzTGluZXMoYmFzZUNvbnRlbnQpOworICAgICAgICAgICAgdmFyIG5ld0xpbmVzID0g
ZGlmZmxpYi5zdHJpbmdBc0xpbmVzKG5ld0NvbnRlbnQpOworICAgICAgICAgICAgdmFyIHNtID0g
bmV3IGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyKGJhc2VMaW5lcywgbmV3TGluZXMpOworICAgICAg
ICAgICAgdmFyIG9wY29kZXMgPSBzbS5nZXRfb3Bjb2RlcygpOworICAgICAgICAgICAgdmFyIGxh
c3RXYXNTZXBhcmF0b3IgPSBmYWxzZTsKKworICAgICAgICAgICAgZm9yICh2YXIgaWR4ID0gMDsg
aWR4IDwgb3Bjb2Rlcy5sZW5ndGg7IGlkeCsrKSB7CisgICAgICAgICAgICAgICAgdmFyIGNvZGUg
PSBvcGNvZGVzW2lkeF07CisgICAgICAgICAgICAgICAgdmFyIGNoYW5nZSA9IGNvZGVbMF07Cisg
ICAgICAgICAgICAgICAgdmFyIGIgPSBjb2RlWzFdOworICAgICAgICAgICAgICAgIHZhciBiZSA9
IGNvZGVbMl07CisgICAgICAgICAgICAgICAgdmFyIG4gPSBjb2RlWzNdOworICAgICAgICAgICAg
ICAgIHZhciBuZSA9IGNvZGVbNF07CisgICAgICAgICAgICAgICAgdmFyIHJvd0NvdW50ID0gTWF0
aC5tYXgoYmUgLSBiLCBuZSAtIG4pOworICAgICAgICAgICAgICAgIHZhciB0b3BSb3dzID0gW107
CisgICAgICAgICAgICAgICAgdmFyIGJvdHRvbVJvd3MgPSBbXTsKKyAgICAgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHJvd0NvdW50OyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGNoYW5nZSA9PT0gImRlbGV0ZSIgfHwgKGNoYW5nZSA9PT0gInJlcGxhY2UiICYmIGIgPCBi
ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsaW5lTnVtYmVyID0gYisrOworICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlTGluZShsaW5lTnVtYmVyLCBudWxsLCBi
YXNlTGluZXNbbGluZU51bWJlcl0sICJyZW1vdmVkIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBsYXN0V2FzU2VwYXJhdG9yID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgICAgICBpZiAoY2hhbmdlID09PSAiaW5zZXJ0IiB8fCAoY2hhbmdlID09PSAi
cmVwbGFjZSIgJiYgbiA8IG5lKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxpbmVO
dW1iZXIgPSBuKys7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVMaW5lKG51
bGwsIGxpbmVOdW1iZXIsIG5ld0xpbmVzW2xpbmVOdW1iZXJdLCAiYWRkZWQiKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGxhc3RXYXNTZXBhcmF0b3IgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChjaGFuZ2UgPT09ICJlcXVhbCIpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGIrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIG4r
KzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFzdFdhc1NlcGFyYXRvcikKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVMaW5lKG51bGwsIG51bGwsICIgICAg
XHUyMDI2IiwgInNlcGFyYXRvciIpOworICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFdhc1Nl
cGFyYXRvciA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBh
cmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAgICAgKiBAcGFyYW0gez9udW1iZXJ9IGJhc2VMaW5l
TnVtYmVyCisgICAgICogQHBhcmFtIHs/bnVtYmVyfSBuZXdMaW5lTnVtYmVyCiAgICAgICogQHBh
cmFtIHtzdHJpbmd9IGxpbmVDb250ZW50CiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGNoYW5nZVR5
cGUKICAgICAgKi8KLSAgICBfY3JlYXRlTGluZTogZnVuY3Rpb24obGluZU51bWJlciwgbGluZUNv
bnRlbnQsIGNoYW5nZVR5cGUpCisgICAgX2NyZWF0ZUxpbmU6IGZ1bmN0aW9uKGJhc2VMaW5lTnVt
YmVyLCBuZXdMaW5lTnVtYmVyLCBsaW5lQ29udGVudCwgY2hhbmdlVHlwZSkKICAgICB7CiAgICAg
ICAgIHZhciBjaGlsZCA9IG5ldyBUcmVlRWxlbWVudCgiIiwgbnVsbCwgZmFsc2UpOwogICAgICAg
ICBjaGlsZC5zZWxlY3RhYmxlID0gZmFsc2U7CiAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoY2hp
bGQpOwogICAgICAgICB2YXIgbGluZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
cGFuIik7Ci0gICAgICAgIHZhciBudW1iZXJTdHJpbmcgPSBudW1iZXJUb1N0cmluZ1dpdGhTcGFj
ZXNQYWRkaW5nKGxpbmVOdW1iZXIgKyAxLCA0KTsKLSAgICAgICAgdmFyIGxpbmVOdW1iZXJTcGFu
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICBsaW5lTnVtYmVyU3Bh
bi5hZGRTdHlsZUNsYXNzKCJ3ZWJraXQtbGluZS1udW1iZXIiKTsKLSAgICAgICAgbGluZU51bWJl
clNwYW4udGV4dENvbnRlbnQgPSBudW1iZXJTdHJpbmc7Ci0gICAgICAgIGNoaWxkLmxpc3RJdGVt
RWxlbWVudC5hcHBlbmRDaGlsZChsaW5lTnVtYmVyU3Bhbik7CisKKyAgICAgICAgZnVuY3Rpb24g
YXBwZW5kTGluZU51bWJlcihsaW5lTnVtYmVyKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
bnVtYmVyU3RyaW5nID0gbGluZU51bWJlciAhPT0gbnVsbCA/IG51bWJlclRvU3RyaW5nV2l0aFNw
YWNlc1BhZGRpbmcobGluZU51bWJlciArIDEsIDQpIDogIiAgICAiOworICAgICAgICAgICAgdmFy
IGxpbmVOdW1iZXJTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAg
ICAgICAgbGluZU51bWJlclNwYW4uYWRkU3R5bGVDbGFzcygid2Via2l0LWxpbmUtbnVtYmVyIik7
CisgICAgICAgICAgICBsaW5lTnVtYmVyU3Bhbi50ZXh0Q29udGVudCA9IG51bWJlclN0cmluZzsK
KyAgICAgICAgICAgIGNoaWxkLmxpc3RJdGVtRWxlbWVudC5hcHBlbmRDaGlsZChsaW5lTnVtYmVy
U3Bhbik7CisgICAgICAgIH0KKworICAgICAgICBhcHBlbmRMaW5lTnVtYmVyKGJhc2VMaW5lTnVt
YmVyKTsKKyAgICAgICAgYXBwZW5kTGluZU51bWJlcihuZXdMaW5lTnVtYmVyKTsKIAogICAgICAg
ICB2YXIgY29udGVudFNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAg
ICAgIGNvbnRlbnRTcGFuLnRleHRDb250ZW50ID0gbGluZUNvbnRlbnQ7CiAgICAgICAgIGNoaWxk
Lmxpc3RJdGVtRWxlbWVudC5hcHBlbmRDaGlsZChjb250ZW50U3Bhbik7CiAgICAgICAgIGNoaWxk
Lmxpc3RJdGVtRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJyZXZpc2lvbi1oaXN0b3J5LWxpbmUiKTsK
ICAgICAgICAgY2hpbGQubGlzdEl0ZW1FbGVtZW50LmFkZFN0eWxlQ2xhc3MoInJldmlzaW9uLWhp
c3RvcnktbGluZS0iICsgY2hhbmdlVHlwZSk7Ci0gICAgfSwKLQotICAgIF9kaWZmOiBmdW5jdGlv
bih4LCB5KQotICAgIHsKLSAgICAgICAgdmFyIHN5bWJvbHMgPSB7fTsKLSAgICAgICAgdmFyIHIg
PSAwLCBwID0gMDsKLSAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwotCi0gICAgICAgIHZhciBwMSA9
IHBvcHN5bSgwKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7
Ci0gICAgICAgICAgICBwID0gciA9PT0gcCA/IHAxIDogcG9wc3ltKGkpOwotICAgICAgICAgICAg
cDEgPSBwb3BzeW0oaSArIDEpOwotCi0gICAgICAgICAgICB2YXIgaWR4OwotICAgICAgICAgICAg
aWYgKHAgPiBwMSkgewotICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgICAgICBpZHgg
PSBwMTsKLSAgICAgICAgICAgICAgICBkZWxldGUgc3ltYm9sc1t5W3BdXTsKLSAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgIGlkeCA9IHA7Ci0KLSAgICAgICAgICAgIGlmIChpZHgg
PT09IHkubGVuZ3RoKQotICAgICAgICAgICAgICAgIHAgPSBwb3BzeW0oaSk7Ci0gICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICByID0gaWR4OwotICAgICAgICAgICAgICAgIHJlc3Vs
dC5wdXNoKFtpLCByXSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIg
cmVtb3ZlZCA9IFtdOwotICAgICAgICB2YXIgYWRkZWQgPSBbXTsKLSAgICAgICAgdmFyIGl4ID0g
MDsKLSAgICAgICAgdmFyIGl5ID0gMDsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1
bHQubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGZvciAodmFyIGogPSBpeDsgaiA8IHJlc3Vs
dFtpXVswXTsgKytqKQotICAgICAgICAgICAgICAgIHJlbW92ZWQucHVzaChqKTsKLSAgICAgICAg
ICAgIGl4ID0gcmVzdWx0W2ldWzBdICsgMTsKLSAgICAgICAgICAgIGZvciAodmFyIGogPSBpeTsg
aiA8IHJlc3VsdFtpXVsxXTsgKytqKQotICAgICAgICAgICAgICAgIGFkZGVkLnB1c2goaik7Ci0g
ICAgICAgICAgICBpeSA9IHJlc3VsdFtpXVsxXSArIDE7Ci0gICAgICAgIH0KLSAgICAgICAgZm9y
ICh2YXIgaiA9IGl4ICsgMTsgaiA8IHgubGVuZ3RoOyArK2opCi0gICAgICAgICAgICByZW1vdmVk
LnB1c2goaik7Ci0gICAgICAgIGZvciAodmFyIGogPSBpeSArIDE7IGogPCB5Lmxlbmd0aDsgKytq
KQotICAgICAgICAgICAgYWRkZWQucHVzaChqKTsKLQotICAgICAgICByZXR1cm4geyByZW1vdmVk
OiByZW1vdmVkLCBhZGRlZDogYWRkZWQgfTsKLQotICAgICAgICBmdW5jdGlvbiBwb3BzeW0oaW5k
ZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBzID0geFtpbmRleF07Ci0gICAgICAgICAg
ICB2YXIgcG9zID0gc3ltYm9sc1tzXSArIDE7Ci0gICAgICAgICAgICBwb3MgPSB5LmluZGV4T2Yo
cywgcG9zID4gciA/IHBvcyA6IHIpOwotICAgICAgICAgICAgaWYgKHBvcyA9PT0gLTEpCi0gICAg
ICAgICAgICAgICAgcG9zID0geS5sZW5ndGg7Ci0gICAgICAgICAgICBzeW1ib2xzW3NdID0gcG9z
OwotICAgICAgICAgICAgcmV0dXJuIHBvczsKLSAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IDFkYjgwNjMw
ODQzODAyZmMxNGM4MDE2ZWM4NmJkMDlhNjYyMzVhMzIuLjI2ZTRhNGYyYTU3NTBjMDQ3YWNkMDAz
ZjQ5MTU0Njc0ZjE0NGRkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1dlYktpdC5xcmMKQEAgLTg2LDYgKzg2LDcgQEAKICAgICA8ZmlsZT5KYXZhU2NyaXB0Rm9y
bWF0dGVyLmpzPC9maWxlPgogICAgIDxmaWxlPkphdmFTY3JpcHRTb3VyY2UuanM8L2ZpbGU+CiAg
ICAgPGZpbGU+SmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpzPC9maWxlPgorICAgIDxmaWxlPmpzZGlm
ZmxpYi5qczwvZmlsZT4KICAgICA8ZmlsZT5LZXlib2FyZFNob3J0Y3V0LmpzPC9maWxlPgogICAg
IDxmaWxlPkxpbmtpZmllci5qczwvZmlsZT4KICAgICA8ZmlsZT5NZW1vcnlTdGF0aXN0aWNzLmpz
PC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9l
eHRlcm5zLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpz
CmluZGV4IGY3MDU1YzJmYzg5OWZlNjU2YjJhOGU1MzExZTdiY2VjMjVjYjg5MjguLmNmYzZlZTY3
ZmIxN2JjMzc5N2ZhZWNjMTkwYTM3ZjNkZGNlMDhmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMKQEAgLTIyOSwzICsyMjksMTAgQEAgV2ViSW5z
cGVjdG9yLlNvdXJjZUphdmFTY3JpcHRUb2tlbml6ZXIgPSB7fQogV2ViSW5zcGVjdG9yLlNvdXJj
ZUphdmFTY3JpcHRUb2tlbml6ZXIuS2V5d29yZHMgPSB7fQogCiB2YXIgSW5zcGVjdG9yVGVzdCA9
IHt9CisKKy8qIGpzZGlmZmxpYiBBUEkgKi8KK3ZhciBkaWZmbGliID0ge307CitkaWZmbGliLnN0
cmluZ0FzTGluZXMgPSBmdW5jdGlvbih0ZXh0KSB7IHJldHVybiBbXTsgfQorLyoqIEBjb25zdHJ1
Y3RvciAqLworZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIgPSBmdW5jdGlvbihiYXNlVGV4dCwgbmV3
VGV4dCkgeyB9CitkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci5wcm90b3R5cGUuZ2V0X29wY29kZXMg
PSBmdW5jdGlvbigpIHsgcmV0dXJuIFtdOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCA1NmQxZGQ0NDY2NDNjNGQxZThhOTY1
NWUyZWEyN2YzNmJmYWY3NTVjLi5kYmQ3YzVhNWQ1YmM1MGFlZWRjNDdlY2JmN2QyMWVjYjRjMThh
ZThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmh0bWwKQEAgLTM1LDYgKzM1LDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8bGluayByZWw9InN0eWxl
c2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJpbnNwZWN0b3JTeW50YXhIaWdobGlnaHQuY3Nz
Ij4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJwb3Bv
dmVyLmNzcyI+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idXRpbGl0
aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJqc2RpZmZsaWIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IkRPTUV4dGVuc2lvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0idHJlZW91dGxpbmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imluc3BlY3Rvci5qcyI+PC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2pzZGlmZmxpYi5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvanNkaWZmbGliLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY4NmE4ZjdhNGRiMDJiZGE3MzY4Zjk3ZGZmNjY0YTNiMjhjODg1YmUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2pzZGlmZmxpYi5q
cwpAQCAtMCwwICsxLDQwOSBAQAorLyoKKyAqIFRoaXMgaXMgcGFydCBvZiBqc2RpZmZsaWIgdjEu
MC4gPGh0dHA6Ly9zbm93dGlkZS5jb20vanNkaWZmbGliPgorICoKKyAqIENvcHlyaWdodCAoYykg
MjAwNywgU25vd3RpZGUgSW5mb3JtYXRpY3MgU3lzdGVtcywgSW5jLgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKKyAqIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqIAor
ICogICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKKyAqIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBk
b2N1bWVudGF0aW9uCisgKiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgU25vd3RpZGUg
SW5mb3JtYXRpY3MgU3lzdGVtcyBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20g
dGhpcworICogc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUworICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQKKyAqIFNIQUxMIFRI
RSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsCisgKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IKKyAqIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOCisgKiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorICogREFN
QUdFLgorICoqLworLyogQXV0aG9yOiBDaGFzIEVtZXJpY2sgPGNlbWVyaWNrQHNub3d0aWRlLmNv
bT4gKi8KKy8qIHRha2VuIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2NlbWVyaWNrL2pzZGlmZmxp
YiAqLworCitfX3doaXRlc3BhY2UgPSB7IiAiOnRydWUsICJcdCI6dHJ1ZSwgIlxuIjp0cnVlLCAi
XGYiOnRydWUsICJcciI6dHJ1ZX07CisKK2RpZmZsaWIgPSB7CisgICAgZGVmYXVsdEp1bmtGdW5j
dGlvbjogZnVuY3Rpb24gKGMpIHsKKyAgICAgICAgcmV0dXJuIF9fd2hpdGVzcGFjZS5oYXNPd25Q
cm9wZXJ0eShjKTsKKyAgICB9LAorCisgICAgc3RyaXBMaW5lYnJlYWtzOiBmdW5jdGlvbiAoc3Ry
KSB7IHJldHVybiBzdHIucmVwbGFjZSgvXltcblxyXSp8W1xuXHJdKiQvZywgIiIpOyB9LAorCisg
ICAgc3RyaW5nQXNMaW5lczogZnVuY3Rpb24gKHN0cikgeworICAgICAgICB2YXIgbGZwb3MgPSBz
dHIuaW5kZXhPZigiXG4iKTsKKyAgICAgICAgdmFyIGNycG9zID0gc3RyLmluZGV4T2YoIlxyIik7
CisgICAgICAgIHZhciBsaW5lYnJlYWsgPSAoKGxmcG9zID4gLTEgJiYgY3Jwb3MgPiAtMSkgfHwg
Y3Jwb3MgPCAwKSA/ICJcbiIgOiAiXHIiOworCisgICAgICAgIHZhciBsaW5lcyA9IHN0ci5zcGxp
dChsaW5lYnJlYWspOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsg
aSsrKSB7CisgICAgICAgICAgICBsaW5lc1tpXSA9IGRpZmZsaWIuc3RyaXBMaW5lYnJlYWtzKGxp
bmVzW2ldKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBsaW5lczsKKyAgICB9LAorCisg
ICAgLy8gaXRlcmF0aW9uLWJhc2VkIHJlZHVjZSBpbXBsZW1lbnRhdGlvbgorICAgIF9fcmVkdWNl
OiBmdW5jdGlvbiAoZnVuYywgbGlzdCwgaW5pdGlhbCkgeworICAgICAgICBpZiAoaW5pdGlhbCAh
PSBudWxsKSB7CisgICAgICAgICAgICB2YXIgdmFsdWUgPSBpbml0aWFsOworICAgICAgICAgICAg
dmFyIGlkeCA9IDA7CisgICAgICAgIH0gZWxzZSBpZiAobGlzdCkgeworICAgICAgICAgICAgdmFy
IHZhbHVlID0gbGlzdFswXTsKKyAgICAgICAgICAgIHZhciBpZHggPSAxOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBmb3Ig
KDsgaWR4IDwgbGlzdC5sZW5ndGg7IGlkeCsrKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGZ1bmMo
dmFsdWUsIGxpc3RbaWR4XSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdmFsdWU7Cisg
ICAgfSwKKworICAgIC8vIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIHNvcnRpbmcgbGlzdHMgb2Yg
bnVtZXJpYyB0dXBsZXMKKyAgICBfX250dXBsZWNvbXA6IGZ1bmN0aW9uIChhLCBiKSB7CisgICAg
ICAgIHZhciBtbGVuID0gTWF0aC5tYXgoYS5sZW5ndGgsIGIubGVuZ3RoKTsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBtbGVuOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChhW2ldIDwgYltp
XSkgcmV0dXJuIC0xOworICAgICAgICAgICAgaWYgKGFbaV0gPiBiW2ldKSByZXR1cm4gMTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBhLmxlbmd0aCA9PSBiLmxlbmd0aCA/IDAgOiAoYS5s
ZW5ndGggPCBiLmxlbmd0aCA/IC0xIDogMSk7CisgICAgfSwKKworICAgIF9fY2FsY3VsYXRlX3Jh
dGlvOiBmdW5jdGlvbiAobWF0Y2hlcywgbGVuZ3RoKSB7CisgICAgICAgIHJldHVybiBsZW5ndGgg
PyAyLjAgKiBtYXRjaGVzIC8gbGVuZ3RoIDogMS4wOworICAgIH0sCisKKyAgICAvLyByZXR1cm5z
IGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRydWUgaWYgYSBrZXkgcGFzc2VkIHRvIHRoZSByZXR1
cm5lZCBmdW5jdGlvbgorICAgIC8vIGlzIGluIHRoZSBkaWN0IChqcyBvYmplY3QpIHByb3ZpZGVk
IHRvIHRoaXMgZnVuY3Rpb247IHJlcGxhY2VzIGJlaW5nIGFibGUgdG8KKyAgICAvLyBjYXJyeSBh
cm91bmQgZGljdC5oYXNfa2V5IGluIHB5dGhvbi4uLgorICAgIF9faXNpbmRpY3Q6IGZ1bmN0aW9u
IChkaWN0KSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbiAoa2V5KSB7IHJldHVybiBkaWN0Lmhh
c093blByb3BlcnR5KGtleSk7IH07CisgICAgfSwKKworICAgIC8vIHJlcGxhY2VtZW50IGZvciBw
eXRob24ncyBkaWN0LmdldCBmdW5jdGlvbiAtLSBuZWVkIGVhc3kgZGVmYXVsdCB2YWx1ZXMKKyAg
ICBfX2RpY3RnZXQ6IGZ1bmN0aW9uIChkaWN0LCBrZXksIGRlZmF1bHRWYWx1ZSkgeworICAgICAg
ICByZXR1cm4gZGljdC5oYXNPd25Qcm9wZXJ0eShrZXkpID8gZGljdFtrZXldIDogZGVmYXVsdFZh
bHVlOworICAgIH0sICAKKworICAgIFNlcXVlbmNlTWF0Y2hlcjogZnVuY3Rpb24gKGEsIGIsIGlz
anVuaykgeworICAgICAgICB0aGlzLnNldF9zZXFzID0gZnVuY3Rpb24gKGEsIGIpIHsKKyAgICAg
ICAgICAgIHRoaXMuc2V0X3NlcTEoYSk7CisgICAgICAgICAgICB0aGlzLnNldF9zZXEyKGIpOwor
ICAgICAgICB9CisKKyAgICAgICAgdGhpcy5zZXRfc2VxMSA9IGZ1bmN0aW9uIChhKSB7CisgICAg
ICAgICAgICBpZiAoYSA9PSB0aGlzLmEpIHJldHVybjsKKyAgICAgICAgICAgIHRoaXMuYSA9IGE7
CisgICAgICAgICAgICB0aGlzLm1hdGNoaW5nX2Jsb2NrcyA9IHRoaXMub3Bjb2RlcyA9IG51bGw7
CisgICAgICAgIH0KKworICAgICAgICB0aGlzLnNldF9zZXEyID0gZnVuY3Rpb24gKGIpIHsKKyAg
ICAgICAgICAgIGlmIChiID09IHRoaXMuYikgcmV0dXJuOworICAgICAgICAgICAgdGhpcy5iID0g
YjsKKyAgICAgICAgICAgIHRoaXMubWF0Y2hpbmdfYmxvY2tzID0gdGhpcy5vcGNvZGVzID0gdGhp
cy5mdWxsYmNvdW50ID0gbnVsbDsKKyAgICAgICAgICAgIHRoaXMuX19jaGFpbl9iKCk7CisgICAg
ICAgIH0KKworICAgICAgICB0aGlzLl9fY2hhaW5fYiA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIHZhciBiID0gdGhpcy5iOworICAgICAgICAgICAgdmFyIG4gPSBiLmxlbmd0aDsKKyAgICAg
ICAgICAgIHZhciBiMmogPSB0aGlzLmIyaiA9IHt9OworICAgICAgICAgICAgdmFyIHBvcHVsYXJk
aWN0ID0ge307CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgICAgICAgICB2YXIgZWx0ID0gYltpXTsKKyAgICAgICAgICAgICAgICBpZiAo
YjJqLmhhc093blByb3BlcnR5KGVsdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGluZGlj
ZXMgPSBiMmpbZWx0XTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG4gPj0gMjAwICYmIGluZGlj
ZXMubGVuZ3RoICogMTAwID4gbikgeworICAgICAgICAgICAgICAgICAgICAgICAgcG9wdWxhcmRp
Y3RbZWx0XSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgYjJqW2VsdF07Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmRp
Y2VzLnB1c2goaSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBiMmpbZWx0XSA9IFtpXTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAodmFyIGVsdCBpbiBwb3B1bGFy
ZGljdCkgeworICAgICAgICAgICAgICAgIGlmIChwb3B1bGFyZGljdC5oYXNPd25Qcm9wZXJ0eShl
bHQpKSB7CisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBiMmpbZWx0XTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBpc2p1bmsgPSB0aGlzLmlz
anVuazsKKyAgICAgICAgICAgIHZhciBqdW5rZGljdCA9IHt9OworICAgICAgICAgICAgaWYgKGlz
anVuaykgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGVsdCBpbiBwb3B1bGFyZGljdCkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAocG9wdWxhcmRpY3QuaGFzT3duUHJvcGVydHkoZWx0KSAm
JiBpc2p1bmsoZWx0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAganVua2RpY3RbZWx0XSA9
IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcG9wdWxhcmRpY3RbZWx0XTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBm
b3IgKHZhciBlbHQgaW4gYjJqKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChiMmouaGFzT3du
UHJvcGVydHkoZWx0KSAmJiBpc2p1bmsoZWx0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
anVua2RpY3RbZWx0XSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgYjJqW2Vs
dF07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHRoaXMuaXNianVuayA9IGRpZmZsaWIuX19pc2luZGljdChqdW5r
ZGljdCk7CisgICAgICAgICAgICB0aGlzLmlzYnBvcHVsYXIgPSBkaWZmbGliLl9faXNpbmRpY3Qo
cG9wdWxhcmRpY3QpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5maW5kX2xvbmdlc3RfbWF0
Y2ggPSBmdW5jdGlvbiAoYWxvLCBhaGksIGJsbywgYmhpKSB7CisgICAgICAgICAgICB2YXIgYSA9
IHRoaXMuYTsKKyAgICAgICAgICAgIHZhciBiID0gdGhpcy5iOworICAgICAgICAgICAgdmFyIGIy
aiA9IHRoaXMuYjJqOworICAgICAgICAgICAgdmFyIGlzYmp1bmsgPSB0aGlzLmlzYmp1bms7Cisg
ICAgICAgICAgICB2YXIgYmVzdGkgPSBhbG87CisgICAgICAgICAgICB2YXIgYmVzdGogPSBibG87
CisgICAgICAgICAgICB2YXIgYmVzdHNpemUgPSAwOworICAgICAgICAgICAgdmFyIGogPSBudWxs
OworCisgICAgICAgICAgICB2YXIgajJsZW4gPSB7fTsKKyAgICAgICAgICAgIHZhciBub3RoaW5n
ID0gW107CisgICAgICAgICAgICBmb3IgKHZhciBpID0gYWxvOyBpIDwgYWhpOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICB2YXIgbmV3ajJsZW4gPSB7fTsKKyAgICAgICAgICAgICAgICB2YXIgamRp
Y3QgPSBkaWZmbGliLl9fZGljdGdldChiMmosIGFbaV0sIG5vdGhpbmcpOworICAgICAgICAgICAg
ICAgIGZvciAodmFyIGprZXkgaW4gamRpY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGpk
aWN0Lmhhc093blByb3BlcnR5KGprZXkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBqID0g
amRpY3RbamtleV07CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaiA8IGJsbykgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaiA+PSBiaGkpIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3ajJsZW5bal0gPSBrID0gZGlmZmxpYi5fX2RpY3RnZXQoajJs
ZW4sIGogLSAxLCAwKSArIDE7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA+IGJlc3Rz
aXplKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzdGkgPSBpIC0gayArIDE7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzdGogPSBqIC0gayArIDE7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYmVzdHNpemUgPSBrOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGoybGVuID0gbmV3ajJsZW47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdoaWxl
IChiZXN0aSA+IGFsbyAmJiBiZXN0aiA+IGJsbyAmJiAhaXNianVuayhiW2Jlc3RqIC0gMV0pICYm
IGFbYmVzdGkgLSAxXSA9PSBiW2Jlc3RqIC0gMV0pIHsKKyAgICAgICAgICAgICAgICBiZXN0aS0t
OworICAgICAgICAgICAgICAgIGJlc3RqLS07CisgICAgICAgICAgICAgICAgYmVzdHNpemUrKzsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKGJlc3RpICsgYmVzdHNpemUgPCBh
aGkgJiYgYmVzdGogKyBiZXN0c2l6ZSA8IGJoaSAmJgorICAgICAgICAgICAgICAgICAgICAhaXNi
anVuayhiW2Jlc3RqICsgYmVzdHNpemVdKSAmJgorICAgICAgICAgICAgICAgICAgICBhW2Jlc3Rp
ICsgYmVzdHNpemVdID09IGJbYmVzdGogKyBiZXN0c2l6ZV0pIHsKKyAgICAgICAgICAgICAgICBi
ZXN0c2l6ZSsrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3aGlsZSAoYmVzdGkgPiBh
bG8gJiYgYmVzdGogPiBibG8gJiYgaXNianVuayhiW2Jlc3RqIC0gMV0pICYmIGFbYmVzdGkgLSAx
XSA9PSBiW2Jlc3RqIC0gMV0pIHsKKyAgICAgICAgICAgICAgICBiZXN0aS0tOworICAgICAgICAg
ICAgICAgIGJlc3RqLS07CisgICAgICAgICAgICAgICAgYmVzdHNpemUrKzsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgd2hpbGUgKGJlc3RpICsgYmVzdHNpemUgPCBhaGkgJiYgYmVzdGog
KyBiZXN0c2l6ZSA8IGJoaSAmJiBpc2JqdW5rKGJbYmVzdGogKyBiZXN0c2l6ZV0pICYmCisgICAg
ICAgICAgICAgICAgICAgIGFbYmVzdGkgKyBiZXN0c2l6ZV0gPT0gYltiZXN0aiArIGJlc3RzaXpl
XSkgeworICAgICAgICAgICAgICAgIGJlc3RzaXplKys7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBbYmVzdGksIGJlc3RqLCBiZXN0c2l6ZV07CisgICAgICAgIH0KKworICAg
ICAgICB0aGlzLmdldF9tYXRjaGluZ19ibG9ja3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICBpZiAodGhpcy5tYXRjaGluZ19ibG9ja3MgIT0gbnVsbCkgcmV0dXJuIHRoaXMubWF0Y2hpbmdf
YmxvY2tzOworICAgICAgICAgICAgdmFyIGxhID0gdGhpcy5hLmxlbmd0aDsKKyAgICAgICAgICAg
IHZhciBsYiA9IHRoaXMuYi5sZW5ndGg7CisKKyAgICAgICAgICAgIHZhciBxdWV1ZSA9IFtbMCwg
bGEsIDAsIGxiXV07CisgICAgICAgICAgICB2YXIgbWF0Y2hpbmdfYmxvY2tzID0gW107CisgICAg
ICAgICAgICB2YXIgYWxvLCBhaGksIGJsbywgYmhpLCBxaSwgaSwgaiwgaywgeDsKKyAgICAgICAg
ICAgIHdoaWxlIChxdWV1ZS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBxaSA9IHF1ZXVlLnBv
cCgpOworICAgICAgICAgICAgICAgIGFsbyA9IHFpWzBdOworICAgICAgICAgICAgICAgIGFoaSA9
IHFpWzFdOworICAgICAgICAgICAgICAgIGJsbyA9IHFpWzJdOworICAgICAgICAgICAgICAgIGJo
aSA9IHFpWzNdOworICAgICAgICAgICAgICAgIHggPSB0aGlzLmZpbmRfbG9uZ2VzdF9tYXRjaChh
bG8sIGFoaSwgYmxvLCBiaGkpOworICAgICAgICAgICAgICAgIGkgPSB4WzBdOworICAgICAgICAg
ICAgICAgIGogPSB4WzFdOworICAgICAgICAgICAgICAgIGsgPSB4WzJdOworCisgICAgICAgICAg
ICAgICAgaWYgKGspIHsKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdfYmxvY2tzLnB1c2go
eCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChhbG8gPCBpICYmIGJsbyA8IGopCisgICAgICAg
ICAgICAgICAgICAgICAgICBxdWV1ZS5wdXNoKFthbG8sIGksIGJsbywgal0pOworICAgICAgICAg
ICAgICAgICAgICBpZiAoaStrIDwgYWhpICYmIGorayA8IGJoaSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHF1ZXVlLnB1c2goW2kgKyBrLCBhaGksIGogKyBrLCBiaGldKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1hdGNoaW5nX2Jsb2Nrcy5zb3J0
KGRpZmZsaWIuX19udHVwbGVjb21wKTsKKworICAgICAgICAgICAgdmFyIGkxID0gajEgPSBrMSA9
IGJsb2NrID0gMDsKKyAgICAgICAgICAgIHZhciBub25fYWRqYWNlbnQgPSBbXTsKKyAgICAgICAg
ICAgIGZvciAodmFyIGlkeCBpbiBtYXRjaGluZ19ibG9ja3MpIHsKKyAgICAgICAgICAgICAgICBp
ZiAobWF0Y2hpbmdfYmxvY2tzLmhhc093blByb3BlcnR5KGlkeCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgYmxvY2sgPSBtYXRjaGluZ19ibG9ja3NbaWR4XTsKKyAgICAgICAgICAgICAgICAgICAg
aTIgPSBibG9ja1swXTsKKyAgICAgICAgICAgICAgICAgICAgajIgPSBibG9ja1sxXTsKKyAgICAg
ICAgICAgICAgICAgICAgazIgPSBibG9ja1syXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkx
ICsgazEgPT0gaTIgJiYgajEgKyBrMSA9PSBqMikgeworICAgICAgICAgICAgICAgICAgICAgICAg
azEgKz0gazI7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoazEpIG5vbl9hZGphY2VudC5wdXNoKFtpMSwgajEsIGsxXSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpMSA9IGkyOworICAgICAgICAgICAgICAgICAgICAgICAgajEgPSBq
MjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGsxID0gazI7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChr
MSkgbm9uX2FkamFjZW50LnB1c2goW2kxLCBqMSwgazFdKTsKKworICAgICAgICAgICAgbm9uX2Fk
amFjZW50LnB1c2goW2xhLCBsYiwgMF0pOworICAgICAgICAgICAgdGhpcy5tYXRjaGluZ19ibG9j
a3MgPSBub25fYWRqYWNlbnQ7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5tYXRjaGluZ19ibG9j
a3M7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmdldF9vcGNvZGVzID0gZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgaWYgKHRoaXMub3Bjb2RlcyAhPSBudWxsKSByZXR1cm4gdGhpcy5vcGNv
ZGVzOworICAgICAgICAgICAgdmFyIGkgPSAwOworICAgICAgICAgICAgdmFyIGogPSAwOworICAg
ICAgICAgICAgdmFyIGFuc3dlciA9IFtdOworICAgICAgICAgICAgdGhpcy5vcGNvZGVzID0gYW5z
d2VyOworICAgICAgICAgICAgdmFyIGJsb2NrLCBhaSwgYmosIHNpemUsIHRhZzsKKyAgICAgICAg
ICAgIHZhciBibG9ja3MgPSB0aGlzLmdldF9tYXRjaGluZ19ibG9ja3MoKTsKKyAgICAgICAgICAg
IGZvciAodmFyIGlkeCBpbiBibG9ja3MpIHsKKyAgICAgICAgICAgICAgICBpZiAoYmxvY2tzLmhh
c093blByb3BlcnR5KGlkeCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYmxvY2sgPSBibG9ja3Nb
aWR4XTsKKyAgICAgICAgICAgICAgICAgICAgYWkgPSBibG9ja1swXTsKKyAgICAgICAgICAgICAg
ICAgICAgYmogPSBibG9ja1sxXTsKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IGJsb2NrWzJd
OworICAgICAgICAgICAgICAgICAgICB0YWcgPSAnJzsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGkgPCBhaSAmJiBqIDwgYmopIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhZyA9ICdyZXBs
YWNlJzsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpIDwgYWkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRhZyA9ICdkZWxldGUnOworICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGogPCBiaikgeworICAgICAgICAgICAgICAgICAgICAgICAgdGFnID0gJ2luc2VydCc7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHRhZykgYW5z
d2VyLnB1c2goW3RhZywgaSwgYWksIGosIGJqXSk7CisgICAgICAgICAgICAgICAgICAgIGkgPSBh
aSArIHNpemU7CisgICAgICAgICAgICAgICAgICAgIGogPSBiaiArIHNpemU7CisKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHNpemUpIGFuc3dlci5wdXNoKFsnZXF1YWwnLCBhaSwgaSwgYmosIGpd
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBhbnN3ZXI7CisgICAgICAgIH0KKworICAgICAgICAvLyB0aGlzIGlzIGEgZ2VuZXJhdG9yIGZ1
bmN0aW9uIGluIHRoZSBweXRob24gbGliLCB3aGljaCBvZiBjb3Vyc2UgaXMgbm90IHN1cHBvcnRl
ZCBpbiBqYXZhc2NyaXB0CisgICAgICAgIC8vIHRoZSByZWltcGxlbWVudGF0aW9uIGJ1aWxkcyB1
cCB0aGUgZ3JvdXBlZCBvcGNvZGVzIGludG8gYSBsaXN0IGluIHRoZWlyIGVudGlyZXR5IGFuZCBy
ZXR1cm5zIHRoYXQuCisgICAgICAgIHRoaXMuZ2V0X2dyb3VwZWRfb3Bjb2RlcyA9IGZ1bmN0aW9u
IChuKSB7CisgICAgICAgICAgICBpZiAoIW4pIG4gPSAzOworICAgICAgICAgICAgdmFyIGNvZGVz
ID0gdGhpcy5nZXRfb3Bjb2RlcygpOworICAgICAgICAgICAgaWYgKCFjb2RlcykgY29kZXMgPSBb
WyJlcXVhbCIsIDAsIDEsIDAsIDFdXTsKKyAgICAgICAgICAgIHZhciBjb2RlLCB0YWcsIGkxLCBp
MiwgajEsIGoyOworICAgICAgICAgICAgaWYgKGNvZGVzWzBdWzBdID09ICdlcXVhbCcpIHsKKyAg
ICAgICAgICAgICAgICBjb2RlID0gY29kZXNbMF07CisgICAgICAgICAgICAgICAgdGFnID0gY29k
ZVswXTsKKyAgICAgICAgICAgICAgICBpMSA9IGNvZGVbMV07CisgICAgICAgICAgICAgICAgaTIg
PSBjb2RlWzJdOworICAgICAgICAgICAgICAgIGoxID0gY29kZVszXTsKKyAgICAgICAgICAgICAg
ICBqMiA9IGNvZGVbNF07CisgICAgICAgICAgICAgICAgY29kZXNbMF0gPSBbdGFnLCBNYXRoLm1h
eChpMSwgaTIgLSBuKSwgaTIsIE1hdGgubWF4KGoxLCBqMiAtIG4pLCBqMl07CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoY29kZXNbY29kZXMubGVuZ3RoIC0gMV1bMF0gPT0gJ2VxdWFs
JykgeworICAgICAgICAgICAgICAgIGNvZGUgPSBjb2Rlc1tjb2Rlcy5sZW5ndGggLSAxXTsKKyAg
ICAgICAgICAgICAgICB0YWcgPSBjb2RlWzBdOworICAgICAgICAgICAgICAgIGkxID0gY29kZVsx
XTsKKyAgICAgICAgICAgICAgICBpMiA9IGNvZGVbMl07CisgICAgICAgICAgICAgICAgajEgPSBj
b2RlWzNdOworICAgICAgICAgICAgICAgIGoyID0gY29kZVs0XTsKKyAgICAgICAgICAgICAgICBj
b2Rlc1tjb2Rlcy5sZW5ndGggLSAxXSA9IFt0YWcsIGkxLCBNYXRoLm1pbihpMiwgaTEgKyBuKSwg
ajEsIE1hdGgubWluKGoyLCBqMSArIG4pXTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIG5uID0gbiArIG47CisgICAgICAgICAgICB2YXIgZ3JvdXBzID0gW107CisgICAgICAgICAg
ICBmb3IgKHZhciBpZHggaW4gY29kZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29kZXMuaGFz
T3duUHJvcGVydHkoaWR4KSkgeworICAgICAgICAgICAgICAgICAgICBjb2RlID0gY29kZXNbaWR4
XTsKKyAgICAgICAgICAgICAgICAgICAgdGFnID0gY29kZVswXTsKKyAgICAgICAgICAgICAgICAg
ICAgaTEgPSBjb2RlWzFdOworICAgICAgICAgICAgICAgICAgICBpMiA9IGNvZGVbMl07CisgICAg
ICAgICAgICAgICAgICAgIGoxID0gY29kZVszXTsKKyAgICAgICAgICAgICAgICAgICAgajIgPSBj
b2RlWzRdOworICAgICAgICAgICAgICAgICAgICBpZiAodGFnID09ICdlcXVhbCcgJiYgaTIgLSBp
MSA+IG5uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBncm91cHMucHVzaChbdGFnLCBpMSwg
TWF0aC5taW4oaTIsIGkxICsgbiksIGoxLCBNYXRoLm1pbihqMiwgajEgKyBuKV0pOworICAgICAg
ICAgICAgICAgICAgICAgICAgaTEgPSBNYXRoLm1heChpMSwgaTItbik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBqMSA9IE1hdGgubWF4KGoxLCBqMi1uKTsKKyAgICAgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgICAgIGdyb3Vwcy5wdXNoKFt0YWcsIGkxLCBpMiwgajEsIGoy
XSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
Z3JvdXBzICYmIGdyb3Vwc1tncm91cHMubGVuZ3RoIC0gMV1bMF0gPT0gJ2VxdWFsJykgZ3JvdXBz
LnBvcCgpOworCisgICAgICAgICAgICByZXR1cm4gZ3JvdXBzOworICAgICAgICB9CisKKyAgICAg
ICAgdGhpcy5yYXRpbyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIG1hdGNoZXMgPSBkaWZm
bGliLl9fcmVkdWNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChzdW0s
IHRyaXBsZSkgeyByZXR1cm4gc3VtICsgdHJpcGxlW3RyaXBsZS5sZW5ndGggLSAxXTsgfSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldF9tYXRjaGluZ19ibG9ja3MoKSwgMCk7
CisgICAgICAgICAgICByZXR1cm4gZGlmZmxpYi5fX2NhbGN1bGF0ZV9yYXRpbyhtYXRjaGVzLCB0
aGlzLmEubGVuZ3RoICsgdGhpcy5iLmxlbmd0aCk7CisgICAgICAgIH0KKworICAgICAgICB0aGlz
LnF1aWNrX3JhdGlvID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdmFyIGZ1bGxiY291bnQs
IGVsdDsKKyAgICAgICAgICAgIGlmICh0aGlzLmZ1bGxiY291bnQgPT0gbnVsbCkgeworICAgICAg
ICAgICAgICAgIHRoaXMuZnVsbGJjb3VudCA9IGZ1bGxiY291bnQgPSB7fTsKKyAgICAgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYi5sZW5ndGg7IGkrKykgeworICAgICAgICAg
ICAgICAgICAgICBlbHQgPSB0aGlzLmJbaV07CisgICAgICAgICAgICAgICAgICAgIGZ1bGxiY291
bnRbZWx0XSA9IGRpZmZsaWIuX19kaWN0Z2V0KGZ1bGxiY291bnQsIGVsdCwgMCkgKyAxOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZ1bGxiY291bnQgPSB0
aGlzLmZ1bGxiY291bnQ7CisKKyAgICAgICAgICAgIHZhciBhdmFpbCA9IHt9OworICAgICAgICAg
ICAgdmFyIGF2YWlsaGFzID0gZGlmZmxpYi5fX2lzaW5kaWN0KGF2YWlsKTsKKyAgICAgICAgICAg
IHZhciBtYXRjaGVzID0gbnVtYiA9IDA7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRoaXMuYS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGVsdCA9IHRoaXMuYVtpXTsK
KyAgICAgICAgICAgICAgICBpZiAoYXZhaWxoYXMoZWx0KSkgeworICAgICAgICAgICAgICAgICAg
ICBudW1iID0gYXZhaWxbZWx0XTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICBudW1iID0gZGlmZmxpYi5fX2RpY3RnZXQoZnVsbGJjb3VudCwgZWx0LCAwKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXZhaWxbZWx0XSA9IG51bWIgLSAx
OworICAgICAgICAgICAgICAgIGlmIChudW1iID4gMCkgbWF0Y2hlcysrOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gZGlmZmxpYi5fX2NhbGN1bGF0ZV9yYXRpbyhtYXRjaGVz
LCB0aGlzLmEubGVuZ3RoICsgdGhpcy5iLmxlbmd0aCk7CisgICAgICAgIH0KKworICAgICAgICB0
aGlzLnJlYWxfcXVpY2tfcmF0aW8gPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgbGEg
PSB0aGlzLmEubGVuZ3RoOworICAgICAgICAgICAgdmFyIGxiID0gdGhpcy5iLmxlbmd0aDsKKyAg
ICAgICAgICAgIHJldHVybiBfY2FsY3VsYXRlX3JhdGlvKE1hdGgubWluKGxhLCBsYiksIGxhICsg
bGIpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5pc2p1bmsgPSBpc2p1bmsgPyBpc2p1bmsg
OiBkaWZmbGliLmRlZmF1bHRKdW5rRnVuY3Rpb247CisgICAgICAgIHRoaXMuYSA9IHRoaXMuYiA9
IG51bGw7CisgICAgICAgIHRoaXMuc2V0X3NlcXMoYSwgYik7CisgICAgfQorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9yZXZpc2lvbkhpc3RvcnkuY3Nz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9yZXZpc2lvbkhpc3RvcnkuY3Nz
CmluZGV4IDMxZWRlM2NhNTc3NTI4ZTZhODUxMDFkODYxNDBiODFmNWFjN2I1YWYuLmJhNTY0MGRi
MWEyMGViZmI0MDBkNmY5Mzc1Y2M2NmRmY2IwMmY3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvcmV2aXNpb25IaXN0b3J5LmNzcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3JldmlzaW9uSGlzdG9yeS5jc3MKQEAgLTY1LDcg
KzY1LDYgQEAKIH0KIAogLnJldmlzaW9uLWhpc3RvcnktZHJhd2VyIC53ZWJraXQtbGluZS1udW1i
ZXIgewotICAgIG1hcmdpbi1yaWdodDogNXB4OwogICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlk
ICNCQkI7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogI0YwRjBGMDsgICAgCiB9CkBAIC03NywzICs3
Niw3IEBACiAucmV2aXNpb24taGlzdG9yeS1saW5lLXJlbW92ZWQgewogICAgIGJhY2tncm91bmQt
Y29sb3I6IHJnYigyNTUsIDIyMSwgMjIxKTsKIH0KKworLnJldmlzaW9uLWhpc3RvcnktbGluZS1z
ZXBhcmF0b3IgLndlYmtpdC1saW5lLW51bWJlciB7CisgICAgY29sb3I6IHRyYW5zcGFyZW50Owor
fQo=
</data>
<flag name="review"
          id="154252"
          type_id="1"
          status="+"
          setter="vsevik"
    />
          </attachment>
      

    </bug>

</bugzilla>