<?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>50816</bug_id>
          
          <creation_ts>2010-12-10 07:16:25 -0800</creation_ts>
          <short_desc>REGRESSION: Hang inside Yarr::RegexCodeBlock::execute when visiting bugs.webkit.org</short_desc>
          <delta_ts>2010-12-11 19:25:24 -0800</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>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://bugs.webkit.org/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>320141</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-12-10 07:16:25 -0800</bug_when>
    <thetext>To reproduce:

1. Go to http://bugs.webkit.org/

You&apos;ll hang. Here&apos;s the backtrace:


 	06e50e26()	
&gt;	JavaScriptCore.dll!JSC::Yarr::RegexCodeBlock::execute(const wchar_t * input=0x0785a944, unsigned int start=0, unsigned int length=11, int * output=0x054f1dd4)  Line 67 + 0x1c bytes	C++
 	JavaScriptCore.dll!JSC::Yarr::executeRegex(JSC::Yarr::RegexCodeBlock &amp; jitObject={...}, const wchar_t * input=0x0785a944, unsigned int start=0, unsigned int length=11, int * output=0x054f1dd4)  Line 84	C++
 	JavaScriptCore.dll!JSC::RegExp::match(const JSC::UString &amp; s={Committer):}, int startOffset=0, WTF::Vector&lt;int,32&gt; * ovector=[10](0,1,0,85,-1,85,0,0,-1,16))  Line 139 + 0x2b bytes	C++
 	JavaScriptCore.dll!JSC::RegExpConstructor::performMatch(JSC::RegExp * r=0x055a4d00, const JSC::UString &amp; s={Committer):}, int startOffset=0, int &amp; position=-858993460, int &amp; length=0, int * * ovector=0x00000000)  Line 114 + 0x23 bytes	C++
 	JavaScriptCore.dll!JSC::RegExpObject::match(JSC::ExecState * exec=0x03e901e8)  Line 168	C++
 	JavaScriptCore.dll!JSC::RegExpObject::exec(JSC::ExecState * exec=0x03e901e8)  Line 126 + 0xc bytes	C++
 	JavaScriptCore.dll!JSC::regExpProtoFuncExec(JSC::ExecState * exec=0x03e901e8)  Line 74 + 0x1f bytes	C++
 	026a0852()	
 	JavaScriptCore.dll!cti_op_put_by_id_generic()  Line 1421 + 0x24 bytes	C++
 	JavaScriptCore.dll!JSC::JITCode::execute(JSC::RegisterFile * registerFile=0x022d6cf4, JSC::ExecState * callFrame=0x03e90048, JSC::JSGlobalData * globalData=0x022da3d0)  Line 77 + 0x22 bytes	C++
 	JavaScriptCore.dll!JSC::Interpreter::executeCall(JSC::ExecState * callFrame=0x054c7470, JSC::JSObject * function=0x042d1b80, JSC::CallType callType=CallTypeJS, const JSC::CallData &amp; callData={...}, JSC::JSValue thisValue={...}, const JSC::ArgList &amp; args={...})  Line 849 + 0x2a bytes	C++
 	JavaScriptCore.dll!JSC::call(JSC::ExecState * exec=0x054c7470, JSC::JSValue functionObject={...}, JSC::CallType callType=CallTypeJS, const JSC::CallData &amp; callData={...}, JSC::JSValue thisValue={...}, const JSC::ArgList &amp; args={...})  Line 38 + 0x3c bytes	C++
 	WebKit.dll!WebCore::JSMainThreadExecState::call(JSC::ExecState * exec=0x054c7470, JSC::JSValue functionObject={...}, JSC::CallType callType=CallTypeJS, const JSC::CallData &amp; callData={...}, JSC::JSValue thisValue={...}, const JSC::ArgList &amp; args={...})  Line 48 + 0x29 bytes	C++
 	WebKit.dll!WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext * scriptExecutionContext=, WebCore::Event * event=)  Line 124 + 0x6a bytes	C++
 	WebKit.dll!WebCore::EventTarget::fireEventListeners(WebCore::Event * event=0x055a4ca8, WebCore::EventTargetData * d=0x02389e14, WTF::Vector&lt;WebCore::RegisteredEventListener,1&gt; &amp; entry=[1]({listener=0x0555cfe0 {m_jsFunction=0x042d1b80 m_wrapper={...} m_isAttribute=true ...} useCapture=false }))  Line 342 + 0x35 bytes	C++
 	WebKit.dll!WebCore::EventTarget::fireEventListeners(WebCore::Event * event=0x055a4ca8)  Line 313	C++
 	WebKit.dll!WebCore::EventTarget::dispatchEvent(WTF::PassRefPtr&lt;WebCore::Event&gt; event={...})  Line 297 + 0x11 bytes	C++
 	WebKit.dll!WebCore::XMLHttpRequestProgressEventThrottle::dispatchEvent(WTF::PassRefPtr&lt;WebCore::Event&gt; event={...}, WebCore::ProgressEventAction progressEventAction=DoNotFlushProgressEvent)  Line 82	C++
 	WebKit.dll!WebCore::XMLHttpRequest::callReadyStateChangeListener()  Line 368 + 0x39 bytes	C++
 	WebKit.dll!WebCore::XMLHttpRequest::changeState(WebCore::XMLHttpRequest::State newState=DONE)  Line 352	C++
 	WebKit.dll!WebCore::XMLHttpRequest::didFinishLoading(unsigned long identifier=11)  Line 1014	C++
 	WebKit.dll!WebCore::DocumentThreadableLoader::didFinishLoading(unsigned long identifier=11)  Line 246 + 0x19 bytes	C++
 	WebKit.dll!WebCore::DocumentThreadableLoader::didFinishLoading(WebCore::SubresourceLoader * loader=0x054c5c20)  Line 237	C++
 	WebKit.dll!WebCore::SubresourceLoader::didFinishLoading(double finishTime=0.00000000000000000)  Line 180 + 0x1f bytes	C++
 	WebKit.dll!WebCore::ResourceLoader::didFinishLoading(WebCore::ResourceHandle * __formal=0x02341ed0, double finishTime=0.00000000000000000)  Line 435 + 0x18 bytes	C++
 	WebKit.dll!WebCore::didFinishLoading(_CFURLConnection * conn=0x055a4450, const void * clientInfo=0x02341ed0)  Line 244 + 0x26 bytes	C++

The XHR that just finished loading is for &lt;http://svn.webkit.org/repository/webkit/trunk/WebKitTools/Scripts/webkitpy/common/config/committers.py&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320154</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-12-10 07:38:48 -0800</bug_when>
    <thetext>&lt;rdar://problem/8754742&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320512</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2010-12-10 17:35:11 -0800</bug_when>
    <thetext>Problem understood and a fix is in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320539</commentid>
    <comment_count>3</comment_count>
      <attachid>76287</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2010-12-10 18:38:04 -0800</bug_when>
    <thetext>Created attachment 76287
Patch to set default backtrack destination for first parens in nested parens</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320547</commentid>
    <comment_count>4</comment_count>
      <attachid>76287</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-12-10 19:17:12 -0800</bug_when>
    <thetext>Comment on attachment 76287
Patch to set default backtrack destination for first parens in nested parens

R+ to get ToT working again.  Does this now mean the prior fix is redundant, can we roll it out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320616</commentid>
    <comment_count>5</comment_count>
      <attachid>76294</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2010-12-10 23:32:24 -0800</bug_when>
    <thetext>Created attachment 76294
Updated Patch to handle the first nested paren, not just when the first nested term is a paren

Thought about this a little more after posting the initial patch.  The initial patch solves the problem where the first paren in a nested paren is the first term.  I tried it with patterns where there is some other non-paren term first in an alternative and it didn&apos;t work.  I have modified the fix to work for the first paren term in an alternative and it works for the original RE as well as one with a non-paren term inserted before the first nested paren.

Examples:
   The original bug was for the RE: /^\s*((\[[^\]]+\])|(u?)(&quot;[^&quot;]+&quot;))\s*/
   and the problem was the (u?) wasn&apos;t backtracking to the first (.

   If the RE is modified by (the inserted X&apos;s):/^\s*(X(\[[^\]]+\])|X(u?)(&quot;[^&quot;]+&quot;))\s*/
   then the original patch won&apos;t work.  The default backtracking for the (u?) is still
   broken.  The updated fix counts nested parens instead of using the term number
   and works for both the original and modified REs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320617</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2010-12-10 23:35:43 -0800</bug_when>
    <thetext>BTW, the prior fix is (mostly) needed due to handling of backtracking to the &quot;next char&quot;.  There is some redundant code from the prior fix that can be removed, but not the whole patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320737</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2010-12-11 19:25:24 -0800</bug_when>
    <thetext>Committed r73866: &lt;http://trac.webkit.org/changeset/73866&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76287</attachid>
            <date>2010-12-10 18:38:04 -0800</date>
            <delta_ts>2010-12-10 23:32:24 -0800</delta_ts>
            <desc>Patch to set default backtrack destination for first parens in nested parens</desc>
            <filename>50816-1.patch</filename>
            <type>text/plain</type>
            <size>9768</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDczODI5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTAtMTItMTAgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTiBIYW5nIGluc2lkZSBZYXJyOjpSZWdleENv
ZGVCbG9jazo6ZXhlY3V0ZSB3aGVuIHZpc2l0aW5nCisgICAgICAgIGJ1Z3Mud2Via2l0Lm9yZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA4MTYKKwor
ICAgICAgICBGaXJzdCBuZXN0ZWQgcGFyZW50aGVzZXMgb2YgdGhlIHNlY29uZCBvciBncmVhdGVy
IGFsdGVybmF0aXZlCisgICAgICAgIHdoZXJlIGJhY2t0cmFja2luZyB0byB0aGUgcHJpb3IgcGFy
ZW50aGVzZXMuICBDaGFuZ2VkIHRoZSBkZWZhdWx0CisgICAgICAgIGhhbmRsaW5nIG9mIGluaXRp
YWwgcGFyZW50aGVzZXMgZm9yIGFsbCBhbHRlcm5hdGl2ZXMgdG8gZ28gYmFjaworICAgICAgICB0
byB0aGUgaW1tZWRpYXRlIG91dGVyIHBhcmVuLgorCisgICAgICAgICogeWFyci9SZWdleEpJVC5j
cHA6CisgICAgICAgIChKU0M6OllhcnI6OlJlZ2V4R2VuZXJhdG9yOjpHZW5lcmF0aW9uU3RhdGU6
OmFkZFBhcmVudGhlc2VzVGFpbCk6CisgICAgICAgIChKU0M6OllhcnI6OlJlZ2V4R2VuZXJhdG9y
OjpUZXJtR2VuZXJhdGlvblN0YXRlOjpUZXJtR2VuZXJhdGlvblN0YXRlKToKKyAgICAgICAgKEpT
Qzo6WWFycjo6UmVnZXhHZW5lcmF0b3I6OlRlcm1HZW5lcmF0aW9uU3RhdGU6OmlzTGFzdFRlcm0p
OgorICAgICAgICAoSlNDOjpZYXJyOjpSZWdleEdlbmVyYXRvcjo6VGVybUdlbmVyYXRpb25TdGF0
ZTo6Z2V0VGVybUluZGV4KToKKyAgICAgICAgKEpTQzo6WWFycjo6UmVnZXhHZW5lcmF0b3I6OlRl
cm1HZW5lcmF0aW9uU3RhdGU6OnNldFBhcmVudGhlc2VzVGFpbCk6CisgICAgICAgIChKU0M6Ollh
cnI6OlJlZ2V4R2VuZXJhdG9yOjpUZXJtR2VuZXJhdGlvblN0YXRlOjpnZXRQYXJlbnRoZXNlc1Rh
aWwpOgorICAgICAgICAoSlNDOjpZYXJyOjpSZWdleEdlbmVyYXRvcjo6UGFyZW50aGVzZXNUYWls
OjpQYXJlbnRoZXNlc1RhaWwpOgorICAgICAgICAoSlNDOjpZYXJyOjpSZWdleEdlbmVyYXRvcjo6
UGFyZW50aGVzZXNUYWlsOjpwcm9jZXNzQmFja3RyYWNrcyk6CisgICAgICAgIChKU0M6OllhcnI6
OlJlZ2V4R2VuZXJhdG9yOjpQYXJlbnRoZXNlc1RhaWw6OmdlbmVyYXRlQ29kZSk6CisgICAgICAg
IChKU0M6OllhcnI6OlJlZ2V4R2VuZXJhdG9yOjpnZW5lcmF0ZVBhcmVudGhlc2VzU2luZ2xlKToK
KwogMjAxMC0xMi0xMCAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3lh
cnIvUmVnZXhKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhK
SVQuY3BwCShyZXZpc2lvbiA3MzgyOSkKKysrIEphdmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhKSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzQsOSArMzc0LDkgQEAgY2xhc3MgUmVnZXhHZW5lcmF0
b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAgICAgICAgICAgLS1tX3BhcmVuTmVzdGluZ0xldmVs
OwogICAgICAgICB9CiAKLSAgICAgICAgUGFyZW50aGVzZXNUYWlsKiBhZGRQYXJlbnRoZXNlc1Rh
aWwoUGF0dGVyblRlcm0mIHRlcm0pCisgICAgICAgIFBhcmVudGhlc2VzVGFpbCogYWRkUGFyZW50
aGVzZXNUYWlsKFBhdHRlcm5UZXJtJiB0ZXJtLCBQYXJlbnRoZXNlc1RhaWwqIG5leHRPdXRlclBh
cmVuVGFpbCkKICAgICAgICAgewotICAgICAgICAgICAgUGFyZW50aGVzZXNUYWlsKiBwYXJlbnRo
ZXNlc1RhaWwgPSBuZXcgUGFyZW50aGVzZXNUYWlsKHRlcm0sIG1fcGFyZW5OZXN0aW5nTGV2ZWwp
OworICAgICAgICAgICAgUGFyZW50aGVzZXNUYWlsKiBwYXJlbnRoZXNlc1RhaWwgPSBuZXcgUGFy
ZW50aGVzZXNUYWlsKHRlcm0sIG1fcGFyZW5OZXN0aW5nTGV2ZWwsIG5leHRPdXRlclBhcmVuVGFp
bCk7CiAgICAgICAgICAgICBtX3BhcmVuVGFpbHMuYXBwZW5kKHBhcmVudGhlc2VzVGFpbCk7CiAg
ICAgICAgICAgICBtX3BhcmVuVGFpbHNGb3JJdGVyYXRpb24uYXBwZW5kKHBhcmVudGhlc2VzVGFp
bCk7CiAKQEAgLTc2Nyw2ICs3NjcsNyBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUg
TWFjcm9Bc3NlCiAgICAgICAgICAgICA6IGRpc2p1bmN0aW9uKGRpc2p1bmN0aW9uKQogICAgICAg
ICAgICAgLCBjaGVja2VkVG90YWwoY2hlY2tlZFRvdGFsKQogICAgICAgICAgICAgLCBtX2xpbmtl
ZEJhY2t0cmFjaygwKQorICAgICAgICAgICAgLCBtX3BhcmVudGhlc2VzVGFpbCgwKQogICAgICAg
ICB7CiAgICAgICAgIH0KIApAQCAtODE2LDEyICs4MTcsMjYgQEAgY2xhc3MgUmVnZXhHZW5lcmF0
b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoYWx0
ZXJuYXRpdmVWYWxpZCgpKTsKICAgICAgICAgICAgIHJldHVybiAodCArIDEpID09IGFsdGVybmF0
aXZlKCktPm1fdGVybXMuc2l6ZSgpOworICAgICAgICB9ICAgICAgICAKKyAgICAgICAgaW50IGdl
dFRlcm1JbmRleCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0OwogICAgICAgICB9
CiAgICAgICAgIGJvb2wgaXNNYWluRGlzanVuY3Rpb24oKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gIWRpc2p1bmN0aW9uLT5tX3BhcmVudDsKICAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgdm9pZCBzZXRQYXJlbnRoZXNlc1RhaWwoUGFyZW50aGVzZXNUYWlsKiBwYXJlbnRoZXNl
c1RhaWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fcGFyZW50aGVzZXNUYWlsID0gcGFyZW50
aGVzZXNUYWlsOworICAgICAgICB9CiAKKyAgICAgICAgUGFyZW50aGVzZXNUYWlsKiBnZXRQYXJl
bnRoZXNlc1RhaWwoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9wYXJlbnRoZXNl
c1RhaWw7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIFBhdHRlcm5UZXJtJiBsb29rYWhl
YWRUZXJtKCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGFsdGVybmF0aXZlVmFsaWQo
KSk7CkBAIC05NTEsMTMgKzk2NiwxNiBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUg
TWFjcm9Bc3NlCiAgICAgICAgIHVuc2lnbmVkIHQ7CiAgICAgICAgIEJhY2t0cmFja0Rlc3RpbmF0
aW9uIG1fYmFja3RyYWNrOwogICAgICAgICBCYWNrdHJhY2tEZXN0aW5hdGlvbiogbV9saW5rZWRC
YWNrdHJhY2s7CisgICAgICAgIFBhcmVudGhlc2VzVGFpbCogbV9wYXJlbnRoZXNlc1RhaWw7CiAK
ICAgICB9OwogCiAgICAgc3RydWN0IFBhcmVudGhlc2VzVGFpbCB7Ci0gICAgICAgIFBhcmVudGhl
c2VzVGFpbChQYXR0ZXJuVGVybSYgdGVybSwgaW50IG5lc3RpbmdMZXZlbCkKKyAgICAgICAgUGFy
ZW50aGVzZXNUYWlsKFBhdHRlcm5UZXJtJiB0ZXJtLCBpbnQgbmVzdGluZ0xldmVsLCBQYXJlbnRo
ZXNlc1RhaWwqIG5leHRPdXRlclBhcmVuVGFpbCkKICAgICAgICAgICAgIDogbV90ZXJtKHRlcm0p
CiAgICAgICAgICAgICAsIG1fbmVzdGluZ0xldmVsKG5lc3RpbmdMZXZlbCkKKyAgICAgICAgICAg
ICwgbV90ZXJtSW5kZXgoMCkKKyAgICAgICAgICAgICwgbV9uZXh0T3V0ZXJQYXJlblRhaWwobmV4
dE91dGVyUGFyZW5UYWlsKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtOTY2LDYgKzk4NCw3
IEBAIGNsYXNzIFJlZ2V4R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2UKICAgICAgICAgICAg
IG1fbm9uR3JlZWR5VHJ5UGFyZW50aGVzZXMgPSBub25HcmVlZHlUcnlQYXJlbnRoZXNlczsKICAg
ICAgICAgICAgIG1fZmFsbFRocm91Z2ggPSBmYWxsVGhyb3VnaDsKIAorICAgICAgICAgICAgbV90
ZXJtSW5kZXggPSBzdGF0ZS5nZXRUZXJtSW5kZXgoKTsKICAgICAgICAgICAgIHBhcmVudGhlc2Vz
U3RhdGUuZ2V0QmFja3RyYWNrRGVzdGluYXRpb24oKS5jb3B5VG8obV9wYXJlbkJhY2t0cmFjayk7
CiAgICAgICAgICAgICBzdGF0ZS5jaGFpbkJhY2t0cmFja3MoJm1fYmFja3RyYWNrKTsKICAgICAg
ICAgICAgIEJhY2t0cmFja0Rlc3RpbmF0aW9uJiBzdGF0ZUJhY2t0cmFjayA9IHN0YXRlLmdldEJh
Y2t0cmFja0Rlc3RpbmF0aW9uKCk7CkBAIC0xMDIzLDYgKzEwNDIsMTMgQEAgY2xhc3MgUmVnZXhH
ZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAgICAgICAgICAgICAgIGlmIChtX2JhY2t0
cmFja1RvTGFiZWwuaXNTZXQoKSkgewogICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFjay5z
ZXRMYWJlbChtX2JhY2t0cmFja1RvTGFiZWwpOwogICAgICAgICAgICAgICAgICAgICBuZXh0QmFj
a3RyYWNrRmFsbFRocm91Z2ggPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFt
X3Rlcm1JbmRleCAmJiBtX25leHRPdXRlclBhcmVuVGFpbCkgeworICAgICAgICAgICAgICAgICAg
ICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgZGVzdGluYXRpb24gYW5kIHdlIGFyZSB0aGUgZmlyc3Qg
dGVybSBvZiBhIG5lc3RlZCBwYXJlbiwgZ28KKyAgICAgICAgICAgICAgICAgICAgLy8gYmFjayB0
byB0aGUgb3V0ZXIgcGFyZW4uCisgICAgICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIGFuIG9w
dGltaXphdGlvbiBpZiB0aGUgbmV4dCBvdXRlciBwYXJlbiBpcyB0aGUgbmV4dCBwYXJlbiB0byBi
ZSBlbWl0dGVkLgorICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGF0IGNhc2Ugd2UgcmVhbGx5
IHdhbnQgdGhlIGVsc2UgY2xhdXNlLgorICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFjay5z
ZXRCYWNrdHJhY2tKdW1wTGlzdCgmbV9uZXh0T3V0ZXJQYXJlblRhaWwtPm1fd2l0aGluQmFja3Ry
YWNrSnVtcHMpOworICAgICAgICAgICAgICAgICAgICBuZXh0QmFja3RyYWNrRmFsbFRocm91Z2gg
PSBmYWxzZTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgbV9i
YWNrdHJhY2suc2V0QmFja3RyYWNrSnVtcExpc3QoJmp1bXBzVG9OZXh0KTsKICAgICAgICAgICAg
IH0gZWxzZQpAQCAtMTA1Myw2ICsxMDc5LDcgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2
YXRlIE1hY3JvQXNzZQogICAgICAgICAgICAgaWYgKG5lZWRKdW1wRm9yUHJpb3JQYXJlblRhaWwp
CiAgICAgICAgICAgICAgICAgZnJvbVByaW9yQmFja3RyYWNrLmxpbmsoZ2VuZXJhdG9yKTsKICAg
ICAgICAgICAgIG1fcGFyZW5CYWNrdHJhY2subGlua0FsdGVybmF0aXZlQmFja3RyYWNrcyhnZW5l
cmF0b3IpOworICAgICAgICAgICAgbV93aXRoaW5CYWNrdHJhY2tKdW1wcy5saW5rKGdlbmVyYXRv
cik7ICAgICAgICAgICAgCiAKICAgICAgICAgICAgIGlmIChtX3Rlcm0uY2FwdHVyZSgpKQogICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci0+c3RvcmUzMihJbW0zMigtMSksIEFkZHJlc3Mob3V0cHV0
LCAobV90ZXJtLnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSk7
CkBAIC0xMDcyLDEyICsxMDk5LDE1IEBAIGNsYXNzIFJlZ2V4R2VuZXJhdG9yIDogcHJpdmF0ZSBN
YWNyb0Fzc2UKIAogICAgICAgICBQYXR0ZXJuVGVybSYgbV90ZXJtOwogICAgICAgICBpbnQgbV9u
ZXN0aW5nTGV2ZWw7CisgICAgICAgIHVuc2lnbmVkIG1fdGVybUluZGV4OworICAgICAgICBQYXJl
bnRoZXNlc1RhaWwqIG1fbmV4dE91dGVyUGFyZW5UYWlsOwogICAgICAgICBMYWJlbCBtX25vbkdy
ZWVkeVRyeVBhcmVudGhlc2VzOwogICAgICAgICBMYWJlbCBtX2ZhbGxUaHJvdWdoOwogICAgICAg
ICBMYWJlbCBtX2JhY2t0cmFja1RvTGFiZWw7CiAgICAgICAgIExhYmVsIG1fYmFja3RyYWNrRnJv
bUFmdGVyUGFyZW5zOwogICAgICAgICBEYXRhTGFiZWxQdHIgbV9kYXRhQWZ0ZXJMYWJlbFB0cjsK
ICAgICAgICAgSnVtcExpc3QgbV9wYXR0QmFja3RyYWNrSnVtcHM7CisgICAgICAgIEp1bXBMaXN0
IG1fd2l0aGluQmFja3RyYWNrSnVtcHM7CiAgICAgICAgIEJhY2t0cmFja0Rlc3RpbmF0aW9uIG1f
cGFyZW5CYWNrdHJhY2s7CiAgICAgICAgIEJhY2t0cmFja0Rlc3RpbmF0aW9uIG1fYmFja3RyYWNr
OwogICAgICAgICBib29sIG1fZG9EaXJlY3RCYWNrdHJhY2s7CkBAIC0xNTk4LDEyICsxNjI4LDE2
IEBAIGNsYXNzIFJlZ2V4R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2UKICAgICAgICAgICAg
ICAgICAgICAgc3RvcmUzMihpbmRleCwgQWRkcmVzcyhvdXRwdXQsICh0ZXJtLnBhcmVudGhlc2Vz
LnN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSk7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIFBhcmVudGhlc2VzVGFpbCogcGFyZW50aGVzZXNUYWlsID0gbV9leHByZXNzaW9u
U3RhdGUuYWRkUGFyZW50aGVzZXNUYWlsKHRlcm0pOworICAgICAgICAgICAgUGFyZW50aGVzZXNU
YWlsKiBwYXJlbnRoZXNlc1RhaWwgPSBtX2V4cHJlc3Npb25TdGF0ZS5hZGRQYXJlbnRoZXNlc1Rh
aWwodGVybSwgc3RhdGUuZ2V0UGFyZW50aGVzZXNUYWlsKCkpOwogCiAgICAgICAgICAgICBtX2V4
cHJlc3Npb25TdGF0ZS5pbmNyZW1lbnRQYXJlbk5lc3RpbmdMZXZlbCgpOwogCi0gICAgICAgICAg
ICAvLyBnZW5lcmF0ZSB0aGUgYm9keSBvZiB0aGUgcGFyZW50aGVzZXMKICAgICAgICAgICAgIFRl
cm1HZW5lcmF0aW9uU3RhdGUgcGFyZW50aGVzZXNTdGF0ZShkaXNqdW5jdGlvbiwgc3RhdGUuY2hl
Y2tlZFRvdGFsKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gU2F2ZSB0aGUgcGFyZW50
aGVzZXNUYWlsIGZvciBiYWNrdHJhY2tpbmcgZnJvbSBuZXN0ZWQgcGFyZW5zIHRvIHRoaXMgb25l
LgorICAgICAgICAgICAgcGFyZW50aGVzZXNTdGF0ZS5zZXRQYXJlbnRoZXNlc1RhaWwocGFyZW50
aGVzZXNUYWlsKTsKKworICAgICAgICAgICAgLy8gZ2VuZXJhdGUgdGhlIGJvZHkgb2YgdGhlIHBh
cmVudGhlc2VzCiAgICAgICAgICAgICBnZW5lcmF0ZVBhcmVudGhlc2VzRGlzanVuY3Rpb24oc3Rh
dGUudGVybSgpLCBwYXJlbnRoZXNlc1N0YXRlLCBhbHRlcm5hdGl2ZUZyYW1lTG9jYXRpb24pOwog
CiAgICAgICAgICAgICAvLyBGb3Igbm9uLWZpeGVkIGNvdW50cywgYmFja3RyYWNrIGlmIHdlIGRp
ZG4ndCBtYXRjaCBhbnl0aGluZy4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDczODI5KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMTIt
MTAgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTiBIYW5nIGluc2lkZSBZ
YXJyOjpSZWdleENvZGVCbG9jazo6ZXhlY3V0ZSB3aGVuIHZpc2l0aW5nCisgICAgICAgIGJ1Z3Mu
d2Via2l0Lm9yZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTA4MTYKKworICAgICAgICBOZXcgdGVzdCB0byB2ZXJpZnkgcHJvcGVyIGJhY2t0cmFja2lu
ZyBvZiBhbHRlcm5hdGl2ZSBuZXN0ZWQgcGFyZW5zLgorCisgICAgICAgICogZmFzdC9yZWdleC9w
YXJlbnRoZXNlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9yZWdleC9zY3JpcHQtdGVz
dHMvcGFyZW50aGVzZXMuanM6CisKIDIwMTAtMTItMTAgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1h
Y2xlYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlZ2V4L3BhcmVudGhlc2VzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3JlZ2V4L3BhcmVudGhlc2VzLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNzM4MjkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlZ2V4L3BhcmVudGhlc2Vz
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBQQVNTIHJlZ2V4
cDI1LmV4ZWMoJyF0aGlzIGlzIGEgdGVzdCcpIGlzCiBQQVNTIHJlZ2V4cDI2LmV4ZWMoJ2FhYScp
IGlzIFsnYWFhJyx1bmRlZmluZWQsdW5kZWZpbmVkXQogUEFTUyByZWdleHAyNy5leGVjKCdmaWxl
Oi8vL1VzZXJzL1NvbWVvbmUvRGVza3RvcC9IZWxsb1dvcmxkL2luZGV4Lmh0bWwnKSBpcyBbJ2Zp
bGU6Ly8vVXNlcnMvU29tZW9uZS9EZXNrdG9wL0hlbGxvV29ybGQvaW5kZXguaHRtbCcsJ2ZpbGUn
LCcvLycsJycsdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWQsJycsdW5kZWZpbmVkLCcvVXNl
cnMvU29tZW9uZS9EZXNrdG9wL0hlbGxvV29ybGQvaW5kZXguaHRtbCcsdW5kZWZpbmVkLHVuZGVm
aW5lZF0KIFBBU1MgcmVnZXhwMjguZXhlYygnZmlsZTovLy9Vc2Vycy9Tb21lb25lL0Rlc2t0b3Av
SGVsbG9Xb3JsZC9pbmRleC5odG1sJykgaXMgWydmaWxlOicsJ2ZpbGUnLHVuZGVmaW5lZCx1bmRl
ZmluZWQsdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWRdCitQQVNTIHJlZ2V4cDI5LmV4ZWMo
J0NvbW1pdHRlcjonKSBpcyBudWxsCiBQQVNTICdIaSBCb2InLm1hdGNoKC8oUm9iKXwoQm9iKXwo
Um9iZXJ0KXwoQm9iYnkpLykgaXMgWydCb2InLHVuZGVmaW5lZCwnQm9iJyx1bmRlZmluZWQsdW5k
ZWZpbmVkXQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L3JlZ2V4L3NjcmlwdC10ZXN0cy9wYXJlbnRoZXNlcy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3JlZ2V4L3NjcmlwdC10ZXN0cy9wYXJlbnRoZXNlcy5qcwkocmV2
aXNpb24gNzM4MjkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlZ2V4L3NjcmlwdC10ZXN0cy9wYXJl
bnRoZXNlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw5IEBAIHZhciByZWdleHAy
OCA9IG5ldyBSZWdFeHAoCiApOwogc2hvdWxkQmUoInJlZ2V4cDI4LmV4ZWMoJ2ZpbGU6Ly8vVXNl
cnMvU29tZW9uZS9EZXNrdG9wL0hlbGxvV29ybGQvaW5kZXguaHRtbCcpIiwgIlsnZmlsZTonLCdm
aWxlJyx1bmRlZmluZWQsdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkXSIp
OwogCit2YXIgcmVnZXhwMjkgPSAvXlxzKigoXFtbXlxdXStcXSl8KHU/KSgiW14iXSsiKSlccyov
Oworc2hvdWxkQmVOdWxsKCJyZWdleHAyOS5leGVjKCdDb21taXR0ZXI6JykiKTsKKwogc2hvdWxk
QmUoIidIaSBCb2InLm1hdGNoKC8oUm9iKXwoQm9iKXwoUm9iZXJ0KXwoQm9iYnkpLykiLCAiWydC
b2InLHVuZGVmaW5lZCwnQm9iJyx1bmRlZmluZWQsdW5kZWZpbmVkXSIpOwogCiB2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>
<flag name="review"
          id="67217"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76294</attachid>
            <date>2010-12-10 23:32:24 -0800</date>
            <delta_ts>2010-12-11 15:15:44 -0800</delta_ts>
            <desc>Updated Patch to handle the first nested paren, not just when the first nested term is a paren</desc>
            <filename>50816-2.patch</filename>
            <type>text/plain</type>
            <size>10648</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDczODI5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTAtMTItMTAgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTiBIYW5nIGluc2lkZSBZYXJyOjpSZWdleENv
ZGVCbG9jazo6ZXhlY3V0ZSB3aGVuIHZpc2l0aW5nCisgICAgICAgIGJ1Z3Mud2Via2l0Lm9yZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA4MTYKKwor
ICAgICAgICBGaXJzdCBuZXN0ZWQgcGFyZW50aGVzZXMgb2YgdGhlIHNlY29uZCBvciBncmVhdGVy
IGFsdGVybmF0aXZlCisgICAgICAgIHdoZXJlIGJhY2t0cmFja2luZyB0byB0aGUgcHJpb3IgcGFy
ZW50aGVzZXMuICBDaGFuZ2VkIHRoZSBkZWZhdWx0CisgICAgICAgIGhhbmRsaW5nIG9mIGluaXRp
YWwgcGFyZW50aGVzZXMgZm9yIGFsbCBhbHRlcm5hdGl2ZXMgdG8gZ28gYmFjaworICAgICAgICB0
byB0aGUgaW1tZWRpYXRlIG91dGVyIHBhcmVuLgorCisgICAgICAgICogeWFyci9SZWdleEpJVC5j
cHA6CisgICAgICAgIChKU0M6OllhcnI6OlJlZ2V4R2VuZXJhdG9yOjpHZW5lcmF0aW9uU3RhdGU6
OmFkZFBhcmVudGhlc2VzVGFpbCk6CisgICAgICAgIChKU0M6OllhcnI6OlJlZ2V4R2VuZXJhdG9y
OjpUZXJtR2VuZXJhdGlvblN0YXRlOjpUZXJtR2VuZXJhdGlvblN0YXRlKToKKyAgICAgICAgKEpT
Qzo6WWFycjo6UmVnZXhHZW5lcmF0b3I6OlRlcm1HZW5lcmF0aW9uU3RhdGU6OmlzTGFzdFRlcm0p
OgorICAgICAgICAoSlNDOjpZYXJyOjpSZWdleEdlbmVyYXRvcjo6VGVybUdlbmVyYXRpb25TdGF0
ZTo6Z2V0VGVybUluZGV4KToKKyAgICAgICAgKEpTQzo6WWFycjo6UmVnZXhHZW5lcmF0b3I6OlRl
cm1HZW5lcmF0aW9uU3RhdGU6OnNldFBhcmVudGhlc2VzVGFpbCk6CisgICAgICAgIChKU0M6Ollh
cnI6OlJlZ2V4R2VuZXJhdG9yOjpUZXJtR2VuZXJhdGlvblN0YXRlOjpnZXRQYXJlbnRoZXNlc1Rh
aWwpOgorICAgICAgICAoSlNDOjpZYXJyOjpSZWdleEdlbmVyYXRvcjo6UGFyZW50aGVzZXNUYWls
OjpQYXJlbnRoZXNlc1RhaWwpOgorICAgICAgICAoSlNDOjpZYXJyOjpSZWdleEdlbmVyYXRvcjo6
UGFyZW50aGVzZXNUYWlsOjpwcm9jZXNzQmFja3RyYWNrcyk6CisgICAgICAgIChKU0M6OllhcnI6
OlJlZ2V4R2VuZXJhdG9yOjpQYXJlbnRoZXNlc1RhaWw6OmdlbmVyYXRlQ29kZSk6CisgICAgICAg
IChKU0M6OllhcnI6OlJlZ2V4R2VuZXJhdG9yOjpnZW5lcmF0ZVBhcmVudGhlc2VzU2luZ2xlKToK
KwogMjAxMC0xMi0xMCAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3lh
cnIvUmVnZXhKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhK
SVQuY3BwCShyZXZpc2lvbiA3MzgyOSkKKysrIEphdmFTY3JpcHRDb3JlL3lhcnIvUmVnZXhKSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzQsOSArMzc0LDkgQEAgY2xhc3MgUmVnZXhHZW5lcmF0
b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAgICAgICAgICAgLS1tX3BhcmVuTmVzdGluZ0xldmVs
OwogICAgICAgICB9CiAKLSAgICAgICAgUGFyZW50aGVzZXNUYWlsKiBhZGRQYXJlbnRoZXNlc1Rh
aWwoUGF0dGVyblRlcm0mIHRlcm0pCisgICAgICAgIFBhcmVudGhlc2VzVGFpbCogYWRkUGFyZW50
aGVzZXNUYWlsKFBhdHRlcm5UZXJtJiB0ZXJtLCBQYXJlbnRoZXNlc1RhaWwqIG5leHRPdXRlclBh
cmVuVGFpbCkKICAgICAgICAgewotICAgICAgICAgICAgUGFyZW50aGVzZXNUYWlsKiBwYXJlbnRo
ZXNlc1RhaWwgPSBuZXcgUGFyZW50aGVzZXNUYWlsKHRlcm0sIG1fcGFyZW5OZXN0aW5nTGV2ZWwp
OworICAgICAgICAgICAgUGFyZW50aGVzZXNUYWlsKiBwYXJlbnRoZXNlc1RhaWwgPSBuZXcgUGFy
ZW50aGVzZXNUYWlsKHRlcm0sIG1fcGFyZW5OZXN0aW5nTGV2ZWwsIG5leHRPdXRlclBhcmVuVGFp
bCk7CiAgICAgICAgICAgICBtX3BhcmVuVGFpbHMuYXBwZW5kKHBhcmVudGhlc2VzVGFpbCk7CiAg
ICAgICAgICAgICBtX3BhcmVuVGFpbHNGb3JJdGVyYXRpb24uYXBwZW5kKHBhcmVudGhlc2VzVGFp
bCk7CiAKQEAgLTc2Niw3ICs3NjYsOSBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUg
TWFjcm9Bc3NlCiAgICAgICAgIFRlcm1HZW5lcmF0aW9uU3RhdGUoUGF0dGVybkRpc2p1bmN0aW9u
KiBkaXNqdW5jdGlvbiwgdW5zaWduZWQgY2hlY2tlZFRvdGFsKQogICAgICAgICAgICAgOiBkaXNq
dW5jdGlvbihkaXNqdW5jdGlvbikKICAgICAgICAgICAgICwgY2hlY2tlZFRvdGFsKGNoZWNrZWRU
b3RhbCkKKyAgICAgICAgICAgICwgbV9zdWJQYXJlbk51bSgwKQogICAgICAgICAgICAgLCBtX2xp
bmtlZEJhY2t0cmFjaygwKQorICAgICAgICAgICAgLCBtX3BhcmVudGhlc2VzVGFpbCgwKQogICAg
ICAgICB7CiAgICAgICAgIH0KIApAQCAtNzk2LDYgKzc5OCw3IEBAIGNsYXNzIFJlZ2V4R2VuZXJh
dG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2UKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGFs
dGVybmF0aXZlVmFsaWQoKSk7CiAgICAgICAgICAgICB0ID0gMDsKKyAgICAgICAgICAgIG1fc3Vi
UGFyZW5OdW0gPSAwOwogICAgICAgICB9CiAgICAgICAgIGJvb2wgdGVybVZhbGlkKCkKICAgICAg
ICAgewpAQCAtODE2LDEyICs4MTksMjYgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRl
IE1hY3JvQXNzZQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoYWx0ZXJuYXRpdmVWYWxp
ZCgpKTsKICAgICAgICAgICAgIHJldHVybiAodCArIDEpID09IGFsdGVybmF0aXZlKCktPm1fdGVy
bXMuc2l6ZSgpOworICAgICAgICB9ICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgZ2V0U3ViUGFy
ZW5OdW0oKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9zdWJQYXJlbk51bSsrOwog
ICAgICAgICB9CiAgICAgICAgIGJvb2wgaXNNYWluRGlzanVuY3Rpb24oKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gIWRpc2p1bmN0aW9uLT5tX3BhcmVudDsKICAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgdm9pZCBzZXRQYXJlbnRoZXNlc1RhaWwoUGFyZW50aGVzZXNUYWlsKiBw
YXJlbnRoZXNlc1RhaWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fcGFyZW50aGVzZXNUYWls
ID0gcGFyZW50aGVzZXNUYWlsOworICAgICAgICB9CiAKKyAgICAgICAgUGFyZW50aGVzZXNUYWls
KiBnZXRQYXJlbnRoZXNlc1RhaWwoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9w
YXJlbnRoZXNlc1RhaWw7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIFBhdHRlcm5UZXJt
JiBsb29rYWhlYWRUZXJtKCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGFsdGVybmF0
aXZlVmFsaWQoKSk7CkBAIC05NDksMTUgKzk2NiwxOSBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6
IHByaXZhdGUgTWFjcm9Bc3NlCiAgICAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgYWx0Owog
ICAgICAgICB1bnNpZ25lZCB0OworICAgICAgICB1bnNpZ25lZCBtX3N1YlBhcmVuTnVtOwogICAg
ICAgICBCYWNrdHJhY2tEZXN0aW5hdGlvbiBtX2JhY2t0cmFjazsKICAgICAgICAgQmFja3RyYWNr
RGVzdGluYXRpb24qIG1fbGlua2VkQmFja3RyYWNrOworICAgICAgICBQYXJlbnRoZXNlc1RhaWwq
IG1fcGFyZW50aGVzZXNUYWlsOwogCiAgICAgfTsKIAogICAgIHN0cnVjdCBQYXJlbnRoZXNlc1Rh
aWwgewotICAgICAgICBQYXJlbnRoZXNlc1RhaWwoUGF0dGVyblRlcm0mIHRlcm0sIGludCBuZXN0
aW5nTGV2ZWwpCisgICAgICAgIFBhcmVudGhlc2VzVGFpbChQYXR0ZXJuVGVybSYgdGVybSwgaW50
IG5lc3RpbmdMZXZlbCwgUGFyZW50aGVzZXNUYWlsKiBuZXh0T3V0ZXJQYXJlblRhaWwpCiAgICAg
ICAgICAgICA6IG1fdGVybSh0ZXJtKQogICAgICAgICAgICAgLCBtX25lc3RpbmdMZXZlbChuZXN0
aW5nTGV2ZWwpCisgICAgICAgICAgICAsIG1fc3ViUGFyZW5JbmRleCgwKQorICAgICAgICAgICAg
LCBtX25leHRPdXRlclBhcmVuVGFpbChuZXh0T3V0ZXJQYXJlblRhaWwpCiAgICAgICAgIHsKICAg
ICAgICAgfQogCkBAIC05NjYsNiArOTg3LDcgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2
YXRlIE1hY3JvQXNzZQogICAgICAgICAgICAgbV9ub25HcmVlZHlUcnlQYXJlbnRoZXNlcyA9IG5v
bkdyZWVkeVRyeVBhcmVudGhlc2VzOwogICAgICAgICAgICAgbV9mYWxsVGhyb3VnaCA9IGZhbGxU
aHJvdWdoOwogCisgICAgICAgICAgICBtX3N1YlBhcmVuSW5kZXggPSBzdGF0ZS5nZXRTdWJQYXJl
bk51bSgpOwogICAgICAgICAgICAgcGFyZW50aGVzZXNTdGF0ZS5nZXRCYWNrdHJhY2tEZXN0aW5h
dGlvbigpLmNvcHlUbyhtX3BhcmVuQmFja3RyYWNrKTsKICAgICAgICAgICAgIHN0YXRlLmNoYWlu
QmFja3RyYWNrcygmbV9iYWNrdHJhY2spOwogICAgICAgICAgICAgQmFja3RyYWNrRGVzdGluYXRp
b24mIHN0YXRlQmFja3RyYWNrID0gc3RhdGUuZ2V0QmFja3RyYWNrRGVzdGluYXRpb24oKTsKQEAg
LTEwMjMsNiArMTA0NSwxMyBAQCBjbGFzcyBSZWdleEdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9B
c3NlCiAgICAgICAgICAgICAgICAgaWYgKG1fYmFja3RyYWNrVG9MYWJlbC5pc1NldCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNrLnNldExhYmVsKG1fYmFja3RyYWNrVG9MYWJl
bCk7CiAgICAgICAgICAgICAgICAgICAgIG5leHRCYWNrdHJhY2tGYWxsVGhyb3VnaCA9IGZhbHNl
OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIW1fc3ViUGFyZW5JbmRleCAmJiBtX25leHRP
dXRlclBhcmVuVGFpbCkgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZl
IGEgZGVzdGluYXRpb24gYW5kIHdlIGFyZSB0aGUgZmlyc3QgdGVybSBvZiBhIG5lc3RlZCBwYXJl
biwgZ28KKyAgICAgICAgICAgICAgICAgICAgLy8gYmFjayB0byB0aGUgb3V0ZXIgcGFyZW4uCisg
ICAgICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIGFuIG9wdGltaXphdGlvbiBpZiB0aGUgbmV4
dCBvdXRlciBwYXJlbiBpcyB0aGUgbmV4dCBwYXJlbiB0byBiZSBlbWl0dGVkLgorICAgICAgICAg
ICAgICAgICAgICAvLyBJbiB0aGF0IGNhc2Ugd2UgcmVhbGx5IHdhbnQgdGhlIGVsc2UgY2xhdXNl
LgorICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFjay5zZXRCYWNrdHJhY2tKdW1wTGlzdCgm
bV9uZXh0T3V0ZXJQYXJlblRhaWwtPm1fd2l0aGluQmFja3RyYWNrSnVtcHMpOworICAgICAgICAg
ICAgICAgICAgICBuZXh0QmFja3RyYWNrRmFsbFRocm91Z2ggPSBmYWxzZTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2suc2V0QmFja3RyYWNr
SnVtcExpc3QoJmp1bXBzVG9OZXh0KTsKICAgICAgICAgICAgIH0gZWxzZQpAQCAtMTA1Myw2ICsx
MDgyLDcgQEAgY2xhc3MgUmVnZXhHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZQogICAgICAg
ICAgICAgaWYgKG5lZWRKdW1wRm9yUHJpb3JQYXJlblRhaWwpCiAgICAgICAgICAgICAgICAgZnJv
bVByaW9yQmFja3RyYWNrLmxpbmsoZ2VuZXJhdG9yKTsKICAgICAgICAgICAgIG1fcGFyZW5CYWNr
dHJhY2subGlua0FsdGVybmF0aXZlQmFja3RyYWNrcyhnZW5lcmF0b3IpOworICAgICAgICAgICAg
bV93aXRoaW5CYWNrdHJhY2tKdW1wcy5saW5rKGdlbmVyYXRvcik7ICAgICAgICAgICAgCiAKICAg
ICAgICAgICAgIGlmIChtX3Rlcm0uY2FwdHVyZSgpKQogICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci0+c3RvcmUzMihJbW0zMigtMSksIEFkZHJlc3Mob3V0cHV0LCAobV90ZXJtLnBhcmVudGhlc2Vz
LnN1YnBhdHRlcm5JZCA8PCAxKSAqIHNpemVvZihpbnQpKSk7CkBAIC0xMDcyLDEyICsxMTAyLDE1
IEBAIGNsYXNzIFJlZ2V4R2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2UKIAogICAgICAgICBQ
YXR0ZXJuVGVybSYgbV90ZXJtOwogICAgICAgICBpbnQgbV9uZXN0aW5nTGV2ZWw7CisgICAgICAg
IHVuc2lnbmVkIG1fc3ViUGFyZW5JbmRleDsKKyAgICAgICAgUGFyZW50aGVzZXNUYWlsKiBtX25l
eHRPdXRlclBhcmVuVGFpbDsKICAgICAgICAgTGFiZWwgbV9ub25HcmVlZHlUcnlQYXJlbnRoZXNl
czsKICAgICAgICAgTGFiZWwgbV9mYWxsVGhyb3VnaDsKICAgICAgICAgTGFiZWwgbV9iYWNrdHJh
Y2tUb0xhYmVsOwogICAgICAgICBMYWJlbCBtX2JhY2t0cmFja0Zyb21BZnRlclBhcmVuczsKICAg
ICAgICAgRGF0YUxhYmVsUHRyIG1fZGF0YUFmdGVyTGFiZWxQdHI7CiAgICAgICAgIEp1bXBMaXN0
IG1fcGF0dEJhY2t0cmFja0p1bXBzOworICAgICAgICBKdW1wTGlzdCBtX3dpdGhpbkJhY2t0cmFj
a0p1bXBzOwogICAgICAgICBCYWNrdHJhY2tEZXN0aW5hdGlvbiBtX3BhcmVuQmFja3RyYWNrOwog
ICAgICAgICBCYWNrdHJhY2tEZXN0aW5hdGlvbiBtX2JhY2t0cmFjazsKICAgICAgICAgYm9vbCBt
X2RvRGlyZWN0QmFja3RyYWNrOwpAQCAtMTU5OCwxMiArMTYzMSwxNiBAQCBjbGFzcyBSZWdleEdl
bmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlCiAgICAgICAgICAgICAgICAgICAgIHN0b3JlMzIo
aW5kZXgsIEFkZHJlc3Mob3V0cHV0LCAodGVybS5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQgPDwg
MSkgKiBzaXplb2YoaW50KSkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBQYXJlbnRo
ZXNlc1RhaWwqIHBhcmVudGhlc2VzVGFpbCA9IG1fZXhwcmVzc2lvblN0YXRlLmFkZFBhcmVudGhl
c2VzVGFpbCh0ZXJtKTsKKyAgICAgICAgICAgIFBhcmVudGhlc2VzVGFpbCogcGFyZW50aGVzZXNU
YWlsID0gbV9leHByZXNzaW9uU3RhdGUuYWRkUGFyZW50aGVzZXNUYWlsKHRlcm0sIHN0YXRlLmdl
dFBhcmVudGhlc2VzVGFpbCgpKTsKIAogICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhdGUuaW5j
cmVtZW50UGFyZW5OZXN0aW5nTGV2ZWwoKTsKIAotICAgICAgICAgICAgLy8gZ2VuZXJhdGUgdGhl
IGJvZHkgb2YgdGhlIHBhcmVudGhlc2VzCiAgICAgICAgICAgICBUZXJtR2VuZXJhdGlvblN0YXRl
IHBhcmVudGhlc2VzU3RhdGUoZGlzanVuY3Rpb24sIHN0YXRlLmNoZWNrZWRUb3RhbCk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIC8vIFNhdmUgdGhlIHBhcmVudGhlc2VzVGFpbCBmb3IgYmFj
a3RyYWNraW5nIGZyb20gbmVzdGVkIHBhcmVucyB0byB0aGlzIG9uZS4KKyAgICAgICAgICAgIHBh
cmVudGhlc2VzU3RhdGUuc2V0UGFyZW50aGVzZXNUYWlsKHBhcmVudGhlc2VzVGFpbCk7CisKKyAg
ICAgICAgICAgIC8vIGdlbmVyYXRlIHRoZSBib2R5IG9mIHRoZSBwYXJlbnRoZXNlcwogICAgICAg
ICAgICAgZ2VuZXJhdGVQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uKHN0YXRlLnRlcm0oKSwgcGFyZW50
aGVzZXNTdGF0ZSwgYWx0ZXJuYXRpdmVGcmFtZUxvY2F0aW9uKTsKIAogICAgICAgICAgICAgLy8g
Rm9yIG5vbi1maXhlZCBjb3VudHMsIGJhY2t0cmFjayBpZiB3ZSBkaWRuJ3QgbWF0Y2ggYW55dGhp
bmcuCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MzgyOSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTEyLTEwICBNaWNoYWVsIFNhYm9m
ZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJFR1JFU1NJT04gSGFuZyBpbnNpZGUgWWFycjo6UmVnZXhDb2RlQmxv
Y2s6OmV4ZWN1dGUgd2hlbiB2aXNpdGluZworICAgICAgICBidWdzLndlYmtpdC5vcmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwODE2CisKKyAgICAg
ICAgTmV3IHRlc3QgdG8gdmVyaWZ5IHByb3BlciBiYWNrdHJhY2tpbmcgb2YgYWx0ZXJuYXRpdmUg
bmVzdGVkIHBhcmVucy4KKworICAgICAgICAqIGZhc3QvcmVnZXgvcGFyZW50aGVzZXMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGZhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL3BhcmVudGhlc2VzLmpz
OgorCiAyMDEwLTEyLTEwICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9yZWdleC9wYXJlbnRoZXNlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9yZWdleC9wYXJlbnRoZXNlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDczODI5
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9yZWdleC9wYXJlbnRoZXNlcy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDEwIEBAIFBBU1MgcmVnZXhwMjUuZXhlYygnIXRoaXMg
aXMgYSB0ZXN0JykgaXMKIFBBU1MgcmVnZXhwMjYuZXhlYygnYWFhJykgaXMgWydhYWEnLHVuZGVm
aW5lZCx1bmRlZmluZWRdCiBQQVNTIHJlZ2V4cDI3LmV4ZWMoJ2ZpbGU6Ly8vVXNlcnMvU29tZW9u
ZS9EZXNrdG9wL0hlbGxvV29ybGQvaW5kZXguaHRtbCcpIGlzIFsnZmlsZTovLy9Vc2Vycy9Tb21l
b25lL0Rlc2t0b3AvSGVsbG9Xb3JsZC9pbmRleC5odG1sJywnZmlsZScsJy8vJywnJyx1bmRlZmlu
ZWQsdW5kZWZpbmVkLHVuZGVmaW5lZCwnJyx1bmRlZmluZWQsJy9Vc2Vycy9Tb21lb25lL0Rlc2t0
b3AvSGVsbG9Xb3JsZC9pbmRleC5odG1sJyx1bmRlZmluZWQsdW5kZWZpbmVkXQogUEFTUyByZWdl
eHAyOC5leGVjKCdmaWxlOi8vL1VzZXJzL1NvbWVvbmUvRGVza3RvcC9IZWxsb1dvcmxkL2luZGV4
Lmh0bWwnKSBpcyBbJ2ZpbGU6JywnZmlsZScsdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWQs
dW5kZWZpbmVkLHVuZGVmaW5lZF0KK1BBU1MgcmVnZXhwMjkuZXhlYygnQ29tbWl0dGVyOicpIGlz
IG51bGwKK1BBU1MgcmVnZXhwMjkuZXhlYygnQ29tbWl0dGVyOicpIGlzIG51bGwKK1BBU1MgcmVn
ZXhwMjkuZXhlYygnQ29tbWl0dGVyOicpIGlzIG51bGwKK1BBU1MgcmVnZXhwMjkuZXhlYygnQ29t
bWl0dGVyOicpIGlzIG51bGwKIFBBU1MgJ0hpIEJvYicubWF0Y2goLyhSb2IpfChCb2IpfChSb2Jl
cnQpfChCb2JieSkvKSBpcyBbJ0JvYicsdW5kZWZpbmVkLCdCb2InLHVuZGVmaW5lZCx1bmRlZmlu
ZWRdCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL3BhcmVudGhlc2VzLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL3BhcmVudGhlc2VzLmpzCShyZXZpc2lv
biA3MzgyOSkKKysrIExheW91dFRlc3RzL2Zhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL3BhcmVudGhl
c2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDE4IEBAIHZhciByZWdleHAyOCA9
IG5ldyBSZWdFeHAoCiApOwogc2hvdWxkQmUoInJlZ2V4cDI4LmV4ZWMoJ2ZpbGU6Ly8vVXNlcnMv
U29tZW9uZS9EZXNrdG9wL0hlbGxvV29ybGQvaW5kZXguaHRtbCcpIiwgIlsnZmlsZTonLCdmaWxl
Jyx1bmRlZmluZWQsdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkXSIpOwog
Cit2YXIgcmVnZXhwMjkgPSAvXlxzKigoXFtbXlxdXStcXSl8KHU/KSgiW14iXSsiKSlccyovOwor
c2hvdWxkQmVOdWxsKCJyZWdleHAyOS5leGVjKCdDb21taXR0ZXI6JykiKTsKKwordmFyIHJlZ2V4
cDMwID0gL15ccyooKFxbW15cXV0rXF0pfG0odT8pKCJbXiJdKyIpKVxzKi87CitzaG91bGRCZU51
bGwoInJlZ2V4cDI5LmV4ZWMoJ0NvbW1pdHRlcjonKSIpOworCit2YXIgcmVnZXhwMzEgPSAvXlxz
KihtKFxbW15cXV0rXF0pfG0odT8pKCJbXiJdKyIpKVxzKi87CitzaG91bGRCZU51bGwoInJlZ2V4
cDI5LmV4ZWMoJ0NvbW1pdHRlcjonKSIpOworCit2YXIgcmVnZXhwMzIgPSAvXHMqKG0oXFtbXlxd
XStcXSl8bSh1PykoIlteIl0rIikpXHMqLzsKK3Nob3VsZEJlTnVsbCgicmVnZXhwMjkuZXhlYygn
Q29tbWl0dGVyOicpIik7CisKIHNob3VsZEJlKCInSGkgQm9iJy5tYXRjaCgvKFJvYil8KEJvYil8
KFJvYmVydCl8KEJvYmJ5KS8pIiwgIlsnQm9iJyx1bmRlZmluZWQsJ0JvYicsdW5kZWZpbmVkLHVu
ZGVmaW5lZF0iKTsKIAogdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>
<flag name="review"
          id="67229"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>