<?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>232622</bug_id>
          
          <creation_ts>2021-11-02 07:11:36 -0700</creation_ts>
          <short_desc>[GTK][a11y] Embedded objects are not correctly handled by text interface with ATSPI</short_desc>
          <delta_ts>2021-11-05 01:22:50 -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>WebKitGTK</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>230253</blocked>
    
    <blocked>232707</blocked>
    
    <blocked>232708</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mifenton</cc>
    
    <cc>samuel_white</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1811098</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-02 07:11:36 -0700</bug_when>
    <thetext>We are not correctly handling embedded objects (replaced elements) when converting text offsets to/from visible position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811102</commentid>
    <comment_count>1</comment_count>
      <attachid>443086</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-02 07:17:06 -0700</bug_when>
    <thetext>Created attachment 443086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811107</commentid>
    <comment_count>2</comment_count>
      <attachid>443088</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-02 07:39:31 -0700</bug_when>
    <thetext>Created attachment 443088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811838</commentid>
    <comment_count>3</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-11-04 06:37:34 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #2)
&gt; Created attachment 443088 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
+++ a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
@@ -2145,7 +2145,12 @@ VisiblePosition AccessibilityRenderObject::visiblePositionForIndex(int index) co
     if (!node)
         return VisiblePosition();

+#if USE(ATSPI)
+    // We need to consider replaced elements for GTK, as they will be presented with the &apos;object replacement character&apos; (0xFFFC).
+    return { makeDeprecatedLegacyPosition(resolveCharacterLocation(makeRangeSelectingNodeContents(*node), index, TextIteratorBehavior::EmitsObjectReplacementCharacters)) };

Can we use 

VisiblePosition visiblePositionForIndex(int index, ContainerNode* scope)

in editing.cpp adding a TextIteratorBehaviors parameter to it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811841</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-04 06:42:47 -0700</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #3)
&gt; (In reply to Carlos Garcia Campos from comment #2)
&gt; &gt; Created attachment 443088 [details]
&gt; &gt; Patch
&gt; 
&gt; --- a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
&gt; +++ a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
&gt; @@ -2145,7 +2145,12 @@ VisiblePosition
&gt; AccessibilityRenderObject::visiblePositionForIndex(int index) co
&gt;      if (!node)
&gt;          return VisiblePosition();
&gt; 
&gt; +#if USE(ATSPI)
&gt; +    // We need to consider replaced elements for GTK, as they will be
&gt; presented with the &apos;object replacement character&apos; (0xFFFC).
&gt; +    return {
&gt; makeDeprecatedLegacyPosition(resolveCharacterLocation(makeRangeSelectingNodeC
&gt; ontents(*node), index,
&gt; TextIteratorBehavior::EmitsObjectReplacementCharacters)) };
&gt; 
&gt; Can we use 
&gt; 
&gt; VisiblePosition visiblePositionForIndex(int index, ContainerNode* scope)
&gt; 
&gt; in editing.cpp adding a TextIteratorBehaviors parameter to it?

That was my initial idea, but it expects ContainerNode while we have just a Node and I&apos;m not sure it&apos;s ok to change visiblePositionForIndex to receive a Node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811844</commentid>
    <comment_count>5</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-11-04 06:50:51 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #4)
&gt; (In reply to Andres Gonzalez from comment #3)
&gt; &gt; (In reply to Carlos Garcia Campos from comment #2)
&gt; &gt; &gt; Created attachment 443088 [details]
&gt; &gt; &gt; Patch
&gt; &gt; 
&gt; &gt; --- a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
&gt; &gt; +++ a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
&gt; &gt; @@ -2145,7 +2145,12 @@ VisiblePosition
&gt; &gt; AccessibilityRenderObject::visiblePositionForIndex(int index) co
&gt; &gt;      if (!node)
&gt; &gt;          return VisiblePosition();
&gt; &gt; 
&gt; &gt; +#if USE(ATSPI)
&gt; &gt; +    // We need to consider replaced elements for GTK, as they will be
&gt; &gt; presented with the &apos;object replacement character&apos; (0xFFFC).
&gt; &gt; +    return {
&gt; &gt; makeDeprecatedLegacyPosition(resolveCharacterLocation(makeRangeSelectingNodeC
&gt; &gt; ontents(*node), index,
&gt; &gt; TextIteratorBehavior::EmitsObjectReplacementCharacters)) };
&gt; &gt; 
&gt; &gt; Can we use 
&gt; &gt; 
&gt; &gt; VisiblePosition visiblePositionForIndex(int index, ContainerNode* scope)
&gt; &gt; 
&gt; &gt; in editing.cpp adding a TextIteratorBehaviors parameter to it?
&gt; 
&gt; That was my initial idea, but it expects ContainerNode while we have just a
&gt; Node and I&apos;m not sure it&apos;s ok to change visiblePositionForIndex to receive a
&gt; Node.

It should be ok since it is only used for

SimpleRange makeRangeSelectingNodeContents(Node&amp; node)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811846</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-04 06:53:54 -0700</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #5)
&gt; (In reply to Carlos Garcia Campos from comment #4)
&gt; &gt; (In reply to Andres Gonzalez from comment #3)
&gt; &gt; &gt; (In reply to Carlos Garcia Campos from comment #2)
&gt; &gt; &gt; &gt; Created attachment 443088 [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; --- a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
&gt; &gt; &gt; +++ a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
&gt; &gt; &gt; @@ -2145,7 +2145,12 @@ VisiblePosition
&gt; &gt; &gt; AccessibilityRenderObject::visiblePositionForIndex(int index) co
&gt; &gt; &gt;      if (!node)
&gt; &gt; &gt;          return VisiblePosition();
&gt; &gt; &gt; 
&gt; &gt; &gt; +#if USE(ATSPI)
&gt; &gt; &gt; +    // We need to consider replaced elements for GTK, as they will be
&gt; &gt; &gt; presented with the &apos;object replacement character&apos; (0xFFFC).
&gt; &gt; &gt; +    return {
&gt; &gt; &gt; makeDeprecatedLegacyPosition(resolveCharacterLocation(makeRangeSelectingNodeC
&gt; &gt; &gt; ontents(*node), index,
&gt; &gt; &gt; TextIteratorBehavior::EmitsObjectReplacementCharacters)) };
&gt; &gt; &gt; 
&gt; &gt; &gt; Can we use 
&gt; &gt; &gt; 
&gt; &gt; &gt; VisiblePosition visiblePositionForIndex(int index, ContainerNode* scope)
&gt; &gt; &gt; 
&gt; &gt; &gt; in editing.cpp adding a TextIteratorBehaviors parameter to it?
&gt; &gt; 
&gt; &gt; That was my initial idea, but it expects ContainerNode while we have just a
&gt; &gt; Node and I&apos;m not sure it&apos;s ok to change visiblePositionForIndex to receive a
&gt; &gt; Node.
&gt; 
&gt; It should be ok since it is only used for
&gt; 
&gt; SimpleRange makeRangeSelectingNodeContents(Node&amp; node)

Ok! I&apos;ll do it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811847</commentid>
    <comment_count>7</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-11-04 06:57:35 -0700</bug_when>
    <thetext>Why the TextIteratorBehaviors need to be different for ATSPI vx. ATK or Mac? This should all be platform independent. Not saying that you should make it platform-independent, but just want to understand the differences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811848</commentid>
    <comment_count>8</comment_count>
      <attachid>443302</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-04 07:10:33 -0700</bug_when>
    <thetext>Created attachment 443302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811849</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-04 07:13:50 -0700</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #7)
&gt; Why the TextIteratorBehaviors need to be different for ATSPI vx. ATK or Mac?
&gt; This should all be platform independent. Not saying that you should make it
&gt; platform-independent, but just want to understand the differences.

I don&apos;t know how it&apos;s expected to behave in mac, it should be the same for ATK and ATSPI, but I don&apos;t want to change the ATK behavior in this patch. The handling of replaced objects is already broken in ATK and fixing it would require more changes not included in this patch. The new ATSPI implementation will replace the ATK one, so I don&apos;t plan to fix ATK at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812088</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-11-05 01:22:50 -0700</bug_when>
    <thetext>Committed r285339 (243900@main): &lt;https://commits.webkit.org/243900@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443086</attachid>
            <date>2021-11-02 07:17:06 -0700</date>
            <delta_ts>2021-11-02 08:30:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-atspi-embedded-objects.diff</filename>
            <type>text/plain</type>
            <size>12636</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5YzU3MzRmN2NlN2YuLmVmYzRiMDc2MDU2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIxIEBACisyMDIxLTExLTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBFbWJlZGRlZCBvYmplY3RzIGFyZSBu
b3QgY29ycmVjdGx5IGhhbmRsZWQgYnkgdGV4dCBpbnRlcmZhY2Ugd2l0aCBBVFNQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNjIyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBzdXJlIHRleHQg
aXRlcmF0b3IgaXMgZW1pdHRpbmcgb2JqZWN0IHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgd2hlbiBj
b252ZXJ0aW5nIG9mZnNldHMgdG8vZnJvbSB2aXNpYmxlIHBvc2l0aW9ucy4KKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JJbmRl
eCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpp
bmRleEZvclZpc2libGVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9h
dHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6Ym91bmRzRm9yU2VsZWN0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5kZXhGb3JW
aXNpYmxlUG9zaXRpb24pOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5oOgorCiAyMDIxLTEw
LTI4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBBWDogQVhWYWx1ZUNoYW5nZWQgaXMgb25seSBzZW50IGZvciByYW5nZSBlbGVtZW50cyB3aGVu
IHZhbHVlIGlzIGNoYW5nZWQgd2l0aCB0aGUga2V5Ym9hcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmlu
ZGV4IDNlNTY5MzljNmFjYy4uNDA0NGZiYTE0YTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAg
LTIxNDUsNyArMjE0NSwxMiBAQCBWaXNpYmxlUG9zaXRpb24gQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4KSBjbwogICAgIGlmICghbm9k
ZSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogCisjaWYgVVNFKEFUU1BJKQor
ICAgIC8vIFdlIG5lZWQgdG8gY29uc2lkZXIgcmVwbGFjZWQgZWxlbWVudHMgZm9yIEdUSywgYXMg
dGhleSB3aWxsIGJlIHByZXNlbnRlZCB3aXRoIHRoZSAnb2JqZWN0IHJlcGxhY2VtZW50IGNoYXJh
Y3RlcicgKDB4RkZGQykuCisgICAgcmV0dXJuIHsgbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlv
bihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRz
KCpub2RlKSwgaW5kZXgsIFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c09iamVjdFJlcGxhY2Vt
ZW50Q2hhcmFjdGVycykpIH07CisjZWxzZQogICAgIHJldHVybiB2aXNpYmxlUG9zaXRpb25Gb3JJ
bmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IoKm5vZGUsIGluZGV4KTsKKyNlbmRpZgogfQogICAg
IAogaW50IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CkBAIC0yMTYzLDE1ICsyMTY4
LDE2IEBAIGludCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbmRleEZvclZpc2libGVQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvCiAgICAgaWYgKCFub2RlKQogICAgICAgICBy
ZXR1cm4gMDsKIAotI2lmIFVTRShBVEspIHx8IFVTRShBVFNQSSkKICAgICAvLyBXZSBuZWVkIHRv
IGNvbnNpZGVyIHJlcGxhY2VkIGVsZW1lbnRzIGZvciBHVEssIGFzIHRoZXkgd2lsbCBiZQogICAg
IC8vIHByZXNlbnRlZCB3aXRoIHRoZSAnb2JqZWN0IHJlcGxhY2VtZW50IGNoYXJhY3RlcicgKDB4
RkZGQykuCi0gICAgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24gPSB0cnVlOwotI2Vsc2UK
LSAgICBib29sIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbiA9IGZhbHNlOworICAgIFRleHRJdGVy
YXRvckJlaGF2aW9ycyBiZWhhdmlvcnM7CisjaWYgVVNFKEFUU1BJKQorICAgIGJlaGF2aW9ycy5h
ZGQoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzT2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJz
KTsKKyNlbGlmIFVTRShBVEspCisgICAgYmVoYXZpb3JzLmFkZChUZXh0SXRlcmF0b3JCZWhhdmlv
cjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBXZWJDb3JlOjppbmRleEZvclZpc2libGVQb3NpdGlvbigqbm9kZSwgcG9zaXRp
b24sIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbik7CisgICAgcmV0dXJuIFdlYkNvcmU6OmluZGV4
Rm9yVmlzaWJsZVBvc2l0aW9uKCpub2RlLCBwb3NpdGlvbiwgYmVoYXZpb3JzKTsKIH0KIAogRWxl
bWVudCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cm9vdEVkaXRhYmxlRWxlbWVudEZvclBv
c2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNw
aS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlP
YmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGUwNzNjMTViYzAxNS4uMjA1NGU0NTk4MmRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlP
YmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRz
cGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTYxMCw5ICs2MTAsOSBAQCBJ
bnRQb2ludCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmJvdW5kc0ZvclNlbGVjdGlvbihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBzZQogICAgIGF1dG8gcmFuZ2VJblBhcmVudCA9ICptYWtlU2lt
cGxlUmFuZ2UocGFyZW50Rmlyc3RQb3NpdGlvbiwgbm9kZVJhbmdlU3RhcnQpOwogCiAgICAgLy8g
U2V0IHZhbHVlcyBmb3Igc3RhcnQgb2Zmc2V0cyBhbmQgY2FsY3VsYXRlIGluaXRpYWwgcmFuZ2Ug
bGVuZ3RoLgotICAgIGludCBzdGFydE9mZnNldCA9IGNoYXJhY3RlckNvdW50KHJhbmdlSW5QYXJl
bnQsIFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJs
ZVBvc2l0aW9ucyk7CisgICAgaW50IHN0YXJ0T2Zmc2V0ID0gY2hhcmFjdGVyQ291bnQocmFuZ2VJ
blBhcmVudCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzT2JqZWN0UmVwbGFjZW1lbnRDaGFy
YWN0ZXJzKTsKICAgICBhdXRvIG5vZGVSYW5nZSA9ICptYWtlU2ltcGxlUmFuZ2Uobm9kZVJhbmdl
U3RhcnQsIG5vZGVSYW5nZUVuZCk7Ci0gICAgaW50IHJhbmdlTGVuZ3RoID0gY2hhcmFjdGVyQ291
bnQobm9kZVJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2Vl
bkFsbFZpc2libGVQb3NpdGlvbnMpOworICAgIGludCByYW5nZUxlbmd0aCA9IGNoYXJhY3RlckNv
dW50KG5vZGVSYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzT2JqZWN0UmVwbGFjZW1l
bnRDaGFyYWN0ZXJzKTsKICAgICByZXR1cm4geyBzdGFydE9mZnNldCwgc3RhcnRPZmZzZXQgKyBy
YW5nZUxlbmd0aCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAppbmRleCA3MmM3
NDQ3MTRmZGEuLmJhMDk2MWViNWY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCkBA
IC05OTQsMTUgKzk5NCwxMiBAQCBpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIFJlZlB0cjxDb250YQogfQogCiAvLyBGSVhN
RTogTWVyZ2UgdGhpcyBmdW5jdGlvbiB3aXRoIHRoZSBvbmUgYWJvdmUuCi1pbnQgaW5kZXhGb3JW
aXNpYmxlUG9zaXRpb24oTm9kZSYgbm9kZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxl
UG9zaXRpb24sIGJvb2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKQoraW50IGluZGV4Rm9yVmlz
aWJsZVBvc2l0aW9uKE5vZGUmIG5vZGUsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBv
c2l0aW9uLCBUZXh0SXRlcmF0b3JCZWhhdmlvcnMgYmVoYXZpb3JzKQogewogICAgIGlmICh2aXNp
YmxlUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgYXV0byByYW5n
ZSA9IG1ha2VTaW1wbGVSYW5nZShtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGVDb250ZW50cyhu
b2RlKSwgdmlzaWJsZVBvc2l0aW9uKTsKLSAgICBUZXh0SXRlcmF0b3JCZWhhdmlvcnMgYmVoYXZp
b3JzOwotICAgIGlmIChmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24pCi0gICAgICAgIGJlaGF2aW9y
cy5hZGQoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNp
YmxlUG9zaXRpb25zKTsKICAgICByZXR1cm4gcmFuZ2UgPyBjaGFyYWN0ZXJDb3VudCgqcmFuZ2Us
IGJlaGF2aW9ycykgOiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oCmluZGV4IDc5MTNj
NmQ5ODE1Mi4uM2FkMTBhZTAxNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaApAQCAtMjYs
NiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJQb3NpdGlvbi5oIgorI2luY2x1
ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5h
bWVzLmg+CkBAIC0xNDQsNyArMTQ1LDcgQEAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlv
bkFmdGVyTm9kZShOb2RlJik7CiBib29sIGxpbmVCcmVha0V4aXN0c0F0VmlzaWJsZVBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogCiBXRUJDT1JFX0VYUE9SVCBpbnQgaW5kZXhGb3JW
aXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgUmVmUHRyPENvbnRhaW5lck5v
ZGU+JiBzY29wZSk7Ci1pbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oTm9kZSYsIGNvbnN0IFZp
c2libGVQb3NpdGlvbiYsIGJvb2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKTsKK2ludCBpbmRl
eEZvclZpc2libGVQb3NpdGlvbihOb2RlJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgVGV4dEl0
ZXJhdG9yQmVoYXZpb3JzKTsKIFdFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvbiB2aXNpYmxl
UG9zaXRpb25Gb3JQb3NpdGlvbldpdGhPZmZzZXQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgaW50
IG9mZnNldCk7CiBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9u
Rm9ySW5kZXgoaW50IGluZGV4LCBDb250YWluZXJOb2RlKiBzY29wZSk7CiBWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXhVc2luZ0NoYXJhY3Rlckl0ZXJhdG9yKE5vZGUmLCBp
bnQgaW5kZXgpOyAvLyBGSVhNRTogV2h5IGRvIHdlIG5lZWQgdGhpcyB2ZXJzaW9uPwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk0NGRmYzRlMTJl
MC4uZmI4ZjdmNGZhN2VmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTEtMDIgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW2ExMXldIEVtYmVkZGVk
IG9iamVjdHMgYXJlIG5vdCBjb3JyZWN0bHkgaGFuZGxlZCBieSB0ZXh0IGludGVyZmFjZSB3aXRo
IEFUU1BJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI2MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYSB0ZXN0IGNhc2UgdG8gY2hlY2sgaGFuZGxpbmcgb2YgZW1iZWRkZWQgb2JqZWN0cyBieSB0
ZXh0IGludGVyZmFjZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3Rr
L1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcDoKKyAgICAgICAgKHRlc3RUZXh0UmVwbGFjZWRP
YmplY3RzKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisKIDIwMjEtMTAtMjcgIEpvbmF0aGFuIEJl
ZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRzY21weV0gR2VuZXJh
dGUgY29tbWl0IG1lc3NhZ2UgdGVtcGxhdGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcApp
bmRleCA0OWNjNzE0ZmFhYjQuLmZiNzljYTc5NGRjYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYktpdEFjY2Vzc2liaWxpdHkuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmls
aXR5LmNwcApAQCAtMTUyMyw2ICsxNTIzLDk3IEBAIHN0YXRpYyB2b2lkIHRlc3RUZXh0U3RhdGVD
aGFuZ2VkKEFjY2Vzc2liaWxpdHlUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogI2VuZGlmCiB9
CiAKK3N0YXRpYyB2b2lkIHRlc3RUZXh0UmVwbGFjZWRPYmplY3RzKEFjY2Vzc2liaWxpdHlUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworI2lmICFVU0UoQVRTUEkpCisgICAgZ190ZXN0X3Nr
aXAoIkVtYmVkZGVkIG9iamVjdHMgYXJlIG5vdCBjb3JyZWN0bHkgaGFuZGxlZCB3aXRoIEFUSyIp
OworI2Vsc2UKKyAgICB0ZXN0LT5zaG93SW5XaW5kb3coODAwLCA2MDApOworICAgIHRlc3QtPmxv
YWRIdG1sKAorICAgICAgICAiPGh0bWw+IgorICAgICAgICAiICA8Ym9keT4iCisgICAgICAgICIg
ICAgPHA+VGhpcyBpcyA8YnV0dG9uPmJ1dHRvbjE8L2J1dHRvbj4gYW5kIDxidXR0b24+YnV0dG9u
MjwvYnV0dG9uPiBpbiBwYXJhZ3JhcGg8L3A+IgorICAgICAgICAiICA8L2JvZHk+IgorICAgICAg
ICAiPC9odG1sPiIsCisgICAgICAgIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOworCisgICAgYXV0byB0ZXN0QXBwID0gdGVzdC0+ZmluZFRlc3RBcHBsaWNhdGlv
bigpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRSh0ZXN0QXBwLmdldCgp
KSk7CisKKyAgICBhdXRvIGRvY3VtZW50V2ViID0gdGVzdC0+ZmluZERvY3VtZW50V2ViKHRlc3RB
cHAuZ2V0KCkpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRShkb2N1bWVu
dFdlYi5nZXQoKSkpOworICAgIGdfYXNzZXJ0X2NtcGludChhdHNwaV9hY2Nlc3NpYmxlX2dldF9j
aGlsZF9jb3VudChkb2N1bWVudFdlYi5nZXQoKSwgbnVsbHB0ciksID09LCAxKTsKKworICAgIGF1
dG8gcCA9IGFkb3B0R1JlZihhdHNwaV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9hdF9pbmRleChkb2N1
bWVudFdlYi5nZXQoKSwgMCwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNf
VEVYVChwLmdldCgpKSk7CisgICAgYXV0byBsZW5ndGggPSBhdHNwaV90ZXh0X2dldF9jaGFyYWN0
ZXJfY291bnQoQVRTUElfVEVYVChwLmdldCgpKSwgbnVsbHB0cik7CisgICAgZ19hc3NlcnRfY21w
aW50KGxlbmd0aCwgPT0sIDI4KTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHRleHQoYXRzcGlfdGV4
dF9nZXRfdGV4dChBVFNQSV9URVhUKHAuZ2V0KCkpLCAwLCAtMSwgbnVsbHB0cikpOworICAgIGdf
YXNzZXJ0X2NtcHN0cih0ZXh0LmdldCgpLCA9PSwgIlRoaXMgaXMgXDM1N1wyNzdcMjc0IGFuZCBc
MzU3XDI3N1wyNzQgaW4gcGFyYWdyYXBoIik7CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2Fj
Y2Vzc2libGVfZ2V0X2NoaWxkX2NvdW50KHAuZ2V0KCksIG51bGxwdHIpLCA9PSwgMik7CisKKyAg
ICBhdXRvIGJ1dHRvbjEgPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRfYXRf
aW5kZXgocC5nZXQoKSwgMCwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNf
QUNDRVNTSUJMRShidXR0b24xLmdldCgpKSk7CisgICAgdGV4dC5yZXNldChhdHNwaV9hY2Nlc3Np
YmxlX2dldF9uYW1lKGJ1dHRvbjEuZ2V0KCksIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9jbXBz
dHIodGV4dC5nZXQoKSwgPT0sICJidXR0b24xIik7CisKKyAgICBhdXRvIGJ1dHRvbjIgPSBhZG9w
dEdSZWYoYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRfYXRfaW5kZXgocC5nZXQoKSwgMSwgbnVs
bHB0cikpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRShidXR0b24yLmdl
dCgpKSk7CisgICAgdGV4dC5yZXNldChhdHNwaV9hY2Nlc3NpYmxlX2dldF9uYW1lKGJ1dHRvbjIu
Z2V0KCksIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGV4dC5nZXQoKSwgPT0sICJi
dXR0b24yIik7CisKKyAgICBVbmlxdWVBdHNwaVRleHRSYW5nZSByYW5nZShhdHNwaV90ZXh0X2dl
dF9zdHJpbmdfYXRfb2Zmc2V0KEFUU1BJX1RFWFQocC5nZXQoKSksIDgsIEFUU1BJX1RFWFRfR1JB
TlVMQVJJVFlfQ0hBUiwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X2NtcHN0cihyYW5nZS0+Y29u
dGVudCwgPT0sICJcMzU3XDI3N1wyNzQiKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQocmFuZ2UtPnN0
YXJ0X29mZnNldCwgPT0sIDgpOworICAgIGdfYXNzZXJ0X2NtcGludChyYW5nZS0+ZW5kX29mZnNl
dCwgPT0sIDkpOworICAgIHJhbmdlLnJlc2V0KGF0c3BpX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZz
ZXQoQVRTUElfVEVYVChwLmdldCgpKSwgMTQsIEFUU1BJX1RFWFRfR1JBTlVMQVJJVFlfQ0hBUiwg
bnVsbHB0cikpOworICAgIGdfYXNzZXJ0X2NtcHN0cihyYW5nZS0+Y29udGVudCwgPT0sICJcMzU3
XDI3N1wyNzQiKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQocmFuZ2UtPnN0YXJ0X29mZnNldCwgPT0s
IDE0KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQocmFuZ2UtPmVuZF9vZmZzZXQsID09LCAxNSk7CisK
KyAgICByYW5nZS5yZXNldChhdHNwaV90ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0KEFUU1BJX1RF
WFQocC5nZXQoKSksIDgsIEFUU1BJX1RFWFRfR1JBTlVMQVJJVFlfV09SRCwgbnVsbHB0cikpOwor
ICAgIGdfYXNzZXJ0X2NtcHN0cihyYW5nZS0+Y29udGVudCwgPT0sICJcMzU3XDI3N1wyNzQgIik7
CisgICAgZ19hc3NlcnRfY21waW50KHJhbmdlLT5zdGFydF9vZmZzZXQsID09LCA4KTsKKyAgICBn
X2Fzc2VydF9jbXBpbnQocmFuZ2UtPmVuZF9vZmZzZXQsID09LCAxMCk7CisgICAgcmFuZ2UucmVz
ZXQoYXRzcGlfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldChBVFNQSV9URVhUKHAuZ2V0KCkpLCAx
NCwgQVRTUElfVEVYVF9HUkFOVUxBUklUWV9XT1JELCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRf
Y21wc3RyKHJhbmdlLT5jb250ZW50LCA9PSwgIlwzNTdcMjc3XDI3NCAiKTsKKyAgICBnX2Fzc2Vy
dF9jbXBpbnQocmFuZ2UtPnN0YXJ0X29mZnNldCwgPT0sIDE0KTsKKyAgICBnX2Fzc2VydF9jbXBp
bnQocmFuZ2UtPmVuZF9vZmZzZXQsID09LCAxNik7CisKKyAgICBpbnQgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldDsKKyAgICBHUmVmUHRyPEdIYXNoVGFibGU+IGF0dHJpYnV0ZXMgPSBhZG9wdEdSZWYo
YXRzcGlfdGV4dF9nZXRfYXR0cmlidXRlX3J1bihBVFNQSV9URVhUKHAuZ2V0KCkpLCAwLCBGQUxT
RSwgJnN0YXJ0T2Zmc2V0LCAmZW5kT2Zmc2V0LCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfbm9u
bnVsbChhdHRyaWJ1dGVzLmdldCgpKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KGdfaGFzaF90YWJs
ZV9zaXplKGF0dHJpYnV0ZXMuZ2V0KCkpLCA9PSwgMCk7CisgICAgZ19hc3NlcnRfY21waW50KHN0
YXJ0T2Zmc2V0LCA9PSwgMCk7CisgICAgZ19hc3NlcnRfY21waW50KGVuZE9mZnNldCwgPT0sIDgp
OworCisgICAgYXR0cmlidXRlcyA9IGFkb3B0R1JlZihhdHNwaV90ZXh0X2dldF9hdHRyaWJ1dGVf
cnVuKEFUU1BJX1RFWFQocC5nZXQoKSksIDksIEZBTFNFLCAmc3RhcnRPZmZzZXQsICZlbmRPZmZz
ZXQsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGF0dHJpYnV0ZXMuZ2V0KCkpOwor
ICAgIGdfYXNzZXJ0X2NtcHVpbnQoZ19oYXNoX3RhYmxlX3NpemUoYXR0cmlidXRlcy5nZXQoKSks
ID4sIDApOworICAgIGdfYXNzZXJ0X2NtcGludChzdGFydE9mZnNldCwgPT0sIDgpOworICAgIGdf
YXNzZXJ0X2NtcGludChlbmRPZmZzZXQsID09LCA5KTsKKworICAgIGF0dHJpYnV0ZXMgPSBhZG9w
dEdSZWYoYXRzcGlfdGV4dF9nZXRfYXR0cmlidXRlX3J1bihBVFNQSV9URVhUKHAuZ2V0KCkpLCAx
MSwgRkFMU0UsICZzdGFydE9mZnNldCwgJmVuZE9mZnNldCwgbnVsbHB0cikpOworICAgIGdfYXNz
ZXJ0X25vbm51bGwoYXR0cmlidXRlcy5nZXQoKSk7CisgICAgZ19hc3NlcnRfY21wdWludChnX2hh
c2hfdGFibGVfc2l6ZShhdHRyaWJ1dGVzLmdldCgpKSwgPT0sIDApOworICAgIGdfYXNzZXJ0X2Nt
cGludChzdGFydE9mZnNldCwgPT0sIDkpOworICAgIGdfYXNzZXJ0X2NtcGludChlbmRPZmZzZXQs
ID09LCAxNCk7CisKKyAgICBhdHRyaWJ1dGVzID0gYWRvcHRHUmVmKGF0c3BpX3RleHRfZ2V0X2F0
dHJpYnV0ZV9ydW4oQVRTUElfVEVYVChwLmdldCgpKSwgMTUsIEZBTFNFLCAmc3RhcnRPZmZzZXQs
ICZlbmRPZmZzZXQsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGF0dHJpYnV0ZXMu
Z2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQoZ19oYXNoX3RhYmxlX3NpemUoYXR0cmlidXRl
cy5nZXQoKSksID4sIDApOworICAgIGdfYXNzZXJ0X2NtcGludChzdGFydE9mZnNldCwgPT0sIDE0
KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZW5kT2Zmc2V0LCA9PSwgMTUpOworCisgICAgYXR0cmli
dXRlcyA9IGFkb3B0R1JlZihhdHNwaV90ZXh0X2dldF9hdHRyaWJ1dGVfcnVuKEFUU1BJX1RFWFQo
cC5nZXQoKSksIDE4LCBGQUxTRSwgJnN0YXJ0T2Zmc2V0LCAmZW5kT2Zmc2V0LCBudWxscHRyKSk7
CisgICAgZ19hc3NlcnRfbm9ubnVsbChhdHRyaWJ1dGVzLmdldCgpKTsKKyAgICBnX2Fzc2VydF9j
bXB1aW50KGdfaGFzaF90YWJsZV9zaXplKGF0dHJpYnV0ZXMuZ2V0KCkpLCA9PSwgMCk7CisgICAg
Z19hc3NlcnRfY21waW50KHN0YXJ0T2Zmc2V0LCA9PSwgMTUpOworICAgIGdfYXNzZXJ0X2NtcGlu
dChlbmRPZmZzZXQsID09LCAyOCk7CisjZW5kaWYKK30KKwogdm9pZCBiZWZvcmVBbGwoKQogewog
ICAgIEFjY2Vzc2liaWxpdHlUZXN0OjphZGQoIldlYktpdEFjY2Vzc2liaWxpdHkiLCAiYWNjZXNz
aWJsZS9iYXNpYy1oaWVyYXJjaHkiLCB0ZXN0QWNjZXNzaWJsZUJhc2ljSGllcmFyY2h5KTsKQEAg
LTE1NDIsNiArMTYzMyw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBBY2Nlc3NpYmlsaXR5VGVz
dDo6YWRkKCJXZWJLaXRBY2Nlc3NpYmlsaXR5IiwgInRleHQvc2VsZWN0aW9ucyIsIHRlc3RUZXh0
U2VsZWN0aW9ucyk7CiAgICAgQWNjZXNzaWJpbGl0eVRlc3Q6OmFkZCgiV2ViS2l0QWNjZXNzaWJp
bGl0eSIsICJ0ZXh0L2F0dHJpYnV0ZXMiLCB0ZXN0VGV4dEF0dHJpYnV0ZXMpOwogICAgIEFjY2Vz
c2liaWxpdHlUZXN0OjphZGQoIldlYktpdEFjY2Vzc2liaWxpdHkiLCAidGV4dC9zdGF0ZS1jaGFu
Z2VkIiwgdGVzdFRleHRTdGF0ZUNoYW5nZWQpOworICAgIEFjY2Vzc2liaWxpdHlUZXN0OjphZGQo
IldlYktpdEFjY2Vzc2liaWxpdHkiLCAidGV4dC9yZXBsYWNlZC1vYmplY3RzIiwgdGVzdFRleHRS
ZXBsYWNlZE9iamVjdHMpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkK
</data>
<flag name="commit-queue"
          id="467746"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443088</attachid>
            <date>2021-11-02 07:39:31 -0700</date>
            <delta_ts>2021-11-04 07:10:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-atspi-embedded-objects.diff</filename>
            <type>text/plain</type>
            <size>12637</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5YzU3MzRmN2NlN2YuLmVmYzRiMDc2MDU2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIxIEBACisyMDIxLTExLTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBFbWJlZGRlZCBvYmplY3RzIGFyZSBu
b3QgY29ycmVjdGx5IGhhbmRsZWQgYnkgdGV4dCBpbnRlcmZhY2Ugd2l0aCBBVFNQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNjIyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBzdXJlIHRleHQg
aXRlcmF0b3IgaXMgZW1pdHRpbmcgb2JqZWN0IHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgd2hlbiBj
b252ZXJ0aW5nIG9mZnNldHMgdG8vZnJvbSB2aXNpYmxlIHBvc2l0aW9ucy4KKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JJbmRl
eCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpp
bmRleEZvclZpc2libGVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9h
dHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6Ym91bmRzRm9yU2VsZWN0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5kZXhGb3JW
aXNpYmxlUG9zaXRpb24pOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5oOgorCiAyMDIxLTEw
LTI4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBBWDogQVhWYWx1ZUNoYW5nZWQgaXMgb25seSBzZW50IGZvciByYW5nZSBlbGVtZW50cyB3aGVu
IHZhbHVlIGlzIGNoYW5nZWQgd2l0aCB0aGUga2V5Ym9hcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmlu
ZGV4IDNlNTY5MzljNmFjYy4uMjRhYzAxNTRlZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAg
LTIxNDUsNyArMjE0NSwxMiBAQCBWaXNpYmxlUG9zaXRpb24gQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4KSBjbwogICAgIGlmICghbm9k
ZSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogCisjaWYgVVNFKEFUU1BJKQor
ICAgIC8vIFdlIG5lZWQgdG8gY29uc2lkZXIgcmVwbGFjZWQgZWxlbWVudHMgZm9yIEdUSywgYXMg
dGhleSB3aWxsIGJlIHByZXNlbnRlZCB3aXRoIHRoZSAnb2JqZWN0IHJlcGxhY2VtZW50IGNoYXJh
Y3RlcicgKDB4RkZGQykuCisgICAgcmV0dXJuIHsgbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlv
bihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRz
KCpub2RlKSwgaW5kZXgsIFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c09iamVjdFJlcGxhY2Vt
ZW50Q2hhcmFjdGVycykpIH07CisjZWxzZQogICAgIHJldHVybiB2aXNpYmxlUG9zaXRpb25Gb3JJ
bmRleFVzaW5nQ2hhcmFjdGVySXRlcmF0b3IoKm5vZGUsIGluZGV4KTsKKyNlbmRpZgogfQogICAg
IAogaW50IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CkBAIC0yMTYzLDE1ICsyMTY4
LDE2IEBAIGludCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbmRleEZvclZpc2libGVQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvCiAgICAgaWYgKCFub2RlKQogICAgICAgICBy
ZXR1cm4gMDsKIAotI2lmIFVTRShBVEspIHx8IFVTRShBVFNQSSkKICAgICAvLyBXZSBuZWVkIHRv
IGNvbnNpZGVyIHJlcGxhY2VkIGVsZW1lbnRzIGZvciBHVEssIGFzIHRoZXkgd2lsbCBiZQogICAg
IC8vIHByZXNlbnRlZCB3aXRoIHRoZSAnb2JqZWN0IHJlcGxhY2VtZW50IGNoYXJhY3RlcicgKDB4
RkZGQykuCi0gICAgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24gPSB0cnVlOwotI2Vsc2UK
LSAgICBib29sIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbiA9IGZhbHNlOworICAgIFRleHRJdGVy
YXRvckJlaGF2aW9ycyBiZWhhdmlvcnM7CisjaWYgVVNFKEFUU1BJKQorICAgIGJlaGF2aW9ycy5h
ZGQoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzT2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJz
KTsKKyNlbGlmIFVTRShBVEspCisgICAgYmVoYXZpb3JzLmFkZChUZXh0SXRlcmF0b3JCZWhhdmlv
cjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpOwogI2VuZGlmCiAK
LSAgICByZXR1cm4gV2ViQ29yZTo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oKm5vZGUsIHBvc2l0
aW9uLCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24pOworICAgIHJldHVybiBXZWJDb3JlOjppbmRl
eEZvclZpc2libGVQb3NpdGlvbigqbm9kZSwgcG9zaXRpb24sIGJlaGF2aW9ycyk7CiB9CiAKIEVs
ZW1lbnQqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJvb3RFZGl0YWJsZUVsZW1lbnRGb3JQ
b3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRz
cGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5
T2JqZWN0VGV4dEF0c3BpLmNwcAppbmRleCBlMDczYzE1YmMwMTUuLjIwNTRlNDU5ODJkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5
T2JqZWN0VGV4dEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwCkBAIC02MTAsOSArNjEwLDkgQEAg
SW50UG9pbnQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpib3VuZHNGb3JTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc2UKICAgICBhdXRvIHJhbmdlSW5QYXJlbnQgPSAqbWFrZVNp
bXBsZVJhbmdlKHBhcmVudEZpcnN0UG9zaXRpb24sIG5vZGVSYW5nZVN0YXJ0KTsKIAogICAgIC8v
IFNldCB2YWx1ZXMgZm9yIHN0YXJ0IG9mZnNldHMgYW5kIGNhbGN1bGF0ZSBpbml0aWFsIHJhbmdl
IGxlbmd0aC4KLSAgICBpbnQgc3RhcnRPZmZzZXQgPSBjaGFyYWN0ZXJDb3VudChyYW5nZUluUGFy
ZW50LCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2li
bGVQb3NpdGlvbnMpOworICAgIGludCBzdGFydE9mZnNldCA9IGNoYXJhY3RlckNvdW50KHJhbmdl
SW5QYXJlbnQsIFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c09iamVjdFJlcGxhY2VtZW50Q2hh
cmFjdGVycyk7CiAgICAgYXV0byBub2RlUmFuZ2UgPSAqbWFrZVNpbXBsZVJhbmdlKG5vZGVSYW5n
ZVN0YXJ0LCBub2RlUmFuZ2VFbmQpOwotICAgIGludCByYW5nZUxlbmd0aCA9IGNoYXJhY3RlckNv
dW50KG5vZGVSYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzQ2hhcmFjdGVyc0JldHdl
ZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKKyAgICBpbnQgcmFuZ2VMZW5ndGggPSBjaGFyYWN0ZXJD
b3VudChub2RlUmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c09iamVjdFJlcGxhY2Vt
ZW50Q2hhcmFjdGVycyk7CiAgICAgcmV0dXJuIHsgc3RhcnRPZmZzZXQsIHN0YXJ0T2Zmc2V0ICsg
cmFuZ2VMZW5ndGggfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKaW5kZXggNzJj
NzQ0NzE0ZmRhLi5iYTA5NjFlYjVmODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApA
QCAtOTk0LDE1ICs5OTQsMTIgQEAgaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBSZWZQdHI8Q29udGEKIH0KIAogLy8gRklY
TUU6IE1lcmdlIHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUgb25lIGFib3ZlLgotaW50IGluZGV4Rm9y
VmlzaWJsZVBvc2l0aW9uKE5vZGUmIG5vZGUsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJs
ZVBvc2l0aW9uLCBib29sIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbikKK2ludCBpbmRleEZvclZp
c2libGVQb3NpdGlvbihOb2RlJiBub2RlLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQ
b3NpdGlvbiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3JzIGJlaGF2aW9ycykKIHsKICAgICBpZiAodmlz
aWJsZVBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGF1dG8gcmFu
Z2UgPSBtYWtlU2ltcGxlUmFuZ2UobWFrZUJvdW5kYXJ5UG9pbnRCZWZvcmVOb2RlQ29udGVudHMo
bm9kZSksIHZpc2libGVQb3NpdGlvbik7Ci0gICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3JzIGJlaGF2
aW9yczsKLSAgICBpZiAoZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKQotICAgICAgICBiZWhhdmlv
cnMuYWRkKFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlz
aWJsZVBvc2l0aW9ucyk7CiAgICAgcmV0dXJuIHJhbmdlID8gY2hhcmFjdGVyQ291bnQoKnJhbmdl
LCBiZWhhdmlvcnMpIDogMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaAppbmRleCA3OTEz
YzZkOTgxNTIuLjNhZDEwYWUwMTUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUG9zaXRpb24uaCIKKyNpbmNs
dWRlICJUZXh0SXRlcmF0b3JCZWhhdmlvci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJO
YW1lcy5oPgpAQCAtMTQ0LDcgKzE0NSw3IEBAIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRp
b25BZnRlck5vZGUoTm9kZSYpOwogYm9vbCBsaW5lQnJlYWtFeGlzdHNBdFZpc2libGVQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKIAogV0VCQ09SRV9FWFBPUlQgaW50IGluZGV4Rm9y
VmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFJlZlB0cjxDb250YWluZXJO
b2RlPiYgc2NvcGUpOwotaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKE5vZGUmLCBjb25zdCBW
aXNpYmxlUG9zaXRpb24mLCBib29sIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbik7CitpbnQgaW5k
ZXhGb3JWaXNpYmxlUG9zaXRpb24oTm9kZSYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIFRleHRJ
dGVyYXRvckJlaGF2aW9ycyk7CiBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uRm9yUG9zaXRpb25XaXRoT2Zmc2V0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGlu
dCBvZmZzZXQpOwogV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlv
bkZvckluZGV4KGludCBpbmRleCwgQ29udGFpbmVyTm9kZSogc2NvcGUpOwogVmlzaWJsZVBvc2l0
aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihOb2RlJiwg
aW50IGluZGV4KTsgLy8gRklYTUU6IFdoeSBkbyB3ZSBuZWVkIHRoaXMgdmVyc2lvbj8KZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NDRkZmM0ZTEy
ZTAuLmZiOGY3ZjRmYTdlZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTExLTAyICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBFbWJlZGRl
ZCBvYmplY3RzIGFyZSBub3QgY29ycmVjdGx5IGhhbmRsZWQgYnkgdGV4dCBpbnRlcmZhY2Ugd2l0
aCBBVFNQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMyNjIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGEgdGVzdCBjYXNlIHRvIGNoZWNrIGhhbmRsaW5nIG9mIGVtYmVkZGVkIG9iamVjdHMgYnkg
dGV4dCBpbnRlcmZhY2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0
ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHA6CisgICAgICAgICh0ZXN0VGV4dFJlcGxhY2Vk
T2JqZWN0cyk6CisgICAgICAgIChiZWZvcmVBbGwpOgorCiAyMDIxLTEwLTI3ICBKb25hdGhhbiBC
ZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbd2Via2l0c2NtcHldIEdlbmVy
YXRlIGNvbW1pdCBtZXNzYWdlIHRlbXBsYXRlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAK
aW5kZXggNDljYzcxNGZhYWI0Li5mYjc5Y2E3OTRkY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJp
bGl0eS5jcHAKQEAgLTE1MjMsNiArMTUyMyw5NyBAQCBzdGF0aWMgdm9pZCB0ZXN0VGV4dFN0YXRl
Q2hhbmdlZChBY2Nlc3NpYmlsaXR5VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICNlbmRpZgog
fQogCitzdGF0aWMgdm9pZCB0ZXN0VGV4dFJlcGxhY2VkT2JqZWN0cyhBY2Nlc3NpYmlsaXR5VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyNpZiAhVVNFKEFUU1BJKQorICAgIGdfdGVzdF9z
a2lwKCJFbWJlZGRlZCBvYmplY3RzIGFyZSBub3QgY29ycmVjdGx5IGhhbmRsZWQgd2l0aCBBVEsi
KTsKKyNlbHNlCisgICAgdGVzdC0+c2hvd0luV2luZG93KDgwMCwgNjAwKTsKKyAgICB0ZXN0LT5s
b2FkSHRtbCgKKyAgICAgICAgIjxodG1sPiIKKyAgICAgICAgIiAgPGJvZHk+IgorICAgICAgICAi
ICAgIDxwPlRoaXMgaXMgPGJ1dHRvbj5idXR0b24xPC9idXR0b24+IGFuZCA8YnV0dG9uPmJ1dHRv
bjI8L2J1dHRvbj4gaW4gcGFyYWdyYXBoPC9wPiIKKyAgICAgICAgIiAgPC9ib2R5PiIKKyAgICAg
ICAgIjwvaHRtbD4iLAorICAgICAgICBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2Fk
RmluaXNoZWQoKTsKKworICAgIGF1dG8gdGVzdEFwcCA9IHRlc3QtPmZpbmRUZXN0QXBwbGljYXRp
b24oKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUodGVzdEFwcC5nZXQo
KSkpOworCisgICAgYXV0byBkb2N1bWVudFdlYiA9IHRlc3QtPmZpbmREb2N1bWVudFdlYih0ZXN0
QXBwLmdldCgpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUoZG9jdW1l
bnRXZWIuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfYWNjZXNzaWJsZV9nZXRf
Y2hpbGRfY291bnQoZG9jdW1lbnRXZWIuZ2V0KCksIG51bGxwdHIpLCA9PSwgMSk7CisKKyAgICBh
dXRvIHAgPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRfYXRfaW5kZXgoZG9j
dW1lbnRXZWIuZ2V0KCksIDAsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lT
X1RFWFQocC5nZXQoKSkpOworICAgIGF1dG8gbGVuZ3RoID0gYXRzcGlfdGV4dF9nZXRfY2hhcmFj
dGVyX2NvdW50KEFUU1BJX1RFWFQocC5nZXQoKSksIG51bGxwdHIpOworICAgIGdfYXNzZXJ0X2Nt
cGludChsZW5ndGgsID09LCAyOCk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiB0ZXh0KGF0c3BpX3Rl
eHRfZ2V0X3RleHQoQVRTUElfVEVYVChwLmdldCgpKSwgMCwgLTEsIG51bGxwdHIpKTsKKyAgICBn
X2Fzc2VydF9jbXBzdHIodGV4dC5nZXQoKSwgPT0sICJUaGlzIGlzIFwzNTdcMjc3XDI3NCBhbmQg
XDM1N1wyNzdcMjc0IGluIHBhcmFncmFwaCIpOworICAgIGdfYXNzZXJ0X2NtcGludChhdHNwaV9h
Y2Nlc3NpYmxlX2dldF9jaGlsZF9jb3VudChwLmdldCgpLCBudWxscHRyKSwgPT0sIDIpOworCisg
ICAgYXV0byBidXR0b24xID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2F0
X2luZGV4KHAuZ2V0KCksIDAsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lT
X0FDQ0VTU0lCTEUoYnV0dG9uMS5nZXQoKSkpOworICAgIHRleHQucmVzZXQoYXRzcGlfYWNjZXNz
aWJsZV9nZXRfbmFtZShidXR0b24xLmdldCgpLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfY21w
c3RyKHRleHQuZ2V0KCksID09LCAiYnV0dG9uMSIpOworCisgICAgYXV0byBidXR0b24yID0gYWRv
cHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2F0X2luZGV4KHAuZ2V0KCksIDEsIG51
bGxwdHIpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUoYnV0dG9uMi5n
ZXQoKSkpOworICAgIHRleHQucmVzZXQoYXRzcGlfYWNjZXNzaWJsZV9nZXRfbmFtZShidXR0b24y
LmdldCgpLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRleHQuZ2V0KCksID09LCAi
YnV0dG9uMiIpOworCisgICAgVW5pcXVlQXRzcGlUZXh0UmFuZ2UgcmFuZ2UoYXRzcGlfdGV4dF9n
ZXRfc3RyaW5nX2F0X29mZnNldChBVFNQSV9URVhUKHAuZ2V0KCkpLCA4LCBBVFNQSV9URVhUX0dS
QU5VTEFSSVRZX0NIQVIsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIocmFuZ2UtPmNv
bnRlbnQsID09LCAiXDM1N1wyNzdcMjc0Iik7CisgICAgZ19hc3NlcnRfY21waW50KHJhbmdlLT5z
dGFydF9vZmZzZXQsID09LCA4KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQocmFuZ2UtPmVuZF9vZmZz
ZXQsID09LCA5KTsKKyAgICByYW5nZS5yZXNldChhdHNwaV90ZXh0X2dldF9zdHJpbmdfYXRfb2Zm
c2V0KEFUU1BJX1RFWFQocC5nZXQoKSksIDE0LCBBVFNQSV9URVhUX0dSQU5VTEFSSVRZX0NIQVIs
IG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIocmFuZ2UtPmNvbnRlbnQsID09LCAiXDM1
N1wyNzdcMjc0Iik7CisgICAgZ19hc3NlcnRfY21waW50KHJhbmdlLT5zdGFydF9vZmZzZXQsID09
LCAxNCk7CisgICAgZ19hc3NlcnRfY21waW50KHJhbmdlLT5lbmRfb2Zmc2V0LCA9PSwgMTUpOwor
CisgICAgcmFuZ2UucmVzZXQoYXRzcGlfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldChBVFNQSV9U
RVhUKHAuZ2V0KCkpLCA4LCBBVFNQSV9URVhUX0dSQU5VTEFSSVRZX1dPUkQsIG51bGxwdHIpKTsK
KyAgICBnX2Fzc2VydF9jbXBzdHIocmFuZ2UtPmNvbnRlbnQsID09LCAiXDM1N1wyNzdcMjc0ICIp
OworICAgIGdfYXNzZXJ0X2NtcGludChyYW5nZS0+c3RhcnRfb2Zmc2V0LCA9PSwgOCk7CisgICAg
Z19hc3NlcnRfY21waW50KHJhbmdlLT5lbmRfb2Zmc2V0LCA9PSwgMTApOworICAgIHJhbmdlLnJl
c2V0KGF0c3BpX3RleHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQoQVRTUElfVEVYVChwLmdldCgpKSwg
MTQsIEFUU1BJX1RFWFRfR1JBTlVMQVJJVFlfV09SRCwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0
X2NtcHN0cihyYW5nZS0+Y29udGVudCwgPT0sICJcMzU3XDI3N1wyNzQgIik7CisgICAgZ19hc3Nl
cnRfY21waW50KHJhbmdlLT5zdGFydF9vZmZzZXQsID09LCAxNCk7CisgICAgZ19hc3NlcnRfY21w
aW50KHJhbmdlLT5lbmRfb2Zmc2V0LCA9PSwgMTYpOworCisgICAgaW50IHN0YXJ0T2Zmc2V0LCBl
bmRPZmZzZXQ7CisgICAgR1JlZlB0cjxHSGFzaFRhYmxlPiBhdHRyaWJ1dGVzID0gYWRvcHRHUmVm
KGF0c3BpX3RleHRfZ2V0X2F0dHJpYnV0ZV9ydW4oQVRTUElfVEVYVChwLmdldCgpKSwgMCwgRkFM
U0UsICZzdGFydE9mZnNldCwgJmVuZE9mZnNldCwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X25v
bm51bGwoYXR0cmlidXRlcy5nZXQoKSk7CisgICAgZ19hc3NlcnRfY21wdWludChnX2hhc2hfdGFi
bGVfc2l6ZShhdHRyaWJ1dGVzLmdldCgpKSwgPT0sIDApOworICAgIGdfYXNzZXJ0X2NtcGludChz
dGFydE9mZnNldCwgPT0sIDApOworICAgIGdfYXNzZXJ0X2NtcGludChlbmRPZmZzZXQsID09LCA4
KTsKKworICAgIGF0dHJpYnV0ZXMgPSBhZG9wdEdSZWYoYXRzcGlfdGV4dF9nZXRfYXR0cmlidXRl
X3J1bihBVFNQSV9URVhUKHAuZ2V0KCkpLCA5LCBGQUxTRSwgJnN0YXJ0T2Zmc2V0LCAmZW5kT2Zm
c2V0LCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChhdHRyaWJ1dGVzLmdldCgpKTsK
KyAgICBnX2Fzc2VydF9jbXB1aW50KGdfaGFzaF90YWJsZV9zaXplKGF0dHJpYnV0ZXMuZ2V0KCkp
LCA+LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoc3RhcnRPZmZzZXQsID09LCA4KTsKKyAgICBn
X2Fzc2VydF9jbXBpbnQoZW5kT2Zmc2V0LCA9PSwgOSk7CisKKyAgICBhdHRyaWJ1dGVzID0gYWRv
cHRHUmVmKGF0c3BpX3RleHRfZ2V0X2F0dHJpYnV0ZV9ydW4oQVRTUElfVEVYVChwLmdldCgpKSwg
MTEsIEZBTFNFLCAmc3RhcnRPZmZzZXQsICZlbmRPZmZzZXQsIG51bGxwdHIpKTsKKyAgICBnX2Fz
c2VydF9ub25udWxsKGF0dHJpYnV0ZXMuZ2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQoZ19o
YXNoX3RhYmxlX3NpemUoYXR0cmlidXRlcy5nZXQoKSksID09LCAwKTsKKyAgICBnX2Fzc2VydF9j
bXBpbnQoc3RhcnRPZmZzZXQsID09LCA5KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZW5kT2Zmc2V0
LCA9PSwgMTQpOworCisgICAgYXR0cmlidXRlcyA9IGFkb3B0R1JlZihhdHNwaV90ZXh0X2dldF9h
dHRyaWJ1dGVfcnVuKEFUU1BJX1RFWFQocC5nZXQoKSksIDE1LCBGQUxTRSwgJnN0YXJ0T2Zmc2V0
LCAmZW5kT2Zmc2V0LCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChhdHRyaWJ1dGVz
LmdldCgpKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KGdfaGFzaF90YWJsZV9zaXplKGF0dHJpYnV0
ZXMuZ2V0KCkpLCA+LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoc3RhcnRPZmZzZXQsID09LCAx
NCk7CisgICAgZ19hc3NlcnRfY21waW50KGVuZE9mZnNldCwgPT0sIDE1KTsKKworICAgIGF0dHJp
YnV0ZXMgPSBhZG9wdEdSZWYoYXRzcGlfdGV4dF9nZXRfYXR0cmlidXRlX3J1bihBVFNQSV9URVhU
KHAuZ2V0KCkpLCAxOCwgRkFMU0UsICZzdGFydE9mZnNldCwgJmVuZE9mZnNldCwgbnVsbHB0cikp
OworICAgIGdfYXNzZXJ0X25vbm51bGwoYXR0cmlidXRlcy5nZXQoKSk7CisgICAgZ19hc3NlcnRf
Y21wdWludChnX2hhc2hfdGFibGVfc2l6ZShhdHRyaWJ1dGVzLmdldCgpKSwgPT0sIDApOworICAg
IGdfYXNzZXJ0X2NtcGludChzdGFydE9mZnNldCwgPT0sIDE1KTsKKyAgICBnX2Fzc2VydF9jbXBp
bnQoZW5kT2Zmc2V0LCA9PSwgMjgpOworI2VuZGlmCit9CisKIHZvaWQgYmVmb3JlQWxsKCkKIHsK
ICAgICBBY2Nlc3NpYmlsaXR5VGVzdDo6YWRkKCJXZWJLaXRBY2Nlc3NpYmlsaXR5IiwgImFjY2Vz
c2libGUvYmFzaWMtaGllcmFyY2h5IiwgdGVzdEFjY2Vzc2libGVCYXNpY0hpZXJhcmNoeSk7CkBA
IC0xNTQyLDYgKzE2MzMsNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgQWNjZXNzaWJpbGl0eVRl
c3Q6OmFkZCgiV2ViS2l0QWNjZXNzaWJpbGl0eSIsICJ0ZXh0L3NlbGVjdGlvbnMiLCB0ZXN0VGV4
dFNlbGVjdGlvbnMpOwogICAgIEFjY2Vzc2liaWxpdHlUZXN0OjphZGQoIldlYktpdEFjY2Vzc2li
aWxpdHkiLCAidGV4dC9hdHRyaWJ1dGVzIiwgdGVzdFRleHRBdHRyaWJ1dGVzKTsKICAgICBBY2Nl
c3NpYmlsaXR5VGVzdDo6YWRkKCJXZWJLaXRBY2Nlc3NpYmlsaXR5IiwgInRleHQvc3RhdGUtY2hh
bmdlZCIsIHRlc3RUZXh0U3RhdGVDaGFuZ2VkKTsKKyAgICBBY2Nlc3NpYmlsaXR5VGVzdDo6YWRk
KCJXZWJLaXRBY2Nlc3NpYmlsaXR5IiwgInRleHQvcmVwbGFjZWQtb2JqZWN0cyIsIHRlc3RUZXh0
UmVwbGFjZWRPYmplY3RzKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443302</attachid>
            <date>2021-11-04 07:10:33 -0700</date>
            <delta_ts>2021-11-04 07:36:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-ax-replaced-objects.diff</filename>
            <type>text/plain</type>
            <size>13708</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5YzU3MzRmN2NlN2YuLjZjZTIyY2MzMzUxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIyIEBACisyMDIxLTExLTA0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBFbWJlZGRlZCBvYmplY3RzIGFyZSBu
b3QgY29ycmVjdGx5IGhhbmRsZWQgYnkgdGV4dCBpbnRlcmZhY2Ugd2l0aCBBVFNQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNjIyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBzdXJlIHRleHQg
aXRlcmF0b3IgaXMgZW1pdHRpbmcgb2JqZWN0IHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgd2hlbiBj
b252ZXJ0aW5nIG9mZnNldHMgdG8vZnJvbSB2aXNpYmxlIHBvc2l0aW9ucy4KKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JJbmRl
eCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpp
bmRleEZvclZpc2libGVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9h
dHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6Ym91bmRzRm9yU2VsZWN0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5kZXhGb3JW
aXNpYmxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6dmlzaWJsZVBvc2l0aW9uRm9ySW5k
ZXgpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5oOgorCiAyMDIxLTEwLTI4ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBBWDogQVhWYWx1
ZUNoYW5nZWQgaXMgb25seSBzZW50IGZvciByYW5nZSBlbGVtZW50cyB3aGVuIHZhbHVlIGlzIGNo
YW5nZWQgd2l0aCB0aGUga2V5Ym9hcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDNlNTY5Mzlj
NmFjYy4uY2JlZDEwZWVlYmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTIxNDUsNyArMjE0
NSwxMiBAQCBWaXNpYmxlUG9zaXRpb24gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJs
ZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4KSBjbwogICAgIGlmICghbm9kZSkKICAgICAgICAg
cmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogCisjaWYgVVNFKEFUU1BJKQorICAgIC8vIFdlIG5l
ZWQgdG8gY29uc2lkZXIgcmVwbGFjZWQgZWxlbWVudHMgZm9yIEdUSywgYXMgdGhleSB3aWxsIGJl
IHByZXNlbnRlZCB3aXRoIHRoZSAnb2JqZWN0IHJlcGxhY2VtZW50IGNoYXJhY3RlcicgKDB4RkZG
QykuCisgICAgcmV0dXJuIFdlYkNvcmU6OnZpc2libGVQb3NpdGlvbkZvckluZGV4KGluZGV4LCBu
b2RlLCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNPYmplY3RSZXBsYWNlbWVudENoYXJhY3Rl
cnMpOworI2Vsc2UKICAgICByZXR1cm4gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXhVc2luZ0NoYXJh
Y3Rlckl0ZXJhdG9yKCpub2RlLCBpbmRleCk7CisjZW5kaWYKIH0KICAgICAKIGludCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjppbmRleEZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdApAQCAtMjE2MywxNSArMjE2OCwxNiBAQCBpbnQgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBwbwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSNp
ZiBVU0UoQVRLKSB8fCBVU0UoQVRTUEkpCiAgICAgLy8gV2UgbmVlZCB0byBjb25zaWRlciByZXBs
YWNlZCBlbGVtZW50cyBmb3IgR1RLLCBhcyB0aGV5IHdpbGwgYmUKICAgICAvLyBwcmVzZW50ZWQg
d2l0aCB0aGUgJ29iamVjdCByZXBsYWNlbWVudCBjaGFyYWN0ZXInICgweEZGRkMpLgotICAgIGJv
b2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uID0gdHJ1ZTsKLSNlbHNlCi0gICAgYm9vbCBmb3JT
ZWxlY3Rpb25QcmVzZXJ2YXRpb24gPSBmYWxzZTsKKyAgICBUZXh0SXRlcmF0b3JCZWhhdmlvcnMg
YmVoYXZpb3JzOworI2lmIFVTRShBVFNQSSkKKyAgICBiZWhhdmlvcnMuYWRkKFRleHRJdGVyYXRv
ckJlaGF2aW9yOjpFbWl0c09iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVycyk7CisjZWxpZiBVU0Uo
QVRLKQorICAgIGJlaGF2aW9ycy5hZGQoVGV4dEl0ZXJhdG9yQmVoYXZpb3I6OkVtaXRzQ2hhcmFj
dGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIFdl
YkNvcmU6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKCpub2RlLCBwb3NpdGlvbiwgZm9yU2VsZWN0
aW9uUHJlc2VydmF0aW9uKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6aW5kZXhGb3JWaXNpYmxlUG9z
aXRpb24oKm5vZGUsIHBvc2l0aW9uLCBiZWhhdmlvcnMpOwogfQogCiBFbGVtZW50KiBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojpyb290RWRpdGFibGVFbGVtZW50Rm9yUG9zaXRpb24oY29uc3Qg
UG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNw
aS5jcHAKaW5kZXggZTA3M2MxNWJjMDE1Li4yMDU0ZTQ1OTgyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNw
aS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmls
aXR5T2JqZWN0VGV4dEF0c3BpLmNwcApAQCAtNjEwLDkgKzYxMCw5IEBAIEludFBvaW50IEFjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaTo6Ym91bmRzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIHNlCiAgICAgYXV0byByYW5nZUluUGFyZW50ID0gKm1ha2VTaW1wbGVSYW5nZShwYXJl
bnRGaXJzdFBvc2l0aW9uLCBub2RlUmFuZ2VTdGFydCk7CiAKICAgICAvLyBTZXQgdmFsdWVzIGZv
ciBzdGFydCBvZmZzZXRzIGFuZCBjYWxjdWxhdGUgaW5pdGlhbCByYW5nZSBsZW5ndGguCi0gICAg
aW50IHN0YXJ0T2Zmc2V0ID0gY2hhcmFjdGVyQ291bnQocmFuZ2VJblBhcmVudCwgVGV4dEl0ZXJh
dG9yQmVoYXZpb3I6OkVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsK
KyAgICBpbnQgc3RhcnRPZmZzZXQgPSBjaGFyYWN0ZXJDb3VudChyYW5nZUluUGFyZW50LCBUZXh0
SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNPYmplY3RSZXBsYWNlbWVudENoYXJhY3RlcnMpOwogICAg
IGF1dG8gbm9kZVJhbmdlID0gKm1ha2VTaW1wbGVSYW5nZShub2RlUmFuZ2VTdGFydCwgbm9kZVJh
bmdlRW5kKTsKLSAgICBpbnQgcmFuZ2VMZW5ndGggPSBjaGFyYWN0ZXJDb3VudChub2RlUmFuZ2Us
IFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBv
c2l0aW9ucyk7CisgICAgaW50IHJhbmdlTGVuZ3RoID0gY2hhcmFjdGVyQ291bnQobm9kZVJhbmdl
LCBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNPYmplY3RSZXBsYWNlbWVudENoYXJhY3RlcnMp
OwogICAgIHJldHVybiB7IHN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCArIHJhbmdlTGVuZ3RoIH07
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCmluZGV4IDcyYzc0NDcxNGZkYS4uOTgw
ZGRlODUxZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKQEAgLTk5NCwxNSArOTk0
LDEyIEBAIGludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24m
IHZpc2libGVQb3NpdGlvbiwgUmVmUHRyPENvbnRhCiB9CiAKIC8vIEZJWE1FOiBNZXJnZSB0aGlz
IGZ1bmN0aW9uIHdpdGggdGhlIG9uZSBhYm92ZS4KLWludCBpbmRleEZvclZpc2libGVQb3NpdGlv
bihOb2RlJiBub2RlLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgYm9v
bCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24pCitpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24o
Tm9kZSYgbm9kZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIFRleHRJ
dGVyYXRvckJlaGF2aW9ycyBiZWhhdmlvcnMpCiB7CiAgICAgaWYgKHZpc2libGVQb3NpdGlvbi5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBhdXRvIHJhbmdlID0gbWFrZVNpbXBs
ZVJhbmdlKG1ha2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZUNvbnRlbnRzKG5vZGUpLCB2aXNpYmxl
UG9zaXRpb24pOwotICAgIFRleHRJdGVyYXRvckJlaGF2aW9ycyBiZWhhdmlvcnM7Ci0gICAgaWYg
KGZvclNlbGVjdGlvblByZXNlcnZhdGlvbikKLSAgICAgICAgYmVoYXZpb3JzLmFkZChUZXh0SXRl
cmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMp
OwogICAgIHJldHVybiByYW5nZSA/IGNoYXJhY3RlckNvdW50KCpyYW5nZSwgYmVoYXZpb3JzKSA6
IDA7CiB9CiAKQEAgLTEwMTYsMTEgKzEwMTMsMTEgQEAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQ
b3NpdGlvbkZvclBvc2l0aW9uV2l0aE9mZnNldChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2kK
ICAgICByZXR1cm4gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoc3RhcnRJbmRleCArIG9mZnNldCwg
cm9vdC5nZXQoKSk7CiB9CiAKLVZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRl
eChpbnQgaW5kZXgsIENvbnRhaW5lck5vZGUqIHNjb3BlKQorVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQb3NpdGlvbkZvckluZGV4KGludCBpbmRleCwgTm9kZSogc2NvcGUsIFRleHRJdGVyYXRvckJl
aGF2aW9ycyBiZWhhdmlvcnMpCiB7CiAgICAgaWYgKCFzY29wZSkKICAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICByZXR1cm4geyBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJlc29sdmVDaGFy
YWN0ZXJMb2NhdGlvbihtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgaW5k
ZXgsIFRleHRJdGVyYXRvckJlaGF2aW9yOjpFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJs
ZVBvc2l0aW9ucykpIH07CisgICAgcmV0dXJuIHsgbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlv
bihyZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRz
KCpzY29wZSksIGluZGV4LCBiZWhhdmlvcnMpKSB9OwogfQogCiBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVBvc2l0aW9uRm9ySW5kZXhVc2luZ0NoYXJhY3Rlckl0ZXJhdG9yKE5vZGUmIG5vZGUsIGlu
dCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKaW5kZXggNzkxM2M2ZDk4MTUyLi45NmNl
Yzk3Y2Y3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlBvc2l0aW9uLmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJh
dG9yQmVoYXZpb3IuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KQEAgLTE0
NCw5ICsxNDUsOSBAQCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uQWZ0ZXJOb2RlKE5v
ZGUmKTsKIGJvb2wgbGluZUJyZWFrRXhpc3RzQXRWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJik7CiAKIFdFQkNPUkVfRVhQT1JUIGludCBpbmRleEZvclZpc2libGVQb3NpdGlv
bihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBSZWZQdHI8Q29udGFpbmVyTm9kZT4mIHNjb3BlKTsK
LWludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihOb2RlJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiwgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24pOworaW50IGluZGV4Rm9yVmlzaWJsZVBv
c2l0aW9uKE5vZGUmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBUZXh0SXRlcmF0b3JCZWhhdmlv
cnMpOwogV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclBv
c2l0aW9uV2l0aE9mZnNldChjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBpbnQgb2Zmc2V0KTsKLVdF
QkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQg
aW5kZXgsIENvbnRhaW5lck5vZGUqIHNjb3BlKTsKK1dFQkNPUkVfRVhQT1JUIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQgaW5kZXgsIE5vZGUqIHNjb3BlLCBUZXh0
SXRlcmF0b3JCZWhhdmlvcnMgPSBUZXh0SXRlcmF0b3JCZWhhdmlvcjo6RW1pdHNDaGFyYWN0ZXJz
QmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpOwogVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3Np
dGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihOb2RlJiwgaW50IGluZGV4KTsgLy8g
RklYTUU6IFdoeSBkbyB3ZSBuZWVkIHRoaXMgdmVyc2lvbj8KIAogV0VCQ09SRV9FWFBPUlQgVmlz
aWJsZVBvc2l0aW9uIGNsb3Nlc3RFZGl0YWJsZVBvc2l0aW9uSW5FbGVtZW50Rm9yQWJzb2x1dGVQ
b2ludChjb25zdCBFbGVtZW50JiwgY29uc3QgSW50UG9pbnQmKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NDRkZmM0ZTEyZTAuLjE2NzUxNWU4
ZjMwNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTExLTA0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBFbWJlZGRlZCBvYmplY3RzIGFy
ZSBub3QgY29ycmVjdGx5IGhhbmRsZWQgYnkgdGV4dCBpbnRlcmZhY2Ugd2l0aCBBVFNQSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNjIyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgdGVzdCBj
YXNlIHRvIGNoZWNrIGhhbmRsaW5nIG9mIGVtYmVkZGVkIG9iamVjdHMgYnkgdGV4dCBpbnRlcmZh
Y2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0
QWNjZXNzaWJpbGl0eS5jcHA6CisgICAgICAgICh0ZXN0VGV4dFJlcGxhY2VkT2JqZWN0cyk6Cisg
ICAgICAgIChiZWZvcmVBbGwpOgorCiAyMDIxLTEwLTI3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVk
YXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbd2Via2l0c2NtcHldIEdlbmVyYXRlIGNvbW1pdCBt
ZXNzYWdlIHRlbXBsYXRlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAKaW5kZXggNDljYzcx
NGZhYWI0Li5mYjc5Y2E3OTRkY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAKQEAg
LTE1MjMsNiArMTUyMyw5NyBAQCBzdGF0aWMgdm9pZCB0ZXN0VGV4dFN0YXRlQ2hhbmdlZChBY2Nl
c3NpYmlsaXR5VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICNlbmRpZgogfQogCitzdGF0aWMg
dm9pZCB0ZXN0VGV4dFJlcGxhY2VkT2JqZWN0cyhBY2Nlc3NpYmlsaXR5VGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKK3sKKyNpZiAhVVNFKEFUU1BJKQorICAgIGdfdGVzdF9za2lwKCJFbWJlZGRl
ZCBvYmplY3RzIGFyZSBub3QgY29ycmVjdGx5IGhhbmRsZWQgd2l0aCBBVEsiKTsKKyNlbHNlCisg
ICAgdGVzdC0+c2hvd0luV2luZG93KDgwMCwgNjAwKTsKKyAgICB0ZXN0LT5sb2FkSHRtbCgKKyAg
ICAgICAgIjxodG1sPiIKKyAgICAgICAgIiAgPGJvZHk+IgorICAgICAgICAiICAgIDxwPlRoaXMg
aXMgPGJ1dHRvbj5idXR0b24xPC9idXR0b24+IGFuZCA8YnV0dG9uPmJ1dHRvbjI8L2J1dHRvbj4g
aW4gcGFyYWdyYXBoPC9wPiIKKyAgICAgICAgIiAgPC9ib2R5PiIKKyAgICAgICAgIjwvaHRtbD4i
LAorICAgICAgICBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsK
KworICAgIGF1dG8gdGVzdEFwcCA9IHRlc3QtPmZpbmRUZXN0QXBwbGljYXRpb24oKTsKKyAgICBn
X2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUodGVzdEFwcC5nZXQoKSkpOworCisgICAg
YXV0byBkb2N1bWVudFdlYiA9IHRlc3QtPmZpbmREb2N1bWVudFdlYih0ZXN0QXBwLmdldCgpKTsK
KyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUoZG9jdW1lbnRXZWIuZ2V0KCkp
KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRfY291bnQo
ZG9jdW1lbnRXZWIuZ2V0KCksIG51bGxwdHIpLCA9PSwgMSk7CisKKyAgICBhdXRvIHAgPSBhZG9w
dEdSZWYoYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRfYXRfaW5kZXgoZG9jdW1lbnRXZWIuZ2V0
KCksIDAsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX1RFWFQocC5nZXQo
KSkpOworICAgIGF1dG8gbGVuZ3RoID0gYXRzcGlfdGV4dF9nZXRfY2hhcmFjdGVyX2NvdW50KEFU
U1BJX1RFWFQocC5nZXQoKSksIG51bGxwdHIpOworICAgIGdfYXNzZXJ0X2NtcGludChsZW5ndGgs
ID09LCAyOCk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiB0ZXh0KGF0c3BpX3RleHRfZ2V0X3RleHQo
QVRTUElfVEVYVChwLmdldCgpKSwgMCwgLTEsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9jbXBz
dHIodGV4dC5nZXQoKSwgPT0sICJUaGlzIGlzIFwzNTdcMjc3XDI3NCBhbmQgXDM1N1wyNzdcMjc0
IGluIHBhcmFncmFwaCIpOworICAgIGdfYXNzZXJ0X2NtcGludChhdHNwaV9hY2Nlc3NpYmxlX2dl
dF9jaGlsZF9jb3VudChwLmdldCgpLCBudWxscHRyKSwgPT0sIDIpOworCisgICAgYXV0byBidXR0
b24xID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2F0X2luZGV4KHAuZ2V0
KCksIDAsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUo
YnV0dG9uMS5nZXQoKSkpOworICAgIHRleHQucmVzZXQoYXRzcGlfYWNjZXNzaWJsZV9nZXRfbmFt
ZShidXR0b24xLmdldCgpLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRleHQuZ2V0
KCksID09LCAiYnV0dG9uMSIpOworCisgICAgYXV0byBidXR0b24yID0gYWRvcHRHUmVmKGF0c3Bp
X2FjY2Vzc2libGVfZ2V0X2NoaWxkX2F0X2luZGV4KHAuZ2V0KCksIDEsIG51bGxwdHIpKTsKKyAg
ICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUoYnV0dG9uMi5nZXQoKSkpOworICAg
IHRleHQucmVzZXQoYXRzcGlfYWNjZXNzaWJsZV9nZXRfbmFtZShidXR0b24yLmdldCgpLCBudWxs
cHRyKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRleHQuZ2V0KCksID09LCAiYnV0dG9uMiIpOwor
CisgICAgVW5pcXVlQXRzcGlUZXh0UmFuZ2UgcmFuZ2UoYXRzcGlfdGV4dF9nZXRfc3RyaW5nX2F0
X29mZnNldChBVFNQSV9URVhUKHAuZ2V0KCkpLCA4LCBBVFNQSV9URVhUX0dSQU5VTEFSSVRZX0NI
QVIsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIocmFuZ2UtPmNvbnRlbnQsID09LCAi
XDM1N1wyNzdcMjc0Iik7CisgICAgZ19hc3NlcnRfY21waW50KHJhbmdlLT5zdGFydF9vZmZzZXQs
ID09LCA4KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQocmFuZ2UtPmVuZF9vZmZzZXQsID09LCA5KTsK
KyAgICByYW5nZS5yZXNldChhdHNwaV90ZXh0X2dldF9zdHJpbmdfYXRfb2Zmc2V0KEFUU1BJX1RF
WFQocC5nZXQoKSksIDE0LCBBVFNQSV9URVhUX0dSQU5VTEFSSVRZX0NIQVIsIG51bGxwdHIpKTsK
KyAgICBnX2Fzc2VydF9jbXBzdHIocmFuZ2UtPmNvbnRlbnQsID09LCAiXDM1N1wyNzdcMjc0Iik7
CisgICAgZ19hc3NlcnRfY21waW50KHJhbmdlLT5zdGFydF9vZmZzZXQsID09LCAxNCk7CisgICAg
Z19hc3NlcnRfY21waW50KHJhbmdlLT5lbmRfb2Zmc2V0LCA9PSwgMTUpOworCisgICAgcmFuZ2Uu
cmVzZXQoYXRzcGlfdGV4dF9nZXRfc3RyaW5nX2F0X29mZnNldChBVFNQSV9URVhUKHAuZ2V0KCkp
LCA4LCBBVFNQSV9URVhUX0dSQU5VTEFSSVRZX1dPUkQsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2Vy
dF9jbXBzdHIocmFuZ2UtPmNvbnRlbnQsID09LCAiXDM1N1wyNzdcMjc0ICIpOworICAgIGdfYXNz
ZXJ0X2NtcGludChyYW5nZS0+c3RhcnRfb2Zmc2V0LCA9PSwgOCk7CisgICAgZ19hc3NlcnRfY21w
aW50KHJhbmdlLT5lbmRfb2Zmc2V0LCA9PSwgMTApOworICAgIHJhbmdlLnJlc2V0KGF0c3BpX3Rl
eHRfZ2V0X3N0cmluZ19hdF9vZmZzZXQoQVRTUElfVEVYVChwLmdldCgpKSwgMTQsIEFUU1BJX1RF
WFRfR1JBTlVMQVJJVFlfV09SRCwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X2NtcHN0cihyYW5n
ZS0+Y29udGVudCwgPT0sICJcMzU3XDI3N1wyNzQgIik7CisgICAgZ19hc3NlcnRfY21waW50KHJh
bmdlLT5zdGFydF9vZmZzZXQsID09LCAxNCk7CisgICAgZ19hc3NlcnRfY21waW50KHJhbmdlLT5l
bmRfb2Zmc2V0LCA9PSwgMTYpOworCisgICAgaW50IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQ7Cisg
ICAgR1JlZlB0cjxHSGFzaFRhYmxlPiBhdHRyaWJ1dGVzID0gYWRvcHRHUmVmKGF0c3BpX3RleHRf
Z2V0X2F0dHJpYnV0ZV9ydW4oQVRTUElfVEVYVChwLmdldCgpKSwgMCwgRkFMU0UsICZzdGFydE9m
ZnNldCwgJmVuZE9mZnNldCwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X25vbm51bGwoYXR0cmli
dXRlcy5nZXQoKSk7CisgICAgZ19hc3NlcnRfY21wdWludChnX2hhc2hfdGFibGVfc2l6ZShhdHRy
aWJ1dGVzLmdldCgpKSwgPT0sIDApOworICAgIGdfYXNzZXJ0X2NtcGludChzdGFydE9mZnNldCwg
PT0sIDApOworICAgIGdfYXNzZXJ0X2NtcGludChlbmRPZmZzZXQsID09LCA4KTsKKworICAgIGF0
dHJpYnV0ZXMgPSBhZG9wdEdSZWYoYXRzcGlfdGV4dF9nZXRfYXR0cmlidXRlX3J1bihBVFNQSV9U
RVhUKHAuZ2V0KCkpLCA5LCBGQUxTRSwgJnN0YXJ0T2Zmc2V0LCAmZW5kT2Zmc2V0LCBudWxscHRy
KSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChhdHRyaWJ1dGVzLmdldCgpKTsKKyAgICBnX2Fzc2Vy
dF9jbXB1aW50KGdfaGFzaF90YWJsZV9zaXplKGF0dHJpYnV0ZXMuZ2V0KCkpLCA+LCAwKTsKKyAg
ICBnX2Fzc2VydF9jbXBpbnQoc3RhcnRPZmZzZXQsID09LCA4KTsKKyAgICBnX2Fzc2VydF9jbXBp
bnQoZW5kT2Zmc2V0LCA9PSwgOSk7CisKKyAgICBhdHRyaWJ1dGVzID0gYWRvcHRHUmVmKGF0c3Bp
X3RleHRfZ2V0X2F0dHJpYnV0ZV9ydW4oQVRTUElfVEVYVChwLmdldCgpKSwgMTEsIEZBTFNFLCAm
c3RhcnRPZmZzZXQsICZlbmRPZmZzZXQsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9ub25udWxs
KGF0dHJpYnV0ZXMuZ2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQoZ19oYXNoX3RhYmxlX3Np
emUoYXR0cmlidXRlcy5nZXQoKSksID09LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoc3RhcnRP
ZmZzZXQsID09LCA5KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZW5kT2Zmc2V0LCA9PSwgMTQpOwor
CisgICAgYXR0cmlidXRlcyA9IGFkb3B0R1JlZihhdHNwaV90ZXh0X2dldF9hdHRyaWJ1dGVfcnVu
KEFUU1BJX1RFWFQocC5nZXQoKSksIDE1LCBGQUxTRSwgJnN0YXJ0T2Zmc2V0LCAmZW5kT2Zmc2V0
LCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChhdHRyaWJ1dGVzLmdldCgpKTsKKyAg
ICBnX2Fzc2VydF9jbXB1aW50KGdfaGFzaF90YWJsZV9zaXplKGF0dHJpYnV0ZXMuZ2V0KCkpLCA+
LCAwKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoc3RhcnRPZmZzZXQsID09LCAxNCk7CisgICAgZ19h
c3NlcnRfY21waW50KGVuZE9mZnNldCwgPT0sIDE1KTsKKworICAgIGF0dHJpYnV0ZXMgPSBhZG9w
dEdSZWYoYXRzcGlfdGV4dF9nZXRfYXR0cmlidXRlX3J1bihBVFNQSV9URVhUKHAuZ2V0KCkpLCAx
OCwgRkFMU0UsICZzdGFydE9mZnNldCwgJmVuZE9mZnNldCwgbnVsbHB0cikpOworICAgIGdfYXNz
ZXJ0X25vbm51bGwoYXR0cmlidXRlcy5nZXQoKSk7CisgICAgZ19hc3NlcnRfY21wdWludChnX2hh
c2hfdGFibGVfc2l6ZShhdHRyaWJ1dGVzLmdldCgpKSwgPT0sIDApOworICAgIGdfYXNzZXJ0X2Nt
cGludChzdGFydE9mZnNldCwgPT0sIDE1KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZW5kT2Zmc2V0
LCA9PSwgMjgpOworI2VuZGlmCit9CisKIHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICBBY2Nlc3Np
YmlsaXR5VGVzdDo6YWRkKCJXZWJLaXRBY2Nlc3NpYmlsaXR5IiwgImFjY2Vzc2libGUvYmFzaWMt
aGllcmFyY2h5IiwgdGVzdEFjY2Vzc2libGVCYXNpY0hpZXJhcmNoeSk7CkBAIC0xNTQyLDYgKzE2
MzMsNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgQWNjZXNzaWJpbGl0eVRlc3Q6OmFkZCgiV2Vi
S2l0QWNjZXNzaWJpbGl0eSIsICJ0ZXh0L3NlbGVjdGlvbnMiLCB0ZXN0VGV4dFNlbGVjdGlvbnMp
OwogICAgIEFjY2Vzc2liaWxpdHlUZXN0OjphZGQoIldlYktpdEFjY2Vzc2liaWxpdHkiLCAidGV4
dC9hdHRyaWJ1dGVzIiwgdGVzdFRleHRBdHRyaWJ1dGVzKTsKICAgICBBY2Nlc3NpYmlsaXR5VGVz
dDo6YWRkKCJXZWJLaXRBY2Nlc3NpYmlsaXR5IiwgInRleHQvc3RhdGUtY2hhbmdlZCIsIHRlc3RU
ZXh0U3RhdGVDaGFuZ2VkKTsKKyAgICBBY2Nlc3NpYmlsaXR5VGVzdDo6YWRkKCJXZWJLaXRBY2Nl
c3NpYmlsaXR5IiwgInRleHQvcmVwbGFjZWQtb2JqZWN0cyIsIHRlc3RUZXh0UmVwbGFjZWRPYmpl
Y3RzKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCg==
</data>
<flag name="review"
          id="468021"
          type_id="1"
          status="+"
          setter="andresg_22"
    />
          </attachment>
      

    </bug>

</bugzilla>