<?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>163270</bug_id>
          
          <creation_ts>2016-10-10 22:57:14 -0700</creation_ts>
          <short_desc>[Win][Direct2D] Add initial Pattern handling implementation</short_desc>
          <delta_ts>2016-10-11 09:00:14 -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>WebCore Misc.</component>
          <version>WebKit 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>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>dino</cc>
    
    <cc>pvollan</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1238744</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-10 22:57:14 -0700</bug_when>
    <thetext>Provide an implementation of the WebKit Pattern concept so that tiled images and border images can be drawn properly.

This get tests in fast/borders/border-image-01.html (and other) to work properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238745</commentid>
    <comment_count>1</comment_count>
      <attachid>291233</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-10 23:02:33 -0700</bug_when>
    <thetext>Created attachment 291233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238748</commentid>
    <comment_count>2</comment_count>
      <attachid>291233</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-10-10 23:10:56 -0700</bug_when>
    <thetext>Comment on attachment 291233
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:561
&gt; +    ID2D1Brush* solidStrokeBrush();
&gt; +    ID2D1Brush* solidFillBrush();
&gt; +    ID2D1Brush* patternStrokeBrush();
&gt; +    ID2D1Brush* patternFillBrush();

Can these be const?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238749</commentid>
    <comment_count>3</comment_count>
      <attachid>291233</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-10-10 23:12:01 -0700</bug_when>
    <thetext>Comment on attachment 291233
Patch

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

&gt; Source/WebCore/platform/graphics/win/PatternDirect2D.cpp:58
&gt; +    HRESULT hr = renderTarget-&gt;CreateBitmapBrush(tileImage()-&gt;nativeImage().get(), &amp;bitmapBrushProperties, &amp;brushProperties, &amp;patternBrush);
&gt; +    ASSERT(hr);
&gt; +    return patternBrush;

What&apos;s the ownership model here? Does the caller need to release or destroy the brush? Can we use smart pointers to make this easier?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238868</commentid>
    <comment_count>4</comment_count>
      <attachid>291233</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-11 08:59:10 -0700</bug_when>
    <thetext>Comment on attachment 291233
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.h:561
&gt;&gt; +    ID2D1Brush* patternFillBrush();
&gt; 
&gt; Can these be const?

Yes. I&apos;ll fix them.

&gt;&gt; Source/WebCore/platform/graphics/win/PatternDirect2D.cpp:58
&gt;&gt; +    return patternBrush;
&gt; 
&gt; What&apos;s the ownership model here? Does the caller need to release or destroy the brush? Can we use smart pointers to make this easier?

You are right -- I should be using the adoptCOM utility function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238869</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-10-11 09:00:14 -0700</bug_when>
    <thetext>Committed r207140: &lt;http://trac.webkit.org/changeset/207140&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291233</attachid>
            <date>2016-10-10 23:02:33 -0700</date>
            <delta_ts>2016-10-10 23:10:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163270-20161010225911.patch</filename>
            <type>text/plain</type>
            <size>14029</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzA0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE2LTEwLTEwICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dW0RpcmVjdDJEXSBB
ZGQgaW5pdGlhbCBQYXR0ZXJuIGhhbmRsaW5nIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyNzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRlIGFuIGltcGxlbWVuYXRp
b24gb2YgUGF0dGVybnMgZm9yIERpcmVjdDJELgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ292
ZXJlZCBieSBmYXN0L2JvcmRlcnMvYm9yZGVyLWltYWdlLTAxLmh0bWwgYW5kIG90aGVycy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaDogQWRkIEQyRCBkZWZpbml0aW9ucy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpzb2xpZFN0cm9rZUJydXNoKTogVXNl
IGEgbW9yZSBnZW5lcmljIHJldHVybiB0eXBlLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Ojpzb2xpZEZpbGxCcnVzaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpwYXR0ZXJuU3Ryb2tlQnJ1c2gpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6cGF0dGVybkZpbGxCcnVzaCk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6IFByb3ZpZGUgRDJEIGltcGxlbWVu
dGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphcHBseVN0cm9rZVBh
dHRlcm4pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6YXBwbHlG
aWxsUGF0dGVybik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3UGF0aCk6IFVzZSBzdHJva2UgcGF0dGVybiBpZiBhdmFpbGFibGUuCisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKTogVXNlIGZpbGwgcGF0dGVybiBpZiBhdmFp
bGFibGUuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgpOiBV
c2Ugc3Ryb2tlIHBhdHRlcm4gaWYgYXZhaWxhYmxlLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpmaWxsUmVjdCk6IFVzZSBmaWxsIHBhdHRlcm4gaWYgYXZhaWxhYmxlLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGVEaXJlY3QyRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXR0ZXJuRGly
ZWN0MkQuY3BwOiBBZGRlZC4KKwogMjAxNi0xMC0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBXaGVlbEV2ZW50IC8gTW91c2VFdmVudCB0byBzdG9w
IHVzaW5nIGxlZ2FjeSBbQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudF0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCShyZXZp
c2lvbiAyMDcwNDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNTU1LDggKzU1NSwxMCBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBkaWRCZWdpbkRyYXcoKSBjb25zdDsKICAgICBEMkQxX0NP
TE9SX0YgY29sb3JXaXRoR2xvYmFsQWxwaGEoY29uc3QgQ29sb3ImKSBjb25zdDsKIAotICAgIElE
MkQxU29saWRDb2xvckJydXNoKiBzb2xpZFN0cm9rZUJydXNoKCk7Ci0gICAgSUQyRDFTb2xpZENv
bG9yQnJ1c2gqIHNvbGlkRmlsbEJydXNoKCk7CisgICAgSUQyRDFCcnVzaCogc29saWRTdHJva2VC
cnVzaCgpOworICAgIElEMkQxQnJ1c2gqIHNvbGlkRmlsbEJydXNoKCk7CisgICAgSUQyRDFCcnVz
aCogcGF0dGVyblN0cm9rZUJydXNoKCk7CisgICAgSUQyRDFCcnVzaCogcGF0dGVybkZpbGxCcnVz
aCgpOwogI2VuZGlmCiAjZWxzZSAvLyBQTEFURk9STShXSU4pCiAgICAgYm9vbCBzaG91bGRJbmNs
dWRlQ2hpbGRXaW5kb3dzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgJKHJldmlzaW9uIDIwNzA0MikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNyArMzgsOSBAQAogdHlwZWRlZiBzdHJ1Y3QgQ0dQYXR0ZXJuKiBDR1BhdHRlcm5S
ZWY7CiB0eXBlZGVmIENHUGF0dGVyblJlZiBQbGF0Zm9ybVBhdHRlcm5QdHI7CiAjZWxpZiBVU0Uo
RElSRUNUMkQpCi10eXBlZGVmIHZvaWQqIFBsYXRmb3JtUGF0dGVyblB0cjsKK2ludGVyZmFjZSBJ
RDJEMUJpdG1hcEJydXNoOworaW50ZXJmYWNlIElEMkQxUmVuZGVyVGFyZ2V0OwordHlwZWRlZiBJ
RDJEMUJpdG1hcEJydXNoKiBQbGF0Zm9ybVBhdHRlcm5QdHI7CiAjZWxpZiBVU0UoQ0FJUk8pCiAj
aW5jbHVkZSA8Y2Fpcm8uaD4KIHR5cGVkZWYgY2Fpcm9fcGF0dGVybl90KiBQbGF0Zm9ybVBhdHRl
cm5QdHI7CkBAIC02MCw4ICs2MiwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBsYXRmb3JtRGVz
dHJveSgpOwogCi0gICAgLy8gUGF0dGVybiBzcGFjZSBpcyBhbiBhYnN0cmFjdCBzcGFjZSB0aGF0
IG1hcHMgdG8gdGhlIGRlZmF1bHQgdXNlciBzcGFjZSBieSB0aGUgdHJhbnNmb3JtYXRpb24gJ3Vz
ZXJTcGFjZVRyYW5zZm9ybWF0aW9uJyAKKyAgICAvLyBQYXR0ZXJuIHNwYWNlIGlzIGFuIGFic3Ry
YWN0IHNwYWNlIHRoYXQgbWFwcyB0byB0aGUgZGVmYXVsdCB1c2VyIHNwYWNlIGJ5IHRoZSB0cmFu
c2Zvcm1hdGlvbiAndXNlclNwYWNlVHJhbnNmb3JtYXRpb24nCisjaWYgIVVTRShESVJFQ1QyRCkK
ICAgICBQbGF0Zm9ybVBhdHRlcm5QdHIgY3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtYXRpb24pIGNvbnN0OworI2Vsc2UKKyAgICBQ
bGF0Zm9ybVBhdHRlcm5QdHIgY3JlYXRlUGxhdGZvcm1QYXR0ZXJuKElEMkQxUmVuZGVyVGFyZ2V0
KiwgZmxvYXQgYWxwaGEsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3Jt
YXRpb24pIGNvbnN0OworI2VuZGlmCiAgICAgdm9pZCBzZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0o
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbik7CiAgICAg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBnZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKSB7IHJldHVy
biBtX3BhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uOyB9OwogICAgIHZvaWQgc2V0UGxhdGZvcm1Q
YXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJE
LmNwcAkocmV2aXNpb24gMjA3MDQyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE1
LDE2ICs0MTUsMjYgQEAgRDJEMV9DT0xPUl9GIEdyYXBoaWNzQ29udGV4dDo6Y29sb3JXaXRoRwog
ICAgIHJldHVybiBEMkQxOjpDb2xvckYoY29sb3IucmdiKCksIGdsb2JhbEFscGhhICogY29sb3JB
bHBoYSk7CiB9CiAKLUlEMkQxU29saWRDb2xvckJydXNoKiBHcmFwaGljc0NvbnRleHQ6OnNvbGlk
U3Ryb2tlQnJ1c2goKQorSUQyRDFCcnVzaCogR3JhcGhpY3NDb250ZXh0Ojpzb2xpZFN0cm9rZUJy
dXNoKCkKIHsKICAgICByZXR1cm4gbV9kYXRhLT5tX3NvbGlkU3Ryb2tlQnJ1c2guZ2V0KCk7CiB9
CiAKLUlEMkQxU29saWRDb2xvckJydXNoKiBHcmFwaGljc0NvbnRleHQ6OnNvbGlkRmlsbEJydXNo
KCkKK0lEMkQxQnJ1c2gqIEdyYXBoaWNzQ29udGV4dDo6c29saWRGaWxsQnJ1c2goKQogewogICAg
IHJldHVybiBtX2RhdGEtPm1fc29saWRGaWxsQnJ1c2guZ2V0KCk7CiB9CiAKK0lEMkQxQnJ1c2gq
IEdyYXBoaWNzQ29udGV4dDo6cGF0dGVyblN0cm9rZUJydXNoKCkKK3sKKyAgICByZXR1cm4gbV9k
YXRhLT5tX3BhdHRlcm5TdHJva2VCcnVzaC5nZXQoKTsKK30KKworSUQyRDFCcnVzaCogR3JhcGhp
Y3NDb250ZXh0OjpwYXR0ZXJuRmlsbEJydXNoKCkKK3sKKyAgICByZXR1cm4gbV9kYXRhLT5tX3Bh
dHRlcm5GaWxsQnJ1c2guZ2V0KCk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0
dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSB8fCAhcGF0dGVyblRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKQEAgLTQzNSw3
ICs0NDUsNTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBhdXRvIGNv
bnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBEMkRDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCptX2RhdGEpOworCisgICAgbV9kYXRhLT5jbGlwKGRlc3RSZWN0KTsKKworICAgIHNl
dFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9wLCBibGVuZE1vZGUpOworCisgICAgYXV0byBi
aXRtYXBCcnVzaFByb3BlcnRpZXMgPSBEMkQxOjpCaXRtYXBCcnVzaFByb3BlcnRpZXMoKTsKKyAg
ICBiaXRtYXBCcnVzaFByb3BlcnRpZXMuZXh0ZW5kTW9kZVggPSBEMkQxX0VYVEVORF9NT0RFX1dS
QVA7CisgICAgYml0bWFwQnJ1c2hQcm9wZXJ0aWVzLmV4dGVuZE1vZGVZID0gRDJEMV9FWFRFTkRf
TU9ERV9XUkFQOworCisgICAgLy8gQ3JlYXRlIGEgYnJ1c2ggdHJhbnNmb3JtYXRpb24gc28gd2Ug
cGFpbnQgdXNpbmcgdGhlIHNlY3Rpb24gb2YgdGhlIGltYWdlIHdlIGNhcmUgYWJvdXQuCisgICAg
QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybWF0aW9uID0gcGF0dGVyblRyYW5zZm9ybTsKKyAgICB0
cmFuc2Zvcm1hdGlvbi50cmFuc2xhdGUoZGVzdFJlY3QubG9jYXRpb24oKSk7CisKKyAgICBhdXRv
IGJydXNoUHJvcGVydGllcyA9IEQyRDE6OkJydXNoUHJvcGVydGllcygpOworICAgIGJydXNoUHJv
cGVydGllcy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm1hdGlvbjsKKyAgICBicnVzaFByb3BlcnRpZXMu
b3BhY2l0eSA9IDEuMGY7CisKKyAgICBhdXRvIHRpbGVJbWFnZSA9IGltYWdlLm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7CisKKyAgICAvLyBJZiB3ZSBvbmx5IHdhbnQgYSBzdWJzZXQgb2Yg
dGhlIGJpdG1hcCwgd2UgbmVlZCB0byBjcmVhdGUgYSBjcm9wcGVkIGJpdG1hcCBpbWFnZS4gQWNj
b3JkaW5nIHRvIHRoZSBkb2N1bWVudGF0aW9uLAorICAgIC8vIHRoaXMgZG9lcyBub3QgYWxsb2Nh
dGUgbmV3IGJpdG1hcCBtZW1vcnkuCisgICAgaWYgKGltYWdlLndpZHRoKCkgPiBkZXN0UmVjdC53
aWR0aCgpIHx8IGltYWdlLmhlaWdodCgpID4gZGVzdFJlY3QuaGVpZ2h0KCkpIHsKKyAgICAgICAg
ZmxvYXQgZHBpWCA9IDA7CisgICAgICAgIGZsb2F0IGRwaVkgPSAwOworICAgICAgICB0aWxlSW1h
Z2UtPkdldERwaSgmZHBpWCwgJmRwaVkpOworICAgICAgICBhdXRvIGJpdG1hcFByb3BlcnRpZXMg
PSBEMkQxOjpCaXRtYXBQcm9wZXJ0aWVzKHRpbGVJbWFnZS0+R2V0UGl4ZWxGb3JtYXQoKSwgZHBp
WCwgZHBpWSk7CisgICAgICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gc3ViSW1hZ2U7CisgICAgICAg
IEhSRVNVTFQgaHIgPSBjb250ZXh0LT5DcmVhdGVCaXRtYXAoSW50U2l6ZSh0aWxlUmVjdC5zaXpl
KCkpLCBiaXRtYXBQcm9wZXJ0aWVzLCAmc3ViSW1hZ2UpOworICAgICAgICBpZiAoU1VDQ0VFREVE
KGhyKSkgeworICAgICAgICAgICAgRDJEMV9SRUNUX1UgZmluaXNoUmVjdCA9IEludFJlY3QodGls
ZVJlY3QpOworICAgICAgICAgICAgaHIgPSBzdWJJbWFnZS0+Q29weUZyb21CaXRtYXAobnVsbHB0
ciwgdGlsZUltYWdlLmdldCgpLCAmZmluaXNoUmVjdCk7CisgICAgICAgICAgICBpZiAoU1VDQ0VF
REVEKGhyKSkKKyAgICAgICAgICAgICAgICB0aWxlSW1hZ2UgPSBzdWJJbWFnZTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIENPTVB0cjxJRDJEMUJpdG1hcEJydXNoPiBwYXR0ZXJuQnJ1c2g7Cisg
ICAgSFJFU1VMVCBociA9IGNvbnRleHQtPkNyZWF0ZUJpdG1hcEJydXNoKHRpbGVJbWFnZS5nZXQo
KSwgJmJpdG1hcEJydXNoUHJvcGVydGllcywgJmJydXNoUHJvcGVydGllcywgJnBhdHRlcm5CcnVz
aCk7CisKKyAgICBkcmF3V2l0aG91dFNoYWRvdyhkZXN0UmVjdCwgW3RoaXMsIGRlc3RSZWN0LCBw
YXR0ZXJuQnJ1c2hdKElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpIHsKKyAgICAgICAg
Y29uc3QgRDJEMV9SRUNUX0YgZDJkUmVjdCA9IGRlc3RSZWN0OworICAgICAgICByZW5kZXJUYXJn
ZXQtPkZpbGxSZWN0YW5nbGUoJmQyZFJlY3QsIHBhdHRlcm5CcnVzaC5nZXQoKSk7CisgICAgfSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpAQCAtNzAwLDggKzc1NCwxMSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YXBwbHlTdHJva2VQYXR0ZXJuCiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gTm90ZTogQmVjYXVzZSBv
ZiB0aGUgd2F5IERpcmVjdDJEIGRyYXdzLCB3ZSBtYXkgbm90IG5lZWQgdGhpcyBleHBsaWNpdCBj
b250ZXh0ICdzZXQgc3Ryb2tlIHBhdHRlcm4nIGxvZ2ljLgotICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgYXV0byBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CisgICAgQWZmaW5lVHJhbnNm
b3JtIHVzZXJUb0Jhc2VDVE07IC8vIEZJWE1FOiBUaGlzIGlzbid0IHJlYWxseSBuZWVkZWQgb24g
V2luZG93cworCisgICAgY29uc3QgZmxvYXQgcGF0dGVybkFscGhhID0gMTsKKyAgICBtX2RhdGEt
Pm1fcGF0dGVyblN0cm9rZUJydXNoID0gbV9zdGF0ZS5zdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0
Zm9ybVBhdHRlcm4oY29udGV4dCwgcGF0dGVybkFscGhhLCB1c2VyVG9CYXNlQ1RNKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmFwcGx5RmlsbFBhdHRlcm4oKQpAQCAtNzA5LDggKzc2Niwx
MSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YXBwbHlGaWxsUGF0dGVybigpCiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gTm90ZTogQmVjYXVz
ZSBvZiB0aGUgd2F5IERpcmVjdDJEIGRyYXdzLCB3ZSBtYXkgbm90IG5lZWQgdGhpcyBleHBsaWNp
dCBjb250ZXh0ICdzZXQgZmlsbCBwYXR0ZXJuJyBsb2dpYy4KLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIGF1dG8gY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOworICAgIEFmZmluZVRyYW5z
Zm9ybSB1c2VyVG9CYXNlQ1RNOyAvLyBGSVhNRTogVGhpcyBpc24ndCByZWFsbHkgbmVlZGVkIG9u
IFdpbmRvd3MKKworICAgIGNvbnN0IGZsb2F0IHBhdHRlcm5BbHBoYSA9IDE7CisgICAgbV9kYXRh
LT5tX3BhdHRlcm5GaWxsQnJ1c2ggPSBtX3N0YXRlLmZpbGxQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9y
bVBhdHRlcm4oY29udGV4dCwgcGF0dGVybkFscGhhLCB1c2VyVG9CYXNlQ1RNKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCkBAIC03NDcsNyAr
ODA3LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXRoKGNvbnN0IFBhdAogCiAgICAg
YXV0byByZWN0ID0gcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7CiAgICAgZHJhd1dpdGhvdXRTaGFk
b3cocmVjdCwgW3RoaXMsICZwYXRoXShJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KSB7
Ci0gICAgICAgIHJlbmRlclRhcmdldC0+RHJhd0dlb21ldHJ5KHBhdGgucGxhdGZvcm1QYXRoKCks
IHNvbGlkU3Ryb2tlQnJ1c2goKSwgc3Ryb2tlVGhpY2tuZXNzKCksIG1fZGF0YS0+c3Ryb2tlU3R5
bGUoKSk7CisgICAgICAgIGF1dG8gYnJ1c2ggPSBtX3N0YXRlLnN0cm9rZVBhdHRlcm4gPyBwYXR0
ZXJuU3Ryb2tlQnJ1c2goKSA6IHNvbGlkU3Ryb2tlQnJ1c2goKTsKKyAgICAgICAgcmVuZGVyVGFy
Z2V0LT5EcmF3R2VvbWV0cnkocGF0aC5wbGF0Zm9ybVBhdGgoKSwgYnJ1c2gsIHN0cm9rZVRoaWNr
bmVzcygpLCBtX2RhdGEtPnN0cm9rZVN0eWxlKCkpOwogICAgIH0pOwogfQogCkBAIC04NzAsNyAr
OTMxLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdAogCiAgICAg
RmxvYXRSZWN0IGNvbnRleHRSZWN0KEZsb2F0UG9pbnQoKSwgY29udGV4dC0+R2V0U2l6ZSgpKTsK
ICAgICBkcmF3V2l0aG91dFNoYWRvdyhjb250ZXh0UmVjdCwgW3RoaXMsICZwYXRoVG9GaWxsXShJ
RDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KSB7Ci0gICAgICAgIHJlbmRlclRhcmdldC0+
RmlsbEdlb21ldHJ5KHBhdGhUb0ZpbGwuZ2V0KCksIHNvbGlkRmlsbEJydXNoKCkpOworICAgICAg
ICBhdXRvIGJydXNoID0gbV9zdGF0ZS5maWxsUGF0dGVybiA/IHBhdHRlcm5GaWxsQnJ1c2goKSA6
IHNvbGlkRmlsbEJydXNoKCk7CisgICAgICAgIHJlbmRlclRhcmdldC0+RmlsbEdlb21ldHJ5KHBh
dGhUb0ZpbGwuZ2V0KCksIGJydXNoKTsKICAgICB9KTsKIH0KIApAQCAtOTEyLDcgKzk3NCw4IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFAKIAogICAgIEZsb2F0UmVj
dCBjb250ZXh0UmVjdChGbG9hdFBvaW50KCksIGNvbnRleHQtPkdldFNpemUoKSk7CiAgICAgZHJh
d1dpdGhvdXRTaGFkb3coY29udGV4dFJlY3QsIFt0aGlzLCAmcGF0aF0oSUQyRDFSZW5kZXJUYXJn
ZXQqIHJlbmRlclRhcmdldCkgewotICAgICAgICByZW5kZXJUYXJnZXQtPkRyYXdHZW9tZXRyeShw
YXRoLnBsYXRmb3JtUGF0aCgpLCBzb2xpZFN0cm9rZUJydXNoKCksIHN0cm9rZVRoaWNrbmVzcygp
LCBtX2RhdGEtPnN0cm9rZVN0eWxlKCkpOworICAgICAgICBhdXRvIGJydXNoID0gbV9zdGF0ZS5z
dHJva2VQYXR0ZXJuID8gcGF0dGVyblN0cm9rZUJydXNoKCkgOiBzb2xpZFN0cm9rZUJydXNoKCk7
CisgICAgICAgIHJlbmRlclRhcmdldC0+RHJhd0dlb21ldHJ5KHBhdGgucGxhdGZvcm1QYXRoKCks
IGJydXNoLCBzdHJva2VUaGlja25lc3MoKSwgbV9kYXRhLT5zdHJva2VTdHlsZSgpKTsKICAgICB9
KTsKIH0KIApAQCAtOTU4LDcgKzEwMjEsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJl
Y3QoY29uc3QgRmxvCiAKICAgICBkcmF3V2l0aG91dFNoYWRvdyhyZWN0LCBbdGhpcywgcmVjdF0o
SUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCkgewogICAgICAgICBjb25zdCBEMkQxX1JF
Q1RfRiBkMmRSZWN0ID0gcmVjdDsKLSAgICAgICAgcmVuZGVyVGFyZ2V0LT5GaWxsUmVjdGFuZ2xl
KCZkMmRSZWN0LCBzb2xpZEZpbGxCcnVzaCgpKTsKKyAgICAgICAgYXV0byBicnVzaCA9IG1fc3Rh
dGUuZmlsbFBhdHRlcm4gPyBwYXR0ZXJuRmlsbEJydXNoKCkgOiBzb2xpZEZpbGxCcnVzaCgpOwor
ICAgICAgICByZW5kZXJUYXJnZXQtPkZpbGxSZWN0YW5nbGUoJmQyZFJlY3QsIGJydXNoKTsKICAg
ICB9KTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZURpcmVjdDJELmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZURpcmVjdDJELmgJKHJldmlzaW9uIDIwNzA0MikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVEaXJlY3Qy
RC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw4IEBAIHB1YmxpYzoKIAogICAgIENPTVB0
cjxJRDJEMVNvbGlkQ29sb3JCcnVzaD4gbV9zb2xpZFN0cm9rZUJydXNoOwogICAgIENPTVB0cjxJ
RDJEMVNvbGlkQ29sb3JCcnVzaD4gbV9zb2xpZEZpbGxCcnVzaDsKKyAgICBDT01QdHI8SUQyRDFC
aXRtYXBCcnVzaD4gbV9wYXR0ZXJuU3Ryb2tlQnJ1c2g7CisgICAgQ09NUHRyPElEMkQxQml0bWFw
QnJ1c2g+IG1fcGF0dGVybkZpbGxCcnVzaDsKIAogcHJpdmF0ZToKICAgICB2b2lkIHJlY29tcHV0
ZVN0cm9rZVN0eWxlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vUGF0dGVybkRpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0dGVybkRpcmVjdDJELmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGF0
dGVybi5oIgorCisjaWYgVVNFKERJUkVDVDJEKQorCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3Jt
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSA8Q29yZUdyYXBoaWNz
L0NvcmVHcmFwaGljcy5oPgorI2luY2x1ZGUgPGQyZDEuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSUQyRDFCaXRtYXBCcnVzaCogUGF0
dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJn
ZXQsIGZsb2F0IGFscGhhLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9y
bWF0aW9uKSBjb25zdAoreworICAgIFJFTEVBU0VfQVNTRVJUKHJlbmRlclRhcmdldCk7CisKKyAg
ICBGbG9hdFJlY3QgdGlsZVJlY3QgPSB0aWxlSW1hZ2UoKS0+cmVjdCgpOworCisgICAgQWZmaW5l
VHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSB1c2VyU3BhY2VUcmFuc2Zvcm1hdGlvbiAqIG1f
cGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb247CisgICAgYXV0byBiaXRtYXBCcnVzaFByb3BlcnRp
ZXMgPSBEMkQxOjpCaXRtYXBCcnVzaFByb3BlcnRpZXMoKTsKKyAgICBiaXRtYXBCcnVzaFByb3Bl
cnRpZXMuZXh0ZW5kTW9kZVggPSBtX3JlcGVhdFggPyBEMkQxX0VYVEVORF9NT0RFX1dSQVAgOiBE
MkQxX0VYVEVORF9NT0RFX0NMQU1QOworICAgIGJpdG1hcEJydXNoUHJvcGVydGllcy5leHRlbmRN
b2RlWSA9IG1fcmVwZWF0WSA/IEQyRDFfRVhURU5EX01PREVfV1JBUCA6IEQyRDFfRVhURU5EX01P
REVfQ0xBTVA7CisKKyAgICBhdXRvIGJydXNoUHJvcGVydGllcyA9IEQyRDE6OkJydXNoUHJvcGVy
dGllcygpOworICAgIGJydXNoUHJvcGVydGllcy50cmFuc2Zvcm0gPSBwYXR0ZXJuVHJhbnNmb3Jt
OworICAgIGJydXNoUHJvcGVydGllcy5vcGFjaXR5ID0gYWxwaGE7CisKKyAgICBJRDJEMUJpdG1h
cEJydXNoKiBwYXR0ZXJuQnJ1c2ggPSBudWxscHRyOworICAgIEhSRVNVTFQgaHIgPSByZW5kZXJU
YXJnZXQtPkNyZWF0ZUJpdG1hcEJydXNoKHRpbGVJbWFnZSgpLT5uYXRpdmVJbWFnZSgpLmdldCgp
LCAmYml0bWFwQnJ1c2hQcm9wZXJ0aWVzLCAmYnJ1c2hQcm9wZXJ0aWVzLCAmcGF0dGVybkJydXNo
KTsKKyAgICBBU1NFUlQoaHIpOworICAgIHJldHVybiBwYXR0ZXJuQnJ1c2g7Cit9CisKK30KKwor
I2VuZGlmCg==
</data>
<flag name="review"
          id="314363"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>