<?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>31723</bug_id>
          
          <creation_ts>2009-11-20 08:42:46 -0800</creation_ts>
          <short_desc>CSS Counter Nesting still does not work according to the spec.</short_desc>
          <delta_ts>2009-12-08 07:21:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>11031</blocked>
    
    <blocked>31814</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carol Szabo">carol</reporter>
          <assigned_to name="Carol Szabo">carol</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>165316</commentid>
    <comment_count>0</comment_count>
    <who name="Carol Szabo">carol</who>
    <bug_when>2009-11-20 08:42:46 -0800</bug_when>
    <thetext>The following attached test case does not render correctly.
Patch to come soon. This is patch is a partial for the big fix for 11031.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165318</commentid>
    <comment_count>1</comment_count>
      <attachid>43583</attachid>
    <who name="Carol Szabo">carol</who>
    <bug_when>2009-11-20 08:43:52 -0800</bug_when>
    <thetext>Created attachment 43583
Test Case

I tried to attach this with the bug creation, but the attachment was dropped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165328</commentid>
    <comment_count>2</comment_count>
      <attachid>43589</attachid>
    <who name="Carol Szabo">carol</who>
    <bug_when>2009-11-20 09:20:45 -0800</bug_when>
    <thetext>Created attachment 43589
Proposed Patch

This patch is an intermediary step towards fixing 11031. So it addresses some of the issues Darin raised there and fixes the findPlaceForCounter algorithm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165960</commentid>
    <comment_count>3</comment_count>
      <attachid>43740</attachid>
    <who name="Carol Szabo">carol</who>
    <bug_when>2009-11-23 16:10:12 -0800</bug_when>
    <thetext>Created attachment 43740
Proposed Patch

This is the first part of a comprehensive patch to 11031</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167297</commentid>
    <comment_count>4</comment_count>
      <attachid>43740</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-30 10:47:16 -0800</bug_when>
    <thetext>Comment on attachment 43740
Proposed Patch

&gt; +                        // We found a reset counter that is on a renderer that is a sibling of ours or a parent.
&gt; +                        if (isReset &amp;&amp; (currentRenderer-&gt;parent() == counterOwner-&gt;parent())) {

Formatting nit: We normally don&apos;t use parentheses in this common type of expression, and later in this same function this patch does not.

&gt; +                    // CurrentCounter, the counter at the EndSearchRenderer is not reset.

Missing comma after the word &quot;EndSearchRenderer&quot; in this comment.

&gt; +                    if (!isReset || (currentRenderer-&gt;parent() != counterOwner-&gt;parent())) {

Formatting nit: We normally don&apos;t use parentheses in this common type of expression, and later in this same function this patch does not.

&gt; +                        // We are no longer interested in previous siblings of the currentRenderer or their children
&gt; +                        // as counters they may have attached cannot be the previous sibling of the counter we are placing

Missing period here.

&gt; +        // This function is designed so that the same test is not done twice in an iteration, except for this one
&gt; +        // which may be done twice in some cases.

I think this design choice has made the function a little harder to read than most with more repeated code than I would like to see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167738</commentid>
    <comment_count>5</comment_count>
      <attachid>44101</attachid>
    <who name="Carol Szabo">carol</who>
    <bug_when>2009-12-01 14:11:38 -0800</bug_when>
    <thetext>Created attachment 44101
Proposed Patch

I have addressed all style related comments that Darin made.
I did not address the readability issue as my understanding is that Darin&apos;s concern not withstanding the current form is acceptable and I wasn&apos;t able to find a solution that would make the code significantly smaller and more readable.

One thought that I had was to codify in all 7 decision points as bits in an offset and build a decision vector of chars, where the 8 bits would represent the about 8 different actions in the algorithm. This way the code size would be probably the same, maybe somewhat smaller, the speed might be slightly lower, but probably not significantly, 90% of the code would be easy to read, the entire complexity of the algorithm being packaged in the decision vector which would be as hard to figure out as the current code is to read if not harder hence in the end I decided against this solution.

If I have not made my self clear above here is what I had in mind:

const char ActionSetParentToCurrent=1;
const char ActionSetParentToCurrentsParent=2;
const char ActionSetPreviousSiblingToCurrent=4;
const char ActionReturnParent=8;
.....

const char DecisionIsReset=1
const char DecisionIsCurrentReset=2
const char DecisionCurrentAndOwnerSiblings=4;
const char DecisionCurrentIsEndOfSearch=8;
.....

const char decisionVector[128] = {
    0,
    0,
    ActionSetPreviousSiblingToCurrent,
    ActionSetPreviousSiblingToZero,
    ActionSetPreviousSiblingToZero | ActionSetParentToCurrent,
    ActionSetPreviousSiblingToZero | ActionSetParentToCurrent | ReturnParent,
.....
};
 while(currentRenderer) {
  current = makeCounterNode(...);
  action = decisionVector [ DecisionIsReset * isReset + DecisionIsCurrentReset * current-&gt;actsAsReset() + ... ];
  if (action &amp; ActionSetParentToCurrent)
      parent=current;
  if (action &amp; ActionSetPreviousSiblingToCurrent)
      previousSibling=current;
  if (action &amp; ActionReturnParent)
      return parent;
.....
  if (previousSibling)
      currentRenderer = previousSiblingOrParent(currentRenderer);
  else
      currentRenderer = currentRenderer-&gt;previousInPreOrder();
}
return false;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167742</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-01 14:15:45 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44101 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169355</commentid>
    <comment_count>7</comment_count>
      <attachid>44101</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-07 10:21:28 -0800</bug_when>
    <thetext>Comment on attachment 44101
Proposed Patch

Rejecting patch 44101 from commit-queue.

Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;rebase&apos;]&quot; exit_code: 1
Last 500 characters of output:
geLog
r51773 = e09427d72cfc7ad43d286711fd170387100dad22 (refs/remotes/trunk)
	M	LayoutTests/platform/win/Skipped
	M	LayoutTests/ChangeLog
r51775 = c68367ef88c3fdc4a45069529814374838fcba35 (refs/remotes/trunk)
First, rewinding head to replay your work on top of it...
error: Untracked working tree file &apos;LayoutTests/http/tests/security/cross-frame-access-getOwnPropertyDescriptor-expected.txt&apos; would be overwritten by merge.
could not detach HEAD
rebase refs/remotes/trunk: command returned error: 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169363</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-07 10:30:49 -0800</bug_when>
    <thetext>Sorry, I&quot;ll fix that on the bot.  That&apos;s caused by bug 28603.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169411</commentid>
    <comment_count>9</comment_count>
      <attachid>44101</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-07 11:55:02 -0800</bug_when>
    <thetext>Comment on attachment 44101
Proposed Patch

Rejecting patch 44101 from commit-queue.

Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;]&quot; exit_code: 1
Last 500 characters of output:
g.html
	M	WebCore/ChangeLog
	M	WebCore/rendering/RenderCounter.cpp
A repository hook failed: MERGE request failed on &apos;/repository/webkit/trunk&apos;: Commit blocked by pre-commit hook (exit code 1) with output:

    The following files contain tab characters:

        trunk/LayoutTests/fast/css/counters/nesting.html

    Please use spaces instead to indent.
    If you must commit a file with tabs, use svn propset to set the &quot;allow-tabs&quot; property.
 at /usr/local/git/libexec/git-core/git-svn line 558</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169634</commentid>
    <comment_count>10</comment_count>
      <attachid>44464</attachid>
    <who name="Carol Szabo">carol</who>
    <bug_when>2009-12-08 02:21:11 -0800</bug_when>
    <thetext>Created attachment 44464
Proposed Patch

Fixed tab in html test case, otherwise the patch is identical with the previously reviewed one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169635</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-08 02:22:50 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44464 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169666</commentid>
    <comment_count>12</comment_count>
      <attachid>44464</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-08 07:21:05 -0800</bug_when>
    <thetext>Comment on attachment 44464
Proposed Patch

Clearing flags on attachment: 44464

Committed r51851: &lt;http://trac.webkit.org/changeset/51851&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>169668</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-08 07:21:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>43583</attachid>
            <date>2009-11-20 08:43:52 -0800</date>
            <delta_ts>2009-11-20 08:43:52 -0800</delta_ts>
            <desc>Test Case</desc>
            <filename>nesting.html</filename>
            <type>text/html</type>
            <size>2665</size>
            <attacher name="Carol Szabo">carol</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIj4KPGh0bWw+
PGhlYWQ+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD1VVEYtOCI+CiAgICA8dGl0bGU+Q1NTIFRlc3Q6IGR5bmFtaWMgY2hhbmdl
cyB0byAnY291bnRlci1pbmNyZW1lbnQnPC90aXRsZT4KICAgIDxsaW5rIHJlbD0iYXV0aG9yIiBo
cmVmPSJodHRwOi8vZGJhcm9uLm9yZy8iIHRpdGxlPSJMLiBEYXZpZCBCYXJvbiI+CiAgICA8bGlu
ayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL2dlbmVyYXRlLmh0
bWwjY291bnRlcnMiPgogICAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9y
Zy9UUi9DU1MyMS9nZW5lcmF0ZS5odG1sI3Byb3BkZWYtY29udGVudCI+CiAgICA8bGluayByZWw9
ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCNjb3Vu
dGVyIj4KICAgIDxtZXRhIGNvbnRlbnQ9ImRvbSIgbmFtZT0iZmxhZ3MiPgogICAgPG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC1TdHlsZS1UeXBlIiBjb250ZW50PSJ0ZXh0L2NzcyI+CiAgICA8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVNjcmlwdC1UeXBlIiBjb250ZW50PSJ0ZXh0L2phdmFzY3Jp
cHQiPgogICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KICAgICAgICBib2R5IHsgd2hpdGUtc3Bh
Y2U6IG5vd3JhcDsgfQogICAgICAgIC5yZXNldCB7IGNvdW50ZXItcmVzZXQ6IGM7IH0KICAgICAg
ICAuaW5jcmVtZW50OmJlZm9yZSwgLnVzZTpiZWZvcmUgeyBjb250ZW50OiBjb3VudGVycyhjLCAi
LiIpICItIjsgfQogICAgICAgIC5pbmNyZW1lbnQgeyBjb3VudGVyLWluY3JlbWVudDogYzsgfQog
ICAgPC9zdHlsZT4KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcnVuKCkgewogICAg
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgICAgICAgICAg
ICB0ZXN0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CiAgICAgICAg
ICAgICAgICBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKICAg
ICAgICAgICAgICAgIHNwYW5MaXN0ID0gdGVzdEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
InNwYW4iKQogICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNwYW5MaXN0Lmxlbmd0aDsg
KytpICkgewogICAgICAgICAgICAgICAgICAgIG5ld1NwYW5FbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAgICAgICAgICAgIG5ld1NwYW5FbGVtZW50Lmlu
bmVyVGV4dCA9CiAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY291bnRl
clZhbHVlRm9yRWxlbWVudEJ5SWQoc3Bhbkxpc3QuaXRlbShpKS5nZXRBdHRyaWJ1dGUoImlkIikp
OwogICAgICAgICAgICAgICAgICAgIGlmIChuZXdTcGFuRWxlbWVudC5pbm5lclRleHQubGVuZ3Ro
KQogICAgICAgICAgICAgICAgICAgICAgICBuZXdTcGFuRWxlbWVudC5pbm5lclRleHQgPSBuZXdT
cGFuRWxlbWVudC5pbm5lclRleHQgKyAiLSAiOwogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUu
YXBwZW5kQ2hpbGQobmV3U3BhbkVsZW1lbnQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgICAgICAgICB9CiAg
ICAgICAgfQogICAgPC9zY3JpcHQ+CjwvaGVhZD48Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQoJ3J1
bigpJywgMCkiPgogICAgPHA+VGhlIGZvbGxvd2luZyB0d28gbGluZXMgc2hvdWxkIGhhdmUgdGhl
IHNhbWUgY29udGVudDo8L3A+CiAgICA8ZGl2IGlkPSJ0ZXN0Ij4KICAgIAk8c3BhbiBpZD0icm9v
dCIgY2xhc3M9InJlc2V0Ij4KCSAgICA8c3BhbiBpZD0iZHVtbXkiPgogICAgICAgICAgICAgICAg
PHNwYW4gaWQ9InJlc2V0MSIgc3R5bGU9ImNvdW50ZXItcmVzZXQ6IGMgMSI+PC9zcGFuPgogICAg
ICAgICAgICAgICAgPHNwYW4gaWQ9ImluYyIgY2xhc3M9ImluY3JlbWVudCI+PC9zcGFuPgogICAg
ICAgICAgICAgICAgPHNwYW4gaWQ9InVzZXIiIGNsYXNzPSJ1c2UiPjwvc3Bhbj4KICAgICAgICAg
ICAgICAgIDxzcGFuIGlkPSJyZXNldDQiIHN0eWxlPSJjb3VudGVyLXJlc2V0OiBjIDQiPjwvc3Bh
bj4KICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJpbmMyIiBjbGFzcz0iaW5jcmVtZW50Ij48L3Nw
YW4+CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgIAkgICAgPHNwYW4gaWQ9ImludGVyZXN0aW5n
IiBjbGFzcz0iaW5jcmVtZW50Ij48L3NwYW4+CiAgICAgICAJPC9zcGFuPgogICAgPC9kaXY+CiAg
ICA8ZGl2IGlkPSJyZWZlcmVuY2UiPjAuMi0gMC4yLSAwLjUtIDEtIDwvZGl2PgogICAgPGhyPgog
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CjwvYm9keT48L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43589</attachid>
            <date>2009-11-20 09:20:45 -0800</date>
            <delta_ts>2009-11-23 16:10:12 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>patchFor31723.patch</filename>
            <type>text/plain</type>
            <size>23439</size>
            <attacher name="Carol Szabo">carol</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTIzNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDktMTEtMjAgIENhcm9sIFN6YWJvICA8Y2Fyb2wuc3phYm9Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENTUyBDb3VudGVyIE5lc3Rpbmcgc3RpbGwgZG9lcyBub3Qgd29yayBhY2NvcmRpbmcgdG8gdGhl
IHNwZWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MTcyMworCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL2NvdW50ZXJzL25lc3RpbmcuaHRtbAorCisg
ICAgICAgICogcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
dW50ZXJOb2RlOjpDb3VudGVyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyTm9kZTo6
Y29tcHV0ZUNvdW50SW5QYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6c2hvd1RyZWVBbmRNYXJr
KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ291bnRlck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvdW50ZXJOb2RlOjphY3RzQXNSZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyTm9k
ZTo6aGFzUmVzZXRUeXBlKToKKyAgICAgICAgTWFkZSBjb25zaXN0ZW50IHVzZSBvZiBpZGVudGlm
aWVyIGluc3RlYWQgb2YgY291bnRlck5hbWUsIHNvIHRoYXQKKyAgICAgICAgdGVybWlub2xvZ3kg
bWF0Y2hlcyBmdW5jdGlvbiBuYW1lcyBpbiBDU1MgZGlyZWN0aXZlQ291bnRlcnMuCisgICAgICAg
IFByb3ZpZGVkIGZvciBkaWZmZXJlbnRpYXRpb24gYmV0d2VlbiB3aGF0IGEgY291bnRlciByZWZl
cmVuY2UncworICAgICAgICB0eXBlIGlzIChyZXNldC9pbmNyZW1lbnQpIGFuZCBob3cgaXQgYWN0
cyAoaW5jcmVtZW50IGNvdW50ZXJzCisgICAgICAgIHRoYXQgYXJlIG5vdCBpbiB0aGUgc2NvcGUg
b2YgYW55IG90aGVyIGNvdW50ZXIgd2l0aCB0aGUgc2FtZQorICAgICAgICBpZGVudGlmaWVyIGFj
dCBhcyByZXNldCB0eXBlIGNvdW50ZXIgcmVmZXJlbmNlcykuCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZFBsYWNlRm9yQ291bnRl
cik6CisgICAgICAgIEZpeGVkIHRoZSBhbGdvcml0aG0gdG8gbWF0Y2ggY29ycmVjdCBzY29waW5n
IHJ1bGVzIGFzIHBlciBDU1MyLjEKKyAgICAgICAgKFdlYkNvcmU6OnBsYW5Db3VudGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Om1ha2VDb3VudGVyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJDb3VudGVyOjpvcmlnaW5hbFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ291bnRl
cjo6ZGVzdHJveUNvdW50ZXJOb2Rlcyk6CisgICAgICAgIE1hZGUgbm9uLWZ1bmN0aW9uYWwgY2hh
bmdlcyB0aGF0IGVuc3VyZSBuYW1pbmcgY29uc2lzdGVuY3kgZm9yIAorICAgICAgICBjb3VudGVy
IGlkZW50aWZpZXJzIGFuZCB0YWtlIGludG8gYWNjb3VudCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVu
CisgICAgICAgIGEgY291bnRlciByZWZlcmVuY2UncyB0eXBlIGFuZCByb2xlICh3aGF0IGl0IGlz
IGFuZCBob3cgaXQgYWN0cykuCisKIDIwMDktMTEtMTggIEdpcmlzaCBSYW1ha3Jpc2huYW4gIDxn
aXJpc2hAZm9yd2FyZGJpYXMuaW4+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21h
bm4uCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTm9kZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlck5vZGUuY3BwCShyZXZpc2lvbiA1MTIyMCkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
OCArMzQsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNvdW50ZXJOb2RlOjpDb3VudGVy
Tm9kZShSZW5kZXJPYmplY3QqIG8sIGJvb2wgaXNSZXNldCwgaW50IHZhbHVlKQotICAgIDogbV9p
c1Jlc2V0KGlzUmVzZXQpCitDb3VudGVyTm9kZTo6Q291bnRlck5vZGUoUmVuZGVyT2JqZWN0KiBv
LCBib29sIGhhc1Jlc2V0VHlwZSwgaW50IHZhbHVlKQorICAgIDogbV9oYXNSZXNldFR5cGUoaGFz
UmVzZXRUeXBlKQogICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAsIG1fY291bnRJblBhcmVudCgw
KQogICAgICwgbV9yZW5kZXJlcihvKQpAQCAtMTAwLDE0ICsxMDAsMTMgQEAgQ291bnRlck5vZGUq
IENvdW50ZXJOb2RlOjpwcmV2aW91c0luUHJlTwogCiBpbnQgQ291bnRlck5vZGU6OmNvbXB1dGVD
b3VudEluUGFyZW50KCkgY29uc3QKIHsKLSAgICBpbnQgaW5jcmVtZW50ID0gbV9pc1Jlc2V0ID8g
MCA6IG1fdmFsdWU7CisgICAgaW50IGluY3JlbWVudCA9IGFjdHNBc1Jlc2V0KCkgPyAwIDogbV92
YWx1ZTsKICAgICBpZiAobV9wcmV2aW91c1NpYmxpbmcpCiAgICAgICAgIHJldHVybiBtX3ByZXZp
b3VzU2libGluZy0+bV9jb3VudEluUGFyZW50ICsgaW5jcmVtZW50OwogICAgIEFTU0VSVChtX3Bh
cmVudC0+bV9maXJzdENoaWxkID09IHRoaXMpOwogICAgIHJldHVybiBtX3BhcmVudC0+bV92YWx1
ZSArIGluY3JlbWVudDsKIH0KIAotCiB2b2lkIENvdW50ZXJOb2RlOjpyZXNldFJlbmRlcmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllcikgY29uc3QKIHsKICAgICBpZiAoIW1fcmVuZGVy
ZXIgfHwgbV9yZW5kZXJlci0+ZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpKQpAQCAtMjE2LDcgKzIx
NSw3IEBAIHN0YXRpYyB2b2lkIHNob3dUcmVlQW5kTWFyayhjb25zdCBDb3VudGUKICAgICAgICAg
Zm9yIChjb25zdCBDb3VudGVyTm9kZSogcGFyZW50ID0gY3VycmVudDsgcGFyZW50ICYmIHBhcmVu
dCAhPSByb290OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudCgpKQogICAgICAgICAgICAgZndyaXRl
KCIgICIsIDEsIDIsIHN0ZGVycik7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXAgJXM6ICVk
ICVkIFA6JXAgUFM6JXAgTlM6JXAgUjolcFxuIiwKLSAgICAgICAgICAgIGN1cnJlbnQsIGN1cnJl
bnQtPmlzUmVzZXQoKSA/ICJyZXNldF9fX18iIDogImluY3JlbWVudCIsIGN1cnJlbnQtPnZhbHVl
KCksCisgICAgICAgICAgICBjdXJyZW50LCBjdXJyZW50LT5hY3RzQXNSZXNldCgpID8gInJlc2V0
X19fXyIgOiAiaW5jcmVtZW50IiwgY3VycmVudC0+dmFsdWUoKSwKICAgICAgICAgICAgIGN1cnJl
bnQtPmNvdW50SW5QYXJlbnQoKSwgY3VycmVudC0+cGFyZW50KCksIGN1cnJlbnQtPnByZXZpb3Vz
U2libGluZygpLAogICAgICAgICAgICAgY3VycmVudC0+bmV4dFNpYmxpbmcoKSwgY3VycmVudC0+
cmVuZGVyZXIoKSk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlck5vZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTm9kZS5oCShyZXZpc2lv
biA1MTIyMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDcgKzQyLDggQEAgY2xhc3MgQ291bnRlck5vZGUgOiBwdWJsaWMgTm9uY29weWFi
bGUgewogcHVibGljOgogICAgIENvdW50ZXJOb2RlKFJlbmRlck9iamVjdCosIGJvb2wgaXNSZXNl
dCwgaW50IHZhbHVlKTsKIAotICAgIGJvb2wgaXNSZXNldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNS
ZXNldDsgfQorICAgIGJvb2wgYWN0c0FzUmVzZXQoKSBjb25zdCB7IHJldHVybiBtX2hhc1Jlc2V0
VHlwZSB8fCAhbV9wYXJlbnQ7IH0KKyAgICBib29sIGhhc1Jlc2V0VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzUmVzZXRUeXBlOyB9CiAgICAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZTsgfQogICAgIGludCBjb3VudEluUGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudElu
UGFyZW50OyB9CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVuZGVyZXI7IH0KQEAgLTU4LDE1ICs1OSwyNCBAQCBwdWJsaWM6CiAgICAgQ291bnRlck5vZGUq
IG5leHRJblByZU9yZGVyQWZ0ZXJDaGlsZHJlbihjb25zdCBDb3VudGVyTm9kZSogc3RheVdpdGhp
biA9IDApIGNvbnN0OwogCiAgICAgdm9pZCBpbnNlcnRBZnRlcihDb3VudGVyTm9kZSogbmV3Q2hp
bGQsIENvdW50ZXJOb2RlKiBiZWZvcmVDaGlsZCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlm
aWVyKTsKKworICAgIC8vIGlkZW50aWZpZXIgbXVzdCBtYXRjaCB0aGUgaWRlbnRpZmllciBvZiB0
aGlzIGNvdW50ZXIuCiAgICAgdm9pZCByZW1vdmVDaGlsZChDb3VudGVyTm9kZSosIGNvbnN0IEF0
b21pY1N0cmluZyYgaWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgaW50IGNvbXB1dGVDb3Vu
dEluUGFyZW50KCkgY29uc3Q7CiAgICAgdm9pZCByZWNvdW50KGNvbnN0IEF0b21pY1N0cmluZyYg
aWRlbnRpZmllcik7CisKKyAgICAvLyBJbnZhbGlkYXRlcyB0aGUgdGV4dCBpbiB0aGUgcmVuZGVy
ZXIgb2YgdGhpcyBjb3VudGVyLCBpZiBhbnkuCisgICAgLy8gaWRlbnRpZmllciBtdXN0IG1hdGNo
IHRoZSBpZGVudGlmaWVyIG9mIHRoaXMgY291bnRlci4KICAgICB2b2lkIHJlc2V0UmVuZGVyZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdDsKKworICAgIC8vIEludmFsaWRh
dGVzIHRoZSB0ZXh0IGluIHRoZSByZW5kZXJlciBvZiB0aGlzIGNvdW50ZXIsIGlmIGFueSwKKyAg
ICAvLyBhbmQgaW4gdGhlIHJlbmRlcmVycyBvZiBhbGwgZGVzY2VuZGFudHMgb2YgdGhpcyBjb3Vu
dGVyLCBpZiBhbnkuCisgICAgLy8gaWRlbnRpZmllciBtdXN0IG1hdGNoIHRoZSBpZGVudGlmaWVy
IG9mIHRoaXMgY291bnRlci4KICAgICB2b2lkIHJlc2V0UmVuZGVyZXJzKGNvbnN0IEF0b21pY1N0
cmluZyYgaWRlbnRpZmllcikgY29uc3Q7CiAKLSAgICBib29sIG1faXNSZXNldDsKKyAgICBib29s
IG1faGFzUmVzZXRUeXBlOwogICAgIGludCBtX3ZhbHVlOwogICAgIGludCBtX2NvdW50SW5QYXJl
bnQ7CiAgICAgUmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyOwpJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQ291bnRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ291bnRlci5jcHAJKHJldmlzaW9uIDUxMjIwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ291bnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8QXRvbWljU3RyaW5nSW1w
bD4sIENvdW50ZXJOb2RlKj4gQ291bnRlck1hcDsKIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5k
ZXJPYmplY3QqLCBDb3VudGVyTWFwKj4gQ291bnRlck1hcHM7CiAKLXN0YXRpYyBDb3VudGVyTm9k
ZSogbWFrZUNvdW50ZXJOb2RlKFJlbmRlck9iamVjdCosIGNvbnN0IEF0b21pY1N0cmluZyYgY291
bnRlck5hbWUsIGJvb2wgYWx3YXlzQ3JlYXRlQ291bnRlcik7CitzdGF0aWMgQ291bnRlck5vZGUq
IG1ha2VDb3VudGVyTm9kZShSZW5kZXJPYmplY3QqLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50
aWZpZXIsIGJvb2wgYWx3YXlzQ3JlYXRlQ291bnRlcik7CiAKIHN0YXRpYyBDb3VudGVyTWFwcyYg
Y291bnRlck1hcHMoKQogewpAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlck9i
amVjdCogcHJldmlvdXNTaWJsCiAgICAgcmV0dXJuIG9iamVjdC0+cGFyZW50KCk7CiB9CiAKLXN0
YXRpYyBib29sIHBsYW5Db3VudGVyKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBBdG9taWNT
dHJpbmcmIGNvdW50ZXJOYW1lLCBib29sJiBpc1Jlc2V0LCBpbnQmIHZhbHVlKQorc3RhdGljIGJv
b2wgcGxhbkNvdW50ZXIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IEF0b21pY1N0cmluZyYg
aWRlbnRpZmllciwgYm9vbCYgaXNSZXNldCwgaW50JiB2YWx1ZSkKIHsKICAgICBBU1NFUlQob2Jq
ZWN0KTsKIApAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgYm9vbCBwbGFuQ291bnRlcihSZW5kZXJP
YmplY3QqIG9iCiAgICAgQVNTRVJUKHN0eWxlKTsKIAogICAgIGlmIChjb25zdCBDb3VudGVyRGly
ZWN0aXZlTWFwKiBkaXJlY3RpdmVzTWFwID0gc3R5bGUtPmNvdW50ZXJEaXJlY3RpdmVzKCkpIHsK
LSAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMgZGlyZWN0aXZlcyA9IGRpcmVjdGl2ZXNNYXAtPmdl
dChjb3VudGVyTmFtZS5pbXBsKCkpOworICAgICAgICBDb3VudGVyRGlyZWN0aXZlcyBkaXJlY3Rp
dmVzID0gZGlyZWN0aXZlc01hcC0+Z2V0KGlkZW50aWZpZXIuaW1wbCgpKTsKICAgICAgICAgaWYg
KGRpcmVjdGl2ZXMubV9yZXNldCkgewogICAgICAgICAgICAgdmFsdWUgPSBkaXJlY3RpdmVzLm1f
cmVzZXRWYWx1ZTsKICAgICAgICAgICAgIGlmIChkaXJlY3RpdmVzLm1faW5jcmVtZW50KQpAQCAt
ODEsNyArODEsNyBAQCBzdGF0aWMgYm9vbCBwbGFuQ291bnRlcihSZW5kZXJPYmplY3QqIG9iCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoY291bnRlck5hbWUgPT0gImxpc3QtaXRlbSIpIHsK
KyAgICBpZiAoaWRlbnRpZmllciA9PSAibGlzdC1pdGVtIikgewogICAgICAgICBpZiAob2JqZWN0
LT5pc0xpc3RJdGVtKCkpIHsKICAgICAgICAgICAgIGlmICh0b1JlbmRlckxpc3RJdGVtKG9iamVj
dCktPmhhc0V4cGxpY2l0VmFsdWUoKSkgewogICAgICAgICAgICAgICAgIHZhbHVlID0gdG9SZW5k
ZXJMaXN0SXRlbShvYmplY3QpLT5leHBsaWNpdFZhbHVlKCk7CkBAIC0xMDksODMgKzEwOSwxNDIg
QEAgc3RhdGljIGJvb2wgcGxhbkNvdW50ZXIoUmVuZGVyT2JqZWN0KiBvYgogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotc3RhdGljIGJvb2wgZmluZFBsYWNlRm9yQ291bnRlcihSZW5kZXJPYmplY3Qq
IG9iamVjdCwgY29uc3QgQXRvbWljU3RyaW5nJiBjb3VudGVyTmFtZSwKLSAgICBib29sIGlzUmVz
ZXQsIENvdW50ZXJOb2RlKiYgcGFyZW50LCBDb3VudGVyTm9kZSomIHByZXZpb3VzU2libGluZykK
LXsKLSAgICAvLyBGaW5kIHRoZSBhcHByb3ByaWF0ZSBwcmV2aW91cyBzaWJsaW5nIGZvciBpbnNl
cnRpb24gaW50byB0aGUgcGFyZW50IG5vZGUKLSAgICAvLyBieSBzZWFyY2hpbmcgaW4gcmVuZGVy
IHRyZWUgb3JkZXIgZm9yIGEgY2hpbGQgb2YgdGhlIGNvdW50ZXIuCi0gICAgcGFyZW50ID0gMDsK
Ky8vIC0gRmluZHMgdGhlIGluc2VydGlvbiBwb2ludCBmb3IgdGhlIGNvdW50ZXIgZGVzY3JpYmVk
IGJ5IGNvdW50ZXJPd25lciwgaXNSZXNldCBhbmQgCisvLyBpZGVudGlmaWVyIGluIHRoZSBDb3Vu
dGVyTm9kZSB0cmVlIGZvciBpZGVudGlmaWVyIGFuZCBzZXRzIHBhcmVudCBhbmQKKy8vIHByZXZp
b3VzU2libGluZyBhY2NvcmRpbmdseS4KKy8vIC0gVGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBp
ZiB0aGUgY291bnRlciB3aG9zZSBpbnNlcnRpb24gcG9pbnQgaXMgc2VhcmNoZWQgaXMgTk9UCisv
LyB0aGUgcm9vdCBvZiB0aGUgdHJlZS4KKy8vIC0gVGhlIHJvb3Qgb2YgdGhlIHRyZWUgaXMgYSBj
b3VudGVyIHJlZmVyZW5jZSB0aGF0IGlzIG5vdCBpbiB0aGUgc2NvcGUgb2YgYW55IG90aGVyCisv
LyBjb3VudGVyIHdpdGggdGhlIHNhbWUgaWRlbnRpZmllci4KKy8vIC0gQWxsIHRoZSBjb3VudGVy
IHJlZmVyZW5jZXMgd2l0aCB0aGUgc2FtZSBpZGVudGlmaWVyIGFzIHRoaXMgb25lIHRoYXQgYXJl
IGluCisvLyBjaGlsZHJlbiBvciBzdWJzZXF1ZW50IHNpYmxpbmdzIG9mIHRoZSByZW5kZXJlciB0
aGF0IG93bnMgdGhlIHJvb3Qgb2YgdGhlIHRyZWUKKy8vIGZvcm0gdGhlIHJlc3Qgb2Ygb2YgdGhl
IG5vZGVzIG9mIHRoZSB0cmVlLgorLy8gLSBUaGUgcm9vdCBvZiB0aGUgdHJlZSBpcyBhbHdheXMg
YSByZXNldCB0eXBlIHJlZmVyZW5jZS4KKy8vIC0gQSBzdWJ0cmVlIHJvb3RlZCBhdCBhbnkgcmVz
ZXQgbm9kZSBpbiB0aGUgdHJlZSBpcyBlcXVpdmFsZW50IHRvIGFsbCBjb3VudGVyIAorLy8gcmVm
ZXJlbmNlcyB0aGF0IGFyZSBpbiB0aGUgc2NvcGUgb2YgdGhlIGNvdW50ZXIgb3IgbmVzdGVkIGNv
dW50ZXIgZGVmaW5lZCBieSB0aGF0CisvLyByZXNldCBub2RlLgorLy8gLSBOb24tcmVzZXQgQ291
bnRlck5vZGVzIGNhbm5vdCBoYXZlIGRlc2NlbmRhbnRzLgorCitzdGF0aWMgYm9vbCBmaW5kUGxh
Y2VGb3JDb3VudGVyKFJlbmRlck9iamVjdCogY291bnRlck93bmVyLCBjb25zdCBBdG9taWNTdHJp
bmcmIGlkZW50aWZpZXIsIGJvb2wgaXNSZXNldCwgQ291bnRlck5vZGUqJiBwYXJlbnQsIENvdW50
ZXJOb2RlKiYgcHJldmlvdXNTaWJsaW5nKQoreworICAgIC8vIFdlIGNhbm5vdCBzdG9wIHNlYXJj
aGluZyBmb3IgY291bnRlcnMgd2l0aCB0aGUgc2FtZSBpZGVudGlmaWVyIGJlZm9yZSB3ZSBhbHNv
CisgICAgLy8gY2hlY2sgdGhpcyByZW5kZXJlciwgYmVjYXVzZSBpdCBtYXkgYWZmZWN0IHRoZSBw
b3NpdGlvbmluZyBpbiB0aGUgdHJlZSBvZiBvdXIgY291bnRlci4KKyAgICBSZW5kZXJPYmplY3Qq
IHNlYXJjaEVuZFJlbmRlcmVyID0gcHJldmlvdXNTaWJsaW5nT3JQYXJlbnQoY291bnRlck93bmVy
KTsKKyAgICAvLyBXZSBjaGVjayByZW5kZXJlcnMgaW4gcHJlT3JkZXIgZnJvbSB0aGUgcmVuZGVy
ZXIgdGhhdCBvdXIgY291bnRlciBpcyBhdHRhY2hlZCB0bworICAgIC8vIHRvd2FyZHMgdGhlIGJl
Z2luaW5nIG9mIHRoZSBkb2N1bWVudCBmb3IgY291bnRlcnMgd2l0aCB0aGUgc2FtZSBpZGVudGlm
aWVyIGFzIHRoZSBvbmUKKyAgICAvLyB3ZSBhcmUgdHJ5aW5nIHRvIGZpbmQgYSBwbGFjZSBmb3Iu
IFRoaXMgaXMgdGhlIG5leHQgcmVuZGVyZXIgdG8gYmUgY2hlY2tlZC4KKyAgICBSZW5kZXJPYmpl
Y3QqIGN1cnJlbnRSZW5kZXJlciA9IGNvdW50ZXJPd25lci0+cHJldmlvdXNJblByZU9yZGVyKCk7
CiAgICAgcHJldmlvdXNTaWJsaW5nID0gMDsKLSAgICBSZW5kZXJPYmplY3QqIHJlc2V0Q2FuZGlk
YXRlID0gaXNSZXNldCA/IG9iamVjdC0+cGFyZW50KCkgOiBwcmV2aW91c1NpYmxpbmdPclBhcmVu
dChvYmplY3QpOwotICAgIFJlbmRlck9iamVjdCogcHJldkNvdW50ZXJDYW5kaWRhdGUgPSBvYmpl
Y3Q7Ci0gICAgQ291bnRlck5vZGUqIGNhbmRpZGF0ZUNvdW50ZXIgPSAwOwotICAgIC8vIFdoZW4g
YSByZXNldCBjb3VudGVyIGlzIGNob3NlbiBhcyBjYW5kaWRhdGVDb3VudGVyLCB3ZSdsbAotICAg
IC8vIGRlY2lkZSB0aGUgbmV3IG5vZGUgc2hvdWxkIGJlIGEgY2hpbGQgb2YgdGhlIHJlc2V0IG5v
ZGUgb3IgYQotICAgIC8vIHNpYmxpbmcgb3IgdGhlIHJlc2V0IG5vZGUuIFRoaXMgZmxhZyBjb250
cm9scyBpdC4KLSAgICBib29sIGNyZWF0ZUNoaWxkRm9yUmVzZXQgPSB0cnVlOwotICAgIHdoaWxl
ICgocHJldkNvdW50ZXJDYW5kaWRhdGUgPSBwcmV2Q291bnRlckNhbmRpZGF0ZS0+cHJldmlvdXNJ
blByZU9yZGVyKCkpKSB7Ci0gICAgICAgIENvdW50ZXJOb2RlKiBjID0gbWFrZUNvdW50ZXJOb2Rl
KHByZXZDb3VudGVyQ2FuZGlkYXRlLCBjb3VudGVyTmFtZSwgZmFsc2UpOwotICAgICAgICBpZiAo
cHJldkNvdW50ZXJDYW5kaWRhdGUgPT0gcmVzZXRDYW5kaWRhdGUpIHsKLSAgICAgICAgICAgIGlm
ICghY2FuZGlkYXRlQ291bnRlcikgewotICAgICAgICAgICAgICAgIGNhbmRpZGF0ZUNvdW50ZXIg
PSBjOwotICAgICAgICAgICAgICAgIGNyZWF0ZUNoaWxkRm9yUmVzZXQgPSB0cnVlOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZUNvdW50ZXIpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoY3JlYXRlQ2hpbGRGb3JSZXNldCAmJiBjYW5kaWRhdGVDb3VudGVyLT5pc1Jlc2V0
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gY2FuZGlkYXRlQ291bnRlcjsKLSAg
ICAgICAgICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nID0gMDsKLSAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBjYW5kaWRhdGVDb3VudGVyLT5w
YXJlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nID0gY2FuZGlkYXRl
Q291bnRlcjsKKyAgICB3aGlsZSAoY3VycmVudFJlbmRlcmVyKSB7CisgICAgICAgIENvdW50ZXJO
b2RlKiBjdXJyZW50Q291bnRlciA9IG1ha2VDb3VudGVyTm9kZShjdXJyZW50UmVuZGVyZXIsIGlk
ZW50aWZpZXIsIGZhbHNlKTsKKyAgICAgICAgaWYgKHNlYXJjaEVuZFJlbmRlcmVyID09IGN1cnJl
bnRSZW5kZXJlcikgeworICAgICAgICAgICAgLy8gV2UgbWF5IGJlIGF0IHRoZSBlbmQgb2Ygb3Vy
IHNlYXJjaC4KKyAgICAgICAgICAgIGlmIChjdXJyZW50Q291bnRlcikgeworICAgICAgICAgICAg
ICAgIC8vIFdlIGhhdmUgYSBzdWl0YWJsZSBjb3VudGVyIG9uIHRoZSBFbmRTZWFyY2hSZW5kZXJl
ci4KKyAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNTaWJsaW5nKSB7IC8vIEJ1dCB3ZSBhbHJl
YWR5IGZvdW5kIGFub3RoZXIgY291bnRlciB0aGF0IHdlIGNvbWUgYWZ0ZXIuCisgICAgICAgICAg
ICAgICAgICAgIGlmIChjdXJyZW50Q291bnRlci0+YWN0c0FzUmVzZXQoKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gV2UgZm91bmQgYSByZXNldCBjb3VudGVyIHRoYXQgaXMgb24gYSBy
ZW5kZXJlciB0aGF0IGlzIGEgc2libGluZyBvZiBvdXJzIG9yIGEgcGFyZW50LgorICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGlzUmVzZXQgJiYgKGN1cnJlbnRSZW5kZXJlci0+cGFyZW50KCkg
PT0gY291bnRlck93bmVyLT5wYXJlbnQoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBXZSBhcmUgYWxzbyBhIHJlc2V0IGNvdW50ZXIgYW5kIHRoZSBwcmV2aW91cyByZXNldCB3
YXMgb24gYSBzaWJsaW5nIHJlbmRlcmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aGVuY2Ugd2UgYXJlIHRoZSBuZXh0IHNpYmxpbmcgb2YgdGhhdCBjb3VudGVyIGlmIHRoYXQgcmVz
ZXQgaXMgbm90IGEgcm9vdCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGFy
ZSBhIHJvb3Qgbm9kZSBpZiB0aGF0IHJlc2V0IGlzIGEgcm9vdC4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJlbnQgPSBjdXJyZW50Q291bnRlci0+cGFyZW50KCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nID0gcGFyZW50ID8gY3VycmVudENvdW50
ZXIgOiAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUg
bm90IGEgcmVzZXQgbm9kZSBvciB0aGUgcHJldmlvdXMgcmVzZXQgbXVzdCBiZSBvbiBhbiBhbmNl
c3RvciBvZiBvdXIgcmVuZGVyZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhlbmNlIHdl
IG11c3QgYmUgYSBjaGlsZCBvZiB0aGF0IHJlc2V0IGNvdW50ZXIuCisgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJlbnQgPSBjdXJyZW50Q291bnRlcjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChwcmV2aW91c1NpYmxpbmctPnBhcmVudCgpID09IGN1cnJlbnRDb3VudGVyKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRDb3VudGVyLCB0aGUgY291bnRlciBhdCB0
aGUgRW5kU2VhcmNoUmVuZGVyZXIgaXMgbm90IHJlc2V0LgorICAgICAgICAgICAgICAgICAgICBp
ZiAoIWlzUmVzZXQgfHwgKGN1cnJlbnRSZW5kZXJlci0+cGFyZW50KCkgIT0gY291bnRlck93bmVy
LT5wYXJlbnQoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBub2RlIHdl
IGFyZSBwbGFjaW5nIGlzIG5vdCByZXNldCBvciB3ZSBoYXZlIGZvdW5kIGEgY291bnRlciB0aGF0
IGlzIGF0dGFjaGVkCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBhbiBhbmNlc3RvciBv
ZiB0aGUgcGxhY2VkIGNvdW50ZXIncyByZW5kZXJlciB3ZSBrbm93IHdlIGFyZSBhIHNpYmxpbmcg
b2YgdGhhdCBub2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGN1cnJlbnRDb3Vu
dGVyLT5wYXJlbnQoKSA9PSBwcmV2aW91c1NpYmxpbmctPnBhcmVudCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmVudCA9IGN1cnJlbnRDb3VudGVyLT5wYXJlbnQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsgCisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBhdCB0
aGUgcG90ZW50aWFsIGVuZCBvZiB0aGUgc2VhcmNoLCBidXQgd2UgaGFkIG5vIHByZXZpb3VzIHNp
YmxpbmcgY2FuZGlkYXRlCisgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBm
b2xsb3cgcHJldHR5IG11Y2ggdGhlIHNhbWUgbG9naWMgYXMgYWJvdmUgYnV0IG5vIEFTU0VSVHMg
YWJvdXQgCisgICAgICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzU2libGluZywgYW5kIHdoZW4g
d2UgYXJlIGEgc2libGluZyBvZiB0aGUgZW5kIGNvdW50ZXIgd2UgbXVzdCBzZXQgcHJldmlvdXNT
aWJsaW5nCisgICAgICAgICAgICAgICAgICAgIC8vIHRvIGN1cnJlbnRDb3VudGVyLgorICAgICAg
ICAgICAgICAgICAgICBpZiAoY3VycmVudENvdW50ZXItPmFjdHNBc1Jlc2V0KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChpc1Jlc2V0ICYmIGN1cnJlbnRSZW5kZXJlci0+cGFyZW50
KCkgPT0gY291bnRlck93bmVyLT5wYXJlbnQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmVudCA9IGN1cnJlbnRDb3VudGVyLT5wYXJlbnQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcmV2aW91c1NpYmxpbmcgPSBjdXJyZW50Q291bnRlcjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50OworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gY3VycmVudENvdW50ZXI7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUmVzZXQgfHwgY3VycmVudFJlbmRlcmVyLT5wYXJl
bnQoKSAhPSBjb3VudGVyT3duZXItPnBhcmVudCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwYXJlbnQgPSBjdXJyZW50Q291bnRlci0+cGFyZW50KCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBwcmV2aW91c1NpYmxpbmcgPSBjdXJyZW50Q291bnRlcjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIHByZXZpb3VzU2libGluZyA9IGN1cnJlbnRDb3VudGVyOwogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHJlc2V0Q2FuZGlkYXRlID0gcHJldmlvdXNTaWJsaW5nT3JQYXJlbnQocmVzZXRDYW5kaWRh
dGUpOwotICAgICAgICB9IGVsc2UgaWYgKGMpIHsKLSAgICAgICAgICAgIGlmIChjLT5pc1Jlc2V0
KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYy0+cGFyZW50KCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgLy8gVGhlIG5ldyBub2RlIG1heSBiZSB0aGUgbmV4dCBzaWJsaW5nIG9mIHRoaXMgcmVz
ZXQgbm9kZS4KLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ2hpbGRGb3JSZXNldCA9IGZhbHNl
OwotICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVDb3VudGVyID0gYzsKLSAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjcmVhdGVDaGlsZEZvclJlc2V0ID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlQ291bnRlciA9IDA7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIGlmICghY2FuZGlkYXRlQ291bnRlcikgewot
ICAgICAgICAgICAgICAgIGNyZWF0ZUNoaWxkRm9yUmVzZXQgPSB0cnVlOwotICAgICAgICAgICAg
ICAgIGNhbmRpZGF0ZUNvdW50ZXIgPSBjOworICAgICAgICAgICAgLy8gV2UgY29tZSBoZXJlIGlm
IHRoZSBwcmV2aW91cyBzaWJsaW5nIG9yIHBhcmVudCBvZiBvdXIgcmVuZGVyZXIgaGFkIG5vIAor
ICAgICAgICAgICAgLy8gZ29vZCBjb3VudGVyLCBvciB3ZSBhcmUgYSByZXNldCBub2RlIGFuZCB0
aGUgY291bnRlciBvbiB0aGUgcHJldmlvdXMgc2libGluZworICAgICAgICAgICAgLy8gb2Ygb3Vy
IHJlbmRlcmVyIHdhcyBub3QgYSByZXNldCBjb3VudGVyLgorICAgICAgICAgICAgLy8gU2V0IGEg
bmV3IGdvYWwgZm9yIHRoZSBlbmQgb2YgdGhlIHNlYXJjaC4KKyAgICAgICAgICAgIHNlYXJjaEVu
ZFJlbmRlcmVyID0gcHJldmlvdXNTaWJsaW5nT3JQYXJlbnQoY3VycmVudFJlbmRlcmVyKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFdlIGFyZSBzZWFyY2hpbmcgZGVzY2VuZGFu
dHMgb2YgYSBwcmV2aW91cyBzaWJsaW5nIG9mIHRoZSByZW5kZXJlciB0aGF0IHRoZQorICAgICAg
ICAgICAgLy8gY291bnRlciBiZWluZyBwbGFjZWQgaXMgYXR0YWNoZWQgdG8uCisgICAgICAgICAg
ICBpZiAoY3VycmVudENvdW50ZXIpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBmb3VuZCBhIHN1
aXRhYmxlIGNvdW50ZXIuCisgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzU2libGluZykgewor
ICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBoYWQgYSBzdWl0YWJsZSBwcmV2aW91cyBj
b3VudGVyIGJlZm9yZSwgd2Ugc2hvdWxkIG9ubHkgY29uc2lkZXIgdGhpcyBvbmUgYXMgb3VyIAor
ICAgICAgICAgICAgICAgICAgICAvLyBwcmV2aW91c1NpYmxpbmcgaWYgaXQgaXMgYSByZXNldCBj
b3VudGVyIGFuZCBoZW5jZSB0aGUgY3VycmVudCBwcmV2aW91c1NpYmxpbmcgaXMgaXRzIGNoaWxk
LgorICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudENvdW50ZXItPmFjdHNBc1Jlc2V0KCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzU2libGluZyA9IGN1cnJlbnRDb3Vu
dGVyOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIG5vIGxvbmdlciBpbnRlcmVz
dGVkIGluIHByZXZpb3VzIHNpYmxpbmdzIG9mIHRoZSBjdXJyZW50UmVuZGVyZXIgb3IgdGhlaXIg
Y2hpbGRyZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIGNvdW50ZXJzIHRoZXkgbWF5
IGhhdmUgYXR0YWNoZWQgY2Fubm90IGJlIHRoZSBwcmV2aW91cyBzaWJsaW5nIG9mIHRoZSBjb3Vu
dGVyIHdlIGFyZSBwbGFjaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVuZGVy
ZXIgPSBjdXJyZW50UmVuZGVyZXItPnBhcmVudCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nID0gY3VycmVudENvdW50ZXI7Cisg
ICAgICAgICAgICAgICAgY3VycmVudFJlbmRlcmVyID0gcHJldmlvdXNTaWJsaW5nT3JQYXJlbnQo
Y3VycmVudFJlbmRlcmVyKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQorICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHNvIHRo
YXQgdGhlIHNhbWUgdGVzdCBpcyBub3QgZG9uZSB0d2ljZSBpbiBhbiBpdGVyYXRpb24sIGV4Y2Vw
dCBmb3IgdGhpcyBvbmUKKyAgICAgICAgLy8gd2hpY2ggbWF5IGJlIGRvbmUgdHdpY2UgaW4gc29t
ZSBjYXNlcy4gUmVhcnJhbmdpbmcgdGhlIGRlY2lzaW9uIHBvaW50cyB0aG91Z2gsIHRvIGFjY29t
bW9kYXRlIHRoaXMgCisgICAgICAgIC8vIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IHdvdWxkIGNy
ZWF0ZSBtb3JlIGNvZGUgZHVwbGljYXRpb24gdGhhbiBpcyB3b3J0aHdoaWxlIGluIG15IG9wcGlu
aW9uIGFuZCBtYXkgZnVydGhlcgorICAgICAgICAvLyBpbXBlZGUgdGhlIHJlYWRhYmlsaXR5IG9m
IHRoaXMgYWxyZWFkeSBjb21wbGV4IGFsZ29yaXRobS4KKyAgICAgICAgaWYgKHByZXZpb3VzU2li
bGluZykKKyAgICAgICAgICAgIGN1cnJlbnRSZW5kZXJlciA9IHByZXZpb3VzU2libGluZ09yUGFy
ZW50KGN1cnJlbnRSZW5kZXJlcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGN1cnJlbnRS
ZW5kZXJlciA9IGN1cnJlbnRSZW5kZXJlci0+cHJldmlvdXNJblByZU9yZGVyKCk7CiAgICAgfQot
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgQ291bnRlck5vZGUqIG1ha2VDb3VudGVy
Tm9kZShSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgQXRvbWljU3RyaW5nJiBjb3VudGVyTmFt
ZSwgYm9vbCBhbHdheXNDcmVhdGVDb3VudGVyKQorc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291
bnRlck5vZGUoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRp
ZmllciwgYm9vbCBhbHdheXNDcmVhdGVDb3VudGVyKQogewogICAgIEFTU0VSVChvYmplY3QpOwog
CiAgICAgaWYgKG9iamVjdC0+bV9oYXNDb3VudGVyTm9kZU1hcCkKICAgICAgICAgaWYgKENvdW50
ZXJNYXAqIG5vZGVNYXAgPSBjb3VudGVyTWFwcygpLmdldChvYmplY3QpKQotICAgICAgICAgICAg
aWYgKENvdW50ZXJOb2RlKiBub2RlID0gbm9kZU1hcC0+Z2V0KGNvdW50ZXJOYW1lLmltcGwoKSkp
CisgICAgICAgICAgICBpZiAoQ291bnRlck5vZGUqIG5vZGUgPSBub2RlTWFwLT5nZXQoaWRlbnRp
Zmllci5pbXBsKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBub2RlOwogCiAgICAgYm9vbCBp
c1Jlc2V0ID0gZmFsc2U7CiAgICAgaW50IHZhbHVlID0gMDsKLSAgICBpZiAoIXBsYW5Db3VudGVy
KG9iamVjdCwgY291bnRlck5hbWUsIGlzUmVzZXQsIHZhbHVlKSAmJiAhYWx3YXlzQ3JlYXRlQ291
bnRlcikKKyAgICBpZiAoIXBsYW5Db3VudGVyKG9iamVjdCwgaWRlbnRpZmllciwgaXNSZXNldCwg
dmFsdWUpICYmICFhbHdheXNDcmVhdGVDb3VudGVyKQogICAgICAgICByZXR1cm4gMDsKIAogICAg
IENvdW50ZXJOb2RlKiBuZXdQYXJlbnQgPSAwOwogICAgIENvdW50ZXJOb2RlKiBuZXdQcmV2aW91
c1NpYmxpbmcgPSAwOwotICAgIENvdW50ZXJOb2RlKiBuZXdOb2RlOwotICAgIGlmIChmaW5kUGxh
Y2VGb3JDb3VudGVyKG9iamVjdCwgY291bnRlck5hbWUsIGlzUmVzZXQsIG5ld1BhcmVudCwgbmV3
UHJldmlvdXNTaWJsaW5nKSkgewotICAgICAgICBuZXdOb2RlID0gbmV3IENvdW50ZXJOb2RlKG9i
amVjdCwgaXNSZXNldCwgdmFsdWUpOwotICAgICAgICBuZXdQYXJlbnQtPmluc2VydEFmdGVyKG5l
d05vZGUsIG5ld1ByZXZpb3VzU2libGluZywgY291bnRlck5hbWUpOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIC8vIE1ha2UgYSByZXNldCBub2RlIGZvciBjb3VudGVycyB0aGF0IGFyZW4ndCBpbnNp
ZGUgYW4gZXhpc3RpbmcgcmVzZXQgbm9kZS4KLSAgICAgICAgbmV3Tm9kZSA9IG5ldyBDb3VudGVy
Tm9kZShvYmplY3QsIHRydWUsIHZhbHVlKTsKLSAgICB9Ci0KKyAgICBDb3VudGVyTm9kZSogbmV3
Tm9kZSA9IG5ldyBDb3VudGVyTm9kZShvYmplY3QsIGlzUmVzZXQsIHZhbHVlKTsKKyAgICBpZiAo
ZmluZFBsYWNlRm9yQ291bnRlcihvYmplY3QsIGlkZW50aWZpZXIsIGlzUmVzZXQsIG5ld1BhcmVu
dCwgbmV3UHJldmlvdXNTaWJsaW5nKSkKKyAgICAgICAgbmV3UGFyZW50LT5pbnNlcnRBZnRlcihu
ZXdOb2RlLCBuZXdQcmV2aW91c1NpYmxpbmcsIGlkZW50aWZpZXIpOwogICAgIENvdW50ZXJNYXAq
IG5vZGVNYXA7CiAgICAgaWYgKG9iamVjdC0+bV9oYXNDb3VudGVyTm9kZU1hcCkKICAgICAgICAg
bm9kZU1hcCA9IGNvdW50ZXJNYXBzKCkuZ2V0KG9iamVjdCk7CkBAIC0xOTQsOCArMjUzLDcgQEAg
c3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRlck5vZGUoUmVuZAogICAgICAgICBjb3VudGVy
TWFwcygpLnNldChvYmplY3QsIG5vZGVNYXApOwogICAgICAgICBvYmplY3QtPm1faGFzQ291bnRl
ck5vZGVNYXAgPSB0cnVlOwogICAgIH0KLSAgICBub2RlTWFwLT5zZXQoY291bnRlck5hbWUuaW1w
bCgpLCBuZXdOb2RlKTsKLQorICAgIG5vZGVNYXAtPnNldChpZGVudGlmaWVyLmltcGwoKSwgbmV3
Tm9kZSk7CiAgICAgcmV0dXJuIG5ld05vZGU7CiB9CiAKQEAgLTIyNSwxMiArMjgzLDEyIEBAIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gUmVuZGVyQ291bnRlcjo6b3IKICAgICAgICAgbV9jb3VudGVy
Tm9kZSA9IG1ha2VDb3VudGVyTm9kZShwYXJlbnQoKSwgbV9jb3VudGVyLmlkZW50aWZpZXIoKSwg
dHJ1ZSk7CiAKICAgICBDb3VudGVyTm9kZSogY2hpbGQgPSBtX2NvdW50ZXJOb2RlOwotICAgIGlu
dCB2YWx1ZSA9IGNoaWxkLT5pc1Jlc2V0KCkgPyBjaGlsZC0+dmFsdWUoKSA6IGNoaWxkLT5jb3Vu
dEluUGFyZW50KCk7CisgICAgaW50IHZhbHVlID0gY2hpbGQtPmFjdHNBc1Jlc2V0KCkgPyBjaGls
ZC0+dmFsdWUoKSA6IGNoaWxkLT5jb3VudEluUGFyZW50KCk7CiAKICAgICBTdHJpbmcgdGV4dCA9
IGxpc3RNYXJrZXJUZXh0KG1fY291bnRlci5saXN0U3R5bGUoKSwgdmFsdWUpOwogCiAgICAgaWYg
KCFtX2NvdW50ZXIuc2VwYXJhdG9yKCkuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKCFjaGlsZC0+
aXNSZXNldCgpKQorICAgICAgICBpZiAoIWNoaWxkLT5hY3RzQXNSZXNldCgpKQogICAgICAgICAg
ICAgY2hpbGQgPSBjaGlsZC0+cGFyZW50KCk7CiAgICAgICAgIHdoaWxlIChDb3VudGVyTm9kZSog
cGFyZW50ID0gY2hpbGQtPnBhcmVudCgpKSB7CiAgICAgICAgICAgICB0ZXh0ID0gbGlzdE1hcmtl
clRleHQobV9jb3VudGVyLmxpc3RTdHlsZSgpLCBjaGlsZC0+Y291bnRJblBhcmVudCgpKQpAQCAt
Mjg5LDcgKzM0Nyw3IEBAIHZvaWQgUmVuZGVyQ291bnRlcjo6ZGVzdHJveUNvdW50ZXJOb2RlcygK
ICAgICAgICAgaWYgKENvdW50ZXJOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnQoKSkKICAgICAg
ICAgICAgIHBhcmVudC0+cmVtb3ZlQ2hpbGQobm9kZSwgaWRlbnRpZmllcik7CiAgICAgICAgIGRl
bGV0ZSBub2RlOwotICAgIH0KK30KIAogICAgIGRlbGV0ZSBtYXA7CiB9CkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA1MTIzNykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE1IEBACisyMDA5LTExLTIwICBDYXJvbCBTemFibyAgPGNhcm9sLnN6YWJvQG5va2lh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
U1MgQ291bnRlciBOZXN0aW5nIHN0aWxsIGRvZXMgbm90IHdvcmsgYWNjb3JkaW5nIHRvIHRoZSBz
cGVjLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3
MjMKKworICAgICAgICAqIGZhc3QvY3NzL2NvdW50ZXJzL25lc3RpbmctZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9jb3VudGVycy9uZXN0aW5nLmh0bWw6IEFkZGVkLgor
ICAgICAgICBBZGRlZCB0aGlzIHRlc3QgdGhhdCBwb2ludHMgb3V0IGEgZmxhdyBpbiB0aGUgZmlu
ZFBsYWNlRm9yQ291bnRlcgorICAgICAgICBhbGdvcml0aG0uCisKIDIwMDktMTEtMjAgIFJvbGFu
ZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9u
ZXN0aW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9j
b3VudGVycy9uZXN0aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY3NzL2NvdW50ZXJzL25lc3RpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDUgQEAKK1RoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIHNob3VsZCBoYXZlIHRoZSBzYW1l
IGNvbnRlbnQ6CisKKyAgIAorMC4yLSAwLjItIDAuNS0gMS0KKzAuMi0gMC4yLSAwLjUtIDEtCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9uZXN0aW5nLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvbmVzdGluZy5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvbmVzdGluZy5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8v
RFREIEhUTUwgNC4wMS8vRU4iPgorPGh0bWw+PGhlYWQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgorICAgIDx0
aXRsZT5DU1MgVGVzdDogZHluYW1pYyBjaGFuZ2VzIHRvICdjb3VudGVyLWluY3JlbWVudCc8L3Rp
dGxlPgorICAgIDxsaW5rIHJlbD0iYXV0aG9yIiBocmVmPSJodHRwOi8vZGJhcm9uLm9yZy8iIHRp
dGxlPSJMLiBEYXZpZCBCYXJvbiI+CisgICAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8v
d3d3LnczLm9yZy9UUi9DU1MyMS9nZW5lcmF0ZS5odG1sI2NvdW50ZXJzIj4KKyAgICA8bGluayBy
ZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL2dlbmVyYXRlLmh0bWwj
cHJvcGRlZi1jb250ZW50Ij4KKyAgICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cu
dzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCNjb3VudGVyIj4KKyAgICA8bWV0YSBjb250ZW50
PSJkb20iIG5hbWU9ImZsYWdzIj4KKyAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVN0eWxl
LVR5cGUiIGNvbnRlbnQ9InRleHQvY3NzIj4KKyAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVNjcmlwdC1UeXBlIiBjb250ZW50PSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIDxzdHlsZSB0eXBl
PSJ0ZXh0L2NzcyI+CisgICAgICAgIGJvZHkgeyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9CisgICAg
ICAgIC5yZXNldCB7IGNvdW50ZXItcmVzZXQ6IGM7IH0KKyAgICAgICAgLmluY3JlbWVudDpiZWZv
cmUsIC51c2U6YmVmb3JlIHsgY29udGVudDogY291bnRlcnMoYywgIi4iKSAiLSI7IH0KKyAgICAg
ICAgLmluY3JlbWVudCB7IGNvdW50ZXItaW5jcmVtZW50OiBjOyB9CisgICAgPC9zdHlsZT4KKyAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJ1bigpIHsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0
RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisgICAgICAgICAgICAg
ICAgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAg
ICAgICAgICAgc3Bhbkxpc3QgPSB0ZXN0RWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic3Bh
biIpCisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNwYW5MaXN0Lmxlbmd0aDsgKytp
ICkgeworICAgICAgICAgICAgICAgICAgICBuZXdTcGFuRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgICAgICAgICAgbmV3U3BhbkVsZW1lbnQuaW5u
ZXJUZXh0ID0KKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY291bnRl
clZhbHVlRm9yRWxlbWVudEJ5SWQoc3Bhbkxpc3QuaXRlbShpKS5nZXRBdHRyaWJ1dGUoImlkIikp
OworICAgICAgICAgICAgICAgICAgICBpZiAobmV3U3BhbkVsZW1lbnQuaW5uZXJUZXh0Lmxlbmd0
aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NwYW5FbGVtZW50LmlubmVyVGV4dCA9IG5l
d1NwYW5FbGVtZW50LmlubmVyVGV4dCArICItICI7CisgICAgICAgICAgICAgICAgICAgIGNvbnNv
bGUuYXBwZW5kQ2hpbGQobmV3U3BhbkVsZW1lbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD48Ym9keSBvbmxvYWQ9InNldFRp
bWVvdXQoJ3J1bigpJywgMCkiPgorICAgIDxwPlRoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIHNob3Vs
ZCBoYXZlIHRoZSBzYW1lIGNvbnRlbnQ6PC9wPgorICAgIDxkaXYgaWQ9InRlc3QiPgorICAgIAk8
c3BhbiBpZD0icm9vdCIgY2xhc3M9InJlc2V0Ij4KKwkgICAgPHNwYW4gaWQ9ImR1bW15Ij4KKyAg
ICAgICAgICAgICAgICA8c3BhbiBpZD0icmVzZXQxIiBzdHlsZT0iY291bnRlci1yZXNldDogYyAx
Ij48L3NwYW4+CisgICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImluYyIgY2xhc3M9ImluY3JlbWVu
dCI+PC9zcGFuPgorICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJ1c2VyIiBjbGFzcz0idXNlIj48
L3NwYW4+CisgICAgICAgICAgICAgICAgPHNwYW4gaWQ9InJlc2V0NCIgc3R5bGU9ImNvdW50ZXIt
cmVzZXQ6IGMgNCI+PC9zcGFuPgorICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJpbmMyIiBjbGFz
cz0iaW5jcmVtZW50Ij48L3NwYW4+CisgICAgICAgICAgICA8L3NwYW4+CisgICAgICAgCSAgICA8
c3BhbiBpZD0iaW50ZXJlc3RpbmciIGNsYXNzPSJpbmNyZW1lbnQiPjwvc3Bhbj4KKyAgICAgICAJ
PC9zcGFuPgorICAgIDwvZGl2PgorICAgIDxkaXYgaWQ9InJlZmVyZW5jZSI+MC4yLSAwLjItIDAu
NS0gMS0gPC9kaXY+CisgICAgPGhyPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9i
b2R5PjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43740</attachid>
            <date>2009-11-23 16:10:12 -0800</date>
            <delta_ts>2009-12-01 14:11:38 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>patchFor31723-2.patch</filename>
            <type>text/plain</type>
            <size>14541</size>
            <attacher name="Carol Szabo">carol</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTMyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMTEtMjMgIENhcm9sIFN6YWJvICA8Y2Fyb2wuc3phYm9Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENTUyBDb3VudGVyIE5lc3Rpbmcgc3RpbGwgZG9lcyBub3Qgd29yayBhY2NvcmRpbmcgdG8gdGhl
IHNwZWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MTcyMworCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL2NvdW50ZXJzL25lc3RpbmcuaHRtbAorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZmluZFBsYWNlRm9yQ291bnRlcik6CisgICAgICAgIFJlcGxhY2VkIHRoZSBmYXVsdHkgY291bnRl
ciBpbnNlcnRpb24gYWxnb3JpdGhtIHdpdGggb25lIHRoYXQgd29ya3MuCisKIDIwMDktMTEtMjMg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3Bw
CShyZXZpc2lvbiA1MTMxMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNTUgKzEwOSwxMjAgQEAgc3RhdGljIGJvb2wgcGxhbkNv
dW50ZXIoUmVuZGVyT2JqZWN0KiBvYgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJv
b2wgZmluZFBsYWNlRm9yQ291bnRlcihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBjb3VudGVyTmFtZSwKLSAgICBib29sIGlzUmVzZXQsIENvdW50ZXJOb2RlKiYgcGFy
ZW50LCBDb3VudGVyTm9kZSomIHByZXZpb3VzU2libGluZykKLXsKLSAgICAvLyBGaW5kIHRoZSBh
cHByb3ByaWF0ZSBwcmV2aW91cyBzaWJsaW5nIGZvciBpbnNlcnRpb24gaW50byB0aGUgcGFyZW50
IG5vZGUKLSAgICAvLyBieSBzZWFyY2hpbmcgaW4gcmVuZGVyIHRyZWUgb3JkZXIgZm9yIGEgY2hp
bGQgb2YgdGhlIGNvdW50ZXIuCi0gICAgcGFyZW50ID0gMDsKKy8vIC0gRmluZHMgdGhlIGluc2Vy
dGlvbiBwb2ludCBmb3IgdGhlIGNvdW50ZXIgZGVzY3JpYmVkIGJ5IGNvdW50ZXJPd25lciwgaXNS
ZXNldCBhbmQgCisvLyBpZGVudGlmaWVyIGluIHRoZSBDb3VudGVyTm9kZSB0cmVlIGZvciBpZGVu
dGlmaWVyIGFuZCBzZXRzIHBhcmVudCBhbmQKKy8vIHByZXZpb3VzU2libGluZyBhY2NvcmRpbmds
eS4KKy8vIC0gVGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiB0aGUgY291bnRlciB3aG9zZSBp
bnNlcnRpb24gcG9pbnQgaXMgc2VhcmNoZWQgaXMgTk9UCisvLyB0aGUgcm9vdCBvZiB0aGUgdHJl
ZS4KKy8vIC0gVGhlIHJvb3Qgb2YgdGhlIHRyZWUgaXMgYSBjb3VudGVyIHJlZmVyZW5jZSB0aGF0
IGlzIG5vdCBpbiB0aGUgc2NvcGUgb2YgYW55IG90aGVyCisvLyBjb3VudGVyIHdpdGggdGhlIHNh
bWUgaWRlbnRpZmllci4KKy8vIC0gQWxsIHRoZSBjb3VudGVyIHJlZmVyZW5jZXMgd2l0aCB0aGUg
c2FtZSBpZGVudGlmaWVyIGFzIHRoaXMgb25lIHRoYXQgYXJlIGluCisvLyBjaGlsZHJlbiBvciBz
dWJzZXF1ZW50IHNpYmxpbmdzIG9mIHRoZSByZW5kZXJlciB0aGF0IG93bnMgdGhlIHJvb3Qgb2Yg
dGhlIHRyZWUKKy8vIGZvcm0gdGhlIHJlc3Qgb2Ygb2YgdGhlIG5vZGVzIG9mIHRoZSB0cmVlLgor
Ly8gLSBUaGUgcm9vdCBvZiB0aGUgdHJlZSBpcyBhbHdheXMgYSByZXNldCB0eXBlIHJlZmVyZW5j
ZS4KKy8vIC0gQSBzdWJ0cmVlIHJvb3RlZCBhdCBhbnkgcmVzZXQgbm9kZSBpbiB0aGUgdHJlZSBp
cyBlcXVpdmFsZW50IHRvIGFsbCBjb3VudGVyIAorLy8gcmVmZXJlbmNlcyB0aGF0IGFyZSBpbiB0
aGUgc2NvcGUgb2YgdGhlIGNvdW50ZXIgb3IgbmVzdGVkIGNvdW50ZXIgZGVmaW5lZCBieSB0aGF0
CisvLyByZXNldCBub2RlLgorLy8gLSBOb24tcmVzZXQgQ291bnRlck5vZGVzIGNhbm5vdCBoYXZl
IGRlc2NlbmRhbnRzLgorCitzdGF0aWMgYm9vbCBmaW5kUGxhY2VGb3JDb3VudGVyKFJlbmRlck9i
amVjdCogY291bnRlck93bmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wg
aXNSZXNldCwgQ291bnRlck5vZGUqJiBwYXJlbnQsIENvdW50ZXJOb2RlKiYgcHJldmlvdXNTaWJs
aW5nKQoreworICAgIC8vIFdlIGNhbm5vdCBzdG9wIHNlYXJjaGluZyBmb3IgY291bnRlcnMgd2l0
aCB0aGUgc2FtZSBpZGVudGlmaWVyIGJlZm9yZSB3ZSBhbHNvCisgICAgLy8gY2hlY2sgdGhpcyBy
ZW5kZXJlciwgYmVjYXVzZSBpdCBtYXkgYWZmZWN0IHRoZSBwb3NpdGlvbmluZyBpbiB0aGUgdHJl
ZSBvZiBvdXIgY291bnRlci4KKyAgICBSZW5kZXJPYmplY3QqIHNlYXJjaEVuZFJlbmRlcmVyID0g
cHJldmlvdXNTaWJsaW5nT3JQYXJlbnQoY291bnRlck93bmVyKTsKKyAgICAvLyBXZSBjaGVjayBy
ZW5kZXJlcnMgaW4gcHJlT3JkZXIgZnJvbSB0aGUgcmVuZGVyZXIgdGhhdCBvdXIgY291bnRlciBp
cyBhdHRhY2hlZCB0bworICAgIC8vIHRvd2FyZHMgdGhlIGJlZ2luaW5nIG9mIHRoZSBkb2N1bWVu
dCBmb3IgY291bnRlcnMgd2l0aCB0aGUgc2FtZSBpZGVudGlmaWVyIGFzIHRoZSBvbmUKKyAgICAv
LyB3ZSBhcmUgdHJ5aW5nIHRvIGZpbmQgYSBwbGFjZSBmb3IuIFRoaXMgaXMgdGhlIG5leHQgcmVu
ZGVyZXIgdG8gYmUgY2hlY2tlZC4KKyAgICBSZW5kZXJPYmplY3QqIGN1cnJlbnRSZW5kZXJlciA9
IGNvdW50ZXJPd25lci0+cHJldmlvdXNJblByZU9yZGVyKCk7CiAgICAgcHJldmlvdXNTaWJsaW5n
ID0gMDsKLSAgICBSZW5kZXJPYmplY3QqIHJlc2V0Q2FuZGlkYXRlID0gaXNSZXNldCA/IG9iamVj
dC0+cGFyZW50KCkgOiBwcmV2aW91c1NpYmxpbmdPclBhcmVudChvYmplY3QpOwotICAgIFJlbmRl
ck9iamVjdCogcHJldkNvdW50ZXJDYW5kaWRhdGUgPSBvYmplY3Q7Ci0gICAgQ291bnRlck5vZGUq
IGNhbmRpZGF0ZUNvdW50ZXIgPSAwOwotICAgIC8vIFdoZW4gYSByZXNldCBjb3VudGVyIGlzIGNo
b3NlbiBhcyBjYW5kaWRhdGVDb3VudGVyLCB3ZSdsbAotICAgIC8vIGRlY2lkZSB0aGUgbmV3IG5v
ZGUgc2hvdWxkIGJlIGEgY2hpbGQgb2YgdGhlIHJlc2V0IG5vZGUgb3IgYQotICAgIC8vIHNpYmxp
bmcgb3IgdGhlIHJlc2V0IG5vZGUuIFRoaXMgZmxhZyBjb250cm9scyBpdC4KLSAgICBib29sIGNy
ZWF0ZUNoaWxkRm9yUmVzZXQgPSB0cnVlOwotICAgIHdoaWxlICgocHJldkNvdW50ZXJDYW5kaWRh
dGUgPSBwcmV2Q291bnRlckNhbmRpZGF0ZS0+cHJldmlvdXNJblByZU9yZGVyKCkpKSB7Ci0gICAg
ICAgIENvdW50ZXJOb2RlKiBjID0gbWFrZUNvdW50ZXJOb2RlKHByZXZDb3VudGVyQ2FuZGlkYXRl
LCBjb3VudGVyTmFtZSwgZmFsc2UpOwotICAgICAgICBpZiAocHJldkNvdW50ZXJDYW5kaWRhdGUg
PT0gcmVzZXRDYW5kaWRhdGUpIHsKLSAgICAgICAgICAgIGlmICghY2FuZGlkYXRlQ291bnRlcikg
ewotICAgICAgICAgICAgICAgIGNhbmRpZGF0ZUNvdW50ZXIgPSBjOwotICAgICAgICAgICAgICAg
IGNyZWF0ZUNoaWxkRm9yUmVzZXQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKGNhbmRpZGF0ZUNvdW50ZXIpIHsKLSAgICAgICAgICAgICAgICBpZiAoY3JlYXRlQ2hpbGRG
b3JSZXNldCAmJiBjYW5kaWRhdGVDb3VudGVyLT5pc1Jlc2V0KCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcGFyZW50ID0gY2FuZGlkYXRlQ291bnRlcjsKLSAgICAgICAgICAgICAgICAgICAgcHJl
dmlvdXNTaWJsaW5nID0gMDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICBwYXJlbnQgPSBjYW5kaWRhdGVDb3VudGVyLT5wYXJlbnQoKTsKLSAgICAgICAgICAg
ICAgICAgICAgcHJldmlvdXNTaWJsaW5nID0gY2FuZGlkYXRlQ291bnRlcjsKKyAgICB3aGlsZSAo
Y3VycmVudFJlbmRlcmVyKSB7CisgICAgICAgIENvdW50ZXJOb2RlKiBjdXJyZW50Q291bnRlciA9
IG1ha2VDb3VudGVyTm9kZShjdXJyZW50UmVuZGVyZXIsIGlkZW50aWZpZXIsIGZhbHNlKTsKKyAg
ICAgICAgaWYgKHNlYXJjaEVuZFJlbmRlcmVyID09IGN1cnJlbnRSZW5kZXJlcikgeworICAgICAg
ICAgICAgLy8gV2UgbWF5IGJlIGF0IHRoZSBlbmQgb2Ygb3VyIHNlYXJjaC4KKyAgICAgICAgICAg
IGlmIChjdXJyZW50Q291bnRlcikgeworICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBzdWl0
YWJsZSBjb3VudGVyIG9uIHRoZSBFbmRTZWFyY2hSZW5kZXJlci4KKyAgICAgICAgICAgICAgICBp
ZiAocHJldmlvdXNTaWJsaW5nKSB7IC8vIEJ1dCB3ZSBhbHJlYWR5IGZvdW5kIGFub3RoZXIgY291
bnRlciB0aGF0IHdlIGNvbWUgYWZ0ZXIuCisgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50
Q291bnRlci0+aXNSZXNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBmb3Vu
ZCBhIHJlc2V0IGNvdW50ZXIgdGhhdCBpcyBvbiBhIHJlbmRlcmVyIHRoYXQgaXMgYSBzaWJsaW5n
IG9mIG91cnMgb3IgYSBwYXJlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNSZXNl
dCAmJiAoY3VycmVudFJlbmRlcmVyLT5wYXJlbnQoKSA9PSBjb3VudGVyT3duZXItPnBhcmVudCgp
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBhbHNvIGEgcmVzZXQg
Y291bnRlciBhbmQgdGhlIHByZXZpb3VzIHJlc2V0IHdhcyBvbiBhIHNpYmxpbmcgcmVuZGVyZXIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoZW5jZSB3ZSBhcmUgdGhlIG5leHQgc2li
bGluZyBvZiB0aGF0IGNvdW50ZXIgaWYgdGhhdCByZXNldCBpcyBub3QgYSByb290IG9yCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgYXJlIGEgcm9vdCBub2RlIGlmIHRoYXQgcmVz
ZXQgaXMgYSByb290LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGN1cnJl
bnRDb3VudGVyLT5wYXJlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91
c1NpYmxpbmcgPSBwYXJlbnQgPyBjdXJyZW50Q291bnRlciA6IDA7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHBhcmVudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBub3QgYSByZXNldCBub2RlIG9yIHRoZSBw
cmV2aW91cyByZXNldCBtdXN0IGJlIG9uIGFuIGFuY2VzdG9yIG9mIG91ciByZW5kZXJlcgorICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gaGVuY2Ugd2UgbXVzdCBiZSBhIGNoaWxkIG9mIHRoYXQg
cmVzZXQgY291bnRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGN1cnJlbnRD
b3VudGVyOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHByZXZpb3VzU2libGluZy0+
cGFyZW50KCkgPT0gY3VycmVudENvdW50ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy8g
Q3VycmVudENvdW50ZXIsIHRoZSBjb3VudGVyIGF0IHRoZSBFbmRTZWFyY2hSZW5kZXJlciBpcyBu
b3QgcmVzZXQuCisgICAgICAgICAgICAgICAgICAgIGlmICghaXNSZXNldCB8fCAoY3VycmVudFJl
bmRlcmVyLT5wYXJlbnQoKSAhPSBjb3VudGVyT3duZXItPnBhcmVudCgpKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gSWYgdGhlIG5vZGUgd2UgYXJlIHBsYWNpbmcgaXMgbm90IHJlc2V0
IG9yIHdlIGhhdmUgZm91bmQgYSBjb3VudGVyIHRoYXQgaXMgYXR0YWNoZWQKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHRvIGFuIGFuY2VzdG9yIG9mIHRoZSBwbGFjZWQgY291bnRlcidzIHJl
bmRlcmVyIHdlIGtub3cgd2UgYXJlIGEgc2libGluZyBvZiB0aGF0IG5vZGUuCisgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoY3VycmVudENvdW50ZXItPnBhcmVudCgpID09IHByZXZpb3Vz
U2libGluZy0+cGFyZW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gY3Vy
cmVudENvdW50ZXItPnBhcmVudCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeyAKKyAg
ICAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGF0IHRoZSBwb3RlbnRpYWwgZW5kIG9mIHRoZSBz
ZWFyY2gsIGJ1dCB3ZSBoYWQgbm8gcHJldmlvdXMgc2libGluZyBjYW5kaWRhdGUKKyAgICAgICAg
ICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIGZvbGxvdyBwcmV0dHkgbXVjaCB0aGUgc2Ft
ZSBsb2dpYyBhcyBhYm92ZSBidXQgbm8gQVNTRVJUcyBhYm91dCAKKyAgICAgICAgICAgICAgICAg
ICAgLy8gcHJldmlvdXNTaWJsaW5nLCBhbmQgd2hlbiB3ZSBhcmUgYSBzaWJsaW5nIG9mIHRoZSBl
bmQgY291bnRlciB3ZSBtdXN0IHNldCBwcmV2aW91c1NpYmxpbmcKKyAgICAgICAgICAgICAgICAg
ICAgLy8gdG8gY3VycmVudENvdW50ZXIuCisgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50
Q291bnRlci0+aXNSZXNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNSZXNl
dCAmJiBjdXJyZW50UmVuZGVyZXItPnBhcmVudCgpID09IGNvdW50ZXJPd25lci0+cGFyZW50KCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBjdXJyZW50Q291bnRlci0+
cGFyZW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nID0g
Y3VycmVudENvdW50ZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVu
dDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBh
cmVudCA9IGN1cnJlbnRDb3VudGVyOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1Jl
c2V0IHx8IGN1cnJlbnRSZW5kZXJlci0+cGFyZW50KCkgIT0gY291bnRlck93bmVyLT5wYXJlbnQo
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gY3VycmVudENvdW50ZXItPnBh
cmVudCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nID0gY3VycmVu
dENvdW50ZXI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1NpYmxpbmcgPSBjdXJy
ZW50Q291bnRlcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXNldENhbmRpZGF0ZSA9IHByZXZpb3Vz
U2libGluZ09yUGFyZW50KHJlc2V0Q2FuZGlkYXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjKSB7
Ci0gICAgICAgICAgICBpZiAoYy0+aXNSZXNldCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGMt
PnBhcmVudCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBuZXcgbm9kZSBtYXkgYmUg
dGhlIG5leHQgc2libGluZyBvZiB0aGlzIHJlc2V0IG5vZGUuCi0gICAgICAgICAgICAgICAgICAg
IGNyZWF0ZUNoaWxkRm9yUmVzZXQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgY2FuZGlk
YXRlQ291bnRlciA9IGM7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlQ2hpbGRGb3JSZXNldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGNh
bmRpZGF0ZUNvdW50ZXIgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxz
ZSBpZiAoIWNhbmRpZGF0ZUNvdW50ZXIpIHsKLSAgICAgICAgICAgICAgICBjcmVhdGVDaGlsZEZv
clJlc2V0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBjYW5kaWRhdGVDb3VudGVyID0gYzsKKyAg
ICAgICAgICAgIC8vIFdlIGNvbWUgaGVyZSBpZiB0aGUgcHJldmlvdXMgc2libGluZyBvciBwYXJl
bnQgb2Ygb3VyIHJlbmRlcmVyIGhhZCBubyAKKyAgICAgICAgICAgIC8vIGdvb2QgY291bnRlciwg
b3Igd2UgYXJlIGEgcmVzZXQgbm9kZSBhbmQgdGhlIGNvdW50ZXIgb24gdGhlIHByZXZpb3VzIHNp
YmxpbmcKKyAgICAgICAgICAgIC8vIG9mIG91ciByZW5kZXJlciB3YXMgbm90IGEgcmVzZXQgY291
bnRlci4KKyAgICAgICAgICAgIC8vIFNldCBhIG5ldyBnb2FsIGZvciB0aGUgZW5kIG9mIHRoZSBz
ZWFyY2guCisgICAgICAgICAgICBzZWFyY2hFbmRSZW5kZXJlciA9IHByZXZpb3VzU2libGluZ09y
UGFyZW50KGN1cnJlbnRSZW5kZXJlcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAv
LyBXZSBhcmUgc2VhcmNoaW5nIGRlc2NlbmRhbnRzIG9mIGEgcHJldmlvdXMgc2libGluZyBvZiB0
aGUgcmVuZGVyZXIgdGhhdCB0aGUKKyAgICAgICAgICAgIC8vIGNvdW50ZXIgYmVpbmcgcGxhY2Vk
IGlzIGF0dGFjaGVkIHRvLgorICAgICAgICAgICAgaWYgKGN1cnJlbnRDb3VudGVyKSB7CisgICAg
ICAgICAgICAgICAgLy8gV2UgZm91bmQgYSBzdWl0YWJsZSBjb3VudGVyLgorICAgICAgICAgICAg
ICAgIGlmIChwcmV2aW91c1NpYmxpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU2luY2Ug
d2UgaGFkIGEgc3VpdGFibGUgcHJldmlvdXMgY291bnRlciBiZWZvcmUsIHdlIHNob3VsZCBvbmx5
IGNvbnNpZGVyIHRoaXMgb25lIGFzIG91ciAKKyAgICAgICAgICAgICAgICAgICAgLy8gcHJldmlv
dXNTaWJsaW5nIGlmIGl0IGlzIGEgcmVzZXQgY291bnRlciBhbmQgaGVuY2UgdGhlIGN1cnJlbnQg
cHJldmlvdXNTaWJsaW5nIGlzIGl0cyBjaGlsZC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGN1
cnJlbnRDb3VudGVyLT5pc1Jlc2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZXZp
b3VzU2libGluZyA9IGN1cnJlbnRDb3VudGVyOworICAgICAgICAgICAgICAgICAgICAgICAgLy8g
V2UgYXJlIG5vIGxvbmdlciBpbnRlcmVzdGVkIGluIHByZXZpb3VzIHNpYmxpbmdzIG9mIHRoZSBj
dXJyZW50UmVuZGVyZXIgb3IgdGhlaXIgY2hpbGRyZW4KKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGFzIGNvdW50ZXJzIHRoZXkgbWF5IGhhdmUgYXR0YWNoZWQgY2Fubm90IGJlIHRoZSBwcmV2
aW91cyBzaWJsaW5nIG9mIHRoZSBjb3VudGVyIHdlIGFyZSBwbGFjaW5nCisgICAgICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50UmVuZGVyZXIgPSBjdXJyZW50UmVuZGVyZXItPnBhcmVudCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTaWJs
aW5nID0gY3VycmVudENvdW50ZXI7CisgICAgICAgICAgICAgICAgY3VycmVudFJlbmRlcmVyID0g
cHJldmlvdXNTaWJsaW5nT3JQYXJlbnQoY3VycmVudFJlbmRlcmVyKTsKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAvLyBUaGlzIGZ1
bmN0aW9uIGlzIGRlc2lnbmVkIHNvIHRoYXQgdGhlIHNhbWUgdGVzdCBpcyBub3QgZG9uZSB0d2lj
ZSBpbiBhbiBpdGVyYXRpb24sIGV4Y2VwdCBmb3IgdGhpcyBvbmUKKyAgICAgICAgLy8gd2hpY2gg
bWF5IGJlIGRvbmUgdHdpY2UgaW4gc29tZSBjYXNlcy4gUmVhcnJhbmdpbmcgdGhlIGRlY2lzaW9u
IHBvaW50cyB0aG91Z2gsIHRvIGFjY29tbW9kYXRlIHRoaXMgCisgICAgICAgIC8vIHBlcmZvcm1h
bmNlIGltcHJvdmVtZW50IHdvdWxkIGNyZWF0ZSBtb3JlIGNvZGUgZHVwbGljYXRpb24gdGhhbiBp
cyB3b3J0aHdoaWxlIGluIG15IG9wcGluaW9uIGFuZCBtYXkgZnVydGhlcgorICAgICAgICAvLyBp
bXBlZGUgdGhlIHJlYWRhYmlsaXR5IG9mIHRoaXMgYWxyZWFkeSBjb21wbGV4IGFsZ29yaXRobS4K
KyAgICAgICAgaWYgKHByZXZpb3VzU2libGluZykKKyAgICAgICAgICAgIGN1cnJlbnRSZW5kZXJl
ciA9IHByZXZpb3VzU2libGluZ09yUGFyZW50KGN1cnJlbnRSZW5kZXJlcik7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGN1cnJlbnRSZW5kZXJlciA9IGN1cnJlbnRSZW5kZXJlci0+cHJldmlv
dXNJblByZU9yZGVyKCk7CiAgICAgfQotCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTMyNCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE0IEBACisyMDA5LTExLTIzICBDYXJvbCBTemFibyAgPGNhcm9sLnN6YWJv
QG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDU1MgQ291bnRlciBOZXN0aW5nIHN0aWxsIGRvZXMgbm90IHdvcmsgYWNjb3JkaW5nIHRv
IHRoZSBzcGVjLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzE3MjMKKworICAgICAgICAqIGZhc3QvY3NzL2NvdW50ZXJzL25lc3RpbmctZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9jb3VudGVycy9uZXN0aW5nLmh0bWw6IEFk
ZGVkLgorICAgICAgICBUaGlzIHRlc3QgdGVzdHMgY29tcGxpYW5jZSB3aXRoIHRoZSBDU1MyLjEg
Y291bnRlciBzY29waW5nIGFuZCBuZXN0aW5nIHJ1bGVzLgorCiAyMDA5LTExLTIzICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
biBCZXJuc3RlaW4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9uZXN0aW5n
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVy
cy9uZXN0aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y3NzL2NvdW50ZXJzL25lc3RpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDUgQEAKK1RoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIHNob3VsZCBoYXZlIHRoZSBzYW1lIGNvbnRl
bnQ6CisKKyAgIAorMC4yLSAwLjItIDAuNS0gMS0KKzAuMi0gMC4yLSAwLjUtIDEtCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9uZXN0aW5nLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvbmVzdGluZy5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvbmVzdGluZy5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhU
TUwgNC4wMS8vRU4iPgorPGh0bWw+PGhlYWQ+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgorICAgIDx0aXRsZT5D
U1MgVGVzdDogZHluYW1pYyBjaGFuZ2VzIHRvICdjb3VudGVyLWluY3JlbWVudCc8L3RpdGxlPgor
ICAgIDxsaW5rIHJlbD0iYXV0aG9yIiBocmVmPSJodHRwOi8vZGJhcm9uLm9yZy8iIHRpdGxlPSJM
LiBEYXZpZCBCYXJvbiI+CisgICAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9DU1MyMS9nZW5lcmF0ZS5odG1sI2NvdW50ZXJzIj4KKyAgICA8bGluayByZWw9Imhl
bHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL2dlbmVyYXRlLmh0bWwjcHJvcGRl
Zi1jb250ZW50Ij4KKyAgICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3Jn
L1RSL0NTUzIxL3N5bmRhdGEuaHRtbCNjb3VudGVyIj4KKyAgICA8bWV0YSBjb250ZW50PSJkb20i
IG5hbWU9ImZsYWdzIj4KKyAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVN0eWxlLVR5cGUi
IGNvbnRlbnQ9InRleHQvY3NzIj4KKyAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVNjcmlw
dC1UeXBlIiBjb250ZW50PSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+CisgICAgICAgIGJvZHkgeyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9CisgICAgICAgIC5y
ZXNldCB7IGNvdW50ZXItcmVzZXQ6IGM7IH0KKyAgICAgICAgLmluY3JlbWVudDpiZWZvcmUsIC51
c2U6YmVmb3JlIHsgY29udGVudDogY291bnRlcnMoYywgIi4iKSAiLSI7IH0KKyAgICAgICAgLmlu
Y3JlbWVudCB7IGNvdW50ZXItaW5jcmVtZW50OiBjOyB9CisgICAgPC9zdHlsZT4KKyAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJ1bigpIHsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0RWxlbWVu
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisgICAgICAgICAgICAgICAgY29u
c29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgICAgICAg
ICAgc3Bhbkxpc3QgPSB0ZXN0RWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic3BhbiIpCisg
ICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNwYW5MaXN0Lmxlbmd0aDsgKytpICkgewor
ICAgICAgICAgICAgICAgICAgICBuZXdTcGFuRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNwYW4iKTsKKyAgICAgICAgICAgICAgICAgICAgbmV3U3BhbkVsZW1lbnQuaW5uZXJUZXh0
ID0KKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY291bnRlclZhbHVl
Rm9yRWxlbWVudEJ5SWQoc3Bhbkxpc3QuaXRlbShpKS5nZXRBdHRyaWJ1dGUoImlkIikpOworICAg
ICAgICAgICAgICAgICAgICBpZiAobmV3U3BhbkVsZW1lbnQuaW5uZXJUZXh0Lmxlbmd0aCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld1NwYW5FbGVtZW50LmlubmVyVGV4dCA9IG5ld1NwYW5F
bGVtZW50LmlubmVyVGV4dCArICItICI7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuYXBw
ZW5kQ2hpbGQobmV3U3BhbkVsZW1lbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD48Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQo
J3J1bigpJywgMCkiPgorICAgIDxwPlRoZSBmb2xsb3dpbmcgdHdvIGxpbmVzIHNob3VsZCBoYXZl
IHRoZSBzYW1lIGNvbnRlbnQ6PC9wPgorICAgIDxkaXYgaWQ9InRlc3QiPgorICAgIAk8c3BhbiBp
ZD0icm9vdCIgY2xhc3M9InJlc2V0Ij4KKwkgICAgPHNwYW4gaWQ9ImR1bW15Ij4KKyAgICAgICAg
ICAgICAgICA8c3BhbiBpZD0icmVzZXQxIiBzdHlsZT0iY291bnRlci1yZXNldDogYyAxIj48L3Nw
YW4+CisgICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImluYyIgY2xhc3M9ImluY3JlbWVudCI+PC9z
cGFuPgorICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJ1c2VyIiBjbGFzcz0idXNlIj48L3NwYW4+
CisgICAgICAgICAgICAgICAgPHNwYW4gaWQ9InJlc2V0NCIgc3R5bGU9ImNvdW50ZXItcmVzZXQ6
IGMgNCI+PC9zcGFuPgorICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJpbmMyIiBjbGFzcz0iaW5j
cmVtZW50Ij48L3NwYW4+CisgICAgICAgICAgICA8L3NwYW4+CisgICAgICAgCSAgICA8c3BhbiBp
ZD0iaW50ZXJlc3RpbmciIGNsYXNzPSJpbmNyZW1lbnQiPjwvc3Bhbj4KKyAgICAgICAJPC9zcGFu
PgorICAgIDwvZGl2PgorICAgIDxkaXYgaWQ9InJlZmVyZW5jZSI+MC4yLSAwLjItIDAuNS0gMS0g
PC9kaXY+CisgICAgPGhyPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5Pjwv
aHRtbD4K
</data>
<flag name="review"
          id="25467"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44101</attachid>
            <date>2009-12-01 14:11:38 -0800</date>
            <delta_ts>2009-12-08 02:21:11 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>patchFor31723-3.patch</filename>
            <type>text/plain</type>
            <size>14539</size>
            <attacher name="Carol Szabo">carol</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTMyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMTEtMjMgIENhcm9sIFN6YWJvICA8Y2Fyb2wuc3phYm9Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENTUyBDb3VudGVyIE5lc3Rpbmcgc3RpbGwgZG9lcyBub3Qgd29yayBhY2NvcmRpbmcgdG8gdGhl
IHNwZWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MTcyMworCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL2NvdW50ZXJzL25lc3RpbmcuaHRtbAorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZmluZFBsYWNlRm9yQ291bnRlcik6CisgICAgICAgIFJlcGxhY2VkIHRoZSBmYXVsdHkgY291bnRl
ciBpbnNlcnRpb24gYWxnb3JpdGhtIHdpdGggb25lIHRoYXQgd29ya3MuCisKIDIwMDktMTEtMjMg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3Bw
CShyZXZpc2lvbiA1MTMxMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNTUgKzEwOSwxMjAgQEAgc3RhdGljIGJvb2wgcGxhbkNv
dW50ZXIoUmVuZGVyT2JqZWN0KiBvYgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJv
b2wgZmluZFBsYWNlRm9yQ291bnRlcihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBjb3VudGVyTmFtZSwKLSAgICBib29sIGlzUmVzZXQsIENvdW50ZXJOb2RlKiYgcGFy
ZW50LCBDb3VudGVyTm9kZSomIHByZXZpb3VzU2libGluZykKLXsKLSAgICAvLyBGaW5kIHRoZSBh
cHByb3ByaWF0ZSBwcmV2aW91cyBzaWJsaW5nIGZvciBpbnNlcnRpb24gaW50byB0aGUgcGFyZW50
IG5vZGUKLSAgICAvLyBieSBzZWFyY2hpbmcgaW4gcmVuZGVyIHRyZWUgb3JkZXIgZm9yIGEgY2hp
bGQgb2YgdGhlIGNvdW50ZXIuCi0gICAgcGFyZW50ID0gMDsKKy8vIC0gRmluZHMgdGhlIGluc2Vy
dGlvbiBwb2ludCBmb3IgdGhlIGNvdW50ZXIgZGVzY3JpYmVkIGJ5IGNvdW50ZXJPd25lciwgaXNS
ZXNldCBhbmQgCisvLyBpZGVudGlmaWVyIGluIHRoZSBDb3VudGVyTm9kZSB0cmVlIGZvciBpZGVu
dGlmaWVyIGFuZCBzZXRzIHBhcmVudCBhbmQKKy8vIHByZXZpb3VzU2libGluZyBhY2NvcmRpbmds
eS4KKy8vIC0gVGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiB0aGUgY291bnRlciB3aG9zZSBp
bnNlcnRpb24gcG9pbnQgaXMgc2VhcmNoZWQgaXMgTk9UCisvLyB0aGUgcm9vdCBvZiB0aGUgdHJl
ZS4KKy8vIC0gVGhlIHJvb3Qgb2YgdGhlIHRyZWUgaXMgYSBjb3VudGVyIHJlZmVyZW5jZSB0aGF0
IGlzIG5vdCBpbiB0aGUgc2NvcGUgb2YgYW55IG90aGVyCisvLyBjb3VudGVyIHdpdGggdGhlIHNh
bWUgaWRlbnRpZmllci4KKy8vIC0gQWxsIHRoZSBjb3VudGVyIHJlZmVyZW5jZXMgd2l0aCB0aGUg
c2FtZSBpZGVudGlmaWVyIGFzIHRoaXMgb25lIHRoYXQgYXJlIGluCisvLyBjaGlsZHJlbiBvciBz
dWJzZXF1ZW50IHNpYmxpbmdzIG9mIHRoZSByZW5kZXJlciB0aGF0IG93bnMgdGhlIHJvb3Qgb2Yg
dGhlIHRyZWUKKy8vIGZvcm0gdGhlIHJlc3Qgb2Ygb2YgdGhlIG5vZGVzIG9mIHRoZSB0cmVlLgor
Ly8gLSBUaGUgcm9vdCBvZiB0aGUgdHJlZSBpcyBhbHdheXMgYSByZXNldCB0eXBlIHJlZmVyZW5j
ZS4KKy8vIC0gQSBzdWJ0cmVlIHJvb3RlZCBhdCBhbnkgcmVzZXQgbm9kZSBpbiB0aGUgdHJlZSBp
cyBlcXVpdmFsZW50IHRvIGFsbCBjb3VudGVyIAorLy8gcmVmZXJlbmNlcyB0aGF0IGFyZSBpbiB0
aGUgc2NvcGUgb2YgdGhlIGNvdW50ZXIgb3IgbmVzdGVkIGNvdW50ZXIgZGVmaW5lZCBieSB0aGF0
CisvLyByZXNldCBub2RlLgorLy8gLSBOb24tcmVzZXQgQ291bnRlck5vZGVzIGNhbm5vdCBoYXZl
IGRlc2NlbmRhbnRzLgorCitzdGF0aWMgYm9vbCBmaW5kUGxhY2VGb3JDb3VudGVyKFJlbmRlck9i
amVjdCogY291bnRlck93bmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wg
aXNSZXNldCwgQ291bnRlck5vZGUqJiBwYXJlbnQsIENvdW50ZXJOb2RlKiYgcHJldmlvdXNTaWJs
aW5nKQoreworICAgIC8vIFdlIGNhbm5vdCBzdG9wIHNlYXJjaGluZyBmb3IgY291bnRlcnMgd2l0
aCB0aGUgc2FtZSBpZGVudGlmaWVyIGJlZm9yZSB3ZSBhbHNvCisgICAgLy8gY2hlY2sgdGhpcyBy
ZW5kZXJlciwgYmVjYXVzZSBpdCBtYXkgYWZmZWN0IHRoZSBwb3NpdGlvbmluZyBpbiB0aGUgdHJl
ZSBvZiBvdXIgY291bnRlci4KKyAgICBSZW5kZXJPYmplY3QqIHNlYXJjaEVuZFJlbmRlcmVyID0g
cHJldmlvdXNTaWJsaW5nT3JQYXJlbnQoY291bnRlck93bmVyKTsKKyAgICAvLyBXZSBjaGVjayBy
ZW5kZXJlcnMgaW4gcHJlT3JkZXIgZnJvbSB0aGUgcmVuZGVyZXIgdGhhdCBvdXIgY291bnRlciBp
cyBhdHRhY2hlZCB0bworICAgIC8vIHRvd2FyZHMgdGhlIGJlZ2luaW5nIG9mIHRoZSBkb2N1bWVu
dCBmb3IgY291bnRlcnMgd2l0aCB0aGUgc2FtZSBpZGVudGlmaWVyIGFzIHRoZSBvbmUKKyAgICAv
LyB3ZSBhcmUgdHJ5aW5nIHRvIGZpbmQgYSBwbGFjZSBmb3IuIFRoaXMgaXMgdGhlIG5leHQgcmVu
ZGVyZXIgdG8gYmUgY2hlY2tlZC4KKyAgICBSZW5kZXJPYmplY3QqIGN1cnJlbnRSZW5kZXJlciA9
IGNvdW50ZXJPd25lci0+cHJldmlvdXNJblByZU9yZGVyKCk7CiAgICAgcHJldmlvdXNTaWJsaW5n
ID0gMDsKLSAgICBSZW5kZXJPYmplY3QqIHJlc2V0Q2FuZGlkYXRlID0gaXNSZXNldCA/IG9iamVj
dC0+cGFyZW50KCkgOiBwcmV2aW91c1NpYmxpbmdPclBhcmVudChvYmplY3QpOwotICAgIFJlbmRl
ck9iamVjdCogcHJldkNvdW50ZXJDYW5kaWRhdGUgPSBvYmplY3Q7Ci0gICAgQ291bnRlck5vZGUq
IGNhbmRpZGF0ZUNvdW50ZXIgPSAwOwotICAgIC8vIFdoZW4gYSByZXNldCBjb3VudGVyIGlzIGNo
b3NlbiBhcyBjYW5kaWRhdGVDb3VudGVyLCB3ZSdsbAotICAgIC8vIGRlY2lkZSB0aGUgbmV3IG5v
ZGUgc2hvdWxkIGJlIGEgY2hpbGQgb2YgdGhlIHJlc2V0IG5vZGUgb3IgYQotICAgIC8vIHNpYmxp
bmcgb3IgdGhlIHJlc2V0IG5vZGUuIFRoaXMgZmxhZyBjb250cm9scyBpdC4KLSAgICBib29sIGNy
ZWF0ZUNoaWxkRm9yUmVzZXQgPSB0cnVlOwotICAgIHdoaWxlICgocHJldkNvdW50ZXJDYW5kaWRh
dGUgPSBwcmV2Q291bnRlckNhbmRpZGF0ZS0+cHJldmlvdXNJblByZU9yZGVyKCkpKSB7Ci0gICAg
ICAgIENvdW50ZXJOb2RlKiBjID0gbWFrZUNvdW50ZXJOb2RlKHByZXZDb3VudGVyQ2FuZGlkYXRl
LCBjb3VudGVyTmFtZSwgZmFsc2UpOwotICAgICAgICBpZiAocHJldkNvdW50ZXJDYW5kaWRhdGUg
PT0gcmVzZXRDYW5kaWRhdGUpIHsKLSAgICAgICAgICAgIGlmICghY2FuZGlkYXRlQ291bnRlcikg
ewotICAgICAgICAgICAgICAgIGNhbmRpZGF0ZUNvdW50ZXIgPSBjOwotICAgICAgICAgICAgICAg
IGNyZWF0ZUNoaWxkRm9yUmVzZXQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKGNhbmRpZGF0ZUNvdW50ZXIpIHsKLSAgICAgICAgICAgICAgICBpZiAoY3JlYXRlQ2hpbGRG
b3JSZXNldCAmJiBjYW5kaWRhdGVDb3VudGVyLT5pc1Jlc2V0KCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcGFyZW50ID0gY2FuZGlkYXRlQ291bnRlcjsKLSAgICAgICAgICAgICAgICAgICAgcHJl
dmlvdXNTaWJsaW5nID0gMDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICBwYXJlbnQgPSBjYW5kaWRhdGVDb3VudGVyLT5wYXJlbnQoKTsKLSAgICAgICAgICAg
ICAgICAgICAgcHJldmlvdXNTaWJsaW5nID0gY2FuZGlkYXRlQ291bnRlcjsKKyAgICB3aGlsZSAo
Y3VycmVudFJlbmRlcmVyKSB7CisgICAgICAgIENvdW50ZXJOb2RlKiBjdXJyZW50Q291bnRlciA9
IG1ha2VDb3VudGVyTm9kZShjdXJyZW50UmVuZGVyZXIsIGlkZW50aWZpZXIsIGZhbHNlKTsKKyAg
ICAgICAgaWYgKHNlYXJjaEVuZFJlbmRlcmVyID09IGN1cnJlbnRSZW5kZXJlcikgeworICAgICAg
ICAgICAgLy8gV2UgbWF5IGJlIGF0IHRoZSBlbmQgb2Ygb3VyIHNlYXJjaC4KKyAgICAgICAgICAg
IGlmIChjdXJyZW50Q291bnRlcikgeworICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBzdWl0
YWJsZSBjb3VudGVyIG9uIHRoZSBFbmRTZWFyY2hSZW5kZXJlci4KKyAgICAgICAgICAgICAgICBp
ZiAocHJldmlvdXNTaWJsaW5nKSB7IC8vIEJ1dCB3ZSBhbHJlYWR5IGZvdW5kIGFub3RoZXIgY291
bnRlciB0aGF0IHdlIGNvbWUgYWZ0ZXIuCisgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50
Q291bnRlci0+aXNSZXNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBmb3Vu
ZCBhIHJlc2V0IGNvdW50ZXIgdGhhdCBpcyBvbiBhIHJlbmRlcmVyIHRoYXQgaXMgYSBzaWJsaW5n
IG9mIG91cnMgb3IgYSBwYXJlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNSZXNl
dCAmJiBjdXJyZW50UmVuZGVyZXItPnBhcmVudCgpID09IGNvdW50ZXJPd25lci0+cGFyZW50KCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgYWxzbyBhIHJlc2V0IGNv
dW50ZXIgYW5kIHRoZSBwcmV2aW91cyByZXNldCB3YXMgb24gYSBzaWJsaW5nIHJlbmRlcmVyCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGVuY2Ugd2UgYXJlIHRoZSBuZXh0IHNpYmxp
bmcgb2YgdGhhdCBjb3VudGVyIGlmIHRoYXQgcmVzZXQgaXMgbm90IGEgcm9vdCBvcgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGFyZSBhIHJvb3Qgbm9kZSBpZiB0aGF0IHJlc2V0
IGlzIGEgcm9vdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBjdXJyZW50
Q291bnRlci0+cGFyZW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNT
aWJsaW5nID0gcGFyZW50ID8gY3VycmVudENvdW50ZXIgOiAwOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBwYXJlbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgbm90IGEgcmVzZXQgbm9kZSBvciB0aGUgcHJl
dmlvdXMgcmVzZXQgbXVzdCBiZSBvbiBhbiBhbmNlc3RvciBvZiBvdXIgcmVuZGVyZXIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGhlbmNlIHdlIG11c3QgYmUgYSBjaGlsZCBvZiB0aGF0IHJl
c2V0IGNvdW50ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBjdXJyZW50Q291
bnRlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwcmV2aW91c1NpYmxpbmctPnBh
cmVudCgpID09IGN1cnJlbnRDb3VudGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIEN1
cnJlbnRDb3VudGVyLCB0aGUgY291bnRlciBhdCB0aGUgRW5kU2VhcmNoUmVuZGVyZXIsIGlzIG5v
dCByZXNldC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1Jlc2V0IHx8IGN1cnJlbnRSZW5k
ZXJlci0+cGFyZW50KCkgIT0gY291bnRlck93bmVyLT5wYXJlbnQoKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gSWYgdGhlIG5vZGUgd2UgYXJlIHBsYWNpbmcgaXMgbm90IHJlc2V0IG9y
IHdlIGhhdmUgZm91bmQgYSBjb3VudGVyIHRoYXQgaXMgYXR0YWNoZWQKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHRvIGFuIGFuY2VzdG9yIG9mIHRoZSBwbGFjZWQgY291bnRlcidzIHJlbmRl
cmVyIHdlIGtub3cgd2UgYXJlIGEgc2libGluZyBvZiB0aGF0IG5vZGUuCisgICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoY3VycmVudENvdW50ZXItPnBhcmVudCgpID09IHByZXZpb3VzU2li
bGluZy0+cGFyZW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gY3VycmVu
dENvdW50ZXItPnBhcmVudCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeyAKKyAgICAg
ICAgICAgICAgICAgICAgLy8gV2UgYXJlIGF0IHRoZSBwb3RlbnRpYWwgZW5kIG9mIHRoZSBzZWFy
Y2gsIGJ1dCB3ZSBoYWQgbm8gcHJldmlvdXMgc2libGluZyBjYW5kaWRhdGUKKyAgICAgICAgICAg
ICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIGZvbGxvdyBwcmV0dHkgbXVjaCB0aGUgc2FtZSBs
b2dpYyBhcyBhYm92ZSBidXQgbm8gQVNTRVJUcyBhYm91dCAKKyAgICAgICAgICAgICAgICAgICAg
Ly8gcHJldmlvdXNTaWJsaW5nLCBhbmQgd2hlbiB3ZSBhcmUgYSBzaWJsaW5nIG9mIHRoZSBlbmQg
Y291bnRlciB3ZSBtdXN0IHNldCBwcmV2aW91c1NpYmxpbmcKKyAgICAgICAgICAgICAgICAgICAg
Ly8gdG8gY3VycmVudENvdW50ZXIuCisgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q291
bnRlci0+aXNSZXNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNSZXNldCAm
JiBjdXJyZW50UmVuZGVyZXItPnBhcmVudCgpID09IGNvdW50ZXJPd25lci0+cGFyZW50KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBjdXJyZW50Q291bnRlci0+cGFy
ZW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nID0gY3Vy
cmVudENvdW50ZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudDsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVu
dCA9IGN1cnJlbnRDb3VudGVyOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1Jlc2V0
IHx8IGN1cnJlbnRSZW5kZXJlci0+cGFyZW50KCkgIT0gY291bnRlck93bmVyLT5wYXJlbnQoKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gY3VycmVudENvdW50ZXItPnBhcmVu
dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nID0gY3VycmVudENv
dW50ZXI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1NpYmxpbmcgPSBjdXJyZW50
Q291bnRlcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXNldENhbmRpZGF0ZSA9IHByZXZpb3VzU2li
bGluZ09yUGFyZW50KHJlc2V0Q2FuZGlkYXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjKSB7Ci0g
ICAgICAgICAgICBpZiAoYy0+aXNSZXNldCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGMtPnBh
cmVudCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBuZXcgbm9kZSBtYXkgYmUgdGhl
IG5leHQgc2libGluZyBvZiB0aGlzIHJlc2V0IG5vZGUuCi0gICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZUNoaWxkRm9yUmVzZXQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRl
Q291bnRlciA9IGM7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlQ2hpbGRGb3JSZXNldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGNhbmRp
ZGF0ZUNvdW50ZXIgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAoIWNhbmRpZGF0ZUNvdW50ZXIpIHsKLSAgICAgICAgICAgICAgICBjcmVhdGVDaGlsZEZvclJl
c2V0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBjYW5kaWRhdGVDb3VudGVyID0gYzsKKyAgICAg
ICAgICAgIC8vIFdlIGNvbWUgaGVyZSBpZiB0aGUgcHJldmlvdXMgc2libGluZyBvciBwYXJlbnQg
b2Ygb3VyIHJlbmRlcmVyIGhhZCBubyAKKyAgICAgICAgICAgIC8vIGdvb2QgY291bnRlciwgb3Ig
d2UgYXJlIGEgcmVzZXQgbm9kZSBhbmQgdGhlIGNvdW50ZXIgb24gdGhlIHByZXZpb3VzIHNpYmxp
bmcKKyAgICAgICAgICAgIC8vIG9mIG91ciByZW5kZXJlciB3YXMgbm90IGEgcmVzZXQgY291bnRl
ci4KKyAgICAgICAgICAgIC8vIFNldCBhIG5ldyBnb2FsIGZvciB0aGUgZW5kIG9mIHRoZSBzZWFy
Y2guCisgICAgICAgICAgICBzZWFyY2hFbmRSZW5kZXJlciA9IHByZXZpb3VzU2libGluZ09yUGFy
ZW50KGN1cnJlbnRSZW5kZXJlcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBX
ZSBhcmUgc2VhcmNoaW5nIGRlc2NlbmRhbnRzIG9mIGEgcHJldmlvdXMgc2libGluZyBvZiB0aGUg
cmVuZGVyZXIgdGhhdCB0aGUKKyAgICAgICAgICAgIC8vIGNvdW50ZXIgYmVpbmcgcGxhY2VkIGlz
IGF0dGFjaGVkIHRvLgorICAgICAgICAgICAgaWYgKGN1cnJlbnRDb3VudGVyKSB7CisgICAgICAg
ICAgICAgICAgLy8gV2UgZm91bmQgYSBzdWl0YWJsZSBjb3VudGVyLgorICAgICAgICAgICAgICAg
IGlmIChwcmV2aW91c1NpYmxpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU2luY2Ugd2Ug
aGFkIGEgc3VpdGFibGUgcHJldmlvdXMgY291bnRlciBiZWZvcmUsIHdlIHNob3VsZCBvbmx5IGNv
bnNpZGVyIHRoaXMgb25lIGFzIG91ciAKKyAgICAgICAgICAgICAgICAgICAgLy8gcHJldmlvdXNT
aWJsaW5nIGlmIGl0IGlzIGEgcmVzZXQgY291bnRlciBhbmQgaGVuY2UgdGhlIGN1cnJlbnQgcHJl
dmlvdXNTaWJsaW5nIGlzIGl0cyBjaGlsZC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJl
bnRDb3VudGVyLT5pc1Jlc2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3Vz
U2libGluZyA9IGN1cnJlbnRDb3VudGVyOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ug
YXJlIG5vIGxvbmdlciBpbnRlcmVzdGVkIGluIHByZXZpb3VzIHNpYmxpbmdzIG9mIHRoZSBjdXJy
ZW50UmVuZGVyZXIgb3IgdGhlaXIgY2hpbGRyZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGFzIGNvdW50ZXJzIHRoZXkgbWF5IGhhdmUgYXR0YWNoZWQgY2Fubm90IGJlIHRoZSBwcmV2aW91
cyBzaWJsaW5nIG9mIHRoZSBjb3VudGVyIHdlIGFyZSBwbGFjaW5nLgorICAgICAgICAgICAgICAg
ICAgICAgICAgY3VycmVudFJlbmRlcmVyID0gY3VycmVudFJlbmRlcmVyLT5wYXJlbnQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzU2libGlu
ZyA9IGN1cnJlbnRDb3VudGVyOworICAgICAgICAgICAgICAgIGN1cnJlbnRSZW5kZXJlciA9IHBy
ZXZpb3VzU2libGluZ09yUGFyZW50KGN1cnJlbnRSZW5kZXJlcik7CisgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgLy8gVGhpcyBmdW5j
dGlvbiBpcyBkZXNpZ25lZCBzbyB0aGF0IHRoZSBzYW1lIHRlc3QgaXMgbm90IGRvbmUgdHdpY2Ug
aW4gYW4gaXRlcmF0aW9uLCBleGNlcHQgZm9yIHRoaXMgb25lCisgICAgICAgIC8vIHdoaWNoIG1h
eSBiZSBkb25lIHR3aWNlIGluIHNvbWUgY2FzZXMuIFJlYXJyYW5naW5nIHRoZSBkZWNpc2lvbiBw
b2ludHMgdGhvdWdoLCB0byBhY2NvbW1vZGF0ZSB0aGlzIAorICAgICAgICAvLyBwZXJmb3JtYW5j
ZSBpbXByb3ZlbWVudCB3b3VsZCBjcmVhdGUgbW9yZSBjb2RlIGR1cGxpY2F0aW9uIHRoYW4gaXMg
d29ydGh3aGlsZSBpbiBteSBvcHBpbmlvbiBhbmQgbWF5IGZ1cnRoZXIKKyAgICAgICAgLy8gaW1w
ZWRlIHRoZSByZWFkYWJpbGl0eSBvZiB0aGlzIGFscmVhZHkgY29tcGxleCBhbGdvcml0aG0uCisg
ICAgICAgIGlmIChwcmV2aW91c1NpYmxpbmcpCisgICAgICAgICAgICBjdXJyZW50UmVuZGVyZXIg
PSBwcmV2aW91c1NpYmxpbmdPclBhcmVudChjdXJyZW50UmVuZGVyZXIpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjdXJyZW50UmVuZGVyZXIgPSBjdXJyZW50UmVuZGVyZXItPnByZXZpb3Vz
SW5QcmVPcmRlcigpOwogICAgIH0KLQogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gNTEzMjQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAwOS0xMS0yMyAgQ2Fyb2wgU3phYm8gIDxjYXJvbC5zemFib0Bu
b2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ1NTIENvdW50ZXIgTmVzdGluZyBzdGlsbCBkb2VzIG5vdCB3b3JrIGFjY29yZGluZyB0byB0
aGUgc3BlYy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMxNzIzCisKKyAgICAgICAgKiBmYXN0L2Nzcy9jb3VudGVycy9uZXN0aW5nLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY291bnRlcnMvbmVzdGluZy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgVGhpcyB0ZXN0IHRlc3RzIGNvbXBsaWFuY2Ugd2l0aCB0aGUgQ1NTMi4xIGNv
dW50ZXIgc2NvcGluZyBhbmQgbmVzdGluZyBydWxlcy4KKwogMjAwOS0xMS0yMyAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4g
QmVybnN0ZWluLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvbmVzdGluZy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMv
bmVzdGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy9jb3VudGVycy9uZXN0aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
IEBACitUaGUgZm9sbG93aW5nIHR3byBsaW5lcyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBjb250ZW50
OgorCisgICAKKzAuMi0gMC4yLSAwLjUtIDEtCiswLjItIDAuMi0gMC41LSAxLQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvbmVzdGluZy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzL25lc3RpbmcuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzL25lc3RpbmcuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1OCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1M
IDQuMDEvL0VOIj4KKzxodG1sPjxoZWFkPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKyAgICA8dGl0bGU+Q1NT
IFRlc3Q6IGR5bmFtaWMgY2hhbmdlcyB0byAnY291bnRlci1pbmNyZW1lbnQnPC90aXRsZT4KKyAg
ICA8bGluayByZWw9ImF1dGhvciIgaHJlZj0iaHR0cDovL2RiYXJvbi5vcmcvIiB0aXRsZT0iTC4g
RGF2aWQgQmFyb24iPgorICAgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5v
cmcvVFIvQ1NTMjEvZ2VuZXJhdGUuaHRtbCNjb3VudGVycyI+CisgICAgPGxpbmsgcmVsPSJoZWxw
IiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9nZW5lcmF0ZS5odG1sI3Byb3BkZWYt
Y29udGVudCI+CisgICAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9U
Ui9DU1MyMS9zeW5kYXRhLmh0bWwjY291bnRlciI+CisgICAgPG1ldGEgY29udGVudD0iZG9tIiBu
YW1lPSJmbGFncyI+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1TdHlsZS1UeXBlIiBj
b250ZW50PSJ0ZXh0L2NzcyI+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1TY3JpcHQt
VHlwZSIgY29udGVudD0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9j
c3MiPgorICAgICAgICBib2R5IHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfQorICAgICAgICAucmVz
ZXQgeyBjb3VudGVyLXJlc2V0OiBjOyB9CisgICAgICAgIC5pbmNyZW1lbnQ6YmVmb3JlLCAudXNl
OmJlZm9yZSB7IGNvbnRlbnQ6IGNvdW50ZXJzKGMsICIuIikgIi0iOyB9CisgICAgICAgIC5pbmNy
ZW1lbnQgeyBjb3VudGVyLWluY3JlbWVudDogYzsgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBydW4oKSB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgdGVzdEVsZW1lbnQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworICAgICAgICAgICAgICAgIGNvbnNv
bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAgICAgICAgICAgICAg
IHNwYW5MaXN0ID0gdGVzdEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNwYW4iKQorICAg
ICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzcGFuTGlzdC5sZW5ndGg7ICsraSApIHsKKyAg
ICAgICAgICAgICAgICAgICAgbmV3U3BhbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJzcGFuIik7CisgICAgICAgICAgICAgICAgICAgIG5ld1NwYW5FbGVtZW50LmlubmVyVGV4dCA9
CisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNvdW50ZXJWYWx1ZUZv
ckVsZW1lbnRCeUlkKHNwYW5MaXN0Lml0ZW0oaSkuZ2V0QXR0cmlidXRlKCJpZCIpKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKG5ld1NwYW5FbGVtZW50LmlubmVyVGV4dC5sZW5ndGgpCisgICAg
ICAgICAgICAgICAgICAgICAgICBuZXdTcGFuRWxlbWVudC5pbm5lclRleHQgPSBuZXdTcGFuRWxl
bWVudC5pbm5lclRleHQgKyAiLSAiOworICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmFwcGVu
ZENoaWxkKG5ld1NwYW5FbGVtZW50KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+PGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KCdy
dW4oKScsIDApIj4KKyAgICA8cD5UaGUgZm9sbG93aW5nIHR3byBsaW5lcyBzaG91bGQgaGF2ZSB0
aGUgc2FtZSBjb250ZW50OjwvcD4KKyAgICA8ZGl2IGlkPSJ0ZXN0Ij4KKyAgICAJPHNwYW4gaWQ9
InJvb3QiIGNsYXNzPSJyZXNldCI+CisJICAgIDxzcGFuIGlkPSJkdW1teSI+CisgICAgICAgICAg
ICAgICAgPHNwYW4gaWQ9InJlc2V0MSIgc3R5bGU9ImNvdW50ZXItcmVzZXQ6IGMgMSI+PC9zcGFu
PgorICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJpbmMiIGNsYXNzPSJpbmNyZW1lbnQiPjwvc3Bh
bj4KKyAgICAgICAgICAgICAgICA8c3BhbiBpZD0idXNlciIgY2xhc3M9InVzZSI+PC9zcGFuPgor
ICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJyZXNldDQiIHN0eWxlPSJjb3VudGVyLXJlc2V0OiBj
IDQiPjwvc3Bhbj4KKyAgICAgICAgICAgICAgICA8c3BhbiBpZD0iaW5jMiIgY2xhc3M9ImluY3Jl
bWVudCI+PC9zcGFuPgorICAgICAgICAgICAgPC9zcGFuPgorICAgICAgIAkgICAgPHNwYW4gaWQ9
ImludGVyZXN0aW5nIiBjbGFzcz0iaW5jcmVtZW50Ij48L3NwYW4+CisgICAgICAgCTwvc3Bhbj4K
KyAgICA8L2Rpdj4KKyAgICA8ZGl2IGlkPSJyZWZlcmVuY2UiPjAuMi0gMC4yLSAwLjUtIDEtIDwv
ZGl2PgorICAgIDxocj4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT48L2h0
bWw+Cg==
</data>
<flag name="review"
          id="25876"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="25877"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44464</attachid>
            <date>2009-12-08 02:21:11 -0800</date>
            <delta_ts>2009-12-08 07:21:04 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>patchFor31723-15.patch</filename>
            <type>text/plain</type>
            <size>14544</size>
            <attacher name="Carol Szabo">carol</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTgzNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMTItMDcgIENhcm9sIFN6YWJvICA8Y2Fyb2wuc3phYm9Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENTUyBDb3VudGVyIE5lc3Rpbmcgc3RpbGwgZG9lcyBub3Qgd29yayBhY2NvcmRpbmcgdG8gdGhl
IHNwZWMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MTcyMworCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL2NvdW50ZXJzL25lc3RpbmcuaHRtbAorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZmluZFBsYWNlRm9yQ291bnRlcik6CisgICAgICAgIFJlcGxhY2VkIHRoZSBmYXVsdHkgY291bnRl
ciBpbnNlcnRpb24gYWxnb3JpdGhtIHdpdGggb25lIHRoYXQgd29ya3MuCisKIDIwMDktMTItMDcg
IFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3Bw
CShyZXZpc2lvbiA1MTgzNykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNTUgKzEwOSwxMjAgQEAgc3RhdGljIGJvb2wgcGxhbkNv
dW50ZXIoUmVuZGVyT2JqZWN0KiBvYgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJv
b2wgZmluZFBsYWNlRm9yQ291bnRlcihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBjb3VudGVyTmFtZSwKLSAgICBib29sIGlzUmVzZXQsIENvdW50ZXJOb2RlKiYgcGFy
ZW50LCBDb3VudGVyTm9kZSomIHByZXZpb3VzU2libGluZykKLXsKLSAgICAvLyBGaW5kIHRoZSBh
cHByb3ByaWF0ZSBwcmV2aW91cyBzaWJsaW5nIGZvciBpbnNlcnRpb24gaW50byB0aGUgcGFyZW50
IG5vZGUKLSAgICAvLyBieSBzZWFyY2hpbmcgaW4gcmVuZGVyIHRyZWUgb3JkZXIgZm9yIGEgY2hp
bGQgb2YgdGhlIGNvdW50ZXIuCi0gICAgcGFyZW50ID0gMDsKKy8vIC0gRmluZHMgdGhlIGluc2Vy
dGlvbiBwb2ludCBmb3IgdGhlIGNvdW50ZXIgZGVzY3JpYmVkIGJ5IGNvdW50ZXJPd25lciwgaXNS
ZXNldCBhbmQgCisvLyBpZGVudGlmaWVyIGluIHRoZSBDb3VudGVyTm9kZSB0cmVlIGZvciBpZGVu
dGlmaWVyIGFuZCBzZXRzIHBhcmVudCBhbmQKKy8vIHByZXZpb3VzU2libGluZyBhY2NvcmRpbmds
eS4KKy8vIC0gVGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiB0aGUgY291bnRlciB3aG9zZSBp
bnNlcnRpb24gcG9pbnQgaXMgc2VhcmNoZWQgaXMgTk9UCisvLyB0aGUgcm9vdCBvZiB0aGUgdHJl
ZS4KKy8vIC0gVGhlIHJvb3Qgb2YgdGhlIHRyZWUgaXMgYSBjb3VudGVyIHJlZmVyZW5jZSB0aGF0
IGlzIG5vdCBpbiB0aGUgc2NvcGUgb2YgYW55IG90aGVyCisvLyBjb3VudGVyIHdpdGggdGhlIHNh
bWUgaWRlbnRpZmllci4KKy8vIC0gQWxsIHRoZSBjb3VudGVyIHJlZmVyZW5jZXMgd2l0aCB0aGUg
c2FtZSBpZGVudGlmaWVyIGFzIHRoaXMgb25lIHRoYXQgYXJlIGluCisvLyBjaGlsZHJlbiBvciBz
dWJzZXF1ZW50IHNpYmxpbmdzIG9mIHRoZSByZW5kZXJlciB0aGF0IG93bnMgdGhlIHJvb3Qgb2Yg
dGhlIHRyZWUKKy8vIGZvcm0gdGhlIHJlc3Qgb2Ygb2YgdGhlIG5vZGVzIG9mIHRoZSB0cmVlLgor
Ly8gLSBUaGUgcm9vdCBvZiB0aGUgdHJlZSBpcyBhbHdheXMgYSByZXNldCB0eXBlIHJlZmVyZW5j
ZS4KKy8vIC0gQSBzdWJ0cmVlIHJvb3RlZCBhdCBhbnkgcmVzZXQgbm9kZSBpbiB0aGUgdHJlZSBp
cyBlcXVpdmFsZW50IHRvIGFsbCBjb3VudGVyIAorLy8gcmVmZXJlbmNlcyB0aGF0IGFyZSBpbiB0
aGUgc2NvcGUgb2YgdGhlIGNvdW50ZXIgb3IgbmVzdGVkIGNvdW50ZXIgZGVmaW5lZCBieSB0aGF0
CisvLyByZXNldCBub2RlLgorLy8gLSBOb24tcmVzZXQgQ291bnRlck5vZGVzIGNhbm5vdCBoYXZl
IGRlc2NlbmRhbnRzLgorCitzdGF0aWMgYm9vbCBmaW5kUGxhY2VGb3JDb3VudGVyKFJlbmRlck9i
amVjdCogY291bnRlck93bmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wg
aXNSZXNldCwgQ291bnRlck5vZGUqJiBwYXJlbnQsIENvdW50ZXJOb2RlKiYgcHJldmlvdXNTaWJs
aW5nKQoreworICAgIC8vIFdlIGNhbm5vdCBzdG9wIHNlYXJjaGluZyBmb3IgY291bnRlcnMgd2l0
aCB0aGUgc2FtZSBpZGVudGlmaWVyIGJlZm9yZSB3ZSBhbHNvCisgICAgLy8gY2hlY2sgdGhpcyBy
ZW5kZXJlciwgYmVjYXVzZSBpdCBtYXkgYWZmZWN0IHRoZSBwb3NpdGlvbmluZyBpbiB0aGUgdHJl
ZSBvZiBvdXIgY291bnRlci4KKyAgICBSZW5kZXJPYmplY3QqIHNlYXJjaEVuZFJlbmRlcmVyID0g
cHJldmlvdXNTaWJsaW5nT3JQYXJlbnQoY291bnRlck93bmVyKTsKKyAgICAvLyBXZSBjaGVjayBy
ZW5kZXJlcnMgaW4gcHJlT3JkZXIgZnJvbSB0aGUgcmVuZGVyZXIgdGhhdCBvdXIgY291bnRlciBp
cyBhdHRhY2hlZCB0bworICAgIC8vIHRvd2FyZHMgdGhlIGJlZ2luaW5nIG9mIHRoZSBkb2N1bWVu
dCBmb3IgY291bnRlcnMgd2l0aCB0aGUgc2FtZSBpZGVudGlmaWVyIGFzIHRoZSBvbmUKKyAgICAv
LyB3ZSBhcmUgdHJ5aW5nIHRvIGZpbmQgYSBwbGFjZSBmb3IuIFRoaXMgaXMgdGhlIG5leHQgcmVu
ZGVyZXIgdG8gYmUgY2hlY2tlZC4KKyAgICBSZW5kZXJPYmplY3QqIGN1cnJlbnRSZW5kZXJlciA9
IGNvdW50ZXJPd25lci0+cHJldmlvdXNJblByZU9yZGVyKCk7CiAgICAgcHJldmlvdXNTaWJsaW5n
ID0gMDsKLSAgICBSZW5kZXJPYmplY3QqIHJlc2V0Q2FuZGlkYXRlID0gaXNSZXNldCA/IG9iamVj
dC0+cGFyZW50KCkgOiBwcmV2aW91c1NpYmxpbmdPclBhcmVudChvYmplY3QpOwotICAgIFJlbmRl
ck9iamVjdCogcHJldkNvdW50ZXJDYW5kaWRhdGUgPSBvYmplY3Q7Ci0gICAgQ291bnRlck5vZGUq
IGNhbmRpZGF0ZUNvdW50ZXIgPSAwOwotICAgIC8vIFdoZW4gYSByZXNldCBjb3VudGVyIGlzIGNo
b3NlbiBhcyBjYW5kaWRhdGVDb3VudGVyLCB3ZSdsbAotICAgIC8vIGRlY2lkZSB0aGUgbmV3IG5v
ZGUgc2hvdWxkIGJlIGEgY2hpbGQgb2YgdGhlIHJlc2V0IG5vZGUgb3IgYQotICAgIC8vIHNpYmxp
bmcgb3IgdGhlIHJlc2V0IG5vZGUuIFRoaXMgZmxhZyBjb250cm9scyBpdC4KLSAgICBib29sIGNy
ZWF0ZUNoaWxkRm9yUmVzZXQgPSB0cnVlOwotICAgIHdoaWxlICgocHJldkNvdW50ZXJDYW5kaWRh
dGUgPSBwcmV2Q291bnRlckNhbmRpZGF0ZS0+cHJldmlvdXNJblByZU9yZGVyKCkpKSB7Ci0gICAg
ICAgIENvdW50ZXJOb2RlKiBjID0gbWFrZUNvdW50ZXJOb2RlKHByZXZDb3VudGVyQ2FuZGlkYXRl
LCBjb3VudGVyTmFtZSwgZmFsc2UpOwotICAgICAgICBpZiAocHJldkNvdW50ZXJDYW5kaWRhdGUg
PT0gcmVzZXRDYW5kaWRhdGUpIHsKLSAgICAgICAgICAgIGlmICghY2FuZGlkYXRlQ291bnRlcikg
ewotICAgICAgICAgICAgICAgIGNhbmRpZGF0ZUNvdW50ZXIgPSBjOwotICAgICAgICAgICAgICAg
IGNyZWF0ZUNoaWxkRm9yUmVzZXQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKGNhbmRpZGF0ZUNvdW50ZXIpIHsKLSAgICAgICAgICAgICAgICBpZiAoY3JlYXRlQ2hpbGRG
b3JSZXNldCAmJiBjYW5kaWRhdGVDb3VudGVyLT5pc1Jlc2V0KCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcGFyZW50ID0gY2FuZGlkYXRlQ291bnRlcjsKLSAgICAgICAgICAgICAgICAgICAgcHJl
dmlvdXNTaWJsaW5nID0gMDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICBwYXJlbnQgPSBjYW5kaWRhdGVDb3VudGVyLT5wYXJlbnQoKTsKLSAgICAgICAgICAg
ICAgICAgICAgcHJldmlvdXNTaWJsaW5nID0gY2FuZGlkYXRlQ291bnRlcjsKKyAgICB3aGlsZSAo
Y3VycmVudFJlbmRlcmVyKSB7CisgICAgICAgIENvdW50ZXJOb2RlKiBjdXJyZW50Q291bnRlciA9
IG1ha2VDb3VudGVyTm9kZShjdXJyZW50UmVuZGVyZXIsIGlkZW50aWZpZXIsIGZhbHNlKTsKKyAg
ICAgICAgaWYgKHNlYXJjaEVuZFJlbmRlcmVyID09IGN1cnJlbnRSZW5kZXJlcikgeworICAgICAg
ICAgICAgLy8gV2UgbWF5IGJlIGF0IHRoZSBlbmQgb2Ygb3VyIHNlYXJjaC4KKyAgICAgICAgICAg
IGlmIChjdXJyZW50Q291bnRlcikgeworICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBzdWl0
YWJsZSBjb3VudGVyIG9uIHRoZSBFbmRTZWFyY2hSZW5kZXJlci4KKyAgICAgICAgICAgICAgICBp
ZiAocHJldmlvdXNTaWJsaW5nKSB7IC8vIEJ1dCB3ZSBhbHJlYWR5IGZvdW5kIGFub3RoZXIgY291
bnRlciB0aGF0IHdlIGNvbWUgYWZ0ZXIuCisgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50
Q291bnRlci0+aXNSZXNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBmb3Vu
ZCBhIHJlc2V0IGNvdW50ZXIgdGhhdCBpcyBvbiBhIHJlbmRlcmVyIHRoYXQgaXMgYSBzaWJsaW5n
IG9mIG91cnMgb3IgYSBwYXJlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNSZXNl
dCAmJiBjdXJyZW50UmVuZGVyZXItPnBhcmVudCgpID09IGNvdW50ZXJPd25lci0+cGFyZW50KCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgYWxzbyBhIHJlc2V0IGNv
dW50ZXIgYW5kIHRoZSBwcmV2aW91cyByZXNldCB3YXMgb24gYSBzaWJsaW5nIHJlbmRlcmVyCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGVuY2Ugd2UgYXJlIHRoZSBuZXh0IHNpYmxp
bmcgb2YgdGhhdCBjb3VudGVyIGlmIHRoYXQgcmVzZXQgaXMgbm90IGEgcm9vdCBvcgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGFyZSBhIHJvb3Qgbm9kZSBpZiB0aGF0IHJlc2V0
IGlzIGEgcm9vdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBjdXJyZW50
Q291bnRlci0+cGFyZW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNT
aWJsaW5nID0gcGFyZW50ID8gY3VycmVudENvdW50ZXIgOiAwOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBwYXJlbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgbm90IGEgcmVzZXQgbm9kZSBvciB0aGUgcHJl
dmlvdXMgcmVzZXQgbXVzdCBiZSBvbiBhbiBhbmNlc3RvciBvZiBvdXIgcmVuZGVyZXIKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGhlbmNlIHdlIG11c3QgYmUgYSBjaGlsZCBvZiB0aGF0IHJl
c2V0IGNvdW50ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBjdXJyZW50Q291
bnRlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwcmV2aW91c1NpYmxpbmctPnBh
cmVudCgpID09IGN1cnJlbnRDb3VudGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIEN1
cnJlbnRDb3VudGVyLCB0aGUgY291bnRlciBhdCB0aGUgRW5kU2VhcmNoUmVuZGVyZXIsIGlzIG5v
dCByZXNldC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1Jlc2V0IHx8IGN1cnJlbnRSZW5k
ZXJlci0+cGFyZW50KCkgIT0gY291bnRlck93bmVyLT5wYXJlbnQoKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gSWYgdGhlIG5vZGUgd2UgYXJlIHBsYWNpbmcgaXMgbm90IHJlc2V0IG9y
IHdlIGhhdmUgZm91bmQgYSBjb3VudGVyIHRoYXQgaXMgYXR0YWNoZWQKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHRvIGFuIGFuY2VzdG9yIG9mIHRoZSBwbGFjZWQgY291bnRlcidzIHJlbmRl
cmVyIHdlIGtub3cgd2UgYXJlIGEgc2libGluZyBvZiB0aGF0IG5vZGUuCisgICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoY3VycmVudENvdW50ZXItPnBhcmVudCgpID09IHByZXZpb3VzU2li
bGluZy0+cGFyZW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gY3VycmVu
dENvdW50ZXItPnBhcmVudCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeyAKKyAgICAg
ICAgICAgICAgICAgICAgLy8gV2UgYXJlIGF0IHRoZSBwb3RlbnRpYWwgZW5kIG9mIHRoZSBzZWFy
Y2gsIGJ1dCB3ZSBoYWQgbm8gcHJldmlvdXMgc2libGluZyBjYW5kaWRhdGUKKyAgICAgICAgICAg
ICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIGZvbGxvdyBwcmV0dHkgbXVjaCB0aGUgc2FtZSBs
b2dpYyBhcyBhYm92ZSBidXQgbm8gQVNTRVJUcyBhYm91dCAKKyAgICAgICAgICAgICAgICAgICAg
Ly8gcHJldmlvdXNTaWJsaW5nLCBhbmQgd2hlbiB3ZSBhcmUgYSBzaWJsaW5nIG9mIHRoZSBlbmQg
Y291bnRlciB3ZSBtdXN0IHNldCBwcmV2aW91c1NpYmxpbmcKKyAgICAgICAgICAgICAgICAgICAg
Ly8gdG8gY3VycmVudENvdW50ZXIuCisgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q291
bnRlci0+aXNSZXNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNSZXNldCAm
JiBjdXJyZW50UmVuZGVyZXItPnBhcmVudCgpID09IGNvdW50ZXJPd25lci0+cGFyZW50KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBjdXJyZW50Q291bnRlci0+cGFy
ZW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nID0gY3Vy
cmVudENvdW50ZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudDsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVu
dCA9IGN1cnJlbnRDb3VudGVyOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1Jlc2V0
IHx8IGN1cnJlbnRSZW5kZXJlci0+cGFyZW50KCkgIT0gY291bnRlck93bmVyLT5wYXJlbnQoKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gY3VycmVudENvdW50ZXItPnBhcmVu
dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nID0gY3VycmVudENv
dW50ZXI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1NpYmxpbmcgPSBjdXJyZW50
Q291bnRlcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXNldENhbmRpZGF0ZSA9IHByZXZpb3VzU2li
bGluZ09yUGFyZW50KHJlc2V0Q2FuZGlkYXRlKTsKLSAgICAgICAgfSBlbHNlIGlmIChjKSB7Ci0g
ICAgICAgICAgICBpZiAoYy0+aXNSZXNldCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGMtPnBh
cmVudCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBuZXcgbm9kZSBtYXkgYmUgdGhl
IG5leHQgc2libGluZyBvZiB0aGlzIHJlc2V0IG5vZGUuCi0gICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZUNoaWxkRm9yUmVzZXQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRl
Q291bnRlciA9IGM7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlQ2hpbGRGb3JSZXNldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGNhbmRp
ZGF0ZUNvdW50ZXIgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAoIWNhbmRpZGF0ZUNvdW50ZXIpIHsKLSAgICAgICAgICAgICAgICBjcmVhdGVDaGlsZEZvclJl
c2V0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBjYW5kaWRhdGVDb3VudGVyID0gYzsKKyAgICAg
ICAgICAgIC8vIFdlIGNvbWUgaGVyZSBpZiB0aGUgcHJldmlvdXMgc2libGluZyBvciBwYXJlbnQg
b2Ygb3VyIHJlbmRlcmVyIGhhZCBubyAKKyAgICAgICAgICAgIC8vIGdvb2QgY291bnRlciwgb3Ig
d2UgYXJlIGEgcmVzZXQgbm9kZSBhbmQgdGhlIGNvdW50ZXIgb24gdGhlIHByZXZpb3VzIHNpYmxp
bmcKKyAgICAgICAgICAgIC8vIG9mIG91ciByZW5kZXJlciB3YXMgbm90IGEgcmVzZXQgY291bnRl
ci4KKyAgICAgICAgICAgIC8vIFNldCBhIG5ldyBnb2FsIGZvciB0aGUgZW5kIG9mIHRoZSBzZWFy
Y2guCisgICAgICAgICAgICBzZWFyY2hFbmRSZW5kZXJlciA9IHByZXZpb3VzU2libGluZ09yUGFy
ZW50KGN1cnJlbnRSZW5kZXJlcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBX
ZSBhcmUgc2VhcmNoaW5nIGRlc2NlbmRhbnRzIG9mIGEgcHJldmlvdXMgc2libGluZyBvZiB0aGUg
cmVuZGVyZXIgdGhhdCB0aGUKKyAgICAgICAgICAgIC8vIGNvdW50ZXIgYmVpbmcgcGxhY2VkIGlz
IGF0dGFjaGVkIHRvLgorICAgICAgICAgICAgaWYgKGN1cnJlbnRDb3VudGVyKSB7CisgICAgICAg
ICAgICAgICAgLy8gV2UgZm91bmQgYSBzdWl0YWJsZSBjb3VudGVyLgorICAgICAgICAgICAgICAg
IGlmIChwcmV2aW91c1NpYmxpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU2luY2Ugd2Ug
aGFkIGEgc3VpdGFibGUgcHJldmlvdXMgY291bnRlciBiZWZvcmUsIHdlIHNob3VsZCBvbmx5IGNv
bnNpZGVyIHRoaXMgb25lIGFzIG91ciAKKyAgICAgICAgICAgICAgICAgICAgLy8gcHJldmlvdXNT
aWJsaW5nIGlmIGl0IGlzIGEgcmVzZXQgY291bnRlciBhbmQgaGVuY2UgdGhlIGN1cnJlbnQgcHJl
dmlvdXNTaWJsaW5nIGlzIGl0cyBjaGlsZC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJl
bnRDb3VudGVyLT5pc1Jlc2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3Vz
U2libGluZyA9IGN1cnJlbnRDb3VudGVyOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ug
YXJlIG5vIGxvbmdlciBpbnRlcmVzdGVkIGluIHByZXZpb3VzIHNpYmxpbmdzIG9mIHRoZSBjdXJy
ZW50UmVuZGVyZXIgb3IgdGhlaXIgY2hpbGRyZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGFzIGNvdW50ZXJzIHRoZXkgbWF5IGhhdmUgYXR0YWNoZWQgY2Fubm90IGJlIHRoZSBwcmV2aW91
cyBzaWJsaW5nIG9mIHRoZSBjb3VudGVyIHdlIGFyZSBwbGFjaW5nLgorICAgICAgICAgICAgICAg
ICAgICAgICAgY3VycmVudFJlbmRlcmVyID0gY3VycmVudFJlbmRlcmVyLT5wYXJlbnQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzU2libGlu
ZyA9IGN1cnJlbnRDb3VudGVyOworICAgICAgICAgICAgICAgIGN1cnJlbnRSZW5kZXJlciA9IHBy
ZXZpb3VzU2libGluZ09yUGFyZW50KGN1cnJlbnRSZW5kZXJlcik7CisgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgLy8gVGhpcyBmdW5j
dGlvbiBpcyBkZXNpZ25lZCBzbyB0aGF0IHRoZSBzYW1lIHRlc3QgaXMgbm90IGRvbmUgdHdpY2Ug
aW4gYW4gaXRlcmF0aW9uLCBleGNlcHQgZm9yIHRoaXMgb25lCisgICAgICAgIC8vIHdoaWNoIG1h
eSBiZSBkb25lIHR3aWNlIGluIHNvbWUgY2FzZXMuIFJlYXJyYW5naW5nIHRoZSBkZWNpc2lvbiBw
b2ludHMgdGhvdWdoLCB0byBhY2NvbW1vZGF0ZSB0aGlzIAorICAgICAgICAvLyBwZXJmb3JtYW5j
ZSBpbXByb3ZlbWVudCB3b3VsZCBjcmVhdGUgbW9yZSBjb2RlIGR1cGxpY2F0aW9uIHRoYW4gaXMg
d29ydGh3aGlsZSBpbiBteSBvcHBpbmlvbiBhbmQgbWF5IGZ1cnRoZXIKKyAgICAgICAgLy8gaW1w
ZWRlIHRoZSByZWFkYWJpbGl0eSBvZiB0aGlzIGFscmVhZHkgY29tcGxleCBhbGdvcml0aG0uCisg
ICAgICAgIGlmIChwcmV2aW91c1NpYmxpbmcpCisgICAgICAgICAgICBjdXJyZW50UmVuZGVyZXIg
PSBwcmV2aW91c1NpYmxpbmdPclBhcmVudChjdXJyZW50UmVuZGVyZXIpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjdXJyZW50UmVuZGVyZXIgPSBjdXJyZW50UmVuZGVyZXItPnByZXZpb3Vz
SW5QcmVPcmRlcigpOwogICAgIH0KLQogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gNTE4MzcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAwOS0xMi0wNyAgQ2Fyb2wgU3phYm8gIDxjYXJvbC5zemFib0Bu
b2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ1NTIENvdW50ZXIgTmVzdGluZyBzdGlsbCBkb2VzIG5vdCB3b3JrIGFjY29yZGluZyB0byB0
aGUgc3BlYy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMxNzIzCisKKyAgICAgICAgKiBmYXN0L2Nzcy9jb3VudGVycy9uZXN0aW5nLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvY291bnRlcnMvbmVzdGluZy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgVGhpcyB0ZXN0IHRlc3RzIGNvbXBsaWFuY2Ugd2l0aCB0aGUgQ1NTMi4xIGNv
dW50ZXIgc2NvcGluZyBhbmQgbmVzdGluZyBydWxlcy4KKwogMjAwOS0xMi0wOCAgRnVtaXRvc2hp
IFVrYWkgIDx1a2FpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzL25lc3RpbmctZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzL25lc3Rp
bmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3MvY291
bnRlcnMvbmVzdGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAor
VGhlIGZvbGxvd2luZyB0d28gbGluZXMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgY29udGVudDoKKwor
ICAgCiswLjItIDAuMi0gMC41LSAxLQorMC4yLSAwLjItIDAuNS0gMS0KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY3NzL2NvdW50ZXJzL25lc3RpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9uZXN0aW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9uZXN0aW5nLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAx
Ly9FTiI+Cis8aHRtbD48aGVhZD4KKyAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CisgICAgPHRpdGxlPkNTUyBUZXN0
OiBkeW5hbWljIGNoYW5nZXMgdG8gJ2NvdW50ZXItaW5jcmVtZW50JzwvdGl0bGU+CisgICAgPGxp
bmsgcmVsPSJhdXRob3IiIGhyZWY9Imh0dHA6Ly9kYmFyb24ub3JnLyIgdGl0bGU9IkwuIERhdmlk
IEJhcm9uIj4KKyAgICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RS
L0NTUzIxL2dlbmVyYXRlLmh0bWwjY291bnRlcnMiPgorICAgIDxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvZ2VuZXJhdGUuaHRtbCNwcm9wZGVmLWNvbnRl
bnQiPgorICAgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvQ1NT
MjEvc3luZGF0YS5odG1sI2NvdW50ZXIiPgorICAgIDxtZXRhIGNvbnRlbnQ9ImRvbSIgbmFtZT0i
ZmxhZ3MiPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU3R5bGUtVHlwZSIgY29udGVu
dD0idGV4dC9jc3MiPgorICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2NyaXB0LVR5cGUi
IGNvbnRlbnQ9InRleHQvamF2YXNjcmlwdCI+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4K
KyAgICAgICAgYm9keSB7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH0KKyAgICAgICAgLnJlc2V0IHsg
Y291bnRlci1yZXNldDogYzsgfQorICAgICAgICAuaW5jcmVtZW50OmJlZm9yZSwgLnVzZTpiZWZv
cmUgeyBjb250ZW50OiBjb3VudGVycyhjLCAiLiIpICItIjsgfQorICAgICAgICAuaW5jcmVtZW50
IHsgY291bnRlci1pbmNyZW1lbnQ6IGM7IH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gcnVuKCkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIHRlc3RFbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICAgICAgICAgICAgICBzcGFu
TGlzdCA9IHRlc3RFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzcGFuIikKKyAgICAgICAg
ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc3Bhbkxpc3QubGVuZ3RoOyArK2kgKSB7CisgICAgICAg
ICAgICAgICAgICAgIG5ld1NwYW5FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpOworICAgICAgICAgICAgICAgICAgICBuZXdTcGFuRWxlbWVudC5pbm5lclRleHQgPQorICAg
ICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jb3VudGVyVmFsdWVGb3JFbGVt
ZW50QnlJZChzcGFuTGlzdC5pdGVtKGkpLmdldEF0dHJpYnV0ZSgiaWQiKSk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChuZXdTcGFuRWxlbWVudC5pbm5lclRleHQubGVuZ3RoKQorICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3U3BhbkVsZW1lbnQuaW5uZXJUZXh0ID0gbmV3U3BhbkVsZW1lbnQu
aW5uZXJUZXh0ICsgIi0gIjsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5hcHBlbmRDaGls
ZChuZXdTcGFuRWxlbWVudCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIDwvc2NyaXB0PgorPC9oZWFkPjxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgncnVuKCkn
LCAwKSI+CisgICAgPHA+VGhlIGZvbGxvd2luZyB0d28gbGluZXMgc2hvdWxkIGhhdmUgdGhlIHNh
bWUgY29udGVudDo8L3A+CisgICAgPGRpdiBpZD0idGVzdCI+CisgICAgICAgIDxzcGFuIGlkPSJy
b290IiBjbGFzcz0icmVzZXQiPgorICAgICAgICAgICAgPHNwYW4gaWQ9ImR1bW15Ij4KKyAgICAg
ICAgICAgICAgICA8c3BhbiBpZD0icmVzZXQxIiBzdHlsZT0iY291bnRlci1yZXNldDogYyAxIj48
L3NwYW4+CisgICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImluYyIgY2xhc3M9ImluY3JlbWVudCI+
PC9zcGFuPgorICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJ1c2VyIiBjbGFzcz0idXNlIj48L3Nw
YW4+CisgICAgICAgICAgICAgICAgPHNwYW4gaWQ9InJlc2V0NCIgc3R5bGU9ImNvdW50ZXItcmVz
ZXQ6IGMgNCI+PC9zcGFuPgorICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJpbmMyIiBjbGFzcz0i
aW5jcmVtZW50Ij48L3NwYW4+CisgICAgICAgICAgICA8L3NwYW4+CisgICAgICAgICAgICA8c3Bh
biBpZD0iaW50ZXJlc3RpbmciIGNsYXNzPSJpbmNyZW1lbnQiPjwvc3Bhbj4KKyAgICAgICAgPC9z
cGFuPgorICAgIDwvZGl2PgorICAgIDxkaXYgaWQ9InJlZmVyZW5jZSI+MC4yLSAwLjItIDAuNS0g
MS0gPC9kaXY+CisgICAgPGhyPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5
PjwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>