<?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>121684</bug_id>
          
          <creation_ts>2013-09-20 08:03:42 -0700</creation_ts>
          <short_desc>[ATK] Expose aria-describedby with ATK_RELATION_DESCRIBED_BY</short_desc>
          <delta_ts>2014-01-29 05:11:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>
          <dependson>121675</dependson>
          <blocked>30796</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mario Sanchez Prada">mario</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>k.czech</cc>
    
    <cc>mario</cc>
    
    <cc>rakuco</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>931341</commentid>
    <comment_count>0</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-20 08:03:42 -0700</bug_when>
    <thetext>According to [1], this should be exposed through an AtkRelation, which should also allow us to eventually pass accessibility/aria-describedby-on-input.html, once we have first sanitized the situation with helpText (see bug 121675) and maybe implemented helpText() again in terms of this new relationship (opposite to what we still have at this moment).

[1] http://www.w3.org/TR/wai-aria-implementation/#mapping_state-property</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931342</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-09-20 08:04:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/15040496&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969138</commentid>
    <comment_count>2</comment_count>
      <attachid>221468</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-01-17 08:36:14 -0800</bug_when>
    <thetext>Created attachment 221468
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969781</commentid>
    <comment_count>3</comment_count>
      <attachid>221640</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-01-20 02:37:10 -0800</bug_when>
    <thetext>Created attachment 221640
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969782</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-20 02:39:26 -0800</bug_when>
    <thetext>Attachment 221640 did not pass style-queue:


ERROR: Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:821:  Missing space before ( in for(  [whitespace/parens] [5]
ERROR: Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:961:  Missing space before ( in for(  [whitespace/parens] [5]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 3 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969788</commentid>
    <comment_count>5</comment_count>
      <attachid>221642</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-01-20 02:48:50 -0800</bug_when>
    <thetext>Created attachment 221642
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969827</commentid>
    <comment_count>6</comment_count>
      <attachid>221655</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-01-20 06:32:55 -0800</bug_when>
    <thetext>Created attachment 221655
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969848</commentid>
    <comment_count>7</comment_count>
      <attachid>221655</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2014-01-20 08:24:12 -0800</bug_when>
    <thetext>Comment on attachment 221655
patch

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

I think the patch looks good already, but I think there are some things that would need some changes before landing.

&gt; LayoutTests/ChangeLog:8
&gt; +        Slightly modified test so that it could test aria-describedby with multiple id references.

What about &quot;extending&quot; the test VS modifying it? I mean, keeping the &quot;one ID&quot; only case and adding the new one with two IDs on top of it.

&gt; LayoutTests/accessibility/aria-describedby-on-input-expected.txt:3
&gt; -Allows you to specify the number of minutes after which the computer will self-destruct.
&gt; +Allows you to specify the number of minutes after
&gt; +which the computer will self-destruct.

Why is this line break showing up here? I would expect the two strings to be concatenated together with a &quot; &quot; in the middle.

I looked into the implementation in DRT/WKTR, but still is not obvious to me...

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.h:185
&gt; +    virtual void elementsFromAttribute(Vector&lt;Element*&gt;&amp; elements, const QualifiedName&amp;) const override;

I think we normally write OVERRIDE (uppercase letters). Also, why do you need to make this method virtual if the implementation in the parent is going to be an empty one?

I see the point of being able to call it from a AccessibilityObject, but I&apos;m not sure that alone justifies doing this, unless it made sense to move the whole method (implementation too) up to AccessibilityObject

&gt; Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp:248
&gt; +                AccessibilityObject* axObject = coreObject-&gt;document()-&gt;axObjectCache()-&gt;getOrCreate(element);

The paranoid in me would add a null check for the document, but I don&apos;t think it&apos;s possible that you ever reach a null doc if you got this far (so I&apos;m ok)

&gt; Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:819
&gt; +        if (atk_relation_get_relation_type(relation) == ATK_RELATION_DESCRIBED_BY) {

Nit. I would do if (atk_relation_get_relation_type(relation) != ATK_RELATION_DESCRIBED_BY) continue; here, to avoid nesting too much below

&gt; Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:820
&gt; +            GPtrArray* targetList = atk_relation_get_target(relation);

Not sure if this targetList can ever be NULL. Looking at AtkRelationSet code directly suggests that the internal pointer relation-&gt;target (returned by get_target()), could be NULL, although it&apos;s not clear whether that will ever happen in a real-life scenario.

In any case, I would add a null check here, maybe with an &quot;early continue&quot; as well (&quot;if (!targetList) continue;&quot;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970219</commentid>
    <comment_count>8</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-01-21 04:44:14 -0800</bug_when>
    <thetext>&gt; I think the patch looks good already, but I think there are some things that would need some changes before landing.
&gt; 
&gt; &gt; LayoutTests/ChangeLog:8
&gt; &gt; +        Slightly modified test so that it could test aria-describedby with multiple id references.
&gt; 
&gt; What about &quot;extending&quot; the test VS modifying it? I mean, keeping the &quot;one ID&quot; only case and adding the new one with two IDs on top of it.

Sounds good.
&gt; 
&gt; &gt; LayoutTests/accessibility/aria-describedby-on-input-expected.txt:3
&gt; &gt; -Allows you to specify the number of minutes after which the computer will self-destruct.
&gt; &gt; +Allows you to specify the number of minutes after
&gt; &gt; +which the computer will self-destruct.
&gt; 
&gt; Why is this line break showing up here? I would expect the two strings to be concatenated together with a &quot; &quot; in the middle.
I think this line break is here because, I divided this text between two ids (description1 and description2) and put under two div&apos;s tags and html just reads inner text.

Concatenated string is the result of calling helpText. 
&gt; 
&gt; I looked into the implementation in DRT/WKTR, but still is not obvious to me...
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.h:185
&gt; &gt; +    virtual void elementsFromAttribute(Vector&lt;Element*&gt;&amp; elements, const QualifiedName&amp;) const override;
&gt; 
&gt; I think we normally write OVERRIDE (uppercase letters). Also, why do you need to make this method virtual if the implementation in the parent is going to be an empty one?

Regarding override instead of OVERRIDE, this is after r162139
I always thought that AccessibilityObject class is kind of an abstract class that provides an interface for AccessibilityNodeObject and for AccessibilityRenderObject so that virtual callings may happen. This is a reason this method has an empty body.

AccessibilityRenderObject derives the whole interface from AO and ANO and it will have this method out of the box.

Other thing is that ANO is something between AO and ARO and having body of this method there might look more natural.
&gt; 
&gt; I see the point of being able to call it from a AccessibilityObject, but I&apos;m not sure that alone justifies doing this, unless it made sense to move the whole method (implementation too) up to AccessibilityObject

I realized this might be a good idea of moving its body directly to AccessibilityObject.

&gt; 
&gt; &gt; Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp:248
&gt; &gt; +                AccessibilityObject* axObject = coreObject-&gt;document()-&gt;axObjectCache()-&gt;getOrCreate(element);
&gt; 
&gt; The paranoid in me would add a null check for the document, but I don&apos;t think it&apos;s possible that you ever reach a null doc if you got this far (so I&apos;m ok)
&gt; 
&gt; &gt; Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:819
&gt; &gt; +        if (atk_relation_get_relation_type(relation) == ATK_RELATION_DESCRIBED_BY) {
&gt; 
&gt; Nit. I would do if (atk_relation_get_relation_type(relation) != ATK_RELATION_DESCRIBED_BY) continue; here, to avoid nesting too much below
&gt; 
&gt; &gt; Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:820
&gt; &gt; +            GPtrArray* targetList = atk_relation_get_target(relation);
&gt; 
&gt; Not sure if this targetList can ever be NULL. Looking at AtkRelationSet code directly suggests that the internal pointer relation-&gt;target (returned by get_target()), could be NULL, although it&apos;s not clear whether that will ever happen in a real-life scenario.
&gt; 
&gt; In any case, I would add a null check here, maybe with an &quot;early continue&quot; as well (&quot;if (!targetList) continue;&quot;)

I will change this method a bit in the next iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970229</commentid>
    <comment_count>9</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2014-01-21 06:20:00 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; [...]
&gt; &gt; &gt; LayoutTests/accessibility/aria-describedby-on-input-expected.txt:3
&gt; &gt; &gt; -Allows you to specify the number of minutes after which the computer will self-destruct.
&gt; &gt; &gt; +Allows you to specify the number of minutes after
&gt; &gt; &gt; +which the computer will self-destruct.
&gt; &gt; 
&gt; &gt; Why is this line break showing up here? I would expect the two strings to be concatenated together with a &quot; &quot; in the middle.
&gt; I think this line break is here because, I divided this text between two ids (description1 and description2) and put under two div&apos;s tags and html just reads inner text.
&gt; 
&gt; Concatenated string is the result of calling helpText. 

Yes, but still I think the resultant text should have a space in the middle, not a line break.

&gt; &gt; [...]
&gt; &gt; I looked into the implementation in DRT/WKTR, but still is not obvious to me...
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.h:185
&gt; &gt; &gt; +    virtual void elementsFromAttribute(Vector&lt;Element*&gt;&amp; elements, const QualifiedName&amp;) const override;
&gt; &gt; 
&gt; &gt; I think we normally write OVERRIDE (uppercase letters). Also, why do you need to make this method virtual if the implementation in the parent is going to be an empty one?
&gt; 
&gt; Regarding override instead of OVERRIDE, this is after r162139

Forget about this. It&apos;s &apos;override&apos; from now on, not OVERRIDE (see webkit-dev)

&gt; I always thought that AccessibilityObject class is kind of an abstract class that provides an interface for AccessibilityNodeObject and for AccessibilityRenderObject so that virtual callings may happen. This is a reason this method has an empty body.
&gt; 
&gt; AccessibilityRenderObject derives the whole interface from AO and ANO and it will have this method out of the box.
&gt; 
&gt; Other thing is that ANO is something between AO and ARO and having body of this method there might look more natural.
&gt; &gt; 
&gt; &gt; I see the point of being able to call it from a AccessibilityObject, but I&apos;m not sure that alone justifies doing this, unless it made sense to move the whole method (implementation too) up to AccessibilityObject
&gt; 
&gt; I realized this might be a good idea of moving its body directly to AccessibilityObject.
&gt; 
Ok. I buy it :)

&gt; &gt; &gt; Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp:248
&gt; &gt; &gt; +                AccessibilityObject* axObject = coreObject-&gt;document()-&gt;axObjectCache()-&gt;getOrCreate(element);
&gt; &gt; 
&gt; &gt; The paranoid in me would add a null check for the document, but I don&apos;t think it&apos;s possible that you ever reach a null doc if you got this far (so I&apos;m ok)
&gt; &gt; 
&gt; &gt; &gt; Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:819
&gt; &gt; &gt; +        if (atk_relation_get_relation_type(relation) == ATK_RELATION_DESCRIBED_BY) {
&gt; &gt; 
&gt; &gt; Nit. I would do if (atk_relation_get_relation_type(relation) != ATK_RELATION_DESCRIBED_BY) continue; here, to avoid nesting too much below
&gt; &gt; 
&gt; &gt; &gt; Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:820
&gt; &gt; &gt; +            GPtrArray* targetList = atk_relation_get_target(relation);
&gt; &gt; 
&gt; &gt; Not sure if this targetList can ever be NULL. Looking at AtkRelationSet code directly suggests that the internal pointer relation-&gt;target (returned by get_target()), could be NULL, although it&apos;s not clear whether that will ever happen in a real-life scenario.
&gt; &gt; 
&gt; &gt; In any case, I would add a null check here, maybe with an &quot;early continue&quot; as well (&quot;if (!targetList) continue;&quot;)
&gt; 
&gt; I will change this method a bit in the next iteration.

Ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971128</commentid>
    <comment_count>10</comment_count>
      <attachid>221979</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-01-23 07:43:50 -0800</bug_when>
    <thetext>Created attachment 221979
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971130</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-23 07:45:07 -0800</bug_when>
    <thetext>Attachment 221979 did not pass style-queue:


ERROR: Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:824:  Missing space before ( in for(  [whitespace/parens] [5]
ERROR: Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:981:  Missing space before ( in for(  [whitespace/parens] [5]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971139</commentid>
    <comment_count>12</comment_count>
      <attachid>221982</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-01-23 08:04:36 -0800</bug_when>
    <thetext>Created attachment 221982
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971140</commentid>
    <comment_count>13</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-01-23 08:07:46 -0800</bug_when>
    <thetext>&gt; &gt; &gt; &gt; Source/WebCore/accessibility/AccessibilityNodeObject.h:185
&gt; &gt; &gt; &gt; +    virtual void elementsFromAttribute(Vector&lt;Element*&gt;&amp; elements, const QualifiedName&amp;) const override;
&gt; &gt; &gt; 
&gt; &gt; &gt; I think we normally write OVERRIDE (uppercase letters). Also, why do you need to make this method virtual if the implementation in the parent is going to be an empty one?
&gt; &gt; 
&gt; &gt; Regarding override instead of OVERRIDE, this is after r162139
&gt; 
&gt; Forget about this. It&apos;s &apos;override&apos; from now on, not OVERRIDE (see webkit-dev)
&gt; 
&gt; &gt; I always thought that AccessibilityObject class is kind of an abstract class that provides an interface for AccessibilityNodeObject and for AccessibilityRenderObject so that virtual callings may happen. This is a reason this method has an empty body.
&gt; &gt; 
&gt; &gt; AccessibilityRenderObject derives the whole interface from AO and ANO and it will have this method out of the box.
&gt; &gt; 
&gt; &gt; Other thing is that ANO is something between AO and ARO and having body of this method there might look more natural.
&gt; &gt; &gt; 
&gt; &gt; &gt; I see the point of being able to call it from a AccessibilityObject, but I&apos;m not sure that alone justifies doing this, unless it made sense to move the whole method (implementation too) up to AccessibilityObject
&gt; &gt; 
&gt; &gt; I realized this might be a good idea of moving its body directly to AccessibilityObject.
&gt; &gt; 
&gt; Ok. I buy it :)
&gt; 

I moved this method to AccessibilityObject and I think it does not have to be virtual either. It provides a common interface for both ANO and ARO and I doubt it could ever be customized by those classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971145</commentid>
    <comment_count>14</comment_count>
      <attachid>221984</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-01-23 08:27:32 -0800</bug_when>
    <thetext>Created attachment 221984
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971567</commentid>
    <comment_count>15</comment_count>
      <attachid>221984</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2014-01-24 03:57:19 -0800</bug_when>
    <thetext>Comment on attachment 221984
patch

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

&gt; LayoutTests/accessibility/aria-describedby-on-input-expected.txt:3
&gt; -Allows you to specify the number of minutes after which the computer will self-destruct.
&gt; +Allows you to specify the number of minutes after
&gt; +which the computer will self-destruct.

I still don&apos;t quite understand why the line break shows up here. IMHO, the text from the two divs should be concatenated together and joined with a &quot; &quot;, not a line break.

Chris, could you comment on this issue? Maybe it&apos;s me misunderstanding how this aria-describedby thing should work, or maybe it&apos;s another bug somewhere else

&gt; Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp:252
&gt; +    if (node &amp;&amp; node-&gt;isHTMLElement()) {
&gt; +        if (!toHTMLElement(node)-&gt;getAttribute(HTMLNames::aria_describedbyAttr).isEmpty()) {

You could early return if it&apos;s empty, saving one nested block more. Or even combine the two nested ifs and early return, but that would perhaps be less readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972429</commentid>
    <comment_count>16</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-01-27 09:01:12 -0800</bug_when>
    <thetext>&gt; &gt; LayoutTests/accessibility/aria-describedby-on-input-expected.txt:3
&gt; &gt; -Allows you to specify the number of minutes after which the computer will self-destruct.
&gt; &gt; +Allows you to specify the number of minutes after
&gt; &gt; +which the computer will self-destruct.
&gt; 
&gt; I still don&apos;t quite understand why the line break shows up here. IMHO, the text from the two divs should be concatenated together and joined with a &quot; &quot;, not a line break.
&gt; 
&gt; Chris, could you comment on this issue? Maybe it&apos;s me misunderstanding how this aria-describedby thing should work, or maybe it&apos;s another bug somewhere else
&gt; 
Chris any comments regarding this issue ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972433</commentid>
    <comment_count>17</comment_count>
      <attachid>221984</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-01-27 09:21:03 -0800</bug_when>
    <thetext>Comment on attachment 221984
patch

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

&gt;&gt; LayoutTests/accessibility/aria-describedby-on-input-expected.txt:3
&gt;&gt; +which the computer will self-destruct.
&gt; 
&gt; I still don&apos;t quite understand why the line break shows up here. IMHO, the text from the two divs should be concatenated together and joined with a &quot; &quot;, not a line break.
&gt; 
&gt; Chris, could you comment on this issue? Maybe it&apos;s me misunderstanding how this aria-describedby thing should work, or maybe it&apos;s another bug somewhere else

yea i&apos;m also a little surprised that ariaDescribedByAttribute() would somehow get the newline
It would indicate that
static String accessibleNameForNode(Node* node) -&gt; textUnderElement()
  returns a string in the first element that has a newline
that surprises me. i don&apos;t think it&apos;s a show stopper and I don&apos;t think this patch is the cause of the problem, but it&apos;s something we should at least understand

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:2141
&gt; +    for (unsigned i = 0; i &lt; size; ++i) {

we should use 
for (auto name : idVector)

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:2144
&gt; +        if (idElement)

this can be written
if (Element* idElement = treeScope...)
   elements.append()

&gt; Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp:253
&gt; +            removeAtkRelationByType(relationSet, ATK_RELATION_DESCRIBED_BY);

There&apos;s a ariaDescribedByAttribute() on the AXObject. We should make that public so you can call that directly, instead of calling the attribute directly on the Node object in the platform code

&gt; Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp:258
&gt; +                if (!axObject)

this if can be combined with the line above</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972936</commentid>
    <comment_count>18</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-01-28 08:51:44 -0800</bug_when>
    <thetext>&gt; &gt;&gt; LayoutTests/accessibility/aria-describedby-on-input-expected.txt:3
&gt; &gt;&gt; +which the computer will self-destruct.
&gt; &gt; 
&gt; &gt; I still don&apos;t quite understand why the line break shows up here. IMHO, the text from the two divs should be concatenated together and joined with a &quot; &quot;, not a line break.
&gt; &gt; 
&gt; &gt; Chris, could you comment on this issue? Maybe it&apos;s me misunderstanding how this aria-describedby thing should work, or maybe it&apos;s another bug somewhere else
&gt; 
&gt; yea i&apos;m also a little surprised that ariaDescribedByAttribute() would somehow get the newline
&gt; It would indicate that
&gt; static String accessibleNameForNode(Node* node) -&gt; textUnderElement()
&gt;   returns a string in the first element that has a newline
&gt; that surprises me. i don&apos;t think it&apos;s a show stopper and I don&apos;t think this patch is the cause of the problem, but it&apos;s something we should at least understand
Thanks this is something that I did not know. I thought that html is not obligated to take into account aria* attributes. I guess additional bug could be created to dig a bit more into this.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityObject.cpp:2141
&gt; &gt; +    for (unsigned i = 0; i &lt; size; ++i) {
&gt; 
&gt; we should use 
&gt; for (auto name : idVector)
Sounds good.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityObject.cpp:2144
&gt; &gt; +        if (idElement)
&gt; 
&gt; this can be written
&gt; if (Element* idElement = treeScope...)
&gt;    elements.append()
Sounds good, thanks
&gt; 
&gt; &gt; Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp:253
&gt; &gt; +            removeAtkRelationByType(relationSet, ATK_RELATION_DESCRIBED_BY);
&gt; 
&gt; There&apos;s a ariaDescribedByAttribute() on the AXObject. We should make that public so you can call that directly, instead of calling the attribute directly on the Node object in the platform code

How about to create something like ?: 
supportsAriaDescribedBy() { return !getAttribute(aria_describedbyAttr).isEmpty(); }

I looked into the code and I see ariaDescribedByAttribute calls elementsFromAttribute. This method would be called twice in this context. 
&gt; 
&gt; &gt; Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp:258
&gt; &gt; +                if (!axObject)
&gt; 
&gt; this if can be combined with the line above
Sounds good, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972940</commentid>
    <comment_count>19</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2014-01-28 08:55:08 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; &gt;&gt; LayoutTests/accessibility/aria-describedby-on-input-expected.txt:3
&gt; &gt; &gt;&gt; +which the computer will self-destruct.
&gt; &gt; &gt; 
&gt; &gt; &gt; I still don&apos;t quite understand why the line break shows up here. IMHO, the text from the two divs should be concatenated together and joined with a &quot; &quot;, not a line break.
&gt; &gt; &gt; 
&gt; &gt; &gt; Chris, could you comment on this issue? Maybe it&apos;s me misunderstanding how this aria-describedby thing should work, or maybe it&apos;s another bug somewhere else
&gt; &gt; 
&gt; &gt; yea i&apos;m also a little surprised that ariaDescribedByAttribute() would somehow get the newline
&gt; &gt; It would indicate that
&gt; &gt; static String accessibleNameForNode(Node* node) -&gt; textUnderElement()
&gt; &gt;   returns a string in the first element that has a newline
&gt; &gt; that surprises me. i don&apos;t think it&apos;s a show stopper and I don&apos;t think this patch is the cause of the problem, but it&apos;s something we should at least understand
&gt; Thanks this is something that I did not know. I thought that html is not obligated to take into account aria* attributes. I guess additional bug could be created to dig a bit more into this.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/AccessibilityObject.cpp:2141
&gt; &gt; &gt; +    for (unsigned i = 0; i &lt; size; ++i) {
&gt; &gt; 
&gt; &gt; we should use 
&gt; &gt; for (auto name : idVector)
&gt; Sounds good.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/AccessibilityObject.cpp:2144
&gt; &gt; &gt; +        if (idElement)
&gt; &gt; 
&gt; &gt; this can be written
&gt; &gt; if (Element* idElement = treeScope...)
&gt; &gt;    elements.append()
&gt; Sounds good, thanks
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp:253
&gt; &gt; &gt; +            removeAtkRelationByType(relationSet, ATK_RELATION_DESCRIBED_BY);
&gt; &gt; 
&gt; &gt; There&apos;s a ariaDescribedByAttribute() on the AXObject. We should make that public so you can call that directly, instead of calling the attribute directly on the Node object in the platform code
&gt; 
&gt; How about to create something like ?: 
&gt; supportsAriaDescribedBy() { return !getAttribute(aria_describedbyAttr).isEmpty(); }
&gt; 

Sounds good

&gt; I looked into the code and I see ariaDescribedByAttribute calls elementsFromAttribute. This method would be called twice in this context. 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp:258
&gt; &gt; &gt; +                if (!axObject)
&gt; &gt; 
&gt; &gt; this if can be combined with the line above
&gt; Sounds good, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973335</commentid>
    <comment_count>20</comment_count>
      <attachid>222564</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-01-29 03:49:45 -0800</bug_when>
    <thetext>Created attachment 222564
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973336</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-29 03:51:14 -0800</bug_when>
    <thetext>Attachment 222564 did not pass style-queue:


ERROR: Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1043:  Missing space around : in range-based for statement  [whitespace/colon] [4]
ERROR: Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1048:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973338</commentid>
    <comment_count>22</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-01-29 03:56:53 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Created an attachment (id=222564) [details]
&gt; patch
(In reply to comment #20)
&gt; Created an attachment (id=222564) [details]
&gt; patch

Applied all Chris suggestions.
Added also two additional methods to better deal with aria-describedby attribute:
- supportsARIADescribedBy()
- ariaDescribedByElements(...) - return elements that support aria-describedby</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973339</commentid>
    <comment_count>23</comment_count>
      <attachid>222565</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-01-29 04:00:45 -0800</bug_when>
    <thetext>Created attachment 222565
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973346</commentid>
    <comment_count>24</comment_count>
      <attachid>222565</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2014-01-29 04:21:43 -0800</bug_when>
    <thetext>Comment on attachment 222565
patch

lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973348</commentid>
    <comment_count>25</comment_count>
      <attachid>222565</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-29 05:11:48 -0800</bug_when>
    <thetext>Comment on attachment 222565
patch

Clearing flags on attachment: 222565

Committed r163014: &lt;http://trac.webkit.org/changeset/163014&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973349</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-29 05:11:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221468</attachid>
            <date>2014-01-17 08:36:14 -0800</date>
            <delta_ts>2014-01-20 02:37:10 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a11y-aria-describedby.patch</filename>
            <type>text/plain</type>
            <size>10365</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkNzExMDA5Li5hYmJmZjE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDEt
MTcgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FU
S10gRXhwb3NlIGFyaWEtZGVzY3JpYmVkYnkgd2l0aCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE2ODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTbGlnaHRs
eSBtb2RpZmllZCB0ZXN0IHNvIHRoYXQgaXQgY291bGQgdGVzdCBhcmlhLWRlc2NyaWJlZGJ5IHdp
dGggbXVsdGlwbGUgaWQgcmVmZXJlbmNlcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJp
YS1kZXNjcmliZWRieS1vbi1pbnB1dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlucHV0Lmh0bWw6CisgICAgICAgICogcGxhdGZvcm0v
ZWZsL1Rlc3RFeHBlY3RhdGlvbnM6IFRlc3QgaXMgbm8gbG9uZ2VyIGZhaWxpbmcuCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6IFRlc3QgaXMgbm8gbG9uZ2VyIGZhaWxp
bmcuCisKIDIwMTQtMDEtMTIgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNjE4NDMuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9u
LWlucHV0LWV4cGVjdGVkLnR4dAppbmRleCAxMzZkNDY5Li5jNzJlMTQ2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1kZXNjcmliZWRieS1v
bi1pbnB1dC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw1IEBACiBUaGlzIGNvbXB1dGVyIHdpbGwg
c2VsZi1kZXN0cnVjdCBpbiAgIG1pbnV0ZXMuCi1BbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG51
bWJlciBvZiBtaW51dGVzIGFmdGVyIHdoaWNoIHRoZSBjb21wdXRlciB3aWxsIHNlbGYtZGVzdHJ1
Y3QuCitBbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG51bWJlciBvZiBtaW51dGVzIGFmdGVyCit3
aGljaCB0aGUgY29tcHV0ZXIgd2lsbCBzZWxmLWRlc3RydWN0LgogCiBUaGUgYWNjZXNzaWJpbGl0
eSBkZXNjcmlwdGlvbiBpcyAiQVhIZWxwOiBBbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG51bWJl
ciBvZiBtaW51dGVzIGFmdGVyIHdoaWNoIHRoZSBjb21wdXRlciB3aWxsIHNlbGYtZGVzdHJ1Y3Qu
IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5
LW9uLWlucHV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVk
Ynktb24taW5wdXQuaHRtbAppbmRleCBmNmQzMjc5Li45N2ZkOTRhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQuaHRt
bApAQCAtNSw5ICs1LDEwIEBACiA8L3NjcmlwdD4KIDxib2R5PgogICAgIDxzcGFuIGlkPSJtZXNz
YWdlIj5UaGlzIGNvbXB1dGVyIHdpbGwgc2VsZi1kZXN0cnVjdCBpbjwvc3Bhbj4KLSAgICA8aW5w
dXQgaWQ9InRpbWUiIHR5cGU9InRleHQiIHZhbHVlPSIxMCIgYXJpYS1kZXNjcmliZWRieT0iZGVz
Y3JpcHRpb24iLz4KKyAgICA8aW5wdXQgaWQ9InRpbWUiIHR5cGU9InRleHQiIHZhbHVlPSIxMCIg
YXJpYS1kZXNjcmliZWRieT0iZGVzY3JpcHRpb24xIGRlc2NyaXB0aW9uMiIvPgogICAgIDxzcGFu
IGlkPSJ1bml0Ij4gbWludXRlcy48L3NwYW4+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPkFs
bG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgYWZ0ZXIgd2hpY2ggdGhl
IGNvbXB1dGVyIHdpbGwgc2VsZi1kZXN0cnVjdC48L2Rpdj4KKyAgICA8ZGl2IGlkPSJkZXNjcmlw
dGlvbjEiPkFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgYWZ0ZXI8
L2Rpdj4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbjIiPndoaWNoIHRoZSBjb21wdXRlciB3aWxs
IHNlbGYtZGVzdHJ1Y3QuPC9kaXY+CiAgICAgPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KICAgICAK
ICAgICA8c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCBkYTQ0NTU4Li4zMjlkZjJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
ZmwvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtMTQ0Nyw3ICsxNDQ3LDYgQEAgd2Via2l0Lm9yZy9iLzEwNjMxNiBhY2Nl
c3NpYmlsaXR5L3JlbmRlci1jb3VudGVyLXRleHQuaHRtbCBbIEZhaWx1cmUgXQogIyBOZXcgYWNj
ZXNzaWJpbGl0eSB0ZXN0IGFkZGVkIGluIHIxNDkxNTUgaXMgZmFpbGluZy4gSGFzIGJlZW4gbW92
ZWQgdG8gdGhlIG1hYyBwb3J0IGluIHIxNTU2MDMuCiB3ZWJraXQub3JnL2IvMTE1NjU5IGFjY2Vz
c2liaWxpdHkvbWV0ZXItZWxlbWVudC5odG1sIFsgTWlzc2luZyBdCiAKLXdlYmtpdC5vcmcvYi8x
MjE2ODQgYWNjZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlucHV0Lmh0bWwgWyBGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8xMjE1OTMgYWNjZXNzaWJpbGl0eS9yYWRpby1idXR0b24tdGl0
bGUtbGFiZWwuaHRtbCBbIEZhaWx1cmUgXQogCiAjIE5ld2x5IGFkZGVkIHRlc3QgYXQgcjEzOTEx
MSBpcyBmYWlsaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCBkYzI1ZmYzLi5hYTZiNmEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtOTU0LDcgKzk1NCw2IEBAIHdlYmtpdC5vcmcvYi83Mzc2NiBjc3MzL3Vu
aWNvZGUtYmlkaS1pc29sYXRlLWFoYXJvbi1mYWlsaW5nLmh0bWwgWyBJbWFnZU9ubHlGYWlsCiAK
IHdlYmtpdC5vcmcvYi83OTc1NyBmYXN0L3NlbGVjdG9ycy9zZWxlY3Rpb24td2luZG93LWluYWN0
aXZlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzEyMTY4NCBhY2Nl
c3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQuaHRtbCBbIEZhaWx1cmUgXQogd2Vi
a2l0Lm9yZy9iLzk4MzU3IGFjY2Vzc2liaWxpdHkvYXJpYS1yZWFkb25seS5odG1sIFsgRmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvOTgzNTkgYWNjZXNzaWJpbGl0eS9hcmlhLXRleHQtcm9sZS5odG1s
IFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTgzNjMgYWNjZXNzaWJpbGl0eS9jYW52YXMtZmFs
bGJhY2stY29udGVudC0yLmh0bWwgWyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhMzUyZTI5Li4w
YTcxMDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTQtMDEtMTcgIEtyenlzenRv
ZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FUS10gRXhwb3NlIGFy
aWEtZGVzY3JpYmVkYnkgd2l0aCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE2ODQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIENvdmVy
ZWQgYnkgZXhpc3Rpbmcgb25lLgorCisgICAgICAgIEV4cG9zZWQgYXJpYS1kZXNjcmliZWRieSBi
eSBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZLgorICAgICAgICBDaGFuZ2UgZWxlbWVudHNGcm9t
QXR0cmlidXRlIG1ldGhvZCB0byB2aXJ0dWFsIG9uZSBzbyB0aGF0IGl0IGNvdWxkIGJlIHZpc2li
bGUgZnJvbSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LgorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6ZWxlbWVudHNGcm9tQXR0cmlidXRlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHA6CisgICAgICAgIChzZXRBdGtSZWxhdGlv
blNldEZyb21Db3JlT2JqZWN0KToKKwogMjAxNC0wMS0xMiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE2
MTg0My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3QuaAppbmRleCBkZmE3OWZkLi5kODAwZDBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCkBA
IC0xODIsNyArMTgyLDcgQEAgcHJvdGVjdGVkOgogICAgIFN0cmluZyBhcmlhQWNjZXNzaWJpbGl0
eURlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBhcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVj
dG9yPEVsZW1lbnQqPiYgZWxlbWVudHMpIGNvbnN0OwogICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5
RGVzY3JpcHRpb25Gb3JFbGVtZW50cyhWZWN0b3I8RWxlbWVudCo+ICZlbGVtZW50cykgY29uc3Q7
Ci0gICAgdm9pZCBlbGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVu
dHMsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZWxlbWVu
dHNGcm9tQXR0cmlidXRlKFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzLCBjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGJvdW5kaW5n
Qm94UmVjdCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGFyaWFEZXNjcmli
ZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCA3NjFkZjNkLi5h
MzgzZjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaApAQCAtNjI3LDYgKzYyNyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0
cmluZyBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsg
fQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0OwogCisg
ICAgdmlydHVhbCB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+Jiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IHsgfQorCiAgICAgLy8gT25seSBpZiBpc0NvbG9y
V2VsbCgpCiAgICAgdmlydHVhbCB2b2lkIGNvbG9yVmFsdWUoaW50JiByLCBpbnQmIGcsIGludCYg
YikgY29uc3QgeyByID0gMDsgZyA9IDA7IGIgPSAwOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVy
QXRrLmNwcAppbmRleCAyNmRmYmMyLi5hZWNhNGFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVy
QXRrLmNwcApAQCAtMjMxLDYgKzIzMSwxOCBAQCBzdGF0aWMgdm9pZCBzZXRBdGtSZWxhdGlvblNl
dEZyb21Db3JlT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QsIEF0awogICAg
ICAgICAgICAgcmVtb3ZlQXRrUmVsYXRpb25CeVR5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElP
Tl9MQUJFTExFRF9CWSk7CiAgICAgICAgICAgICBhdGtfcmVsYXRpb25fc2V0X2FkZF9yZWxhdGlv
bl9ieV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJT05fTEFCRUxMRURfQlksIGxhYmVsLT53
cmFwcGVyKCkpOwogICAgICAgICB9CisKKyAgICAgICAgLy8gQ2hlY2tpbmcgYWxzbyB0aGUgYXJp
YS1kZXNjcmliZWRieSB3aGljaCBwcm92aWRlcyBhbiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZv
ciB0aGUgdXNlci4KKyAgICAgICAgcmVtb3ZlQXRrUmVsYXRpb25CeVR5cGUocmVsYXRpb25TZXQs
IEFUS19SRUxBVElPTl9ERVNDUklCRURfQlkpOworICAgICAgICBWZWN0b3I8RWxlbWVudCo+IGRl
c2NyaWJlZEJ5QXR0cmlidXRlczsKKyAgICAgICAgY29yZU9iamVjdC0+ZWxlbWVudHNGcm9tQXR0
cmlidXRlKGRlc2NyaWJlZEJ5QXR0cmlidXRlcywgSFRNTE5hbWVzOjphcmlhX2Rlc2NyaWJlZGJ5
QXR0cik7CisgICAgICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA6IGRlc2NyaWJlZEJ5QXR0cmli
dXRlcykgeworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBjb3Jl
T2JqZWN0LT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGVsZW1lbnQp
OworICAgICAgICAgICAgaWYgKCFheE9iamVjdCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0aW9uX2J5X3R5cGUocmVsYXRp
b25TZXQsIEFUS19SRUxBVElPTl9ERVNDUklCRURfQlksIGF4T2JqZWN0LT53cmFwcGVyKCkpOwor
ICAgICAgICB9CisKICAgICB9IGVsc2UgewogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBj
b250cm9sID0gY29yZU9iamVjdC0+Y29ycmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQo
KTsKICAgICAgICAgaWYgKGNvbnRyb2wpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggZDgyODM3Mi4uMGNkYWQ2OCAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE0LTAx
LTE3ICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtB
VEtdIEV4cG9zZSBhcmlhLWRlc2NyaWJlZGJ5IHdpdGggQVRLX1JFTEFUSU9OX0RFU0NSSUJFRF9C
WQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNjg0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50aW5nIGhlbHBUZXh0IGJ5IHVzaW5nIHJlbGF0aW9uIEFUS19SRUxBVElPTl9ERVNDUklCRURf
QlkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aGVscFRleHQpOgorCiAyMDE0LTAxLTEzICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJv
ICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gTWFrZSBNaW5pQnJvd3NlciB3
aW5kb3dzIG5vbi10cmFuc2llbnQgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCA4NWUyNzI2Li5mYzQwMWI1IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAtOTQzLDEwICs5NDMsMzQgQEAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdl
KCkKIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhl
bHBUZXh0KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBwcm92aWRlIGEgcHJv
cGVyIGltcGxlbWVudGF0aW9uIGZvciB0aGlzIHRoYXQgZG9lcwotICAgIC8vIG5vdCBkZXBlbmQg
b24gTWFjIHNwZWNpZmljIGNvbmNlcHRzIHN1Y2ggYXMgQVRLX1JFTEFUSU9OX0RFU0NSSUJFRF9C
WSwKLSAgICAvLyBvbmNlIGl0J3MgaW1wbGVtZW50ZWQgKHNlZSBodHRwOi8vd2Via2l0Lm9yZy9i
LzEyMTY4NCkuCi0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7
CisgICAgaWYgKCFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudC5nZXQoKSkpCisgICAgICAgIHJldHVy
biBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgQXRrUmVsYXRpb25T
ZXQqIHNldCA9IGF0a19vYmplY3RfcmVmX3JlbGF0aW9uX3NldChBVEtfT0JKRUNUKG1fZWxlbWVu
dC5nZXQoKSkpOworICAgIGlmICghc2V0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhIZWxwOiAiKTsK
KworICAgIGludCBjb3VudCA9IGF0a19yZWxhdGlvbl9zZXRfZ2V0X25fcmVsYXRpb25zKHNldCk7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgIEF0a1JlbGF0
aW9uKiByZWxhdGlvbiA9IGF0a19yZWxhdGlvbl9zZXRfZ2V0X3JlbGF0aW9uKHNldCwgaSk7Cisg
ICAgICAgIGlmIChhdGtfcmVsYXRpb25fZ2V0X3JlbGF0aW9uX3R5cGUocmVsYXRpb24pID09IEFU
S19SRUxBVElPTl9ERVNDUklCRURfQlkpIHsKKyAgICAgICAgICAgIEdQdHJBcnJheSogdGFyZ2V0
TGlzdCA9IGF0a19yZWxhdGlvbl9nZXRfdGFyZ2V0KHJlbGF0aW9uKTsKKyAgICAgICAgICAgIGZv
cihpbnQgdGFyZ2V0Q291bnQgPSAwOyB0YXJnZXRDb3VudCA8IHRhcmdldExpc3QtPmxlbjsgdGFy
Z2V0Q291bnQrKykgeworICAgICAgICAgICAgICAgIEF0a09iamVjdCogdGFyZ2V0ID0gc3RhdGlj
X2Nhc3Q8QXRrT2JqZWN0Kj4oZ19wdHJfYXJyYXlfaW5kZXgodGFyZ2V0TGlzdCwgdGFyZ2V0Q291
bnQpKTsKKyAgICAgICAgICAgICAgICBHT3duUHRyPGdjaGFyPiB0ZXh0KGF0a190ZXh0X2dldF90
ZXh0KEFUS19URVhUKHRhcmdldCksIDAsIC0xKSk7CisgICAgICAgICAgICAgICAgaWYgKHRhcmdl
dENvdW50KQorICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiICIpOworICAgICAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRleHQuZ2V0KCkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgZ19vYmplY3RfdW5yZWYoc2V0KTsKKworICAgIHJldHVybiBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiB9CiAKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp4KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221640</attachid>
            <date>2014-01-20 02:37:10 -0800</date>
            <delta_ts>2014-01-20 02:48:50 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a11y-aria-describedby.patch</filename>
            <type>text/plain</type>
            <size>12356</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlOGNhODY4Li5lNjEwMDc4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDEt
MjAgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FU
S10gRXhwb3NlIGFyaWEtZGVzY3JpYmVkYnkgd2l0aCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE2ODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTbGlnaHRs
eSBtb2RpZmllZCB0ZXN0IHNvIHRoYXQgaXQgY291bGQgdGVzdCBhcmlhLWRlc2NyaWJlZGJ5IHdp
dGggbXVsdGlwbGUgaWQgcmVmZXJlbmNlcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJp
YS1kZXNjcmliZWRieS1vbi1pbnB1dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlucHV0Lmh0bWw6CisgICAgICAgICogcGxhdGZvcm0v
ZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnM6CisKIDIwMTQtMDEtMjAgIE1vcnRlbiBTdGVuc2hvcm5lICA8bXN0ZW5zaG9Ab3BlcmEu
Y29tPgogCiAgICAgICAgIFJlZ2lvbiBiYXNlZCBtdWx0aWNvbDogdGFsbCBsaW5lIGNhdXNlcyB0
YWxsZXIgbXVsdGljb2wgY29udGFpbmVyIHRoYW4gbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlucHV0
LWV4cGVjdGVkLnR4dAppbmRleCAxMzZkNDY5Li5jNzJlMTQ2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1kZXNjcmliZWRieS1vbi1pbnB1
dC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw1IEBACiBUaGlzIGNvbXB1dGVyIHdpbGwgc2VsZi1k
ZXN0cnVjdCBpbiAgIG1pbnV0ZXMuCi1BbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG51bWJlciBv
ZiBtaW51dGVzIGFmdGVyIHdoaWNoIHRoZSBjb21wdXRlciB3aWxsIHNlbGYtZGVzdHJ1Y3QuCitB
bGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG51bWJlciBvZiBtaW51dGVzIGFmdGVyCit3aGljaCB0
aGUgY29tcHV0ZXIgd2lsbCBzZWxmLWRlc3RydWN0LgogCiBUaGUgYWNjZXNzaWJpbGl0eSBkZXNj
cmlwdGlvbiBpcyAiQVhIZWxwOiBBbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG51bWJlciBvZiBt
aW51dGVzIGFmdGVyIHdoaWNoIHRoZSBjb21wdXRlciB3aWxsIHNlbGYtZGVzdHJ1Y3QuIgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlu
cHV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24t
aW5wdXQuaHRtbAppbmRleCBmNmQzMjc5Li45N2ZkOTRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQuaHRtbApAQCAt
NSw5ICs1LDEwIEBACiA8L3NjcmlwdD4KIDxib2R5PgogICAgIDxzcGFuIGlkPSJtZXNzYWdlIj5U
aGlzIGNvbXB1dGVyIHdpbGwgc2VsZi1kZXN0cnVjdCBpbjwvc3Bhbj4KLSAgICA8aW5wdXQgaWQ9
InRpbWUiIHR5cGU9InRleHQiIHZhbHVlPSIxMCIgYXJpYS1kZXNjcmliZWRieT0iZGVzY3JpcHRp
b24iLz4KKyAgICA8aW5wdXQgaWQ9InRpbWUiIHR5cGU9InRleHQiIHZhbHVlPSIxMCIgYXJpYS1k
ZXNjcmliZWRieT0iZGVzY3JpcHRpb24xIGRlc2NyaXB0aW9uMiIvPgogICAgIDxzcGFuIGlkPSJ1
bml0Ij4gbWludXRlcy48L3NwYW4+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPkFsbG93cyB5
b3UgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgYWZ0ZXIgd2hpY2ggdGhlIGNvbXB1
dGVyIHdpbGwgc2VsZi1kZXN0cnVjdC48L2Rpdj4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbjEi
PkFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgYWZ0ZXI8L2Rpdj4K
KyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbjIiPndoaWNoIHRoZSBjb21wdXRlciB3aWxsIHNlbGYt
ZGVzdHJ1Y3QuPC9kaXY+CiAgICAgPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KICAgICAKICAgICA8
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4
YzU4NjM5Li4zNzY5ODE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMTQ0NSw3ICsxNDQ1LDYgQEAgd2Via2l0Lm9yZy9iLzEwNjMxNiBhY2Nlc3NpYmls
aXR5L3JlbmRlci1jb3VudGVyLXRleHQuaHRtbCBbIEZhaWx1cmUgXQogIyBOZXcgYWNjZXNzaWJp
bGl0eSB0ZXN0IGFkZGVkIGluIHIxNDkxNTUgaXMgZmFpbGluZy4gSGFzIGJlZW4gbW92ZWQgdG8g
dGhlIG1hYyBwb3J0IGluIHIxNTU2MDMuCiB3ZWJraXQub3JnL2IvMTE1NjU5IGFjY2Vzc2liaWxp
dHkvbWV0ZXItZWxlbWVudC5odG1sIFsgTWlzc2luZyBdCiAKLXdlYmtpdC5vcmcvYi8xMjE2ODQg
YWNjZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlucHV0Lmh0bWwgWyBGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8xMjE1OTMgYWNjZXNzaWJpbGl0eS9yYWRpby1idXR0b24tdGl0bGUtbGFi
ZWwuaHRtbCBbIEZhaWx1cmUgXQogCiAjIE5ld2x5IGFkZGVkIHRlc3QgYXQgcjEzOTExMSBpcyBm
YWlsaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1
OTEwMzYxLi5lMGMyODg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtOTM5LDcgKzkzOSw2IEBAIHdlYmtpdC5vcmcvYi83Mzc2NiBjc3MzL3VuaWNvZGUt
YmlkaS1pc29sYXRlLWFoYXJvbi1mYWlsaW5nLmh0bWwgWyBJbWFnZU9ubHlGYWlsCiAKIHdlYmtp
dC5vcmcvYi83OTc1NyBmYXN0L3NlbGVjdG9ycy9zZWxlY3Rpb24td2luZG93LWluYWN0aXZlLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzEyMTY4NCBhY2Nlc3NpYmls
aXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9y
Zy9iLzk4MzU3IGFjY2Vzc2liaWxpdHkvYXJpYS1yZWFkb25seS5odG1sIFsgRmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvOTgzNTkgYWNjZXNzaWJpbGl0eS9hcmlhLXRleHQtcm9sZS5odG1sIFsgRmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvOTgzNjMgYWNjZXNzaWJpbGl0eS9jYW52YXMtZmFsbGJhY2st
Y29udGVudC0yLmh0bWwgWyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZmRlODFlLi41ZDIxMWNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTQtMDEtMjAgIEtyenlzenRvZiBDemVj
aCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FUS10gRXhwb3NlIGFyaWEtZGVz
Y3JpYmVkYnkgd2l0aCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE2ODQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKwor
ICAgICAgICBFeHBvc2VkIGFyaWEtZGVzY3JpYmVkYnkgYnkgQVRLX1JFTEFUSU9OX0RFU0NSSUJF
RF9CWS4KKyAgICAgICAgQ2hhbmdlIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZSBtZXRob2QgdG8gdmly
dHVhbCBvbmUgc28gdGhhdCBpdCBjb3VsZCBiZSB2aXNpYmxlIGZyb20gQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRzRnJvbUF0dHJp
YnV0ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBw
ZXJBdGsuY3BwOgorICAgICAgICAoc2V0QXRrUmVsYXRpb25TZXRGcm9tQ29yZU9iamVjdCk6CisK
IDIwMTQtMDEtMjAgIE1vcnRlbiBTdGVuc2hvcm5lICA8bXN0ZW5zaG9Ab3BlcmEuY29tPgogCiAg
ICAgICAgIFJlZ2lvbiBiYXNlZCBtdWx0aWNvbDogdGFsbCBsaW5lIGNhdXNlcyB0YWxsZXIgbXVs
dGljb2wgY29udGFpbmVyIHRoYW4gbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKaW5kZXggYWRhYjNiZS4u
YmYwNWQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5Tm9kZU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuaApAQCAtMTgyLDcgKzE4Miw3IEBAIHByb3RlY3RlZDoKICAg
ICBTdHJpbmcgYXJpYUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0OwogICAgIHZvaWQg
YXJpYUxhYmVsZWRCeUVsZW1lbnRzKFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzKSBjb25zdDsK
ICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uRm9yRWxlbWVudHMoVmVjdG9yPEVs
ZW1lbnQqPiAmZWxlbWVudHMpIGNvbnN0OwotICAgIHZvaWQgZWxlbWVudHNGcm9tQXR0cmlidXRl
KFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+
JiBlbGVtZW50cywgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBib3VuZGluZ0JveFJlY3QoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIFN0cmluZyBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgKaW5kZXggNzYxZGYzZC4uYTM4M2YzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTYyNyw2ICs2MjcsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgYXJpYURlc2NyaWJlZEJ5QXR0cmlidXRlKCkg
Y29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHBsYWNl
aG9sZGVyVmFsdWUoKSBjb25zdDsKIAorICAgIHZpcnR1YWwgdm9pZCBlbGVtZW50c0Zyb21BdHRy
aWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCB7IH0K
KwogICAgIC8vIE9ubHkgaWYgaXNDb2xvcldlbGwoKQogICAgIHZpcnR1YWwgdm9pZCBjb2xvclZh
bHVlKGludCYgciwgaW50JiBnLCBpbnQmIGIpIGNvbnN0IHsgciA9IDA7IGcgPSAwOyBiID0gMDsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAKaW5kZXggMzA1ZTIzMy4uYmRhM2FiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZVdyYXBwZXJBdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcApAQCAtMjMxLDYgKzIzMSwxNyBAQCBzdGF0
aWMgdm9pZCBzZXRBdGtSZWxhdGlvblNldEZyb21Db3JlT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGNvcmVPYmplY3QsIEF0awogICAgICAgICAgICAgcmVtb3ZlQXRrUmVsYXRpb25CeVR5cGUo
cmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9MQUJFTExFRF9CWSk7CiAgICAgICAgICAgICBhdGtf
cmVsYXRpb25fc2V0X2FkZF9yZWxhdGlvbl9ieV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJ
T05fTEFCRUxMRURfQlksIGxhYmVsLT53cmFwcGVyKCkpOwogICAgICAgICB9CisgICAgICAgIC8v
IENoZWNraW5nIGFsc28gdGhlIGFyaWEtZGVzY3JpYmVkYnkgd2hpY2ggcHJvdmlkZXMgYW4gYWRk
aXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgdGhlIHVzZXIgICAgLgorICAgICAgICByZW1vdmVBdGtS
ZWxhdGlvbkJ5VHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0RFU0NSSUJFRF9CWSk7Cisg
ICAgICAgIFZlY3RvcjxFbGVtZW50Kj4gZGVzY3JpYmVkQnlBdHRyaWJ1dGVzOworICAgICAgICBj
b3JlT2JqZWN0LT5lbGVtZW50c0Zyb21BdHRyaWJ1dGUoZGVzY3JpYmVkQnlBdHRyaWJ1dGVzLCBI
VE1MTmFtZXM6OmFyaWFfZGVzY3JpYmVkYnlBdHRyKTsKKyAgICAgICAgZm9yIChFbGVtZW50KiBl
bGVtZW50IDogZGVzY3JpYmVkQnlBdHRyaWJ1dGVzKSB7CisgICAgICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBheE9iamVjdCA9IGNvcmVPYmplY3QtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2Fj
aGUoKS0+Z2V0T3JDcmVhdGUoZWxlbWVudCk7CisgICAgICAgICAgICBpZiAoIWF4T2JqZWN0KQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgYXRrX3JlbGF0aW9uX3NldF9h
ZGRfcmVsYXRpb25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0RFU0NSSUJFRF9C
WSwgYXhPYmplY3QtPndyYXBwZXIoKSk7CisgICAgICAgIH0KKwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvbnRyb2wgPSBjb3JlT2JqZWN0LT5jb3JyZXNwb25k
aW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpOwogICAgICAgICBpZiAoY29udHJvbCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NWZjZDNlLi43
OWVkZmY4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDEtMjAgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hA
c2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FUS10gRXhwb3NlIGFyaWEtZGVzY3JpYmVkYnkgd2l0
aCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE2ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRpbmcgaGVscFRleHQgYnkgdXNpbmcgcmVsYXRp
b24gQVRLX1JFTEFUSU9OX0RFU0NSSUJFRF9CWS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmhlbHBUZXh0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQpOgorCiAyMDE0LTAxLTE5ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzFdIFJl
bW92ZSBhbmQgcmVmYWN0b3IgdGhlIEFQSXMgd2hpY2ggdXNlIHNpbmdsZSBhbmQgYmFzZSBrZXl3
b3JkCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudEF0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudEF0ay5jcHAKaW5kZXggZmI1MTAyNS4uNTU1Njg1OCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAt
ODAzLDEwICs4MDMsMzQgQEAgSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFu
Z3VhZ2UoKQogCiBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCgp
IGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gcHJvdmlkZSBhIHByb3BlciBpbXBs
ZW1lbnRhdGlvbiBmb3IgdGhpcyB0aGF0IGRvZXMKLSAgICAvLyBub3QgZGVwZW5kIG9uIE1hYyBz
cGVjaWZpYyBjb25jZXB0cyBzdWNoIGFzIEFUS19SRUxBVElPTl9ERVNDUklCRURfQlksCi0gICAg
Ly8gb25jZSBpdCdzIGltcGxlbWVudGVkIChzZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMjE2ODQp
LgotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworICAgIGlm
ICghQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQorICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVh
dGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKworICAgIEF0a1JlbGF0aW9uU2V0KiBzZXQgPSBhdGtf
b2JqZWN0X3JlZl9yZWxhdGlvbl9zZXQoQVRLX09CSkVDVChtX2VsZW1lbnQpKTsKKyAgICBpZiAo
IXNldCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYSGVscDogIik7CisKKyAgICBpbnQgY291bnQgPSBh
dGtfcmVsYXRpb25fc2V0X2dldF9uX3JlbGF0aW9ucyhzZXQpOworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICBBdGtSZWxhdGlvbiogcmVsYXRpb24gPSBhdGtf
cmVsYXRpb25fc2V0X2dldF9yZWxhdGlvbihzZXQsIGkpOworICAgICAgICBpZiAoYXRrX3JlbGF0
aW9uX2dldF9yZWxhdGlvbl90eXBlKHJlbGF0aW9uKSA9PSBBVEtfUkVMQVRJT05fREVTQ1JJQkVE
X0JZKSB7CisgICAgICAgICAgICBHUHRyQXJyYXkqIHRhcmdldExpc3QgPSBhdGtfcmVsYXRpb25f
Z2V0X3RhcmdldChyZWxhdGlvbik7CisgICAgICAgICAgICBmb3IoaW50IHRhcmdldENvdW50ID0g
MDsgdGFyZ2V0Q291bnQgPCB0YXJnZXRMaXN0LT5sZW47IHRhcmdldENvdW50KyspIHsKKyAgICAg
ICAgICAgICAgICBBdGtPYmplY3QqIHRhcmdldCA9IHN0YXRpY19jYXN0PEF0a09iamVjdCo+KGdf
cHRyX2FycmF5X2luZGV4KHRhcmdldExpc3QsIHRhcmdldENvdW50KSk7CisgICAgICAgICAgICAg
ICAgR093blB0cjxnY2hhcj4gdGV4dChhdGtfdGV4dF9nZXRfdGV4dChBVEtfVEVYVCh0YXJnZXQp
LCAwLCAtMSkpOworICAgICAgICAgICAgICAgIGlmICh0YXJnZXRDb3VudCkKKyAgICAgICAgICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAiKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCh0ZXh0LmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IGdfb2JqZWN0X3VucmVmKHNldCk7CisKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCiBkb3VibGUg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eCgpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRBdGsuY3BwCmluZGV4IDg1ZTI3MjYuLmZjNDAxYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRBdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRr
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCkBAIC05NDMsMTAgKzk0MywzNCBAQCBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UoKQog
CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRl
eHQoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHByb3ZpZGUgYSBwcm9wZXIg
aW1wbGVtZW50YXRpb24gZm9yIHRoaXMgdGhhdCBkb2VzCi0gICAgLy8gbm90IGRlcGVuZCBvbiBN
YWMgc3BlY2lmaWMgY29uY2VwdHMgc3VjaCBhcyBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZLAot
ICAgIC8vIG9uY2UgaXQncyBpbXBsZW1lbnRlZCAoc2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTIx
Njg0KS4KLSAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKyAg
ICBpZiAoIUFUS19JU19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSkKKyAgICAgICAgcmV0dXJuIEpT
U3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisKKyAgICBBdGtSZWxhdGlvblNldCog
c2V0ID0gYXRrX29iamVjdF9yZWZfcmVsYXRpb25fc2V0KEFUS19PQkpFQ1QobV9lbGVtZW50Lmdl
dCgpKSk7CisgICAgaWYgKCFzZXQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWEhlbHA6ICIpOworCisg
ICAgaW50IGNvdW50ID0gYXRrX3JlbGF0aW9uX3NldF9nZXRfbl9yZWxhdGlvbnMoc2V0KTsKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgQXRrUmVsYXRpb24q
IHJlbGF0aW9uID0gYXRrX3JlbGF0aW9uX3NldF9nZXRfcmVsYXRpb24oc2V0LCBpKTsKKyAgICAg
ICAgaWYgKGF0a19yZWxhdGlvbl9nZXRfcmVsYXRpb25fdHlwZShyZWxhdGlvbikgPT0gQVRLX1JF
TEFUSU9OX0RFU0NSSUJFRF9CWSkgeworICAgICAgICAgICAgR1B0ckFycmF5KiB0YXJnZXRMaXN0
ID0gYXRrX3JlbGF0aW9uX2dldF90YXJnZXQocmVsYXRpb24pOworICAgICAgICAgICAgZm9yKGlu
dCB0YXJnZXRDb3VudCA9IDA7IHRhcmdldENvdW50IDwgdGFyZ2V0TGlzdC0+bGVuOyB0YXJnZXRD
b3VudCsrKSB7CisgICAgICAgICAgICAgICAgQXRrT2JqZWN0KiB0YXJnZXQgPSBzdGF0aWNfY2Fz
dDxBdGtPYmplY3QqPihnX3B0cl9hcnJheV9pbmRleCh0YXJnZXRMaXN0LCB0YXJnZXRDb3VudCkp
OworICAgICAgICAgICAgICAgIEdPd25QdHI8Z2NoYXI+IHRleHQoYXRrX3RleHRfZ2V0X3RleHQo
QVRLX1RFWFQodGFyZ2V0KSwgMCwgLTEpKTsKKyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0Q291
bnQpCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgIik7CisgICAgICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQodGV4dC5nZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBnX29iamVjdF91bnJlZihzZXQpOworCisgICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKIH0KIAogZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OngoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221642</attachid>
            <date>2014-01-20 02:48:50 -0800</date>
            <delta_ts>2014-01-20 06:32:55 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a11y-aria-describedby.patch</filename>
            <type>text/plain</type>
            <size>12375</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlOGNhODY4Li5lNjEwMDc4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDEt
MjAgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FU
S10gRXhwb3NlIGFyaWEtZGVzY3JpYmVkYnkgd2l0aCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE2ODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTbGlnaHRs
eSBtb2RpZmllZCB0ZXN0IHNvIHRoYXQgaXQgY291bGQgdGVzdCBhcmlhLWRlc2NyaWJlZGJ5IHdp
dGggbXVsdGlwbGUgaWQgcmVmZXJlbmNlcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJp
YS1kZXNjcmliZWRieS1vbi1pbnB1dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlucHV0Lmh0bWw6CisgICAgICAgICogcGxhdGZvcm0v
ZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnM6CisKIDIwMTQtMDEtMjAgIE1vcnRlbiBTdGVuc2hvcm5lICA8bXN0ZW5zaG9Ab3BlcmEu
Y29tPgogCiAgICAgICAgIFJlZ2lvbiBiYXNlZCBtdWx0aWNvbDogdGFsbCBsaW5lIGNhdXNlcyB0
YWxsZXIgbXVsdGljb2wgY29udGFpbmVyIHRoYW4gbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlucHV0
LWV4cGVjdGVkLnR4dAppbmRleCAxMzZkNDY5Li5jNzJlMTQ2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1kZXNjcmliZWRieS1vbi1pbnB1
dC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw1IEBACiBUaGlzIGNvbXB1dGVyIHdpbGwgc2VsZi1k
ZXN0cnVjdCBpbiAgIG1pbnV0ZXMuCi1BbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG51bWJlciBv
ZiBtaW51dGVzIGFmdGVyIHdoaWNoIHRoZSBjb21wdXRlciB3aWxsIHNlbGYtZGVzdHJ1Y3QuCitB
bGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG51bWJlciBvZiBtaW51dGVzIGFmdGVyCit3aGljaCB0
aGUgY29tcHV0ZXIgd2lsbCBzZWxmLWRlc3RydWN0LgogCiBUaGUgYWNjZXNzaWJpbGl0eSBkZXNj
cmlwdGlvbiBpcyAiQVhIZWxwOiBBbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG51bWJlciBvZiBt
aW51dGVzIGFmdGVyIHdoaWNoIHRoZSBjb21wdXRlciB3aWxsIHNlbGYtZGVzdHJ1Y3QuIgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlu
cHV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24t
aW5wdXQuaHRtbAppbmRleCBmNmQzMjc5Li45N2ZkOTRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQuaHRtbApAQCAt
NSw5ICs1LDEwIEBACiA8L3NjcmlwdD4KIDxib2R5PgogICAgIDxzcGFuIGlkPSJtZXNzYWdlIj5U
aGlzIGNvbXB1dGVyIHdpbGwgc2VsZi1kZXN0cnVjdCBpbjwvc3Bhbj4KLSAgICA8aW5wdXQgaWQ9
InRpbWUiIHR5cGU9InRleHQiIHZhbHVlPSIxMCIgYXJpYS1kZXNjcmliZWRieT0iZGVzY3JpcHRp
b24iLz4KKyAgICA8aW5wdXQgaWQ9InRpbWUiIHR5cGU9InRleHQiIHZhbHVlPSIxMCIgYXJpYS1k
ZXNjcmliZWRieT0iZGVzY3JpcHRpb24xIGRlc2NyaXB0aW9uMiIvPgogICAgIDxzcGFuIGlkPSJ1
bml0Ij4gbWludXRlcy48L3NwYW4+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPkFsbG93cyB5
b3UgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgYWZ0ZXIgd2hpY2ggdGhlIGNvbXB1
dGVyIHdpbGwgc2VsZi1kZXN0cnVjdC48L2Rpdj4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbjEi
PkFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgYWZ0ZXI8L2Rpdj4K
KyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbjIiPndoaWNoIHRoZSBjb21wdXRlciB3aWxsIHNlbGYt
ZGVzdHJ1Y3QuPC9kaXY+CiAgICAgPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KICAgICAKICAgICA8
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4
YzU4NjM5Li4zNzY5ODE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMTQ0NSw3ICsxNDQ1LDYgQEAgd2Via2l0Lm9yZy9iLzEwNjMxNiBhY2Nlc3NpYmls
aXR5L3JlbmRlci1jb3VudGVyLXRleHQuaHRtbCBbIEZhaWx1cmUgXQogIyBOZXcgYWNjZXNzaWJp
bGl0eSB0ZXN0IGFkZGVkIGluIHIxNDkxNTUgaXMgZmFpbGluZy4gSGFzIGJlZW4gbW92ZWQgdG8g
dGhlIG1hYyBwb3J0IGluIHIxNTU2MDMuCiB3ZWJraXQub3JnL2IvMTE1NjU5IGFjY2Vzc2liaWxp
dHkvbWV0ZXItZWxlbWVudC5odG1sIFsgTWlzc2luZyBdCiAKLXdlYmtpdC5vcmcvYi8xMjE2ODQg
YWNjZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlucHV0Lmh0bWwgWyBGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8xMjE1OTMgYWNjZXNzaWJpbGl0eS9yYWRpby1idXR0b24tdGl0bGUtbGFi
ZWwuaHRtbCBbIEZhaWx1cmUgXQogCiAjIE5ld2x5IGFkZGVkIHRlc3QgYXQgcjEzOTExMSBpcyBm
YWlsaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1
OTEwMzYxLi5lMGMyODg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtOTM5LDcgKzkzOSw2IEBAIHdlYmtpdC5vcmcvYi83Mzc2NiBjc3MzL3VuaWNvZGUt
YmlkaS1pc29sYXRlLWFoYXJvbi1mYWlsaW5nLmh0bWwgWyBJbWFnZU9ubHlGYWlsCiAKIHdlYmtp
dC5vcmcvYi83OTc1NyBmYXN0L3NlbGVjdG9ycy9zZWxlY3Rpb24td2luZG93LWluYWN0aXZlLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzEyMTY4NCBhY2Nlc3NpYmls
aXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9y
Zy9iLzk4MzU3IGFjY2Vzc2liaWxpdHkvYXJpYS1yZWFkb25seS5odG1sIFsgRmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvOTgzNTkgYWNjZXNzaWJpbGl0eS9hcmlhLXRleHQtcm9sZS5odG1sIFsgRmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvOTgzNjMgYWNjZXNzaWJpbGl0eS9jYW52YXMtZmFsbGJhY2st
Y29udGVudC0yLmh0bWwgWyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZmRlODFlLi4yMmQ4NTAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTQtMDEtMjAgIEtyenlzenRvZiBDemVj
aCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FUS10gRXhwb3NlIGFyaWEtZGVz
Y3JpYmVkYnkgd2l0aCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE2ODQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIENvdmVyZWQgYnkg
ZXhpc3Rpbmcgb25lLgorCisgICAgICAgIEV4cG9zZWQgYXJpYS1kZXNjcmliZWRieSBieSBBVEtf
UkVMQVRJT05fREVTQ1JJQkVEX0JZLgorICAgICAgICBDaGFuZ2UgZWxlbWVudHNGcm9tQXR0cmli
dXRlIG1ldGhvZCB0byB2aXJ0dWFsIG9uZSBzbyB0aGF0IGl0IGNvdWxkIGJlIHZpc2libGUgZnJv
bSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
ZWxlbWVudHNGcm9tQXR0cmlidXRlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHA6CisgICAgICAgIChzZXRBdGtSZWxhdGlvblNldEZy
b21Db3JlT2JqZWN0KToKKwogMjAxNC0wMS0yMCAgTW9ydGVuIFN0ZW5zaG9ybmUgIDxtc3RlbnNo
b0BvcGVyYS5jb20+CiAKICAgICAgICAgUmVnaW9uIGJhc2VkIG11bHRpY29sOiB0YWxsIGxpbmUg
Y2F1c2VzIHRhbGxlciBtdWx0aWNvbCBjb250YWluZXIgdGhhbiBuZWNlc3NhcnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
aAppbmRleCBhZGFiM2JlLi5iZjA1ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCkBAIC0xODIsNyArMTgyLDcg
QEAgcHJvdGVjdGVkOgogICAgIFN0cmluZyBhcmlhQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkg
Y29uc3Q7CiAgICAgdm9pZCBhcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiYg
ZWxlbWVudHMpIGNvbnN0OwogICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25Gb3JF
bGVtZW50cyhWZWN0b3I8RWxlbWVudCo+ICZlbGVtZW50cykgY29uc3Q7Ci0gICAgdm9pZCBlbGVt
ZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZWxlbWVudHNGcm9tQXR0cmlidXRl
KFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGJvdW5kaW5nQm94UmVjdCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgU3RyaW5nIGFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCA3NjFkZjNkLi5hMzgzZjNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApA
QCAtNjI3LDYgKzYyNyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBhcmlhRGVzY3Jp
YmVkQnlBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgcGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lk
IGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+JiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0IHsgfQorCiAgICAgLy8gT25seSBpZiBpc0NvbG9yV2VsbCgpCiAgICAgdmly
dHVhbCB2b2lkIGNvbG9yVmFsdWUoaW50JiByLCBpbnQmIGcsIGludCYgYikgY29uc3QgeyByID0g
MDsgZyA9IDA7IGIgPSAwOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcAppbmRleCAz
MDVlMjMzLi5iZGEzYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCkBAIC0yMzEs
NiArMjMxLDE3IEBAIHN0YXRpYyB2b2lkIHNldEF0a1JlbGF0aW9uU2V0RnJvbUNvcmVPYmplY3Qo
QWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQXRrCiAgICAgICAgICAgICByZW1vdmVB
dGtSZWxhdGlvbkJ5VHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0xBQkVMTEVEX0JZKTsK
ICAgICAgICAgICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0aW9uX2J5X3R5cGUocmVsYXRp
b25TZXQsIEFUS19SRUxBVElPTl9MQUJFTExFRF9CWSwgbGFiZWwtPndyYXBwZXIoKSk7CiAgICAg
ICAgIH0KKyAgICAgICAgLy8gQ2hlY2tpbmcgYWxzbyB0aGUgYXJpYS1kZXNjcmliZWRieSB3aGlj
aCBwcm92aWRlcyBhbiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciB0aGUgdXNlciAgICAuCisg
ICAgICAgIHJlbW92ZUF0a1JlbGF0aW9uQnlUeXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJT05f
REVTQ1JJQkVEX0JZKTsKKyAgICAgICAgVmVjdG9yPEVsZW1lbnQqPiBkZXNjcmliZWRCeUF0dHJp
YnV0ZXM7CisgICAgICAgIGNvcmVPYmplY3QtPmVsZW1lbnRzRnJvbUF0dHJpYnV0ZShkZXNjcmli
ZWRCeUF0dHJpYnV0ZXMsIEhUTUxOYW1lczo6YXJpYV9kZXNjcmliZWRieUF0dHIpOworICAgICAg
ICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQgOiBkZXNjcmliZWRCeUF0dHJpYnV0ZXMpIHsKKyAgICAg
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gY29yZU9iamVjdC0+ZG9jdW1l
bnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShlbGVtZW50KTsKKyAgICAgICAgICAg
IGlmICghYXhPYmplY3QpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBh
dGtfcmVsYXRpb25fc2V0X2FkZF9yZWxhdGlvbl9ieV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVM
QVRJT05fREVTQ1JJQkVEX0JZLCBheE9iamVjdC0+d3JhcHBlcigpKTsKKyAgICAgICAgfQorCiAg
ICAgfSBlbHNlIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29udHJvbCA9IGNvcmVP
YmplY3QtPmNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50KCk7CiAgICAgICAgIGlm
IChjb250cm9sKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDY1ZmNkM2UuLjc5ZWRmZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wMS0yMCAgS3J6eXN6dG9m
IEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbQVRLXSBFeHBvc2UgYXJp
YS1kZXNjcmliZWRieSB3aXRoIEFUS19SRUxBVElPTl9ERVNDUklCRURfQlkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTY4NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGluZyBoZWxwVGV4
dCBieSB1c2luZyByZWxhdGlvbiBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgorICAg
ICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsu
Y3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCk6CisK
IDIwMTQtMDEtMTkgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAg
ICAgIFtFRkxdW1dLMV0gUmVtb3ZlIGFuZCByZWZhY3RvciB0aGUgQVBJcyB3aGljaCB1c2Ugc2lu
Z2xlIGFuZCBiYXNlIGtleXdvcmQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0
ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0
ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCBmYjUxMDI1Li5iODQzNTdjIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dEF0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRBdGsuY3BwCkBAIC04MDMsMTAgKzgwMywzNCBAQCBKU1N0cmluZ1JlZiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCiAKIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmhlbHBUZXh0KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBwcm92
aWRlIGEgcHJvcGVyIGltcGxlbWVudGF0aW9uIGZvciB0aGlzIHRoYXQgZG9lcwotICAgIC8vIG5v
dCBkZXBlbmQgb24gTWFjIHNwZWNpZmljIGNvbmNlcHRzIHN1Y2ggYXMgQVRLX1JFTEFUSU9OX0RF
U0NSSUJFRF9CWSwKLSAgICAvLyBvbmNlIGl0J3MgaW1wbGVtZW50ZWQgKHNlZSBodHRwOi8vd2Vi
a2l0Lm9yZy9iLzEyMTY4NCkuCi0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3Rl
cnMoMCwgMCk7CisgICAgaWYgKCFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgQXRrUmVsYXRp
b25TZXQqIHNldCA9IGF0a19vYmplY3RfcmVmX3JlbGF0aW9uX3NldChBVEtfT0JKRUNUKG1fZWxl
bWVudCkpOworICAgIGlmICghc2V0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgiQVhIZWxwOiAiKTsKKwor
ICAgIGludCBjb3VudCA9IGF0a19yZWxhdGlvbl9zZXRfZ2V0X25fcmVsYXRpb25zKHNldCk7Cisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgIEF0a1JlbGF0aW9u
KiByZWxhdGlvbiA9IGF0a19yZWxhdGlvbl9zZXRfZ2V0X3JlbGF0aW9uKHNldCwgaSk7CisgICAg
ICAgIGlmIChhdGtfcmVsYXRpb25fZ2V0X3JlbGF0aW9uX3R5cGUocmVsYXRpb24pID09IEFUS19S
RUxBVElPTl9ERVNDUklCRURfQlkpIHsKKyAgICAgICAgICAgIEdQdHJBcnJheSogdGFyZ2V0TGlz
dCA9IGF0a19yZWxhdGlvbl9nZXRfdGFyZ2V0KHJlbGF0aW9uKTsKKyAgICAgICAgICAgIGZvciAo
aW50IHRhcmdldENvdW50ID0gMDsgdGFyZ2V0Q291bnQgPCB0YXJnZXRMaXN0LT5sZW47IHRhcmdl
dENvdW50KyspIHsKKyAgICAgICAgICAgICAgICBBdGtPYmplY3QqIHRhcmdldCA9IHN0YXRpY19j
YXN0PEF0a09iamVjdCo+KGdfcHRyX2FycmF5X2luZGV4KHRhcmdldExpc3QsIHRhcmdldENvdW50
KSk7CisgICAgICAgICAgICAgICAgR093blB0cjxnY2hhcj4gdGV4dChhdGtfdGV4dF9nZXRfdGV4
dChBVEtfVEVYVCh0YXJnZXQpLCAwLCAtMSkpOworICAgICAgICAgICAgICAgIGlmICh0YXJnZXRD
b3VudCkKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIiAiKTsKKyAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCh0ZXh0LmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIGdfb2JqZWN0X3VucmVmKHNldCk7CisKKyAgICByZXR1cm4gSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogfQogCiBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eCgpCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50QXRrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
YXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCmluZGV4IDg1ZTI3MjYuLjZkNmY1MDIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCkBAIC05NDMs
MTAgKzk0MywzNCBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bGFuZ3VhZ2UoKQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRv
IHByb3ZpZGUgYSBwcm9wZXIgaW1wbGVtZW50YXRpb24gZm9yIHRoaXMgdGhhdCBkb2VzCi0gICAg
Ly8gbm90IGRlcGVuZCBvbiBNYWMgc3BlY2lmaWMgY29uY2VwdHMgc3VjaCBhcyBBVEtfUkVMQVRJ
T05fREVTQ1JJQkVEX0JZLAotICAgIC8vIG9uY2UgaXQncyBpbXBsZW1lbnRlZCAoc2VlIGh0dHA6
Ly93ZWJraXQub3JnL2IvMTIxNjg0KS4KLSAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycygwLCAwKTsKKyAgICBpZiAoIUFUS19JU19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSkK
KyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisKKyAg
ICBBdGtSZWxhdGlvblNldCogc2V0ID0gYXRrX29iamVjdF9yZWZfcmVsYXRpb25fc2V0KEFUS19P
QkpFQ1QobV9lbGVtZW50LmdldCgpKSk7CisgICAgaWYgKCFzZXQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5k
KCJBWEhlbHA6ICIpOworCisgICAgaW50IGNvdW50ID0gYXRrX3JlbGF0aW9uX3NldF9nZXRfbl9y
ZWxhdGlvbnMoc2V0KTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAg
ICAgICAgQXRrUmVsYXRpb24qIHJlbGF0aW9uID0gYXRrX3JlbGF0aW9uX3NldF9nZXRfcmVsYXRp
b24oc2V0LCBpKTsKKyAgICAgICAgaWYgKGF0a19yZWxhdGlvbl9nZXRfcmVsYXRpb25fdHlwZShy
ZWxhdGlvbikgPT0gQVRLX1JFTEFUSU9OX0RFU0NSSUJFRF9CWSkgeworICAgICAgICAgICAgR1B0
ckFycmF5KiB0YXJnZXRMaXN0ID0gYXRrX3JlbGF0aW9uX2dldF90YXJnZXQocmVsYXRpb24pOwor
ICAgICAgICAgICAgZm9yIChpbnQgdGFyZ2V0Q291bnQgPSAwOyB0YXJnZXRDb3VudCA8IHRhcmdl
dExpc3QtPmxlbjsgdGFyZ2V0Q291bnQrKykgeworICAgICAgICAgICAgICAgIEF0a09iamVjdCog
dGFyZ2V0ID0gc3RhdGljX2Nhc3Q8QXRrT2JqZWN0Kj4oZ19wdHJfYXJyYXlfaW5kZXgodGFyZ2V0
TGlzdCwgdGFyZ2V0Q291bnQpKTsKKyAgICAgICAgICAgICAgICBHT3duUHRyPGdjaGFyPiB0ZXh0
KGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKHRhcmdldCksIDAsIC0xKSk7CisgICAgICAgICAg
ICAgICAgaWYgKHRhcmdldENvdW50KQorICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiICIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRleHQuZ2V0KCkpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZ19vYmplY3RfdW5yZWYoc2V0KTsK
KworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhidWlsZGVyLnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp4KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221655</attachid>
            <date>2014-01-20 06:32:55 -0800</date>
            <delta_ts>2014-01-23 07:43:50 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a11y-aria-describedby.patch</filename>
            <type>text/plain</type>
            <size>12467</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlOGNhODY4Li5lNjEwMDc4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDEt
MjAgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FU
S10gRXhwb3NlIGFyaWEtZGVzY3JpYmVkYnkgd2l0aCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE2ODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTbGlnaHRs
eSBtb2RpZmllZCB0ZXN0IHNvIHRoYXQgaXQgY291bGQgdGVzdCBhcmlhLWRlc2NyaWJlZGJ5IHdp
dGggbXVsdGlwbGUgaWQgcmVmZXJlbmNlcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJp
YS1kZXNjcmliZWRieS1vbi1pbnB1dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlucHV0Lmh0bWw6CisgICAgICAgICogcGxhdGZvcm0v
ZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnM6CisKIDIwMTQtMDEtMjAgIE1vcnRlbiBTdGVuc2hvcm5lICA8bXN0ZW5zaG9Ab3BlcmEu
Y29tPgogCiAgICAgICAgIFJlZ2lvbiBiYXNlZCBtdWx0aWNvbDogdGFsbCBsaW5lIGNhdXNlcyB0
YWxsZXIgbXVsdGljb2wgY29udGFpbmVyIHRoYW4gbmVjZXNzYXJ5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlucHV0
LWV4cGVjdGVkLnR4dAppbmRleCAxMzZkNDY5Li5jNzJlMTQ2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1kZXNjcmliZWRieS1vbi1pbnB1
dC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw1IEBACiBUaGlzIGNvbXB1dGVyIHdpbGwgc2VsZi1k
ZXN0cnVjdCBpbiAgIG1pbnV0ZXMuCi1BbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG51bWJlciBv
ZiBtaW51dGVzIGFmdGVyIHdoaWNoIHRoZSBjb21wdXRlciB3aWxsIHNlbGYtZGVzdHJ1Y3QuCitB
bGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG51bWJlciBvZiBtaW51dGVzIGFmdGVyCit3aGljaCB0
aGUgY29tcHV0ZXIgd2lsbCBzZWxmLWRlc3RydWN0LgogCiBUaGUgYWNjZXNzaWJpbGl0eSBkZXNj
cmlwdGlvbiBpcyAiQVhIZWxwOiBBbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG51bWJlciBvZiBt
aW51dGVzIGFmdGVyIHdoaWNoIHRoZSBjb21wdXRlciB3aWxsIHNlbGYtZGVzdHJ1Y3QuIgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlu
cHV0Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24t
aW5wdXQuaHRtbAppbmRleCBmNmQzMjc5Li45N2ZkOTRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQuaHRtbApAQCAt
NSw5ICs1LDEwIEBACiA8L3NjcmlwdD4KIDxib2R5PgogICAgIDxzcGFuIGlkPSJtZXNzYWdlIj5U
aGlzIGNvbXB1dGVyIHdpbGwgc2VsZi1kZXN0cnVjdCBpbjwvc3Bhbj4KLSAgICA8aW5wdXQgaWQ9
InRpbWUiIHR5cGU9InRleHQiIHZhbHVlPSIxMCIgYXJpYS1kZXNjcmliZWRieT0iZGVzY3JpcHRp
b24iLz4KKyAgICA8aW5wdXQgaWQ9InRpbWUiIHR5cGU9InRleHQiIHZhbHVlPSIxMCIgYXJpYS1k
ZXNjcmliZWRieT0iZGVzY3JpcHRpb24xIGRlc2NyaXB0aW9uMiIvPgogICAgIDxzcGFuIGlkPSJ1
bml0Ij4gbWludXRlcy48L3NwYW4+Ci0gICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPkFsbG93cyB5
b3UgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgYWZ0ZXIgd2hpY2ggdGhlIGNvbXB1
dGVyIHdpbGwgc2VsZi1kZXN0cnVjdC48L2Rpdj4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbjEi
PkFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgYWZ0ZXI8L2Rpdj4K
KyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbjIiPndoaWNoIHRoZSBjb21wdXRlciB3aWxsIHNlbGYt
ZGVzdHJ1Y3QuPC9kaXY+CiAgICAgPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KICAgICAKICAgICA8
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4
YzU4NjM5Li4zNzY5ODE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMTQ0NSw3ICsxNDQ1LDYgQEAgd2Via2l0Lm9yZy9iLzEwNjMxNiBhY2Nlc3NpYmls
aXR5L3JlbmRlci1jb3VudGVyLXRleHQuaHRtbCBbIEZhaWx1cmUgXQogIyBOZXcgYWNjZXNzaWJp
bGl0eSB0ZXN0IGFkZGVkIGluIHIxNDkxNTUgaXMgZmFpbGluZy4gSGFzIGJlZW4gbW92ZWQgdG8g
dGhlIG1hYyBwb3J0IGluIHIxNTU2MDMuCiB3ZWJraXQub3JnL2IvMTE1NjU5IGFjY2Vzc2liaWxp
dHkvbWV0ZXItZWxlbWVudC5odG1sIFsgTWlzc2luZyBdCiAKLXdlYmtpdC5vcmcvYi8xMjE2ODQg
YWNjZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlucHV0Lmh0bWwgWyBGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8xMjE1OTMgYWNjZXNzaWJpbGl0eS9yYWRpby1idXR0b24tdGl0bGUtbGFi
ZWwuaHRtbCBbIEZhaWx1cmUgXQogCiAjIE5ld2x5IGFkZGVkIHRlc3QgYXQgcjEzOTExMSBpcyBm
YWlsaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1
OTEwMzYxLi5lMGMyODg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtOTM5LDcgKzkzOSw2IEBAIHdlYmtpdC5vcmcvYi83Mzc2NiBjc3MzL3VuaWNvZGUt
YmlkaS1pc29sYXRlLWFoYXJvbi1mYWlsaW5nLmh0bWwgWyBJbWFnZU9ubHlGYWlsCiAKIHdlYmtp
dC5vcmcvYi83OTc1NyBmYXN0L3NlbGVjdG9ycy9zZWxlY3Rpb24td2luZG93LWluYWN0aXZlLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzEyMTY4NCBhY2Nlc3NpYmls
aXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9y
Zy9iLzk4MzU3IGFjY2Vzc2liaWxpdHkvYXJpYS1yZWFkb25seS5odG1sIFsgRmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvOTgzNTkgYWNjZXNzaWJpbGl0eS9hcmlhLXRleHQtcm9sZS5odG1sIFsgRmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvOTgzNjMgYWNjZXNzaWJpbGl0eS9jYW52YXMtZmFsbGJhY2st
Y29udGVudC0yLmh0bWwgWyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1ZmRlODFlLi4yMmQ4NTAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTQtMDEtMjAgIEtyenlzenRvZiBDemVj
aCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FUS10gRXhwb3NlIGFyaWEtZGVz
Y3JpYmVkYnkgd2l0aCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE2ODQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIENvdmVyZWQgYnkg
ZXhpc3Rpbmcgb25lLgorCisgICAgICAgIEV4cG9zZWQgYXJpYS1kZXNjcmliZWRieSBieSBBVEtf
UkVMQVRJT05fREVTQ1JJQkVEX0JZLgorICAgICAgICBDaGFuZ2UgZWxlbWVudHNGcm9tQXR0cmli
dXRlIG1ldGhvZCB0byB2aXJ0dWFsIG9uZSBzbyB0aGF0IGl0IGNvdWxkIGJlIHZpc2libGUgZnJv
bSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
ZWxlbWVudHNGcm9tQXR0cmlidXRlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHA6CisgICAgICAgIChzZXRBdGtSZWxhdGlvblNldEZy
b21Db3JlT2JqZWN0KToKKwogMjAxNC0wMS0yMCAgTW9ydGVuIFN0ZW5zaG9ybmUgIDxtc3RlbnNo
b0BvcGVyYS5jb20+CiAKICAgICAgICAgUmVnaW9uIGJhc2VkIG11bHRpY29sOiB0YWxsIGxpbmUg
Y2F1c2VzIHRhbGxlciBtdWx0aWNvbCBjb250YWluZXIgdGhhbiBuZWNlc3NhcnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
aAppbmRleCBhZGFiM2JlLi5iZjA1ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCkBAIC0xODIsNyArMTgyLDcg
QEAgcHJvdGVjdGVkOgogICAgIFN0cmluZyBhcmlhQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkg
Y29uc3Q7CiAgICAgdm9pZCBhcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiYg
ZWxlbWVudHMpIGNvbnN0OwogICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25Gb3JF
bGVtZW50cyhWZWN0b3I8RWxlbWVudCo+ICZlbGVtZW50cykgY29uc3Q7Ci0gICAgdm9pZCBlbGVt
ZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZWxlbWVudHNGcm9tQXR0cmlidXRl
KFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzLCBjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGJvdW5kaW5nQm94UmVjdCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgU3RyaW5nIGFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCA3NjFkZjNkLi5hMzgzZjNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApA
QCAtNjI3LDYgKzYyNyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBhcmlhRGVzY3Jp
YmVkQnlBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgcGxhY2Vob2xkZXJWYWx1ZSgpIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lk
IGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+JiwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0IHsgfQorCiAgICAgLy8gT25seSBpZiBpc0NvbG9yV2VsbCgpCiAgICAgdmly
dHVhbCB2b2lkIGNvbG9yVmFsdWUoaW50JiByLCBpbnQmIGcsIGludCYgYikgY29uc3QgeyByID0g
MDsgZyA9IDA7IGIgPSAwOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcAppbmRleCAz
MDVlMjMzLi43OWRlZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCkBAIC0yMzYs
NiArMjM2LDIyIEBAIHN0YXRpYyB2b2lkIHNldEF0a1JlbGF0aW9uU2V0RnJvbUNvcmVPYmplY3Qo
QWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQXRrCiAgICAgICAgIGlmIChjb250cm9s
KQogICAgICAgICAgICAgYXRrX3JlbGF0aW9uX3NldF9hZGRfcmVsYXRpb25fYnlfdHlwZShyZWxh
dGlvblNldCwgQVRLX1JFTEFUSU9OX0xBQkVMX0ZPUiwgY29udHJvbC0+d3JhcHBlcigpKTsKICAg
ICB9CisKKyAgICAvLyBDaGVja2luZyBhbHNvIHRoZSBhcmlhLWRlc2NyaWJlZGJ5IHdoaWNoIHBy
b3ZpZGVzIGFuIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZm9yIHRoZSB1c2VyLgorICAgIE5vZGUq
IG5vZGUgPSBjb3JlT2JqZWN0LT5ub2RlKCk7CisgICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNIVE1M
RWxlbWVudCgpKSB7CisgICAgICAgIGlmICghdG9IVE1MRWxlbWVudChub2RlKS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6YXJpYV9kZXNjcmliZWRieUF0dHIpLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgcmVtb3ZlQXRrUmVsYXRpb25CeVR5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9E
RVNDUklCRURfQlkpOworICAgICAgICAgICAgVmVjdG9yPEVsZW1lbnQqPiBkZXNjcmliZWRCeUF0
dHJpYnV0ZXM7CisgICAgICAgICAgICBjb3JlT2JqZWN0LT5lbGVtZW50c0Zyb21BdHRyaWJ1dGUo
ZGVzY3JpYmVkQnlBdHRyaWJ1dGVzLCBIVE1MTmFtZXM6OmFyaWFfZGVzY3JpYmVkYnlBdHRyKTsK
KyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGRlc2NyaWJlZEJ5QXR0cmli
dXRlcykgeworICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0g
Y29yZU9iamVjdC0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShlbGVt
ZW50KTsKKyAgICAgICAgICAgICAgICBpZiAoIWF4T2JqZWN0KQorICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBhdGtfcmVsYXRpb25fc2V0X2FkZF9yZWxhdGlv
bl9ieV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZLCBheE9iamVj
dC0+d3JhcHBlcigpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIH0KIAogc3Rh
dGljIGdwb2ludGVyIHdlYmtpdEFjY2Vzc2libGVQYXJlbnRDbGFzcyA9IDA7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjVmY2QzZS4uNzllZGZm
OCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDE0LTAxLTIwICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFtBVEtdIEV4cG9zZSBhcmlhLWRlc2NyaWJlZGJ5IHdpdGggQVRL
X1JFTEFUSU9OX0RFU0NSSUJFRF9CWQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTIxNjg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIGhlbHBUZXh0IGJ5IHVzaW5nIHJlbGF0aW9uIEFU
S19SRUxBVElPTl9ERVNDUklCRURfQlkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9hdGsv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpoZWxwVGV4dCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlbHBUZXh0KToKKwogMjAxNC0wMS0xOSAgUnl1YW4gQ2hv
aSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0sxXSBSZW1vdmUg
YW5kIHJlZmFjdG9yIHRoZSBBUElzIHdoaWNoIHVzZSBzaW5nbGUgYW5kIGJhc2Uga2V5d29yZApk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRBdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRBdGsuY3BwCmluZGV4IGZiNTEwMjUuLmI4NDM1N2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAgLTgwMywx
MCArODAzLDM0IEBAIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdl
KCkKIAogSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25z
dAogewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHByb3ZpZGUgYSBwcm9wZXIgaW1wbGVtZW50
YXRpb24gZm9yIHRoaXMgdGhhdCBkb2VzCi0gICAgLy8gbm90IGRlcGVuZCBvbiBNYWMgc3BlY2lm
aWMgY29uY2VwdHMgc3VjaCBhcyBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZLAotICAgIC8vIG9u
Y2UgaXQncyBpbXBsZW1lbnRlZCAoc2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNjg0KS4KLSAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKyAgICBpZiAoIUFU
S19JU19PQkpFQ1QobV9lbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0
aENoYXJhY3RlcnMoMCwgMCk7CisKKyAgICBBdGtSZWxhdGlvblNldCogc2V0ID0gYXRrX29iamVj
dF9yZWZfcmVsYXRpb25fc2V0KEFUS19PQkpFQ1QobV9lbGVtZW50KSk7CisgICAgaWYgKCFzZXQp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKCJBWEhlbHA6ICIpOworCisgICAgaW50IGNvdW50ID0gYXRrX3Jl
bGF0aW9uX3NldF9nZXRfbl9yZWxhdGlvbnMoc2V0KTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsKKyAgICAgICAgQXRrUmVsYXRpb24qIHJlbGF0aW9uID0gYXRrX3JlbGF0
aW9uX3NldF9nZXRfcmVsYXRpb24oc2V0LCBpKTsKKyAgICAgICAgaWYgKGF0a19yZWxhdGlvbl9n
ZXRfcmVsYXRpb25fdHlwZShyZWxhdGlvbikgPT0gQVRLX1JFTEFUSU9OX0RFU0NSSUJFRF9CWSkg
eworICAgICAgICAgICAgR1B0ckFycmF5KiB0YXJnZXRMaXN0ID0gYXRrX3JlbGF0aW9uX2dldF90
YXJnZXQocmVsYXRpb24pOworICAgICAgICAgICAgZm9yIChpbnQgdGFyZ2V0Q291bnQgPSAwOyB0
YXJnZXRDb3VudCA8IHRhcmdldExpc3QtPmxlbjsgdGFyZ2V0Q291bnQrKykgeworICAgICAgICAg
ICAgICAgIEF0a09iamVjdCogdGFyZ2V0ID0gc3RhdGljX2Nhc3Q8QXRrT2JqZWN0Kj4oZ19wdHJf
YXJyYXlfaW5kZXgodGFyZ2V0TGlzdCwgdGFyZ2V0Q291bnQpKTsKKyAgICAgICAgICAgICAgICBH
T3duUHRyPGdjaGFyPiB0ZXh0KGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKHRhcmdldCksIDAs
IC0xKSk7CisgICAgICAgICAgICAgICAgaWYgKHRhcmdldENvdW50KQorICAgICAgICAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiICIpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KHRleHQuZ2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZ19v
YmplY3RfdW5yZWYoc2V0KTsKKworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIGRvdWJsZSBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp4KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEF0ay5jcHAKaW5kZXggODVlMjcyNi4uNmQ2ZjUwMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0
ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAgLTk0MywxMCArOTQzLDM0IEBAIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCiAKIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCgp
IGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gcHJvdmlkZSBhIHByb3BlciBpbXBs
ZW1lbnRhdGlvbiBmb3IgdGhpcyB0aGF0IGRvZXMKLSAgICAvLyBub3QgZGVwZW5kIG9uIE1hYyBz
cGVjaWZpYyBjb25jZXB0cyBzdWNoIGFzIEFUS19SRUxBVElPTl9ERVNDUklCRURfQlksCi0gICAg
Ly8gb25jZSBpdCdzIGltcGxlbWVudGVkIChzZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMjE2ODQp
LgotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworICAgIGlm
ICghQVRLX0lTX09CSkVDVChtX2VsZW1lbnQuZ2V0KCkpKQorICAgICAgICByZXR1cm4gSlNTdHJp
bmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKworICAgIEF0a1JlbGF0aW9uU2V0KiBzZXQg
PSBhdGtfb2JqZWN0X3JlZl9yZWxhdGlvbl9zZXQoQVRLX09CSkVDVChtX2VsZW1lbnQuZ2V0KCkp
KTsKKyAgICBpZiAoIXNldCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYSGVscDogIik7CisKKyAgICBp
bnQgY291bnQgPSBhdGtfcmVsYXRpb25fc2V0X2dldF9uX3JlbGF0aW9ucyhzZXQpOworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICBBdGtSZWxhdGlvbiogcmVs
YXRpb24gPSBhdGtfcmVsYXRpb25fc2V0X2dldF9yZWxhdGlvbihzZXQsIGkpOworICAgICAgICBp
ZiAoYXRrX3JlbGF0aW9uX2dldF9yZWxhdGlvbl90eXBlKHJlbGF0aW9uKSA9PSBBVEtfUkVMQVRJ
T05fREVTQ1JJQkVEX0JZKSB7CisgICAgICAgICAgICBHUHRyQXJyYXkqIHRhcmdldExpc3QgPSBh
dGtfcmVsYXRpb25fZ2V0X3RhcmdldChyZWxhdGlvbik7CisgICAgICAgICAgICBmb3IgKGludCB0
YXJnZXRDb3VudCA9IDA7IHRhcmdldENvdW50IDwgdGFyZ2V0TGlzdC0+bGVuOyB0YXJnZXRDb3Vu
dCsrKSB7CisgICAgICAgICAgICAgICAgQXRrT2JqZWN0KiB0YXJnZXQgPSBzdGF0aWNfY2FzdDxB
dGtPYmplY3QqPihnX3B0cl9hcnJheV9pbmRleCh0YXJnZXRMaXN0LCB0YXJnZXRDb3VudCkpOwor
ICAgICAgICAgICAgICAgIEdPd25QdHI8Z2NoYXI+IHRleHQoYXRrX3RleHRfZ2V0X3RleHQoQVRL
X1RFWFQodGFyZ2V0KSwgMCwgLTEpKTsKKyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0Q291bnQp
CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgIik7CisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQodGV4dC5nZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBnX29iamVjdF91bnJlZihzZXQpOworCisgICAgcmV0dXJuIEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
IH0KIAogZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OngoKQo=
</data>
<flag name="review"
          id="245603"
          type_id="1"
          status="-"
          setter="mario"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221979</attachid>
            <date>2014-01-23 07:43:50 -0800</date>
            <delta_ts>2014-01-23 08:04:36 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a11y-aria-describedby.patch</filename>
            <type>text/plain</type>
            <size>14839</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMzYwMDI5Li4zODVkNzNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDEt
MjIgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FU
S10gRXhwb3NlIGFyaWEtZGVzY3JpYmVkYnkgd2l0aCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE2ODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTbGlnaHRs
eSBleHRlbmRlZCB0ZXN0IHNvIHRoYXQgaXQgY291bGQgdGVzdCBhcmlhLWRlc2NyaWJlZGJ5IHdp
dGggbXVsdGlwbGUgaWQgcmVmZXJlbmNlcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJp
YS1kZXNjcmliZWRieS1vbi1pbnB1dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlucHV0Lmh0bWw6CisgICAgICAgICogcGxhdGZvcm0v
ZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnM6CisKIDIwMTQtMDEtMjEgIFBldGVyIE1vbG5hciAgPHBtb2xuYXIudS1zemVnZWRAcGFy
dG5lci5zYW1zdW5nLmNvbT4KIAogICAgICAgICBGaXggU1ZHIGFuaW1hdGlvbnMgd2hpY2ggc2V0
IHJ4IG9yIHJ5IGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvYXJpYS1kZXNjcmliZWRieS1vbi1pbnB1dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQtZXhwZWN0ZWQudHh0CmluZGV4
IDEzNmQ0NjkuLmM3MmUxNDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
YXJpYS1kZXNjcmliZWRieS1vbi1pbnB1dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlucHV0LWV4cGVjdGVkLnR4dApAQCAt
MSw0ICsxLDUgQEAKIFRoaXMgY29tcHV0ZXIgd2lsbCBzZWxmLWRlc3RydWN0IGluICAgbWludXRl
cy4KLUFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgYWZ0ZXIgd2hp
Y2ggdGhlIGNvbXB1dGVyIHdpbGwgc2VsZi1kZXN0cnVjdC4KK0FsbG93cyB5b3UgdG8gc3BlY2lm
eSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgYWZ0ZXIKK3doaWNoIHRoZSBjb21wdXRlciB3aWxsIHNl
bGYtZGVzdHJ1Y3QuCiAKIFRoZSBhY2Nlc3NpYmlsaXR5IGRlc2NyaXB0aW9uIGlzICJBWEhlbHA6
IEFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgYWZ0ZXIgd2hpY2gg
dGhlIGNvbXB1dGVyIHdpbGwgc2VsZi1kZXN0cnVjdC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQuaHRtbCBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1kZXNjcmliZWRieS1vbi1pbnB1dC5odG1sCmluZGV4IGY2
ZDMyNzkuLjk3ZmQ5NGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJp
YS1kZXNjcmliZWRieS1vbi1pbnB1dC5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvYXJpYS1kZXNjcmliZWRieS1vbi1pbnB1dC5odG1sCkBAIC01LDkgKzUsMTAgQEAKIDwvc2Ny
aXB0PgogPGJvZHk+CiAgICAgPHNwYW4gaWQ9Im1lc3NhZ2UiPlRoaXMgY29tcHV0ZXIgd2lsbCBz
ZWxmLWRlc3RydWN0IGluPC9zcGFuPgotICAgIDxpbnB1dCBpZD0idGltZSIgdHlwZT0idGV4dCIg
dmFsdWU9IjEwIiBhcmlhLWRlc2NyaWJlZGJ5PSJkZXNjcmlwdGlvbiIvPgorICAgIDxpbnB1dCBp
ZD0idGltZSIgdHlwZT0idGV4dCIgdmFsdWU9IjEwIiBhcmlhLWRlc2NyaWJlZGJ5PSJkZXNjcmlw
dGlvbjEgZGVzY3JpcHRpb24yIi8+CiAgICAgPHNwYW4gaWQ9InVuaXQiPiBtaW51dGVzLjwvc3Bh
bj4KLSAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+QWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBu
dW1iZXIgb2YgbWludXRlcyBhZnRlciB3aGljaCB0aGUgY29tcHV0ZXIgd2lsbCBzZWxmLWRlc3Ry
dWN0LjwvZGl2PgorICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uMSI+QWxsb3dzIHlvdSB0byBzcGVj
aWZ5IHRoZSBudW1iZXIgb2YgbWludXRlcyBhZnRlcjwvZGl2PgorICAgIDxkaXYgaWQ9ImRlc2Ny
aXB0aW9uMiI+d2hpY2ggdGhlIGNvbXB1dGVyIHdpbGwgc2VsZi1kZXN0cnVjdC48L2Rpdj4KICAg
ICA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgogICAgIAogICAgIDxzY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDBmNDliYzQuLjhjYjhlYWIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNDQ2LDcgKzE0
NDYsNiBAQCB3ZWJraXQub3JnL2IvMTA2MzE2IGFjY2Vzc2liaWxpdHkvcmVuZGVyLWNvdW50ZXIt
dGV4dC5odG1sIFsgRmFpbHVyZSBdCiAjIE5ldyBhY2Nlc3NpYmlsaXR5IHRlc3QgYWRkZWQgaW4g
cjE0OTE1NSBpcyBmYWlsaW5nLiBIYXMgYmVlbiBtb3ZlZCB0byB0aGUgbWFjIHBvcnQgaW4gcjE1
NTYwMy4KIHdlYmtpdC5vcmcvYi8xMTU2NTkgYWNjZXNzaWJpbGl0eS9tZXRlci1lbGVtZW50Lmh0
bWwgWyBNaXNzaW5nIF0KIAotd2Via2l0Lm9yZy9iLzEyMTY4NCBhY2Nlc3NpYmlsaXR5L2FyaWEt
ZGVzY3JpYmVkYnktb24taW5wdXQuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEyMTU5
MyBhY2Nlc3NpYmlsaXR5L3JhZGlvLWJ1dHRvbi10aXRsZS1sYWJlbC5odG1sIFsgRmFpbHVyZSBd
CiAKICMgTmV3bHkgYWRkZWQgdGVzdCBhdCByMTM5MTExIGlzIGZhaWxpbmcuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGJjNzRlMmMuLjk0YzE1Y2QgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC05NDEsNyArOTQx
LDYgQEAgd2Via2l0Lm9yZy9iLzczNzY2IGNzczMvdW5pY29kZS1iaWRpLWlzb2xhdGUtYWhhcm9u
LWZhaWxpbmcuaHRtbCBbIEltYWdlT25seUZhaWwKIAogd2Via2l0Lm9yZy9iLzc5NzU3IGZhc3Qv
c2VsZWN0b3JzL3NlbGVjdGlvbi13aW5kb3ctaW5hY3RpdmUuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogCi13ZWJraXQub3JnL2IvMTIxNjg0IGFjY2Vzc2liaWxpdHkvYXJpYS1kZXNjcmliZWRi
eS1vbi1pbnB1dC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvOTgzNTcgYWNjZXNzaWJp
bGl0eS9hcmlhLXJlYWRvbmx5Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85ODM1OSBh
Y2Nlc3NpYmlsaXR5L2FyaWEtdGV4dC1yb2xlLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi85ODM2MyBhY2Nlc3NpYmlsaXR5L2NhbnZhcy1mYWxsYmFjay1jb250ZW50LTIuaHRtbCBbIEZh
aWx1cmUgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDkyNDIyMjYuLmNjMzJmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxNC0wMS0yMiAgS3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5n
LmNvbT4KKworICAgICAgICBbQVRLXSBFeHBvc2UgYXJpYS1kZXNjcmliZWRieSB3aXRoIEFUS19S
RUxBVElPTl9ERVNDUklCRURfQlkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMTY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEV4cG9zZWQgYXJpYS1kZXNjcmliZWRieSBieSBBVEtfUkVMQVRJT05fREVT
Q1JJQkVEX0JZLgorICAgICAgICBNb3ZlZCBlbGVtZW50c0Zyb21BdHRyaWJ1dCB0byBBY2Nlc3Np
YmlsaXR5T2JqZWN0IHRvIGhhdmUgY29tbW9uIGludGVyZmFjZQorICAgICAgICBmb3IgQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3QgYW5kIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIG9uZS4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6ZWxlbWVudHNGcm9tQXR0cmlidXRlKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9X
ZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHA6CisgICAgICAgIChzZXRBdGtSZWxhdGlvblNl
dEZyb21Db3JlT2JqZWN0KToKKwogMjAxNC0wMS0yMSAgUGV0ZXIgTW9sbmFyICA8cG1vbG5hci51
LXN6ZWdlZEBwYXJ0bmVyLnNhbXN1bmcuY29tPgogCiAgICAgICAgIEZpeCBTVkcgYW5pbWF0aW9u
cyB3aGljaCBzZXQgcnggb3IgcnkgYXR0cmlidXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCA0NzQ3
YzkxLi5lODFkNDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtMTg5OCwzMiArMTg5OCw2IEBAIFN0
cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YXJpYURlc2NyaWJlZEJ5QXR0cmlidXRlKCkg
Y29uc3QKICAgICByZXR1cm4gYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uRm9yRWxlbWVudHMoZWxl
bWVudHMpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjplbGVtZW50c0Zyb21B
dHRyaWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZSkgY29uc3QKLXsKLSAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOwotICAg
IGlmICghbm9kZSB8fCAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBUcmVlU2NvcGUmIHRyZWVTY29wZSA9IG5vZGUtPnRyZWVTY29wZSgpOwotCi0gICAgU3Ry
aW5nIGlkTGlzdCA9IGdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpLnN0cmluZygpOwotICAgIGlmIChp
ZExpc3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZExpc3QucmVwbGFjZSgn
XG4nLCAnICcpOwotICAgIFZlY3RvcjxTdHJpbmc+IGlkVmVjdG9yOwotICAgIGlkTGlzdC5zcGxp
dCgnICcsIGlkVmVjdG9yKTsKLQotICAgIHVuc2lnbmVkIHNpemUgPSBpZFZlY3Rvci5zaXplKCk7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBBdG9t
aWNTdHJpbmcgaWROYW1lKGlkVmVjdG9yW2ldKTsKLSAgICAgICAgRWxlbWVudCogaWRFbGVtZW50
ID0gdHJlZVNjb3BlLmdldEVsZW1lbnRCeUlkKGlkTmFtZSk7Ci0gICAgICAgIGlmIChpZEVsZW1l
bnQpCi0gICAgICAgICAgICBlbGVtZW50cy5hcHBlbmQoaWRFbGVtZW50KTsKLSAgICB9Ci19Ci0K
LQogdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YXJpYUxhYmVsZWRCeUVsZW1lbnRzKFZl
Y3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzKSBjb25zdAogewogICAgIGVsZW1lbnRzRnJvbUF0dHJp
YnV0ZShlbGVtZW50cywgYXJpYV9sYWJlbGxlZGJ5QXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKaW5kZXggYWRh
YjNiZS4uMjhmYWQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaApAQCAtMTgyLDcgKzE4Miw2IEBAIHByb3RlY3Rl
ZDoKICAgICBTdHJpbmcgYXJpYUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0OwogICAg
IHZvaWQgYXJpYUxhYmVsZWRCeUVsZW1lbnRzKFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzKSBj
b25zdDsKICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uRm9yRWxlbWVudHMoVmVj
dG9yPEVsZW1lbnQqPiAmZWxlbWVudHMpIGNvbnN0OwotICAgIHZvaWQgZWxlbWVudHNGcm9tQXR0
cmlidXRlKFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzLCBjb25zdCBRdWFsaWZpZWROYW1lJikg
Y29uc3Q7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGJvdW5kaW5nQm94UmVjdCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgU3RyaW5nIGFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggZTRhYzZjZC4uMjE1NzhlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCkBAIC0yMTIxLDQgKzIxMjEsMjkgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lk
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVu
dCo+JiBlbGVtZW50cywgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdAorewor
ICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CisgICAgaWYgKCFub2RlIHx8ICFub2RlLT5p
c0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFRyZWVTY29wZSYgdHJlZVNj
b3BlID0gbm9kZS0+dHJlZVNjb3BlKCk7CisKKyAgICBTdHJpbmcgaWRMaXN0ID0gZ2V0QXR0cmli
dXRlKGF0dHJpYnV0ZSkuc3RyaW5nKCk7CisgICAgaWYgKGlkTGlzdC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlkTGlzdC5yZXBsYWNlKCdcbicsICcgJyk7CisgICAgVmVjdG9y
PFN0cmluZz4gaWRWZWN0b3I7CisgICAgaWRMaXN0LnNwbGl0KCcgJywgaWRWZWN0b3IpOworCisg
ICAgdW5zaWduZWQgc2l6ZSA9IGlkVmVjdG9yLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIEF0b21pY1N0cmluZyBpZE5hbWUoaWRWZWN0
b3JbaV0pOworICAgICAgICBFbGVtZW50KiBpZEVsZW1lbnQgPSB0cmVlU2NvcGUuZ2V0RWxlbWVu
dEJ5SWQoaWROYW1lKTsKKyAgICAgICAgaWYgKGlkRWxlbWVudCkKKyAgICAgICAgICAgIGVsZW1l
bnRzLmFwcGVuZChpZEVsZW1lbnQpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaAppbmRleCA3NjFkZjNkLi4wMmY1NDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtNjI3LDYgKzYyNyw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25z
dCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcGxhY2Vob2xk
ZXJWYWx1ZSgpIGNvbnN0OwogCisgICAgdm9pZCBlbGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9y
PEVsZW1lbnQqPiYsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKwogICAgIC8vIE9ubHkg
aWYgaXNDb2xvcldlbGwoKQogICAgIHZpcnR1YWwgdm9pZCBjb2xvclZhbHVlKGludCYgciwgaW50
JiBnLCBpbnQmIGIpIGNvbnN0IHsgciA9IDA7IGcgPSAwOyBiID0gMDsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBl
ckF0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlV3JhcHBlckF0ay5jcHAKaW5kZXggMzkwOWRhYy4uOTMwOTRhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVXcmFwcGVyQXRrLmNwcApAQCAtMjQ1LDYgKzI0NSwyMiBAQCBzdGF0aWMgdm9pZCBzZXRBdGtS
ZWxhdGlvblNldEZyb21Db3JlT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3Qs
IEF0awogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGFjY2Vzc2liaWxpdHlPYmplY3QgOiBhcmlh
Rmxvd1RvRWxlbWVudHMpCiAgICAgICAgICAgICBhdGtfcmVsYXRpb25fc2V0X2FkZF9yZWxhdGlv
bl9ieV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJT05fRkxPV1NfVE8sIGFjY2Vzc2liaWxp
dHlPYmplY3QtPndyYXBwZXIoKSk7CiAgICAgfQorCisgICAgLy8gQ2hlY2tpbmcgYWxzbyB0aGUg
YXJpYS1kZXNjcmliZWRieSB3aGljaCBwcm92aWRlcyBhbiBhZGRpdGlvbmFsIGluZm9ybWF0aW9u
IGZvciB0aGUgdXNlci4KKyAgICBOb2RlKiBub2RlID0gY29yZU9iamVjdC0+bm9kZSgpOworICAg
IGlmIChub2RlICYmIG5vZGUtPmlzSFRNTEVsZW1lbnQoKSkgeworICAgICAgICBpZiAoIXRvSFRN
TEVsZW1lbnQobm9kZSktPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmFyaWFfZGVzY3JpYmVkYnlB
dHRyKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHJlbW92ZUF0a1JlbGF0aW9uQnlUeXBlKHJl
bGF0aW9uU2V0LCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZKTsKKyAgICAgICAgICAgIFZlY3Rv
cjxFbGVtZW50Kj4gZGVzY3JpYmVkQnlBdHRyaWJ1dGVzOworICAgICAgICAgICAgY29yZU9iamVj
dC0+ZWxlbWVudHNGcm9tQXR0cmlidXRlKGRlc2NyaWJlZEJ5QXR0cmlidXRlcywgSFRNTE5hbWVz
OjphcmlhX2Rlc2NyaWJlZGJ5QXR0cik7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVs
ZW1lbnQgOiBkZXNjcmliZWRCeUF0dHJpYnV0ZXMpIHsKKyAgICAgICAgICAgICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IGNvcmVPYmplY3QtPmRvY3VtZW50KCktPmF4T2JqZWN0
Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZWxlbWVudCk7CisgICAgICAgICAgICAgICAgaWYgKCFheE9i
amVjdCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgYXRr
X3JlbGF0aW9uX3NldF9hZGRfcmVsYXRpb25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFU
SU9OX0RFU0NSSUJFRF9CWSwgYXhPYmplY3QtPndyYXBwZXIoKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CiB9CiAKIHN0YXRpYyBncG9pbnRlciB3ZWJraXRBY2Nlc3NpYmxlUGFy
ZW50Q2xhc3MgPSAwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDU5YWFkZDEuLjE3YTg2ZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wMS0yMiAgS3J6eXN6
dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbQVRLXSBFeHBvc2Ug
YXJpYS1kZXNjcmliZWRieSB3aXRoIEFUS19SRUxBVElPTl9ERVNDUklCRURfQlkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTY4NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGluZyBoZWxw
VGV4dCBieSB1c2luZyByZWxhdGlvbiBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRB
dGsuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCk6
CisKIDIwMTQtMDEtMjEgIFNpZGRoYXJ0aCBNYXRodXIgIDxzLm1hdGh1ckBpZWVlLm9yZz4KIAog
ICAgICAgICBDaGFuZ2UgbXkgZW1haWwgYWRkcmVzcyBpbiBjb250cmlidXRvcnMuanNvbi4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
QXRrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
QXRrLmNwcAppbmRleCA5NmUzZTA3Li4wMTZmZmZkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCkBAIC04MDMsMTAg
KzgwMywzOCBAQCBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgp
CiAKIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlbHBUZXh0KCkgY29uc3QK
IHsKLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBwcm92aWRlIGEgcHJvcGVyIGltcGxlbWVudGF0
aW9uIGZvciB0aGlzIHRoYXQgZG9lcwotICAgIC8vIG5vdCBkZXBlbmQgb24gTWFjIHNwZWNpZmlj
IGNvbmNlcHRzIHN1Y2ggYXMgQVRLX1JFTEFUSU9OX0RFU0NSSUJFRF9CWSwKLSAgICAvLyBvbmNl
IGl0J3MgaW1wbGVtZW50ZWQgKHNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEyMTY4NCkuCi0gICAg
cmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisgICAgaWYgKCFBVEtf
SVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhD
aGFyYWN0ZXJzKDAsIDApOworCisgICAgQXRrUmVsYXRpb25TZXQqIHJlbGF0aW9uU2V0ID0gYXRr
X29iamVjdF9yZWZfcmVsYXRpb25fc2V0KEFUS19PQkpFQ1QobV9lbGVtZW50KSk7CisgICAgaWYg
KCFyZWxhdGlvblNldCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBBdGtSZWxhdGlv
biogcmVsYXRpb24gPSBhdGtfcmVsYXRpb25fc2V0X2dldF9yZWxhdGlvbl9ieV90eXBlKHJlbGF0
aW9uU2V0LCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZKTsKKyAgICBpZiAoIXJlbGF0aW9uKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEdQdHJBcnJheSogdGFyZ2V0TGlzdCA9IGF0
a19yZWxhdGlvbl9nZXRfdGFyZ2V0KHJlbGF0aW9uKTsKKyAgICBpZiAoIXRhcmdldExpc3QgfHwg
IXRhcmdldExpc3QtPmxlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYSGVscDogIik7CisKKyAgICBm
b3IoaW50IHRhcmdldENvdW50ID0gMDsgdGFyZ2V0Q291bnQgPCB0YXJnZXRMaXN0LT5sZW47IHRh
cmdldENvdW50KyspIHsKKyAgICAgICAgQXRrT2JqZWN0KiB0YXJnZXQgPSBzdGF0aWNfY2FzdDxB
dGtPYmplY3QqPihnX3B0cl9hcnJheV9pbmRleCh0YXJnZXRMaXN0LCB0YXJnZXRDb3VudCkpOwor
ICAgICAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBHT3du
UHRyPGdjaGFyPiB0ZXh0KGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKHRhcmdldCksIDAsIC0x
KSk7CisgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCisgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCh0ZXh0LmdldCgpKTsKKyAgICB9
CisKKyAgICBnX29iamVjdF91bnJlZihyZWxhdGlvblNldCk7CisKKyAgICByZXR1cm4gSlNTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworCiB9CiAKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp4KCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRBdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9h
dGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKaW5kZXggNWU1MDc2Yy4uYmU4OWE3MSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAgLTk2MCwx
MCArOTYwLDM3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpsYW5ndWFnZSgpCiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpoZWxwVGV4dCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFdlIG5lZWQgdG8g
cHJvdmlkZSBhIHByb3BlciBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyB0aGF0IGRvZXMKLSAgICAv
LyBub3QgZGVwZW5kIG9uIE1hYyBzcGVjaWZpYyBjb25jZXB0cyBzdWNoIGFzIEFUS19SRUxBVElP
Tl9ERVNDUklCRURfQlksCi0gICAgLy8gb25jZSBpdCdzIGltcGxlbWVudGVkIChzZWUgaHR0cDov
L3dlYmtpdC5vcmcvYi8xMjE2ODQpLgotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKDAsIDApOworICAgIGlmICghQVRLX0lTX09CSkVDVChtX2VsZW1lbnQuZ2V0KCkpKQor
ICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKworICAg
IEF0a1JlbGF0aW9uU2V0KiByZWxhdGlvblNldCA9IGF0a19vYmplY3RfcmVmX3JlbGF0aW9uX3Nl
dChBVEtfT0JKRUNUKG1fZWxlbWVudC5nZXQoKSkpOworICAgIGlmICghcmVsYXRpb25TZXQpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQXRrUmVsYXRpb24qIHJlbGF0aW9uID0gYXRr
X3JlbGF0aW9uX3NldF9nZXRfcmVsYXRpb25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFU
SU9OX0RFU0NSSUJFRF9CWSk7CisgICAgaWYgKCFyZWxhdGlvbikKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBHUHRyQXJyYXkqIHRhcmdldExpc3QgPSBhdGtfcmVsYXRpb25fZ2V0X3Rh
cmdldChyZWxhdGlvbik7CisgICAgaWYgKCF0YXJnZXRMaXN0IHx8ICF0YXJnZXRMaXN0LT5sZW4p
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKCJBWEhlbHA6ICIpOworCisgICAgZm9yKGludCB0YXJnZXRDb3Vu
dCA9IDA7IHRhcmdldENvdW50IDwgdGFyZ2V0TGlzdC0+bGVuOyB0YXJnZXRDb3VudCsrKSB7Cisg
ICAgICAgIEF0a09iamVjdCogdGFyZ2V0ID0gc3RhdGljX2Nhc3Q8QXRrT2JqZWN0Kj4oZ19wdHJf
YXJyYXlfaW5kZXgodGFyZ2V0TGlzdCwgdGFyZ2V0Q291bnQpKTsKKyAgICAgICAgaWYgKCF0YXJn
ZXQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgR093blB0cjxnY2hhcj4gdGV4dChh
dGtfdGV4dF9nZXRfdGV4dChBVEtfVEVYVCh0YXJnZXQpLCAwLCAtMSkpOworICAgICAgICBpZiAo
dGFyZ2V0Q291bnQpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiICIpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZCh0ZXh0LmdldCgpKTsKKyAgICB9CisKKyAgICBnX29iamVjdF91bnJlZihy
ZWxhdGlvblNldCk7CisKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
YnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCiBkb3VibGUgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6eCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221982</attachid>
            <date>2014-01-23 08:04:36 -0800</date>
            <delta_ts>2014-01-23 08:27:32 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a11y-aria-describedby.patch</filename>
            <type>text/plain</type>
            <size>14872</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyMDRlYjU2Li41YjllYTI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDEt
MjIgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FU
S10gRXhwb3NlIGFyaWEtZGVzY3JpYmVkYnkgd2l0aCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE2ODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTbGlnaHRs
eSBleHRlbmRlZCB0ZXN0IHNvIHRoYXQgaXQgY291bGQgdGVzdCBhcmlhLWRlc2NyaWJlZGJ5IHdp
dGggbXVsdGlwbGUgaWQgcmVmZXJlbmNlcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJp
YS1kZXNjcmliZWRieS1vbi1pbnB1dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlucHV0Lmh0bWw6CisgICAgICAgICogcGxhdGZvcm0v
ZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnM6CisKIDIwMTQtMDEtMjMgIEtyenlzenRvZiBXb2xhbnNraSAgPGsud29sYW5za2lAc2Ft
c3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gVXBkYXRlZCB0ZXN0IGV4cGVjdGF0aW9ucyBmb3Ig
ZmFpbGluZyB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlh
LWRlc2NyaWJlZGJ5LW9uLWlucHV0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvYXJpYS1kZXNjcmliZWRieS1vbi1pbnB1dC1leHBlY3RlZC50eHQKaW5kZXggMTM2ZDQ2
OS4uYzcyZTE0NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWRl
c2NyaWJlZGJ5LW9uLWlucHV0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEs
NSBAQAogVGhpcyBjb21wdXRlciB3aWxsIHNlbGYtZGVzdHJ1Y3QgaW4gICBtaW51dGVzLgotQWxs
b3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgbWludXRlcyBhZnRlciB3aGljaCB0aGUg
Y29tcHV0ZXIgd2lsbCBzZWxmLWRlc3RydWN0LgorQWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBu
dW1iZXIgb2YgbWludXRlcyBhZnRlcgord2hpY2ggdGhlIGNvbXB1dGVyIHdpbGwgc2VsZi1kZXN0
cnVjdC4KIAogVGhlIGFjY2Vzc2liaWxpdHkgZGVzY3JpcHRpb24gaXMgIkFYSGVscDogQWxsb3dz
IHlvdSB0byBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgbWludXRlcyBhZnRlciB3aGljaCB0aGUgY29t
cHV0ZXIgd2lsbCBzZWxmLWRlc3RydWN0LiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvYXJpYS1kZXNjcmliZWRieS1vbi1pbnB1dC5odG1sIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlucHV0Lmh0bWwKaW5kZXggZjZkMzI3OS4u
OTdmZDk0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWRlc2Ny
aWJlZGJ5LW9uLWlucHV0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlh
LWRlc2NyaWJlZGJ5LW9uLWlucHV0Lmh0bWwKQEAgLTUsOSArNSwxMCBAQAogPC9zY3JpcHQ+CiA8
Ym9keT4KICAgICA8c3BhbiBpZD0ibWVzc2FnZSI+VGhpcyBjb21wdXRlciB3aWxsIHNlbGYtZGVz
dHJ1Y3QgaW48L3NwYW4+Ci0gICAgPGlucHV0IGlkPSJ0aW1lIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0i
MTAiIGFyaWEtZGVzY3JpYmVkYnk9ImRlc2NyaXB0aW9uIi8+CisgICAgPGlucHV0IGlkPSJ0aW1l
IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iMTAiIGFyaWEtZGVzY3JpYmVkYnk9ImRlc2NyaXB0aW9uMSBk
ZXNjcmlwdGlvbjIiLz4KICAgICA8c3BhbiBpZD0idW5pdCI+IG1pbnV0ZXMuPC9zcGFuPgotICAg
IDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5BbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG51bWJlciBv
ZiBtaW51dGVzIGFmdGVyIHdoaWNoIHRoZSBjb21wdXRlciB3aWxsIHNlbGYtZGVzdHJ1Y3QuPC9k
aXY+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24xIj5BbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhl
IG51bWJlciBvZiBtaW51dGVzIGFmdGVyPC9kaXY+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24y
Ij53aGljaCB0aGUgY29tcHV0ZXIgd2lsbCBzZWxmLWRlc3RydWN0LjwvZGl2PgogICAgIDxkaXYg
aWQ9InJlc3VsdCI+PC9kaXY+CiAgICAgCiAgICAgPHNjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjBlZWEwMy4uM2IzNWQ3OCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE0MzksNyArMTQzOSw2IEBA
IHdlYmtpdC5vcmcvYi8xMDYzMTYgYWNjZXNzaWJpbGl0eS9yZW5kZXItY291bnRlci10ZXh0Lmh0
bWwgWyBGYWlsdXJlIF0KICMgTmV3IGFjY2Vzc2liaWxpdHkgdGVzdCBhZGRlZCBpbiByMTQ5MTU1
IGlzIGZhaWxpbmcuIEhhcyBiZWVuIG1vdmVkIHRvIHRoZSBtYWMgcG9ydCBpbiByMTU1NjAzLgog
d2Via2l0Lm9yZy9iLzExNTY1OSBhY2Nlc3NpYmlsaXR5L21ldGVyLWVsZW1lbnQuaHRtbCBbIE1p
c3NpbmcgXQogCi13ZWJraXQub3JnL2IvMTIxNjg0IGFjY2Vzc2liaWxpdHkvYXJpYS1kZXNjcmli
ZWRieS1vbi1pbnB1dC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTIxNTkzIGFjY2Vz
c2liaWxpdHkvcmFkaW8tYnV0dG9uLXRpdGxlLWxhYmVsLmh0bWwgWyBGYWlsdXJlIF0KIAogIyBO
ZXdseSBhZGRlZCB0ZXN0IGF0IHIxMzkxMTEgaXMgZmFpbGluZy4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMjgzNGJiNS4uNjdjN2I0NCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTkzOCw3ICs5MzgsNiBAQCB3
ZWJraXQub3JnL2IvNzM3NjYgY3NzMy91bmljb2RlLWJpZGktaXNvbGF0ZS1haGFyb24tZmFpbGlu
Zy5odG1sIFsgSW1hZ2VPbmx5RmFpbAogCiB3ZWJraXQub3JnL2IvNzk3NTcgZmFzdC9zZWxlY3Rv
cnMvc2VsZWN0aW9uLXdpbmRvdy1pbmFjdGl2ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAK
LXdlYmtpdC5vcmcvYi8xMjE2ODQgYWNjZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlu
cHV0Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85ODM1NyBhY2Nlc3NpYmlsaXR5L2Fy
aWEtcmVhZG9ubHkuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzk4MzU5IGFjY2Vzc2li
aWxpdHkvYXJpYS10ZXh0LXJvbGUuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzk4MzYz
IGFjY2Vzc2liaWxpdHkvY2FudmFzLWZhbGxiYWNrLWNvbnRlbnQtMi5odG1sIFsgRmFpbHVyZSBd
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggYWYxNDZmOS4uNDgxZDRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDE0LTAxLTIyICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgor
CisgICAgICAgIFtBVEtdIEV4cG9zZSBhcmlhLWRlc2NyaWJlZGJ5IHdpdGggQVRLX1JFTEFUSU9O
X0RFU0NSSUJFRF9CWQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIxNjg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRXhwb3NlZCBhcmlhLWRlc2NyaWJlZGJ5IGJ5IEFUS19SRUxBVElPTl9ERVNDUklCRURf
QlkuCisgICAgICAgIE1vdmVkIGVsZW1lbnRzRnJvbUF0dHJpYnV0IHRvIEFjY2Vzc2liaWxpdHlP
YmplY3QgdG8gaGF2ZSBjb21tb24gaW50ZXJmYWNlCisgICAgICAgIGZvciBBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdCBhbmQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIENvdmVyZWQgYnkgZXhpc3Rpbmcgb25lLgorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjplbGVtZW50c0Zyb21BdHRyaWJ1dGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGVXcmFwcGVyQXRrLmNwcDoKKyAgICAgICAgKHNldEF0a1JlbGF0aW9uU2V0RnJvbUNv
cmVPYmplY3QpOgorCiAyMDE0LTAxLTIzICBNaWhhaSBNYWVyZWFuICA8bW1hZXJlYW5AYWRvYmUu
Y29tPgogCiAgICAgICAgIFtDU1MgUmVnaW9uc10gRml4IHBvc2l0aW9uaW5nIGNvbXBvc2l0ZWQg
bGF5ZXJzIHdoZW4gdGhlIHJlZ2lvbiBoYXMgb3ZlcmZsb3c6aGlkZGVuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3Bw
CmluZGV4IDNkNjhkMjMuLmNjN2JlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC0xODg2LDMyICsx
ODg2LDYgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlB
dHRyaWJ1dGUoKSBjb25zdAogICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25Gb3JF
bGVtZW50cyhlbGVtZW50cyk7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmVs
ZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+JiBlbGVtZW50cywgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdAotewotICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5u
b2RlKCk7Ci0gICAgaWYgKCFub2RlIHx8ICFub2RlLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFRyZWVTY29wZSYgdHJlZVNjb3BlID0gbm9kZS0+dHJlZVNjb3BlKCk7
Ci0KLSAgICBTdHJpbmcgaWRMaXN0ID0gZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSkuc3RyaW5nKCk7
Ci0gICAgaWYgKGlkTGlzdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlkTGlz
dC5yZXBsYWNlKCdcbicsICcgJyk7Ci0gICAgVmVjdG9yPFN0cmluZz4gaWRWZWN0b3I7Ci0gICAg
aWRMaXN0LnNwbGl0KCcgJywgaWRWZWN0b3IpOwotCi0gICAgdW5zaWduZWQgc2l6ZSA9IGlkVmVj
dG9yLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0g
ICAgICAgIEF0b21pY1N0cmluZyBpZE5hbWUoaWRWZWN0b3JbaV0pOwotICAgICAgICBFbGVtZW50
KiBpZEVsZW1lbnQgPSB0cmVlU2NvcGUuZ2V0RWxlbWVudEJ5SWQoaWROYW1lKTsKLSAgICAgICAg
aWYgKGlkRWxlbWVudCkKLSAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZChpZEVsZW1lbnQpOwot
ICAgIH0KLX0KLQotCiB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphcmlhTGFiZWxlZEJ5
RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMpIGNvbnN0CiB7CiAgICAgZWxlbWVu
dHNGcm9tQXR0cmlidXRlKGVsZW1lbnRzLCBhcmlhX2xhYmVsbGVkYnlBdHRyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
aAppbmRleCBhZGFiM2JlLi4yOGZhZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCkBAIC0xODIsNyArMTgyLDYg
QEAgcHJvdGVjdGVkOgogICAgIFN0cmluZyBhcmlhQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkg
Y29uc3Q7CiAgICAgdm9pZCBhcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiYg
ZWxlbWVudHMpIGNvbnN0OwogICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25Gb3JF
bGVtZW50cyhWZWN0b3I8RWxlbWVudCo+ICZlbGVtZW50cykgY29uc3Q7Ci0gICAgdm9pZCBlbGVt
ZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdDsKICAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRpbmdCb3hSZWN0
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcgYXJpYURlc2NyaWJlZEJ5QXR0
cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCBlNGFjNmNkLi4yMTU3
OGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKQEAgLTIxMjEsNCArMjEyMSwyOSBAQCBib29sIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudHNGcm9tQXR0cmlidXRlKFZl
Y3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUp
IGNvbnN0Cit7CisgICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKKyAgICBpZiAoIW5vZGUg
fHwgIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVHJlZVNj
b3BlJiB0cmVlU2NvcGUgPSBub2RlLT50cmVlU2NvcGUoKTsKKworICAgIFN0cmluZyBpZExpc3Qg
PSBnZXRBdHRyaWJ1dGUoYXR0cmlidXRlKS5zdHJpbmcoKTsKKyAgICBpZiAoaWRMaXN0LmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWRMaXN0LnJlcGxhY2UoJ1xuJywgJyAnKTsK
KyAgICBWZWN0b3I8U3RyaW5nPiBpZFZlY3RvcjsKKyAgICBpZExpc3Quc3BsaXQoJyAnLCBpZFZl
Y3Rvcik7CisKKyAgICB1bnNpZ25lZCBzaXplID0gaWRWZWN0b3Iuc2l6ZSgpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgQXRvbWljU3RyaW5nIGlk
TmFtZShpZFZlY3RvcltpXSk7CisgICAgICAgIEVsZW1lbnQqIGlkRWxlbWVudCA9IHRyZWVTY29w
ZS5nZXRFbGVtZW50QnlJZChpZE5hbWUpOworICAgICAgICBpZiAoaWRFbGVtZW50KQorICAgICAg
ICAgICAgZWxlbWVudHMuYXBwZW5kKGlkRWxlbWVudCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oCmluZGV4IDk1OWZiY2EuLjE0MmQ3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC02MjcsNiAr
NjI3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGFyaWFEZXNjcmliZWRCeUF0dHJp
YnV0ZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBwbGFjZWhvbGRlclZhbHVlKCkgY29uc3Q7CiAKKyAgICB2b2lkIGVsZW1lbnRzRnJvbUF0dHJp
YnV0ZShWZWN0b3I8RWxlbWVudCo+JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworCiAg
ICAgLy8gT25seSBpZiBpc0NvbG9yV2VsbCgpCiAgICAgdmlydHVhbCB2b2lkIGNvbG9yVmFsdWUo
aW50JiByLCBpbnQmIGcsIGludCYgYikgY29uc3QgeyByID0gMDsgZyA9IDA7IGIgPSAwOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVXcmFwcGVyQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcAppbmRleCAzOTA5ZGFjLi45MzA5NGFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
V3JhcHBlckF0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCkBAIC0yNDUsNiArMjQ1LDIyIEBAIHN0YXRpYyB2
b2lkIHNldEF0a1JlbGF0aW9uU2V0RnJvbUNvcmVPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCog
Y29yZU9iamVjdCwgQXRrCiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgYWNjZXNzaWJpbGl0eU9i
amVjdCA6IGFyaWFGbG93VG9FbGVtZW50cykKICAgICAgICAgICAgIGF0a19yZWxhdGlvbl9zZXRf
YWRkX3JlbGF0aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9GTE9XU19UTywg
YWNjZXNzaWJpbGl0eU9iamVjdC0+d3JhcHBlcigpKTsKICAgICB9CisKKyAgICAvLyBDaGVja2lu
ZyBhbHNvIHRoZSBhcmlhLWRlc2NyaWJlZGJ5IHdoaWNoIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwg
aW5mb3JtYXRpb24gZm9yIHRoZSB1c2VyLgorICAgIE5vZGUqIG5vZGUgPSBjb3JlT2JqZWN0LT5u
b2RlKCk7CisgICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNIVE1MRWxlbWVudCgpKSB7CisgICAgICAg
IGlmICghdG9IVE1MRWxlbWVudChub2RlKS0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9k
ZXNjcmliZWRieUF0dHIpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcmVtb3ZlQXRrUmVsYXRp
b25CeVR5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9ERVNDUklCRURfQlkpOworICAgICAg
ICAgICAgVmVjdG9yPEVsZW1lbnQqPiBkZXNjcmliZWRCeUF0dHJpYnV0ZXM7CisgICAgICAgICAg
ICBjb3JlT2JqZWN0LT5lbGVtZW50c0Zyb21BdHRyaWJ1dGUoZGVzY3JpYmVkQnlBdHRyaWJ1dGVz
LCBIVE1MTmFtZXM6OmFyaWFfZGVzY3JpYmVkYnlBdHRyKTsKKyAgICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgZWxlbWVudCA6IGRlc2NyaWJlZEJ5QXR0cmlidXRlcykgeworICAgICAgICAgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gY29yZU9iamVjdC0+ZG9jdW1lbnQo
KS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShlbGVtZW50KTsKKyAgICAgICAgICAgICAg
ICBpZiAoIWF4T2JqZWN0KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgICAgICBhdGtfcmVsYXRpb25fc2V0X2FkZF9yZWxhdGlvbl9ieV90eXBlKHJlbGF0aW9uU2V0
LCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZLCBheE9iamVjdC0+d3JhcHBlcigpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIH0KIAogc3RhdGljIGdwb2ludGVyIHdlYmtpdEFj
Y2Vzc2libGVQYXJlbnRDbGFzcyA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggYWYxMzM3YS4uOWJhODRhMCAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAx
LTIyICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtB
VEtdIEV4cG9zZSBhcmlhLWRlc2NyaWJlZGJ5IHdpdGggQVRLX1JFTEFUSU9OX0RFU0NSSUJFRF9C
WQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNjg0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50aW5nIGhlbHBUZXh0IGJ5IHVzaW5nIHJlbGF0aW9uIEFUS19SRUxBVElPTl9ERVNDUklCRURf
QlkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dEF0ay5jcHA6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmhlbHBUZXh0KToKKwogMjAxNC0wMS0yMyAgTMOhc3psw7MgTGFuZ8OzICA8bGxhbmdvLnUtc3pl
Z2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmVtb3ZlIGEgRklYTUUgY29tbWVu
dCB0aGF0IGlzIGFscmVhZHkgZml4ZWQuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKaW5kZXggYWRjODRkYi4uODA1NWUy
NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRBdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50QXRrLmNwcApAQCAtODAzLDEwICs4MDMsMzggQEAgSlNTdHJpbmdSZWYgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UoKQogCiBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpoZWxwVGV4dCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFdlIG5lZWQgdG8g
cHJvdmlkZSBhIHByb3BlciBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyB0aGF0IGRvZXMKLSAgICAv
LyBub3QgZGVwZW5kIG9uIE1hYyBzcGVjaWZpYyBjb25jZXB0cyBzdWNoIGFzIEFUS19SRUxBVElP
Tl9ERVNDUklCRURfQlksCi0gICAgLy8gb25jZSBpdCdzIGltcGxlbWVudGVkIChzZWUgaHR0cDov
L3dlYmtpdC5vcmcvYi8xMjE2ODQpLgotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKDAsIDApOworICAgIGlmICghQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQorICAgICAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKworICAgIEF0a1Jl
bGF0aW9uU2V0KiByZWxhdGlvblNldCA9IGF0a19vYmplY3RfcmVmX3JlbGF0aW9uX3NldChBVEtf
T0JKRUNUKG1fZWxlbWVudCkpOworICAgIGlmICghcmVsYXRpb25TZXQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgQXRrUmVsYXRpb24qIHJlbGF0aW9uID0gYXRrX3JlbGF0aW9uX3Nl
dF9nZXRfcmVsYXRpb25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0RFU0NSSUJF
RF9CWSk7CisgICAgaWYgKCFyZWxhdGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBHUHRyQXJyYXkqIHRhcmdldExpc3QgPSBhdGtfcmVsYXRpb25fZ2V0X3RhcmdldChyZWxhdGlv
bik7CisgICAgaWYgKCF0YXJnZXRMaXN0IHx8ICF0YXJnZXRMaXN0LT5sZW4pCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIu
YXBwZW5kKCJBWEhlbHA6ICIpOworCisgICAgZm9yIChpbnQgdGFyZ2V0Q291bnQgPSAwOyB0YXJn
ZXRDb3VudCA8IHRhcmdldExpc3QtPmxlbjsgdGFyZ2V0Q291bnQrKykgeworICAgICAgICBBdGtP
YmplY3QqIHRhcmdldCA9IHN0YXRpY19jYXN0PEF0a09iamVjdCo+KGdfcHRyX2FycmF5X2luZGV4
KHRhcmdldExpc3QsIHRhcmdldENvdW50KSk7CisgICAgICAgIGlmICghdGFyZ2V0KQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIEdPd25QdHI8Z2NoYXI+IHRleHQoYXRrX3RleHRfZ2V0
X3RleHQoQVRLX1RFWFQodGFyZ2V0KSwgMCwgLTEpKTsKKyAgICAgICAgaWYgKCFidWlsZGVyLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgIik7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHRleHQuZ2V0KCkpOworICAgIH0KKworICAgIGdfb2JqZWN0X3VucmVmKHJlbGF0
aW9uU2V0KTsKKworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhidWls
ZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKIH0KIAogZG91YmxlIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OngoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRr
LmNwcAppbmRleCA4OGFjYTVhLi41M2YzMThmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50QXRrLmNwcApAQCAtOTYwLDEwICs5NjAsMzcgQEAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKCkKIAogSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlbHBUZXh0KCkgY29uc3QK
IHsKLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBwcm92aWRlIGEgcHJvcGVyIGltcGxlbWVudGF0
aW9uIGZvciB0aGlzIHRoYXQgZG9lcwotICAgIC8vIG5vdCBkZXBlbmQgb24gTWFjIHNwZWNpZmlj
IGNvbmNlcHRzIHN1Y2ggYXMgQVRLX1JFTEFUSU9OX0RFU0NSSUJFRF9CWSwKLSAgICAvLyBvbmNl
IGl0J3MgaW1wbGVtZW50ZWQgKHNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEyMTY4NCkuCi0gICAg
cmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisgICAgaWYgKCFBVEtf
SVNfT0JKRUNUKG1fZWxlbWVudC5nZXQoKSkpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0
ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgQXRrUmVsYXRpb25TZXQqIHJlbGF0aW9uU2V0
ID0gYXRrX29iamVjdF9yZWZfcmVsYXRpb25fc2V0KEFUS19PQkpFQ1QobV9lbGVtZW50LmdldCgp
KSk7CisgICAgaWYgKCFyZWxhdGlvblNldCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBBdGtSZWxhdGlvbiogcmVsYXRpb24gPSBhdGtfcmVsYXRpb25fc2V0X2dldF9yZWxhdGlvbl9i
eV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZKTsKKyAgICBpZiAo
IXJlbGF0aW9uKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEdQdHJBcnJheSogdGFy
Z2V0TGlzdCA9IGF0a19yZWxhdGlvbl9nZXRfdGFyZ2V0KHJlbGF0aW9uKTsKKyAgICBpZiAoIXRh
cmdldExpc3QgfHwgIXRhcmdldExpc3QtPmxlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYSGVscDog
Iik7CisKKyAgICBmb3IgKGludCB0YXJnZXRDb3VudCA9IDA7IHRhcmdldENvdW50IDwgdGFyZ2V0
TGlzdC0+bGVuOyB0YXJnZXRDb3VudCsrKSB7CisgICAgICAgIEF0a09iamVjdCogdGFyZ2V0ID0g
c3RhdGljX2Nhc3Q8QXRrT2JqZWN0Kj4oZ19wdHJfYXJyYXlfaW5kZXgodGFyZ2V0TGlzdCwgdGFy
Z2V0Q291bnQpKTsKKyAgICAgICAgaWYgKCF0YXJnZXQpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGV4dChhdGtfdGV4dF9nZXRfdGV4dChBVEtfVEVY
VCh0YXJnZXQpLCAwLCAtMSkpOworICAgICAgICBpZiAodGFyZ2V0Q291bnQpCisgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCgiICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCh0ZXh0LmdldCgp
KTsKKyAgICB9CisKKyAgICBnX29iamVjdF91bnJlZihyZWxhdGlvblNldCk7CisKKyAgICByZXR1
cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYnVpbGRlci50b1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogfQogCiBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221984</attachid>
            <date>2014-01-23 08:27:32 -0800</date>
            <delta_ts>2014-01-29 03:49:45 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a11y-aria-describedby.patch</filename>
            <type>text/plain</type>
            <size>14875</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyMDRlYjU2Li41YjllYTI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDEt
MjIgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FU
S10gRXhwb3NlIGFyaWEtZGVzY3JpYmVkYnkgd2l0aCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE2ODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTbGlnaHRs
eSBleHRlbmRlZCB0ZXN0IHNvIHRoYXQgaXQgY291bGQgdGVzdCBhcmlhLWRlc2NyaWJlZGJ5IHdp
dGggbXVsdGlwbGUgaWQgcmVmZXJlbmNlcy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJp
YS1kZXNjcmliZWRieS1vbi1pbnB1dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlucHV0Lmh0bWw6CisgICAgICAgICogcGxhdGZvcm0v
ZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnM6CisKIDIwMTQtMDEtMjMgIEtyenlzenRvZiBXb2xhbnNraSAgPGsud29sYW5za2lAc2Ft
c3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gVXBkYXRlZCB0ZXN0IGV4cGVjdGF0aW9ucyBmb3Ig
ZmFpbGluZyB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlh
LWRlc2NyaWJlZGJ5LW9uLWlucHV0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvYXJpYS1kZXNjcmliZWRieS1vbi1pbnB1dC1leHBlY3RlZC50eHQKaW5kZXggMTM2ZDQ2
OS4uYzcyZTE0NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWRl
c2NyaWJlZGJ5LW9uLWlucHV0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEs
NSBAQAogVGhpcyBjb21wdXRlciB3aWxsIHNlbGYtZGVzdHJ1Y3QgaW4gICBtaW51dGVzLgotQWxs
b3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgbWludXRlcyBhZnRlciB3aGljaCB0aGUg
Y29tcHV0ZXIgd2lsbCBzZWxmLWRlc3RydWN0LgorQWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBu
dW1iZXIgb2YgbWludXRlcyBhZnRlcgord2hpY2ggdGhlIGNvbXB1dGVyIHdpbGwgc2VsZi1kZXN0
cnVjdC4KIAogVGhlIGFjY2Vzc2liaWxpdHkgZGVzY3JpcHRpb24gaXMgIkFYSGVscDogQWxsb3dz
IHlvdSB0byBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgbWludXRlcyBhZnRlciB3aGljaCB0aGUgY29t
cHV0ZXIgd2lsbCBzZWxmLWRlc3RydWN0LiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvYXJpYS1kZXNjcmliZWRieS1vbi1pbnB1dC5odG1sIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlucHV0Lmh0bWwKaW5kZXggZjZkMzI3OS4u
OTdmZDk0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWRlc2Ny
aWJlZGJ5LW9uLWlucHV0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlh
LWRlc2NyaWJlZGJ5LW9uLWlucHV0Lmh0bWwKQEAgLTUsOSArNSwxMCBAQAogPC9zY3JpcHQ+CiA8
Ym9keT4KICAgICA8c3BhbiBpZD0ibWVzc2FnZSI+VGhpcyBjb21wdXRlciB3aWxsIHNlbGYtZGVz
dHJ1Y3QgaW48L3NwYW4+Ci0gICAgPGlucHV0IGlkPSJ0aW1lIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0i
MTAiIGFyaWEtZGVzY3JpYmVkYnk9ImRlc2NyaXB0aW9uIi8+CisgICAgPGlucHV0IGlkPSJ0aW1l
IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iMTAiIGFyaWEtZGVzY3JpYmVkYnk9ImRlc2NyaXB0aW9uMSBk
ZXNjcmlwdGlvbjIiLz4KICAgICA8c3BhbiBpZD0idW5pdCI+IG1pbnV0ZXMuPC9zcGFuPgotICAg
IDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5BbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG51bWJlciBv
ZiBtaW51dGVzIGFmdGVyIHdoaWNoIHRoZSBjb21wdXRlciB3aWxsIHNlbGYtZGVzdHJ1Y3QuPC9k
aXY+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24xIj5BbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhl
IG51bWJlciBvZiBtaW51dGVzIGFmdGVyPC9kaXY+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24y
Ij53aGljaCB0aGUgY29tcHV0ZXIgd2lsbCBzZWxmLWRlc3RydWN0LjwvZGl2PgogICAgIDxkaXYg
aWQ9InJlc3VsdCI+PC9kaXY+CiAgICAgCiAgICAgPHNjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjBlZWEwMy4uM2IzNWQ3OCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE0MzksNyArMTQzOSw2IEBA
IHdlYmtpdC5vcmcvYi8xMDYzMTYgYWNjZXNzaWJpbGl0eS9yZW5kZXItY291bnRlci10ZXh0Lmh0
bWwgWyBGYWlsdXJlIF0KICMgTmV3IGFjY2Vzc2liaWxpdHkgdGVzdCBhZGRlZCBpbiByMTQ5MTU1
IGlzIGZhaWxpbmcuIEhhcyBiZWVuIG1vdmVkIHRvIHRoZSBtYWMgcG9ydCBpbiByMTU1NjAzLgog
d2Via2l0Lm9yZy9iLzExNTY1OSBhY2Nlc3NpYmlsaXR5L21ldGVyLWVsZW1lbnQuaHRtbCBbIE1p
c3NpbmcgXQogCi13ZWJraXQub3JnL2IvMTIxNjg0IGFjY2Vzc2liaWxpdHkvYXJpYS1kZXNjcmli
ZWRieS1vbi1pbnB1dC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTIxNTkzIGFjY2Vz
c2liaWxpdHkvcmFkaW8tYnV0dG9uLXRpdGxlLWxhYmVsLmh0bWwgWyBGYWlsdXJlIF0KIAogIyBO
ZXdseSBhZGRlZCB0ZXN0IGF0IHIxMzkxMTEgaXMgZmFpbGluZy4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMjgzNGJiNS4uNjdjN2I0NCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTkzOCw3ICs5MzgsNiBAQCB3
ZWJraXQub3JnL2IvNzM3NjYgY3NzMy91bmljb2RlLWJpZGktaXNvbGF0ZS1haGFyb24tZmFpbGlu
Zy5odG1sIFsgSW1hZ2VPbmx5RmFpbAogCiB3ZWJraXQub3JnL2IvNzk3NTcgZmFzdC9zZWxlY3Rv
cnMvc2VsZWN0aW9uLXdpbmRvdy1pbmFjdGl2ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAK
LXdlYmtpdC5vcmcvYi8xMjE2ODQgYWNjZXNzaWJpbGl0eS9hcmlhLWRlc2NyaWJlZGJ5LW9uLWlu
cHV0Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85ODM1NyBhY2Nlc3NpYmlsaXR5L2Fy
aWEtcmVhZG9ubHkuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzk4MzU5IGFjY2Vzc2li
aWxpdHkvYXJpYS10ZXh0LXJvbGUuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzk4MzYz
IGFjY2Vzc2liaWxpdHkvY2FudmFzLWZhbGxiYWNrLWNvbnRlbnQtMi5odG1sIFsgRmFpbHVyZSBd
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggYWYxNDZmOS4uNDgxZDRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDE0LTAxLTIyICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgor
CisgICAgICAgIFtBVEtdIEV4cG9zZSBhcmlhLWRlc2NyaWJlZGJ5IHdpdGggQVRLX1JFTEFUSU9O
X0RFU0NSSUJFRF9CWQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIxNjg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRXhwb3NlZCBhcmlhLWRlc2NyaWJlZGJ5IGJ5IEFUS19SRUxBVElPTl9ERVNDUklCRURf
QlkuCisgICAgICAgIE1vdmVkIGVsZW1lbnRzRnJvbUF0dHJpYnV0IHRvIEFjY2Vzc2liaWxpdHlP
YmplY3QgdG8gaGF2ZSBjb21tb24gaW50ZXJmYWNlCisgICAgICAgIGZvciBBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdCBhbmQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIENvdmVyZWQgYnkgZXhpc3Rpbmcgb25lLgorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjplbGVtZW50c0Zyb21BdHRyaWJ1dGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGVXcmFwcGVyQXRrLmNwcDoKKyAgICAgICAgKHNldEF0a1JlbGF0aW9uU2V0RnJvbUNv
cmVPYmplY3QpOgorCiAyMDE0LTAxLTIzICBNaWhhaSBNYWVyZWFuICA8bW1hZXJlYW5AYWRvYmUu
Y29tPgogCiAgICAgICAgIFtDU1MgUmVnaW9uc10gRml4IHBvc2l0aW9uaW5nIGNvbXBvc2l0ZWQg
bGF5ZXJzIHdoZW4gdGhlIHJlZ2lvbiBoYXMgb3ZlcmZsb3c6aGlkZGVuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3Bw
CmluZGV4IDNkNjhkMjMuLmNjN2JlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC0xODg2LDMyICsx
ODg2LDYgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlB
dHRyaWJ1dGUoKSBjb25zdAogICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25Gb3JF
bGVtZW50cyhlbGVtZW50cyk7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmVs
ZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+JiBlbGVtZW50cywgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdAotewotICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5u
b2RlKCk7Ci0gICAgaWYgKCFub2RlIHx8ICFub2RlLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFRyZWVTY29wZSYgdHJlZVNjb3BlID0gbm9kZS0+dHJlZVNjb3BlKCk7
Ci0KLSAgICBTdHJpbmcgaWRMaXN0ID0gZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSkuc3RyaW5nKCk7
Ci0gICAgaWYgKGlkTGlzdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlkTGlz
dC5yZXBsYWNlKCdcbicsICcgJyk7Ci0gICAgVmVjdG9yPFN0cmluZz4gaWRWZWN0b3I7Ci0gICAg
aWRMaXN0LnNwbGl0KCcgJywgaWRWZWN0b3IpOwotCi0gICAgdW5zaWduZWQgc2l6ZSA9IGlkVmVj
dG9yLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0g
ICAgICAgIEF0b21pY1N0cmluZyBpZE5hbWUoaWRWZWN0b3JbaV0pOwotICAgICAgICBFbGVtZW50
KiBpZEVsZW1lbnQgPSB0cmVlU2NvcGUuZ2V0RWxlbWVudEJ5SWQoaWROYW1lKTsKLSAgICAgICAg
aWYgKGlkRWxlbWVudCkKLSAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZChpZEVsZW1lbnQpOwot
ICAgIH0KLX0KLQotCiB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphcmlhTGFiZWxlZEJ5
RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMpIGNvbnN0CiB7CiAgICAgZWxlbWVu
dHNGcm9tQXR0cmlidXRlKGVsZW1lbnRzLCBhcmlhX2xhYmVsbGVkYnlBdHRyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
aAppbmRleCBhZGFiM2JlLi4yOGZhZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCkBAIC0xODIsNyArMTgyLDYg
QEAgcHJvdGVjdGVkOgogICAgIFN0cmluZyBhcmlhQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkg
Y29uc3Q7CiAgICAgdm9pZCBhcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiYg
ZWxlbWVudHMpIGNvbnN0OwogICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25Gb3JF
bGVtZW50cyhWZWN0b3I8RWxlbWVudCo+ICZlbGVtZW50cykgY29uc3Q7Ci0gICAgdm9pZCBlbGVt
ZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdDsKICAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRpbmdCb3hSZWN0
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcgYXJpYURlc2NyaWJlZEJ5QXR0
cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCBlNGFjNmNkLi4yMTU3
OGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKQEAgLTIxMjEsNCArMjEyMSwyOSBAQCBib29sIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudHNGcm9tQXR0cmlidXRlKFZl
Y3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUp
IGNvbnN0Cit7CisgICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKKyAgICBpZiAoIW5vZGUg
fHwgIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVHJlZVNj
b3BlJiB0cmVlU2NvcGUgPSBub2RlLT50cmVlU2NvcGUoKTsKKworICAgIFN0cmluZyBpZExpc3Qg
PSBnZXRBdHRyaWJ1dGUoYXR0cmlidXRlKS5zdHJpbmcoKTsKKyAgICBpZiAoaWRMaXN0LmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWRMaXN0LnJlcGxhY2UoJ1xuJywgJyAnKTsK
KyAgICBWZWN0b3I8U3RyaW5nPiBpZFZlY3RvcjsKKyAgICBpZExpc3Quc3BsaXQoJyAnLCBpZFZl
Y3Rvcik7CisKKyAgICB1bnNpZ25lZCBzaXplID0gaWRWZWN0b3Iuc2l6ZSgpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgQXRvbWljU3RyaW5nIGlk
TmFtZShpZFZlY3RvcltpXSk7CisgICAgICAgIEVsZW1lbnQqIGlkRWxlbWVudCA9IHRyZWVTY29w
ZS5nZXRFbGVtZW50QnlJZChpZE5hbWUpOworICAgICAgICBpZiAoaWRFbGVtZW50KQorICAgICAg
ICAgICAgZWxlbWVudHMuYXBwZW5kKGlkRWxlbWVudCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oCmluZGV4IDk1OWZiY2EuLjE0MmQ3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC02MjcsNiAr
NjI3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGFyaWFEZXNjcmliZWRCeUF0dHJp
YnV0ZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBwbGFjZWhvbGRlclZhbHVlKCkgY29uc3Q7CiAKKyAgICB2b2lkIGVsZW1lbnRzRnJvbUF0dHJp
YnV0ZShWZWN0b3I8RWxlbWVudCo+JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworCiAg
ICAgLy8gT25seSBpZiBpc0NvbG9yV2VsbCgpCiAgICAgdmlydHVhbCB2b2lkIGNvbG9yVmFsdWUo
aW50JiByLCBpbnQmIGcsIGludCYgYikgY29uc3QgeyByID0gMDsgZyA9IDA7IGIgPSAwOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVXcmFwcGVyQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcAppbmRleCAzOTA5ZGFjLi45MzA5NGFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
V3JhcHBlckF0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCkBAIC0yNDUsNiArMjQ1LDIyIEBAIHN0YXRpYyB2
b2lkIHNldEF0a1JlbGF0aW9uU2V0RnJvbUNvcmVPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCog
Y29yZU9iamVjdCwgQXRrCiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgYWNjZXNzaWJpbGl0eU9i
amVjdCA6IGFyaWFGbG93VG9FbGVtZW50cykKICAgICAgICAgICAgIGF0a19yZWxhdGlvbl9zZXRf
YWRkX3JlbGF0aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9GTE9XU19UTywg
YWNjZXNzaWJpbGl0eU9iamVjdC0+d3JhcHBlcigpKTsKICAgICB9CisKKyAgICAvLyBDaGVja2lu
ZyBhbHNvIHRoZSBhcmlhLWRlc2NyaWJlZGJ5IHdoaWNoIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwg
aW5mb3JtYXRpb24gZm9yIHRoZSB1c2VyLgorICAgIE5vZGUqIG5vZGUgPSBjb3JlT2JqZWN0LT5u
b2RlKCk7CisgICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNIVE1MRWxlbWVudCgpKSB7CisgICAgICAg
IGlmICghdG9IVE1MRWxlbWVudChub2RlKS0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9k
ZXNjcmliZWRieUF0dHIpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcmVtb3ZlQXRrUmVsYXRp
b25CeVR5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9ERVNDUklCRURfQlkpOworICAgICAg
ICAgICAgVmVjdG9yPEVsZW1lbnQqPiBkZXNjcmliZWRCeUF0dHJpYnV0ZXM7CisgICAgICAgICAg
ICBjb3JlT2JqZWN0LT5lbGVtZW50c0Zyb21BdHRyaWJ1dGUoZGVzY3JpYmVkQnlBdHRyaWJ1dGVz
LCBIVE1MTmFtZXM6OmFyaWFfZGVzY3JpYmVkYnlBdHRyKTsKKyAgICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgZWxlbWVudCA6IGRlc2NyaWJlZEJ5QXR0cmlidXRlcykgeworICAgICAgICAgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gY29yZU9iamVjdC0+ZG9jdW1lbnQo
KS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShlbGVtZW50KTsKKyAgICAgICAgICAgICAg
ICBpZiAoIWF4T2JqZWN0KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgICAgICBhdGtfcmVsYXRpb25fc2V0X2FkZF9yZWxhdGlvbl9ieV90eXBlKHJlbGF0aW9uU2V0
LCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZLCBheE9iamVjdC0+d3JhcHBlcigpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIH0KIAogc3RhdGljIGdwb2ludGVyIHdlYmtpdEFj
Y2Vzc2libGVQYXJlbnRDbGFzcyA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggYWYxMzM3YS4uOWJhODRhMCAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAx
LTIyICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtB
VEtdIEV4cG9zZSBhcmlhLWRlc2NyaWJlZGJ5IHdpdGggQVRLX1JFTEFUSU9OX0RFU0NSSUJFRF9C
WQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNjg0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50aW5nIGhlbHBUZXh0IGJ5IHVzaW5nIHJlbGF0aW9uIEFUS19SRUxBVElPTl9ERVNDUklCRURf
QlkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dEF0ay5jcHA6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmhlbHBUZXh0KToKKwogMjAxNC0wMS0yMyAgTMOhc3psw7MgTGFuZ8OzICA8bGxhbmdvLnUtc3pl
Z2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmVtb3ZlIGEgRklYTUUgY29tbWVu
dCB0aGF0IGlzIGFscmVhZHkgZml4ZWQuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKaW5kZXggYWRjODRkYi4uOGMzMWMz
YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRBdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50QXRrLmNwcApAQCAtODAzLDEwICs4MDMsMzggQEAgSlNTdHJpbmdSZWYgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UoKQogCiBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpoZWxwVGV4dCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFdlIG5lZWQgdG8g
cHJvdmlkZSBhIHByb3BlciBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyB0aGF0IGRvZXMKLSAgICAv
LyBub3QgZGVwZW5kIG9uIE1hYyBzcGVjaWZpYyBjb25jZXB0cyBzdWNoIGFzIEFUS19SRUxBVElP
Tl9ERVNDUklCRURfQlksCi0gICAgLy8gb25jZSBpdCdzIGltcGxlbWVudGVkIChzZWUgaHR0cDov
L3dlYmtpdC5vcmcvYi8xMjE2ODQpLgotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKDAsIDApOworICAgIGlmICghQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQorICAgICAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKworICAgIEF0a1Jl
bGF0aW9uU2V0KiByZWxhdGlvblNldCA9IGF0a19vYmplY3RfcmVmX3JlbGF0aW9uX3NldChBVEtf
T0JKRUNUKG1fZWxlbWVudCkpOworICAgIGlmICghcmVsYXRpb25TZXQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgQXRrUmVsYXRpb24qIHJlbGF0aW9uID0gYXRrX3JlbGF0aW9uX3Nl
dF9nZXRfcmVsYXRpb25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0RFU0NSSUJF
RF9CWSk7CisgICAgaWYgKCFyZWxhdGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBHUHRyQXJyYXkqIHRhcmdldExpc3QgPSBhdGtfcmVsYXRpb25fZ2V0X3RhcmdldChyZWxhdGlv
bik7CisgICAgaWYgKCF0YXJnZXRMaXN0IHx8ICF0YXJnZXRMaXN0LT5sZW4pCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIu
YXBwZW5kKCJBWEhlbHA6ICIpOworCisgICAgZm9yIChpbnQgdGFyZ2V0Q291bnQgPSAwOyB0YXJn
ZXRDb3VudCA8IHRhcmdldExpc3QtPmxlbjsgdGFyZ2V0Q291bnQrKykgeworICAgICAgICBBdGtP
YmplY3QqIHRhcmdldCA9IHN0YXRpY19jYXN0PEF0a09iamVjdCo+KGdfcHRyX2FycmF5X2luZGV4
KHRhcmdldExpc3QsIHRhcmdldENvdW50KSk7CisgICAgICAgIGlmICghdGFyZ2V0KQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRleHQoYXRrX3RleHRf
Z2V0X3RleHQoQVRLX1RFWFQodGFyZ2V0KSwgMCwgLTEpKTsKKyAgICAgICAgaWYgKCFidWlsZGVy
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgIik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKHRleHQuZ2V0KCkpOworICAgIH0KKworICAgIGdfb2JqZWN0X3VucmVmKHJl
bGF0aW9uU2V0KTsKKworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhi
dWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKIH0KIAogZG91YmxlIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OngoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
QXRrLmNwcAppbmRleCA4OGFjYTVhLi41M2YzMThmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAtOTYwLDEwICs5NjAsMzcgQEAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKCkKIAogSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlbHBUZXh0KCkgY29u
c3QKIHsKLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBwcm92aWRlIGEgcHJvcGVyIGltcGxlbWVu
dGF0aW9uIGZvciB0aGlzIHRoYXQgZG9lcwotICAgIC8vIG5vdCBkZXBlbmQgb24gTWFjIHNwZWNp
ZmljIGNvbmNlcHRzIHN1Y2ggYXMgQVRLX1JFTEFUSU9OX0RFU0NSSUJFRF9CWSwKLSAgICAvLyBv
bmNlIGl0J3MgaW1wbGVtZW50ZWQgKHNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEyMTY4NCkuCi0g
ICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisgICAgaWYgKCFB
VEtfSVNfT0JKRUNUKG1fZWxlbWVudC5nZXQoKSkpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0Ny
ZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgQXRrUmVsYXRpb25TZXQqIHJlbGF0aW9u
U2V0ID0gYXRrX29iamVjdF9yZWZfcmVsYXRpb25fc2V0KEFUS19PQkpFQ1QobV9lbGVtZW50Lmdl
dCgpKSk7CisgICAgaWYgKCFyZWxhdGlvblNldCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBBdGtSZWxhdGlvbiogcmVsYXRpb24gPSBhdGtfcmVsYXRpb25fc2V0X2dldF9yZWxhdGlv
bl9ieV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZKTsKKyAgICBp
ZiAoIXJlbGF0aW9uKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEdQdHJBcnJheSog
dGFyZ2V0TGlzdCA9IGF0a19yZWxhdGlvbl9nZXRfdGFyZ2V0KHJlbGF0aW9uKTsKKyAgICBpZiAo
IXRhcmdldExpc3QgfHwgIXRhcmdldExpc3QtPmxlbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoIkFYSGVs
cDogIik7CisKKyAgICBmb3IgKGludCB0YXJnZXRDb3VudCA9IDA7IHRhcmdldENvdW50IDwgdGFy
Z2V0TGlzdC0+bGVuOyB0YXJnZXRDb3VudCsrKSB7CisgICAgICAgIEF0a09iamVjdCogdGFyZ2V0
ID0gc3RhdGljX2Nhc3Q8QXRrT2JqZWN0Kj4oZ19wdHJfYXJyYXlfaW5kZXgodGFyZ2V0TGlzdCwg
dGFyZ2V0Q291bnQpKTsKKyAgICAgICAgaWYgKCF0YXJnZXQpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGV4dChhdGtfdGV4dF9nZXRfdGV4dChBVEtf
VEVYVCh0YXJnZXQpLCAwLCAtMSkpOworICAgICAgICBpZiAodGFyZ2V0Q291bnQpCisgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgiICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCh0ZXh0Lmdl
dCgpKTsKKyAgICB9CisKKyAgICBnX29iamVjdF91bnJlZihyZWxhdGlvblNldCk7CisKKyAgICBy
ZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYnVpbGRlci50b1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwogfQogCiBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222564</attachid>
            <date>2014-01-29 03:49:45 -0800</date>
            <delta_ts>2014-01-29 04:00:45 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a11y-aria-describedby.patch</filename>
            <type>text/plain</type>
            <size>17329</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjZTJlNGQwMy4uZTFiN2I4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAx
LTI5ICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtB
VEtdIEV4cG9zZSBhcmlhLWRlc2NyaWJlZGJ5IHdpdGggQVRLX1JFTEFUSU9OX0RFU0NSSUJFRF9C
WQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNjg0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2xpZ2h0
bHkgZXh0ZW5kZWQgdGVzdCBzbyB0aGF0IGl0IGNvdWxkIHRlc3QgYXJpYS1kZXNjcmliZWRieSB3
aXRoIG11bHRpcGxlIGlkIHJlZmVyZW5jZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2Fy
aWEtZGVzY3JpYmVkYnktb24taW5wdXQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvYXJpYS1kZXNjcmliZWRieS1vbi1pbnB1dC5odG1sOgorICAgICAgICAqIHBsYXRmb3Jt
L2VmbC9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0
YXRpb25zOgorCiAyMDE0LTAxLTI4ICBKaW53b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5n
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEVGTCBnYXJkZW5pbmcgYWZ0ZXIgcjE2Mjk3Mi4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1kZXNjcmliZWRieS1v
bi1pbnB1dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVz
Y3JpYmVkYnktb24taW5wdXQtZXhwZWN0ZWQudHh0CmluZGV4IDEzNmQ0NjkuLmM3MmUxNDYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1kZXNjcmliZWRieS1vbi1p
bnB1dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWRl
c2NyaWJlZGJ5LW9uLWlucHV0LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDUgQEAKIFRoaXMgY29t
cHV0ZXIgd2lsbCBzZWxmLWRlc3RydWN0IGluICAgbWludXRlcy4KLUFsbG93cyB5b3UgdG8gc3Bl
Y2lmeSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgYWZ0ZXIgd2hpY2ggdGhlIGNvbXB1dGVyIHdpbGwg
c2VsZi1kZXN0cnVjdC4KK0FsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIG1pbnV0
ZXMgYWZ0ZXIKK3doaWNoIHRoZSBjb21wdXRlciB3aWxsIHNlbGYtZGVzdHJ1Y3QuCiAKIFRoZSBh
Y2Nlc3NpYmlsaXR5IGRlc2NyaXB0aW9uIGlzICJBWEhlbHA6IEFsbG93cyB5b3UgdG8gc3BlY2lm
eSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgYWZ0ZXIgd2hpY2ggdGhlIGNvbXB1dGVyIHdpbGwgc2Vs
Zi1kZXN0cnVjdC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEt
ZGVzY3JpYmVkYnktb24taW5wdXQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJp
YS1kZXNjcmliZWRieS1vbi1pbnB1dC5odG1sCmluZGV4IGY2ZDMyNzkuLjk3ZmQ5NGEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1kZXNjcmliZWRieS1vbi1pbnB1
dC5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1kZXNjcmliZWRieS1v
bi1pbnB1dC5odG1sCkBAIC01LDkgKzUsMTAgQEAKIDwvc2NyaXB0PgogPGJvZHk+CiAgICAgPHNw
YW4gaWQ9Im1lc3NhZ2UiPlRoaXMgY29tcHV0ZXIgd2lsbCBzZWxmLWRlc3RydWN0IGluPC9zcGFu
PgotICAgIDxpbnB1dCBpZD0idGltZSIgdHlwZT0idGV4dCIgdmFsdWU9IjEwIiBhcmlhLWRlc2Ny
aWJlZGJ5PSJkZXNjcmlwdGlvbiIvPgorICAgIDxpbnB1dCBpZD0idGltZSIgdHlwZT0idGV4dCIg
dmFsdWU9IjEwIiBhcmlhLWRlc2NyaWJlZGJ5PSJkZXNjcmlwdGlvbjEgZGVzY3JpcHRpb24yIi8+
CiAgICAgPHNwYW4gaWQ9InVuaXQiPiBtaW51dGVzLjwvc3Bhbj4KLSAgICA8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+QWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgbWludXRlcyBhZnRl
ciB3aGljaCB0aGUgY29tcHV0ZXIgd2lsbCBzZWxmLWRlc3RydWN0LjwvZGl2PgorICAgIDxkaXYg
aWQ9ImRlc2NyaXB0aW9uMSI+QWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgbWlu
dXRlcyBhZnRlcjwvZGl2PgorICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uMiI+d2hpY2ggdGhlIGNv
bXB1dGVyIHdpbGwgc2VsZi1kZXN0cnVjdC48L2Rpdj4KICAgICA8ZGl2IGlkPSJyZXN1bHQiPjwv
ZGl2PgogICAgIAogICAgIDxzY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDYxMDg4ZTQuLmQ3NDRjZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNDMzLDcgKzE0MzMsNiBAQCB3ZWJraXQub3JnL2Iv
MTA2MzE2IGFjY2Vzc2liaWxpdHkvcmVuZGVyLWNvdW50ZXItdGV4dC5odG1sIFsgRmFpbHVyZSBd
CiAjIE5ldyBhY2Nlc3NpYmlsaXR5IHRlc3QgYWRkZWQgaW4gcjE0OTE1NSBpcyBmYWlsaW5nLiBI
YXMgYmVlbiBtb3ZlZCB0byB0aGUgbWFjIHBvcnQgaW4gcjE1NTYwMy4KIHdlYmtpdC5vcmcvYi8x
MTU2NTkgYWNjZXNzaWJpbGl0eS9tZXRlci1lbGVtZW50Lmh0bWwgWyBNaXNzaW5nIF0KIAotd2Vi
a2l0Lm9yZy9iLzEyMTY4NCBhY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQu
aHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEyMTU5MyBhY2Nlc3NpYmlsaXR5L3JhZGlv
LWJ1dHRvbi10aXRsZS1sYWJlbC5odG1sIFsgRmFpbHVyZSBdCiAKICMgTmV3bHkgYWRkZWQgdGVz
dCBhdCByMTM5MTExIGlzIGZhaWxpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDc0MWYxNDguLjU5MzAzMTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC05NDksNyArOTQ5LDYgQEAgd2Via2l0Lm9yZy9iLzcz
NzY2IGNzczMvdW5pY29kZS1iaWRpLWlzb2xhdGUtYWhhcm9uLWZhaWxpbmcuaHRtbCBbIEltYWdl
T25seUZhaWwKIAogd2Via2l0Lm9yZy9iLzc5NzU3IGZhc3Qvc2VsZWN0b3JzL3NlbGVjdGlvbi13
aW5kb3ctaW5hY3RpdmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi13ZWJraXQub3JnL2Iv
MTIxNjg0IGFjY2Vzc2liaWxpdHkvYXJpYS1kZXNjcmliZWRieS1vbi1pbnB1dC5odG1sIFsgRmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvOTgzNTcgYWNjZXNzaWJpbGl0eS9hcmlhLXJlYWRvbmx5Lmh0
bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85ODM1OSBhY2Nlc3NpYmlsaXR5L2FyaWEtdGV4
dC1yb2xlLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85ODM2MyBhY2Nlc3NpYmlsaXR5
L2NhbnZhcy1mYWxsYmFjay1jb250ZW50LTIuaHRtbCBbIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGM3NmMyZjQuLmZiYjZlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxNC0wMS0y
OSAgS3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbQVRL
XSBFeHBvc2UgYXJpYS1kZXNjcmliZWRieSB3aXRoIEFUS19SRUxBVElPTl9ERVNDUklCRURfQlkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTY4NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZWQg
YXJpYS1kZXNjcmliZWRieSBieSBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZLgorICAgICAgICBN
b3ZlZCBlbGVtZW50c0Zyb21BdHRyaWJ1dCB0byBBY2Nlc3NpYmlsaXR5T2JqZWN0IHRvIGhhdmUg
Y29tbW9uIGludGVyZmFjZQorICAgICAgICBmb3IgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QgYW5k
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuIEltcGxlbWVudGVkCisgICAgICAgIHN1cHBvcnRz
QVJJQURlc2NyaWJlZEJ5IGFuZCBhcmlhRGVzY3JpYmVkQnlFbGVtZW50cyB0byBiZXR0ZXIgZGVh
bCB3aXRoIGFyaWEtZGVzY3JpYmVkYnkgYXR0cmlidXRlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gQ292ZXJlZCBieSBleGlzdGVkIG9uZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxl
bWVudHNGcm9tQXR0cmlidXRlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBv
cnRzQVJJQURlc2NyaWJlZEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6c3VwcG9ydHNBUklBRGVzY3JpYmVkQnkpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYURlc2NyaWJlZEJ5RWxlbWVudHMp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNw
cDoKKyAgICAgICAgKHNldEF0a1JlbGF0aW9uU2V0RnJvbUNvcmVPYmplY3QpOgorCiAyMDE0LTAx
LTI5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbmFtZSBu
b3RpZnlSZW5kZXJlck9mU2VsZWN0aW9uQ2hhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCmluZGV4IGRmM2Fi
ODcuLjg5NjlkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC0xODkyLDMyICsxODkyLDYgQEAgU3Ry
aW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBj
b25zdAogICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25Gb3JFbGVtZW50cyhlbGVt
ZW50cyk7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmVsZW1lbnRzRnJvbUF0
dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+JiBlbGVtZW50cywgY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlKSBjb25zdAotewotICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7Ci0gICAg
aWYgKCFub2RlIHx8ICFub2RlLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFRyZWVTY29wZSYgdHJlZVNjb3BlID0gbm9kZS0+dHJlZVNjb3BlKCk7Ci0KLSAgICBTdHJp
bmcgaWRMaXN0ID0gZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSkuc3RyaW5nKCk7Ci0gICAgaWYgKGlk
TGlzdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlkTGlzdC5yZXBsYWNlKCdc
bicsICcgJyk7Ci0gICAgVmVjdG9yPFN0cmluZz4gaWRWZWN0b3I7Ci0gICAgaWRMaXN0LnNwbGl0
KCcgJywgaWRWZWN0b3IpOwotCi0gICAgdW5zaWduZWQgc2l6ZSA9IGlkVmVjdG9yLnNpemUoKTsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIEF0b21p
Y1N0cmluZyBpZE5hbWUoaWRWZWN0b3JbaV0pOwotICAgICAgICBFbGVtZW50KiBpZEVsZW1lbnQg
PSB0cmVlU2NvcGUuZ2V0RWxlbWVudEJ5SWQoaWROYW1lKTsKLSAgICAgICAgaWYgKGlkRWxlbWVu
dCkKLSAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZChpZEVsZW1lbnQpOwotICAgIH0KLX0KLQot
CiB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVj
dG9yPEVsZW1lbnQqPiYgZWxlbWVudHMpIGNvbnN0CiB7CiAgICAgZWxlbWVudHNGcm9tQXR0cmli
dXRlKGVsZW1lbnRzLCBhcmlhX2xhYmVsbGVkYnlBdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAppbmRleCBhZGFi
M2JlLi4yOGZhZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCkBAIC0xODIsNyArMTgyLDYgQEAgcHJvdGVjdGVk
OgogICAgIFN0cmluZyBhcmlhQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAg
dm9pZCBhcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMpIGNv
bnN0OwogICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25Gb3JFbGVtZW50cyhWZWN0
b3I8RWxlbWVudCo+ICZlbGVtZW50cykgY29uc3Q7Ci0gICAgdm9pZCBlbGVtZW50c0Zyb21BdHRy
aWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBj
b25zdDsKICAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRpbmdCb3hSZWN0KCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcgYXJpYURlc2NyaWJlZEJ5QXR0cmlidXRlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA4ZTZkMzk1Li4yZmRkNDE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAKQEAgLTIxMjMsNCArMjEyMywyNiBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQg
QWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudHNGcm9tQXR0cmlidXRlKFZlY3RvcjxFbGVtZW50
Kj4mIGVsZW1lbnRzLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0Cit7Cisg
ICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKKyAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlz
RWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVHJlZVNjb3BlJiB0cmVlU2Nv
cGUgPSBub2RlLT50cmVlU2NvcGUoKTsKKworICAgIFN0cmluZyBpZExpc3QgPSBnZXRBdHRyaWJ1
dGUoYXR0cmlidXRlKS5zdHJpbmcoKTsKKyAgICBpZiAoaWRMaXN0LmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWRMaXN0LnJlcGxhY2UoJ1xuJywgJyAnKTsKKyAgICBWZWN0b3I8
U3RyaW5nPiBpZFZlY3RvcjsKKyAgICBpZExpc3Quc3BsaXQoJyAnLCBpZFZlY3Rvcik7CisKKyAg
ICBmb3IgKGF1dG8gaWROYW1lIDogaWRWZWN0b3IpIHsKKyAgICAgICAgaWYgKEVsZW1lbnQqIGlk
RWxlbWVudCA9IHRyZWVTY29wZS5nZXRFbGVtZW50QnlJZChpZE5hbWUpKQorICAgICAgICAgICAg
ZWxlbWVudHMuYXBwZW5kKGlkRWxlbWVudCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oCmluZGV4IDk1OWZiY2EuLjM5MGFlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC01NTMsNiArNTUzLDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhcmlhT3duc0VsZW1lbnRzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FS
SUFGbG93VG8oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBhcmlh
Rmxvd1RvRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgeyB9Cisg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzQVJJQURlc2NyaWJlZEJ5KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgeyB9CiAgICAgdmlydHVhbCBib29sIGFyaWFI
YXNQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGFyaWFQ
cmVzc2VkSXNQcmVzZW50KCkgY29uc3Q7CiAgICAgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25z
dDsKQEAgLTYyNyw2ICs2MjksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgYXJpYURl
c2NyaWJlZEJ5QXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdDsKIAorICAgIHZvaWQgZWxl
bWVudHNGcm9tQXR0cmlidXRlKFZlY3RvcjxFbGVtZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROYW1l
JikgY29uc3Q7CisKICAgICAvLyBPbmx5IGlmIGlzQ29sb3JXZWxsKCkKICAgICB2aXJ0dWFsIHZv
aWQgY29sb3JWYWx1ZShpbnQmIHIsIGludCYgZywgaW50JiBiKSBjb25zdCB7IHIgPSAwOyBnID0g
MDsgYiA9IDA7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggNjBkMDg5OS4uOTU4YjM2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xMDI4LDcgKzEwMjgsMjQgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhRmxvd1RvRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJgogICAgIH0KICAgICAgICAgCiB9Ci0gICAgCisKK2Jvb2wgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6c3VwcG9ydHNBUklBRGVzY3JpYmVkQnkoKSBjb25zdAoreworICAgIHJl
dHVybiAhZ2V0QXR0cmlidXRlKGFyaWFfZGVzY3JpYmVkYnlBdHRyKS5pc0VtcHR5KCk7Cit9CisK
K3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYURlc2NyaWJlZEJ5RWxlbWVudHMo
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBhcmlhRGVzY3JpYmVkQnkpIGNvbnN0Cit7Cisg
ICAgVmVjdG9yPEVsZW1lbnQqPiBlbGVtZW50czsKKyAgICBlbGVtZW50c0Zyb21BdHRyaWJ1dGUo
ZWxlbWVudHMsIGFyaWFfZGVzY3JpYmVkYnlBdHRyKTsKKworICAgIEFYT2JqZWN0Q2FjaGUqIGNh
Y2hlID0gYXhPYmplY3RDYWNoZSgpOworICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudDogZWxl
bWVudHMpIHsKKyAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGRlc2NyaWJlZEJ5RWxl
bWVudCA9IGNhY2hlLT5nZXRPckNyZWF0ZShlbGVtZW50KSkKKyAgICAgICAgICAgIGFyaWFEZXNj
cmliZWRCeS5hcHBlbmQoZGVzY3JpYmVkQnlFbGVtZW50KTsKKyAgICB9Cit9CisgCiBib29sIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN1cHBvcnRzQVJJQURyb3BwaW5nKCkgY29uc3QgCiB7
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBkcm9wRWZmZWN0ID0gZ2V0QXR0cmlidXRlKGFyaWFf
ZHJvcGVmZmVjdEF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAppbmRleCAwYjAyMGZjLi4zOTAyZmI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuaApAQCAtMTgwLDYgKzE4MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRp
b25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFG
bG93VG8oKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgYXJpYUZsb3dUb0VsZW1l
bnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFEZXNjcmliZWRCeSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBhcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgYXJpYUhhc1BvcHVw
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBp
bmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcAppbmRleCAz
OTA5ZGFjLi5lY2U1OWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCkBAIC0yNDUs
NiArMjQ1LDE1IEBAIHN0YXRpYyB2b2lkIHNldEF0a1JlbGF0aW9uU2V0RnJvbUNvcmVPYmplY3Qo
QWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQXRrCiAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgYWNjZXNzaWJpbGl0eU9iamVjdCA6IGFyaWFGbG93VG9FbGVtZW50cykKICAgICAgICAg
ICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFU
S19SRUxBVElPTl9GTE9XU19UTywgYWNjZXNzaWJpbGl0eU9iamVjdC0+d3JhcHBlcigpKTsKICAg
ICB9CisKKyAgICAvLyBDaGVjayB3aGV0aGVyIG9iamVjdCBzdXBwb3J0cyBhcmlhLWRlc2NyaWJl
ZGJ5LiBJdCBwcm92aWRlcyBhbiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciB0aGUgdXNlci4K
KyAgICBpZiAoY29yZU9iamVjdC0+c3VwcG9ydHNBUklBRGVzY3JpYmVkQnkoKSkgeworICAgICAg
ICByZW1vdmVBdGtSZWxhdGlvbkJ5VHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0RFU0NS
SUJFRF9CWSk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBhcmlhRGVzY3JpYmVkQnlFbGVtZW50czsKKyAgICAgICAgY29yZU9iamVjdC0+
YXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMpOworICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGFjY2Vzc2liaWxpdHlPYmplY3QgOiBhcmlhRGVzY3JpYmVkQnlF
bGVtZW50cykKKyAgICAgICAgICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0aW9uX2J5X3R5
cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9ERVNDUklCRURfQlksIGFjY2Vzc2liaWxpdHlP
YmplY3QtPndyYXBwZXIoKSk7CisgICAgfQogfQogCiBzdGF0aWMgZ3BvaW50ZXIgd2Via2l0QWNj
ZXNzaWJsZVBhcmVudENsYXNzID0gMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA5MTc5ZTRlLi45YjBiY2U5IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDEt
MjkgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FU
S10gRXhwb3NlIGFyaWEtZGVzY3JpYmVkYnkgd2l0aCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE2ODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRpbmcgaGVscFRleHQgYnkgdXNpbmcgcmVsYXRpb24gQVRLX1JFTEFUSU9OX0RFU0NSSUJFRF9C
WS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
QXRrLmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlbHBUZXh0KToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aGVscFRleHQpOgorCiAyMDE0LTAxLTI3ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgQVg6IFN1cHBvcnQgQHNjb3BlIGluIEhUTUwgdGFibGVzCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0
ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0
ay5jcHAKaW5kZXggYWRjODRkYi4uNDEzMTdiZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAtODAzLDEwICs4
MDMsMzcgQEAgSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UoKQog
CiBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCgpIGNvbnN0CiB7
Ci0gICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gcHJvdmlkZSBhIHByb3BlciBpbXBsZW1lbnRhdGlv
biBmb3IgdGhpcyB0aGF0IGRvZXMKLSAgICAvLyBub3QgZGVwZW5kIG9uIE1hYyBzcGVjaWZpYyBj
b25jZXB0cyBzdWNoIGFzIEFUS19SRUxBVElPTl9ERVNDUklCRURfQlksCi0gICAgLy8gb25jZSBp
dCdzIGltcGxlbWVudGVkIChzZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMjE2ODQpLgotICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworICAgIGlmICghQVRLX0lT
X09CSkVDVChtX2VsZW1lbnQpKQorICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycygwLCAwKTsKKworICAgIEF0a1JlbGF0aW9uU2V0KiByZWxhdGlvblNldCA9IGF0a19v
YmplY3RfcmVmX3JlbGF0aW9uX3NldChBVEtfT0JKRUNUKG1fZWxlbWVudCkpOworICAgIGlmICgh
cmVsYXRpb25TZXQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQXRrUmVsYXRpb24q
IHJlbGF0aW9uID0gYXRrX3JlbGF0aW9uX3NldF9nZXRfcmVsYXRpb25fYnlfdHlwZShyZWxhdGlv
blNldCwgQVRLX1JFTEFUSU9OX0RFU0NSSUJFRF9CWSk7CisgICAgaWYgKCFyZWxhdGlvbikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBHUHRyQXJyYXkqIHRhcmdldExpc3QgPSBhdGtf
cmVsYXRpb25fZ2V0X3RhcmdldChyZWxhdGlvbik7CisgICAgaWYgKCF0YXJnZXRMaXN0IHx8ICF0
YXJnZXRMaXN0LT5sZW4pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWEhlbHA6ICIpOworCisgICAgZm9y
IChpbnQgdGFyZ2V0Q291bnQgPSAwOyB0YXJnZXRDb3VudCA8IHRhcmdldExpc3QtPmxlbjsgdGFy
Z2V0Q291bnQrKykgeworICAgICAgICBpZiAoQXRrT2JqZWN0KiB0YXJnZXQgPSBzdGF0aWNfY2Fz
dDxBdGtPYmplY3QqPihnX3B0cl9hcnJheV9pbmRleCh0YXJnZXRMaXN0LCB0YXJnZXRDb3VudCkp
KSB7CisgICAgICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZXh0KGF0a190ZXh0X2dldF90ZXh0
KEFUS19URVhUKHRhcmdldCksIDAsIC0xKSk7CisgICAgICAgICAgICBpZiAoIWJ1aWxkZXIuaXNF
bXB0eSgpKQorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgIik7CisgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCh0ZXh0LmdldCgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGdf
b2JqZWN0X3VucmVmKHJlbGF0aW9uU2V0KTsKKworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKIH0KIAog
ZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OngoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0
ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCAzZTZhODQ1Li5kNzg3ZGJjIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAtOTcyLDEwICs5NzIsMzYg
QEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1
YWdlKCkKIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmhlbHBUZXh0KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBwcm92aWRlIGEg
cHJvcGVyIGltcGxlbWVudGF0aW9uIGZvciB0aGlzIHRoYXQgZG9lcwotICAgIC8vIG5vdCBkZXBl
bmQgb24gTWFjIHNwZWNpZmljIGNvbmNlcHRzIHN1Y2ggYXMgQVRLX1JFTEFUSU9OX0RFU0NSSUJF
RF9CWSwKLSAgICAvLyBvbmNlIGl0J3MgaW1wbGVtZW50ZWQgKHNlZSBodHRwOi8vd2Via2l0Lm9y
Zy9iLzEyMTY4NCkuCi0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwg
MCk7CisgICAgaWYgKCFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudC5nZXQoKSkpCisgICAgICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgQXRrUmVsYXRp
b25TZXQqIHJlbGF0aW9uU2V0ID0gYXRrX29iamVjdF9yZWZfcmVsYXRpb25fc2V0KEFUS19PQkpF
Q1QobV9lbGVtZW50LmdldCgpKSk7CisgICAgaWYgKCFyZWxhdGlvblNldCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBBdGtSZWxhdGlvbiogcmVsYXRpb24gPSBhdGtfcmVsYXRpb25f
c2V0X2dldF9yZWxhdGlvbl9ieV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJT05fREVTQ1JJ
QkVEX0JZKTsKKyAgICBpZiAoIXJlbGF0aW9uKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIEdQdHJBcnJheSogdGFyZ2V0TGlzdCA9IGF0a19yZWxhdGlvbl9nZXRfdGFyZ2V0KHJlbGF0
aW9uKTsKKyAgICBpZiAoIXRhcmdldExpc3QgfHwgIXRhcmdldExpc3QtPmxlbikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRl
ci5hcHBlbmQoIkFYSGVscDogIik7CisKKyAgICBmb3IgKGludCB0YXJnZXRDb3VudCA9IDA7IHRh
cmdldENvdW50IDwgdGFyZ2V0TGlzdC0+bGVuOyB0YXJnZXRDb3VudCsrKSB7CisgICAgICAgIGlm
IChBdGtPYmplY3QqIHRhcmdldCA9IHN0YXRpY19jYXN0PEF0a09iamVjdCo+KGdfcHRyX2FycmF5
X2luZGV4KHRhcmdldExpc3QsIHRhcmdldENvdW50KSkpIHsKKyAgICAgICAgICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IHRleHQoYXRrX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQodGFyZ2V0KSwgMCwgLTEp
KTsKKyAgICAgICAgICAgIGlmICh0YXJnZXRDb3VudCkKKyAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiICIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodGV4dC5nZXQoKSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBnX29iamVjdF91bnJlZihyZWxhdGlvblNldCk7CisKKyAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYnVpbGRlci50b1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogfQogCiBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eCgp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222565</attachid>
            <date>2014-01-29 04:00:45 -0800</date>
            <delta_ts>2014-01-29 05:11:48 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a11y-aria-describedby.patch</filename>
            <type>text/plain</type>
            <size>17329</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjZTJlNGQwMy4uZTFiN2I4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAx
LTI5ICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6ZWNoQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtB
VEtdIEV4cG9zZSBhcmlhLWRlc2NyaWJlZGJ5IHdpdGggQVRLX1JFTEFUSU9OX0RFU0NSSUJFRF9C
WQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNjg0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2xpZ2h0
bHkgZXh0ZW5kZWQgdGVzdCBzbyB0aGF0IGl0IGNvdWxkIHRlc3QgYXJpYS1kZXNjcmliZWRieSB3
aXRoIG11bHRpcGxlIGlkIHJlZmVyZW5jZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2Fy
aWEtZGVzY3JpYmVkYnktb24taW5wdXQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvYXJpYS1kZXNjcmliZWRieS1vbi1pbnB1dC5odG1sOgorICAgICAgICAqIHBsYXRmb3Jt
L2VmbC9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0
YXRpb25zOgorCiAyMDE0LTAxLTI4ICBKaW53b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5n
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEVGTCBnYXJkZW5pbmcgYWZ0ZXIgcjE2Mjk3Mi4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1kZXNjcmliZWRieS1v
bi1pbnB1dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZGVz
Y3JpYmVkYnktb24taW5wdXQtZXhwZWN0ZWQudHh0CmluZGV4IDEzNmQ0NjkuLmM3MmUxNDYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1kZXNjcmliZWRieS1vbi1p
bnB1dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWRl
c2NyaWJlZGJ5LW9uLWlucHV0LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDUgQEAKIFRoaXMgY29t
cHV0ZXIgd2lsbCBzZWxmLWRlc3RydWN0IGluICAgbWludXRlcy4KLUFsbG93cyB5b3UgdG8gc3Bl
Y2lmeSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgYWZ0ZXIgd2hpY2ggdGhlIGNvbXB1dGVyIHdpbGwg
c2VsZi1kZXN0cnVjdC4KK0FsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIG1pbnV0
ZXMgYWZ0ZXIKK3doaWNoIHRoZSBjb21wdXRlciB3aWxsIHNlbGYtZGVzdHJ1Y3QuCiAKIFRoZSBh
Y2Nlc3NpYmlsaXR5IGRlc2NyaXB0aW9uIGlzICJBWEhlbHA6IEFsbG93cyB5b3UgdG8gc3BlY2lm
eSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMgYWZ0ZXIgd2hpY2ggdGhlIGNvbXB1dGVyIHdpbGwgc2Vs
Zi1kZXN0cnVjdC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEt
ZGVzY3JpYmVkYnktb24taW5wdXQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJp
YS1kZXNjcmliZWRieS1vbi1pbnB1dC5odG1sCmluZGV4IGY2ZDMyNzkuLjk3ZmQ5NGEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1kZXNjcmliZWRieS1vbi1pbnB1
dC5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1kZXNjcmliZWRieS1v
bi1pbnB1dC5odG1sCkBAIC01LDkgKzUsMTAgQEAKIDwvc2NyaXB0PgogPGJvZHk+CiAgICAgPHNw
YW4gaWQ9Im1lc3NhZ2UiPlRoaXMgY29tcHV0ZXIgd2lsbCBzZWxmLWRlc3RydWN0IGluPC9zcGFu
PgotICAgIDxpbnB1dCBpZD0idGltZSIgdHlwZT0idGV4dCIgdmFsdWU9IjEwIiBhcmlhLWRlc2Ny
aWJlZGJ5PSJkZXNjcmlwdGlvbiIvPgorICAgIDxpbnB1dCBpZD0idGltZSIgdHlwZT0idGV4dCIg
dmFsdWU9IjEwIiBhcmlhLWRlc2NyaWJlZGJ5PSJkZXNjcmlwdGlvbjEgZGVzY3JpcHRpb24yIi8+
CiAgICAgPHNwYW4gaWQ9InVuaXQiPiBtaW51dGVzLjwvc3Bhbj4KLSAgICA8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+QWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgbWludXRlcyBhZnRl
ciB3aGljaCB0aGUgY29tcHV0ZXIgd2lsbCBzZWxmLWRlc3RydWN0LjwvZGl2PgorICAgIDxkaXYg
aWQ9ImRlc2NyaXB0aW9uMSI+QWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgbWlu
dXRlcyBhZnRlcjwvZGl2PgorICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uMiI+d2hpY2ggdGhlIGNv
bXB1dGVyIHdpbGwgc2VsZi1kZXN0cnVjdC48L2Rpdj4KICAgICA8ZGl2IGlkPSJyZXN1bHQiPjwv
ZGl2PgogICAgIAogICAgIDxzY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDYxMDg4ZTQuLmQ3NDRjZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNDMzLDcgKzE0MzMsNiBAQCB3ZWJraXQub3JnL2Iv
MTA2MzE2IGFjY2Vzc2liaWxpdHkvcmVuZGVyLWNvdW50ZXItdGV4dC5odG1sIFsgRmFpbHVyZSBd
CiAjIE5ldyBhY2Nlc3NpYmlsaXR5IHRlc3QgYWRkZWQgaW4gcjE0OTE1NSBpcyBmYWlsaW5nLiBI
YXMgYmVlbiBtb3ZlZCB0byB0aGUgbWFjIHBvcnQgaW4gcjE1NTYwMy4KIHdlYmtpdC5vcmcvYi8x
MTU2NTkgYWNjZXNzaWJpbGl0eS9tZXRlci1lbGVtZW50Lmh0bWwgWyBNaXNzaW5nIF0KIAotd2Vi
a2l0Lm9yZy9iLzEyMTY4NCBhY2Nlc3NpYmlsaXR5L2FyaWEtZGVzY3JpYmVkYnktb24taW5wdXQu
aHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEyMTU5MyBhY2Nlc3NpYmlsaXR5L3JhZGlv
LWJ1dHRvbi10aXRsZS1sYWJlbC5odG1sIFsgRmFpbHVyZSBdCiAKICMgTmV3bHkgYWRkZWQgdGVz
dCBhdCByMTM5MTExIGlzIGZhaWxpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDc0MWYxNDguLjU5MzAzMTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC05NDksNyArOTQ5LDYgQEAgd2Via2l0Lm9yZy9iLzcz
NzY2IGNzczMvdW5pY29kZS1iaWRpLWlzb2xhdGUtYWhhcm9uLWZhaWxpbmcuaHRtbCBbIEltYWdl
T25seUZhaWwKIAogd2Via2l0Lm9yZy9iLzc5NzU3IGZhc3Qvc2VsZWN0b3JzL3NlbGVjdGlvbi13
aW5kb3ctaW5hY3RpdmUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi13ZWJraXQub3JnL2Iv
MTIxNjg0IGFjY2Vzc2liaWxpdHkvYXJpYS1kZXNjcmliZWRieS1vbi1pbnB1dC5odG1sIFsgRmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvOTgzNTcgYWNjZXNzaWJpbGl0eS9hcmlhLXJlYWRvbmx5Lmh0
bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85ODM1OSBhY2Nlc3NpYmlsaXR5L2FyaWEtdGV4
dC1yb2xlLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi85ODM2MyBhY2Nlc3NpYmlsaXR5
L2NhbnZhcy1mYWxsYmFjay1jb250ZW50LTIuaHRtbCBbIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGM3NmMyZjQuLmZiYjZlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxNC0wMS0y
OSAgS3J6eXN6dG9mIEN6ZWNoICA8ay5jemVjaEBzYW1zdW5nLmNvbT4KKworICAgICAgICBbQVRL
XSBFeHBvc2UgYXJpYS1kZXNjcmliZWRieSB3aXRoIEFUS19SRUxBVElPTl9ERVNDUklCRURfQlkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTY4NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZWQg
YXJpYS1kZXNjcmliZWRieSBieSBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZLgorICAgICAgICBN
b3ZlZCBlbGVtZW50c0Zyb21BdHRyaWJ1dCB0byBBY2Nlc3NpYmlsaXR5T2JqZWN0IHRvIGhhdmUg
Y29tbW9uIGludGVyZmFjZQorICAgICAgICBmb3IgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QgYW5k
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuIEltcGxlbWVudGVkCisgICAgICAgIHN1cHBvcnRz
QVJJQURlc2NyaWJlZEJ5IGFuZCBhcmlhRGVzY3JpYmVkQnlFbGVtZW50cyB0byBiZXR0ZXIgZGVh
bCB3aXRoIGFyaWEtZGVzY3JpYmVkYnkgYXR0cmlidXRlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gQ292ZXJlZCBieSBleGlzdGVkIG9uZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxl
bWVudHNGcm9tQXR0cmlidXRlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBv
cnRzQVJJQURlc2NyaWJlZEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6c3VwcG9ydHNBUklBRGVzY3JpYmVkQnkpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYURlc2NyaWJlZEJ5RWxlbWVudHMp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNw
cDoKKyAgICAgICAgKHNldEF0a1JlbGF0aW9uU2V0RnJvbUNvcmVPYmplY3QpOgorCiAyMDE0LTAx
LTI5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbmFtZSBu
b3RpZnlSZW5kZXJlck9mU2VsZWN0aW9uQ2hhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCmluZGV4IGRmM2Fi
ODcuLjg5NjlkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCkBAIC0xODkyLDMyICsxODkyLDYgQEAgU3Ry
aW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBj
b25zdAogICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25Gb3JFbGVtZW50cyhlbGVt
ZW50cyk7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmVsZW1lbnRzRnJvbUF0
dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+JiBlbGVtZW50cywgY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlKSBjb25zdAotewotICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7Ci0gICAg
aWYgKCFub2RlIHx8ICFub2RlLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFRyZWVTY29wZSYgdHJlZVNjb3BlID0gbm9kZS0+dHJlZVNjb3BlKCk7Ci0KLSAgICBTdHJp
bmcgaWRMaXN0ID0gZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSkuc3RyaW5nKCk7Ci0gICAgaWYgKGlk
TGlzdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlkTGlzdC5yZXBsYWNlKCdc
bicsICcgJyk7Ci0gICAgVmVjdG9yPFN0cmluZz4gaWRWZWN0b3I7Ci0gICAgaWRMaXN0LnNwbGl0
KCcgJywgaWRWZWN0b3IpOwotCi0gICAgdW5zaWduZWQgc2l6ZSA9IGlkVmVjdG9yLnNpemUoKTsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIEF0b21p
Y1N0cmluZyBpZE5hbWUoaWRWZWN0b3JbaV0pOwotICAgICAgICBFbGVtZW50KiBpZEVsZW1lbnQg
PSB0cmVlU2NvcGUuZ2V0RWxlbWVudEJ5SWQoaWROYW1lKTsKLSAgICAgICAgaWYgKGlkRWxlbWVu
dCkKLSAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZChpZEVsZW1lbnQpOwotICAgIH0KLX0KLQot
CiB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVj
dG9yPEVsZW1lbnQqPiYgZWxlbWVudHMpIGNvbnN0CiB7CiAgICAgZWxlbWVudHNGcm9tQXR0cmli
dXRlKGVsZW1lbnRzLCBhcmlhX2xhYmVsbGVkYnlBdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAppbmRleCBhZGFi
M2JlLi4yOGZhZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCkBAIC0xODIsNyArMTgyLDYgQEAgcHJvdGVjdGVk
OgogICAgIFN0cmluZyBhcmlhQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAg
dm9pZCBhcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMpIGNv
bnN0OwogICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25Gb3JFbGVtZW50cyhWZWN0
b3I8RWxlbWVudCo+ICZlbGVtZW50cykgY29uc3Q7Ci0gICAgdm9pZCBlbGVtZW50c0Zyb21BdHRy
aWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMsIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBj
b25zdDsKICAgICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRpbmdCb3hSZWN0KCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcgYXJpYURlc2NyaWJlZEJ5QXR0cmlidXRlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA4ZTZkMzk1Li4yZmRkNDE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAKQEAgLTIxMjMsNCArMjEyMywyNiBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQg
QWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudHNGcm9tQXR0cmlidXRlKFZlY3RvcjxFbGVtZW50
Kj4mIGVsZW1lbnRzLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0Cit7Cisg
ICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKKyAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlz
RWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVHJlZVNjb3BlJiB0cmVlU2Nv
cGUgPSBub2RlLT50cmVlU2NvcGUoKTsKKworICAgIFN0cmluZyBpZExpc3QgPSBnZXRBdHRyaWJ1
dGUoYXR0cmlidXRlKS5zdHJpbmcoKTsKKyAgICBpZiAoaWRMaXN0LmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWRMaXN0LnJlcGxhY2UoJ1xuJywgJyAnKTsKKyAgICBWZWN0b3I8
U3RyaW5nPiBpZFZlY3RvcjsKKyAgICBpZExpc3Quc3BsaXQoJyAnLCBpZFZlY3Rvcik7CisKKyAg
ICBmb3IgKGF1dG8gaWROYW1lIDogaWRWZWN0b3IpIHsKKyAgICAgICAgaWYgKEVsZW1lbnQqIGlk
RWxlbWVudCA9IHRyZWVTY29wZS5nZXRFbGVtZW50QnlJZChpZE5hbWUpKQorICAgICAgICAgICAg
ZWxlbWVudHMuYXBwZW5kKGlkRWxlbWVudCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oCmluZGV4IDk1OWZiY2EuLjM5MGFlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC01NTMsNiArNTUzLDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhcmlhT3duc0VsZW1lbnRzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FS
SUFGbG93VG8oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBhcmlh
Rmxvd1RvRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgeyB9Cisg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzQVJJQURlc2NyaWJlZEJ5KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgeyB9CiAgICAgdmlydHVhbCBib29sIGFyaWFI
YXNQb3B1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGFyaWFQ
cmVzc2VkSXNQcmVzZW50KCkgY29uc3Q7CiAgICAgYm9vbCBhcmlhSXNNdWx0aWxpbmUoKSBjb25z
dDsKQEAgLTYyNyw2ICs2MjksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgYXJpYURl
c2NyaWJlZEJ5QXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHBsYWNlaG9sZGVyVmFsdWUoKSBjb25zdDsKIAorICAgIHZvaWQgZWxl
bWVudHNGcm9tQXR0cmlidXRlKFZlY3RvcjxFbGVtZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROYW1l
JikgY29uc3Q7CisKICAgICAvLyBPbmx5IGlmIGlzQ29sb3JXZWxsKCkKICAgICB2aXJ0dWFsIHZv
aWQgY29sb3JWYWx1ZShpbnQmIHIsIGludCYgZywgaW50JiBiKSBjb25zdCB7IHIgPSAwOyBnID0g
MDsgYiA9IDA7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggNjBkMDg5OS4uODBlNTk0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xMDI4LDcgKzEwMjgsMjQgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhRmxvd1RvRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJgogICAgIH0KICAgICAgICAgCiB9Ci0gICAgCisKK2Jvb2wgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6c3VwcG9ydHNBUklBRGVzY3JpYmVkQnkoKSBjb25zdAoreworICAgIHJl
dHVybiAhZ2V0QXR0cmlidXRlKGFyaWFfZGVzY3JpYmVkYnlBdHRyKS5pc0VtcHR5KCk7Cit9CisK
K3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYURlc2NyaWJlZEJ5RWxlbWVudHMo
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBhcmlhRGVzY3JpYmVkQnkpIGNvbnN0Cit7Cisg
ICAgVmVjdG9yPEVsZW1lbnQqPiBlbGVtZW50czsKKyAgICBlbGVtZW50c0Zyb21BdHRyaWJ1dGUo
ZWxlbWVudHMsIGFyaWFfZGVzY3JpYmVkYnlBdHRyKTsKKworICAgIEFYT2JqZWN0Q2FjaGUqIGNh
Y2hlID0gYXhPYmplY3RDYWNoZSgpOworICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGVs
ZW1lbnRzKSB7CisgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBkZXNjcmliZWRCeUVs
ZW1lbnQgPSBjYWNoZS0+Z2V0T3JDcmVhdGUoZWxlbWVudCkpCisgICAgICAgICAgICBhcmlhRGVz
Y3JpYmVkQnkuYXBwZW5kKGRlc2NyaWJlZEJ5RWxlbWVudCk7CisgICAgfQorfQorCiBib29sIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN1cHBvcnRzQVJJQURyb3BwaW5nKCkgY29uc3QgCiB7
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBkcm9wRWZmZWN0ID0gZ2V0QXR0cmlidXRlKGFyaWFf
ZHJvcGVmZmVjdEF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAppbmRleCAwYjAyMGZjLi4zOTAyZmI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuaApAQCAtMTgwLDYgKzE4MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRp
b25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFG
bG93VG8oKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgYXJpYUZsb3dUb0VsZW1l
bnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFEZXNjcmliZWRCeSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBhcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgYXJpYUhhc1BvcHVw
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBp
bmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcAppbmRleCAz
OTA5ZGFjLi5lY2U1OWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCkBAIC0yNDUs
NiArMjQ1LDE1IEBAIHN0YXRpYyB2b2lkIHNldEF0a1JlbGF0aW9uU2V0RnJvbUNvcmVPYmplY3Qo
QWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQXRrCiAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgYWNjZXNzaWJpbGl0eU9iamVjdCA6IGFyaWFGbG93VG9FbGVtZW50cykKICAgICAgICAg
ICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFU
S19SRUxBVElPTl9GTE9XU19UTywgYWNjZXNzaWJpbGl0eU9iamVjdC0+d3JhcHBlcigpKTsKICAg
ICB9CisKKyAgICAvLyBDaGVjayB3aGV0aGVyIG9iamVjdCBzdXBwb3J0cyBhcmlhLWRlc2NyaWJl
ZGJ5LiBJdCBwcm92aWRlcyBhbiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciB0aGUgdXNlci4K
KyAgICBpZiAoY29yZU9iamVjdC0+c3VwcG9ydHNBUklBRGVzY3JpYmVkQnkoKSkgeworICAgICAg
ICByZW1vdmVBdGtSZWxhdGlvbkJ5VHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0RFU0NS
SUJFRF9CWSk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBhcmlhRGVzY3JpYmVkQnlFbGVtZW50czsKKyAgICAgICAgY29yZU9iamVjdC0+
YXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMpOworICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGFjY2Vzc2liaWxpdHlPYmplY3QgOiBhcmlhRGVzY3JpYmVkQnlF
bGVtZW50cykKKyAgICAgICAgICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0aW9uX2J5X3R5
cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9ERVNDUklCRURfQlksIGFjY2Vzc2liaWxpdHlP
YmplY3QtPndyYXBwZXIoKSk7CisgICAgfQogfQogCiBzdGF0aWMgZ3BvaW50ZXIgd2Via2l0QWNj
ZXNzaWJsZVBhcmVudENsYXNzID0gMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA5MTc5ZTRlLi45YjBiY2U5IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDEt
MjkgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FU
S10gRXhwb3NlIGFyaWEtZGVzY3JpYmVkYnkgd2l0aCBBVEtfUkVMQVRJT05fREVTQ1JJQkVEX0JZ
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE2ODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRpbmcgaGVscFRleHQgYnkgdXNpbmcgcmVsYXRpb24gQVRLX1JFTEFUSU9OX0RFU0NSSUJFRF9C
WS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
QXRrLmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlbHBUZXh0KToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aGVscFRleHQpOgorCiAyMDE0LTAxLTI3ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgQVg6IFN1cHBvcnQgQHNjb3BlIGluIEhUTUwgdGFibGVzCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0
ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0
ay5jcHAKaW5kZXggYWRjODRkYi4uNDEzMTdiZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAtODAzLDEwICs4
MDMsMzcgQEAgSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UoKQog
CiBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCgpIGNvbnN0CiB7
Ci0gICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gcHJvdmlkZSBhIHByb3BlciBpbXBsZW1lbnRhdGlv
biBmb3IgdGhpcyB0aGF0IGRvZXMKLSAgICAvLyBub3QgZGVwZW5kIG9uIE1hYyBzcGVjaWZpYyBj
b25jZXB0cyBzdWNoIGFzIEFUS19SRUxBVElPTl9ERVNDUklCRURfQlksCi0gICAgLy8gb25jZSBp
dCdzIGltcGxlbWVudGVkIChzZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMjE2ODQpLgotICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworICAgIGlmICghQVRLX0lT
X09CSkVDVChtX2VsZW1lbnQpKQorICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycygwLCAwKTsKKworICAgIEF0a1JlbGF0aW9uU2V0KiByZWxhdGlvblNldCA9IGF0a19v
YmplY3RfcmVmX3JlbGF0aW9uX3NldChBVEtfT0JKRUNUKG1fZWxlbWVudCkpOworICAgIGlmICgh
cmVsYXRpb25TZXQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQXRrUmVsYXRpb24q
IHJlbGF0aW9uID0gYXRrX3JlbGF0aW9uX3NldF9nZXRfcmVsYXRpb25fYnlfdHlwZShyZWxhdGlv
blNldCwgQVRLX1JFTEFUSU9OX0RFU0NSSUJFRF9CWSk7CisgICAgaWYgKCFyZWxhdGlvbikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBHUHRyQXJyYXkqIHRhcmdldExpc3QgPSBhdGtf
cmVsYXRpb25fZ2V0X3RhcmdldChyZWxhdGlvbik7CisgICAgaWYgKCF0YXJnZXRMaXN0IHx8ICF0
YXJnZXRMaXN0LT5sZW4pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCJBWEhlbHA6ICIpOworCisgICAgZm9y
IChpbnQgdGFyZ2V0Q291bnQgPSAwOyB0YXJnZXRDb3VudCA8IHRhcmdldExpc3QtPmxlbjsgdGFy
Z2V0Q291bnQrKykgeworICAgICAgICBpZiAoQXRrT2JqZWN0KiB0YXJnZXQgPSBzdGF0aWNfY2Fz
dDxBdGtPYmplY3QqPihnX3B0cl9hcnJheV9pbmRleCh0YXJnZXRMaXN0LCB0YXJnZXRDb3VudCkp
KSB7CisgICAgICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZXh0KGF0a190ZXh0X2dldF90ZXh0
KEFUS19URVhUKHRhcmdldCksIDAsIC0xKSk7CisgICAgICAgICAgICBpZiAoIWJ1aWxkZXIuaXNF
bXB0eSgpKQorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgIik7CisgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZCh0ZXh0LmdldCgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGdf
b2JqZWN0X3VucmVmKHJlbGF0aW9uU2V0KTsKKworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKIH0KIAog
ZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OngoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0
ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCAzZTZhODQ1Li5kNzg3ZGJjIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAtOTcyLDEwICs5NzIsMzYg
QEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1
YWdlKCkKIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmhlbHBUZXh0KCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBwcm92aWRlIGEg
cHJvcGVyIGltcGxlbWVudGF0aW9uIGZvciB0aGlzIHRoYXQgZG9lcwotICAgIC8vIG5vdCBkZXBl
bmQgb24gTWFjIHNwZWNpZmljIGNvbmNlcHRzIHN1Y2ggYXMgQVRLX1JFTEFUSU9OX0RFU0NSSUJF
RF9CWSwKLSAgICAvLyBvbmNlIGl0J3MgaW1wbGVtZW50ZWQgKHNlZSBodHRwOi8vd2Via2l0Lm9y
Zy9iLzEyMTY4NCkuCi0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwg
MCk7CisgICAgaWYgKCFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudC5nZXQoKSkpCisgICAgICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgQXRrUmVsYXRp
b25TZXQqIHJlbGF0aW9uU2V0ID0gYXRrX29iamVjdF9yZWZfcmVsYXRpb25fc2V0KEFUS19PQkpF
Q1QobV9lbGVtZW50LmdldCgpKSk7CisgICAgaWYgKCFyZWxhdGlvblNldCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBBdGtSZWxhdGlvbiogcmVsYXRpb24gPSBhdGtfcmVsYXRpb25f
c2V0X2dldF9yZWxhdGlvbl9ieV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVMQVRJT05fREVTQ1JJ
QkVEX0JZKTsKKyAgICBpZiAoIXJlbGF0aW9uKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIEdQdHJBcnJheSogdGFyZ2V0TGlzdCA9IGF0a19yZWxhdGlvbl9nZXRfdGFyZ2V0KHJlbGF0
aW9uKTsKKyAgICBpZiAoIXRhcmdldExpc3QgfHwgIXRhcmdldExpc3QtPmxlbikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRl
ci5hcHBlbmQoIkFYSGVscDogIik7CisKKyAgICBmb3IgKGludCB0YXJnZXRDb3VudCA9IDA7IHRh
cmdldENvdW50IDwgdGFyZ2V0TGlzdC0+bGVuOyB0YXJnZXRDb3VudCsrKSB7CisgICAgICAgIGlm
IChBdGtPYmplY3QqIHRhcmdldCA9IHN0YXRpY19jYXN0PEF0a09iamVjdCo+KGdfcHRyX2FycmF5
X2luZGV4KHRhcmdldExpc3QsIHRhcmdldENvdW50KSkpIHsKKyAgICAgICAgICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IHRleHQoYXRrX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQodGFyZ2V0KSwgMCwgLTEp
KTsKKyAgICAgICAgICAgIGlmICh0YXJnZXRDb3VudCkKKyAgICAgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgiICIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodGV4dC5nZXQoKSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBnX29iamVjdF91bnJlZihyZWxhdGlvblNldCk7CisKKyAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYnVpbGRlci50b1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogfQogCiBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eCgp
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>