<?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>56082</bug_id>
          
          <creation_ts>2011-03-10 01:57:21 -0800</creation_ts>
          <short_desc>Look-ahead assertions with back references don’t work as expected</short_desc>
          <delta_ts>2011-03-14 17:36:41 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Markus Wulftange">markus.wulftange</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>barraclough</cc>
    
    <cc>msaboff</cc>
    
    <cc>pvarga</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>365053</commentid>
    <comment_count>0</comment_count>
    <who name="Markus Wulftange">markus.wulftange</who>
    <bug_when>2011-03-10 01:57:21 -0800</bug_when>
    <thetext>There seems to be a bug with look-ahead assertions that use a back reference:

     &quot;P11&quot;.match(/^P([1-6])(?=\1)([1-6])$/)

This obviously should match as there is another 1 following the first 1 (matched string of the first group). In opposite to this, using a negated look-ahead assertion instead does match although there is another 1 following:

     &quot;P11&quot;.match(/^P([1-6])(?!\1)([1-6])$/)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365313</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-10 10:55:56 -0800</bug_when>
    <thetext>Is this a regression from Safari 5 that you&apos;re seeing in nightly builds?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365314</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-10 10:56:24 -0800</bug_when>
    <thetext>Is this a regression from Safari 5 that you&apos;re seeing in nightly builds?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365339</commentid>
    <comment_count>3</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-03-10 11:20:47 -0800</bug_when>
    <thetext>Reduction to /(x)(?=\1)x/.exec(&quot;xx&quot;) also fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365546</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-03-10 14:46:43 -0800</bug_when>
    <thetext>The bug relates to the pre-checking of input.
In the reduced case of /(x)(?=\1)x/.exec(&quot;xx&quot;) , we:

(1) check 2 characters are available (increments input position by 2, to end of string)
(2) check the initial capturing &apos;x&apos; (at input offset -2)
(3) enter the parenthetical assertion
(4) try to check the back reference at offset -1.

The first step of trying to mach the back-ref is to check that matchSize (1) bytes are available to check.  However they are not, since they have been pre-checked for allow for the part of the pattern after the parenthetical assertion.  (this can be demonstrated by testing with input &quot;xxy&quot; - the presence of the &apos;y&apos; allows the matchSize check to pass, and then the back ref test works correctly).

A simple fix would appear to be to make the back reference only check matchSize bytes less the input offset from the end, however this would not be correct.  (E.g. suppose the back ref were quantified such as &apos;\1{2}&apos; - given the above example the first match of the back ref would need check 0 bytes but the second would need to check 1).


The same problem can be demonstrated with the following test:
    /(?=((?:ab)*))a/.exec(&quot;ab&quot;)
This should have results [&quot;a&quot;,&quot;ab&quot;], but we currently produce [&quot;a&quot;,&quot;&quot;].  (Again, an additional character of input fixes the issue, e.g. &quot;abc&quot; gets the right result).  This demonstrates that the issue is not specific to back-references, but can effect anything in a parenthetical assertion.


The correct fix here is most likely to prevent pre-checking of input from spanning over parenthetical assertions.  I.e., given an expression /abc(?=$FOO)bar/, rather than pre-checking 6 at the start of the expression we should just pre-check 3, then run the parenthetical assertion, then pre-check the next three after the parenthetic assertion has matched.

An alternative that might be slightly more performant would be to fully pre-check at at the head of the outer alternative, then unwind the input pointer around the alternative.  (E.g. in the case of /abc(?=$FOO)bar/ we could pre-check 6, when we enter the assertion decrement input position by 3, on assertion match increment again by 3, with matching adjustments when backtracking through the assertion).  If we made the change in this fashion we&apos;d also need modify the way that the input offsets within the assertion are calculated, since they would no longer be correct.  This is probably not an important case to optimize, and this sounds fragile, so I&apos;d suggest just breaking the pre-checking from spanning over the assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365977</commentid>
    <comment_count>5</comment_count>
    <who name="Peter Varga">pvarga</who>
    <bug_when>2011-03-11 06:47:14 -0800</bug_when>
    <thetext>I guess I have already reported a very similar problem at https://bugs.webkit.org/show_bug.cgi?id=55589

The test case at that bug (pcre-test-1) isn&apos;t a fallback case therefore the YARR JIT passes on it. The YARR JIT handles the look-ahead assertions correctly thus the YARR Interpreter needs a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366382</commentid>
    <comment_count>6</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-03-11 15:45:25 -0800</bug_when>
    <thetext>Peter, ah yes- that looks like a related bug, cheers! - hopefully should be fixed by this.

Michael, here are all the test regexes we were looking at yesterday, along with a list of test inputs we were using - should all be good for a regression test.

cheers,
G.


/^P([1-6])(?!\1)([1-6])$/
&quot;P11&quot;

/(x)(?=\1)x/
&quot;x&quot;, &quot;xx&quot;, &quot;xxy&quot;

/(x)zzz(?=\1)x/
&quot;xzzzx&quot;, &quot;xzzzxy&quot;

/(a)\1(?=(b*c))bc/
/(a)a(?=(b*c))bc/
&quot;aabc&quot;, &quot;aabcx&quot;

/a(?=(b*c))bc/
/(?=((?:ab)*))a/
&quot;ab&quot;, &quot;abc&quot;

/(?=((?:xx)*))x/
/(?=((xx)*))x/
/(?=(xx))+x/
&quot;x&quot;, &quot;xx&quot;, &quot;xxx&quot;

/(?=a+b)aab/
&quot;aab&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367286</commentid>
    <comment_count>7</comment_count>
      <attachid>85729</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-03-14 15:25:21 -0700</bug_when>
    <thetext>Created attachment 85729
Patch that tests assertion pre-checked character length independent from the remaining expression</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367352</commentid>
    <comment_count>8</comment_count>
      <attachid>85729</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-03-14 16:50:05 -0700</bug_when>
    <thetext>Comment on attachment 85729
Patch that tests assertion pre-checked character length independent from the remaining expression

looks great Michael.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367375</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-03-14 17:36:41 -0700</bug_when>
    <thetext>Committed r81085: &lt;http://trac.webkit.org/changeset/81085&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85729</attachid>
            <date>2011-03-14 15:25:21 -0700</date>
            <delta_ts>2011-03-14 16:50:05 -0700</delta_ts>
            <desc>Patch that tests assertion pre-checked character length independent from the remaining expression</desc>
            <filename>56082.patch</filename>
            <type>text/plain</type>
            <size>10626</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODEwNDgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTEtMDMtMTQgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTG9vay1haGVhZCBhc3Nl
cnRpb25zIHdpdGggYmFjayByZWZlcmVuY2VzIGRvbuKAmXQgd29yayBhcyBleHBlY3RlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODIKKworICAg
ICAgICBDaGFuZ2VkIHBhcmVudGhlc2VzIGFzc2VydGlvbiBwcm9jZXNzaW5nIHRvIHRlbXBvcmFy
aWx5IGJhY2sgb3V0IHRoZSAKKyAgICAgICAgbnVtYmVyIG9mIGtub3duIGNoYXJhY3RlcnMgYWZ0
ZXIgdGhlIGFzc2VydGlvbiB3aGlsZSBwcm9jZXNzaW5nIHRoZSAKKyAgICAgICAgYXNzZXJ0aW9u
LiAgVGhpcyB3YXMgZG9uZSBzbyB0aGF0IGFzc2VydGlvbnMgZG9uJ3QgZmFpbCBkdWUgdG8gCisg
ICAgICAgIGNoZWNraW5nIHRoZSBudW1iZXIgb2YgcmVxdWlyZWQgY2hhcmFjdGVycyBhcyBhZGRp
dGlvbmFsIHRvIHRoZSAKKyAgICAgICAgcmVzdCBvZiB0aGUgZXhwcmVzcyBzaW5jZSBhc3NlcnRp
b25zIGRvbid0ICJjb25zdW1lIiBpbnB1dC4KKyAgICAgICAgQWRkZWQgYSBieXRlIGNvZGUgdG8g
dW5jaGVjayBjaGFyYWN0ZXJzIHRvIHN1cHBvcnQgdGhlIGNoYW5nZS4KKworICAgICAgICAqIHlh
cnIvWWFyckludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6
Om1hdGNoRGlzanVuY3Rpb24pOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OnVu
Y2hlY2tJbnB1dCk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6ZW1pdERpc2p1
bmN0aW9uKToKKyAgICAgICAgKiB5YXJyL1lhcnJJbnRlcnByZXRlci5oOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlVGVybTo6VW5jaGVja0lucHV0KToKKwogMjAxMS0wMy0xNCAgT2xpdmVyIEh1
bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB3aW5kb3dzIGJ1aWxkCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAJKHJl
dmlzaW9uIDgxMDQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJl
dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzNCw2ICsxMjM0LDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIGlmIChpbnB1dC5jaGVja0lucHV0KGN1cnJlbnRUZXJtKCkuY2hlY2tJbnB1dENv
dW50KSkKICAgICAgICAgICAgICAgICBNQVRDSF9ORVhUKCk7CiAgICAgICAgICAgICBCQUNLVFJB
Q0soKTsKKworICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVVuY2hlY2tJbnB1dDoKKyAg
ICAgICAgICAgICAgICBpbnB1dC51bmNoZWNrSW5wdXQoY3VycmVudFRlcm0oKS5jaGVja0lucHV0
Q291bnQpOworICAgICAgICAgICAgICAgIE1BVENIX05FWFQoKTsKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIFdlIHNob3VsZCBuZXZlciBmYWxsLXRocm91Z2ggdG8gaGVyZS4KQEAgLTEzNTQsNiAr
MTM1OCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQ2hlY2tJ
bnB1dDoKICAgICAgICAgICAgICAgICBpbnB1dC51bmNoZWNrSW5wdXQoY3VycmVudFRlcm0oKS5j
aGVja0lucHV0Q291bnQpOwogICAgICAgICAgICAgICAgIEJBQ0tUUkFDSygpOworCisgICAgICAg
ICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlVW5jaGVja0lucHV0OgorICAgICAgICAgICAgICAgIGlu
cHV0LmNoZWNrSW5wdXQoY3VycmVudFRlcm0oKS5jaGVja0lucHV0Q291bnQpOworICAgICAgICAg
ICAgICAgIEJBQ0tUUkFDSygpOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0xNDUzLDYgKzE0NjEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2JvZHlEaXNq
dW5jdGlvbi0+dGVybXMuYXBwZW5kKEJ5dGVUZXJtOjpDaGVja0lucHV0KGNvdW50KSk7CiAgICAg
fQogCisgICAgdm9pZCB1bmNoZWNrSW5wdXQodW5zaWduZWQgY291bnQpCisgICAgeworICAgICAg
ICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMuYXBwZW5kKEJ5dGVUZXJtOjpVbmNoZWNrSW5wdXQo
Y291bnQpKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBhc3NlcnRpb25CT0woaW50IGlucHV0UG9z
aXRpb24pCiAgICAgewogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMuYXBwZW5kKEJ5
dGVUZXJtOjpCT0woaW5wdXRQb3NpdGlvbikpOwpAQCAtMTg0OSwxMCArMTg2MiwyMSBAQCBwdWJs
aWM6CiAKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGN1cnJlbnRDb3VudEFscmVhZHlDaGVj
a2VkID49IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0ZXJtLmlucHV0UG9zaXRpb24pKTsKICAgICAg
ICAgICAgICAgICAgICAgaW50IHBvc2l0aXZlSW5wdXRPZmZzZXQgPSBjdXJyZW50Q291bnRBbHJl
YWR5Q2hlY2tlZCAtIHRlcm0uaW5wdXRQb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgaW50
IHVuY2hlY2tBbW91bnQgPSBwb3NpdGl2ZUlucHV0T2Zmc2V0IC0gdGVybS5wYXJlbnRoZXNlcy5k
aXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZTsKKworICAgICAgICAgICAgICAgICAgICBpZiAodW5j
aGVja0Ftb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuY2hlY2tJbnB1dCh1
bmNoZWNrQW1vdW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb3VudEFscmVh
ZHlDaGVja2VkIC09IHVuY2hlY2tBbW91bnQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgdW5jaGVja0Ftb3VudCA9IDA7CiAKICAgICAgICAgICAg
ICAgICAgICAgYXRvbVBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbih0ZXJtLnBhcmVudGhlc2Vz
LnN1YnBhdHRlcm5JZCwgdGVybS5pbnZlcnQoKSwgdGVybS5mcmFtZUxvY2F0aW9uLCBhbHRlcm5h
dGl2ZUZyYW1lTG9jYXRpb24pOwogICAgICAgICAgICAgICAgICAgICBlbWl0RGlzanVuY3Rpb24o
dGVybS5wYXJlbnRoZXNlcy5kaXNqdW5jdGlvbiwgY3VycmVudENvdW50QWxyZWFkeUNoZWNrZWQs
IHBvc2l0aXZlSW5wdXRPZmZzZXQsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICBhdG9tUGFy
ZW50aGV0aWNhbEFzc2VydGlvbkVuZCgwLCB0ZXJtLmZyYW1lTG9jYXRpb24sIHRlcm0ucXVhbnRp
dHlDb3VudCwgdGVybS5xdWFudGl0eVR5cGUpOworICAgICAgICAgICAgICAgICAgICBpZiAodW5j
aGVja0Ftb3VudCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJbnB1dCh1bmNoZWNr
QW1vdW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb3VudEFscmVhZHlDaGVj
a2VkICs9IHVuY2hlY2tBbW91bnQ7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5oCShyZXZp
c2lvbiA4MTA0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw3IEBAIHN0cnVjdCBCeXRlVGVybSB7CiAg
ICAgICAgIFR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4sCiAgICAgICAgIFR5cGVQYXJl
bnRoZXRpY2FsQXNzZXJ0aW9uRW5kLAogICAgICAgICBUeXBlQ2hlY2tJbnB1dCwKKyAgICAgICAg
VHlwZVVuY2hlY2tJbnB1dCwKICAgICB9IHR5cGU7CiAgICAgdW5pb24gewogICAgICAgICBzdHJ1
Y3QgewpAQCAtMjA1LDYgKzIwNiwxMyBAQCBzdHJ1Y3QgQnl0ZVRlcm0gewogICAgICAgICByZXR1
cm4gdGVybTsKICAgICB9CiAKKyAgICBzdGF0aWMgQnl0ZVRlcm0gVW5jaGVja0lucHV0KHVuc2ln
bmVkIGNvdW50KQorICAgIHsKKyAgICAgICAgQnl0ZVRlcm0gdGVybShUeXBlVW5jaGVja0lucHV0
KTsKKyAgICAgICAgdGVybS5jaGVja0lucHV0Q291bnQgPSBjb3VudDsKKyAgICAgICAgcmV0dXJu
IHRlcm07CisgICAgfQorICAgIAogICAgIHN0YXRpYyBCeXRlVGVybSBFT0woaW50IGlucHV0UG9z
KQogICAgIHsKICAgICAgICAgQnl0ZVRlcm0gdGVybShUeXBlQXNzZXJ0aW9uRU9MKTsKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDgxMDQ4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDMtMTQgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9m
ZkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTG9vay1haGVhZCBhc3NlcnRpb25zIHdpdGggYmFjayByZWZlcmVuY2VzIGRvbuKAmXQg
d29yayBhcyBleHBlY3RlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTYwODIKKworICAgICAgICBOZXcgdGVzdHMgdG8gdmVyaWZ5IHRoZSBjb3JyZXNw
b25kaW5nIGNoYW5nZXMuCisKKyAgICAgICAgKiBmYXN0L3JlZ2V4L2Fzc2VydGlvbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnZXgvYXNzZXJ0aW9uLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL2Fzc2VydGlvbi5qczogQWRkZWQu
CisKIDIwMTEtMDMtMTQgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEltcHJvdmVtZW50cyBmb3IgdGhlIG1vbmRvIGxpbnV4IGRlYnVnIGZhaWx1cmUgbGlzdCBj
aGFuZ2VzOgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZWdleC9hc3NlcnRpb24tZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcmVnZXgvYXNzZXJ0aW9uLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvcmVnZXgvYXNzZXJ0aW9u
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAorVGhpcyBwYWdlIHRl
c3RzIGhhbmRsaW5nIG9mIHBhcmVudGhldGljYWwgYXNzZXJ0aW9ucy4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgcmVnZXgxLmV4ZWMoJ3h4JykgaXMgWyd4eCcsJ3gnXQor
UEFTUyByZWdleDIuZXhlYygnYmFhYWJhYWMnKSBpcyBbJ2JhYWFiYWFjJywnYmEnLHVuZGVmaW5l
ZCwnYWJhYWMnXQorUEFTUyByZWdleDMuZXhlYygnYWFhYicpIGlzIFsnYWFiJywnYScsJ2FhYidd
CitQQVNTIHJlZ2V4NC5leGVjKCdhYWFiJykgaXMgWydhYWInLCdhJywnYWFiJ10KK1BBU1MgcmVn
ZXg1LmV4ZWMoJ1AxMScpIGlzIFsnUDExJywnMScsJzEnXQorUEFTUyByZWdleDYuZXhlYygnYWJh
YmJiY2JjJykgaXMgWydhYmFiYicsJ2JiJywnYiddCitQQVNTIHJlZ2V4Ny5leGVjKCd4eCcpIGlz
IFsneHgnLCd4J10KK1BBU1MgcmVnZXg4LmV4ZWMoJ3h4JykgaXMgWyd4eCcsJ3gnLCd4J10KK1BB
U1MgcmVnZXg5LmV4ZWMoJ3h5JykgaXMgbnVsbAorUEFTUyByZWdleDEwLmV4ZWMoJ3h5JykgaXMg
bnVsbAorUEFTUyByZWdleDExLmV4ZWMoJ3h5JykgaXMgbnVsbAorUEFTUyByZWdleDEyLmV4ZWMo
J3gnKSBpcyBudWxsCitQQVNTIHJlZ2V4MTIuZXhlYygneHgnKSBpcyBbJ3h4JywneCddCitQQVNT
IHJlZ2V4MTIuZXhlYygneHh5JykgaXMgWyd4eCcsJ3gnXQorUEFTUyByZWdleDEzLmV4ZWMoJ3h6
enp4JykgaXMgWyd4enp6eCcsJ3gnXQorUEFTUyByZWdleDEzLmV4ZWMoJ3h6enp4eScpIGlzIFsn
eHp6engnLCd4J10KK1BBU1MgcmVnZXgxNC5leGVjKCdhYWJjJykgaXMgWydhYWJjJywnYScsJ2Jj
J10KK1BBU1MgcmVnZXgxNC5leGVjKCdhYWJjeCcpIGlzIFsnYWFiYycsJ2EnLCdiYyddCitQQVNT
IHJlZ2V4MTUuZXhlYygnYWFiYycpIGlzIFsnYWFiYycsJ2EnLCdiYyddCitQQVNTIHJlZ2V4MTUu
ZXhlYygnYWFiY3gnKSBpcyBbJ2FhYmMnLCdhJywnYmMnXQorUEFTUyByZWdleDE2LmV4ZWMoJ2Fi
JykgaXMgbnVsbAorUEFTUyByZWdleDE2LmV4ZWMoJ2FiYycpIGlzIFsnYWJjJywnYmMnXQorUEFT
UyByZWdleDE3LmV4ZWMoJ2FiJykgaXMgWydhJywnYWInXQorUEFTUyByZWdleDE3LmV4ZWMoJ2Fi
YycpIGlzIFsnYScsJ2FiJ10KK1BBU1MgcmVnZXgxOC5leGVjKCd4JykgaXMgWyd4JywnJ10KK1BB
U1MgcmVnZXgxOC5leGVjKCd4eCcpIGlzIFsneCcsJ3h4J10KK1BBU1MgcmVnZXgxOC5leGVjKCd4
eHgnKSBpcyBbJ3gnLCd4eCddCitQQVNTIHJlZ2V4MTkuZXhlYygneCcpIGlzIFsneCcsJycsdW5k
ZWZpbmVkXQorUEFTUyByZWdleDE5LmV4ZWMoJ3h4JykgaXMgWyd4JywneHgnLCd4eCddCitQQVNT
IHJlZ2V4MTkuZXhlYygneHh4JykgaXMgWyd4JywneHgnLCd4eCddCitQQVNTIHJlZ2V4MjAuZXhl
YygneCcpIGlzIG51bGwKK1BBU1MgcmVnZXgyMC5leGVjKCd4eCcpIGlzIFsneCcsJ3h4J10KK1BB
U1MgcmVnZXgyMC5leGVjKCd4eHgnKSBpcyBbJ3gnLCd4eCddCitQQVNTIHJlZ2V4MjEuZXhlYygn
YWFiJykgaXMgWydhYWInXQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVnZXgvYXNzZXJ0aW9uLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZWdleC9hc3NlcnRpb24uaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvcmVnZXgvYXNzZXJ0aW9uLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQgc3JjPSJzY3JpcHQtdGVzdHMvYXNzZXJ0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL2Fzc2VydGlv
bi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3JlZ2V4L3NjcmlwdC10ZXN0cy9h
c3NlcnRpb24uanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlZ2V4L3Njcmlw
dC10ZXN0cy9hc3NlcnRpb24uanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKK2Rlc2Ny
aXB0aW9uKCJUaGlzIHBhZ2UgdGVzdHMgaGFuZGxpbmcgb2YgcGFyZW50aGV0aWNhbCBhc3NlcnRp
b25zLiIpOworCit2YXIgcmVnZXgxID0gLyh4KSg/PVwxKXgvOworc2hvdWxkQmUoInJlZ2V4MS5l
eGVjKCd4eCcpIiwgIlsneHgnLCd4J10iKTsKKwordmFyIHJlZ2V4MiA9IC8oLio/KWEoPyEoYSsp
YlwyYylcMiguKikvOworc2hvdWxkQmUoInJlZ2V4Mi5leGVjKCdiYWFhYmFhYycpIiwgIlsnYmFh
YWJhYWMnLCdiYScsdW5kZWZpbmVkLCdhYmFhYyddIik7CisKK3ZhciByZWdleDMgPSAvKD89KGEr
PykpKFwxYWIpLzsKK3Nob3VsZEJlKCJyZWdleDMuZXhlYygnYWFhYicpIiwgIlsnYWFiJywnYScs
J2FhYiddIik7CisKK3ZhciByZWdleDQgPSAvKD89KGErPykpKFwxYWIpLzsKK3Nob3VsZEJlKCJy
ZWdleDQuZXhlYygnYWFhYicpIiwgIlsnYWFiJywnYScsJ2FhYiddIik7CisKK3ZhciByZWdleDUg
PSAvXlAoWzEtNl0pKD89XDEpKFsxLTZdKSQvOworc2hvdWxkQmUoInJlZ2V4NS5leGVjKCdQMTEn
KSIsICJbJ1AxMScsJzEnLCcxJ10iKTsKKwordmFyIHJlZ2V4NiA9IC8oKFthLWNdKWIqP1wyKSov
Oworc2hvdWxkQmUoInJlZ2V4Ni5leGVjKCdhYmFiYmJjYmMnKSIsICJbJ2FiYWJiJywnYmInLCdi
J10iKTsKKwordmFyIHJlZ2V4NyA9IC8oeCkoPz14KXgvOworc2hvdWxkQmUoInJlZ2V4Ny5leGVj
KCd4eCcpIiwgIlsneHgnLCd4J10iKTsKKwordmFyIHJlZ2V4OCA9IC8oeCkoXDEpLzsKK3Nob3Vs
ZEJlKCJyZWdleDguZXhlYygneHgnKSIsICJbJ3h4JywneCcsJ3gnXSIpOworCit2YXIgcmVnZXg5
ID0gLyh4KSg/PVwxKXgvOworc2hvdWxkQmVOdWxsKCJyZWdleDkuZXhlYygneHknKSIpOworCit2
YXIgcmVnZXgxMCA9IC8oeCkoPz14KXgvOworc2hvdWxkQmVOdWxsKCJyZWdleDEwLmV4ZWMoJ3h5
JykiKTsKKwordmFyIHJlZ2V4MTEgPSAvKHgpKFwxKS87CitzaG91bGRCZU51bGwoInJlZ2V4MTEu
ZXhlYygneHknKSIpOworCit2YXIgcmVnZXgxMiA9IC8oeCkoPz1cMSl4LzsKK3Nob3VsZEJlTnVs
bCgicmVnZXgxMi5leGVjKCd4JykiKTsKK3Nob3VsZEJlKCJyZWdleDEyLmV4ZWMoJ3h4JykiLCAi
Wyd4eCcsJ3gnXSIpOworc2hvdWxkQmUoInJlZ2V4MTIuZXhlYygneHh5JykiLCAiWyd4eCcsJ3gn
XSIpOworCit2YXIgcmVnZXgxMyA9IC8oeCl6enooPz1cMSl4LzsKK3Nob3VsZEJlKCJyZWdleDEz
LmV4ZWMoJ3h6enp4JykiLCAiWyd4enp6eCcsJ3gnXSIpOworc2hvdWxkQmUoInJlZ2V4MTMuZXhl
YygneHp6enh5JykiLCAiWyd4enp6eCcsJ3gnXSIpOworCit2YXIgcmVnZXgxNCA9IC8oYSlcMSg/
PShiKmMpKWJjLzsKK3Nob3VsZEJlKCJyZWdleDE0LmV4ZWMoJ2FhYmMnKSIsICJbJ2FhYmMnLCdh
JywnYmMnXSIpOworc2hvdWxkQmUoInJlZ2V4MTQuZXhlYygnYWFiY3gnKSIsICJbJ2FhYmMnLCdh
JywnYmMnXSIpOworCit2YXIgcmVnZXgxNSA9IC8oYSlhKD89KGIqYykpYmMvOworc2hvdWxkQmUo
InJlZ2V4MTUuZXhlYygnYWFiYycpIiwgIlsnYWFiYycsJ2EnLCdiYyddIik7CitzaG91bGRCZSgi
cmVnZXgxNS5leGVjKCdhYWJjeCcpIiwgIlsnYWFiYycsJ2EnLCdiYyddIik7CisKK3ZhciByZWdl
eDE2ID0gL2EoPz0oYipjKSliYy87CitzaG91bGRCZU51bGwoInJlZ2V4MTYuZXhlYygnYWInKSIp
Oworc2hvdWxkQmUoInJlZ2V4MTYuZXhlYygnYWJjJykiLCAiWydhYmMnLCdiYyddIik7CisKK3Zh
ciByZWdleDE3ID0gLyg/PSgoPzphYikqKSlhLzsKK3Nob3VsZEJlKCJyZWdleDE3LmV4ZWMoJ2Fi
JykiLCAiWydhJywnYWInXSIpOworc2hvdWxkQmUoInJlZ2V4MTcuZXhlYygnYWJjJykiLCAiWydh
JywnYWInXSIpOworCit2YXIgcmVnZXgxOCA9IC8oPz0oKD86eHgpKikpeC87CitzaG91bGRCZSgi
cmVnZXgxOC5leGVjKCd4JykiLCAiWyd4JywnJ10iKTsKK3Nob3VsZEJlKCJyZWdleDE4LmV4ZWMo
J3h4JykiLCAiWyd4JywneHgnXSIpOworc2hvdWxkQmUoInJlZ2V4MTguZXhlYygneHh4JykiLCAi
Wyd4JywneHgnXSIpOworCit2YXIgcmVnZXgxOSA9IC8oPz0oKHh4KSopKXgvOworc2hvdWxkQmUo
InJlZ2V4MTkuZXhlYygneCcpIiwgIlsneCcsJycsdW5kZWZpbmVkXSIpOworc2hvdWxkQmUoInJl
Z2V4MTkuZXhlYygneHgnKSIsICJbJ3gnLCd4eCcsJ3h4J10iKTsKK3Nob3VsZEJlKCJyZWdleDE5
LmV4ZWMoJ3h4eCcpIiwgIlsneCcsJ3h4JywneHgnXSIpOworCit2YXIgcmVnZXgyMCA9IC8oPz0o
eHgpKSt4LzsKK3Nob3VsZEJlTnVsbCgicmVnZXgyMC5leGVjKCd4JykiKTsKK3Nob3VsZEJlKCJy
ZWdleDIwLmV4ZWMoJ3h4JykiLCAiWyd4JywneHgnXSIpOworc2hvdWxkQmUoInJlZ2V4MjAuZXhl
YygneHh4JykiLCAiWyd4JywneHgnXSIpOworCit2YXIgcmVnZXgyMSA9IC8oPz1hK2IpYWFiLzsK
K3Nob3VsZEJlKCJyZWdleDIxLmV4ZWMoJ2FhYicpIiwgIlsnYWFiJ10iKTsKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CisK
</data>
<flag name="review"
          id="77904"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>