<?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>4174</bug_id>
          
          <creation_ts>2005-07-27 23:15:09 -0700</creation_ts>
          <short_desc>DOM layout tests involving two documents fail due to test framework problem</short_desc>
          <delta_ts>2005-08-10 18:09:44 -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>DOM</component>
          <version>412</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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="Curt Arnold">curt.arnold</reporter>
          <assigned_to name="Vicki Murley">vicki</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>15313</commentid>
    <comment_count>0</comment_count>
    <who name="Curt Arnold">curt.arnold</who>
    <bug_when>2005-07-27 23:15:09 -0700</bug_when>
    <thetext>The self-hosted W3C DOM test suite had an dependency on the implementation-specific behavior of 
Document.cloneNode(true) which causes about 20 tests to report erroneous failures.   See last 
paragraph of http://www.opendarwin.org/pipermail/webkit-dev/2005-July/000329.html

This has been reported and fixed in the W3C CVS as http://www.w3.org/Bugs/Public/show_bug.cgi?
id=1821.  The resolution was to add fallback code that would attempt to do a brute force copy of the 
document.  The resulting code will work properly with IE 6, Mozilla, Opera and Safari.

The patch adds the new code to the various copies of selfhtml.js in the layout tests (and updates 
level2/events/selfhtml.js which was using an earlier copy).  The Webkit modifications to the W3C 
original are preserved and identified as required by the W3C license.

The patch includes changes to -expected.txt files.  Running run-webkit-tests was observed to result in 
a broken pipe on some runs, however the failing test was inconsistent and did not occur last time run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15314</commentid>
    <comment_count>1</comment_count>
      <attachid>3133</attachid>
    <who name="Curt Arnold">curt.arnold</who>
    <bug_when>2005-07-27 23:16:17 -0700</bug_when>
    <thetext>Created attachment 3133
Patch file with new selfhtml.js files and -expected.txt files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16399</commentid>
    <comment_count>2</comment_count>
    <who name="Vicki Murley">vicki</who>
    <bug_when>2005-08-10 18:09:44 -0700</bug_when>
    <thetext>committed this to our tree</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3133</attachid>
            <date>2005-07-27 23:16:17 -0700</date>
            <delta_ts>2005-07-27 23:16:17 -0700</delta_ts>
            <desc>Patch file with new selfhtml.js files and -expected.txt files.</desc>
            <filename>selfclone.patch</filename>
            <type>text/plain</type>
            <size>24215</size>
            <attacher name="Curt Arnold">curt.arnold</attacher>
            
              <data encoding="base64">PyBjbG9uZWZpeC5wYXRjaAo/IHNlbGZjbG9uZS5wYXRjaAo/IGxheW91dC10ZXN0cy9kb20vaHRt
bC9sZXZlbDEvLkRTX1N0b3JlCj8gbGF5b3V0LXRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlLy5E
U19TdG9yZQpJbmRleDogbGF5b3V0LXRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJh
cHBlbmRjaGlsZDUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9X
ZWJDb3JlL2xheW91dC10ZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hp
bGQ1LWV4cGVjdGVkLnR4dCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xCmRpZmYgLXUgLXIxLjEg
aGNfYXR0cmFwcGVuZGNoaWxkNS1leHBlY3RlZC50eHQKLS0tIGxheW91dC10ZXN0cy9kb20vaHRt
bC9sZXZlbDEvY29yZS9oY19hdHRyYXBwZW5kY2hpbGQ1LWV4cGVjdGVkLnR4dAkyNiBKdWwgMjAw
NSAwODozMTo0MCAtMDAwMAkxLjEKKysrIGxheW91dC10ZXN0cy9kb20vaHRtbC9sZXZlbDEvY29y
ZS9oY19hdHRyYXBwZW5kY2hpbGQ1LWV4cGVjdGVkLnR4dAkyOCBKdWwgMjAwNSAwNTo1NToxMCAt
MDAwMApAQCAtMSwzICsxLDMgQEAKIFRlc3Q6CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRl
c3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfYXR0cmFwcGVuZGNoaWxkNQkKLVN0YXR1czoJZXJyb3IK
LURldGFpbDoJVHlwZUVycm9yOiBOdWxsIHZhbHVlCitTdGF0dXM6CWZhaWx1cmUKK0RldGFpbDoJ
dGhyb3dfV1JPTkdfRE9DVU1FTlRfRVJSOiBhc3NlcnRUcnVlIGZhaWxlZApJbmRleDogbGF5b3V0
LXRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX2F0dHJpbnNlcnRiZWZvcmU2LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9sYXlvdXQtdGVzdHMv
ZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJlZm9yZTYtZXhwZWN0ZWQudHh0LHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjEKZGlmZiAtdSAtcjEuMSBoY19hdHRyaW5zZXJ0YmVmb3Jl
Ni1leHBlY3RlZC50eHQKLS0tIGxheW91dC10ZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19h
dHRyaW5zZXJ0YmVmb3JlNi1leHBlY3RlZC50eHQJMjYgSnVsIDIwMDUgMDg6MzE6NDEgLTAwMDAJ
MS4xCisrKyBsYXlvdXQtdGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfYXR0cmluc2VydGJl
Zm9yZTYtZXhwZWN0ZWQudHh0CTI4IEp1bCAyMDA1IDA1OjU1OjEwIC0wMDAwCkBAIC0xLDMgKzEs
MyBAQAogVGVzdDoJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEv
Y29yZS9oY19hdHRyaW5zZXJ0YmVmb3JlNgkKLVN0YXR1czoJZXJyb3IKLURldGFpbDoJVHlwZUVy
cm9yOiBOdWxsIHZhbHVlCitTdGF0dXM6CWZhaWx1cmUKK0RldGFpbDoJdGhyb3dfV1JPTkdfRE9D
VU1FTlRfRVJSOiBhc3NlcnRUcnVlIGZhaWxlZApJbmRleDogbGF5b3V0LXRlc3RzL2RvbS9odG1s
L2xldmVsMS9jb3JlL2hjX2VsZW1lbnR3cm9uZ2RvY3VtZW50ZXJyLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZG9tL2h0bWwv
bGV2ZWwxL2NvcmUvaGNfZWxlbWVudHdyb25nZG9jdW1lbnRlcnItZXhwZWN0ZWQudHh0LHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjEKZGlmZiAtdSAtcjEuMSBoY19lbGVtZW50d3Jvbmdkb2N1bWVu
dGVyci1leHBlY3RlZC50eHQKLS0tIGxheW91dC10ZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9o
Y19lbGVtZW50d3Jvbmdkb2N1bWVudGVyci1leHBlY3RlZC50eHQJMjYgSnVsIDIwMDUgMDg6MzE6
NDggLTAwMDAJMS4xCisrKyBsYXlvdXQtdGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfZWxl
bWVudHdyb25nZG9jdW1lbnRlcnItZXhwZWN0ZWQudHh0CTI4IEp1bCAyMDA1IDA1OjU1OjEwIC0w
MDAwCkBAIC0xLDMgKzEsMiBAQAotVGVzdDoJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVz
dC1TdWl0ZS9sZXZlbDEvY29yZS9oY19lbGVtZW50d3Jvbmdkb2N1bWVudGVycgkKLVN0YXR1czoJ
ZXJyb3IKLURldGFpbDoJVHlwZUVycm9yOiBOdWxsIHZhbHVlCitUZXN0OglodHRwOi8vd3d3Lncz
Lm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX2VsZW1lbnR3cm9uZ2RvY3Vt
ZW50ZXJyCitTdGF0dXM6CVN1Y2Nlc3MKSW5kZXg6IGxheW91dC10ZXN0cy9kb20vaHRtbC9sZXZl
bDEvY29yZS9oY19uYW1lZG5vZGVtYXB3cm9uZ2RvY3VtZW50ZXJyLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZG9tL2h0bWwv
bGV2ZWwxL2NvcmUvaGNfbmFtZWRub2RlbWFwd3Jvbmdkb2N1bWVudGVyci1leHBlY3RlZC50eHQs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZmIC11IC1yMS4xIGhjX25hbWVkbm9kZW1hcHdy
b25nZG9jdW1lbnRlcnItZXhwZWN0ZWQudHh0Ci0tLSBsYXlvdXQtdGVzdHMvZG9tL2h0bWwvbGV2
ZWwxL2NvcmUvaGNfbmFtZWRub2RlbWFwd3Jvbmdkb2N1bWVudGVyci1leHBlY3RlZC50eHQJMjYg
SnVsIDIwMDUgMDg6MzE6NDkgLTAwMDAJMS4xCisrKyBsYXlvdXQtdGVzdHMvZG9tL2h0bWwvbGV2
ZWwxL2NvcmUvaGNfbmFtZWRub2RlbWFwd3Jvbmdkb2N1bWVudGVyci1leHBlY3RlZC50eHQJMjgg
SnVsIDIwMDUgMDU6NTU6MTAgLTAwMDAKQEAgLTEsMyArMSwyIEBACi1UZXN0OglodHRwOi8vd3d3
LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMS9jb3JlL2hjX25hbWVkbm9kZW1hcHdy
b25nZG9jdW1lbnRlcnIJCi1TdGF0dXM6CWVycm9yCi1EZXRhaWw6CVR5cGVFcnJvcjogTnVsbCB2
YWx1ZQorVGVzdDoJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEv
Y29yZS9oY19uYW1lZG5vZGVtYXB3cm9uZ2RvY3VtZW50ZXJyCitTdGF0dXM6CVN1Y2Nlc3MKSW5k
ZXg6IGxheW91dC10ZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19ub2RlYXBwZW5kY2hpbGRu
ZXdjaGlsZGRpZmZkb2N1bWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9yb290L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2RvbS9odG1sL2xldmVsMS9jb3JlL2hjX25vZGVh
cHBlbmRjaGlsZG5ld2NoaWxkZGlmZmRvY3VtZW50LWV4cGVjdGVkLnR4dCx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS4xCmRpZmYgLXUgLXIxLjEgaGNfbm9kZWFwcGVuZGNoaWxkbmV3Y2hpbGRkaWZm
ZG9jdW1lbnQtZXhwZWN0ZWQudHh0Ci0tLSBsYXlvdXQtdGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2Nv
cmUvaGNfbm9kZWFwcGVuZGNoaWxkbmV3Y2hpbGRkaWZmZG9jdW1lbnQtZXhwZWN0ZWQudHh0CTI2
IEp1bCAyMDA1IDA4OjMxOjUwIC0wMDAwCTEuMQorKysgbGF5b3V0LXRlc3RzL2RvbS9odG1sL2xl
dmVsMS9jb3JlL2hjX25vZGVhcHBlbmRjaGlsZG5ld2NoaWxkZGlmZmRvY3VtZW50LWV4cGVjdGVk
LnR4dAkyOCBKdWwgMjAwNSAwNTo1NToxMCAtMDAwMApAQCAtMSwzICsxLDMgQEAKIFRlc3Q6CWh0
dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwxL2NvcmUvaGNfbm9kZWFw
cGVuZGNoaWxkbmV3Y2hpbGRkaWZmZG9jdW1lbnQJCi1TdGF0dXM6CWVycm9yCi1EZXRhaWw6CVR5
cGVFcnJvcjogTnVsbCB2YWx1ZQorU3RhdHVzOglmYWlsdXJlCitEZXRhaWw6CXRocm93X1dST05H
X0RPQ1VNRU5UX0VSUjogYXNzZXJ0VHJ1ZSBmYWlsZWQKSW5kZXg6IGxheW91dC10ZXN0cy9kb20v
aHRtbC9sZXZlbDEvY29yZS9oY19ub2RlaW5zZXJ0YmVmb3JlbmV3Y2hpbGRkaWZmZG9jdW1lbnQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2xheW91
dC10ZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19ub2RlaW5zZXJ0YmVmb3JlbmV3Y2hpbGRk
aWZmZG9jdW1lbnQtZXhwZWN0ZWQudHh0LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEKZGlmZiAt
dSAtcjEuMSBoY19ub2RlaW5zZXJ0YmVmb3JlbmV3Y2hpbGRkaWZmZG9jdW1lbnQtZXhwZWN0ZWQu
dHh0Ci0tLSBsYXlvdXQtdGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfbm9kZWluc2VydGJl
Zm9yZW5ld2NoaWxkZGlmZmRvY3VtZW50LWV4cGVjdGVkLnR4dAkyNiBKdWwgMjAwNSAwODozMTo1
MyAtMDAwMAkxLjEKKysrIGxheW91dC10ZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19ub2Rl
aW5zZXJ0YmVmb3JlbmV3Y2hpbGRkaWZmZG9jdW1lbnQtZXhwZWN0ZWQudHh0CTI4IEp1bCAyMDA1
IDA1OjU1OjEwIC0wMDAwCkBAIC0xLDMgKzEsMyBAQAogVGVzdDoJaHR0cDovL3d3dy53My5vcmcv
MjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDEvY29yZS9oY19ub2RlaW5zZXJ0YmVmb3JlbmV3Y2hp
bGRkaWZmZG9jdW1lbnQJCi1TdGF0dXM6CWVycm9yCi1EZXRhaWw6CVR5cGVFcnJvcjogTnVsbCB2
YWx1ZQorU3RhdHVzOglmYWlsdXJlCitEZXRhaWw6CXRocm93X1dST05HX0RPQ1VNRU5UX0VSUjog
YXNzZXJ0VHJ1ZSBmYWlsZWQKSW5kZXg6IGxheW91dC10ZXN0cy9kb20vaHRtbC9sZXZlbDEvY29y
ZS9oY19ub2RlcmVwbGFjZWNoaWxkbmV3Y2hpbGRkaWZmZG9jdW1lbnQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2xheW91dC10ZXN0cy9kb20vaHRt
bC9sZXZlbDEvY29yZS9oY19ub2RlcmVwbGFjZWNoaWxkbmV3Y2hpbGRkaWZmZG9jdW1lbnQtZXhw
ZWN0ZWQudHh0LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEKZGlmZiAtdSAtcjEuMSBoY19ub2Rl
cmVwbGFjZWNoaWxkbmV3Y2hpbGRkaWZmZG9jdW1lbnQtZXhwZWN0ZWQudHh0Ci0tLSBsYXlvdXQt
dGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvaGNfbm9kZXJlcGxhY2VjaGlsZG5ld2NoaWxkZGlm
ZmRvY3VtZW50LWV4cGVjdGVkLnR4dAkyNiBKdWwgMjAwNSAwODozMTo1NCAtMDAwMAkxLjEKKysr
IGxheW91dC10ZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9oY19ub2RlcmVwbGFjZWNoaWxkbmV3
Y2hpbGRkaWZmZG9jdW1lbnQtZXhwZWN0ZWQudHh0CTI4IEp1bCAyMDA1IDA1OjU1OjEwIC0wMDAw
CkBAIC0xLDMgKzEsMyBAQAogVGVzdDoJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1T
dWl0ZS9sZXZlbDEvY29yZS9oY19ub2RlcmVwbGFjZWNoaWxkbmV3Y2hpbGRkaWZmZG9jdW1lbnQJ
Ci1TdGF0dXM6CWVycm9yCi1EZXRhaWw6CVR5cGVFcnJvcjogTnVsbCB2YWx1ZQorU3RhdHVzOglm
YWlsdXJlCitEZXRhaWw6CXRocm93X1dST05HX0RPQ1VNRU5UX0VSUjogYXNzZXJ0VHJ1ZSBmYWls
ZWQKSW5kZXg6IGxheW91dC10ZXN0cy9kb20vaHRtbC9sZXZlbDEvY29yZS9zZWxmaHRtbC5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZG9tL2h0
bWwvbGV2ZWwxL2NvcmUvc2VsZmh0bWwuanMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZm
IC11IC1yMS4xIHNlbGZodG1sLmpzCi0tLSBsYXlvdXQtdGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2Nv
cmUvc2VsZmh0bWwuanMJMjYgSnVsIDIwMDUgMDg6MzE6NTYgLTAwMDAJMS4xCisrKyBsYXlvdXQt
dGVzdHMvZG9tL2h0bWwvbGV2ZWwxL2NvcmUvc2VsZmh0bWwuanMJMjggSnVsIDIwMDUgMDU6NTU6
MTAgLTAwMDAKQEAgLTksOCArOSwxNiBAQAogWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRp
dW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUtMjAwMjEyMzENCiAqLw0KIA0KKw0KKy8v
DQorLy8gICBXZWJraXQgbW9kaWZpY2F0aW9uOiAgMjgtSnVseS0yMDA1DQorLy8NCiBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7DQorLy8NCisvLyAgIEVuZCBtb2RpZmljYXRpb24NCisvLw0KKw0KIA0KICAgZnVu
Y3Rpb24gYXNzZXJ0U2l6ZShkZXNjciwgZXhwZWN0ZWQsIGFjdHVhbCkgew0KICAgICB2YXIgYWN0
dWFsU2l6ZTsNCkBAIC0zNzcsMTEgKzM4NSwxMDcgQEAKICAgcmV0dXJuIDE7DQogfQ0KIA0KK0hU
TUxCdWlsZGVyLnByb3RvdHlwZS5jbG9uZU5vZGUgPSBmdW5jdGlvbihzcmNOb2RlLCBkb2MpIHsN
CisgICB2YXIgY2xvbmUgPSBudWxsOw0KKyAgIHN3aXRjaChzcmNOb2RlLm5vZGVUeXBlKSB7DQor
ICAgICAgLy8NCisgICAgICAvLyAgZWxlbWVudA0KKyAgICAgIGNhc2UgMToNCisgICAgICBjbG9u
ZSA9IGRvYy5jcmVhdGVFbGVtZW50KHNyY05vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSk7DQor
ICAgICAgdmFyIGF0dHJzID0gc3JjTm9kZS5hdHRyaWJ1dGVzOw0KKyAgICAgIGZvcih2YXIgaSA9
IDA7IGkgPCBhdHRycy5sZW5ndGg7IGkrKykgew0KKyAgICAgICAgICB2YXIgc3JjQXR0ciA9IGF0
dHJzLml0ZW0oaSk7DQorICAgICAgICAgIGNsb25lLnNldEF0dHJpYnV0ZShzcmNBdHRyLm5vZGVO
YW1lLCBzcmNBdHRyLm5vZGVWYWx1ZSk7DQorICAgICAgfQ0KKyAgICAgIHZhciBzcmNDaGlsZCA9
IHNyY05vZGUuZmlyc3RDaGlsZDsNCisgICAgICB3aGlsZShzcmNDaGlsZCAhPSBudWxsKSB7DQor
ICAgICAgICAgdmFyIGNsb25lQ2hpbGQgPSB0aGlzLmNsb25lTm9kZShzcmNDaGlsZCwgZG9jKTsN
CisgICAgICAgICBpZiAoY2xvbmVDaGlsZCAhPSBudWxsKSB7DQorICAgICAgICAgICAgIGNsb25l
LmFwcGVuZENoaWxkKGNsb25lQ2hpbGQpOw0KKyAgICAgICAgIH0NCisgICAgICAgICBzcmNDaGls
ZCA9IHNyY0NoaWxkLm5leHRTaWJsaW5nOw0KKyAgICAgIH0NCisgICAgICBicmVhazsNCisgICAg
ICANCisgICAgICBjYXNlIDM6DQorICAgICAgY2xvbmUgPSBkb2MuY3JlYXRlVGV4dE5vZGUoc3Jj
Tm9kZS5ub2RlVmFsdWUpOw0KKyAgICAgIGJyZWFrOw0KKyAgICAgIA0KKyAgICAgIGNhc2UgNDoN
CisgICAgICBjbG9uZSA9IGRvYy5jcmVhdGVDREFUQVNlY3Rpb24oc3JjTm9kZS5ub2RlVmFsdWUp
Ow0KKyAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIA0KKyAgICAgIGNhc2UgNzoNCisgICAgICBj
bG9uZSA9IGRvYy5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oc3JjTm9kZS5ub2RlVmFsdWUp
Ow0KKyAgICAgIGJyZWFrOw0KKyAgICAgIA0KKyAgICAgIGNhc2UgODoNCisgICAgICBjbG9uZSA9
IGRvYy5jcmVhdGVDb21tZW50KHNyY05vZGUubm9kZVZhbHVlKTsNCisgICAgICBicmVhazsNCisg
ICB9DQorICAgcmV0dXJuIGNsb25lOw0KKyAgICAgIA0KK30NCisNCisNCiBIVE1MQnVpbGRlci5w
cm90b3R5cGUubG9hZCA9IGZ1bmN0aW9uKGZyYW1lLCB2YXJuYW1lLCB1cmwpIHsNCiAgIGlmICh0
aGlzLmRvY3VtZW50VmFybmFtZXNbMF0gPT0gdmFybmFtZSkgew0KICAgCXJldHVybiBkb2N1bWVu
dDsNCiAgIH0NCi0gIHJldHVybiBkb2N1bWVudC5jbG9uZU5vZGUodHJ1ZSk7DQorICAvLw0KKyAg
Ly8NCisgIC8vICBub3QgYSBwZXJmZWN0IHdheSB0byBkbyB0aGlzDQorICAvLyAgICBEb2N1bWVu
dC5jbG9uZU5vZGUgaXMgaW1wbGVtZW50YXRpb24gZGVwZW5kZW50IGJ1dCBleGlzdHMgaW4gTDEN
CisgIC8vICAgICAgIGFuZCBpbXBsZW1lbnRlZCBpbiBJRS4gIFRoZSBhbHRlcm5hdGl2ZSBicnV0
ZSBmb3JjZSBjb3B5DQorICAvLyAgICAgICBvbmx5IHdvcmtzIGluIEwyIG9yIGhpZ2hlciBpbXBs
ZW1lbnRhdGlvbnMgYW5kIGNhbid0IGNvcHkNCisgIC8vICAgICAgIGVudGl0eSBhbmQgbm90YXRp
b24gZGVmaW5pdGlvbnMsIGV0Yy4NCisgIHZhciBjbG9uZSA9IG51bGw7DQorICB0cnkgew0KKyAg
ICAgIGNsb25lID0gZG9jdW1lbnQuY2xvbmVOb2RlKHRydWUpOw0KKyAgfSBjYXRjaChleCkgew0K
KyAgfQ0KKyAgaWYgKGNsb25lID09IG51bGwpIHsNCisgICAgICBjbG9uZSA9IGRvY3VtZW50Lmlt
cGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KA0KKyAgICAgICAgICBkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQubmFtZXNwYWNlVVJJLA0KKyAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQubm9kZU5hbWUsDQorICAgICAgICAgIG51bGwpOw0KKyAgICAgIC8vDQorICAgICAgLy8gICBX
b3JrLWFyb3VuZCBzaW5jZQ0KKyAgICAgIC8vICAgU2FmYXJpIGRvZXMgbm90IGNyZWF0ZSBkb2N1
bWVudCBlbGVtZW50IA0KKyAgICAgIC8vICAgICAgY3JlYXRlIGRvY3VtZW50LiAgICAgIA0KKyAg
ICAgIGlmIChjbG9uZS5kb2N1bWVudEVsZW1lbnQgPT0gbnVsbCkgew0KKyAgICAgICAgICAgY2xv
bmUuYXBwZW5kQ2hpbGQoY2xvbmUuY3JlYXRlRWxlbWVudChkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQubm9kZU5hbWUpKTsNCisgICAgICB9DQorICAgICAgdmFyIGF0dHJzID0gZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50LmF0dHJpYnV0ZXM7DQorICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGF0dHJz
Lmxlbmd0aDsgaSsrKSB7DQorICAgICAgICAgIHZhciBzcmNBdHRyID0gYXR0cnMuaXRlbShpKTsN
CisgICAgICAgICAgY2xvbmUuZG9jdW1lbnRFbGVtZW50LnNldEF0dHJpYnV0ZShzcmNBdHRyLm5v
ZGVOYW1lLCBzcmNBdHRyLm5vZGVWYWx1ZSk7DQorICAgICAgfQ0KKw0KKyAgICAgIHZhciBzcmNO
b2RlID0gZG9jdW1lbnQuZmlyc3RDaGlsZDsNCisgICAgICB3aGlsZShzcmNOb2RlICE9IG51bGwg
JiYgc3JjTm9kZS5ub2RlVHlwZSAhPSAxKSB7DQorICAgICAgICAgIGlmIChzcmNOb2RlLm5vZGVU
eXBlICE9IDEwKSB7DQorICAgICAgICAgIAkgdmFyIGNsb25lTm9kZSA9IHRoaXMuY2xvbmVOb2Rl
KHNyY05vZGUsIGNsb25lKTsNCisgICAgICAgICAgICAgY2xvbmUuaW5zZXJ0QmVmb3JlKGNsb25l
Tm9kZSwgY2xvbmUuZG9jdW1lbnRFbGVtZW50KTsNCisgICAgICAgICAgIH0NCisgICAgICAgICAg
IHNyY05vZGUgPSBzcmNOb2RlLm5leHRTaWJsaW5nOyANCisgICAgICB9DQorICAgICAgc3JjTm9k
ZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5uZXh0U2libGluZzsNCisgICAgICB3aGlsZShz
cmNOb2RlICE9IG51bGwpIHsNCisgICAgICAgICAgdmFyIGNsb25lTm9kZSA9IHRoaXMuY2xvbmVO
b2RlKHNyY05vZGUsIGNsb25lKTsNCisgICAgICAgICAgY2xvbmUuYXBwZW5kQ2hpbGQoY2xvbmVO
b2RlKTsNCisgICAgICAgICAgc3JjTm9kZSA9IHNyY05vZGUubmV4dFNpYmxpbmc7DQorICAgICAg
fQ0KKyAgICAgIHNyY05vZGUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZmlyc3RDaGlsZDsN
CisgICAgICB3aGlsZShzcmNOb2RlICE9IG51bGwpIHsNCisgICAgICAgICAgdmFyIGNsb25lTm9k
ZSA9IHRoaXMuY2xvbmVOb2RlKHNyY05vZGUsIGNsb25lKTsNCisgICAgICAgICAgaWYgKGNsb25l
Tm9kZSAhPSBudWxsKSB7DQorICAgICAgICAgICAgIGNsb25lLmRvY3VtZW50RWxlbWVudC5hcHBl
bmRDaGlsZChjbG9uZU5vZGUpOw0KKyAgICAgICAgICB9DQorICAgICAgICAgIHNyY05vZGUgPSBz
cmNOb2RlLm5leHRTaWJsaW5nOw0KKyAgICAgIH0NCisgIH0NCisgIHJldHVybiBjbG9uZTsNCiB9
DQogDQogSFRNTEJ1aWxkZXIucHJvdG90eXBlLmdldEltcGxlbWVudGF0aW9uQXR0cmlidXRlID0g
ZnVuY3Rpb24oYXR0cikgew0KSW5kZXg6IGxheW91dC10ZXN0cy9kb20vaHRtbC9sZXZlbDIvY29y
ZS9zZWxmaHRtbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9sYXlv
dXQtdGVzdHMvZG9tL2h0bWwvbGV2ZWwyL2NvcmUvc2VsZmh0bWwuanMsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMQpkaWZmIC11IC1yMS4xIHNlbGZodG1sLmpzCi0tLSBsYXlvdXQtdGVzdHMvZG9t
L2h0bWwvbGV2ZWwyL2NvcmUvc2VsZmh0bWwuanMJMjYgSnVsIDIwMDUgMDg6MzU6MDggLTAwMDAJ
MS4xCisrKyBsYXlvdXQtdGVzdHMvZG9tL2h0bWwvbGV2ZWwyL2NvcmUvc2VsZmh0bWwuanMJMjgg
SnVsIDIwMDUgMDU6NTU6MTEgLTAwMDAKQEAgLTksOCArOSwxNiBAQAogWzFdIGh0dHA6Ly93d3cu
dzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAwMi9jb3B5cmlnaHQtc29mdHdhcmUtMjAwMjEyMzEN
CiAqLw0KIA0KKw0KKy8vDQorLy8gICBXZWJraXQgbW9kaWZpY2F0aW9uOiAgMjgtSnVseS0yMDA1
DQorLy8NCiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQ0KICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQorLy8NCisvLyAgIEVuZCBtb2RpZmljYXRpb24NCisv
Lw0KKw0KIA0KICAgZnVuY3Rpb24gYXNzZXJ0U2l6ZShkZXNjciwgZXhwZWN0ZWQsIGFjdHVhbCkg
ew0KICAgICB2YXIgYWN0dWFsU2l6ZTsNCkBAIC0zNzcsMTEgKzM4NSwxMDcgQEAKICAgcmV0dXJu
IDE7DQogfQ0KIA0KK0hUTUxCdWlsZGVyLnByb3RvdHlwZS5jbG9uZU5vZGUgPSBmdW5jdGlvbihz
cmNOb2RlLCBkb2MpIHsNCisgICB2YXIgY2xvbmUgPSBudWxsOw0KKyAgIHN3aXRjaChzcmNOb2Rl
Lm5vZGVUeXBlKSB7DQorICAgICAgLy8NCisgICAgICAvLyAgZWxlbWVudA0KKyAgICAgIGNhc2Ug
MToNCisgICAgICBjbG9uZSA9IGRvYy5jcmVhdGVFbGVtZW50KHNyY05vZGUubm9kZU5hbWUudG9M
b3dlckNhc2UoKSk7DQorICAgICAgdmFyIGF0dHJzID0gc3JjTm9kZS5hdHRyaWJ1dGVzOw0KKyAg
ICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7IGkrKykgew0KKyAgICAgICAgICB2
YXIgc3JjQXR0ciA9IGF0dHJzLml0ZW0oaSk7DQorICAgICAgICAgIGNsb25lLnNldEF0dHJpYnV0
ZShzcmNBdHRyLm5vZGVOYW1lLCBzcmNBdHRyLm5vZGVWYWx1ZSk7DQorICAgICAgfQ0KKyAgICAg
IHZhciBzcmNDaGlsZCA9IHNyY05vZGUuZmlyc3RDaGlsZDsNCisgICAgICB3aGlsZShzcmNDaGls
ZCAhPSBudWxsKSB7DQorICAgICAgICAgdmFyIGNsb25lQ2hpbGQgPSB0aGlzLmNsb25lTm9kZShz
cmNDaGlsZCwgZG9jKTsNCisgICAgICAgICBpZiAoY2xvbmVDaGlsZCAhPSBudWxsKSB7DQorICAg
ICAgICAgICAgIGNsb25lLmFwcGVuZENoaWxkKGNsb25lQ2hpbGQpOw0KKyAgICAgICAgIH0NCisg
ICAgICAgICBzcmNDaGlsZCA9IHNyY0NoaWxkLm5leHRTaWJsaW5nOw0KKyAgICAgIH0NCisgICAg
ICBicmVhazsNCisgICAgICANCisgICAgICBjYXNlIDM6DQorICAgICAgY2xvbmUgPSBkb2MuY3Jl
YXRlVGV4dE5vZGUoc3JjTm9kZS5ub2RlVmFsdWUpOw0KKyAgICAgIGJyZWFrOw0KKyAgICAgIA0K
KyAgICAgIGNhc2UgNDoNCisgICAgICBjbG9uZSA9IGRvYy5jcmVhdGVDREFUQVNlY3Rpb24oc3Jj
Tm9kZS5ub2RlVmFsdWUpOw0KKyAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIA0KKyAgICAgIGNh
c2UgNzoNCisgICAgICBjbG9uZSA9IGRvYy5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oc3Jj
Tm9kZS5ub2RlVmFsdWUpOw0KKyAgICAgIGJyZWFrOw0KKyAgICAgIA0KKyAgICAgIGNhc2UgODoN
CisgICAgICBjbG9uZSA9IGRvYy5jcmVhdGVDb21tZW50KHNyY05vZGUubm9kZVZhbHVlKTsNCisg
ICAgICBicmVhazsNCisgICB9DQorICAgcmV0dXJuIGNsb25lOw0KKyAgICAgIA0KK30NCisNCisN
CiBIVE1MQnVpbGRlci5wcm90b3R5cGUubG9hZCA9IGZ1bmN0aW9uKGZyYW1lLCB2YXJuYW1lLCB1
cmwpIHsNCiAgIGlmICh0aGlzLmRvY3VtZW50VmFybmFtZXNbMF0gPT0gdmFybmFtZSkgew0KICAg
CXJldHVybiBkb2N1bWVudDsNCiAgIH0NCi0gIHJldHVybiBkb2N1bWVudC5jbG9uZU5vZGUodHJ1
ZSk7DQorICAvLw0KKyAgLy8NCisgIC8vICBub3QgYSBwZXJmZWN0IHdheSB0byBkbyB0aGlzDQor
ICAvLyAgICBEb2N1bWVudC5jbG9uZU5vZGUgaXMgaW1wbGVtZW50YXRpb24gZGVwZW5kZW50IGJ1
dCBleGlzdHMgaW4gTDENCisgIC8vICAgICAgIGFuZCBpbXBsZW1lbnRlZCBpbiBJRS4gIFRoZSBh
bHRlcm5hdGl2ZSBicnV0ZSBmb3JjZSBjb3B5DQorICAvLyAgICAgICBvbmx5IHdvcmtzIGluIEwy
IG9yIGhpZ2hlciBpbXBsZW1lbnRhdGlvbnMgYW5kIGNhbid0IGNvcHkNCisgIC8vICAgICAgIGVu
dGl0eSBhbmQgbm90YXRpb24gZGVmaW5pdGlvbnMsIGV0Yy4NCisgIHZhciBjbG9uZSA9IG51bGw7
DQorICB0cnkgew0KKyAgICAgIGNsb25lID0gZG9jdW1lbnQuY2xvbmVOb2RlKHRydWUpOw0KKyAg
fSBjYXRjaChleCkgew0KKyAgfQ0KKyAgaWYgKGNsb25lID09IG51bGwpIHsNCisgICAgICBjbG9u
ZSA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KA0KKyAgICAgICAgICBk
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJLA0KKyAgICAgICAgICBkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQubm9kZU5hbWUsDQorICAgICAgICAgIG51bGwpOw0KKyAgICAgIC8v
DQorICAgICAgLy8gICBXb3JrLWFyb3VuZCBzaW5jZQ0KKyAgICAgIC8vICAgU2FmYXJpIGRvZXMg
bm90IGNyZWF0ZSBkb2N1bWVudCBlbGVtZW50IA0KKyAgICAgIC8vICAgICAgY3JlYXRlIGRvY3Vt
ZW50LiAgICAgIA0KKyAgICAgIGlmIChjbG9uZS5kb2N1bWVudEVsZW1lbnQgPT0gbnVsbCkgew0K
KyAgICAgICAgICAgY2xvbmUuYXBwZW5kQ2hpbGQoY2xvbmUuY3JlYXRlRWxlbWVudChkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQubm9kZU5hbWUpKTsNCisgICAgICB9DQorICAgICAgdmFyIGF0dHJz
ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmF0dHJpYnV0ZXM7DQorICAgICAgZm9yKHZhciBp
ID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7DQorICAgICAgICAgIHZhciBzcmNBdHRyID0g
YXR0cnMuaXRlbShpKTsNCisgICAgICAgICAgY2xvbmUuZG9jdW1lbnRFbGVtZW50LnNldEF0dHJp
YnV0ZShzcmNBdHRyLm5vZGVOYW1lLCBzcmNBdHRyLm5vZGVWYWx1ZSk7DQorICAgICAgfQ0KKw0K
KyAgICAgIHZhciBzcmNOb2RlID0gZG9jdW1lbnQuZmlyc3RDaGlsZDsNCisgICAgICB3aGlsZShz
cmNOb2RlICE9IG51bGwgJiYgc3JjTm9kZS5ub2RlVHlwZSAhPSAxKSB7DQorICAgICAgICAgIGlm
IChzcmNOb2RlLm5vZGVUeXBlICE9IDEwKSB7DQorICAgICAgICAgIAkgdmFyIGNsb25lTm9kZSA9
IHRoaXMuY2xvbmVOb2RlKHNyY05vZGUsIGNsb25lKTsNCisgICAgICAgICAgICAgY2xvbmUuaW5z
ZXJ0QmVmb3JlKGNsb25lTm9kZSwgY2xvbmUuZG9jdW1lbnRFbGVtZW50KTsNCisgICAgICAgICAg
IH0NCisgICAgICAgICAgIHNyY05vZGUgPSBzcmNOb2RlLm5leHRTaWJsaW5nOyANCisgICAgICB9
DQorICAgICAgc3JjTm9kZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5uZXh0U2libGluZzsN
CisgICAgICB3aGlsZShzcmNOb2RlICE9IG51bGwpIHsNCisgICAgICAgICAgdmFyIGNsb25lTm9k
ZSA9IHRoaXMuY2xvbmVOb2RlKHNyY05vZGUsIGNsb25lKTsNCisgICAgICAgICAgY2xvbmUuYXBw
ZW5kQ2hpbGQoY2xvbmVOb2RlKTsNCisgICAgICAgICAgc3JjTm9kZSA9IHNyY05vZGUubmV4dFNp
Ymxpbmc7DQorICAgICAgfQ0KKyAgICAgIHNyY05vZGUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQuZmlyc3RDaGlsZDsNCisgICAgICB3aGlsZShzcmNOb2RlICE9IG51bGwpIHsNCisgICAgICAg
ICAgdmFyIGNsb25lTm9kZSA9IHRoaXMuY2xvbmVOb2RlKHNyY05vZGUsIGNsb25lKTsNCisgICAg
ICAgICAgaWYgKGNsb25lTm9kZSAhPSBudWxsKSB7DQorICAgICAgICAgICAgIGNsb25lLmRvY3Vt
ZW50RWxlbWVudC5hcHBlbmRDaGlsZChjbG9uZU5vZGUpOw0KKyAgICAgICAgICB9DQorICAgICAg
ICAgIHNyY05vZGUgPSBzcmNOb2RlLm5leHRTaWJsaW5nOw0KKyAgICAgIH0NCisgIH0NCisgIHJl
dHVybiBjbG9uZTsNCiB9DQogDQogSFRNTEJ1aWxkZXIucHJvdG90eXBlLmdldEltcGxlbWVudGF0
aW9uQXR0cmlidXRlID0gZnVuY3Rpb24oYXR0cikgew0KSW5kZXg6IGxheW91dC10ZXN0cy9kb20v
aHRtbC9sZXZlbDIvZXZlbnRzL3NlbGZodG1sLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
cm9vdC9XZWJDb3JlL2xheW91dC10ZXN0cy9kb20vaHRtbC9sZXZlbDIvZXZlbnRzL3NlbGZodG1s
LmpzLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEKZGlmZiAtdSAtcjEuMSBzZWxmaHRtbC5qcwot
LS0gbGF5b3V0LXRlc3RzL2RvbS9odG1sL2xldmVsMi9ldmVudHMvc2VsZmh0bWwuanMJMjYgSnVs
IDIwMDUgMDg6MzU6MTMgLTAwMDAJMS4xCisrKyBsYXlvdXQtdGVzdHMvZG9tL2h0bWwvbGV2ZWwy
L2V2ZW50cy9zZWxmaHRtbC5qcwkyOCBKdWwgMjAwNSAwNTo1NToxMSAtMDAwMApAQCAtMSw1ICsx
LDUgQEAKIC8qDQotQ29weXJpZ2h0IChjKSAyMDAxLTIwMDQgV29ybGQgV2lkZSBXZWIgQ29uc29y
dGl1bSwgDQorQ29weXJpZ2h0IChjKSAyMDAxLTIwMDUgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1
bSwgDQogKE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIEV1cm9wZWFuIFJl
c2VhcmNoIENvbnNvcnRpdW0gDQogZm9yIEluZm9ybWF0aWNzIGFuZCBNYXRoZW1hdGljcywgS2Vp
byBVbml2ZXJzaXR5KS4gQWxsIA0KIFJpZ2h0cyBSZXNlcnZlZC4gVGhpcyB3b3JrIGlzIGRpc3Ry
aWJ1dGVkIHVuZGVyIHRoZSBXM0MocikgU29mdHdhcmUgTGljZW5zZSBbMV0gaW4gdGhlIA0KQEAg
LTksOCArOSwxNiBAQAogWzFdIGh0dHA6Ly93d3cudzMub3JnL0NvbnNvcnRpdW0vTGVnYWwvMjAw
Mi9jb3B5cmlnaHQtc29mdHdhcmUtMjAwMjEyMzENCiAqLw0KIA0KKw0KKy8vDQorLy8gICBXZWJr
aXQgbW9kaWZpY2F0aW9uOiAgMjgtSnVseS0yMDA1DQorLy8NCiBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQ0KICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQor
Ly8NCisvLyAgIEVuZCBtb2RpZmljYXRpb24NCisvLw0KKw0KIA0KICAgZnVuY3Rpb24gYXNzZXJ0
U2l6ZShkZXNjciwgZXhwZWN0ZWQsIGFjdHVhbCkgew0KICAgICB2YXIgYWN0dWFsU2l6ZTsNCkBA
IC0yNDIsMTAgKzI1MCw2IEBACiAgIHJldHVybiBleHBlY3RlZCA9PT0gYWN0dWFsOw0KIH0NCiAN
Ci1mdW5jdGlvbiBnZXRTdWZmaXgoY29udGVudFR5cGUpIHsNCi0gICAgICAgIHJldHVybiAiLmh0
bWwiOw0KLX0NCi0NCiBmdW5jdGlvbiBlcXVhbHNBdXRvQ2FzZShjb250ZXh0LCBleHBlY3RlZCwg
YWN0dWFsKSB7DQogCWlmIChidWlsZGVyLmNvbnRlbnRUeXBlID09ICJ0ZXh0L2h0bWwiKSB7DQog
CQlpZiAoY29udGV4dCA9PSAiYXR0cmlidXRlIikgew0KQEAgLTM4MSwxMSArMzg1LDEwNyBAQAog
ICByZXR1cm4gMTsNCiB9DQogDQorSFRNTEJ1aWxkZXIucHJvdG90eXBlLmNsb25lTm9kZSA9IGZ1
bmN0aW9uKHNyY05vZGUsIGRvYykgew0KKyAgIHZhciBjbG9uZSA9IG51bGw7DQorICAgc3dpdGNo
KHNyY05vZGUubm9kZVR5cGUpIHsNCisgICAgICAvLw0KKyAgICAgIC8vICBlbGVtZW50DQorICAg
ICAgY2FzZSAxOg0KKyAgICAgIGNsb25lID0gZG9jLmNyZWF0ZUVsZW1lbnQoc3JjTm9kZS5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpKTsNCisgICAgICB2YXIgYXR0cnMgPSBzcmNOb2RlLmF0dHJpYnV0
ZXM7DQorICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7DQorICAg
ICAgICAgIHZhciBzcmNBdHRyID0gYXR0cnMuaXRlbShpKTsNCisgICAgICAgICAgY2xvbmUuc2V0
QXR0cmlidXRlKHNyY0F0dHIubm9kZU5hbWUsIHNyY0F0dHIubm9kZVZhbHVlKTsNCisgICAgICB9
DQorICAgICAgdmFyIHNyY0NoaWxkID0gc3JjTm9kZS5maXJzdENoaWxkOw0KKyAgICAgIHdoaWxl
KHNyY0NoaWxkICE9IG51bGwpIHsNCisgICAgICAgICB2YXIgY2xvbmVDaGlsZCA9IHRoaXMuY2xv
bmVOb2RlKHNyY0NoaWxkLCBkb2MpOw0KKyAgICAgICAgIGlmIChjbG9uZUNoaWxkICE9IG51bGwp
IHsNCisgICAgICAgICAgICAgY2xvbmUuYXBwZW5kQ2hpbGQoY2xvbmVDaGlsZCk7DQorICAgICAg
ICAgfQ0KKyAgICAgICAgIHNyY0NoaWxkID0gc3JjQ2hpbGQubmV4dFNpYmxpbmc7DQorICAgICAg
fQ0KKyAgICAgIGJyZWFrOw0KKyAgICAgIA0KKyAgICAgIGNhc2UgMzoNCisgICAgICBjbG9uZSA9
IGRvYy5jcmVhdGVUZXh0Tm9kZShzcmNOb2RlLm5vZGVWYWx1ZSk7DQorICAgICAgYnJlYWs7DQor
ICAgICAgDQorICAgICAgY2FzZSA0Og0KKyAgICAgIGNsb25lID0gZG9jLmNyZWF0ZUNEQVRBU2Vj
dGlvbihzcmNOb2RlLm5vZGVWYWx1ZSk7DQorICAgICAgYnJlYWs7DQorICAgICAgICAgICAgDQor
ICAgICAgY2FzZSA3Og0KKyAgICAgIGNsb25lID0gZG9jLmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVj
dGlvbihzcmNOb2RlLm5vZGVWYWx1ZSk7DQorICAgICAgYnJlYWs7DQorICAgICAgDQorICAgICAg
Y2FzZSA4Og0KKyAgICAgIGNsb25lID0gZG9jLmNyZWF0ZUNvbW1lbnQoc3JjTm9kZS5ub2RlVmFs
dWUpOw0KKyAgICAgIGJyZWFrOw0KKyAgIH0NCisgICByZXR1cm4gY2xvbmU7DQorICAgICAgDQor
fQ0KKw0KKw0KIEhUTUxCdWlsZGVyLnByb3RvdHlwZS5sb2FkID0gZnVuY3Rpb24oZnJhbWUsIHZh
cm5hbWUsIHVybCkgew0KICAgaWYgKHRoaXMuZG9jdW1lbnRWYXJuYW1lc1swXSA9PSB2YXJuYW1l
KSB7DQogICAJcmV0dXJuIGRvY3VtZW50Ow0KICAgfQ0KLSAgcmV0dXJuIGRvY3VtZW50LmNsb25l
Tm9kZSh0cnVlKTsNCisgIC8vDQorICAvLw0KKyAgLy8gIG5vdCBhIHBlcmZlY3Qgd2F5IHRvIGRv
IHRoaXMNCisgIC8vICAgIERvY3VtZW50LmNsb25lTm9kZSBpcyBpbXBsZW1lbnRhdGlvbiBkZXBl
bmRlbnQgYnV0IGV4aXN0cyBpbiBMMQ0KKyAgLy8gICAgICAgYW5kIGltcGxlbWVudGVkIGluIElF
LiAgVGhlIGFsdGVybmF0aXZlIGJydXRlIGZvcmNlIGNvcHkNCisgIC8vICAgICAgIG9ubHkgd29y
a3MgaW4gTDIgb3IgaGlnaGVyIGltcGxlbWVudGF0aW9ucyBhbmQgY2FuJ3QgY29weQ0KKyAgLy8g
ICAgICAgZW50aXR5IGFuZCBub3RhdGlvbiBkZWZpbml0aW9ucywgZXRjLg0KKyAgdmFyIGNsb25l
ID0gbnVsbDsNCisgIHRyeSB7DQorICAgICAgY2xvbmUgPSBkb2N1bWVudC5jbG9uZU5vZGUodHJ1
ZSk7DQorICB9IGNhdGNoKGV4KSB7DQorICB9DQorICBpZiAoY2xvbmUgPT0gbnVsbCkgew0KKyAg
ICAgIGNsb25lID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoDQorICAg
ICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkksDQorICAgICAgICAg
IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSwNCisgICAgICAgICAgbnVsbCk7DQor
ICAgICAgLy8NCisgICAgICAvLyAgIFdvcmstYXJvdW5kIHNpbmNlDQorICAgICAgLy8gICBTYWZh
cmkgZG9lcyBub3QgY3JlYXRlIGRvY3VtZW50IGVsZW1lbnQgDQorICAgICAgLy8gICAgICBjcmVh
dGUgZG9jdW1lbnQuICAgICAgDQorICAgICAgaWYgKGNsb25lLmRvY3VtZW50RWxlbWVudCA9PSBu
dWxsKSB7DQorICAgICAgICAgICBjbG9uZS5hcHBlbmRDaGlsZChjbG9uZS5jcmVhdGVFbGVtZW50
KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSkpOw0KKyAgICAgIH0NCisgICAgICB2
YXIgYXR0cnMgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXR0cmlidXRlczsNCisgICAgICBm
b3IodmFyIGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHsNCisgICAgICAgICAgdmFyIHNy
Y0F0dHIgPSBhdHRycy5pdGVtKGkpOw0KKyAgICAgICAgICBjbG9uZS5kb2N1bWVudEVsZW1lbnQu
c2V0QXR0cmlidXRlKHNyY0F0dHIubm9kZU5hbWUsIHNyY0F0dHIubm9kZVZhbHVlKTsNCisgICAg
ICB9DQorDQorICAgICAgdmFyIHNyY05vZGUgPSBkb2N1bWVudC5maXJzdENoaWxkOw0KKyAgICAg
IHdoaWxlKHNyY05vZGUgIT0gbnVsbCAmJiBzcmNOb2RlLm5vZGVUeXBlICE9IDEpIHsNCisgICAg
ICAgICAgaWYgKHNyY05vZGUubm9kZVR5cGUgIT0gMTApIHsNCisgICAgICAgICAgCSB2YXIgY2xv
bmVOb2RlID0gdGhpcy5jbG9uZU5vZGUoc3JjTm9kZSwgY2xvbmUpOw0KKyAgICAgICAgICAgICBj
bG9uZS5pbnNlcnRCZWZvcmUoY2xvbmVOb2RlLCBjbG9uZS5kb2N1bWVudEVsZW1lbnQpOw0KKyAg
ICAgICAgICAgfQ0KKyAgICAgICAgICAgc3JjTm9kZSA9IHNyY05vZGUubmV4dFNpYmxpbmc7IA0K
KyAgICAgIH0NCisgICAgICBzcmNOb2RlID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm5leHRT
aWJsaW5nOw0KKyAgICAgIHdoaWxlKHNyY05vZGUgIT0gbnVsbCkgew0KKyAgICAgICAgICB2YXIg
Y2xvbmVOb2RlID0gdGhpcy5jbG9uZU5vZGUoc3JjTm9kZSwgY2xvbmUpOw0KKyAgICAgICAgICBj
bG9uZS5hcHBlbmRDaGlsZChjbG9uZU5vZGUpOw0KKyAgICAgICAgICBzcmNOb2RlID0gc3JjTm9k
ZS5uZXh0U2libGluZzsNCisgICAgICB9DQorICAgICAgc3JjTm9kZSA9IGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudC5maXJzdENoaWxkOw0KKyAgICAgIHdoaWxlKHNyY05vZGUgIT0gbnVsbCkgew0K
KyAgICAgICAgICB2YXIgY2xvbmVOb2RlID0gdGhpcy5jbG9uZU5vZGUoc3JjTm9kZSwgY2xvbmUp
Ow0KKyAgICAgICAgICBpZiAoY2xvbmVOb2RlICE9IG51bGwpIHsNCisgICAgICAgICAgICAgY2xv
bmUuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGNsb25lTm9kZSk7DQorICAgICAgICAgIH0N
CisgICAgICAgICAgc3JjTm9kZSA9IHNyY05vZGUubmV4dFNpYmxpbmc7DQorICAgICAgfQ0KKyAg
fQ0KKyAgcmV0dXJuIGNsb25lOw0KIH0NCiANCiBIVE1MQnVpbGRlci5wcm90b3R5cGUuZ2V0SW1w
bGVtZW50YXRpb25BdHRyaWJ1dGUgPSBmdW5jdGlvbihhdHRyKSB7DQpAQCAtNTQ5LDYgKzY0OSwz
NyBAQAogfQ0KIA0KIA0KKw0KK2Z1bmN0aW9uIGdldFN1ZmZpeChjb250ZW50VHlwZSkgew0KKyAg
ICBzd2l0Y2goY29udGVudFR5cGUpIHsNCisgICAgICAgIGNhc2UgInRleHQveG1sIjoNCisgICAg
ICAgIHJldHVybiAiLnhtbCI7DQorDQorICAgICAgICBjYXNlICJhcHBsaWNhdGlvbi94aHRtbCt4
bWwiOg0KKyAgICAgICAgcmV0dXJuICIueGh0bWwiOw0KKw0KKyAgICAgICAgY2FzZSAiaW1hZ2Uv
c3ZnK3htbCI6DQorICAgICAgICByZXR1cm4gIi5zdmciOw0KKw0KKyAgICAgICAgY2FzZSAidGV4
dC9tYXRobWwiOg0KKyAgICAgICAgcmV0dXJuICIubW1sIjsNCisgICAgfQ0KKyAgICByZXR1cm4g
Ii5odG1sIjsNCit9DQorDQorDQorZnVuY3Rpb24gZ2V0UmVzb3VyY2VVUkkobmFtZSwgc2NoZW1l
LCBjb250ZW50VHlwZSkgew0KKyAgICB2YXIgYmFzZSA9IGRvY3VtZW50LmRvY3VtZW50VVJJOw0K
KyAgICBpZiAoYmFzZSA9PSBudWxsKSB7DQorICAgICAgIGJhc2UgPSAiIjsNCisgICAgfSBlbHNl
IHsNCisJICAgYmFzZSA9IGJhc2Uuc3Vic3RyaW5nKDAsIGJhc2UubGFzdEluZGV4T2YoJy8nKSAr
IDEpICsgImZpbGVzLyI7DQorICAgIH0NCisgICAgcmV0dXJuIGJhc2UgKyBuYW1lICsgZ2V0U3Vm
Zml4KGNvbnRlbnRUeXBlKTsNCit9DQorDQorDQorDQogZnVuY3Rpb24gc3RhcnRUZXN0KCkgew0K
IAkvLw0KIAkvLyAgIGludm9rZSB0ZXN0IHNldHVwDQpJbmRleDogbGF5b3V0LXRlc3RzL2RvbS9o
dG1sL2xldmVsMi9odG1sL3NlbGZodG1sLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9v
dC9XZWJDb3JlL2xheW91dC10ZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9zZWxmaHRtbC5qcyx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xCmRpZmYgLXUgLXIxLjEgc2VsZmh0bWwuanMKLS0tIGxh
eW91dC10ZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9zZWxmaHRtbC5qcwkyNiBKdWwgMjAwNSAw
ODozNjowMyAtMDAwMAkxLjEKKysrIGxheW91dC10ZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9z
ZWxmaHRtbC5qcwkyOCBKdWwgMjAwNSAwNTo1NToxMSAtMDAwMApAQCAtOSw4ICs5LDE2IEBACiBb
MV0gaHR0cDovL3d3dy53My5vcmcvQ29uc29ydGl1bS9MZWdhbC8yMDAyL2NvcHlyaWdodC1zb2Z0
d2FyZS0yMDAyMTIzMQ0KICovDQogDQorDQorLy8NCisvLyAgIFdlYmtpdCBtb2RpZmljYXRpb246
ICAyOC1KdWx5LTIwMDUNCisvLw0KIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQog
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCisvLw0KKy8vICAgRW5kIG1v
ZGlmaWNhdGlvbg0KKy8vDQorDQogDQogICBmdW5jdGlvbiBhc3NlcnRTaXplKGRlc2NyLCBleHBl
Y3RlZCwgYWN0dWFsKSB7DQogICAgIHZhciBhY3R1YWxTaXplOw0KQEAgLTM3NywxMSArMzg1LDEw
NyBAQAogICByZXR1cm4gMTsNCiB9DQogDQorSFRNTEJ1aWxkZXIucHJvdG90eXBlLmNsb25lTm9k
ZSA9IGZ1bmN0aW9uKHNyY05vZGUsIGRvYykgew0KKyAgIHZhciBjbG9uZSA9IG51bGw7DQorICAg
c3dpdGNoKHNyY05vZGUubm9kZVR5cGUpIHsNCisgICAgICAvLw0KKyAgICAgIC8vICBlbGVtZW50
DQorICAgICAgY2FzZSAxOg0KKyAgICAgIGNsb25lID0gZG9jLmNyZWF0ZUVsZW1lbnQoc3JjTm9k
ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKTsNCisgICAgICB2YXIgYXR0cnMgPSBzcmNOb2RlLmF0
dHJpYnV0ZXM7DQorICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7
DQorICAgICAgICAgIHZhciBzcmNBdHRyID0gYXR0cnMuaXRlbShpKTsNCisgICAgICAgICAgY2xv
bmUuc2V0QXR0cmlidXRlKHNyY0F0dHIubm9kZU5hbWUsIHNyY0F0dHIubm9kZVZhbHVlKTsNCisg
ICAgICB9DQorICAgICAgdmFyIHNyY0NoaWxkID0gc3JjTm9kZS5maXJzdENoaWxkOw0KKyAgICAg
IHdoaWxlKHNyY0NoaWxkICE9IG51bGwpIHsNCisgICAgICAgICB2YXIgY2xvbmVDaGlsZCA9IHRo
aXMuY2xvbmVOb2RlKHNyY0NoaWxkLCBkb2MpOw0KKyAgICAgICAgIGlmIChjbG9uZUNoaWxkICE9
IG51bGwpIHsNCisgICAgICAgICAgICAgY2xvbmUuYXBwZW5kQ2hpbGQoY2xvbmVDaGlsZCk7DQor
ICAgICAgICAgfQ0KKyAgICAgICAgIHNyY0NoaWxkID0gc3JjQ2hpbGQubmV4dFNpYmxpbmc7DQor
ICAgICAgfQ0KKyAgICAgIGJyZWFrOw0KKyAgICAgIA0KKyAgICAgIGNhc2UgMzoNCisgICAgICBj
bG9uZSA9IGRvYy5jcmVhdGVUZXh0Tm9kZShzcmNOb2RlLm5vZGVWYWx1ZSk7DQorICAgICAgYnJl
YWs7DQorICAgICAgDQorICAgICAgY2FzZSA0Og0KKyAgICAgIGNsb25lID0gZG9jLmNyZWF0ZUNE
QVRBU2VjdGlvbihzcmNOb2RlLm5vZGVWYWx1ZSk7DQorICAgICAgYnJlYWs7DQorICAgICAgICAg
ICAgDQorICAgICAgY2FzZSA3Og0KKyAgICAgIGNsb25lID0gZG9jLmNyZWF0ZVByb2Nlc3NpbmdJ
bnN0cnVjdGlvbihzcmNOb2RlLm5vZGVWYWx1ZSk7DQorICAgICAgYnJlYWs7DQorICAgICAgDQor
ICAgICAgY2FzZSA4Og0KKyAgICAgIGNsb25lID0gZG9jLmNyZWF0ZUNvbW1lbnQoc3JjTm9kZS5u
b2RlVmFsdWUpOw0KKyAgICAgIGJyZWFrOw0KKyAgIH0NCisgICByZXR1cm4gY2xvbmU7DQorICAg
ICAgDQorfQ0KKw0KKw0KIEhUTUxCdWlsZGVyLnByb3RvdHlwZS5sb2FkID0gZnVuY3Rpb24oZnJh
bWUsIHZhcm5hbWUsIHVybCkgew0KICAgaWYgKHRoaXMuZG9jdW1lbnRWYXJuYW1lc1swXSA9PSB2
YXJuYW1lKSB7DQogICAJcmV0dXJuIGRvY3VtZW50Ow0KICAgfQ0KLSAgcmV0dXJuIGRvY3VtZW50
LmNsb25lTm9kZSh0cnVlKTsNCisgIC8vDQorICAvLw0KKyAgLy8gIG5vdCBhIHBlcmZlY3Qgd2F5
IHRvIGRvIHRoaXMNCisgIC8vICAgIERvY3VtZW50LmNsb25lTm9kZSBpcyBpbXBsZW1lbnRhdGlv
biBkZXBlbmRlbnQgYnV0IGV4aXN0cyBpbiBMMQ0KKyAgLy8gICAgICAgYW5kIGltcGxlbWVudGVk
IGluIElFLiAgVGhlIGFsdGVybmF0aXZlIGJydXRlIGZvcmNlIGNvcHkNCisgIC8vICAgICAgIG9u
bHkgd29ya3MgaW4gTDIgb3IgaGlnaGVyIGltcGxlbWVudGF0aW9ucyBhbmQgY2FuJ3QgY29weQ0K
KyAgLy8gICAgICAgZW50aXR5IGFuZCBub3RhdGlvbiBkZWZpbml0aW9ucywgZXRjLg0KKyAgdmFy
IGNsb25lID0gbnVsbDsNCisgIHRyeSB7DQorICAgICAgY2xvbmUgPSBkb2N1bWVudC5jbG9uZU5v
ZGUodHJ1ZSk7DQorICB9IGNhdGNoKGV4KSB7DQorICB9DQorICBpZiAoY2xvbmUgPT0gbnVsbCkg
ew0KKyAgICAgIGNsb25lID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQo
DQorICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkksDQorICAg
ICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSwNCisgICAgICAgICAgbnVs
bCk7DQorICAgICAgLy8NCisgICAgICAvLyAgIFdvcmstYXJvdW5kIHNpbmNlDQorICAgICAgLy8g
ICBTYWZhcmkgZG9lcyBub3QgY3JlYXRlIGRvY3VtZW50IGVsZW1lbnQgDQorICAgICAgLy8gICAg
ICBjcmVhdGUgZG9jdW1lbnQuICAgICAgDQorICAgICAgaWYgKGNsb25lLmRvY3VtZW50RWxlbWVu
dCA9PSBudWxsKSB7DQorICAgICAgICAgICBjbG9uZS5hcHBlbmRDaGlsZChjbG9uZS5jcmVhdGVF
bGVtZW50KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSkpOw0KKyAgICAgIH0NCisg
ICAgICB2YXIgYXR0cnMgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXR0cmlidXRlczsNCisg
ICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHsNCisgICAgICAgICAg
dmFyIHNyY0F0dHIgPSBhdHRycy5pdGVtKGkpOw0KKyAgICAgICAgICBjbG9uZS5kb2N1bWVudEVs
ZW1lbnQuc2V0QXR0cmlidXRlKHNyY0F0dHIubm9kZU5hbWUsIHNyY0F0dHIubm9kZVZhbHVlKTsN
CisgICAgICB9DQorDQorICAgICAgdmFyIHNyY05vZGUgPSBkb2N1bWVudC5maXJzdENoaWxkOw0K
KyAgICAgIHdoaWxlKHNyY05vZGUgIT0gbnVsbCAmJiBzcmNOb2RlLm5vZGVUeXBlICE9IDEpIHsN
CisgICAgICAgICAgaWYgKHNyY05vZGUubm9kZVR5cGUgIT0gMTApIHsNCisgICAgICAgICAgCSB2
YXIgY2xvbmVOb2RlID0gdGhpcy5jbG9uZU5vZGUoc3JjTm9kZSwgY2xvbmUpOw0KKyAgICAgICAg
ICAgICBjbG9uZS5pbnNlcnRCZWZvcmUoY2xvbmVOb2RlLCBjbG9uZS5kb2N1bWVudEVsZW1lbnQp
Ow0KKyAgICAgICAgICAgfQ0KKyAgICAgICAgICAgc3JjTm9kZSA9IHNyY05vZGUubmV4dFNpYmxp
bmc7IA0KKyAgICAgIH0NCisgICAgICBzcmNOb2RlID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
Lm5leHRTaWJsaW5nOw0KKyAgICAgIHdoaWxlKHNyY05vZGUgIT0gbnVsbCkgew0KKyAgICAgICAg
ICB2YXIgY2xvbmVOb2RlID0gdGhpcy5jbG9uZU5vZGUoc3JjTm9kZSwgY2xvbmUpOw0KKyAgICAg
ICAgICBjbG9uZS5hcHBlbmRDaGlsZChjbG9uZU5vZGUpOw0KKyAgICAgICAgICBzcmNOb2RlID0g
c3JjTm9kZS5uZXh0U2libGluZzsNCisgICAgICB9DQorICAgICAgc3JjTm9kZSA9IGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkOw0KKyAgICAgIHdoaWxlKHNyY05vZGUgIT0gbnVs
bCkgew0KKyAgICAgICAgICB2YXIgY2xvbmVOb2RlID0gdGhpcy5jbG9uZU5vZGUoc3JjTm9kZSwg
Y2xvbmUpOw0KKyAgICAgICAgICBpZiAoY2xvbmVOb2RlICE9IG51bGwpIHsNCisgICAgICAgICAg
ICAgY2xvbmUuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGNsb25lTm9kZSk7DQorICAgICAg
ICAgIH0NCisgICAgICAgICAgc3JjTm9kZSA9IHNyY05vZGUubmV4dFNpYmxpbmc7DQorICAgICAg
fQ0KKyAgfQ0KKyAgcmV0dXJuIGNsb25lOw0KIH0NCiANCiBIVE1MQnVpbGRlci5wcm90b3R5cGUu
Z2V0SW1wbGVtZW50YXRpb25BdHRyaWJ1dGUgPSBmdW5jdGlvbihhdHRyKSB7DQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>