<?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>240276</bug_id>
          
          <creation_ts>2022-05-10 05:55:14 -0700</creation_ts>
          <short_desc>[GTK][WPE] Respect and use the DMABuf modifier values</short_desc>
          <delta_ts>2022-05-13 00:01:42 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=240373</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>237649</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>clord</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1867909</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-05-10 05:55:14 -0700</bug_when>
    <thetext>[GTK][WPE] Respect and use the DMABuf modifier values</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867910</commentid>
    <comment_count>1</comment_count>
      <attachid>459114</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-05-10 05:56:23 -0700</bug_when>
    <thetext>Created attachment 459114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867916</commentid>
    <comment_count>2</comment_count>
      <attachid>459114</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2022-05-10 06:30:41 -0700</bug_when>
    <thetext>Comment on attachment 459114
Patch

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

Looks good, some comments but nothing critical.

&gt; Source/WebCore/platform/graphics/PlatformDisplay.cpp:283
&gt; +    {
&gt; +        const char* extensionsString = eglQueryString(m_eglDisplay, EGL_EXTENSIONS);
&gt; +        auto displayExtensions = StringView { extensionsString }.split(&apos; &apos;);
&gt; +        auto findExtension =
&gt; +            [&amp;](auto extensionName) {
&gt; +                return std::any_of(displayExtensions.begin(), displayExtensions.end(),
&gt; +                    [&amp;](auto extensionEntry) {
&gt; +                        return extensionEntry == extensionName;
&gt; +                    });
&gt; +            };
&gt; +
&gt; +        m_eglExtensions.EXT_image_dma_buf_import_modifiers = findExtension(&quot;EGL_EXT_image_dma_buf_import_modifiers&quot;_s);
&gt; +    }
&gt; +

Is there a reason this is in braces? Also, though I like that the lambda enables the final line to be very readable, it seems a bit wordy vs just

m_eglExtensions.EXT_image_dma_buf_import_modifiers = std::find(displayExtensions.begin(), displayExtensions.end(), &quot;EGL_EXT_image_dma_buf_import_modifiers&quot;_s) != displayExtensions.end();

It feels like this isn&apos;t really in keeping with the code surrounding it. Maybe I&apos;ve not fully understood something here though and it&apos;s not a dealbreaker or anything.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxyDMABuf.cpp:271
&gt; -        std::initializer_list&lt;EGLint&gt; attributes {
&gt; +        Vector&lt;EGLint&gt; attributes;
&gt; +        attributes.reserveInitialCapacity(12 + 4 + 1);
&gt; +        attributes.uncheckedAppend(Span&lt;const EGLint&gt;({
&gt;              EGL_WIDTH, EGLint(object.format.planeWidth(i, object.width)),
&gt;              EGL_HEIGHT, EGLint(object.format.planeHeight(i, object.height)),
&gt;              EGL_LINUX_DRM_FOURCC_EXT, EGLint(object.format.planes[i].fourcc),
&gt;              EGL_DMA_BUF_PLANE0_FD_EXT, object.fd[i].value(),
&gt;              EGL_DMA_BUF_PLANE0_OFFSET_EXT, EGLint(object.offset[i]),
&gt;              EGL_DMA_BUF_PLANE0_PITCH_EXT, EGLint(object.stride[i]),
&gt; -            EGL_NONE,
&gt; -        };
&gt; -        image[i] = createImageKHR()(eglDisplay, EGL_NO_CONTEXT, EGL_LINUX_DMA_BUF_EXT, nullptr, std::data(attributes));
&gt; +        }));
&gt; +        if (platformDisplay.eglExtensions().EXT_image_dma_buf_import_modifiers) {
&gt; +            attributes.uncheckedAppend(Span&lt;const EGLint&gt;({
&gt; +                EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT, static_cast&lt;EGLint&gt;(object.modifier[i] &gt;&gt; 32),
&gt; +                EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT, static_cast&lt;EGLint&gt;(object.modifier[i] &amp; 0xffffffff),
&gt; +            }));
&gt; +        }
&gt; +        attributes.uncheckedAppend(EGL_NONE);

It&apos;s a shame to have this duplicated, maybe now&apos;s a good time to factor this out into a utility function? Especially with the uncheckedAppend and manually calculated capacity, it&apos;d be nice to have that only done once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867926</commentid>
    <comment_count>3</comment_count>
      <attachid>459114</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-05-10 07:42:46 -0700</bug_when>
    <thetext>Comment on attachment 459114
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/PlatformDisplay.cpp:283
&gt;&gt; +
&gt; 
&gt; Is there a reason this is in braces? Also, though I like that the lambda enables the final line to be very readable, it seems a bit wordy vs just
&gt; 
&gt; m_eglExtensions.EXT_image_dma_buf_import_modifiers = std::find(displayExtensions.begin(), displayExtensions.end(), &quot;EGL_EXT_image_dma_buf_import_modifiers&quot;_s) != displayExtensions.end();
&gt; 
&gt; It feels like this isn&apos;t really in keeping with the code surrounding it. Maybe I&apos;ve not fully understood something here though and it&apos;s not a dealbreaker or anything.

The scope block limits the use of the queried string and the split-result Vector to just this block, avoiding accidental use in subsequent changes outside of this scope.

Lambda is provided for reuse when detecting additional extensions in the future.

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxyDMABuf.cpp:271
&gt;&gt; +        attributes.uncheckedAppend(EGL_NONE);
&gt; 
&gt; It&apos;s a shame to have this duplicated, maybe now&apos;s a good time to factor this out into a utility function? Especially with the uncheckedAppend and manually calculated capacity, it&apos;d be nice to have that only done once.

I&apos;ll do it in a subsequent patch cause it will require a separate header that utilizes EGL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868375</commentid>
    <comment_count>4</comment_count>
      <attachid>459114</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-05-12 06:30:31 -0700</bug_when>
    <thetext>Comment on attachment 459114
Patch

Clearing flags on attachment: 459114

Committed r294100 (250485@trunk): &lt;https://commits.webkit.org/250485@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868376</commentid>
    <comment_count>5</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-05-12 06:30:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868377</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-05-12 06:31:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/93170769&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459114</attachid>
            <date>2022-05-10 05:56:23 -0700</date>
            <delta_ts>2022-05-12 06:30:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240276-20220510145621.patch</filename>
            <type>text/plain</type>
            <size>11623</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODNhMjU3NzY4MzViNjIy
YmMyYjI1MWZmYzc3NzRmNjA1MzZlNDI2NS4uYjY3NGQ2MDEzMTQ5NjFkNjM4ZGY2OWZjMDhkNTg1
MDFlZmU4MmE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTA1LTEwICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFJl
c3BlY3QgYW5kIHVzZSB0aGUgRE1BQnVmIG1vZGlmaWVyIHZhbHVlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwMjc2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB3cmFwcGluZyBETUFCdWYgb2Jq
ZWN0cyBpbiBFR0xJbWFnZXMsIHRoZSBtb2RpZmllciB2YWx1ZXMgc2hvdWxkIGJlCisgICAgICAg
IHJlc3BlY3RlZCBhbmQgdXNlZCB0byBwcm9wZXJseSBhbmQgY29tcGxldGVseSBkZXNjcmliZSB0
aGUgRE1BQnVmLgorCisgICAgICAgIFRoaXMgc2hvdWxkIGJlIGFwcGxpZWQgaW4gdHdvIHBsYWNl
cy4gRmlyc3Qgb25lIGlzIEdyYXBoaWNzQ29udGV4dEdMR0JNCisgICAgICAgIHdoZXJlIHRoZSBE
TUFCdWYgaXMgdXNlZCB0byBiYWNrIHRoZSBBTkdMRS1oYW5kbGVkIEVHTEltYWdlLiBTZWNvbmQg
b25lCisgICAgICAgIGlzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlETUFCdWYsIGR1
cmluZyBjb25zdHJ1Y3Rpb24gb2YgdGhlCisgICAgICAgIERNQUJ1ZkxheWVyIG9iamVjdCB1c2Vk
IHRvIHByZXNlbnQgdGhlIERNQUJ1ZiBpbnNpZGUgdGhlIGNvbXBvc2l0aW9uCisgICAgICAgIGVu
Z2luZS4KKworICAgICAgICBJbiBib3RoIGNhc2VzIHRoaXMgcHJpbWFyaWx5IHJlbGllcyBvbiB0
aGUgcHJlc2VuY2Ugb2YgdGhlCisgICAgICAgIEVHTF9FWFRfaW1hZ2VfZG1hX2J1Zl9pbXBvcnRf
bW9kaWZpZXJzIGV4dGVuc2lvbi4gRm9yIHRoZSBmaXJzdCBjYXNlCisgICAgICAgIGRldGVjdGlv
biBvZiB0aGlzIGV4dGVuc2lvbiBpcyBkb25lIHRocm91Z2ggQU5HTEUgYW5kIGl0cyBzdGF0ZSBz
dG9yZWQKKyAgICAgICAgb24gdGhlIEdyYXBoaWNzQ29udGV4dEdMR0JNIG9iamVjdCBkdXJpbmcg
Y29udGV4dCBpbml0aWFsaXphdGlvbi4gRm9yCisgICAgICAgIHRoZSBzZWNvbmQgY2FzZSB0aGlz
IHN0YXRlIGlzIHN0b3JlZCBvbiB0aGUgUGxhdGZvcm1EaXNwbGF5IG9iamVjdAorICAgICAgICBh
ZnRlciBpdCdzIHJldHJpZXZlZCBkdXJpbmcgdGhlIEVHTERpc3BsYXkgaW5pdGlhbGl6YXRpb24u
CisKKyAgICAgICAgSWYgZGV0ZWN0ZWQsIHRoZSBETUFCdWYgbW9kaWZpZXIgdmFsdWUgaXMgaW5j
bHVkZWQgaW4gdGhlIGF0dHJpYnV0ZXMKKyAgICAgICAgYXJyYXkgdXNlZCBmb3IgdGhlIEVHTElt
YWdlIGNyZWF0aW9uIGNhbGwuIFRoZSBhY3R1YWwgbW9kaWZpZXIgdmFsdWUgaXMKKyAgICAgICAg
cmV0cmlldmVkIGZyb20gdGhlIGdibV9ibyBvYmplY3QsIGxlYXZpbmcgaXQgdG8gbGliZ2JtIHRv
IGFzc2VzcyB0aGUKKyAgICAgICAgYmVzdCBwb3NzaWJsZSBmb3JtYXR0aW5nIG9mIHRoZSBETUFi
dWYgcmVzb3VyY2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3Bs
YXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5Ojppbml0aWFsaXplRUdM
RGlzcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5Lmg6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6OmVnbEV4dGVuc2lvbnMgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dibS9HQk1CdWZmZXJTd2FwY2hhaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R0JNQnVmZmVyU3dhcGNoYWluOjpCdWZmZXI6OmNyZWF0ZURN
QUJ1Zk9iamVjdCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ2JtL0dyYXBo
aWNzQ29udGV4dEdMR0JNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEdCTTo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ2JtL0dyYXBoaWNzQ29udGV4dEdMR0JNLmg6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEdCTTo6ZWdsRXh0ZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlETUFCdWYu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eURN
QUJ1Zjo6RE1BQnVmTGF5ZXI6OmNyZWF0ZUVHTEltYWdlRGF0YSk6CisKIDIwMjItMDUtMDIgIEFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtRdWlya3NdIFJFR1JFU1NJ
T04gKHIyODY4NzQpOiBNZW51IGlzIEN1dCBPZmYgQWZ0ZXIgUHJlc3NpbmcgU2VhcmNoIEljb24g
b24gSG90ZWxzLmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1EaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtRGlzcGxheS5jcHAKaW5kZXggNzUzYzg3ZTIzODZiNTU5MGJlMWRjNmViNWQxM2Q3
MGRlOGEwMzdmYS4uMTAzMjJkMzczN2U1MDc0YTdhMDU2MTZlNDkzYjkwZTQxODU1YmM1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3Bs
YXkuY3BwCkBAIC0yNjcsNiArMjY3LDIwIEBAIHZvaWQgUGxhdGZvcm1EaXNwbGF5Ojppbml0aWFs
aXplRUdMRGlzcGxheSgpCiAgICAgbV9lZ2xNYWpvclZlcnNpb24gPSBtYWpvclZlcnNpb247CiAg
ICAgbV9lZ2xNaW5vclZlcnNpb24gPSBtaW5vclZlcnNpb247CiAKKyAgICB7CisgICAgICAgIGNv
bnN0IGNoYXIqIGV4dGVuc2lvbnNTdHJpbmcgPSBlZ2xRdWVyeVN0cmluZyhtX2VnbERpc3BsYXks
IEVHTF9FWFRFTlNJT05TKTsKKyAgICAgICAgYXV0byBkaXNwbGF5RXh0ZW5zaW9ucyA9IFN0cmlu
Z1ZpZXcgeyBleHRlbnNpb25zU3RyaW5nIH0uc3BsaXQoJyAnKTsKKyAgICAgICAgYXV0byBmaW5k
RXh0ZW5zaW9uID0KKyAgICAgICAgICAgIFsmXShhdXRvIGV4dGVuc2lvbk5hbWUpIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjphbnlfb2YoZGlzcGxheUV4dGVuc2lvbnMuYmVnaW4oKSwg
ZGlzcGxheUV4dGVuc2lvbnMuZW5kKCksCisgICAgICAgICAgICAgICAgICAgIFsmXShhdXRvIGV4
dGVuc2lvbkVudHJ5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXh0ZW5zaW9u
RW50cnkgPT0gZXh0ZW5zaW9uTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICB9OworCisgICAgICAgIG1fZWdsRXh0ZW5zaW9ucy5FWFRfaW1hZ2VfZG1hX2J1Zl9pbXBv
cnRfbW9kaWZpZXJzID0gZmluZEV4dGVuc2lvbigiRUdMX0VYVF9pbWFnZV9kbWFfYnVmX2ltcG9y
dF9tb2RpZmllcnMiX3MpOworICAgIH0KKwogICAgIGVnbERpc3BsYXlzKCkuYWRkKHRoaXMpOwog
CiAjaWYgIVBMQVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1EaXNwbGF5LmgKaW5kZXggMTY2MGU1MTBiYjExZWE0ZmU5OTU3YTkzMDg5
YWJmODkzZTVjOTdhMS4uYzZhY2M3YWM3NzE5NDlhOGYwY2ZiYjI1MGMyNTAzZmU2NzViZjBkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNw
bGF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNw
bGF5LmgKQEAgLTg2LDYgKzg2LDExIEBAIHB1YmxpYzoKICNpZiBVU0UoRUdMKQogICAgIEVHTERp
c3BsYXkgZWdsRGlzcGxheSgpIGNvbnN0OwogICAgIGJvb2wgZWdsQ2hlY2tWZXJzaW9uKGludCBt
YWpvciwgaW50IG1pbm9yKSBjb25zdDsKKworICAgIHN0cnVjdCBFR0xFeHRlbnNpb25zIHsKKyAg
ICAgICAgYm9vbCBFWFRfaW1hZ2VfZG1hX2J1Zl9pbXBvcnRfbW9kaWZpZXJzIHsgZmFsc2UgfTsK
KyAgICB9OworICAgIGNvbnN0IEVHTEV4dGVuc2lvbnMmIGVnbEV4dGVuc2lvbnMoKSBjb25zdCB7
IHJldHVybiBtX2VnbEV4dGVuc2lvbnM7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSX0dMKQpAQCAtMTQ1LDYgKzE1MCw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2VnbERpc3BsYXlJbml0aWFsaXplZCB7IGZhbHNlIH07CiAgICAgaW50IG1fZWdsTWFqb3JW
ZXJzaW9uIHsgMCB9OwogICAgIGludCBtX2VnbE1pbm9yVmVyc2lvbiB7IDAgfTsKKyAgICBFR0xF
eHRlbnNpb25zIG1fZWdsRXh0ZW5zaW9uczsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSX0dMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ2JtL0dCTUJ1ZmZlclN3YXBjaGFpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nYm0vR0JNQnVmZmVyU3dhcGNoYWluLmNwcAppbmRleCBhMzdmOWU5ZWI2
NjAzZjdhMzZjYzFkNDQwN2QyYWRmNGJjNzk3MGMyLi41ZjNiOTUwZTEyYmRjNmRjNzY5ZDgyZWI1
NjIxN2Y2NjhkNTRjNjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nYm0vR0JNQnVmZmVyU3dhcGNoYWluLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nYm0vR0JNQnVmZmVyU3dhcGNoYWluLmNwcApAQCAtMTU4LDggKzE1OCw3
IEBAIERNQUJ1Zk9iamVjdCBHQk1CdWZmZXJTd2FwY2hhaW46OkJ1ZmZlcjo6Y3JlYXRlRE1BQnVm
T2JqZWN0KHVpbnRwdHJfdCBoYW5kbGUpIGNvCiAgICAgICAgIG9iamVjdC5mZFtpXSA9IFVuaXhG
aWxlRGVzY3JpcHRvciB7IGdibV9ib19nZXRfZmQobV9wbGFuZXNbaV0uYm8pLCBVbml4RmlsZURl
c2NyaXB0b3I6OkFkb3B0IH07CiAgICAgICAgIG9iamVjdC5vZmZzZXRbaV0gPSAwOwogICAgICAg
ICBvYmplY3Quc3RyaWRlW2ldID0gbV9wbGFuZXNbaV0uc3RyaWRlOwotICAgICAgICAvLyBUT0RP
OiB0aGVzZSBzaG91bGQgYmUgdGhlIHBsYW5lLXNwZWNpZmljIG1vZGlmaWVycy4gV2UgZG9uJ3Qg
dXNlIHRoZW0geWV0LgotICAgICAgICBvYmplY3QubW9kaWZpZXJbaV0gPSAwOworICAgICAgICBv
YmplY3QubW9kaWZpZXJbaV0gPSBnYm1fYm9fZ2V0X21vZGlmaWVyKG1fcGxhbmVzW2ldLmJvKTsK
ICAgICB9CiAKICAgICByZXR1cm4gb2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ2JtL0dyYXBoaWNzQ29udGV4dEdMR0JNLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dibS9HcmFwaGljc0NvbnRleHRHTEdCTS5jcHAKaW5k
ZXggODdmNTkwNjFiOTliYzBhYzk3N2Y2ODYzN2VmODRhMzA0Mzg3NWFiMS4uN2IyMGU0OTMwM2Vi
YWM0NTZlNmIwN2U3ODA2OTAwOWU0YzQyNWJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ2JtL0dyYXBoaWNzQ29udGV4dEdMR0JNLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nYm0vR3JhcGhpY3NDb250ZXh0R0xHQk0uY3Bw
CkBAIC0xMDAsMTcgKzEwMCwyNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Om1ha2VD
b250ZXh0Q3VycmVudCgpCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gY29udGV4dFN3YXBjaGFpbi5p
bWFnZXMuZW5zdXJlKGNvbnRleHRTd2FwY2hhaW4uZHJhd0JPLT5oYW5kbGUoKSwKICAgICAgICAg
ICAgIFsmXSB7CiAgICAgICAgICAgICAgICAgYXV0byBkbWFidWZPYmplY3QgPSBjb250ZXh0U3dh
cGNoYWluLmRyYXdCTy0+Y3JlYXRlRE1BQnVmT2JqZWN0KDApOworICAgICAgICAgICAgICAgIGJv
b2wgaW1wb3J0TW9kaWZpZXJzID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xHQk0mPigq
dGhpcykuZWdsRXh0ZW5zaW9ucygpLkVYVF9pbWFnZV9kbWFfYnVmX2ltcG9ydF9tb2RpZmllcnM7
CiAKLSAgICAgICAgICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8RUdMaW50PiBhdHRyaWJ1
dGVzIHsKKyAgICAgICAgICAgICAgICBWZWN0b3I8RUdMaW50PiBhdHRyaWJ1dGVzOworICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgxMiArIDQgKyAxKTsK
KyAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzLnVuY2hlY2tlZEFwcGVuZChTcGFuPGNvbnN0IEVH
TGludD4oewogICAgICAgICAgICAgICAgICAgICBFR0xfV0lEVEgsIEVHTGludChkbWFidWZPYmpl
Y3QuZm9ybWF0LnBsYW5lV2lkdGgoMCwgZG1hYnVmT2JqZWN0LndpZHRoKSksCiAgICAgICAgICAg
ICAgICAgICAgIEVHTF9IRUlHSFQsIEVHTGludChkbWFidWZPYmplY3QuZm9ybWF0LnBsYW5lSGVp
Z2h0KDAsIGRtYWJ1Zk9iamVjdC5oZWlnaHQpKSwKICAgICAgICAgICAgICAgICAgICAgRUdMX0xJ
TlVYX0RSTV9GT1VSQ0NfRVhULCBzdGF0aWNfY2FzdDxFR0xpbnQ+KGRtYWJ1Zk9iamVjdC5mb3Jt
YXQucGxhbmVzWzBdLmZvdXJjYyksCiAgICAgICAgICAgICAgICAgICAgIEVHTF9ETUFfQlVGX1BM
QU5FMF9GRF9FWFQsIGRtYWJ1Zk9iamVjdC5mZFswXS52YWx1ZSgpLAogICAgICAgICAgICAgICAg
ICAgICBFR0xfRE1BX0JVRl9QTEFORTBfUElUQ0hfRVhULCBzdGF0aWNfY2FzdDxFR0xpbnQ+KGRt
YWJ1Zk9iamVjdC5zdHJpZGVbMF0pLAogICAgICAgICAgICAgICAgICAgICBFR0xfRE1BX0JVRl9Q
TEFORTBfT0ZGU0VUX0VYVCwgMCwKLSAgICAgICAgICAgICAgICAgICAgRUdMX05PTkUsCi0gICAg
ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICByZXR1cm4gRUdMX0NyZWF0ZUltYWdlS0hS
KGNvbnRleHRTd2FwY2hhaW4ucGxhdGZvcm1EaXNwbGF5LCBFR0xfTk9fQ09OVEVYVCwgRUdMX0xJ
TlVYX0RNQV9CVUZfRVhULCAoRUdMQ2xpZW50QnVmZmVyKW51bGxwdHIsIHN0ZDo6ZGF0YShhdHRy
aWJ1dGVzKSk7CisgICAgICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgICAgIGlmIChpbXBv
cnRNb2RpZmllcnMpIHsKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcy51bmNoZWNrZWRB
cHBlbmQoU3Bhbjxjb25zdCBFR0xpbnQ+KHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9E
TUFfQlVGX1BMQU5FMF9NT0RJRklFUl9ISV9FWFQsIHN0YXRpY19jYXN0PEVHTGludD4oZG1hYnVm
T2JqZWN0Lm1vZGlmaWVyWzBdID4+IDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9E
TUFfQlVGX1BMQU5FMF9NT0RJRklFUl9MT19FWFQsIHN0YXRpY19jYXN0PEVHTGludD4oZG1hYnVm
T2JqZWN0Lm1vZGlmaWVyWzBdICYgMHhmZmZmZmZmZiksCisgICAgICAgICAgICAgICAgICAgIH0p
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXR0cmlidXRlcy51bmNoZWNr
ZWRBcHBlbmQoRUdMX05PTkUpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIEVHTF9DcmVhdGVJ
bWFnZUtIUihjb250ZXh0U3dhcGNoYWluLnBsYXRmb3JtRGlzcGxheSwgRUdMX05PX0NPTlRFWFQs
IEVHTF9MSU5VWF9ETUFfQlVGX0VYVCwgKEVHTENsaWVudEJ1ZmZlciludWxscHRyLCBhdHRyaWJ1
dGVzLmRhdGEoKSk7CiAgICAgICAgICAgICB9KTsKIAogICAgICAgICBHTF9CaW5kVGV4dHVyZSh0
ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmUpOwpAQCAtMjk2LDYgKzMwNiwxMCBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMR0JNOjpwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KCkKICAgICAgICAgTE9H
KFdlYkdMLCAiQU5HTEUgbWFrZUNvbnRleHRDdXJyZW50IGZhaWxlZC4iKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KKworICAgIGlmIChzdHJzdHIoZGlzcGxheUV4dGVuc2lvbnMsICJF
R0xfRVhUX2ltYWdlX2RtYV9idWZfaW1wb3J0X21vZGlmaWVycyIpKQorICAgICAgICBtX2VnbEV4
dGVuc2lvbnMuRVhUX2ltYWdlX2RtYV9idWZfaW1wb3J0X21vZGlmaWVycyA9IHRydWU7CisKICAg
ICBMT0coV2ViR0wsICJHb3QgRUdMQ29udGV4dCIpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2JtL0dyYXBoaWNzQ29u
dGV4dEdMR0JNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nYm0vR3JhcGhp
Y3NDb250ZXh0R0xHQk0uaAppbmRleCA4NTNmMzgzZDdmZmVhZGJlMTA0NDllZDVjMmU3ZjYwODI2
NWQ3ODI5Li4yMjE2MGU4MTI3OWVlYjg0M2UzNGJhNjRkMmY5YzNhMmE3Y2I5ZGU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nYm0vR3JhcGhpY3NDb250ZXh0
R0xHQk0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nYm0vR3JhcGhp
Y3NDb250ZXh0R0xHQk0uaApAQCAtODUsMTAgKzg1LDE2IEBAIHB1YmxpYzoKIAogICAgIFN3YXBj
aGFpbiYgc3dhcGNoYWluKCkgeyByZXR1cm4gbV9zd2FwY2hhaW47IH0KIAorICAgIHN0cnVjdCBF
R0xFeHRlbnNpb25zIHsKKyAgICAgICAgYm9vbCBFWFRfaW1hZ2VfZG1hX2J1Zl9pbXBvcnRfbW9k
aWZpZXJzIHsgZmFsc2UgfTsKKyAgICB9OworICAgIGNvbnN0IEVHTEV4dGVuc2lvbnMmIGVnbEV4
dGVuc2lvbnMoKSB7IHJldHVybiBtX2VnbEV4dGVuc2lvbnM7IH0KKwogcHJvdGVjdGVkOgogICAg
IEdyYXBoaWNzQ29udGV4dEdMR0JNKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYmKTsKIAogcHJpdmF0ZToKKyAgICBFR0xFeHRlbnNpb25zIG1fZWdsRXh0ZW5zaW9uczsKICAg
ICBTd2FwY2hhaW4gbV9zd2FwY2hhaW47CiAKICNpZiBVU0UoTklDT1NJQSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5RE1BQnVmLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5RE1BQnVmLmNwcAppbmRl
eCAxYmQ1NDc4Nzc5MGM4OGFlNWQzMTI0NjdhNTQ0MGY2ZGQ1MTExMzVlLi42YTVkNDE0ZjhiNDVh
ODVmOTBjMTFhNGJiNTU4NjFhZmZjZmM3ZjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eURN
QUJ1Zi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlETUFCdWYuY3BwCkBAIC0yNDcsMjAgKzI0Nywz
MCBAQCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eURNQUJ1
Zjo6RE1BQnVmTGF5ZXI6OkVHTEltYWdlRGF0YQogewogICAgIHVzaW5nIEVHTEltYWdlRGF0YSA9
IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlETUFCdWY6OkRNQUJ1ZkxheWVyOjpFR0xJ
bWFnZURhdGE7CiAKLSAgICBFR0xEaXNwbGF5IGVnbERpc3BsYXkgPSBQbGF0Zm9ybURpc3BsYXk6
OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpLmVnbERpc3BsYXkoKTsKKyAgICBhdXRvJiBw
bGF0Zm9ybURpc3BsYXkgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3Np
dGluZygpOworICAgIEVHTERpc3BsYXkgZWdsRGlzcGxheSA9IHBsYXRmb3JtRGlzcGxheS5lZ2xE
aXNwbGF5KCk7CiAKICAgICBFR0xJbWFnZUtIUiBpbWFnZVtETUFCdWZGb3JtYXQ6OmNfbWF4UGxh
bmVzXTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb2JqZWN0LmZvcm1hdC5udW1QbGFu
ZXM7ICsraSkgewotICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8RUdMaW50PiBhdHRyaWJ1
dGVzIHsKKyAgICAgICAgVmVjdG9yPEVHTGludD4gYXR0cmlidXRlczsKKyAgICAgICAgYXR0cmli
dXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEyICsgNCArIDEpOworICAgICAgICBhdHRyaWJ1
dGVzLnVuY2hlY2tlZEFwcGVuZChTcGFuPGNvbnN0IEVHTGludD4oewogICAgICAgICAgICAgRUdM
X1dJRFRILCBFR0xpbnQob2JqZWN0LmZvcm1hdC5wbGFuZVdpZHRoKGksIG9iamVjdC53aWR0aCkp
LAogICAgICAgICAgICAgRUdMX0hFSUdIVCwgRUdMaW50KG9iamVjdC5mb3JtYXQucGxhbmVIZWln
aHQoaSwgb2JqZWN0LmhlaWdodCkpLAogICAgICAgICAgICAgRUdMX0xJTlVYX0RSTV9GT1VSQ0Nf
RVhULCBFR0xpbnQob2JqZWN0LmZvcm1hdC5wbGFuZXNbaV0uZm91cmNjKSwKICAgICAgICAgICAg
IEVHTF9ETUFfQlVGX1BMQU5FMF9GRF9FWFQsIG9iamVjdC5mZFtpXS52YWx1ZSgpLAogICAgICAg
ICAgICAgRUdMX0RNQV9CVUZfUExBTkUwX09GRlNFVF9FWFQsIEVHTGludChvYmplY3Qub2Zmc2V0
W2ldKSwKICAgICAgICAgICAgIEVHTF9ETUFfQlVGX1BMQU5FMF9QSVRDSF9FWFQsIEVHTGludChv
YmplY3Quc3RyaWRlW2ldKSwKLSAgICAgICAgICAgIEVHTF9OT05FLAotICAgICAgICB9OwotICAg
ICAgICBpbWFnZVtpXSA9IGNyZWF0ZUltYWdlS0hSKCkoZWdsRGlzcGxheSwgRUdMX05PX0NPTlRF
WFQsIEVHTF9MSU5VWF9ETUFfQlVGX0VYVCwgbnVsbHB0ciwgc3RkOjpkYXRhKGF0dHJpYnV0ZXMp
KTsKKyAgICAgICAgfSkpOworICAgICAgICBpZiAocGxhdGZvcm1EaXNwbGF5LmVnbEV4dGVuc2lv
bnMoKS5FWFRfaW1hZ2VfZG1hX2J1Zl9pbXBvcnRfbW9kaWZpZXJzKSB7CisgICAgICAgICAgICBh
dHRyaWJ1dGVzLnVuY2hlY2tlZEFwcGVuZChTcGFuPGNvbnN0IEVHTGludD4oeworICAgICAgICAg
ICAgICAgIEVHTF9ETUFfQlVGX1BMQU5FMF9NT0RJRklFUl9ISV9FWFQsIHN0YXRpY19jYXN0PEVH
TGludD4ob2JqZWN0Lm1vZGlmaWVyW2ldID4+IDMyKSwKKyAgICAgICAgICAgICAgICBFR0xfRE1B
X0JVRl9QTEFORTBfTU9ESUZJRVJfTE9fRVhULCBzdGF0aWNfY2FzdDxFR0xpbnQ+KG9iamVjdC5t
b2RpZmllcltpXSAmIDB4ZmZmZmZmZmYpLAorICAgICAgICAgICAgfSkpOworICAgICAgICB9Cisg
ICAgICAgIGF0dHJpYnV0ZXMudW5jaGVja2VkQXBwZW5kKEVHTF9OT05FKTsKKworICAgICAgICBp
bWFnZVtpXSA9IGNyZWF0ZUltYWdlS0hSKCkoZWdsRGlzcGxheSwgRUdMX05PX0NPTlRFWFQsIEVH
TF9MSU5VWF9ETUFfQlVGX0VYVCwgbnVsbHB0ciwgYXR0cmlidXRlcy5kYXRhKCkpOwogICAgIH0K
IAogICAgIGF1dG8gaW1hZ2VEYXRhID0gbWFrZVVuaXF1ZTxFR0xJbWFnZURhdGE+KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>