<?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>6755</bug_id>
          
          <creation_ts>2006-01-24 04:50:38 -0800</creation_ts>
          <short_desc>CSS3: Borders rounded with border-radius don&apos;t draw the roundings</short_desc>
          <delta_ts>2006-05-31 14:39:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.w3.org/TR/2005/WD-css3-background-20050216/#the-border-radius</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joost de Valk (AlthA)">joost</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>bdakin</cc>
    
    <cc>bugs-webkit</cc>
    
    <cc>c.petersen87</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>joost</cc>
    
    <cc>seattlesparks</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>29694</commentid>
    <comment_count>0</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2006-01-24 04:50:38 -0800</bug_when>
    <thetext>According to the specs:
&quot;All border styles (&apos;solid&apos;, &apos;dotted&apos;, &apos;inset&apos;, etc.) follow the curve of the border.&quot;

see the spec:
http://www.w3.org/TR/2005/WD-css3-background-20050216/#the-border-radius

As forthcoming testcase shows, this doesn&apos;t work at this point, instead, the rounding is drawn in the background-color of the element with the rounded corners.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29695</commentid>
    <comment_count>1</comment_count>
      <attachid>5906</attachid>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2006-01-24 04:51:15 -0800</bug_when>
    <thetext>Created attachment 5906
Testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37399</commentid>
    <comment_count>2</comment_count>
    <who name="Rachel Blackman">seattlesparks</who>
    <bug_when>2006-03-23 00:28:35 -0800</bug_when>
    <thetext>I&apos;m relatively new to WebCore/WebKit, but this bug has been annoying me so I started to poke at the source.  It seems to me that the problem is both a fairly simple one, and a fairly hairy one.  

The simple part is that border-radius is handled by drawing onto a surface clipped to a rounded rectangle; thus the corners of the still-rectangular border draw outside the clip, and are omitted.  Obviously, this (and probably border-image, though I&apos;ve not poked extensively into that) needs to draw the arced bits as well.  Simple enough...

The hairy part is that the way drawBorder is laid out right now, either all the different logic for drawing styles needs to be duplicated in a drawBorderArcs, or more state information (such as the border radius stuff) needs to be passed down into drawBorder and it needs to draw the arcs.  Neither seems ideal, though duplicating the logic in a drawBorderArcs strikes me as more annoying, but probably less intrusive on the codebase than trying to change the calling format of drawBorder.

I&apos;m willing to look at tackling that, though I&apos;d kind of not mind a sanity-check from someone more familiar with WebCore, before I go off trying to duplicate the Giant Border-Style Switch Statement of Doom or anything. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37421</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-03-23 10:17:03 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; I&apos;m willing to look at tackling that, though I&apos;d kind of not mind a
&gt; sanity-check from someone more familiar with WebCore, before I go off trying to
&gt; duplicate the Giant Border-Style Switch Statement of Doom or anything. :)

I suggest you head over to IRC.  It&apos;s usually easier to ask questions there than via bug comments unless the right person/people are on the CC list.

http://webkit.opendarwin.org/contact.html

A lot of the Mac users on IRC use Colloquy for an IRC client.

http://colloquy.info/
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37454</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-03-23 17:28:37 -0800</bug_when>
    <thetext>Yeah, basically you need a function to draw the rounded borders for every possible style.  I can&apos;t even begin to guess how joins of different styles should work also.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41280</commentid>
    <comment_count>5</comment_count>
      <attachid>8115</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2006-05-04 16:13:24 -0700</bug_when>
    <thetext>Created attachment 8115
Test case that uses -webkit prefix

Here is the same testcase with the -webkit prefix attached to border-radius so that it works with current TOT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43288</commentid>
    <comment_count>6</comment_count>
      <attachid>8484</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2006-05-23 11:24:05 -0700</bug_when>
    <thetext>Created attachment 8484
First shot at border-radius....(incomplete)

Here is a patch for border-radius. Several things about this patch:

1. It is incomplete. It does not yet draw the inset, groove, ridge, or outset styles.
2. My drawBorderArc() function is based largely on drawBorder() but right now, it ignores all cases where adjbw1 and adjbw2 are nonzero. This is mostly because I don&apos;t understand what adjbw1 and adjbw2 are just yet...need to talk to Hyatt or someone about that.
3. I took over the drawArc() function in GraphicsContext to make it specific to what I needed. I think this is fine because drawArc() is never actually called from anywhere in WebCore outside of this patch.

Okay, I think that&apos;s mostly it. Mainly I am just looking for feedback on what I have right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43290</commentid>
    <comment_count>7</comment_count>
      <attachid>8484</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2006-05-23 11:32:42 -0700</bug_when>
    <thetext>Comment on attachment 8484
First shot at border-radius....(incomplete)

wait wait! ignore this patch! i caused a big problem with it accidentally before i posted it. will re-post very soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43294</commentid>
    <comment_count>8</comment_count>
      <attachid>8487</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2006-05-23 11:55:04 -0700</bug_when>
    <thetext>Created attachment 8487
Fixed first shot at border-radius (still incomplete)

Okay, so all of my previous comments about the last patch still apply to this one, except that I added inset and outset while I fixed the previous bug because I realized they were easy to implement. So definite remaining problems with this patch are: 

-ridge and groove are still unimplemented
-still ignoring adjbw1 and adjbw2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43310</commentid>
    <comment_count>9</comment_count>
      <attachid>8487</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-05-23 13:04:06 -0700</bug_when>
    <thetext>Comment on attachment 8487
Fixed first shot at border-radius (still incomplete)

I think this needs some cleanup.
drawArc shoudl have lables on all of its &quot;int&quot; parameters in the header.  The general rule is that we omit parameter names when they don&apos;t add to readabilty of the code (for example ExecState* exec), but we keep them when they do.  In this case, these definitely need lables.

That said, drawArc should also be converted to use the more modern IntRect or possibly FloatRect.  If you do convert to IntRect, you might want to have local float x; float y; float w, etc. variables since pretty much all uses of x, y, w, h, you&apos;re casting directly to floats.

int a and int alen need better names.

Note that you should probalby also look at the cairo implementation of drawArc and see what code can/should be shared.

render_l, render_r render_radii , ignore_left, ignore_right, don&apos;t obey modern style guidelines.

We can talk more in person.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43526</commentid>
    <comment_count>10</comment_count>
      <attachid>8527</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2006-05-24 17:10:11 -0700</bug_when>
    <thetext>Created attachment 8527
Next round...still not ready to land

Here is a new patch. This patch takes care of all of the different border styles. I do not want to land this until I can sit down with Hyatt or someone and talk about some of the edge cases that may or may not require hackery...but I would still like someone to look at this because it is almost ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43691</commentid>
    <comment_count>11</comment_count>
      <attachid>8563</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2006-05-26 14:55:39 -0700</bug_when>
    <thetext>Created attachment 8563
Clips inside arc as well

Okay here is my latest version of the patch. I feel much better about this one than either of the previous two. This patch also adds a clip inside the arc so that some edge cases (like 1 px borders) will now look correct. There are two things I would like to discuss about this patch before it is landed (in addition to any comments people have, of course). First, antialiasing yes or no? This patch that i am posting now leaves antialiasing on, but I have been switching it on and off throughout working on this bug, and I can&apos;t decide which is better. When there is not background color, the borders themselves look significantly better with antialiasing on, but some background colors mix with the antialiased border arcs to make the corners looks a little smudgy. In the end, i may just have to sit down with Hyatt or someone and show both versions and decide which we prefer. The other thing is dotted and dashed. they aren&apos;t perfect but I am not sure how else to do them. It is also possible that we want to just file that as a follow-up bug since getting those styles just right isn&apos;t necessarily our priority right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43923</commentid>
    <comment_count>12</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-05-29 21:22:32 -0700</bug_when>
    <thetext>Beth, can you attach screenshots of samples with anti-aliasing on and off? I really think anti-aliasing should be on to give a nice clean feel, but I would like to see a side-by-side comparison.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44014</commentid>
    <comment_count>13</comment_count>
      <attachid>8602</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2006-05-30 10:55:09 -0700</bug_when>
    <thetext>Created attachment 8602
No antialising, no background color</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44015</commentid>
    <comment_count>14</comment_count>
      <attachid>8603</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2006-05-30 10:55:58 -0700</bug_when>
    <thetext>Created attachment 8603
Antialiasing on, no background color</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44016</commentid>
    <comment_count>15</comment_count>
      <attachid>8604</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2006-05-30 10:56:48 -0700</bug_when>
    <thetext>Created attachment 8604
No antialising, with background color</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44018</commentid>
    <comment_count>16</comment_count>
      <attachid>8605</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2006-05-30 10:57:51 -0700</bug_when>
    <thetext>Created attachment 8605
antialiasing ON, with background color</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44020</commentid>
    <comment_count>17</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2006-05-30 10:59:50 -0700</bug_when>
    <thetext>I attached just a couple of screenshots with and without antialiasing. The problems are most obvious in the double border style (I can barely notice a difference with solid styles), so I only attached photos of double lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44021</commentid>
    <comment_count>18</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2006-05-30 11:04:03 -0700</bug_when>
    <thetext>Don&apos;t know if my vote counts here, but i&apos;m voting in favor of the anti-aliasing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44033</commentid>
    <comment_count>19</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2006-05-30 12:33:37 -0700</bug_when>
    <thetext>I vote in favour of anti-aliasing too, it&apos;s to be left up to the website designer not to use ugly colours ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44061</commentid>
    <comment_count>20</comment_count>
      <attachid>8563</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-05-30 15:51:32 -0700</bug_when>
    <thetext>Comment on attachment 8563
Clips inside arc as well

(1) Turn antialiasing off.
(2) Stub out the Cairo methods and make sure Windows at least compiles.
(3) File a followup bug about double borders.

For double borders I think you want to pretend like you&apos;re drawing two solid borders, so do the outer/inner clip for each line separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44172</commentid>
    <comment_count>21</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2006-05-31 14:39:41 -0700</bug_when>
    <thetext>I committed this fix and filed:

http://bugzilla.opendarwin.org/show_bug.cgi?id=9197 CSS3: Borders with border-radius and double, groove, or ridge styles should look better

http://bugzilla.opendarwin.org/show_bug.cgi?id=9198 border-radius logic in GraphicsContext needs to be written in Cairo</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>5906</attachid>
            <date>2006-01-24 04:51:15 -0800</date>
            <delta_ts>2006-05-04 16:13:24 -0700</delta_ts>
            <desc>Testcase</desc>
            <filename>border-radius.html</filename>
            <type>text/html</type>
            <size>226</size>
            <attacher name="Joost de Valk (AlthA)">joost</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgoJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCQlkaXYgewoJCQl3aWR0aDog
NTBweDsKCQkJaGVpZ2h0OiA1MHB4OwoJCQlib3JkZXI6IDJweCBzb2xpZCAjZjAwOwoJCQlib3Jk
ZXItcmFkaXVzOiAxMHB4OwoJCQliYWNrZ3JvdW5kLWNvbG9yOiAjMGYwOwoJCX0KCTwvc3R5bGU+
CjwvaGVhZD4KPGJvZHk+Cgk8ZGl2PgoJCSZuYnNwOwoJPC9kaXY+CjwvYm9keT4KPC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8115</attachid>
            <date>2006-05-04 16:13:24 -0700</date>
            <delta_ts>2006-05-04 16:13:24 -0700</delta_ts>
            <desc>Test case that uses -webkit prefix</desc>
            <filename>borderRadius.html</filename>
            <type>text/html</type>
            <size>234</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgoJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCQlkaXYgewoJCQl3aWR0aDog
NTBweDsKCQkJaGVpZ2h0OiA1MHB4OwoJCQlib3JkZXI6IDJweCBzb2xpZCAjZjAwOwoJCQktd2Vi
a2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7CgkJCWJhY2tncm91bmQtY29sb3I6ICMwZjA7CgkJfQoJ
PC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KCTxkaXY+CgkJJm5ic3A7Cgk8L2Rpdj4KPC9ib2R5Pgo8
L2h0bWw+
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8484</attachid>
            <date>2006-05-23 11:24:05 -0700</date>
            <delta_ts>2006-05-23 11:32:42 -0700</delta_ts>
            <desc>First shot at border-radius....(incomplete)</desc>
            <filename>tuesdayMorn.txt</filename>
            <type>text/plain</type>
            <size>14488</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IHBsYXRmb3JtL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3Jt
L0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAxNDUzNykKKysrIHBsYXRmb3JtL0dyYXBoaWNz
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgICAgIHZvaWQg
ZHJhd1JlY3QoY29uc3QgSW50UmVjdCYpOwogICAgICAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IElu
dFBvaW50JiwgY29uc3QgSW50UG9pbnQmKTsKICAgICAgICAgdm9pZCBkcmF3RWxsaXBzZShjb25z
dCBJbnRSZWN0Jik7Ci0gICAgICAgIHZvaWQgZHJhd0FyYyhpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50KTsKKyAgICAgICAgdm9pZCBkcmF3QXJjKGludCwgaW50LCBpbnQsIGludCwgZmxvYXQs
IGludCwgaW50KTsKICAgICAgICAgdm9pZCBkcmF3Q29udmV4UG9seWdvbihjb25zdCBJbnRQb2lu
dEFycmF5Jik7CiAKICAgICAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBJbnRSZWN0JiwgY29uc3Qg
Q29sb3ImKTsKSW5kZXg6IHBsYXRmb3JtL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBwbGF0Zm9ybS9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDE0NTM3
KQorKysgcGxhdGZvcm0vY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDYsMjcgKzI0NiwxMDIgQEAKIH0KIAogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0Fy
YyhpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwgaW50IGEsIGludCBhbGVuKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdBcmMoaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsIGZsb2F0IHRo
aWNrbmVzcywgaW50IGEsIGludCBhbGVuKQogeyAKLSAgICAvLyBPbmx5IHN1cHBvcnRzIGFyYyBv
biBjaXJjbGVzLiAgVGhhdCdzIGFsbCBraHRtbCBuZWVkcy4KLSAgICBBU1NFUlQodyA9PSBoKTsK
LQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBpZiAocGVuKCkuc3R5bGUoKSAhPSBQZW46Ok5vUGVuKSB7Ci0gICAgICAgIENHQ29udGV4dFJl
ZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgICAgIENHQ29udGV4dEJlZ2luUGF0
aChjb250ZXh0KTsKKyAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgp
OworICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CisgICAgQ0dDb250ZXh0QmVnaW5Q
YXRoKGNvbnRleHQpOworICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBm
YWxzZSk7CisgICAgCisgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSAoZmxvYXQpaCAvIChmbG9hdCl3
OworICAgIGZsb2F0IHJldmVyc2VTY2FsZUZhY3RvciA9IChmbG9hdCl3IC8gKGZsb2F0KWg7Cisg
ICAgCisgICAgaWYgKHcgIT0gaCkKKyAgICAgICAgc2NhbGUoRmxvYXRTaXplKDEsIHNjYWxlRmFj
dG9yKSk7CisgICAgCisgICAgZmxvYXQgaFJhZGl1cyA9IChmbG9hdCl3IC8gMjsKKyAgICBmbG9h
dCB2UmFkaXVzID0gKGZsb2F0KWggLyAyOworICAgIGZsb2F0IGZhID0gKGZsb2F0KWE7CisgICAg
ZmxvYXQgZmFsZW4gPSAgZmEgKyAoZmxvYXQpYWxlbjsKKyAgICBmbG9hdCBzdGFydCA9IC1mYSAq
IE1fUEkvMTgwOworICAgIGZsb2F0IGVuZCA9IC1mYWxlbiAqIE1fUEkvMTgwOworICAgIENHQ29u
dGV4dEFkZEFyYyhjb250ZXh0LCB4ICsgaFJhZGl1cywgKHkgKyB2UmFkaXVzKSAqIHJldmVyc2VT
Y2FsZUZhY3RvciwgaFJhZGl1cywgc3RhcnQsIGVuZCwgdHJ1ZSk7CisKKyAgICBpZiAodyAhPSBo
KQorICAgICAgICBzY2FsZShGbG9hdFNpemUoMSwgcmV2ZXJzZVNjYWxlRmFjdG9yKSk7CisgICAg
CisgICAgaWYgKHBlbigpLnN0eWxlKCkgPT0gUGVuOjpOb1BlbikgeworICAgICAgICBDR0NvbnRl
eHRTZXRMaW5lV2lkdGgoY29udGV4dCwgdGhpY2tuZXNzKTsKKyAgICAgICAgQ0dDb250ZXh0U3Ry
b2tlUGF0aChjb250ZXh0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBQZW46OlBlblN0eWxlIHBl
blN0eWxlID0gcGVuKCkuc3R5bGUoKTsKKyAgICAgICAgZmxvYXQgd2lkdGggPSBwZW4oKS53aWR0
aCgpOworICAgICAgICBpZiAod2lkdGggPCAxKQorICAgICAgICAgICAgd2lkdGggPSAxOworICAg
ICAgICBpbnQgcGF0V2lkdGggPSAwOwogICAgICAgICAKLSAgICAgICAgZmxvYXQgciA9IChmbG9h
dCl3IC8gMjsKLSAgICAgICAgZmxvYXQgZmEgPSAoZmxvYXQpYSAvIDE2OwotICAgICAgICBmbG9h
dCBmYWxlbiA9ICBmYSArIChmbG9hdClhbGVuIC8gMTY7Ci0gICAgICAgIENHQ29udGV4dEFkZEFy
Yyhjb250ZXh0LCB4ICsgciwgeSArIHIsIHIsIC1mYSAqIE1fUEkvMTgwLCAtZmFsZW4gKiBNX1BJ
LzE4MCwgdHJ1ZSk7CisgICAgICAgIHN3aXRjaCAocGVuU3R5bGUpIHsKKyAgICAgICAgICAgIGNh
c2UgUGVuOjpOb1BlbjoKKyAgICAgICAgICAgIGNhc2UgUGVuOjpTb2xpZExpbmU6CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFBlbjo6RG90TGluZToKKyAgICAgICAg
ICAgICAgICBwYXRXaWR0aCA9IChpbnQpKHdpZHRoIC8gMik7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIFBlbjo6RGFzaExpbmU6CisgICAgICAgICAgICAgICAgcGF0
V2lkdGggPSAzICogKGludCkod2lkdGggLyAyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CisgICAgICAg
IHNldENHU3Ryb2tlQ29sb3IoY29udGV4dCwgcGVuKCkuY29sb3IoKSk7CisKKyAgICAgICAgaWYg
KHBhdFdpZHRoKSB7CisgICAgICAgICAgICAvLyBFeGFtcGxlOiA4MCBwaXhlbHMgd2l0aCBhIHdp
ZHRoIG9mIDMwIHBpeGVscy4KKyAgICAgICAgICAgIC8vIFJlbWFpbmRlciBpcyAyMC4gIFRoZSBt
YXhpbXVtIHBpeGVscyBvZiBsaW5lIHdlIGNvdWxkIHBhaW50CisgICAgICAgICAgICAvLyB3aWxs
IGJlIDUwIHBpeGVscy4KKyAgICAgICAgICAgIGludCBkaXN0YW5jZTsKKyAgICAgICAgICAgIGlm
IChoUmFkaXVzID09IHZSYWRpdXMpCisgICAgICAgICAgICAgICAgZGlzdGFuY2UgPSAoaW50KShN
X1BJICogaFJhZGl1cykgLyAyOworICAgICAgICAgICAgZWxzZSAvLyBXZSBhcmUgZWxsaXB0aWNh
bCBhbmQgd2lsbCBoYXZlIHRvIGVzdGltYXRlIHRoZSBkaXN0YW5jZQorICAgICAgICAgICAgICAg
IGRpc3RhbmNlID0gKGludCkoTV9QSSAqIHNxcnQoKGhSYWRpdXMgKiBoUmFkaXVzICsgdlJhZGl1
cyAqIHZSYWRpdXMpIC8gMikpIC8gMjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IHJl
bWFpbmRlciA9IGRpc3RhbmNlICUgcGF0V2lkdGg7CisgICAgICAgICAgICBpbnQgY292ZXJhZ2Ug
PSBkaXN0YW5jZSAtIHJlbWFpbmRlcjsKKyAgICAgICAgICAgIGludCBudW1TZWdtZW50cyA9IGNv
dmVyYWdlIC8gcGF0V2lkdGg7CisKKyAgICAgICAgICAgIGZsb2F0IHBhdHRlcm5PZmZzZXQgPSAw
OworICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIDFweCBkb3R0ZWQgYm9yZGVycyBmb3Igc3Bl
ZWQuCisgICAgICAgICAgICBpZiAocGF0V2lkdGggPT0gMSkKKyAgICAgICAgICAgICAgICBwYXR0
ZXJuT2Zmc2V0ID0gMS4wOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYm9v
bCBldmVuTnVtYmVyT2ZTZWdtZW50cyA9IG51bVNlZ21lbnRzICUgMiA9PSAwOworICAgICAgICAg
ICAgICAgIGlmIChyZW1haW5kZXIpCisgICAgICAgICAgICAgICAgICAgIGV2ZW5OdW1iZXJPZlNl
Z21lbnRzID0gIWV2ZW5OdW1iZXJPZlNlZ21lbnRzOworICAgICAgICAgICAgICAgIGlmIChldmVu
TnVtYmVyT2ZTZWdtZW50cykgeworICAgICAgICAgICAgICAgICAgICBpZiAocmVtYWluZGVyKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHBhdFdpZHRoIC0gcmVt
YWluZGVyOworICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCArPSByZW1haW5k
ZXIgLyAyOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHBhdHRlcm5PZmZzZXQgPSBwYXRXaWR0aCAvIDI7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlbWFpbmRlcikKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHBhdHRlcm5PZmZzZXQgPSAocGF0V2lkdGggLSByZW1haW5kZXIpLzI7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgc2V0Q0dTdHJva2VD
b2xvcihjb250ZXh0LCBwZW4oKS5jb2xvcigpKTsKLSAgICAgICAgQ0dDb250ZXh0U2V0TGluZVdp
ZHRoKGNvbnRleHQsIHBlbigpLndpZHRoKCkpOworICAgICAgICAgICAgY29uc3QgQ0dGbG9hdCBk
b3R0ZWRMaW5lWzJdID0geyBwYXRXaWR0aCwgcGF0V2lkdGggfTsKKyAgICAgICAgICAgIENHQ29u
dGV4dFNldExpbmVEYXNoKGNvbnRleHQsIHBhdHRlcm5PZmZzZXQsIGRvdHRlZExpbmUsIDIpOwor
ICAgICAgICB9CisgICAgCisgICAgICAgIENHQ29udGV4dFNldExpbmVXaWR0aChjb250ZXh0LCB3
aWR0aCk7CiAgICAgICAgIENHQ29udGV4dFN0cm9rZVBhdGgoY29udGV4dCk7CisgICAgICAgIENH
Q29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CiAgICAgfQorICAgIAorICAgIENHQ29udGV4
dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
Q29udmV4UG9seWdvbihjb25zdCBJbnRQb2ludEFycmF5JiBwb2ludHMpCkluZGV4OiByZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcAkocmV2aXNpb24gMTQ1MzcpCisrKyByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzk4LDYgKzc5OCw2NSBAQAogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
dm9pZCBSZW5kZXJPYmplY3Q6OmRyYXdCb3JkZXJBcmMoR3JhcGhpY3NDb250ZXh0KiBwLCBpbnQg
eCwgaW50IHksIGZsb2F0IHRoaWNrbmVzcywgSW50U2l6ZSByYWRpdXMsIGludCBhbmdsZVN0YXJ0
LCAKKyAgICBpbnQgYW5nbGVTcGFuLCBCb3JkZXJTaWRlIHMsIENvbG9yIGMsIEVCb3JkZXJTdHls
ZSBzdHlsZSwgYm9vbCBmaXJzdENvcm5lcikKK3sKKyAgICBpZihzdHlsZSA9PSBET1VCTEUgJiYg
KCh0aGlja25lc3MgKyAyKSAvIDIpIDwgMykKKyAgICAgICAgc3R5bGUgPSBTT0xJRDsKKyAgICAK
KyAgICBzd2l0Y2ggKHN0eWxlKSB7CisgICAgICAgIGNhc2UgQk5PTkU6CisgICAgICAgIGNhc2Ug
QkhJRERFTjoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBET1RURUQ6CisgICAg
ICAgICAgICBwLT5zZXRQZW4oUGVuKGMsIHRoaWNrbmVzcyA9PSAxID8gMCA6IChpbnQpdGhpY2tu
ZXNzLCBQZW46OkRvdExpbmUpKTsKKyAgICAgICAgY2FzZSBEQVNIRUQ6CisgICAgICAgICAgICBp
ZihzdHlsZSA9PSBEQVNIRUQpCisgICAgICAgICAgICAgICAgcC0+c2V0UGVuKFBlbihjLCB0aGlj
a25lc3MgPT0gMSA/IDAgOiAoaW50KXRoaWNrbmVzcywgUGVuOjpEYXNoTGluZSkpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAodGhpY2tuZXNzID4gMCkgeworICAgICAgICAgICAgICAg
IGlmIChzID09IEJTQm90dG9tIHx8IHMgPT0gQlNUb3ApCisgICAgICAgICAgICAgICAgICAgIHAt
PmRyYXdBcmMoeCwgeSwgcmFkaXVzLndpZHRoKCkgKiAyLCByYWRpdXMuaGVpZ2h0KCkgKiAyLCB0
aGlja25lc3MsIGFuZ2xlU3RhcnQsIGFuZ2xlU3Bhbik7CisgICAgICAgICAgICAgICAgZWxzZSAv
L1dlIGFyZSBkcmF3aW5nIGEgbGVmdCBvciByaWdodCBib3JkZXIKKyAgICAgICAgICAgICAgICAg
ICAgcC0+ZHJhd0FyYyh4LCB5LCByYWRpdXMud2lkdGgoKSAqIDIsIHJhZGl1cy5oZWlnaHQoKSAq
IDIsIHRoaWNrbmVzcywgYW5nbGVTdGFydCwgYW5nbGVTcGFuKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRE9VQkxFOgorICAg
ICAgICAgICAgZmxvYXQgdGhpcmQgPSAodGhpY2tuZXNzICsgMSkgLyAzOworICAgICAgICAgICAg
ZmxvYXQgaW5uZXJUaGlyZCA9ICh0aGlja25lc3MgKyAyKSAvIDY7CisgICAgICAgICAgICBpbnQg
c2hpZnRGb3JJbm5lciA9IGxyb3VuZChpbm5lclRoaXJkICogMi41KTsKKyAgICAgICAgICAgIHAt
PnNldFBlbihQZW46Ok5vUGVuKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IG91dGVy
WSA9IHk7CisgICAgICAgICAgICBpbnQgb3V0ZXJIZWlnaHQgPSByYWRpdXMuaGVpZ2h0KCkgKiAy
OworICAgICAgICAgICAgaW50IGlubmVyWCA9IChpbnQpKHggKyBzaGlmdEZvcklubmVyKTsKKyAg
ICAgICAgICAgIGludCBpbm5lclkgPSAoaW50KSh5ICsgc2hpZnRGb3JJbm5lcik7CisgICAgICAg
ICAgICBpbnQgaW5uZXJXaWR0aCA9IChpbnQpKChyYWRpdXMud2lkdGgoKSAtIHNoaWZ0Rm9ySW5u
ZXIpICogMik7CisgICAgICAgICAgICBpbnQgaW5uZXJIZWlnaHQgPSAoaW50KSgocmFkaXVzLmhl
aWdodCgpIC0gc2hpZnRGb3JJbm5lcikgKiAyKTsKKyAgICAgICAgICAgIGlmIChzID09IEJTVG9w
IHx8IChmaXJzdENvcm5lciAmJiAocyA9PSBCU0xlZnQgfHwgcyA9PSBCU1JpZ2h0KSkpIHsKKyAg
ICAgICAgICAgICAgICBvdXRlclkrKzsKKyAgICAgICAgICAgICAgICBvdXRlckhlaWdodCsrOwor
ICAgICAgICAgICAgICAgIGlubmVyWSsrOworICAgICAgICAgICAgICAgIGlubmVySGVpZ2h0Kys7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHAtPmRyYXdBcmMoeCwg
b3V0ZXJZLCByYWRpdXMud2lkdGgoKSAqIDIsIG91dGVySGVpZ2h0LCB0aGlyZCwgYW5nbGVTdGFy
dCwgYW5nbGVTcGFuKTsKKyAgICAgICAgICAgIHAtPmRyYXdBcmMoaW5uZXJYLCBpbm5lclksIGlu
bmVyV2lkdGgsIGlubmVySGVpZ2h0LCAoaW5uZXJUaGlyZCA+IDIpID8gaW5uZXJUaGlyZCAtIDEg
OiBpbm5lclRoaXJkLAorICAgICAgICAgICAgICAgIGFuZ2xlU3RhcnQsIGFuZ2xlU3Bhbik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJTlNFVDoKKyAgICAgICAgY2FzZSBHUk9P
VkU6CisgICAgICAgIGNhc2UgUklER0U6CisgICAgICAgIGNhc2UgT1VUU0VUOgorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBjYXNlIFNPTElEOgorICAgICAgICAgICAgcC0+c2V0UGVuKFBl
bjo6Tm9QZW4pOworICAgICAgICAgICAgcC0+ZHJhd0FyYyh4LCB5LCByYWRpdXMud2lkdGgoKSAq
IDIsIHJhZGl1cy5oZWlnaHQoKSAqIDIsIHRoaWNrbmVzcywgYW5nbGVTdGFydCwgYW5nbGVTcGFu
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogdm9pZCBSZW5kZXJPYmplY3Q6OmRy
YXdCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiBwLCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQg
eTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3JkZXJTaWRlIHMsIENvbG9yIGMs
IGNvbnN0IENvbG9yJiB0ZXh0Y29sb3IsIEVCb3JkZXJTdHlsZSBzdHlsZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBhZGpidzEsIGludCBhZGpidzIsIGJvb2wgaW52YWxpZGlz
SW52ZXJ0KQpAQCAtMTE3MSw2ICsxMjMwLDEzIEBACiAgICAgICAgIHAtPmFkZFJvdW5kZWRSZWN0
Q2xpcChJbnRSZWN0KF90eCwgX3R5LCB3LCBoKSwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxl
ZnQsIGJvdHRvbVJpZ2h0KTsKICAgICB9CiAKKyAgICBpbnQgZmlyc3RBbmdsZVN0YXJ0LCBzZWNv
bmRBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3Bhbiwgc2Vjb25kQW5nbGVTcGFuOworICAgIGZsb2F0
IHRoaWNrbmVzczsKKyAgICBib29sIHVwcGVyTGVmdEJvcmRlclN0eWxlc01hdGNoID0gcmVuZGVy
X2wgJiYgKHRzID09IGxzKSAmJiAodGMgPT0gbGMpOworICAgIGJvb2wgdXBwZXJSaWdodEJvcmRl
clN0eWxlc01hdGNoID0gcmVuZGVyX3IgJiYgKHRzID09IHJzKSAmJiAodGMgPT0gcmMpOworICAg
IGJvb2wgbG93ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2ggPSByZW5kZXJfbCAmJiAoYnMgPT0gbHMp
ICYmIChiYyA9PSBsYyk7CisgICAgYm9vbCBsb3dlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggPSBy
ZW5kZXJfciAmJiAoYnMgPT0gcnMpICYmIChiYyA9PSByYyk7CisKICAgICBpZiAocmVuZGVyX3Qp
IHsKICAgICAgICAgYm9vbCBpZ25vcmVfbGVmdCA9IChyZW5kZXJfcmFkaWkgJiYgdG9wTGVmdC53
aWR0aCgpID4gMCkgfHwKICAgICAgICAgICAgICgodGMgPT0gbGMpICYmICh0dCA9PSBsdCkgJiYK
QEAgLTExOTIsNiArMTI1OCwzNSBAQAogICAgICAgICBkcmF3Qm9yZGVyKHAsIHgsIF90eSwgeDIs
IF90eSArICBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSwgQlNUb3AsIHRjLCBzdHlsZS0+Y29sb3Io
KSwgdHMsCiAgICAgICAgICAgICAgICAgICAgaWdub3JlX2xlZnQgPyAwIDogc3R5bGUtPmJvcmRl
ckxlZnRXaWR0aCgpLAogICAgICAgICAgICAgICAgICAgIGlnbm9yZV9yaWdodD8gMCA6IHN0eWxl
LT5ib3JkZXJSaWdodFdpZHRoKCkpOworICAgICAgICAKKyAgICAgICAgaWYgKHJlbmRlcl9yYWRp
aSkgeworICAgICAgICAgICAgaW50IGxlZnRYID0gX3R4OworICAgICAgICAgICAgaW50IGxlZnRZ
ID0gX3R5OworICAgICAgICAgICAgaW50IHJpZ2h0WCA9IF90eCArIHcgLSB0b3BSaWdodC53aWR0
aCgpICogMjsKKyAgICAgICAgICAgIGZpcnN0QW5nbGVTdGFydCA9IDkwOworICAgICAgICAgICAg
Zmlyc3RBbmdsZVNwYW4gPSB1cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCA/IDkwIDogNDU7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFdlIG1ha2UgdGhlIGFyYyBkb3VibGUgdGhpY2sg
YW5kIGxldCB0aGUgY2xpcCByZWN0IHRha2UgY2FyZSBvZiBjbGlwcGluZyB0aGUgZXh0cmEgb2Zm
LgorICAgICAgICAgICAgLy8gV2UncmUgZG9pbmcgdGhpcyBiZWNhdXNlIGl0IGRvZXNuJ3Qgc2Vl
bSBwb3NzaWJsZSB0byBtYXRjaCB0aGUgY3VydmUgb2YgdGhlIGNsaXAgZXhhY3RseQorICAgICAg
ICAgICAgLy8gd2l0aCB0aGUgYXJjLWRyYXdpbmcgZnVuY3Rpb24uCisgICAgICAgICAgICB0aGlj
a25lc3MgPSAoc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkgPiAxKSA/IChzdHlsZS0+Ym9yZGVyVG9w
V2lkdGgoKSAtIDEpICogMiA6IHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpICogMjsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgaWYgKHVwcGVyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCkgeworICAg
ICAgICAgICAgICAgIHNlY29uZEFuZ2xlU3RhcnQgPSAwOworICAgICAgICAgICAgICAgIHNlY29u
ZEFuZ2xlU3BhbiA9IDkwOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBz
ZWNvbmRBbmdsZVN0YXJ0ID0gNDU7CisgICAgICAgICAgICAgICAgc2Vjb25kQW5nbGVTcGFuID0g
NDU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIERyYXcgdXBw
ZXIgbGVmdCBhcmMKKyAgICAgICAgICAgIGRyYXdCb3JkZXJBcmMocCwgbGVmdFgsIGxlZnRZLCB0
aGlja25lc3MsIHRvcExlZnQsIGZpcnN0QW5nbGVTdGFydCwgZmlyc3RBbmdsZVNwYW4sCisgICAg
ICAgICAgICAgICAgQlNUb3AsIHRjLCB0cywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAvLyBEcmF3IHVwcGVyIHJpZ2h0IGFyYworICAgICAgICAgICAgZHJhd0JvcmRlckFy
YyhwLCByaWdodFgsIGxlZnRZLCB0aGlja25lc3MsIHRvcFJpZ2h0LCBzZWNvbmRBbmdsZVN0YXJ0
LCBzZWNvbmRBbmdsZVNwYW4sCisgICAgICAgICAgICAgICAgQlNUb3AsIHRjLCB0cywgZmFsc2Up
OworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHJlbmRlcl9iKSB7CkBAIC0xMjE1LDYgKzEz
MTAsMzEgQEAKICAgICAgICAgZHJhd0JvcmRlcihwLCB4LCBfdHkgKyBoIC0gc3R5bGUtPmJvcmRl
ckJvdHRvbVdpZHRoKCksIHgyLCBfdHkgKyBoLCBCU0JvdHRvbSwgYmMsIHN0eWxlLT5jb2xvcigp
LCBicywKICAgICAgICAgICAgICAgICAgICBpZ25vcmVfbGVmdCA/IDAgOnN0eWxlLT5ib3JkZXJM
ZWZ0V2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICBpZ25vcmVfcmlnaHQ/IDAgOnN0eWxlLT5i
b3JkZXJSaWdodFdpZHRoKCkpOworICAgICAgICAKKyAgICAgICAgaWYgKHJlbmRlcl9yYWRpaSkg
eworICAgICAgICAgICAgaW50IGxlZnRYID0gX3R4OworICAgICAgICAgICAgaW50IGxlZnRZID0g
X3R5ICsgaCAgLSBib3R0b21MZWZ0LmhlaWdodCgpICogMjsKKyAgICAgICAgICAgIGludCByaWdo
dFggPSBfdHggKyB3IC0gYm90dG9tUmlnaHQud2lkdGgoKSAqIDI7CisgICAgICAgICAgICBzZWNv
bmRBbmdsZVN0YXJ0ID0gMjcwOworICAgICAgICAgICAgc2Vjb25kQW5nbGVTcGFuID0gdXBwZXJS
aWdodEJvcmRlclN0eWxlc01hdGNoID8gOTAgOiA0NTsKKyAgICAgICAgICAgIHRoaWNrbmVzcyA9
IChzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSA+IDEpID8gKHN0eWxlLT5ib3JkZXJCb3R0b21X
aWR0aCgpIC0gMSkgKiAyIDogc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgKiAyOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAodXBwZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2gpIHsKKyAg
ICAgICAgICAgICAgICBmaXJzdEFuZ2xlU3RhcnQgPSAxODA7CisgICAgICAgICAgICAgICAgZmly
c3RBbmdsZVNwYW4gPSA5MDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
Zmlyc3RBbmdsZVN0YXJ0ID0gMjI1OworICAgICAgICAgICAgICAgIGZpcnN0QW5nbGVTcGFuID0g
IDQ1OworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBEcmF3IGxv
d2VyIGxlZnQgYXJjCisgICAgICAgICAgICBkcmF3Qm9yZGVyQXJjKHAsIGxlZnRYLCBsZWZ0WSwg
dGhpY2tuZXNzLCBib3R0b21MZWZ0LCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAor
ICAgICAgICAgICAgICAgIEJTQm90dG9tLCBiYywgYnMsIHRydWUpOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgLy8gRHJhdyBsb3dlciByaWdodCBhcmMKKyAgICAgICAgICAgIGRyYXdC
b3JkZXJBcmMocCwgcmlnaHRYLCBsZWZ0WSwgdGhpY2tuZXNzLCBib3R0b21SaWdodCwgc2Vjb25k
QW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAorICAgICAgICAgICAgICAgIEJTQm90dG9tLCBi
YywgYnMsIGZhbHNlKTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICBpZiAocmVuZGVyX2wp
IHsKQEAgLTEyMzgsNiArMTM1OCwyNCBAQAogICAgICAgICBkcmF3Qm9yZGVyKHAsIF90eCwgeSwg
X3R4ICsgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCB5MiwgQlNMZWZ0LCBsYywgc3R5bGUtPmNv
bG9yKCksIGxzLAogICAgICAgICAgICAgICAgICAgIGlnbm9yZV90b3A/MDpzdHlsZS0+Ym9yZGVy
VG9wV2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICBpZ25vcmVfYm90dG9tPzA6c3R5bGUtPmJv
cmRlckJvdHRvbVdpZHRoKCkpOworCisgICAgICAgIGlmIChyZW5kZXJfcmFkaWkgJiYgKCF1cHBl
ckxlZnRCb3JkZXJTdHlsZXNNYXRjaCB8fCAhbG93ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2gpKSB7
CisgICAgICAgICAgICBpbnQgdG9wWCA9IF90eDsKKyAgICAgICAgICAgIGludCB0b3BZID0gX3R5
OworICAgICAgICAgICAgaW50IGJvdHRvbVkgPSBfdHkgKyBoICAtIGJvdHRvbUxlZnQuaGVpZ2h0
KCkgKiAyOworICAgICAgICAgICAgZmlyc3RBbmdsZVN0YXJ0ID0gMTM1OworICAgICAgICAgICAg
c2Vjb25kQW5nbGVTdGFydCA9IDE4MDsKKyAgICAgICAgICAgIGZpcnN0QW5nbGVTcGFuID0gc2Vj
b25kQW5nbGVTcGFuID0gNDU7CisgICAgICAgICAgICB0aGlja25lc3MgPSAoc3R5bGUtPmJvcmRl
ckxlZnRXaWR0aCgpID4gMSkgPyAoc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpIC0gMSkgKiAyIDog
c3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpICogMjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Ly8gRHJhdyB0b3AgbGVmdCBhcmMKKyAgICAgICAgICAgIGRyYXdCb3JkZXJBcmMocCwgdG9wWCwg
dG9wWSwgdGhpY2tuZXNzLCB0b3BMZWZ0LCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFu
LAorICAgICAgICAgICAgICAgIEJTTGVmdCwgbGMsIGxzLCB0cnVlKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgLy8gRHJhdyBib3R0b20gbGVmdCBhcmMKKyAgICAgICAgICAgIGRyYXdCb3Jk
ZXJBcmMocCwgdG9wWCwgYm90dG9tWSwgdGhpY2tuZXNzLCBib3R0b21MZWZ0LCBzZWNvbmRBbmds
ZVN0YXJ0LCBzZWNvbmRBbmdsZVNwYW4sCisgICAgICAgICAgICAgICAgQlNMZWZ0LCBsYywgbHMs
IGZhbHNlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChyZW5kZXJfcikgewpAQCAtMTI2
MSw2ICsxMzk5LDI0IEBACiAgICAgICAgIGRyYXdCb3JkZXIocCwgX3R4ICsgdyAtIHN0eWxlLT5i
b3JkZXJSaWdodFdpZHRoKCksIHksIF90eCArIHcsIHkyLCBCU1JpZ2h0LCByYywgc3R5bGUtPmNv
bG9yKCksIHJzLAogICAgICAgICAgICAgICAgICAgIGlnbm9yZV90b3A/MDpzdHlsZS0+Ym9yZGVy
VG9wV2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICBpZ25vcmVfYm90dG9tPzA6c3R5bGUtPmJv
cmRlckJvdHRvbVdpZHRoKCkpOworCisgICAgICAgIGlmIChyZW5kZXJfcmFkaWkgJiYgKCF1cHBl
clJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggfHwgIWxvd2VyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCkp
IHsKKyAgICAgICAgICAgIGludCB0b3BYID0gX3R4ICsgdyAtIHRvcFJpZ2h0LndpZHRoKCkgKiAy
OworICAgICAgICAgICAgaW50IHRvcFkgPSBfdHk7CisgICAgICAgICAgICBpbnQgYm90dG9tWSA9
IF90eSArIGggIC0gYm90dG9tUmlnaHQuaGVpZ2h0KCkgKiAyOworICAgICAgICAgICAgZmlyc3RB
bmdsZVN0YXJ0ID0gMDsgCisgICAgICAgICAgICBzZWNvbmRBbmdsZVN0YXJ0ID0gMzE1OworICAg
ICAgICAgICAgZmlyc3RBbmdsZVNwYW4gPSBzZWNvbmRBbmdsZVNwYW4gPSA0NTsKKyAgICAgICAg
ICAgIHRoaWNrbmVzcyA9IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpID4gMSkgPyAoc3R5bGUt
PmJvcmRlclJpZ2h0V2lkdGgoKSAtIDEpICogMiA6IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkg
KiAyOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBEcmF3IHRvcCByaWdodCBhcmMKKyAg
ICAgICAgICAgIGRyYXdCb3JkZXJBcmMocCwgdG9wWCwgdG9wWSwgdGhpY2tuZXNzLCB0b3BSaWdo
dCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAgICBCU1Jp
Z2h0LCByYywgcnMsIHRydWUpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL0RyYXcgYm90
dG9tIHJpZ2h0IGFyYworICAgICAgICAgICAgZHJhd0JvcmRlckFyYyhwLCB0b3BYLCBib3R0b21Z
LCB0aGlja25lc3MsIGJvdHRvbVJpZ2h0LCBzZWNvbmRBbmdsZVN0YXJ0LCBzZWNvbmRBbmdsZVNw
YW4sCisgICAgICAgICAgICAgICAgQlNSaWdodCwgcmMsIHJzLCBmYWxzZSk7CisgICAgICAgIH0K
ICAgICB9CiAgICAgCiAgICAgaWYgKHJlbmRlcl9yYWRpaSkKSW5kZXg6IHJlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHJldmlz
aW9uIDE0NTM3KQorKysgcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC02OTYsNiArNjk2LDggQEAKICAgICBlbnVtIEJvcmRlclNpZGUgewogICAgICAgICBCU1RvcCwg
QlNCb3R0b20sIEJTTGVmdCwgQlNSaWdodAogICAgIH07CisgICAgdm9pZCBkcmF3Qm9yZGVyQXJj
KEdyYXBoaWNzQ29udGV4dCosIGludCB4LCBpbnQgeSwgZmxvYXQgdGhpY2tuZXNzLCBJbnRTaXpl
IHJhZGl1cywgaW50IGFuZ2xlU3RhcnQsCisgICAgICAgIGludCBhbmdsZVNwYW4sIEJvcmRlclNp
ZGUsIENvbG9yLCBFQm9yZGVyU3R5bGUsIGJvb2wgZmlyc3RDb3JuZXIpOwogICAgIHZvaWQgZHJh
d0JvcmRlcihHcmFwaGljc0NvbnRleHQqLCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQgeTIs
IEJvcmRlclNpZGUsCiAgICAgICAgIENvbG9yLCBjb25zdCBDb2xvciYgdGV4dGNvbG9yLCBFQm9y
ZGVyU3R5bGUsIGludCBhZGpidzEsIGludCBhZGpidzIsIGJvb2wgaW52YWxpZGlzSW52ZXJ0ID0g
ZmFsc2UpOwogCg==
</data>
<flag name="review"
          id="2412"
          type_id="1"
          status="-"
          setter="bdakin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8487</attachid>
            <date>2006-05-23 11:55:04 -0700</date>
            <delta_ts>2006-05-24 17:10:11 -0700</delta_ts>
            <desc>Fixed first shot at border-radius (still incomplete)</desc>
            <filename>newestTuesdayMorn.txt</filename>
            <type>text/plain</type>
            <size>14819</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IHBsYXRmb3JtL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3Jt
L0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAxNDUzNykKKysrIHBsYXRmb3JtL0dyYXBoaWNz
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgICAgIHZvaWQg
ZHJhd1JlY3QoY29uc3QgSW50UmVjdCYpOwogICAgICAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IElu
dFBvaW50JiwgY29uc3QgSW50UG9pbnQmKTsKICAgICAgICAgdm9pZCBkcmF3RWxsaXBzZShjb25z
dCBJbnRSZWN0Jik7Ci0gICAgICAgIHZvaWQgZHJhd0FyYyhpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50KTsKKyAgICAgICAgdm9pZCBkcmF3QXJjKGludCwgaW50LCBpbnQsIGludCwgZmxvYXQs
IGludCwgaW50KTsKICAgICAgICAgdm9pZCBkcmF3Q29udmV4UG9seWdvbihjb25zdCBJbnRQb2lu
dEFycmF5Jik7CiAKICAgICAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBJbnRSZWN0JiwgY29uc3Qg
Q29sb3ImKTsKSW5kZXg6IHBsYXRmb3JtL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBwbGF0Zm9ybS9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDE0NTM3
KQorKysgcGxhdGZvcm0vY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDYsMjcgKzI0NiwxMDMgQEAKIH0KIAogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0Fy
YyhpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwgaW50IGEsIGludCBhbGVuKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdBcmMoaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsIGZsb2F0IHRo
aWNrbmVzcywgaW50IGEsIGludCBhbGVuKQogeyAKLSAgICAvLyBPbmx5IHN1cHBvcnRzIGFyYyBv
biBjaXJjbGVzLiAgVGhhdCdzIGFsbCBraHRtbCBuZWVkcy4KLSAgICBBU1NFUlQodyA9PSBoKTsK
LQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBpZiAocGVuKCkuc3R5bGUoKSAhPSBQZW46Ok5vUGVuKSB7Ci0gICAgICAgIENHQ29udGV4dFJl
ZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgICAgIENHQ29udGV4dEJlZ2luUGF0
aChjb250ZXh0KTsKKyAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgp
OworICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CisgICAgQ0dDb250ZXh0QmVnaW5Q
YXRoKGNvbnRleHQpOworICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBm
YWxzZSk7CisgICAgCisgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSAoZmxvYXQpaCAvIChmbG9hdCl3
OworICAgIGZsb2F0IHJldmVyc2VTY2FsZUZhY3RvciA9IChmbG9hdCl3IC8gKGZsb2F0KWg7Cisg
ICAgCisgICAgaWYgKHcgIT0gaCkKKyAgICAgICAgc2NhbGUoRmxvYXRTaXplKDEsIHNjYWxlRmFj
dG9yKSk7CisgICAgCisgICAgZmxvYXQgaFJhZGl1cyA9IChmbG9hdCl3IC8gMjsKKyAgICBmbG9h
dCB2UmFkaXVzID0gKGZsb2F0KWggLyAyOworICAgIGZsb2F0IGZhID0gKGZsb2F0KWE7CisgICAg
ZmxvYXQgZmFsZW4gPSAgZmEgKyAoZmxvYXQpYWxlbjsKKyAgICBmbG9hdCBzdGFydCA9IC1mYSAq
IE1fUEkvMTgwOworICAgIGZsb2F0IGVuZCA9IC1mYWxlbiAqIE1fUEkvMTgwOworICAgIENHQ29u
dGV4dEFkZEFyYyhjb250ZXh0LCB4ICsgaFJhZGl1cywgKHkgKyB2UmFkaXVzKSAqIHJldmVyc2VT
Y2FsZUZhY3RvciwgaFJhZGl1cywgc3RhcnQsIGVuZCwgdHJ1ZSk7CisKKyAgICBpZiAodyAhPSBo
KQorICAgICAgICBzY2FsZShGbG9hdFNpemUoMSwgcmV2ZXJzZVNjYWxlRmFjdG9yKSk7CisgICAg
CisgICAgaWYgKHBlbigpLnN0eWxlKCkgPT0gUGVuOjpOb1BlbikgeworICAgICAgICBzZXRDR1N0
cm9rZUNvbG9yKGNvbnRleHQsIGZpbGxDb2xvcigpKTsKKyAgICAgICAgQ0dDb250ZXh0U2V0TGlu
ZVdpZHRoKGNvbnRleHQsIHRoaWNrbmVzcyk7CisgICAgICAgIENHQ29udGV4dFN0cm9rZVBhdGgo
Y29udGV4dCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUGVuOjpQZW5TdHlsZSBwZW5TdHlsZSA9
IHBlbigpLnN0eWxlKCk7CisgICAgICAgIGZsb2F0IHdpZHRoID0gcGVuKCkud2lkdGgoKTsKKyAg
ICAgICAgaWYgKHdpZHRoIDwgMSkKKyAgICAgICAgICAgIHdpZHRoID0gMTsKKyAgICAgICAgaW50
IHBhdFdpZHRoID0gMDsKICAgICAgICAgCi0gICAgICAgIGZsb2F0IHIgPSAoZmxvYXQpdyAvIDI7
Ci0gICAgICAgIGZsb2F0IGZhID0gKGZsb2F0KWEgLyAxNjsKLSAgICAgICAgZmxvYXQgZmFsZW4g
PSAgZmEgKyAoZmxvYXQpYWxlbiAvIDE2OwotICAgICAgICBDR0NvbnRleHRBZGRBcmMoY29udGV4
dCwgeCArIHIsIHkgKyByLCByLCAtZmEgKiBNX1BJLzE4MCwgLWZhbGVuICogTV9QSS8xODAsIHRy
dWUpOworICAgICAgICBzd2l0Y2ggKHBlblN0eWxlKSB7CisgICAgICAgICAgICBjYXNlIFBlbjo6
Tm9QZW46CisgICAgICAgICAgICBjYXNlIFBlbjo6U29saWRMaW5lOgorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBQZW46OkRvdExpbmU6CisgICAgICAgICAgICAgICAg
cGF0V2lkdGggPSAoaW50KSh3aWR0aCAvIDIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBQZW46OkRhc2hMaW5lOgorICAgICAgICAgICAgICAgIHBhdFdpZHRoID0g
MyAqIChpbnQpKHdpZHRoIC8gMik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOworICAgICAgICBzZXRDR1N0
cm9rZUNvbG9yKGNvbnRleHQsIHBlbigpLmNvbG9yKCkpOworCisgICAgICAgIGlmIChwYXRXaWR0
aCkgeworICAgICAgICAgICAgLy8gRXhhbXBsZTogODAgcGl4ZWxzIHdpdGggYSB3aWR0aCBvZiAz
MCBwaXhlbHMuCisgICAgICAgICAgICAvLyBSZW1haW5kZXIgaXMgMjAuICBUaGUgbWF4aW11bSBw
aXhlbHMgb2YgbGluZSB3ZSBjb3VsZCBwYWludAorICAgICAgICAgICAgLy8gd2lsbCBiZSA1MCBw
aXhlbHMuCisgICAgICAgICAgICBpbnQgZGlzdGFuY2U7CisgICAgICAgICAgICBpZiAoaFJhZGl1
cyA9PSB2UmFkaXVzKQorICAgICAgICAgICAgICAgIGRpc3RhbmNlID0gKGludCkoTV9QSSAqIGhS
YWRpdXMpIC8gMjsKKyAgICAgICAgICAgIGVsc2UgLy8gV2UgYXJlIGVsbGlwdGljYWwgYW5kIHdp
bGwgaGF2ZSB0byBlc3RpbWF0ZSB0aGUgZGlzdGFuY2UKKyAgICAgICAgICAgICAgICBkaXN0YW5j
ZSA9IChpbnQpKE1fUEkgKiBzcXJ0KChoUmFkaXVzICogaFJhZGl1cyArIHZSYWRpdXMgKiB2UmFk
aXVzKSAvIDIpKSAvIDI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCByZW1haW5kZXIg
PSBkaXN0YW5jZSAlIHBhdFdpZHRoOworICAgICAgICAgICAgaW50IGNvdmVyYWdlID0gZGlzdGFu
Y2UgLSByZW1haW5kZXI7CisgICAgICAgICAgICBpbnQgbnVtU2VnbWVudHMgPSBjb3ZlcmFnZSAv
IHBhdFdpZHRoOworCisgICAgICAgICAgICBmbG9hdCBwYXR0ZXJuT2Zmc2V0ID0gMDsKKyAgICAg
ICAgICAgIC8vIFNwZWNpYWwgY2FzZSAxcHggZG90dGVkIGJvcmRlcnMgZm9yIHNwZWVkLgorICAg
ICAgICAgICAgaWYgKHBhdFdpZHRoID09IDEpCisgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNl
dCA9IDEuMDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGJvb2wgZXZlbk51
bWJlck9mU2VnbWVudHMgPSBudW1TZWdtZW50cyAlIDIgPT0gMDsKKyAgICAgICAgICAgICAgICBp
ZiAocmVtYWluZGVyKQorICAgICAgICAgICAgICAgICAgICBldmVuTnVtYmVyT2ZTZWdtZW50cyA9
ICFldmVuTnVtYmVyT2ZTZWdtZW50czsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbk51bWJlck9m
U2VnbWVudHMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlbWFpbmRlcikgeworICAgICAg
ICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCArPSBwYXRXaWR0aCAtIHJlbWFpbmRlcjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQgKz0gcmVtYWluZGVyIC8gMjsK
KyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwYXR0
ZXJuT2Zmc2V0ID0gcGF0V2lkdGggLyAyOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChyZW1haW5kZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBw
YXR0ZXJuT2Zmc2V0ID0gKHBhdFdpZHRoIC0gcmVtYWluZGVyKS8yOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHNldENHU3Ryb2tlQ29sb3IoY29u
dGV4dCwgcGVuKCkuY29sb3IoKSk7Ci0gICAgICAgIENHQ29udGV4dFNldExpbmVXaWR0aChjb250
ZXh0LCBwZW4oKS53aWR0aCgpKTsKKyAgICAgICAgICAgIGNvbnN0IENHRmxvYXQgZG90dGVkTGlu
ZVsyXSA9IHsgcGF0V2lkdGgsIHBhdFdpZHRoIH07CisgICAgICAgICAgICBDR0NvbnRleHRTZXRM
aW5lRGFzaChjb250ZXh0LCBwYXR0ZXJuT2Zmc2V0LCBkb3R0ZWRMaW5lLCAyKTsKKyAgICAgICAg
fQorICAgIAorICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgd2lkdGgpOwog
ICAgICAgICBDR0NvbnRleHRTdHJva2VQYXRoKGNvbnRleHQpOworICAgICAgICBDR0NvbnRleHRS
ZXN0b3JlR1N0YXRlKGNvbnRleHQpOwogICAgIH0KKyAgICAKKyAgICBDR0NvbnRleHRSZXN0b3Jl
R1N0YXRlKGNvbnRleHQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnZleFBv
bHlnb24oY29uc3QgSW50UG9pbnRBcnJheSYgcG9pbnRzKQpJbmRleDogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJl
dmlzaW9uIDE0NTM3KQorKysgcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc5OCw2ICs3OTgsNzAgQEAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgUmVu
ZGVyT2JqZWN0OjpkcmF3Qm9yZGVyQXJjKEdyYXBoaWNzQ29udGV4dCogcCwgaW50IHgsIGludCB5
LCBmbG9hdCB0aGlja25lc3MsIEludFNpemUgcmFkaXVzLCBpbnQgYW5nbGVTdGFydCwgCisgICAg
aW50IGFuZ2xlU3BhbiwgQm9yZGVyU2lkZSBzLCBDb2xvciBjLCBFQm9yZGVyU3R5bGUgc3R5bGUs
IGJvb2wgZmlyc3RDb3JuZXIpCit7CisgICAgaWYoc3R5bGUgPT0gRE9VQkxFICYmICgodGhpY2tu
ZXNzICsgMikgLyAyKSA8IDMpCisgICAgICAgIHN0eWxlID0gU09MSUQ7CisgICAgCisgICAgc3dp
dGNoIChzdHlsZSkgeworICAgICAgICBjYXNlIEJOT05FOgorICAgICAgICBjYXNlIEJISURERU46
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgRE9UVEVEOgorICAgICAgICAgICAg
cC0+c2V0UGVuKFBlbihjLCB0aGlja25lc3MgPT0gMSA/IDAgOiAoaW50KXRoaWNrbmVzcywgUGVu
OjpEb3RMaW5lKSk7CisgICAgICAgIGNhc2UgREFTSEVEOgorICAgICAgICAgICAgaWYoc3R5bGUg
PT0gREFTSEVEKQorICAgICAgICAgICAgICAgIHAtPnNldFBlbihQZW4oYywgdGhpY2tuZXNzID09
IDEgPyAwIDogKGludCl0aGlja25lc3MsIFBlbjo6RGFzaExpbmUpKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgaWYgKHRoaWNrbmVzcyA+IDApIHsKKyAgICAgICAgICAgICAgICBpZiAocyA9
PSBCU0JvdHRvbSB8fCBzID09IEJTVG9wKQorICAgICAgICAgICAgICAgICAgICBwLT5kcmF3QXJj
KHgsIHksIHJhZGl1cy53aWR0aCgpICogMiwgcmFkaXVzLmhlaWdodCgpICogMiwgdGhpY2tuZXNz
LCBhbmdsZVN0YXJ0LCBhbmdsZVNwYW4pOworICAgICAgICAgICAgICAgIGVsc2UgLy9XZSBhcmUg
ZHJhd2luZyBhIGxlZnQgb3IgcmlnaHQgYm9yZGVyCisgICAgICAgICAgICAgICAgICAgIHAtPmRy
YXdBcmMoeCwgeSwgcmFkaXVzLndpZHRoKCkgKiAyLCByYWRpdXMuaGVpZ2h0KCkgKiAyLCB0aGlj
a25lc3MsIGFuZ2xlU3RhcnQsIGFuZ2xlU3Bhbik7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERPVUJMRToKKyAgICAgICAgICAg
IGZsb2F0IHRoaXJkID0gKHRoaWNrbmVzcyArIDEpIC8gMzsKKyAgICAgICAgICAgIGZsb2F0IGlu
bmVyVGhpcmQgPSAodGhpY2tuZXNzICsgMikgLyA2OworICAgICAgICAgICAgaW50IHNoaWZ0Rm9y
SW5uZXIgPSBscm91bmQoaW5uZXJUaGlyZCAqIDIuNSk7CisgICAgICAgICAgICBwLT5zZXRQZW4o
UGVuOjpOb1Blbik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCBvdXRlclkgPSB5Owor
ICAgICAgICAgICAgaW50IG91dGVySGVpZ2h0ID0gcmFkaXVzLmhlaWdodCgpICogMjsKKyAgICAg
ICAgICAgIGludCBpbm5lclggPSAoaW50KSh4ICsgc2hpZnRGb3JJbm5lcik7CisgICAgICAgICAg
ICBpbnQgaW5uZXJZID0gKGludCkoeSArIHNoaWZ0Rm9ySW5uZXIpOworICAgICAgICAgICAgaW50
IGlubmVyV2lkdGggPSAoaW50KSgocmFkaXVzLndpZHRoKCkgLSBzaGlmdEZvcklubmVyKSAqIDIp
OworICAgICAgICAgICAgaW50IGlubmVySGVpZ2h0ID0gKGludCkoKHJhZGl1cy5oZWlnaHQoKSAt
IHNoaWZ0Rm9ySW5uZXIpICogMik7CisgICAgICAgICAgICBpZiAocyA9PSBCU1RvcCB8fCAoZmly
c3RDb3JuZXIgJiYgKHMgPT0gQlNMZWZ0IHx8IHMgPT0gQlNSaWdodCkpKSB7CisgICAgICAgICAg
ICAgICAgb3V0ZXJZKys7CisgICAgICAgICAgICAgICAgb3V0ZXJIZWlnaHQrKzsKKyAgICAgICAg
ICAgICAgICBpbm5lclkrKzsKKyAgICAgICAgICAgICAgICBpbm5lckhlaWdodCsrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBwLT5kcmF3QXJjKHgsIG91dGVyWSwg
cmFkaXVzLndpZHRoKCkgKiAyLCBvdXRlckhlaWdodCwgdGhpcmQsIGFuZ2xlU3RhcnQsIGFuZ2xl
U3Bhbik7CisgICAgICAgICAgICBwLT5kcmF3QXJjKGlubmVyWCwgaW5uZXJZLCBpbm5lcldpZHRo
LCBpbm5lckhlaWdodCwgKGlubmVyVGhpcmQgPiAyKSA/IGlubmVyVGhpcmQgLSAxIDogaW5uZXJU
aGlyZCwKKyAgICAgICAgICAgICAgICBhbmdsZVN0YXJ0LCBhbmdsZVNwYW4pOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1JPT1ZFOgorICAgICAgICBjYXNlIFJJREdFOgorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIElOU0VUOgorICAgICAgICAgICAgaWYocyA9
PSBCU1RvcCB8fCBzID09IEJTTGVmdCkKKyAgICAgICAgICAgICAgICBjID0gYy5kYXJrKCk7Cisg
ICAgICAgIGNhc2UgT1VUU0VUOgorICAgICAgICAgICAgaWYoc3R5bGUgPT0gT1VUU0VUICYmIChz
ID09IEJTQm90dG9tIHx8IHMgPT0gQlNSaWdodCkpCisgICAgICAgICAgICAgICAgYyA9IGMuZGFy
aygpOworICAgICAgICBjYXNlIFNPTElEOgorICAgICAgICAgICAgcC0+c2V0UGVuKFBlbjo6Tm9Q
ZW4pOworICAgICAgICAgICAgcC0+c2V0RmlsbENvbG9yKGMucmdiKCkpOworICAgICAgICAgICAg
cC0+ZHJhd0FyYyh4LCB5LCByYWRpdXMud2lkdGgoKSAqIDIsIHJhZGl1cy5oZWlnaHQoKSAqIDIs
IHRoaWNrbmVzcywgYW5nbGVTdGFydCwgYW5nbGVTcGFuKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgIH0KK30KKwogdm9pZCBSZW5kZXJPYmplY3Q6OmRyYXdCb3JkZXIoR3JhcGhpY3NDb250ZXh0
KiBwLCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQgeTIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBCb3JkZXJTaWRlIHMsIENvbG9yIGMsIGNvbnN0IENvbG9yJiB0ZXh0Y29sb3Is
IEVCb3JkZXJTdHlsZSBzdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBh
ZGpidzEsIGludCBhZGpidzIsIGJvb2wgaW52YWxpZGlzSW52ZXJ0KQpAQCAtMTE3MSw2ICsxMjM1
LDEzIEBACiAgICAgICAgIHAtPmFkZFJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KF90eCwgX3R5LCB3
LCBoKSwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKICAgICB9
CiAKKyAgICBpbnQgZmlyc3RBbmdsZVN0YXJ0LCBzZWNvbmRBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xl
U3Bhbiwgc2Vjb25kQW5nbGVTcGFuOworICAgIGZsb2F0IHRoaWNrbmVzczsKKyAgICBib29sIHVw
cGVyTGVmdEJvcmRlclN0eWxlc01hdGNoID0gcmVuZGVyX2wgJiYgKHRzID09IGxzKSAmJiAodGMg
PT0gbGMpICYmICh0cyAhPSBJTlNFVCk7CisgICAgYm9vbCB1cHBlclJpZ2h0Qm9yZGVyU3R5bGVz
TWF0Y2ggPSByZW5kZXJfciAmJiAodHMgPT0gcnMpICYmICh0YyA9PSByYykgJiYgKHRzICE9IE9V
VFNFVCk7CisgICAgYm9vbCBsb3dlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCA9IHJlbmRlcl9sICYm
IChicyA9PSBscykgJiYgKGJjID09IGxjKSAmJiAoYnMgIT0gT1VUU0VUKTsKKyAgICBib29sIGxv
d2VyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCA9IHJlbmRlcl9yICYmIChicyA9PSBycykgJiYgKGJj
ID09IHJjKSAmJiAoYnMgIT0gSU5TRVQpOworCiAgICAgaWYgKHJlbmRlcl90KSB7CiAgICAgICAg
IGJvb2wgaWdub3JlX2xlZnQgPSAocmVuZGVyX3JhZGlpICYmIHRvcExlZnQud2lkdGgoKSA+IDAp
IHx8CiAgICAgICAgICAgICAoKHRjID09IGxjKSAmJiAodHQgPT0gbHQpICYmCkBAIC0xMTkyLDYg
KzEyNjMsMzUgQEAKICAgICAgICAgZHJhd0JvcmRlcihwLCB4LCBfdHksIHgyLCBfdHkgKyAgc3R5
bGUtPmJvcmRlclRvcFdpZHRoKCksIEJTVG9wLCB0Yywgc3R5bGUtPmNvbG9yKCksIHRzLAogICAg
ICAgICAgICAgICAgICAgIGlnbm9yZV9sZWZ0ID8gMCA6IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgo
KSwKICAgICAgICAgICAgICAgICAgICBpZ25vcmVfcmlnaHQ/IDAgOiBzdHlsZS0+Ym9yZGVyUmln
aHRXaWR0aCgpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChyZW5kZXJfcmFkaWkpIHsKKyAgICAg
ICAgICAgIGludCBsZWZ0WCA9IF90eDsKKyAgICAgICAgICAgIGludCBsZWZ0WSA9IF90eTsKKyAg
ICAgICAgICAgIGludCByaWdodFggPSBfdHggKyB3IC0gdG9wUmlnaHQud2lkdGgoKSAqIDI7Cisg
ICAgICAgICAgICBmaXJzdEFuZ2xlU3RhcnQgPSA5MDsKKyAgICAgICAgICAgIGZpcnN0QW5nbGVT
cGFuID0gdXBwZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2ggPyA5MCA6IDQ1OworICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBXZSBtYWtlIHRoZSBhcmMgZG91YmxlIHRoaWNrIGFuZCBsZXQgdGhl
IGNsaXAgcmVjdCB0YWtlIGNhcmUgb2YgY2xpcHBpbmcgdGhlIGV4dHJhIG9mZi4KKyAgICAgICAg
ICAgIC8vIFdlJ3JlIGRvaW5nIHRoaXMgYmVjYXVzZSBpdCBkb2Vzbid0IHNlZW0gcG9zc2libGUg
dG8gbWF0Y2ggdGhlIGN1cnZlIG9mIHRoZSBjbGlwIGV4YWN0bHkKKyAgICAgICAgICAgIC8vIHdp
dGggdGhlIGFyYy1kcmF3aW5nIGZ1bmN0aW9uLgorICAgICAgICAgICAgdGhpY2tuZXNzID0gKHN0
eWxlLT5ib3JkZXJUb3BXaWR0aCgpID4gMSkgPyAoc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkgLSAx
KSAqIDIgOiBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSAqIDI7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGlmICh1cHBlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2gpIHsKKyAgICAgICAgICAgICAg
ICBzZWNvbmRBbmdsZVN0YXJ0ID0gMDsKKyAgICAgICAgICAgICAgICBzZWNvbmRBbmdsZVNwYW4g
PSA5MDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2Vjb25kQW5nbGVT
dGFydCA9IDQ1OworICAgICAgICAgICAgICAgIHNlY29uZEFuZ2xlU3BhbiA9IDQ1OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBEcmF3IHVwcGVyIGxlZnQgYXJj
CisgICAgICAgICAgICBkcmF3Qm9yZGVyQXJjKHAsIGxlZnRYLCBsZWZ0WSwgdGhpY2tuZXNzLCB0
b3BMZWZ0LCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAorICAgICAgICAgICAgICAg
IEJTVG9wLCB0YywgdHMsIHRydWUpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgLy8g
RHJhdyB1cHBlciByaWdodCBhcmMKKyAgICAgICAgICAgIGRyYXdCb3JkZXJBcmMocCwgcmlnaHRY
LCBsZWZ0WSwgdGhpY2tuZXNzLCB0b3BSaWdodCwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5n
bGVTcGFuLAorICAgICAgICAgICAgICAgIEJTVG9wLCB0YywgdHMsIGZhbHNlKTsKKyAgICAgICAg
fQogICAgIH0KIAogICAgIGlmIChyZW5kZXJfYikgewpAQCAtMTIxNSw2ICsxMzE1LDMxIEBACiAg
ICAgICAgIGRyYXdCb3JkZXIocCwgeCwgX3R5ICsgaCAtIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0
aCgpLCB4MiwgX3R5ICsgaCwgQlNCb3R0b20sIGJjLCBzdHlsZS0+Y29sb3IoKSwgYnMsCiAgICAg
ICAgICAgICAgICAgICAgaWdub3JlX2xlZnQgPyAwIDpzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCks
CiAgICAgICAgICAgICAgICAgICAgaWdub3JlX3JpZ2h0PyAwIDpzdHlsZS0+Ym9yZGVyUmlnaHRX
aWR0aCgpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChyZW5kZXJfcmFkaWkpIHsKKyAgICAgICAg
ICAgIGludCBsZWZ0WCA9IF90eDsKKyAgICAgICAgICAgIGludCBsZWZ0WSA9IF90eSArIGggIC0g
Ym90dG9tTGVmdC5oZWlnaHQoKSAqIDI7CisgICAgICAgICAgICBpbnQgcmlnaHRYID0gX3R4ICsg
dyAtIGJvdHRvbVJpZ2h0LndpZHRoKCkgKiAyOworICAgICAgICAgICAgc2Vjb25kQW5nbGVTdGFy
dCA9IDI3MDsKKyAgICAgICAgICAgIHNlY29uZEFuZ2xlU3BhbiA9IHVwcGVyUmlnaHRCb3JkZXJT
dHlsZXNNYXRjaCA/IDkwIDogNDU7CisgICAgICAgICAgICB0aGlja25lc3MgPSAoc3R5bGUtPmJv
cmRlckJvdHRvbVdpZHRoKCkgPiAxKSA/IChzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSAtIDEp
ICogMiA6IHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpICogMjsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgKHVwcGVyTGVmdEJvcmRlclN0eWxlc01hdGNoKSB7CisgICAgICAgICAgICAg
ICAgZmlyc3RBbmdsZVN0YXJ0ID0gMTgwOworICAgICAgICAgICAgICAgIGZpcnN0QW5nbGVTcGFu
ID0gOTA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGZpcnN0QW5nbGVT
dGFydCA9IDIyNTsKKyAgICAgICAgICAgICAgICBmaXJzdEFuZ2xlU3BhbiA9ICA0NTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gRHJhdyBsb3dlciBsZWZ0IGFy
YworICAgICAgICAgICAgZHJhd0JvcmRlckFyYyhwLCBsZWZ0WCwgbGVmdFksIHRoaWNrbmVzcywg
Ym90dG9tTGVmdCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwKKyAgICAgICAgICAg
ICAgICBCU0JvdHRvbSwgYmMsIGJzLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIC8vIERyYXcgbG93ZXIgcmlnaHQgYXJjCisgICAgICAgICAgICBkcmF3Qm9yZGVyQXJjKHAs
IHJpZ2h0WCwgbGVmdFksIHRoaWNrbmVzcywgYm90dG9tUmlnaHQsIHNlY29uZEFuZ2xlU3RhcnQs
IHNlY29uZEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAgICBCU0JvdHRvbSwgYmMsIGJzLCBmYWxz
ZSk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgaWYgKHJlbmRlcl9sKSB7CkBAIC0xMjM4
LDYgKzEzNjMsMjQgQEAKICAgICAgICAgZHJhd0JvcmRlcihwLCBfdHgsIHksIF90eCArIHN0eWxl
LT5ib3JkZXJMZWZ0V2lkdGgoKSwgeTIsIEJTTGVmdCwgbGMsIHN0eWxlLT5jb2xvcigpLCBscywK
ICAgICAgICAgICAgICAgICAgICBpZ25vcmVfdG9wPzA6c3R5bGUtPmJvcmRlclRvcFdpZHRoKCks
CiAgICAgICAgICAgICAgICAgICAgaWdub3JlX2JvdHRvbT8wOnN0eWxlLT5ib3JkZXJCb3R0b21X
aWR0aCgpKTsKKworICAgICAgICBpZiAocmVuZGVyX3JhZGlpICYmICghdXBwZXJMZWZ0Qm9yZGVy
U3R5bGVzTWF0Y2ggfHwgIWxvd2VyTGVmdEJvcmRlclN0eWxlc01hdGNoKSkgeworICAgICAgICAg
ICAgaW50IHRvcFggPSBfdHg7CisgICAgICAgICAgICBpbnQgdG9wWSA9IF90eTsKKyAgICAgICAg
ICAgIGludCBib3R0b21ZID0gX3R5ICsgaCAgLSBib3R0b21MZWZ0LmhlaWdodCgpICogMjsKKyAg
ICAgICAgICAgIGZpcnN0QW5nbGVTdGFydCA9IDEzNTsKKyAgICAgICAgICAgIHNlY29uZEFuZ2xl
U3RhcnQgPSAxODA7CisgICAgICAgICAgICBmaXJzdEFuZ2xlU3BhbiA9IHNlY29uZEFuZ2xlU3Bh
biA9IDQ1OworICAgICAgICAgICAgdGhpY2tuZXNzID0gKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgo
KSA+IDEpID8gKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSAtIDEpICogMiA6IHN0eWxlLT5ib3Jk
ZXJMZWZ0V2lkdGgoKSAqIDI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIERyYXcgdG9w
IGxlZnQgYXJjCisgICAgICAgICAgICBkcmF3Qm9yZGVyQXJjKHAsIHRvcFgsIHRvcFksIHRoaWNr
bmVzcywgdG9wTGVmdCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwKKyAgICAgICAg
ICAgICAgICBCU0xlZnQsIGxjLCBscywgdHJ1ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IC8vIERyYXcgYm90dG9tIGxlZnQgYXJjCisgICAgICAgICAgICBkcmF3Qm9yZGVyQXJjKHAsIHRv
cFgsIGJvdHRvbVksIHRoaWNrbmVzcywgYm90dG9tTGVmdCwgc2Vjb25kQW5nbGVTdGFydCwgc2Vj
b25kQW5nbGVTcGFuLAorICAgICAgICAgICAgICAgIEJTTGVmdCwgbGMsIGxzLCBmYWxzZSk7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICBpZiAocmVuZGVyX3IpIHsKQEAgLTEyNjEsNiArMTQwNCwy
NCBAQAogICAgICAgICBkcmF3Qm9yZGVyKHAsIF90eCArIHcgLSBzdHlsZS0+Ym9yZGVyUmlnaHRX
aWR0aCgpLCB5LCBfdHggKyB3LCB5MiwgQlNSaWdodCwgcmMsIHN0eWxlLT5jb2xvcigpLCBycywK
ICAgICAgICAgICAgICAgICAgICBpZ25vcmVfdG9wPzA6c3R5bGUtPmJvcmRlclRvcFdpZHRoKCks
CiAgICAgICAgICAgICAgICAgICAgaWdub3JlX2JvdHRvbT8wOnN0eWxlLT5ib3JkZXJCb3R0b21X
aWR0aCgpKTsKKworICAgICAgICBpZiAocmVuZGVyX3JhZGlpICYmICghdXBwZXJSaWdodEJvcmRl
clN0eWxlc01hdGNoIHx8ICFsb3dlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2gpKSB7CisgICAgICAg
ICAgICBpbnQgdG9wWCA9IF90eCArIHcgLSB0b3BSaWdodC53aWR0aCgpICogMjsKKyAgICAgICAg
ICAgIGludCB0b3BZID0gX3R5OworICAgICAgICAgICAgaW50IGJvdHRvbVkgPSBfdHkgKyBoICAt
IGJvdHRvbVJpZ2h0LmhlaWdodCgpICogMjsKKyAgICAgICAgICAgIGZpcnN0QW5nbGVTdGFydCA9
IDA7IAorICAgICAgICAgICAgc2Vjb25kQW5nbGVTdGFydCA9IDMxNTsKKyAgICAgICAgICAgIGZp
cnN0QW5nbGVTcGFuID0gc2Vjb25kQW5nbGVTcGFuID0gNDU7CisgICAgICAgICAgICB0aGlja25l
c3MgPSAoc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSA+IDEpID8gKHN0eWxlLT5ib3JkZXJSaWdo
dFdpZHRoKCkgLSAxKSAqIDIgOiBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpICogMjsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgLy8gRHJhdyB0b3AgcmlnaHQgYXJjCisgICAgICAgICAgICBk
cmF3Qm9yZGVyQXJjKHAsIHRvcFgsIHRvcFksIHRoaWNrbmVzcywgdG9wUmlnaHQsIGZpcnN0QW5n
bGVTdGFydCwgZmlyc3RBbmdsZVNwYW4sCisgICAgICAgICAgICAgICAgQlNSaWdodCwgcmMsIHJz
LCB0cnVlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9EcmF3IGJvdHRvbSByaWdodCBh
cmMKKyAgICAgICAgICAgIGRyYXdCb3JkZXJBcmMocCwgdG9wWCwgYm90dG9tWSwgdGhpY2tuZXNz
LCBib3R0b21SaWdodCwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAorICAgICAg
ICAgICAgICAgIEJTUmlnaHQsIHJjLCBycywgZmFsc2UpOworICAgICAgICB9CiAgICAgfQogICAg
IAogICAgIGlmIChyZW5kZXJfcmFkaWkpCkluZGV4OiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxNDUzNykK
KysrIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjk2LDYgKzY5
Niw4IEBACiAgICAgZW51bSBCb3JkZXJTaWRlIHsKICAgICAgICAgQlNUb3AsIEJTQm90dG9tLCBC
U0xlZnQsIEJTUmlnaHQKICAgICB9OworICAgIHZvaWQgZHJhd0JvcmRlckFyYyhHcmFwaGljc0Nv
bnRleHQqLCBpbnQgeCwgaW50IHksIGZsb2F0IHRoaWNrbmVzcywgSW50U2l6ZSByYWRpdXMsIGlu
dCBhbmdsZVN0YXJ0LAorICAgICAgICBpbnQgYW5nbGVTcGFuLCBCb3JkZXJTaWRlLCBDb2xvciwg
RUJvcmRlclN0eWxlLCBib29sIGZpcnN0Q29ybmVyKTsKICAgICB2b2lkIGRyYXdCb3JkZXIoR3Jh
cGhpY3NDb250ZXh0KiwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyLCBCb3JkZXJTaWRl
LAogICAgICAgICBDb2xvciwgY29uc3QgQ29sb3ImIHRleHRjb2xvciwgRUJvcmRlclN0eWxlLCBp
bnQgYWRqYncxLCBpbnQgYWRqYncyLCBib29sIGludmFsaWRpc0ludmVydCA9IGZhbHNlKTsKIAo=
</data>
<flag name="review"
          id="2414"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8527</attachid>
            <date>2006-05-24 17:10:11 -0700</date>
            <delta_ts>2006-05-26 14:55:39 -0700</delta_ts>
            <desc>Next round...still not ready to land</desc>
            <filename>wedAfternoon.txt</filename>
            <type>text/plain</type>
            <size>21683</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IHBsYXRmb3JtL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3Jt
L0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAxNDU2MCkKKysrIHBsYXRmb3JtL0dyYXBoaWNz
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgICAgIHZvaWQg
ZHJhd1JlY3QoY29uc3QgSW50UmVjdCYpOwogICAgICAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IElu
dFBvaW50JiwgY29uc3QgSW50UG9pbnQmKTsKICAgICAgICAgdm9pZCBkcmF3RWxsaXBzZShjb25z
dCBJbnRSZWN0Jik7Ci0gICAgICAgIHZvaWQgZHJhd0FyYyhpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50KTsKKyAgICAgICAgdm9pZCBkcmF3QXJjKGNvbnN0IEludFJlY3QmLCBmbG9hdCB0aGlj
a25lc3MsIGludCBzdGFydEFuZ2xlLCBpbnQgYW5nbGVTcGFuKTsKICAgICAgICAgdm9pZCBkcmF3
Q29udmV4UG9seWdvbihjb25zdCBJbnRQb2ludEFycmF5Jik7CiAKICAgICAgICAgdm9pZCBmaWxs
UmVjdChjb25zdCBJbnRSZWN0JiwgY29uc3QgQ29sb3ImKTsKSW5kZXg6IHBsYXRmb3JtL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAJKHJldmlzaW9uIDE0NTYwKQorKysgcGxhdGZvcm0vY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDYsMjcgKzI0NiwxMDcgQEAKIH0KIAogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0FyYyhpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwg
aW50IGEsIGludCBhbGVuKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdBcmMoY29uc3QgSW50
UmVjdCYgcmVjdCwgZmxvYXQgdGhpY2tuZXNzLCBpbnQgc3RhcnRBbmdsZSwgaW50IGFuZ2xlU3Bh
bikKIHsgCi0gICAgLy8gT25seSBzdXBwb3J0cyBhcmMgb24gY2lyY2xlcy4gIFRoYXQncyBhbGwg
a2h0bWwgbmVlZHMuCi0gICAgQVNTRVJUKHcgPT0gaCk7Ci0KICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKHBlbigpLnN0eWxlKCkgIT0g
UGVuOjpOb1BlbikgewotICAgICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29u
dGV4dCgpOwotICAgICAgICBDR0NvbnRleHRCZWdpblBhdGgoY29udGV4dCk7CisgICAgQ0dDb250
ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRTYXZlR1N0
YXRlKGNvbnRleHQpOworICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKKyAgICBDR0Nv
bnRleHRTZXRTaG91bGRBbnRpYWxpYXMoY29udGV4dCwgZmFsc2UpOworICAgIAorICAgIGludCB4
ID0gcmVjdC54KCk7CisgICAgaW50IHkgPSByZWN0LnkoKTsKKyAgICBmbG9hdCB3ID0gKGZsb2F0
KXJlY3Qud2lkdGgoKTsKKyAgICBmbG9hdCBoID0gKGZsb2F0KXJlY3QuaGVpZ2h0KCk7CisgICAg
ZmxvYXQgc2NhbGVGYWN0b3IgPSBoIC8gdzsKKyAgICBmbG9hdCByZXZlcnNlU2NhbGVGYWN0b3Ig
PSB3IC8gaDsKKyAgICAKKyAgICBpZiAodyAhPSBoKQorICAgICAgICBzY2FsZShGbG9hdFNpemUo
MSwgc2NhbGVGYWN0b3IpKTsKKyAgICAKKyAgICBmbG9hdCBoUmFkaXVzID0gdyAvIDI7CisgICAg
ZmxvYXQgdlJhZGl1cyA9IGggLyAyOworICAgIGZsb2F0IGZhID0gc3RhcnRBbmdsZTsKKyAgICBm
bG9hdCBmYWxlbiA9ICBmYSArIGFuZ2xlU3BhbjsKKyAgICBmbG9hdCBzdGFydCA9IC1mYSAqIE1f
UEkvMTgwOworICAgIGZsb2F0IGVuZCA9IC1mYWxlbiAqIE1fUEkvMTgwOworICAgIENHQ29udGV4
dEFkZEFyYyhjb250ZXh0LCB4ICsgaFJhZGl1cywgKHkgKyB2UmFkaXVzKSAqIHJldmVyc2VTY2Fs
ZUZhY3RvciwgaFJhZGl1cywgc3RhcnQsIGVuZCwgdHJ1ZSk7CisKKyAgICBpZiAodyAhPSBoKQor
ICAgICAgICBzY2FsZShGbG9hdFNpemUoMSwgcmV2ZXJzZVNjYWxlRmFjdG9yKSk7CisgICAgCisg
ICAgaWYgKHBlbigpLnN0eWxlKCkgPT0gUGVuOjpOb1BlbikgeworICAgICAgICBzZXRDR1N0cm9r
ZUNvbG9yKGNvbnRleHQsIGZpbGxDb2xvcigpKTsKKyAgICAgICAgQ0dDb250ZXh0U2V0TGluZVdp
ZHRoKGNvbnRleHQsIHRoaWNrbmVzcyk7CisgICAgICAgIENHQ29udGV4dFN0cm9rZVBhdGgoY29u
dGV4dCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUGVuOjpQZW5TdHlsZSBwZW5TdHlsZSA9IHBl
bigpLnN0eWxlKCk7CisgICAgICAgIGZsb2F0IHdpZHRoID0gcGVuKCkud2lkdGgoKTsKKyAgICAg
ICAgaWYgKHdpZHRoIDwgMSkKKyAgICAgICAgICAgIHdpZHRoID0gMTsKKyAgICAgICAgaW50IHBh
dFdpZHRoID0gMDsKICAgICAgICAgCi0gICAgICAgIGZsb2F0IHIgPSAoZmxvYXQpdyAvIDI7Ci0g
ICAgICAgIGZsb2F0IGZhID0gKGZsb2F0KWEgLyAxNjsKLSAgICAgICAgZmxvYXQgZmFsZW4gPSAg
ZmEgKyAoZmxvYXQpYWxlbiAvIDE2OwotICAgICAgICBDR0NvbnRleHRBZGRBcmMoY29udGV4dCwg
eCArIHIsIHkgKyByLCByLCAtZmEgKiBNX1BJLzE4MCwgLWZhbGVuICogTV9QSS8xODAsIHRydWUp
OworICAgICAgICBzd2l0Y2ggKHBlblN0eWxlKSB7CisgICAgICAgICAgICBjYXNlIFBlbjo6Tm9Q
ZW46CisgICAgICAgICAgICBjYXNlIFBlbjo6U29saWRMaW5lOgorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBQZW46OkRvdExpbmU6CisgICAgICAgICAgICAgICAgcGF0
V2lkdGggPSAoaW50KSh3aWR0aCAvIDIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBQZW46OkRhc2hMaW5lOgorICAgICAgICAgICAgICAgIHBhdFdpZHRoID0gMyAq
IChpbnQpKHdpZHRoIC8gMik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwor
ICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOworICAgICAgICBzZXRDR1N0cm9r
ZUNvbG9yKGNvbnRleHQsIHBlbigpLmNvbG9yKCkpOworCisgICAgICAgIGlmIChwYXRXaWR0aCkg
eworICAgICAgICAgICAgLy8gRXhhbXBsZTogODAgcGl4ZWxzIHdpdGggYSB3aWR0aCBvZiAzMCBw
aXhlbHMuCisgICAgICAgICAgICAvLyBSZW1haW5kZXIgaXMgMjAuICBUaGUgbWF4aW11bSBwaXhl
bHMgb2YgbGluZSB3ZSBjb3VsZCBwYWludAorICAgICAgICAgICAgLy8gd2lsbCBiZSA1MCBwaXhl
bHMuCisgICAgICAgICAgICBpbnQgZGlzdGFuY2U7CisgICAgICAgICAgICBpZiAoaFJhZGl1cyA9
PSB2UmFkaXVzKQorICAgICAgICAgICAgICAgIGRpc3RhbmNlID0gKGludCkoTV9QSSAqIGhSYWRp
dXMpIC8gMjsKKyAgICAgICAgICAgIGVsc2UgLy8gV2UgYXJlIGVsbGlwdGljYWwgYW5kIHdpbGwg
aGF2ZSB0byBlc3RpbWF0ZSB0aGUgZGlzdGFuY2UKKyAgICAgICAgICAgICAgICBkaXN0YW5jZSA9
IChpbnQpKE1fUEkgKiBzcXJ0KChoUmFkaXVzICogaFJhZGl1cyArIHZSYWRpdXMgKiB2UmFkaXVz
KSAvIDIpKSAvIDI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCByZW1haW5kZXIgPSBk
aXN0YW5jZSAlIHBhdFdpZHRoOworICAgICAgICAgICAgaW50IGNvdmVyYWdlID0gZGlzdGFuY2Ug
LSByZW1haW5kZXI7CisgICAgICAgICAgICBpbnQgbnVtU2VnbWVudHMgPSBjb3ZlcmFnZSAvIHBh
dFdpZHRoOworCisgICAgICAgICAgICBmbG9hdCBwYXR0ZXJuT2Zmc2V0ID0gMDsKKyAgICAgICAg
ICAgIC8vIFNwZWNpYWwgY2FzZSAxcHggZG90dGVkIGJvcmRlcnMgZm9yIHNwZWVkLgorICAgICAg
ICAgICAgaWYgKHBhdFdpZHRoID09IDEpCisgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCA9
IDEuMDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGJvb2wgZXZlbk51bWJl
ck9mU2VnbWVudHMgPSBudW1TZWdtZW50cyAlIDIgPT0gMDsKKyAgICAgICAgICAgICAgICBpZiAo
cmVtYWluZGVyKQorICAgICAgICAgICAgICAgICAgICBldmVuTnVtYmVyT2ZTZWdtZW50cyA9ICFl
dmVuTnVtYmVyT2ZTZWdtZW50czsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbk51bWJlck9mU2Vn
bWVudHMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlbWFpbmRlcikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCArPSBwYXRXaWR0aCAtIHJlbWFpbmRlcjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5PZmZzZXQgKz0gcmVtYWluZGVyIC8gMjsKKyAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJu
T2Zmc2V0ID0gcGF0V2lkdGggLyAyOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChyZW1haW5kZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBwYXR0
ZXJuT2Zmc2V0ID0gKHBhdFdpZHRoIC0gcmVtYWluZGVyKS8yOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHNldENHU3Ryb2tlQ29sb3IoY29udGV4
dCwgcGVuKCkuY29sb3IoKSk7Ci0gICAgICAgIENHQ29udGV4dFNldExpbmVXaWR0aChjb250ZXh0
LCBwZW4oKS53aWR0aCgpKTsKKyAgICAgICAgICAgIGNvbnN0IENHRmxvYXQgZG90dGVkTGluZVsy
XSA9IHsgcGF0V2lkdGgsIHBhdFdpZHRoIH07CisgICAgICAgICAgICBDR0NvbnRleHRTZXRMaW5l
RGFzaChjb250ZXh0LCBwYXR0ZXJuT2Zmc2V0LCBkb3R0ZWRMaW5lLCAyKTsKKyAgICAgICAgfQor
ICAgIAorICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgd2lkdGgpOwogICAg
ICAgICBDR0NvbnRleHRTdHJva2VQYXRoKGNvbnRleHQpOworICAgICAgICBDR0NvbnRleHRSZXN0
b3JlR1N0YXRlKGNvbnRleHQpOwogICAgIH0KKyAgICAKKyAgICBDR0NvbnRleHRSZXN0b3JlR1N0
YXRlKGNvbnRleHQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnZleFBvbHln
b24oY29uc3QgSW50UG9pbnRBcnJheSYgcG9pbnRzKQpJbmRleDogcGxhdGZvcm0vY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmNwcAkocmV2aXNpb24gMTQ1NjApCisrKyBwbGF0Zm9ybS9jYWlyby9H
cmFwaGljc0NvbnRleHRDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw3ICsyODEsNyBA
QAogICAgIH0KIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdBcmMoaW50IHgsIGludCB5
LCBpbnQgdywgaW50IGgsIGludCBhLCBpbnQgYWxlbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3QXJjKGNvbnN0IEludFJlY3QmIHJlY3QsIGZsb2F0IHRoaWNrbmVzcywgaW50IHN0YXJ0QW5n
bGUsIGludCBhbmdsZVNwYW4pCiB7CiAgICAgLy8gT25seSBzdXBwb3J0cyBhcmMgb24gY2lyY2xl
cy4gIFRoYXQncyBhbGwga2h0bWwgbmVlZHMuCiAgICAgQVNTRVJUKHcgPT0gaCk7CkBAIC0yODks
OSArMjg5LDEzIEBACiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAorICAgIGludCB4ID0gcmVjdC54KCk7CisgICAgaW50IHkgPSByZWN0LnkoKTsKKyAg
ICBmbG9hdCB3ID0gKGZsb2F0KXJlY3Qud2lkdGgoKTsKKyAgICAKICAgICBjYWlyb190KiBjb250
ZXh0ID0gbV9kYXRhLT5jb250ZXh0OwogICAgIGlmIChwZW4oKS5zdHlsZSgpICE9IFBlbjo6Tm9Q
ZW4pIHsgICAgICAgIAotICAgICAgICBmbG9hdCByID0gKGZsb2F0KXcgLyAyOworICAgICAgICBm
bG9hdCByID0gdyAvIDI7CiAgICAgICAgIGZsb2F0IGZhID0gKGZsb2F0KWEgLyAxNjsKICAgICAg
ICAgZmxvYXQgZmFsZW4gPSAgZmEgKyAoZmxvYXQpYWxlbiAvIDE2OwogICAgICAgICBjYWlyb19h
cmMoY29udGV4dCwgeCArIHIsIHkgKyByLCByLCAtZmEgKiBNX1BJLzE4MCwgLWZhbGVuICogTV9Q
SS8xODApOwpJbmRleDogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDE0NTYwKQorKysgcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5OCw2ICs3OTgsODkgQEAKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgUmVuZGVyT2JqZWN0OjpkcmF3Qm9yZGVyQXJjKEdy
YXBoaWNzQ29udGV4dCogcCwgaW50IHgsIGludCB5LCBmbG9hdCB0aGlja25lc3MsIEludFNpemUg
cmFkaXVzLCBpbnQgYW5nbGVTdGFydCwgCisgICAgaW50IGFuZ2xlU3BhbiwgQm9yZGVyU2lkZSBz
LCBDb2xvciBjLCBFQm9yZGVyU3R5bGUgc3R5bGUsIGJvb2wgZmlyc3RDb3JuZXIpCit7CisgICAg
aWYoKHN0eWxlID09IERPVUJMRSAmJiAoKHRoaWNrbmVzcyArIDIpIC8gMikgPCAzKSB8fCAKKyAg
ICAgICAgKChzdHlsZSA9PSBSSURHRSB8fCBzdHlsZSA9PSBHUk9PVkUpICYmICgodGhpY2tuZXNz
IC8gMikgPCAyKSkpCisgICAgICAgIHN0eWxlID0gU09MSUQ7CisgICAgCisgICAgc3dpdGNoIChz
dHlsZSkgeworICAgICAgICBjYXNlIEJOT05FOgorICAgICAgICBjYXNlIEJISURERU46CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgRE9UVEVEOgorICAgICAgICAgICAgcC0+c2V0
UGVuKFBlbihjLCB0aGlja25lc3MgPT0gMSA/IDAgOiAoaW50KXRoaWNrbmVzcywgUGVuOjpEb3RM
aW5lKSk7CisgICAgICAgIGNhc2UgREFTSEVEOgorICAgICAgICAgICAgaWYoc3R5bGUgPT0gREFT
SEVEKQorICAgICAgICAgICAgICAgIHAtPnNldFBlbihQZW4oYywgdGhpY2tuZXNzID09IDEgPyAw
IDogKGludCl0aGlja25lc3MsIFBlbjo6RGFzaExpbmUpKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgaWYgKHRoaWNrbmVzcyA+IDApIHsKKyAgICAgICAgICAgICAgICBpZiAocyA9PSBCU0Jv
dHRvbSB8fCBzID09IEJTVG9wKQorICAgICAgICAgICAgICAgICAgICBwLT5kcmF3QXJjKEludFJl
Y3QoeCwgeSwgcmFkaXVzLndpZHRoKCkgKiAyLCByYWRpdXMuaGVpZ2h0KCkgKiAyKSwgdGhpY2tu
ZXNzLCBhbmdsZVN0YXJ0LCBhbmdsZVNwYW4pOworICAgICAgICAgICAgICAgIGVsc2UgLy9XZSBh
cmUgZHJhd2luZyBhIGxlZnQgb3IgcmlnaHQgYm9yZGVyCisgICAgICAgICAgICAgICAgICAgIHAt
PmRyYXdBcmMoSW50UmVjdCh4LCB5LCByYWRpdXMud2lkdGgoKSAqIDIsIHJhZGl1cy5oZWlnaHQo
KSAqIDIpLCB0aGlja25lc3MsIGFuZ2xlU3RhcnQsIGFuZ2xlU3Bhbik7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERPVUJMRToK
KyAgICAgICAgICAgIGZsb2F0IHRoaXJkID0gKHRoaWNrbmVzcyArIDEpIC8gMzsKKyAgICAgICAg
ICAgIGZsb2F0IGlubmVyVGhpcmQgPSAodGhpY2tuZXNzICsgMikgLyA2OworICAgICAgICAgICAg
aW50IHNoaWZ0Rm9ySW5uZXIgPSBscm91bmQoaW5uZXJUaGlyZCAqIDIuNSk7CisgICAgICAgICAg
ICBwLT5zZXRQZW4oUGVuOjpOb1Blbik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCBv
dXRlclkgPSB5OworICAgICAgICAgICAgaW50IG91dGVySGVpZ2h0ID0gcmFkaXVzLmhlaWdodCgp
ICogMjsKKyAgICAgICAgICAgIGludCBpbm5lclggPSB4ICsgc2hpZnRGb3JJbm5lcjsKKyAgICAg
ICAgICAgIGludCBpbm5lclkgPSB5ICsgc2hpZnRGb3JJbm5lcjsKKyAgICAgICAgICAgIGludCBp
bm5lcldpZHRoID0gKHJhZGl1cy53aWR0aCgpIC0gc2hpZnRGb3JJbm5lcikgKiAyOworICAgICAg
ICAgICAgaW50IGlubmVySGVpZ2h0ID0gKHJhZGl1cy5oZWlnaHQoKSAtIHNoaWZ0Rm9ySW5uZXIp
ICogMjsKKyAgICAgICAgICAgIGlmIChpbm5lclRoaXJkID4gMSAmJiAocyA9PSBCU1RvcCB8fCAo
Zmlyc3RDb3JuZXIgJiYgKHMgPT0gQlNMZWZ0IHx8IHMgPT0gQlNSaWdodCkpKSkgeworICAgICAg
ICAgICAgICAgIG91dGVySGVpZ2h0Kys7CisgICAgICAgICAgICAgICAgaW5uZXJIZWlnaHQrKzsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcC0+ZHJhd0FyYyhJbnRS
ZWN0KHgsIG91dGVyWSwgcmFkaXVzLndpZHRoKCkgKiAyLCBvdXRlckhlaWdodCksIHRoaXJkLCBh
bmdsZVN0YXJ0LCBhbmdsZVNwYW4pOworICAgICAgICAgICAgcC0+ZHJhd0FyYyhJbnRSZWN0KGlu
bmVyWCwgaW5uZXJZLCBpbm5lcldpZHRoLCBpbm5lckhlaWdodCksIChpbm5lclRoaXJkID4gMikg
PyBpbm5lclRoaXJkIC0gMSA6IGlubmVyVGhpcmQsCisgICAgICAgICAgICAgICAgYW5nbGVTdGFy
dCwgYW5nbGVTcGFuKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdST09WRToK
KyAgICAgICAgY2FzZSBSSURHRTogeworICAgICAgICAgICAgQ29sb3IgYzI7CisgICAgICAgICAg
ICBpZiAoKHN0eWxlID09IFJJREdFICYmIChzID09IEJTVG9wIHx8IHMgPT0gQlNMZWZ0KSkgfHwg
CisgICAgICAgICAgICAgICAgKHN0eWxlID09IEdST09WRSAmJiAocyA9PSBCU0JvdHRvbSB8fCBz
ID09IEJTUmlnaHQpKSkKKyAgICAgICAgICAgICAgICBjMiA9IGMuZGFyaygpOworICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYzIgPSBjOworICAgICAgICAgICAgICAgIGMgPSBj
LmRhcmsoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcC0+c2V0UGVuKFBlbjo6Tm9Q
ZW4pOworICAgICAgICAgICAgcC0+c2V0RmlsbENvbG9yKGMucmdiKCkpOworICAgICAgICAgICAg
cC0+ZHJhd0FyYyhJbnRSZWN0KHgsIHksIHJhZGl1cy53aWR0aCgpICogMiwgcmFkaXVzLmhlaWdo
dCgpICogMiksIHRoaWNrbmVzcywgYW5nbGVTdGFydCwgYW5nbGVTcGFuKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgZmxvYXQgaGFsZlRoaWNrbmVzcyA9ICh0aGlja25lc3MgKyAyKSAvIDQ7
CisgICAgICAgICAgICBpbnQgc2hpZnRGb3JJbm5lciA9IGxyb3VuZChoYWxmVGhpY2tuZXNzICog
MS41KTsKKyAgICAgICAgICAgIHAtPnNldEZpbGxDb2xvcihjMi5yZ2IoKSk7CisgICAgICAgICAg
ICBwLT5kcmF3QXJjKEludFJlY3QoeCArIHNoaWZ0Rm9ySW5uZXIsIHkgKyBzaGlmdEZvcklubmVy
LCAocmFkaXVzLndpZHRoKCkgLSBzaGlmdEZvcklubmVyKSAqIDIsCisgICAgICAgICAgICAgICAg
KHJhZGl1cy5oZWlnaHQoKSAtIHNoaWZ0Rm9ySW5uZXIpICogMiksIChoYWxmVGhpY2tuZXNzID4g
MikgPyBoYWxmVGhpY2tuZXNzIC0gMSA6IGhhbGZUaGlja25lc3MsCisgICAgICAgICAgICAgICAg
YW5nbGVTdGFydCwgYW5nbGVTcGFuKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgSU5TRVQ6CisgICAgICAgICAgICBpZihzID09IEJTVG9wIHx8IHMgPT0gQlNM
ZWZ0KQorICAgICAgICAgICAgICAgIGMgPSBjLmRhcmsoKTsKKyAgICAgICAgY2FzZSBPVVRTRVQ6
CisgICAgICAgICAgICBpZihzdHlsZSA9PSBPVVRTRVQgJiYgKHMgPT0gQlNCb3R0b20gfHwgcyA9
PSBCU1JpZ2h0KSkKKyAgICAgICAgICAgICAgICBjID0gYy5kYXJrKCk7CisgICAgICAgIGNhc2Ug
U09MSUQ6CisgICAgICAgICAgICBwLT5zZXRQZW4oUGVuOjpOb1Blbik7CisgICAgICAgICAgICBw
LT5zZXRGaWxsQ29sb3IoYy5yZ2IoKSk7CisgICAgICAgICAgICBwLT5kcmF3QXJjKEludFJlY3Qo
eCwgeSwgcmFkaXVzLndpZHRoKCkgKiAyLCByYWRpdXMuaGVpZ2h0KCkgKiAyKSwgdGhpY2tuZXNz
LCBhbmdsZVN0YXJ0LCBhbmdsZVNwYW4pOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQor
CiB2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0JvcmRlcihHcmFwaGljc0NvbnRleHQqIHAsIGludCB4
MSwgaW50IHkxLCBpbnQgeDIsIGludCB5MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEJvcmRlclNpZGUgcywgQ29sb3IgYywgY29uc3QgQ29sb3ImIHRleHRjb2xvciwgRUJvcmRlclN0
eWxlIHN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFkamJ3MSwgaW50
IGFkamJ3MiwgYm9vbCBpbnZhbGlkaXNJbnZlcnQpCkBAIC0xMTQ1LDE1ICsxMjI4LDE1IEBACiAg
ICAgRUJvcmRlclN0eWxlIGxzID0gc3R5bGUtPmJvcmRlckxlZnRTdHlsZSgpOwogICAgIEVCb3Jk
ZXJTdHlsZSBycyA9IHN0eWxlLT5ib3JkZXJSaWdodFN0eWxlKCk7CiAKLSAgICBib29sIHJlbmRl
cl90ID0gdHMgPiBCSElEREVOICYmICF0dDsKLSAgICBib29sIHJlbmRlcl9sID0gbHMgPiBCSElE
REVOICYmIGJlZ2luICYmICFsdDsKLSAgICBib29sIHJlbmRlcl9yID0gcnMgPiBCSElEREVOICYm
IGVuZCAmJiAhcnQ7Ci0gICAgYm9vbCByZW5kZXJfYiA9IGJzID4gQkhJRERFTiAmJiAhYnQ7Cisg
ICAgYm9vbCByZW5kZXJUb3AgPSB0cyA+IEJISURERU4gJiYgIXR0OworICAgIGJvb2wgcmVuZGVy
TGVmdCA9IGxzID4gQkhJRERFTiAmJiBiZWdpbiAmJiAhbHQ7CisgICAgYm9vbCByZW5kZXJSaWdo
dCA9IHJzID4gQkhJRERFTiAmJiBlbmQgJiYgIXJ0OworICAgIGJvb2wgcmVuZGVyQm90dG9tID0g
YnMgPiBCSElEREVOICYmICFidDsKIAogICAgIC8vIE5lZWQgc3VmZmljaWVudCB3aWR0aCBhbmQg
aGVpZ2h0IHRvIGNvbnRhaW4gYm9yZGVyIHJhZGl1cyBjdXJ2ZXMuICBTYW5pdHkgY2hlY2sgb3Vy
IHRvcC9ib3R0b20KICAgICAvLyB2YWx1ZXMgYW5kIG91ciB3aWR0aC9oZWlnaHQgdmFsdWVzIHRv
IG1ha2Ugc3VyZSB0aGUgY3VydmVzIGNhbiBhbGwgZml0LiBJZiBub3QsIHRoZW4gd2Ugd29uJ3Qg
cGFpbnQKICAgICAvLyBhbnkgYm9yZGVyIHJhZGlpLgotICAgIGJvb2wgcmVuZGVyX3JhZGlpID0g
ZmFsc2U7CisgICAgYm9vbCByZW5kZXJSYWRpaSA9IGZhbHNlOwogICAgIEludFNpemUgdG9wTGVm
dCA9IHN0eWxlLT5ib3JkZXJUb3BMZWZ0UmFkaXVzKCk7CiAgICAgSW50U2l6ZSB0b3BSaWdodCA9
IHN0eWxlLT5ib3JkZXJUb3BSaWdodFJhZGl1cygpOwogICAgIEludFNpemUgYm90dG9tTGVmdCA9
IHN0eWxlLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCk7CkBAIC0xMTYyLDI5ICsxMjQ1LDM2IEBA
CiAgICAgaWYgKHN0eWxlLT5oYXNCb3JkZXJSYWRpdXMoKSkgewogICAgICAgICBpbnQgcmVxdWly
ZWRXaWR0aCA9IG1heCh0b3BMZWZ0LndpZHRoKCkgKyB0b3BSaWdodC53aWR0aCgpLCBib3R0b21M
ZWZ0LndpZHRoKCkgKyBib3R0b21SaWdodC53aWR0aCgpKTsKICAgICAgICAgaW50IHJlcXVpcmVk
SGVpZ2h0ID0gbWF4KHRvcExlZnQuaGVpZ2h0KCkgKyBib3R0b21MZWZ0LmhlaWdodCgpLCB0b3BS
aWdodC5oZWlnaHQoKSArIGJvdHRvbVJpZ2h0LmhlaWdodCgpKTsKLSAgICAgICAgcmVuZGVyX3Jh
ZGlpID0gKHJlcXVpcmVkV2lkdGggPD0gdyAmJiByZXF1aXJlZEhlaWdodCA8PSBoKTsKKyAgICAg
ICAgcmVuZGVyUmFkaWkgPSAocmVxdWlyZWRXaWR0aCA8PSB3ICYmIHJlcXVpcmVkSGVpZ2h0IDw9
IGgpOwogICAgIH0KICAgICAKICAgICAvLyBDbGlwIHRvIHRoZSByb3VuZGVkIHJlY3RhbmdsZS4K
LSAgICBpZiAocmVuZGVyX3JhZGlpKSB7CisgICAgaWYgKHJlbmRlclJhZGlpKSB7CiAgICAgICAg
IHAtPnNhdmUoKTsKICAgICAgICAgcC0+YWRkUm91bmRlZFJlY3RDbGlwKEludFJlY3QoX3R4LCBf
dHksIHcsIGgpLCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwog
ICAgIH0KIAotICAgIGlmIChyZW5kZXJfdCkgewotICAgICAgICBib29sIGlnbm9yZV9sZWZ0ID0g
KHJlbmRlcl9yYWRpaSAmJiB0b3BMZWZ0LndpZHRoKCkgPiAwKSB8fAorICAgIGludCBmaXJzdEFu
Z2xlU3RhcnQsIHNlY29uZEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLCBzZWNvbmRBbmdsZVNw
YW47CisgICAgZmxvYXQgdGhpY2tuZXNzOworICAgIGJvb2wgdXBwZXJMZWZ0Qm9yZGVyU3R5bGVz
TWF0Y2ggPSByZW5kZXJMZWZ0ICYmICh0cyA9PSBscykgJiYgKHRjID09IGxjKSAmJiAodHMgIT0g
SU5TRVQpICYmICh0cyAhPSBHUk9PVkUpOworICAgIGJvb2wgdXBwZXJSaWdodEJvcmRlclN0eWxl
c01hdGNoID0gcmVuZGVyUmlnaHQgJiYgKHRzID09IHJzKSAmJiAodGMgPT0gcmMpICYmICh0cyAh
PSBPVVRTRVQpICYmICh0cyAhPSBSSURHRSk7CisgICAgYm9vbCBsb3dlckxlZnRCb3JkZXJTdHls
ZXNNYXRjaCA9IHJlbmRlckxlZnQgJiYgKGJzID09IGxzKSAmJiAoYmMgPT0gbGMpICYmIChicyAh
PSBPVVRTRVQpICYmIChicyAhPSBSSURHRSk7CisgICAgYm9vbCBsb3dlclJpZ2h0Qm9yZGVyU3R5
bGVzTWF0Y2ggPSByZW5kZXJSaWdodCAmJiAoYnMgPT0gcnMpICYmIChiYyA9PSByYykgJiYgKGJz
ICE9IElOU0VUKSAmJiAoYnMgIT0gR1JPT1ZFKTsKKworICAgIGlmIChyZW5kZXJUb3ApIHsKKyAg
ICAgICAgYm9vbCBpZ25vcmVfbGVmdCA9IChyZW5kZXJSYWRpaSAmJiB0b3BMZWZ0LndpZHRoKCkg
PiAwKSB8fAogICAgICAgICAgICAgKCh0YyA9PSBsYykgJiYgKHR0ID09IGx0KSAmJgogICAgICAg
ICAgICAgKHRzID49IE9VVFNFVCkgJiYKICAgICAgICAgICAgIChscyA9PSBET1RURUQgfHwgbHMg
PT0gREFTSEVEIHx8IGxzID09IFNPTElEIHx8IGxzID09IE9VVFNFVCkpOwogCi0gICAgICAgIGJv
b2wgaWdub3JlX3JpZ2h0ID0gKHJlbmRlcl9yYWRpaSAmJiB0b3BSaWdodC53aWR0aCgpID4gMCkg
fHwKKyAgICAgICAgYm9vbCBpZ25vcmVfcmlnaHQgPSAocmVuZGVyUmFkaWkgJiYgdG9wUmlnaHQu
d2lkdGgoKSA+IDApIHx8CiAgICAgICAgICAgICAoKHRjID09IHJjKSAmJiAodHQgPT0gcnQpICYm
CiAgICAgICAgICAgICAodHMgPj0gT1VUU0VUKSAmJgogICAgICAgICAgICAgKHJzID09IERPVFRF
RCB8fCBycyA9PSBEQVNIRUQgfHwgcnMgPT0gU09MSUQgfHwgcnMgPT0gSU5TRVQpKTsKICAgICAg
ICAgCiAgICAgICAgIGludCB4ID0gX3R4OwogICAgICAgICBpbnQgeDIgPSBfdHggKyB3OwotICAg
ICAgICBpZiAocmVuZGVyX3JhZGlpKSB7CisgICAgICAgIGlmIChyZW5kZXJSYWRpaSkgewogICAg
ICAgICAgICAgeCArPSB0b3BMZWZ0LndpZHRoKCk7CiAgICAgICAgICAgICB4MiAtPSB0b3BSaWdo
dC53aWR0aCgpOwogICAgICAgICB9CkBAIC0xMTkyLDIyICsxMjgyLDUxIEBACiAgICAgICAgIGRy
YXdCb3JkZXIocCwgeCwgX3R5LCB4MiwgX3R5ICsgIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCBC
U1RvcCwgdGMsIHN0eWxlLT5jb2xvcigpLCB0cywKICAgICAgICAgICAgICAgICAgICBpZ25vcmVf
bGVmdCA/IDAgOiBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksCiAgICAgICAgICAgICAgICAgICAg
aWdub3JlX3JpZ2h0PyAwIDogc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSk7CisgICAgICAgIAor
ICAgICAgICBpZiAocmVuZGVyUmFkaWkpIHsKKyAgICAgICAgICAgIGludCBsZWZ0WCA9IF90eDsK
KyAgICAgICAgICAgIGludCBsZWZ0WSA9IF90eTsKKyAgICAgICAgICAgIGludCByaWdodFggPSBf
dHggKyB3IC0gdG9wUmlnaHQud2lkdGgoKSAqIDI7CisgICAgICAgICAgICBmaXJzdEFuZ2xlU3Rh
cnQgPSA5MDsKKyAgICAgICAgICAgIGZpcnN0QW5nbGVTcGFuID0gdXBwZXJMZWZ0Qm9yZGVyU3R5
bGVzTWF0Y2ggPyA5MCA6IDQ1OworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBXZSBtYWtl
IHRoZSBhcmMgZG91YmxlIHRoaWNrIGFuZCBsZXQgdGhlIGNsaXAgcmVjdCB0YWtlIGNhcmUgb2Yg
Y2xpcHBpbmcgdGhlIGV4dHJhIG9mZi4KKyAgICAgICAgICAgIC8vIFdlJ3JlIGRvaW5nIHRoaXMg
YmVjYXVzZSBpdCBkb2Vzbid0IHNlZW0gcG9zc2libGUgdG8gbWF0Y2ggdGhlIGN1cnZlIG9mIHRo
ZSBjbGlwIGV4YWN0bHkKKyAgICAgICAgICAgIC8vIHdpdGggdGhlIGFyYy1kcmF3aW5nIGZ1bmN0
aW9uLgorICAgICAgICAgICAgdGhpY2tuZXNzID0gKHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpID4g
MSkgPyAoc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkgLSAxKSAqIDIgOiBzdHlsZS0+Ym9yZGVyVG9w
V2lkdGgoKSAqIDI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh1cHBlclJpZ2h0Qm9y
ZGVyU3R5bGVzTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBzZWNvbmRBbmdsZVN0YXJ0ID0gMDsK
KyAgICAgICAgICAgICAgICBzZWNvbmRBbmdsZVNwYW4gPSA5MDsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgc2Vjb25kQW5nbGVTdGFydCA9IDQ1OworICAgICAgICAgICAg
ICAgIHNlY29uZEFuZ2xlU3BhbiA9IDQ1OworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICAvLyBEcmF3IHVwcGVyIGxlZnQgYXJjCisgICAgICAgICAgICBkcmF3Qm9yZGVy
QXJjKHAsIGxlZnRYLCBsZWZ0WSwgdGhpY2tuZXNzLCB0b3BMZWZ0LCBmaXJzdEFuZ2xlU3RhcnQs
IGZpcnN0QW5nbGVTcGFuLAorICAgICAgICAgICAgICAgIEJTVG9wLCB0YywgdHMsIHRydWUpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gRHJhdyB1cHBlciByaWdodCBhcmMKKyAg
ICAgICAgICAgIGRyYXdCb3JkZXJBcmMocCwgcmlnaHRYLCBsZWZ0WSwgdGhpY2tuZXNzLCB0b3BS
aWdodCwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAorICAgICAgICAgICAgICAg
IEJTVG9wLCB0YywgdHMsIGZhbHNlKTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChyZW5k
ZXJfYikgewotICAgICAgICBib29sIGlnbm9yZV9sZWZ0ID0gKHJlbmRlcl9yYWRpaSAmJiBib3R0
b21MZWZ0LndpZHRoKCkgPiAwKSB8fAorICAgIGlmIChyZW5kZXJCb3R0b20pIHsKKyAgICAgICAg
Ym9vbCBpZ25vcmVfbGVmdCA9IChyZW5kZXJSYWRpaSAmJiBib3R0b21MZWZ0LndpZHRoKCkgPiAw
KSB8fAogICAgICAgICAoKGJjID09IGxjKSAmJiAoYnQgPT0gbHQpICYmCiAgICAgICAgIChicyA+
PSBPVVRTRVQpICYmCiAgICAgICAgIChscyA9PSBET1RURUQgfHwgbHMgPT0gREFTSEVEIHx8IGxz
ID09IFNPTElEIHx8IGxzID09IE9VVFNFVCkpOwogCi0gICAgICAgIGJvb2wgaWdub3JlX3JpZ2h0
ID0gKHJlbmRlcl9yYWRpaSAmJiBib3R0b21SaWdodC53aWR0aCgpID4gMCkgfHwKKyAgICAgICAg
Ym9vbCBpZ25vcmVfcmlnaHQgPSAocmVuZGVyUmFkaWkgJiYgYm90dG9tUmlnaHQud2lkdGgoKSA+
IDApIHx8CiAgICAgICAgICAgICAoKGJjID09IHJjKSAmJiAoYnQgPT0gcnQpICYmCiAgICAgICAg
ICAgICAoYnMgPj0gT1VUU0VUKSAmJgogICAgICAgICAgICAgKHJzID09IERPVFRFRCB8fCBycyA9
PSBEQVNIRUQgfHwgcnMgPT0gU09MSUQgfHwgcnMgPT0gSU5TRVQpKTsKICAgICAgICAgCiAgICAg
ICAgIGludCB4ID0gX3R4OwogICAgICAgICBpbnQgeDIgPSBfdHggKyB3OwotICAgICAgICBpZiAo
cmVuZGVyX3JhZGlpKSB7CisgICAgICAgIGlmIChyZW5kZXJSYWRpaSkgewogICAgICAgICAgICAg
eCArPSBib3R0b21MZWZ0LndpZHRoKCk7CiAgICAgICAgICAgICB4MiAtPSBib3R0b21SaWdodC53
aWR0aCgpOwogICAgICAgICB9CkBAIC0xMjE1LDIyICsxMzM0LDQ3IEBACiAgICAgICAgIGRyYXdC
b3JkZXIocCwgeCwgX3R5ICsgaCAtIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpLCB4MiwgX3R5
ICsgaCwgQlNCb3R0b20sIGJjLCBzdHlsZS0+Y29sb3IoKSwgYnMsCiAgICAgICAgICAgICAgICAg
ICAgaWdub3JlX2xlZnQgPyAwIDpzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksCiAgICAgICAgICAg
ICAgICAgICAgaWdub3JlX3JpZ2h0PyAwIDpzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChyZW5kZXJSYWRpaSkgeworICAgICAgICAgICAgaW50IGxlZnRY
ID0gX3R4OworICAgICAgICAgICAgaW50IGxlZnRZID0gX3R5ICsgaCAgLSBib3R0b21MZWZ0Lmhl
aWdodCgpICogMjsKKyAgICAgICAgICAgIGludCByaWdodFggPSBfdHggKyB3IC0gYm90dG9tUmln
aHQud2lkdGgoKSAqIDI7CisgICAgICAgICAgICBzZWNvbmRBbmdsZVN0YXJ0ID0gMjcwOworICAg
ICAgICAgICAgc2Vjb25kQW5nbGVTcGFuID0gdXBwZXJSaWdodEJvcmRlclN0eWxlc01hdGNoID8g
OTAgOiA0NTsKKyAgICAgICAgICAgIHRoaWNrbmVzcyA9IChzdHlsZS0+Ym9yZGVyQm90dG9tV2lk
dGgoKSA+IDEpID8gKHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpIC0gMSkgKiAyIDogc3R5bGUt
PmJvcmRlckJvdHRvbVdpZHRoKCkgKiAyOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAo
dXBwZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBmaXJzdEFuZ2xl
U3RhcnQgPSAxODA7CisgICAgICAgICAgICAgICAgZmlyc3RBbmdsZVNwYW4gPSA5MDsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZmlyc3RBbmdsZVN0YXJ0ID0gMjI1Owor
ICAgICAgICAgICAgICAgIGZpcnN0QW5nbGVTcGFuID0gIDQ1OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICAvLyBEcmF3IGxvd2VyIGxlZnQgYXJjCisgICAgICAgICAg
ICBkcmF3Qm9yZGVyQXJjKHAsIGxlZnRYLCBsZWZ0WSwgdGhpY2tuZXNzLCBib3R0b21MZWZ0LCBm
aXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAorICAgICAgICAgICAgICAgIEJTQm90dG9t
LCBiYywgYnMsIHRydWUpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gRHJhdyBs
b3dlciByaWdodCBhcmMKKyAgICAgICAgICAgIGRyYXdCb3JkZXJBcmMocCwgcmlnaHRYLCBsZWZ0
WSwgdGhpY2tuZXNzLCBib3R0b21SaWdodCwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVT
cGFuLAorICAgICAgICAgICAgICAgIEJTQm90dG9tLCBiYywgYnMsIGZhbHNlKTsKKyAgICAgICAg
fQogICAgIH0KICAgICAKLSAgICBpZiAocmVuZGVyX2wpIHsKLSAgICAgICAgYm9vbCBpZ25vcmVf
dG9wID0gKHJlbmRlcl9yYWRpaSAmJiB0b3BMZWZ0LmhlaWdodCgpID4gMCkgfHwKKyAgICBpZiAo
cmVuZGVyTGVmdCkgeworICAgICAgICBib29sIGlnbm9yZV90b3AgPSAocmVuZGVyUmFkaWkgJiYg
dG9wTGVmdC5oZWlnaHQoKSA+IDApIHx8CiAgICAgICAgICAgKCh0YyA9PSBsYykgJiYgKHR0ID09
IGx0KSAmJgogICAgICAgICAgIChscyA+PSBPVVRTRVQpICYmCiAgICAgICAgICAgKHRzID09IERP
VFRFRCB8fCB0cyA9PSBEQVNIRUQgfHwgdHMgPT0gU09MSUQgfHwgdHMgPT0gT1VUU0VUKSk7CiAK
LSAgICAgICAgYm9vbCBpZ25vcmVfYm90dG9tID0gKHJlbmRlcl9yYWRpaSAmJiBib3R0b21MZWZ0
LmhlaWdodCgpID4gMCkgfHwKKyAgICAgICAgYm9vbCBpZ25vcmVfYm90dG9tID0gKHJlbmRlclJh
ZGlpICYmIGJvdHRvbUxlZnQuaGVpZ2h0KCkgPiAwKSB8fAogICAgICAgICAgICgoYmMgPT0gbGMp
ICYmIChidCA9PSBsdCkgJiYKICAgICAgICAgICAobHMgPj0gT1VUU0VUKSAmJgogICAgICAgICAg
IChicyA9PSBET1RURUQgfHwgYnMgPT0gREFTSEVEIHx8IGJzID09IFNPTElEIHx8IGJzID09IElO
U0VUKSk7CiAKICAgICAgICAgaW50IHkgPSBfdHk7CiAgICAgICAgIGludCB5MiA9IF90eSArIGg7
Ci0gICAgICAgIGlmIChyZW5kZXJfcmFkaWkpIHsKKyAgICAgICAgaWYgKHJlbmRlclJhZGlpKSB7
CiAgICAgICAgICAgICB5ICs9IHRvcExlZnQuaGVpZ2h0KCk7CiAgICAgICAgICAgICB5MiAtPSBi
b3R0b21MZWZ0LmhlaWdodCgpOwogICAgICAgICB9CkBAIC0xMjM4LDIyICsxMzgyLDQwIEBACiAg
ICAgICAgIGRyYXdCb3JkZXIocCwgX3R4LCB5LCBfdHggKyBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRo
KCksIHkyLCBCU0xlZnQsIGxjLCBzdHlsZS0+Y29sb3IoKSwgbHMsCiAgICAgICAgICAgICAgICAg
ICAgaWdub3JlX3RvcD8wOnN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLAogICAgICAgICAgICAgICAg
ICAgIGlnbm9yZV9ib3R0b20/MDpzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSk7CisKKyAgICAg
ICAgaWYgKHJlbmRlclJhZGlpICYmICghdXBwZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2ggfHwgIWxv
d2VyTGVmdEJvcmRlclN0eWxlc01hdGNoKSkgeworICAgICAgICAgICAgaW50IHRvcFggPSBfdHg7
CisgICAgICAgICAgICBpbnQgdG9wWSA9IF90eTsKKyAgICAgICAgICAgIGludCBib3R0b21ZID0g
X3R5ICsgaCAgLSBib3R0b21MZWZ0LmhlaWdodCgpICogMjsKKyAgICAgICAgICAgIGZpcnN0QW5n
bGVTdGFydCA9IDEzNTsKKyAgICAgICAgICAgIHNlY29uZEFuZ2xlU3RhcnQgPSAxODA7CisgICAg
ICAgICAgICBmaXJzdEFuZ2xlU3BhbiA9IHNlY29uZEFuZ2xlU3BhbiA9IDQ1OworICAgICAgICAg
ICAgdGhpY2tuZXNzID0gKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA+IDEpID8gKHN0eWxlLT5i
b3JkZXJMZWZ0V2lkdGgoKSAtIDEpICogMiA6IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSAqIDI7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIERyYXcgdG9wIGxlZnQgYXJjCisgICAgICAg
ICAgICBkcmF3Qm9yZGVyQXJjKHAsIHRvcFgsIHRvcFksIHRoaWNrbmVzcywgdG9wTGVmdCwgZmly
c3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAgICBCU0xlZnQsIGxj
LCBscywgdHJ1ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIERyYXcgYm90dG9tIGxl
ZnQgYXJjCisgICAgICAgICAgICBkcmF3Qm9yZGVyQXJjKHAsIHRvcFgsIGJvdHRvbVksIHRoaWNr
bmVzcywgYm90dG9tTGVmdCwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAorICAg
ICAgICAgICAgICAgIEJTTGVmdCwgbGMsIGxzLCBmYWxzZSk7CisgICAgICAgIH0KICAgICB9CiAK
LSAgICBpZiAocmVuZGVyX3IpIHsKLSAgICAgICAgYm9vbCBpZ25vcmVfdG9wID0gKHJlbmRlcl9y
YWRpaSAmJiB0b3BSaWdodC5oZWlnaHQoKSA+IDApIHx8CisgICAgaWYgKHJlbmRlclJpZ2h0KSB7
CisgICAgICAgIGJvb2wgaWdub3JlX3RvcCA9IChyZW5kZXJSYWRpaSAmJiB0b3BSaWdodC5oZWln
aHQoKSA+IDApIHx8CiAgICAgICAgICAgKCh0YyA9PSByYykgJiYgKHR0ID09IHJ0KSAmJgogICAg
ICAgICAgIChycyA+PSBET1RURUQgfHwgcnMgPT0gSU5TRVQpICYmCiAgICAgICAgICAgKHRzID09
IERPVFRFRCB8fCB0cyA9PSBEQVNIRUQgfHwgdHMgPT0gU09MSUQgfHwgdHMgPT0gT1VUU0VUKSk7
CiAKLSAgICAgICAgYm9vbCBpZ25vcmVfYm90dG9tID0gKHJlbmRlcl9yYWRpaSAmJiBib3R0b21S
aWdodC5oZWlnaHQoKSA+IDApIHx8CisgICAgICAgIGJvb2wgaWdub3JlX2JvdHRvbSA9IChyZW5k
ZXJSYWRpaSAmJiBib3R0b21SaWdodC5oZWlnaHQoKSA+IDApIHx8CiAgICAgICAgICAgKChiYyA9
PSByYykgJiYgKGJ0ID09IHJ0KSAmJgogICAgICAgICAgIChycyA+PSBET1RURUQgfHwgcnMgPT0g
SU5TRVQpICYmCiAgICAgICAgICAgKGJzID09IERPVFRFRCB8fCBicyA9PSBEQVNIRUQgfHwgYnMg
PT0gU09MSUQgfHwgYnMgPT0gSU5TRVQpKTsKIAogICAgICAgICBpbnQgeSA9IF90eTsKICAgICAg
ICAgaW50IHkyID0gX3R5ICsgaDsKLSAgICAgICAgaWYgKHJlbmRlcl9yYWRpaSkgeworICAgICAg
ICBpZiAocmVuZGVyUmFkaWkpIHsKICAgICAgICAgICAgIHkgKz0gdG9wUmlnaHQuaGVpZ2h0KCk7
CiAgICAgICAgICAgICB5MiAtPSBib3R0b21SaWdodC5oZWlnaHQoKTsKICAgICAgICAgfQpAQCAt
MTI2MSw5ICsxNDIzLDI3IEBACiAgICAgICAgIGRyYXdCb3JkZXIocCwgX3R4ICsgdyAtIHN0eWxl
LT5ib3JkZXJSaWdodFdpZHRoKCksIHksIF90eCArIHcsIHkyLCBCU1JpZ2h0LCByYywgc3R5bGUt
PmNvbG9yKCksIHJzLAogICAgICAgICAgICAgICAgICAgIGlnbm9yZV90b3A/MDpzdHlsZS0+Ym9y
ZGVyVG9wV2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICBpZ25vcmVfYm90dG9tPzA6c3R5bGUt
PmJvcmRlckJvdHRvbVdpZHRoKCkpOworCisgICAgICAgIGlmIChyZW5kZXJSYWRpaSAmJiAoIXVw
cGVyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCB8fCAhbG93ZXJSaWdodEJvcmRlclN0eWxlc01hdGNo
KSkgeworICAgICAgICAgICAgaW50IHRvcFggPSBfdHggKyB3IC0gdG9wUmlnaHQud2lkdGgoKSAq
IDI7CisgICAgICAgICAgICBpbnQgdG9wWSA9IF90eTsKKyAgICAgICAgICAgIGludCBib3R0b21Z
ID0gX3R5ICsgaCAgLSBib3R0b21SaWdodC5oZWlnaHQoKSAqIDI7CisgICAgICAgICAgICBmaXJz
dEFuZ2xlU3RhcnQgPSAwOyAKKyAgICAgICAgICAgIHNlY29uZEFuZ2xlU3RhcnQgPSAzMTU7Cisg
ICAgICAgICAgICBmaXJzdEFuZ2xlU3BhbiA9IHNlY29uZEFuZ2xlU3BhbiA9IDQ1OworICAgICAg
ICAgICAgdGhpY2tuZXNzID0gKHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkgPiAxKSA/IChzdHls
ZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIC0gMSkgKiAyIDogc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgo
KSAqIDI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIERyYXcgdG9wIHJpZ2h0IGFyYwor
ICAgICAgICAgICAgZHJhd0JvcmRlckFyYyhwLCB0b3BYLCB0b3BZLCB0aGlja25lc3MsIHRvcFJp
Z2h0LCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAorICAgICAgICAgICAgICAgIEJT
UmlnaHQsIHJjLCBycywgdHJ1ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vRHJhdyBi
b3R0b20gcmlnaHQgYXJjCisgICAgICAgICAgICBkcmF3Qm9yZGVyQXJjKHAsIHRvcFgsIGJvdHRv
bVksIHRoaWNrbmVzcywgYm90dG9tUmlnaHQsIHNlY29uZEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xl
U3BhbiwKKyAgICAgICAgICAgICAgICBCU1JpZ2h0LCByYywgcnMsIGZhbHNlKTsKKyAgICAgICAg
fQogICAgIH0KICAgICAKLSAgICBpZiAocmVuZGVyX3JhZGlpKQorICAgIGlmIChyZW5kZXJSYWRp
aSkKICAgICAgICAgcC0+cmVzdG9yZSgpOyAvLyBVbmRvIHRoZSBjbGlwLgogfQogCkluZGV4OiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oCShyZXZpc2lvbiAxNDU2MCkKKysrIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNjk2LDYgKzY5Niw4IEBACiAgICAgZW51bSBCb3JkZXJTaWRlIHsKICAg
ICAgICAgQlNUb3AsIEJTQm90dG9tLCBCU0xlZnQsIEJTUmlnaHQKICAgICB9OworICAgIHZvaWQg
ZHJhd0JvcmRlckFyYyhHcmFwaGljc0NvbnRleHQqLCBpbnQgeCwgaW50IHksIGZsb2F0IHRoaWNr
bmVzcywgSW50U2l6ZSByYWRpdXMsIGludCBhbmdsZVN0YXJ0LAorICAgICAgICBpbnQgYW5nbGVT
cGFuLCBCb3JkZXJTaWRlLCBDb2xvciwgRUJvcmRlclN0eWxlLCBib29sIGZpcnN0Q29ybmVyKTsK
ICAgICB2b2lkIGRyYXdCb3JkZXIoR3JhcGhpY3NDb250ZXh0KiwgaW50IHgxLCBpbnQgeTEsIGlu
dCB4MiwgaW50IHkyLCBCb3JkZXJTaWRlLAogICAgICAgICBDb2xvciwgY29uc3QgQ29sb3ImIHRl
eHRjb2xvciwgRUJvcmRlclN0eWxlLCBpbnQgYWRqYncxLCBpbnQgYWRqYncyLCBib29sIGludmFs
aWRpc0ludmVydCA9IGZhbHNlKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8563</attachid>
            <date>2006-05-26 14:55:39 -0700</date>
            <delta_ts>2006-05-30 15:51:32 -0700</delta_ts>
            <desc>Clips inside arc as well</desc>
            <filename>postingFriday.txt</filename>
            <type>text/plain</type>
            <size>25983</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IHBsYXRmb3JtL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3Jt
L0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAxNDYwOSkKKysrIHBsYXRmb3JtL0dyYXBoaWNz
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgICAgIHZvaWQg
ZHJhd1JlY3QoY29uc3QgSW50UmVjdCYpOwogICAgICAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IElu
dFBvaW50JiwgY29uc3QgSW50UG9pbnQmKTsKICAgICAgICAgdm9pZCBkcmF3RWxsaXBzZShjb25z
dCBJbnRSZWN0Jik7Ci0gICAgICAgIHZvaWQgZHJhd0FyYyhpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50KTsKKyAgICAgICAgdm9pZCBkcmF3QXJjKGNvbnN0IEludFJlY3QmLCBmbG9hdCB0aGlj
a25lc3MsIGludCBzdGFydEFuZ2xlLCBpbnQgYW5nbGVTcGFuKTsKICAgICAgICAgdm9pZCBkcmF3
Q29udmV4UG9seWdvbihjb25zdCBJbnRQb2ludEFycmF5Jik7CiAKICAgICAgICAgdm9pZCBmaWxs
UmVjdChjb25zdCBJbnRSZWN0JiwgY29uc3QgQ29sb3ImKTsKQEAgLTEwNyw2ICsxMDcsNyBAQAog
CiAgICAgICAgIHZvaWQgYWRkQ2xpcChjb25zdCBJbnRSZWN0Jik7CiAgICAgICAgIHZvaWQgYWRk
Um91bmRlZFJlY3RDbGlwKGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBj
b25zdCBJbnRTaXplJiB0b3BSaWdodCwgY29uc3QgSW50U2l6ZSYgYm90dG9tTGVmdCwgY29uc3Qg
SW50U2l6ZSYgYm90dG9tUmlnaHQpOworICAgICAgICB2b2lkIGFkZElubmVyUm91bmRlZFJlY3RD
bGlwKGNvbnN0IEludFJlY3QmLCBpbnQgdGhpY2tuZXNzKTsKIAogICAgICAgICAvLyBGdW5jdGlv
bnMgdG8gd29yayBhcm91bmQgYnVncyBpbiBmb2N1cyByaW5nIGNsaXBwaW5nIG9uIE1hYy4KICAg
ICAgICAgdm9pZCBzZXRGb2N1c1JpbmdDbGlwKGNvbnN0IEludFJlY3QmKTsKSW5kZXg6IHBsYXRm
b3JtL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDE0NjA5KQorKysgcGxhdGZvcm0vY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDYsMjcgKzI0NiwxMDcgQEAK
IH0KIAogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0FyYyhpbnQgeCwgaW50IHksIGludCB3
LCBpbnQgaCwgaW50IGEsIGludCBhbGVuKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdBcmMo
Y29uc3QgSW50UmVjdCYgcmVjdCwgZmxvYXQgdGhpY2tuZXNzLCBpbnQgc3RhcnRBbmdsZSwgaW50
IGFuZ2xlU3BhbikKIHsgCi0gICAgLy8gT25seSBzdXBwb3J0cyBhcmMgb24gY2lyY2xlcy4gIFRo
YXQncyBhbGwga2h0bWwgbmVlZHMuCi0gICAgQVNTRVJUKHcgPT0gaCk7Ci0KICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKHBlbigpLnN0
eWxlKCkgIT0gUGVuOjpOb1BlbikgewotICAgICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBs
YXRmb3JtQ29udGV4dCgpOwotICAgICAgICBDR0NvbnRleHRCZWdpblBhdGgoY29udGV4dCk7Cisg
ICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRl
eHRTYXZlR1N0YXRlKGNvbnRleHQpOworICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsK
KyAgICAvL0NHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBmYWxzZSk7CisgICAg
CisgICAgaW50IHggPSByZWN0LngoKTsKKyAgICBpbnQgeSA9IHJlY3QueSgpOworICAgIGZsb2F0
IHcgPSAoZmxvYXQpcmVjdC53aWR0aCgpOworICAgIGZsb2F0IGggPSAoZmxvYXQpcmVjdC5oZWln
aHQoKTsKKyAgICBmbG9hdCBzY2FsZUZhY3RvciA9IGggLyB3OworICAgIGZsb2F0IHJldmVyc2VT
Y2FsZUZhY3RvciA9IHcgLyBoOworICAgIAorICAgIGlmICh3ICE9IGgpCisgICAgICAgIHNjYWxl
KEZsb2F0U2l6ZSgxLCBzY2FsZUZhY3RvcikpOworICAgIAorICAgIGZsb2F0IGhSYWRpdXMgPSB3
IC8gMjsKKyAgICBmbG9hdCB2UmFkaXVzID0gaCAvIDI7CisgICAgZmxvYXQgZmEgPSBzdGFydEFu
Z2xlOworICAgIGZsb2F0IGZhbGVuID0gIGZhICsgYW5nbGVTcGFuOworICAgIGZsb2F0IHN0YXJ0
ID0gLWZhICogTV9QSS8xODA7CisgICAgZmxvYXQgZW5kID0gLWZhbGVuICogTV9QSS8xODA7Cisg
ICAgQ0dDb250ZXh0QWRkQXJjKGNvbnRleHQsIHggKyBoUmFkaXVzLCAoeSArIHZSYWRpdXMpICog
cmV2ZXJzZVNjYWxlRmFjdG9yLCBoUmFkaXVzLCBzdGFydCwgZW5kLCB0cnVlKTsKKworICAgIGlm
ICh3ICE9IGgpCisgICAgICAgIHNjYWxlKEZsb2F0U2l6ZSgxLCByZXZlcnNlU2NhbGVGYWN0b3Ip
KTsKKyAgICAKKyAgICBpZiAocGVuKCkuc3R5bGUoKSA9PSBQZW46Ok5vUGVuKSB7CisgICAgICAg
IHNldENHU3Ryb2tlQ29sb3IoY29udGV4dCwgZmlsbENvbG9yKCkpOworICAgICAgICBDR0NvbnRl
eHRTZXRMaW5lV2lkdGgoY29udGV4dCwgdGhpY2tuZXNzKTsKKyAgICAgICAgQ0dDb250ZXh0U3Ry
b2tlUGF0aChjb250ZXh0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBQZW46OlBlblN0eWxlIHBl
blN0eWxlID0gcGVuKCkuc3R5bGUoKTsKKyAgICAgICAgZmxvYXQgd2lkdGggPSBwZW4oKS53aWR0
aCgpOworICAgICAgICBpZiAod2lkdGggPCAxKQorICAgICAgICAgICAgd2lkdGggPSAxOworICAg
ICAgICBpbnQgcGF0V2lkdGggPSAwOwogICAgICAgICAKLSAgICAgICAgZmxvYXQgciA9IChmbG9h
dCl3IC8gMjsKLSAgICAgICAgZmxvYXQgZmEgPSAoZmxvYXQpYSAvIDE2OwotICAgICAgICBmbG9h
dCBmYWxlbiA9ICBmYSArIChmbG9hdClhbGVuIC8gMTY7Ci0gICAgICAgIENHQ29udGV4dEFkZEFy
Yyhjb250ZXh0LCB4ICsgciwgeSArIHIsIHIsIC1mYSAqIE1fUEkvMTgwLCAtZmFsZW4gKiBNX1BJ
LzE4MCwgdHJ1ZSk7CisgICAgICAgIHN3aXRjaCAocGVuU3R5bGUpIHsKKyAgICAgICAgICAgIGNh
c2UgUGVuOjpOb1BlbjoKKyAgICAgICAgICAgIGNhc2UgUGVuOjpTb2xpZExpbmU6CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFBlbjo6RG90TGluZToKKyAgICAgICAg
ICAgICAgICBwYXRXaWR0aCA9IChpbnQpKHdpZHRoIC8gMik7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIFBlbjo6RGFzaExpbmU6CisgICAgICAgICAgICAgICAgcGF0
V2lkdGggPSAzICogKGludCkod2lkdGggLyAyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CisgICAgICAg
IHNldENHU3Ryb2tlQ29sb3IoY29udGV4dCwgcGVuKCkuY29sb3IoKSk7CisKKyAgICAgICAgaWYg
KHBhdFdpZHRoKSB7CisgICAgICAgICAgICAvLyBFeGFtcGxlOiA4MCBwaXhlbHMgd2l0aCBhIHdp
ZHRoIG9mIDMwIHBpeGVscy4KKyAgICAgICAgICAgIC8vIFJlbWFpbmRlciBpcyAyMC4gIFRoZSBt
YXhpbXVtIHBpeGVscyBvZiBsaW5lIHdlIGNvdWxkIHBhaW50CisgICAgICAgICAgICAvLyB3aWxs
IGJlIDUwIHBpeGVscy4KKyAgICAgICAgICAgIGludCBkaXN0YW5jZTsKKyAgICAgICAgICAgIGlm
IChoUmFkaXVzID09IHZSYWRpdXMpCisgICAgICAgICAgICAgICAgZGlzdGFuY2UgPSAoaW50KShN
X1BJICogaFJhZGl1cykgLyAyOworICAgICAgICAgICAgZWxzZSAvLyBXZSBhcmUgZWxsaXB0aWNh
bCBhbmQgd2lsbCBoYXZlIHRvIGVzdGltYXRlIHRoZSBkaXN0YW5jZQorICAgICAgICAgICAgICAg
IGRpc3RhbmNlID0gKGludCkoTV9QSSAqIHNxcnQoKGhSYWRpdXMgKiBoUmFkaXVzICsgdlJhZGl1
cyAqIHZSYWRpdXMpIC8gMikpIC8gMjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IHJl
bWFpbmRlciA9IGRpc3RhbmNlICUgcGF0V2lkdGg7CisgICAgICAgICAgICBpbnQgY292ZXJhZ2Ug
PSBkaXN0YW5jZSAtIHJlbWFpbmRlcjsKKyAgICAgICAgICAgIGludCBudW1TZWdtZW50cyA9IGNv
dmVyYWdlIC8gcGF0V2lkdGg7CisKKyAgICAgICAgICAgIGZsb2F0IHBhdHRlcm5PZmZzZXQgPSAw
OworICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIDFweCBkb3R0ZWQgYm9yZGVycyBmb3Igc3Bl
ZWQuCisgICAgICAgICAgICBpZiAocGF0V2lkdGggPT0gMSkKKyAgICAgICAgICAgICAgICBwYXR0
ZXJuT2Zmc2V0ID0gMS4wOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYm9v
bCBldmVuTnVtYmVyT2ZTZWdtZW50cyA9IG51bVNlZ21lbnRzICUgMiA9PSAwOworICAgICAgICAg
ICAgICAgIGlmIChyZW1haW5kZXIpCisgICAgICAgICAgICAgICAgICAgIGV2ZW5OdW1iZXJPZlNl
Z21lbnRzID0gIWV2ZW5OdW1iZXJPZlNlZ21lbnRzOworICAgICAgICAgICAgICAgIGlmIChldmVu
TnVtYmVyT2ZTZWdtZW50cykgeworICAgICAgICAgICAgICAgICAgICBpZiAocmVtYWluZGVyKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuT2Zmc2V0ICs9IHBhdFdpZHRoIC0gcmVt
YWluZGVyOworICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybk9mZnNldCArPSByZW1haW5k
ZXIgLyAyOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHBhdHRlcm5PZmZzZXQgPSBwYXRXaWR0aCAvIDI7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlbWFpbmRlcikKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHBhdHRlcm5PZmZzZXQgPSAocGF0V2lkdGggLSByZW1haW5kZXIpIC8gMjsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBzZXRDR1N0cm9r
ZUNvbG9yKGNvbnRleHQsIHBlbigpLmNvbG9yKCkpOwotICAgICAgICBDR0NvbnRleHRTZXRMaW5l
V2lkdGgoY29udGV4dCwgcGVuKCkud2lkdGgoKSk7CisgICAgICAgICAgICBjb25zdCBDR0Zsb2F0
IGRvdHRlZExpbmVbMl0gPSB7IHBhdFdpZHRoLCBwYXRXaWR0aCB9OworICAgICAgICAgICAgQ0dD
b250ZXh0U2V0TGluZURhc2goY29udGV4dCwgcGF0dGVybk9mZnNldCwgZG90dGVkTGluZSwgMik7
CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgQ0dDb250ZXh0U2V0TGluZVdpZHRoKGNvbnRleHQs
IHdpZHRoKTsKICAgICAgICAgQ0dDb250ZXh0U3Ryb2tlUGF0aChjb250ZXh0KTsKKyAgICAgICAg
Q0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKICAgICB9CisgICAgCisgICAgQ0dDb250
ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdDb252ZXhQb2x5Z29uKGNvbnN0IEludFBvaW50QXJyYXkmIHBvaW50cykKQEAgLTM4Nyw2ICs0
NjcsMjMgQEAKICAgICBDR0NvbnRleHRDbGlwKGNvbnRleHQpOwogfQogCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoY29uc3QgSW50UmVjdCYgcmVjdCwgaW50
IHRoaWNrbmVzcykKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBhZGRDbGlwKHJlY3QpOworICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxh
dGZvcm1Db250ZXh0KCk7CisgICAgCisgICAgLy8gQWRkIG91dGVyIGVsbGlwc2UKKyAgICBDR0Nv
bnRleHRBZGRFbGxpcHNlSW5SZWN0KGNvbnRleHQsIENHUmVjdE1ha2UocmVjdC54KCksIHJlY3Qu
eSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpKTsKKyAgICAvLyBBZGQgaW5uZXIgZWxs
aXBzZS4KKyAgICBDR0NvbnRleHRBZGRFbGxpcHNlSW5SZWN0KGNvbnRleHQsIENHUmVjdE1ha2Uo
cmVjdC54KCkgKyB0aGlja25lc3MsIHJlY3QueSgpICsgdGhpY2tuZXNzLAorICAgICAgICByZWN0
LndpZHRoKCkgLSAodGhpY2tuZXNzICogMiksIHJlY3QuaGVpZ2h0KCkgLSAodGhpY2tuZXNzICog
MikpKTsKKyAgICAKKyAgICBDR0NvbnRleHRFT0NsaXAoY29udGV4dCk7Cit9CisKICNpZiBTVkdf
U1VQUE9SVAogS1JlbmRlcmluZ0RldmljZUNvbnRleHQqIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRl
UmVuZGVyaW5nRGV2aWNlQ29udGV4dCgpCiB7CkluZGV4OiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24g
MTQ2MDkpCisrKyByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Nzk4LDYgKzc5OCw4OCBAQAogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBSZW5kZXJPYmpl
Y3Q6OmRyYXdCb3JkZXJBcmMoR3JhcGhpY3NDb250ZXh0KiBwLCBpbnQgeCwgaW50IHksIGZsb2F0
IHRoaWNrbmVzcywgSW50U2l6ZSByYWRpdXMsIGludCBhbmdsZVN0YXJ0LCAKKyAgICBpbnQgYW5n
bGVTcGFuLCBCb3JkZXJTaWRlIHMsIENvbG9yIGMsIEVCb3JkZXJTdHlsZSBzdHlsZSwgYm9vbCBm
aXJzdENvcm5lcikKK3sKKyAgICBpZiAoKHN0eWxlID09IERPVUJMRSAmJiAoKHRoaWNrbmVzcyAv
IDIpIDwgMykpIHx8IAorICAgICAgICAoKHN0eWxlID09IFJJREdFIHx8IHN0eWxlID09IEdST09W
RSkgJiYgKCh0aGlja25lc3MgLyAyKSA8IDIpKSkKKyAgICAgICAgc3R5bGUgPSBTT0xJRDsKKyAg
ICAKKyAgICBzd2l0Y2ggKHN0eWxlKSB7CisgICAgICAgIGNhc2UgQk5PTkU6CisgICAgICAgIGNh
c2UgQkhJRERFTjoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBET1RURUQ6Cisg
ICAgICAgICAgICBwLT5zZXRQZW4oUGVuKGMsIHRoaWNrbmVzcyA9PSAxID8gMCA6IChpbnQpdGhp
Y2tuZXNzLCBQZW46OkRvdExpbmUpKTsKKyAgICAgICAgY2FzZSBEQVNIRUQ6CisgICAgICAgICAg
ICBpZihzdHlsZSA9PSBEQVNIRUQpCisgICAgICAgICAgICAgICAgcC0+c2V0UGVuKFBlbihjLCB0
aGlja25lc3MgPT0gMSA/IDAgOiAoaW50KXRoaWNrbmVzcywgUGVuOjpEYXNoTGluZSkpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBpZiAodGhpY2tuZXNzID4gMCkgeworICAgICAgICAgICAg
ICAgIGlmIChzID09IEJTQm90dG9tIHx8IHMgPT0gQlNUb3ApCisgICAgICAgICAgICAgICAgICAg
IHAtPmRyYXdBcmMoSW50UmVjdCh4LCB5LCByYWRpdXMud2lkdGgoKSAqIDIsIHJhZGl1cy5oZWln
aHQoKSAqIDIpLCB0aGlja25lc3MsIGFuZ2xlU3RhcnQsIGFuZ2xlU3Bhbik7CisgICAgICAgICAg
ICAgICAgZWxzZSAvL1dlIGFyZSBkcmF3aW5nIGEgbGVmdCBvciByaWdodCBib3JkZXIKKyAgICAg
ICAgICAgICAgICAgICAgcC0+ZHJhd0FyYyhJbnRSZWN0KHgsIHksIHJhZGl1cy53aWR0aCgpICog
MiwgcmFkaXVzLmhlaWdodCgpICogMiksIHRoaWNrbmVzcywgYW5nbGVTdGFydCwgYW5nbGVTcGFu
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRE9VQkxFOgorICAgICAgICAgICAgZmxvYXQgdGhpcmQgPSB0aGlja25lc3MgLyAz
OworICAgICAgICAgICAgZmxvYXQgaW5uZXJUaGlyZCA9ICh0aGlja25lc3MgKyAxKSAvIDY7Cisg
ICAgICAgICAgICBpbnQgc2hpZnRGb3JJbm5lciA9IGxyb3VuZChpbm5lclRoaXJkICogMi41KTsK
KyAgICAgICAgICAgIHAtPnNldFBlbihQZW46Ok5vUGVuKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgaW50IG91dGVyWSA9IHk7CisgICAgICAgICAgICBpbnQgb3V0ZXJIZWlnaHQgPSByYWRp
dXMuaGVpZ2h0KCkgKiAyOworICAgICAgICAgICAgaW50IGlubmVyWCA9IHggKyBzaGlmdEZvcklu
bmVyOworICAgICAgICAgICAgaW50IGlubmVyWSA9IHkgKyBzaGlmdEZvcklubmVyOworICAgICAg
ICAgICAgaW50IGlubmVyV2lkdGggPSAocmFkaXVzLndpZHRoKCkgLSBzaGlmdEZvcklubmVyKSAq
IDI7CisgICAgICAgICAgICBpbnQgaW5uZXJIZWlnaHQgPSAocmFkaXVzLmhlaWdodCgpIC0gc2hp
ZnRGb3JJbm5lcikgKiAyOworICAgICAgICAgICAgaWYgKGlubmVyVGhpcmQgPiAxICYmIChzID09
IEJTVG9wIHx8IChmaXJzdENvcm5lciAmJiAocyA9PSBCU0xlZnQgfHwgcyA9PSBCU1JpZ2h0KSkp
KSB7CisgICAgICAgICAgICAgICAgb3V0ZXJIZWlnaHQgKz0gMjsKKyAgICAgICAgICAgICAgICBp
bm5lckhlaWdodCArPSAyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICBwLT5kcmF3QXJjKEludFJlY3QoeCwgb3V0ZXJZLCByYWRpdXMud2lkdGgoKSAqIDIsIG91dGVy
SGVpZ2h0KSwgdGhpcmQsIGFuZ2xlU3RhcnQsIGFuZ2xlU3Bhbik7CisgICAgICAgICAgICBwLT5k
cmF3QXJjKEludFJlY3QoaW5uZXJYLCBpbm5lclksIGlubmVyV2lkdGgsIGlubmVySGVpZ2h0KSwg
KGlubmVyVGhpcmQgPiAyKSA/IGlubmVyVGhpcmQgLSAxIDogaW5uZXJUaGlyZCwKKyAgICAgICAg
ICAgICAgICBhbmdsZVN0YXJ0LCBhbmdsZVNwYW4pOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgR1JPT1ZFOgorICAgICAgICBjYXNlIFJJREdFOiB7CisgICAgICAgICAgICBDb2xv
ciBjMjsKKyAgICAgICAgICAgIGlmICgoc3R5bGUgPT0gUklER0UgJiYgKHMgPT0gQlNUb3AgfHwg
cyA9PSBCU0xlZnQpKSB8fCAKKyAgICAgICAgICAgICAgICAoc3R5bGUgPT0gR1JPT1ZFICYmIChz
ID09IEJTQm90dG9tIHx8IHMgPT0gQlNSaWdodCkpKQorICAgICAgICAgICAgICAgIGMyID0gYy5k
YXJrKCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjMiA9IGM7CisgICAg
ICAgICAgICAgICAgYyA9IGMuZGFyaygpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBw
LT5zZXRQZW4oUGVuOjpOb1Blbik7CisgICAgICAgICAgICBwLT5zZXRGaWxsQ29sb3IoYy5yZ2Io
KSk7CisgICAgICAgICAgICBwLT5kcmF3QXJjKEludFJlY3QoeCwgeSwgcmFkaXVzLndpZHRoKCkg
KiAyLCByYWRpdXMuaGVpZ2h0KCkgKiAyKSwgdGhpY2tuZXNzLCBhbmdsZVN0YXJ0LCBhbmdsZVNw
YW4pOworICAgICAgICAgICAgCisgICAgICAgICAgICBmbG9hdCBoYWxmVGhpY2tuZXNzID0gKHRo
aWNrbmVzcyArIDEpIC8gNDsKKyAgICAgICAgICAgIGludCBzaGlmdEZvcklubmVyID0gbHJvdW5k
KGhhbGZUaGlja25lc3MgKiAxLjUpOworICAgICAgICAgICAgcC0+c2V0RmlsbENvbG9yKGMyLnJn
YigpKTsKKyAgICAgICAgICAgIHAtPmRyYXdBcmMoSW50UmVjdCh4ICsgc2hpZnRGb3JJbm5lciwg
eSArIHNoaWZ0Rm9ySW5uZXIsIChyYWRpdXMud2lkdGgoKSAtIHNoaWZ0Rm9ySW5uZXIpICogMiwK
KyAgICAgICAgICAgICAgICAocmFkaXVzLmhlaWdodCgpIC0gc2hpZnRGb3JJbm5lcikgKiAyKSwg
aGFsZlRoaWNrbmVzcywgYW5nbGVTdGFydCwgYW5nbGVTcGFuKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2UgSU5TRVQ6CisgICAgICAgICAgICBpZihzID09IEJT
VG9wIHx8IHMgPT0gQlNMZWZ0KQorICAgICAgICAgICAgICAgIGMgPSBjLmRhcmsoKTsKKyAgICAg
ICAgY2FzZSBPVVRTRVQ6CisgICAgICAgICAgICBpZihzdHlsZSA9PSBPVVRTRVQgJiYgKHMgPT0g
QlNCb3R0b20gfHwgcyA9PSBCU1JpZ2h0KSkKKyAgICAgICAgICAgICAgICBjID0gYy5kYXJrKCk7
CisgICAgICAgIGNhc2UgU09MSUQ6CisgICAgICAgICAgICBwLT5zZXRQZW4oUGVuOjpOb1Blbik7
CisgICAgICAgICAgICBwLT5zZXRGaWxsQ29sb3IoYy5yZ2IoKSk7CisgICAgICAgICAgICBwLT5k
cmF3QXJjKEludFJlY3QoeCwgeSwgcmFkaXVzLndpZHRoKCkgKiAyLCByYWRpdXMuaGVpZ2h0KCkg
KiAyKSwgdGhpY2tuZXNzLCBhbmdsZVN0YXJ0LCBhbmdsZVNwYW4pOworICAgICAgICAgICAgYnJl
YWs7CisgICAgfQorfQorCiB2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0JvcmRlcihHcmFwaGljc0Nv
bnRleHQqIHAsIGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5MiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJvcmRlclNpZGUgcywgQ29sb3IgYywgY29uc3QgQ29sb3ImIHRleHRj
b2xvciwgRUJvcmRlclN0eWxlIHN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGFkamJ3MSwgaW50IGFkamJ3MiwgYm9vbCBpbnZhbGlkaXNJbnZlcnQpCkBAIC0xMTQ1LDE1
ICsxMjI3LDE1IEBACiAgICAgRUJvcmRlclN0eWxlIGxzID0gc3R5bGUtPmJvcmRlckxlZnRTdHls
ZSgpOwogICAgIEVCb3JkZXJTdHlsZSBycyA9IHN0eWxlLT5ib3JkZXJSaWdodFN0eWxlKCk7CiAK
LSAgICBib29sIHJlbmRlcl90ID0gdHMgPiBCSElEREVOICYmICF0dDsKLSAgICBib29sIHJlbmRl
cl9sID0gbHMgPiBCSElEREVOICYmIGJlZ2luICYmICFsdDsKLSAgICBib29sIHJlbmRlcl9yID0g
cnMgPiBCSElEREVOICYmIGVuZCAmJiAhcnQ7Ci0gICAgYm9vbCByZW5kZXJfYiA9IGJzID4gQkhJ
RERFTiAmJiAhYnQ7CisgICAgYm9vbCByZW5kZXJUb3AgPSB0cyA+IEJISURERU4gJiYgIXR0Owor
ICAgIGJvb2wgcmVuZGVyTGVmdCA9IGxzID4gQkhJRERFTiAmJiBiZWdpbiAmJiAhbHQ7CisgICAg
Ym9vbCByZW5kZXJSaWdodCA9IHJzID4gQkhJRERFTiAmJiBlbmQgJiYgIXJ0OworICAgIGJvb2wg
cmVuZGVyQm90dG9tID0gYnMgPiBCSElEREVOICYmICFidDsKIAogICAgIC8vIE5lZWQgc3VmZmlj
aWVudCB3aWR0aCBhbmQgaGVpZ2h0IHRvIGNvbnRhaW4gYm9yZGVyIHJhZGl1cyBjdXJ2ZXMuICBT
YW5pdHkgY2hlY2sgb3VyIHRvcC9ib3R0b20KICAgICAvLyB2YWx1ZXMgYW5kIG91ciB3aWR0aC9o
ZWlnaHQgdmFsdWVzIHRvIG1ha2Ugc3VyZSB0aGUgY3VydmVzIGNhbiBhbGwgZml0LiBJZiBub3Qs
IHRoZW4gd2Ugd29uJ3QgcGFpbnQKICAgICAvLyBhbnkgYm9yZGVyIHJhZGlpLgotICAgIGJvb2wg
cmVuZGVyX3JhZGlpID0gZmFsc2U7CisgICAgYm9vbCByZW5kZXJSYWRpaSA9IGZhbHNlOwogICAg
IEludFNpemUgdG9wTGVmdCA9IHN0eWxlLT5ib3JkZXJUb3BMZWZ0UmFkaXVzKCk7CiAgICAgSW50
U2l6ZSB0b3BSaWdodCA9IHN0eWxlLT5ib3JkZXJUb3BSaWdodFJhZGl1cygpOwogICAgIEludFNp
emUgYm90dG9tTGVmdCA9IHN0eWxlLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCk7CkBAIC0xMTYy
LDI5ICsxMjQ0LDM2IEBACiAgICAgaWYgKHN0eWxlLT5oYXNCb3JkZXJSYWRpdXMoKSkgewogICAg
ICAgICBpbnQgcmVxdWlyZWRXaWR0aCA9IG1heCh0b3BMZWZ0LndpZHRoKCkgKyB0b3BSaWdodC53
aWR0aCgpLCBib3R0b21MZWZ0LndpZHRoKCkgKyBib3R0b21SaWdodC53aWR0aCgpKTsKICAgICAg
ICAgaW50IHJlcXVpcmVkSGVpZ2h0ID0gbWF4KHRvcExlZnQuaGVpZ2h0KCkgKyBib3R0b21MZWZ0
LmhlaWdodCgpLCB0b3BSaWdodC5oZWlnaHQoKSArIGJvdHRvbVJpZ2h0LmhlaWdodCgpKTsKLSAg
ICAgICAgcmVuZGVyX3JhZGlpID0gKHJlcXVpcmVkV2lkdGggPD0gdyAmJiByZXF1aXJlZEhlaWdo
dCA8PSBoKTsKKyAgICAgICAgcmVuZGVyUmFkaWkgPSAocmVxdWlyZWRXaWR0aCA8PSB3ICYmIHJl
cXVpcmVkSGVpZ2h0IDw9IGgpOwogICAgIH0KICAgICAKICAgICAvLyBDbGlwIHRvIHRoZSByb3Vu
ZGVkIHJlY3RhbmdsZS4KLSAgICBpZiAocmVuZGVyX3JhZGlpKSB7CisgICAgaWYgKHJlbmRlclJh
ZGlpKSB7CiAgICAgICAgIHAtPnNhdmUoKTsKICAgICAgICAgcC0+YWRkUm91bmRlZFJlY3RDbGlw
KEludFJlY3QoX3R4LCBfdHksIHcsIGgpLCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwg
Ym90dG9tUmlnaHQpOwogICAgIH0KIAotICAgIGlmIChyZW5kZXJfdCkgewotICAgICAgICBib29s
IGlnbm9yZV9sZWZ0ID0gKHJlbmRlcl9yYWRpaSAmJiB0b3BMZWZ0LndpZHRoKCkgPiAwKSB8fAor
ICAgIGludCBmaXJzdEFuZ2xlU3RhcnQsIHNlY29uZEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFu
LCBzZWNvbmRBbmdsZVNwYW47CisgICAgZmxvYXQgdGhpY2tuZXNzOworICAgIGJvb2wgdXBwZXJM
ZWZ0Qm9yZGVyU3R5bGVzTWF0Y2ggPSByZW5kZXJMZWZ0ICYmICh0cyA9PSBscykgJiYgKHRjID09
IGxjKSAmJiAodHMgIT0gSU5TRVQpICYmICh0cyAhPSBHUk9PVkUpOworICAgIGJvb2wgdXBwZXJS
aWdodEJvcmRlclN0eWxlc01hdGNoID0gcmVuZGVyUmlnaHQgJiYgKHRzID09IHJzKSAmJiAodGMg
PT0gcmMpICYmICh0cyAhPSBPVVRTRVQpICYmICh0cyAhPSBSSURHRSk7CisgICAgYm9vbCBsb3dl
ckxlZnRCb3JkZXJTdHlsZXNNYXRjaCA9IHJlbmRlckxlZnQgJiYgKGJzID09IGxzKSAmJiAoYmMg
PT0gbGMpICYmIChicyAhPSBPVVRTRVQpICYmIChicyAhPSBSSURHRSk7CisgICAgYm9vbCBsb3dl
clJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggPSByZW5kZXJSaWdodCAmJiAoYnMgPT0gcnMpICYmIChi
YyA9PSByYykgJiYgKGJzICE9IElOU0VUKSAmJiAoYnMgIT0gR1JPT1ZFKTsKKworICAgIGlmIChy
ZW5kZXJUb3ApIHsKKyAgICAgICAgYm9vbCBpZ25vcmVfbGVmdCA9IChyZW5kZXJSYWRpaSAmJiB0
b3BMZWZ0LndpZHRoKCkgPiAwKSB8fAogICAgICAgICAgICAgKCh0YyA9PSBsYykgJiYgKHR0ID09
IGx0KSAmJgogICAgICAgICAgICAgKHRzID49IE9VVFNFVCkgJiYKICAgICAgICAgICAgIChscyA9
PSBET1RURUQgfHwgbHMgPT0gREFTSEVEIHx8IGxzID09IFNPTElEIHx8IGxzID09IE9VVFNFVCkp
OwogCi0gICAgICAgIGJvb2wgaWdub3JlX3JpZ2h0ID0gKHJlbmRlcl9yYWRpaSAmJiB0b3BSaWdo
dC53aWR0aCgpID4gMCkgfHwKKyAgICAgICAgYm9vbCBpZ25vcmVfcmlnaHQgPSAocmVuZGVyUmFk
aWkgJiYgdG9wUmlnaHQud2lkdGgoKSA+IDApIHx8CiAgICAgICAgICAgICAoKHRjID09IHJjKSAm
JiAodHQgPT0gcnQpICYmCiAgICAgICAgICAgICAodHMgPj0gT1VUU0VUKSAmJgogICAgICAgICAg
ICAgKHJzID09IERPVFRFRCB8fCBycyA9PSBEQVNIRUQgfHwgcnMgPT0gU09MSUQgfHwgcnMgPT0g
SU5TRVQpKTsKICAgICAgICAgCiAgICAgICAgIGludCB4ID0gX3R4OwogICAgICAgICBpbnQgeDIg
PSBfdHggKyB3OwotICAgICAgICBpZiAocmVuZGVyX3JhZGlpKSB7CisgICAgICAgIGlmIChyZW5k
ZXJSYWRpaSkgewogICAgICAgICAgICAgeCArPSB0b3BMZWZ0LndpZHRoKCk7CiAgICAgICAgICAg
ICB4MiAtPSB0b3BSaWdodC53aWR0aCgpOwogICAgICAgICB9CkBAIC0xMTkyLDIyICsxMjgxLDc0
IEBACiAgICAgICAgIGRyYXdCb3JkZXIocCwgeCwgX3R5LCB4MiwgX3R5ICsgIHN0eWxlLT5ib3Jk
ZXJUb3BXaWR0aCgpLCBCU1RvcCwgdGMsIHN0eWxlLT5jb2xvcigpLCB0cywKICAgICAgICAgICAg
ICAgICAgICBpZ25vcmVfbGVmdCA/IDAgOiBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksCiAgICAg
ICAgICAgICAgICAgICAgaWdub3JlX3JpZ2h0PyAwIDogc3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgo
KSk7CisgICAgICAgIAorICAgICAgICBpZiAocmVuZGVyUmFkaWkpIHsKKyAgICAgICAgICAgIGlu
dCBsZWZ0WCA9IF90eDsKKyAgICAgICAgICAgIGludCBsZWZ0WSA9IF90eTsKKyAgICAgICAgICAg
IGludCByaWdodFggPSBfdHggKyB3IC0gdG9wUmlnaHQud2lkdGgoKSAqIDI7CisgICAgICAgICAg
ICBmaXJzdEFuZ2xlU3RhcnQgPSA5MDsKKyAgICAgICAgICAgIGZpcnN0QW5nbGVTcGFuID0gdXBw
ZXJMZWZ0Qm9yZGVyU3R5bGVzTWF0Y2ggPyA5MCA6IDQ1OworICAgICAgICAgICAgCisgICAgICAg
ICAgICAvLyBXZSBtYWtlIHRoZSBhcmMgZG91YmxlIHRoaWNrIGFuZCBsZXQgdGhlIGNsaXAgcmVj
dCB0YWtlIGNhcmUgb2YgY2xpcHBpbmcgdGhlIGV4dHJhIG9mZi4KKyAgICAgICAgICAgIC8vIFdl
J3JlIGRvaW5nIHRoaXMgYmVjYXVzZSBpdCBkb2Vzbid0IHNlZW0gcG9zc2libGUgdG8gbWF0Y2gg
dGhlIGN1cnZlIG9mIHRoZSBjbGlwIGV4YWN0bHkKKyAgICAgICAgICAgIC8vIHdpdGggdGhlIGFy
Yy1kcmF3aW5nIGZ1bmN0aW9uLgorICAgICAgICAgICAgdGhpY2tuZXNzID0gc3R5bGUtPmJvcmRl
clRvcFdpZHRoKCkgKiAyOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAodXBwZXJSaWdo
dEJvcmRlclN0eWxlc01hdGNoKSB7CisgICAgICAgICAgICAgICAgc2Vjb25kQW5nbGVTdGFydCA9
IDA7CisgICAgICAgICAgICAgICAgc2Vjb25kQW5nbGVTcGFuID0gOTA7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIHNlY29uZEFuZ2xlU3RhcnQgPSA0NTsKKyAgICAgICAg
ICAgICAgICBzZWNvbmRBbmdsZVNwYW4gPSA0NTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgLy8gVGhlIGlubmVyIGNsaXAgY2xpcHMgaW5zaWRlIHRoZSBhcmMuIFRo
aXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgZm9yIDFweCBib3JkZXJzLgorICAgICAgICAgICAg
Ym9vbCBhcHBseUxlZnRJbm5lckNsaXAgPSAoc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpIDwgdG9w
TGVmdC53aWR0aCgpKQorICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVyVG9wV2lkdGgo
KSA8IHRvcExlZnQuaGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgJiYgKHRzICE9IERPVUJMRSB8
fCBzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA+IDYpOworICAgICAgICAgICAgaWYgKGFwcGx5TGVm
dElubmVyQ2xpcCkgeworICAgICAgICAgICAgICAgIHAtPnNhdmUoKTsKKyAgICAgICAgICAgICAg
ICBwLT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KGxlZnRYLCBsZWZ0WSwgdG9wTGVm
dC53aWR0aCgpICogMiwgdG9wTGVmdC5oZWlnaHQoKSAqIDIpLCAKKyAgICAgICAgICAgICAgICAg
ICAgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBEcmF3IHVwcGVyIGxlZnQgYXJjCisgICAgICAgICAgICBkcmF3Qm9y
ZGVyQXJjKHAsIGxlZnRYLCBsZWZ0WSwgdGhpY2tuZXNzLCB0b3BMZWZ0LCBmaXJzdEFuZ2xlU3Rh
cnQsIGZpcnN0QW5nbGVTcGFuLAorICAgICAgICAgICAgICAgIEJTVG9wLCB0YywgdHMsIHRydWUp
OworICAgICAgICAgICAgaWYgKGFwcGx5TGVmdElubmVyQ2xpcCkKKyAgICAgICAgICAgICAgICBw
LT5yZXN0b3JlKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJvb2wgYXBwbHlSaWdodElu
bmVyQ2xpcCA9IChzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpIDwgdG9wUmlnaHQud2lkdGgoKSkK
KyAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJvcmRlclRvcFdpZHRoKCkgPCB0b3BSaWdodC5o
ZWlnaHQoKSkKKyAgICAgICAgICAgICAgICAmJiAodHMgIT0gRE9VQkxFIHx8IHN0eWxlLT5ib3Jk
ZXJUb3BXaWR0aCgpID4gNik7CisgICAgICAgICAgICBpZiAoYXBwbHlSaWdodElubmVyQ2xpcCkg
eworICAgICAgICAgICAgICAgIHAtPnNhdmUoKTsKKyAgICAgICAgICAgICAgICBwLT5hZGRJbm5l
clJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KHJpZ2h0WCwgbGVmdFksIHRvcFJpZ2h0LndpZHRoKCkg
KiAyLCB0b3BSaWdodC5oZWlnaHQoKSAqIDIpLAorICAgICAgICAgICAgICAgICAgICBzdHlsZS0+
Ym9yZGVyVG9wV2lkdGgoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIC8vIERyYXcgdXBwZXIgcmlnaHQgYXJjCisgICAgICAgICAgICBkcmF3Qm9yZGVyQXJjKHAs
IHJpZ2h0WCwgbGVmdFksIHRoaWNrbmVzcywgdG9wUmlnaHQsIHNlY29uZEFuZ2xlU3RhcnQsIHNl
Y29uZEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAgICBCU1RvcCwgdGMsIHRzLCBmYWxzZSk7Cisg
ICAgICAgICAgICBpZiAoYXBwbHlSaWdodElubmVyQ2xpcCkKKyAgICAgICAgICAgICAgICBwLT5y
ZXN0b3JlKCk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAocmVuZGVyX2IpIHsKLSAgICAg
ICAgYm9vbCBpZ25vcmVfbGVmdCA9IChyZW5kZXJfcmFkaWkgJiYgYm90dG9tTGVmdC53aWR0aCgp
ID4gMCkgfHwKKyAgICBpZiAocmVuZGVyQm90dG9tKSB7CisgICAgICAgIGJvb2wgaWdub3JlX2xl
ZnQgPSAocmVuZGVyUmFkaWkgJiYgYm90dG9tTGVmdC53aWR0aCgpID4gMCkgfHwKICAgICAgICAg
KChiYyA9PSBsYykgJiYgKGJ0ID09IGx0KSAmJgogICAgICAgICAoYnMgPj0gT1VUU0VUKSAmJgog
ICAgICAgICAobHMgPT0gRE9UVEVEIHx8IGxzID09IERBU0hFRCB8fCBscyA9PSBTT0xJRCB8fCBs
cyA9PSBPVVRTRVQpKTsKIAotICAgICAgICBib29sIGlnbm9yZV9yaWdodCA9IChyZW5kZXJfcmFk
aWkgJiYgYm90dG9tUmlnaHQud2lkdGgoKSA+IDApIHx8CisgICAgICAgIGJvb2wgaWdub3JlX3Jp
Z2h0ID0gKHJlbmRlclJhZGlpICYmIGJvdHRvbVJpZ2h0LndpZHRoKCkgPiAwKSB8fAogICAgICAg
ICAgICAgKChiYyA9PSByYykgJiYgKGJ0ID09IHJ0KSAmJgogICAgICAgICAgICAgKGJzID49IE9V
VFNFVCkgJiYKICAgICAgICAgICAgIChycyA9PSBET1RURUQgfHwgcnMgPT0gREFTSEVEIHx8IHJz
ID09IFNPTElEIHx8IHJzID09IElOU0VUKSk7CiAgICAgICAgIAogICAgICAgICBpbnQgeCA9IF90
eDsKICAgICAgICAgaW50IHgyID0gX3R4ICsgdzsKLSAgICAgICAgaWYgKHJlbmRlcl9yYWRpaSkg
eworICAgICAgICBpZiAocmVuZGVyUmFkaWkpIHsKICAgICAgICAgICAgIHggKz0gYm90dG9tTGVm
dC53aWR0aCgpOwogICAgICAgICAgICAgeDIgLT0gYm90dG9tUmlnaHQud2lkdGgoKTsKICAgICAg
ICAgfQpAQCAtMTIxNSwyMiArMTM1Niw2OSBAQAogICAgICAgICBkcmF3Qm9yZGVyKHAsIHgsIF90
eSArIGggLSBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgeDIsIF90eSArIGgsIEJTQm90dG9t
LCBiYywgc3R5bGUtPmNvbG9yKCksIGJzLAogICAgICAgICAgICAgICAgICAgIGlnbm9yZV9sZWZ0
ID8gMCA6c3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLAogICAgICAgICAgICAgICAgICAgIGlnbm9y
ZV9yaWdodD8gMCA6c3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSk7CisgICAgICAgIAorICAgICAg
ICBpZiAocmVuZGVyUmFkaWkpIHsKKyAgICAgICAgICAgIGludCBsZWZ0WCA9IF90eDsKKyAgICAg
ICAgICAgIGludCBsZWZ0WSA9IF90eSArIGggIC0gYm90dG9tTGVmdC5oZWlnaHQoKSAqIDI7Cisg
ICAgICAgICAgICBpbnQgcmlnaHRYID0gX3R4ICsgdyAtIGJvdHRvbVJpZ2h0LndpZHRoKCkgKiAy
OworICAgICAgICAgICAgc2Vjb25kQW5nbGVTdGFydCA9IDI3MDsKKyAgICAgICAgICAgIHNlY29u
ZEFuZ2xlU3BhbiA9IHVwcGVyUmlnaHRCb3JkZXJTdHlsZXNNYXRjaCA/IDkwIDogNDU7CisgICAg
ICAgICAgICB0aGlja25lc3MgPSBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSAqIDI7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGlmICh1cHBlckxlZnRCb3JkZXJTdHlsZXNNYXRjaCkgewor
ICAgICAgICAgICAgICAgIGZpcnN0QW5nbGVTdGFydCA9IDE4MDsKKyAgICAgICAgICAgICAgICBm
aXJzdEFuZ2xlU3BhbiA9IDkwOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBmaXJzdEFuZ2xlU3RhcnQgPSAyMjU7CisgICAgICAgICAgICAgICAgZmlyc3RBbmdsZVNwYW4g
PSAgNDU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJvb2wgYXBw
bHlMZWZ0SW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA8IGJvdHRvbUxlZnQu
d2lkdGgoKSkKKyAgICAgICAgICAgICAgICAmJiAoc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkg
PCBib3R0b21MZWZ0LmhlaWdodCgpKQorICAgICAgICAgICAgICAgICYmIChicyAhPSBET1VCTEUg
fHwgc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgPiA2KTsKKyAgICAgICAgICAgIGlmIChhcHBs
eUxlZnRJbm5lckNsaXApIHsKKyAgICAgICAgICAgICAgICBwLT5zYXZlKCk7CisgICAgICAgICAg
ICAgICAgcC0+YWRkSW5uZXJSb3VuZGVkUmVjdENsaXAoSW50UmVjdChsZWZ0WCwgbGVmdFksIGJv
dHRvbUxlZnQud2lkdGgoKSAqIDIsIGJvdHRvbUxlZnQuaGVpZ2h0KCkgKiAyKSwgCisgICAgICAg
ICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gRHJhdyBsb3dlciBsZWZ0IGFyYworICAgICAg
ICAgICAgZHJhd0JvcmRlckFyYyhwLCBsZWZ0WCwgbGVmdFksIHRoaWNrbmVzcywgYm90dG9tTGVm
dCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAgICBCU0Jv
dHRvbSwgYmMsIGJzLCB0cnVlKTsKKyAgICAgICAgICAgIGlmIChhcHBseUxlZnRJbm5lckNsaXAp
CisgICAgICAgICAgICAgICAgcC0+cmVzdG9yZSgpOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgYm9vbCBhcHBseVJpZ2h0SW5uZXJDbGlwID0gKHN0eWxlLT5ib3JkZXJSaWdodFdpZHRo
KCkgPCBib3R0b21SaWdodC53aWR0aCgpKQorICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9y
ZGVyQm90dG9tV2lkdGgoKSA8IGJvdHRvbVJpZ2h0LmhlaWdodCgpKQorICAgICAgICAgICAgICAg
ICYmIChicyAhPSBET1VCTEUgfHwgc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgPiA2KTsKKyAg
ICAgICAgICAgIGlmIChhcHBseVJpZ2h0SW5uZXJDbGlwKSB7CisgICAgICAgICAgICAgICAgcC0+
c2F2ZSgpOworICAgICAgICAgICAgICAgIHAtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKEludFJl
Y3QocmlnaHRYLCBsZWZ0WSwgYm90dG9tUmlnaHQud2lkdGgoKSAqIDIsIGJvdHRvbVJpZ2h0Lmhl
aWdodCgpICogMiksCisgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0
aCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gRHJhdyBs
b3dlciByaWdodCBhcmMKKyAgICAgICAgICAgIGRyYXdCb3JkZXJBcmMocCwgcmlnaHRYLCBsZWZ0
WSwgdGhpY2tuZXNzLCBib3R0b21SaWdodCwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVT
cGFuLAorICAgICAgICAgICAgICAgIEJTQm90dG9tLCBiYywgYnMsIGZhbHNlKTsKKyAgICAgICAg
ICAgIGlmIChhcHBseVJpZ2h0SW5uZXJDbGlwKQorICAgICAgICAgICAgICAgIHAtPnJlc3RvcmUo
KTsKKyAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBpZiAocmVuZGVyX2wpIHsKLSAgICAgICAg
Ym9vbCBpZ25vcmVfdG9wID0gKHJlbmRlcl9yYWRpaSAmJiB0b3BMZWZ0LmhlaWdodCgpID4gMCkg
fHwKKyAgICBpZiAocmVuZGVyTGVmdCkgeworICAgICAgICBib29sIGlnbm9yZV90b3AgPSAocmVu
ZGVyUmFkaWkgJiYgdG9wTGVmdC5oZWlnaHQoKSA+IDApIHx8CiAgICAgICAgICAgKCh0YyA9PSBs
YykgJiYgKHR0ID09IGx0KSAmJgogICAgICAgICAgIChscyA+PSBPVVRTRVQpICYmCiAgICAgICAg
ICAgKHRzID09IERPVFRFRCB8fCB0cyA9PSBEQVNIRUQgfHwgdHMgPT0gU09MSUQgfHwgdHMgPT0g
T1VUU0VUKSk7CiAKLSAgICAgICAgYm9vbCBpZ25vcmVfYm90dG9tID0gKHJlbmRlcl9yYWRpaSAm
JiBib3R0b21MZWZ0LmhlaWdodCgpID4gMCkgfHwKKyAgICAgICAgYm9vbCBpZ25vcmVfYm90dG9t
ID0gKHJlbmRlclJhZGlpICYmIGJvdHRvbUxlZnQuaGVpZ2h0KCkgPiAwKSB8fAogICAgICAgICAg
ICgoYmMgPT0gbGMpICYmIChidCA9PSBsdCkgJiYKICAgICAgICAgICAobHMgPj0gT1VUU0VUKSAm
JgogICAgICAgICAgIChicyA9PSBET1RURUQgfHwgYnMgPT0gREFTSEVEIHx8IGJzID09IFNPTElE
IHx8IGJzID09IElOU0VUKSk7CiAKICAgICAgICAgaW50IHkgPSBfdHk7CiAgICAgICAgIGludCB5
MiA9IF90eSArIGg7Ci0gICAgICAgIGlmIChyZW5kZXJfcmFkaWkpIHsKKyAgICAgICAgaWYgKHJl
bmRlclJhZGlpKSB7CiAgICAgICAgICAgICB5ICs9IHRvcExlZnQuaGVpZ2h0KCk7CiAgICAgICAg
ICAgICB5MiAtPSBib3R0b21MZWZ0LmhlaWdodCgpOwogICAgICAgICB9CkBAIC0xMjM4LDIyICsx
NDI2LDYyIEBACiAgICAgICAgIGRyYXdCb3JkZXIocCwgX3R4LCB5LCBfdHggKyBzdHlsZS0+Ym9y
ZGVyTGVmdFdpZHRoKCksIHkyLCBCU0xlZnQsIGxjLCBzdHlsZS0+Y29sb3IoKSwgbHMsCiAgICAg
ICAgICAgICAgICAgICAgaWdub3JlX3RvcD8wOnN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLAogICAg
ICAgICAgICAgICAgICAgIGlnbm9yZV9ib3R0b20/MDpzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgo
KSk7CisKKyAgICAgICAgaWYgKHJlbmRlclJhZGlpICYmICghdXBwZXJMZWZ0Qm9yZGVyU3R5bGVz
TWF0Y2ggfHwgIWxvd2VyTGVmdEJvcmRlclN0eWxlc01hdGNoKSkgeworICAgICAgICAgICAgaW50
IHRvcFggPSBfdHg7CisgICAgICAgICAgICBpbnQgdG9wWSA9IF90eTsKKyAgICAgICAgICAgIGlu
dCBib3R0b21ZID0gX3R5ICsgaCAgLSBib3R0b21MZWZ0LmhlaWdodCgpICogMjsKKyAgICAgICAg
ICAgIGZpcnN0QW5nbGVTdGFydCA9IDEzNTsKKyAgICAgICAgICAgIHNlY29uZEFuZ2xlU3RhcnQg
PSAxODA7CisgICAgICAgICAgICBmaXJzdEFuZ2xlU3BhbiA9IHNlY29uZEFuZ2xlU3BhbiA9IDQ1
OworICAgICAgICAgICAgdGhpY2tuZXNzID0gc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpICogMjsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgYm9vbCBhcHBseVRvcElubmVyQ2xpcCA9IChzdHls
ZS0+Ym9yZGVyTGVmdFdpZHRoKCkgPCB0b3BMZWZ0LndpZHRoKCkpCisgICAgICAgICAgICAgICAg
JiYgKHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpIDwgdG9wTGVmdC5oZWlnaHQoKSkKKyAgICAgICAg
ICAgICAgICAmJiAobHMgIT0gRE9VQkxFIHx8IHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSA+IDYp
OworICAgICAgICAgICAgaWYgKGFwcGx5VG9wSW5uZXJDbGlwKSB7CisgICAgICAgICAgICAgICAg
cC0+c2F2ZSgpOworICAgICAgICAgICAgICAgIHAtPmFkZElubmVyUm91bmRlZFJlY3RDbGlwKElu
dFJlY3QodG9wWCwgdG9wWSwgdG9wTGVmdC53aWR0aCgpICogMiwgdG9wTGVmdC5oZWlnaHQoKSAq
IDIpLCAKKyAgICAgICAgICAgICAgICAgICAgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gRHJhdyB0b3AgbGVmdCBh
cmMKKyAgICAgICAgICAgIGRyYXdCb3JkZXJBcmMocCwgdG9wWCwgdG9wWSwgdGhpY2tuZXNzLCB0
b3BMZWZ0LCBmaXJzdEFuZ2xlU3RhcnQsIGZpcnN0QW5nbGVTcGFuLAorICAgICAgICAgICAgICAg
IEJTTGVmdCwgbGMsIGxzLCB0cnVlKTsKKyAgICAgICAgICAgIGlmIChhcHBseVRvcElubmVyQ2xp
cCkKKyAgICAgICAgICAgICAgICBwLT5yZXN0b3JlKCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGJvb2wgYXBwbHlCb3R0b21Jbm5lckNsaXAgPSAoc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgp
IDwgYm90dG9tTGVmdC53aWR0aCgpKQorICAgICAgICAgICAgICAgICYmIChzdHlsZS0+Ym9yZGVy
Qm90dG9tV2lkdGgoKSA8IGJvdHRvbUxlZnQuaGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgJiYg
KGxzICE9IERPVUJMRSB8fCBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkgPiA2KTsKKyAgICAgICAg
ICAgIGlmIChhcHBseUJvdHRvbUlubmVyQ2xpcCkgeworICAgICAgICAgICAgICAgIHAtPnNhdmUo
KTsKKyAgICAgICAgICAgICAgICBwLT5hZGRJbm5lclJvdW5kZWRSZWN0Q2xpcChJbnRSZWN0KHRv
cFgsIGJvdHRvbVksIGJvdHRvbUxlZnQud2lkdGgoKSAqIDIsIGJvdHRvbUxlZnQuaGVpZ2h0KCkg
KiAyKSwgCisgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIERyYXcgYm90dG9tIGxl
ZnQgYXJjCisgICAgICAgICAgICBkcmF3Qm9yZGVyQXJjKHAsIHRvcFgsIGJvdHRvbVksIHRoaWNr
bmVzcywgYm90dG9tTGVmdCwgc2Vjb25kQW5nbGVTdGFydCwgc2Vjb25kQW5nbGVTcGFuLAorICAg
ICAgICAgICAgICAgIEJTTGVmdCwgbGMsIGxzLCBmYWxzZSk7CisgICAgICAgICAgICBpZiAoYXBw
bHlCb3R0b21Jbm5lckNsaXApCisgICAgICAgICAgICAgICAgcC0+cmVzdG9yZSgpOworICAgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKHJlbmRlcl9yKSB7Ci0gICAgICAgIGJvb2wgaWdub3JlX3Rv
cCA9IChyZW5kZXJfcmFkaWkgJiYgdG9wUmlnaHQuaGVpZ2h0KCkgPiAwKSB8fAorICAgIGlmIChy
ZW5kZXJSaWdodCkgeworICAgICAgICBib29sIGlnbm9yZV90b3AgPSAocmVuZGVyUmFkaWkgJiYg
dG9wUmlnaHQuaGVpZ2h0KCkgPiAwKSB8fAogICAgICAgICAgICgodGMgPT0gcmMpICYmICh0dCA9
PSBydCkgJiYKICAgICAgICAgICAocnMgPj0gRE9UVEVEIHx8IHJzID09IElOU0VUKSAmJgogICAg
ICAgICAgICh0cyA9PSBET1RURUQgfHwgdHMgPT0gREFTSEVEIHx8IHRzID09IFNPTElEIHx8IHRz
ID09IE9VVFNFVCkpOwogCi0gICAgICAgIGJvb2wgaWdub3JlX2JvdHRvbSA9IChyZW5kZXJfcmFk
aWkgJiYgYm90dG9tUmlnaHQuaGVpZ2h0KCkgPiAwKSB8fAorICAgICAgICBib29sIGlnbm9yZV9i
b3R0b20gPSAocmVuZGVyUmFkaWkgJiYgYm90dG9tUmlnaHQuaGVpZ2h0KCkgPiAwKSB8fAogICAg
ICAgICAgICgoYmMgPT0gcmMpICYmIChidCA9PSBydCkgJiYKICAgICAgICAgICAocnMgPj0gRE9U
VEVEIHx8IHJzID09IElOU0VUKSAmJgogICAgICAgICAgIChicyA9PSBET1RURUQgfHwgYnMgPT0g
REFTSEVEIHx8IGJzID09IFNPTElEIHx8IGJzID09IElOU0VUKSk7CiAKICAgICAgICAgaW50IHkg
PSBfdHk7CiAgICAgICAgIGludCB5MiA9IF90eSArIGg7Ci0gICAgICAgIGlmIChyZW5kZXJfcmFk
aWkpIHsKKyAgICAgICAgaWYgKHJlbmRlclJhZGlpKSB7CiAgICAgICAgICAgICB5ICs9IHRvcFJp
Z2h0LmhlaWdodCgpOwogICAgICAgICAgICAgeTIgLT0gYm90dG9tUmlnaHQuaGVpZ2h0KCk7CiAg
ICAgICAgIH0KQEAgLTEyNjEsOSArMTQ4OSw0OSBAQAogICAgICAgICBkcmF3Qm9yZGVyKHAsIF90
eCArIHcgLSBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCB5LCBfdHggKyB3LCB5MiwgQlNSaWdo
dCwgcmMsIHN0eWxlLT5jb2xvcigpLCBycywKICAgICAgICAgICAgICAgICAgICBpZ25vcmVfdG9w
PzA6c3R5bGUtPmJvcmRlclRvcFdpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgaWdub3JlX2Jv
dHRvbT8wOnN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKKworICAgICAgICBpZiAocmVuZGVy
UmFkaWkgJiYgKCF1cHBlclJpZ2h0Qm9yZGVyU3R5bGVzTWF0Y2ggfHwgIWxvd2VyUmlnaHRCb3Jk
ZXJTdHlsZXNNYXRjaCkpIHsKKyAgICAgICAgICAgIGludCB0b3BYID0gX3R4ICsgdyAtIHRvcFJp
Z2h0LndpZHRoKCkgKiAyOworICAgICAgICAgICAgaW50IHRvcFkgPSBfdHk7CisgICAgICAgICAg
ICBpbnQgYm90dG9tWSA9IF90eSArIGggIC0gYm90dG9tUmlnaHQuaGVpZ2h0KCkgKiAyOworICAg
ICAgICAgICAgZmlyc3RBbmdsZVN0YXJ0ID0gMDsgCisgICAgICAgICAgICBzZWNvbmRBbmdsZVN0
YXJ0ID0gMzE1OworICAgICAgICAgICAgZmlyc3RBbmdsZVNwYW4gPSBzZWNvbmRBbmdsZVNwYW4g
PSA0NTsKKyAgICAgICAgICAgIHRoaWNrbmVzcyA9IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkg
KiAyOworICAgICAgICAgICAgCisgICAgICAgICAgICBib29sIGFwcGx5VG9wSW5uZXJDbGlwID0g
KHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkgPCB0b3BSaWdodC53aWR0aCgpKQorICAgICAgICAg
ICAgICAgICYmIChzdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSA8IHRvcFJpZ2h0LmhlaWdodCgpKQor
ICAgICAgICAgICAgICAgICYmIChycyAhPSBET1VCTEUgfHwgc3R5bGUtPmJvcmRlclJpZ2h0V2lk
dGgoKSA+IDYpOworICAgICAgICAgICAgaWYgKGFwcGx5VG9wSW5uZXJDbGlwKSB7CisgICAgICAg
ICAgICAgICAgcC0+c2F2ZSgpOworICAgICAgICAgICAgICAgIHAtPmFkZElubmVyUm91bmRlZFJl
Y3RDbGlwKEludFJlY3QodG9wWCwgdG9wWSwgdG9wUmlnaHQud2lkdGgoKSAqIDIsIHRvcFJpZ2h0
LmhlaWdodCgpICogMiksCisgICAgICAgICAgICAgICAgICAgIHN0eWxlLT5ib3JkZXJSaWdodFdp
ZHRoKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBEcmF3
IHRvcCByaWdodCBhcmMKKyAgICAgICAgICAgIGRyYXdCb3JkZXJBcmMocCwgdG9wWCwgdG9wWSwg
dGhpY2tuZXNzLCB0b3BSaWdodCwgZmlyc3RBbmdsZVN0YXJ0LCBmaXJzdEFuZ2xlU3BhbiwKKyAg
ICAgICAgICAgICAgICBCU1JpZ2h0LCByYywgcnMsIHRydWUpOworICAgICAgICAgICAgaWYgKGFw
cGx5VG9wSW5uZXJDbGlwKQorICAgICAgICAgICAgICAgIHAtPnJlc3RvcmUoKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgYm9vbCBhcHBseUJvdHRvbUlubmVyQ2xpcCA9IChzdHlsZS0+Ym9y
ZGVyUmlnaHRXaWR0aCgpIDwgYm90dG9tUmlnaHQud2lkdGgoKSkKKyAgICAgICAgICAgICAgICAm
JiAoc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkgPCBib3R0b21SaWdodC5oZWlnaHQoKSkKKyAg
ICAgICAgICAgICAgICAmJiAocnMgIT0gRE9VQkxFIHx8IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRo
KCkgPiA2KTsKKyAgICAgICAgICAgIGlmIChhcHBseUJvdHRvbUlubmVyQ2xpcCkgeworICAgICAg
ICAgICAgICAgIHAtPnNhdmUoKTsKKyAgICAgICAgICAgICAgICBwLT5hZGRJbm5lclJvdW5kZWRS
ZWN0Q2xpcChJbnRSZWN0KHRvcFgsIGJvdHRvbVksIGJvdHRvbVJpZ2h0LndpZHRoKCkgKiAyLCBi
b3R0b21SaWdodC5oZWlnaHQoKSAqIDIpLAorICAgICAgICAgICAgICAgICAgICBzdHlsZS0+Ym9y
ZGVyUmlnaHRXaWR0aCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gRHJhdyBib3R0b20gcmlnaHQgYXJjCisgICAgICAgICAgICBkcmF3Qm9yZGVyQXJjKHAs
IHRvcFgsIGJvdHRvbVksIHRoaWNrbmVzcywgYm90dG9tUmlnaHQsIHNlY29uZEFuZ2xlU3RhcnQs
IHNlY29uZEFuZ2xlU3BhbiwKKyAgICAgICAgICAgICAgICBCU1JpZ2h0LCByYywgcnMsIGZhbHNl
KTsKKyAgICAgICAgICAgIGlmIChhcHBseUJvdHRvbUlubmVyQ2xpcCkKKyAgICAgICAgICAgICAg
ICBwLT5yZXN0b3JlKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKHJlbmRlcl9y
YWRpaSkKKyAgICBpZiAocmVuZGVyUmFkaWkpCiAgICAgICAgIHAtPnJlc3RvcmUoKTsgLy8gVW5k
byB0aGUgY2xpcC4KIH0KIApJbmRleDogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMTQ2MDkpCisrKyByZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5Niw2ICs2OTYsOCBAQAog
ICAgIGVudW0gQm9yZGVyU2lkZSB7CiAgICAgICAgIEJTVG9wLCBCU0JvdHRvbSwgQlNMZWZ0LCBC
U1JpZ2h0CiAgICAgfTsKKyAgICB2b2lkIGRyYXdCb3JkZXJBcmMoR3JhcGhpY3NDb250ZXh0Kiwg
aW50IHgsIGludCB5LCBmbG9hdCB0aGlja25lc3MsIEludFNpemUgcmFkaXVzLCBpbnQgYW5nbGVT
dGFydCwKKyAgICAgICAgaW50IGFuZ2xlU3BhbiwgQm9yZGVyU2lkZSwgQ29sb3IsIEVCb3JkZXJT
dHlsZSwgYm9vbCBmaXJzdENvcm5lcik7CiAgICAgdm9pZCBkcmF3Qm9yZGVyKEdyYXBoaWNzQ29u
dGV4dCosIGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5MiwgQm9yZGVyU2lkZSwKICAgICAg
ICAgQ29sb3IsIGNvbnN0IENvbG9yJiB0ZXh0Y29sb3IsIEVCb3JkZXJTdHlsZSwgaW50IGFkamJ3
MSwgaW50IGFkamJ3MiwgYm9vbCBpbnZhbGlkaXNJbnZlcnQgPSBmYWxzZSk7CiAK
</data>
<flag name="review"
          id="2453"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8602</attachid>
            <date>2006-05-30 10:55:09 -0700</date>
            <delta_ts>2006-05-30 10:55:09 -0700</delta_ts>
            <desc>No antialising, no background color</desc>
            <filename>antiOffDouble3.png</filename>
            <type>image/png</type>
            <size>4030</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8603</attachid>
            <date>2006-05-30 10:55:58 -0700</date>
            <delta_ts>2006-05-30 10:55:58 -0700</delta_ts>
            <desc>Antialiasing on, no background color</desc>
            <filename>antiOnDouble1.png</filename>
            <type>image/png</type>
            <size>5925</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8604</attachid>
            <date>2006-05-30 10:56:48 -0700</date>
            <delta_ts>2006-05-30 10:56:48 -0700</delta_ts>
            <desc>No antialising, with background color</desc>
            <filename>antiOffDouble2.png</filename>
            <type>image/png</type>
            <size>4146</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>8605</attachid>
            <date>2006-05-30 10:57:51 -0700</date>
            <delta_ts>2006-05-30 10:57:51 -0700</delta_ts>
            <desc>antialiasing ON, with background color</desc>
            <filename>antiOnDouble2.png</filename>
            <type>image/png</type>
            <size>5758</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">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
gg==
</data>

          </attachment>
      

    </bug>

</bugzilla>