<?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>5359</bug_id>
          
          <creation_ts>2005-10-13 01:20:59 -0700</creation_ts>
          <short_desc>WebKit+SVG is missing marker support</short_desc>
          <delta_ts>2005-11-28 18:00:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</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></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>21952</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-10-13 01:20:59 -0700</bug_when>
    <thetext>WebKit+SVG is missing marker support

I believe ksvg2 already actually has marker support for AGG (and possibly Cairo), but I just haven&apos;t 
gotten around to implementing it for the kcanvas Quartz backend.

This would be a relatively easy fix for someone with some c++ skills looking to dive into KCanvas.

There are several w3c tests for markers, at least these two:
painting-marker-01-f.svg
painting-marker-02-f.svg

Right now you just see a bunch of these logs when running the tests:
2005-10-13 01:19:44.566 DumpKCanvasTree[15508] *** Marker support not implemented.
2005-10-13 01:19:44.567 DumpKCanvasTree[15508] *** Marker support not implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22532</commentid>
    <comment_count>1</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2005-10-23 03:22:25 -0700</bug_when>
    <thetext>Hi, 
 
I recently did some work to fix marker support in ksvg2 again 
somewhat. It is not perfect, for instance clipping is not correct, 
but it should fix some testcases. I&apos;ll add it so hopefully it helps 
in porting to OS X.  
Cheers, 
 
Rob. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22533</commentid>
    <comment_count>2</comment_count>
      <attachid>4445</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2005-10-23 03:23:05 -0700</bug_when>
    <thetext>Created attachment 4445
Improved marker support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24387</commentid>
    <comment_count>3</comment_count>
      <attachid>4766</attachid>
    <who name="Julien Palmas">julien.palmas</who>
    <bug_when>2005-11-22 09:10:36 -0800</bug_when>
    <thetext>Created attachment 4766
Proposed patch for marker support

This patch essentially gets the path vertices coords and use them to draw the
markers at the correct position.
More testing is necessary to see if marker scaling, rotating and so on work
correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24389</commentid>
    <comment_count>4</comment_count>
      <attachid>4767</attachid>
    <who name="Julien Palmas">julien.palmas</who>
    <bug_when>2005-11-22 09:33:06 -0800</bug_when>
    <thetext>Created attachment 4767
Improved Patch

Pulled out some code from ksvg2. It should improve scaling among other things.
SVGMarkerElementImpl::canvasResource</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24411</commentid>
    <comment_count>5</comment_count>
      <attachid>4776</attachid>
    <who name="Julien Palmas">julien.palmas</who>
    <bug_when>2005-11-22 15:12:56 -0800</bug_when>
    <thetext>Created attachment 4776
Should solve the markerUnits issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24458</commentid>
    <comment_count>6</comment_count>
      <attachid>4776</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-11-23 04:20:10 -0800</bug_when>
    <thetext>Comment on attachment 4776
Should solve the markerUnits issue

We discussed this on IRC.  Still needs some tweaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24764</commentid>
    <comment_count>7</comment_count>
      <attachid>4836</attachid>
    <who name="Julien Palmas">julien.palmas</who>
    <bug_when>2005-11-28 12:37:17 -0800</bug_when>
    <thetext>Created attachment 4836
Patch improved with Eric&apos;s ideas

This patch uses a CGPathApplierFunction to draw the markers.
2 structures are used to help the drawing : MarkerData	and DrawMarkersData.

In KCanvasRenderingStyle::updateStroke : 
Solves a problem when using a &lt;marker markerUnits=&quot;strokeWidth&quot;&gt; with a &lt;path
stroke=&quot;none&quot; stroke-width=&quot;8&quot;&gt;

KCanvasMarker::draw doesn&apos;t use objectMatrix as an argument anymore.
Modifies KCanvasMarker::draw to setDrawsContents(true) before marker rendering
and setDrawsContents(false) after.

KCanvasMarker::refX(), KCanvasMarker::refY() =&gt; KCanvasMarker::setRef(double
refX, double refY)
KCanvasMarker::setScaleX(), KCanvasMarker:: setScaleY() =&gt;
KCanvasMarker::setScale(float scaleX, float scaleY)

Adds CGPointSubtractPoints to QuartzSupport.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24769</commentid>
    <comment_count>8</comment_count>
      <attachid>4836</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-11-28 13:07:10 -0800</bug_when>
    <thetext>Comment on attachment 4836
Patch improved with Eric&apos;s ideas

Looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24801</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-11-28 18:00:57 -0800</bug_when>
    <thetext>Your patch produced a regression in all of the layout tests when I attempted to land.

The line at fault was:

+    strokePainter()-&gt;setStrokeWidth(cssPrimitiveToLength(item, m_style-&gt;svgStyle()-&gt;strokeWidth(), 
1.0));

which created a strokePainter() even when there was no stroke.  (I know this is very confusing code... 
KCanvasRenderingStyle all needs to go away, and will *soon*.)

I instead made cssPrimitiveToLength a static method on KCanvasRenderingStyle and just called it from 
your drawMarkersIfNeeded function to compute the strokeWidth there, which works even when 
stroke=none.

I made a couple other minor style updates and landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4445</attachid>
            <date>2005-10-23 03:23:05 -0700</date>
            <delta_ts>2005-10-23 03:23:05 -0700</delta_ts>
            <desc>Improved marker support</desc>
            <filename>markers.diff</filename>
            <type>text/plain</type>
            <size>5561</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IGtjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtjYW52YXMv
S0NhbnZhc1Jlc291cmNlcy5oCShyZXZpc2lvbiA0NzMyMTUpCisrKyBrY2FudmFzL0tDYW52YXNS
ZXNvdXJjZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDE0ICsxMDgsMjQgQEAKICAgICB2b2lk
IHNldEFuZ2xlKGZsb2F0IGFuZ2xlKTsKICAgICBmbG9hdCBhbmdsZSgpIGNvbnN0OwogCisgICAg
dm9pZCBzZXRVc2VTdHJva2VXaWR0aChib29sIHVzZVN0cm9rZVdpZHRoID0gdHJ1ZSk7CisgICAg
Ym9vbCB1c2VTdHJva2VXaWR0aCgpIGNvbnN0OworCisgICAgdm9pZCBzZXRTY2FsZVgoZmxvYXQg
c2NhbGVYKTsKKyAgICBmbG9hdCBzY2FsZVgoKSBjb25zdDsKKworICAgIHZvaWQgc2V0U2NhbGVZ
KGZsb2F0IHNjYWxlWSk7CisgICAgZmxvYXQgc2NhbGVZKCkgY29uc3Q7CisKICAgICAvLyBEcmF3
IG9udG8gdGhlIGNhbnZhcwotICAgIHZvaWQgZHJhdyhjb25zdCBRUmVjdEYgJnJlY3QsIGRvdWJs
ZSB4LCBkb3VibGUgeSwgZG91YmxlIGFuZ2xlID0gMC4wKTsKKyAgICB2b2lkIGRyYXcoY29uc3Qg
UVJlY3RGICZyZWN0LCBjb25zdCBLQ2FudmFzTWF0cml4ICZvYmplY3RNYXRyaXgsIGRvdWJsZSB4
LCBkb3VibGUgeSwgZG91YmxlIHN0cm9rZVdpZHRoID0gMS4sIGRvdWJsZSBhbmdsZSA9IDAuMCk7
CiAKICAgICBRVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihRVGV4dFN0cmVhbSAm
KSBjb25zdDsgCiBwcml2YXRlOgogICAgIGRvdWJsZSBtX3JlZlgsIG1fcmVmWTsKLSAgICBmbG9h
dCBtX2FuZ2xlOworICAgIGZsb2F0IG1fYW5nbGUsIG1fc2NhbGVYLCBtX3NjYWxlWTsKICAgICBL
Q2FudmFzSXRlbSAqbV9tYXJrZXI7CisgICAgYm9vbCBtX3VzZVN0cm9rZVdpZHRoOwogfTsKIAog
UVRleHRTdHJlYW0gJm9wZXJhdG9yPDwoUVRleHRTdHJlYW0gJnRzLCBjb25zdCBLQ2FudmFzUmVz
b3VyY2UgJnIpOwpJbmRleDoga2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBrY2FudmFzL0tDYW52YXNSZXNvdXJjZXMuY3BwCShyZXZpc2lvbiA0NzMyMTUpCisrKyBr
Y2FudmFzL0tDYW52YXNSZXNvdXJjZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNiArMTYw
LDcgQEAKICAgICBtX3JlZlkgPSAwOwogICAgIG1fbWFya2VyID0gbWFya2VyOwogICAgIHNldEF1
dG9BbmdsZSgpOworICAgIG1fdXNlU3Ryb2tlV2lkdGggPSB0cnVlOwogfQogCiBLQ2FudmFzTWFy
a2VyOjp+S0NhbnZhc01hcmtlcigpCkBAIC0yMDYsMjAgKzIwNyw1MiBAQAogICAgIG1fYW5nbGUg
PSAtMTsKIH0KIAotdm9pZCBLQ2FudmFzTWFya2VyOjpkcmF3KGNvbnN0IFFSZWN0RiAmcmVjdCwg
ZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgYW5nbGUpCit2b2lkIEtDYW52YXNNYXJrZXI6OnNl
dFVzZVN0cm9rZVdpZHRoKGJvb2wgdXNlU3Ryb2tlV2lkdGgpCiB7CisgICAgbV91c2VTdHJva2VX
aWR0aCA9IHVzZVN0cm9rZVdpZHRoOworfQorCitib29sIEtDYW52YXNNYXJrZXI6OnVzZVN0cm9r
ZVdpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91c2VTdHJva2VXaWR0aDsKK30KKwordm9p
ZCBLQ2FudmFzTWFya2VyOjpzZXRTY2FsZVgoZmxvYXQgc2NhbGVYKQoreworICAgIG1fc2NhbGVY
ID0gc2NhbGVYOworfQorCitmbG9hdCBLQ2FudmFzTWFya2VyOjpzY2FsZVgoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3NjYWxlWDsKK30KKwordm9pZCBLQ2FudmFzTWFya2VyOjpzZXRTY2FsZVko
ZmxvYXQgc2NhbGVZKQoreworICAgIG1fc2NhbGVZID0gc2NhbGVZOworfQorCitmbG9hdCBLQ2Fu
dmFzTWFya2VyOjpzY2FsZVkoKSBjb25zdAoreworICAgIHJldHVybiBtX3NjYWxlWTsKK30KKwor
dm9pZCBLQ2FudmFzTWFya2VyOjpkcmF3KGNvbnN0IFFSZWN0RiAmcmVjdCwgY29uc3QgS0NhbnZh
c01hdHJpeCAmb2JqZWN0TWF0cml4LCBkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSBzdHJva2VX
aWR0aCwgZG91YmxlIGFuZ2xlKQorewogICAgIGlmKG1fbWFya2VyICYmIG1fbWFya2VyLT5zdHls
ZSgpKQogICAgIHsKLSAgICAgICAgS0NhbnZhc01hdHJpeCB0cmFuc2xhdGlvbjsKKyAgICAgICAg
S0NhbnZhc01hdHJpeCB0cmFuc2xhdGlvbiA9IG9iamVjdE1hdHJpeDsKICAgICAgICAgdHJhbnNs
YXRpb24udHJhbnNsYXRlKHgsIHkpOwogCiAgICAgICAgIEtDYW52YXNNYXRyaXggcm90YXRpb247
CiAgICAgICAgIHJvdGF0aW9uLnNldE9wZXJhdGlvbk1vZGUoT1BTX1BPU1RNVUwpOwogICAgICAg
ICByb3RhdGlvbi50cmFuc2xhdGUoLW1fcmVmWCwgLW1fcmVmWSk7CisgICAgICAgIHJvdGF0aW9u
LnNjYWxlKG1fc2NhbGVYLCBtX3NjYWxlWSk7CisgICAgICAgIC8vIHN0cm9rZSB3aWR0aAorICAg
ICAgICBpZihtX3VzZVN0cm9rZVdpZHRoKQorICAgICAgICAgICAgcm90YXRpb24uc2NhbGUoc3Ry
b2tlV2lkdGgsIHN0cm9rZVdpZHRoKTsKICAgICAgICAgcm90YXRpb24ucm90YXRlKG1fYW5nbGUg
PiAtMSA/IG1fYW5nbGUgOiBhbmdsZSk7CiAKLSAgICAgICAgbV9tYXJrZXItPmRyYXcocmVjdCk7
Ci0KICAgICAgICAgS0NhbnZhc01hdHJpeCBvbGR3b3JsZG1hdHJpeCA9IG1fbWFya2VyLT5jYW52
YXMoKS0+cmVuZGVyaW5nRGV2aWNlKCktPmN1cnJlbnRDb250ZXh0KCktPndvcmxkTWF0cml4KCk7
CiAgICAgICAgIEtDYW52YXNNYXRyaXggdGVtcCA9IG9sZHdvcmxkbWF0cml4OwogICAgICAgICBt
X21hcmtlci0+Y2FudmFzKCktPnJlbmRlcmluZ0RldmljZSgpLT5jdXJyZW50Q29udGV4dCgpLT5z
ZXRXb3JsZE1hdHJpeCh0ZW1wLm11bHRpcGx5KHJvdGF0aW9uLm11bHRpcGx5KHRyYW5zbGF0aW9u
KSkpOwpJbmRleDoga2NhbnZhcy9kZXZpY2UvYWdnL0tDYW52YXNJdGVtQWdnLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBrY2FudmFzL2RldmljZS9hZ2cvS0NhbnZhc0l0ZW1BZ2cuY3BwCShyZXZpc2lvbiA0
NzMyMTUpCisrKyBrY2FudmFzL2RldmljZS9hZ2cvS0NhbnZhc0l0ZW1BZ2cuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02NSw5ICs2NSwxMiBAQAogICAgIGlmKF9zdHlsZS0+aXNGaWxsZWQoKSkKICAg
ICAgICAgX3N0eWxlLT5maWxsUGFpbnRlcigpLT5kcmF3KGFnZ0NvbnRleHQpOwogCisgICAgZG91
YmxlIHN0cm9rZVdpZHRoID0gMS47CiAgICAgLy8gRHJhdyBzdHJva2UsIGlmIG5lZWRlZAogICAg
IGlmKF9zdHlsZS0+aXNTdHJva2VkKCkpCiAgICAgeworICAgICAgICBLUmVuZGVyaW5nU3Ryb2tl
UGFpbnRlciAqcGFpbnRTZXJ2ZXIgPSBfc3R5bGUtPnN0cm9rZVBhaW50ZXIoKTsgICAgICAgIAor
ICAgICAgICBzdHJva2VXaWR0aCA9IHBhaW50U2VydmVyLT5zdHJva2VXaWR0aCgpOwogICAgICAg
ICAvLyBTZXR1cCBzdHJva2UgcGFpbnRlciwgaWYgd2UgZ290IGEgdmFsaWQgc3R5bGUKICAgICAg
ICAgYWdnRGF0YS0+Y3VydmVkUGF0aFN0cm9rZWQuc2V0dXAoX3N0eWxlKTsKICAgICAgICAgX3N0
eWxlLT5zdHJva2VQYWludGVyKCktPmRyYXcoYWdnQ29udGV4dCk7CkBAIC05MSw3ICs5NCw3IEBA
CiAgICAgICAgICAgICBpZihhZ2dEYXRhLT5zdG9yYWdlLnRvdGFsX3ZlcnRpY2VzKCkgPiAxKQog
ICAgICAgICAgICAgICAgIGluc2xvcGUgPSBvdXRzbG9wZSA9IGF0YW4yKHkyIC0geTEsIHgyIC0g
eDEpIC8gZGVnMnJhZDsKIAotICAgICAgICAgICAgc3RhcnQtPmRyYXcocmVjdCwgeDEsIHkxLCBp
bnNsb3BlKTsKKyAgICAgICAgICAgIHN0YXJ0LT5kcmF3KHJlY3QsIG9iamVjdE1hdHJpeCwgeDEs
IHkxLCBzdHJva2VXaWR0aCwgaW5zbG9wZSk7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IodW5z
aWduZWQgaSA9IDE7IGkgPCBhZ2dEYXRhLT5zdG9yYWdlLnRvdGFsX3ZlcnRpY2VzKCk7ICsraSkK
QEAgLTEwOSwxMSArMTEyLDExIEBACiAKICAgICAgICAgICAgIG91dHNsb3BlID0gYXRhbjIoeTIg
LSB5MSwgeDIgLSB4MSkgLyBkZWcycmFkOwogICAgICAgICAgICAgaWYobWlkKQotICAgICAgICAg
ICAgICAgIG1pZC0+ZHJhdyhyZWN0LCB4MSwgeTEsIChpbnNsb3BlICsgb3V0c2xvcGUpIC8gMi4w
KTsKKyAgICAgICAgICAgICAgICBtaWQtPmRyYXcocmVjdCwgb2JqZWN0TWF0cml4LCB4MSwgeTEs
IHN0cm9rZVdpZHRoLCAoaW5zbG9wZSArIG91dHNsb3BlKSAvIDIuMCk7CiAgICAgICAgIH0KIAog
ICAgICAgICBpZihlbmQpCi0gICAgICAgICAgICBlbmQtPmRyYXcocmVjdCwgeDIsIHkyLCBvdXRz
bG9wZSk7CisgICAgICAgICAgICBlbmQtPmRyYXcocmVjdCwgb2JqZWN0TWF0cml4LCB4MiwgeTIs
IHN0cm9rZVdpZHRoLCBvdXRzbG9wZSk7CiAgICAgfQogfQogCkluZGV4OiBrc3ZnMi9zdmcvU1ZH
TWFya2VyRWxlbWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2Zy9TVkdNYXJrZXJF
bGVtZW50SW1wbC5jcHAJKHJldmlzaW9uIDQ3MzE2MykKKysrIGtzdmcyL3N2Zy9TVkdNYXJrZXJF
bGVtZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJTVkdIZWxwZXIuaCIKICNpbmNsdWRlICJTVkdBbmdsZUltcGwuaCIKICNpbmNsdWRlICJTVkdM
ZW5ndGhJbXBsLmgiCisjaW5jbHVkZSAiU1ZHTWF0cml4SW1wbC5oIgogI2luY2x1ZGUgIlNWR0Rv
Y3VtZW50SW1wbC5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnRJbXBsLmgiCiAjaW5jbHVkZSAi
U1ZHRml0VG9WaWV3Qm94SW1wbC5oIgpAQCAtMjAwLDYgKzIwMSwxNSBAQAogCiAgICAgbV9tYXJr
ZXItPnNldFJlZlgocmVmWCgpLT5iYXNlVmFsKCktPnZhbHVlKCkpOwogICAgIG1fbWFya2VyLT5z
ZXRSZWZZKHJlZlkoKS0+YmFzZVZhbCgpLT52YWx1ZSgpKTsKKworICAgIG1fbWFya2VyLT5zZXRV
c2VTdHJva2VXaWR0aChtYXJrZXJVbml0cygpLT5iYXNlVmFsKCkgPT0gU1ZHX01BUktFUlVOSVRT
X1NUUk9LRVdJRFRIKTsKKyAgICBkb3VibGUgdyA9IG1hcmtlcldpZHRoKCktPmJhc2VWYWwoKS0+
dmFsdWUoKTsKKyAgICBkb3VibGUgaCA9IG1hcmtlckhlaWdodCgpLT5iYXNlVmFsKCktPnZhbHVl
KCk7CisgICAgU1ZHTWF0cml4SW1wbCAqdmlld0JveCA9IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0o
dywgaCk7CisgICAgdmlld0JveC0+cmVmKCk7CisgICAgbV9tYXJrZXItPnNldFNjYWxlWCh2aWV3
Qm94LT5xbWF0cml4KCkubTExKCkpOworICAgIG1fbWFya2VyLT5zZXRTY2FsZVkodmlld0JveC0+
cW1hdHJpeCgpLm0yMigpKTsKKyAgICB2aWV3Qm94LT5kZXJlZigpOwogfQogCiBLQ2FudmFzSXRl
bSAqU1ZHTWFya2VyRWxlbWVudEltcGw6OmNyZWF0ZUNhbnZhc0l0ZW0oS0NhbnZhcyAqY2FudmFz
LCBLUmVuZGVyaW5nU3R5bGUgKnN0eWxlKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4766</attachid>
            <date>2005-11-22 09:10:36 -0800</date>
            <delta_ts>2005-11-22 15:13:33 -0800</delta_ts>
            <desc>Proposed patch for marker support</desc>
            <filename>patch_markers.txt</filename>
            <type>text/plain</type>
            <size>7621</size>
            <attacher name="Julien Palmas">julien.palmas</attacher>
            
              <data encoding="base64">SW5kZXg6IGtjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VzLmNwcCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS45CmRpZmYgLXUgLXAgLXIxLjkgS0NhbnZhc1Jlc291cmNlcy5jcHAK
LS0tIGtjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5jcHAJMjIgTm92IDIwMDUgMTA6MDM6MjUgLTAw
MDAJMS45CisrKyBrY2FudmFzL0tDYW52YXNSZXNvdXJjZXMuY3BwCTIyIE5vdiAyMDA1IDE3OjA4
OjU4IC0wMDAwCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSA8a2RlYnVnLmg+CiAKICNpbmNs
dWRlICJrY2FudmFzL0tDYW52YXMuaCIKLSNpbmNsdWRlICJrY2FudmFzL1JlbmRlclBhdGguaCIK
ICNpbmNsdWRlICJLQ2FudmFzTWF0cml4LmgiCiAjaW5jbHVkZSAiS0NhbnZhc0NvbnRhaW5lci5o
IgogI2luY2x1ZGUgIktDYW52YXNSZXNvdXJjZXMuaCIKQEAgLTEzNyw2ICsxMzYsOCBAQCBLQ2Fu
dmFzTWFya2VyOjpLQ2FudmFzTWFya2VyKGtodG1sOjpSZW5kCiB7CiAgICAgbV9yZWZYID0gMDsK
ICAgICBtX3JlZlkgPSAwOworICAgIG1fc2NhbGVYID0gMS47CisgICAgbV9zY2FsZVkgPSAxLjsK
ICAgICBtX21hcmtlciA9IG1hcmtlcjsKICAgICBzZXRBdXRvQW5nbGUoKTsKICAgICBtX3VzZVN0
cm9rZVdpZHRoID0gdHJ1ZTsKQEAgLTIzMiwxMCArMjMzLDExIEBAIHZvaWQgS0NhbnZhc01hcmtl
cjo6ZHJhdyhjb25zdCBRUmVjdCAmcmUKICAgICAgICAgLy8gc3Ryb2tlIHdpZHRoCiAgICAgICAg
IGlmKG1fdXNlU3Ryb2tlV2lkdGgpCiAgICAgICAgICAgICByb3RhdGlvbi5zY2FsZShzdHJva2VX
aWR0aCwgc3Ryb2tlV2lkdGgpOwotCisgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogSSdtIG5v
dCBzdXJlIGlmIHRoaXMgaXMgcmlnaHQgeWV0Li4uCiAgICAgICAgIFFQYWludGVyIHA7Ci0gICAg
ICAgIGtodG1sOjpSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyBpbmZvKCZwLCBRUmVjdCgpLCBQYWlu
dEFjdGlvbkZvcmVncm91bmQsIDApOworICAgICAgICBraHRtbDo6UmVuZGVyT2JqZWN0OjpQYWlu
dEluZm8gaW5mbygmcCwgcmVjdCwgUGFpbnRBY3Rpb25Gb3JlZ3JvdW5kLCAwKTsKKyAgICAgICAg
bV9tYXJrZXItPnNldExvY2FsVHJhbnNmb3JtKHJvdGF0aW9uLm11bHRpcGx5KHRyYW5zbGF0aW9u
KS5xbWF0cml4KCkpOwogICAgICAgICBtX21hcmtlci0+cGFpbnQoaW5mbywgMCwgMCk7CiAgICAg
fQogfQpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJdGVtUXVhcnR6LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9kZXZpY2UvcXVh
cnR6L0tDYW52YXNJdGVtUXVhcnR6LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZmIC11
IC1wIC1yMS4zIEtDYW52YXNJdGVtUXVhcnR6LmgKLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9L
Q2FudmFzSXRlbVF1YXJ0ei5oCTIxIE5vdiAyMDA1IDA4OjI5OjE1IC0wMDAwCTEuMworKysga2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJdGVtUXVhcnR6LmgJMjIgTm92IDIwMDUgMTc6MDg6
NTggLTAwMDAKQEAgLTQwLDUgKzQwLDUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBub2Rl
QXRQb2ludChOb2RlSW5mbyYgaW5mbywgaW50IF94LCBpbnQgX3ksIGludCBfdHgsIGludCBfdHks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9u
KTsKIHByaXZhdGU6Ci0gICAgdm9pZCBkcmF3TWFya2Vyc0lmTmVlZGVkKGNvbnN0IFFSZWN0ICZy
ZWN0KSBjb25zdDsKKyAgICB2b2lkIGRyYXdNYXJrZXJzSWZOZWVkZWQoY29uc3QgUVJlY3QgJnJl
Y3QsIENHUGF0aFJlZiBwYXRoKSBjb25zdDsKIH07CkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFy
dHovS0NhbnZhc0l0ZW1RdWFydHoubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NW
R1N1cHBvcnQva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJdGVtUXVhcnR6Lm1tLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjcKZGlmZiAtdSAtcCAtcjEuNyBLQ2FudmFzSXRlbVF1YXJ0ei5t
bQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJdGVtUXVhcnR6Lm1tCTIxIE5vdiAy
MDA1IDA4OjI5OjE1IC0wMDAwCTEuNworKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJ
dGVtUXVhcnR6Lm1tCTIyIE5vdiAyMDA1IDE3OjA4OjU4IC0wMDAwCkBAIC00OCwyMiArNDgsMzAg
QEAgS0NhbnZhc0l0ZW1RdWFydHo6OktDYW52YXNJdGVtUXVhcnR6KGtodAogCQogfQogCi12b2lk
IEtDYW52YXNJdGVtUXVhcnR6OjpkcmF3TWFya2Vyc0lmTmVlZGVkKGNvbnN0IFFSZWN0ICZyZWN0
KSBjb25zdAordm9pZCBLQ2FudmFzSXRlbVF1YXJ0ejo6ZHJhd01hcmtlcnNJZk5lZWRlZChjb25z
dCBRUmVjdCAmcmVjdCwgQ0dQYXRoUmVmIHBhdGgpIGNvbnN0CiB7CiAgICAgS0RPTTo6RG9jdW1l
bnRJbXBsICpkb2MgPSBkb2N1bWVudCgpOwogICAgIEtTVkc6OlNWR1JlbmRlclN0eWxlICpzdmdT
dHlsZSA9IHN0eWxlKCktPnN2Z1N0eWxlKCk7Ci0KKyAgICAKKyAgICBDR1BhdGhHZXRWZXJ0aWNl
c0RhdGEgKnZlcnRpY2VzRGF0YSA9IENHUGF0aEdldFZlcnRpY2VzKHBhdGgpOworICAgIGludCBu
dW1iZXJPZlZlcnRpY2VzID0gdmVydGljZXNEYXRhLT5pbmRleE9mVmVydGljZSAtIDE7CisgICAg
Q0dQb2ludCAqdmVydGljZXMgPSB2ZXJ0aWNlc0RhdGEtPnZlcnRpY2VzOworICAgIAogICAgIC8v
IGZpbmQgdGhlIHN0YXJ0IHZlcnRpY2llcy4uLgotICAgIGlmKEtDYW52YXNNYXJrZXIgKm1hcmtl
ciA9IGdldE1hcmtlckJ5SWQoZG9jLCBzdmdTdHlsZS0+c3RhcnRNYXJrZXIoKS5taWQoMSkpKQot
ICAgICAgICBtYXJrZXItPmRyYXcocmVjdCwgbG9jYWxUcmFuc2Zvcm0oKSwgMCwgMCwgMCk7Ci0K
LSAgICAvLyBmaW5kIHRoZSBtaWRkbGUgdmVydGljaWVzLi4uIAotICAgIGlmKEtDYW52YXNNYXJr
ZXIgKm1hcmtlciA9IGdldE1hcmtlckJ5SWQoZG9jLCBzdmdTdHlsZS0+bWlkTWFya2VyKCkubWlk
KDEpKSkKLSAgICAgICAgbWFya2VyLT5kcmF3KHJlY3QsIGxvY2FsVHJhbnNmb3JtKCksIDAsIDAs
IDApOworICAgIGlmKEtDYW52YXNNYXJrZXIgKm1hcmtlciA9IGdldE1hcmtlckJ5SWQoZG9jLCBz
dmdTdHlsZS0+c3RhcnRNYXJrZXIoKS5taWQoMSkpKSB7CisgICAgICAgIG1hcmtlci0+ZHJhdyhy
ZWN0LCBsb2NhbFRyYW5zZm9ybSgpLCB2ZXJ0aWNlc1swXS54LCB2ZXJ0aWNlc1swXS55KTsKKyAg
ICB9CisgICAgLy8gZmluZCB0aGUgbWlkZGxlIHZlcnRpY2llcy4uLgorICAgIGZvciAoaW50IGkg
PSAxIDsgaSA8IG51bWJlck9mVmVydGljZXMgOyBpKyspCisgICAgICAgIGlmKEtDYW52YXNNYXJr
ZXIgKm1hcmtlciA9IGdldE1hcmtlckJ5SWQoZG9jLCBzdmdTdHlsZS0+bWlkTWFya2VyKCkubWlk
KDEpKSkKKyAgICAgICAgICAgIG1hcmtlci0+ZHJhdyhyZWN0LCBsb2NhbFRyYW5zZm9ybSgpLCB2
ZXJ0aWNlc1tpXS54LCB2ZXJ0aWNlc1tpXS55KTsKICAgICAKICAgICAvLyBmaW5kIHRoZSBlbmQg
dmVydGljaWVzLi4uCiAgICAgaWYoS0NhbnZhc01hcmtlciAqbWFya2VyID0gZ2V0TWFya2VyQnlJ
ZChkb2MsIHN2Z1N0eWxlLT5lbmRNYXJrZXIoKS5taWQoMSkpKQotICAgICAgICBtYXJrZXItPmRy
YXcocmVjdCwgbG9jYWxUcmFuc2Zvcm0oKSwgMCwgMCwgMCk7CisgICAgICAgIG1hcmtlci0+ZHJh
dyhyZWN0LCBsb2NhbFRyYW5zZm9ybSgpLCB2ZXJ0aWNlc1tudW1iZXJPZlZlcnRpY2VzXS54LCB2
ZXJ0aWNlc1tudW1iZXJPZlZlcnRpY2VzXS55KTsKKyAgICAKKyAgICBmcmVlKHZlcnRpY2VzKTsK
KyAgICBmcmVlKHZlcnRpY2VzRGF0YSk7CiB9CiAKIHZvaWQgS0NhbnZhc0l0ZW1RdWFydHo6OnBh
aW50KFBhaW50SW5mbyAmcGFpbnRJbmZvLCBpbnQgcGFyZW50WCwgaW50IHBhcmVudFkpCkBAIC04
Myw3ICs5MSw3IEBAIHZvaWQgS0NhbnZhc0l0ZW1RdWFydHo6OnBhaW50KFBhaW50SW5mbyAKIAog
ICAgIENHTXV0YWJsZVBhdGhSZWYgY2dQYXRoID0gc3RhdGljX2Nhc3Q8S0NhbnZhc1F1YXJ0elBh
dGhEYXRhICo+KHBhdGgoKSktPnBhdGg7CiAgICAgQVNTRVJUKGNnUGF0aCAhPSAwKTsKLQorICAg
IAogICAgIENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtKGxv
Y2FsVHJhbnNmb3JtKCkpOwogICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCB0cmFuc2Zv
cm0pOwogCkBAIC0xMTUsOSArMTIzLDkgQEAgdm9pZCBLQ2FudmFzSXRlbVF1YXJ0ejo6cGFpbnQo
UGFpbnRJbmZvIAogICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIGNnUGF0aCk7IC8v
IHBhdGggaXMgY2xlYXJlZCB3aGVuIGZpbGxlZC4KICAgICAgICAgY2FudmFzU3R5bGUoKS0+c3Ry
b2tlUGFpbnRlcigpLT5kcmF3KHF1YXJ0ekNvbnRleHQsIGFyZ3MpOwogICAgIH0KLQotICAgIGRy
YXdNYXJrZXJzSWZOZWVkZWQoZGlydHlSZWN0KTsKLQorICAgIAorICAgIGRyYXdNYXJrZXJzSWZO
ZWVkZWQoZGlydHlSZWN0LCBjZ1BhdGgpOworICAgIAogICAgIC8vIGFjdHVhbGx5IGFwcGx5IHRo
ZSBmaWx0ZXIKICAgICBpZiAoZmlsdGVyKSB7CiAgICAgICAgIGZpbHRlci0+YXBwbHlGaWx0ZXIo
cXVhcnR6Q29udGV4dCwgbG9jYWxUcmFuc2Zvcm0oKSwgYmJveEZvckZpbHRlcik7CkluZGV4OiBr
Y2FudmFzL2RldmljZS9xdWFydHovUXVhcnR6U3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9RdWFydHpTdXBwb3J0
LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZmIC11IC1wIC1yMS4zIFF1YXJ0elN1cHBv
cnQuaAotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L1F1YXJ0elN1cHBvcnQuaAkyMSBOb3YgMjAw
NSAwODoyOToxNSAtMDAwMAkxLjMKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9RdWFydHpTdXBw
b3J0LmgJMjIgTm92IDIwMDUgMTc6MDg6NTggLTAwMDAKQEAgLTMxLDEwICszMSwxNyBAQCBuYW1l
c3BhY2UgS1NWRyB7CiAgICAgY2xhc3MgU1ZHUmVuZGVyU3R5bGU7CiB9CiAKK3R5cGVkZWYgc3Ry
dWN0IHsKKyAgICBpbnQgaW5kZXhPZlZlcnRpY2U7CisgICAgQ0dQb2ludCAqdmVydGljZXM7Cit9
IENHUGF0aEdldFZlcnRpY2VzRGF0YTsKKwogQ0ZTdHJpbmdSZWYgQ0ZTdHJpbmdGcm9tQ0dQYXRo
KENHUGF0aFJlZiBwYXRoKTsKIENGU3RyaW5nUmVmIENGU3RyaW5nRnJvbUNHQWZmaW5lVHJhbnNm
b3JtKENHQWZmaW5lVHJhbnNmb3JtIHQpOwogQ0dBZmZpbmVUcmFuc2Zvcm0gQ0dBZmZpbmVUcmFu
c2Zvcm1NYWtlTWFwQmV0d2VlblJlY3RzKENHUmVjdCBzb3VyY2UsIENHUmVjdCBkZXN0KTsKIENH
UGF0aFJlZiBDR1BhdGhBcHBseVRyYW5zZm9ybShDR1BhdGhSZWYgcGF0aCwgQ0dBZmZpbmVUcmFu
c2Zvcm0gdHJhbnNmb3JtKTsKK2ludCBDR1BhdGhOdW1iZXJPZkVsZW1lbnRzKENHUGF0aFJlZiBw
YXRoKTsKK0NHUGF0aEdldFZlcnRpY2VzRGF0YSAqQ0dQYXRoR2V0VmVydGljZXMoQ0dQYXRoUmVm
IHBhdGgpOwogCiB2b2lkIGFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQoQ0dDb250ZXh0UmVmIGNv
bnRleHQsIEtTVkc6OktDYW52YXNSZW5kZXJpbmdTdHlsZSAqc3R5bGUpOwogCkluZGV4OiBrY2Fu
dmFzL2RldmljZS9xdWFydHovUXVhcnR6U3VwcG9ydC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rY2FudmFzL2RldmljZS9xdWFydHovUXVhcnR6U3VwcG9ydC5t
bSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXUgLXAgLXIxLjUgUXVhcnR6U3VwcG9y
dC5tbQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L1F1YXJ0elN1cHBvcnQubW0JMjEgTm92IDIw
MDUgMDg6Mjk6MTYgLTAwMDAJMS41CisrKyBrY2FudmFzL2RldmljZS9xdWFydHovUXVhcnR6U3Vw
cG9ydC5tbQkyMiBOb3YgMjAwNSAxNzowODo1OCAtMDAwMApAQCAtMTUwLDMgKzE1MCwzOCBAQCBD
RlN0cmluZ1JlZiBDRlN0cmluZ0Zyb21DR1BhdGgoQ0dQYXRoUmVmCiAgICAgcmV0dXJuIHN0cmlu
ZzsKIH0KIAordm9pZCBDR1BhdGhOdW1iZXJPZkVsZW1lbnRzQXBwbGllckZ1bmN0aW9uKHZvaWQg
KmluZm8sIGNvbnN0IENHUGF0aEVsZW1lbnQgKmVsZW1lbnQpCit7CisgICAgaW50ICpudW1iZXJP
ZkVsZW1lbnRzUHRyID0gKGludCAqKWluZm87CisgICAgaW50IG5iID0gKm51bWJlck9mRWxlbWVu
dHNQdHI7CisgICAgbmIrKzsKKyAgICAqbnVtYmVyT2ZFbGVtZW50c1B0ciA9IG5iOworfQorCitp
bnQgQ0dQYXRoTnVtYmVyT2ZFbGVtZW50cyhDR1BhdGhSZWYgcGF0aCkKK3sKKyAgICBpbnQgbnVt
YmVyT2ZFbGVtZW50c0luUGF0aCA9IDA7CisgICAgQ0dQYXRoQXBwbHkocGF0aCwgJm51bWJlck9m
RWxlbWVudHNJblBhdGgsIENHUGF0aE51bWJlck9mRWxlbWVudHNBcHBsaWVyRnVuY3Rpb24pOwor
ICAgIHJldHVybiBudW1iZXJPZkVsZW1lbnRzSW5QYXRoOworfQorCit2b2lkIENHUGF0aEdldFZl
cnRpY2VzQXBwbGllckZ1bmN0aW9uKHZvaWQgKmluZm8sIGNvbnN0IENHUGF0aEVsZW1lbnQgKmVs
ZW1lbnQpCit7CisgICAgQ0dQYXRoR2V0VmVydGljZXNEYXRhICpkYXRhID0gKENHUGF0aEdldFZl
cnRpY2VzRGF0YSAqKWluZm87CisgICAgaW50IGluZGV4T2ZWZXJ0aWNlID0gZGF0YS0+aW5kZXhP
ZlZlcnRpY2U7CisgICAgQ0dQb2ludCAqdmVydGljZXMgPSBkYXRhLT52ZXJ0aWNlczsKKyAgICBD
R1BvaW50ICpwb2ludHMgPSBlbGVtZW50LT5wb2ludHM7CisKKyAgICB2ZXJ0aWNlc1tpbmRleE9m
VmVydGljZSsrXSA9IHBvaW50c1swXTsKKyAgICBkYXRhLT5pbmRleE9mVmVydGljZSA9IGluZGV4
T2ZWZXJ0aWNlOworfQorCitDR1BhdGhHZXRWZXJ0aWNlc0RhdGEgKkNHUGF0aEdldFZlcnRpY2Vz
KENHUGF0aFJlZiBwYXRoKQoreworICAgIENHUGF0aEdldFZlcnRpY2VzRGF0YSAqZGF0YSA9IChD
R1BhdGhHZXRWZXJ0aWNlc0RhdGEgKiltYWxsb2Moc2l6ZW9mKENHUGF0aEdldFZlcnRpY2VzRGF0
YSkpOworICAgIGludCBudW1iZXJPZkVsZW1lbnRzSW5QYXRoID0gQ0dQYXRoTnVtYmVyT2ZFbGVt
ZW50cyhwYXRoKTsKKyAgICBkYXRhLT5pbmRleE9mVmVydGljZSA9IDA7CisgICAgZGF0YS0+dmVy
dGljZXMgPSAoQ0dQb2ludCAqKW1hbGxvYyhzaXplb2YoQ0dQb2ludCkgKiBudW1iZXJPZkVsZW1l
bnRzSW5QYXRoKTsKKyAgICBDR1BhdGhBcHBseShwYXRoLCBkYXRhLCBDR1BhdGhHZXRWZXJ0aWNl
c0FwcGxpZXJGdW5jdGlvbik7CisgICAgcmV0dXJuIGRhdGE7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4767</attachid>
            <date>2005-11-22 09:33:06 -0800</date>
            <delta_ts>2005-11-22 15:12:56 -0800</delta_ts>
            <desc>Improved Patch</desc>
            <filename>patch_markers.txt</filename>
            <type>text/plain</type>
            <size>8623</size>
            <attacher name="Julien Palmas">julien.palmas</attacher>
            
              <data encoding="base64">SW5kZXg6IGtjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VzLmNwcCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS45CmRpZmYgLXUgLXAgLXIxLjkgS0NhbnZhc1Jlc291cmNlcy5jcHAK
LS0tIGtjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5jcHAJMjIgTm92IDIwMDUgMTA6MDM6MjUgLTAw
MDAJMS45CisrKyBrY2FudmFzL0tDYW52YXNSZXNvdXJjZXMuY3BwCTIyIE5vdiAyMDA1IDE3OjM0
OjQxIC0wMDAwCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSA8a2RlYnVnLmg+CiAKICNpbmNs
dWRlICJrY2FudmFzL0tDYW52YXMuaCIKLSNpbmNsdWRlICJrY2FudmFzL1JlbmRlclBhdGguaCIK
ICNpbmNsdWRlICJLQ2FudmFzTWF0cml4LmgiCiAjaW5jbHVkZSAiS0NhbnZhc0NvbnRhaW5lci5o
IgogI2luY2x1ZGUgIktDYW52YXNSZXNvdXJjZXMuaCIKQEAgLTIzMiwxMCArMjMxLDExIEBAIHZv
aWQgS0NhbnZhc01hcmtlcjo6ZHJhdyhjb25zdCBRUmVjdCAmcmUKICAgICAgICAgLy8gc3Ryb2tl
IHdpZHRoCiAgICAgICAgIGlmKG1fdXNlU3Ryb2tlV2lkdGgpCiAgICAgICAgICAgICByb3RhdGlv
bi5zY2FsZShzdHJva2VXaWR0aCwgc3Ryb2tlV2lkdGgpOwotCisgICAgICAgIAogICAgICAgICAv
LyBGSVhNRTogSSdtIG5vdCBzdXJlIGlmIHRoaXMgaXMgcmlnaHQgeWV0Li4uCiAgICAgICAgIFFQ
YWludGVyIHA7Ci0gICAgICAgIGtodG1sOjpSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyBpbmZvKCZw
LCBRUmVjdCgpLCBQYWludEFjdGlvbkZvcmVncm91bmQsIDApOworICAgICAgICBraHRtbDo6UmVu
ZGVyT2JqZWN0OjpQYWludEluZm8gaW5mbygmcCwgcmVjdCwgUGFpbnRBY3Rpb25Gb3JlZ3JvdW5k
LCAwKTsKKyAgICAgICAgbV9tYXJrZXItPnNldExvY2FsVHJhbnNmb3JtKHJvdGF0aW9uLm11bHRp
cGx5KHRyYW5zbGF0aW9uKS5xbWF0cml4KCkpOwogICAgICAgICBtX21hcmtlci0+cGFpbnQoaW5m
bywgMCwgMCk7CiAgICAgfQogfQpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJ
dGVtUXVhcnR6LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJdGVtUXVhcnR6LmgsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuMwpkaWZmIC11IC1wIC1yMS4zIEtDYW52YXNJdGVtUXVhcnR6LmgKLS0tIGtjYW52YXMv
ZGV2aWNlL3F1YXJ0ei9LQ2FudmFzSXRlbVF1YXJ0ei5oCTIxIE5vdiAyMDA1IDA4OjI5OjE1IC0w
MDAwCTEuMworKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJdGVtUXVhcnR6LmgJMjIg
Tm92IDIwMDUgMTc6MzQ6NDEgLTAwMDAKQEAgLTQwLDUgKzQwLDUgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBub2RlQXRQb2ludChOb2RlSW5mbyYgaW5mbywgaW50IF94LCBpbnQgX3ksIGlu
dCBfdHgsIGludCBfdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGl0VGVzdEFjdGlv
biBoaXRUZXN0QWN0aW9uKTsKIHByaXZhdGU6Ci0gICAgdm9pZCBkcmF3TWFya2Vyc0lmTmVlZGVk
KGNvbnN0IFFSZWN0ICZyZWN0KSBjb25zdDsKKyAgICB2b2lkIGRyYXdNYXJrZXJzSWZOZWVkZWQo
Y29uc3QgUVJlY3QgJnJlY3QsIENHUGF0aFJlZiBwYXRoKSBjb25zdDsKIH07CkluZGV4OiBrY2Fu
dmFzL2RldmljZS9xdWFydHovS0NhbnZhc0l0ZW1RdWFydHoubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJdGVt
UXVhcnR6Lm1tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjcKZGlmZiAtdSAtcCAtcjEuNyBLQ2Fu
dmFzSXRlbVF1YXJ0ei5tbQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJdGVtUXVh
cnR6Lm1tCTIxIE5vdiAyMDA1IDA4OjI5OjE1IC0wMDAwCTEuNworKysga2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L0tDYW52YXNJdGVtUXVhcnR6Lm1tCTIyIE5vdiAyMDA1IDE3OjM0OjQyIC0wMDAwCkBA
IC00OCwyMiArNDgsMzAgQEAgS0NhbnZhc0l0ZW1RdWFydHo6OktDYW52YXNJdGVtUXVhcnR6KGto
dAogCQogfQogCi12b2lkIEtDYW52YXNJdGVtUXVhcnR6OjpkcmF3TWFya2Vyc0lmTmVlZGVkKGNv
bnN0IFFSZWN0ICZyZWN0KSBjb25zdAordm9pZCBLQ2FudmFzSXRlbVF1YXJ0ejo6ZHJhd01hcmtl
cnNJZk5lZWRlZChjb25zdCBRUmVjdCAmcmVjdCwgQ0dQYXRoUmVmIHBhdGgpIGNvbnN0CiB7CiAg
ICAgS0RPTTo6RG9jdW1lbnRJbXBsICpkb2MgPSBkb2N1bWVudCgpOwogICAgIEtTVkc6OlNWR1Jl
bmRlclN0eWxlICpzdmdTdHlsZSA9IHN0eWxlKCktPnN2Z1N0eWxlKCk7Ci0KKyAgICAKKyAgICBD
R1BhdGhHZXRWZXJ0aWNlc0RhdGEgKnZlcnRpY2VzRGF0YSA9IENHUGF0aEdldFZlcnRpY2VzKHBh
dGgpOworICAgIGludCBudW1iZXJPZlZlcnRpY2VzID0gdmVydGljZXNEYXRhLT5pbmRleE9mVmVy
dGljZSAtIDE7CisgICAgQ0dQb2ludCAqdmVydGljZXMgPSB2ZXJ0aWNlc0RhdGEtPnZlcnRpY2Vz
OworICAgIAogICAgIC8vIGZpbmQgdGhlIHN0YXJ0IHZlcnRpY2llcy4uLgotICAgIGlmKEtDYW52
YXNNYXJrZXIgKm1hcmtlciA9IGdldE1hcmtlckJ5SWQoZG9jLCBzdmdTdHlsZS0+c3RhcnRNYXJr
ZXIoKS5taWQoMSkpKQotICAgICAgICBtYXJrZXItPmRyYXcocmVjdCwgbG9jYWxUcmFuc2Zvcm0o
KSwgMCwgMCwgMCk7Ci0KLSAgICAvLyBmaW5kIHRoZSBtaWRkbGUgdmVydGljaWVzLi4uIAotICAg
IGlmKEtDYW52YXNNYXJrZXIgKm1hcmtlciA9IGdldE1hcmtlckJ5SWQoZG9jLCBzdmdTdHlsZS0+
bWlkTWFya2VyKCkubWlkKDEpKSkKLSAgICAgICAgbWFya2VyLT5kcmF3KHJlY3QsIGxvY2FsVHJh
bnNmb3JtKCksIDAsIDAsIDApOworICAgIGlmKEtDYW52YXNNYXJrZXIgKm1hcmtlciA9IGdldE1h
cmtlckJ5SWQoZG9jLCBzdmdTdHlsZS0+c3RhcnRNYXJrZXIoKS5taWQoMSkpKSB7CisgICAgICAg
IG1hcmtlci0+ZHJhdyhyZWN0LCBsb2NhbFRyYW5zZm9ybSgpLCB2ZXJ0aWNlc1swXS54LCB2ZXJ0
aWNlc1swXS55KTsKKyAgICB9CisgICAgLy8gZmluZCB0aGUgbWlkZGxlIHZlcnRpY2llcy4uLgor
ICAgIGZvciAoaW50IGkgPSAxIDsgaSA8IG51bWJlck9mVmVydGljZXMgOyBpKyspCisgICAgICAg
IGlmKEtDYW52YXNNYXJrZXIgKm1hcmtlciA9IGdldE1hcmtlckJ5SWQoZG9jLCBzdmdTdHlsZS0+
bWlkTWFya2VyKCkubWlkKDEpKSkKKyAgICAgICAgICAgIG1hcmtlci0+ZHJhdyhyZWN0LCBsb2Nh
bFRyYW5zZm9ybSgpLCB2ZXJ0aWNlc1tpXS54LCB2ZXJ0aWNlc1tpXS55KTsKICAgICAKICAgICAv
LyBmaW5kIHRoZSBlbmQgdmVydGljaWVzLi4uCiAgICAgaWYoS0NhbnZhc01hcmtlciAqbWFya2Vy
ID0gZ2V0TWFya2VyQnlJZChkb2MsIHN2Z1N0eWxlLT5lbmRNYXJrZXIoKS5taWQoMSkpKQotICAg
ICAgICBtYXJrZXItPmRyYXcocmVjdCwgbG9jYWxUcmFuc2Zvcm0oKSwgMCwgMCwgMCk7CisgICAg
ICAgIG1hcmtlci0+ZHJhdyhyZWN0LCBsb2NhbFRyYW5zZm9ybSgpLCB2ZXJ0aWNlc1tudW1iZXJP
ZlZlcnRpY2VzXS54LCB2ZXJ0aWNlc1tudW1iZXJPZlZlcnRpY2VzXS55KTsKKyAgICAKKyAgICBm
cmVlKHZlcnRpY2VzKTsKKyAgICBmcmVlKHZlcnRpY2VzRGF0YSk7CiB9CiAKIHZvaWQgS0NhbnZh
c0l0ZW1RdWFydHo6OnBhaW50KFBhaW50SW5mbyAmcGFpbnRJbmZvLCBpbnQgcGFyZW50WCwgaW50
IHBhcmVudFkpCkBAIC04Myw3ICs5MSw3IEBAIHZvaWQgS0NhbnZhc0l0ZW1RdWFydHo6OnBhaW50
KFBhaW50SW5mbyAKIAogICAgIENHTXV0YWJsZVBhdGhSZWYgY2dQYXRoID0gc3RhdGljX2Nhc3Q8
S0NhbnZhc1F1YXJ0elBhdGhEYXRhICo+KHBhdGgoKSktPnBhdGg7CiAgICAgQVNTRVJUKGNnUGF0
aCAhPSAwKTsKLQorICAgIAogICAgIENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IENHQWZm
aW5lVHJhbnNmb3JtKGxvY2FsVHJhbnNmb3JtKCkpOwogICAgIENHQ29udGV4dENvbmNhdENUTShj
b250ZXh0LCB0cmFuc2Zvcm0pOwogCkBAIC0xMTUsOSArMTIzLDkgQEAgdm9pZCBLQ2FudmFzSXRl
bVF1YXJ0ejo6cGFpbnQoUGFpbnRJbmZvIAogICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRl
eHQsIGNnUGF0aCk7IC8vIHBhdGggaXMgY2xlYXJlZCB3aGVuIGZpbGxlZC4KICAgICAgICAgY2Fu
dmFzU3R5bGUoKS0+c3Ryb2tlUGFpbnRlcigpLT5kcmF3KHF1YXJ0ekNvbnRleHQsIGFyZ3MpOwog
ICAgIH0KLQotICAgIGRyYXdNYXJrZXJzSWZOZWVkZWQoZGlydHlSZWN0KTsKLQorICAgIAorICAg
IGRyYXdNYXJrZXJzSWZOZWVkZWQoZGlydHlSZWN0LCBjZ1BhdGgpOworICAgIAogICAgIC8vIGFj
dHVhbGx5IGFwcGx5IHRoZSBmaWx0ZXIKICAgICBpZiAoZmlsdGVyKSB7CiAgICAgICAgIGZpbHRl
ci0+YXBwbHlGaWx0ZXIocXVhcnR6Q29udGV4dCwgbG9jYWxUcmFuc2Zvcm0oKSwgYmJveEZvckZp
bHRlcik7CkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovUXVhcnR6U3VwcG9ydC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvZGV2aWNlL3F1YXJ0
ei9RdWFydHpTdXBwb3J0LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZmIC11IC1wIC1y
MS4zIFF1YXJ0elN1cHBvcnQuaAotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L1F1YXJ0elN1cHBv
cnQuaAkyMSBOb3YgMjAwNSAwODoyOToxNSAtMDAwMAkxLjMKKysrIGtjYW52YXMvZGV2aWNlL3F1
YXJ0ei9RdWFydHpTdXBwb3J0LmgJMjIgTm92IDIwMDUgMTc6MzQ6NDIgLTAwMDAKQEAgLTMxLDEw
ICszMSwxNyBAQCBuYW1lc3BhY2UgS1NWRyB7CiAgICAgY2xhc3MgU1ZHUmVuZGVyU3R5bGU7CiB9
CiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBpbnQgaW5kZXhPZlZlcnRpY2U7CisgICAgQ0dQb2lu
dCAqdmVydGljZXM7Cit9IENHUGF0aEdldFZlcnRpY2VzRGF0YTsKKwogQ0ZTdHJpbmdSZWYgQ0ZT
dHJpbmdGcm9tQ0dQYXRoKENHUGF0aFJlZiBwYXRoKTsKIENGU3RyaW5nUmVmIENGU3RyaW5nRnJv
bUNHQWZmaW5lVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtIHQpOwogQ0dBZmZpbmVUcmFuc2Zv
cm0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlTWFwQmV0d2VlblJlY3RzKENHUmVjdCBzb3VyY2UsIENH
UmVjdCBkZXN0KTsKIENHUGF0aFJlZiBDR1BhdGhBcHBseVRyYW5zZm9ybShDR1BhdGhSZWYgcGF0
aCwgQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtKTsKK2ludCBDR1BhdGhOdW1iZXJPZkVsZW1l
bnRzKENHUGF0aFJlZiBwYXRoKTsKK0NHUGF0aEdldFZlcnRpY2VzRGF0YSAqQ0dQYXRoR2V0VmVy
dGljZXMoQ0dQYXRoUmVmIHBhdGgpOwogCiB2b2lkIGFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQo
Q0dDb250ZXh0UmVmIGNvbnRleHQsIEtTVkc6OktDYW52YXNSZW5kZXJpbmdTdHlsZSAqc3R5bGUp
OwogCkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovUXVhcnR6U3VwcG9ydC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rY2FudmFzL2RldmljZS9xdWFydHov
UXVhcnR6U3VwcG9ydC5tbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXUgLXAgLXIx
LjUgUXVhcnR6U3VwcG9ydC5tbQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L1F1YXJ0elN1cHBv
cnQubW0JMjEgTm92IDIwMDUgMDg6Mjk6MTYgLTAwMDAJMS41CisrKyBrY2FudmFzL2RldmljZS9x
dWFydHovUXVhcnR6U3VwcG9ydC5tbQkyMiBOb3YgMjAwNSAxNzozNDo0MiAtMDAwMApAQCAtMTUw
LDMgKzE1MCwzOCBAQCBDRlN0cmluZ1JlZiBDRlN0cmluZ0Zyb21DR1BhdGgoQ0dQYXRoUmVmCiAg
ICAgcmV0dXJuIHN0cmluZzsKIH0KIAordm9pZCBDR1BhdGhOdW1iZXJPZkVsZW1lbnRzQXBwbGll
ckZ1bmN0aW9uKHZvaWQgKmluZm8sIGNvbnN0IENHUGF0aEVsZW1lbnQgKmVsZW1lbnQpCit7Cisg
ICAgaW50ICpudW1iZXJPZkVsZW1lbnRzUHRyID0gKGludCAqKWluZm87CisgICAgaW50IG5iID0g
Km51bWJlck9mRWxlbWVudHNQdHI7CisgICAgbmIrKzsKKyAgICAqbnVtYmVyT2ZFbGVtZW50c1B0
ciA9IG5iOworfQorCitpbnQgQ0dQYXRoTnVtYmVyT2ZFbGVtZW50cyhDR1BhdGhSZWYgcGF0aCkK
K3sKKyAgICBpbnQgbnVtYmVyT2ZFbGVtZW50c0luUGF0aCA9IDA7CisgICAgQ0dQYXRoQXBwbHko
cGF0aCwgJm51bWJlck9mRWxlbWVudHNJblBhdGgsIENHUGF0aE51bWJlck9mRWxlbWVudHNBcHBs
aWVyRnVuY3Rpb24pOworICAgIHJldHVybiBudW1iZXJPZkVsZW1lbnRzSW5QYXRoOworfQorCit2
b2lkIENHUGF0aEdldFZlcnRpY2VzQXBwbGllckZ1bmN0aW9uKHZvaWQgKmluZm8sIGNvbnN0IENH
UGF0aEVsZW1lbnQgKmVsZW1lbnQpCit7CisgICAgQ0dQYXRoR2V0VmVydGljZXNEYXRhICpkYXRh
ID0gKENHUGF0aEdldFZlcnRpY2VzRGF0YSAqKWluZm87CisgICAgaW50IGluZGV4T2ZWZXJ0aWNl
ID0gZGF0YS0+aW5kZXhPZlZlcnRpY2U7CisgICAgQ0dQb2ludCAqdmVydGljZXMgPSBkYXRhLT52
ZXJ0aWNlczsKKyAgICBDR1BvaW50ICpwb2ludHMgPSBlbGVtZW50LT5wb2ludHM7CisKKyAgICB2
ZXJ0aWNlc1tpbmRleE9mVmVydGljZSsrXSA9IHBvaW50c1swXTsKKyAgICBkYXRhLT5pbmRleE9m
VmVydGljZSA9IGluZGV4T2ZWZXJ0aWNlOworfQorCitDR1BhdGhHZXRWZXJ0aWNlc0RhdGEgKkNH
UGF0aEdldFZlcnRpY2VzKENHUGF0aFJlZiBwYXRoKQoreworICAgIENHUGF0aEdldFZlcnRpY2Vz
RGF0YSAqZGF0YSA9IChDR1BhdGhHZXRWZXJ0aWNlc0RhdGEgKiltYWxsb2Moc2l6ZW9mKENHUGF0
aEdldFZlcnRpY2VzRGF0YSkpOworICAgIGludCBudW1iZXJPZkVsZW1lbnRzSW5QYXRoID0gQ0dQ
YXRoTnVtYmVyT2ZFbGVtZW50cyhwYXRoKTsKKyAgICBkYXRhLT5pbmRleE9mVmVydGljZSA9IDA7
CisgICAgZGF0YS0+dmVydGljZXMgPSAoQ0dQb2ludCAqKW1hbGxvYyhzaXplb2YoQ0dQb2ludCkg
KiBudW1iZXJPZkVsZW1lbnRzSW5QYXRoKTsKKyAgICBDR1BhdGhBcHBseShwYXRoLCBkYXRhLCBD
R1BhdGhHZXRWZXJ0aWNlc0FwcGxpZXJGdW5jdGlvbik7CisgICAgcmV0dXJuIGRhdGE7Cit9Cklu
ZGV4OiBrc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50SW1wbC5j
cHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNwpkaWZmIC11IC1wIC1yMS43IFNWR01hcmtlckVs
ZW1lbnRJbXBsLmNwcAotLS0ga3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnRJbXBsLmNwcAkyMSBO
b3YgMjAwNSAwODoyOTo0MSAtMDAwMAkxLjcKKysrIGtzdmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50
SW1wbC5jcHAJMjIgTm92IDIwMDUgMTc6MzQ6NDMgLTAwMDAKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlICJTVkdIZWxwZXIuaCIKICNpbmNsdWRlICJTVkdBbmdsZUltcGwuaCIKICNpbmNsdWRl
ICJTVkdMZW5ndGhJbXBsLmgiCisjaW5jbHVkZSAiU1ZHTWF0cml4SW1wbC5oIgogI2luY2x1ZGUg
IlNWR1NWR0VsZW1lbnRJbXBsLmgiCiAjaW5jbHVkZSAiU1ZHRml0VG9WaWV3Qm94SW1wbC5oIgog
I2luY2x1ZGUgIlNWR01hcmtlckVsZW1lbnRJbXBsLmgiCkBAIC0xNzksNiArMTgwLDE2IEBAIEtD
YW52YXNNYXJrZXIgKlNWR01hcmtlckVsZW1lbnRJbXBsOjpjYW4KIAogICAgIG1fbWFya2VyLT5z
ZXRSZWZYKHJlZlgoKS0+YmFzZVZhbCgpLT52YWx1ZSgpKTsKICAgICBtX21hcmtlci0+c2V0UmVm
WShyZWZZKCktPmJhc2VWYWwoKS0+dmFsdWUoKSk7CisgICAgCisgICAgbV9tYXJrZXItPnNldFVz
ZVN0cm9rZVdpZHRoKG1hcmtlclVuaXRzKCktPmJhc2VWYWwoKSA9PSBTVkdfTUFSS0VSVU5JVFNf
U1RST0tFV0lEVEgpOworICAgIGRvdWJsZSB3ID0gbWFya2VyV2lkdGgoKS0+YmFzZVZhbCgpLT52
YWx1ZSgpOworICAgIGRvdWJsZSBoID0gbWFya2VySGVpZ2h0KCktPmJhc2VWYWwoKS0+dmFsdWUo
KTsKKyAgICBTVkdNYXRyaXhJbXBsICp2aWV3Qm94ID0gdmlld0JveFRvVmlld1RyYW5zZm9ybSh3
LCBoKTsKKyAgICB2aWV3Qm94LT5yZWYoKTsKKyAgICBtX21hcmtlci0+c2V0U2NhbGVYKHZpZXdC
b3gtPnFtYXRyaXgoKS5tMTEoKSk7CisgICAgbV9tYXJrZXItPnNldFNjYWxlWSh2aWV3Qm94LT5x
bWF0cml4KCkubTIyKCkpOworICAgIHZpZXdCb3gtPmRlcmVmKCk7CisgICAgCiAgICAgcmV0dXJu
IG1fbWFya2VyOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4776</attachid>
            <date>2005-11-22 15:12:56 -0800</date>
            <delta_ts>2005-11-28 12:37:17 -0800</delta_ts>
            <desc>Should solve the markerUnits issue</desc>
            <filename>patch_markers.txt</filename>
            <type>text/plain</type>
            <size>9332</size>
            <attacher name="Julien Palmas">julien.palmas</attacher>
            
              <data encoding="base64">SW5kZXg6IGtjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VzLmNwcCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS45CmRpZmYgLXUgLXAgLXIxLjkgS0NhbnZhc1Jlc291cmNlcy5jcHAK
LS0tIGtjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5jcHAJMjIgTm92IDIwMDUgMTA6MDM6MjUgLTAw
MDAJMS45CisrKyBrY2FudmFzL0tDYW52YXNSZXNvdXJjZXMuY3BwCTIyIE5vdiAyMDA1IDIzOjE0
OjM2IC0wMDAwCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSA8a2RlYnVnLmg+CiAKICNpbmNs
dWRlICJrY2FudmFzL0tDYW52YXMuaCIKLSNpbmNsdWRlICJrY2FudmFzL1JlbmRlclBhdGguaCIK
ICNpbmNsdWRlICJLQ2FudmFzTWF0cml4LmgiCiAjaW5jbHVkZSAiS0NhbnZhc0NvbnRhaW5lci5o
IgogI2luY2x1ZGUgIktDYW52YXNSZXNvdXJjZXMuaCIKQEAgLTIzMiwxMCArMjMxLDExIEBAIHZv
aWQgS0NhbnZhc01hcmtlcjo6ZHJhdyhjb25zdCBRUmVjdCAmcmUKICAgICAgICAgLy8gc3Ryb2tl
IHdpZHRoCiAgICAgICAgIGlmKG1fdXNlU3Ryb2tlV2lkdGgpCiAgICAgICAgICAgICByb3RhdGlv
bi5zY2FsZShzdHJva2VXaWR0aCwgc3Ryb2tlV2lkdGgpOwotCisgICAgICAgIAogICAgICAgICAv
LyBGSVhNRTogSSdtIG5vdCBzdXJlIGlmIHRoaXMgaXMgcmlnaHQgeWV0Li4uCiAgICAgICAgIFFQ
YWludGVyIHA7Ci0gICAgICAgIGtodG1sOjpSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyBpbmZvKCZw
LCBRUmVjdCgpLCBQYWludEFjdGlvbkZvcmVncm91bmQsIDApOworICAgICAgICBraHRtbDo6UmVu
ZGVyT2JqZWN0OjpQYWludEluZm8gaW5mbygmcCwgcmVjdCwgUGFpbnRBY3Rpb25Gb3JlZ3JvdW5k
LCAwKTsKKyAgICAgICAgbV9tYXJrZXItPnNldExvY2FsVHJhbnNmb3JtKHJvdGF0aW9uLm11bHRp
cGx5KHRyYW5zbGF0aW9uKS5xbWF0cml4KCkpOwogICAgICAgICBtX21hcmtlci0+cGFpbnQoaW5m
bywgMCwgMCk7CiAgICAgfQogfQpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJ
dGVtUXVhcnR6LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJdGVtUXVhcnR6LmgsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuMwpkaWZmIC11IC1wIC1yMS4zIEtDYW52YXNJdGVtUXVhcnR6LmgKLS0tIGtjYW52YXMv
ZGV2aWNlL3F1YXJ0ei9LQ2FudmFzSXRlbVF1YXJ0ei5oCTIxIE5vdiAyMDA1IDA4OjI5OjE1IC0w
MDAwCTEuMworKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJdGVtUXVhcnR6LmgJMjIg
Tm92IDIwMDUgMjM6MTQ6MzYgLTAwMDAKQEAgLTQwLDUgKzQwLDUgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBub2RlQXRQb2ludChOb2RlSW5mbyYgaW5mbywgaW50IF94LCBpbnQgX3ksIGlu
dCBfdHgsIGludCBfdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGl0VGVzdEFjdGlv
biBoaXRUZXN0QWN0aW9uKTsKIHByaXZhdGU6Ci0gICAgdm9pZCBkcmF3TWFya2Vyc0lmTmVlZGVk
KGNvbnN0IFFSZWN0ICZyZWN0KSBjb25zdDsKKyAgICB2b2lkIGRyYXdNYXJrZXJzSWZOZWVkZWQo
Y29uc3QgUVJlY3QgJnJlY3QsIENHUGF0aFJlZiBwYXRoKSBjb25zdDsKIH07CkluZGV4OiBrY2Fu
dmFzL2RldmljZS9xdWFydHovS0NhbnZhc0l0ZW1RdWFydHoubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJdGVt
UXVhcnR6Lm1tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjcKZGlmZiAtdSAtcCAtcjEuNyBLQ2Fu
dmFzSXRlbVF1YXJ0ei5tbQotLS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJdGVtUXVh
cnR6Lm1tCTIxIE5vdiAyMDA1IDA4OjI5OjE1IC0wMDAwCTEuNworKysga2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L0tDYW52YXNJdGVtUXVhcnR6Lm1tCTIyIE5vdiAyMDA1IDIzOjE0OjM2IC0wMDAwCkBA
IC00OCwyMiArNDgsMzEgQEAgS0NhbnZhc0l0ZW1RdWFydHo6OktDYW52YXNJdGVtUXVhcnR6KGto
dAogCQogfQogCi12b2lkIEtDYW52YXNJdGVtUXVhcnR6OjpkcmF3TWFya2Vyc0lmTmVlZGVkKGNv
bnN0IFFSZWN0ICZyZWN0KSBjb25zdAordm9pZCBLQ2FudmFzSXRlbVF1YXJ0ejo6ZHJhd01hcmtl
cnNJZk5lZWRlZChjb25zdCBRUmVjdCAmcmVjdCwgQ0dQYXRoUmVmIHBhdGgpIGNvbnN0CiB7CiAg
ICAgS0RPTTo6RG9jdW1lbnRJbXBsICpkb2MgPSBkb2N1bWVudCgpOwogICAgIEtTVkc6OlNWR1Jl
bmRlclN0eWxlICpzdmdTdHlsZSA9IHN0eWxlKCktPnN2Z1N0eWxlKCk7CisgICAgCisgICAgQ0dQ
YXRoR2V0VmVydGljZXNEYXRhICp2ZXJ0aWNlc0RhdGEgPSBDR1BhdGhHZXRWZXJ0aWNlcyhwYXRo
KTsKKyAgICBpbnQgbnVtYmVyT2ZWZXJ0aWNlcyA9IHZlcnRpY2VzRGF0YS0+aW5kZXhPZlZlcnRp
Y2UgLSAxOworICAgIENHUG9pbnQgKnZlcnRpY2VzID0gdmVydGljZXNEYXRhLT52ZXJ0aWNlczsK
KyAgICBmbG9hdCBzdHJva2VXaWR0aCA9IGNhbnZhc1N0eWxlKCktPmlzU3Ryb2tlZCgpID8gY2Fu
dmFzU3R5bGUoKS0+c3Ryb2tlUGFpbnRlcigpLT5zdHJva2VXaWR0aCgpIDogMTsKIAogICAgIC8v
IGZpbmQgdGhlIHN0YXJ0IHZlcnRpY2llcy4uLgotICAgIGlmKEtDYW52YXNNYXJrZXIgKm1hcmtl
ciA9IGdldE1hcmtlckJ5SWQoZG9jLCBzdmdTdHlsZS0+c3RhcnRNYXJrZXIoKS5taWQoMSkpKQot
ICAgICAgICBtYXJrZXItPmRyYXcocmVjdCwgbG9jYWxUcmFuc2Zvcm0oKSwgMCwgMCwgMCk7Ci0K
LSAgICAvLyBmaW5kIHRoZSBtaWRkbGUgdmVydGljaWVzLi4uIAotICAgIGlmKEtDYW52YXNNYXJr
ZXIgKm1hcmtlciA9IGdldE1hcmtlckJ5SWQoZG9jLCBzdmdTdHlsZS0+bWlkTWFya2VyKCkubWlk
KDEpKSkKLSAgICAgICAgbWFya2VyLT5kcmF3KHJlY3QsIGxvY2FsVHJhbnNmb3JtKCksIDAsIDAs
IDApOworICAgIGlmKEtDYW52YXNNYXJrZXIgKm1hcmtlciA9IGdldE1hcmtlckJ5SWQoZG9jLCBz
dmdTdHlsZS0+c3RhcnRNYXJrZXIoKS5taWQoMSkpKSB7CisgICAgICAgIG1hcmtlci0+ZHJhdyhy
ZWN0LCBsb2NhbFRyYW5zZm9ybSgpLCB2ZXJ0aWNlc1swXS54LCB2ZXJ0aWNlc1swXS55LCBzdHJv
a2VXaWR0aCk7CisgICAgfQorICAgIC8vIGZpbmQgdGhlIG1pZGRsZSB2ZXJ0aWNpZXMuLi4KKyAg
ICBmb3IgKGludCBpID0gMSA7IGkgPCBudW1iZXJPZlZlcnRpY2VzIDsgaSsrKQorICAgICAgICBp
ZihLQ2FudmFzTWFya2VyICptYXJrZXIgPSBnZXRNYXJrZXJCeUlkKGRvYywgc3ZnU3R5bGUtPm1p
ZE1hcmtlcigpLm1pZCgxKSkpCisgICAgICAgICAgICBtYXJrZXItPmRyYXcocmVjdCwgbG9jYWxU
cmFuc2Zvcm0oKSwgdmVydGljZXNbaV0ueCwgdmVydGljZXNbaV0ueSwgc3Ryb2tlV2lkdGgpOwog
ICAgIAogICAgIC8vIGZpbmQgdGhlIGVuZCB2ZXJ0aWNpZXMuLi4KICAgICBpZihLQ2FudmFzTWFy
a2VyICptYXJrZXIgPSBnZXRNYXJrZXJCeUlkKGRvYywgc3ZnU3R5bGUtPmVuZE1hcmtlcigpLm1p
ZCgxKSkpCi0gICAgICAgIG1hcmtlci0+ZHJhdyhyZWN0LCBsb2NhbFRyYW5zZm9ybSgpLCAwLCAw
LCAwKTsKKyAgICAgICAgbWFya2VyLT5kcmF3KHJlY3QsIGxvY2FsVHJhbnNmb3JtKCksIHZlcnRp
Y2VzW251bWJlck9mVmVydGljZXNdLngsIHZlcnRpY2VzW251bWJlck9mVmVydGljZXNdLnksIHN0
cm9rZVdpZHRoKTsKKyAgICAKKyAgICBmcmVlKHZlcnRpY2VzKTsKKyAgICBmcmVlKHZlcnRpY2Vz
RGF0YSk7CiB9CiAKIHZvaWQgS0NhbnZhc0l0ZW1RdWFydHo6OnBhaW50KFBhaW50SW5mbyAmcGFp
bnRJbmZvLCBpbnQgcGFyZW50WCwgaW50IHBhcmVudFkpCkBAIC04Myw3ICs5Miw3IEBAIHZvaWQg
S0NhbnZhc0l0ZW1RdWFydHo6OnBhaW50KFBhaW50SW5mbyAKIAogICAgIENHTXV0YWJsZVBhdGhS
ZWYgY2dQYXRoID0gc3RhdGljX2Nhc3Q8S0NhbnZhc1F1YXJ0elBhdGhEYXRhICo+KHBhdGgoKSkt
PnBhdGg7CiAgICAgQVNTRVJUKGNnUGF0aCAhPSAwKTsKLQorICAgIAogICAgIENHQWZmaW5lVHJh
bnNmb3JtIHRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtKGxvY2FsVHJhbnNmb3JtKCkpOwog
ICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCB0cmFuc2Zvcm0pOwogCkBAIC0xMTYsOCAr
MTI1LDggQEAgdm9pZCBLQ2FudmFzSXRlbVF1YXJ0ejo6cGFpbnQoUGFpbnRJbmZvIAogICAgICAg
ICBjYW52YXNTdHlsZSgpLT5zdHJva2VQYWludGVyKCktPmRyYXcocXVhcnR6Q29udGV4dCwgYXJn
cyk7CiAgICAgfQogCi0gICAgZHJhd01hcmtlcnNJZk5lZWRlZChkaXJ0eVJlY3QpOwotCisgICAg
ZHJhd01hcmtlcnNJZk5lZWRlZChkaXJ0eVJlY3QsIGNnUGF0aCk7CisgICAgCiAgICAgLy8gYWN0
dWFsbHkgYXBwbHkgdGhlIGZpbHRlcgogICAgIGlmIChmaWx0ZXIpIHsKICAgICAgICAgZmlsdGVy
LT5hcHBseUZpbHRlcihxdWFydHpDb250ZXh0LCBsb2NhbFRyYW5zZm9ybSgpLCBiYm94Rm9yRmls
dGVyKTsKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9RdWFydHpTdXBwb3J0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9kZXZpY2UvcXVhcnR6
L1F1YXJ0elN1cHBvcnQuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zCmRpZmYgLXUgLXAgLXIx
LjMgUXVhcnR6U3VwcG9ydC5oCi0tLSBrY2FudmFzL2RldmljZS9xdWFydHovUXVhcnR6U3VwcG9y
dC5oCTIxIE5vdiAyMDA1IDA4OjI5OjE1IC0wMDAwCTEuMworKysga2NhbnZhcy9kZXZpY2UvcXVh
cnR6L1F1YXJ0elN1cHBvcnQuaAkyMiBOb3YgMjAwNSAyMzoxNDozNiAtMDAwMApAQCAtMzEsMTAg
KzMxLDE3IEBAIG5hbWVzcGFjZSBLU1ZHIHsKICAgICBjbGFzcyBTVkdSZW5kZXJTdHlsZTsKIH0K
IAordHlwZWRlZiBzdHJ1Y3QgeworICAgIGludCBpbmRleE9mVmVydGljZTsKKyAgICBDR1BvaW50
ICp2ZXJ0aWNlczsKK30gQ0dQYXRoR2V0VmVydGljZXNEYXRhOworCiBDRlN0cmluZ1JlZiBDRlN0
cmluZ0Zyb21DR1BhdGgoQ0dQYXRoUmVmIHBhdGgpOwogQ0ZTdHJpbmdSZWYgQ0ZTdHJpbmdGcm9t
Q0dBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0gdCk7CiBDR0FmZmluZVRyYW5zZm9y
bSBDR0FmZmluZVRyYW5zZm9ybU1ha2VNYXBCZXR3ZWVuUmVjdHMoQ0dSZWN0IHNvdXJjZSwgQ0dS
ZWN0IGRlc3QpOwogQ0dQYXRoUmVmIENHUGF0aEFwcGx5VHJhbnNmb3JtKENHUGF0aFJlZiBwYXRo
LCBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0pOworaW50IENHUGF0aE51bWJlck9mRWxlbWVu
dHMoQ0dQYXRoUmVmIHBhdGgpOworQ0dQYXRoR2V0VmVydGljZXNEYXRhICpDR1BhdGhHZXRWZXJ0
aWNlcyhDR1BhdGhSZWYgcGF0aCk7CiAKIHZvaWQgYXBwbHlTdHJva2VTdHlsZVRvQ29udGV4dChD
R0NvbnRleHRSZWYgY29udGV4dCwgS1NWRzo6S0NhbnZhc1JlbmRlcmluZ1N0eWxlICpzdHlsZSk7
CiAKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9RdWFydHpTdXBwb3J0Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9R
dWFydHpTdXBwb3J0Lm1tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtdSAtcCAtcjEu
NSBRdWFydHpTdXBwb3J0Lm1tCi0tLSBrY2FudmFzL2RldmljZS9xdWFydHovUXVhcnR6U3VwcG9y
dC5tbQkyMSBOb3YgMjAwNSAwODoyOToxNiAtMDAwMAkxLjUKKysrIGtjYW52YXMvZGV2aWNlL3F1
YXJ0ei9RdWFydHpTdXBwb3J0Lm1tCTIyIE5vdiAyMDA1IDIzOjE0OjM2IC0wMDAwCkBAIC0xNTAs
MyArMTUwLDM4IEBAIENGU3RyaW5nUmVmIENGU3RyaW5nRnJvbUNHUGF0aChDR1BhdGhSZWYKICAg
ICByZXR1cm4gc3RyaW5nOwogfQogCit2b2lkIENHUGF0aE51bWJlck9mRWxlbWVudHNBcHBsaWVy
RnVuY3Rpb24odm9pZCAqaW5mbywgY29uc3QgQ0dQYXRoRWxlbWVudCAqZWxlbWVudCkKK3sKKyAg
ICBpbnQgKm51bWJlck9mRWxlbWVudHNQdHIgPSAoaW50ICopaW5mbzsKKyAgICBpbnQgbmIgPSAq
bnVtYmVyT2ZFbGVtZW50c1B0cjsKKyAgICBuYisrOworICAgICpudW1iZXJPZkVsZW1lbnRzUHRy
ID0gbmI7Cit9CisKK2ludCBDR1BhdGhOdW1iZXJPZkVsZW1lbnRzKENHUGF0aFJlZiBwYXRoKQor
eworICAgIGludCBudW1iZXJPZkVsZW1lbnRzSW5QYXRoID0gMDsKKyAgICBDR1BhdGhBcHBseShw
YXRoLCAmbnVtYmVyT2ZFbGVtZW50c0luUGF0aCwgQ0dQYXRoTnVtYmVyT2ZFbGVtZW50c0FwcGxp
ZXJGdW5jdGlvbik7CisgICAgcmV0dXJuIG51bWJlck9mRWxlbWVudHNJblBhdGg7Cit9CisKK3Zv
aWQgQ0dQYXRoR2V0VmVydGljZXNBcHBsaWVyRnVuY3Rpb24odm9pZCAqaW5mbywgY29uc3QgQ0dQ
YXRoRWxlbWVudCAqZWxlbWVudCkKK3sKKyAgICBDR1BhdGhHZXRWZXJ0aWNlc0RhdGEgKmRhdGEg
PSAoQ0dQYXRoR2V0VmVydGljZXNEYXRhICopaW5mbzsKKyAgICBpbnQgaW5kZXhPZlZlcnRpY2Ug
PSBkYXRhLT5pbmRleE9mVmVydGljZTsKKyAgICBDR1BvaW50ICp2ZXJ0aWNlcyA9IGRhdGEtPnZl
cnRpY2VzOworICAgIENHUG9pbnQgKnBvaW50cyA9IGVsZW1lbnQtPnBvaW50czsKKworICAgIHZl
cnRpY2VzW2luZGV4T2ZWZXJ0aWNlKytdID0gcG9pbnRzWzBdOworICAgIGRhdGEtPmluZGV4T2ZW
ZXJ0aWNlID0gaW5kZXhPZlZlcnRpY2U7Cit9CisKK0NHUGF0aEdldFZlcnRpY2VzRGF0YSAqQ0dQ
YXRoR2V0VmVydGljZXMoQ0dQYXRoUmVmIHBhdGgpCit7CisgICAgQ0dQYXRoR2V0VmVydGljZXNE
YXRhICpkYXRhID0gKENHUGF0aEdldFZlcnRpY2VzRGF0YSAqKW1hbGxvYyhzaXplb2YoQ0dQYXRo
R2V0VmVydGljZXNEYXRhKSk7CisgICAgaW50IG51bWJlck9mRWxlbWVudHNJblBhdGggPSBDR1Bh
dGhOdW1iZXJPZkVsZW1lbnRzKHBhdGgpOworICAgIGRhdGEtPmluZGV4T2ZWZXJ0aWNlID0gMDsK
KyAgICBkYXRhLT52ZXJ0aWNlcyA9IChDR1BvaW50ICopbWFsbG9jKHNpemVvZihDR1BvaW50KSAq
IG51bWJlck9mRWxlbWVudHNJblBhdGgpOworICAgIENHUGF0aEFwcGx5KHBhdGgsIGRhdGEsIENH
UGF0aEdldFZlcnRpY2VzQXBwbGllckZ1bmN0aW9uKTsKKyAgICByZXR1cm4gZGF0YTsKK30KSW5k
ZXg6IGtzdmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnRJbXBsLmNw
cCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS43CmRpZmYgLXUgLXAgLXIxLjcgU1ZHTWFya2VyRWxl
bWVudEltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudEltcGwuY3BwCTIxIE5v
diAyMDA1IDA4OjI5OjQxIC0wMDAwCTEuNworKysga3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnRJ
bXBsLmNwcAkyMiBOb3YgMjAwNSAyMzoxNDozOCAtMDAwMApAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgIlNWR0hlbHBlci5oIgogI2luY2x1ZGUgIlNWR0FuZ2xlSW1wbC5oIgogI2luY2x1ZGUg
IlNWR0xlbmd0aEltcGwuaCIKKyNpbmNsdWRlICJTVkdNYXRyaXhJbXBsLmgiCiAjaW5jbHVkZSAi
U1ZHU1ZHRWxlbWVudEltcGwuaCIKICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3hJbXBsLmgiCiAj
aW5jbHVkZSAiU1ZHTWFya2VyRWxlbWVudEltcGwuaCIKQEAgLTc1LDcgKzc2LDExIEBAIFNWR01h
cmtlckVsZW1lbnRJbXBsOjp+U1ZHTWFya2VyRWxlbWVudEkKIHZvaWQgU1ZHTWFya2VyRWxlbWVu
dEltcGw6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEtET006Ok1hcHBlZEF0dHJpYnV0ZUltcGwgKmF0
dHIpCiB7CiAgICAgY29uc3QgS0RPTTo6QXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVl
KCk7Ci0gICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6cmVmWEF0dHIpCisgICAgaWYg
KGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyKSB7CisgICAgICAgIGlm
KEtET006OkRPTVN0cmluZyh2YWx1ZSkgPT0gInVzZXJTcGFjZU9uVXNlIikKKyAgICAgICAgICAg
IG1hcmtlclVuaXRzKCktPnNldEJhc2VWYWwoU1ZHX01BUktFUlVOSVRTX1VTRVJTUEFDRU9OVVNF
KTsKKyAgICB9CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpyZWZYQXR0
cikKICAgICAgICAgcmVmWCgpLT5iYXNlVmFsKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUuaW1w
bCgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJlZllBdHRyKQog
ICAgICAgICByZWZZKCktPmJhc2VWYWwoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZS5pbXBsKCkp
OwpAQCAtMTc5LDYgKzE4NCwxNiBAQCBLQ2FudmFzTWFya2VyICpTVkdNYXJrZXJFbGVtZW50SW1w
bDo6Y2FuCiAKICAgICBtX21hcmtlci0+c2V0UmVmWChyZWZYKCktPmJhc2VWYWwoKS0+dmFsdWUo
KSk7CiAgICAgbV9tYXJrZXItPnNldFJlZlkocmVmWSgpLT5iYXNlVmFsKCktPnZhbHVlKCkpOwor
ICAgIAorICAgIG1fbWFya2VyLT5zZXRVc2VTdHJva2VXaWR0aChtYXJrZXJVbml0cygpLT5iYXNl
VmFsKCkgPT0gU1ZHX01BUktFUlVOSVRTX1NUUk9LRVdJRFRIKTsKKyAgICBkb3VibGUgdyA9IG1h
cmtlcldpZHRoKCktPmJhc2VWYWwoKS0+dmFsdWUoKTsKKyAgICBkb3VibGUgaCA9IG1hcmtlckhl
aWdodCgpLT5iYXNlVmFsKCktPnZhbHVlKCk7CisgICAgU1ZHTWF0cml4SW1wbCAqdmlld0JveCA9
IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0odywgaCk7CisgICAgdmlld0JveC0+cmVmKCk7CisgICAg
bV9tYXJrZXItPnNldFNjYWxlWCh2aWV3Qm94LT5xbWF0cml4KCkubTExKCkpOworICAgIG1fbWFy
a2VyLT5zZXRTY2FsZVkodmlld0JveC0+cW1hdHJpeCgpLm0yMigpKTsKKyAgICB2aWV3Qm94LT5k
ZXJlZigpOworICAgIAogICAgIHJldHVybiBtX21hcmtlcjsKIH0KIAo=
</data>
<flag name="review"
          id="880"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4836</attachid>
            <date>2005-11-28 12:37:17 -0800</date>
            <delta_ts>2005-11-28 13:07:10 -0800</delta_ts>
            <desc>Patch improved with Eric&apos;s ideas</desc>
            <filename>patch_markers_3.txt</filename>
            <type>text/plain</type>
            <size>14424</size>
            <attacher name="Julien Palmas">julien.palmas</attacher>
            
              <data encoding="base64">SW5kZXg6IGtjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VzLmNwcCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS4xMApkaWZmIC11IC1wIC1yMS4xMCBLQ2FudmFzUmVzb3VyY2VzLmNw
cAotLS0ga2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VzLmNwcAkyMyBOb3YgMjAwNSAxNToxNDowNSAt
MDAwMAkxLjEwCisrKyBrY2FudmFzL0tDYW52YXNSZXNvdXJjZXMuY3BwCTI4IE5vdiAyMDA1IDIw
OjMwOjEzIC0wMDAwCkBAIC0xMzgsOSArMTM4LDEwIEBAIHZvaWQgS0NhbnZhc01hcmtlcjo6c2V0
TWFya2VyKGtodG1sOjpSZW4KICAgICBtX21hcmtlciA9IG1hcmtlcjsKIH0KIAotdm9pZCBLQ2Fu
dmFzTWFya2VyOjpzZXRSZWZYKGRvdWJsZSByZWZYKQordm9pZCBLQ2FudmFzTWFya2VyOjpzZXRS
ZWYoZG91YmxlIHJlZlgsIGRvdWJsZSByZWZZKQogewogICAgIG1fcmVmWCA9IHJlZlg7CisgICAg
bV9yZWZZID0gcmVmWTsKIH0KIAogZG91YmxlIEtDYW52YXNNYXJrZXI6OnJlZlgoKSBjb25zdApA
QCAtMTQ4LDExICsxNDksNiBAQCBkb3VibGUgS0NhbnZhc01hcmtlcjo6cmVmWCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fcmVmWDsKIH0KIAotdm9pZCBLQ2FudmFzTWFya2VyOjpzZXRSZWZZKGRvdWJs
ZSByZWZZKQotewotICAgIG1fcmVmWSA9IHJlZlk7Ci19Ci0KIGRvdWJsZSBLQ2FudmFzTWFya2Vy
OjpyZWZZKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yZWZZOwpAQCAtMTgzLDkgKzE3OSwxMCBA
QCBib29sIEtDYW52YXNNYXJrZXI6OnVzZVN0cm9rZVdpZHRoKCkgY29uCiAgICAgcmV0dXJuIG1f
dXNlU3Ryb2tlV2lkdGg7CiB9CiAKLXZvaWQgS0NhbnZhc01hcmtlcjo6c2V0U2NhbGVYKGZsb2F0
IHNjYWxlWCkKK3ZvaWQgS0NhbnZhc01hcmtlcjo6c2V0U2NhbGUoZmxvYXQgc2NhbGVYLCBmbG9h
dCBzY2FsZVkpCiB7CiAgICAgbV9zY2FsZVggPSBzY2FsZVg7CisgICAgbV9zY2FsZVkgPSBzY2Fs
ZVk7CiB9CiAKIGZsb2F0IEtDYW52YXNNYXJrZXI6OnNjYWxlWCgpIGNvbnN0CkBAIC0xOTMsMjEg
KzE5MCwxNiBAQCBmbG9hdCBLQ2FudmFzTWFya2VyOjpzY2FsZVgoKSBjb25zdAogICAgIHJldHVy
biBtX3NjYWxlWDsKIH0KIAotdm9pZCBLQ2FudmFzTWFya2VyOjpzZXRTY2FsZVkoZmxvYXQgc2Nh
bGVZKQotewotICAgIG1fc2NhbGVZID0gc2NhbGVZOwotfQotCiBmbG9hdCBLQ2FudmFzTWFya2Vy
OjpzY2FsZVkoKSBjb25zdAogewogICAgIHJldHVybiBtX3NjYWxlWTsKIH0KIAotdm9pZCBLQ2Fu
dmFzTWFya2VyOjpkcmF3KGNvbnN0IFFSZWN0ICZyZWN0LCBjb25zdCBLQ2FudmFzTWF0cml4ICZv
YmplY3RNYXRyaXgsIGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHN0cm9rZVdpZHRoLCBkb3Vi
bGUgYW5nbGUpCit2b2lkIEtDYW52YXNNYXJrZXI6OmRyYXcoY29uc3QgUVJlY3QgJnJlY3QsIGRv
dWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHN0cm9rZVdpZHRoLCBkb3VibGUgYW5nbGUpCiB7CiAg
ICAgaWYobV9tYXJrZXIpCiAgICAgewotICAgICAgICBLQ2FudmFzTWF0cml4IHRyYW5zbGF0aW9u
ID0gb2JqZWN0TWF0cml4OworICAgICAgICBLQ2FudmFzTWF0cml4IHRyYW5zbGF0aW9uOwogICAg
ICAgICB0cmFuc2xhdGlvbi50cmFuc2xhdGUoeCwgeSk7CiAKICAgICAgICAgS0NhbnZhc01hdHJp
eCByb3RhdGlvbjsKQEAgLTIyMiw4ICsyMTQsMTEgQEAgdm9pZCBLQ2FudmFzTWFya2VyOjpkcmF3
KGNvbnN0IFFSZWN0ICZyZQogCiAgICAgICAgIC8vIEZJWE1FOiBJJ20gbm90IHN1cmUgaWYgdGhp
cyBpcyByaWdodCB5ZXQuLi4KICAgICAgICAgUVBhaW50ZXIgcDsKLSAgICAgICAga2h0bWw6OlJl
bmRlck9iamVjdDo6UGFpbnRJbmZvIGluZm8oJnAsIFFSZWN0KCksIFBhaW50QWN0aW9uRm9yZWdy
b3VuZCwgMCk7CisgICAgICAgIGtodG1sOjpSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyBpbmZvKCZw
LCByZWN0LCBQYWludEFjdGlvbkZvcmVncm91bmQsIDApOworICAgICAgICBtX21hcmtlci0+c2V0
TG9jYWxUcmFuc2Zvcm0ocm90YXRpb24ubXVsdGlwbHkodHJhbnNsYXRpb24pLnFtYXRyaXgoKSk7
CisgICAgICAgIHN0YXRpY19jYXN0PEtDYW52YXNDb250YWluZXIgKj4obV9tYXJrZXIpLT5zZXRE
cmF3c0NvbnRlbnRzKHRydWUpOwogICAgICAgICBtX21hcmtlci0+cGFpbnQoaW5mbywgMCwgMCk7
CisgICAgICAgIHN0YXRpY19jYXN0PEtDYW52YXNDb250YWluZXIgKj4obV9tYXJrZXIpLT5zZXRE
cmF3c0NvbnRlbnRzKGZhbHNlKTsKICAgICB9CiB9CiAKSW5kZXg6IGtjYW52YXMvS0NhbnZhc1Jl
c291cmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52
YXMvS0NhbnZhc1Jlc291cmNlcy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjkKZGlmZiAtdSAt
cCAtcjEuOSBLQ2FudmFzUmVzb3VyY2VzLmgKLS0tIGtjYW52YXMvS0NhbnZhc1Jlc291cmNlcy5o
CTIzIE5vdiAyMDA1IDE1OjE0OjA1IC0wMDAwCTEuOQorKysga2NhbnZhcy9LQ2FudmFzUmVzb3Vy
Y2VzLmgJMjggTm92IDIwMDUgMjA6MzA6MTQgLTAwMDAKQEAgLTk4LDEwICs5OCw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2V0TWFya2VyKGtodG1sOjpSZW5kZXJPYmplY3QgKm1hcmtlcik7CiAg
ICAgCi0gICAgdm9pZCBzZXRSZWZYKGRvdWJsZSByZWZYKTsKLSAgICBkb3VibGUgcmVmWCgpIGNv
bnN0OwotICAgIAotICAgIHZvaWQgc2V0UmVmWShkb3VibGUgcmVmWSk7CisgICAgdm9pZCBzZXRS
ZWYoZG91YmxlIHJlZlgsIGRvdWJsZSByZWZZKTsKKyAgICBkb3VibGUgcmVmWCgpIGNvbnN0OyAg
ICAKICAgICBkb3VibGUgcmVmWSgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgc2V0QW5nbGUoZmxv
YXQgYW5nbGUpOwpAQCAtMTExLDE0ICsxMDksMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNl
U3Ryb2tlV2lkdGgoYm9vbCB1c2VTdHJva2VXaWR0aCA9IHRydWUpOwogICAgIGJvb2wgdXNlU3Ry
b2tlV2lkdGgoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0U2NhbGVYKGZsb2F0IHNjYWxlWCk7Cisg
ICAgdm9pZCBzZXRTY2FsZShmbG9hdCBzY2FsZVgsIGZsb2F0IHNjYWxlWSk7CiAgICAgZmxvYXQg
c2NhbGVYKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNldFNjYWxlWShmbG9hdCBzY2FsZVkpOwogICAg
IGZsb2F0IHNjYWxlWSgpIGNvbnN0OwogCiAgICAgIC8vIERyYXcgb250byB0aGUgY2FudmFzCi0g
ICAgdm9pZCBkcmF3KGNvbnN0IFFSZWN0ICZyZWN0LCBjb25zdCBLQ2FudmFzTWF0cml4ICZvYmpl
Y3RNYXRyaXgsIGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHN0cm9rZVdpZHRoID0gMS4sIGRv
dWJsZSBhbmdsZSA9IDAuMCk7CisgICAgdm9pZCBkcmF3KGNvbnN0IFFSZWN0ICZyZWN0LCBkb3Vi
bGUgeCwgZG91YmxlIHksIGRvdWJsZSBzdHJva2VXaWR0aCA9IDEuLCBkb3VibGUgYW5nbGUgPSAw
LjApOwogCiAgICAgUVRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oUVRleHRTdHJl
YW0gJikgY29uc3Q7IAogcHJpdmF0ZToKSW5kZXg6IGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2Fu
dmFzSXRlbVF1YXJ0ei5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0
L2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzSXRlbVF1YXJ0ei5oLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjQKZGlmZiAtdSAtcCAtcjEuNCBLQ2FudmFzSXRlbVF1YXJ0ei5oCi0tLSBrY2Fu
dmFzL2RldmljZS9xdWFydHovS0NhbnZhc0l0ZW1RdWFydHouaAkyMyBOb3YgMjAwNSAxNToxNDow
NyAtMDAwMAkxLjQKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzSXRlbVF1YXJ0ei5o
CTI4IE5vdiAyMDA1IDIwOjMwOjE0IC0wMDAwCkBAIC00Miw1ICs0Miw1IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoTm9kZUluZm8mIGluZm8sIGludCBfeCwgaW50IF95
LCBpbnQgX3R4LCBpbnQgX3R5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RB
Y3Rpb24gaGl0VGVzdEFjdGlvbik7CiBwcml2YXRlOgotICAgIHZvaWQgZHJhd01hcmtlcnNJZk5l
ZWRlZChjb25zdCBRUmVjdCAmcmVjdCkgY29uc3Q7CisgICAgdm9pZCBkcmF3TWFya2Vyc0lmTmVl
ZGVkKGNvbnN0IFFSZWN0ICZyZWN0LCBDR1BhdGhSZWYgcGF0aCkgY29uc3Q7CiB9OwpJbmRleDog
a2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJdGVtUXVhcnR6Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFz
SXRlbVF1YXJ0ei5tbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS45CmRpZmYgLXUgLXAgLXIxLjkg
S0NhbnZhc0l0ZW1RdWFydHoubW0KLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzSXRl
bVF1YXJ0ei5tbQkyMyBOb3YgMjAwNSAxNToxNDowNyAtMDAwMAkxLjkKKysrIGtjYW52YXMvZGV2
aWNlL3F1YXJ0ei9LQ2FudmFzSXRlbVF1YXJ0ei5tbQkyOCBOb3YgMjAwNSAyMDozMDoxNCAtMDAw
MApAQCAtNDgsMjIgKzQ4LDEzNiBAQCBLQ2FudmFzSXRlbVF1YXJ0ejo6S0NhbnZhc0l0ZW1RdWFy
dHooa2h0CiAJCiB9CiAKLXZvaWQgS0NhbnZhc0l0ZW1RdWFydHo6OmRyYXdNYXJrZXJzSWZOZWVk
ZWQoY29uc3QgUVJlY3QgJnJlY3QpIGNvbnN0Cit0eXBlZGVmIGVudW0geworICAgIFN0YXJ0LAor
ICAgIE1pZCwKKyAgICBFbmQKK30gTWFya2VyVHlwZTsKKworc3RydWN0IE1hcmtlckRhdGEgewor
ICAgIENHUG9pbnQgb3JpZ2luOworICAgIGRvdWJsZSBzdHJva2VXaWR0aDsKKyAgICBDR1BvaW50
IGluc2xvcGVQb2ludHNbMl07CisgICAgQ0dQb2ludCBvdXRzbG9wZVBvaW50c1syXTsKKyAgICBN
YXJrZXJUeXBlIHR5cGU7CisgICAgS0NhbnZhc01hcmtlciAqbWFya2VyOworfTsKKworc3RydWN0
IERyYXdNYXJrZXJzRGF0YSB7CisgICAgRHJhd01hcmtlcnNEYXRhKEtDYW52YXNNYXJrZXIgKnN0
YXJ0TWFya2VyLCBLQ2FudmFzTWFya2VyICptaWRNYXJrZXIsIGRvdWJsZSBzdHJva2VXaWR0aCk7
CisgICAgCisgICAgaW50IGVsZW1lbnRJbmRleDsKKyAgICBNYXJrZXJEYXRhIHByZXZpb3VzTWFy
a2VyRGF0YTsKKyAgICBLQ2FudmFzTWFya2VyICptaWRNYXJrZXI7Cit9OworCitEcmF3TWFya2Vy
c0RhdGE6OkRyYXdNYXJrZXJzRGF0YShLQ2FudmFzTWFya2VyICpzdGFydCwgS0NhbnZhc01hcmtl
ciAqbWlkLCBkb3VibGUgc3Ryb2tlV2lkdGgpCit7CisgICAgZWxlbWVudEluZGV4ID0gMDsKKyAg
ICBtaWRNYXJrZXIgPSBtaWQ7CisgICAgCisgICAgcHJldmlvdXNNYXJrZXJEYXRhLm9yaWdpbiA9
IENHUG9pbnRaZXJvOworICAgIHByZXZpb3VzTWFya2VyRGF0YS5zdHJva2VXaWR0aCA9IHN0cm9r
ZVdpZHRoOworICAgIHByZXZpb3VzTWFya2VyRGF0YS5tYXJrZXIgPSBzdGFydDsKKyAgICBwcmV2
aW91c01hcmtlckRhdGEudHlwZSA9IFN0YXJ0OworfQorCit2b2lkIGRyYXdNYXJrZXJXaXRoRGF0
YShNYXJrZXJEYXRhICZkYXRhKQoreworICAgIGlmICghZGF0YS5tYXJrZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIHN0YXRpYyBjb25zdCBkb3VibGUgZGVnMnJhZCA9IE1fUEkvMTgwLjA7Cisg
ICAgZG91YmxlIGFuZ2xlOworICAgIAorICAgIENHUG9pbnQgaW5zbG9wZUNoYW5nZSA9IENHUG9p
bnRTdWJ0cmFjdFBvaW50cyhkYXRhLmluc2xvcGVQb2ludHNbMV0sIGRhdGEuaW5zbG9wZVBvaW50
c1swXSk7CisgICAgQ0dQb2ludCBvdXRzbG9wZUNoYW5nZSA9IENHUG9pbnRTdWJ0cmFjdFBvaW50
cyhkYXRhLm91dHNsb3BlUG9pbnRzWzFdLCBkYXRhLm91dHNsb3BlUG9pbnRzWzBdKTsKKyAgICAK
KyAgICBkb3VibGUgaW5zbG9wZSA9IGF0YW4yKGluc2xvcGVDaGFuZ2UueSwgaW5zbG9wZUNoYW5n
ZS54KSAvIGRlZzJyYWQ7CisgICAgZG91YmxlIG91dHNsb3BlID0gYXRhbjIob3V0c2xvcGVDaGFu
Z2UueSwgb3V0c2xvcGVDaGFuZ2UueCkgLyBkZWcycmFkOworICAgIAorICAgIGlmIChkYXRhLnR5
cGUgPT0gU3RhcnQpCisgICAgICAgIGFuZ2xlID0gb3V0c2xvcGU7CisgICAgZWxzZSBpZiAoZGF0
YS50eXBlID09IE1pZCkKKyAgICAgICAgYW5nbGUgPSAoaW5zbG9wZSArIG91dHNsb3BlKSAvIDI7
CisgICAgZWxzZSBpZiAoZGF0YS50eXBlID09IEVuZCkKKyAgICAgICAgYW5nbGUgPSBpbnNsb3Bl
OworICAgIAorICAgIGRhdGEubWFya2VyLT5kcmF3KFFSZWN0KCksIGRhdGEub3JpZ2luLngsIGRh
dGEub3JpZ2luLnksIGRhdGEuc3Ryb2tlV2lkdGgsIGFuZ2xlKTsKK30KKworc3RhdGljIGlubGlu
ZSB2b2lkIHVwZGF0ZU1hcmtlckRhdGFGb3JFbGVtZW50KE1hcmtlckRhdGEgJnByZXZpb3VzTWFy
a2VyRGF0YSwgY29uc3QgQ0dQYXRoRWxlbWVudCAqZWxlbWVudCkKK3sKKyAgICBDR1BvaW50ICpw
b2ludHMgPSBlbGVtZW50LT5wb2ludHM7CisgICAgCisgICAgc3dpdGNoIChlbGVtZW50LT50eXBl
KSB7CisgICAgY2FzZSBrQ0dQYXRoRWxlbWVudEFkZFF1YWRDdXJ2ZVRvUG9pbnQ6CisgICAgICAg
IC8vIFRPRE8KKyAgICAgICAgcHJldmlvdXNNYXJrZXJEYXRhLm9yaWdpbiA9IHBvaW50c1sxXTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrQ0dQYXRoRWxlbWVudEFkZEN1cnZlVG9Qb2ludDoK
KyAgICAgICAgcHJldmlvdXNNYXJrZXJEYXRhLmluc2xvcGVQb2ludHNbMF0gPSBwb2ludHNbMV07
CisgICAgICAgIHByZXZpb3VzTWFya2VyRGF0YS5pbnNsb3BlUG9pbnRzWzFdID0gcG9pbnRzWzJd
OworICAgICAgICBwcmV2aW91c01hcmtlckRhdGEub3JpZ2luID0gcG9pbnRzWzJdOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBwcmV2aW91c01hcmtlckRhdGEuaW5zbG9w
ZVBvaW50c1swXSA9IHByZXZpb3VzTWFya2VyRGF0YS5vcmlnaW47CisgICAgICAgIHByZXZpb3Vz
TWFya2VyRGF0YS5pbnNsb3BlUG9pbnRzWzFdID0gcG9pbnRzWzBdOworICAgICAgICBwcmV2aW91
c01hcmtlckRhdGEub3JpZ2luID0gcG9pbnRzWzBdOworICAgICAgICBicmVhazsKKyAgICB9Cit9
CisKK3ZvaWQgRHJhd1N0YXJ0QW5kTWlkTWFya2Vycyh2b2lkICppbmZvLCBjb25zdCBDR1BhdGhF
bGVtZW50ICplbGVtZW50KQoreworICAgIERyYXdNYXJrZXJzRGF0YSAmZGF0YSA9ICooRHJhd01h
cmtlcnNEYXRhICopaW5mbzsKKworICAgIGludCBlbGVtZW50SW5kZXggPSBkYXRhLmVsZW1lbnRJ
bmRleDsKKyAgICBNYXJrZXJEYXRhICZwcmV2aW91c01hcmtlckRhdGEgPSBkYXRhLnByZXZpb3Vz
TWFya2VyRGF0YTsKKworICAgIENHUG9pbnQgKnBvaW50cyA9IGVsZW1lbnQtPnBvaW50czsKKwor
ICAgIC8vIEZpcnN0IHVwZGF0ZSB0aGUgb3V0c2xvcGUgZm9yIHRoZSBwcmV2aW91cyBlbGVtZW50
CisgICAgcHJldmlvdXNNYXJrZXJEYXRhLm91dHNsb3BlUG9pbnRzWzBdID0gcHJldmlvdXNNYXJr
ZXJEYXRhLm9yaWdpbjsKKyAgICBwcmV2aW91c01hcmtlckRhdGEub3V0c2xvcGVQb2ludHNbMV0g
PSBwb2ludHNbMF07CisKKyAgICAvLyBEcmF3IHRoZSBtYXJrZXIgZm9yIHRoZSBwcmV2aW91cyBl
bGVtZW50CisgICAgaWYgKGVsZW1lbnRJbmRleCAhPSAwKQorICAgICAgICBkcmF3TWFya2VyV2l0
aERhdGEocHJldmlvdXNNYXJrZXJEYXRhKTsKKworICAgIC8vIFVwZGF0ZSBvdXIgbWFya2VyIGRh
dGEgZm9yIHRoaXMgZWxlbWVudAorICAgIHVwZGF0ZU1hcmtlckRhdGFGb3JFbGVtZW50KHByZXZp
b3VzTWFya2VyRGF0YSwgZWxlbWVudCk7CisKKyAgICBpZiAoZWxlbWVudEluZGV4ID09IDEpIHsK
KyAgICAgICAgLy8gQWZ0ZXIgZHJhd2luZyB0aGUgc3RhcnQgbWFya2VyLCBzd2l0Y2ggdG8gZHJh
d2luZyBtaWQgbWFya2VycworICAgICAgICBwcmV2aW91c01hcmtlckRhdGEubWFya2VyID0gZGF0
YS5taWRNYXJrZXI7CisgICAgICAgIHByZXZpb3VzTWFya2VyRGF0YS50eXBlID0gTWlkOworICAg
IH0KKworICAgIGRhdGEuZWxlbWVudEluZGV4Kys7Cit9CisKK3ZvaWQgS0NhbnZhc0l0ZW1RdWFy
dHo6OmRyYXdNYXJrZXJzSWZOZWVkZWQoY29uc3QgUVJlY3QgJnJlY3QsIENHUGF0aFJlZiBwYXRo
KSBjb25zdAogewogICAgIEtET006OkRvY3VtZW50SW1wbCAqZG9jID0gZG9jdW1lbnQoKTsKICAg
ICBLU1ZHOjpTVkdSZW5kZXJTdHlsZSAqc3ZnU3R5bGUgPSBzdHlsZSgpLT5zdmdTdHlsZSgpOwog
Ci0gICAgLy8gZmluZCB0aGUgc3RhcnQgdmVydGljaWVzLi4uCi0gICAgaWYoS0NhbnZhc01hcmtl
ciAqbWFya2VyID0gZ2V0TWFya2VyQnlJZChkb2MsIHN2Z1N0eWxlLT5zdGFydE1hcmtlcigpLm1p
ZCgxKSkpCi0gICAgICAgIG1hcmtlci0+ZHJhdyhyZWN0LCBsb2NhbFRyYW5zZm9ybSgpLCAwLCAw
LCAwKTsKLQotICAgIC8vIGZpbmQgdGhlIG1pZGRsZSB2ZXJ0aWNpZXMuLi4gCi0gICAgaWYoS0Nh
bnZhc01hcmtlciAqbWFya2VyID0gZ2V0TWFya2VyQnlJZChkb2MsIHN2Z1N0eWxlLT5taWRNYXJr
ZXIoKS5taWQoMSkpKQotICAgICAgICBtYXJrZXItPmRyYXcocmVjdCwgbG9jYWxUcmFuc2Zvcm0o
KSwgMCwgMCwgMCk7Ci0gICAgCi0gICAgLy8gZmluZCB0aGUgZW5kIHZlcnRpY2llcy4uLgotICAg
IGlmKEtDYW52YXNNYXJrZXIgKm1hcmtlciA9IGdldE1hcmtlckJ5SWQoZG9jLCBzdmdTdHlsZS0+
ZW5kTWFya2VyKCkubWlkKDEpKSkKLSAgICAgICAgbWFya2VyLT5kcmF3KHJlY3QsIGxvY2FsVHJh
bnNmb3JtKCksIDAsIDAsIDApOworICAgIEtDYW52YXNNYXJrZXIgKnN0YXJ0TWFya2VyID0gZ2V0
TWFya2VyQnlJZChkb2MsIHN2Z1N0eWxlLT5zdGFydE1hcmtlcigpLm1pZCgxKSk7CisgICAgS0Nh
bnZhc01hcmtlciAqbWlkTWFya2VyID0gZ2V0TWFya2VyQnlJZChkb2MsIHN2Z1N0eWxlLT5taWRN
YXJrZXIoKS5taWQoMSkpOworICAgIEtDYW52YXNNYXJrZXIgKmVuZE1hcmtlciA9IGdldE1hcmtl
ckJ5SWQoZG9jLCBzdmdTdHlsZS0+ZW5kTWFya2VyKCkubWlkKDEpKTsKKyAgICAKKyAgICBpZiAo
IXN0YXJ0TWFya2VyICYmICFtaWRNYXJrZXIgJiYgIWVuZE1hcmtlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgZG91YmxlIHN0cm9rZVdpZHRoID0gY2FudmFzU3R5bGUoKS0+aXNTdHJva2VkKCkg
PyBjYW52YXNTdHlsZSgpLT5zdHJva2VQYWludGVyKCktPnN0cm9rZVdpZHRoKCkgOiAxOworCisg
ICAgRHJhd01hcmtlcnNEYXRhIGRhdGEoc3RhcnRNYXJrZXIsIG1pZE1hcmtlciwgc3Ryb2tlV2lk
dGgpOworCisgICAgQ0dQYXRoQXBwbHkocGF0aCwgJmRhdGEsIERyYXdTdGFydEFuZE1pZE1hcmtl
cnMpOworCisgICAgZGF0YS5wcmV2aW91c01hcmtlckRhdGEubWFya2VyID0gZW5kTWFya2VyOwor
ICAgIGRhdGEucHJldmlvdXNNYXJrZXJEYXRhLnR5cGUgPSBFbmQ7CisgICAgZHJhd01hcmtlcldp
dGhEYXRhKGRhdGEucHJldmlvdXNNYXJrZXJEYXRhKTsKIH0KIAogdm9pZCBLQ2FudmFzSXRlbVF1
YXJ0ejo6cGFpbnQoUGFpbnRJbmZvICZwYWludEluZm8sIGludCBwYXJlbnRYLCBpbnQgcGFyZW50
WSkKQEAgLTExMiwxNCArMjI2LDE0IEBAIHZvaWQgS0NhbnZhc0l0ZW1RdWFydHo6OnBhaW50KFBh
aW50SW5mbyAKICAgICAgICAgY2FudmFzU3R5bGUoKS0+c3Ryb2tlUGFpbnRlcigpLT5kcmF3KHF1
YXJ0ekRldmljZS0+Y3VycmVudENvbnRleHQoKSwgYXJncyk7CiAgICAgfQogCi0gICAgZHJhd01h
cmtlcnNJZk5lZWRlZChkaXJ0eVJlY3QpOworICAgIGRyYXdNYXJrZXJzSWZOZWVkZWQoZGlydHlS
ZWN0LCBjZ1BhdGgpOwogCiAgICAgLy8gYWN0dWFsbHkgYXBwbHkgdGhlIGZpbHRlcgogICAgIGlm
IChmaWx0ZXIpIHsKICAgICAgICAgZmlsdGVyLT5hcHBseUZpbHRlcihxdWFydHpEZXZpY2UsIHJl
bGF0aXZlQkJveCh0cnVlKSk7CiAgICAgICAgIGNvbnRleHQgPSBxdWFydHpEZXZpY2UtPmN1cnJl
bnRDR0NvbnRleHQoKTsKICAgICB9Ci0gICAgCisKICAgICAvLyByZXN0b3JlIGRyYXdpbmcgc3Rh
dGUKICAgICBwYWludEluZm8ucC0+cmVzdG9yZSgpOwogICAgIHF1YXJ0ekRldmljZS0+cG9wQ29u
dGV4dCgpOwpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L1F1YXJ0elN1cHBvcnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rY2FudmFzL2RldmljZS9xdWFy
dHovUXVhcnR6U3VwcG9ydC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMKZGlmZiAtdSAtcCAt
cjEuMyBRdWFydHpTdXBwb3J0LmgKLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9RdWFydHpTdXBw
b3J0LmgJMjEgTm92IDIwMDUgMDg6Mjk6MTUgLTAwMDAJMS4zCisrKyBrY2FudmFzL2RldmljZS9x
dWFydHovUXVhcnR6U3VwcG9ydC5oCTI4IE5vdiAyMDA1IDIwOjMwOjE0IC0wMDAwCkBAIC01OSwz
ICs1OSw1IEBAIHN0YXRpYyBpbmxpbmUgQ0dMaW5lSm9pbiBDR0xpbmVKb2luRnJvbUsKICAgICAK
ICAgICByZXR1cm4ga0NHTGluZUpvaW5NaXRlcjsKIH0KKworc3RhdGljIGlubGluZSBDR1BvaW50
IENHUG9pbnRTdWJ0cmFjdFBvaW50cyhDR1BvaW50IGEsIENHUG9pbnQgYikgeyByZXR1cm4gQ0dQ
b2ludE1ha2UoYS54IC0gYi54LCBhLnkgLSBiLnkpOyB9CkluZGV4OiBrY2FudmFzL2RldmljZS9x
dWFydHovUXVhcnR6U3VwcG9ydC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZH
U3VwcG9ydC9rY2FudmFzL2RldmljZS9xdWFydHovUXVhcnR6U3VwcG9ydC5tbSx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS41CmRpZmYgLXUgLXAgLXIxLjUgUXVhcnR6U3VwcG9ydC5tbQotLS0ga2Nh
bnZhcy9kZXZpY2UvcXVhcnR6L1F1YXJ0elN1cHBvcnQubW0JMjEgTm92IDIwMDUgMDg6Mjk6MTYg
LTAwMDAJMS41CisrKyBrY2FudmFzL2RldmljZS9xdWFydHovUXVhcnR6U3VwcG9ydC5tbQkyOCBO
b3YgMjAwNSAyMDozMDoxNCAtMDAwMApAQCAtMTQ4LDUgKzE0OCw0IEBAIENGU3RyaW5nUmVmIENG
U3RyaW5nRnJvbUNHUGF0aChDR1BhdGhSZWYKICAgICBDR1BhdGhBcHBseShwYXRoLCBzdHJpbmcs
IENHUGF0aFRvQ0ZTdHJpbmdBcHBsaWVyRnVuY3Rpb24pOwogCiAgICAgcmV0dXJuIHN0cmluZzsK
LX0KLQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IGtzdmcyL21pc2MvS0Nh
bnZhc1JlbmRlcmluZ1N0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZH
U3VwcG9ydC9rc3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHlsZS5jcHAsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuMTAKZGlmZiAtdSAtcCAtcjEuMTAgS0NhbnZhc1JlbmRlcmluZ1N0eWxlLmNw
cAotLS0ga3N2ZzIvbWlzYy9LQ2FudmFzUmVuZGVyaW5nU3R5bGUuY3BwCTIxIE5vdiAyMDA1IDA4
OjI5OjMxIC0wMDAwCTEuMTAKKysrIGtzdmcyL21pc2MvS0NhbnZhc1JlbmRlcmluZ1N0eWxlLmNw
cAkyOCBOb3YgMjAwNSAyMDozMDoxNSAtMDAwMApAQCAtMTEzLDYgKzExMyw4IEBAIHZvaWQgS0Nh
bnZhc1JlbmRlcmluZ1N0eWxlOjp1cGRhdGVTdHJva2UKIAogICAgIFNWR1BhaW50SW1wbCAqc3Ry
b2tlID0gbV9zdHlsZS0+c3ZnU3R5bGUoKS0+c3Ryb2tlUGFpbnQoKTsKIAorICAgIHN0cm9rZVBh
aW50ZXIoKS0+c2V0U3Ryb2tlV2lkdGgoY3NzUHJpbWl0aXZlVG9MZW5ndGgoaXRlbSwgbV9zdHls
ZS0+c3ZnU3R5bGUoKS0+c3Ryb2tlV2lkdGgoKSwgMS4wKSk7CisKICAgICBpZiAoIXN0cm9rZSB8
fCBzdHJva2UtPnBhaW50VHlwZSgpID09IFNWR19QQUlOVFRZUEVfTk9ORSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0xNDAsNyArMTQyLDYgQEAgdm9pZCBLQ2FudmFzUmVuZGVyaW5nU3R5bGU6OnVw
ZGF0ZVN0cm9rZQogICAgIH0KIAogICAgIHN0cm9rZVBhaW50ZXIoKS0+c2V0T3BhY2l0eShtX3N0
eWxlLT5zdmdTdHlsZSgpLT5zdHJva2VPcGFjaXR5KCkpOwotICAgIHN0cm9rZVBhaW50ZXIoKS0+
c2V0U3Ryb2tlV2lkdGgoY3NzUHJpbWl0aXZlVG9MZW5ndGgoaXRlbSwgbV9zdHlsZS0+c3ZnU3R5
bGUoKS0+c3Ryb2tlV2lkdGgoKSwgMS4wKSk7CiAKICAgICBLRE9NOjpDU1NWYWx1ZUxpc3RJbXBs
ICpkYXNoZXMgPSBtX3N0eWxlLT5zdmdTdHlsZSgpLT5zdHJva2VEYXNoQXJyYXkoKTsKICAgICBp
ZihkYXNoZXMpCkluZGV4OiBrc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdNYXJrZXJF
bGVtZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOApkaWZmIC11IC1wIC1yMS44
IFNWR01hcmtlckVsZW1lbnRJbXBsLmNwcAotLS0ga3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnRJ
bXBsLmNwcAkyMyBOb3YgMjAwNSAxNToxNDowOSAtMDAwMAkxLjgKKysrIGtzdmcyL3N2Zy9TVkdN
YXJrZXJFbGVtZW50SW1wbC5jcHAJMjggTm92IDIwMDUgMjA6MzA6MTUgLTAwMDAKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKICNpbmNsdWRlICJTVkdBbmdsZUltcGwu
aCIKICNpbmNsdWRlICJTVkdMZW5ndGhJbXBsLmgiCisjaW5jbHVkZSAiU1ZHTWF0cml4SW1wbC5o
IgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnRJbXBsLmgiCiAjaW5jbHVkZSAiU1ZHRml0VG9WaWV3
Qm94SW1wbC5oIgogI2luY2x1ZGUgIlNWR01hcmtlckVsZW1lbnRJbXBsLmgiCkBAIC03NSw3ICs3
NiwxMSBAQCBTVkdNYXJrZXJFbGVtZW50SW1wbDo6flNWR01hcmtlckVsZW1lbnRJCiB2b2lkIFNW
R01hcmtlckVsZW1lbnRJbXBsOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShLRE9NOjpNYXBwZWRBdHRy
aWJ1dGVJbXBsICphdHRyKQogewogICAgIGNvbnN0IEtET006OkF0b21pY1N0cmluZyYgdmFsdWUg
PSBhdHRyLT52YWx1ZSgpOwotICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJlZlhB
dHRyKQorICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0cikg
eworICAgICAgICBpZihLRE9NOjpET01TdHJpbmcodmFsdWUpID09ICJ1c2VyU3BhY2VPblVzZSIp
CisgICAgICAgICAgICBtYXJrZXJVbml0cygpLT5zZXRCYXNlVmFsKFNWR19NQVJLRVJVTklUU19V
U0VSU1BBQ0VPTlVTRSk7CisgICAgfQorICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdO
YW1lczo6cmVmWEF0dHIpCiAgICAgICAgIHJlZlgoKS0+YmFzZVZhbCgpLT5zZXRWYWx1ZUFzU3Ry
aW5nKHZhbHVlLmltcGwoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVz
OjpyZWZZQXR0cikKICAgICAgICAgcmVmWSgpLT5iYXNlVmFsKCktPnNldFZhbHVlQXNTdHJpbmco
dmFsdWUuaW1wbCgpKTsKQEAgLTE3Nyw4ICsxODIsMTQgQEAgS0NhbnZhc01hcmtlciAqU1ZHTWFy
a2VyRWxlbWVudEltcGw6OmNhbgogICAgIGVsc2UKICAgICAgICAgbV9tYXJrZXItPnNldEF1dG9B
bmdsZSgpOwogCi0gICAgbV9tYXJrZXItPnNldFJlZlgocmVmWCgpLT5iYXNlVmFsKCktPnZhbHVl
KCkpOwotICAgIG1fbWFya2VyLT5zZXRSZWZZKHJlZlkoKS0+YmFzZVZhbCgpLT52YWx1ZSgpKTsK
KyAgICBtX21hcmtlci0+c2V0UmVmKHJlZlgoKS0+YmFzZVZhbCgpLT52YWx1ZSgpLCByZWZZKCkt
PmJhc2VWYWwoKS0+dmFsdWUoKSk7CisgICAgCisgICAgbV9tYXJrZXItPnNldFVzZVN0cm9rZVdp
ZHRoKG1hcmtlclVuaXRzKCktPmJhc2VWYWwoKSA9PSBTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lE
VEgpOworICAgIGRvdWJsZSB3ID0gbWFya2VyV2lkdGgoKS0+YmFzZVZhbCgpLT52YWx1ZSgpOwor
ICAgIGRvdWJsZSBoID0gbWFya2VySGVpZ2h0KCktPmJhc2VWYWwoKS0+dmFsdWUoKTsKKyAgICBT
aGFyZWRQdHI8U1ZHTWF0cml4SW1wbD4gdmlld0JveCA9IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0o
dywgaCk7CisgICAgbV9tYXJrZXItPnNldFNjYWxlKHZpZXdCb3gtPnFtYXRyaXgoKS5tMTEoKSwg
dmlld0JveC0+cW1hdHJpeCgpLm0yMigpKTsKKyAgICAKICAgICByZXR1cm4gbV9tYXJrZXI7CiB9
CiAK
</data>
<flag name="review"
          id="909"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>