<?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>75792</bug_id>
          
          <creation_ts>2012-01-07 23:52:22 -0800</creation_ts>
          <short_desc>Correct the bounding rect estimations for stroking text in canvas</short_desc>
          <delta_ts>2012-04-19 15:08:13 -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>Canvas</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>mitz</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>531728</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-01-07 23:52:22 -0800</bug_when>
    <thetext>CanvasRenderingContext2D::drawTextInternal made the bounding rect as big as canvas&apos;s size for invalidate.
It is because miters on stroked text may cause the rect so big.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531729</commentid>
    <comment_count>1</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-01-07 23:53:16 -0800</bug_when>
    <thetext>This patch calculates the rect using the more precise way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531730</commentid>
    <comment_count>2</comment_count>
      <attachid>121571</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-01-07 23:55:41 -0800</bug_when>
    <thetext>Created attachment 121571
patch

This patch calculates the rect using the more precise way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531734</commentid>
    <comment_count>3</comment_count>
      <attachid>121572</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-01-08 01:30:03 -0800</bug_when>
    <thetext>Created attachment 121572
patch v.2

This patch can handle stroke(), also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531735</commentid>
    <comment_count>4</comment_count>
      <attachid>121573</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-01-08 01:32:29 -0800</bug_when>
    <thetext>Created attachment 121573
patch v.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554187</commentid>
    <comment_count>5</comment_count>
      <attachid>121573</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-10 10:35:34 -0800</bug_when>
    <thetext>Comment on attachment 121573
patch v.3

View in context: https://bugs.webkit.org/attachment.cgi?id=121573&amp;action=review

How do we test this?  r- for lack of test.

&gt; Source/WebCore/ChangeLog:3
&gt; +        Canvas more precisely makes the bounding rect for strok rendering.

stroke</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557121</commentid>
    <comment_count>6</comment_count>
      <attachid>127154</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-15 03:50:38 -0800</bug_when>
    <thetext>Created attachment 127154
patch v.2

I attached layout test for stroke with cap and join.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557364</commentid>
    <comment_count>7</comment_count>
      <attachid>127154</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-15 10:24:31 -0800</bug_when>
    <thetext>Comment on attachment 127154
patch v.2

View in context: https://bugs.webkit.org/attachment.cgi?id=127154&amp;action=review

&gt; LayoutTests/fast/canvas/script-tests/canvas-strokePath-cap-join.js:2
&gt; +

Looks like this test could use layoutTestController.dumpAsText(), see: http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:2163
&gt; +    // Fast approximation of the stroke&apos;s bounding rect.

I noticed this comment was just copied over from above. Is it still true? How much faster is it than strokeBoundingRect?

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.h:310
&gt; +    void inflateStrokeRect(FloatRect&amp;) const;

Should this functionality live here? It doesn&apos;t sound all that specific to canvas to me if it&apos;s just estimating the bounding rect of a section of stroked text. Don&apos;t we have some set of &quot;text metrics&quot; functions elsewhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557366</commentid>
    <comment_count>8</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2012-02-15 10:27:44 -0800</bug_when>
    <thetext>It would be great if you posted a standalone testcase so that I don&apos;t have to apply your patch to try it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558029</commentid>
    <comment_count>9</comment_count>
      <attachid>127154</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-16 02:52:42 -0800</bug_when>
    <thetext>Comment on attachment 127154
patch v.2

View in context: https://bugs.webkit.org/attachment.cgi?id=127154&amp;action=review

&gt;&gt; LayoutTests/fast/canvas/script-tests/canvas-strokePath-cap-join.js:2
&gt;&gt; +
&gt; 
&gt; Looks like this test could use layoutTestController.dumpAsText(), see: http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree

canvas-strokePath-cap-join.html has &lt;script src=&quot;../js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
And then js-test-pre.js has layoutTestController.dumpAsText(self.enablePixelTesting);
I used canvas-strokePath-shadow.html as template for this layout test.

&gt;&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:2163
&gt;&gt; +    // Fast approximation of the stroke&apos;s bounding rect.
&gt; 
&gt; I noticed this comment was just copied over from above. Is it still true? How much faster is it than strokeBoundingRect?

Yes, it is true.
I think more than 10 times faster than skia and qt implementation.
Skia draws it and measure it.
Qt creates stroke path and call Path::boundingRect().

&gt;&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.h:310
&gt;&gt; +    void inflateStrokeRect(FloatRect&amp;) const;
&gt; 
&gt; Should this functionality live here? It doesn&apos;t sound all that specific to canvas to me if it&apos;s just estimating the bounding rect of a section of stroked text. Don&apos;t we have some set of &quot;text metrics&quot; functions elsewhere?

I thought it is better to make Path::fastStrokeBoundingRect() similar to Path::fastBoundingRect().
However, Path does not know thickness, join, and cap, and strangely GraphicsContext knows those.

On the other hands, inflateStrokeRect(FloatRect&amp;) needs to know CanvasRenderingContext2d::state.
It is why I put inflateStrokeRect(FloatRect&amp;) as member method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558034</commentid>
    <comment_count>10</comment_count>
      <attachid>127346</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-16 03:00:34 -0800</bug_when>
    <thetext>Created attachment 127346
patch v.5

Separate a layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558035</commentid>
    <comment_count>11</comment_count>
      <attachid>127347</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-16 03:01:06 -0800</bug_when>
    <thetext>Created attachment 127347
a layout test for patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558036</commentid>
    <comment_count>12</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-02-16 03:02:38 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; It would be great if you posted a standalone testcase so that I don&apos;t have to apply your patch to try it out.

Ok, I separated a patch and a layout test.
Do I understand what you mean?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605912</commentid>
    <comment_count>13</comment_count>
      <attachid>127346</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-04-19 14:30:13 -0700</bug_when>
    <thetext>Comment on attachment 127346
patch v.5

Please put the code change and the test into the same patch in future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605914</commentid>
    <comment_count>14</comment_count>
      <attachid>127347</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-04-19 14:31:04 -0700</bug_when>
    <thetext>Comment on attachment 127347
a layout test for patch

I&apos;m pretty sure there&apos;s a canvas repaint test that will need new pixel results after this change too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605970</commentid>
    <comment_count>15</comment_count>
      <attachid>127346</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-19 15:05:53 -0700</bug_when>
    <thetext>Comment on attachment 127346
patch v.5

Clearing flags on attachment: 127346

Committed r114679: &lt;http://trac.webkit.org/changeset/114679&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605971</commentid>
    <comment_count>16</comment_count>
      <attachid>127347</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-19 15:08:07 -0700</bug_when>
    <thetext>Comment on attachment 127347
a layout test for patch

Clearing flags on attachment: 127347

Committed r114680: &lt;http://trac.webkit.org/changeset/114680&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605972</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-19 15:08:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121571</attachid>
            <date>2012-01-07 23:55:41 -0800</date>
            <delta_ts>2012-01-08 01:30:03 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Canvas-makes-the-bounding-rect-big-enough-for-stroke.patch</filename>
            <type>text/plain</type>
            <size>4054</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSA2NTNjMmIzNDcyM2MzZTEzM2E5NjUwNDE1YTk1NWVjNTQ5YmRhMzA0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IEZyaSwgNiBKYW4gMjAxMiAxODo0MzowMyArMDkwMApTdWJqZWN0OiBbUEFUQ0hd
IENhbnZhcyBtYWtlcyB0aGUgYm91bmRpbmcgcmVjdCBiaWcgZW5vdWdoIGZvciBzdHJva2VkIHRl
eHQuCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3OTIKCi0tLQog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEy
ICsrKysrKysrKysKIC4uLi9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
ICAgICAgIHwgICAyMyArKysrKysrKysrKystLS0tLS0tCiAuLi4vV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCB8ICAgIDIgKwogMyBmaWxlcyBjaGFuZ2VkLCAy
OCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZjQ2MjEyLi4y
MzcxOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMDcgIEh1YW5nIERv
bmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ2FudmFzIG1ha2Vz
IHRoZSBib3VuZGluZyByZWN0IGJpZyBlbm91Z2ggZm9yIHN0cm9rZWQgdGV4dC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzkyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6aW5mbGF0ZVN0cm9rZVJlY3QpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorCiAyMDExLTEyLTIyICBKb3NlcGgg
UGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IERhdGUg
YW5kIFRpbWUgSW5wdXQgVmFsdWUgU2FuaXRpemF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA5NDhj
MjE5Li42Y2RhMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTIxNjAsMTIgKzIxNjAsMTEgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5n
JiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICBGbG9hdFJlY3QgdGV4dFJlY3QgPSBGbG9hdFJlY3Qo
bG9jYXRpb24ueCgpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkgLyAyLCBsb2NhdGlvbi55KCkgLSBm
b250TWV0cmljcy5hc2NlbnQoKSAtIGZvbnRNZXRyaWNzLmxpbmVHYXAoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggKyBmb250TWV0cmljcy5oZWlnaHQoKSwgZm9u
dE1ldHJpY3MubGluZVNwYWNpbmcoKSk7CiAgICAgaWYgKCFmaWxsKQotICAgICAgICB0ZXh0UmVj
dC5pbmZsYXRlKGMtPnN0cm9rZVRoaWNrbmVzcygpIC8gMik7CisgICAgICAgIGluZmxhdGVTdHJv
a2VSZWN0KHRleHRSZWN0KTsKIAogI2lmIFVTRShDRykKICAgICBDYW52YXNTdHlsZSogZHJhd1N0
eWxlID0gZmlsbCA/IHN0YXRlKCkubV9maWxsU3R5bGUuZ2V0KCkgOiBzdGF0ZSgpLm1fc3Ryb2tl
U3R5bGUuZ2V0KCk7CiAgICAgaWYgKGRyYXdTdHlsZS0+Y2FudmFzR3JhZGllbnQoKSB8fCBkcmF3
U3R5bGUtPmNhbnZhc1BhdHRlcm4oKSkgewotICAgICAgICAvLyBGSVhNRTogVGhlIHJlY3QgaXMg
bm90IGJpZyBlbm91Z2ggZm9yIG1pdGVycyBvbiBzdHJva2VkIHRleHQuCiAgICAgICAgIEludFJl
Y3QgbWFza1JlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHRleHRSZWN0KTsKIAogI2lmIFVTRShJT1NV
UkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCkBAIC0yMjIwLDE5ICsyMjE5LDI1IEBAIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYg
dGV4dCwgZmxvYXQgeCwgZmxvCiAgICAgfSBlbHNlCiAgICAgICAgIGMtPmRyYXdCaWRpVGV4dChm
b250LCB0ZXh0UnVuLCBsb2NhdGlvbik7CiAKLSAgICBpZiAoZmlsbCkKLSAgICAgICAgZGlkRHJh
dyh0ZXh0UmVjdCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIFdoZW4gc3Ryb2tpbmcgdGV4dCwg
cG9pbnR5IG1pdGVycyBjYW4gZXh0ZW5kIG91dHNpZGUgb2YgdGV4dFJlY3QsIHNvIHdlCi0gICAg
ICAgIC8vIHB1bnQgYW5kIGRpcnR5IHRoZSB3aG9sZSBjYW52YXMuCi0gICAgICAgIGRpZERyYXco
RmxvYXRSZWN0KDAsIDAsIGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpKTsK
LSAgICB9CisgICAgZGlkRHJhdyh0ZXh0UmVjdCk7CiAKICNpZiBQTEFURk9STShRVCkKICAgICBG
b250OjpzZXRDb2RlUGF0aChvbGRDb2RlUGF0aCk7CiAjZW5kaWYKIH0KIAordm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmluZmxhdGVTdHJva2VSZWN0KEZsb2F0UmVjdCYgcmVjdCkgY29u
c3QKK3sKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQgcm9vdDIgPSBzcXJ0KDIpOworICAgIGZsb2F0
IGRlbHRhID0gc3RhdGUoKS5tX2xpbmVXaWR0aCAvIDI7CisgICAgaWYgKHN0YXRlKCkubV9saW5l
Q2FwID09IFNxdWFyZUNhcCkKKyAgICAgICAgZGVsdGEgKj0gcm9vdDI7CisgICAgZWxzZSBpZiAo
c3RhdGUoKS5tX2xpbmVKb2luID09IE1pdGVySm9pbikKKyAgICAgICAgZGVsdGEgKj0gc3RhdGUo
KS5tX21pdGVyTGltaXQ7CisKKyAgICByZWN0LmluZmxhdGUoZGVsdGEpOworfQorCiBjb25zdCBG
b250JiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFjY2Vzc0ZvbnQoKQogewogICAgIGNhbnZh
cygpLT5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IDRi
M2RmMTUuLjVjZmQ1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC0zMDYsNiArMzA2LDggQEAgcHJpdmF0ZToK
ICAgICBQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wb3NpdGluZ0J1ZmZlcihjb25z
dCBJbnRSZWN0Jik7CiAgICAgdm9pZCBjb21wb3NpdGVCdWZmZXIoSW1hZ2VCdWZmZXIqLCBjb25z
dCBJbnRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IpOwogCisgICAgdm9pZCBpbmZsYXRlU3Ryb2tl
UmVjdChGbG9hdFJlY3QmKSBjb25zdDsKKwogICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgZnVs
bENhbnZhc0NvbXBvc2l0ZWRGaWxsKGNvbnN0IFQmKTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPiB2
b2lkIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQqLCBDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKLS0gCjEu
Ny41LjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121572</attachid>
            <date>2012-01-08 01:30:03 -0800</date>
            <delta_ts>2012-01-08 01:32:29 -0800</delta_ts>
            <desc>patch v.2</desc>
            <filename>0001-Canvas-more-precisely-makes-the-bounding-rect-for-st.patch</filename>
            <type>text/plain</type>
            <size>4800</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSAxZjQzY2RhNmQ0NDJiYmI2YzNhZThmMzVmMGM3NTZmNGJhYTdlNmNmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IEZyaSwgNiBKYW4gMjAxMiAxODo0MzowMyArMDkwMApTdWJqZWN0OiBbUEFUQ0hd
IENhbnZhcyBtb3JlIHByZWNpc2VseSBtYWtlcyB0aGUgYm91bmRpbmcgcmVjdCBmb3Igc3Ryb2sK
IHJlbmRlcmluZy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1Nzky
CgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxMyArKysrKysrKwogLi4uL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAgICAgICAgfCAgIDMxICsrKysrKysrKysrLS0tLS0tLS0KIC4uLi9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIHwgICAgMiArCiAzIGZpbGVzIGNoYW5n
ZWQsIDMzIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3MmI2
YjE3Li5hMzI0MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEtMDggIEh1
YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ2FudmFz
IG1vcmUgcHJlY2lzZWx5IG1ha2VzIHRoZSBib3VuZGluZyByZWN0IGZvciBzdHJvayByZW5kZXJp
bmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc5
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmluZmxhdGVTdHJva2VSZWN0KToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKwogMjAxMi0wMS0w
NyAgQW5kcmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQXR0
ZW1wdCB0byByZWdlbmVyYXRlIGJpbmRpbmdzIG9uIHRoZSBXaW5kb3dzIGJvdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCmluZGV4IDk0OGMyMTkuLjg4NTBlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtOTc0LDEwICs5
NzQsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlKCkKIAogICAgIGlm
ICghbV9wYXRoLmlzRW1wdHkoKSkgewogICAgICAgICBGbG9hdFJlY3QgZGlydHlSZWN0ID0gbV9w
YXRoLmZhc3RCb3VuZGluZ1JlY3QoKTsKLSAgICAgICAgLy8gRmFzdCBhcHByb3hpbWF0aW9uIG9m
IHRoZSBzdHJva2UncyBib3VuZGluZyByZWN0LgotICAgICAgICAvLyBUaGlzIHlpZWxkcyBhIHNs
aWdodGx5IG92ZXJzaXplZCByZWN0IGJ1dCBpcyB2ZXJ5IGZhc3QKLSAgICAgICAgLy8gY29tcGFy
ZWQgdG8gUGF0aDo6c3Ryb2tlQm91bmRpbmdSZWN0KCkuCi0gICAgICAgIGRpcnR5UmVjdC5pbmZs
YXRlKHN0YXRlKCkubV9taXRlckxpbWl0ICsgc3RhdGUoKS5tX2xpbmVXaWR0aCk7CisgICAgICAg
IGluZmxhdGVTdHJva2VSZWN0KGRpcnR5UmVjdCk7CiAKICAgICAgICAgYy0+c3Ryb2tlUGF0aCht
X3BhdGgpOwogICAgICAgICBkaWREcmF3KGRpcnR5UmVjdCk7CkBAIC0yMTYwLDEyICsyMTU3LDEx
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0
IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAgICAgRmxvYXRSZWN0IHRleHRSZWN0ID0gRmxv
YXRSZWN0KGxvY2F0aW9uLngoKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpIC8gMiwgbG9jYXRpb24u
eSgpIC0gZm9udE1ldHJpY3MuYXNjZW50KCkgLSBmb250TWV0cmljcy5saW5lR2FwKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoICsgZm9udE1ldHJpY3MuaGVpZ2h0
KCksIGZvbnRNZXRyaWNzLmxpbmVTcGFjaW5nKCkpOwogICAgIGlmICghZmlsbCkKLSAgICAgICAg
dGV4dFJlY3QuaW5mbGF0ZShjLT5zdHJva2VUaGlja25lc3MoKSAvIDIpOworICAgICAgICBpbmZs
YXRlU3Ryb2tlUmVjdCh0ZXh0UmVjdCk7CiAKICNpZiBVU0UoQ0cpCiAgICAgQ2FudmFzU3R5bGUq
IGRyYXdTdHlsZSA9IGZpbGwgPyBzdGF0ZSgpLm1fZmlsbFN0eWxlLmdldCgpIDogc3RhdGUoKS5t
X3N0cm9rZVN0eWxlLmdldCgpOwogICAgIGlmIChkcmF3U3R5bGUtPmNhbnZhc0dyYWRpZW50KCkg
fHwgZHJhd1N0eWxlLT5jYW52YXNQYXR0ZXJuKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoZSBy
ZWN0IGlzIG5vdCBiaWcgZW5vdWdoIGZvciBtaXRlcnMgb24gc3Ryb2tlZCB0ZXh0LgogICAgICAg
ICBJbnRSZWN0IG1hc2tSZWN0ID0gZW5jbG9zaW5nSW50UmVjdCh0ZXh0UmVjdCk7CiAKICNpZiBV
U0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQpAQCAtMjIyMCwxOSArMjIxNiwyOCBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBT
dHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgIH0gZWxzZQogICAgICAgICBjLT5kcmF3Qmlk
aVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24pOwogCi0gICAgaWYgKGZpbGwpCi0gICAgICAg
IGRpZERyYXcodGV4dFJlY3QpOwotICAgIGVsc2UgewotICAgICAgICAvLyBXaGVuIHN0cm9raW5n
IHRleHQsIHBvaW50eSBtaXRlcnMgY2FuIGV4dGVuZCBvdXRzaWRlIG9mIHRleHRSZWN0LCBzbyB3
ZQotICAgICAgICAvLyBwdW50IGFuZCBkaXJ0eSB0aGUgd2hvbGUgY2FudmFzLgotICAgICAgICBk
aWREcmF3KEZsb2F0UmVjdCgwLCAwLCBjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdo
dCgpKSk7Ci0gICAgfQorICAgIGRpZERyYXcodGV4dFJlY3QpOwogCiAjaWYgUExBVEZPUk0oUVQp
CiAgICAgRm9udDo6c2V0Q29kZVBhdGgob2xkQ29kZVBhdGgpOwogI2VuZGlmCiB9CiAKK3ZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppbmZsYXRlU3Ryb2tlUmVjdChGbG9hdFJlY3QmIHJl
Y3QpIGNvbnN0Cit7CisgICAgLy8gRmFzdCBhcHByb3hpbWF0aW9uIG9mIHRoZSBzdHJva2UncyBi
b3VuZGluZyByZWN0LgorICAgIC8vIFRoaXMgeWllbGRzIGEgc2xpZ2h0bHkgb3ZlcnNpemVkIHJl
Y3QgYnV0IGlzIHZlcnkgZmFzdAorICAgIC8vIGNvbXBhcmVkIHRvIFBhdGg6OnN0cm9rZUJvdW5k
aW5nUmVjdCgpLgorICAgIHN0YXRpYyBjb25zdCBmbG9hdCByb290MiA9IHNxcnQoMik7CisgICAg
ZmxvYXQgZGVsdGEgPSBzdGF0ZSgpLm1fbGluZVdpZHRoIC8gMjsKKyAgICBpZiAoc3RhdGUoKS5t
X2xpbmVDYXAgPT0gU3F1YXJlQ2FwKQorICAgICAgICBkZWx0YSAqPSByb290MjsKKyAgICBlbHNl
IGlmIChzdGF0ZSgpLm1fbGluZUpvaW4gPT0gTWl0ZXJKb2luKQorICAgICAgICBkZWx0YSAqPSBz
dGF0ZSgpLm1fbWl0ZXJMaW1pdDsKKworICAgIHJlY3QuaW5mbGF0ZShkZWx0YSk7Cit9CisKIGNv
bnN0IEZvbnQmIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YWNjZXNzRm9udCgpCiB7CiAgICAg
Y2FudmFzKCktPmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5k
ZXggNGIzZGYxNS4uNWNmZDVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKQEAgLTMwNiw2ICszMDYsOCBAQCBwcml2
YXRlOgogICAgIFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBvc2l0aW5nQnVmZmVy
KGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIGNvbXBvc2l0ZUJ1ZmZlcihJbWFnZUJ1ZmZlcios
IGNvbnN0IEludFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKKyAgICB2b2lkIGluZmxhdGVT
dHJva2VSZWN0KEZsb2F0UmVjdCYpIGNvbnN0OworCiAgICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9p
ZCBmdWxsQ2FudmFzQ29tcG9zaXRlZEZpbGwoY29uc3QgVCYpOwogICAgIHRlbXBsYXRlPGNsYXNz
IFQ+IHZvaWQgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCosIENvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yKTsKIAot
LSAKMS43LjUuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121573</attachid>
            <date>2012-01-08 01:32:29 -0800</date>
            <delta_ts>2012-02-15 03:50:38 -0800</delta_ts>
            <desc>patch v.3</desc>
            <filename>0001-Canvas-more-precisely-makes-the-bounding-rect-for-st.patch</filename>
            <type>text/plain</type>
            <size>4800</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSAzODg2MjU5Y2QxNWMyMTI0ZGUxNWRhMjNmZDE4ZTk2NDZjMDdjMmFhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IEZyaSwgNiBKYW4gMjAxMiAxODo0MzowMyArMDkwMApTdWJqZWN0OiBbUEFUQ0hd
IENhbnZhcyBtb3JlIHByZWNpc2VseSBtYWtlcyB0aGUgYm91bmRpbmcgcmVjdCBmb3Igc3Ryb2sK
IHJlbmRlcmluZy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1Nzky
CgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxMyArKysrKysrKwogLi4uL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAgICAgICAgfCAgIDMxICsrKysrKysrKysrLS0tLS0tLS0KIC4uLi9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIHwgICAgMiArCiAzIGZpbGVzIGNoYW5n
ZWQsIDMzIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3MmI2
YjE3Li5hMzI0MGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEtMDggIEh1
YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ2FudmFz
IG1vcmUgcHJlY2lzZWx5IG1ha2VzIHRoZSBib3VuZGluZyByZWN0IGZvciBzdHJvayByZW5kZXJp
bmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc5
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmluZmxhdGVTdHJva2VSZWN0KToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKwogMjAxMi0wMS0w
NyAgQW5kcmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQXR0
ZW1wdCB0byByZWdlbmVyYXRlIGJpbmRpbmdzIG9uIHRoZSBXaW5kb3dzIGJvdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCmluZGV4IDk0OGMyMTkuLjFkZmM1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtOTc0LDEwICs5
NzQsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlKCkKIAogICAgIGlm
ICghbV9wYXRoLmlzRW1wdHkoKSkgewogICAgICAgICBGbG9hdFJlY3QgZGlydHlSZWN0ID0gbV9w
YXRoLmZhc3RCb3VuZGluZ1JlY3QoKTsKLSAgICAgICAgLy8gRmFzdCBhcHByb3hpbWF0aW9uIG9m
IHRoZSBzdHJva2UncyBib3VuZGluZyByZWN0LgotICAgICAgICAvLyBUaGlzIHlpZWxkcyBhIHNs
aWdodGx5IG92ZXJzaXplZCByZWN0IGJ1dCBpcyB2ZXJ5IGZhc3QKLSAgICAgICAgLy8gY29tcGFy
ZWQgdG8gUGF0aDo6c3Ryb2tlQm91bmRpbmdSZWN0KCkuCi0gICAgICAgIGRpcnR5UmVjdC5pbmZs
YXRlKHN0YXRlKCkubV9taXRlckxpbWl0ICsgc3RhdGUoKS5tX2xpbmVXaWR0aCk7CisgICAgICAg
IGluZmxhdGVTdHJva2VSZWN0KGRpcnR5UmVjdCk7CiAKICAgICAgICAgYy0+c3Ryb2tlUGF0aCht
X3BhdGgpOwogICAgICAgICBkaWREcmF3KGRpcnR5UmVjdCk7CkBAIC0yMTYwLDEyICsyMTU3LDEx
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0
IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAgICAgRmxvYXRSZWN0IHRleHRSZWN0ID0gRmxv
YXRSZWN0KGxvY2F0aW9uLngoKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpIC8gMiwgbG9jYXRpb24u
eSgpIC0gZm9udE1ldHJpY3MuYXNjZW50KCkgLSBmb250TWV0cmljcy5saW5lR2FwKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoICsgZm9udE1ldHJpY3MuaGVpZ2h0
KCksIGZvbnRNZXRyaWNzLmxpbmVTcGFjaW5nKCkpOwogICAgIGlmICghZmlsbCkKLSAgICAgICAg
dGV4dFJlY3QuaW5mbGF0ZShjLT5zdHJva2VUaGlja25lc3MoKSAvIDIpOworICAgICAgICBpbmZs
YXRlU3Ryb2tlUmVjdCh0ZXh0UmVjdCk7CiAKICNpZiBVU0UoQ0cpCiAgICAgQ2FudmFzU3R5bGUq
IGRyYXdTdHlsZSA9IGZpbGwgPyBzdGF0ZSgpLm1fZmlsbFN0eWxlLmdldCgpIDogc3RhdGUoKS5t
X3N0cm9rZVN0eWxlLmdldCgpOwogICAgIGlmIChkcmF3U3R5bGUtPmNhbnZhc0dyYWRpZW50KCkg
fHwgZHJhd1N0eWxlLT5jYW52YXNQYXR0ZXJuKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoZSBy
ZWN0IGlzIG5vdCBiaWcgZW5vdWdoIGZvciBtaXRlcnMgb24gc3Ryb2tlZCB0ZXh0LgogICAgICAg
ICBJbnRSZWN0IG1hc2tSZWN0ID0gZW5jbG9zaW5nSW50UmVjdCh0ZXh0UmVjdCk7CiAKICNpZiBV
U0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQpAQCAtMjIyMCwxOSArMjIxNiwyOCBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBT
dHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgIH0gZWxzZQogICAgICAgICBjLT5kcmF3Qmlk
aVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24pOwogCi0gICAgaWYgKGZpbGwpCi0gICAgICAg
IGRpZERyYXcodGV4dFJlY3QpOwotICAgIGVsc2UgewotICAgICAgICAvLyBXaGVuIHN0cm9raW5n
IHRleHQsIHBvaW50eSBtaXRlcnMgY2FuIGV4dGVuZCBvdXRzaWRlIG9mIHRleHRSZWN0LCBzbyB3
ZQotICAgICAgICAvLyBwdW50IGFuZCBkaXJ0eSB0aGUgd2hvbGUgY2FudmFzLgotICAgICAgICBk
aWREcmF3KEZsb2F0UmVjdCgwLCAwLCBjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdo
dCgpKSk7Ci0gICAgfQorICAgIGRpZERyYXcodGV4dFJlY3QpOwogCiAjaWYgUExBVEZPUk0oUVQp
CiAgICAgRm9udDo6c2V0Q29kZVBhdGgob2xkQ29kZVBhdGgpOwogI2VuZGlmCiB9CiAKK3ZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppbmZsYXRlU3Ryb2tlUmVjdChGbG9hdFJlY3QmIHJl
Y3QpIGNvbnN0Cit7CisgICAgLy8gRmFzdCBhcHByb3hpbWF0aW9uIG9mIHRoZSBzdHJva2UncyBi
b3VuZGluZyByZWN0LgorICAgIC8vIFRoaXMgeWllbGRzIGEgc2xpZ2h0bHkgb3ZlcnNpemVkIHJl
Y3QgYnV0IGlzIHZlcnkgZmFzdAorICAgIC8vIGNvbXBhcmVkIHRvIFBhdGg6OnN0cm9rZUJvdW5k
aW5nUmVjdCgpLgorICAgIHN0YXRpYyBjb25zdCBmbG9hdCByb290MiA9IHNxcnQoMik7CisgICAg
ZmxvYXQgZGVsdGEgPSBzdGF0ZSgpLm1fbGluZVdpZHRoIC8gMjsKKyAgICBpZiAoc3RhdGUoKS5t
X2xpbmVKb2luID09IE1pdGVySm9pbikKKyAgICAgICAgZGVsdGEgKj0gc3RhdGUoKS5tX21pdGVy
TGltaXQ7CisgICAgZWxzZSBpZiAoc3RhdGUoKS5tX2xpbmVDYXAgPT0gU3F1YXJlQ2FwKQorICAg
ICAgICBkZWx0YSAqPSByb290MjsKKworICAgIHJlY3QuaW5mbGF0ZShkZWx0YSk7Cit9CisKIGNv
bnN0IEZvbnQmIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YWNjZXNzRm9udCgpCiB7CiAgICAg
Y2FudmFzKCktPmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5k
ZXggNGIzZGYxNS4uNWNmZDVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKQEAgLTMwNiw2ICszMDYsOCBAQCBwcml2
YXRlOgogICAgIFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBvc2l0aW5nQnVmZmVy
KGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIGNvbXBvc2l0ZUJ1ZmZlcihJbWFnZUJ1ZmZlcios
IGNvbnN0IEludFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKKyAgICB2b2lkIGluZmxhdGVT
dHJva2VSZWN0KEZsb2F0UmVjdCYpIGNvbnN0OworCiAgICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9p
ZCBmdWxsQ2FudmFzQ29tcG9zaXRlZEZpbGwoY29uc3QgVCYpOwogICAgIHRlbXBsYXRlPGNsYXNz
IFQ+IHZvaWQgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCosIENvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yKTsKIAot
LSAKMS43LjUuNAoK
</data>
<flag name="review"
          id="122100"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127154</attachid>
            <date>2012-02-15 03:50:38 -0800</date>
            <delta_ts>2012-02-16 03:00:34 -0800</delta_ts>
            <desc>patch v.2</desc>
            <filename>0001-Canvas-more-precisely-makes-the-bounding-rect-for-st.patch</filename>
            <type>text/plain</type>
            <size>13604</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSA1ZTE5MTFmMjBmMjQ2M2UxMWZjNzViM2M2ZDdiNjQyYWQ4MjQxNTE0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IEZyaSwgNiBKYW4gMjAxMiAxODo0MzowMyArMDkwMApTdWJqZWN0OiBbUEFUQ0hd
IENhbnZhcyBtb3JlIHByZWNpc2VseSBtYWtlcyB0aGUgYm91bmRpbmcgcmVjdCBmb3Igc3Ryb2tl
CiByZW5kZXJpbmcuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc5
MgoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMTEgKwogLi4uL2NhbnZhcy9jYW52YXMtc3Ryb2tlUGF0aC1jYXAtam9pbi1leHBlY3Rl
ZC50eHQgfCAgIDQzICsrKysKIC4uLi9mYXN0L2NhbnZhcy9jYW52YXMtc3Ryb2tlUGF0aC1jYXAt
am9pbi5odG1sICAgIHwgICAxMCArCiAuLi4vc2NyaXB0LXRlc3RzL2NhbnZhcy1zdHJva2VQYXRo
LWNhcC1qb2luLmpzICAgICB8ICAyNTIgKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNSArKwogLi4uL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgICAgICAgfCAgIDMxICsrLQog
Li4uL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggfCAgICAy
ICsKIDcgZmlsZXMgY2hhbmdlZCwgMzUxIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQog
Y3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zdHJva2VQ
YXRoLWNhcC1qb2luLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL2NhbnZhcy1zdHJva2VQYXRoLWNhcC1qb2luLmh0bWwKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXN0cm9r
ZVBhdGgtY2FwLWpvaW4uanMKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWJiYzExZi4uMGU1Y2IxZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDEyLTAyLTE1ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkx
MDAubmV0PgorCisgICAgICAgIENhbnZhcyBtb3JlIHByZWNpc2VseSBtYWtlcyB0aGUgYm91bmRp
bmcgcmVjdCBmb3Igc3Ryb2tlIHJlbmRlcmluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtc3Ryb2tlUGF0aC1jYXAt
am9pbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1z
dHJva2VQYXRoLWNhcC1qb2luLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3Nj
cmlwdC10ZXN0cy9jYW52YXMtc3Ryb2tlUGF0aC1jYXAtam9pbi5qczogQWRkZWQuCisKIDIwMTIt
MDItMTQgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBb
UXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvY2FudmFzLXN0cm9rZVBhdGgtY2FwLWpvaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvY2FudmFzLXN0cm9rZVBhdGgtY2FwLWpvaW4tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkYjBjZTMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc3Ryb2tlUGF0aC1jYXAtam9pbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MyBAQAorRW5zdXJlIGNvcnJlY3QgYmVoYXZpb3Igb2Yg
Y2FudmFzIHdpdGggcGF0aCBzdHJva2Ugd2l0aCBjYXAgYW5kIGpvaW4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGF0YVswXSBpcyAwCitQQVNTIGRhdGFbMF0gaXMgMjU1
CitQQVNTIGRhdGFbMF0gaXMgMAorUEFTUyBkYXRhWzBdIGlzIDI1NQorUEFTUyBkYXRhWzBdIGlz
IDAKK1BBU1MgZGF0YVswXSBpcyAyNTUKK1BBU1MgZGF0YVswXSBpcyAwCitQQVNTIGRhdGFbMF0g
aXMgMjU1CitQQVNTIGRhdGFbMF0gaXMgMAorUEFTUyBkYXRhWzBdIGlzIDI1NQorUEFTUyBkYXRh
WzBdIGlzIDAKK1BBU1MgZGF0YVswXSBpcyAyNTUKK1BBU1MgZGF0YVswXSBpcyAwCitQQVNTIGRh
dGFbMF0gaXMgMjU1CitQQVNTIGRhdGFbMF0gaXMgMAorUEFTUyBkYXRhWzBdIGlzIDI1NQorUEFT
UyBkYXRhWzBdIGlzIDAKK1BBU1MgZGF0YVswXSBpcyAyNTUKK1BBU1MgZGF0YVswXSBpcyAwCitQ
QVNTIGRhdGFbMF0gaXMgMjU1CitQQVNTIGRhdGFbMF0gaXMgMAorUEFTUyBkYXRhWzBdIGlzIDI1
NQorUEFTUyBkYXRhWzBdIGlzIDAKK1BBU1MgZGF0YVswXSBpcyAyNTUKK1BBU1MgZGF0YVswXSBp
cyAwCitQQVNTIGRhdGFbMF0gaXMgMjU1CitQQVNTIGRhdGFbMF0gaXMgMAorUEFTUyBkYXRhWzBd
IGlzIDI1NQorUEFTUyBkYXRhWzBdIGlzIDAKK1BBU1MgZGF0YVswXSBpcyAyNTUKK1BBU1MgZGF0
YVswXSBpcyAwCitQQVNTIGRhdGFbMF0gaXMgMjU1CitQQVNTIGRhdGFbMF0gaXMgMAorUEFTUyBk
YXRhWzBdIGlzIDI1NQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zdHJv
a2VQYXRoLWNhcC1qb2luLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc3Ry
b2tlUGF0aC1jYXAtam9pbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjFlNmJiYTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtc3Ryb2tlUGF0aC1jYXAtam9pbi5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jYW52YXMtc3Ryb2tlUGF0aC1j
YXAtam9pbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXN0cm9rZVBhdGgtY2FwLWpv
aW4uanMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXN0cm9r
ZVBhdGgtY2FwLWpvaW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY2
YzYwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10
ZXN0cy9jYW52YXMtc3Ryb2tlUGF0aC1jYXAtam9pbi5qcwpAQCAtMCwwICsxLDI1MiBAQAorZGVz
Y3JpcHRpb24oIkVuc3VyZSBjb3JyZWN0IGJlaGF2aW9yIG9mIGNhbnZhcyB3aXRoIHBhdGggc3Ry
b2tlIHdpdGggY2FwIGFuZCBqb2luIik7CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdjYW52YXMnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTsKK2Nh
bnZhcy5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgJzcwMCcpOworY2FudmFzLnNldEF0dHJpYnV0ZSgn
aGVpZ2h0JywgJzIwMCcpOwordmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworCitj
dHgubWl0ZXJMaW1pdCA9IDU7CitjdHgubGluZVdpZHRoID0gMTU7CisKK2N0eC5maWxsU3R5bGU9
InJnYmEoMjU1LCAyNTUsIDI1NSwgMS4wKSI7CitjdHguZmlsbFJlY3QoMCwgMCwgNzAwLCAyMDAp
OworCitjdHguc3Ryb2tlU3R5bGU9InJnYmEoMCwgMCwgMCwgMS4wKSI7CitjdHgubGluZUpvaW4g
PSAibWl0ZXIiOworY3R4LmxpbmVDYXAgPSAicm91bmQiOworCitjdHgudHJhbnNsYXRlKDAsIDUw
KTsKK2N0eC5zYXZlKCk7CisKK2N0eC5iZWdpblBhdGgoKTsKK2N0eC5tb3ZlVG8oMTAsIDEwMCk7
CitjdHgubGluZVRvKDMwLCAyKTsKK2N0eC5saW5lVG8oNTAsIDEwMCk7CitjdHguc3Ryb2tlKCk7
CisKK2N0eC50cmFuc2xhdGUoNjAgLDApOworY3R4LmJlZ2luUGF0aCgpOworY3R4Lm1vdmVUbygx
MCwgMTAwKTsKK2N0eC5saW5lVG8oMzAsIDMpOworY3R4LmxpbmVUbyg1MCwgMTAwKTsKK2N0eC5z
dHJva2UoKTsKKworY3R4LnRyYW5zbGF0ZSg5MCAsMCk7CitjdHguc2F2ZSgpOworY3R4LnJvdGF0
ZSgwLjIpOworY3R4LmJlZ2luUGF0aCgpOworY3R4Lm1vdmVUbygxMCwgMTAwKTsKK2N0eC5saW5l
VG8oMzAsIDMpOworY3R4LmxpbmVUbyg1MCwgMTAwKTsKK2N0eC5jbG9zZVBhdGgoKTsKK2N0eC5z
dHJva2UoKTsKK2N0eC5yZXN0b3JlKCk7CisKK2N0eC5yZXN0b3JlKCk7CisKK2N0eC5saW5lSm9p
biA9ICJiZXZlbCI7CitjdHgubGluZUNhcCA9ICJzcXVhcmUiOworCitjdHgudHJhbnNsYXRlKDIw
MCwgMCk7CitjdHguc2F2ZSgpOworCitjdHguYmVnaW5QYXRoKCk7CitjdHgubW92ZVRvKDEwLCAx
MDApOworY3R4LmxpbmVUbygzMCwgMik7CitjdHgubGluZVRvKDUwLCAxMDApOworY3R4LnN0cm9r
ZSgpOworCitjdHgudHJhbnNsYXRlKDYwICwwKTsKK2N0eC5iZWdpblBhdGgoKTsKK2N0eC5tb3Zl
VG8oMTAsIDEwMCk7CitjdHgubGluZVRvKDMwLCAzKTsKK2N0eC5saW5lVG8oNTAsIDEwMCk7Citj
dHguc3Ryb2tlKCk7CisKK2N0eC50cmFuc2xhdGUoOTAgLDApOworY3R4LnNhdmUoKTsKK2N0eC5y
b3RhdGUoMC4yKTsKK2N0eC5iZWdpblBhdGgoKTsKK2N0eC5tb3ZlVG8oMTAsIDEwMCk7CitjdHgu
bGluZVRvKDMwLCAzKTsKK2N0eC5saW5lVG8oNTAsIDEwMCk7CitjdHguY2xvc2VQYXRoKCk7Citj
dHguc3Ryb2tlKCk7CitjdHgucmVzdG9yZSgpOworCitjdHgucmVzdG9yZSgpOworCitjdHgubGlu
ZUpvaW4gPSAicm91bmQiOworY3R4LmxpbmVDYXAgPSAiYnV0dCI7CisKK2N0eC50cmFuc2xhdGUo
MjAwLCAwKTsKK2N0eC5zYXZlKCk7CisKK2N0eC5iZWdpblBhdGgoKTsKK2N0eC5tb3ZlVG8oMTAs
IDEwMCk7CitjdHgubGluZVRvKDMwLCAyKTsKK2N0eC5saW5lVG8oNTAsIDEwMCk7CitjdHguc3Ry
b2tlKCk7CisKK2N0eC50cmFuc2xhdGUoNjAgLDApOworY3R4LmJlZ2luUGF0aCgpOworY3R4Lm1v
dmVUbygxMCwgMTAwKTsKK2N0eC5saW5lVG8oMzAsIDMpOworY3R4LmxpbmVUbyg1MCwgMTAwKTsK
K2N0eC5zdHJva2UoKTsKKworY3R4LnRyYW5zbGF0ZSg5MCAsMCk7CitjdHguc2F2ZSgpOworY3R4
LnJvdGF0ZSgwLjIpOworY3R4LmJlZ2luUGF0aCgpOworY3R4Lm1vdmVUbygxMCwgMTAwKTsKK2N0
eC5saW5lVG8oMzAsIDMpOworY3R4LmxpbmVUbyg1MCwgMTAwKTsKK2N0eC5jbG9zZVBhdGgoKTsK
K2N0eC5zdHJva2UoKTsKK2N0eC5yZXN0b3JlKCk7CisKK2N0eC5yZXN0b3JlKCk7CisKK3ZhciBp
bWFnZURhdGEsIGRhdGE7CisKKy8vIFZlcmlmeSBKb2luIDogbWl0ZXIsIENhcCA6IHJvdW5kLgor
aW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgzMCwgNTEsIDEsIDEpOworZGF0YSA9IGltYWdl
RGF0YS5kYXRhOworc2hvdWxkQmUoJ2RhdGFbMF0nLCAnMCcpOworCitpbWFnZURhdGEgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDMwLCA0OSwgMSwgMSk7CitkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CitzaG91
bGRCZSgnZGF0YVswXScsICcyNTUnKTsKKworaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgx
NCwgMTU0LCAxLCAxKTsKK2RhdGEgPSBpbWFnZURhdGEuZGF0YTsKK3Nob3VsZEJlKCdkYXRhWzBd
JywgJzAnKTsKKworaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgxNCwgMTU3LCAxLCAxKTsK
K2RhdGEgPSBpbWFnZURhdGEuZGF0YTsKK3Nob3VsZEJlKCdkYXRhWzBdJywgJzI1NScpOworCitp
bWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDg5LCAyMiwgMSwgMSk7CitkYXRhID0gaW1hZ2VE
YXRhLmRhdGE7CitzaG91bGRCZSgnZGF0YVswXScsICcwJyk7CisKK2ltYWdlRGF0YSA9IGN0eC5n
ZXRJbWFnZURhdGEoODksIDEyLCAxLCAxKTsKK2RhdGEgPSBpbWFnZURhdGEuZGF0YTsKK3Nob3Vs
ZEJlKCdkYXRhWzBdJywgJzI1NScpOworCitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDE4
NCwgMjksIDEsIDEpOworZGF0YSA9IGltYWdlRGF0YS5kYXRhOworc2hvdWxkQmUoJ2RhdGFbMF0n
LCAnMCcpOworCitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDE4MCwgMjcsIDEsIDEpOwor
ZGF0YSA9IGltYWdlRGF0YS5kYXRhOworc2hvdWxkQmUoJ2RhdGFbMF0nLCAnMjU1Jyk7CisKK2lt
YWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMTMyLCAxNTIsIDEsIDEpOworZGF0YSA9IGltYWdl
RGF0YS5kYXRhOworc2hvdWxkQmUoJ2RhdGFbMF0nLCAnMCcpOworCitpbWFnZURhdGEgPSBjdHgu
Z2V0SW1hZ2VEYXRhKDEzMCwgMTU3LCAxLCAxKTsKK2RhdGEgPSBpbWFnZURhdGEuZGF0YTsKK3No
b3VsZEJlKCdkYXRhWzBdJywgJzI1NScpOworCisvLyBWZXJpZnkgSm9pbiA6IGJldmVsLCBDYXAg
OiBzcXVhcmUuCitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDIwMiwgMTU0LCAxLCAxKTsK
K2RhdGEgPSBpbWFnZURhdGEuZGF0YTsKK3Nob3VsZEJlKCdkYXRhWzBdJywgJzAnKTsKKworaW1h
Z2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgyMDEsIDE1MCwgMSwgMSk7CitkYXRhID0gaW1hZ2VE
YXRhLmRhdGE7CitzaG91bGRCZSgnZGF0YVswXScsICcyNTUnKTsKKworaW1hZ2VEYXRhID0gY3R4
LmdldEltYWdlRGF0YSgyMjgsIDUyLCAxLCAxKTsKK2RhdGEgPSBpbWFnZURhdGEuZGF0YTsKK3No
b3VsZEJlKCdkYXRhWzBdJywgJzAnKTsKKworaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgy
MjUsIDQ4LCAxLCAxKTsKK2RhdGEgPSBpbWFnZURhdGEuZGF0YTsKK3Nob3VsZEJlKCdkYXRhWzBd
JywgJzI1NScpOworCitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDMxNiwgMTU0LCAxLCAx
KTsKK2RhdGEgPSBpbWFnZURhdGEuZGF0YTsKK3Nob3VsZEJlKCdkYXRhWzBdJywgJzAnKTsKKwor
aW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgzMTYsIDE1NywgMSwgMSk7CitkYXRhID0gaW1h
Z2VEYXRhLmRhdGE7CitzaG91bGRCZSgnZGF0YVswXScsICcyNTUnKTsKKworaW1hZ2VEYXRhID0g
Y3R4LmdldEltYWdlRGF0YSgyODksIDUyLCAxLCAxKTsKK2RhdGEgPSBpbWFnZURhdGEuZGF0YTsK
K3Nob3VsZEJlKCdkYXRhWzBdJywgJzAnKTsKKworaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0
YSgyODksIDQ4LCAxLCAxKTsKK2RhdGEgPSBpbWFnZURhdGEuZGF0YTsKK3Nob3VsZEJlKCdkYXRh
WzBdJywgJzI1NScpOworCitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDM3MiwgNTgsIDEs
IDEpOworZGF0YSA9IGltYWdlRGF0YS5kYXRhOworc2hvdWxkQmUoJ2RhdGFbMF0nLCAnMCcpOwor
CitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDM3MywgNTQsIDEsIDEpOworZGF0YSA9IGlt
YWdlRGF0YS5kYXRhOworc2hvdWxkQmUoJ2RhdGFbMF0nLCAnMjU1Jyk7CisKK2ltYWdlRGF0YSA9
IGN0eC5nZXRJbWFnZURhdGEoMzgwLCAxNTksIDEsIDEpOworZGF0YSA9IGltYWdlRGF0YS5kYXRh
Oworc2hvdWxkQmUoJ2RhdGFbMF0nLCAnMCcpOworCitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VE
YXRhKDM4MywgMTYyLCAxLCAxKTsKK2RhdGEgPSBpbWFnZURhdGEuZGF0YTsKK3Nob3VsZEJlKCdk
YXRhWzBdJywgJzI1NScpOworCisvLyBWZXJpZnkgSm9pbiA6IHJvdW5kLCBDYXAgOiBidXR0Lgor
aW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSg0MDUsIDE0NywgMSwgMSk7CitkYXRhID0gaW1h
Z2VEYXRhLmRhdGE7CitzaG91bGRCZSgnZGF0YVswXScsICcwJyk7CisKK2ltYWdlRGF0YSA9IGN0
eC5nZXRJbWFnZURhdGEoNDA1LCAxNTEsIDEsIDEpOworZGF0YSA9IGltYWdlRGF0YS5kYXRhOwor
c2hvdWxkQmUoJ2RhdGFbMF0nLCAnMjU1Jyk7CisKK2ltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURh
dGEoNDI5LCA0NiwgMSwgMSk7CitkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CitzaG91bGRCZSgnZGF0
YVswXScsICcwJyk7CisKK2ltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoNDI5LCA0MywgMSwg
MSk7CitkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CitzaG91bGRCZSgnZGF0YVswXScsICcyNTUnKTsK
KworaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSg0NjQsIDE0NiwgMSwgMSk7CitkYXRhID0g
aW1hZ2VEYXRhLmRhdGE7CitzaG91bGRCZSgnZGF0YVswXScsICcwJyk7CisKK2ltYWdlRGF0YSA9
IGN0eC5nZXRJbWFnZURhdGEoNDY0LCAxNTAsIDEsIDEpOworZGF0YSA9IGltYWdlRGF0YS5kYXRh
Oworc2hvdWxkQmUoJ2RhdGFbMF0nLCAnMjU1Jyk7CisKK2ltYWdlRGF0YSA9IGN0eC5nZXRJbWFn
ZURhdGEoNDg5LCA0NiwgMSwgMSk7CitkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CitzaG91bGRCZSgn
ZGF0YVswXScsICcwJyk7CisKK2ltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoNDg5LCA0Mywg
MSwgMSk7CitkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CitzaG91bGRCZSgnZGF0YVswXScsICcyNTUn
KTsKKworaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSg1MzQsIDE1MSwgMSwgMSk7CitkYXRh
ID0gaW1hZ2VEYXRhLmRhdGE7CitzaG91bGRCZSgnZGF0YVswXScsICcwJyk7CisKK2ltYWdlRGF0
YSA9IGN0eC5nZXRJbWFnZURhdGEoNTMxLCAxNTMsIDEsIDEpOworZGF0YSA9IGltYWdlRGF0YS5k
YXRhOworc2hvdWxkQmUoJ2RhdGFbMF0nLCAnMjU1Jyk7CisKK2ltYWdlRGF0YSA9IGN0eC5nZXRJ
bWFnZURhdGEoNTc5LCA1MiwgMSwgMSk7CitkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CitzaG91bGRC
ZSgnZGF0YVswXScsICcwJyk7CisKK2ltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoNTc5LCA0
OCwgMSwgMSk7CitkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CitzaG91bGRCZSgnZGF0YVswXScsICcy
NTUnKTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM1OTIwODIuLjRkNGI4NzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxMi0wMi0xNSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBDYW52YXMgbW9yZSBwcmVjaXNlbHkgbWFrZXMgdGhlIGJvdW5k
aW5nIHJlY3QgZm9yIHN0cm9rZSByZW5kZXJpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ry
b2tlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1Rl
eHRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmluZmxhdGVTdHJva2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAoQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEKToKKwogMjAxMi0wMi0xNCAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgTWFrZSBTaGFkb3dSb290Lm5vZGVUeXBlIHJldHVybiBET0NVTUVO
VF9GUkFHTUVOVF9OT0RFLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggYjBlMDUzZi4uODM5MjA4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCkBAIC05NzQsMTAgKzk3NCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzdHJva2UoKQogCiAgICAgaWYgKCFtX3BhdGguaXNFbXB0eSgpKSB7CiAgICAgICAg
IEZsb2F0UmVjdCBkaXJ0eVJlY3QgPSBtX3BhdGguZmFzdEJvdW5kaW5nUmVjdCgpOwotICAgICAg
ICAvLyBGYXN0IGFwcHJveGltYXRpb24gb2YgdGhlIHN0cm9rZSdzIGJvdW5kaW5nIHJlY3QuCi0g
ICAgICAgIC8vIFRoaXMgeWllbGRzIGEgc2xpZ2h0bHkgb3ZlcnNpemVkIHJlY3QgYnV0IGlzIHZl
cnkgZmFzdAotICAgICAgICAvLyBjb21wYXJlZCB0byBQYXRoOjpzdHJva2VCb3VuZGluZ1JlY3Qo
KS4KLSAgICAgICAgZGlydHlSZWN0LmluZmxhdGUoc3RhdGUoKS5tX21pdGVyTGltaXQgKyBzdGF0
ZSgpLm1fbGluZVdpZHRoKTsKKyAgICAgICAgaW5mbGF0ZVN0cm9rZVJlY3QoZGlydHlSZWN0KTsK
IAogICAgICAgICBjLT5zdHJva2VQYXRoKG1fcGF0aCk7CiAgICAgICAgIGRpZERyYXcoZGlydHlS
ZWN0KTsKQEAgLTIwOTUsMTIgKzIwOTIsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAg
ICBGbG9hdFJlY3QgdGV4dFJlY3QgPSBGbG9hdFJlY3QobG9jYXRpb24ueCgpIC0gZm9udE1ldHJp
Y3MuaGVpZ2h0KCkgLyAyLCBsb2NhdGlvbi55KCkgLSBmb250TWV0cmljcy5hc2NlbnQoKSAtIGZv
bnRNZXRyaWNzLmxpbmVHYXAoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2lkdGggKyBmb250TWV0cmljcy5oZWlnaHQoKSwgZm9udE1ldHJpY3MubGluZVNwYWNpbmcoKSk7
CiAgICAgaWYgKCFmaWxsKQotICAgICAgICB0ZXh0UmVjdC5pbmZsYXRlKGMtPnN0cm9rZVRoaWNr
bmVzcygpIC8gMik7CisgICAgICAgIGluZmxhdGVTdHJva2VSZWN0KHRleHRSZWN0KTsKIAogI2lm
IFVTRShDRykKICAgICBDYW52YXNTdHlsZSogZHJhd1N0eWxlID0gZmlsbCA/IHN0YXRlKCkubV9m
aWxsU3R5bGUuZ2V0KCkgOiBzdGF0ZSgpLm1fc3Ryb2tlU3R5bGUuZ2V0KCk7CiAgICAgaWYgKGRy
YXdTdHlsZS0+Y2FudmFzR3JhZGllbnQoKSB8fCBkcmF3U3R5bGUtPmNhbnZhc1BhdHRlcm4oKSkg
ewotICAgICAgICAvLyBGSVhNRTogVGhlIHJlY3QgaXMgbm90IGJpZyBlbm91Z2ggZm9yIG1pdGVy
cyBvbiBzdHJva2VkIHRleHQuCiAgICAgICAgIEludFJlY3QgbWFza1JlY3QgPSBlbmNsb3NpbmdJ
bnRSZWN0KHRleHRSZWN0KTsKIAogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RP
UkUpCkBAIC0yMTU1LDE5ICsyMTUxLDI4IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAgICAg
fSBlbHNlCiAgICAgICAgIGMtPmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBsb2NhdGlvbik7
CiAKLSAgICBpZiAoZmlsbCkKLSAgICAgICAgZGlkRHJhdyh0ZXh0UmVjdCk7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIC8vIFdoZW4gc3Ryb2tpbmcgdGV4dCwgcG9pbnR5IG1pdGVycyBjYW4gZXh0ZW5k
IG91dHNpZGUgb2YgdGV4dFJlY3QsIHNvIHdlCi0gICAgICAgIC8vIHB1bnQgYW5kIGRpcnR5IHRo
ZSB3aG9sZSBjYW52YXMuCi0gICAgICAgIGRpZERyYXcoRmxvYXRSZWN0KDAsIDAsIGNhbnZhcygp
LT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpKTsKLSAgICB9CisgICAgZGlkRHJhdyh0ZXh0
UmVjdCk7CiAKICNpZiBQTEFURk9STShRVCkKICAgICBGb250OjpzZXRDb2RlUGF0aChvbGRDb2Rl
UGF0aCk7CiAjZW5kaWYKIH0KIAordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmluZmxh
dGVTdHJva2VSZWN0KEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICAvLyBGYXN0IGFwcHJv
eGltYXRpb24gb2YgdGhlIHN0cm9rZSdzIGJvdW5kaW5nIHJlY3QuCisgICAgLy8gVGhpcyB5aWVs
ZHMgYSBzbGlnaHRseSBvdmVyc2l6ZWQgcmVjdCBidXQgaXMgdmVyeSBmYXN0CisgICAgLy8gY29t
cGFyZWQgdG8gUGF0aDo6c3Ryb2tlQm91bmRpbmdSZWN0KCkuCisgICAgc3RhdGljIGNvbnN0IGZs
b2F0IHJvb3QyID0gc3FydCgyKTsKKyAgICBmbG9hdCBkZWx0YSA9IHN0YXRlKCkubV9saW5lV2lk
dGggLyAyOworICAgIGlmIChzdGF0ZSgpLm1fbGluZUpvaW4gPT0gTWl0ZXJKb2luKQorICAgICAg
ICBkZWx0YSAqPSBzdGF0ZSgpLm1fbWl0ZXJMaW1pdDsKKyAgICBlbHNlIGlmIChzdGF0ZSgpLm1f
bGluZUNhcCA9PSBTcXVhcmVDYXApCisgICAgICAgIGRlbHRhICo9IHJvb3QyOworCisgICAgcmVj
dC5pbmZsYXRlKGRlbHRhKTsKK30KKwogY29uc3QgRm9udCYgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjphY2Nlc3NGb250KCkKIHsKICAgICBjYW52YXMoKS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5
bGVJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCAxZjQ4MWI3Li5iMjI5ZTg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
aApAQCAtMzA3LDYgKzMwNyw4IEBAIHByaXZhdGU6CiAgICAgUGFzc093blB0cjxJbWFnZUJ1ZmZl
cj4gY3JlYXRlQ29tcG9zaXRpbmdCdWZmZXIoY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgY29t
cG9zaXRlQnVmZmVyKEltYWdlQnVmZmVyKiwgY29uc3QgSW50UmVjdCYsIENvbXBvc2l0ZU9wZXJh
dG9yKTsKIAorICAgIHZvaWQgaW5mbGF0ZVN0cm9rZVJlY3QoRmxvYXRSZWN0JikgY29uc3Q7CisK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIGZ1bGxDYW52YXNDb21wb3NpdGVkRmlsbChjb25z
dCBUJik7CiAgICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBmdWxsQ2FudmFzQ29tcG9zaXRlZERy
YXdJbWFnZShUKiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiwgQ29tcG9zaXRlT3BlcmF0b3IpOwogCi0tIAoxLjcuNS40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127346</attachid>
            <date>2012-02-16 03:00:34 -0800</date>
            <delta_ts>2012-04-19 15:05:53 -0700</delta_ts>
            <desc>patch v.5</desc>
            <filename>0001-Canvas-more-precisely-makes-the-bounding-rect-for-st.patch</filename>
            <type>text/plain</type>
            <size>4865</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSBmMjI4ZTcxOTRlNjBmNDk2MDI3MGE0ZWJkMTM2MWNmMWE5ZjdiNzJhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFRodSwgMTYgRmViIDIwMTIgMTk6NTY6MzkgKzA5MDAKU3ViamVjdDogW1BBVENI
IDEvMl0gQ2FudmFzIG1vcmUgcHJlY2lzZWx5IG1ha2VzIHRoZSBib3VuZGluZyByZWN0IGZvciBz
dHJva2UKIHJlbmRlcmluZy4KIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NTc5MgoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMTUgKysrKysrKysrCiAuLi4vaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcCAgICAgICB8ICAgMzEgKysrKysrKysrKystLS0tLS0tLQogLi4uL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggfCAgICAyICsKIDMgZmls
ZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGM1OTIwODIuLjRkNGI4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0w
Mi0xNSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAg
ICBDYW52YXMgbW9yZSBwcmVjaXNlbHkgbWFrZXMgdGhlIGJvdW5kaW5nIHJlY3QgZm9yIHN0cm9r
ZSByZW5kZXJpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NTc5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmluZmxhdGVTdHJva2VSZWN0
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5oOgorICAgICAgICAoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKToKKwog
MjAxMi0wMi0xNCAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
TWFrZSBTaGFkb3dSb290Lm5vZGVUeXBlIHJldHVybiBET0NVTUVOVF9GUkFHTUVOVF9OT0RFLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHAKaW5kZXggYjBlMDUzZi4uODM5MjA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC05
NzQsMTAgKzk3NCw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2UoKQog
CiAgICAgaWYgKCFtX3BhdGguaXNFbXB0eSgpKSB7CiAgICAgICAgIEZsb2F0UmVjdCBkaXJ0eVJl
Y3QgPSBtX3BhdGguZmFzdEJvdW5kaW5nUmVjdCgpOwotICAgICAgICAvLyBGYXN0IGFwcHJveGlt
YXRpb24gb2YgdGhlIHN0cm9rZSdzIGJvdW5kaW5nIHJlY3QuCi0gICAgICAgIC8vIFRoaXMgeWll
bGRzIGEgc2xpZ2h0bHkgb3ZlcnNpemVkIHJlY3QgYnV0IGlzIHZlcnkgZmFzdAotICAgICAgICAv
LyBjb21wYXJlZCB0byBQYXRoOjpzdHJva2VCb3VuZGluZ1JlY3QoKS4KLSAgICAgICAgZGlydHlS
ZWN0LmluZmxhdGUoc3RhdGUoKS5tX21pdGVyTGltaXQgKyBzdGF0ZSgpLm1fbGluZVdpZHRoKTsK
KyAgICAgICAgaW5mbGF0ZVN0cm9rZVJlY3QoZGlydHlSZWN0KTsKIAogICAgICAgICBjLT5zdHJv
a2VQYXRoKG1fcGF0aCk7CiAgICAgICAgIGRpZERyYXcoZGlydHlSZWN0KTsKQEAgLTIwOTUsMTIg
KzIwOTIsMTEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJu
YWwoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICBGbG9hdFJlY3QgdGV4dFJl
Y3QgPSBGbG9hdFJlY3QobG9jYXRpb24ueCgpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkgLyAyLCBs
b2NhdGlvbi55KCkgLSBmb250TWV0cmljcy5hc2NlbnQoKSAtIGZvbnRNZXRyaWNzLmxpbmVHYXAo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggKyBmb250TWV0cmlj
cy5oZWlnaHQoKSwgZm9udE1ldHJpY3MubGluZVNwYWNpbmcoKSk7CiAgICAgaWYgKCFmaWxsKQot
ICAgICAgICB0ZXh0UmVjdC5pbmZsYXRlKGMtPnN0cm9rZVRoaWNrbmVzcygpIC8gMik7CisgICAg
ICAgIGluZmxhdGVTdHJva2VSZWN0KHRleHRSZWN0KTsKIAogI2lmIFVTRShDRykKICAgICBDYW52
YXNTdHlsZSogZHJhd1N0eWxlID0gZmlsbCA/IHN0YXRlKCkubV9maWxsU3R5bGUuZ2V0KCkgOiBz
dGF0ZSgpLm1fc3Ryb2tlU3R5bGUuZ2V0KCk7CiAgICAgaWYgKGRyYXdTdHlsZS0+Y2FudmFzR3Jh
ZGllbnQoKSB8fCBkcmF3U3R5bGUtPmNhbnZhc1BhdHRlcm4oKSkgewotICAgICAgICAvLyBGSVhN
RTogVGhlIHJlY3QgaXMgbm90IGJpZyBlbm91Z2ggZm9yIG1pdGVycyBvbiBzdHJva2VkIHRleHQu
CiAgICAgICAgIEludFJlY3QgbWFza1JlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHRleHRSZWN0KTsK
IAogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCkBAIC0yMTU1LDE5ICsy
MTUxLDI4IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFs
KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAgICAgfSBlbHNlCiAgICAgICAgIGMt
PmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBsb2NhdGlvbik7CiAKLSAgICBpZiAoZmlsbCkK
LSAgICAgICAgZGlkRHJhdyh0ZXh0UmVjdCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIFdoZW4g
c3Ryb2tpbmcgdGV4dCwgcG9pbnR5IG1pdGVycyBjYW4gZXh0ZW5kIG91dHNpZGUgb2YgdGV4dFJl
Y3QsIHNvIHdlCi0gICAgICAgIC8vIHB1bnQgYW5kIGRpcnR5IHRoZSB3aG9sZSBjYW52YXMuCi0g
ICAgICAgIGRpZERyYXcoRmxvYXRSZWN0KDAsIDAsIGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMo
KS0+aGVpZ2h0KCkpKTsKLSAgICB9CisgICAgZGlkRHJhdyh0ZXh0UmVjdCk7CiAKICNpZiBQTEFU
Rk9STShRVCkKICAgICBGb250OjpzZXRDb2RlUGF0aChvbGRDb2RlUGF0aCk7CiAjZW5kaWYKIH0K
IAordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmluZmxhdGVTdHJva2VSZWN0KEZsb2F0
UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICAvLyBGYXN0IGFwcHJveGltYXRpb24gb2YgdGhlIHN0
cm9rZSdzIGJvdW5kaW5nIHJlY3QuCisgICAgLy8gVGhpcyB5aWVsZHMgYSBzbGlnaHRseSBvdmVy
c2l6ZWQgcmVjdCBidXQgaXMgdmVyeSBmYXN0CisgICAgLy8gY29tcGFyZWQgdG8gUGF0aDo6c3Ry
b2tlQm91bmRpbmdSZWN0KCkuCisgICAgc3RhdGljIGNvbnN0IGZsb2F0IHJvb3QyID0gc3FydCgy
KTsKKyAgICBmbG9hdCBkZWx0YSA9IHN0YXRlKCkubV9saW5lV2lkdGggLyAyOworICAgIGlmIChz
dGF0ZSgpLm1fbGluZUpvaW4gPT0gTWl0ZXJKb2luKQorICAgICAgICBkZWx0YSAqPSBzdGF0ZSgp
Lm1fbWl0ZXJMaW1pdDsKKyAgICBlbHNlIGlmIChzdGF0ZSgpLm1fbGluZUNhcCA9PSBTcXVhcmVD
YXApCisgICAgICAgIGRlbHRhICo9IHJvb3QyOworCisgICAgcmVjdC5pbmZsYXRlKGRlbHRhKTsK
K30KKwogY29uc3QgRm9udCYgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphY2Nlc3NGb250KCkK
IHsKICAgICBjYW52YXMoKS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuaAppbmRleCAxZjQ4MWI3Li5iMjI5ZTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMzA3LDYgKzMwNyw4
IEBAIHByaXZhdGU6CiAgICAgUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcG9zaXRp
bmdCdWZmZXIoY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgY29tcG9zaXRlQnVmZmVyKEltYWdl
QnVmZmVyKiwgY29uc3QgSW50UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yKTsKIAorICAgIHZvaWQg
aW5mbGF0ZVN0cm9rZVJlY3QoRmxvYXRSZWN0JikgY29uc3Q7CisKICAgICB0ZW1wbGF0ZTxjbGFz
cyBUPiB2b2lkIGZ1bGxDYW52YXNDb21wb3NpdGVkRmlsbChjb25zdCBUJik7CiAgICAgdGVtcGxh
dGU8Y2xhc3MgVD4gdm9pZCBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZShUKiwgQ29sb3JT
cGFjZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0
b3IpOwogCi0tIAoxLjcuNS40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127347</attachid>
            <date>2012-02-16 03:01:06 -0800</date>
            <delta_ts>2012-04-19 15:08:07 -0700</delta_ts>
            <desc>a layout test for patch</desc>
            <filename>0002-It-is-a-layoutTest-for-following-patch.patch</filename>
            <type>text/plain</type>
            <size>9169</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSAzZTIxMjNhMzZmNDgyM2IyZjcwNDlmY2ViNzhkOTU3Yjk5ZWY1ZDg0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFRodSwgMTYgRmViIDIwMTIgMTk6NTY6NTAgKzA5MDAKU3ViamVjdDogW1BBVENI
IDIvMl0gSXQgaXMgYSBsYXlvdXRUZXN0IGZvciBmb2xsb3dpbmcgcGF0Y2guCgpDYW52YXMgbW9y
ZSBwcmVjaXNlbHkgbWFrZXMgdGhlIGJvdW5kaW5nIHJlY3QgZm9yIHN0cm9rZSByZW5kZXJpbmcu
Cmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc5MgotLS0KIExheW91
dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSArCiAu
Li4vY2FudmFzL2NhbnZhcy1zdHJva2VQYXRoLWNhcC1qb2luLWV4cGVjdGVkLnR4dCB8ICAgNDMg
KysrKwogLi4uL2Zhc3QvY2FudmFzL2NhbnZhcy1zdHJva2VQYXRoLWNhcC1qb2luLmh0bWwgICAg
fCAgIDEwICsKIC4uLi9zY3JpcHQtdGVzdHMvY2FudmFzLXN0cm9rZVBhdGgtY2FwLWpvaW4uanMg
ICAgIHwgIDI1MiArKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAzMTYgaW5z
ZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtc3Ryb2tlUGF0aC1jYXAtam9pbi1leHBlY3RlZC50eHQKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc3Ryb2tlUGF0
aC1jYXAtam9pbi5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zdHJva2VQYXRoLWNhcC1qb2luLmpzCgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDli
YmMxMWYuLjBlNWNiMWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMi0xNSAgSHVhbmcg
RG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDYW52YXMgbW9y
ZSBwcmVjaXNlbHkgbWFrZXMgdGhlIGJvdW5kaW5nIHJlY3QgZm9yIHN0cm9rZSByZW5kZXJpbmcu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc5Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9j
YW52YXMvY2FudmFzLXN0cm9rZVBhdGgtY2FwLWpvaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtc3Ryb2tlUGF0aC1jYXAtam9pbi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXN0cm9rZVBhdGgt
Y2FwLWpvaW4uanM6IEFkZGVkLgorCiAyMDEyLTAyLTE0ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxv
c3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zdHJva2VQYXRoLWNhcC1q
b2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zdHJva2VQ
YXRoLWNhcC1qb2luLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi45ZGIwY2UzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y2FudmFzLXN0cm9rZVBhdGgtY2FwLWpvaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDMgQEAK
K0Vuc3VyZSBjb3JyZWN0IGJlaGF2aW9yIG9mIGNhbnZhcyB3aXRoIHBhdGggc3Ryb2tlIHdpdGgg
Y2FwIGFuZCBqb2luCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRhdGFb
MF0gaXMgMAorUEFTUyBkYXRhWzBdIGlzIDI1NQorUEFTUyBkYXRhWzBdIGlzIDAKK1BBU1MgZGF0
YVswXSBpcyAyNTUKK1BBU1MgZGF0YVswXSBpcyAwCitQQVNTIGRhdGFbMF0gaXMgMjU1CitQQVNT
IGRhdGFbMF0gaXMgMAorUEFTUyBkYXRhWzBdIGlzIDI1NQorUEFTUyBkYXRhWzBdIGlzIDAKK1BB
U1MgZGF0YVswXSBpcyAyNTUKK1BBU1MgZGF0YVswXSBpcyAwCitQQVNTIGRhdGFbMF0gaXMgMjU1
CitQQVNTIGRhdGFbMF0gaXMgMAorUEFTUyBkYXRhWzBdIGlzIDI1NQorUEFTUyBkYXRhWzBdIGlz
IDAKK1BBU1MgZGF0YVswXSBpcyAyNTUKK1BBU1MgZGF0YVswXSBpcyAwCitQQVNTIGRhdGFbMF0g
aXMgMjU1CitQQVNTIGRhdGFbMF0gaXMgMAorUEFTUyBkYXRhWzBdIGlzIDI1NQorUEFTUyBkYXRh
WzBdIGlzIDAKK1BBU1MgZGF0YVswXSBpcyAyNTUKK1BBU1MgZGF0YVswXSBpcyAwCitQQVNTIGRh
dGFbMF0gaXMgMjU1CitQQVNTIGRhdGFbMF0gaXMgMAorUEFTUyBkYXRhWzBdIGlzIDI1NQorUEFT
UyBkYXRhWzBdIGlzIDAKK1BBU1MgZGF0YVswXSBpcyAyNTUKK1BBU1MgZGF0YVswXSBpcyAwCitQ
QVNTIGRhdGFbMF0gaXMgMjU1CitQQVNTIGRhdGFbMF0gaXMgMAorUEFTUyBkYXRhWzBdIGlzIDI1
NQorUEFTUyBkYXRhWzBdIGlzIDAKK1BBU1MgZGF0YVswXSBpcyAyNTUKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc3Ryb2tlUGF0aC1jYXAtam9pbi5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXN0cm9rZVBhdGgtY2FwLWpvaW4uaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTZiYmE1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLXN0cm9rZVBhdGgtY2FwLWpvaW4uaHRtbApA
QCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3Jp
cHQtdGVzdHMvY2FudmFzLXN0cm9rZVBhdGgtY2FwLWpvaW4uanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRl
c3RzL2NhbnZhcy1zdHJva2VQYXRoLWNhcC1qb2luLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zdHJva2VQYXRoLWNhcC1qb2luLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNmM2MDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXN0cm9rZVBhdGgtY2FwLWpv
aW4uanMKQEAgLTAsMCArMSwyNTIgQEAKK2Rlc2NyaXB0aW9uKCJFbnN1cmUgY29ycmVjdCBiZWhh
dmlvciBvZiBjYW52YXMgd2l0aCBwYXRoIHN0cm9rZSB3aXRoIGNhcCBhbmQgam9pbiIpOworCit2
YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7Citkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7CitjYW52YXMuc2V0QXR0cmlidXRlKCd3aWR0aCcsICc3
MDAnKTsKK2NhbnZhcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsICcyMDAnKTsKK3ZhciBjdHggPSBj
YW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKKworY3R4Lm1pdGVyTGltaXQgPSA1OworY3R4LmxpbmVX
aWR0aCA9IDE1OworCitjdHguZmlsbFN0eWxlPSJyZ2JhKDI1NSwgMjU1LCAyNTUsIDEuMCkiOwor
Y3R4LmZpbGxSZWN0KDAsIDAsIDcwMCwgMjAwKTsKKworY3R4LnN0cm9rZVN0eWxlPSJyZ2JhKDAs
IDAsIDAsIDEuMCkiOworY3R4LmxpbmVKb2luID0gIm1pdGVyIjsKK2N0eC5saW5lQ2FwID0gInJv
dW5kIjsKKworY3R4LnRyYW5zbGF0ZSgwLCA1MCk7CitjdHguc2F2ZSgpOworCitjdHguYmVnaW5Q
YXRoKCk7CitjdHgubW92ZVRvKDEwLCAxMDApOworY3R4LmxpbmVUbygzMCwgMik7CitjdHgubGlu
ZVRvKDUwLCAxMDApOworY3R4LnN0cm9rZSgpOworCitjdHgudHJhbnNsYXRlKDYwICwwKTsKK2N0
eC5iZWdpblBhdGgoKTsKK2N0eC5tb3ZlVG8oMTAsIDEwMCk7CitjdHgubGluZVRvKDMwLCAzKTsK
K2N0eC5saW5lVG8oNTAsIDEwMCk7CitjdHguc3Ryb2tlKCk7CisKK2N0eC50cmFuc2xhdGUoOTAg
LDApOworY3R4LnNhdmUoKTsKK2N0eC5yb3RhdGUoMC4yKTsKK2N0eC5iZWdpblBhdGgoKTsKK2N0
eC5tb3ZlVG8oMTAsIDEwMCk7CitjdHgubGluZVRvKDMwLCAzKTsKK2N0eC5saW5lVG8oNTAsIDEw
MCk7CitjdHguY2xvc2VQYXRoKCk7CitjdHguc3Ryb2tlKCk7CitjdHgucmVzdG9yZSgpOworCitj
dHgucmVzdG9yZSgpOworCitjdHgubGluZUpvaW4gPSAiYmV2ZWwiOworY3R4LmxpbmVDYXAgPSAi
c3F1YXJlIjsKKworY3R4LnRyYW5zbGF0ZSgyMDAsIDApOworY3R4LnNhdmUoKTsKKworY3R4LmJl
Z2luUGF0aCgpOworY3R4Lm1vdmVUbygxMCwgMTAwKTsKK2N0eC5saW5lVG8oMzAsIDIpOworY3R4
LmxpbmVUbyg1MCwgMTAwKTsKK2N0eC5zdHJva2UoKTsKKworY3R4LnRyYW5zbGF0ZSg2MCAsMCk7
CitjdHguYmVnaW5QYXRoKCk7CitjdHgubW92ZVRvKDEwLCAxMDApOworY3R4LmxpbmVUbygzMCwg
Myk7CitjdHgubGluZVRvKDUwLCAxMDApOworY3R4LnN0cm9rZSgpOworCitjdHgudHJhbnNsYXRl
KDkwICwwKTsKK2N0eC5zYXZlKCk7CitjdHgucm90YXRlKDAuMik7CitjdHguYmVnaW5QYXRoKCk7
CitjdHgubW92ZVRvKDEwLCAxMDApOworY3R4LmxpbmVUbygzMCwgMyk7CitjdHgubGluZVRvKDUw
LCAxMDApOworY3R4LmNsb3NlUGF0aCgpOworY3R4LnN0cm9rZSgpOworY3R4LnJlc3RvcmUoKTsK
KworY3R4LnJlc3RvcmUoKTsKKworY3R4LmxpbmVKb2luID0gInJvdW5kIjsKK2N0eC5saW5lQ2Fw
ID0gImJ1dHQiOworCitjdHgudHJhbnNsYXRlKDIwMCwgMCk7CitjdHguc2F2ZSgpOworCitjdHgu
YmVnaW5QYXRoKCk7CitjdHgubW92ZVRvKDEwLCAxMDApOworY3R4LmxpbmVUbygzMCwgMik7Citj
dHgubGluZVRvKDUwLCAxMDApOworY3R4LnN0cm9rZSgpOworCitjdHgudHJhbnNsYXRlKDYwICww
KTsKK2N0eC5iZWdpblBhdGgoKTsKK2N0eC5tb3ZlVG8oMTAsIDEwMCk7CitjdHgubGluZVRvKDMw
LCAzKTsKK2N0eC5saW5lVG8oNTAsIDEwMCk7CitjdHguc3Ryb2tlKCk7CisKK2N0eC50cmFuc2xh
dGUoOTAgLDApOworY3R4LnNhdmUoKTsKK2N0eC5yb3RhdGUoMC4yKTsKK2N0eC5iZWdpblBhdGgo
KTsKK2N0eC5tb3ZlVG8oMTAsIDEwMCk7CitjdHgubGluZVRvKDMwLCAzKTsKK2N0eC5saW5lVG8o
NTAsIDEwMCk7CitjdHguY2xvc2VQYXRoKCk7CitjdHguc3Ryb2tlKCk7CitjdHgucmVzdG9yZSgp
OworCitjdHgucmVzdG9yZSgpOworCit2YXIgaW1hZ2VEYXRhLCBkYXRhOworCisvLyBWZXJpZnkg
Sm9pbiA6IG1pdGVyLCBDYXAgOiByb3VuZC4KK2ltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEo
MzAsIDUxLCAxLCAxKTsKK2RhdGEgPSBpbWFnZURhdGEuZGF0YTsKK3Nob3VsZEJlKCdkYXRhWzBd
JywgJzAnKTsKKworaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgzMCwgNDksIDEsIDEpOwor
ZGF0YSA9IGltYWdlRGF0YS5kYXRhOworc2hvdWxkQmUoJ2RhdGFbMF0nLCAnMjU1Jyk7CisKK2lt
YWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMTQsIDE1NCwgMSwgMSk7CitkYXRhID0gaW1hZ2VE
YXRhLmRhdGE7CitzaG91bGRCZSgnZGF0YVswXScsICcwJyk7CisKK2ltYWdlRGF0YSA9IGN0eC5n
ZXRJbWFnZURhdGEoMTQsIDE1NywgMSwgMSk7CitkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CitzaG91
bGRCZSgnZGF0YVswXScsICcyNTUnKTsKKworaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSg4
OSwgMjIsIDEsIDEpOworZGF0YSA9IGltYWdlRGF0YS5kYXRhOworc2hvdWxkQmUoJ2RhdGFbMF0n
LCAnMCcpOworCitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDg5LCAxMiwgMSwgMSk7Citk
YXRhID0gaW1hZ2VEYXRhLmRhdGE7CitzaG91bGRCZSgnZGF0YVswXScsICcyNTUnKTsKKworaW1h
Z2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgxODQsIDI5LCAxLCAxKTsKK2RhdGEgPSBpbWFnZURh
dGEuZGF0YTsKK3Nob3VsZEJlKCdkYXRhWzBdJywgJzAnKTsKKworaW1hZ2VEYXRhID0gY3R4Lmdl
dEltYWdlRGF0YSgxODAsIDI3LCAxLCAxKTsKK2RhdGEgPSBpbWFnZURhdGEuZGF0YTsKK3Nob3Vs
ZEJlKCdkYXRhWzBdJywgJzI1NScpOworCitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDEz
MiwgMTUyLCAxLCAxKTsKK2RhdGEgPSBpbWFnZURhdGEuZGF0YTsKK3Nob3VsZEJlKCdkYXRhWzBd
JywgJzAnKTsKKworaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgxMzAsIDE1NywgMSwgMSk7
CitkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CitzaG91bGRCZSgnZGF0YVswXScsICcyNTUnKTsKKwor
Ly8gVmVyaWZ5IEpvaW4gOiBiZXZlbCwgQ2FwIDogc3F1YXJlLgoraW1hZ2VEYXRhID0gY3R4Lmdl
dEltYWdlRGF0YSgyMDIsIDE1NCwgMSwgMSk7CitkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CitzaG91
bGRCZSgnZGF0YVswXScsICcwJyk7CisKK2ltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMjAx
LCAxNTAsIDEsIDEpOworZGF0YSA9IGltYWdlRGF0YS5kYXRhOworc2hvdWxkQmUoJ2RhdGFbMF0n
LCAnMjU1Jyk7CisKK2ltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMjI4LCA1MiwgMSwgMSk7
CitkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CitzaG91bGRCZSgnZGF0YVswXScsICcwJyk7CisKK2lt
YWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMjI1LCA0OCwgMSwgMSk7CitkYXRhID0gaW1hZ2VE
YXRhLmRhdGE7CitzaG91bGRCZSgnZGF0YVswXScsICcyNTUnKTsKKworaW1hZ2VEYXRhID0gY3R4
LmdldEltYWdlRGF0YSgzMTYsIDE1NCwgMSwgMSk7CitkYXRhID0gaW1hZ2VEYXRhLmRhdGE7Citz
aG91bGRCZSgnZGF0YVswXScsICcwJyk7CisKK2ltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEo
MzE2LCAxNTcsIDEsIDEpOworZGF0YSA9IGltYWdlRGF0YS5kYXRhOworc2hvdWxkQmUoJ2RhdGFb
MF0nLCAnMjU1Jyk7CisKK2ltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMjg5LCA1MiwgMSwg
MSk7CitkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CitzaG91bGRCZSgnZGF0YVswXScsICcwJyk7CisK
K2ltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMjg5LCA0OCwgMSwgMSk7CitkYXRhID0gaW1h
Z2VEYXRhLmRhdGE7CitzaG91bGRCZSgnZGF0YVswXScsICcyNTUnKTsKKworaW1hZ2VEYXRhID0g
Y3R4LmdldEltYWdlRGF0YSgzNzIsIDU4LCAxLCAxKTsKK2RhdGEgPSBpbWFnZURhdGEuZGF0YTsK
K3Nob3VsZEJlKCdkYXRhWzBdJywgJzAnKTsKKworaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0
YSgzNzMsIDU0LCAxLCAxKTsKK2RhdGEgPSBpbWFnZURhdGEuZGF0YTsKK3Nob3VsZEJlKCdkYXRh
WzBdJywgJzI1NScpOworCitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDM4MCwgMTU5LCAx
LCAxKTsKK2RhdGEgPSBpbWFnZURhdGEuZGF0YTsKK3Nob3VsZEJlKCdkYXRhWzBdJywgJzAnKTsK
KworaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgzODMsIDE2MiwgMSwgMSk7CitkYXRhID0g
aW1hZ2VEYXRhLmRhdGE7CitzaG91bGRCZSgnZGF0YVswXScsICcyNTUnKTsKKworLy8gVmVyaWZ5
IEpvaW4gOiByb3VuZCwgQ2FwIDogYnV0dC4KK2ltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEo
NDA1LCAxNDcsIDEsIDEpOworZGF0YSA9IGltYWdlRGF0YS5kYXRhOworc2hvdWxkQmUoJ2RhdGFb
MF0nLCAnMCcpOworCitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDQwNSwgMTUxLCAxLCAx
KTsKK2RhdGEgPSBpbWFnZURhdGEuZGF0YTsKK3Nob3VsZEJlKCdkYXRhWzBdJywgJzI1NScpOwor
CitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDQyOSwgNDYsIDEsIDEpOworZGF0YSA9IGlt
YWdlRGF0YS5kYXRhOworc2hvdWxkQmUoJ2RhdGFbMF0nLCAnMCcpOworCitpbWFnZURhdGEgPSBj
dHguZ2V0SW1hZ2VEYXRhKDQyOSwgNDMsIDEsIDEpOworZGF0YSA9IGltYWdlRGF0YS5kYXRhOwor
c2hvdWxkQmUoJ2RhdGFbMF0nLCAnMjU1Jyk7CisKK2ltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURh
dGEoNDY0LCAxNDYsIDEsIDEpOworZGF0YSA9IGltYWdlRGF0YS5kYXRhOworc2hvdWxkQmUoJ2Rh
dGFbMF0nLCAnMCcpOworCitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDQ2NCwgMTUwLCAx
LCAxKTsKK2RhdGEgPSBpbWFnZURhdGEuZGF0YTsKK3Nob3VsZEJlKCdkYXRhWzBdJywgJzI1NScp
OworCitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDQ4OSwgNDYsIDEsIDEpOworZGF0YSA9
IGltYWdlRGF0YS5kYXRhOworc2hvdWxkQmUoJ2RhdGFbMF0nLCAnMCcpOworCitpbWFnZURhdGEg
PSBjdHguZ2V0SW1hZ2VEYXRhKDQ4OSwgNDMsIDEsIDEpOworZGF0YSA9IGltYWdlRGF0YS5kYXRh
Oworc2hvdWxkQmUoJ2RhdGFbMF0nLCAnMjU1Jyk7CisKK2ltYWdlRGF0YSA9IGN0eC5nZXRJbWFn
ZURhdGEoNTM0LCAxNTEsIDEsIDEpOworZGF0YSA9IGltYWdlRGF0YS5kYXRhOworc2hvdWxkQmUo
J2RhdGFbMF0nLCAnMCcpOworCitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDUzMSwgMTUz
LCAxLCAxKTsKK2RhdGEgPSBpbWFnZURhdGEuZGF0YTsKK3Nob3VsZEJlKCdkYXRhWzBdJywgJzI1
NScpOworCitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDU3OSwgNTIsIDEsIDEpOworZGF0
YSA9IGltYWdlRGF0YS5kYXRhOworc2hvdWxkQmUoJ2RhdGFbMF0nLCAnMCcpOworCitpbWFnZURh
dGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDU3OSwgNDgsIDEsIDEpOworZGF0YSA9IGltYWdlRGF0YS5k
YXRhOworc2hvdWxkQmUoJ2RhdGFbMF0nLCAnMjU1Jyk7CisKLS0gCjEuNy41LjQKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>