<?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>82800</bug_id>
          
          <creation_ts>2012-03-30 16:00:23 -0700</creation_ts>
          <short_desc>Support pattern transformations in canvas</short_desc>
          <delta_ts>2024-05-17 04:21:10 -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>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>abarth</cc>
    
    <cc>ahmad.saleem792</cc>
    
    <cc>chkang514</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dongseong.hwang</cc>
    
    <cc>eoconnor</cc>
    
    <cc>junov</cc>
    
    <cc>kangax</cc>
    
    <cc>karlcow</cc>
    
    <cc>kling</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>592604</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-03-30 16:00:23 -0700</bug_when>
    <thetext>Canvas v5 supports transformations in patterns

 - ability to transform a pattern
     var identity = new SVGMatrix();
     context.fillStyle = context.createPattern(img, &apos;repeat&apos;);
     context.fillStyle.setTransform(identity.rotate(angle));
     context.fillRect(0, 0, canvas.width, canvas.height);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592605</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-03-30 16:00:56 -0700</bug_when>
    <thetext>&lt;rdar://problem/11159356&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659117</commentid>
    <comment_count>2</comment_count>
      <attachid>149858</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-06-27 19:49:42 -0700</bug_when>
    <thetext>Created attachment 149858
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659118</commentid>
    <comment_count>3</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-06-27 19:50:04 -0700</bug_when>
    <thetext>Canvas v5 [1] supports transformations in patterns.

[1] http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-canvaspattern-settransform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659137</commentid>
    <comment_count>4</comment_count>
      <attachid>149858</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-27 20:40:48 -0700</bug_when>
    <thetext>Comment on attachment 149858
patch

Attachment 149858 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13098972</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659242</commentid>
    <comment_count>5</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-06-27 23:18:25 -0700</bug_when>
    <thetext>Oops, I&apos;ll survey how to solve and patch again.

Actually, I don&apos;t know why V8 does not compile but I&apos;ll survey.

I&apos;ll be very glad if someone give me hints.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659410</commentid>
    <comment_count>6</comment_count>
      <attachid>149923</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-06-28 04:30:20 -0700</bug_when>
    <thetext>Created attachment 149923
patch v.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659411</commentid>
    <comment_count>7</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-06-28 04:31:36 -0700</bug_when>
    <thetext>CanvasPattern::setTransform needs ENABLE(SVG) because it uses SVGMatrix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659433</commentid>
    <comment_count>8</comment_count>
      <attachid>149930</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-06-28 05:15:16 -0700</bug_when>
    <thetext>Created attachment 149930
patch v.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659436</commentid>
    <comment_count>9</comment_count>
      <attachid>149930</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-06-28 05:17:15 -0700</bug_when>
    <thetext>Comment on attachment 149930
patch v.3

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

&gt; Source/WebCore/html/canvas/CanvasPattern.h:32
&gt; +#include &quot;SVGPropertyTearOff.h&quot;

It is solution that I found for building with V8.
However, it is ugly.

Is it Ok? or I need advice.

Sorry for lack of knowledge of binding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659536</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-28 08:56:52 -0700</bug_when>
    <thetext>Attachment 149930 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1
Source/WebCore/html/canvas/CanvasPattern.h:54:  The parameter name &quot;transform&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659986</commentid>
    <comment_count>11</comment_count>
      <attachid>150051</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-06-28 17:46:37 -0700</bug_when>
    <thetext>Created attachment 150051
patch v.4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659987</commentid>
    <comment_count>12</comment_count>
      <attachid>150051</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-06-28 17:47:29 -0700</bug_when>
    <thetext>Comment on attachment 150051
patch v.4

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

&gt; Source/WebCore/svg/SVGMatrix.h:28
&gt; +#include &quot;SVGPropertyTearOff.h&quot;

It is solution that I found for building with V8.

Is it Ok? or I need advice, again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669676</commentid>
    <comment_count>13</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-13 19:14:05 -0700</bug_when>
    <thetext>I&apos;ll very appreciate if Dean or Simon take a look at this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670468</commentid>
    <comment_count>14</comment_count>
      <attachid>150051</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-07-16 11:05:05 -0700</bug_when>
    <thetext>Comment on attachment 150051
patch v.4

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

&gt; LayoutTests/fast/canvas/script-tests/pattern-with-settransform.js:53
&gt; +var svgElement = document.createElementNS(&quot;http://www.w3.org/2000/svg&quot;, &quot;svg&quot;);
&gt; +var matrix = svgElement.createSVGMatrix();

Does new SVGMatrix() not work?

&gt; LayoutTests/fast/canvas/script-tests/pattern-with-settransform.js:55
&gt; +matrix = matrix.translate(20, 20);
&gt; +pattern.setTransform(matrix);

I think you need some more complex tests here. e.g. drawing a transformed pattern when the context is already transformed. Testing transforms like rotates and skews. Testing that clipping of such transforms works.

&gt; Source/WebCore/html/canvas/CanvasPattern.cpp:70
&gt; +    m_pattern-&gt;setPatternSpaceTransform(static_cast&lt;const AffineTransform&amp;&gt;(transform));

Why is the cast necessary? SVGMatrix _is_ a AffineTransform.

&gt; Source/WebCore/html/canvas/CanvasPattern.h:52
&gt; +#if ENABLE(SVG)
&gt; +        void setTransform(const SVGMatrix&amp;);
&gt; +#endif

It&apos;s unfortunate that this feature is tied to SVG, but I guess that&apos;s how the spec is.

&gt;&gt; Source/WebCore/svg/SVGMatrix.h:28
&gt;&gt; +#if USE(V8)
&gt;&gt; +// Only used from the bindings.
&gt;&gt; +#include &quot;SVGPropertyTearOff.h&quot;
&gt; 
&gt; It is solution that I found for building with V8.
&gt; 
&gt; Is it Ok? or I need advice, again.

Seems like this should be fixed on the V8 side, not here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670958</commentid>
    <comment_count>15</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-16 21:18:39 -0700</bug_when>
    <thetext>Thank you for reviewing.

(In reply to comment #14)
&gt; (From update of attachment 150051 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=150051&amp;action=review
&gt; 
&gt; &gt; LayoutTests/fast/canvas/script-tests/pattern-with-settransform.js:53
&gt; &gt; +var svgElement = document.createElementNS(&quot;http://www.w3.org/2000/svg&quot;, &quot;svg&quot;);
&gt; &gt; +var matrix = svgElement.createSVGMatrix();
&gt; 
&gt; Does new SVGMatrix() not work?

Yes, &apos;new SVGMatrix()&apos; works! sorry.
&gt; 
&gt; &gt; LayoutTests/fast/canvas/script-tests/pattern-with-settransform.js:55
&gt; &gt; +matrix = matrix.translate(20, 20);
&gt; &gt; +pattern.setTransform(matrix);
&gt; 
&gt; I think you need some more complex tests here. e.g. drawing a transformed pattern when the context is already transformed. Testing transforms like rotates and skews. Testing that clipping of such transforms works.

Ok, I&apos;ll update.
&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasPattern.cpp:70
&gt; &gt; +    m_pattern-&gt;setPatternSpaceTransform(static_cast&lt;const AffineTransform&amp;&gt;(transform));
&gt; 
&gt; Why is the cast necessary? SVGMatrix _is_ a AffineTransform.

It is not necessary. I&apos;ll fix it.
&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasPattern.h:52
&gt; &gt; +#if ENABLE(SVG)
&gt; &gt; +        void setTransform(const SVGMatrix&amp;);
&gt; &gt; +#endif
&gt; 
&gt; It&apos;s unfortunate that this feature is tied to SVG, but I guess that&apos;s how the spec is.

Do You mean &quot;#if ENABLE(SVG)&quot; is proper and I don&apos;t need to change it?
&gt; 
&gt; &gt;&gt; Source/WebCore/svg/SVGMatrix.h:28
&gt; &gt;&gt; +#if USE(V8)
&gt; &gt;&gt; +// Only used from the bindings.
&gt; &gt;&gt; +#include &quot;SVGPropertyTearOff.h&quot;
&gt; &gt; 
&gt; &gt; It is solution that I found for building with V8.
&gt; &gt; 
&gt; &gt; Is it Ok? or I need advice, again.
&gt; 
&gt; Seems like this should be fixed on the V8 side, not here.

I&apos;ll implement v8 binding in V8CanvasPatternCustom.cpp. Is it Ok?

However, I think the correct solution is to amend CodeGeneratorV8.pm, but I don&apos;t have enough knowledge.
If you think the later is correct, I&apos;ll guard &apos;#if !USE(V8)&apos; to CanvasPattern::setTransform and create new bug to enable CanvasPattern::setTransform on V8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829885</commentid>
    <comment_count>16</comment_count>
    <who name="kangax">kangax</who>
    <bug_when>2013-02-11 10:54:02 -0800</bug_when>
    <thetext>@Huang Dongsung Any progress on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830245</commentid>
    <comment_count>17</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-02-11 15:46:34 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; @Huang Dongsung Any progress on this?

Sorry. I forgot this. I&apos;ll update soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2035982</commentid>
    <comment_count>18</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2024-05-17 04:21:10 -0700</bug_when>
    <thetext>Isn&apos;t it supported now?

https://searchfox.org/wubkat/rev/7051b8f5cd90af80f03a58d74741cdb04c800b6e/Source/WebCore/html/canvas/CanvasPattern.cpp#75</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149858</attachid>
            <date>2012-06-27 19:49:42 -0700</date>
            <delta_ts>2012-06-28 04:30:20 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Support-pattern-transformations-in-canvas.patch</filename>
            <type>text/plain</type>
            <size>7547</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSBlMzdhZjYxMzc0ZTRhOWFiY2QwN2ZiMzY3YTFiMmQ2ZDI0YmM4ZTgwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFRodSwgMjggSnVuIDIwMTIgMDk6NDk6MTkgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBTdXBwb3J0IHBhdHRlcm4gdHJhbnNmb3JtYXRpb25zIGluIGNhbnZhcwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyODAwCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KCkNhbnZhcyB2NSBbMV0gc3VwcG9ydHMgdHJhbnNmb3JtYXRpb25zIGluIHBhdHRlcm5z
LgoKWzFdIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
bXVsdGlwYWdlL3RoZS1jYW52YXMtZWxlbWVudC5odG1sI2RvbS1jYW52YXNwYXR0ZXJuLXNldHRy
YW5zZm9ybQotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAxOSArKysrKysrCiAuLi4vY2FudmFzL3BhdHRlcm4td2l0aC1zZXR0cmFuc2Zv
cm0tZXhwZWN0ZWQudHh0ICB8ICAgMTAgKysrKwogLi4uL2Zhc3QvY2FudmFzL3BhdHRlcm4td2l0
aC1zZXR0cmFuc2Zvcm0uaHRtbCAgICAgfCAgIDEwICsrKysKIC4uLi9zY3JpcHQtdGVzdHMvcGF0
dGVybi13aXRoLXNldHRyYW5zZm9ybS5qcyAgICAgIHwgICA1OSArKysrKysrKysrKysrKysrKysr
KwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDE4ICsrKysrKwogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oICAg
ICAgICAgfCAgICA2ICsrCiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJu
LmlkbCAgICAgICB8ICAgIDEgKwogNyBmaWxlcyBjaGFuZ2VkLCAxMjMgaW5zZXJ0aW9ucygrKQog
Y3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3BhdHRlcm4td2l0aC1z
ZXR0cmFuc2Zvcm0tZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvcGF0dGVybi13aXRoLXNldHRyYW5zZm9ybS5odG1sCiBjcmVhdGUgbW9kZSAx
MDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL3BhdHRlcm4td2l0aC1z
ZXR0cmFuc2Zvcm0uanMKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWQyYzEzMS4uODI5Njg1OCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIyIEBACisyMDEyLTA2LTI3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAu
bmV0PgorCisgICAgICAgIFN1cHBvcnQgcGF0dGVybiB0cmFuc2Zvcm1hdGlvbnMgaW4gY2FudmFz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjgwMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENhbnZhcyB2
NSBbMV0gc3VwcG9ydHMgdHJhbnNmb3JtYXRpb25zIGluIHBhdHRlcm5zLgorCisgICAgICAgIFsx
XSBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRp
cGFnZS90aGUtY2FudmFzLWVsZW1lbnQuaHRtbCNkb20tY2FudmFzcGF0dGVybi1zZXR0cmFuc2Zv
cm0KKworICAgICAgICAqIGZhc3QvY2FudmFzL3BhdHRlcm4td2l0aC1zZXR0cmFuc2Zvcm0tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9wYXR0ZXJuLXdpdGgtc2V0
dHJhbnNmb3JtLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0
cy9wYXR0ZXJuLXdpdGgtc2V0dHJhbnNmb3JtLmpzOiBBZGRlZC4KKyAgICAgICAgKHBpeGVsVmFs
dWVBdCk6CisgICAgICAgIChwaXhlbFRvU3RyaW5nKToKKyAgICAgICAgKHBpeGVsU2hvdWxkQmUp
OgorICAgICAgICAoZmlsbFdpdGhDb2xvcik6CisKIDIwMTItMDYtMjYgIFJ5b3N1a2UgTml3YSAg
PHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3RvcCBjYWxsaW5nIG5vZGUoKSBhbmQgZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKSBpbiBjb21wYXJlUG9zaXRpb25zCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9wYXR0ZXJuLXdpdGgtc2V0dHJhbnNmb3JtLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3BhdHRlcm4td2l0aC1zZXR0cmFuc2Zvcm0t
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmNTVjZDgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9wYXR0ZXJuLXdpdGgt
c2V0dHJhbnNmb3JtLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IGZvciBDYW52
YXMgdjUgc3VwcG9ydGluZyB0cmFuc2Zvcm1hdGlvbnMgaW4gcGF0dGVybnMKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgcGl4ZWwgMjAsIDIwIGlzIFswLCAxMjgsIDAsIDI1
NV0KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9wYXR0ZXJuLXdpdGgtc2V0dHJhbnNm
b3JtLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9wYXR0ZXJuLXdpdGgtc2V0dHJhbnNm
b3JtLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU1MDFiMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3BhdHRlcm4td2l0aC1zZXR0
cmFuc2Zvcm0uaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcGF0dGVybi13aXRoLXNldHRyYW5zZm9ybS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvcGF0dGVybi13aXRoLXNldHRyYW5zZm9ybS5qcyBiL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9wYXR0ZXJuLXdpdGgtc2V0dHJhbnNmb3JtLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3ZWVkMzEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvcGF0dGVybi13aXRo
LXNldHRyYW5zZm9ybS5qcwpAQCAtMCwwICsxLDU5IEBACitkZXNjcmlwdGlvbigiVGVzdCBmb3Ig
Q2FudmFzIHY1IHN1cHBvcnRpbmcgdHJhbnNmb3JtYXRpb25zIGluIHBhdHRlcm5zIik7CisKK2Z1
bmN0aW9uIHBpeGVsVmFsdWVBdChjb250ZXh0LCB4LCB5KSB7CisgICAgdmFyIGltYWdlRGF0YSA9
IGNvbnRleHQuZ2V0SW1hZ2VEYXRhKHgsIHksIDEsIDEpOworICAgIHJldHVybiBpbWFnZURhdGEu
ZGF0YTsKK30KKworZnVuY3Rpb24gcGl4ZWxUb1N0cmluZyhwKSB7CisgICAgcmV0dXJuICJbIiAr
IHBbMF0gKyAiLCAiICsgcFsxXSArICIsICIgKyBwWzJdICsgIiwgIiArIHBbM10gKyAiXSIKK30K
KworZnVuY3Rpb24gcGl4ZWxTaG91bGRCZShjb250ZXh0LCB4LCB5LCBleHBlY3RlZFBpeGVsU3Ry
aW5nKSB7CisgICAgdmFyIHBpeGVsID0gcGl4ZWxWYWx1ZUF0KGNvbnRleHQsIHgsIHkpOworICAg
IHZhciBleHBlY3RlZFBpeGVsID0gZXZhbChleHBlY3RlZFBpeGVsU3RyaW5nKTsKKworICAgIHZh
ciBwaXhlbFN0cmluZyA9ICJwaXhlbCAiICsgeCArICIsICIgKyB5OworICAgIGlmIChhcmVBcnJh
eXNFcXVhbChwaXhlbCwgZXhwZWN0ZWRQaXhlbCkpIHsKKyAgICAgICAgdGVzdFBhc3NlZChwaXhl
bFN0cmluZyArICIgaXMgIiArIHBpeGVsVG9TdHJpbmcocGl4ZWwpKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICB0ZXN0RmFpbGVkKHBpeGVsU3RyaW5nICsgIiBzaG91bGQgYmUgIiArIHBpeGVsVG9T
dHJpbmcoZXhwZWN0ZWRQaXhlbCkgKyAiIHdhcyAiICsgcGl4ZWxUb1N0cmluZyhwaXhlbCkpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gZmlsbFdpdGhDb2xvcihjb250ZXh0LCBjb2xvcikgeworICAg
IGNvbnRleHQuc2F2ZSgpOworICAgIGNvbnRleHQuZmlsbFN0eWxlID0gY29sb3I7CisgICAgY29u
dGV4dC5maWxsUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworICAgIGNv
bnRleHQucmVzdG9yZSgpOworfQorCit2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiY2FudmFzIik7CitjYW52YXMuaGVpZ2h0ID0gMTAwOworY2FudmFzLndpZHRoID0gMTAwOwor
Y2FudmFzLnN0eWxlLmhlaWdodCA9ICIxMDAiOworY2FudmFzLnN0eWxlLndpZHRoID0gIjEwMCI7
CisKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTsKKwordmFyIHBhdHRlcm5JbWFn
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworcGF0dGVybkltYWdlLmhlaWdo
dCA9IDEwOworcGF0dGVybkltYWdlLndpZHRoID0gMTA7Cit2YXIgcGF0dGVybkltYWdlQ3R4ID0g
cGF0dGVybkltYWdlLmdldENvbnRleHQoJzJkJyk7CitmaWxsV2l0aENvbG9yKHBhdHRlcm5JbWFn
ZUN0eCwgImdyZWVuIik7Cit2YXIgZ3JlZW5QaXhlbCA9IHBpeGVsVmFsdWVBdChwYXR0ZXJuSW1h
Z2VDdHgsIDAsIDApOworCisKK3ZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKK3Zh
ciBwYXR0ZXJuID0gY3R4LmNyZWF0ZVBhdHRlcm4ocGF0dGVybkltYWdlLCAibm8tcmVwZWF0Iik7
CisKK2ZpbGxXaXRoQ29sb3IoY3R4LCAiYmx1ZSIpOworCit2YXIgc3ZnRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAic3ZnIik7
Cit2YXIgbWF0cml4ID0gc3ZnRWxlbWVudC5jcmVhdGVTVkdNYXRyaXgoKTsKK21hdHJpeCA9IG1h
dHJpeC50cmFuc2xhdGUoMjAsIDIwKTsKK3BhdHRlcm4uc2V0VHJhbnNmb3JtKG1hdHJpeCk7CisK
K2N0eC5maWxsU3R5bGUgPSBwYXR0ZXJuOworY3R4LmZpbGxSZWN0KDAsIDAsIDMwLCAzMCk7Citw
aXhlbFNob3VsZEJlKGN0eCwgMjAsIDIwLCAiZ3JlZW5QaXhlbCIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVl
NmEwMDMuLmQ2ODcyN2IgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNi0yNyAg
SHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBTdXBw
b3J0IHBhdHRlcm4gdHJhbnNmb3JtYXRpb25zIGluIGNhbnZhcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI4MDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYW52YXMgdjUgWzFdIHN1cHBvcnRzIHRyYW5z
Zm9ybWF0aW9ucyBpbiBwYXR0ZXJucy4KKworICAgICAgICBbMV0gaHR0cDovL3d3dy53aGF0d2cu
b3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWNhbnZhcy1lbGVt
ZW50Lmh0bWwjZG9tLWNhbnZhc3BhdHRlcm4tc2V0dHJhbnNmb3JtCisKKyAgICAgICAgQWRkIGEg
dGVzdDogZmFzdC9jYW52YXMvcGF0dGVybi13aXRoLXNldHRyYW5zZm9ybS5odG1sCisKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmg6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNQYXR0ZXJuOjpzZXRUcmFuc2Zvcm0pOgorICAgICAgICAoQ2FudmFzUGF0dGVybik6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5pZGw6CisKIDIwMTItMDYtMjYgIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3RvcCBjYWxsaW5nIG5vZGUo
KSBhbmQgZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSBpbiBjb21wYXJlUG9zaXRpb25zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmgKaW5kZXggNTg4NDhhOS4uNDY5
YjMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVy
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaApAQCAt
MjcsNiArMjcsNyBAQAogI2RlZmluZSBDYW52YXNQYXR0ZXJuX2gKIAogI2luY2x1ZGUgIlBhdHRl
cm4uaCIKKyNpbmNsdWRlICJTVkdNYXRyaXguaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
QEAgLTQ2LDYgKzQ3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQ2FudmFzUGF0dGVybihpbWFnZSwgcmVwZWF0WCwgcmVwZWF0WSwgb3Jp
Z2luQ2xlYW4pKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0
IFNWR01hdHJpeCYgdHJhbnNmb3JtKQorICAgICAgICB7CisgICAgICAgICAgICBtX3BhdHRlcm4t
PnNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybShzdGF0aWNfY2FzdDxjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mPih0cmFuc2Zvcm0pKTsKKyAgICAgICAgfQorCiAgICAgICAgIFBhdHRlcm4qIHBhdHRlcm4o
KSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4uZ2V0KCk7IH0KIAogICAgICAgICBib29sIG9yaWdp
bkNsZWFuKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5DbGVhbjsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmlkbAppbmRleCBlNWFhMDM2Li41MzhmYjJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmlkbApAQCAtMjYs
NiArMjYsNyBAQAogbW9kdWxlIGh0bWwgewogCiAgICAgaW50ZXJmYWNlIENhbnZhc1BhdHRlcm4g
eworICAgICAgICB2b2lkIHNldFRyYW5zZm9ybShpbiBTVkdNYXRyaXggdHJhbnNmb3JtKTsKICAg
ICB9OwogCiB9Ci0tIAoxLjcuOS41Cgo=
</data>
<flag name="commit-queue"
          id="157968"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149923</attachid>
            <date>2012-06-28 04:30:20 -0700</date>
            <delta_ts>2012-06-28 05:15:16 -0700</delta_ts>
            <desc>patch v.2</desc>
            <filename>0001-Support-pattern-transformations-in-canvas.patch</filename>
            <type>text/plain</type>
            <size>8159</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSBlZWU2MDczNGViNDgzMjYzYmEzN2I5OTI3NzZiNzkwOWFmZDY3Y2Y4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFRodSwgMjggSnVuIDIwMTIgMDk6NDk6MTkgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBTdXBwb3J0IHBhdHRlcm4gdHJhbnNmb3JtYXRpb25zIGluIGNhbnZhcwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyODAwCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KCkNhbnZhcyB2NSBbMV0gc3VwcG9ydHMgdHJhbnNmb3JtYXRpb25zIGluIHBhdHRlcm5z
LgoKWzFdIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
bXVsdGlwYWdlL3RoZS1jYW52YXMtZWxlbWVudC5odG1sI2RvbS1jYW52YXNwYXR0ZXJuLXNldHRy
YW5zZm9ybQotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAxOSArKysrKysrCiAuLi4vY2FudmFzL3BhdHRlcm4td2l0aC1zZXR0cmFuc2Zv
cm0tZXhwZWN0ZWQudHh0ICB8ICAgMTAgKysrKwogLi4uL2Zhc3QvY2FudmFzL3BhdHRlcm4td2l0
aC1zZXR0cmFuc2Zvcm0uaHRtbCAgICAgfCAgIDEwICsrKysKIC4uLi9zY3JpcHQtdGVzdHMvcGF0
dGVybi13aXRoLXNldHRyYW5zZm9ybS5qcyAgICAgIHwgICA1OSArKysrKysrKysrKysrKysrKysr
KwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDIwICsrKysrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3Bw
ICAgICAgIHwgICAgNyArKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRl
cm4uaCAgICAgICAgIHwgICAgNSArKwogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UGF0dGVybi5pZGwgICAgICAgfCAgICAzICsKIDggZmlsZXMgY2hhbmdlZCwgMTMzIGluc2VydGlv
bnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9wYXR0ZXJu
LXdpdGgtc2V0dHJhbnNmb3JtLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3BhdHRlcm4td2l0aC1zZXR0cmFuc2Zvcm0uaHRtbAogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9wYXR0ZXJu
LXdpdGgtc2V0dHJhbnNmb3JtLmpzCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVkMmMxMzEuLjgyOTY4NTggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMiBAQAorMjAxMi0wNi0yNyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21w
YW55MTAwLm5ldD4KKworICAgICAgICBTdXBwb3J0IHBhdHRlcm4gdHJhbnNmb3JtYXRpb25zIGlu
IGNhbnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODI4MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
YW52YXMgdjUgWzFdIHN1cHBvcnRzIHRyYW5zZm9ybWF0aW9ucyBpbiBwYXR0ZXJucy4KKworICAg
ICAgICBbMV0gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29y
ay9tdWx0aXBhZ2UvdGhlLWNhbnZhcy1lbGVtZW50Lmh0bWwjZG9tLWNhbnZhc3BhdHRlcm4tc2V0
dHJhbnNmb3JtCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9wYXR0ZXJuLXdpdGgtc2V0dHJhbnNm
b3JtLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvcGF0dGVybi13
aXRoLXNldHRyYW5zZm9ybS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9zY3Jp
cHQtdGVzdHMvcGF0dGVybi13aXRoLXNldHRyYW5zZm9ybS5qczogQWRkZWQuCisgICAgICAgIChw
aXhlbFZhbHVlQXQpOgorICAgICAgICAocGl4ZWxUb1N0cmluZyk6CisgICAgICAgIChwaXhlbFNo
b3VsZEJlKToKKyAgICAgICAgKGZpbGxXaXRoQ29sb3IpOgorCiAyMDEyLTA2LTI2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFN0b3AgY2FsbGluZyBub2RlKCkg
YW5kIGRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgaW4gY29tcGFyZVBvc2l0aW9ucwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcGF0dGVybi13aXRoLXNldHRyYW5zZm9ybS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9wYXR0ZXJuLXdpdGgtc2V0dHJh
bnNmb3JtLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45
ZjU1Y2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcGF0dGVy
bi13aXRoLXNldHRyYW5zZm9ybS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBm
b3IgQ2FudmFzIHY1IHN1cHBvcnRpbmcgdHJhbnNmb3JtYXRpb25zIGluIHBhdHRlcm5zCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBpeGVsIDIwLCAyMCBpcyBbMCwgMTI4
LCAwLCAyNTVdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcGF0dGVybi13aXRoLXNl
dHRyYW5zZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcGF0dGVybi13aXRoLXNl
dHRyYW5zZm9ybS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NTAx
YjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9wYXR0ZXJuLXdp
dGgtc2V0dHJhbnNmb3JtLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3BhdHRlcm4td2l0aC1zZXR0cmFuc2Zvcm0u
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL3BhdHRlcm4td2l0aC1zZXR0cmFuc2Zvcm0uanMgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvcGF0dGVybi13aXRoLXNldHRyYW5z
Zm9ybS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2VlZDMxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL3BhdHRl
cm4td2l0aC1zZXR0cmFuc2Zvcm0uanMKQEAgLTAsMCArMSw1OSBAQAorZGVzY3JpcHRpb24oIlRl
c3QgZm9yIENhbnZhcyB2NSBzdXBwb3J0aW5nIHRyYW5zZm9ybWF0aW9ucyBpbiBwYXR0ZXJucyIp
OworCitmdW5jdGlvbiBwaXhlbFZhbHVlQXQoY29udGV4dCwgeCwgeSkgeworICAgIHZhciBpbWFn
ZURhdGEgPSBjb250ZXh0LmdldEltYWdlRGF0YSh4LCB5LCAxLCAxKTsKKyAgICByZXR1cm4gaW1h
Z2VEYXRhLmRhdGE7Cit9CisKK2Z1bmN0aW9uIHBpeGVsVG9TdHJpbmcocCkgeworICAgIHJldHVy
biAiWyIgKyBwWzBdICsgIiwgIiArIHBbMV0gKyAiLCAiICsgcFsyXSArICIsICIgKyBwWzNdICsg
Il0iCit9CisKK2Z1bmN0aW9uIHBpeGVsU2hvdWxkQmUoY29udGV4dCwgeCwgeSwgZXhwZWN0ZWRQ
aXhlbFN0cmluZykgeworICAgIHZhciBwaXhlbCA9IHBpeGVsVmFsdWVBdChjb250ZXh0LCB4LCB5
KTsKKyAgICB2YXIgZXhwZWN0ZWRQaXhlbCA9IGV2YWwoZXhwZWN0ZWRQaXhlbFN0cmluZyk7CisK
KyAgICB2YXIgcGl4ZWxTdHJpbmcgPSAicGl4ZWwgIiArIHggKyAiLCAiICsgeTsKKyAgICBpZiAo
YXJlQXJyYXlzRXF1YWwocGl4ZWwsIGV4cGVjdGVkUGl4ZWwpKSB7CisgICAgICAgIHRlc3RQYXNz
ZWQocGl4ZWxTdHJpbmcgKyAiIGlzICIgKyBwaXhlbFRvU3RyaW5nKHBpeGVsKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZChwaXhlbFN0cmluZyArICIgc2hvdWxkIGJlICIgKyBw
aXhlbFRvU3RyaW5nKGV4cGVjdGVkUGl4ZWwpICsgIiB3YXMgIiArIHBpeGVsVG9TdHJpbmcocGl4
ZWwpKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGZpbGxXaXRoQ29sb3IoY29udGV4dCwgY29sb3Ip
IHsKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGNvbG9yOwor
ICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsK
KyAgICBjb250ZXh0LnJlc3RvcmUoKTsKK30KKwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImNhbnZhcyIpOworY2FudmFzLmhlaWdodCA9IDEwMDsKK2NhbnZhcy53aWR0aCA9
IDEwMDsKK2NhbnZhcy5zdHlsZS5oZWlnaHQgPSAiMTAwIjsKK2NhbnZhcy5zdHlsZS53aWR0aCA9
ICIxMDAiOworCitkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7CisKK3ZhciBwYXR0
ZXJuSW1hZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKK3BhdHRlcm5JbWFn
ZS5oZWlnaHQgPSAxMDsKK3BhdHRlcm5JbWFnZS53aWR0aCA9IDEwOwordmFyIHBhdHRlcm5JbWFn
ZUN0eCA9IHBhdHRlcm5JbWFnZS5nZXRDb250ZXh0KCcyZCcpOworZmlsbFdpdGhDb2xvcihwYXR0
ZXJuSW1hZ2VDdHgsICJncmVlbiIpOwordmFyIGdyZWVuUGl4ZWwgPSBwaXhlbFZhbHVlQXQocGF0
dGVybkltYWdlQ3R4LCAwLCAwKTsKKworCit2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJk
Jyk7Cit2YXIgcGF0dGVybiA9IGN0eC5jcmVhdGVQYXR0ZXJuKHBhdHRlcm5JbWFnZSwgIm5vLXJl
cGVhdCIpOworCitmaWxsV2l0aENvbG9yKGN0eCwgImJsdWUiKTsKKwordmFyIHN2Z0VsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwg
InN2ZyIpOwordmFyIG1hdHJpeCA9IHN2Z0VsZW1lbnQuY3JlYXRlU1ZHTWF0cml4KCk7CittYXRy
aXggPSBtYXRyaXgudHJhbnNsYXRlKDIwLCAyMCk7CitwYXR0ZXJuLnNldFRyYW5zZm9ybShtYXRy
aXgpOworCitjdHguZmlsbFN0eWxlID0gcGF0dGVybjsKK2N0eC5maWxsUmVjdCgwLCAwLCAzMCwg
MzApOworcGl4ZWxTaG91bGRCZShjdHgsIDIwLCAyMCwgImdyZWVuUGl4ZWwiKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA1ZTZhMDAzLi5lNGFkZTdiIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTIt
MDYtMjggIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAg
ICAgU3VwcG9ydCBwYXR0ZXJuIHRyYW5zZm9ybWF0aW9ucyBpbiBjYW52YXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyODAwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FudmFzIHY1IFsxXSBzdXBwb3J0
cyB0cmFuc2Zvcm1hdGlvbnMgaW4gcGF0dGVybnMuCisKKyAgICAgICAgWzFdIGh0dHA6Ly93d3cu
d2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1jYW52
YXMtZWxlbWVudC5odG1sI2RvbS1jYW52YXNwYXR0ZXJuLXNldHRyYW5zZm9ybQorCisgICAgICAg
IEFkZCBhIHRlc3Q6IGZhc3QvY2FudmFzL3BhdHRlcm4td2l0aC1zZXR0cmFuc2Zvcm0uaHRtbAor
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1BhdHRlcm46OnNldFRyYW5zZm9ybSk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oOgorICAgICAgICAoQ2FudmFzUGF0
dGVybik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5pZGw6CisKIDIwMTIt
MDYtMjYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3RvcCBj
YWxsaW5nIG5vZGUoKSBhbmQgZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSBpbiBjb21wYXJlUG9z
aXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0
ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwCmlu
ZGV4IDgxOGQ3ZDMuLjc1MjJjYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1BhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1BhdHRlcm4uY3BwCkBAIC02Myw0ICs2MywxMSBAQCBDYW52YXNQYXR0ZXJuOjpDYW52YXNQ
YXR0ZXJuKFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0
WQogewogfQogCisjaWYgRU5BQkxFKFNWRykKK3ZvaWQgQ2FudmFzUGF0dGVybjo6c2V0VHJhbnNm
b3JtKGNvbnN0IFNWR01hdHJpeCYgdHJhbnNmb3JtKQoreworICAgIG1fcGF0dGVybi0+c2V0UGF0
dGVyblNwYWNlVHJhbnNmb3JtKHN0YXRpY19jYXN0PGNvbnN0IEFmZmluZVRyYW5zZm9ybSY+KHRy
YW5zZm9ybSkpOworfQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1BhdHRlcm4uaAppbmRleCA1ODg0OGE5Li4yNThjMGIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIENh
bnZhc1BhdHRlcm5faAogCiAjaW5jbHVkZSAiUGF0dGVybi5oIgorI2luY2x1ZGUgIlNWR01hdHJp
eC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDYsNiArNDcsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNQYXR0
ZXJuKGltYWdlLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikpOwogICAgICAgICB9CiAK
KyNpZiBFTkFCTEUoU1ZHKQorICAgICAgICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBTVkdNYXRy
aXgmIHRyYW5zZm9ybSk7CisjZW5kaWYKKwogICAgICAgICBQYXR0ZXJuKiBwYXR0ZXJuKCkgY29u
c3QgeyByZXR1cm4gbV9wYXR0ZXJuLmdldCgpOyB9CiAKICAgICAgICAgYm9vbCBvcmlnaW5DbGVh
bigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luQ2xlYW47IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaWRsIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUGF0dGVybi5pZGwKaW5kZXggZTVhYTAzNi4uNThkZGQ0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5pZGwKQEAgLTI2LDYgKzI2
LDkgQEAKIG1vZHVsZSBodG1sIHsKIAogICAgIGludGVyZmFjZSBDYW52YXNQYXR0ZXJuIHsKKyNp
ZiBkZWZpbmVkKEVOQUJMRV9TVkcpICYmIEVOQUJMRV9TVkcKKyAgICAgICAgdm9pZCBzZXRUcmFu
c2Zvcm0oaW4gU1ZHTWF0cml4IHRyYW5zZm9ybSk7CisjZW5kaWYKICAgICB9OwogCiB9Ci0tIAox
LjcuOS41Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149930</attachid>
            <date>2012-06-28 05:15:16 -0700</date>
            <delta_ts>2012-06-28 17:46:37 -0700</delta_ts>
            <desc>patch v.3</desc>
            <filename>0001-Support-pattern-transformations-in-canvas.patch</filename>
            <type>text/plain</type>
            <size>8215</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSBiODhjZjQ0N2M4YjAxZmFkM2Q1M2YyMzg5OTk5MmZjMGZhYzlkMTBiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFRodSwgMjggSnVuIDIwMTIgMDk6NDk6MTkgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBTdXBwb3J0IHBhdHRlcm4gdHJhbnNmb3JtYXRpb25zIGluIGNhbnZhcwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyODAwCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KCkNhbnZhcyB2NSBbMV0gc3VwcG9ydHMgdHJhbnNmb3JtYXRpb25zIGluIHBhdHRlcm5z
LgoKWzFdIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
bXVsdGlwYWdlL3RoZS1jYW52YXMtZWxlbWVudC5odG1sI2RvbS1jYW52YXNwYXR0ZXJuLXNldHRy
YW5zZm9ybQotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAxOSArKysrKysrCiAuLi4vY2FudmFzL3BhdHRlcm4td2l0aC1zZXR0cmFuc2Zv
cm0tZXhwZWN0ZWQudHh0ICB8ICAgMTAgKysrKwogLi4uL2Zhc3QvY2FudmFzL3BhdHRlcm4td2l0
aC1zZXR0cmFuc2Zvcm0uaHRtbCAgICAgfCAgIDEwICsrKysKIC4uLi9zY3JpcHQtdGVzdHMvcGF0
dGVybi13aXRoLXNldHRyYW5zZm9ybS5qcyAgICAgIHwgICA1OSArKysrKysrKysrKysrKysrKysr
KwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDIwICsrKysrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3Bw
ICAgICAgIHwgICAgNyArKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRl
cm4uaCAgICAgICAgIHwgICAgOCArKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1BhdHRlcm4uaWRsICAgICAgIHwgICAgMyArCiA4IGZpbGVzIGNoYW5nZWQsIDEzNiBpbnNlcnRp
b25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcGF0dGVy
bi13aXRoLXNldHRyYW5zZm9ybS1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9wYXR0ZXJuLXdpdGgtc2V0dHJhbnNmb3JtLmh0bWwKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvcGF0dGVy
bi13aXRoLXNldHRyYW5zZm9ybS5qcwoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZDJjMTMxLi44Mjk2ODU4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTItMDYtMjcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29t
cGFueTEwMC5uZXQ+CisKKyAgICAgICAgU3VwcG9ydCBwYXR0ZXJuIHRyYW5zZm9ybWF0aW9ucyBp
biBjYW52YXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgyODAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q2FudmFzIHY1IFsxXSBzdXBwb3J0cyB0cmFuc2Zvcm1hdGlvbnMgaW4gcGF0dGVybnMuCisKKyAg
ICAgICAgWzFdIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdv
cmsvbXVsdGlwYWdlL3RoZS1jYW52YXMtZWxlbWVudC5odG1sI2RvbS1jYW52YXNwYXR0ZXJuLXNl
dHRyYW5zZm9ybQorCisgICAgICAgICogZmFzdC9jYW52YXMvcGF0dGVybi13aXRoLXNldHRyYW5z
Zm9ybS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3BhdHRlcm4t
d2l0aC1zZXR0cmFuc2Zvcm0uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvc2Ny
aXB0LXRlc3RzL3BhdHRlcm4td2l0aC1zZXR0cmFuc2Zvcm0uanM6IEFkZGVkLgorICAgICAgICAo
cGl4ZWxWYWx1ZUF0KToKKyAgICAgICAgKHBpeGVsVG9TdHJpbmcpOgorICAgICAgICAocGl4ZWxT
aG91bGRCZSk6CisgICAgICAgIChmaWxsV2l0aENvbG9yKToKKwogMjAxMi0wNi0yNiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBTdG9wIGNhbGxpbmcgbm9kZSgp
IGFuZCBkZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIGluIGNvbXBhcmVQb3NpdGlvbnMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3BhdHRlcm4td2l0aC1zZXR0cmFuc2Zvcm0t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcGF0dGVybi13aXRoLXNldHRy
YW5zZm9ybS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OWY1NWNkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3BhdHRl
cm4td2l0aC1zZXR0cmFuc2Zvcm0tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3Qg
Zm9yIENhbnZhcyB2NSBzdXBwb3J0aW5nIHRyYW5zZm9ybWF0aW9ucyBpbiBwYXR0ZXJucworCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBwaXhlbCAyMCwgMjAgaXMgWzAsIDEy
OCwgMCwgMjU1XQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3BhdHRlcm4td2l0aC1z
ZXR0cmFuc2Zvcm0uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3BhdHRlcm4td2l0aC1z
ZXR0cmFuc2Zvcm0uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTUw
MWIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcGF0dGVybi13
aXRoLXNldHRyYW5zZm9ybS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9wYXR0ZXJuLXdpdGgtc2V0dHJhbnNmb3Jt
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9wYXR0ZXJuLXdpdGgtc2V0dHJhbnNmb3JtLmpzIGIv
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL3BhdHRlcm4td2l0aC1zZXR0cmFu
c2Zvcm0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdlZWQzMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9wYXR0
ZXJuLXdpdGgtc2V0dHJhbnNmb3JtLmpzCkBAIC0wLDAgKzEsNTkgQEAKK2Rlc2NyaXB0aW9uKCJU
ZXN0IGZvciBDYW52YXMgdjUgc3VwcG9ydGluZyB0cmFuc2Zvcm1hdGlvbnMgaW4gcGF0dGVybnMi
KTsKKworZnVuY3Rpb24gcGl4ZWxWYWx1ZUF0KGNvbnRleHQsIHgsIHkpIHsKKyAgICB2YXIgaW1h
Z2VEYXRhID0gY29udGV4dC5nZXRJbWFnZURhdGEoeCwgeSwgMSwgMSk7CisgICAgcmV0dXJuIGlt
YWdlRGF0YS5kYXRhOworfQorCitmdW5jdGlvbiBwaXhlbFRvU3RyaW5nKHApIHsKKyAgICByZXR1
cm4gIlsiICsgcFswXSArICIsICIgKyBwWzFdICsgIiwgIiArIHBbMl0gKyAiLCAiICsgcFszXSAr
ICJdIgorfQorCitmdW5jdGlvbiBwaXhlbFNob3VsZEJlKGNvbnRleHQsIHgsIHksIGV4cGVjdGVk
UGl4ZWxTdHJpbmcpIHsKKyAgICB2YXIgcGl4ZWwgPSBwaXhlbFZhbHVlQXQoY29udGV4dCwgeCwg
eSk7CisgICAgdmFyIGV4cGVjdGVkUGl4ZWwgPSBldmFsKGV4cGVjdGVkUGl4ZWxTdHJpbmcpOwor
CisgICAgdmFyIHBpeGVsU3RyaW5nID0gInBpeGVsICIgKyB4ICsgIiwgIiArIHk7CisgICAgaWYg
KGFyZUFycmF5c0VxdWFsKHBpeGVsLCBleHBlY3RlZFBpeGVsKSkgeworICAgICAgICB0ZXN0UGFz
c2VkKHBpeGVsU3RyaW5nICsgIiBpcyAiICsgcGl4ZWxUb1N0cmluZyhwaXhlbCkpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQocGl4ZWxTdHJpbmcgKyAiIHNob3VsZCBiZSAiICsg
cGl4ZWxUb1N0cmluZyhleHBlY3RlZFBpeGVsKSArICIgd2FzICIgKyBwaXhlbFRvU3RyaW5nKHBp
eGVsKSk7CisgICAgfQorfQorCitmdW5jdGlvbiBmaWxsV2l0aENvbG9yKGNvbnRleHQsIGNvbG9y
KSB7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5maWxsU3R5bGUgPSBjb2xvcjsK
KyAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7
CisgICAgY29udGV4dC5yZXN0b3JlKCk7Cit9CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJjYW52YXMiKTsKK2NhbnZhcy5oZWlnaHQgPSAxMDA7CitjYW52YXMud2lkdGgg
PSAxMDA7CitjYW52YXMuc3R5bGUuaGVpZ2h0ID0gIjEwMCI7CitjYW52YXMuc3R5bGUud2lkdGgg
PSAiMTAwIjsKKworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjYW52YXMpOworCit2YXIgcGF0
dGVybkltYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CitwYXR0ZXJuSW1h
Z2UuaGVpZ2h0ID0gMTA7CitwYXR0ZXJuSW1hZ2Uud2lkdGggPSAxMDsKK3ZhciBwYXR0ZXJuSW1h
Z2VDdHggPSBwYXR0ZXJuSW1hZ2UuZ2V0Q29udGV4dCgnMmQnKTsKK2ZpbGxXaXRoQ29sb3IocGF0
dGVybkltYWdlQ3R4LCAiZ3JlZW4iKTsKK3ZhciBncmVlblBpeGVsID0gcGl4ZWxWYWx1ZUF0KHBh
dHRlcm5JbWFnZUN0eCwgMCwgMCk7CisKKwordmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcy
ZCcpOwordmFyIHBhdHRlcm4gPSBjdHguY3JlYXRlUGF0dGVybihwYXR0ZXJuSW1hZ2UsICJuby1y
ZXBlYXQiKTsKKworZmlsbFdpdGhDb2xvcihjdHgsICJibHVlIik7CisKK3ZhciBzdmdFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJzdmciKTsKK3ZhciBtYXRyaXggPSBzdmdFbGVtZW50LmNyZWF0ZVNWR01hdHJpeCgpOworbWF0
cml4ID0gbWF0cml4LnRyYW5zbGF0ZSgyMCwgMjApOworcGF0dGVybi5zZXRUcmFuc2Zvcm0obWF0
cml4KTsKKworY3R4LmZpbGxTdHlsZSA9IHBhdHRlcm47CitjdHguZmlsbFJlY3QoMCwgMCwgMzAs
IDMwKTsKK3BpeGVsU2hvdWxkQmUoY3R4LCAyMCwgMjAsICJncmVlblBpeGVsIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggNWU2YTAwMy4uZTRhZGU3YiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEy
LTA2LTI4ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAg
ICAgIFN1cHBvcnQgcGF0dGVybiB0cmFuc2Zvcm1hdGlvbnMgaW4gY2FudmFzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjgwMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENhbnZhcyB2NSBbMV0gc3VwcG9y
dHMgdHJhbnNmb3JtYXRpb25zIGluIHBhdHRlcm5zLgorCisgICAgICAgIFsxXSBodHRwOi8vd3d3
LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtY2Fu
dmFzLWVsZW1lbnQuaHRtbCNkb20tY2FudmFzcGF0dGVybi1zZXR0cmFuc2Zvcm0KKworICAgICAg
ICBBZGQgYSB0ZXN0OiBmYXN0L2NhbnZhcy9wYXR0ZXJuLXdpdGgtc2V0dHJhbnNmb3JtLmh0bWwK
KworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNQYXR0ZXJuOjpzZXRUcmFuc2Zvcm0pOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaDoKKyAgICAgICAgKENhbnZhc1Bh
dHRlcm4pOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaWRsOgorCiAyMDEy
LTA2LTI2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFN0b3Ag
Y2FsbGluZyBub2RlKCkgYW5kIGRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgaW4gY29tcGFyZVBv
c2l0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0
dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcApp
bmRleCA4MThkN2QzLi43NTIyY2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNQYXR0ZXJuLmNwcApAQCAtNjMsNCArNjMsMTEgQEAgQ2FudmFzUGF0dGVybjo6Q2FudmFz
UGF0dGVybihQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVh
dFkKIHsKIH0KIAorI2lmIEVOQUJMRShTVkcpCit2b2lkIENhbnZhc1BhdHRlcm46OnNldFRyYW5z
Zm9ybShjb25zdCBTVkdNYXRyaXgmIHRyYW5zZm9ybSkKK3sKKyAgICBtX3BhdHRlcm4tPnNldFBh
dHRlcm5TcGFjZVRyYW5zZm9ybShzdGF0aWNfY2FzdDxjb25zdCBBZmZpbmVUcmFuc2Zvcm0mPih0
cmFuc2Zvcm0pKTsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNQYXR0ZXJuLmgKaW5kZXggNTg4NDhhOS4uZTFlYzMzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaApAQCAtMjcsNiArMjcsMTAgQEAKICNkZWZpbmUg
Q2FudmFzUGF0dGVybl9oCiAKICNpbmNsdWRlICJQYXR0ZXJuLmgiCisjaW5jbHVkZSAiU1ZHTWF0
cml4LmgiCisjaWYgVVNFKFY4KQorI2luY2x1ZGUgIlNWR1Byb3BlcnR5VGVhck9mZi5oIgorI2Vu
ZGlmCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00Niw2ICs1MCwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1BhdHRl
cm4oaW1hZ2UsIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSk7CiAgICAgICAgIH0KIAor
I2lmIEVOQUJMRShTVkcpCisgICAgICAgIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFNWR01hdHJp
eCYgdHJhbnNmb3JtKTsKKyNlbmRpZgorCiAgICAgICAgIFBhdHRlcm4qIHBhdHRlcm4oKSBjb25z
dCB7IHJldHVybiBtX3BhdHRlcm4uZ2V0KCk7IH0KIAogICAgICAgICBib29sIG9yaWdpbkNsZWFu
KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5DbGVhbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNQYXR0ZXJuLmlkbAppbmRleCBlNWFhMDM2Li41OGRkZDRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmlkbApAQCAtMjYsNiArMjYs
OSBAQAogbW9kdWxlIGh0bWwgewogCiAgICAgaW50ZXJmYWNlIENhbnZhc1BhdHRlcm4geworI2lm
IGRlZmluZWQoRU5BQkxFX1NWRykgJiYgRU5BQkxFX1NWRworICAgICAgICB2b2lkIHNldFRyYW5z
Zm9ybShpbiBTVkdNYXRyaXggdHJhbnNmb3JtKTsKKyNlbmRpZgogICAgIH07CiAKIH0KLS0gCjEu
Ny45LjUKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150051</attachid>
            <date>2012-06-28 17:46:37 -0700</date>
            <delta_ts>2012-07-16 11:05:04 -0700</delta_ts>
            <desc>patch v.4</desc>
            <filename>0001-Support-pattern-transformations-in-canvas.patch</filename>
            <type>text/plain</type>
            <size>8714</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSA1YTBmM2I2ZjBjODkzNDM2YzE2Y2Y1MDMxODVmODY5OGE3Y2RkN2FmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFRodSwgMjggSnVuIDIwMTIgMDk6NDk6MTkgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBTdXBwb3J0IHBhdHRlcm4gdHJhbnNmb3JtYXRpb25zIGluIGNhbnZhcwogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyODAwCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KCkNhbnZhcyB2NSBbMV0gc3VwcG9ydHMgdHJhbnNmb3JtYXRpb25zIGluIHBhdHRlcm5z
LgoKWzFdIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
bXVsdGlwYWdlL3RoZS1jYW52YXMtZWxlbWVudC5odG1sI2RvbS1jYW52YXNwYXR0ZXJuLXNldHRy
YW5zZm9ybQotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAxOSArKysrKysrCiAuLi4vY2FudmFzL3BhdHRlcm4td2l0aC1zZXR0cmFuc2Zv
cm0tZXhwZWN0ZWQudHh0ICB8ICAgMTAgKysrKwogLi4uL2Zhc3QvY2FudmFzL3BhdHRlcm4td2l0
aC1zZXR0cmFuc2Zvcm0uaHRtbCAgICAgfCAgIDEwICsrKysKIC4uLi9zY3JpcHQtdGVzdHMvcGF0
dGVybi13aXRoLXNldHRyYW5zZm9ybS5qcyAgICAgIHwgICA1OSArKysrKysrKysrKysrKysrKysr
KwogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDIyICsrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNw
cCAgICAgICB8ICAgIDggKysrCiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0
ZXJuLmggICAgICAgICB8ICAgIDUgKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1BhdHRlcm4uaWRsICAgICAgIHwgICAgMyArCiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWF0cml4
LmggICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKysKIDkgZmlsZXMgY2hhbmdlZCwgMTQwIGlu
c2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9w
YXR0ZXJuLXdpdGgtc2V0dHJhbnNmb3JtLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3BhdHRlcm4td2l0aC1zZXR0cmFuc2Zvcm0uaHRtbAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9w
YXR0ZXJuLXdpdGgtc2V0dHJhbnNmb3JtLmpzCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVkMmMxMzEuLjgyOTY4NTggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wNi0yNyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxs
YUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBTdXBwb3J0IHBhdHRlcm4gdHJhbnNmb3JtYXRp
b25zIGluIGNhbnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODI4MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDYW52YXMgdjUgWzFdIHN1cHBvcnRzIHRyYW5zZm9ybWF0aW9ucyBpbiBwYXR0ZXJucy4K
KworICAgICAgICBbMV0gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJl
bnQtd29yay9tdWx0aXBhZ2UvdGhlLWNhbnZhcy1lbGVtZW50Lmh0bWwjZG9tLWNhbnZhc3BhdHRl
cm4tc2V0dHJhbnNmb3JtCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9wYXR0ZXJuLXdpdGgtc2V0
dHJhbnNmb3JtLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvcGF0
dGVybi13aXRoLXNldHRyYW5zZm9ybS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZh
cy9zY3JpcHQtdGVzdHMvcGF0dGVybi13aXRoLXNldHRyYW5zZm9ybS5qczogQWRkZWQuCisgICAg
ICAgIChwaXhlbFZhbHVlQXQpOgorICAgICAgICAocGl4ZWxUb1N0cmluZyk6CisgICAgICAgIChw
aXhlbFNob3VsZEJlKToKKyAgICAgICAgKGZpbGxXaXRoQ29sb3IpOgorCiAyMDEyLTA2LTI2ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFN0b3AgY2FsbGluZyBu
b2RlKCkgYW5kIGRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgaW4gY29tcGFyZVBvc2l0aW9ucwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcGF0dGVybi13aXRoLXNldHRyYW5z
Zm9ybS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9wYXR0ZXJuLXdpdGgt
c2V0dHJhbnNmb3JtLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi45ZjU1Y2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
cGF0dGVybi13aXRoLXNldHRyYW5zZm9ybS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAor
VGVzdCBmb3IgQ2FudmFzIHY1IHN1cHBvcnRpbmcgdHJhbnNmb3JtYXRpb25zIGluIHBhdHRlcm5z
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBpeGVsIDIwLCAyMCBpcyBb
MCwgMTI4LCAwLCAyNTVdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcGF0dGVybi13
aXRoLXNldHRyYW5zZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvcGF0dGVybi13
aXRoLXNldHRyYW5zZm9ybS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjM1NTAxYjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9wYXR0
ZXJuLXdpdGgtc2V0dHJhbnNmb3JtLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3BhdHRlcm4td2l0aC1zZXR0cmFu
c2Zvcm0uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL3BhdHRlcm4td2l0aC1zZXR0cmFuc2Zvcm0u
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvcGF0dGVybi13aXRoLXNl
dHRyYW5zZm9ybS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2VlZDMx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3Rz
L3BhdHRlcm4td2l0aC1zZXR0cmFuc2Zvcm0uanMKQEAgLTAsMCArMSw1OSBAQAorZGVzY3JpcHRp
b24oIlRlc3QgZm9yIENhbnZhcyB2NSBzdXBwb3J0aW5nIHRyYW5zZm9ybWF0aW9ucyBpbiBwYXR0
ZXJucyIpOworCitmdW5jdGlvbiBwaXhlbFZhbHVlQXQoY29udGV4dCwgeCwgeSkgeworICAgIHZh
ciBpbWFnZURhdGEgPSBjb250ZXh0LmdldEltYWdlRGF0YSh4LCB5LCAxLCAxKTsKKyAgICByZXR1
cm4gaW1hZ2VEYXRhLmRhdGE7Cit9CisKK2Z1bmN0aW9uIHBpeGVsVG9TdHJpbmcocCkgeworICAg
IHJldHVybiAiWyIgKyBwWzBdICsgIiwgIiArIHBbMV0gKyAiLCAiICsgcFsyXSArICIsICIgKyBw
WzNdICsgIl0iCit9CisKK2Z1bmN0aW9uIHBpeGVsU2hvdWxkQmUoY29udGV4dCwgeCwgeSwgZXhw
ZWN0ZWRQaXhlbFN0cmluZykgeworICAgIHZhciBwaXhlbCA9IHBpeGVsVmFsdWVBdChjb250ZXh0
LCB4LCB5KTsKKyAgICB2YXIgZXhwZWN0ZWRQaXhlbCA9IGV2YWwoZXhwZWN0ZWRQaXhlbFN0cmlu
Zyk7CisKKyAgICB2YXIgcGl4ZWxTdHJpbmcgPSAicGl4ZWwgIiArIHggKyAiLCAiICsgeTsKKyAg
ICBpZiAoYXJlQXJyYXlzRXF1YWwocGl4ZWwsIGV4cGVjdGVkUGl4ZWwpKSB7CisgICAgICAgIHRl
c3RQYXNzZWQocGl4ZWxTdHJpbmcgKyAiIGlzICIgKyBwaXhlbFRvU3RyaW5nKHBpeGVsKSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZChwaXhlbFN0cmluZyArICIgc2hvdWxkIGJl
ICIgKyBwaXhlbFRvU3RyaW5nKGV4cGVjdGVkUGl4ZWwpICsgIiB3YXMgIiArIHBpeGVsVG9TdHJp
bmcocGl4ZWwpKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGZpbGxXaXRoQ29sb3IoY29udGV4dCwg
Y29sb3IpIHsKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGNv
bG9yOworICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVp
Z2h0KTsKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKK30KKwordmFyIGNhbnZhcyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworY2FudmFzLmhlaWdodCA9IDEwMDsKK2NhbnZhcy53
aWR0aCA9IDEwMDsKK2NhbnZhcy5zdHlsZS5oZWlnaHQgPSAiMTAwIjsKK2NhbnZhcy5zdHlsZS53
aWR0aCA9ICIxMDAiOworCitkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7CisKK3Zh
ciBwYXR0ZXJuSW1hZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKK3BhdHRl
cm5JbWFnZS5oZWlnaHQgPSAxMDsKK3BhdHRlcm5JbWFnZS53aWR0aCA9IDEwOwordmFyIHBhdHRl
cm5JbWFnZUN0eCA9IHBhdHRlcm5JbWFnZS5nZXRDb250ZXh0KCcyZCcpOworZmlsbFdpdGhDb2xv
cihwYXR0ZXJuSW1hZ2VDdHgsICJncmVlbiIpOwordmFyIGdyZWVuUGl4ZWwgPSBwaXhlbFZhbHVl
QXQocGF0dGVybkltYWdlQ3R4LCAwLCAwKTsKKworCit2YXIgY3R4ID0gY2FudmFzLmdldENvbnRl
eHQoJzJkJyk7Cit2YXIgcGF0dGVybiA9IGN0eC5jcmVhdGVQYXR0ZXJuKHBhdHRlcm5JbWFnZSwg
Im5vLXJlcGVhdCIpOworCitmaWxsV2l0aENvbG9yKGN0eCwgImJsdWUiKTsKKwordmFyIHN2Z0Vs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiwgInN2ZyIpOwordmFyIG1hdHJpeCA9IHN2Z0VsZW1lbnQuY3JlYXRlU1ZHTWF0cml4KCk7
CittYXRyaXggPSBtYXRyaXgudHJhbnNsYXRlKDIwLCAyMCk7CitwYXR0ZXJuLnNldFRyYW5zZm9y
bShtYXRyaXgpOworCitjdHguZmlsbFN0eWxlID0gcGF0dGVybjsKK2N0eC5maWxsUmVjdCgwLCAw
LCAzMCwgMzApOworcGl4ZWxTaG91bGRCZShjdHgsIDIwLCAyMCwgImdyZWVuUGl4ZWwiKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA1ZTZhMDAzLi41YTU0YzIxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTItMDYtMjggIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisK
KyAgICAgICAgU3VwcG9ydCBwYXR0ZXJuIHRyYW5zZm9ybWF0aW9ucyBpbiBjYW52YXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyODAwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FudmFzIHY1IFsxXSBz
dXBwb3J0cyB0cmFuc2Zvcm1hdGlvbnMgaW4gcGF0dGVybnMuCisKKyAgICAgICAgWzFdIGh0dHA6
Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3Ro
ZS1jYW52YXMtZWxlbWVudC5odG1sI2RvbS1jYW52YXNwYXR0ZXJuLXNldHRyYW5zZm9ybQorCisg
ICAgICAgIEFkZCBhIHRlc3Q6IGZhc3QvY2FudmFzL3BhdHRlcm4td2l0aC1zZXR0cmFuc2Zvcm0u
aHRtbAorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1BhdHRlcm46OnNldFRyYW5zZm9y
bSk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChDYW52YXNQYXR0ZXJuKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNQYXR0ZXJuLmlkbDoKKyAgICAgICAgKiBzdmcvU1ZHTWF0cml4Lmg6CisKIDIwMTItMDYt
MjYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3RvcCBjYWxs
aW5nIG5vZGUoKSBhbmQgZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSBpbiBjb21wYXJlUG9zaXRp
b25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwCmluZGV4
IDgxOGQ3ZDMuLmUxN2VjYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1BhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1BhdHRlcm4uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTVkdNYXRyaXguaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Myw0ICs2NCwxMSBAQCBDYW52YXNQYXR0ZXJu
OjpDYW52YXNQYXR0ZXJuKFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlLCBib29sIHJlcGVhdFgsIGJv
b2wgcmVwZWF0WQogewogfQogCisjaWYgRU5BQkxFKFNWRykKK3ZvaWQgQ2FudmFzUGF0dGVybjo6
c2V0VHJhbnNmb3JtKGNvbnN0IFNWR01hdHJpeCYgdHJhbnNmb3JtKQoreworICAgIG1fcGF0dGVy
bi0+c2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKHN0YXRpY19jYXN0PGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSY+KHRyYW5zZm9ybSkpOworfQorI2VuZGlmCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1BhdHRlcm4uaAppbmRleCA1ODg0OGE5Li40MzJiOWIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oCkBAIC0zNCw2ICszNCw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBJbWFnZTsKKyAgICBjbGFzcyBTVkdNYXRy
aXg7CiAKICAgICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCkBAIC00Niw2ICs0NywxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENh
bnZhc1BhdHRlcm4oaW1hZ2UsIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSk7CiAgICAg
ICAgIH0KIAorI2lmIEVOQUJMRShTVkcpCisgICAgICAgIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0
IFNWR01hdHJpeCYpOworI2VuZGlmCisKICAgICAgICAgUGF0dGVybiogcGF0dGVybigpIGNvbnN0
IHsgcmV0dXJuIG1fcGF0dGVybi5nZXQoKTsgfQogCiAgICAgICAgIGJvb2wgb3JpZ2luQ2xlYW4o
KSBjb25zdCB7IHJldHVybiBtX29yaWdpbkNsZWFuOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1BhdHRlcm4uaWRsCmluZGV4IGU1YWEwMzYuLjU4ZGRkNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaWRsCkBAIC0yNiw2ICsyNiw5
IEBACiBtb2R1bGUgaHRtbCB7CiAKICAgICBpbnRlcmZhY2UgQ2FudmFzUGF0dGVybiB7CisjaWYg
ZGVmaW5lZChFTkFCTEVfU1ZHKSAmJiBFTkFCTEVfU1ZHCisgICAgICAgIHZvaWQgc2V0VHJhbnNm
b3JtKGluIFNWR01hdHJpeCB0cmFuc2Zvcm0pOworI2VuZGlmCiAgICAgfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hdHJpeC5oCmluZGV4IGU0OGFlMDAuLmYzYmUzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdNYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWF0cml4
LmgKQEAgLTIzLDYgKzIzLDEwIEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJBZmZpbmVU
cmFuc2Zvcm0uaCIKICNpbmNsdWRlICJTVkdFeGNlcHRpb24uaCIKKyNpZiBVU0UoVjgpCisvLyBP
bmx5IHVzZWQgZnJvbSB0aGUgYmluZGluZ3MuCisjaW5jbHVkZSAiU1ZHUHJvcGVydHlUZWFyT2Zm
LmgiCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0tIAoxLjcuOS41Cgo=
</data>
<flag name="review"
          id="158221"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="158222"
          type_id="3"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>