<?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>3428</bug_id>
          
          <creation_ts>2005-06-10 22:49:40 -0700</creation_ts>
          <short_desc>CSS2/3: Descendant and indirect adjacent selectors don&apos;t backtrack properly</short_desc>
          <delta_ts>2007-10-11 18:27:18 -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>CSS</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>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>bugs-webkit</cc>
    
    <cc>eric</cc>
    
    <cc>ian</cc>
    
    <cc>nickshanks</cc>
    
    <cc>phiw2</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>11374</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2005-06-10 22:49:40 -0700</bug_when>
    <thetext>Both the descendant and indirect adjacent selectors do not backtrack properly.  It&apos;s possible for the 
element on the left to match the selector but then to fail the match later on as you continue to move to 
the left looking at other selectors.  When this happens WebKit just fails to match the rule, but instead you 
need to backtrack and keep trying more elements.

Should be fixable by splitting out the code to match these selectors into functions and getting some 
recursion in there. :)

We will need to test performance once the change is made, since making the descendant selector behave 
properly could have a negative performance impact.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11375</commentid>
    <comment_count>1</comment_count>
      <attachid>2243</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2005-06-10 22:56:39 -0700</bug_when>
    <thetext>Created attachment 2243
Test showing the problem (works in Firefox)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20653</commentid>
    <comment_count>2</comment_count>
      <attachid>4059</attachid>
    <who name="Evgeni Popov">opendarwin</who>
    <bug_when>2005-09-27 01:26:41 -0700</bug_when>
    <thetext>Created attachment 4059
Another test case (works with firefox / opera PC)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24626</commentid>
    <comment_count>3</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2005-11-27 05:53:58 -0800</bug_when>
    <thetext>The same bug is tracked in KDE as http://bugs.kde.org/show_bug.cgi?id=101115 </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2408</commentid>
    <comment_count>4</comment_count>
      <attachid>15952</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2007-08-13 05:56:39 -0700</bug_when>
    <thetext>Created attachment 15952
Quick patch

Here is a quick patch that fixes this bug isolated. 

The patch is not ready for review yet, but I will submit it later as part of a larger patch that fixes several serious issues in WebKit&apos;s CSS Selector implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2261</commentid>
    <comment_count>5</comment_count>
      <attachid>15980</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2007-08-15 07:54:24 -0700</bug_when>
    <thetext>Created attachment 15980
Patch

A more complete patch. It cleans up minor crud in the CSS selector handling, but stays clear of any major changes. 

I decided a larger patch probably wasn&apos;t suitable at this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2258</commentid>
    <comment_count>6</comment_count>
      <attachid>15980</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2007-08-15 08:08:55 -0700</bug_when>
    <thetext>Comment on attachment 15980
Patch

forget it, it fails a few regression-tests, now that I got the tests working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2190</commentid>
    <comment_count>7</comment_count>
      <attachid>15995</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2007-08-16 06:00:51 -0700</bug_when>
    <thetext>Created attachment 15995
New patch

Updated patch. I had missed how you handled pseudostyles differently.

I still get regression-failures, but I assume now that the rest are normal for the WebKitQt build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1934</commentid>
    <comment_count>8</comment_count>
      <attachid>15995</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-08-19 21:01:02 -0700</bug_when>
    <thetext>Comment on attachment 15995
New patch

This looks ok.  What did you mean when you said that there are still failures?  Are there tests we need to worry about (or do they just need to be fixed because they pass now)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1928</commentid>
    <comment_count>9</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2007-08-19 23:06:24 -0700</bug_when>
    <thetext>I have around 100 test that fails with small stuff like varying heights. I didn&apos;t read all of them. I assume that most are just the difference between Mac and Qt versions, but some are likely to be improvements too. I am still working on getting the tests to run properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295</commentid>
    <comment_count>10</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2007-08-28 21:35:11 -0700</bug_when>
    <thetext>The only two failures I get on the Mac are fast/js/function-decompilation-operators.html and http/tests/security/cross-frame-access-protocol-explicit.html. I doubt these are failing due to the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075</commentid>
    <comment_count>11</comment_count>
      <attachid>15995</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-08-31 18:28:52 -0700</bug_when>
    <thetext>Comment on attachment 15995
New patch

Given Cameron&apos;s comment and hyatt&apos;s previous comment, r=me for the feature-branch. We may need to roll feature branch forward for this to apply cleanly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420</commentid>
    <comment_count>12</comment_count>
      <attachid>16305</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2007-09-17 06:04:33 -0700</bug_when>
    <thetext>Created attachment 16305
Updated patch

This updated patch fixes a possible performance regression I thought would never occur in the wild.

The regression occured on a very deep tree with similar nested nodes, and a 3 or more part descent selector that matched these nodes. Unfortunately I found a case with &quot;XHTML served as HTML&quot; this week that did just that, because a lot of elements were never closed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58317</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-11 13:27:32 -0700</bug_when>
    <thetext>Just curious what the status here is.  Did you mean to mark that patch for review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58318</commentid>
    <comment_count>14</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2007-10-11 13:34:00 -0700</bug_when>
    <thetext>The old patch was approved. This new patch is just a speed-up. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58319</commentid>
    <comment_count>15</comment_count>
      <attachid>16305</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-11 13:55:28 -0700</bug_when>
    <thetext>Comment on attachment 16305
Updated patch

I know mjs already reviewed the old one, but I figured I should at least look before landing.  Still looks sane.  r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58331</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-11 18:27:18 -0700</bug_when>
    <thetext>Landed on feature-branch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>2243</attachid>
            <date>2005-06-10 22:56:39 -0700</date>
            <delta_ts>2005-06-10 22:56:39 -0700</delta_ts>
            <desc>Test showing the problem (works in Firefox)</desc>
            <filename>badselectors.html</filename>
            <type>text/html</type>
            <size>367</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c3R5bGU+Ci5hID4gLmIgLmMgewogIGNvbG9yOiBncmVlbjsKfQoKLmQg
KyAuZSB+IC5mIHsKICBjb2xvcjogZ3JlZW47Cn0KCjwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+Cjxk
aXYgY2xhc3M9ImEiPgo8ZGl2IGNsYXNzPSJiIj4KPGRpdiBjbGFzcz0iYiI+CjxkaXYgY2xhc3M9
ImMiPgpUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rp
dj4KCjxkaXYgY2xhc3M9ImQiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJlIj48L2Rpdj4KPGRpdiBjbGFz
cz0iZSI+PC9kaXY+CjxkaXYgY2xhc3M9ImYiPlRoaXMgdGV4dCBzaG91bGQgYWxzbyBiZSBncmVl
bi48L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>4059</attachid>
            <date>2005-09-27 01:26:41 -0700</date>
            <delta_ts>2005-09-27 01:27:21 -0700</delta_ts>
            <desc>Another test case (works with firefox / opera PC)</desc>
            <filename>testcase.html</filename>
            <type>text/html</type>
            <size>279</size>
            <attacher name="Evgeni Popov">opendarwin</attacher>
            
              <data encoding="base64">PGh0bWw+DQo8aGVhZD4NCiAgICA8c3R5bGU+DQogICAgICAgIC5hLmIgLmQgeyBiYWNrZ3JvdW5k
LWNvbG9yOiByZWQ7IH0NCiAgICA8L3N0eWxlPg0KPC9oZWFkPg0KPGJvZHk+DQogICAgPHNwYW4g
Y2xhc3M9ImEgYiI+DQogICAgICAgIDxzcGFuIGNsYXNzPSJhIGMiPg0KICAgICAgICAgICAgPHNw
YW4gY2xhc3M9ImQiPnRoaXMgdGV4dCBzaG91bGQgaGF2ZSBhIHJlZCBiYWNrZ3JvdW5kPC9zcGFu
Pg0KICAgICAgICA8L3NwYW4+DQogICAgPC9zcGFuPg0KPC9ib2R5Pg0KPC9odG1sPg0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15952</attachid>
            <date>2007-08-13 05:56:39 -0700</date>
            <delta_ts>2007-08-15 07:54:24 -0700</delta_ts>
            <desc>Quick patch</desc>
            <filename>study</filename>
            <type>text/plain</type>
            <size>10401</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAyNTA1MykKKysrIFdlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjksNyArNDI5
LDcgQEAKICAgICAgICAgQ1NTU3R5bGVSdWxlKiBydWxlID0gZC0+cnVsZSgpOwogICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSA9IGVsZW1lbnQtPmxvY2FsTmFtZSgpOwogICAg
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdG9yTG9jYWxOYW1lID0gZC0+c2VsZWN0b3Io
KS0+bV90YWcubG9jYWxOYW1lKCk7Ci0gICAgICAgIGlmICgobG9jYWxOYW1lID09IHNlbGVjdG9y
TG9jYWxOYW1lIHx8IHNlbGVjdG9yTG9jYWxOYW1lID09IHN0YXJBdG9tKSAmJiBjaGVja1NlbGVj
dG9yKGQtPnNlbGVjdG9yKCksIGVsZW1lbnQpKSB7CisgICAgICAgIGlmICgobG9jYWxOYW1lID09
IHNlbGVjdG9yTG9jYWxOYW1lIHx8IHNlbGVjdG9yTG9jYWxOYW1lID09IHN0YXJBdG9tKSAmJiBj
aGVja1NlbGVjdG9yKGQtPnNlbGVjdG9yKCkpKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgcnVs
ZSBoYXMgbm8gcHJvcGVydGllcyB0byBhcHBseSwgdGhlbiBpZ25vcmUgaXQuCiAgICAgICAgICAg
ICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZGVjbCA9IHJ1bGUtPmRlY2xhcmF0aW9uKCk7
CiAgICAgICAgICAgICBpZiAoIWRlY2wgfHwgIWRlY2wtPmxlbmd0aCgpKQpAQCAtMTIyMCwxMjEg
KzEyMjAsODIgQEAKIAogc3RhdGljIGJvb2wgc3ViamVjdDsKIAotYm9vbCBDU1NTdHlsZVNlbGVj
dG9yOjpjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQgKmUpCitib29sIENT
U1N0eWxlU2VsZWN0b3I6OmNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCkKIHsKICAgICBk
eW5hbWljUHNldWRvID0gUmVuZGVyU3R5bGU6Ok5PUFNFVURPOwotICAgIAotICAgIE5vZGUgKm4g
PSBlOwogCi0gICAgLy8gd2UgaGF2ZSB0aGUgc3ViamVjdCBwYXJ0IG9mIHRoZSBzZWxlY3Rvcgot
ICAgIHN1YmplY3QgPSB0cnVlOworICAgIC8vIENoZWNrIHRoZSBzZWxlY3RvcgorICAgIGlmKCFj
aGVja1NlbGVjdG9yKHNlbCwgZWxlbWVudCwgdHJ1ZSwgZmFsc2UpKSByZXR1cm4gZmFsc2U7CiAK
LSAgICAvLyBXZSB0cmFjayB3aGV0aGVyIG9yIG5vdCB0aGUgcnVsZSBjb250YWlucyBvbmx5IDpo
b3ZlciBhbmQgOmFjdGl2ZSBpbiBhIHNpbXBsZSBzZWxlY3Rvci4gSWYKLSAgICAvLyBzbywgd2Ug
Y2FuJ3QgYWxsb3cgdGhhdCB0byBhcHBseSB0byBldmVyeSBlbGVtZW50IG9uIHRoZSBwYWdlLiAg
V2UgYXNzdW1lIHRoZSBhdXRob3IgaW50ZW5kZWQKLSAgICAvLyB0byBhcHBseSB0aGUgcnVsZXMg
b25seSB0byBsaW5rcy4KLSAgICBib29sIG9ubHlIb3ZlckFjdGl2ZSA9ICghc2VsLT5oYXNUYWco
KSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWwtPm1fbWF0Y2ggPT0gQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Vs
LT5wc2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0hvdmVyIHx8Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsLT5wc2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb0FjdGl2ZSkpKTsKLSAgICBib29sIGFmZmVjdGVkQnlIb3ZlciA9IHN0eWxlID8gc3R5bGUt
PmFmZmVjdGVkQnlIb3ZlclJ1bGVzKCkgOiBmYWxzZTsKLSAgICBib29sIGFmZmVjdGVkQnlBY3Rp
dmUgPSBzdHlsZSA/IHN0eWxlLT5hZmZlY3RlZEJ5QWN0aXZlUnVsZXMoKSA6IGZhbHNlOwotICAg
IGJvb2wgaGF2ZVBzZXVkbyA9IHBzZXVkb1N0eWxlICE9IFJlbmRlclN0eWxlOjpOT1BTRVVETzsK
LSAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVj
a1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQgKmUsIGJvb2wgaXNBbmNlc3Rvciwg
Ym9vbCBpc1N1YlNlbGVjdG9yKQorewogICAgIC8vIGZpcnN0IHNlbGVjdG9yIGhhcyB0byBtYXRj
aAotICAgIGlmICghY2hlY2tPbmVTZWxlY3RvcihzZWwsIGUpKQorICAgIGlmICghY2hlY2tPbmVT
ZWxlY3RvcihzZWwsIGUsIGlzQW5jZXN0b3IsIGlzU3ViU2VsZWN0b3IpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAvLyBjaGVjayB0aGUgc3Vic2VsZWN0b3JzCisgICAgLy8gVGhlIHJl
c3Qgb2YgdGhlIHNlbGVjdG9ycyBoYXMgdG8gbWF0Y2gKICAgICBDU1NTZWxlY3Rvcjo6UmVsYXRp
b24gcmVsYXRpb24gPSBzZWwtPnJlbGF0aW9uKCk7Ci0gICAgd2hpbGUoKHNlbCA9IHNlbC0+bV90
YWdIaXN0b3J5KSkgewotICAgICAgICBpZiAoIW4tPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKHJlbGF0aW9uICE9IENTU1NlbGVjdG9yOjpT
dWJTZWxlY3RvcikgewotICAgICAgICAgICAgc3ViamVjdCA9IGZhbHNlOwotICAgICAgICAgICAg
aWYgKGhhdmVQc2V1ZG8gJiYgZHluYW1pY1BzZXVkbyAhPSBwc2V1ZG9TdHlsZSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHN3aXRj
aChyZWxhdGlvbikKLSAgICAgICAgeworCisgICAgLy8gUHJlcGFyZSBuZXh0IHNlbAorICAgIHNl
bCA9IHNlbC0+bV90YWdIaXN0b3J5OworICAgIGlmICghc2VsKSByZXR1cm4gZTsKKworICAgIHN3
aXRjaChyZWxhdGlvbikgewogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpEZXNjZW5kYW50Ogot
ICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgbWF0Y2ggbmVlZHMgdG8ga25vdyBob3cgdG8gYmFj
a3RyYWNrIGFuZCBiZSBub24tZGV0ZXJtaW5pc3RpYy4KLSAgICAgICAgICAgIGRvIHsKLSAgICAg
ICAgICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOwotICAgICAgICAgICAgICAgIGlmICghbiB8
fCAhbi0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgd2hpbGUodHJ1ZSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBuID0gZS0+cGFyZW50Tm9kZSgpOworICAgICAg
ICAgICAgICAgIGlmKCFuIHx8ICFuLT5pc0VsZW1lbnROb2RlKCkpIAogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IHdoaWxlICghY2hlY2tPbmVTZWxlY3Rv
cihzZWwsIHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKSkpOworICAgICAgICAgICAgICAgIGUgPSBz
dGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CisgICAgICAgICAgICAgICAgaWYgKGNoZWNrU2VsZWN0
b3Ioc2VsLCBlLCB0cnVlLCBmYWxzZSkpIAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpDaGlsZDoKICAgICAgICAgewotICAgICAgICAgICAgbiA9IG4tPnBhcmVudE5vZGUo
KTsKLSAgICAgICAgICAgIGlmICghbiB8fCAhbi0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAg
ICAgTm9kZSogbiA9IGUtPnBhcmVudE5vZGUoKTsKKyAgICAgICAgICAgIGlmKCFuIHx8ICFuLT5p
c0VsZW1lbnROb2RlKCkpIAogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIGlmICghY2hlY2tPbmVTZWxlY3RvcihzZWwsIHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZSA9IHN0YXRpY19j
YXN0PEVsZW1lbnQqPihuKTsKKyAgICAgICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHNlbCwgZSwg
dHJ1ZSwgZmFsc2UpKSAKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkluZGlyZWN0QWRq
YWNlbnQ6CisgICAgICAgICAgICB3aGlsZSh0cnVlKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIE5vZGUqIG4gPSBlLT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICAgICAgICAgICAgICB3
aGlsZSggbiAmJiAhbi0+aXNFbGVtZW50Tm9kZSgpICkKKyAgICAgICAgICAgICAgICAgICAgbiA9
IG4tPnByZXZpb3VzU2libGluZygpOworICAgICAgICAgICAgICAgIGlmICghbikgCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBlID0gc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KG4pOworICAgICAgICAgICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHNlbCwg
ZSwgZmFsc2UsIGZhbHNlKSkgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9OworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50OgogICAg
ICAgICB7Ci0gICAgICAgICAgICBuID0gbi0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAgICAgICAg
ICBOb2RlKiBuID0gZS0+cHJldmlvdXNTaWJsaW5nKCk7CiAgICAgICAgICAgICB3aGlsZSAobiAm
JiAhbi0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgIG4gPSBuLT5wcmV2aW91c1Np
YmxpbmcoKTsKLSAgICAgICAgICAgIGlmICghbikKKyAgICAgICAgICAgIGlmICghbikgCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCFjaGVja09uZVNlbGVj
dG9yKHNlbCwgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOworICAg
ICAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBmYWxzZSwgZmFsc2UpKSByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OkluZGlyZWN0QWRqYWNlbnQ6Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBtYXRj
aCBuZWVkcyB0byBrbm93IGhvdyB0byBiYWNrdHJhY2sgYW5kIGJlIG5vbi1kZXRlcm1pbmlzdGlj
LgotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIG4gPSBuLT5wcmV2aW91c1NpYmxp
bmcoKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAobiAmJiAhbi0+aXNFbGVtZW50Tm9kZSgpKQot
ICAgICAgICAgICAgICAgICAgICBuID0gbi0+cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFuKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICB9IHdoaWxlICghY2hlY2tPbmVTZWxlY3RvcihzZWwsIHN0YXRpY19jYXN0PEVsZW1lbnQq
PihuKSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U3Vi
U2VsZWN0b3I6Ci0gICAgICAgewotICAgICAgICAgICAgaWYgKG9ubHlIb3ZlckFjdGl2ZSkKLSAg
ICAgICAgICAgICAgICBvbmx5SG92ZXJBY3RpdmUgPSAoc2VsLT5tX21hdGNoID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzcyAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
c2VsLT5wc2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0hvdmVyIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWwtPnBzZXVkb1R5cGUoKSA9PSBDU1NTZWxl
Y3Rvcjo6UHNldWRvQWN0aXZlKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEVsZW1lbnQg
KmVsZW0gPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICAvLyBhIHNlbGVj
dG9yIGlzIGludmFsaWQgaWYgc29tZXRoaW5nIGZvbGxvd3MgOmZpcnN0LXh4eAotICAgICAgICAg
ICAgaWYgKGVsZW0gPT0gZWxlbWVudCAmJiBkeW5hbWljUHNldWRvICE9IFJlbmRlclN0eWxlOjpO
T1BTRVVETykKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAo
IWNoZWNrT25lU2VsZWN0b3Ioc2VsLCBlbGVtLCB0cnVlKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIHJlbGF0aW9uID0gc2VsLT5yZWxhdGlvbigpOworICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpTdWJTZWxlY3RvcjoKKyAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwg
aXNBbmNlc3RvciwgdHJ1ZSk7CiAgICAgfQogCi0gICAgaWYgKHN1YmplY3QgJiYgaGF2ZVBzZXVk
byAmJiBkeW5hbWljUHNldWRvICE9IHBzZXVkb1N0eWxlKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgCi0gICAgLy8gZGlzYWxsb3cgKjpob3ZlciwgKjphY3RpdmUsIGFuZCAqOmhvdmVyOmFj
dGl2ZSBleGNlcHQgZm9yIGxpbmtzCi0gICAgaWYgKCFzdHJpY3RQYXJzaW5nICYmIG9ubHlIb3Zl
ckFjdGl2ZSAmJiBzdWJqZWN0KSB7Ci0gICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9V
bmtub3duKQotICAgICAgICAgICAgY2hlY2tQc2V1ZG9TdGF0ZShlKTsKLQotICAgICAgICBpZiAo
cHNldWRvU3RhdGUgPT0gUHNldWRvTm9uZSkgewotICAgICAgICAgICAgaWYgKCFhZmZlY3RlZEJ5
SG92ZXIgJiYgc3R5bGUtPmFmZmVjdGVkQnlIb3ZlclJ1bGVzKCkpCi0gICAgICAgICAgICAgICAg
c3R5bGUtPnNldEFmZmVjdGVkQnlIb3ZlclJ1bGVzKGZhbHNlKTsKLSAgICAgICAgICAgIGlmICgh
YWZmZWN0ZWRCeUFjdGl2ZSAmJiBzdHlsZS0+YWZmZWN0ZWRCeUFjdGl2ZVJ1bGVzKCkpCi0gICAg
ICAgICAgICAgICAgc3R5bGUtPnNldEFmZmVjdGVkQnlBY3RpdmVSdWxlcyhmYWxzZSk7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tP
bmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBib29sIGlzU3ViU2VsZWN0
b3IpCitib29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3Iq
IHNlbCwgRWxlbWVudCogZSwgYm9vbCBpc0FuY2VzdG9yLCBib29sIGlzU3ViU2VsZWN0b3IpCiB7
CiAgICAgaWYoIWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE0ODksMTEgKzE0NTAsMTMg
QEAKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0hvdmVyOiB7CiAgICAgICAg
ICAgICAgICAgLy8gSWYgd2UncmUgaW4gcXVpcmtzIG1vZGUsIHRoZW4gaG92ZXIgc2hvdWxkIG5l
dmVyIG1hdGNoIGFuY2hvcnMgd2l0aCBubwogICAgICAgICAgICAgICAgIC8vIGhyZWYgYW5kICo6
aG92ZXIgc2hvdWxkIG5vdCBtYXRjaCBhbnl0aGluZy4gIFRoaXMgaXMgaW1wb3J0YW50IGZvciBz
aXRlcyBsaWtlIHdzai5jb20uCi0gICAgICAgICAgICAgICAgaWYgKHN0cmljdFBhcnNpbmcgfHwg
aXNTdWJTZWxlY3RvciB8fCBzZWwtPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVj
dG9yIHx8IChzZWwtPmhhc1RhZygpICYmICFlLT5oYXNUYWdOYW1lKGFUYWcpKSB8fCBlLT5pc0xp
bmsoKSkgeworICAgICAgICAgICAgICAgIGlmIChzdHJpY3RQYXJzaW5nIHx8IGlzU3ViU2VsZWN0
b3IgfHwgKHNlbC0+aGFzVGFnKCkgJiYgIWUtPmhhc1RhZ05hbWUoYVRhZykpIHx8IGUtPmlzTGlu
aygpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGUgJiYgc3R5bGUpCiAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0QWZmZWN0ZWRCeUhvdmVyUnVsZXModHJ1
ZSk7CisgICAgICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ICE9IGUgJiYgZS0+cmVuZGVyU3R5bGUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGUt
PnJlbmRlclN0eWxlKCktPnNldEFmZmVjdGVkQnlIb3ZlclJ1bGVzKHRydWUpOworICAgICAgICAg
ICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgICAgICBpZiAoZS0+aG92ZXJlZCgpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQpAQCAt
MTUxNSwxMSArMTQ3OCwxMyBAQAogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
QWN0aXZlOgogICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIGluIHF1aXJrcyBtb2RlLCB0aGVu
IDphY3RpdmUgc2hvdWxkIG5ldmVyIG1hdGNoIGFuY2hvcnMgd2l0aCBubwogICAgICAgICAgICAg
ICAgIC8vIGhyZWYgYW5kICo6YWN0aXZlIHNob3VsZCBub3QgbWF0Y2ggYW55dGhpbmcuIAotICAg
ICAgICAgICAgICAgIGlmIChzdHJpY3RQYXJzaW5nIHx8IGlzU3ViU2VsZWN0b3IgfHwgc2VsLT5y
ZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvciB8fCAoc2VsLT5oYXNUYWcoKSAm
JiAhZS0+aGFzVGFnTmFtZShhVGFnKSkgfHwgZS0+aXNMaW5rKCkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoc3RyaWN0UGFyc2luZyB8fCBpc1N1YlNlbGVjdG9yIHx8IChzZWwtPmhhc1RhZygpICYm
ICFlLT5oYXNUYWdOYW1lKGFUYWcpKSB8fCBlLT5pc0xpbmsoKSkgewogICAgICAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBlICYmIHN0eWxlKQogICAgICAgICAgICAgICAgICAgICAgICAg
c3R5bGUtPnNldEFmZmVjdGVkQnlBY3RpdmVSdWxlcyh0cnVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgLyoKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZS0+cmVuZGVyU3R5bGUoKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGUtPnJlbmRlclN0eWxlKCktPnNldEFmZmVjdGVkQnlBY3Rp
dmVSdWxlcyh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICAg
ICAgaWYgKGUtPmFjdGl2ZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgICAgICAgICAgfQpAQCAtMTU2OCw3ICsxNTMzLDcgQEAKICAgICAgICAgICAgICAg
ICAgICAgLy8gcmVzdHJpY3Rpb24gaW4gQ1NTMywgYnV0IGl0IGlzLCBzbyBsZXQncyBob25vdXIg
aXQuCiAgICAgICAgICAgICAgICAgICAgIGlmIChzdWJTZWwtPm1fc2ltcGxlU2VsZWN0b3IpCiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFj
aGVja09uZVNlbGVjdG9yKHN1YlNlbCwgZSkpCisgICAgICAgICAgICAgICAgICAgIGlmICghY2hl
Y2tPbmVTZWxlY3RvcihzdWJTZWwsIGUsIGlzQW5jZXN0b3IsIHRydWUpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGJyZWFrOwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAkocmV2aXNpb24gMjUwNTMpCisr
KyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiwx
MCArMTM2LDExIEBACiAKICAgICAgICAgLyogY2hlY2tzIGlmIGEgY29tcG91bmQgc2VsZWN0b3Ig
KHdoaWNoIGNhbiBjb25zaXN0IG9mIG11bHRpcGxlIHNpbXBsZSBzZWxlY3RvcnMpCiAgICAgICAg
ICAgIG1hdGNoZXMgdGhlIGdpdmVuIEVsZW1lbnQgKi8KLSAgICAgICAgYm9vbCBjaGVja1NlbGVj
dG9yKENTU1NlbGVjdG9yKiBzZWxlY3RvciwgRWxlbWVudCAqZSk7Ci0gICAgICAgIAorICAgICAg
ICBib29sIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKTsKKyAgICAgICAgYm9v
bCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWxlY3RvciwgRWxlbWVudCAqZSwgYm9vbCBp
c0FuY2VzdG9yLCBib29sIGlzU3ViU2VsZWN0b3IpOworCiAgICAgICAgIC8qIGNoZWNrcyBpZiB0
aGUgc2VsZWN0b3IgbWF0Y2hlcyB0aGUgZ2l2ZW4gRWxlbWVudCAqLwotICAgICAgICBib29sIGNo
ZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgYm9vbCBpc1N1YlNlbGVjdG9y
ID0gZmFsc2UpOworICAgICAgICBib29sIGNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqLCBF
bGVtZW50KiwgYm9vbCBpc0FuY2VzdG9yLCBib29sIGlzU3ViU2VsZWN0b3IgPSBmYWxzZSk7CiAK
ICAgICAgICAgLyogVGhpcyBmdW5jdGlvbiBmaXhlcyB1cCB0aGUgZGVmYXVsdCBmb250IHNpemUg
aWYgaXQgZGV0ZWN0cyB0aGF0IHRoZQogICAgICAgICAgICBjdXJyZW50IGdlbmVyaWMgZm9udCBm
YW1pbHkgaGFzIGNoYW5nZWQuIC1kd2ggKi8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15980</attachid>
            <date>2007-08-15 07:54:24 -0700</date>
            <delta_ts>2007-08-16 06:00:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>nondeterministic.diff</filename>
            <type>text/plain</type>
            <size>17571</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTA5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDctMDgtMTUgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPHNhbmRm
ZWxkQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IENTUyBzZWxlY3RvciBjb21iaW5hdG9ycyBub25kZXRlcm1pbmlzdGlj
IG1hdGNoaW5nLiAKKyAgICAgICAgRml4ZXMgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzQyOAorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hSdWxlc0Zvckxpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3Rvcik6IFNwbGl0IHRo
ZSBmdW5jdGlvbiBhbmQgbWFrZSB0aGUgc2Vjb25kIHBhcnQgcmVjdXJzaXZlCisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjaGVja09uZVNlbGVjdG9yKTogSGFuZGxlIHBzZW9k
by1lbGVtZW50cyBydWxlcyBhbmQgaG92ZXJhY3RpdmUgcXVpcmtzIAorICAgICAgICBoZXJlIGlu
c3RlYWQgb2YgaW4gY2hlY2tTZWxlY3Rvci4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5oOgorCiAyMDA3LTA4LTE0ICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0MTE0ODI+IFdpbmRvd3MgdXNlciBhZ2VudCBs
YW5ndWFnZSBhbHdheXMgcmV0dXJucyAiZW4iCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cAkocmV2aXNpb24gMjUwOTApCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDI5LDcgKzQyOSw3IEBACiAgICAgICAgIENTU1N0eWxlUnVsZSog
cnVsZSA9IGQtPnJ1bGUoKTsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUg
PSBlbGVtZW50LT5sb2NhbE5hbWUoKTsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxl
Y3RvckxvY2FsTmFtZSA9IGQtPnNlbGVjdG9yKCktPm1fdGFnLmxvY2FsTmFtZSgpOwotICAgICAg
ICBpZiAoKGxvY2FsTmFtZSA9PSBzZWxlY3RvckxvY2FsTmFtZSB8fCBzZWxlY3RvckxvY2FsTmFt
ZSA9PSBzdGFyQXRvbSkgJiYgY2hlY2tTZWxlY3RvcihkLT5zZWxlY3RvcigpLCBlbGVtZW50KSkg
eworICAgICAgICBpZiAoKGxvY2FsTmFtZSA9PSBzZWxlY3RvckxvY2FsTmFtZSB8fCBzZWxlY3Rv
ckxvY2FsTmFtZSA9PSBzdGFyQXRvbSkgJiYgY2hlY2tTZWxlY3RvcihkLT5zZWxlY3RvcigpKSkg
ewogICAgICAgICAgICAgLy8gSWYgdGhlIHJ1bGUgaGFzIG5vIHByb3BlcnRpZXMgdG8gYXBwbHks
IHRoZW4gaWdub3JlIGl0LgogICAgICAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24q
IGRlY2wgPSBydWxlLT5kZWNsYXJhdGlvbigpOwogICAgICAgICAgICAgaWYgKCFkZWNsIHx8ICFk
ZWNsLT5sZW5ndGgoKSkKQEAgLTEyMTksMTIzICsxMjE5LDg0IEBACiAgICAgcmV0dXJuIDA7CiB9
CiAKLXN0YXRpYyBib29sIHN1YmplY3Q7Ci0KLWJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tT
ZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50ICplKQorYm9vbCBDU1NTdHlsZVNlbGVj
dG9yOjpjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwpCiB7CiAgICAgZHluYW1pY1BzZXVk
byA9IFJlbmRlclN0eWxlOjpOT1BTRVVETzsKLSAgICAKLSAgICBOb2RlICpuID0gZTsKIAotICAg
IC8vIHdlIGhhdmUgdGhlIHN1YmplY3QgcGFydCBvZiB0aGUgc2VsZWN0b3IKLSAgICBzdWJqZWN0
ID0gdHJ1ZTsKKyAgICAvLyBDaGVjayB0aGUgc2VsZWN0b3IKKyAgICBpZighY2hlY2tTZWxlY3Rv
cihzZWwsIGVsZW1lbnQsIHRydWUsIGZhbHNlKSkgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gV2Ug
dHJhY2sgd2hldGhlciBvciBub3QgdGhlIHJ1bGUgY29udGFpbnMgb25seSA6aG92ZXIgYW5kIDph
Y3RpdmUgaW4gYSBzaW1wbGUgc2VsZWN0b3IuIElmCi0gICAgLy8gc28sIHdlIGNhbid0IGFsbG93
IHRoYXQgdG8gYXBwbHkgdG8gZXZlcnkgZWxlbWVudCBvbiB0aGUgcGFnZS4gIFdlIGFzc3VtZSB0
aGUgYXV0aG9yIGludGVuZGVkCi0gICAgLy8gdG8gYXBwbHkgdGhlIHJ1bGVzIG9ubHkgdG8gbGlu
a3MuCi0gICAgYm9vbCBvbmx5SG92ZXJBY3RpdmUgPSAoIXNlbC0+aGFzVGFnKCkgJiYKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzcyAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbC0+cHNldWRvVHlw
ZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Ib3ZlciB8fAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbC0+cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9BY3RpdmUp
KSk7Ci0gICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXIgPSBzdHlsZSA/IHN0eWxlLT5hZmZlY3RlZEJ5
SG92ZXJSdWxlcygpIDogZmFsc2U7Ci0gICAgYm9vbCBhZmZlY3RlZEJ5QWN0aXZlID0gc3R5bGUg
PyBzdHlsZS0+YWZmZWN0ZWRCeUFjdGl2ZVJ1bGVzKCkgOiBmYWxzZTsKLSAgICBib29sIGhhdmVQ
c2V1ZG8gPSBwc2V1ZG9TdHlsZSAhPSBSZW5kZXJTdHlsZTo6Tk9QU0VVRE87Ci0gICAgCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3RvcihD
U1NTZWxlY3Rvciogc2VsLCBFbGVtZW50ICplLCBib29sIGlzQW5jZXN0b3IsIGJvb2wgaXNTdWJT
ZWxlY3RvcikKK3sKICAgICAvLyBmaXJzdCBzZWxlY3RvciBoYXMgdG8gbWF0Y2gKLSAgICBpZiAo
IWNoZWNrT25lU2VsZWN0b3Ioc2VsLCBlKSkKKyAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc2Vs
LCBlLCBpc0FuY2VzdG9yLCBpc1N1YlNlbGVjdG9yKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgLy8gY2hlY2sgdGhlIHN1YnNlbGVjdG9ycworICAgIC8vIFRoZSByZXN0IG9mIHRoZSBz
ZWxlY3RvcnMgaGFzIHRvIG1hdGNoCiAgICAgQ1NTU2VsZWN0b3I6OlJlbGF0aW9uIHJlbGF0aW9u
ID0gc2VsLT5yZWxhdGlvbigpOwotICAgIHdoaWxlKChzZWwgPSBzZWwtPm1fdGFnSGlzdG9yeSkp
IHsKLSAgICAgICAgaWYgKCFuLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIGlmIChyZWxhdGlvbiAhPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3Ip
IHsKLSAgICAgICAgICAgIHN1YmplY3QgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChoYXZlUHNl
dWRvICYmIGR5bmFtaWNQc2V1ZG8gIT0gcHNldWRvU3R5bGUpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2gocmVsYXRpb24p
Ci0gICAgICAgIHsKKworICAgIC8vIFByZXBhcmUgbmV4dCBzZWwKKyAgICBzZWwgPSBzZWwtPm1f
dGFnSGlzdG9yeTsKKyAgICBpZiAoIXNlbCkgcmV0dXJuIHRydWU7CisKKyAgICBzd2l0Y2gocmVs
YXRpb24pIHsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudDoKLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIG1hdGNoIG5lZWRzIHRvIGtub3cgaG93IHRvIGJhY2t0cmFjayBh
bmQgYmUgbm9uLWRldGVybWluaXN0aWMuCi0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAg
ICAgbiA9IG4tPnBhcmVudE5vZGUoKTsKLSAgICAgICAgICAgICAgICBpZiAoIW4gfHwgIW4tPmlz
RWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIHdoaWxlKHRydWUpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgTm9kZSogbiA9IGUtPnBhcmVudE5vZGUoKTsKKyAgICAgICAgICAgICAg
ICBpZighbiB8fCAhbi0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IHdoaWxlICghY2hlY2tPbmVTZWxlY3RvcihzZWwsIHN0
YXRpY19jYXN0PEVsZW1lbnQqPihuKSkpOworICAgICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4obik7CisgICAgICAgICAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3Ioc2VsLCBl
LCB0cnVlLCBmYWxzZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNo
aWxkOgogICAgICAgICB7Ci0gICAgICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOworICAgICAg
ICAgICAgTm9kZSogbiA9IGUtPnBhcmVudE5vZGUoKTsKICAgICAgICAgICAgIGlmICghbiB8fCAh
bi0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIGlmICghY2hlY2tPbmVTZWxlY3RvcihzZWwsIHN0YXRpY19jYXN0PEVsZW1lbnQqPihu
KSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZSA9IHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihuKTsKKyAgICAgICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHNlbCwg
ZSwgdHJ1ZSwgZmFsc2UpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RB
ZGphY2VudDoKKyAgICAgICAgICAgIHdoaWxlKHRydWUpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgTm9kZSogbiA9IGUtPnByZXZpb3VzU2libGluZygpOworICAgICAgICAgICAgICAg
IHdoaWxlKG4gJiYgIW4tPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgICAgICAgICAgbiA9
IG4tPnByZXZpb3VzU2libGluZygpOworICAgICAgICAgICAgICAgIGlmICghbikgCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBlID0gc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KG4pOworICAgICAgICAgICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHNlbCwg
ZSwgZmFsc2UsIGZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICB9OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OkRpcmVjdEFkamFjZW50OgogICAgICAgICB7Ci0gICAgICAgICAgICBuID0gbi0+cHJldmlvdXNT
aWJsaW5nKCk7CisgICAgICAgICAgICBOb2RlKiBuID0gZS0+cHJldmlvdXNTaWJsaW5nKCk7CiAg
ICAgICAgICAgICB3aGlsZSAobiAmJiAhbi0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAg
ICAgIG4gPSBuLT5wcmV2aW91c1NpYmxpbmcoKTsKLSAgICAgICAgICAgIGlmICghbikKKyAgICAg
ICAgICAgIGlmICghbikgCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHNlbCwgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBlID0gc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KG4pOworICAgICAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBm
YWxzZSwgZmFsc2UpKSAKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkluZGlyZWN0QWRq
YWNlbnQ6Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBtYXRjaCBuZWVkcyB0byBrbm93IGhv
dyB0byBiYWNrdHJhY2sgYW5kIGJlIG5vbi1kZXRlcm1pbmlzdGljLgotICAgICAgICAgICAgZG8g
ewotICAgICAgICAgICAgICAgIG4gPSBuLT5wcmV2aW91c1NpYmxpbmcoKTsKLSAgICAgICAgICAg
ICAgICB3aGlsZSAobiAmJiAhbi0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICAgICAgICAgICAg
ICBuID0gbi0+cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFuKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IHdoaWxlICghY2hl
Y2tPbmVTZWxlY3RvcihzZWwsIHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKSkpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3I6Ci0gICAgICAg
ewotICAgICAgICAgICAgaWYgKG9ubHlIb3ZlckFjdGl2ZSkKLSAgICAgICAgICAgICAgICBvbmx5
SG92ZXJBY3RpdmUgPSAoc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyAm
JgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsLT5wc2V1ZG9UeXBlKCkg
PT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0hvdmVyIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWwtPnBzZXVkb1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQWN0aXZl
KSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEVsZW1lbnQgKmVsZW0gPSBzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICAvLyBhIHNlbGVjdG9yIGlzIGludmFsaWQgaWYg
c29tZXRoaW5nIGZvbGxvd3MgOmZpcnN0LXh4eAotICAgICAgICAgICAgaWYgKGVsZW0gPT0gZWxl
bWVudCAmJiBkeW5hbWljUHNldWRvICE9IFJlbmRlclN0eWxlOjpOT1BTRVVETykKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Io
c2VsLCBlbGVtLCB0cnVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJlbGF0aW9uID0gc2Vs
LT5yZWxhdGlvbigpOworICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcjoKKyAg
ICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgaXNBbmNlc3RvciwgdHJ1ZSk7
CiAgICAgfQogCi0gICAgaWYgKHN1YmplY3QgJiYgaGF2ZVBzZXVkbyAmJiBkeW5hbWljUHNldWRv
ICE9IHBzZXVkb1N0eWxlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgLy8gZGlz
YWxsb3cgKjpob3ZlciwgKjphY3RpdmUsIGFuZCAqOmhvdmVyOmFjdGl2ZSBleGNlcHQgZm9yIGxp
bmtzCi0gICAgaWYgKCFzdHJpY3RQYXJzaW5nICYmIG9ubHlIb3ZlckFjdGl2ZSAmJiBzdWJqZWN0
KSB7Ci0gICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9Vbmtub3duKQotICAgICAgICAg
ICAgY2hlY2tQc2V1ZG9TdGF0ZShlKTsKLQotICAgICAgICBpZiAocHNldWRvU3RhdGUgPT0gUHNl
dWRvTm9uZSkgewotICAgICAgICAgICAgaWYgKCFhZmZlY3RlZEJ5SG92ZXIgJiYgc3R5bGUtPmFm
ZmVjdGVkQnlIb3ZlclJ1bGVzKCkpCi0gICAgICAgICAgICAgICAgc3R5bGUtPnNldEFmZmVjdGVk
QnlIb3ZlclJ1bGVzKGZhbHNlKTsKLSAgICAgICAgICAgIGlmICghYWZmZWN0ZWRCeUFjdGl2ZSAm
JiBzdHlsZS0+YWZmZWN0ZWRCeUFjdGl2ZVJ1bGVzKCkpCi0gICAgICAgICAgICAgICAgc3R5bGUt
PnNldEFmZmVjdGVkQnlBY3RpdmVSdWxlcyhmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxl
Y3Rvciogc2VsLCBFbGVtZW50KiBlLCBib29sIGlzU3ViU2VsZWN0b3IpCitib29sIENTU1N0eWxl
U2VsZWN0b3I6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwg
Ym9vbCBpc0FuY2VzdG9yLCBib29sIGlzU3ViU2VsZWN0b3IpCiB7CiAgICAgaWYoIWUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE0MjUsMTIgKzEzODYsMTAgQEAKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIGlmKHNlbC0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3MgfHwgc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVt
ZW50KQorICAgIGlmKHNlbC0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpIAog
ICAgIHsKLSAgICAgICAgLy8gUHNldWRvIGVsZW1lbnRzLiBXZSBuZWVkIHRvIGNoZWNrIGZpcnN0
IGNoaWxkIGhlcmUuIE5vIGR5bmFtaWMgcHNldWRvCi0gICAgICAgIC8vIGVsZW1lbnRzIGZvciB0
aGUgbW9tZW50Ci0gICAgICAgICAgICBzd2l0Y2ggKHNlbC0+cHNldWRvVHlwZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgLy8gUHNldWRvIGNsYXNzZXM6CisgICAgICAgIHN3aXRjaCAoc2VsLT5wc2V1
ZG9UeXBlKCkpIHsKKyAgICAgICAgICAgIC8vIFBzZXVkbyBjbGFzc2VzOgogICAgICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRW1wdHk6CiAgICAgICAgICAgICAgICAgaWYgKCFlLT5m
aXJzdENoaWxkKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTQ4Nywx
OSArMTQ0Niw2IEBACiAgICAgICAgICAgICAgICAgaWYgKHBzZXVkb1N0YXRlID09IFBzZXVkb1Zp
c2l0ZWQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvSG92ZXI6IHsKLSAg
ICAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBpbiBxdWlya3MgbW9kZSwgdGhlbiBob3ZlciBzaG91
bGQgbmV2ZXIgbWF0Y2ggYW5jaG9ycyB3aXRoIG5vCi0gICAgICAgICAgICAgICAgLy8gaHJlZiBh
bmQgKjpob3ZlciBzaG91bGQgbm90IG1hdGNoIGFueXRoaW5nLiAgVGhpcyBpcyBpbXBvcnRhbnQg
Zm9yIHNpdGVzIGxpa2Ugd3NqLmNvbS4KLSAgICAgICAgICAgICAgICBpZiAoc3RyaWN0UGFyc2lu
ZyB8fCBpc1N1YlNlbGVjdG9yIHx8IHNlbC0+cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rvcjo6U3Vi
U2VsZWN0b3IgfHwgKHNlbC0+aGFzVGFnKCkgJiYgIWUtPmhhc1RhZ05hbWUoYVRhZykpIHx8IGUt
PmlzTGluaygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGUgJiYgc3R5
bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0QWZmZWN0ZWRCeUhvdmVyUnVs
ZXModHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ICE9IGUgJiYgZS0+cmVu
ZGVyU3R5bGUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGUtPnJlbmRlclN0eWxlKCktPnNl
dEFmZmVjdGVkQnlIb3ZlclJ1bGVzKHRydWUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZS0+
aG92ZXJlZCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQogICAgICAg
ICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRHJhZzogewogICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGUgJiYgc3R5bGUpCiAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRB
ZmZlY3RlZEJ5RHJhZ1J1bGVzKHRydWUpOwpAQCAtMTUxMywxMCArMTQ1OSwyMyBAQAogICAgICAg
ICAgICAgICAgIGlmIChlICYmIGUtPmZvY3VzZWQoKSAmJiBlLT5kb2N1bWVudCgpLT5mcmFtZSgp
LT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0hvdmVy
OiB7CisgICAgICAgICAgICAgICAgLy8gSWYgd2UncmUgaW4gcXVpcmtzIG1vZGUsIHRoZW4gaG92
ZXIgc2hvdWxkIG5ldmVyIG1hdGNoIGFuY2hvcnMgd2l0aCBubworICAgICAgICAgICAgICAgIC8v
IGhyZWYgYW5kICo6aG92ZXIgc2hvdWxkIG5vdCBtYXRjaCBhbnl0aGluZy4gIFRoaXMgaXMgaW1w
b3J0YW50IGZvciBzaXRlcyBsaWtlIHdzai5jb20uCisgICAgICAgICAgICAgICAgaWYgKHN0cmlj
dFBhcnNpbmcgfHwgaXNTdWJTZWxlY3RvciB8fCAoc2VsLT5oYXNUYWcoKSAmJiAhZS0+aGFzVGFn
TmFtZShhVGFnKSkgfHwgZS0+aXNMaW5rKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZSAmJiBzdHlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRB
ZmZlY3RlZEJ5SG92ZXJSdWxlcyh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgIT0gZSAmJiBlLT5yZW5kZXJTdHlsZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgZS0+
cmVuZGVyU3R5bGUoKS0+c2V0QWZmZWN0ZWRCeUhvdmVyUnVsZXModHJ1ZSk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChlLT5ob3ZlcmVkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9BY3RpdmU6CiAg
ICAgICAgICAgICAgICAgLy8gSWYgd2UncmUgaW4gcXVpcmtzIG1vZGUsIHRoZW4gOmFjdGl2ZSBz
aG91bGQgbmV2ZXIgbWF0Y2ggYW5jaG9ycyB3aXRoIG5vCiAgICAgICAgICAgICAgICAgLy8gaHJl
ZiBhbmQgKjphY3RpdmUgc2hvdWxkIG5vdCBtYXRjaCBhbnl0aGluZy4gCi0gICAgICAgICAgICAg
ICAgaWYgKHN0cmljdFBhcnNpbmcgfHwgaXNTdWJTZWxlY3RvciB8fCBzZWwtPnJlbGF0aW9uKCkg
PT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yIHx8IChzZWwtPmhhc1RhZygpICYmICFlLT5oYXNU
YWdOYW1lKGFUYWcpKSB8fCBlLT5pc0xpbmsoKSkgeworICAgICAgICAgICAgICAgIGlmIChzdHJp
Y3RQYXJzaW5nIHx8IGlzU3ViU2VsZWN0b3IgfHwgKHNlbC0+aGFzVGFnKCkgJiYgIWUtPmhhc1Rh
Z05hbWUoYVRhZykpIHx8IGUtPmlzTGluaygpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50ID09IGUgJiYgc3R5bGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0
QWZmZWN0ZWRCeUFjdGl2ZVJ1bGVzKHRydWUpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
IChlLT5yZW5kZXJTdHlsZSgpKQpAQCAtMTU2OSwzMCArMTUyOCwzMiBAQAogICAgICAgICAgICAg
ICAgICAgICAvLyByZXN0cmljdGlvbiBpbiBDU1MzLCBidXQgaXQgaXMsIHNvIGxldCdzIGhvbm91
ciBpdC4KICAgICAgICAgICAgICAgICAgICAgaWYgKHN1YlNlbC0+bV9zaW1wbGVTZWxlY3RvcikK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBpZiAo
IWNoZWNrT25lU2VsZWN0b3Ioc3ViU2VsLCBlKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFj
aGVja09uZVNlbGVjdG9yKHN1YlNlbCwgZSwgaXNBbmNlc3RvciwgdHJ1ZSkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9Vbmtub3duOgorICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTm90
UGFyc2VkOgorICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorICAgICAg
ICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKHNlbC0+bV9tYXRjaCA9
PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCkgeworICAgICAgICBpZiAoZSAhPSBlbGVtZW50
KSByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgc3dpdGNoIChzZWwtPnBzZXVkb1R5cGUoKSkgewog
ICAgICAgICAgICAgLy8gUHNldWRvLWVsZW1lbnRzOgogICAgICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvRmlyc3RMaW5lOgotICAgICAgICAgICAgICAgIGlmIChzdWJqZWN0KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGR5bmFtaWNQc2V1ZG8gPSBSZW5kZXJTdHlsZTo6RklSU1RfTElO
RTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGR5bmFtaWNQc2V1ZG8gPSBS
ZW5kZXJTdHlsZTo6RklSU1RfTElORTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0TGV0dGVyOgotICAgICAgICAg
ICAgICAgIGlmIChzdWJqZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGR5bmFtaWNQc2V1ZG8g
PSBSZW5kZXJTdHlsZTo6RklSU1RfTEVUVEVSOwotICAgICAgICAgICAgICAgICAgICBpZiAoRG9j
dW1lbnQqIGRvYyA9IGUtPmRvY3VtZW50KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBkb2Mt
PnNldFVzZXNGaXJzdExldHRlclJ1bGVzKHRydWUpOwotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgZHluYW1pY1BzZXVkbyA9IFJlbmRlclN0eWxlOjpGSVJTVF9MRVRURVI7Cisg
ICAgICAgICAgICAgICAgaWYgKERvY3VtZW50KiBkb2MgPSBlLT5kb2N1bWVudCgpKQorICAgICAg
ICAgICAgICAgICAgICBkb2MtPnNldFVzZXNGaXJzdExldHRlclJ1bGVzKHRydWUpOworICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvU2VsZWN0aW9uOgogICAgICAgICAgICAgICAgIGR5bmFtaWNQc2V1ZG8gPSBSZW5kZXJTdHls
ZTo6U0VMRUNUSU9OOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTYyMCw4ICsx
NTgxLDEwIEBACiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9TZWFyY2hSZXN1
bHRzQnV0dG9uOgogICAgICAgICAgICAgICAgIGR5bmFtaWNQc2V1ZG8gPSBSZW5kZXJTdHlsZTo6
U0VBUkNIX1JFU1VMVFNfQlVUVE9OOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bjoKICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb05vdFBhcnNlZDoKLSAgICAgICAgICAgICAgICBBU1NFUlQo
ZmFsc2UpOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCShyZXZpc2lvbiAyNTA5MCkK
KysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2
LDEwICsxMzYsMTEgQEAKIAogICAgICAgICAvKiBjaGVja3MgaWYgYSBjb21wb3VuZCBzZWxlY3Rv
ciAod2hpY2ggY2FuIGNvbnNpc3Qgb2YgbXVsdGlwbGUgc2ltcGxlIHNlbGVjdG9ycykKICAgICAg
ICAgICAgbWF0Y2hlcyB0aGUgZ2l2ZW4gRWxlbWVudCAqLwotICAgICAgICBib29sIGNoZWNrU2Vs
ZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBFbGVtZW50ICplKTsKLSAgICAgICAgCisgICAg
ICAgIGJvb2wgY2hlY2tTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsZWN0b3IpOworICAgICAgICBi
b29sIGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBFbGVtZW50ICplLCBib29s
IGlzQW5jZXN0b3IsIGJvb2wgaXNTdWJTZWxlY3Rvcik7CisKICAgICAgICAgLyogY2hlY2tzIGlm
IHRoZSBzZWxlY3RvciBtYXRjaGVzIHRoZSBnaXZlbiBFbGVtZW50ICovCi0gICAgICAgIGJvb2wg
Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBib29sIGlzU3ViU2VsZWN0
b3IgPSBmYWxzZSk7CisgICAgICAgIGJvb2wgY2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rvcios
IEVsZW1lbnQqLCBib29sIGlzQW5jZXN0b3IsIGJvb2wgaXNTdWJTZWxlY3RvciA9IGZhbHNlKTsK
IAogICAgICAgICAvKiBUaGlzIGZ1bmN0aW9uIGZpeGVzIHVwIHRoZSBkZWZhdWx0IGZvbnQgc2l6
ZSBpZiBpdCBkZXRlY3RzIHRoYXQgdGhlCiAgICAgICAgICAgIGN1cnJlbnQgZ2VuZXJpYyBmb250
IGZhbWlseSBoYXMgY2hhbmdlZC4gLWR3aCAqLwpAQCAtMjI4LDcgKzIyOSw3IEBACiAgICAgICAg
IGJvb2wgaXNYTUxEb2M7CiAKICAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsICo+IG1f
c2VsZWN0b3JBdHRyczsKLSAgICAgICAgCisKICAgICAgICAgdm9pZCBhcHBseVByb3BlcnR5KGlu
dCBpZCwgQ1NTVmFsdWUgKnZhbHVlKTsKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICB2b2lkIGFw
cGx5U1ZHUHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpOwpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMjUwOTMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMSBAQAorMjAwNy0wOC0xNSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8c2FuZGZlbGRA
a2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0IGZvciBub25kZXRlcm1pbmlzdGljIG1hdGNoaW5nIG9mIENTUyBzZWxlY3RvcnMsIHNl
ZSBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDI4CisKKyAgICAgICAg
KiBmYXN0L3NlbGVjdG9ycy9ub25kZXRlcm1pbmlzdGljLWNvbWJpbmF0b3JzLmh0bWw6IEFkZGVk
LgorCiAyMDA3LTA4LTE0ICBLZXZpbiBNY0N1bGxvdWdoICA8a21jY3VsbG91Z2hAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Nl
bGVjdG9ycy9ub25kZXRlcm1pbmlzdGljLWNvbWJpbmF0b3JzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvbm9uZGV0ZXJtaW5pc3RpYy1jb21iaW5hdG9ycy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvbm9uZGV0ZXJt
aW5pc3RpYy1jb21iaW5hdG9ycy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACis8
aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLmEgPiAuYiAuYyB7CisgIGNvbG9yOiBncmVlbjsKK30K
KworLmQgKyAuZSB+IC5mIHsKKyAgY29sb3I6IGdyZWVuOworfQorCis8L3N0eWxlPgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGNsYXNzPSJhIj4KKzxkaXYgY2xhc3M9ImIiPgorPGRpdiBjbGFzcz0i
YiI+Cis8ZGl2IGNsYXNzPSJjIj4KK1RoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uCis8L2Rpdj4K
KzwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iZCI+PC9kaXY+Cis8ZGl2IGNs
YXNzPSJlIj48L2Rpdj4KKzxkaXYgY2xhc3M9ImUiPjwvZGl2PgorPGRpdiBjbGFzcz0iZiI+VGhp
cyB0ZXh0IHNob3VsZCBhbHNvIGJlIGdyZWVuLjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvY3NzMy1tb2RzZWwtZDIuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9jc3MzLW1vZHNlbC1kMi5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvY3NzMy1tb2RzZWwtZDIu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NSBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElD
ICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+
RHluYW1pYyBoYW5kbGluZyBvZiBjb21iaW5hdG9yczwvdGl0bGU+CisgIDxzdHlsZSB0eXBlPSJ0
ZXh0L2NzcyI+CisgICAjdGVzdCB7IGJhY2tncm91bmQ6IHJlZDsgZGlzcGxheTogYmxvY2s7IHBh
ZGRpbmc6IDFlbTsgfQorICAgI3N0dWIgfiBkaXYgZGl2ICsgZGl2ID4gZGl2IHsgYmFja2dyb3Vu
ZDogbGltZTsgfQorPC9zdHlsZT4KKyAgPGxpbmsgcmVsPSJmaXJzdCIgaHJlZj0iY3NzMy1tb2Rz
ZWwtMS5odG1sIiB0aXRsZT0iR3JvdXBzIG9mIHNlbGVjdG9ycyI+CisgIDxsaW5rIHJlbD0icHJl
diIgaHJlZj0iY3NzMy1tb2RzZWwtZDFiLmh0bWwiIHRpdGxlPSJORUdBVEVEIER5bmFtaWMgaGFu
ZGxpbmcgb2YgOmVtcHR5Ij4KKyAgPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJjc3MzLW1vZHNlbC1k
NC5odG1sIiB0aXRsZT0iRHluYW1pYyB1cGRhdGluZyBvZiA6Zmlyc3QtY2hpbGQgYW5kIDpsYXN0
LWNoaWxkIj4KKyAgPGxpbmsgcmVsPSJsYXN0IiBocmVmPSJjc3MzLW1vZHNlbC1kNWUuaHRtbCIg
dGl0bGU9Ik5FR0FURUQgOmluZGV0ZXJtaW5hdGUgd2l0aCA6Y2hlY2tlZCI+CisgIDxsaW5rIHJl
bD0idXAiIGhyZWY9Ii4vaW5kZXguaHRtbCI+CisgIDxsaW5rIHJlbD0idG9wIiBocmVmPSIuLi8u
Li9pbmRleC5odG1sIj4KKyA8L2hlYWQ+CisgPGJvZHk+CisKKyA8ZGl2PgorCisgIAorCisgIAor
ICA8c2NyaXB0PgorICAgCisKKyAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgZWwgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOworICAgICAgZWwucGFyZW50Tm9kZS5wYXJlbnRO
b2RlLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgZWwucGFyZW50
Tm9kZSk7CisgICAgfQorCisgICAgd2luZG93LnNldFRpbWVvdXQoInRlc3QoKSIsIDEwMCk7Cisg
ICAKKyAgPC9zY3JpcHQ+CisgIAorCisgIDxwPiBUaGUgZm9sbG93aW5nIGJhciBzaG91bGQgYmUg
Z3JlZW4uIDwvcD4KKworICA8ZGl2IGlkPSJzdHViIj48L2Rpdj4KKyAgPGRpdj48L2Rpdj4KKyAg
PGRpdj48ZGl2PjwhLS0gPGRpdi8+IC0tPjxkaXY+PGRpdiBpZD0idGVzdCI+PC9kaXY+PC9kaXY+
PC9kaXY+PC9kaXY+CisKKyA8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUK
</data>
<flag name="review"
          id="6703"
          type_id="1"
          status="-"
          setter="allan.jensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15995</attachid>
            <date>2007-08-16 06:00:51 -0700</date>
            <delta_ts>2007-09-17 06:04:33 -0700</delta_ts>
            <desc>New patch</desc>
            <filename>nondeterministic2.diff</filename>
            <type>text/plain</type>
            <size>16285</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTA5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDctMDgtMTUgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPHNhbmRm
ZWxkQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IENTUyBzZWxlY3RvciBjb21iaW5hdG9ycyBub25kZXRlcm1pbmlzdGlj
IG1hdGNoaW5nLiAKKyAgICAgICAgRml4ZXMgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzQyOAorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hSdWxlc0Zvckxpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3Rvcik6IFNwbGl0IHRo
ZSBmdW5jdGlvbiBhbmQgbWFrZSB0aGUgc2Vjb25kIHBhcnQgcmVjdXJzaXZlCisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjaGVja09uZVNlbGVjdG9yKTogSGFuZGxlIHBzZW9k
by1lbGVtZW50cyBydWxlcyBhbmQgaG92ZXJhY3RpdmUgcXVpcmtzIAorICAgICAgICBoZXJlIGlu
c3RlYWQgb2YgaW4gY2hlY2tTZWxlY3Rvci4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5oOgorCiAyMDA3LTA4LTE0ICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU0MTE0ODI+IFdpbmRvd3MgdXNlciBhZ2VudCBs
YW5ndWFnZSBhbHdheXMgcmV0dXJucyAiZW4iCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cAkocmV2aXNpb24gMjUwOTApCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDI5LDcgKzQyOSw3IEBACiAgICAgICAgIENTU1N0eWxlUnVsZSog
cnVsZSA9IGQtPnJ1bGUoKTsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUg
PSBlbGVtZW50LT5sb2NhbE5hbWUoKTsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxl
Y3RvckxvY2FsTmFtZSA9IGQtPnNlbGVjdG9yKCktPm1fdGFnLmxvY2FsTmFtZSgpOwotICAgICAg
ICBpZiAoKGxvY2FsTmFtZSA9PSBzZWxlY3RvckxvY2FsTmFtZSB8fCBzZWxlY3RvckxvY2FsTmFt
ZSA9PSBzdGFyQXRvbSkgJiYgY2hlY2tTZWxlY3RvcihkLT5zZWxlY3RvcigpLCBlbGVtZW50KSkg
eworICAgICAgICBpZiAoKGxvY2FsTmFtZSA9PSBzZWxlY3RvckxvY2FsTmFtZSB8fCBzZWxlY3Rv
ckxvY2FsTmFtZSA9PSBzdGFyQXRvbSkgJiYgY2hlY2tTZWxlY3RvcihkLT5zZWxlY3RvcigpKSkg
ewogICAgICAgICAgICAgLy8gSWYgdGhlIHJ1bGUgaGFzIG5vIHByb3BlcnRpZXMgdG8gYXBwbHks
IHRoZW4gaWdub3JlIGl0LgogICAgICAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24q
IGRlY2wgPSBydWxlLT5kZWNsYXJhdGlvbigpOwogICAgICAgICAgICAgaWYgKCFkZWNsIHx8ICFk
ZWNsLT5sZW5ndGgoKSkKQEAgLTEyMTksMTIzICsxMjE5LDk1IEBACiAgICAgcmV0dXJuIDA7CiB9
CiAKLXN0YXRpYyBib29sIHN1YmplY3Q7Ci0KLWJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tT
ZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50ICplKQorYm9vbCBDU1NTdHlsZVNlbGVj
dG9yOjpjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwpCiB7CiAgICAgZHluYW1pY1BzZXVk
byA9IFJlbmRlclN0eWxlOjpOT1BTRVVETzsKLSAgICAKLSAgICBOb2RlICpuID0gZTsKIAotICAg
IC8vIHdlIGhhdmUgdGhlIHN1YmplY3QgcGFydCBvZiB0aGUgc2VsZWN0b3IKLSAgICBzdWJqZWN0
ID0gdHJ1ZTsKKyAgICAvLyBDaGVjayB0aGUgc2VsZWN0b3IKKyAgICBpZighY2hlY2tTZWxlY3Rv
cihzZWwsIGVsZW1lbnQsIHRydWUsIGZhbHNlKSkgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gV2Ug
dHJhY2sgd2hldGhlciBvciBub3QgdGhlIHJ1bGUgY29udGFpbnMgb25seSA6aG92ZXIgYW5kIDph
Y3RpdmUgaW4gYSBzaW1wbGUgc2VsZWN0b3IuIElmCi0gICAgLy8gc28sIHdlIGNhbid0IGFsbG93
IHRoYXQgdG8gYXBwbHkgdG8gZXZlcnkgZWxlbWVudCBvbiB0aGUgcGFnZS4gIFdlIGFzc3VtZSB0
aGUgYXV0aG9yIGludGVuZGVkCi0gICAgLy8gdG8gYXBwbHkgdGhlIHJ1bGVzIG9ubHkgdG8gbGlu
a3MuCi0gICAgYm9vbCBvbmx5SG92ZXJBY3RpdmUgPSAoIXNlbC0+aGFzVGFnKCkgJiYKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzcyAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbC0+cHNldWRvVHlw
ZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Ib3ZlciB8fAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbC0+cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9BY3RpdmUp
KSk7Ci0gICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXIgPSBzdHlsZSA/IHN0eWxlLT5hZmZlY3RlZEJ5
SG92ZXJSdWxlcygpIDogZmFsc2U7Ci0gICAgYm9vbCBhZmZlY3RlZEJ5QWN0aXZlID0gc3R5bGUg
PyBzdHlsZS0+YWZmZWN0ZWRCeUFjdGl2ZVJ1bGVzKCkgOiBmYWxzZTsKLSAgICBib29sIGhhdmVQ
c2V1ZG8gPSBwc2V1ZG9TdHlsZSAhPSBSZW5kZXJTdHlsZTo6Tk9QU0VVRE87Ci0gICAgCisgICAg
aWYgKHBzZXVkb1N0eWxlICE9IFJlbmRlclN0eWxlOjpOT1BTRVVETyAmJiBwc2V1ZG9TdHlsZSAh
PSBkeW5hbWljUHNldWRvKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9y
KiBzZWwsIEVsZW1lbnQgKmUsIGJvb2wgaXNBbmNlc3RvciwgYm9vbCBpc1N1YlNlbGVjdG9yKQor
ewogICAgIC8vIGZpcnN0IHNlbGVjdG9yIGhhcyB0byBtYXRjaAotICAgIGlmICghY2hlY2tPbmVT
ZWxlY3RvcihzZWwsIGUpKQorICAgIGlmICghY2hlY2tPbmVTZWxlY3RvcihzZWwsIGUsIGlzQW5j
ZXN0b3IsIGlzU3ViU2VsZWN0b3IpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBj
aGVjayB0aGUgc3Vic2VsZWN0b3JzCisgICAgLy8gVGhlIHJlc3Qgb2YgdGhlIHNlbGVjdG9ycyBo
YXMgdG8gbWF0Y2gKICAgICBDU1NTZWxlY3Rvcjo6UmVsYXRpb24gcmVsYXRpb24gPSBzZWwtPnJl
bGF0aW9uKCk7Ci0gICAgd2hpbGUoKHNlbCA9IHNlbC0+bV90YWdIaXN0b3J5KSkgewotICAgICAg
ICBpZiAoIW4tPmlzRWxlbWVudE5vZGUoKSkKKworICAgIC8vIFByZXBhcmUgbmV4dCBzZWwKKyAg
ICBzZWwgPSBzZWwtPm1fdGFnSGlzdG9yeTsKKyAgICBpZiAoIXNlbCkgcmV0dXJuIHRydWU7CisK
KyAgICBpZiAocmVsYXRpb24gIT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yKQorICAgICAgICAv
LyBCYWlsLW91dCBpZiB0aGlzIHNlbGVjdG9yIGlzIGlycmVsZXZhbnQgZm9yIHRoZSBwc2V1ZG9T
dHlsZQorICAgICAgICBpZiAocHNldWRvU3R5bGUgIT0gUmVuZGVyU3R5bGU6Ok5PUFNFVURPICYm
IHBzZXVkb1N0eWxlICE9IGR5bmFtaWNQc2V1ZG8pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIGlmIChyZWxhdGlvbiAhPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IpIHsKLSAg
ICAgICAgICAgIHN1YmplY3QgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChoYXZlUHNldWRvICYm
IGR5bmFtaWNQc2V1ZG8gIT0gcHNldWRvU3R5bGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2gocmVsYXRpb24pCi0gICAg
ICAgIHsKKworICAgIHN3aXRjaChyZWxhdGlvbikgewogICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpEZXNjZW5kYW50OgotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgbWF0Y2ggbmVlZHMgdG8g
a25vdyBob3cgdG8gYmFja3RyYWNrIGFuZCBiZSBub24tZGV0ZXJtaW5pc3RpYy4KLSAgICAgICAg
ICAgIGRvIHsKLSAgICAgICAgICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOworICAgICAgICAg
ICAgd2hpbGUodHJ1ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBuID0g
ZS0+cGFyZW50Tm9kZSgpOwogICAgICAgICAgICAgICAgIGlmICghbiB8fCAhbi0+aXNFbGVtZW50
Tm9kZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9
IHdoaWxlICghY2hlY2tPbmVTZWxlY3RvcihzZWwsIHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKSkp
OworICAgICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CisgICAgICAg
ICAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCB0cnVlLCBmYWxzZSkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNoaWxkOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOworICAgICAgICAgICAgTm9kZSogbiA9IGUtPnBhcmVu
dE5vZGUoKTsKICAgICAgICAgICAgIGlmICghbiB8fCAhbi0+aXNFbGVtZW50Tm9kZSgpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlmICghY2hlY2tPbmVTZWxl
Y3RvcihzZWwsIHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKKyAg
ICAgICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHNlbCwgZSwgdHJ1ZSwgZmFsc2UpKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGlyZWN0QWRqYWNlbnQ6CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIG4gPSBuLT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICAgICAgICAgIE5vZGUqIG4gPSBl
LT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgICAgIHdoaWxlIChuICYmICFuLT5pc0VsZW1l
bnROb2RlKCkpCiAgICAgICAgICAgICAgICAgbiA9IG4tPnByZXZpb3VzU2libGluZygpOwogICAg
ICAgICAgICAgaWYgKCFuKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIGlmICghY2hlY2tPbmVTZWxlY3RvcihzZWwsIHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZSA9IHN0YXRpY19j
YXN0PEVsZW1lbnQqPihuKTsKKyAgICAgICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHNlbCwgZSwg
ZmFsc2UsIGZhbHNlKSkgCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpJbmRpcmVjdEFk
amFjZW50OgotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgbWF0Y2ggbmVlZHMgdG8ga25vdyBo
b3cgdG8gYmFja3RyYWNrIGFuZCBiZSBub24tZGV0ZXJtaW5pc3RpYy4KLSAgICAgICAgICAgIGRv
IHsKLSAgICAgICAgICAgICAgICBuID0gbi0+cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgICAgICAg
ICAgICAgd2hpbGUgKG4gJiYgIW4tPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIHdoaWxl
KHRydWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgTm9kZSogbiA9IGUtPnByZXZp
b3VzU2libGluZygpOworICAgICAgICAgICAgICAgIHdoaWxlKG4gJiYgIW4tPmlzRWxlbWVudE5v
ZGUoKSkKICAgICAgICAgICAgICAgICAgICAgbiA9IG4tPnByZXZpb3VzU2libGluZygpOwogICAg
ICAgICAgICAgICAgIGlmICghbikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgfSB3aGlsZSAoIWNoZWNrT25lU2VsZWN0b3Ioc2VsLCBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4obikpKTsKKyAgICAgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KG4pOworICAgICAgICAgICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHNlbCwgZSwgZmFsc2UsIGZh
bHNlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9Owog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3I6
Ci0gICAgICAgewotICAgICAgICAgICAgaWYgKG9ubHlIb3ZlckFjdGl2ZSkKLSAgICAgICAgICAg
ICAgICBvbmx5SG92ZXJBY3RpdmUgPSAoc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzcyAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsLT5wc2V1
ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0hvdmVyIHx8Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWwtPnBzZXVkb1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQWN0aXZlKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEVsZW1lbnQgKmVsZW0gPSBz
dGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICAvLyBhIHNlbGVjdG9yIGlzIGlu
dmFsaWQgaWYgc29tZXRoaW5nIGZvbGxvd3MgOmZpcnN0LXh4eAotICAgICAgICAgICAgaWYgKGVs
ZW0gPT0gZWxlbWVudCAmJiBkeW5hbWljUHNldWRvICE9IFJlbmRlclN0eWxlOjpOT1BTRVVETykK
KyAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3I6CisgICAgICAgICAgICAvLyBh
IHNlbGVjdG9yIGlzIGludmFsaWQgaWYgc29tZXRoaW5nIGZvbGxvd3MgYSBwc2V1ZG8tZWxlbWVu
dAorICAgICAgICAgICAgaWYgKGUgPT0gZWxlbWVudCAmJiBkeW5hbWljUHNldWRvICE9IFJlbmRl
clN0eWxlOjpOT1BTRVVETykKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc2VsLCBlbGVtLCB0cnVlKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIHJlbGF0aW9uID0gc2VsLT5yZWxhdGlvbigpOworICAgICAgICAgICAgcmV0
dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBpc0FuY2VzdG9yLCB0cnVlKTsKICAgICB9CiAKLSAg
ICBpZiAoc3ViamVjdCAmJiBoYXZlUHNldWRvICYmIGR5bmFtaWNQc2V1ZG8gIT0gcHNldWRvU3R5
bGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAvLyBkaXNhbGxvdyAqOmhvdmVy
LCAqOmFjdGl2ZSwgYW5kICo6aG92ZXI6YWN0aXZlIGV4Y2VwdCBmb3IgbGlua3MKLSAgICBpZiAo
IXN0cmljdFBhcnNpbmcgJiYgb25seUhvdmVyQWN0aXZlICYmIHN1YmplY3QpIHsKLSAgICAgICAg
aWYgKHBzZXVkb1N0YXRlID09IFBzZXVkb1Vua25vd24pCi0gICAgICAgICAgICBjaGVja1BzZXVk
b1N0YXRlKGUpOwotCi0gICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9Ob25lKSB7Ci0g
ICAgICAgICAgICBpZiAoIWFmZmVjdGVkQnlIb3ZlciAmJiBzdHlsZS0+YWZmZWN0ZWRCeUhvdmVy
UnVsZXMoKSkKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0QWZmZWN0ZWRCeUhvdmVyUnVsZXMo
ZmFsc2UpOwotICAgICAgICAgICAgaWYgKCFhZmZlY3RlZEJ5QWN0aXZlICYmIHN0eWxlLT5hZmZl
Y3RlZEJ5QWN0aXZlUnVsZXMoKSkKLSAgICAgICAgICAgICAgICBzdHlsZS0+c2V0QWZmZWN0ZWRC
eUFjdGl2ZVJ1bGVzKGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9v
bCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVs
ZW1lbnQqIGUsIGJvb2wgaXNTdWJTZWxlY3RvcikKK2Jvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hl
Y2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBib29sIGlzQW5jZXN0
b3IsIGJvb2wgaXNTdWJTZWxlY3RvcikKIHsKICAgICBpZighZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTQyNSwxMiArMTM5NywxMCBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgaWYoc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
cyB8fCBzZWwtPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpCisgICAgaWYo
c2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcykgCiAgICAgewotICAgICAg
ICAvLyBQc2V1ZG8gZWxlbWVudHMuIFdlIG5lZWQgdG8gY2hlY2sgZmlyc3QgY2hpbGQgaGVyZS4g
Tm8gZHluYW1pYyBwc2V1ZG8KLSAgICAgICAgLy8gZWxlbWVudHMgZm9yIHRoZSBtb21lbnQKLSAg
ICAgICAgICAgIHN3aXRjaCAoc2VsLT5wc2V1ZG9UeXBlKCkpIHsKLSAgICAgICAgICAgICAgICAv
LyBQc2V1ZG8gY2xhc3NlczoKKyAgICAgICAgc3dpdGNoIChzZWwtPnBzZXVkb1R5cGUoKSkgewor
ICAgICAgICAgICAgLy8gUHNldWRvIGNsYXNzZXM6CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9FbXB0eToKICAgICAgICAgICAgICAgICBpZiAoIWUtPmZpcnN0Q2hpbGQoKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDg3LDE5ICsxNDU3LDYgQEAK
ICAgICAgICAgICAgICAgICBpZiAocHNldWRvU3RhdGUgPT0gUHNldWRvVmlzaXRlZCkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Ib3ZlcjogewotICAgICAgICAgICAgICAg
IC8vIElmIHdlJ3JlIGluIHF1aXJrcyBtb2RlLCB0aGVuIGhvdmVyIHNob3VsZCBuZXZlciBtYXRj
aCBhbmNob3JzIHdpdGggbm8KLSAgICAgICAgICAgICAgICAvLyBocmVmIGFuZCAqOmhvdmVyIHNo
b3VsZCBub3QgbWF0Y2ggYW55dGhpbmcuICBUaGlzIGlzIGltcG9ydGFudCBmb3Igc2l0ZXMgbGlr
ZSB3c2ouY29tLgotICAgICAgICAgICAgICAgIGlmIChzdHJpY3RQYXJzaW5nIHx8IGlzU3ViU2Vs
ZWN0b3IgfHwgc2VsLT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvciB8fCAo
c2VsLT5oYXNUYWcoKSAmJiAhZS0+aGFzVGFnTmFtZShhVGFnKSkgfHwgZS0+aXNMaW5rKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZSAmJiBzdHlsZSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRBZmZlY3RlZEJ5SG92ZXJSdWxlcyh0cnVlKTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgIT0gZSAmJiBlLT5yZW5kZXJTdHlsZSgpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgZS0+cmVuZGVyU3R5bGUoKS0+c2V0QWZmZWN0ZWRCeUhv
dmVyUnVsZXModHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlLT5ob3ZlcmVkKCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpQc2V1ZG9EcmFnOiB7CiAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZSAmJiBzdHlsZSkKICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPnNldEFmZmVjdGVkQnlEcmFn
UnVsZXModHJ1ZSk7CkBAIC0xNTEzLDEwICsxNDcwLDIzIEBACiAgICAgICAgICAgICAgICAgaWYg
KGUgJiYgZS0+Zm9jdXNlZCgpICYmIGUtPmRvY3VtZW50KCktPmZyYW1lKCktPmlzQWN0aXZlKCkp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvSG92ZXI6IHsKKyAgICAgICAg
ICAgICAgICAvLyBJZiB3ZSdyZSBpbiBxdWlya3MgbW9kZSwgdGhlbiBob3ZlciBzaG91bGQgbmV2
ZXIgbWF0Y2ggYW5jaG9ycyB3aXRoIG5vCisgICAgICAgICAgICAgICAgLy8gaHJlZiBhbmQgKjpo
b3ZlciBzaG91bGQgbm90IG1hdGNoIGFueXRoaW5nLiAgVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHNp
dGVzIGxpa2Ugd3NqLmNvbS4KKyAgICAgICAgICAgICAgICBpZiAoc3RyaWN0UGFyc2luZyB8fCBp
c1N1YlNlbGVjdG9yIHx8IChzZWwtPmhhc1RhZygpICYmICFlLT5oYXNUYWdOYW1lKGFUYWcpKSB8
fCBlLT5pc0xpbmsoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBlICYm
IHN0eWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPnNldEFmZmVjdGVkQnlIb3Zl
clJ1bGVzKHRydWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCAhPSBlICYmIGUt
PnJlbmRlclN0eWxlKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBlLT5yZW5kZXJTdHlsZSgp
LT5zZXRBZmZlY3RlZEJ5SG92ZXJSdWxlcyh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGUtPmhvdmVyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0FjdGl2ZToKICAgICAgICAgICAgICAg
ICAvLyBJZiB3ZSdyZSBpbiBxdWlya3MgbW9kZSwgdGhlbiA6YWN0aXZlIHNob3VsZCBuZXZlciBt
YXRjaCBhbmNob3JzIHdpdGggbm8KICAgICAgICAgICAgICAgICAvLyBocmVmIGFuZCAqOmFjdGl2
ZSBzaG91bGQgbm90IG1hdGNoIGFueXRoaW5nLiAKLSAgICAgICAgICAgICAgICBpZiAoc3RyaWN0
UGFyc2luZyB8fCBpc1N1YlNlbGVjdG9yIHx8IHNlbC0+cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rv
cjo6U3ViU2VsZWN0b3IgfHwgKHNlbC0+aGFzVGFnKCkgJiYgIWUtPmhhc1RhZ05hbWUoYVRhZykp
IHx8IGUtPmlzTGluaygpKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0cmljdFBhcnNpbmcgfHwg
aXNTdWJTZWxlY3RvciB8fCAoc2VsLT5oYXNUYWcoKSAmJiAhZS0+aGFzVGFnTmFtZShhVGFnKSkg
fHwgZS0+aXNMaW5rKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZSAm
JiBzdHlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRBZmZlY3RlZEJ5QWN0
aXZlUnVsZXModHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGUtPnJlbmRlclN0
eWxlKCkpCkBAIC0xNTY5LDMwICsxNTM5LDMyIEBACiAgICAgICAgICAgICAgICAgICAgIC8vIHJl
c3RyaWN0aW9uIGluIENTUzMsIGJ1dCBpdCBpcywgc28gbGV0J3MgaG9ub3VyIGl0LgogICAgICAg
ICAgICAgICAgICAgICBpZiAoc3ViU2VsLT5tX3NpbXBsZVNlbGVjdG9yKQogICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY2hlY2tPbmVTZWxl
Y3RvcihzdWJTZWwsIGUpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIWNoZWNrT25lU2VsZWN0
b3Ioc3ViU2VsLCBlLCBpc0FuY2VzdG9yLCB0cnVlKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25v
d246CisgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Ob3RQYXJzZWQ6CisgICAg
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9FbGVtZW50KSB7CisgICAgICAgIGlmIChlICE9IGVsZW1lbnQpIHJldHVybiBmYWxz
ZTsKKworICAgICAgICBzd2l0Y2ggKHNlbC0+cHNldWRvVHlwZSgpKSB7CiAgICAgICAgICAgICAv
LyBQc2V1ZG8tZWxlbWVudHM6CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9G
aXJzdExpbmU6Ci0gICAgICAgICAgICAgICAgaWYgKHN1YmplY3QpIHsKLSAgICAgICAgICAgICAg
ICAgICAgZHluYW1pY1BzZXVkbyA9IFJlbmRlclN0eWxlOjpGSVJTVF9MSU5FOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZHluYW1pY1BzZXVkbyA9IFJlbmRlclN0eWxlOjpG
SVJTVF9MSU5FOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RMZXR0ZXI6Ci0gICAgICAgICAgICAgICAgaWYgKHN1
YmplY3QpIHsKLSAgICAgICAgICAgICAgICAgICAgZHluYW1pY1BzZXVkbyA9IFJlbmRlclN0eWxl
OjpGSVJTVF9MRVRURVI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChEb2N1bWVudCogZG9jID0g
ZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvYy0+c2V0VXNlc0ZpcnN0
TGV0dGVyUnVsZXModHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBk
eW5hbWljUHNldWRvID0gUmVuZGVyU3R5bGU6OkZJUlNUX0xFVFRFUjsKKyAgICAgICAgICAgICAg
ICBpZiAoRG9jdW1lbnQqIGRvYyA9IGUtPmRvY3VtZW50KCkpCisgICAgICAgICAgICAgICAgICAg
IGRvYy0+c2V0VXNlc0ZpcnN0TGV0dGVyUnVsZXModHJ1ZSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9TZWxlY3Rpb246
CiAgICAgICAgICAgICAgICAgZHluYW1pY1BzZXVkbyA9IFJlbmRlclN0eWxlOjpTRUxFQ1RJT047
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNjIwLDggKzE1OTIsMTAgQEAKICAg
ICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1NlYXJjaFJlc3VsdHNCdXR0b246CiAg
ICAgICAgICAgICAgICAgZHluYW1pY1BzZXVkbyA9IFJlbmRlclN0eWxlOjpTRUFSQ0hfUkVTVUxU
U19CVVRUT047CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duOgogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvTm90UGFyc2VkOgotICAgICAgICAgICAgICAgIEFTU0VSVChmYWxzZSk7CisgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsK
SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHJldmlzaW9uIDI1MDkwKQorKysgV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsMTAgKzEzNiwxMSBA
QAogCiAgICAgICAgIC8qIGNoZWNrcyBpZiBhIGNvbXBvdW5kIHNlbGVjdG9yICh3aGljaCBjYW4g
Y29uc2lzdCBvZiBtdWx0aXBsZSBzaW1wbGUgc2VsZWN0b3JzKQogICAgICAgICAgICBtYXRjaGVz
IHRoZSBnaXZlbiBFbGVtZW50ICovCi0gICAgICAgIGJvb2wgY2hlY2tTZWxlY3RvcihDU1NTZWxl
Y3Rvciogc2VsZWN0b3IsIEVsZW1lbnQgKmUpOwotICAgICAgICAKKyAgICAgICAgYm9vbCBjaGVj
a1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWxlY3Rvcik7CisgICAgICAgIGJvb2wgY2hlY2tTZWxl
Y3RvcihDU1NTZWxlY3Rvciogc2VsZWN0b3IsIEVsZW1lbnQgKmUsIGJvb2wgaXNBbmNlc3Rvciwg
Ym9vbCBpc1N1YlNlbGVjdG9yKTsKKwogICAgICAgICAvKiBjaGVja3MgaWYgdGhlIHNlbGVjdG9y
IG1hdGNoZXMgdGhlIGdpdmVuIEVsZW1lbnQgKi8KLSAgICAgICAgYm9vbCBjaGVja09uZVNlbGVj
dG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIGJvb2wgaXNTdWJTZWxlY3RvciA9IGZhbHNlKTsK
KyAgICAgICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIGJv
b2wgaXNBbmNlc3RvciwgYm9vbCBpc1N1YlNlbGVjdG9yID0gZmFsc2UpOwogCiAgICAgICAgIC8q
IFRoaXMgZnVuY3Rpb24gZml4ZXMgdXAgdGhlIGRlZmF1bHQgZm9udCBzaXplIGlmIGl0IGRldGVj
dHMgdGhhdCB0aGUKICAgICAgICAgICAgY3VycmVudCBnZW5lcmljIGZvbnQgZmFtaWx5IGhhcyBj
aGFuZ2VkLiAtZHdoICovCkBAIC0yMjgsNyArMjI5LDcgQEAKICAgICAgICAgYm9vbCBpc1hNTERv
YzsKIAogICAgICAgICBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwgKj4gbV9zZWxlY3RvckF0dHJz
OwotICAgICAgICAKKwogICAgICAgICB2b2lkIGFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1
ZSAqdmFsdWUpOwogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgIHZvaWQgYXBwbHlTVkdQcm9wZXJ0
eShpbnQgaWQsIENTU1ZhbHVlICp2YWx1ZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTA5MykKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExIEBACisy
MDA3LTA4LTE1ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxzYW5kZmVsZEBrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3QgZm9yIG5v
bmRldGVybWluaXN0aWMgbWF0Y2hpbmcgb2YgQ1NTIHNlbGVjdG9ycywgc2VlIGh0dHA6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MjgKKworICAgICAgICAqIGZhc3Qvc2VsZWN0
b3JzL25vbmRldGVybWluaXN0aWMtY29tYmluYXRvcnMuaHRtbDogQWRkZWQuCisKIDIwMDctMDgt
MTQgIEtldmluIE1jQ3VsbG91Z2ggIDxrbWNjdWxsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQWRhbS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL25vbmRl
dGVybWluaXN0aWMtY29tYmluYXRvcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3NlbGVjdG9ycy9ub25kZXRlcm1pbmlzdGljLWNvbWJpbmF0b3JzLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9ub25kZXRlcm1pbmlzdGljLWNvbWJp
bmF0b3JzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c3R5bGU+CisuYSA+IC5iIC5jIHsKKyAgY29sb3I6IGdyZWVuOworfQorCisuZCArIC5lIH4g
LmYgeworICBjb2xvcjogZ3JlZW47Cit9CisKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgY2xhc3M9ImEiPgorPGRpdiBjbGFzcz0iYiI+Cis8ZGl2IGNsYXNzPSJiIj4KKzxkaXYgY2xh
c3M9ImMiPgorVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4KKzwvZGl2PgorPC9kaXY+Cis8L2Rp
dj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJkIj48L2Rpdj4KKzxkaXYgY2xhc3M9ImUiPjwvZGl2
PgorPGRpdiBjbGFzcz0iZSI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJmIj5UaGlzIHRleHQgc2hvdWxk
IGFsc28gYmUgZ3JlZW4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="6707"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16305</attachid>
            <date>2007-09-17 06:04:33 -0700</date>
            <delta_ts>2007-10-11 13:55:28 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>nondeterministic-patch-2.diff</filename>
            <type>text/plain</type>
            <size>17587</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTU5MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDctMDktMTcgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPHNhbmRm
ZWxkQGtkZS5vcmc+CisgCisgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAK
KyAgICAgICAgIEltcGxlbWVudCBDU1Mgc2VsZWN0b3IgY29tYmluYXRvcnMgbm9uZGV0ZXJtaW5p
c3RpYyBtYXRjaGluZy4gCisgICAgICAgICBGaXhlcyBodHRwOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNDI4CisgCisgICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cDoKKyAgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFJ1bGVzRm9yTGlz
dCk6CisgICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3Rvcik6
IFNwbGl0IHRoZSBmdW5jdGlvbiBhbmQgbWFrZSB0aGUgc2Vjb25kIHBhcnQgcmVjdXJzaXZlCisg
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tPbmVTZWxlY3Rvcik6IEhh
bmRsZSBwc2VvZG8tZWxlbWVudHMgcnVsZXMgYW5kIGhvdmVyYWN0aXZlIHF1aXJrcyAKKyAgICAg
ICAgIGhlcmUgaW5zdGVhZCBvZiBpbiBjaGVja1NlbGVjdG9yLgorICAgICAgICAgKiBjc3MvQ1NT
U3R5bGVTZWxlY3Rvci5oOgorIAogMjAwNy0wOS0xNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llai4KSW5kZXg6IFdlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCShyZXZpc2lvbiAyNTU5MSkKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjksNyArNDI5LDcgQEAKICAgICAgICAgQ1NTU3R5
bGVSdWxlKiBydWxlID0gZC0+cnVsZSgpOwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxv
Y2FsTmFtZSA9IGVsZW1lbnQtPmxvY2FsTmFtZSgpOwogICAgICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHNlbGVjdG9yTG9jYWxOYW1lID0gZC0+c2VsZWN0b3IoKS0+bV90YWcubG9jYWxOYW1lKCk7
Ci0gICAgICAgIGlmICgobG9jYWxOYW1lID09IHNlbGVjdG9yTG9jYWxOYW1lIHx8IHNlbGVjdG9y
TG9jYWxOYW1lID09IHN0YXJBdG9tKSAmJiBjaGVja1NlbGVjdG9yKGQtPnNlbGVjdG9yKCksIGVs
ZW1lbnQpKSB7CisgICAgICAgIGlmICgobG9jYWxOYW1lID09IHNlbGVjdG9yTG9jYWxOYW1lIHx8
IHNlbGVjdG9yTG9jYWxOYW1lID09IHN0YXJBdG9tKSAmJiBjaGVja1NlbGVjdG9yKGQtPnNlbGVj
dG9yKCkpKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgcnVsZSBoYXMgbm8gcHJvcGVydGllcyB0
byBhcHBseSwgdGhlbiBpZ25vcmUgaXQuCiAgICAgICAgICAgICBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbiogZGVjbCA9IHJ1bGUtPmRlY2xhcmF0aW9uKCk7CiAgICAgICAgICAgICBpZiAoIWRl
Y2wgfHwgIWRlY2wtPmxlbmd0aCgpKQpAQCAtMTIyNCwxMjMgKzEyMjQsOTkgQEAKICAgICByZXR1
cm4gMDsKIH0KIAotc3RhdGljIGJvb2wgc3ViamVjdDsKLQotYm9vbCBDU1NTdHlsZVNlbGVjdG9y
OjpjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQgKmUpCitib29sIENTU1N0
eWxlU2VsZWN0b3I6OmNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCkKIHsKICAgICBkeW5h
bWljUHNldWRvID0gUmVuZGVyU3R5bGU6Ok5PUFNFVURPOwotICAgIAotICAgIE5vZGUgKm4gPSBl
OwogCi0gICAgLy8gd2UgaGF2ZSB0aGUgc3ViamVjdCBwYXJ0IG9mIHRoZSBzZWxlY3RvcgotICAg
IHN1YmplY3QgPSB0cnVlOworICAgIC8vIENoZWNrIHRoZSBzZWxlY3RvcgorICAgIFNlbGVjdG9y
TWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZWxlbWVudCwgdHJ1ZSwgZmFsc2UpOwor
ICAgIGlmKG1hdGNoICE9IFNlbGVjdG9yTWF0Y2hlcykgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8g
V2UgdHJhY2sgd2hldGhlciBvciBub3QgdGhlIHJ1bGUgY29udGFpbnMgb25seSA6aG92ZXIgYW5k
IDphY3RpdmUgaW4gYSBzaW1wbGUgc2VsZWN0b3IuIElmCi0gICAgLy8gc28sIHdlIGNhbid0IGFs
bG93IHRoYXQgdG8gYXBwbHkgdG8gZXZlcnkgZWxlbWVudCBvbiB0aGUgcGFnZS4gIFdlIGFzc3Vt
ZSB0aGUgYXV0aG9yIGludGVuZGVkCi0gICAgLy8gdG8gYXBwbHkgdGhlIHJ1bGVzIG9ubHkgdG8g
bGlua3MuCi0gICAgYm9vbCBvbmx5SG92ZXJBY3RpdmUgPSAoIXNlbC0+aGFzVGFnKCkgJiYKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzcyAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbC0+cHNldWRv
VHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Ib3ZlciB8fAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbC0+cHNldWRvVHlwZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9BY3Rp
dmUpKSk7Ci0gICAgYm9vbCBhZmZlY3RlZEJ5SG92ZXIgPSBzdHlsZSA/IHN0eWxlLT5hZmZlY3Rl
ZEJ5SG92ZXJSdWxlcygpIDogZmFsc2U7Ci0gICAgYm9vbCBhZmZlY3RlZEJ5QWN0aXZlID0gc3R5
bGUgPyBzdHlsZS0+YWZmZWN0ZWRCeUFjdGl2ZVJ1bGVzKCkgOiBmYWxzZTsKLSAgICBib29sIGhh
dmVQc2V1ZG8gPSBwc2V1ZG9TdHlsZSAhPSBSZW5kZXJTdHlsZTo6Tk9QU0VVRE87Ci0gICAgCi0g
ICAgLy8gZmlyc3Qgc2VsZWN0b3IgaGFzIHRvIG1hdGNoCi0gICAgaWYgKCFjaGVja09uZVNlbGVj
dG9yKHNlbCwgZSkpCisgICAgaWYgKHBzZXVkb1N0eWxlICE9IFJlbmRlclN0eWxlOjpOT1BTRVVE
TyAmJiBwc2V1ZG9TdHlsZSAhPSBkeW5hbWljUHNldWRvKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAvLyBjaGVjayB0aGUgc3Vic2VsZWN0b3JzCisgICAgcmV0dXJuIHRydWU7Cit9CisK
Ky8vIFJlY3Vyc2l2ZSBjaGVjayBvZiBzZWxlY3RvcnMgYW5kIGNvbWJpbmF0b3JzCisvLyBJdCBj
YW4gcmV0dXJuIDMgZGlmZmVyZW50IHZhbHVlczoKKy8vICogU2VsZWN0b3JNYXRjaGVzICAgICAg
ICAgLSB0aGUgc2VsZWN0b3IgbWF0Y2hlcyB0aGUgZWxlbWVudCBlCisvLyAqIFNlbGVjdG9yRmFp
bHNMb2NhbGx5ICAgIC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciB0aGUgZWxlbWVudCBlCisvLyAq
IFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5IC0gdGhlIHNlbGVjdG9yIGZhaWxzIGZvciBlIGFuZCBh
bnkgc2libGluZyBvciBhbmNlc3RvciBvZiBlCitDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1h
dGNoIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxl
bWVudCAqZSwgYm9vbCBpc0FuY2VzdG9yLCBib29sIGlzU3ViU2VsZWN0b3IpCit7CisgICAgLy8g
Zmlyc3Qgc2VsZWN0b3IgaGFzIHRvIG1hdGNoCisgICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHNl
bCwgZSwgaXNBbmNlc3RvciwgaXNTdWJTZWxlY3RvcikpCisgICAgICAgIHJldHVybiBTZWxlY3Rv
ckZhaWxzTG9jYWxseTsKKworICAgIC8vIFRoZSByZXN0IG9mIHRoZSBzZWxlY3RvcnMgaGFzIHRv
IG1hdGNoCiAgICAgQ1NTU2VsZWN0b3I6OlJlbGF0aW9uIHJlbGF0aW9uID0gc2VsLT5yZWxhdGlv
bigpOwotICAgIHdoaWxlKChzZWwgPSBzZWwtPm1fdGFnSGlzdG9yeSkpIHsKLSAgICAgICAgaWYg
KCFuLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGlmIChyZWxhdGlvbiAhPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IpIHsKLSAgICAgICAgICAg
IHN1YmplY3QgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChoYXZlUHNldWRvICYmIGR5bmFtaWNQ
c2V1ZG8gIT0gcHNldWRvU3R5bGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2gocmVsYXRpb24pCi0gICAgICAgIHsKKwor
ICAgIC8vIFByZXBhcmUgbmV4dCBzZWwKKyAgICBzZWwgPSBzZWwtPm1fdGFnSGlzdG9yeTsKKyAg
ICBpZiAoIXNlbCkgcmV0dXJuIFNlbGVjdG9yTWF0Y2hlczsKKworICAgIGlmIChyZWxhdGlvbiAh
PSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IpCisgICAgICAgIC8vIEJhaWwtb3V0IGlmIHRoaXMg
c2VsZWN0b3IgaXMgaXJyZWxldmFudCBmb3IgdGhlIHBzZXVkb1N0eWxlCisgICAgICAgIGlmIChw
c2V1ZG9TdHlsZSAhPSBSZW5kZXJTdHlsZTo6Tk9QU0VVRE8gJiYgcHNldWRvU3R5bGUgIT0gZHlu
YW1pY1BzZXVkbykKKyAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsK
KworICAgIHN3aXRjaChyZWxhdGlvbikgewogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpEZXNj
ZW5kYW50OgotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgbWF0Y2ggbmVlZHMgdG8ga25vdyBo
b3cgdG8gYmFja3RyYWNrIGFuZCBiZSBub24tZGV0ZXJtaW5pc3RpYy4KLSAgICAgICAgICAgIGRv
IHsKLSAgICAgICAgICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOworICAgICAgICAgICAgd2hp
bGUodHJ1ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBuID0gZS0+cGFy
ZW50Tm9kZSgpOwogICAgICAgICAgICAgICAgIGlmICghbiB8fCAhbi0+aXNFbGVtZW50Tm9kZSgp
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IHdoaWxl
ICghY2hlY2tPbmVTZWxlY3RvcihzZWwsIHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKSkpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CisgICAgICAg
ICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKKyAgICAgICAgICAgICAgICBT
ZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHRydWUsIGZhbHNlKTsK
KyAgICAgICAgICAgICAgICBpZiAobWF0Y2ggIT0gU2VsZWN0b3JGYWlsc0xvY2FsbHkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpDaGlsZDoKICAgICAgICAgewotICAg
ICAgICAgICAgbiA9IG4tPnBhcmVudE5vZGUoKTsKKyAgICAgICAgICAgIE5vZGUqIG4gPSBlLT5w
YXJlbnROb2RlKCk7CiAgICAgICAgICAgICBpZiAoIW4gfHwgIW4tPmlzRWxlbWVudE5vZGUoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIWNoZWNrT25l
U2VsZWN0b3Ioc2VsLCBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obikpKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIHJldHVy
biBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKKyAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4obik7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUsIHRy
dWUsIGZhbHNlKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpEaXJlY3RB
ZGphY2VudDoKICAgICAgICAgewotICAgICAgICAgICAgbiA9IG4tPnByZXZpb3VzU2libGluZygp
OworICAgICAgICAgICAgTm9kZSogbiA9IGUtPnByZXZpb3VzU2libGluZygpOwogICAgICAgICAg
ICAgd2hpbGUgKG4gJiYgIW4tPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgICAgICBuID0g
bi0+cHJldmlvdXNTaWJsaW5nKCk7CiAgICAgICAgICAgICBpZiAoIW4pCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHNlbCwg
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWls
c0xvY2FsbHk7CisgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOworICAg
ICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBmYWxzZSwgZmFsc2UpOyAKICAg
ICAgICAgfQogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OgotICAg
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgbWF0Y2ggbmVlZHMgdG8ga25vdyBob3cgdG8gYmFja3Ry
YWNrIGFuZCBiZSBub24tZGV0ZXJtaW5pc3RpYy4KLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAg
ICAgICAgICBuID0gbi0+cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgICAgICAgICAgICAgd2hpbGUg
KG4gJiYgIW4tPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIHdoaWxlKHRydWUpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgTm9kZSogbiA9IGUtPnByZXZpb3VzU2libGluZygp
OworICAgICAgICAgICAgICAgIHdoaWxlKG4gJiYgIW4tPmlzRWxlbWVudE5vZGUoKSkKICAgICAg
ICAgICAgICAgICAgICAgbiA9IG4tPnByZXZpb3VzU2libGluZygpOwogICAgICAgICAgICAgICAg
IGlmICghbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
fSB3aGlsZSAoIWNoZWNrT25lU2VsZWN0b3Ioc2VsLCBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obikp
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNMb2NhbGx5OworICAg
ICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CisgICAgICAgICAgICAg
ICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBmYWxzZSwgZmFs
c2UpOworICAgICAgICAgICAgICAgIGlmIChtYXRjaCAhPSBTZWxlY3RvckZhaWxzTG9jYWxseSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoOworICAgICAgICAgICAgfTsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yOgotICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChvbmx5SG92ZXJBY3RpdmUpCi0gICAgICAgICAgICAgICAg
b25seUhvdmVyQWN0aXZlID0gKHNlbC0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3MgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbC0+cHNldWRvVHlw
ZSgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Ib3ZlciB8fAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsLT5wc2V1ZG9UeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0Fj
dGl2ZSkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBFbGVtZW50ICplbGVtID0gc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KG4pOwotICAgICAgICAgICAgLy8gYSBzZWxlY3RvciBpcyBpbnZhbGlk
IGlmIHNvbWV0aGluZyBmb2xsb3dzIDpmaXJzdC14eHgKLSAgICAgICAgICAgIGlmIChlbGVtID09
IGVsZW1lbnQgJiYgZHluYW1pY1BzZXVkbyAhPSBSZW5kZXJTdHlsZTo6Tk9QU0VVRE8pCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCFjaGVja09uZVNlbGVj
dG9yKHNlbCwgZWxlbSwgdHJ1ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZWxhdGlvbiA9
IHNlbC0+cmVsYXRpb24oKTsKKyAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3I6
CisgICAgICAgICAgICAvLyBhIHNlbGVjdG9yIGlzIGludmFsaWQgaWYgc29tZXRoaW5nIGZvbGxv
d3MgYSBwc2V1ZG8tZWxlbWVudAorICAgICAgICAgICAgaWYgKGUgPT0gZWxlbWVudCAmJiBkeW5h
bWljUHNldWRvICE9IFJlbmRlclN0eWxlOjpOT1BTRVVETykKKyAgICAgICAgICAgICAgICByZXR1
cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxl
Y3RvcihzZWwsIGUsIGlzQW5jZXN0b3IsIHRydWUpOwogICAgIH0KIAotICAgIGlmIChzdWJqZWN0
ICYmIGhhdmVQc2V1ZG8gJiYgZHluYW1pY1BzZXVkbyAhPSBwc2V1ZG9TdHlsZSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIAotICAgIC8vIGRpc2FsbG93ICo6aG92ZXIsICo6YWN0aXZlLCBh
bmQgKjpob3ZlcjphY3RpdmUgZXhjZXB0IGZvciBsaW5rcwotICAgIGlmICghc3RyaWN0UGFyc2lu
ZyAmJiBvbmx5SG92ZXJBY3RpdmUgJiYgc3ViamVjdCkgewotICAgICAgICBpZiAocHNldWRvU3Rh
dGUgPT0gUHNldWRvVW5rbm93bikKLSAgICAgICAgICAgIGNoZWNrUHNldWRvU3RhdGUoZSk7Ci0K
LSAgICAgICAgaWYgKHBzZXVkb1N0YXRlID09IFBzZXVkb05vbmUpIHsKLSAgICAgICAgICAgIGlm
ICghYWZmZWN0ZWRCeUhvdmVyICYmIHN0eWxlLT5hZmZlY3RlZEJ5SG92ZXJSdWxlcygpKQotICAg
ICAgICAgICAgICAgIHN0eWxlLT5zZXRBZmZlY3RlZEJ5SG92ZXJSdWxlcyhmYWxzZSk7Ci0gICAg
ICAgICAgICBpZiAoIWFmZmVjdGVkQnlBY3RpdmUgJiYgc3R5bGUtPmFmZmVjdGVkQnlBY3RpdmVS
dWxlcygpKQotICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRBZmZlY3RlZEJ5QWN0aXZlUnVsZXMo
ZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogfQog
Ci1ib29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNl
bCwgRWxlbWVudCogZSwgYm9vbCBpc1N1YlNlbGVjdG9yKQorYm9vbCBDU1NTdHlsZVNlbGVjdG9y
OjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQqIGUsIGJvb2wgaXNB
bmNlc3RvciwgYm9vbCBpc1N1YlNlbGVjdG9yKQogewogICAgIGlmKCFlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xNDMwLDEyICsxNDA2LDEwIEBACiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgIH0KLSAgICBpZihzZWwtPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzIHx8IHNlbC0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCkKKyAg
ICBpZihzZWwtPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKSAKICAgICB7Ci0g
ICAgICAgIC8vIFBzZXVkbyBlbGVtZW50cy4gV2UgbmVlZCB0byBjaGVjayBmaXJzdCBjaGlsZCBo
ZXJlLiBObyBkeW5hbWljIHBzZXVkbwotICAgICAgICAvLyBlbGVtZW50cyBmb3IgdGhlIG1vbWVu
dAotICAgICAgICAgICAgc3dpdGNoIChzZWwtPnBzZXVkb1R5cGUoKSkgewotICAgICAgICAgICAg
ICAgIC8vIFBzZXVkbyBjbGFzc2VzOgorICAgICAgICBzd2l0Y2ggKHNlbC0+cHNldWRvVHlwZSgp
KSB7CisgICAgICAgICAgICAvLyBQc2V1ZG8gY2xhc3NlczoKICAgICAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb0VtcHR5OgogICAgICAgICAgICAgICAgIGlmICghZS0+Zmlyc3RDaGls
ZCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0OTIsMTkgKzE0NjYs
NiBAQAogICAgICAgICAgICAgICAgIGlmIChwc2V1ZG9TdGF0ZSA9PSBQc2V1ZG9WaXNpdGVkKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0hvdmVyOiB7Ci0gICAgICAgICAg
ICAgICAgLy8gSWYgd2UncmUgaW4gcXVpcmtzIG1vZGUsIHRoZW4gaG92ZXIgc2hvdWxkIG5ldmVy
IG1hdGNoIGFuY2hvcnMgd2l0aCBubwotICAgICAgICAgICAgICAgIC8vIGhyZWYgYW5kICo6aG92
ZXIgc2hvdWxkIG5vdCBtYXRjaCBhbnl0aGluZy4gIFRoaXMgaXMgaW1wb3J0YW50IGZvciBzaXRl
cyBsaWtlIHdzai5jb20uCi0gICAgICAgICAgICAgICAgaWYgKHN0cmljdFBhcnNpbmcgfHwgaXNT
dWJTZWxlY3RvciB8fCBzZWwtPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9y
IHx8IChzZWwtPmhhc1RhZygpICYmICFlLT5oYXNUYWdOYW1lKGFUYWcpKSB8fCBlLT5pc0xpbmso
KSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBlICYmIHN0eWxlKQotICAg
ICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPnNldEFmZmVjdGVkQnlIb3ZlclJ1bGVzKHRydWUp
OwotICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCAhPSBlICYmIGUtPnJlbmRlclN0eWxl
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBlLT5yZW5kZXJTdHlsZSgpLT5zZXRBZmZlY3Rl
ZEJ5SG92ZXJSdWxlcyh0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGUtPmhvdmVyZWQo
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0RyYWc6IHsKICAgICAgICAgICAgICAgICBpZiAoZWxlbWVu
dCA9PSBlICYmIHN0eWxlKQogICAgICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0QWZmZWN0ZWRC
eURyYWdSdWxlcyh0cnVlKTsKQEAgLTE1MTgsMTAgKzE0NzksMjMgQEAKICAgICAgICAgICAgICAg
ICBpZiAoZSAmJiBlLT5mb2N1c2VkKCkgJiYgZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+aXNBY3Rp
dmUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Ib3ZlcjogeworICAg
ICAgICAgICAgICAgIC8vIElmIHdlJ3JlIGluIHF1aXJrcyBtb2RlLCB0aGVuIGhvdmVyIHNob3Vs
ZCBuZXZlciBtYXRjaCBhbmNob3JzIHdpdGggbm8KKyAgICAgICAgICAgICAgICAvLyBocmVmIGFu
ZCAqOmhvdmVyIHNob3VsZCBub3QgbWF0Y2ggYW55dGhpbmcuICBUaGlzIGlzIGltcG9ydGFudCBm
b3Igc2l0ZXMgbGlrZSB3c2ouY29tLgorICAgICAgICAgICAgICAgIGlmIChzdHJpY3RQYXJzaW5n
IHx8IGlzU3ViU2VsZWN0b3IgfHwgKHNlbC0+aGFzVGFnKCkgJiYgIWUtPmhhc1RhZ05hbWUoYVRh
ZykpIHx8IGUtPmlzTGluaygpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09
IGUgJiYgc3R5bGUpCisgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0QWZmZWN0ZWRC
eUhvdmVyUnVsZXModHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ICE9IGUg
JiYgZS0+cmVuZGVyU3R5bGUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGUtPnJlbmRlclN0
eWxlKCktPnNldEFmZmVjdGVkQnlIb3ZlclJ1bGVzKHRydWUpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoZS0+aG92ZXJlZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQWN0aXZlOgogICAgICAgICAg
ICAgICAgIC8vIElmIHdlJ3JlIGluIHF1aXJrcyBtb2RlLCB0aGVuIDphY3RpdmUgc2hvdWxkIG5l
dmVyIG1hdGNoIGFuY2hvcnMgd2l0aCBubwogICAgICAgICAgICAgICAgIC8vIGhyZWYgYW5kICo6
YWN0aXZlIHNob3VsZCBub3QgbWF0Y2ggYW55dGhpbmcuIAotICAgICAgICAgICAgICAgIGlmIChz
dHJpY3RQYXJzaW5nIHx8IGlzU3ViU2VsZWN0b3IgfHwgc2VsLT5yZWxhdGlvbigpID09IENTU1Nl
bGVjdG9yOjpTdWJTZWxlY3RvciB8fCAoc2VsLT5oYXNUYWcoKSAmJiAhZS0+aGFzVGFnTmFtZShh
VGFnKSkgfHwgZS0+aXNMaW5rKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RyaWN0UGFyc2lu
ZyB8fCBpc1N1YlNlbGVjdG9yIHx8IChzZWwtPmhhc1RhZygpICYmICFlLT5oYXNUYWdOYW1lKGFU
YWcpKSB8fCBlLT5pc0xpbmsoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBlICYmIHN0eWxlKQogICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPnNldEFmZmVjdGVk
QnlBY3RpdmVSdWxlcyh0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZS0+cmVu
ZGVyU3R5bGUoKSkKQEAgLTE1NzQsMzAgKzE1NDgsMzIgQEAKICAgICAgICAgICAgICAgICAgICAg
Ly8gcmVzdHJpY3Rpb24gaW4gQ1NTMywgYnV0IGl0IGlzLCBzbyBsZXQncyBob25vdXIgaXQuCiAg
ICAgICAgICAgICAgICAgICAgIGlmIChzdWJTZWwtPm1fc2ltcGxlU2VsZWN0b3IpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGVja09u
ZVNlbGVjdG9yKHN1YlNlbCwgZSkpCisgICAgICAgICAgICAgICAgICAgIGlmICghY2hlY2tPbmVT
ZWxlY3RvcihzdWJTZWwsIGUsIGlzQW5jZXN0b3IsIHRydWUpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
VW5rbm93bjoKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb05vdFBhcnNlZDoK
KyAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChzZWwtPm1fbWF0Y2ggPT0gQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0VsZW1lbnQpIHsKKyAgICAgICAgaWYgKGUgIT0gZWxlbWVudCkgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIHN3aXRjaCAoc2VsLT5wc2V1ZG9UeXBlKCkpIHsKICAgICAgICAg
ICAgIC8vIFBzZXVkby1lbGVtZW50czoKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0ZpcnN0TGluZToKLSAgICAgICAgICAgICAgICBpZiAoc3ViamVjdCkgewotICAgICAgICAg
ICAgICAgICAgICBkeW5hbWljUHNldWRvID0gUmVuZGVyU3R5bGU6OkZJUlNUX0xJTkU7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkeW5hbWljUHNldWRvID0gUmVuZGVyU3R5
bGU6OkZJUlNUX0xJTkU7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdExldHRlcjoKLSAgICAgICAgICAgICAgICBp
ZiAoc3ViamVjdCkgewotICAgICAgICAgICAgICAgICAgICBkeW5hbWljUHNldWRvID0gUmVuZGVy
U3R5bGU6OkZJUlNUX0xFVFRFUjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKERvY3VtZW50KiBk
b2MgPSBlLT5kb2N1bWVudCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgZG9jLT5zZXRVc2Vz
Rmlyc3RMZXR0ZXJSdWxlcyh0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGR5bmFtaWNQc2V1ZG8gPSBSZW5kZXJTdHlsZTo6RklSU1RfTEVUVEVSOworICAgICAgICAg
ICAgICAgIGlmIChEb2N1bWVudCogZG9jID0gZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgICAg
ICAgICAgZG9jLT5zZXRVc2VzRmlyc3RMZXR0ZXJSdWxlcyh0cnVlKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1NlbGVj
dGlvbjoKICAgICAgICAgICAgICAgICBkeW5hbWljUHNldWRvID0gUmVuZGVyU3R5bGU6OlNFTEVD
VElPTjsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE2MjUsOCArMTYwMSwxMCBA
QAogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvU2VhcmNoUmVzdWx0c0J1dHRv
bjoKICAgICAgICAgICAgICAgICBkeW5hbWljUHNldWRvID0gUmVuZGVyU3R5bGU6OlNFQVJDSF9S
RVNVTFRTX0JVVFRPTjsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd246CiAgICAgICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpQc2V1ZG9Ob3RQYXJzZWQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGZhbHNlKTsK
KyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZh
bHNlOwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAkocmV2aXNpb24gMjU1OTEpCisrKyBXZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiwxMCArMTM2
LDEyIEBACiAKICAgICAgICAgLyogY2hlY2tzIGlmIGEgY29tcG91bmQgc2VsZWN0b3IgKHdoaWNo
IGNhbiBjb25zaXN0IG9mIG11bHRpcGxlIHNpbXBsZSBzZWxlY3RvcnMpCiAgICAgICAgICAgIG1h
dGNoZXMgdGhlIGdpdmVuIEVsZW1lbnQgKi8KLSAgICAgICAgYm9vbCBjaGVja1NlbGVjdG9yKENT
U1NlbGVjdG9yKiBzZWxlY3RvciwgRWxlbWVudCAqZSk7Ci0gICAgICAgIAorICAgICAgICBib29s
IGNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKTsKKyAgICAgICAgZW51bSBTZWxl
Y3Rvck1hdGNoIHsgU2VsZWN0b3JNYXRjaGVzPTAsIFNlbGVjdG9yRmFpbHNMb2NhbGx5LCBTZWxl
Y3RvckZhaWxzQ29tcGxldGVseX07CisgICAgICAgIFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3Rv
cihDU1NTZWxlY3Rvciogc2VsZWN0b3IsIEVsZW1lbnQgKmUsIGJvb2wgaXNBbmNlc3RvciwgYm9v
bCBpc1N1YlNlbGVjdG9yKTsKKwogICAgICAgICAvKiBjaGVja3MgaWYgdGhlIHNlbGVjdG9yIG1h
dGNoZXMgdGhlIGdpdmVuIEVsZW1lbnQgKi8KLSAgICAgICAgYm9vbCBjaGVja09uZVNlbGVjdG9y
KENTU1NlbGVjdG9yKiwgRWxlbWVudCosIGJvb2wgaXNTdWJTZWxlY3RvciA9IGZhbHNlKTsKKyAg
ICAgICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIGJvb2wg
aXNBbmNlc3RvciwgYm9vbCBpc1N1YlNlbGVjdG9yID0gZmFsc2UpOwogCiAgICAgICAgIC8qIFRo
aXMgZnVuY3Rpb24gZml4ZXMgdXAgdGhlIGRlZmF1bHQgZm9udCBzaXplIGlmIGl0IGRldGVjdHMg
dGhhdCB0aGUKICAgICAgICAgICAgY3VycmVudCBnZW5lcmljIGZvbnQgZmFtaWx5IGhhcyBjaGFu
Z2VkLiAtZHdoICovCkBAIC0yMjgsNyArMjMwLDcgQEAKICAgICAgICAgYm9vbCBpc1hNTERvYzsK
IAogICAgICAgICBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwgKj4gbV9zZWxlY3RvckF0dHJzOwot
ICAgICAgICAKKwogICAgICAgICB2b2lkIGFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAq
dmFsdWUpOwogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgIHZvaWQgYXBwbHlTVkdQcm9wZXJ0eShp
bnQgaWQsIENTU1ZhbHVlICp2YWx1ZSk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTU5MSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExIEBACisyMDA3
LTA5LTE3ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxzYW5kZmVsZEBrZGUub3JnPgorIAorICAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgCisgICAgICAgICBUZXN0IGZvciBu
b25kZXRlcm1pbmlzdGljIG1hdGNoaW5nIG9mIENTUyBzZWxlY3RvcnMsIHNlZSBodHRwOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDI4CisgCisgICAgICAgICAqIGZhc3Qvc2Vs
ZWN0b3JzL25vbmRldGVybWluaXN0aWMtY29tYmluYXRvcnMuaHRtbDogQWRkZWQuCisgCiAyMDA3
LTA5LTE2ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgTWFjaWVqLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvbm9uZGV0ZXJtaW5p
c3RpYy1jb21iaW5hdG9ycy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2Vs
ZWN0b3JzL25vbmRldGVybWluaXN0aWMtY29tYmluYXRvcnMuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL25vbmRldGVybWluaXN0aWMtY29tYmluYXRvcnMu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHls
ZT4KKy5hID4gLmIgLmMgeworICBjb2xvcjogZ3JlZW47Cit9CisKKy5kICsgLmUgfiAuZiB7Cisg
IGNvbG9yOiBncmVlbjsKK30KKworPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBjbGFz
cz0iYSI+Cis8ZGl2IGNsYXNzPSJiIj4KKzxkaXYgY2xhc3M9ImIiPgorPGRpdiBjbGFzcz0iYyI+
CitUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLgorPC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPC9k
aXY+CisKKzxkaXYgY2xhc3M9ImQiPjwvZGl2PgorPGRpdiBjbGFzcz0iZSI+PC9kaXY+Cis8ZGl2
IGNsYXNzPSJlIj48L2Rpdj4KKzxkaXYgY2xhc3M9ImYiPlRoaXMgdGV4dCBzaG91bGQgYWxzbyBi
ZSBncmVlbi48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+
CisuYSA+IC5iIC5jIHsKKyAgY29sb3I6IGdyZWVuOworfQorCisuZCArIC5lIH4gLmYgeworICBj
b2xvcjogZ3JlZW47Cit9CisKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgY2xhc3M9
ImEiPgorPGRpdiBjbGFzcz0iYiI+Cis8ZGl2IGNsYXNzPSJiIj4KKzxkaXYgY2xhc3M9ImMiPgor
VGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4KKzwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzwvZGl2
PgorCis8ZGl2IGNsYXNzPSJkIj48L2Rpdj4KKzxkaXYgY2xhc3M9ImUiPjwvZGl2PgorPGRpdiBj
bGFzcz0iZSI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJmIj5UaGlzIHRleHQgc2hvdWxkIGFsc28gYmUg
Z3JlZW4uPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="7029"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>