<?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>89061</bug_id>
          
          <creation_ts>2012-06-13 22:11:39 -0700</creation_ts>
          <short_desc>applyAuthorStyles makes rules declared in all enclosing shadow dom subtrees applicable.</short_desc>
          <delta_ts>2012-06-20 04:48:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Takashi Sakamoto">tasak</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>morrita</cc>
    
    <cc>tasak</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>648801</commentid>
    <comment_count>0</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-06-13 22:11:39 -0700</bug_when>
    <thetext>Shadow DOM spec says:
If TREE has apply-author-styles flag set and RULE is declared in an enclosing shadow DOM subtree
    Let TOP be this tree
    If each shadow DOM subtree that both encloses TREE and is enclosed by TOP has apply-author-styles set, the RULE is applicable in TREE.

(c.f. http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#styles )

However, currently apply-author-styles changes whether rules declared in document is applicable in a shadow dom subtree or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648811</commentid>
    <comment_count>1</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-06-13 22:28:03 -0700</bug_when>
    <thetext>(In reply to comment #0)

&gt; However, currently apply-author-styles changes whether rules declared in document is applicable in a shadow dom subtree or not.

This is not correct. Current implementation applies rules declared in enclosing shadow dom subtrees independent of apply-author-styles&apos; chain. I mean:

- There are 3 shadow dom subtrees, A, B and C: shadow dom tree A ----&gt; shadow dom tree B ---&gt; shadow dom tree C. 

- A encloses B.
- B encloses C.
- C&apos;s apply-author-styles is set.
- A and B&apos;s apply-author-styles is not set.

All rules declared in A and B are applicable in C. 

But, in this case, rules declared in B should be applicable in C. Rules declared in A should not be applicable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648882</commentid>
    <comment_count>2</comment_count>
      <attachid>147505</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-06-14 00:24:52 -0700</bug_when>
    <thetext>Created attachment 147505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648884</commentid>
    <comment_count>3</comment_count>
      <attachid>147506</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-06-14 00:28:11 -0700</bug_when>
    <thetext>Created attachment 147506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649222</commentid>
    <comment_count>4</comment_count>
      <attachid>147506</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-06-14 09:20:45 -0700</bug_when>
    <thetext>Comment on attachment 147506
Patch

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

&gt; Source/WebCore/css/StyleResolver.cpp:945
&gt; +        for (const ContainerNode* scope = m_element; scopedIndex &gt; authorRuleIndex &amp;&amp; scope; scope = scope-&gt;parentOrHostNode()) {

in this context, authorRuleIndex means first shadow DOM scope. It sounds like moving this code to a static non-class function would serve well to better explain this.

Why are we going up using parentOrHostNode?

&gt; Source/WebCore/css/StyleResolver.cpp:948
&gt; +            for (; scopedIndex &gt; authorRuleIndex; --scopedIndex)
&gt; +                if (m_scopeStack[scopedIndex - 1].m_scope != scope)
&gt; +                    break;

Can you explain what this code is doing? It seems to me that just going up the scope stack should be enough?

&gt; LayoutTests/fast/css/style-scoped/style-scoped-apply-author-styles.html:32
&gt; +    document.body.offsetLeft;

I am worried that you keep using this to trigger style recalc. Shouldn&apos;t setting applyAuthorStyles trigger the recalc?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649847</commentid>
    <comment_count>5</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-06-14 21:46:11 -0700</bug_when>
    <thetext>
(In reply to comment #4)
&gt; (From update of attachment 147506 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=147506&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/StyleResolver.cpp:945
&gt; &gt; +        for (const ContainerNode* scope = m_element; scopedIndex &gt; authorRuleIndex &amp;&amp; scope; scope = scope-&gt;parentOrHostNode()) {
&gt; 
&gt; in this context, authorRuleIndex means first shadow DOM scope. It sounds like moving this code to a static non-class function would serve well to better explain this.
&gt; 
&gt; Why are we going up using parentOrHostNode?
&gt; 
&gt; &gt; Source/WebCore/css/StyleResolver.cpp:948
&gt; &gt; +            for (; scopedIndex &gt; authorRuleIndex; --scopedIndex)
&gt; &gt; +                if (m_scopeStack[scopedIndex - 1].m_scope != scope)
&gt; &gt; +                    break;
&gt; 
&gt; Can you explain what this code is doing? It seems to me that just going up the scope stack should be enough?

Because m_scopeStack doesn&apos;t have all ancestor nodes of m_element. m_scopeStack has information like (node, ruleset) only if the node has some rule. For examples,

Document
  A
  |
  B ---- ShadowRoot1
                 |
                 C---------ShadowRoot2 (applyAuthorStyles=true)
                                           |
                                          D---------- ShadowRoot3 (applyAuthorStyles=true)
                                                                      |
                                                                     E

and suppose that ShadowRoot1 has some &lt;style&gt; and that  C, D, E, ShadowRoot2, and ShadowRoot3 have no &lt;style&gt;.

When matchScopedAuthorRules is invoked and m_element is E, m_scopeStack looks like:
[(ShadowRoot1, some RuleSet)]
ShadowRoot2, D, ShadowRoot3, E are not stored in m_scopeStack.

So, by going up using parentOrHostNode(), generate the following sequence:
[E, ShadowRoot3, D, ShadowRoot2, C, ShadowRoot1]
and compare with m_scopeStack:

E: not in m_scopeStack, skip.
ShadowRoot3: not in m_scopeStack, skip. Since ShadowRoot3 has applyAuthorStyles set, continue.
D: not in m_scopeStack, skip.
ShadowRoot2: not in m_scopeStack, skip. Since ShadowRoot2 has applyAuthorStyles set, continue.
C: not in m_scopeStack, skip.
ShadowRoot1: in m_scopeStack. Try to apply.

It is difficult to find whether ShadowRoot2 and ShadowRoot3 have applyAuthorStyle set or not by just scanning m_scopeStack. 
This is also the reason why going up using parentOrHostNode().

However, I got an advice from Morita-san. I will change m_scopeStack to hold some information about applyAuthorStyles and update the patch.

&gt; &gt; LayoutTests/fast/css/style-scoped/style-scoped-apply-author-styles.html:32
&gt; &gt; +    document.body.offsetLeft;
&gt; 
&gt; I am worried that you keep using this to trigger style recalc. Shouldn&apos;t setting applyAuthorStyles trigger the recalc?

Yes, I&apos;m using this to trigger style recalc… 
However, applyAuthorStyles should trigger recalc and the test should work without any &quot;document.body.offsetLeft&quot; for style realc.
I will remove these document.body.offsetLeft.

Best regards,
Takashi Sakamoto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649950</commentid>
    <comment_count>6</comment_count>
      <attachid>147752</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-06-15 00:11:10 -0700</bug_when>
    <thetext>Created attachment 147752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649952</commentid>
    <comment_count>7</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-06-15 00:14:25 -0700</bug_when>
    <thetext>
&gt; I am worried that you keep using this to trigger style recalc. Shouldn&apos;t setting applyAuthorStyles trigger the recalc?

I asked Morita-san about how to use document.body.offsetLeft. So I agree that we don&apos;t need any document.body.offsetLeft in this layout test. 
This test should pass without any &quot;document.body.offsetLeft&quot;.

Best regards,
Takashi Sakamoto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650280</commentid>
    <comment_count>8</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-06-15 10:01:29 -0700</bug_when>
    <thetext>(In reply to comment #5)

&gt; However, I got an advice from Morita-san. I will change m_scopeStack to hold some information about applyAuthorStyles and update the patch.

Right -- it seems like this is a better solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650294</commentid>
    <comment_count>9</comment_count>
      <attachid>147752</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-06-15 10:16:45 -0700</bug_when>
    <thetext>Comment on attachment 147752
Patch

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

getting really close now.

Thank you for the explanation!

&gt; Source/WebCore/css/StyleResolver.cpp:952
&gt; +    if (m_element-&gt;isInShadowTree() &amp;&amp; !m_scopeStack.isEmpty()) {

Looks like early return would improve readability here.

&gt; Source/WebCore/css/StyleResolver.h:534
&gt; +        ScopeStackFrame() : m_scope(0), m_scopeGroup(0), m_ruleSet(0) { }

It&apos;s a scope index, right? Not scope group. What you&apos;re doing here is storing the actual index of the stack, creating a virtual sparse array.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651135</commentid>
    <comment_count>10</comment_count>
      <attachid>148042</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-06-17 20:18:26 -0700</bug_when>
    <thetext>Created attachment 148042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651138</commentid>
    <comment_count>11</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-06-17 20:37:43 -0700</bug_when>
    <thetext>Thank you for reviewing.

(In reply to comment #9)
&gt; (From update of attachment 147752 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=147752&amp;action=review
&gt; 
&gt; getting really close now.
&gt; 
&gt; Thank you for the explanation!
&gt; 
&gt; &gt; Source/WebCore/css/StyleResolver.cpp:952
&gt; &gt; +    if (m_element-&gt;isInShadowTree() &amp;&amp; !m_scopeStack.isEmpty()) {
&gt; 
&gt; Looks like early return would improve readability here.

I see. Done.

&gt; &gt; Source/WebCore/css/StyleResolver.h:534
&gt; &gt; +        ScopeStackFrame() : m_scope(0), m_scopeGroup(0), m_ruleSet(0) { }
&gt; 
&gt; It&apos;s a scope index, right? Not scope group. What you&apos;re doing here is storing the actual index of the stack, creating a virtual sparse array.

What I would like to do is grouping tree scopes by using applyAuthorStyles.
The following shows how setupScopeStack creates m_scopeGroup:

group    scope        applyAuthorStyles
...
-3
---------------------
-2       ShadowRoot - applyAuthorStyles (false)
...
-2       ShadowRoot - applyAuthorStyles (true)
...
-2       ShadowRoot - applyAuthorStyles (true)
...
-2       ShadowRoot - applyAuthorStyles (true)
---------------------
-1       ShadowRoot - applyAuthorStyles (false)
...
-1       ShadowRoot - applyAuthorStyles (true)
...
---------------------
0        ShadowRoot - applyAuthorStyles (false)
...
0        scope (current, starting scope traversal from this node)

The group number doesn&apos;t depend on whether ruleset in a scope or a shadow root.  It just depends on &quot;isShadowRoot and applyAuthorStyles=false&quot;.
(As setupScopeStack goes up by using parentOrHostNode, group number decreases by 1 when a shadow root is found and its applyAuthorStyles is false. pushScope increases the group number by 1 when a given scope is a shadow root and its applyAuthorStyles is false.)
m_scopeGroup has such group numbers. If all shadow roots have applyAuthorStyles set, m_scopeGroup in m_scopeStack have the same value. If all shadow roots have applyAuthorStyles unset, m_scopeGroup in m_scopeStack work like treeScope().

So matchScopedAuthorRules can find matched scoped styles in shadow DOM subtrees by  just comparing current group number (=m_scopeParentGroup) with m_scopeGroup in ScopeStackFrame.

Best regards,
Takashi Sakamoto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651140</commentid>
    <comment_count>12</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-06-17 20:50:58 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; What I would like to do is grouping tree scopes by using applyAuthorStyles.

Oh I see! Then we have a different problem: the purpose of this member variable is very hard to figure out from its name. It&apos;s a Good Thing (tm) in WebKit to make sure that things are named appropriately -- so that when a future aspiring WebKit engineer looks at your code, they can understand its purpose quickly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652076</commentid>
    <comment_count>13</comment_count>
      <attachid>148257</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-06-18 23:14:27 -0700</bug_when>
    <thetext>Created attachment 148257
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652087</commentid>
    <comment_count>14</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-06-18 23:27:39 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; What I would like to do is grouping tree scopes by using applyAuthorStyles.
&gt; 
&gt; Oh I see! Then we have a different problem: the purpose of this member variable is very hard to figure out from its name. It&apos;s a Good Thing (tm) in WebKit to make sure that things are named appropriately -- so that when a future aspiring WebKit engineer looks at your code, they can understand its purpose quickly.

I agree that the name, scopeGroup, is not good. So I renamed it to applyAuthorStyleSetGroup in the new patch (2012-06-18&apos;s).

I&apos;m also thinking of upper boundary of applicable shadom dom subtrees, but I think, as m_scopeStackParent&apos;s upper boundary should be updated when setupScopeStack or popScopeStack is invoked, so the methods will probably be modified in the following way:

void StyleResolver::setupScopeStack(…)
{
...
   const ContainerNode* firstBoundary = 0;
...
   for ( ; scope ; ) {
     const ContainerNode* boundary = 0;
     const ContainerNode* nextLowerBoundary = scope;
     for (nextLowerBoundary = scope; nextLowerBoundary; nextLowerBoundary = nextLowerBoundary-&gt;parentOrHostNode()) {
       if (isShadowRoot(nextLowerBoundary) &amp;&amp; !toShadowRoot(nextLowerBoundary)-&gt;isShadowRoot()) {
          boundary = nextLowerBoundary;
          nextLowerBoundary = nextLowerBoundary-&gt;parentOrHostNode();
          break;
        }
     }
     if (!firstBoundary)
       firstBoudary = boundary; // 
     for ( ; scope != nextLowerBoundary; scope = scope-&gt;parentOrHostNode()) {
      …
     
     }
   }
   m_scopeStackParentUpperBoundary = firstBoundary;
   m_scopeParent = parent;
}

void StyleResolver::popScope(scope)
{
...
     if (isShadowRoot(scope) &amp;&amp; !toShadowRoot(scope)-&gt;applyAuthorStyles()) {
         const ContainerNode* boudary = scope;
         // need to go up to find a new upper boundary.
         for (boudary = scope; boudary; boudary = boudary-&gt;parentOrHostNode())
           if (isShadowRoot(boudary) &amp;&amp; !toShadowRoot(boudary)-&gt;isShadowRoot())
               break;
         m_scopeStackParentUpperBoundary = boundary;
     }
     m_scopeStackParent = scope-&gt;parentOrHostNode(); 
….


In this case, we can use m_applicableStyleUpperBoundary or something instead of m_scopeGroup. However I feel that the code is not as simple as the current patch.

Best regards,
Takashi Sakamoto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652121</commentid>
    <comment_count>15</comment_count>
      <attachid>148268</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-06-18 23:59:28 -0700</bug_when>
    <thetext>Created attachment 148268
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652122</commentid>
    <comment_count>16</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-06-19 00:01:05 -0700</bug_when>
    <thetext>As I found that I forgot to use window.testRunner instead of window.layoutTestController, I recreated a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652453</commentid>
    <comment_count>17</comment_count>
      <attachid>148268</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-06-19 07:58:16 -0700</bug_when>
    <thetext>Comment on attachment 148268
Patch

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

&gt; Source/WebCore/css/StyleResolver.cpp:568
&gt; +    int applyAuthorStyleSetGroup = 0;

ok, I&apos;ll bikeshed some more: authorStyleBoundsIndex.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653115</commentid>
    <comment_count>18</comment_count>
      <attachid>148489</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-06-19 20:00:00 -0700</bug_when>
    <thetext>Created attachment 148489
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653118</commentid>
    <comment_count>19</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-06-19 20:04:40 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 148268 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148268&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/StyleResolver.cpp:568
&gt; &gt; +    int applyAuthorStyleSetGroup = 0;
&gt; 
&gt; ok, I&apos;ll bikeshed some more: authorStyleBoundsIndex.

Thank you.
I renamed applyAuthorSetGroup to authorStyleBoundsIndex.

Best regards,
Takashi Sakamoto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653237</commentid>
    <comment_count>20</comment_count>
      <attachid>148489</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-06-19 23:18:43 -0700</bug_when>
    <thetext>Comment on attachment 148489
Patch

I&apos;m sorry. I found one mistake. I have to use setupScopeStack(m_parentNode) in matchScopedAuthorRules. The current patch doesn&apos;t satisfy the spec:

- the styles of the insertion point node are inherited by those child nodes of the shadow host that are assigned to this insertion point
(http://www.w3.org/TR/shadow-dom/#styles)

I will fix soon.

Best regards,
Takashi Sakamoto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653260</commentid>
    <comment_count>21</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-06-20 00:13:43 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 148489 [details])
&gt; I&apos;m sorry. I found one mistake. I have to use setupScopeStack(m_parentNode) in matchScopedAuthorRules. The current patch doesn&apos;t satisfy the spec:
&gt; 
&gt; - the styles of the insertion point node are inherited by those child nodes of the shadow host that are assigned to this insertion point
&gt; (http://www.w3.org/TR/shadow-dom/#styles)
&gt; 
&gt; I will fix soon.
&gt; 
&gt; Best regards,
&gt; Takashi Sakamoto

I&apos;m sorry. As &lt;content&gt; or shadow root styles are not inherited by distributed nodes, I was afraid that the bug was created by this patch. 
However I found that this is another issue and is not caused by this patch. For searching scoped styles, I think, it is correct to looking at nodes according to DOM tree.

I&apos;m not sure whether the inheritance bug has been already filed or not. If not, I will file the bug.

Best regards,
Takashi Sakamoto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653264</commentid>
    <comment_count>22</comment_count>
      <attachid>148518</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-06-20 00:16:48 -0700</bug_when>
    <thetext>Created attachment 148518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653265</commentid>
    <comment_count>23</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-06-20 00:22:39 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; (From update of attachment 148489 [details] [details])
&gt; &gt; I&apos;m sorry. I found one mistake. I have to use setupScopeStack(m_parentNode) in matchScopedAuthorRules. The current patch doesn&apos;t satisfy the spec:
&gt; &gt; 
&gt; &gt; - the styles of the insertion point node are inherited by those child nodes of the shadow host that are assigned to this insertion point
&gt; &gt; (http://www.w3.org/TR/shadow-dom/#styles)
&gt; &gt; 
&gt; &gt; I will fix soon.
&gt; &gt; 
&gt; &gt; Best regards,
&gt; &gt; Takashi Sakamoto
&gt; 
&gt; I&apos;m sorry. As &lt;content&gt; or shadow root styles are not inherited by distributed nodes, I was afraid that the bug was created by this patch. 

I wrote a wrong thing. Shadow root doesn&apos;t need (and doesn&apos;t have) any styles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653342</commentid>
    <comment_count>24</comment_count>
      <attachid>148518</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-06-20 04:35:30 -0700</bug_when>
    <thetext>Comment on attachment 148518
Patch

Don&apos;t set r+ until you are a reviewer, it will confuse the plumbing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653344</commentid>
    <comment_count>25</comment_count>
      <attachid>148518</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-20 04:48:41 -0700</bug_when>
    <thetext>Comment on attachment 148518
Patch

Clearing flags on attachment: 148518

Committed r120816: &lt;http://trac.webkit.org/changeset/120816&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653345</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-20 04:48:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147505</attachid>
            <date>2012-06-14 00:24:52 -0700</date>
            <delta_ts>2012-06-14 00:28:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89061-20120614162452.patch</filename>
            <type>text/plain</type>
            <size>17085</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMThmNmYzZmJlYmNlMmUw
MTQ3Zjg0ZmFhMGRlMjVkNmMwZjExNzM1Zi4uNTBkODQ2YzMzMWZkMzhjZTYyOWI5OGQzOTQyMDBi
MDBmZDM3NTJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA2LTEzICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBhcHBseUF1dGhvclN0
eWxlcyBtYWtlcyBydWxlcyBkZWNsYXJlZCBpbiBhbGwgZW5jbG9zaW5nIHNoYWRvdyBkb20gc3Vi
dHJlZXMgYXBwbGljYWJsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg5MDYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRml4aW5nIGFwcGx5LWF1dGhvci1zdHlsZXMgYnVnLiBJZiB0aGVyZSBleGlzdHMg
c29tZSBzaGFkb3cgc3VidHJlZSBBCisgICAgICAgIGFuZCBBIGhhcyBhcHBseS1hdXRob3Itc3R5
bGVzIGZsYWcgc2V0LCB3aGV0aGVyIHNvbWUgcnVsZXMgZGVjbGFyZWQgaW4KKyAgICAgICAgYSB0
cmVlIEIgaXMgYXBwbGljYWJsZSBpbiBBIG9yIG5vdCBkZXBlbmRzIG9uOgorICAgICAgICAtIHRo
ZSB0cmVlIEIgZW5jbG9zZXMgdGhlIHRyZWUgQSwgYW5kCisgICAgICAgIC0gYWxsIHRyZWVzIHdo
aWNoIGVuY2xvc2UgQSBhbmQgYXJlIGVuY2xvc2VkIGJ5IEIgaGFzCisgICAgICAgICAgYXBwbHkt
YXV0aG9yLXN0eWxlcyBzZXQuCisgICAgICAgIGMuZi4KKyAgICAgICAgaHR0cDovL2R2Y3MudzMu
b3JnL2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwj
c3R5bGVzCisgICAgICAgIEhvd2V2ZXIgdGhlIHNlY29uZCBydWxlIHdhcyBub3QgaW1wbGVtZW50
ZWQuCisKKyAgICAgICAgVGVzdDogZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1h
cHBseS1hdXRob3Itc3R5bGVzLmh0bWwKKworICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Om1hdGNoU2NvcGVkQXV0aG9yUnVs
ZXMpOgorICAgICAgICBNb2RpZmllZCB0byBmaWx0ZXIgZm91bmQgc2NvcGVkIHJ1bGVzIChpLmUu
IG1fc2NvcGVTdGFjaykgYnkgdXNpbmcKKyAgICAgICAgYXBwbHlBdXRob3JTdHlsZXMuIEZpcnN0
bHkgYXBwbHlpbmcgYWxsIHJ1bGVzIGRlY2xhcmVkIGluIGRvY3VtZW50CisgICAgICAgIGlmIGFw
cGx5LWF1dGhvci1zdHlsZXMgaXMgc2V0LiBBZnRlciB0aGlzLCBsb29raW5nIGF0IG1fZWxlbWVu
dCdzCisgICAgICAgIGFuY2VzdG9yIG5vZGVzIGZyb20gbV9lbGVtZW50IHdoaWxlIGFwcGx5LWF1
dGhvci1zdHlsZXMgaXMgc2V0IGFuZAorICAgICAgICBjb21wYXJpbmcgdGhlIGFuY2VzdG9yIG5v
ZGVzIHdpdGggc2NvcGVzIGluIG1fc2NvcGVTdGFjay4gRmluYWxseSwKKyAgICAgICAgYXBwbHlp
bmcgYWxsIG1hdGNoZWQgcnVsZXMuCisKIDIwMTItMDYtMTMgIE1PUklUQSBIYWppbWUgIDxtb3Jy
aXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCB0eXBvIGZpeC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBkNzdkOWZmM2U4MTcwZDg5ZGYwNWM5OWE2MDIy
NjA1MWVhYzVlNGEwLi4yNjkzYzM0ZjIwYmQzODgzMTVmZWZiODVkM2Y5OTJjMDU0Y2Q0MmZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC05MjYsMjEgKzkyNiwzNiBAQCB2
b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJl
c3VsdCwgYm9vbCBpbmNsdWRlRW1wdAogICAgIE1hdGNoT3B0aW9ucyBvcHRpb25zKGluY2x1ZGVF
bXB0eVJ1bGVzKTsKIAogICAgIC8vIE1hdGNoIHNjb3BlZCBhdXRob3IgcnVsZXMgYnkgdHJhdmVy
c2luZyB0aGUgc2NvcGVkIGVsZW1lbnQgc3RhY2sgKHJlYnVpbGQgaXQgaWYgaXQgZ290IGluY29u
c2lzdGVudCkuCi0gICAgY29uc3QgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbV9lbGVtZW50LT5w
YXJlbnRPckhvc3ROb2RlKCk7Ci0gICAgaWYgKCFzY29wZVN0YWNrSXNDb25zaXN0ZW50KHBhcmVu
dCkpCi0gICAgICAgIHNldHVwU2NvcGVTdGFjayhwYXJlbnQpOwotICAgIGZvciAoc2l6ZV90IGkg
PSBtX3Njb3BlU3RhY2suc2l6ZSgpOyBpOyAtLWkpIHsKLSAgICAgICAgY29uc3QgU2NvcGVTdGFj
a0ZyYW1lJiBmcmFtZSA9IG1fc2NvcGVTdGFja1tpIC0gMV07Ci0gICAgICAgIG9wdGlvbnMuc2Nv
cGUgPSBmcmFtZS5tX3Njb3BlOwotICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhmcmFtZS5t
X3J1bGVTZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxh
c3RBdXRob3JSdWxlLCBvcHRpb25zKTsKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JS
ZWdpb24oZnJhbWUubV9ydWxlU2V0LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVz
dWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7Ci0gICAgfQotICAgIC8vIEFsc28g
aW5jbHVkZSB0aGUgY3VycmVudCBlbGVtZW50LgotICAgIFJ1bGVTZXQqIHJ1bGVTZXQgPSBydWxl
U2V0Rm9yU2NvcGUobV9lbGVtZW50KTsKLSAgICBpZiAocnVsZVNldCkgewotICAgICAgICBvcHRp
b25zLnNjb3BlID0gbV9lbGVtZW50OwotICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhydWxl
U2V0LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0
aG9yUnVsZSwgb3B0aW9ucyk7Ci0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9u
KHJ1bGVTZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxh
c3RBdXRob3JSdWxlLCBvcHRpb25zKTsKKyAgICBpZiAoIXNjb3BlU3RhY2tJc0NvbnNpc3RlbnQo
bV9lbGVtZW50KSkKKyAgICAgICAgc2V0dXBTY29wZVN0YWNrKG1fZWxlbWVudCk7CisKKyAgICB1
bnNpZ25lZCBhdXRob3JSdWxlSW5kZXggPSAwOworICAgIGlmIChtX2VsZW1lbnQtPnRyZWVTY29w
ZSgpLT5hcHBseUF1dGhvclN0eWxlcygpKSB7CisgICAgICAgIC8vIEFwcGx5IHNjb3BlZCBzdHls
ZXMgaW4gZG9jdW1lbnQgdHJlZS4KKyAgICAgICAgZm9yIChhdXRob3JSdWxlSW5kZXggPSAwOyBh
dXRob3JSdWxlSW5kZXggPCBtX3Njb3BlU3RhY2suc2l6ZSgpICYmICFtX3Njb3BlU3RhY2tbYXV0
aG9yUnVsZUluZGV4XS5tX3Njb3BlLT5pc0luU2hhZG93VHJlZSgpOyArK2F1dGhvclJ1bGVJbmRl
eCkgeworICAgICAgICAgICAgY29uc3QgU2NvcGVTdGFja0ZyYW1lJiBmcmFtZSA9IG1fc2NvcGVT
dGFja1thdXRob3JSdWxlSW5kZXhdOworICAgICAgICAgICAgb3B0aW9ucy5zY29wZSA9IGZyYW1l
Lm1fc2NvcGU7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhmcmFtZS5tX3J1bGVT
ZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRo
b3JSdWxlLCBvcHRpb25zKTsKKyAgICAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVn
aW9uKGZyYW1lLm1fcnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3Vs
dC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOworICAgICAgICB9CisgICAgfQorICAg
IGlmIChtX2VsZW1lbnQtPmlzSW5TaGFkb3dUcmVlKCkgJiYgIW1fc2NvcGVTdGFjay5pc0VtcHR5
KCkpIHsKKyAgICAgICAgdW5zaWduZWQgc2NvcGVkSW5kZXggPSBtX3Njb3BlU3RhY2suc2l6ZSgp
OworICAgICAgICAvLyBBcHBseSBzY29wZWQgc3R5bGVzIGluIHNoYWRvdyBkb20gdHJlZS4KKyAg
ICAgICAgZm9yIChjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IG1fZWxlbWVudDsgc2NvcGVk
SW5kZXggPiBhdXRob3JSdWxlSW5kZXggJiYgc2NvcGU7IHNjb3BlID0gc2NvcGUtPnBhcmVudE9y
SG9zdE5vZGUoKSkgeworICAgICAgICAgICAgZm9yICg7IHNjb3BlZEluZGV4ID4gYXV0aG9yUnVs
ZUluZGV4OyAtLXNjb3BlZEluZGV4KQorICAgICAgICAgICAgICAgIGlmIChtX3Njb3BlU3RhY2tb
c2NvcGVkSW5kZXggLSAxXS5tX3Njb3BlICE9IHNjb3BlKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGlmIChzY29wZS0+aXNTaGFkb3dSb290KCkgJiYgIXRvU2hhZG93
Um9vdChzY29wZSktPmFwcGx5QXV0aG9yU3R5bGVzKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgLy8gUnVsZXNldCBmb3IgYW5jZXN0b3Igbm9kZXMgc2hvdWxk
IGJlIGFwcGxpZWQgZmlyc3QuCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHNjb3BlZEluZGV4
OyBpIDwgbV9zY29wZVN0YWNrLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBTY29w
ZVN0YWNrRnJhbWUmIGZyYW1lID0gbV9zY29wZVN0YWNrW2ldOworICAgICAgICAgICAgb3B0aW9u
cy5zY29wZSA9IGZyYW1lLm1fc2NvcGU7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxl
cyhmcmFtZS5tX3J1bGVTZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQu
cmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKKyAgICAgICAgICAgIGNvbGxlY3RNYXRj
aGluZ1J1bGVzRm9yUmVnaW9uKGZyYW1lLm1fcnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1
dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOworICAgICAg
ICB9CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3OTc0
NDlhODliMzU2OGI1Y2NhZGIyNmVjYjQzNTA0ZWY0OWY1OTk3Li4xMjA3MDhmMjBjMjljZTZkZjM4
NWQ1NDdhNTkxMjlmNjdmODA1ZDk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDYtMTMg
IFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29tPgorCisgICAgICAgIGFwcGx5QXV0
aG9yU3R5bGVzIG1ha2VzIHJ1bGVzIGRlY2xhcmVkIGluIGFsbCBlbmNsb3Npbmcgc2hhZG93IGRv
bSBzdWJ0cmVlcyBhcHBsaWNhYmxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODkwNjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYXBwbHkt
YXV0aG9yLXN0eWxlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0
eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYXBwbHktYXV0aG9yLXN0eWxlcy5odG1sOiBBZGRlZC4K
KwogMjAxMi0wNi0xMyAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW0Nocm9taXVtXSBVbnJldmlld2VkOiBBZGQgcmViYXNlbGluZSBhbmQgdXBkYXRlIGV4
cGVjdGF0aW9ucy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3Bl
ZC9zdHlsZS1zY29wZWQtYXBwbHktYXV0aG9yLXN0eWxlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWFwcGx5LWF1dGhvci1zdHls
ZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1ZTNhYTI2YzVjZjk0M2Y3MDNjYmEzY2NkZjkw
OWJlYzJmZTMyMjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHls
ZS1zY29wZWQvc3R5bGUtc2NvcGVkLWFwcGx5LWF1dGhvci1zdHlsZXMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMzIgQEAKK3Rlc3QgYSBzY29wZWQgc3R5bGUgaW4gZG9jdW1lbnQgaXMgYXBwbGll
ZCB0byBhIG5vZGUgaW4gc2hhZG93IGRvbSBzdWJ0cmVlIHdoZW4gYXBwbHktYXV0aG9yLXN0eWxl
cyBpcyB0cnVlLgordGFyZ2V0OiByZ2IoMCwgMCwgMCkKK3RhcmdldDogcmdiKDI1NSwgMCwgMCkK
K3Rlc3QgYSBzdHlsZSBpbiBhbiBlbmNsb3Npbmcgc2hhZG93IGRvbSB0cmVlIGlzIGFwcGxpZWQg
dG8gYSBub2RlIGluIHNoYWRvdyBzdWJ0cmVlIHdoZW4gYXBwbHktYXV0aG9yLXN0eWxlcyBpcyB0
cnVlLgordGFyZ2V0OiByZ2IoMCwgMCwgMCkKK3RhcmdldDogcmdiKDI1NSwgMCwgMCkKK3Rlc3Qg
YSBzY29wZWQgc3R5bGUgaW4gYW4gZW5jbG9zaW5nIHNoYWRvdyBkb20gdHJlZSBpcyBhcHBsaWVk
IHRvIGEgbm9kZSBpbiBzaGFkb3cgc3VidHJlZSB3aGVuIGFwcGx5LWF1dGhvci1zdHlsZXMgaXMg
dHJ1ZSBhbmQgdGhlIG5vZGUgaXMgaW4gdGhlIHNjb3BlLgordGFyZ2V0SW5TY29wZTogcmdiKDAs
IDAsIDApCit0YXJnZXRPdXRPZlNjb3BlOiByZ2IoMCwgMCwgMCkKK3RhcmdldEluU2NvcGU6IHJn
YigyNTUsIDAsIDApCit0YXJnZXRPdXRPZlNjb3BlOiByZ2IoMCwgMCwgMCkKK3Rlc3QgYSBzdHls
ZSBpbiBhIHNoYWRvdyBzdWJ0cmVlIGlzIGFwcGxpZWQgdG8gYSBub2RlIGluIGl0cyBkZXNjZW5k
YW50IHNoYWRvdyBzdWJ0cmVlIHdoZW4gYWxsIGFwcGx5LWF1dGhvci1zdHlsZXMgaW4gc2hhZG93
IHN1YnRyZWVzIGJldHdlZW4gdGhlIHNoYWRvdyBzdWJ0cmVlIGFuZCB0aGUgZGVzY2VuZGFudCBh
cmUgdHJ1ZS4KK3RhcmdldDogcmdiKDAsIDAsIDApCit0YXJnZXQ6IHJnYigyNTUsIDAsIDApCit0
YXJnZXQ6IHJnYigwLCAwLCAyNTUpCit0ZXN0IGEgc3R5bGUgaW4gZG9jdW1lbnQgaXMgYXBwbGll
ZCB0byBub2RlcyBpbiBtdWx0aXBsZSBzaGFkb3cgc3VidHJlZXMgd2hlbiBhcHBseS1hdXRob3It
c3R5bGVzIGlzIHRydWUuCitvbGRlc3RTaGFkb3c6IHJnYigwLCAwLCAwKQorb2xkZXJTaGFkb3c6
IHJnYigwLCAwLCAyNTUpCit0YXJnZXQ6IHJnYigwLCAwLCAwKQorb2xkZXN0U2hhZG93OiByZ2Io
MCwgMCwgMCkKK29sZGVyU2hhZG93OiByZ2IoMCwgMCwgMjU1KQordGFyZ2V0OiByZ2IoMjU1LCAw
LCAwKQorb2xkZXN0U2hhZG93OiByZ2IoMCwgMCwgMCkKK29sZGVyU2hhZG93OiByZ2IoMCwgMCwg
MjU1KQordGFyZ2V0OiByZ2IoMCwgMCwgMCkKK29sZGVzdFNoYWRvdzogcmdiKDI1NSwgMCwgMCkK
K29sZGVyU2hhZG93OiByZ2IoMCwgMCwgMjU1KQordGFyZ2V0OiByZ2IoMCwgMCwgMCkKK3Rlc3Qg
YSBzdHlsZSBpcyBhcHBsaWVkIGluIGRvY3VtZW50IG9yZGVyLgordGFyZ2V0OiByZ2IoMjU1LCAy
NTUsIDApCit0YXJnZXQ6IHJnYigwLCAxMjgsIDApCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYXBwbHktYXV0aG9yLXN0eWxlcy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1hcHBs
eS1hdXRob3Itc3R5bGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM5MGFkZDQzNDU2NmZmYWY3NzdhNTk2
MmJmNDQ0MWVkNTY3NjY0MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYXBwbHktYXV0aG9yLXN0eWxlcy5odG1sCkBAIC0w
LDAgKzEsMjMyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CitmdW5jdGlvbiBkdW1wQ29tcHV0ZWRTdHlsZShub2RlKQoreworICAgIGRlYnVnKG5vZGUuaWQg
KyAiOiAiICsgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShub2RlLCBudWxs
KS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItY29sb3InKSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RC
YXNpYygpCit7CisgICAgZGVidWcoJ3Rlc3QgYSBzY29wZWQgc3R5bGUgaW4gZG9jdW1lbnQgaXMg
YXBwbGllZCB0byBhIG5vZGUgaW4gc2hhZG93IGRvbSBzdWJ0cmVlIHdoZW4gYXBwbHktYXV0aG9y
LXN0eWxlcyBpcyB0cnVlLicpOworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICBkaXYuaW5uZXJIVE1MID0gJzxkaXY+PHN0eWxlIHNjb3BlZD5kaXYgeyBi
b3JkZXI6IDFweCBzb2xpZCByZWQ7IH08L3N0eWxlPjxkaXYgaWQ9Imhvc3QiPjwvZGl2PjwvZGl2
Pic7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCisgICAgdmFyIHNoYWRv
dyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJob3N0Iikp
OworICAgIHNoYWRvdy5pbm5lckhUTUwgPSAnPGRpdiBpZD0idGFyZ2V0Ij50YXJnZXQ8L2Rpdj4n
OworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKworICAgIC8vIGJlZm9yZQor
ICAgIHNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworICAgIGRvY3VtZW50LmJvZHku
b2Zmc2V0TGVmdDsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQo
InRhcmdldCIpKTsKKworICAgIC8vIGFmdGVyCisgICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVz
ID0gdHJ1ZTsKKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7CisgICAgZHVtcENvbXB1dGVk
U3R5bGUoc2hhZG93LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICBkb2N1bWVudC5i
b2R5LnJlbW92ZUNoaWxkKGRpdik7Cit9CisKK2Z1bmN0aW9uIHRlc3RFbmNsb3NpbmdTaGFkb3co
KQoreworICAgIGRlYnVnKCd0ZXN0IGEgc3R5bGUgaW4gYW4gZW5jbG9zaW5nIHNoYWRvdyBkb20g
dHJlZSBpcyBhcHBsaWVkIHRvIGEgbm9kZSBpbiBzaGFkb3cgc3VidHJlZSB3aGVuIGFwcGx5LWF1
dGhvci1zdHlsZXMgaXMgdHJ1ZS4nKTsKKworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisKKyAg
ICB2YXIgb3V0ZXJTaGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIG91dGVy
U2hhZG93LmlubmVySFRNTCA9ICc8c3R5bGU+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9
PC9zdHlsZT48ZGl2IGlkPSJvdXRlciI+b3V0ZXI8L2Rpdj4nOworICAgIHZhciBzaGFkb3cgPSBu
ZXcgV2ViS2l0U2hhZG93Um9vdChvdXRlclNoYWRvdy5nZXRFbGVtZW50QnlJZCgib3V0ZXIiKSk7
CisgICAgc2hhZG93LmlubmVySFRNTCA9ICc8ZGl2IGlkPSJ0YXJnZXQiPnRhcmdldDwvZGl2Pic7
CisKKyAgICAvLyBiZWZvcmUKKyAgICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsK
KyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hh
ZG93LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICAvLyBhZnRlcgorICAgIHNoYWRv
dy5hcHBseUF1dGhvclN0eWxlcyA9IHRydWU7CisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRMZWZ0
OworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iikp
OworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGl2KTsgICAKK30KKworZnVuY3Rpb24g
dGVzdEVuY2xvc2luZ1NoYWRvd1dpdGhTY29wZWQoKQoreworICAgIGRlYnVnKCd0ZXN0IGEgc2Nv
cGVkIHN0eWxlIGluIGFuIGVuY2xvc2luZyBzaGFkb3cgZG9tIHRyZWUgaXMgYXBwbGllZCB0byBh
IG5vZGUgaW4gc2hhZG93IHN1YnRyZWUgd2hlbiBhcHBseS1hdXRob3Itc3R5bGVzIGlzIHRydWUg
YW5kIHRoZSBub2RlIGlzIGluIHRoZSBzY29wZS4nKTsKKworICAgIHZhciBkaXYgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRp
dik7CisKKyAgICB2YXIgb3V0ZXJTaGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOwor
ICAgIG91dGVyU2hhZG93LmlubmVySFRNTCA9ICc8ZGl2PjxzdHlsZSBzY29wZWQ+ZGl2IHsgYm9y
ZGVyOiAxcHggc29saWQgcmVkOyB9PC9zdHlsZT48ZGl2IGlkPSJvdXRlckluU2NvcGUiPm91dGVy
SW5TY29wZTwvZGl2PjwvZGl2PjxkaXYgaWQ9Im91dGVyT3V0T2ZTY29wZSI+b3V0ZXJPdXRPZlNj
b3BlPC9kaXY+JzsKKworICAgIHZhciBzaGFkb3cxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qob3V0
ZXJTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm91dGVySW5TY29wZSIpKTsKKyAgICBzaGFkb3cxLmlu
bmVySFRNTCA9ICc8ZGl2IGlkPSJ0YXJnZXRJblNjb3BlIj50YXJnZXRJblNjb3BlPC9kaXY+JzsK
KyAgICB2YXIgc2hhZG93MiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KG91dGVyU2hhZG93LmdldEVs
ZW1lbnRCeUlkKCJvdXRlck91dE9mU2NvcGUiKSk7CisgICAgc2hhZG93Mi5pbm5lckhUTUwgPSAn
PGRpdiBpZD0idGFyZ2V0T3V0T2ZTY29wZSI+dGFyZ2V0T3V0T2ZTY29wZTwvZGl2Pic7CisKKyAg
ICAvLyBiZWZvcmUKKyAgICBzaGFkb3cxLmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisgICAg
c2hhZG93Mi5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworICAgIGRvY3VtZW50LmJvZHkub2Zm
c2V0TGVmdDsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cxLmdldEVsZW1lbnRCeUlkKCJ0
YXJnZXRJblNjb3BlIikpOworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdzIuZ2V0RWxlbWVu
dEJ5SWQoInRhcmdldE91dE9mU2NvcGUiKSk7CisKKyAgICAvLyBhZnRlcgorICAgIHNoYWRvdzEu
YXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlOworICAgIHNoYWRvdzIuYXBwbHlBdXRob3JTdHlsZXMg
PSB0cnVlOworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKKyAgICBkdW1wQ29tcHV0ZWRT
dHlsZShzaGFkb3cxLmdldEVsZW1lbnRCeUlkKCJ0YXJnZXRJblNjb3BlIikpOworICAgIGR1bXBD
b21wdXRlZFN0eWxlKHNoYWRvdzIuZ2V0RWxlbWVudEJ5SWQoInRhcmdldE91dE9mU2NvcGUiKSk7
CisKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7ICAgCit9CisKK2Z1bmN0aW9u
IHRlc3ROZXN0ZWRTaGFkb3coKQoreworICAgIGRlYnVnKCd0ZXN0IGEgc3R5bGUgaW4gYSBzaGFk
b3cgc3VidHJlZSBpcyBhcHBsaWVkIHRvIGEgbm9kZSBpbiBpdHMgZGVzY2VuZGFudCBzaGFkb3cg
c3VidHJlZSB3aGVuIGFsbCBhcHBseS1hdXRob3Itc3R5bGVzIGluIHNoYWRvdyBzdWJ0cmVlcyBi
ZXR3ZWVuIHRoZSBzaGFkb3cgc3VidHJlZSBhbmQgdGhlIGRlc2NlbmRhbnQgYXJlIHRydWUuJyk7
CisKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZGl2
LmlubmVySFRNTCA9ICc8c3R5bGUgc2NvcGVkPmRpdiB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZCB9
PC9zdHlsZT48ZGl2IGlkPSJob3N0Ij48L2Rpdj4nOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoZGl2KTsKKworICAgIHZhciBvdXRlck1vc3RTaGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93
Um9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaG9zdCIpKTsKKyAgICBvdXRlck1vc3RTaGFk
b3cuaW5uZXJIVE1MID0gJzxzdHlsZT5kaXYgeyBib3JkZXI6IDFweCBzb2xpZCBibHVlOyB9PC9z
dHlsZT48ZGl2IGlkPSJvdXRlck1vc3QiPm91dGVyTW9zdDwvZGl2Pic7CisgICAgb3V0ZXJNb3N0
U2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisKKyAgICB2YXIgb3V0ZXJTaGFkb3cg
PSBuZXcgV2ViS2l0U2hhZG93Um9vdChvdXRlck1vc3RTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm91
dGVyTW9zdCIpKTsKKyAgICBvdXRlclNoYWRvdy5pbm5lckhUTUwgPSAnPGRpdiBpZD0ib3V0ZXIi
Pm91dGVyPC9kaXY+JzsKKyAgICBvdXRlclNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNl
OworCisgICAgdmFyIHNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KG91dGVyU2hhZG93Lmdl
dEVsZW1lbnRCeUlkKCJvdXRlciIpKTsKKyAgICBzaGFkb3cuaW5uZXJIVE1MID0gJzxkaXYgaWQ9
InRhcmdldCI+dGFyZ2V0PC9kaXY+JzsKKyAgICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBm
YWxzZTsKKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7CisKKyAgICAvLyBObyBzdHlsZXMg
c2hvdWxkIGJlIGFwcGxpZWQuCisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93LmdldEVsZW1l
bnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVl
OworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKKyAgICAvLyBBIHN0eWxlIGluIGRvY3Vt
ZW50IHNob3VsZCBiZSBhcHBsaWVkLgorICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdy5nZXRF
bGVtZW50QnlJZCgidGFyZ2V0IikpOworCisgICAgb3V0ZXJTaGFkb3cuYXBwbHlBdXRob3JTdHls
ZXMgPSB0cnVlCisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRMZWZ0OworICAgIC8vIEEgc3R5bGUg
aW4gJ291dGVyTW9zdCcgc2hhZG93IHNob3VsZCBiZSBhcHBsaWVkLgorICAgIGR1bXBDb21wdXRl
ZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworCisgICAgZG9jdW1lbnQu
Ym9keS5yZW1vdmVDaGlsZChkaXYpOyAgIAorfQorCitmdW5jdGlvbiB0ZXN0TXVsdGlwbGVTaGFk
b3coKQoreworICAgIGRlYnVnKCd0ZXN0IGEgc3R5bGUgaW4gZG9jdW1lbnQgaXMgYXBwbGllZCB0
byBub2RlcyBpbiBtdWx0aXBsZSBzaGFkb3cgc3VidHJlZXMgd2hlbiBhcHBseS1hdXRob3Itc3R5
bGVzIGlzIHRydWUuJyk7CisKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgZGl2LmlubmVySFRNTCA9ICc8c3R5bGUgc2NvcGVkPmRpdiB7IGJvcmRlcjog
MXB4IHNvbGlkIHJlZCB9PC9zdHlsZT48ZGl2PnRlc3Q8L2Rpdj4nOworICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKworICAgIHZhciBvbGRlc3RTaGFkb3cgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChkaXYpOworICAgIG9sZGVzdFNoYWRvdy5pbm5lckhUTUwgPSAnPHNoYWRvdz48
L3NoYWRvdz48ZGl2IGlkPSJvbGRlc3RTaGFkb3ciPm9sZGVzdFNoYWRvdzwvZGl2Pic7CisgICAg
b2xkZXN0U2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisKKyAgICB2YXIgb2xkZXJT
aGFkb3cgPSAgbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKKyAgICBvbGRlclNoYWRvdy5pbm5l
ckhUTUwgPSAnPHN0eWxlIHNjb3BlZD5kaXYgeyBib3JkZXI6IDFweCBzb2xpZCBibHVlIH08L3N0
eWxlPjxzaGFkb3c+PC9zaGFkb3c+PGRpdiBpZD0ib2xkZXJTaGFkb3ciPm9sZGVyU2hhZG93PC9k
aXY+JzsKKyAgICBvbGRlclNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworCisgICAg
dmFyIHNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7CisgICAgc2hhZG93LmlubmVy
SFRNTCA9ICc8c2hhZG93Pjwvc2hhZG93PjxkaXYgaWQ9InRhcmdldCI+c2hhZG93PC9kaXY+JzsK
KyAgICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKyAgICBkb2N1bWVudC5ib2R5
Lm9mZnNldExlZnQ7CisKKyAgICAvLyBiZWZvcmUKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShvbGRl
c3RTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm9sZGVzdFNoYWRvdyIpKTsKKyAgICBkdW1wQ29tcHV0
ZWRTdHlsZShvbGRlclNoYWRvdy5nZXRFbGVtZW50QnlJZCgib2xkZXJTaGFkb3ciKSk7CisgICAg
ZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAg
ICAvLyBkb2N1bWVudCAtLS0rLS0tIG9sZGVzdFNoYWRvdworICAgIC8vICAgICAgICAgICAgIHwK
KyAgICAvLyAgICAgICAgICAgICArLS0tIG9sZGVyU2hhZG93CisgICAgLy8gICAgICAgICAgICAg
fAorICAgIC8vICAgICAgICAgICAgICstLS0gc2hhZG93CisKKyAgICAvLyBhcHBseS1hdXRob3It
c3R5bGVzIGFmZmVjdHMgYmV0d2VlbiBzaGFkb3cgYW5kIGRvY3VtZW50LgorICAgIHNoYWRvdy5h
cHBseUF1dGhvclN0eWxlcyA9IHRydWU7CisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRMZWZ0Owor
ICAgIGR1bXBDb21wdXRlZFN0eWxlKG9sZGVzdFNoYWRvdy5nZXRFbGVtZW50QnlJZCgib2xkZXN0
U2hhZG93IikpOworICAgIGR1bXBDb21wdXRlZFN0eWxlKG9sZGVyU2hhZG93LmdldEVsZW1lbnRC
eUlkKCJvbGRlclNoYWRvdyIpKTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxl
bWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIC8vIGFwcGx5LWF1dGhvci1zdHlsZXMgYWZmZWN0
cyBiZXR3ZWVuIG9sZGVyIHNoYWRvdyBhbmQgZG9jdW1lbnQuCisgICAgc2hhZG93LmFwcGx5QXV0
aG9yU3R5bGVzID0gZmFsc2U7CisgICAgb2xkZXJTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0
cnVlOworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKKyAgICBkdW1wQ29tcHV0ZWRTdHls
ZShvbGRlc3RTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm9sZGVzdFNoYWRvdyIpKTsKKyAgICBkdW1w
Q29tcHV0ZWRTdHlsZShvbGRlclNoYWRvdy5nZXRFbGVtZW50QnlJZCgib2xkZXJTaGFkb3ciKSk7
CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7
CisKKyAgICAvLyBhcHBseS1hdXRob3Itc3R5bGVzIGFmZmVjdHMgYmV0d2VlbiBvbGRlc3Qgc2hh
ZG93IGFuZCBkb2N1bWVudC4KKyAgICBvbGRlclNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IGZh
bHNlOworICAgIG9sZGVzdFNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IHRydWU7CisgICAgZG9j
dW1lbnQuYm9keS5vZmZzZXRMZWZ0OworICAgIGR1bXBDb21wdXRlZFN0eWxlKG9sZGVzdFNoYWRv
dy5nZXRFbGVtZW50QnlJZCgib2xkZXN0U2hhZG93IikpOworICAgIGR1bXBDb21wdXRlZFN0eWxl
KG9sZGVyU2hhZG93LmdldEVsZW1lbnRCeUlkKCJvbGRlclNoYWRvdyIpKTsKKyAgICBkdW1wQ29t
cHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIGRvY3Vt
ZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGl2KTsKK30KKworZnVuY3Rpb24gdGVzdE9yZGVyT2ZBcHBs
eVN0eWxlKCkKK3sKKyAgICBkZWJ1ZygndGVzdCBhIHN0eWxlIGlzIGFwcGxpZWQgaW4gZG9jdW1l
bnQgb3JkZXIuJyk7CisKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgZGl2LmlubmVySFRNTCA9ICc8c3R5bGUgc2NvcGVkPmRpdiB7IGJvcmRlcjogMXB4
IHNvbGlkIHJlZCB9PC9zdHlsZT48ZGl2IGlkPSJob3N0Ij48L2Rpdj4nOworICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKworICAgIHZhciBvdXRlck1vc3RTaGFkb3cgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaG9zdCIpKTsKKyAgICBv
dXRlck1vc3RTaGFkb3cuaW5uZXJIVE1MID0gJzxzdHlsZT5kaXYgeyBib3JkZXI6IDFweCBzb2xp
ZCBibHVlOyB9PC9zdHlsZT48ZGl2IGlkPSJvdXRlck1vc3QiPm91dGVyTW9zdDwvZGl2Pic7Cisg
ICAgb3V0ZXJNb3N0U2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKworICAgIHZhciBv
dXRlclNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KG91dGVyTW9zdFNoYWRvdy5nZXRFbGVt
ZW50QnlJZCgib3V0ZXJNb3N0IikpOworICAgIG91dGVyU2hhZG93LmlubmVySFRNTCA9ICc8c3R5
bGU+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgZ3JlZW47IH08L3N0eWxlPjxkaXYgaWQ9Im91dGVy
Ij5vdXRlcjwvZGl2Pic7CisgICAgb3V0ZXJTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVl
OworCisgICAgdmFyIHNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KG91dGVyU2hhZG93Lmdl
dEVsZW1lbnRCeUlkKCJvdXRlciIpKTsKKyAgICBzaGFkb3cuaW5uZXJIVE1MID0gJzxzdHlsZT5k
aXYgeyBib3JkZXI6IDFweCBzb2xpZCB5ZWxsb3c7IH08L3N0eWxlPjxkaXYgaWQ9InRhcmdldCI+
dGFyZ2V0PC9kaXY+JzsKKyAgICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlOworICAg
IGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKKworICAgIC8vIFRoZSBsYXN0IHNjb3BlZCBzdHls
ZSBzaG91bGQgYmUgYXBwbGllZC4KKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxl
bWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIHNoYWRvdy5pbm5lckhUTUwgPSAnPGRpdiBpZD0i
dGFyZ2V0Ij50YXJnZXQ8L2Rpdj4nOworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKKyAg
ICAvLyBUaGUgb3V0ZXIncyBzY29wZWQgc3R5bGUgc2hvdWxkIGJlIGFwcGxpZWQuCisgICAgZHVt
cENvbXB1dGVkU3R5bGUoc2hhZG93LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICBk
b2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7ICAgCit9CisKK2Z1bmN0aW9uIHJ1blRlc3Rz
KCkgeworICAgIHRlc3RCYXNpYygpOworICAgIHRlc3RFbmNsb3NpbmdTaGFkb3coKTsKKyAgICB0
ZXN0RW5jbG9zaW5nU2hhZG93V2l0aFNjb3BlZCgpOworICAgIHRlc3ROZXN0ZWRTaGFkb3coKTsK
KyAgICB0ZXN0TXVsdGlwbGVTaGFkb3coKTsKKyAgICB0ZXN0T3JkZXJPZkFwcGx5U3R5bGUoKTsK
K30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCkiPgorICA8
cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147506</attachid>
            <date>2012-06-14 00:28:11 -0700</date>
            <delta_ts>2012-06-15 00:10:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89061-20120614162810.patch</filename>
            <type>text/plain</type>
            <size>17564</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMThmNmYzZmJlYmNlMmUw
MTQ3Zjg0ZmFhMGRlMjVkNmMwZjExNzM1Zi4uNTBkODQ2YzMzMWZkMzhjZTYyOWI5OGQzOTQyMDBi
MDBmZDM3NTJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA2LTEzICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBhcHBseUF1dGhvclN0
eWxlcyBtYWtlcyBydWxlcyBkZWNsYXJlZCBpbiBhbGwgZW5jbG9zaW5nIHNoYWRvdyBkb20gc3Vi
dHJlZXMgYXBwbGljYWJsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg5MDYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRml4aW5nIGFwcGx5LWF1dGhvci1zdHlsZXMgYnVnLiBJZiB0aGVyZSBleGlzdHMg
c29tZSBzaGFkb3cgc3VidHJlZSBBCisgICAgICAgIGFuZCBBIGhhcyBhcHBseS1hdXRob3Itc3R5
bGVzIGZsYWcgc2V0LCB3aGV0aGVyIHNvbWUgcnVsZXMgZGVjbGFyZWQgaW4KKyAgICAgICAgYSB0
cmVlIEIgaXMgYXBwbGljYWJsZSBpbiBBIG9yIG5vdCBkZXBlbmRzIG9uOgorICAgICAgICAtIHRo
ZSB0cmVlIEIgZW5jbG9zZXMgdGhlIHRyZWUgQSwgYW5kCisgICAgICAgIC0gYWxsIHRyZWVzIHdo
aWNoIGVuY2xvc2UgQSBhbmQgYXJlIGVuY2xvc2VkIGJ5IEIgaGFzCisgICAgICAgICAgYXBwbHkt
YXV0aG9yLXN0eWxlcyBzZXQuCisgICAgICAgIGMuZi4KKyAgICAgICAgaHR0cDovL2R2Y3MudzMu
b3JnL2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwj
c3R5bGVzCisgICAgICAgIEhvd2V2ZXIgdGhlIHNlY29uZCBydWxlIHdhcyBub3QgaW1wbGVtZW50
ZWQuCisKKyAgICAgICAgVGVzdDogZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1h
cHBseS1hdXRob3Itc3R5bGVzLmh0bWwKKworICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Om1hdGNoU2NvcGVkQXV0aG9yUnVs
ZXMpOgorICAgICAgICBNb2RpZmllZCB0byBmaWx0ZXIgZm91bmQgc2NvcGVkIHJ1bGVzIChpLmUu
IG1fc2NvcGVTdGFjaykgYnkgdXNpbmcKKyAgICAgICAgYXBwbHlBdXRob3JTdHlsZXMuIEZpcnN0
bHkgYXBwbHlpbmcgYWxsIHJ1bGVzIGRlY2xhcmVkIGluIGRvY3VtZW50CisgICAgICAgIGlmIGFw
cGx5LWF1dGhvci1zdHlsZXMgaXMgc2V0LiBBZnRlciB0aGlzLCBsb29raW5nIGF0IG1fZWxlbWVu
dCdzCisgICAgICAgIGFuY2VzdG9yIG5vZGVzIGZyb20gbV9lbGVtZW50IHdoaWxlIGFwcGx5LWF1
dGhvci1zdHlsZXMgaXMgc2V0IGFuZAorICAgICAgICBjb21wYXJpbmcgdGhlIGFuY2VzdG9yIG5v
ZGVzIHdpdGggc2NvcGVzIGluIG1fc2NvcGVTdGFjay4gRmluYWxseSwKKyAgICAgICAgYXBwbHlp
bmcgYWxsIG1hdGNoZWQgcnVsZXMuCisKIDIwMTItMDYtMTMgIE1PUklUQSBIYWppbWUgIDxtb3Jy
aXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCB0eXBvIGZpeC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBkNzdkOWZmM2U4MTcwZDg5ZGYwNWM5OWE2MDIy
NjA1MWVhYzVlNGEwLi4yNjkzYzM0ZjIwYmQzODgzMTVmZWZiODVkM2Y5OTJjMDU0Y2Q0MmZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC05MjYsMjEgKzkyNiwzNiBAQCB2
b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoU2NvcGVkQXV0aG9yUnVsZXMoTWF0Y2hSZXN1bHQmIHJl
c3VsdCwgYm9vbCBpbmNsdWRlRW1wdAogICAgIE1hdGNoT3B0aW9ucyBvcHRpb25zKGluY2x1ZGVF
bXB0eVJ1bGVzKTsKIAogICAgIC8vIE1hdGNoIHNjb3BlZCBhdXRob3IgcnVsZXMgYnkgdHJhdmVy
c2luZyB0aGUgc2NvcGVkIGVsZW1lbnQgc3RhY2sgKHJlYnVpbGQgaXQgaWYgaXQgZ290IGluY29u
c2lzdGVudCkuCi0gICAgY29uc3QgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbV9lbGVtZW50LT5w
YXJlbnRPckhvc3ROb2RlKCk7Ci0gICAgaWYgKCFzY29wZVN0YWNrSXNDb25zaXN0ZW50KHBhcmVu
dCkpCi0gICAgICAgIHNldHVwU2NvcGVTdGFjayhwYXJlbnQpOwotICAgIGZvciAoc2l6ZV90IGkg
PSBtX3Njb3BlU3RhY2suc2l6ZSgpOyBpOyAtLWkpIHsKLSAgICAgICAgY29uc3QgU2NvcGVTdGFj
a0ZyYW1lJiBmcmFtZSA9IG1fc2NvcGVTdGFja1tpIC0gMV07Ci0gICAgICAgIG9wdGlvbnMuc2Nv
cGUgPSBmcmFtZS5tX3Njb3BlOwotICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhmcmFtZS5t
X3J1bGVTZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxh
c3RBdXRob3JSdWxlLCBvcHRpb25zKTsKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JS
ZWdpb24oZnJhbWUubV9ydWxlU2V0LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVz
dWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7Ci0gICAgfQotICAgIC8vIEFsc28g
aW5jbHVkZSB0aGUgY3VycmVudCBlbGVtZW50LgotICAgIFJ1bGVTZXQqIHJ1bGVTZXQgPSBydWxl
U2V0Rm9yU2NvcGUobV9lbGVtZW50KTsKLSAgICBpZiAocnVsZVNldCkgewotICAgICAgICBvcHRp
b25zLnNjb3BlID0gbV9lbGVtZW50OwotICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhydWxl
U2V0LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0
aG9yUnVsZSwgb3B0aW9ucyk7Ci0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9u
KHJ1bGVTZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxh
c3RBdXRob3JSdWxlLCBvcHRpb25zKTsKKyAgICBpZiAoIXNjb3BlU3RhY2tJc0NvbnNpc3RlbnQo
bV9lbGVtZW50KSkKKyAgICAgICAgc2V0dXBTY29wZVN0YWNrKG1fZWxlbWVudCk7CisKKyAgICB1
bnNpZ25lZCBhdXRob3JSdWxlSW5kZXggPSAwOworICAgIGlmIChtX2VsZW1lbnQtPnRyZWVTY29w
ZSgpLT5hcHBseUF1dGhvclN0eWxlcygpKSB7CisgICAgICAgIC8vIEFwcGx5IHNjb3BlZCBzdHls
ZXMgaW4gZG9jdW1lbnQgdHJlZS4KKyAgICAgICAgZm9yIChhdXRob3JSdWxlSW5kZXggPSAwOyBh
dXRob3JSdWxlSW5kZXggPCBtX3Njb3BlU3RhY2suc2l6ZSgpICYmICFtX3Njb3BlU3RhY2tbYXV0
aG9yUnVsZUluZGV4XS5tX3Njb3BlLT5pc0luU2hhZG93VHJlZSgpOyArK2F1dGhvclJ1bGVJbmRl
eCkgeworICAgICAgICAgICAgY29uc3QgU2NvcGVTdGFja0ZyYW1lJiBmcmFtZSA9IG1fc2NvcGVT
dGFja1thdXRob3JSdWxlSW5kZXhdOworICAgICAgICAgICAgb3B0aW9ucy5zY29wZSA9IGZyYW1l
Lm1fc2NvcGU7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhmcmFtZS5tX3J1bGVT
ZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRo
b3JSdWxlLCBvcHRpb25zKTsKKyAgICAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVn
aW9uKGZyYW1lLm1fcnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3Vs
dC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOworICAgICAgICB9CisgICAgfQorICAg
IGlmIChtX2VsZW1lbnQtPmlzSW5TaGFkb3dUcmVlKCkgJiYgIW1fc2NvcGVTdGFjay5pc0VtcHR5
KCkpIHsKKyAgICAgICAgdW5zaWduZWQgc2NvcGVkSW5kZXggPSBtX3Njb3BlU3RhY2suc2l6ZSgp
OworICAgICAgICAvLyBBcHBseSBzY29wZWQgc3R5bGVzIGluIHNoYWRvdyBkb20gdHJlZS4KKyAg
ICAgICAgZm9yIChjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IG1fZWxlbWVudDsgc2NvcGVk
SW5kZXggPiBhdXRob3JSdWxlSW5kZXggJiYgc2NvcGU7IHNjb3BlID0gc2NvcGUtPnBhcmVudE9y
SG9zdE5vZGUoKSkgeworICAgICAgICAgICAgZm9yICg7IHNjb3BlZEluZGV4ID4gYXV0aG9yUnVs
ZUluZGV4OyAtLXNjb3BlZEluZGV4KQorICAgICAgICAgICAgICAgIGlmIChtX3Njb3BlU3RhY2tb
c2NvcGVkSW5kZXggLSAxXS5tX3Njb3BlICE9IHNjb3BlKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGlmIChzY29wZS0+aXNTaGFkb3dSb290KCkgJiYgIXRvU2hhZG93
Um9vdChzY29wZSktPmFwcGx5QXV0aG9yU3R5bGVzKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgLy8gUnVsZXNldCBmb3IgYW5jZXN0b3Igbm9kZXMgc2hvdWxk
IGJlIGFwcGxpZWQgZmlyc3QuCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHNjb3BlZEluZGV4
OyBpIDwgbV9zY29wZVN0YWNrLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBTY29w
ZVN0YWNrRnJhbWUmIGZyYW1lID0gbV9zY29wZVN0YWNrW2ldOworICAgICAgICAgICAgb3B0aW9u
cy5zY29wZSA9IGZyYW1lLm1fc2NvcGU7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxl
cyhmcmFtZS5tX3J1bGVTZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQu
cmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKKyAgICAgICAgICAgIGNvbGxlY3RNYXRj
aGluZ1J1bGVzRm9yUmVnaW9uKGZyYW1lLm1fcnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1
dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOworICAgICAg
ICB9CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3OTc0
NDlhODliMzU2OGI1Y2NhZGIyNmVjYjQzNTA0ZWY0OWY1OTk3Li4xMjA3MDhmMjBjMjljZTZkZjM4
NWQ1NDdhNTkxMjlmNjdmODA1ZDk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDYtMTMg
IFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29tPgorCisgICAgICAgIGFwcGx5QXV0
aG9yU3R5bGVzIG1ha2VzIHJ1bGVzIGRlY2xhcmVkIGluIGFsbCBlbmNsb3Npbmcgc2hhZG93IGRv
bSBzdWJ0cmVlcyBhcHBsaWNhYmxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODkwNjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYXBwbHkt
YXV0aG9yLXN0eWxlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0
eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYXBwbHktYXV0aG9yLXN0eWxlcy5odG1sOiBBZGRlZC4K
KwogMjAxMi0wNi0xMyAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW0Nocm9taXVtXSBVbnJldmlld2VkOiBBZGQgcmViYXNlbGluZSBhbmQgdXBkYXRlIGV4
cGVjdGF0aW9ucy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3Bl
ZC9zdHlsZS1zY29wZWQtYXBwbHktYXV0aG9yLXN0eWxlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWFwcGx5LWF1dGhvci1zdHls
ZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhNjNkOWFhODQzNDdkNjcwZTYwZmU4NGNlNWVk
OTZlM2Q2M2EyYjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHls
ZS1zY29wZWQvc3R5bGUtc2NvcGVkLWFwcGx5LWF1dGhvci1zdHlsZXMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMzggQEAKK1BBU1Mgd2luZG93LmludGVybmFscyBpcyBkZWZpbmVkLgorUEFTUyB3
aW5kb3cuaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3QgaXMgZGVmaW5lZC4KK1BBU1MgV2ViS2l0
U2hhZG93Um9vdCBpcyBkZWZpbmVkLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCit0ZXN0IGEgc2NvcGVkIHN0eWxlIGluIGRvY3VtZW50IGlzIGFwcGxp
ZWQgdG8gYSBub2RlIGluIHNoYWRvdyBkb20gc3VidHJlZSB3aGVuIGFwcGx5LWF1dGhvci1zdHls
ZXMgaXMgdHJ1ZS4KK3RhcmdldDogcmdiKDAsIDAsIDApCit0YXJnZXQ6IHJnYigyNTUsIDAsIDAp
Cit0ZXN0IGEgc3R5bGUgaW4gYW4gZW5jbG9zaW5nIHNoYWRvdyBkb20gdHJlZSBpcyBhcHBsaWVk
IHRvIGEgbm9kZSBpbiBzaGFkb3cgc3VidHJlZSB3aGVuIGFwcGx5LWF1dGhvci1zdHlsZXMgaXMg
dHJ1ZS4KK3RhcmdldDogcmdiKDAsIDAsIDApCit0YXJnZXQ6IHJnYigyNTUsIDAsIDApCit0ZXN0
IGEgc2NvcGVkIHN0eWxlIGluIGFuIGVuY2xvc2luZyBzaGFkb3cgZG9tIHRyZWUgaXMgYXBwbGll
ZCB0byBhIG5vZGUgaW4gc2hhZG93IHN1YnRyZWUgd2hlbiBhcHBseS1hdXRob3Itc3R5bGVzIGlz
IHRydWUgYW5kIHRoZSBub2RlIGlzIGluIHRoZSBzY29wZS4KK3RhcmdldEluU2NvcGU6IHJnYigw
LCAwLCAwKQordGFyZ2V0T3V0T2ZTY29wZTogcmdiKDAsIDAsIDApCit0YXJnZXRJblNjb3BlOiBy
Z2IoMjU1LCAwLCAwKQordGFyZ2V0T3V0T2ZTY29wZTogcmdiKDAsIDAsIDApCit0ZXN0IGEgc3R5
bGUgaW4gYSBzaGFkb3cgc3VidHJlZSBpcyBhcHBsaWVkIHRvIGEgbm9kZSBpbiBpdHMgZGVzY2Vu
ZGFudCBzaGFkb3cgc3VidHJlZSB3aGVuIGFsbCBhcHBseS1hdXRob3Itc3R5bGVzIGluIHNoYWRv
dyBzdWJ0cmVlcyBiZXR3ZWVuIHRoZSBzaGFkb3cgc3VidHJlZSBhbmQgdGhlIGRlc2NlbmRhbnQg
YXJlIHRydWUuCit0YXJnZXQ6IHJnYigwLCAwLCAwKQordGFyZ2V0OiByZ2IoMjU1LCAwLCAwKQor
dGFyZ2V0OiByZ2IoMCwgMCwgMjU1KQordGVzdCBhIHN0eWxlIGluIGRvY3VtZW50IGlzIGFwcGxp
ZWQgdG8gbm9kZXMgaW4gbXVsdGlwbGUgc2hhZG93IHN1YnRyZWVzIHdoZW4gYXBwbHktYXV0aG9y
LXN0eWxlcyBpcyB0cnVlLgorb2xkZXN0U2hhZG93OiByZ2IoMCwgMCwgMCkKK29sZGVyU2hhZG93
OiByZ2IoMCwgMCwgMjU1KQordGFyZ2V0OiByZ2IoMCwgMCwgMCkKK29sZGVzdFNoYWRvdzogcmdi
KDAsIDAsIDApCitvbGRlclNoYWRvdzogcmdiKDAsIDAsIDI1NSkKK3RhcmdldDogcmdiKDI1NSwg
MCwgMCkKK29sZGVzdFNoYWRvdzogcmdiKDAsIDAsIDApCitvbGRlclNoYWRvdzogcmdiKDAsIDAs
IDI1NSkKK3RhcmdldDogcmdiKDAsIDAsIDApCitvbGRlc3RTaGFkb3c6IHJnYigyNTUsIDAsIDAp
CitvbGRlclNoYWRvdzogcmdiKDAsIDAsIDI1NSkKK3RhcmdldDogcmdiKDAsIDAsIDApCit0ZXN0
IGEgc3R5bGUgaXMgYXBwbGllZCBpbiBkb2N1bWVudCBvcmRlci4KK3RhcmdldDogcmdiKDI1NSwg
MjU1LCAwKQordGFyZ2V0OiByZ2IoMCwgMTI4LCAwKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWFwcGx5LWF1dGhvci1zdHlsZXMu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYXBw
bHktYXV0aG9yLXN0eWxlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjNDcwNDZhMTI5NmQ5NDMyMWJkZWMz
NGViYThiYzJiMGI0NTQ5ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWFwcGx5LWF1dGhvci1zdHlsZXMuaHRtbApAQCAt
MCwwICsxLDI0MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZG9tL3NoYWRvdy9yZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitzaG91bGRCZURlZmluZWQoIndpbmRvdy5pbnRl
cm5hbHMiKTsKK3Nob3VsZEJlRGVmaW5lZCgid2luZG93LmludGVybmFscy5lbnN1cmVTaGFkb3dS
b290Iik7CitzaG91bGRCZURlZmluZWQoIldlYktpdFNoYWRvd1Jvb3QiKTsKKworZnVuY3Rpb24g
ZHVtcENvbXB1dGVkU3R5bGUobm9kZSkKK3sKKyAgICBkZWJ1Zyhub2RlLmlkICsgIjogIiArIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUobm9kZSwgbnVsbCkuZ2V0UHJvcGVy
dHlWYWx1ZSgnYm9yZGVyLWNvbG9yJykpOworfQorCitmdW5jdGlvbiB0ZXN0QmFzaWMoKQorewor
ICAgIGRlYnVnKCd0ZXN0IGEgc2NvcGVkIHN0eWxlIGluIGRvY3VtZW50IGlzIGFwcGxpZWQgdG8g
YSBub2RlIGluIHNoYWRvdyBkb20gc3VidHJlZSB3aGVuIGFwcGx5LWF1dGhvci1zdHlsZXMgaXMg
dHJ1ZS4nKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgZGl2LmlubmVySFRNTCA9ICc8ZGl2PjxzdHlsZSBzY29wZWQ+ZGl2IHsgYm9yZGVyOiAxcHgg
c29saWQgcmVkOyB9PC9zdHlsZT48ZGl2IGlkPSJob3N0Ij48L2Rpdj48L2Rpdj4nOworICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKworICAgIHZhciBzaGFkb3cgPSBuZXcgV2Vi
S2l0U2hhZG93Um9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaG9zdCIpKTsKKyAgICBzaGFk
b3cuaW5uZXJIVE1MID0gJzxkaXYgaWQ9InRhcmdldCI+dGFyZ2V0PC9kaXY+JzsKKyAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisKKyAgICAvLyBiZWZvcmUKKyAgICBzaGFkb3cu
YXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7
CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7
CisKKyAgICAvLyBhZnRlcgorICAgIHNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IHRydWU7Cisg
ICAgZG9jdW1lbnQuYm9keS5vZmZzZXRMZWZ0OworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRv
dy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworCisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVD
aGlsZChkaXYpOworfQorCitmdW5jdGlvbiB0ZXN0RW5jbG9zaW5nU2hhZG93KCkKK3sKKyAgICBk
ZWJ1ZygndGVzdCBhIHN0eWxlIGluIGFuIGVuY2xvc2luZyBzaGFkb3cgZG9tIHRyZWUgaXMgYXBw
bGllZCB0byBhIG5vZGUgaW4gc2hhZG93IHN1YnRyZWUgd2hlbiBhcHBseS1hdXRob3Itc3R5bGVz
IGlzIHRydWUuJyk7CisKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCisgICAgdmFyIG91dGVy
U2hhZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKKyAgICBvdXRlclNoYWRvdy5pbm5l
ckhUTUwgPSAnPHN0eWxlPmRpdiB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfTwvc3R5bGU+PGRp
diBpZD0ib3V0ZXIiPm91dGVyPC9kaXY+JzsKKyAgICB2YXIgc2hhZG93ID0gbmV3IFdlYktpdFNo
YWRvd1Jvb3Qob3V0ZXJTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm91dGVyIikpOworICAgIHNoYWRv
dy5pbm5lckhUTUwgPSAnPGRpdiBpZD0idGFyZ2V0Ij50YXJnZXQ8L2Rpdj4nOworCisgICAgLy8g
YmVmb3JlCisgICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisgICAgZG9jdW1l
bnQuYm9keS5vZmZzZXRMZWZ0OworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVt
ZW50QnlJZCgidGFyZ2V0IikpOworCisgICAgLy8gYWZ0ZXIKKyAgICBzaGFkb3cuYXBwbHlBdXRo
b3JTdHlsZXMgPSB0cnVlOworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKKyAgICBkdW1w
Q29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKyAgICBkb2N1
bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7ICAgCit9CisKK2Z1bmN0aW9uIHRlc3RFbmNsb3Np
bmdTaGFkb3dXaXRoU2NvcGVkKCkKK3sKKyAgICBkZWJ1ZygndGVzdCBhIHNjb3BlZCBzdHlsZSBp
biBhbiBlbmNsb3Npbmcgc2hhZG93IGRvbSB0cmVlIGlzIGFwcGxpZWQgdG8gYSBub2RlIGluIHNo
YWRvdyBzdWJ0cmVlIHdoZW4gYXBwbHktYXV0aG9yLXN0eWxlcyBpcyB0cnVlIGFuZCB0aGUgbm9k
ZSBpcyBpbiB0aGUgc2NvcGUuJyk7CisKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCisgICAg
dmFyIG91dGVyU2hhZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKKyAgICBvdXRlclNo
YWRvdy5pbm5lckhUTUwgPSAnPGRpdj48c3R5bGUgc2NvcGVkPmRpdiB7IGJvcmRlcjogMXB4IHNv
bGlkIHJlZDsgfTwvc3R5bGU+PGRpdiBpZD0ib3V0ZXJJblNjb3BlIj5vdXRlckluU2NvcGU8L2Rp
dj48L2Rpdj48ZGl2IGlkPSJvdXRlck91dE9mU2NvcGUiPm91dGVyT3V0T2ZTY29wZTwvZGl2Pic7
CisKKyAgICB2YXIgc2hhZG93MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KG91dGVyU2hhZG93Lmdl
dEVsZW1lbnRCeUlkKCJvdXRlckluU2NvcGUiKSk7CisgICAgc2hhZG93MS5pbm5lckhUTUwgPSAn
PGRpdiBpZD0idGFyZ2V0SW5TY29wZSI+dGFyZ2V0SW5TY29wZTwvZGl2Pic7CisgICAgdmFyIHNo
YWRvdzIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChvdXRlclNoYWRvdy5nZXRFbGVtZW50QnlJZCgi
b3V0ZXJPdXRPZlNjb3BlIikpOworICAgIHNoYWRvdzIuaW5uZXJIVE1MID0gJzxkaXYgaWQ9InRh
cmdldE91dE9mU2NvcGUiPnRhcmdldE91dE9mU2NvcGU8L2Rpdj4nOworCisgICAgLy8gYmVmb3Jl
CisgICAgc2hhZG93MS5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworICAgIHNoYWRvdzIuYXBw
bHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7Cisg
ICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93MS5nZXRFbGVtZW50QnlJZCgidGFyZ2V0SW5TY29w
ZSIpKTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cyLmdldEVsZW1lbnRCeUlkKCJ0YXJn
ZXRPdXRPZlNjb3BlIikpOworCisgICAgLy8gYWZ0ZXIKKyAgICBzaGFkb3cxLmFwcGx5QXV0aG9y
U3R5bGVzID0gdHJ1ZTsKKyAgICBzaGFkb3cyLmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKyAg
ICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93
MS5nZXRFbGVtZW50QnlJZCgidGFyZ2V0SW5TY29wZSIpKTsKKyAgICBkdW1wQ29tcHV0ZWRTdHls
ZShzaGFkb3cyLmdldEVsZW1lbnRCeUlkKCJ0YXJnZXRPdXRPZlNjb3BlIikpOworCisgICAgZG9j
dW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpOyAgIAorfQorCitmdW5jdGlvbiB0ZXN0TmVzdGVk
U2hhZG93KCkKK3sKKyAgICBkZWJ1ZygndGVzdCBhIHN0eWxlIGluIGEgc2hhZG93IHN1YnRyZWUg
aXMgYXBwbGllZCB0byBhIG5vZGUgaW4gaXRzIGRlc2NlbmRhbnQgc2hhZG93IHN1YnRyZWUgd2hl
biBhbGwgYXBwbHktYXV0aG9yLXN0eWxlcyBpbiBzaGFkb3cgc3VidHJlZXMgYmV0d2VlbiB0aGUg
c2hhZG93IHN1YnRyZWUgYW5kIHRoZSBkZXNjZW5kYW50IGFyZSB0cnVlLicpOworCisgICAgdmFy
IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRpdi5pbm5lckhUTUwg
PSAnPHN0eWxlIHNjb3BlZD5kaXYgeyBib3JkZXI6IDFweCBzb2xpZCByZWQgfTwvc3R5bGU+PGRp
diBpZD0iaG9zdCI+PC9kaXY+JzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7
CisKKyAgICB2YXIgb3V0ZXJNb3N0U2hhZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImhvc3QiKSk7CisgICAgb3V0ZXJNb3N0U2hhZG93LmlubmVySFRN
TCA9ICc8c3R5bGU+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgYmx1ZTsgfTwvc3R5bGU+PGRpdiBp
ZD0ib3V0ZXJNb3N0Ij5vdXRlck1vc3Q8L2Rpdj4nOworICAgIG91dGVyTW9zdFNoYWRvdy5hcHBs
eUF1dGhvclN0eWxlcyA9IGZhbHNlOworCisgICAgdmFyIG91dGVyU2hhZG93ID0gbmV3IFdlYktp
dFNoYWRvd1Jvb3Qob3V0ZXJNb3N0U2hhZG93LmdldEVsZW1lbnRCeUlkKCJvdXRlck1vc3QiKSk7
CisgICAgb3V0ZXJTaGFkb3cuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Im91dGVyIj5vdXRlcjwvZGl2
Pic7CisgICAgb3V0ZXJTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKworICAgIHZh
ciBzaGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChvdXRlclNoYWRvdy5nZXRFbGVtZW50QnlJ
ZCgib3V0ZXIiKSk7CisgICAgc2hhZG93LmlubmVySFRNTCA9ICc8ZGl2IGlkPSJ0YXJnZXQiPnRh
cmdldDwvZGl2Pic7CisgICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisgICAg
ZG9jdW1lbnQuYm9keS5vZmZzZXRMZWZ0OworCisgICAgLy8gTm8gc3R5bGVzIHNob3VsZCBiZSBh
cHBsaWVkLgorICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgidGFy
Z2V0IikpOworCisgICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKyAgICBkb2N1
bWVudC5ib2R5Lm9mZnNldExlZnQ7CisgICAgLy8gQSBzdHlsZSBpbiBkb2N1bWVudCBzaG91bGQg
YmUgYXBwbGllZC4KKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQo
InRhcmdldCIpKTsKKworICAgIG91dGVyU2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZQor
ICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKKyAgICAvLyBBIHN0eWxlIGluICdvdXRlck1v
c3QnIHNoYWRvdyBzaG91bGQgYmUgYXBwbGllZC4KKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFk
b3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIGRvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQoZGl2KTsgICAKK30KKworZnVuY3Rpb24gdGVzdE11bHRpcGxlU2hhZG93KCkKK3sKKyAg
ICBkZWJ1ZygndGVzdCBhIHN0eWxlIGluIGRvY3VtZW50IGlzIGFwcGxpZWQgdG8gbm9kZXMgaW4g
bXVsdGlwbGUgc2hhZG93IHN1YnRyZWVzIHdoZW4gYXBwbHktYXV0aG9yLXN0eWxlcyBpcyB0cnVl
LicpOworCisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
IGRpdi5pbm5lckhUTUwgPSAnPHN0eWxlIHNjb3BlZD5kaXYgeyBib3JkZXI6IDFweCBzb2xpZCBy
ZWQgfTwvc3R5bGU+PGRpdj50ZXN0PC9kaXY+JzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGRpdik7CisKKyAgICB2YXIgb2xkZXN0U2hhZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
ZGl2KTsKKyAgICBvbGRlc3RTaGFkb3cuaW5uZXJIVE1MID0gJzxzaGFkb3c+PC9zaGFkb3c+PGRp
diBpZD0ib2xkZXN0U2hhZG93Ij5vbGRlc3RTaGFkb3c8L2Rpdj4nOworICAgIG9sZGVzdFNoYWRv
dy5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworCisgICAgdmFyIG9sZGVyU2hhZG93ID0gIG5l
dyBXZWJLaXRTaGFkb3dSb290KGRpdik7CisgICAgb2xkZXJTaGFkb3cuaW5uZXJIVE1MID0gJzxz
dHlsZSBzY29wZWQ+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgYmx1ZSB9PC9zdHlsZT48c2hhZG93
Pjwvc2hhZG93PjxkaXYgaWQ9Im9sZGVyU2hhZG93Ij5vbGRlclNoYWRvdzwvZGl2Pic7CisgICAg
b2xkZXJTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKworICAgIHZhciBzaGFkb3cg
PSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIHNoYWRvdy5pbm5lckhUTUwgPSAnPHNo
YWRvdz48L3NoYWRvdz48ZGl2IGlkPSJ0YXJnZXQiPnNoYWRvdzwvZGl2Pic7CisgICAgc2hhZG93
LmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRMZWZ0
OworCisgICAgLy8gYmVmb3JlCisgICAgZHVtcENvbXB1dGVkU3R5bGUob2xkZXN0U2hhZG93Lmdl
dEVsZW1lbnRCeUlkKCJvbGRlc3RTaGFkb3ciKSk7CisgICAgZHVtcENvbXB1dGVkU3R5bGUob2xk
ZXJTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm9sZGVyU2hhZG93IikpOworICAgIGR1bXBDb21wdXRl
ZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworCisgICAgLy8gZG9jdW1l
bnQgLS0tKy0tLSBvbGRlc3RTaGFkb3cKKyAgICAvLyAgICAgICAgICAgICB8CisgICAgLy8gICAg
ICAgICAgICAgKy0tLSBvbGRlclNoYWRvdworICAgIC8vICAgICAgICAgICAgIHwKKyAgICAvLyAg
ICAgICAgICAgICArLS0tIHNoYWRvdworCisgICAgLy8gYXBwbHktYXV0aG9yLXN0eWxlcyBhZmZl
Y3RzIGJldHdlZW4gc2hhZG93IGFuZCBkb2N1bWVudC4KKyAgICBzaGFkb3cuYXBwbHlBdXRob3JT
dHlsZXMgPSB0cnVlOworICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0TGVmdDsKKyAgICBkdW1wQ29t
cHV0ZWRTdHlsZShvbGRlc3RTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm9sZGVzdFNoYWRvdyIpKTsK
KyAgICBkdW1wQ29tcHV0ZWRTdHlsZShvbGRlclNoYWRvdy5nZXRFbGVtZW50QnlJZCgib2xkZXJT
aGFkb3ciKSk7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93LmdldEVsZW1lbnRCeUlkKCJ0
YXJnZXQiKSk7CisKKyAgICAvLyBhcHBseS1hdXRob3Itc3R5bGVzIGFmZmVjdHMgYmV0d2VlbiBv
bGRlciBzaGFkb3cgYW5kIGRvY3VtZW50LgorICAgIHNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9
IGZhbHNlOworICAgIG9sZGVyU2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKyAgICBk
b2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7CisgICAgZHVtcENvbXB1dGVkU3R5bGUob2xkZXN0U2hh
ZG93LmdldEVsZW1lbnRCeUlkKCJvbGRlc3RTaGFkb3ciKSk7CisgICAgZHVtcENvbXB1dGVkU3R5
bGUob2xkZXJTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm9sZGVyU2hhZG93IikpOworICAgIGR1bXBD
b21wdXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworCisgICAgLy8g
YXBwbHktYXV0aG9yLXN0eWxlcyBhZmZlY3RzIGJldHdlZW4gb2xkZXN0IHNoYWRvdyBhbmQgZG9j
dW1lbnQuCisgICAgb2xkZXJTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKyAgICBv
bGRlc3RTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlOworICAgIGRvY3VtZW50LmJvZHku
b2Zmc2V0TGVmdDsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShvbGRlc3RTaGFkb3cuZ2V0RWxlbWVu
dEJ5SWQoIm9sZGVzdFNoYWRvdyIpKTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShvbGRlclNoYWRv
dy5nZXRFbGVtZW50QnlJZCgib2xkZXJTaGFkb3ciKSk7CisgICAgZHVtcENvbXB1dGVkU3R5bGUo
c2hhZG93LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICBkb2N1bWVudC5ib2R5LnJl
bW92ZUNoaWxkKGRpdik7Cit9CisKK2Z1bmN0aW9uIHRlc3RPcmRlck9mQXBwbHlTdHlsZSgpCit7
CisgICAgZGVidWcoJ3Rlc3QgYSBzdHlsZSBpcyBhcHBsaWVkIGluIGRvY3VtZW50IG9yZGVyLicp
OworCisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRp
di5pbm5lckhUTUwgPSAnPHN0eWxlIHNjb3BlZD5kaXYgeyBib3JkZXI6IDFweCBzb2xpZCByZWQg
fTwvc3R5bGU+PGRpdiBpZD0iaG9zdCI+PC9kaXY+JzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGRpdik7CisKKyAgICB2YXIgb3V0ZXJNb3N0U2hhZG93ID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvc3QiKSk7CisgICAgb3V0ZXJNb3N0U2hh
ZG93LmlubmVySFRNTCA9ICc8c3R5bGU+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgYmx1ZTsgfTwv
c3R5bGU+PGRpdiBpZD0ib3V0ZXJNb3N0Ij5vdXRlck1vc3Q8L2Rpdj4nOworICAgIG91dGVyTW9z
dFNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IHRydWU7CisKKyAgICB2YXIgb3V0ZXJTaGFkb3cg
PSBuZXcgV2ViS2l0U2hhZG93Um9vdChvdXRlck1vc3RTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm91
dGVyTW9zdCIpKTsKKyAgICBvdXRlclNoYWRvdy5pbm5lckhUTUwgPSAnPHN0eWxlPmRpdiB7IGJv
cmRlcjogMXB4IHNvbGlkIGdyZWVuOyB9PC9zdHlsZT48ZGl2IGlkPSJvdXRlciI+b3V0ZXI8L2Rp
dj4nOworICAgIG91dGVyU2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKworICAgIHZh
ciBzaGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChvdXRlclNoYWRvdy5nZXRFbGVtZW50QnlJ
ZCgib3V0ZXIiKSk7CisgICAgc2hhZG93LmlubmVySFRNTCA9ICc8c3R5bGU+ZGl2IHsgYm9yZGVy
OiAxcHggc29saWQgeWVsbG93OyB9PC9zdHlsZT48ZGl2IGlkPSJ0YXJnZXQiPnRhcmdldDwvZGl2
Pic7CisgICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKyAgICBkb2N1bWVudC5i
b2R5Lm9mZnNldExlZnQ7CisKKyAgICAvLyBUaGUgbGFzdCBzY29wZWQgc3R5bGUgc2hvdWxkIGJl
IGFwcGxpZWQuCisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93LmdldEVsZW1lbnRCeUlkKCJ0
YXJnZXQiKSk7CisKKyAgICBzaGFkb3cuaW5uZXJIVE1MID0gJzxkaXYgaWQ9InRhcmdldCI+dGFy
Z2V0PC9kaXY+JzsKKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQ7CisgICAgLy8gVGhlIG91
dGVyJ3Mgc2NvcGVkIHN0eWxlIHNob3VsZCBiZSBhcHBsaWVkLgorICAgIGR1bXBDb21wdXRlZFN0
eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworCisgICAgZG9jdW1lbnQuYm9k
eS5yZW1vdmVDaGlsZChkaXYpOyAgIAorfQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKyAgICB0
ZXN0QmFzaWMoKTsKKyAgICB0ZXN0RW5jbG9zaW5nU2hhZG93KCk7CisgICAgdGVzdEVuY2xvc2lu
Z1NoYWRvd1dpdGhTY29wZWQoKTsKKyAgICB0ZXN0TmVzdGVkU2hhZG93KCk7CisgICAgdGVzdE11
bHRpcGxlU2hhZG93KCk7CisgICAgdGVzdE9yZGVyT2ZBcHBseVN0eWxlKCk7Cit9CisKKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0cygpIj4KKyAgPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147752</attachid>
            <date>2012-06-15 00:11:10 -0700</date>
            <delta_ts>2012-06-17 20:18:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89061-20120615161109.patch</filename>
            <type>text/plain</type>
            <size>21429</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMwYTVjZTcwNzBkMWFj
YWQ5ZDUxZTU2YTQzM2QyZWU2MTc3YTk3YS4uMWRiMmFlMjlhZTEwNTkzN2RmOTQwNDI3MzBhNzJj
MGYwMDBmY2VhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA2LTEzICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBhcHBseUF1dGhvclN0
eWxlcyBtYWtlcyBydWxlcyBkZWNsYXJlZCBpbiBhbGwgZW5jbG9zaW5nIHNoYWRvdyBkb20gc3Vi
dHJlZXMgYXBwbGljYWJsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg5MDYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRml4aW5nIGFwcGx5LWF1dGhvci1zdHlsZXMgYnVnLiBJZiB0aGVyZSBleGlzdHMg
c29tZSBzaGFkb3cgc3VidHJlZSBBCisgICAgICAgIGFuZCBBIGhhcyBhcHBseS1hdXRob3Itc3R5
bGVzIGZsYWcgc2V0LCB3aGV0aGVyIHNvbWUgcnVsZXMgZGVjbGFyZWQgaW4KKyAgICAgICAgYSB0
cmVlIEIgaXMgYXBwbGljYWJsZSBpbiBBIG9yIG5vdCBkZXBlbmRzIG9uOgorICAgICAgICAtIHRo
ZSB0cmVlIEIgZW5jbG9zZXMgdGhlIHRyZWUgQSwgYW5kCisgICAgICAgIC0gYWxsIHRyZWVzIHdo
aWNoIGVuY2xvc2UgQSBhbmQgYXJlIGVuY2xvc2VkIGJ5IEIgaGFzCisgICAgICAgICAgYXBwbHkt
YXV0aG9yLXN0eWxlcyBzZXQuCisgICAgICAgIGMuZi4KKyAgICAgICAgaHR0cDovL2R2Y3MudzMu
b3JnL2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwj
c3R5bGVzCisgICAgICAgIEhvd2V2ZXIgdGhlIHNlY29uZCBydWxlIHdhcyBub3QgaW1wbGVtZW50
ZWQuCisKKyAgICAgICAgVGVzdDogZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1h
cHBseS1hdXRob3Itc3R5bGVzLmh0bWwKKworICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnNldHVwU2NvcGVTdGFjayk6Cisg
ICAgICAgIE1vZGlmaWVkIHRvIGFkZCB0cmVlc2NvcGUgZ3JvdXAgbnVtYmVyIHRvIG1fc2NvcGVT
dGFjay4gVGhlIHRyZWVzY29wZQorICAgICAgICBncm91cCBtZWFuczogaWYgcnVsZXMgaGFzIHRo
ZSBzYW1lIHRyZWVzY29wZSBncm91cCBudW1iZXIsIGFsbCB0aGUKKyAgICAgICAgcnVsZXMgc2hv
dWxkIGJlIGFwcGxpZWQgaW4gbWF0Y2hTY29wZWRBdXRob3JSdWxlcy4KKyAgICAgICAgSWYgYWxs
IHRyZWUgc2NvcGUncyBhcHBseS1hdXRob3Itc3R5bGVzIGZsYWdzIGFyZSBub3Qgc2V0LAorICAg
ICAgICB0aGUgZ3JvdXAgbnVtYmVyIGlzIGFsbW9zdCB0aGUgc2FtZSBhcyB0cmVlU2NvcGUoKS4g
UnVsZXMgaW4gZGlmZmVyZW50CisgICAgICAgIHRyZWUgc2NvcGVzIGhhdmUgZGlmZmVyZW50IGdy
b3VwIG51bWJlcnMuCisgICAgICAgIElmIHNvbWUgdHJlZSBzY29wZSdzIGFwcGx5LWF1dGhvci1z
dHlsZXMgaXMgc2V0LCBydWxlcyBpbiB0aGUgdHJlZQorICAgICAgICBzY29wZSBoYXMgdGhlIHNh
bWUgZ3JvdXBpbmcgbnVtYmVyIGFzIGl0cyBwYXJlbnQgdHJlZSBzY29wZS4KKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnB1c2hTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjpwb3BTY29wZSk6CisgICAgICAgIEFkZGVkIHRoZSBjb2RlIGZvciB1cGRhdGlu
ZyBtX3Njb3BlU3RhY2tQYXJlbnRHcm91cC4gVGhlIG1lbWJlcgorICAgICAgICB2YXJpYWJsZSBr
ZWVwcyBtX3Njb3BlU3RhY2tQYXJlbnQncyB0cmVlIHNjb3BlJ3MgZ3JvdXBpbmcgbnVtYmVyLgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hTY29wZWRBdXRob3JSdWxlcyk6
CisgICAgICAgIE1vZGlmaWVkIHRvIGNvbnNpZGVyIHRyZWUgc2NvcGUgZ3JvdXBpbmcuIEZpcnN0
bHkgYXBwbHlpbmcKKyAgICAgICAgc2NvcGVkIHN0eWxlcyBkZWNsYXJlZCBpbiBkb2N1bWVudCBp
ZiBhcHBseS1hdXRob3Itc3R5bGVzIGlzIHNldC4KKyAgICAgICAgTmV4dCwgYXBwbHlpbmcgc2Nv
cGVkIHN0eWxlcyBkZWNsYXJlZCBpbiBzaGFkb3cgZG9tIHN1YnRyZWUgd2l0aAorICAgICAgICBj
b25zaWRlcmluZyB0cmVlIHNjb3BlIGdyb3VwaW5nIG51bWJlciwgaS5lLiBjb25zaWRlcmluZwor
ICAgICAgICBhcHBseS1hdXRob3Itc3R5bGVzIGZsYWcuCisgICAgICAgICogY3NzL1N0eWxlUmVz
b2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlNjb3BlU3RhY2tGcmFt
ZTo6U2NvcGVTdGFja0ZyYW1lKToKKyAgICAgICAgKFNjb3BlU3RhY2tGcmFtZSk6CisgICAgICAg
IEFkZGVkIG1fc2NvcGVHcm91cCB0byBrZWVwIGFwcGx5QXV0aG9yU3R5bGVzIGluZm9ybWF0aW9u
LgorICAgICAgICBtX3Njb3BlR3JvdXAgaW5jcmVtZW50cyBieSAxIGlmIHNoYWRvdyByb290IGlz
IGdpdmVuIGFuZCBpdCBoYXMKKyAgICAgICAgYXBwbHlBdXRob3JTdHlsZXMgdW5zZXQuCisgICAg
ICAgIE5vdyBydWxlcyBpbiB0aGUgc2FtZSBzY29wZUdyb3VwIHNob3VsZCBiZSBhcHBsaWVkLgor
ICAgICAgICAoU3R5bGVSZXNvbHZlcik6CisgICAgICAgIEFkZGVkIG1fc2NvcGVTdGFja1BhcmVu
dEdyb3VwLgorCiAyMDEyLTA2LTE0ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+
CiAKICAgICAgICAgW2Nocm9taXVtXSBNYWtlIFRpbGVkTGF5ZXJDaHJvbWl1bSByb2J1c3QgdG8g
dW5leHBlY3RlZCBudWxsIHRpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5k
ZXggZDc3ZDlmZjNlODE3MGQ4OWRmMDVjOTlhNjAyMjYwNTFlYWM1ZTRhMC4uZWYyOTU5N2Q4YmQ3
ZjBmNjQ4YjE0NDk0MzkyMDE3ODYwZGFlNjY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcApAQCAtMzcyLDYgKzM3Miw3IEBAIFN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVzb2x2ZXIo
RG9jdW1lbnQqIGRvY3VtZW50LCBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykKICNlbmRp
ZgogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCiAgICAgLCBtX3Njb3BlU3RhY2tQYXJlbnQoMCkK
KyAgICAsIG1fc2NvcGVTdGFja1BhcmVudEdyb3VwKDApCiAjZW5kaWYKIHsKICAgICBFbGVtZW50
KiByb290ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwpAQCAtNTY0LDEzICs1NjUsMTcg
QEAgdm9pZCBTdHlsZVJlc29sdmVyOjpzZXR1cFNjb3BlU3RhY2soY29uc3QgQ29udGFpbmVyTm9k
ZSogcGFyZW50KQogICAgIEFTU0VSVCghbV9zY29wZWRBdXRob3JTdHlsZXMuaXNFbXB0eSgpKTsK
IAogICAgIG1fc2NvcGVTdGFjay5zaHJpbmsoMCk7CisgICAgaW50IHNjb3BlR3JvdXAgPSAwOwog
ICAgIGZvciAoY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUgPSBwYXJlbnQ7IHNjb3BlOyBzY29w
ZSA9IHNjb3BlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKICAgICAgICAgUnVsZVNldCogcnVsZVNl
dCA9IHJ1bGVTZXRGb3JTY29wZShzY29wZSk7CiAgICAgICAgIGlmIChydWxlU2V0KQotICAgICAg
ICAgICAgbV9zY29wZVN0YWNrLmFwcGVuZChTY29wZVN0YWNrRnJhbWUoc2NvcGUsIHJ1bGVTZXQp
KTsKKyAgICAgICAgICAgIG1fc2NvcGVTdGFjay5hcHBlbmQoU2NvcGVTdGFja0ZyYW1lKHNjb3Bl
LCBzY29wZUdyb3VwLCBydWxlU2V0KSk7CisgICAgICAgIGlmIChzY29wZS0+aXNTaGFkb3dSb290
KCkgJiYgIXRvU2hhZG93Um9vdChzY29wZSktPmFwcGx5QXV0aG9yU3R5bGVzKCkpCisgICAgICAg
ICAgICAtLXNjb3BlR3JvdXA7CiAgICAgfQogICAgIG1fc2NvcGVTdGFjay5yZXZlcnNlKCk7CiAg
ICAgbV9zY29wZVN0YWNrUGFyZW50ID0gcGFyZW50OworICAgIG1fc2NvcGVTdGFja1BhcmVudEdy
b3VwID0gMDsKIH0KIAogdm9pZCBTdHlsZVJlc29sdmVyOjpwdXNoU2NvcGUoY29uc3QgQ29udGFp
bmVyTm9kZSogc2NvcGUsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlUGFyZW50KQpAQCAtNTg3
LDEwICs1OTIsMTIgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpwdXNoU2NvcGUoY29uc3QgQ29udGFp
bmVyTm9kZSogc2NvcGUsIGNvbnN0IENvbnRhaW5lck5vZGUqIHMKICAgICAgICAgc2V0dXBTY29w
ZVN0YWNrKHNjb3BlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAoc2NvcGUtPmlz
U2hhZG93Um9vdCgpICYmICF0b1NoYWRvd1Jvb3Qoc2NvcGUpLT5hcHBseUF1dGhvclN0eWxlcygp
KQorICAgICAgICArK21fc2NvcGVTdGFja1BhcmVudEdyb3VwOwogICAgIC8vIE90aGVyd2lzZSBq
dXN0IHB1c2ggdGhlIHBhcmVudCBvbnRvIHRoZSBzdGFjay4KICAgICBSdWxlU2V0KiBydWxlU2V0
ID0gcnVsZVNldEZvclNjb3BlKHNjb3BlKTsKICAgICBpZiAocnVsZVNldCkKLSAgICAgICAgbV9z
Y29wZVN0YWNrLmFwcGVuZChTY29wZVN0YWNrRnJhbWUoc2NvcGUsIHJ1bGVTZXQpKTsKKyAgICAg
ICAgbV9zY29wZVN0YWNrLmFwcGVuZChTY29wZVN0YWNrRnJhbWUoc2NvcGUsIG1fc2NvcGVTdGFj
a1BhcmVudEdyb3VwLCBydWxlU2V0KSk7CiAgICAgbV9zY29wZVN0YWNrUGFyZW50ID0gc2NvcGU7
CiB9CiAKQEAgLTYwMCw2ICs2MDcsOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnBvcFNjb3BlKGNv
bnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQogICAgIGlmIChzY29wZVN0YWNrSXNDb25zaXN0ZW50
KHNjb3BlKSkgewogICAgICAgICBpZiAoIW1fc2NvcGVTdGFjay5pc0VtcHR5KCkgJiYgbV9zY29w
ZVN0YWNrLmxhc3QoKS5tX3Njb3BlID09IHNjb3BlKQogICAgICAgICAgICAgbV9zY29wZVN0YWNr
LnJlbW92ZUxhc3QoKTsKKyAgICAgICAgaWYgKHNjb3BlLT5pc1NoYWRvd1Jvb3QoKSAmJiAhdG9T
aGFkb3dSb290KHNjb3BlKS0+YXBwbHlBdXRob3JTdHlsZXMoKSkKKyAgICAgICAgICAgIC0tbV9z
Y29wZVN0YWNrUGFyZW50R3JvdXA7CiAgICAgICAgIG1fc2NvcGVTdGFja1BhcmVudCA9IHNjb3Bl
LT5wYXJlbnRPckhvc3ROb2RlKCk7CiAgICAgfQogfQpAQCAtOTI2LDIxICs5MzUsMzUgQEAgdm9p
ZCBTdHlsZVJlc29sdmVyOjptYXRjaFNjb3BlZEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1
bHQsIGJvb2wgaW5jbHVkZUVtcHQKICAgICBNYXRjaE9wdGlvbnMgb3B0aW9ucyhpbmNsdWRlRW1w
dHlSdWxlcyk7CiAKICAgICAvLyBNYXRjaCBzY29wZWQgYXV0aG9yIHJ1bGVzIGJ5IHRyYXZlcnNp
bmcgdGhlIHNjb3BlZCBlbGVtZW50IHN0YWNrIChyZWJ1aWxkIGl0IGlmIGl0IGdvdCBpbmNvbnNp
c3RlbnQpLgotICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG1fZWxlbWVudC0+cGFy
ZW50T3JIb3N0Tm9kZSgpOwotICAgIGlmICghc2NvcGVTdGFja0lzQ29uc2lzdGVudChwYXJlbnQp
KQotICAgICAgICBzZXR1cFNjb3BlU3RhY2socGFyZW50KTsKLSAgICBmb3IgKHNpemVfdCBpID0g
bV9zY29wZVN0YWNrLnNpemUoKTsgaTsgLS1pKSB7Ci0gICAgICAgIGNvbnN0IFNjb3BlU3RhY2tG
cmFtZSYgZnJhbWUgPSBtX3Njb3BlU3RhY2tbaSAtIDFdOwotICAgICAgICBvcHRpb25zLnNjb3Bl
ID0gZnJhbWUubV9zY29wZTsKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoZnJhbWUubV9y
dWxlU2V0LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0
QXV0aG9yUnVsZSwgb3B0aW9ucyk7Ci0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVn
aW9uKGZyYW1lLm1fcnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3Vs
dC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwotICAgIH0KLSAgICAvLyBBbHNvIGlu
Y2x1ZGUgdGhlIGN1cnJlbnQgZWxlbWVudC4KLSAgICBSdWxlU2V0KiBydWxlU2V0ID0gcnVsZVNl
dEZvclNjb3BlKG1fZWxlbWVudCk7Ci0gICAgaWYgKHJ1bGVTZXQpIHsKLSAgICAgICAgb3B0aW9u
cy5zY29wZSA9IG1fZWxlbWVudDsKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMocnVsZVNl
dCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhv
clJ1bGUsIG9wdGlvbnMpOwotICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihy
dWxlU2V0LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0
QXV0aG9yUnVsZSwgb3B0aW9ucyk7CisgICAgaWYgKCFzY29wZVN0YWNrSXNDb25zaXN0ZW50KG1f
ZWxlbWVudCkpCisgICAgICAgIHNldHVwU2NvcGVTdGFjayhtX2VsZW1lbnQpOworCisgICAgdW5z
aWduZWQgaW50IGZpcnN0U2hhZG93U2NvcGVJbmRleCA9IDA7CisgICAgaWYgKG1fZWxlbWVudC0+
dHJlZVNjb3BlKCktPmFwcGx5QXV0aG9yU3R5bGVzKCkpIHsKKyAgICAgICAgdW5zaWduZWQgaTsK
KyAgICAgICAgZm9yIChpID0gMDsgaSA8IG1fc2NvcGVTdGFjay5zaXplKCkgJiYgIW1fc2NvcGVT
dGFja1tpXS5tX3Njb3BlLT5pc0luU2hhZG93VHJlZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGNv
bnN0IFNjb3BlU3RhY2tGcmFtZSYgZnJhbWUgPSBtX3Njb3BlU3RhY2tbaV07CisgICAgICAgICAg
ICBvcHRpb25zLnNjb3BlID0gZnJhbWUubV9zY29wZTsKKyAgICAgICAgICAgIGNvbGxlY3RNYXRj
aGluZ1J1bGVzKGZyYW1lLm1fcnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUs
IHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOworICAgICAgICAgICAgY29s
bGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24oZnJhbWUubV9ydWxlU2V0LCByZXN1bHQucmFuZ2Vz
LmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7
CisgICAgICAgIH0KKyAgICAgICAgZmlyc3RTaGFkb3dTY29wZUluZGV4ID0gaTsKKyAgICB9Cisg
ICAgaWYgKG1fZWxlbWVudC0+aXNJblNoYWRvd1RyZWUoKSAmJiAhbV9zY29wZVN0YWNrLmlzRW1w
dHkoKSkgeworICAgICAgICB1bnNpZ25lZCBzY29wZWRJbmRleCA9IG1fc2NvcGVTdGFjay5zaXpl
KCk7CisgICAgICAgIGludCBzY29wZUdyb3VwID0gbV9zY29wZVN0YWNrUGFyZW50R3JvdXA7Cisg
ICAgICAgIGZvciAoIDsgc2NvcGVkSW5kZXggPiBmaXJzdFNoYWRvd1Njb3BlSW5kZXg7IC0tc2Nv
cGVkSW5kZXgpIHsKKyAgICAgICAgICAgIGlmIChzY29wZUdyb3VwICE9IG1fc2NvcGVTdGFja1tz
Y29wZWRJbmRleCAtIDFdLm1fc2NvcGVHcm91cCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIFJ1bGVzZXQgZm9yIGFuY2VzdG9yIG5vZGVzIHNob3VsZCBi
ZSBhcHBsaWVkIGZpcnN0LgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzY29wZWRJbmRleDsg
aSA8IG1fc2NvcGVTdGFjay5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgY29uc3QgU2NvcGVT
dGFja0ZyYW1lJiBmcmFtZSA9IG1fc2NvcGVTdGFja1tpXTsKKyAgICAgICAgICAgIG9wdGlvbnMu
c2NvcGUgPSBmcmFtZS5tX3Njb3BlOworICAgICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMo
ZnJhbWUubV9ydWxlU2V0LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJh
bmdlcy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hp
bmdSdWxlc0ZvclJlZ2lvbihmcmFtZS5tX3J1bGVTZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRo
b3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKKyAgICAgICAg
fQogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuaAppbmRleCA5ZjljYzJjYTQ1YWNkZjA3OTU0ZTgyMmRhMjUwZDUwMzgzNzFm
NzNhLi43NTVjYTA2YWNmOGQzNDMwYzVjYzI0MThlOTUzOWJjZDQxNTZmZTFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTUzMSw5ICs1MzEsMTAgQEAgcHJpdmF0ZToKICAgICBT
Y29wZWRSdWxlU2V0TWFwIG1fc2NvcGVkQXV0aG9yU3R5bGVzOwogICAgIAogICAgIHN0cnVjdCBT
Y29wZVN0YWNrRnJhbWUgewotICAgICAgICBTY29wZVN0YWNrRnJhbWUoKSA6IG1fc2NvcGUoMCks
IG1fcnVsZVNldCgwKSB7IH0KLSAgICAgICAgU2NvcGVTdGFja0ZyYW1lKGNvbnN0IENvbnRhaW5l
ck5vZGUqIHNjb3BlLCBSdWxlU2V0KiBydWxlU2V0KSA6IG1fc2NvcGUoc2NvcGUpLCBtX3J1bGVT
ZXQocnVsZVNldCkgeyB9CisgICAgICAgIFNjb3BlU3RhY2tGcmFtZSgpIDogbV9zY29wZSgwKSwg
bV9zY29wZUdyb3VwKDApLCBtX3J1bGVTZXQoMCkgeyB9CisgICAgICAgIFNjb3BlU3RhY2tGcmFt
ZShjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgaW50IHNjb3BlR3JvdXAsIFJ1bGVTZXQqIHJ1
bGVTZXQpIDogbV9zY29wZShzY29wZSksIG1fc2NvcGVHcm91cChzY29wZUdyb3VwKSwgbV9ydWxl
U2V0KHJ1bGVTZXQpIHsgfQogICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBtX3Njb3BlOwor
ICAgICAgICBpbnQgbV9zY29wZUdyb3VwOwogICAgICAgICBSdWxlU2V0KiBtX3J1bGVTZXQ7CiAg
ICAgfTsKICAgICAvLyBWZWN0b3IgKHVzZWQgYXMgc3RhY2spIHRoYXQga2VlcHMgdHJhY2sgb2Yg
c2NvcGluZyBlbGVtZW50cyAoaS5lLiwgZWxlbWVudHMgd2l0aCBhIDxzdHlsZSBzY29wZWQ+IGNo
aWxkKQpAQCAtNTQyLDYgKzU0Myw3IEBAIHByaXZhdGU6CiAgICAgLy8gRWxlbWVudCBsYXN0IHNl
ZW4gYXMgcGFyZW50IGVsZW1lbnQgd2hlbiB1cGRhdGluZyBtX3Njb3BpbmdFbGVtZW50U3RhY2su
CiAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIGRlY2lkZSB3aGV0aGVyIG1fc2NvcGluZ0VsZW1lbnRT
dGFjayBpcyBjb25zaXN0ZW50LCBzZXBhcmF0ZWx5IGZyb20gU2VsZWN0b3JDaGVja2VyOjptX3Bh
cmVudFN0YWNrLgogICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIG1fc2NvcGVTdGFja1BhcmVudDsK
KyAgICBpbnQgbV9zY29wZVN0YWNrUGFyZW50R3JvdXA7CiAjZW5kaWYKIAogICAgIGZyaWVuZCBj
bGFzcyBTdHlsZUJ1aWxkZXI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWFlZDdkZGRkNTBmNTY2MWU4NDUzMGI0MWY2M2Zi
ODE5ZjZlNzUxNi4uYzMzZmQzYzA1MGY3NGJhMmFlYTI2MDZjMjI0ODQ5OWYxNDBmM2M0ZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA2LTEzICBUYWthc2hpIFNha2Ftb3RvICA8dGFzYWtA
Z29vZ2xlLmNvbT4KKworICAgICAgICBhcHBseUF1dGhvclN0eWxlcyBtYWtlcyBydWxlcyBkZWNs
YXJlZCBpbiBhbGwgZW5jbG9zaW5nIHNoYWRvdyBkb20gc3VidHJlZXMgYXBwbGljYWJsZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5MDYxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nzcy9z
dHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWFwcGx5LWF1dGhvci1zdHlsZXMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWFw
cGx5LWF1dGhvci1zdHlsZXMuaHRtbDogQWRkZWQuCisKIDIwMTItMDYtMTQgIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBleHBlY3RhdGlv
biB1cGRhdGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQv
c3R5bGUtc2NvcGVkLWFwcGx5LWF1dGhvci1zdHlsZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1hcHBseS1hdXRob3Itc3R5bGVz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTYzZDlhYTg0MzQ3ZDY3MGU2MGZlODRjZTVlZDk2
ZTNkNjNhMmI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUt
c2NvcGVkL3N0eWxlLXNjb3BlZC1hcHBseS1hdXRob3Itc3R5bGVzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDM4IEBACitQQVNTIHdpbmRvdy5pbnRlcm5hbHMgaXMgZGVmaW5lZC4KK1BBU1Mgd2lu
ZG93LmludGVybmFscy5lbnN1cmVTaGFkb3dSb290IGlzIGRlZmluZWQuCitQQVNTIFdlYktpdFNo
YWRvd1Jvb3QgaXMgZGVmaW5lZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQordGVzdCBhIHNjb3BlZCBzdHlsZSBpbiBkb2N1bWVudCBpcyBhcHBsaWVk
IHRvIGEgbm9kZSBpbiBzaGFkb3cgZG9tIHN1YnRyZWUgd2hlbiBhcHBseS1hdXRob3Itc3R5bGVz
IGlzIHRydWUuCit0YXJnZXQ6IHJnYigwLCAwLCAwKQordGFyZ2V0OiByZ2IoMjU1LCAwLCAwKQor
dGVzdCBhIHN0eWxlIGluIGFuIGVuY2xvc2luZyBzaGFkb3cgZG9tIHRyZWUgaXMgYXBwbGllZCB0
byBhIG5vZGUgaW4gc2hhZG93IHN1YnRyZWUgd2hlbiBhcHBseS1hdXRob3Itc3R5bGVzIGlzIHRy
dWUuCit0YXJnZXQ6IHJnYigwLCAwLCAwKQordGFyZ2V0OiByZ2IoMjU1LCAwLCAwKQordGVzdCBh
IHNjb3BlZCBzdHlsZSBpbiBhbiBlbmNsb3Npbmcgc2hhZG93IGRvbSB0cmVlIGlzIGFwcGxpZWQg
dG8gYSBub2RlIGluIHNoYWRvdyBzdWJ0cmVlIHdoZW4gYXBwbHktYXV0aG9yLXN0eWxlcyBpcyB0
cnVlIGFuZCB0aGUgbm9kZSBpcyBpbiB0aGUgc2NvcGUuCit0YXJnZXRJblNjb3BlOiByZ2IoMCwg
MCwgMCkKK3RhcmdldE91dE9mU2NvcGU6IHJnYigwLCAwLCAwKQordGFyZ2V0SW5TY29wZTogcmdi
KDI1NSwgMCwgMCkKK3RhcmdldE91dE9mU2NvcGU6IHJnYigwLCAwLCAwKQordGVzdCBhIHN0eWxl
IGluIGEgc2hhZG93IHN1YnRyZWUgaXMgYXBwbGllZCB0byBhIG5vZGUgaW4gaXRzIGRlc2NlbmRh
bnQgc2hhZG93IHN1YnRyZWUgd2hlbiBhbGwgYXBwbHktYXV0aG9yLXN0eWxlcyBpbiBzaGFkb3cg
c3VidHJlZXMgYmV0d2VlbiB0aGUgc2hhZG93IHN1YnRyZWUgYW5kIHRoZSBkZXNjZW5kYW50IGFy
ZSB0cnVlLgordGFyZ2V0OiByZ2IoMCwgMCwgMCkKK3RhcmdldDogcmdiKDI1NSwgMCwgMCkKK3Rh
cmdldDogcmdiKDAsIDAsIDI1NSkKK3Rlc3QgYSBzdHlsZSBpbiBkb2N1bWVudCBpcyBhcHBsaWVk
IHRvIG5vZGVzIGluIG11bHRpcGxlIHNoYWRvdyBzdWJ0cmVlcyB3aGVuIGFwcGx5LWF1dGhvci1z
dHlsZXMgaXMgdHJ1ZS4KK29sZGVzdFNoYWRvdzogcmdiKDAsIDAsIDApCitvbGRlclNoYWRvdzog
cmdiKDAsIDAsIDI1NSkKK3RhcmdldDogcmdiKDAsIDAsIDApCitvbGRlc3RTaGFkb3c6IHJnYigw
LCAwLCAwKQorb2xkZXJTaGFkb3c6IHJnYigwLCAwLCAyNTUpCit0YXJnZXQ6IHJnYigyNTUsIDAs
IDApCitvbGRlc3RTaGFkb3c6IHJnYigwLCAwLCAwKQorb2xkZXJTaGFkb3c6IHJnYigwLCAwLCAy
NTUpCit0YXJnZXQ6IHJnYigwLCAwLCAwKQorb2xkZXN0U2hhZG93OiByZ2IoMjU1LCAwLCAwKQor
b2xkZXJTaGFkb3c6IHJnYigwLCAwLCAyNTUpCit0YXJnZXQ6IHJnYigwLCAwLCAwKQordGVzdCBh
IHN0eWxlIGlzIGFwcGxpZWQgaW4gZG9jdW1lbnQgb3JkZXIuCit0YXJnZXQ6IHJnYigyNTUsIDI1
NSwgMCkKK3RhcmdldDogcmdiKDAsIDEyOCwgMCkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1hcHBseS1hdXRob3Itc3R5bGVzLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWFwcGx5
LWF1dGhvci1zdHlsZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDQ4NzllMDNjYmMyNjFmNjI2YzFiNmI2
NGNkNWE1YWFiYTU1ZWIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
c3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1hcHBseS1hdXRob3Itc3R5bGVzLmh0bWwKQEAgLTAs
MCArMSwyMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2RvbS9zaGFkb3cvcmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworc2hvdWxkQmVEZWZpbmVkKCJ3aW5kb3cuaW50ZXJu
YWxzIik7CitzaG91bGRCZURlZmluZWQoIndpbmRvdy5pbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9v
dCIpOworc2hvdWxkQmVEZWZpbmVkKCJXZWJLaXRTaGFkb3dSb290Iik7CisKK2Z1bmN0aW9uIGR1
bXBDb21wdXRlZFN0eWxlKG5vZGUpCit7CisgICAgZGVidWcobm9kZS5pZCArICI6ICIgKyBkb2N1
bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKG5vZGUsIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoJ2JvcmRlci1jb2xvcicpKTsKK30KKworZnVuY3Rpb24gdGVzdEJhc2ljKCkKK3sKKyAg
ICBkZWJ1ZygndGVzdCBhIHNjb3BlZCBzdHlsZSBpbiBkb2N1bWVudCBpcyBhcHBsaWVkIHRvIGEg
bm9kZSBpbiBzaGFkb3cgZG9tIHN1YnRyZWUgd2hlbiBhcHBseS1hdXRob3Itc3R5bGVzIGlzIHRy
dWUuJyk7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
IGRpdi5pbm5lckhUTUwgPSAnPGRpdj48c3R5bGUgc2NvcGVkPmRpdiB7IGJvcmRlcjogMXB4IHNv
bGlkIHJlZDsgfTwvc3R5bGU+PGRpdiBpZD0iaG9zdCI+PC9kaXY+PC9kaXY+JzsKKyAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisKKyAgICB2YXIgc2hhZG93ID0gbmV3IFdlYktp
dFNoYWRvd1Jvb3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvc3QiKSk7CisgICAgc2hhZG93
LmlubmVySFRNTCA9ICc8ZGl2IGlkPSJ0YXJnZXQiPnRhcmdldDwvZGl2Pic7CisgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCisgICAgLy8gYmVmb3JlCisgICAgc2hhZG93LmFw
cGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93Lmdl
dEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICAvLyBhZnRlcgorICAgIHNoYWRvdy5hcHBs
eUF1dGhvclN0eWxlcyA9IHRydWU7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93LmdldEVs
ZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRp
dik7Cit9CisKK2Z1bmN0aW9uIHRlc3RFbmNsb3NpbmdTaGFkb3coKQoreworICAgIGRlYnVnKCd0
ZXN0IGEgc3R5bGUgaW4gYW4gZW5jbG9zaW5nIHNoYWRvdyBkb20gdHJlZSBpcyBhcHBsaWVkIHRv
IGEgbm9kZSBpbiBzaGFkb3cgc3VidHJlZSB3aGVuIGFwcGx5LWF1dGhvci1zdHlsZXMgaXMgdHJ1
ZS4nKTsKKworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisKKyAgICB2YXIgb3V0ZXJTaGFkb3cg
PSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIG91dGVyU2hhZG93LmlubmVySFRNTCA9
ICc8c3R5bGU+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9PC9zdHlsZT48ZGl2IGlkPSJv
dXRlciI+b3V0ZXI8L2Rpdj4nOworICAgIHZhciBzaGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9v
dChvdXRlclNoYWRvdy5nZXRFbGVtZW50QnlJZCgib3V0ZXIiKSk7CisgICAgc2hhZG93LmlubmVy
SFRNTCA9ICc8ZGl2IGlkPSJ0YXJnZXQiPnRhcmdldDwvZGl2Pic7CisKKyAgICAvLyBiZWZvcmUK
KyAgICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKyAgICBkdW1wQ29tcHV0ZWRT
dHlsZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIC8vIGFmdGVyCisg
ICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKyAgICBkdW1wQ29tcHV0ZWRTdHls
ZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKyAgICBkb2N1bWVudC5ib2R5LnJl
bW92ZUNoaWxkKGRpdik7ICAgCit9CisKK2Z1bmN0aW9uIHRlc3RFbmNsb3NpbmdTaGFkb3dXaXRo
U2NvcGVkKCkKK3sKKyAgICBkZWJ1ZygndGVzdCBhIHNjb3BlZCBzdHlsZSBpbiBhbiBlbmNsb3Np
bmcgc2hhZG93IGRvbSB0cmVlIGlzIGFwcGxpZWQgdG8gYSBub2RlIGluIHNoYWRvdyBzdWJ0cmVl
IHdoZW4gYXBwbHktYXV0aG9yLXN0eWxlcyBpcyB0cnVlIGFuZCB0aGUgbm9kZSBpcyBpbiB0aGUg
c2NvcGUuJyk7CisKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCisgICAgdmFyIG91dGVyU2hh
ZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKKyAgICBvdXRlclNoYWRvdy5pbm5lckhU
TUwgPSAnPGRpdj48c3R5bGUgc2NvcGVkPmRpdiB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfTwv
c3R5bGU+PGRpdiBpZD0ib3V0ZXJJblNjb3BlIj5vdXRlckluU2NvcGU8L2Rpdj48L2Rpdj48ZGl2
IGlkPSJvdXRlck91dE9mU2NvcGUiPm91dGVyT3V0T2ZTY29wZTwvZGl2Pic7CisKKyAgICB2YXIg
c2hhZG93MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KG91dGVyU2hhZG93LmdldEVsZW1lbnRCeUlk
KCJvdXRlckluU2NvcGUiKSk7CisgICAgc2hhZG93MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0idGFy
Z2V0SW5TY29wZSI+dGFyZ2V0SW5TY29wZTwvZGl2Pic7CisgICAgdmFyIHNoYWRvdzIgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChvdXRlclNoYWRvdy5nZXRFbGVtZW50QnlJZCgib3V0ZXJPdXRPZlNj
b3BlIikpOworICAgIHNoYWRvdzIuaW5uZXJIVE1MID0gJzxkaXYgaWQ9InRhcmdldE91dE9mU2Nv
cGUiPnRhcmdldE91dE9mU2NvcGU8L2Rpdj4nOworCisgICAgLy8gYmVmb3JlCisgICAgc2hhZG93
MS5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworICAgIHNoYWRvdzIuYXBwbHlBdXRob3JTdHls
ZXMgPSBmYWxzZTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cxLmdldEVsZW1lbnRCeUlk
KCJ0YXJnZXRJblNjb3BlIikpOworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdzIuZ2V0RWxl
bWVudEJ5SWQoInRhcmdldE91dE9mU2NvcGUiKSk7CisKKyAgICAvLyBhZnRlcgorICAgIHNoYWRv
dzEuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlOworICAgIHNoYWRvdzIuYXBwbHlBdXRob3JTdHls
ZXMgPSB0cnVlOworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdzEuZ2V0RWxlbWVudEJ5SWQo
InRhcmdldEluU2NvcGUiKSk7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93Mi5nZXRFbGVt
ZW50QnlJZCgidGFyZ2V0T3V0T2ZTY29wZSIpKTsKKworICAgIGRvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQoZGl2KTsgICAKK30KKworZnVuY3Rpb24gdGVzdE5lc3RlZFNoYWRvdygpCit7CisgICAg
ZGVidWcoJ3Rlc3QgYSBzdHlsZSBpbiBhIHNoYWRvdyBzdWJ0cmVlIGlzIGFwcGxpZWQgdG8gYSBu
b2RlIGluIGl0cyBkZXNjZW5kYW50IHNoYWRvdyBzdWJ0cmVlIHdoZW4gYWxsIGFwcGx5LWF1dGhv
ci1zdHlsZXMgaW4gc2hhZG93IHN1YnRyZWVzIGJldHdlZW4gdGhlIHNoYWRvdyBzdWJ0cmVlIGFu
ZCB0aGUgZGVzY2VuZGFudCBhcmUgdHJ1ZS4nKTsKKworICAgIHZhciBkaXYgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBkaXYuaW5uZXJIVE1MID0gJzxzdHlsZSBzY29wZWQ+
ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgcmVkIH08L3N0eWxlPjxkaXYgaWQ9Imhvc3QiPjwvZGl2
Pic7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCisgICAgdmFyIG91dGVy
TW9zdFNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJob3N0IikpOworICAgIG91dGVyTW9zdFNoYWRvdy5pbm5lckhUTUwgPSAnPHN0eWxlPmRpdiB7
IGJvcmRlcjogMXB4IHNvbGlkIGJsdWU7IH08L3N0eWxlPjxkaXYgaWQ9Im91dGVyTW9zdCI+b3V0
ZXJNb3N0PC9kaXY+JzsKKyAgICBvdXRlck1vc3RTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBm
YWxzZTsKKworICAgIHZhciBvdXRlclNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KG91dGVy
TW9zdFNoYWRvdy5nZXRFbGVtZW50QnlJZCgib3V0ZXJNb3N0IikpOworICAgIG91dGVyU2hhZG93
LmlubmVySFRNTCA9ICc8ZGl2IGlkPSJvdXRlciI+b3V0ZXI8L2Rpdj4nOworICAgIG91dGVyU2hh
ZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisKKyAgICB2YXIgc2hhZG93ID0gbmV3IFdl
YktpdFNoYWRvd1Jvb3Qob3V0ZXJTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm91dGVyIikpOworICAg
IHNoYWRvdy5pbm5lckhUTUwgPSAnPGRpdiBpZD0idGFyZ2V0Ij50YXJnZXQ8L2Rpdj4nOworICAg
IHNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworCisgICAgLy8gTm8gc3R5bGVzIHNo
b3VsZCBiZSBhcHBsaWVkLgorICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50
QnlJZCgidGFyZ2V0IikpOworCisgICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsK
KyAgICAvLyBBIHN0eWxlIGluIGRvY3VtZW50IHNob3VsZCBiZSBhcHBsaWVkLgorICAgIGR1bXBD
b21wdXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworCisgICAgb3V0
ZXJTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlCisgICAgLy8gQSBzdHlsZSBpbiAnb3V0
ZXJNb3N0JyBzaGFkb3cgc2hvdWxkIGJlIGFwcGxpZWQuCisgICAgZHVtcENvbXB1dGVkU3R5bGUo
c2hhZG93LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICBkb2N1bWVudC5ib2R5LnJl
bW92ZUNoaWxkKGRpdik7ICAgCit9CisKK2Z1bmN0aW9uIHRlc3RNdWx0aXBsZVNoYWRvdygpCit7
CisgICAgZGVidWcoJ3Rlc3QgYSBzdHlsZSBpbiBkb2N1bWVudCBpcyBhcHBsaWVkIHRvIG5vZGVz
IGluIG11bHRpcGxlIHNoYWRvdyBzdWJ0cmVlcyB3aGVuIGFwcGx5LWF1dGhvci1zdHlsZXMgaXMg
dHJ1ZS4nKTsKKworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICBkaXYuaW5uZXJIVE1MID0gJzxzdHlsZSBzY29wZWQ+ZGl2IHsgYm9yZGVyOiAxcHggc29s
aWQgcmVkIH08L3N0eWxlPjxkaXY+dGVzdDwvZGl2Pic7CisgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChkaXYpOworCisgICAgdmFyIG9sZGVzdFNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KGRpdik7CisgICAgb2xkZXN0U2hhZG93LmlubmVySFRNTCA9ICc8c2hhZG93Pjwvc2hhZG93
PjxkaXYgaWQ9Im9sZGVzdFNoYWRvdyI+b2xkZXN0U2hhZG93PC9kaXY+JzsKKyAgICBvbGRlc3RT
aGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKworICAgIHZhciBvbGRlclNoYWRvdyA9
ICBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIG9sZGVyU2hhZG93LmlubmVySFRNTCA9
ICc8c3R5bGUgc2NvcGVkPmRpdiB7IGJvcmRlcjogMXB4IHNvbGlkIGJsdWUgfTwvc3R5bGU+PHNo
YWRvdz48L3NoYWRvdz48ZGl2IGlkPSJvbGRlclNoYWRvdyI+b2xkZXJTaGFkb3c8L2Rpdj4nOwor
ICAgIG9sZGVyU2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisKKyAgICB2YXIgc2hh
ZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKKyAgICBzaGFkb3cuaW5uZXJIVE1MID0g
JzxzaGFkb3c+PC9zaGFkb3c+PGRpdiBpZD0idGFyZ2V0Ij5zaGFkb3c8L2Rpdj4nOworICAgIHNo
YWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworCisgICAgLy8gYmVmb3JlCisgICAgZHVt
cENvbXB1dGVkU3R5bGUob2xkZXN0U2hhZG93LmdldEVsZW1lbnRCeUlkKCJvbGRlc3RTaGFkb3ci
KSk7CisgICAgZHVtcENvbXB1dGVkU3R5bGUob2xkZXJTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm9s
ZGVyU2hhZG93IikpOworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJ
ZCgidGFyZ2V0IikpOworCisgICAgLy8gZG9jdW1lbnQgLS0tKy0tLSBvbGRlc3RTaGFkb3cKKyAg
ICAvLyAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgKy0tLSBvbGRlclNoYWRvdwor
ICAgIC8vICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICArLS0tIHNoYWRvdworCisg
ICAgLy8gYXBwbHktYXV0aG9yLXN0eWxlcyBhZmZlY3RzIGJldHdlZW4gc2hhZG93IGFuZCBkb2N1
bWVudC4KKyAgICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlOworICAgIGR1bXBDb21w
dXRlZFN0eWxlKG9sZGVzdFNoYWRvdy5nZXRFbGVtZW50QnlJZCgib2xkZXN0U2hhZG93IikpOwor
ICAgIGR1bXBDb21wdXRlZFN0eWxlKG9sZGVyU2hhZG93LmdldEVsZW1lbnRCeUlkKCJvbGRlclNo
YWRvdyIpKTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoInRh
cmdldCIpKTsKKworICAgIC8vIGFwcGx5LWF1dGhvci1zdHlsZXMgYWZmZWN0cyBiZXR3ZWVuIG9s
ZGVyIHNoYWRvdyBhbmQgZG9jdW1lbnQuCisgICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0g
ZmFsc2U7CisgICAgb2xkZXJTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlOworICAgIGR1
bXBDb21wdXRlZFN0eWxlKG9sZGVzdFNoYWRvdy5nZXRFbGVtZW50QnlJZCgib2xkZXN0U2hhZG93
IikpOworICAgIGR1bXBDb21wdXRlZFN0eWxlKG9sZGVyU2hhZG93LmdldEVsZW1lbnRCeUlkKCJv
bGRlclNoYWRvdyIpKTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxlbWVudEJ5
SWQoInRhcmdldCIpKTsKKworICAgIC8vIGFwcGx5LWF1dGhvci1zdHlsZXMgYWZmZWN0cyBiZXR3
ZWVuIG9sZGVzdCBzaGFkb3cgYW5kIGRvY3VtZW50LgorICAgIG9sZGVyU2hhZG93LmFwcGx5QXV0
aG9yU3R5bGVzID0gZmFsc2U7CisgICAgb2xkZXN0U2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0g
dHJ1ZTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShvbGRlc3RTaGFkb3cuZ2V0RWxlbWVudEJ5SWQo
Im9sZGVzdFNoYWRvdyIpKTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShvbGRlclNoYWRvdy5nZXRF
bGVtZW50QnlJZCgib2xkZXJTaGFkb3ciKSk7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93
LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNo
aWxkKGRpdik7Cit9CisKK2Z1bmN0aW9uIHRlc3RPcmRlck9mQXBwbHlTdHlsZSgpCit7CisgICAg
ZGVidWcoJ3Rlc3QgYSBzdHlsZSBpcyBhcHBsaWVkIGluIGRvY3VtZW50IG9yZGVyLicpOworCisg
ICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRpdi5pbm5l
ckhUTUwgPSAnPHN0eWxlIHNjb3BlZD5kaXYgeyBib3JkZXI6IDFweCBzb2xpZCByZWQgfTwvc3R5
bGU+PGRpdiBpZD0iaG9zdCI+PC9kaXY+JzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGRpdik7CisKKyAgICB2YXIgb3V0ZXJNb3N0U2hhZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvc3QiKSk7CisgICAgb3V0ZXJNb3N0U2hhZG93Lmlu
bmVySFRNTCA9ICc8c3R5bGU+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgYmx1ZTsgfTwvc3R5bGU+
PGRpdiBpZD0ib3V0ZXJNb3N0Ij5vdXRlck1vc3Q8L2Rpdj4nOworICAgIG91dGVyTW9zdFNoYWRv
dy5hcHBseUF1dGhvclN0eWxlcyA9IHRydWU7CisKKyAgICB2YXIgb3V0ZXJTaGFkb3cgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChvdXRlck1vc3RTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm91dGVyTW9z
dCIpKTsKKyAgICBvdXRlclNoYWRvdy5pbm5lckhUTUwgPSAnPHN0eWxlPmRpdiB7IGJvcmRlcjog
MXB4IHNvbGlkIGdyZWVuOyB9PC9zdHlsZT48ZGl2IGlkPSJvdXRlciI+b3V0ZXI8L2Rpdj4nOwor
ICAgIG91dGVyU2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKworICAgIHZhciBzaGFk
b3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChvdXRlclNoYWRvdy5nZXRFbGVtZW50QnlJZCgib3V0
ZXIiKSk7CisgICAgc2hhZG93LmlubmVySFRNTCA9ICc8c3R5bGU+ZGl2IHsgYm9yZGVyOiAxcHgg
c29saWQgeWVsbG93OyB9PC9zdHlsZT48ZGl2IGlkPSJ0YXJnZXQiPnRhcmdldDwvZGl2Pic7Cisg
ICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKworICAgIC8vIFRoZSBsYXN0IHNj
b3BlZCBzdHlsZSBzaG91bGQgYmUgYXBwbGllZC4KKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFk
b3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIHNoYWRvdy5pbm5lckhUTUwgPSAn
PGRpdiBpZD0idGFyZ2V0Ij50YXJnZXQ8L2Rpdj4nOworICAgIC8vIFRoZSBvdXRlcidzIHNjb3Bl
ZCBzdHlsZSBzaG91bGQgYmUgYXBwbGllZC4KKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cu
Z2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hp
bGQoZGl2KTsgICAKK30KKworZnVuY3Rpb24gcnVuVGVzdHMoKSB7CisgICAgdGVzdEJhc2ljKCk7
CisgICAgdGVzdEVuY2xvc2luZ1NoYWRvdygpOworICAgIHRlc3RFbmNsb3NpbmdTaGFkb3dXaXRo
U2NvcGVkKCk7CisgICAgdGVzdE5lc3RlZFNoYWRvdygpOworICAgIHRlc3RNdWx0aXBsZVNoYWRv
dygpOworICAgIHRlc3RPcmRlck9mQXBwbHlTdHlsZSgpOworfQorCis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148042</attachid>
            <date>2012-06-17 20:18:26 -0700</date>
            <delta_ts>2012-06-18 23:14:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89061-20120618121825.patch</filename>
            <type>text/plain</type>
            <size>21135</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzBiNzk3ZDM3ZDY1ZGQ3
YTgxM2NmN2RmODI2ZGE1MDRlMDYxZjExNi4uOWEyNzc0MWY0NzVkNWE0NzY4MmY5MWM2MjAwNTk2
YWYxOWE1ZWYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA2LTEzICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBhcHBseUF1dGhvclN0
eWxlcyBtYWtlcyBydWxlcyBkZWNsYXJlZCBpbiBhbGwgZW5jbG9zaW5nIHNoYWRvdyBkb20gc3Vi
dHJlZXMgYXBwbGljYWJsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg5MDYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRml4aW5nIGFwcGx5LWF1dGhvci1zdHlsZXMgYnVnLiBJZiB0aGVyZSBleGlzdHMg
c29tZSBzaGFkb3cgc3VidHJlZSBBCisgICAgICAgIGFuZCBBIGhhcyBhcHBseS1hdXRob3Itc3R5
bGVzIGZsYWcgc2V0LCB3aGV0aGVyIHNvbWUgcnVsZXMgZGVjbGFyZWQgaW4KKyAgICAgICAgYSB0
cmVlIEIgaXMgYXBwbGljYWJsZSBpbiBBIG9yIG5vdCBkZXBlbmRzIG9uOgorICAgICAgICAtIHRo
ZSB0cmVlIEIgZW5jbG9zZXMgdGhlIHRyZWUgQSwgYW5kCisgICAgICAgIC0gYWxsIHRyZWVzIHdo
aWNoIGVuY2xvc2UgQSBhbmQgYXJlIGVuY2xvc2VkIGJ5IEIgaGFzCisgICAgICAgICAgYXBwbHkt
YXV0aG9yLXN0eWxlcyBzZXQuCisgICAgICAgIGMuZi4KKyAgICAgICAgaHR0cDovL2R2Y3MudzMu
b3JnL2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwj
c3R5bGVzCisgICAgICAgIEhvd2V2ZXIgdGhlIHNlY29uZCBydWxlIHdhcyBub3QgaW1wbGVtZW50
ZWQuCisKKyAgICAgICAgVGVzdDogZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1h
cHBseS1hdXRob3Itc3R5bGVzLmh0bWwKKworICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnNldHVwU2NvcGVTdGFjayk6Cisg
ICAgICAgIE1vZGlmaWVkIHRvIGFkZCB0cmVlc2NvcGUgZ3JvdXAgbnVtYmVyIHRvIG1fc2NvcGVT
dGFjay4gVGhlIHRyZWVzY29wZQorICAgICAgICBncm91cCBtZWFuczogaWYgcnVsZXMgaGFzIHRo
ZSBzYW1lIHRyZWVzY29wZSBncm91cCBudW1iZXIsIGFsbCB0aGUKKyAgICAgICAgcnVsZXMgc2hv
dWxkIGJlIGFwcGxpZWQgaW4gbWF0Y2hTY29wZWRBdXRob3JSdWxlcy4KKyAgICAgICAgSWYgYWxs
IHRyZWUgc2NvcGUncyBhcHBseS1hdXRob3Itc3R5bGVzIGZsYWdzIGFyZSBub3Qgc2V0LAorICAg
ICAgICB0aGUgZ3JvdXAgbnVtYmVyIGlzIGFsbW9zdCB0aGUgc2FtZSBhcyB0cmVlU2NvcGUoKS4g
UnVsZXMgaW4gZGlmZmVyZW50CisgICAgICAgIHRyZWUgc2NvcGVzIGhhdmUgZGlmZmVyZW50IGdy
b3VwIG51bWJlcnMuCisgICAgICAgIElmIHNvbWUgdHJlZSBzY29wZSdzIGFwcGx5LWF1dGhvci1z
dHlsZXMgaXMgc2V0LCBydWxlcyBpbiB0aGUgdHJlZQorICAgICAgICBzY29wZSBoYXMgdGhlIHNh
bWUgZ3JvdXBpbmcgbnVtYmVyIGFzIGl0cyBwYXJlbnQgdHJlZSBzY29wZS4KKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnB1c2hTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjpwb3BTY29wZSk6CisgICAgICAgIEFkZGVkIHRoZSBjb2RlIGZvciB1cGRhdGlu
ZyBtX3Njb3BlU3RhY2tQYXJlbnRHcm91cC4gVGhlIG1lbWJlcgorICAgICAgICB2YXJpYWJsZSBr
ZWVwcyBtX3Njb3BlU3RhY2tQYXJlbnQncyB0cmVlIHNjb3BlJ3MgZ3JvdXBpbmcgbnVtYmVyLgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6bWF0Y2hTY29wZWRBdXRob3JSdWxlcyk6
CisgICAgICAgIE1vZGlmaWVkIHRvIGNvbnNpZGVyIHRyZWUgc2NvcGUgZ3JvdXBpbmcuIEZpcnN0
bHkgYXBwbHlpbmcKKyAgICAgICAgc2NvcGVkIHN0eWxlcyBkZWNsYXJlZCBpbiBkb2N1bWVudCBp
ZiBhcHBseS1hdXRob3Itc3R5bGVzIGlzIHNldC4KKyAgICAgICAgTmV4dCwgYXBwbHlpbmcgc2Nv
cGVkIHN0eWxlcyBkZWNsYXJlZCBpbiBzaGFkb3cgZG9tIHN1YnRyZWUgd2l0aAorICAgICAgICBj
b25zaWRlcmluZyB0cmVlIHNjb3BlIGdyb3VwaW5nIG51bWJlciwgaS5lLiBjb25zaWRlcmluZwor
ICAgICAgICBhcHBseS1hdXRob3Itc3R5bGVzIGZsYWcuCisgICAgICAgICogY3NzL1N0eWxlUmVz
b2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlNjb3BlU3RhY2tGcmFt
ZTo6U2NvcGVTdGFja0ZyYW1lKToKKyAgICAgICAgKFNjb3BlU3RhY2tGcmFtZSk6CisgICAgICAg
IEFkZGVkIG1fc2NvcGVHcm91cCB0byBrZWVwIGFwcGx5QXV0aG9yU3R5bGVzIGluZm9ybWF0aW9u
LgorICAgICAgICBtX3Njb3BlR3JvdXAgaW5jcmVtZW50cyBieSAxIGlmIHNoYWRvdyByb290IGlz
IGdpdmVuIGFuZCBpdCBoYXMKKyAgICAgICAgYXBwbHlBdXRob3JTdHlsZXMgdW5zZXQuCisgICAg
ICAgIE5vdyBydWxlcyBpbiB0aGUgc2FtZSBzY29wZUdyb3VwIHNob3VsZCBiZSBhcHBsaWVkLgor
ICAgICAgICAoU3R5bGVSZXNvbHZlcik6CisgICAgICAgIEFkZGVkIG1fc2NvcGVTdGFja1BhcmVu
dEdyb3VwLgorCiAyMDEyLTA2LTE3ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCmluZGV4IGYxZWRjMWI0ZmUzZjMzOTJiYTA0NWU1Zjg5NTE2YzM0NmM5M2E1N2Yu
LmQxNzhmYjA1ZmYzYzExMmYzMmM1Y2IwZTEzNGI3ZjE5MzBkMmVjZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTM3Miw2ICszNzIsNyBAQCBTdHlsZVJlc29sdmVyOjpT
dHlsZVJlc29sdmVyKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBtYXRjaEF1dGhvckFuZFVzZXJT
dHlsZXMpCiAjZW5kaWYKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQogICAgICwgbV9zY29wZVN0
YWNrUGFyZW50KDApCisgICAgLCBtX3Njb3BlU3RhY2tQYXJlbnRHcm91cCgwKQogI2VuZGlmCiB7
CiAgICAgRWxlbWVudCogcm9vdCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKQEAgLTU2
NCwxMyArNTY1LDE3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6c2V0dXBTY29wZVN0YWNrKGNvbnN0
IENvbnRhaW5lck5vZGUqIHBhcmVudCkKICAgICBBU1NFUlQoIW1fc2NvcGVkQXV0aG9yU3R5bGVz
LmlzRW1wdHkoKSk7CiAKICAgICBtX3Njb3BlU3RhY2suc2hyaW5rKDApOworICAgIGludCBzY29w
ZUdyb3VwID0gMDsKICAgICBmb3IgKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0gcGFyZW50
OyBzY29wZTsgc2NvcGUgPSBzY29wZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7CiAgICAgICAgIFJ1
bGVTZXQqIHJ1bGVTZXQgPSBydWxlU2V0Rm9yU2NvcGUoc2NvcGUpOwogICAgICAgICBpZiAocnVs
ZVNldCkKLSAgICAgICAgICAgIG1fc2NvcGVTdGFjay5hcHBlbmQoU2NvcGVTdGFja0ZyYW1lKHNj
b3BlLCBydWxlU2V0KSk7CisgICAgICAgICAgICBtX3Njb3BlU3RhY2suYXBwZW5kKFNjb3BlU3Rh
Y2tGcmFtZShzY29wZSwgc2NvcGVHcm91cCwgcnVsZVNldCkpOworICAgICAgICBpZiAoc2NvcGUt
PmlzU2hhZG93Um9vdCgpICYmICF0b1NoYWRvd1Jvb3Qoc2NvcGUpLT5hcHBseUF1dGhvclN0eWxl
cygpKQorICAgICAgICAgICAgLS1zY29wZUdyb3VwOwogICAgIH0KICAgICBtX3Njb3BlU3RhY2su
cmV2ZXJzZSgpOwogICAgIG1fc2NvcGVTdGFja1BhcmVudCA9IHBhcmVudDsKKyAgICBtX3Njb3Bl
U3RhY2tQYXJlbnRHcm91cCA9IDA7CiB9CiAKIHZvaWQgU3R5bGVSZXNvbHZlcjo6cHVzaFNjb3Bl
KGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZVBh
cmVudCkKQEAgLTU4NywxMCArNTkyLDEyIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6cHVzaFNjb3Bl
KGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBjb25zdCBDb250YWluZXJOb2RlKiBzCiAgICAg
ICAgIHNldHVwU2NvcGVTdGFjayhzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAg
aWYgKHNjb3BlLT5pc1NoYWRvd1Jvb3QoKSAmJiAhdG9TaGFkb3dSb290KHNjb3BlKS0+YXBwbHlB
dXRob3JTdHlsZXMoKSkKKyAgICAgICAgKyttX3Njb3BlU3RhY2tQYXJlbnRHcm91cDsKICAgICAv
LyBPdGhlcndpc2UganVzdCBwdXNoIHRoZSBwYXJlbnQgb250byB0aGUgc3RhY2suCiAgICAgUnVs
ZVNldCogcnVsZVNldCA9IHJ1bGVTZXRGb3JTY29wZShzY29wZSk7CiAgICAgaWYgKHJ1bGVTZXQp
Ci0gICAgICAgIG1fc2NvcGVTdGFjay5hcHBlbmQoU2NvcGVTdGFja0ZyYW1lKHNjb3BlLCBydWxl
U2V0KSk7CisgICAgICAgIG1fc2NvcGVTdGFjay5hcHBlbmQoU2NvcGVTdGFja0ZyYW1lKHNjb3Bl
LCBtX3Njb3BlU3RhY2tQYXJlbnRHcm91cCwgcnVsZVNldCkpOwogICAgIG1fc2NvcGVTdGFja1Bh
cmVudCA9IHNjb3BlOwogfQogCkBAIC02MDAsNiArNjA3LDggQEAgdm9pZCBTdHlsZVJlc29sdmVy
Ojpwb3BTY29wZShjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkKICAgICBpZiAoc2NvcGVTdGFj
a0lzQ29uc2lzdGVudChzY29wZSkpIHsKICAgICAgICAgaWYgKCFtX3Njb3BlU3RhY2suaXNFbXB0
eSgpICYmIG1fc2NvcGVTdGFjay5sYXN0KCkubV9zY29wZSA9PSBzY29wZSkKICAgICAgICAgICAg
IG1fc2NvcGVTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgIGlmIChzY29wZS0+aXNTaGFkb3dS
b290KCkgJiYgIXRvU2hhZG93Um9vdChzY29wZSktPmFwcGx5QXV0aG9yU3R5bGVzKCkpCisgICAg
ICAgICAgICAtLW1fc2NvcGVTdGFja1BhcmVudEdyb3VwOwogICAgICAgICBtX3Njb3BlU3RhY2tQ
YXJlbnQgPSBzY29wZS0+cGFyZW50T3JIb3N0Tm9kZSgpOwogICAgIH0KIH0KQEAgLTkyNiwyMiAr
OTM1LDM4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hTY29wZWRBdXRob3JSdWxlcyhNYXRj
aFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0CiAgICAgTWF0Y2hPcHRpb25zIG9wdGlv
bnMoaW5jbHVkZUVtcHR5UnVsZXMpOwogCiAgICAgLy8gTWF0Y2ggc2NvcGVkIGF1dGhvciBydWxl
cyBieSB0cmF2ZXJzaW5nIHRoZSBzY29wZWQgZWxlbWVudCBzdGFjayAocmVidWlsZCBpdCBpZiBp
dCBnb3QgaW5jb25zaXN0ZW50KS4KLSAgICBjb25zdCBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBt
X2VsZW1lbnQtPnBhcmVudE9ySG9zdE5vZGUoKTsKLSAgICBpZiAoIXNjb3BlU3RhY2tJc0NvbnNp
c3RlbnQocGFyZW50KSkKLSAgICAgICAgc2V0dXBTY29wZVN0YWNrKHBhcmVudCk7Ci0gICAgZm9y
IChzaXplX3QgaSA9IG1fc2NvcGVTdGFjay5zaXplKCk7IGk7IC0taSkgewotICAgICAgICBjb25z
dCBTY29wZVN0YWNrRnJhbWUmIGZyYW1lID0gbV9zY29wZVN0YWNrW2kgLSAxXTsKKyAgICBpZiAo
IXNjb3BlU3RhY2tJc0NvbnNpc3RlbnQobV9lbGVtZW50KSkKKyAgICAgICAgc2V0dXBTY29wZVN0
YWNrKG1fZWxlbWVudCk7CisKKyAgICB1bnNpZ25lZCBpbnQgZmlyc3RTaGFkb3dTY29wZUluZGV4
ID0gMDsKKyAgICBpZiAobV9lbGVtZW50LT50cmVlU2NvcGUoKS0+YXBwbHlBdXRob3JTdHlsZXMo
KSkgeworICAgICAgICB1bnNpZ25lZCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbV9zY29w
ZVN0YWNrLnNpemUoKSAmJiAhbV9zY29wZVN0YWNrW2ldLm1fc2NvcGUtPmlzSW5TaGFkb3dUcmVl
KCk7ICsraSkgeworICAgICAgICAgICAgY29uc3QgU2NvcGVTdGFja0ZyYW1lJiBmcmFtZSA9IG1f
c2NvcGVTdGFja1tpXTsKKyAgICAgICAgICAgIG9wdGlvbnMuc2NvcGUgPSBmcmFtZS5tX3Njb3Bl
OworICAgICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoZnJhbWUubV9ydWxlU2V0LCByZXN1
bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwg
b3B0aW9ucyk7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihmcmFt
ZS5tX3J1bGVTZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2Vz
Lmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKKyAgICAgICAgfQorICAgICAgICBmaXJzdFNoYWRv
d1Njb3BlSW5kZXggPSBpOworICAgIH0KKworICAgIGlmICghbV9lbGVtZW50LT5pc0luU2hhZG93
VHJlZSgpIHx8IG1fc2NvcGVTdGFjay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IHVuc2lnbmVkIHNjb3BlZEluZGV4ID0gbV9zY29wZVN0YWNrLnNpemUoKTsKKyAgICBpbnQgc2Nv
cGVHcm91cCA9IG1fc2NvcGVTdGFja1BhcmVudEdyb3VwOworICAgIGZvciAoIDsgc2NvcGVkSW5k
ZXggPiBmaXJzdFNoYWRvd1Njb3BlSW5kZXg7IC0tc2NvcGVkSW5kZXgpIHsKKyAgICAgICAgaWYg
KHNjb3BlR3JvdXAgIT0gbV9zY29wZVN0YWNrW3Njb3BlZEluZGV4IC0gMV0ubV9zY29wZUdyb3Vw
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLy8gUnVsZXNldCBmb3IgYW5jZXN0
b3Igbm9kZXMgc2hvdWxkIGJlIGFwcGxpZWQgZmlyc3QuCisgICAgZm9yICh1bnNpZ25lZCBpID0g
c2NvcGVkSW5kZXg7IGkgPCBtX3Njb3BlU3RhY2suc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29u
c3QgU2NvcGVTdGFja0ZyYW1lJiBmcmFtZSA9IG1fc2NvcGVTdGFja1tpXTsKICAgICAgICAgb3B0
aW9ucy5zY29wZSA9IGZyYW1lLm1fc2NvcGU7CiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVz
KGZyYW1lLm1fcnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5y
YW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwogICAgICAgICBjb2xsZWN0TWF0Y2hpbmdS
dWxlc0ZvclJlZ2lvbihmcmFtZS5tX3J1bGVTZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JS
dWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKICAgICB9Ci0gICAg
Ly8gQWxzbyBpbmNsdWRlIHRoZSBjdXJyZW50IGVsZW1lbnQuCi0gICAgUnVsZVNldCogcnVsZVNl
dCA9IHJ1bGVTZXRGb3JTY29wZShtX2VsZW1lbnQpOwotICAgIGlmIChydWxlU2V0KSB7Ci0gICAg
ICAgIG9wdGlvbnMuc2NvcGUgPSBtX2VsZW1lbnQ7Ci0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1
bGVzKHJ1bGVTZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2Vz
Lmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNG
b3JSZWdpb24ocnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5y
YW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwotICAgIH0KICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKHJlc3VsdCk7CiAgICAgVU5VU0VEX1BBUkFNKGluY2x1ZGVFbXB0eVJ1bGVzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDlmOWNjMmNhNDVhY2RmMDc5NTRlODIyZGEy
NTBkNTAzODM3MWY3M2EuLjc1NWNhMDZhY2Y4ZDM0MzBjNWNjMjQxOGU5NTM5YmNkNDE1NmZlMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtNTMxLDkgKzUzMSwxMCBAQCBwcml2
YXRlOgogICAgIFNjb3BlZFJ1bGVTZXRNYXAgbV9zY29wZWRBdXRob3JTdHlsZXM7CiAgICAgCiAg
ICAgc3RydWN0IFNjb3BlU3RhY2tGcmFtZSB7Ci0gICAgICAgIFNjb3BlU3RhY2tGcmFtZSgpIDog
bV9zY29wZSgwKSwgbV9ydWxlU2V0KDApIHsgfQotICAgICAgICBTY29wZVN0YWNrRnJhbWUoY29u
c3QgQ29udGFpbmVyTm9kZSogc2NvcGUsIFJ1bGVTZXQqIHJ1bGVTZXQpIDogbV9zY29wZShzY29w
ZSksIG1fcnVsZVNldChydWxlU2V0KSB7IH0KKyAgICAgICAgU2NvcGVTdGFja0ZyYW1lKCkgOiBt
X3Njb3BlKDApLCBtX3Njb3BlR3JvdXAoMCksIG1fcnVsZVNldCgwKSB7IH0KKyAgICAgICAgU2Nv
cGVTdGFja0ZyYW1lKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBpbnQgc2NvcGVHcm91cCwg
UnVsZVNldCogcnVsZVNldCkgOiBtX3Njb3BlKHNjb3BlKSwgbV9zY29wZUdyb3VwKHNjb3BlR3Jv
dXApLCBtX3J1bGVTZXQocnVsZVNldCkgeyB9CiAgICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUq
IG1fc2NvcGU7CisgICAgICAgIGludCBtX3Njb3BlR3JvdXA7CiAgICAgICAgIFJ1bGVTZXQqIG1f
cnVsZVNldDsKICAgICB9OwogICAgIC8vIFZlY3RvciAodXNlZCBhcyBzdGFjaykgdGhhdCBrZWVw
cyB0cmFjayBvZiBzY29waW5nIGVsZW1lbnRzIChpLmUuLCBlbGVtZW50cyB3aXRoIGEgPHN0eWxl
IHNjb3BlZD4gY2hpbGQpCkBAIC01NDIsNiArNTQzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBFbGVt
ZW50IGxhc3Qgc2VlbiBhcyBwYXJlbnQgZWxlbWVudCB3aGVuIHVwZGF0aW5nIG1fc2NvcGluZ0Vs
ZW1lbnRTdGFjay4KICAgICAvLyBUaGlzIGlzIHVzZWQgdG8gZGVjaWRlIHdoZXRoZXIgbV9zY29w
aW5nRWxlbWVudFN0YWNrIGlzIGNvbnNpc3RlbnQsIHNlcGFyYXRlbHkgZnJvbSBTZWxlY3RvckNo
ZWNrZXI6Om1fcGFyZW50U3RhY2suCiAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogbV9zY29wZVN0
YWNrUGFyZW50OworICAgIGludCBtX3Njb3BlU3RhY2tQYXJlbnRHcm91cDsKICNlbmRpZgogCiAg
ICAgZnJpZW5kIGNsYXNzIFN0eWxlQnVpbGRlcjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiZTFhNTZjNzdiM2IzYmUyNGFm
MzFmNGRmNjAwYmVlZjk2ODQ4NDIwLi44ZGQzNWE1ZmEyMDA3NzM1OTQzYjY0YmE4ZGI2ZDhhMmMx
OWEyZTUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDYtMTMgIFRha2FzaGkgU2FrYW1v
dG8gIDx0YXNha0Bnb29nbGUuY29tPgorCisgICAgICAgIGFwcGx5QXV0aG9yU3R5bGVzIG1ha2Vz
IHJ1bGVzIGRlY2xhcmVkIGluIGFsbCBlbmNsb3Npbmcgc2hhZG93IGRvbSBzdWJ0cmVlcyBhcHBs
aWNhYmxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODkwNjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYXBwbHktYXV0aG9yLXN0eWxlcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHls
ZS1zY29wZWQtYXBwbHktYXV0aG9yLXN0eWxlcy5odG1sOiBBZGRlZC4KKwogMjAxMi0wNi0xNyAg
SnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBjb2xz
cGFuIGluIHRhYmxlLWxheW91dDpmaXhlZCBkb2VzIG5vdCBhZGQgdXAgd2lkdGhzIHByb3Blcmx5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2Nv
cGVkLWFwcGx5LWF1dGhvci1zdHlsZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1hcHBseS1hdXRob3Itc3R5bGVzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42YTYzZDlhYTg0MzQ3ZDY3MGU2MGZlODRjZTVlZDk2ZTNkNjNhMmI1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0
eWxlLXNjb3BlZC1hcHBseS1hdXRob3Itc3R5bGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM4
IEBACitQQVNTIHdpbmRvdy5pbnRlcm5hbHMgaXMgZGVmaW5lZC4KK1BBU1Mgd2luZG93LmludGVy
bmFscy5lbnN1cmVTaGFkb3dSb290IGlzIGRlZmluZWQuCitQQVNTIFdlYktpdFNoYWRvd1Jvb3Qg
aXMgZGVmaW5lZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQordGVzdCBhIHNjb3BlZCBzdHlsZSBpbiBkb2N1bWVudCBpcyBhcHBsaWVkIHRvIGEgbm9k
ZSBpbiBzaGFkb3cgZG9tIHN1YnRyZWUgd2hlbiBhcHBseS1hdXRob3Itc3R5bGVzIGlzIHRydWUu
Cit0YXJnZXQ6IHJnYigwLCAwLCAwKQordGFyZ2V0OiByZ2IoMjU1LCAwLCAwKQordGVzdCBhIHN0
eWxlIGluIGFuIGVuY2xvc2luZyBzaGFkb3cgZG9tIHRyZWUgaXMgYXBwbGllZCB0byBhIG5vZGUg
aW4gc2hhZG93IHN1YnRyZWUgd2hlbiBhcHBseS1hdXRob3Itc3R5bGVzIGlzIHRydWUuCit0YXJn
ZXQ6IHJnYigwLCAwLCAwKQordGFyZ2V0OiByZ2IoMjU1LCAwLCAwKQordGVzdCBhIHNjb3BlZCBz
dHlsZSBpbiBhbiBlbmNsb3Npbmcgc2hhZG93IGRvbSB0cmVlIGlzIGFwcGxpZWQgdG8gYSBub2Rl
IGluIHNoYWRvdyBzdWJ0cmVlIHdoZW4gYXBwbHktYXV0aG9yLXN0eWxlcyBpcyB0cnVlIGFuZCB0
aGUgbm9kZSBpcyBpbiB0aGUgc2NvcGUuCit0YXJnZXRJblNjb3BlOiByZ2IoMCwgMCwgMCkKK3Rh
cmdldE91dE9mU2NvcGU6IHJnYigwLCAwLCAwKQordGFyZ2V0SW5TY29wZTogcmdiKDI1NSwgMCwg
MCkKK3RhcmdldE91dE9mU2NvcGU6IHJnYigwLCAwLCAwKQordGVzdCBhIHN0eWxlIGluIGEgc2hh
ZG93IHN1YnRyZWUgaXMgYXBwbGllZCB0byBhIG5vZGUgaW4gaXRzIGRlc2NlbmRhbnQgc2hhZG93
IHN1YnRyZWUgd2hlbiBhbGwgYXBwbHktYXV0aG9yLXN0eWxlcyBpbiBzaGFkb3cgc3VidHJlZXMg
YmV0d2VlbiB0aGUgc2hhZG93IHN1YnRyZWUgYW5kIHRoZSBkZXNjZW5kYW50IGFyZSB0cnVlLgor
dGFyZ2V0OiByZ2IoMCwgMCwgMCkKK3RhcmdldDogcmdiKDI1NSwgMCwgMCkKK3RhcmdldDogcmdi
KDAsIDAsIDI1NSkKK3Rlc3QgYSBzdHlsZSBpbiBkb2N1bWVudCBpcyBhcHBsaWVkIHRvIG5vZGVz
IGluIG11bHRpcGxlIHNoYWRvdyBzdWJ0cmVlcyB3aGVuIGFwcGx5LWF1dGhvci1zdHlsZXMgaXMg
dHJ1ZS4KK29sZGVzdFNoYWRvdzogcmdiKDAsIDAsIDApCitvbGRlclNoYWRvdzogcmdiKDAsIDAs
IDI1NSkKK3RhcmdldDogcmdiKDAsIDAsIDApCitvbGRlc3RTaGFkb3c6IHJnYigwLCAwLCAwKQor
b2xkZXJTaGFkb3c6IHJnYigwLCAwLCAyNTUpCit0YXJnZXQ6IHJnYigyNTUsIDAsIDApCitvbGRl
c3RTaGFkb3c6IHJnYigwLCAwLCAwKQorb2xkZXJTaGFkb3c6IHJnYigwLCAwLCAyNTUpCit0YXJn
ZXQ6IHJnYigwLCAwLCAwKQorb2xkZXN0U2hhZG93OiByZ2IoMjU1LCAwLCAwKQorb2xkZXJTaGFk
b3c6IHJnYigwLCAwLCAyNTUpCit0YXJnZXQ6IHJnYigwLCAwLCAwKQordGVzdCBhIHN0eWxlIGlz
IGFwcGxpZWQgaW4gZG9jdW1lbnQgb3JkZXIuCit0YXJnZXQ6IHJnYigyNTUsIDI1NSwgMCkKK3Rh
cmdldDogcmdiKDAsIDEyOCwgMCkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
c3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1hcHBseS1hdXRob3Itc3R5bGVzLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWFwcGx5LWF1dGhvci1z
dHlsZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDQ4NzllMDNjYmMyNjFmNjI2YzFiNmI2NGNkNWE1YWFi
YTU1ZWIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2Nv
cGVkL3N0eWxlLXNjb3BlZC1hcHBseS1hdXRob3Itc3R5bGVzLmh0bWwKQEAgLTAsMCArMSwyMjUg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2RvbS9zaGFkb3cvcmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKworc2hvdWxkQmVEZWZpbmVkKCJ3aW5kb3cuaW50ZXJuYWxzIik7Citz
aG91bGRCZURlZmluZWQoIndpbmRvdy5pbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9vdCIpOworc2hv
dWxkQmVEZWZpbmVkKCJXZWJLaXRTaGFkb3dSb290Iik7CisKK2Z1bmN0aW9uIGR1bXBDb21wdXRl
ZFN0eWxlKG5vZGUpCit7CisgICAgZGVidWcobm9kZS5pZCArICI6ICIgKyBkb2N1bWVudC5kZWZh
dWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKG5vZGUsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2Jv
cmRlci1jb2xvcicpKTsKK30KKworZnVuY3Rpb24gdGVzdEJhc2ljKCkKK3sKKyAgICBkZWJ1Zygn
dGVzdCBhIHNjb3BlZCBzdHlsZSBpbiBkb2N1bWVudCBpcyBhcHBsaWVkIHRvIGEgbm9kZSBpbiBz
aGFkb3cgZG9tIHN1YnRyZWUgd2hlbiBhcHBseS1hdXRob3Itc3R5bGVzIGlzIHRydWUuJyk7Cisg
ICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRpdi5pbm5l
ckhUTUwgPSAnPGRpdj48c3R5bGUgc2NvcGVkPmRpdiB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsg
fTwvc3R5bGU+PGRpdiBpZD0iaG9zdCI+PC9kaXY+PC9kaXY+JzsKKyAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGRpdik7CisKKyAgICB2YXIgc2hhZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jv
b3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvc3QiKSk7CisgICAgc2hhZG93LmlubmVySFRN
TCA9ICc8ZGl2IGlkPSJ0YXJnZXQiPnRhcmdldDwvZGl2Pic7CisgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChkaXYpOworCisgICAgLy8gYmVmb3JlCisgICAgc2hhZG93LmFwcGx5QXV0aG9y
U3R5bGVzID0gZmFsc2U7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93LmdldEVsZW1lbnRC
eUlkKCJ0YXJnZXQiKSk7CisKKyAgICAvLyBhZnRlcgorICAgIHNoYWRvdy5hcHBseUF1dGhvclN0
eWxlcyA9IHRydWU7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93LmdldEVsZW1lbnRCeUlk
KCJ0YXJnZXQiKSk7CisKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7Cit9CisK
K2Z1bmN0aW9uIHRlc3RFbmNsb3NpbmdTaGFkb3coKQoreworICAgIGRlYnVnKCd0ZXN0IGEgc3R5
bGUgaW4gYW4gZW5jbG9zaW5nIHNoYWRvdyBkb20gdHJlZSBpcyBhcHBsaWVkIHRvIGEgbm9kZSBp
biBzaGFkb3cgc3VidHJlZSB3aGVuIGFwcGx5LWF1dGhvci1zdHlsZXMgaXMgdHJ1ZS4nKTsKKwor
ICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisKKyAgICB2YXIgb3V0ZXJTaGFkb3cgPSBuZXcgV2Vi
S2l0U2hhZG93Um9vdChkaXYpOworICAgIG91dGVyU2hhZG93LmlubmVySFRNTCA9ICc8c3R5bGU+
ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9PC9zdHlsZT48ZGl2IGlkPSJvdXRlciI+b3V0
ZXI8L2Rpdj4nOworICAgIHZhciBzaGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChvdXRlclNo
YWRvdy5nZXRFbGVtZW50QnlJZCgib3V0ZXIiKSk7CisgICAgc2hhZG93LmlubmVySFRNTCA9ICc8
ZGl2IGlkPSJ0YXJnZXQiPnRhcmdldDwvZGl2Pic7CisKKyAgICAvLyBiZWZvcmUKKyAgICBzaGFk
b3cuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFk
b3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIC8vIGFmdGVyCisgICAgc2hhZG93
LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cu
Z2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxk
KGRpdik7ICAgCit9CisKK2Z1bmN0aW9uIHRlc3RFbmNsb3NpbmdTaGFkb3dXaXRoU2NvcGVkKCkK
K3sKKyAgICBkZWJ1ZygndGVzdCBhIHNjb3BlZCBzdHlsZSBpbiBhbiBlbmNsb3Npbmcgc2hhZG93
IGRvbSB0cmVlIGlzIGFwcGxpZWQgdG8gYSBub2RlIGluIHNoYWRvdyBzdWJ0cmVlIHdoZW4gYXBw
bHktYXV0aG9yLXN0eWxlcyBpcyB0cnVlIGFuZCB0aGUgbm9kZSBpcyBpbiB0aGUgc2NvcGUuJyk7
CisKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCisgICAgdmFyIG91dGVyU2hhZG93ID0gbmV3
IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKKyAgICBvdXRlclNoYWRvdy5pbm5lckhUTUwgPSAnPGRp
dj48c3R5bGUgc2NvcGVkPmRpdiB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfTwvc3R5bGU+PGRp
diBpZD0ib3V0ZXJJblNjb3BlIj5vdXRlckluU2NvcGU8L2Rpdj48L2Rpdj48ZGl2IGlkPSJvdXRl
ck91dE9mU2NvcGUiPm91dGVyT3V0T2ZTY29wZTwvZGl2Pic7CisKKyAgICB2YXIgc2hhZG93MSA9
IG5ldyBXZWJLaXRTaGFkb3dSb290KG91dGVyU2hhZG93LmdldEVsZW1lbnRCeUlkKCJvdXRlcklu
U2NvcGUiKSk7CisgICAgc2hhZG93MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0idGFyZ2V0SW5TY29w
ZSI+dGFyZ2V0SW5TY29wZTwvZGl2Pic7CisgICAgdmFyIHNoYWRvdzIgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChvdXRlclNoYWRvdy5nZXRFbGVtZW50QnlJZCgib3V0ZXJPdXRPZlNjb3BlIikpOwor
ICAgIHNoYWRvdzIuaW5uZXJIVE1MID0gJzxkaXYgaWQ9InRhcmdldE91dE9mU2NvcGUiPnRhcmdl
dE91dE9mU2NvcGU8L2Rpdj4nOworCisgICAgLy8gYmVmb3JlCisgICAgc2hhZG93MS5hcHBseUF1
dGhvclN0eWxlcyA9IGZhbHNlOworICAgIHNoYWRvdzIuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxz
ZTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cxLmdldEVsZW1lbnRCeUlkKCJ0YXJnZXRJ
blNjb3BlIikpOworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdzIuZ2V0RWxlbWVudEJ5SWQo
InRhcmdldE91dE9mU2NvcGUiKSk7CisKKyAgICAvLyBhZnRlcgorICAgIHNoYWRvdzEuYXBwbHlB
dXRob3JTdHlsZXMgPSB0cnVlOworICAgIHNoYWRvdzIuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVl
OworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdzEuZ2V0RWxlbWVudEJ5SWQoInRhcmdldElu
U2NvcGUiKSk7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93Mi5nZXRFbGVtZW50QnlJZCgi
dGFyZ2V0T3V0T2ZTY29wZSIpKTsKKworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGl2
KTsgICAKK30KKworZnVuY3Rpb24gdGVzdE5lc3RlZFNoYWRvdygpCit7CisgICAgZGVidWcoJ3Rl
c3QgYSBzdHlsZSBpbiBhIHNoYWRvdyBzdWJ0cmVlIGlzIGFwcGxpZWQgdG8gYSBub2RlIGluIGl0
cyBkZXNjZW5kYW50IHNoYWRvdyBzdWJ0cmVlIHdoZW4gYWxsIGFwcGx5LWF1dGhvci1zdHlsZXMg
aW4gc2hhZG93IHN1YnRyZWVzIGJldHdlZW4gdGhlIHNoYWRvdyBzdWJ0cmVlIGFuZCB0aGUgZGVz
Y2VuZGFudCBhcmUgdHJ1ZS4nKTsKKworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICBkaXYuaW5uZXJIVE1MID0gJzxzdHlsZSBzY29wZWQ+ZGl2IHsgYm9y
ZGVyOiAxcHggc29saWQgcmVkIH08L3N0eWxlPjxkaXYgaWQ9Imhvc3QiPjwvZGl2Pic7CisgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCisgICAgdmFyIG91dGVyTW9zdFNoYWRv
dyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJob3N0Iikp
OworICAgIG91dGVyTW9zdFNoYWRvdy5pbm5lckhUTUwgPSAnPHN0eWxlPmRpdiB7IGJvcmRlcjog
MXB4IHNvbGlkIGJsdWU7IH08L3N0eWxlPjxkaXYgaWQ9Im91dGVyTW9zdCI+b3V0ZXJNb3N0PC9k
aXY+JzsKKyAgICBvdXRlck1vc3RTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKwor
ICAgIHZhciBvdXRlclNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KG91dGVyTW9zdFNoYWRv
dy5nZXRFbGVtZW50QnlJZCgib3V0ZXJNb3N0IikpOworICAgIG91dGVyU2hhZG93LmlubmVySFRN
TCA9ICc8ZGl2IGlkPSJvdXRlciI+b3V0ZXI8L2Rpdj4nOworICAgIG91dGVyU2hhZG93LmFwcGx5
QXV0aG9yU3R5bGVzID0gZmFsc2U7CisKKyAgICB2YXIgc2hhZG93ID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3Qob3V0ZXJTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm91dGVyIikpOworICAgIHNoYWRvdy5p
bm5lckhUTUwgPSAnPGRpdiBpZD0idGFyZ2V0Ij50YXJnZXQ8L2Rpdj4nOworICAgIHNoYWRvdy5h
cHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworCisgICAgLy8gTm8gc3R5bGVzIHNob3VsZCBiZSBh
cHBsaWVkLgorICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgidGFy
Z2V0IikpOworCisgICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKyAgICAvLyBB
IHN0eWxlIGluIGRvY3VtZW50IHNob3VsZCBiZSBhcHBsaWVkLgorICAgIGR1bXBDb21wdXRlZFN0
eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworCisgICAgb3V0ZXJTaGFkb3cu
YXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlCisgICAgLy8gQSBzdHlsZSBpbiAnb3V0ZXJNb3N0JyBz
aGFkb3cgc2hvdWxkIGJlIGFwcGxpZWQuCisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93Lmdl
dEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxk
KGRpdik7ICAgCit9CisKK2Z1bmN0aW9uIHRlc3RNdWx0aXBsZVNoYWRvdygpCit7CisgICAgZGVi
dWcoJ3Rlc3QgYSBzdHlsZSBpbiBkb2N1bWVudCBpcyBhcHBsaWVkIHRvIG5vZGVzIGluIG11bHRp
cGxlIHNoYWRvdyBzdWJ0cmVlcyB3aGVuIGFwcGx5LWF1dGhvci1zdHlsZXMgaXMgdHJ1ZS4nKTsK
KworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBkaXYu
aW5uZXJIVE1MID0gJzxzdHlsZSBzY29wZWQ+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgcmVkIH08
L3N0eWxlPjxkaXY+dGVzdDwvZGl2Pic7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChk
aXYpOworCisgICAgdmFyIG9sZGVzdFNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7
CisgICAgb2xkZXN0U2hhZG93LmlubmVySFRNTCA9ICc8c2hhZG93Pjwvc2hhZG93PjxkaXYgaWQ9
Im9sZGVzdFNoYWRvdyI+b2xkZXN0U2hhZG93PC9kaXY+JzsKKyAgICBvbGRlc3RTaGFkb3cuYXBw
bHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKworICAgIHZhciBvbGRlclNoYWRvdyA9ICBuZXcgV2Vi
S2l0U2hhZG93Um9vdChkaXYpOworICAgIG9sZGVyU2hhZG93LmlubmVySFRNTCA9ICc8c3R5bGUg
c2NvcGVkPmRpdiB7IGJvcmRlcjogMXB4IHNvbGlkIGJsdWUgfTwvc3R5bGU+PHNoYWRvdz48L3No
YWRvdz48ZGl2IGlkPSJvbGRlclNoYWRvdyI+b2xkZXJTaGFkb3c8L2Rpdj4nOworICAgIG9sZGVy
U2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisKKyAgICB2YXIgc2hhZG93ID0gbmV3
IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKKyAgICBzaGFkb3cuaW5uZXJIVE1MID0gJzxzaGFkb3c+
PC9zaGFkb3c+PGRpdiBpZD0idGFyZ2V0Ij5zaGFkb3c8L2Rpdj4nOworICAgIHNoYWRvdy5hcHBs
eUF1dGhvclN0eWxlcyA9IGZhbHNlOworCisgICAgLy8gYmVmb3JlCisgICAgZHVtcENvbXB1dGVk
U3R5bGUob2xkZXN0U2hhZG93LmdldEVsZW1lbnRCeUlkKCJvbGRlc3RTaGFkb3ciKSk7CisgICAg
ZHVtcENvbXB1dGVkU3R5bGUob2xkZXJTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm9sZGVyU2hhZG93
IikpOworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0
IikpOworCisgICAgLy8gZG9jdW1lbnQgLS0tKy0tLSBvbGRlc3RTaGFkb3cKKyAgICAvLyAgICAg
ICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgKy0tLSBvbGRlclNoYWRvdworICAgIC8vICAg
ICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICArLS0tIHNoYWRvdworCisgICAgLy8gYXBw
bHktYXV0aG9yLXN0eWxlcyBhZmZlY3RzIGJldHdlZW4gc2hhZG93IGFuZCBkb2N1bWVudC4KKyAg
ICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlOworICAgIGR1bXBDb21wdXRlZFN0eWxl
KG9sZGVzdFNoYWRvdy5nZXRFbGVtZW50QnlJZCgib2xkZXN0U2hhZG93IikpOworICAgIGR1bXBD
b21wdXRlZFN0eWxlKG9sZGVyU2hhZG93LmdldEVsZW1lbnRCeUlkKCJvbGRlclNoYWRvdyIpKTsK
KyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsK
KworICAgIC8vIGFwcGx5LWF1dGhvci1zdHlsZXMgYWZmZWN0cyBiZXR3ZWVuIG9sZGVyIHNoYWRv
dyBhbmQgZG9jdW1lbnQuCisgICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7Cisg
ICAgb2xkZXJTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlOworICAgIGR1bXBDb21wdXRl
ZFN0eWxlKG9sZGVzdFNoYWRvdy5nZXRFbGVtZW50QnlJZCgib2xkZXN0U2hhZG93IikpOworICAg
IGR1bXBDb21wdXRlZFN0eWxlKG9sZGVyU2hhZG93LmdldEVsZW1lbnRCeUlkKCJvbGRlclNoYWRv
dyIpKTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdl
dCIpKTsKKworICAgIC8vIGFwcGx5LWF1dGhvci1zdHlsZXMgYWZmZWN0cyBiZXR3ZWVuIG9sZGVz
dCBzaGFkb3cgYW5kIGRvY3VtZW50LgorICAgIG9sZGVyU2hhZG93LmFwcGx5QXV0aG9yU3R5bGVz
ID0gZmFsc2U7CisgICAgb2xkZXN0U2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKyAg
ICBkdW1wQ29tcHV0ZWRTdHlsZShvbGRlc3RTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm9sZGVzdFNo
YWRvdyIpKTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShvbGRlclNoYWRvdy5nZXRFbGVtZW50QnlJ
ZCgib2xkZXJTaGFkb3ciKSk7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93LmdldEVsZW1l
bnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7
Cit9CisKK2Z1bmN0aW9uIHRlc3RPcmRlck9mQXBwbHlTdHlsZSgpCit7CisgICAgZGVidWcoJ3Rl
c3QgYSBzdHlsZSBpcyBhcHBsaWVkIGluIGRvY3VtZW50IG9yZGVyLicpOworCisgICAgdmFyIGRp
diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRpdi5pbm5lckhUTUwgPSAn
PHN0eWxlIHNjb3BlZD5kaXYgeyBib3JkZXI6IDFweCBzb2xpZCByZWQgfTwvc3R5bGU+PGRpdiBp
ZD0iaG9zdCI+PC9kaXY+JzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisK
KyAgICB2YXIgb3V0ZXJNb3N0U2hhZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImhvc3QiKSk7CisgICAgb3V0ZXJNb3N0U2hhZG93LmlubmVySFRNTCA9
ICc8c3R5bGU+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgYmx1ZTsgfTwvc3R5bGU+PGRpdiBpZD0i
b3V0ZXJNb3N0Ij5vdXRlck1vc3Q8L2Rpdj4nOworICAgIG91dGVyTW9zdFNoYWRvdy5hcHBseUF1
dGhvclN0eWxlcyA9IHRydWU7CisKKyAgICB2YXIgb3V0ZXJTaGFkb3cgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChvdXRlck1vc3RTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm91dGVyTW9zdCIpKTsKKyAg
ICBvdXRlclNoYWRvdy5pbm5lckhUTUwgPSAnPHN0eWxlPmRpdiB7IGJvcmRlcjogMXB4IHNvbGlk
IGdyZWVuOyB9PC9zdHlsZT48ZGl2IGlkPSJvdXRlciI+b3V0ZXI8L2Rpdj4nOworICAgIG91dGVy
U2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKworICAgIHZhciBzaGFkb3cgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChvdXRlclNoYWRvdy5nZXRFbGVtZW50QnlJZCgib3V0ZXIiKSk7Cisg
ICAgc2hhZG93LmlubmVySFRNTCA9ICc8c3R5bGU+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgeWVs
bG93OyB9PC9zdHlsZT48ZGl2IGlkPSJ0YXJnZXQiPnRhcmdldDwvZGl2Pic7CisgICAgc2hhZG93
LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKworICAgIC8vIFRoZSBsYXN0IHNjb3BlZCBzdHls
ZSBzaG91bGQgYmUgYXBwbGllZC4KKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxl
bWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIHNoYWRvdy5pbm5lckhUTUwgPSAnPGRpdiBpZD0i
dGFyZ2V0Ij50YXJnZXQ8L2Rpdj4nOworICAgIC8vIFRoZSBvdXRlcidzIHNjb3BlZCBzdHlsZSBz
aG91bGQgYmUgYXBwbGllZC4KKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxlbWVu
dEJ5SWQoInRhcmdldCIpKTsKKworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGl2KTsg
ICAKK30KKworZnVuY3Rpb24gcnVuVGVzdHMoKSB7CisgICAgdGVzdEJhc2ljKCk7CisgICAgdGVz
dEVuY2xvc2luZ1NoYWRvdygpOworICAgIHRlc3RFbmNsb3NpbmdTaGFkb3dXaXRoU2NvcGVkKCk7
CisgICAgdGVzdE5lc3RlZFNoYWRvdygpOworICAgIHRlc3RNdWx0aXBsZVNoYWRvdygpOworICAg
IHRlc3RPcmRlck9mQXBwbHlTdHlsZSgpOworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0icnVuVGVzdHMoKSI+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148257</attachid>
            <date>2012-06-18 23:14:27 -0700</date>
            <delta_ts>2012-06-18 23:59:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89061-20120619151427.patch</filename>
            <type>text/plain</type>
            <size>21629</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVjNTkxNTQ3YmIxOTZk
Y2MzY2E5Y2I5MjI4YmIzMjc4MGVkYmQzZC4uMDkxYzhjZDI1NTEwMzI2YWU4ZDAzM2RmNzJhNWFm
NDczMzIyODVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA2LTEzICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBhcHBseUF1dGhvclN0
eWxlcyBtYWtlcyBydWxlcyBkZWNsYXJlZCBpbiBhbGwgZW5jbG9zaW5nIHNoYWRvdyBkb20gc3Vi
dHJlZXMgYXBwbGljYWJsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg5MDYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRml4aW5nIGFwcGx5LWF1dGhvci1zdHlsZXMgYnVnLiBJZiB0aGVyZSBleGlzdHMg
c29tZSBzaGFkb3cgc3VidHJlZSBBCisgICAgICAgIGFuZCBBIGhhcyBhcHBseS1hdXRob3Itc3R5
bGVzIGZsYWcgc2V0LCB3aGV0aGVyIHNvbWUgcnVsZXMgZGVjbGFyZWQgaW4KKyAgICAgICAgYSB0
cmVlIEIgaXMgYXBwbGljYWJsZSBpbiBBIG9yIG5vdCBkZXBlbmRzIG9uOgorICAgICAgICAtIHRo
ZSB0cmVlIEIgZW5jbG9zZXMgdGhlIHRyZWUgQSwgYW5kCisgICAgICAgIC0gYWxsIHRyZWVzIHdo
aWNoIGVuY2xvc2UgQSBhbmQgYXJlIGVuY2xvc2VkIGJ5IEIgaGFzCisgICAgICAgICAgYXBwbHkt
YXV0aG9yLXN0eWxlcyBzZXQuCisgICAgICAgIGMuZi4KKyAgICAgICAgaHR0cDovL2R2Y3MudzMu
b3JnL2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwj
c3R5bGVzCisgICAgICAgIEhvd2V2ZXIgdGhlIHNlY29uZCBydWxlIHdhcyBub3QgaW1wbGVtZW50
ZWQuCisKKyAgICAgICAgVGVzdDogZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1h
cHBseS1hdXRob3Itc3R5bGVzLmh0bWwKKworICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnNldHVwU2NvcGVTdGFjayk6Cisg
ICAgICAgIE1vZGlmaWVkIHRvIGFkZCBhIGdyb3VwIG51bWJlciwgYXBwbHlBdXRob3JTdHlsZVNl
dEdyb3VwIHRvCisgICAgICAgIG1fc2NvcGVTdGFjay4gVGhlIGdyb3VwIG1lYW5zOiBpZiBzaGFk
b3cgZG9tIHN1YnRyZWUgQSBhbmQgQiBoYXMgdGhlCisgICAgICAgIHNhbWUgZ3JvdXAgbnVtYmVy
IGFuZCBBIGVuY2xvc2VzIEIsIGFsbCBzaGFkb3cgZG9tIHN1YnRyZWVzIHdoaWNoCisgICAgICAg
IGVuY2xvc2UgQiBhbmQgYXJlIGVuY2xvc2VkIGJ5IEIgaGF2ZSBhcHBseS1hdXRob3Itc3R5bGVz
IHNldC4gQW5kIEIKKyAgICAgICAgYWxzbyBoYXMgYXBwbHktYXV0aG9yLXN0eWxlcyBzZXQuIChT
ZWUgc2hhZG93IGRvbSBzcGVjJ3Mgc3R5bGVzKQorICAgICAgICBUaGlzIG1lYW5zLCBpZiBzb21l
IGVsZW1lbnQgWCBoYXMgYXBwbHlBdXRob3JTdHlsZVNldEdyb3VwIE4sIGFsbAorICAgICAgICBy
dWxlc2V0cyB3aG9zZSBzY29wZXMgaGF2ZSBhcHBseUF1dGhvclN0eWxlU2V0R3JvdXBOIGFyZSBh
cHBsaWNhYmxlIGluCisgICAgICAgIEIncyB0cmVlIHNjb3BlLiBJZiBhbGwgc2hhZG93IGRvbSBz
dWJ0cmVlcyBoYXZlIGFwcGx5LWF1dGhvci1zdHlsZXMKKyAgICAgICAgdW5zZXQsIHRoZSBncm91
cCBsb29rcyBhbG1vc3QgdGhlIHNhbWUgYXMgdHJlZVNjb3BlKCkuIEluIHRoaXMgY2FzZSwKKyAg
ICAgICAgUnVsZXMgaW4gZGlmZmVyZW50IHRyZWUgc2NvcGVzIGhhdmUgZGlmZmVyZW50IGdyb3Vw
IG51bWJlcnMuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpwdXNoU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cG9wU2NvcGUpOgorICAgICAgICBBZGRl
ZCB0aGUgY29kZSBmb3IgdXBkYXRpbmcgbV9zY29wZVN0YWNrUGFyZW50R3JvdXAuIFRoZSBtZW1i
ZXIKKyAgICAgICAgdmFyaWFibGUga2VlcHMgbV9zY29wZVN0YWNrUGFyZW50J3MgYXBwbHlBdXRo
b3JTdHlsZVNldCBncm91cCBudW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjptYXRjaFNjb3BlZEF1dGhvclJ1bGVzKToKKyAgICAgICAgTW9kaWZpZWQgdG8gY29uc2lkZXIg
YXBwbHlBdXRob3JTdHlsZVNldCBncm91cC4gRmlyc3RseSBhcHBseWluZworICAgICAgICBzY29w
ZWQgc3R5bGVzIGRlY2xhcmVkIGluIGRvY3VtZW50IGlmIGFwcGx5LWF1dGhvci1zdHlsZXMgaXMg
c2V0LgorICAgICAgICBOZXh0LCBhcHBseWluZyBzY29wZWQgc3R5bGVzIGRlY2xhcmVkIGluIHNo
YWRvdyBkb20gc3VidHJlZSB3aXRoCisgICAgICAgIGNvbnNpZGVyaW5nIGFwcGx5QXV0cmhvU3R5
bGVTZXQgZ3JvdXAgbnVtYmVyLCBpLmUuIGNvbnNpZGVyaW5nCisgICAgICAgIGFwcGx5LWF1dGhv
ci1zdHlsZXMgZmxhZy4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U2NvcGVTdGFja0ZyYW1lOjpTY29wZVN0YWNrRnJhbWUp
OgorICAgICAgICAoU2NvcGVTdGFja0ZyYW1lKToKKyAgICAgICAgQWRkZWQgbV9hcHBseUF1dHJo
b1N0eWxlU2V0R3JvdXAgdG8ga2VlcCBhcHBseUF1dGhvclN0eWxlcyBpbmZvcm1hdGlvbi4KKyAg
ICAgICAgbV9hcHBseUF1dHJob1N0eWxlU2V0R3JvdXAgaW5jcmVtZW50cyBieSAxIGlmIHNoYWRv
dyByb290IGlzIGdpdmVuIGFuZAorICAgICAgICBpdCBoYXMgYXBwbHlBdXRob3JTdHlsZXMgdW5z
ZXQuCisgICAgICAgIE5vdyBydWxlcyBpbiB0aGUgc2FtZSBhcHBseUF1dGhvclNldEdyb3VwIHNo
b3VsZCBiZSBhcHBsaWVkLgorICAgICAgICAoU3R5bGVSZXNvbHZlcik6CisgICAgICAgIEFkZGVk
IG1fc2NvcGVTdGFja1BhcmVudEdyb3VwLiBBcyBtX3Njb3BlU3RhY2tQYXJlbnRBcHBseUF1dGhv
clNldEdyb3VwCisgICAgICAgIGlzIGEgbGl0dGxlIGxvbmcsIHVzZWQgbV9zY29wZVN0YWNrUGFy
ZW50R3JvdXAuCisKIDIwMTItMDYtMTggIEdyZWdnIFRhdmFyZXMgIDxnbWFuQGdvb2dsZS5jb20+
CiAKICAgICAgICAgRXhwb3NlIFdFQkdMX2RlcHRoX3RleHR1cmUgZXh0ZW5zaW9uIHRvIFdlYkdM
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggOGJkNGNmMzQ3ZDRlMzQwNWYx
M2UwY2FiZGU2MzYyZWNmNzU3YWYxMS4uNzQ1MGExMzY5N2FiMWI3MDQzZjBjNDE0YWFlZTY5NjY2
ZGI0M2U2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMzcyLDYgKzM3
Miw3IEBAIFN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVzb2x2ZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBi
b29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykKICNlbmRpZgogI2lmIEVOQUJMRShTVFlMRV9T
Q09QRUQpCiAgICAgLCBtX3Njb3BlU3RhY2tQYXJlbnQoMCkKKyAgICAsIG1fc2NvcGVTdGFja1Bh
cmVudEdyb3VwKDApCiAjZW5kaWYKIHsKICAgICBFbGVtZW50KiByb290ID0gZG9jdW1lbnQtPmRv
Y3VtZW50RWxlbWVudCgpOwpAQCAtNTY0LDEzICs1NjUsMTcgQEAgdm9pZCBTdHlsZVJlc29sdmVy
OjpzZXR1cFNjb3BlU3RhY2soY29uc3QgQ29udGFpbmVyTm9kZSogcGFyZW50KQogICAgIEFTU0VS
VCghbV9zY29wZWRBdXRob3JTdHlsZXMuaXNFbXB0eSgpKTsKIAogICAgIG1fc2NvcGVTdGFjay5z
aHJpbmsoMCk7CisgICAgaW50IGFwcGx5QXV0aG9yU3R5bGVTZXRHcm91cCA9IDA7CiAgICAgZm9y
IChjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IHBhcmVudDsgc2NvcGU7IHNjb3BlID0gc2Nv
cGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgewogICAgICAgICBSdWxlU2V0KiBydWxlU2V0ID0gcnVs
ZVNldEZvclNjb3BlKHNjb3BlKTsKICAgICAgICAgaWYgKHJ1bGVTZXQpCi0gICAgICAgICAgICBt
X3Njb3BlU3RhY2suYXBwZW5kKFNjb3BlU3RhY2tGcmFtZShzY29wZSwgcnVsZVNldCkpOworICAg
ICAgICAgICAgbV9zY29wZVN0YWNrLmFwcGVuZChTY29wZVN0YWNrRnJhbWUoc2NvcGUsIGFwcGx5
QXV0aG9yU3R5bGVTZXRHcm91cCwgcnVsZVNldCkpOworICAgICAgICBpZiAoc2NvcGUtPmlzU2hh
ZG93Um9vdCgpICYmICF0b1NoYWRvd1Jvb3Qoc2NvcGUpLT5hcHBseUF1dGhvclN0eWxlcygpKQor
ICAgICAgICAgICAgLS1hcHBseUF1dGhvclN0eWxlU2V0R3JvdXA7CiAgICAgfQogICAgIG1fc2Nv
cGVTdGFjay5yZXZlcnNlKCk7CiAgICAgbV9zY29wZVN0YWNrUGFyZW50ID0gcGFyZW50OworICAg
IG1fc2NvcGVTdGFja1BhcmVudEdyb3VwID0gMDsKIH0KIAogdm9pZCBTdHlsZVJlc29sdmVyOjpw
dXNoU2NvcGUoY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUsIGNvbnN0IENvbnRhaW5lck5vZGUq
IHNjb3BlUGFyZW50KQpAQCAtNTg3LDEwICs1OTIsMTIgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpw
dXNoU2NvcGUoY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUsIGNvbnN0IENvbnRhaW5lck5vZGUq
IHMKICAgICAgICAgc2V0dXBTY29wZVN0YWNrKHNjb3BlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KKyAgICBpZiAoc2NvcGUtPmlzU2hhZG93Um9vdCgpICYmICF0b1NoYWRvd1Jvb3Qoc2NvcGUp
LT5hcHBseUF1dGhvclN0eWxlcygpKQorICAgICAgICArK21fc2NvcGVTdGFja1BhcmVudEdyb3Vw
OwogICAgIC8vIE90aGVyd2lzZSBqdXN0IHB1c2ggdGhlIHBhcmVudCBvbnRvIHRoZSBzdGFjay4K
ICAgICBSdWxlU2V0KiBydWxlU2V0ID0gcnVsZVNldEZvclNjb3BlKHNjb3BlKTsKICAgICBpZiAo
cnVsZVNldCkKLSAgICAgICAgbV9zY29wZVN0YWNrLmFwcGVuZChTY29wZVN0YWNrRnJhbWUoc2Nv
cGUsIHJ1bGVTZXQpKTsKKyAgICAgICAgbV9zY29wZVN0YWNrLmFwcGVuZChTY29wZVN0YWNrRnJh
bWUoc2NvcGUsIG1fc2NvcGVTdGFja1BhcmVudEdyb3VwLCBydWxlU2V0KSk7CiAgICAgbV9zY29w
ZVN0YWNrUGFyZW50ID0gc2NvcGU7CiB9CiAKQEAgLTYwMCw2ICs2MDcsOCBAQCB2b2lkIFN0eWxl
UmVzb2x2ZXI6OnBvcFNjb3BlKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQogICAgIGlmIChz
Y29wZVN0YWNrSXNDb25zaXN0ZW50KHNjb3BlKSkgewogICAgICAgICBpZiAoIW1fc2NvcGVTdGFj
ay5pc0VtcHR5KCkgJiYgbV9zY29wZVN0YWNrLmxhc3QoKS5tX3Njb3BlID09IHNjb3BlKQogICAg
ICAgICAgICAgbV9zY29wZVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgaWYgKHNjb3BlLT5p
c1NoYWRvd1Jvb3QoKSAmJiAhdG9TaGFkb3dSb290KHNjb3BlKS0+YXBwbHlBdXRob3JTdHlsZXMo
KSkKKyAgICAgICAgICAgIC0tbV9zY29wZVN0YWNrUGFyZW50R3JvdXA7CiAgICAgICAgIG1fc2Nv
cGVTdGFja1BhcmVudCA9IHNjb3BlLT5wYXJlbnRPckhvc3ROb2RlKCk7CiAgICAgfQogfQpAQCAt
OTI2LDIyICs5MzUsMzggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaFNjb3BlZEF1dGhvclJ1
bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHQKICAgICBNYXRjaE9wdGlv
bnMgb3B0aW9ucyhpbmNsdWRlRW1wdHlSdWxlcyk7CiAKICAgICAvLyBNYXRjaCBzY29wZWQgYXV0
aG9yIHJ1bGVzIGJ5IHRyYXZlcnNpbmcgdGhlIHNjb3BlZCBlbGVtZW50IHN0YWNrIChyZWJ1aWxk
IGl0IGlmIGl0IGdvdCBpbmNvbnNpc3RlbnQpLgotICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHBh
cmVudCA9IG1fZWxlbWVudC0+cGFyZW50T3JIb3N0Tm9kZSgpOwotICAgIGlmICghc2NvcGVTdGFj
a0lzQ29uc2lzdGVudChwYXJlbnQpKQotICAgICAgICBzZXR1cFNjb3BlU3RhY2socGFyZW50KTsK
LSAgICBmb3IgKHNpemVfdCBpID0gbV9zY29wZVN0YWNrLnNpemUoKTsgaTsgLS1pKSB7Ci0gICAg
ICAgIGNvbnN0IFNjb3BlU3RhY2tGcmFtZSYgZnJhbWUgPSBtX3Njb3BlU3RhY2tbaSAtIDFdOwor
ICAgIGlmICghc2NvcGVTdGFja0lzQ29uc2lzdGVudChtX2VsZW1lbnQpKQorICAgICAgICBzZXR1
cFNjb3BlU3RhY2sobV9lbGVtZW50KTsKKworICAgIHVuc2lnbmVkIGludCBmaXJzdFNoYWRvd1Nj
b3BlSW5kZXggPSAwOworICAgIGlmIChtX2VsZW1lbnQtPnRyZWVTY29wZSgpLT5hcHBseUF1dGhv
clN0eWxlcygpKSB7CisgICAgICAgIHVuc2lnbmVkIGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkg
PCBtX3Njb3BlU3RhY2suc2l6ZSgpICYmICFtX3Njb3BlU3RhY2tbaV0ubV9zY29wZS0+aXNJblNo
YWRvd1RyZWUoKTsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBTY29wZVN0YWNrRnJhbWUmIGZy
YW1lID0gbV9zY29wZVN0YWNrW2ldOworICAgICAgICAgICAgb3B0aW9ucy5zY29wZSA9IGZyYW1l
Lm1fc2NvcGU7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhmcmFtZS5tX3J1bGVT
ZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRo
b3JSdWxlLCBvcHRpb25zKTsKKyAgICAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVn
aW9uKGZyYW1lLm1fcnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3Vs
dC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOworICAgICAgICB9CisgICAgICAgIGZp
cnN0U2hhZG93U2NvcGVJbmRleCA9IGk7CisgICAgfQorCisgICAgaWYgKCFtX2VsZW1lbnQtPmlz
SW5TaGFkb3dUcmVlKCkgfHwgbV9zY29wZVN0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgdW5zaWduZWQgc2NvcGVkSW5kZXggPSBtX3Njb3BlU3RhY2suc2l6ZSgpOworICAg
IGludCBhcHBseUF1dGhvclN0eWxlU2V0R3JvdXAgPSBtX3Njb3BlU3RhY2tQYXJlbnRHcm91cDsK
KyAgICBmb3IgKCA7IHNjb3BlZEluZGV4ID4gZmlyc3RTaGFkb3dTY29wZUluZGV4OyAtLXNjb3Bl
ZEluZGV4KSB7CisgICAgICAgIGlmIChhcHBseUF1dGhvclN0eWxlU2V0R3JvdXAgIT0gbV9zY29w
ZVN0YWNrW3Njb3BlZEluZGV4IC0gMV0ubV9hcHBseUF1dGhvclN0eWxlU2V0R3JvdXApCisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyBSdWxlc2V0IGZvciBhbmNlc3RvciBub2Rl
cyBzaG91bGQgYmUgYXBwbGllZCBmaXJzdC4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBzY29wZWRJ
bmRleDsgaSA8IG1fc2NvcGVTdGFjay5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBTY29w
ZVN0YWNrRnJhbWUmIGZyYW1lID0gbV9zY29wZVN0YWNrW2ldOwogICAgICAgICBvcHRpb25zLnNj
b3BlID0gZnJhbWUubV9zY29wZTsKICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoZnJhbWUu
bV9ydWxlU2V0LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5s
YXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7CiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9y
UmVnaW9uKGZyYW1lLm1fcnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJl
c3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwogICAgIH0KLSAgICAvLyBBbHNv
IGluY2x1ZGUgdGhlIGN1cnJlbnQgZWxlbWVudC4KLSAgICBSdWxlU2V0KiBydWxlU2V0ID0gcnVs
ZVNldEZvclNjb3BlKG1fZWxlbWVudCk7Ci0gICAgaWYgKHJ1bGVTZXQpIHsKLSAgICAgICAgb3B0
aW9ucy5zY29wZSA9IG1fZWxlbWVudDsKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMocnVs
ZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1
dGhvclJ1bGUsIG9wdGlvbnMpOwotICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lv
bihydWxlU2V0LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5s
YXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7Ci0gICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
cmVzdWx0KTsKICAgICBVTlVTRURfUEFSQU0oaW5jbHVkZUVtcHR5UnVsZXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmgKaW5kZXggOWY5Y2MyY2E0NWFjZGYwNzk1NGU4MjJkYTI1MGQ1MDM4
MzcxZjczYS4uMWQ2YmY5Yzc1MDExMzc3NmZlY2U2NTEyYjY3MDk2MWY1ZmMzNDAxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC01MzEsOSArNTMxLDEwIEBAIHByaXZhdGU6CiAg
ICAgU2NvcGVkUnVsZVNldE1hcCBtX3Njb3BlZEF1dGhvclN0eWxlczsKICAgICAKICAgICBzdHJ1
Y3QgU2NvcGVTdGFja0ZyYW1lIHsKLSAgICAgICAgU2NvcGVTdGFja0ZyYW1lKCkgOiBtX3Njb3Bl
KDApLCBtX3J1bGVTZXQoMCkgeyB9Ci0gICAgICAgIFNjb3BlU3RhY2tGcmFtZShjb25zdCBDb250
YWluZXJOb2RlKiBzY29wZSwgUnVsZVNldCogcnVsZVNldCkgOiBtX3Njb3BlKHNjb3BlKSwgbV9y
dWxlU2V0KHJ1bGVTZXQpIHsgfQorICAgICAgICBTY29wZVN0YWNrRnJhbWUoKSA6IG1fc2NvcGUo
MCksIG1fYXBwbHlBdXRob3JTdHlsZVNldEdyb3VwKDApLCBtX3J1bGVTZXQoMCkgeyB9CisgICAg
ICAgIFNjb3BlU3RhY2tGcmFtZShjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgaW50IGFwcGx5
QXV0aG9yU3R5bGVTZXRHcm91cCwgUnVsZVNldCogcnVsZVNldCkgOiBtX3Njb3BlKHNjb3BlKSwg
bV9hcHBseUF1dGhvclN0eWxlU2V0R3JvdXAoYXBwbHlBdXRob3JTdHlsZVNldEdyb3VwKSwgbV9y
dWxlU2V0KHJ1bGVTZXQpIHsgfQogICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBtX3Njb3Bl
OworICAgICAgICBpbnQgbV9hcHBseUF1dGhvclN0eWxlU2V0R3JvdXA7CiAgICAgICAgIFJ1bGVT
ZXQqIG1fcnVsZVNldDsKICAgICB9OwogICAgIC8vIFZlY3RvciAodXNlZCBhcyBzdGFjaykgdGhh
dCBrZWVwcyB0cmFjayBvZiBzY29waW5nIGVsZW1lbnRzIChpLmUuLCBlbGVtZW50cyB3aXRoIGEg
PHN0eWxlIHNjb3BlZD4gY2hpbGQpCkBAIC01NDIsNiArNTQzLDcgQEAgcHJpdmF0ZToKICAgICAv
LyBFbGVtZW50IGxhc3Qgc2VlbiBhcyBwYXJlbnQgZWxlbWVudCB3aGVuIHVwZGF0aW5nIG1fc2Nv
cGluZ0VsZW1lbnRTdGFjay4KICAgICAvLyBUaGlzIGlzIHVzZWQgdG8gZGVjaWRlIHdoZXRoZXIg
bV9zY29waW5nRWxlbWVudFN0YWNrIGlzIGNvbnNpc3RlbnQsIHNlcGFyYXRlbHkgZnJvbSBTZWxl
Y3RvckNoZWNrZXI6Om1fcGFyZW50U3RhY2suCiAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogbV9z
Y29wZVN0YWNrUGFyZW50OworICAgIGludCBtX3Njb3BlU3RhY2tQYXJlbnRHcm91cDsKICNlbmRp
ZgogCiAgICAgZnJpZW5kIGNsYXNzIFN0eWxlQnVpbGRlcjsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNjgxYmE1YmZmMDJi
ZTFlYjhhZDY4OGE2ZDdiYmJlYTBhZjA0MzhjLi42OTU0Y2VmNjQ5YWM3Y2Q0ZTg2MGJmMzViYjE1
ZGFhNDhjY2IyYTgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDYtMTMgIFRha2FzaGkg
U2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29tPgorCisgICAgICAgIGFwcGx5QXV0aG9yU3R5bGVz
IG1ha2VzIHJ1bGVzIGRlY2xhcmVkIGluIGFsbCBlbmNsb3Npbmcgc2hhZG93IGRvbSBzdWJ0cmVl
cyBhcHBsaWNhYmxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODkwNjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYXBwbHktYXV0aG9yLXN0
eWxlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLXNjb3Bl
ZC9zdHlsZS1zY29wZWQtYXBwbHktYXV0aG9yLXN0eWxlcy5odG1sOiBBZGRlZC4KKwogMjAxMi0w
Ni0xOCAgR3JlZ2cgVGF2YXJlcyAgPGdtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBFeHBvc2Ug
V0VCR0xfZGVwdGhfdGV4dHVyZSBleHRlbnNpb24gdG8gV2ViR0wKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYXBwbHktYXV0aG9yLXN0
eWxlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5
bGUtc2NvcGVkLWFwcGx5LWF1dGhvci1zdHlsZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZh
NjNkOWFhODQzNDdkNjcwZTYwZmU4NGNlNWVkOTZlM2Q2M2EyYjUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWFwcGx5LWF1
dGhvci1zdHlsZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzggQEAKK1BBU1Mgd2luZG93Lmlu
dGVybmFscyBpcyBkZWZpbmVkLgorUEFTUyB3aW5kb3cuaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jv
b3QgaXMgZGVmaW5lZC4KK1BBU1MgV2ViS2l0U2hhZG93Um9vdCBpcyBkZWZpbmVkLgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit0ZXN0IGEgc2NvcGVk
IHN0eWxlIGluIGRvY3VtZW50IGlzIGFwcGxpZWQgdG8gYSBub2RlIGluIHNoYWRvdyBkb20gc3Vi
dHJlZSB3aGVuIGFwcGx5LWF1dGhvci1zdHlsZXMgaXMgdHJ1ZS4KK3RhcmdldDogcmdiKDAsIDAs
IDApCit0YXJnZXQ6IHJnYigyNTUsIDAsIDApCit0ZXN0IGEgc3R5bGUgaW4gYW4gZW5jbG9zaW5n
IHNoYWRvdyBkb20gdHJlZSBpcyBhcHBsaWVkIHRvIGEgbm9kZSBpbiBzaGFkb3cgc3VidHJlZSB3
aGVuIGFwcGx5LWF1dGhvci1zdHlsZXMgaXMgdHJ1ZS4KK3RhcmdldDogcmdiKDAsIDAsIDApCit0
YXJnZXQ6IHJnYigyNTUsIDAsIDApCit0ZXN0IGEgc2NvcGVkIHN0eWxlIGluIGFuIGVuY2xvc2lu
ZyBzaGFkb3cgZG9tIHRyZWUgaXMgYXBwbGllZCB0byBhIG5vZGUgaW4gc2hhZG93IHN1YnRyZWUg
d2hlbiBhcHBseS1hdXRob3Itc3R5bGVzIGlzIHRydWUgYW5kIHRoZSBub2RlIGlzIGluIHRoZSBz
Y29wZS4KK3RhcmdldEluU2NvcGU6IHJnYigwLCAwLCAwKQordGFyZ2V0T3V0T2ZTY29wZTogcmdi
KDAsIDAsIDApCit0YXJnZXRJblNjb3BlOiByZ2IoMjU1LCAwLCAwKQordGFyZ2V0T3V0T2ZTY29w
ZTogcmdiKDAsIDAsIDApCit0ZXN0IGEgc3R5bGUgaW4gYSBzaGFkb3cgc3VidHJlZSBpcyBhcHBs
aWVkIHRvIGEgbm9kZSBpbiBpdHMgZGVzY2VuZGFudCBzaGFkb3cgc3VidHJlZSB3aGVuIGFsbCBh
cHBseS1hdXRob3Itc3R5bGVzIGluIHNoYWRvdyBzdWJ0cmVlcyBiZXR3ZWVuIHRoZSBzaGFkb3cg
c3VidHJlZSBhbmQgdGhlIGRlc2NlbmRhbnQgYXJlIHRydWUuCit0YXJnZXQ6IHJnYigwLCAwLCAw
KQordGFyZ2V0OiByZ2IoMjU1LCAwLCAwKQordGFyZ2V0OiByZ2IoMCwgMCwgMjU1KQordGVzdCBh
IHN0eWxlIGluIGRvY3VtZW50IGlzIGFwcGxpZWQgdG8gbm9kZXMgaW4gbXVsdGlwbGUgc2hhZG93
IHN1YnRyZWVzIHdoZW4gYXBwbHktYXV0aG9yLXN0eWxlcyBpcyB0cnVlLgorb2xkZXN0U2hhZG93
OiByZ2IoMCwgMCwgMCkKK29sZGVyU2hhZG93OiByZ2IoMCwgMCwgMjU1KQordGFyZ2V0OiByZ2Io
MCwgMCwgMCkKK29sZGVzdFNoYWRvdzogcmdiKDAsIDAsIDApCitvbGRlclNoYWRvdzogcmdiKDAs
IDAsIDI1NSkKK3RhcmdldDogcmdiKDI1NSwgMCwgMCkKK29sZGVzdFNoYWRvdzogcmdiKDAsIDAs
IDApCitvbGRlclNoYWRvdzogcmdiKDAsIDAsIDI1NSkKK3RhcmdldDogcmdiKDAsIDAsIDApCitv
bGRlc3RTaGFkb3c6IHJnYigyNTUsIDAsIDApCitvbGRlclNoYWRvdzogcmdiKDAsIDAsIDI1NSkK
K3RhcmdldDogcmdiKDAsIDAsIDApCit0ZXN0IGEgc3R5bGUgaXMgYXBwbGllZCBpbiBkb2N1bWVu
dCBvcmRlci4KK3RhcmdldDogcmdiKDI1NSwgMjU1LCAwKQordGFyZ2V0OiByZ2IoMCwgMTI4LCAw
KQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUt
c2NvcGVkLWFwcGx5LWF1dGhvci1zdHlsZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0
eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYXBwbHktYXV0aG9yLXN0eWxlcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQwNDg3OWUwM2NiYzI2MWY2MjZjMWI2YjY0Y2Q1YTVhYWJhNTVlYjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWFw
cGx5LWF1dGhvci1zdHlsZXMuaHRtbApAQCAtMCwwICsxLDIyNSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZG9tL3NoYWRvdy9yZXNvdXJj
ZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitz
aG91bGRCZURlZmluZWQoIndpbmRvdy5pbnRlcm5hbHMiKTsKK3Nob3VsZEJlRGVmaW5lZCgid2lu
ZG93LmludGVybmFscy5lbnN1cmVTaGFkb3dSb290Iik7CitzaG91bGRCZURlZmluZWQoIldlYktp
dFNoYWRvd1Jvb3QiKTsKKworZnVuY3Rpb24gZHVtcENvbXB1dGVkU3R5bGUobm9kZSkKK3sKKyAg
ICBkZWJ1Zyhub2RlLmlkICsgIjogIiArIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUobm9kZSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLWNvbG9yJykpOworfQor
CitmdW5jdGlvbiB0ZXN0QmFzaWMoKQoreworICAgIGRlYnVnKCd0ZXN0IGEgc2NvcGVkIHN0eWxl
IGluIGRvY3VtZW50IGlzIGFwcGxpZWQgdG8gYSBub2RlIGluIHNoYWRvdyBkb20gc3VidHJlZSB3
aGVuIGFwcGx5LWF1dGhvci1zdHlsZXMgaXMgdHJ1ZS4nKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZGl2LmlubmVySFRNTCA9ICc8ZGl2PjxzdHls
ZSBzY29wZWQ+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9PC9zdHlsZT48ZGl2IGlkPSJo
b3N0Ij48L2Rpdj48L2Rpdj4nOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsK
KworICAgIHZhciBzaGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiaG9zdCIpKTsKKyAgICBzaGFkb3cuaW5uZXJIVE1MID0gJzxkaXYgaWQ9InRhcmdl
dCI+dGFyZ2V0PC9kaXY+JzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisK
KyAgICAvLyBiZWZvcmUKKyAgICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKyAg
ICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKwor
ICAgIC8vIGFmdGVyCisgICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKyAgICBk
dW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKworICAg
IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGl2KTsKK30KKworZnVuY3Rpb24gdGVzdEVuY2xv
c2luZ1NoYWRvdygpCit7CisgICAgZGVidWcoJ3Rlc3QgYSBzdHlsZSBpbiBhbiBlbmNsb3Npbmcg
c2hhZG93IGRvbSB0cmVlIGlzIGFwcGxpZWQgdG8gYSBub2RlIGluIHNoYWRvdyBzdWJ0cmVlIHdo
ZW4gYXBwbHktYXV0aG9yLXN0eWxlcyBpcyB0cnVlLicpOworCisgICAgdmFyIGRpdiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
ZGl2KTsKKworICAgIHZhciBvdXRlclNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7
CisgICAgb3V0ZXJTaGFkb3cuaW5uZXJIVE1MID0gJzxzdHlsZT5kaXYgeyBib3JkZXI6IDFweCBz
b2xpZCByZWQ7IH08L3N0eWxlPjxkaXYgaWQ9Im91dGVyIj5vdXRlcjwvZGl2Pic7CisgICAgdmFy
IHNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KG91dGVyU2hhZG93LmdldEVsZW1lbnRCeUlk
KCJvdXRlciIpKTsKKyAgICBzaGFkb3cuaW5uZXJIVE1MID0gJzxkaXYgaWQ9InRhcmdldCI+dGFy
Z2V0PC9kaXY+JzsKKworICAgIC8vIGJlZm9yZQorICAgIHNoYWRvdy5hcHBseUF1dGhvclN0eWxl
cyA9IGZhbHNlOworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgi
dGFyZ2V0IikpOworCisgICAgLy8gYWZ0ZXIKKyAgICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMg
PSB0cnVlOworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgidGFy
Z2V0IikpOworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGl2KTsgICAKK30KKworZnVu
Y3Rpb24gdGVzdEVuY2xvc2luZ1NoYWRvd1dpdGhTY29wZWQoKQoreworICAgIGRlYnVnKCd0ZXN0
IGEgc2NvcGVkIHN0eWxlIGluIGFuIGVuY2xvc2luZyBzaGFkb3cgZG9tIHRyZWUgaXMgYXBwbGll
ZCB0byBhIG5vZGUgaW4gc2hhZG93IHN1YnRyZWUgd2hlbiBhcHBseS1hdXRob3Itc3R5bGVzIGlz
IHRydWUgYW5kIHRoZSBub2RlIGlzIGluIHRoZSBzY29wZS4nKTsKKworICAgIHZhciBkaXYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGRpdik7CisKKyAgICB2YXIgb3V0ZXJTaGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChk
aXYpOworICAgIG91dGVyU2hhZG93LmlubmVySFRNTCA9ICc8ZGl2PjxzdHlsZSBzY29wZWQ+ZGl2
IHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9PC9zdHlsZT48ZGl2IGlkPSJvdXRlckluU2NvcGUi
Pm91dGVySW5TY29wZTwvZGl2PjwvZGl2PjxkaXYgaWQ9Im91dGVyT3V0T2ZTY29wZSI+b3V0ZXJP
dXRPZlNjb3BlPC9kaXY+JzsKKworICAgIHZhciBzaGFkb3cxID0gbmV3IFdlYktpdFNoYWRvd1Jv
b3Qob3V0ZXJTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm91dGVySW5TY29wZSIpKTsKKyAgICBzaGFk
b3cxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJ0YXJnZXRJblNjb3BlIj50YXJnZXRJblNjb3BlPC9k
aXY+JzsKKyAgICB2YXIgc2hhZG93MiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KG91dGVyU2hhZG93
LmdldEVsZW1lbnRCeUlkKCJvdXRlck91dE9mU2NvcGUiKSk7CisgICAgc2hhZG93Mi5pbm5lckhU
TUwgPSAnPGRpdiBpZD0idGFyZ2V0T3V0T2ZTY29wZSI+dGFyZ2V0T3V0T2ZTY29wZTwvZGl2Pic7
CisKKyAgICAvLyBiZWZvcmUKKyAgICBzaGFkb3cxLmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7
CisgICAgc2hhZG93Mi5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworICAgIGR1bXBDb21wdXRl
ZFN0eWxlKHNoYWRvdzEuZ2V0RWxlbWVudEJ5SWQoInRhcmdldEluU2NvcGUiKSk7CisgICAgZHVt
cENvbXB1dGVkU3R5bGUoc2hhZG93Mi5nZXRFbGVtZW50QnlJZCgidGFyZ2V0T3V0T2ZTY29wZSIp
KTsKKworICAgIC8vIGFmdGVyCisgICAgc2hhZG93MS5hcHBseUF1dGhvclN0eWxlcyA9IHRydWU7
CisgICAgc2hhZG93Mi5hcHBseUF1dGhvclN0eWxlcyA9IHRydWU7CisgICAgZHVtcENvbXB1dGVk
U3R5bGUoc2hhZG93MS5nZXRFbGVtZW50QnlJZCgidGFyZ2V0SW5TY29wZSIpKTsKKyAgICBkdW1w
Q29tcHV0ZWRTdHlsZShzaGFkb3cyLmdldEVsZW1lbnRCeUlkKCJ0YXJnZXRPdXRPZlNjb3BlIikp
OworCisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpOyAgIAorfQorCitmdW5jdGlv
biB0ZXN0TmVzdGVkU2hhZG93KCkKK3sKKyAgICBkZWJ1ZygndGVzdCBhIHN0eWxlIGluIGEgc2hh
ZG93IHN1YnRyZWUgaXMgYXBwbGllZCB0byBhIG5vZGUgaW4gaXRzIGRlc2NlbmRhbnQgc2hhZG93
IHN1YnRyZWUgd2hlbiBhbGwgYXBwbHktYXV0aG9yLXN0eWxlcyBpbiBzaGFkb3cgc3VidHJlZXMg
YmV0d2VlbiB0aGUgc2hhZG93IHN1YnRyZWUgYW5kIHRoZSBkZXNjZW5kYW50IGFyZSB0cnVlLicp
OworCisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRp
di5pbm5lckhUTUwgPSAnPHN0eWxlIHNjb3BlZD5kaXYgeyBib3JkZXI6IDFweCBzb2xpZCByZWQg
fTwvc3R5bGU+PGRpdiBpZD0iaG9zdCI+PC9kaXY+JzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGRpdik7CisKKyAgICB2YXIgb3V0ZXJNb3N0U2hhZG93ID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvc3QiKSk7CisgICAgb3V0ZXJNb3N0U2hh
ZG93LmlubmVySFRNTCA9ICc8c3R5bGU+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgYmx1ZTsgfTwv
c3R5bGU+PGRpdiBpZD0ib3V0ZXJNb3N0Ij5vdXRlck1vc3Q8L2Rpdj4nOworICAgIG91dGVyTW9z
dFNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworCisgICAgdmFyIG91dGVyU2hhZG93
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qob3V0ZXJNb3N0U2hhZG93LmdldEVsZW1lbnRCeUlkKCJv
dXRlck1vc3QiKSk7CisgICAgb3V0ZXJTaGFkb3cuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Im91dGVy
Ij5vdXRlcjwvZGl2Pic7CisgICAgb3V0ZXJTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxz
ZTsKKworICAgIHZhciBzaGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChvdXRlclNoYWRvdy5n
ZXRFbGVtZW50QnlJZCgib3V0ZXIiKSk7CisgICAgc2hhZG93LmlubmVySFRNTCA9ICc8ZGl2IGlk
PSJ0YXJnZXQiPnRhcmdldDwvZGl2Pic7CisgICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0g
ZmFsc2U7CisKKyAgICAvLyBObyBzdHlsZXMgc2hvdWxkIGJlIGFwcGxpZWQuCisgICAgZHVtcENv
bXB1dGVkU3R5bGUoc2hhZG93LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICBzaGFk
b3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlOworICAgIC8vIEEgc3R5bGUgaW4gZG9jdW1lbnQg
c2hvdWxkIGJlIGFwcGxpZWQuCisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93LmdldEVsZW1l
bnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICBvdXRlclNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9
IHRydWUKKyAgICAvLyBBIHN0eWxlIGluICdvdXRlck1vc3QnIHNoYWRvdyBzaG91bGQgYmUgYXBw
bGllZC4KKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdl
dCIpKTsKKworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGl2KTsgICAKK30KKworZnVu
Y3Rpb24gdGVzdE11bHRpcGxlU2hhZG93KCkKK3sKKyAgICBkZWJ1ZygndGVzdCBhIHN0eWxlIGlu
IGRvY3VtZW50IGlzIGFwcGxpZWQgdG8gbm9kZXMgaW4gbXVsdGlwbGUgc2hhZG93IHN1YnRyZWVz
IHdoZW4gYXBwbHktYXV0aG9yLXN0eWxlcyBpcyB0cnVlLicpOworCisgICAgdmFyIGRpdiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRpdi5pbm5lckhUTUwgPSAnPHN0eWxl
IHNjb3BlZD5kaXYgeyBib3JkZXI6IDFweCBzb2xpZCByZWQgfTwvc3R5bGU+PGRpdj50ZXN0PC9k
aXY+JzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisKKyAgICB2YXIgb2xk
ZXN0U2hhZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKKyAgICBvbGRlc3RTaGFkb3cu
aW5uZXJIVE1MID0gJzxzaGFkb3c+PC9zaGFkb3c+PGRpdiBpZD0ib2xkZXN0U2hhZG93Ij5vbGRl
c3RTaGFkb3c8L2Rpdj4nOworICAgIG9sZGVzdFNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IGZh
bHNlOworCisgICAgdmFyIG9sZGVyU2hhZG93ID0gIG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7
CisgICAgb2xkZXJTaGFkb3cuaW5uZXJIVE1MID0gJzxzdHlsZSBzY29wZWQ+ZGl2IHsgYm9yZGVy
OiAxcHggc29saWQgYmx1ZSB9PC9zdHlsZT48c2hhZG93Pjwvc2hhZG93PjxkaXYgaWQ9Im9sZGVy
U2hhZG93Ij5vbGRlclNoYWRvdzwvZGl2Pic7CisgICAgb2xkZXJTaGFkb3cuYXBwbHlBdXRob3JT
dHlsZXMgPSBmYWxzZTsKKworICAgIHZhciBzaGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChk
aXYpOworICAgIHNoYWRvdy5pbm5lckhUTUwgPSAnPHNoYWRvdz48L3NoYWRvdz48ZGl2IGlkPSJ0
YXJnZXQiPnNoYWRvdzwvZGl2Pic7CisgICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gZmFs
c2U7CisKKyAgICAvLyBiZWZvcmUKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShvbGRlc3RTaGFkb3cu
Z2V0RWxlbWVudEJ5SWQoIm9sZGVzdFNoYWRvdyIpKTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShv
bGRlclNoYWRvdy5nZXRFbGVtZW50QnlJZCgib2xkZXJTaGFkb3ciKSk7CisgICAgZHVtcENvbXB1
dGVkU3R5bGUoc2hhZG93LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICAvLyBkb2N1
bWVudCAtLS0rLS0tIG9sZGVzdFNoYWRvdworICAgIC8vICAgICAgICAgICAgIHwKKyAgICAvLyAg
ICAgICAgICAgICArLS0tIG9sZGVyU2hhZG93CisgICAgLy8gICAgICAgICAgICAgfAorICAgIC8v
ICAgICAgICAgICAgICstLS0gc2hhZG93CisKKyAgICAvLyBhcHBseS1hdXRob3Itc3R5bGVzIGFm
ZmVjdHMgYmV0d2VlbiBzaGFkb3cgYW5kIGRvY3VtZW50LgorICAgIHNoYWRvdy5hcHBseUF1dGhv
clN0eWxlcyA9IHRydWU7CisgICAgZHVtcENvbXB1dGVkU3R5bGUob2xkZXN0U2hhZG93LmdldEVs
ZW1lbnRCeUlkKCJvbGRlc3RTaGFkb3ciKSk7CisgICAgZHVtcENvbXB1dGVkU3R5bGUob2xkZXJT
aGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm9sZGVyU2hhZG93IikpOworICAgIGR1bXBDb21wdXRlZFN0
eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworCisgICAgLy8gYXBwbHktYXV0
aG9yLXN0eWxlcyBhZmZlY3RzIGJldHdlZW4gb2xkZXIgc2hhZG93IGFuZCBkb2N1bWVudC4KKyAg
ICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKyAgICBvbGRlclNoYWRvdy5hcHBs
eUF1dGhvclN0eWxlcyA9IHRydWU7CisgICAgZHVtcENvbXB1dGVkU3R5bGUob2xkZXN0U2hhZG93
LmdldEVsZW1lbnRCeUlkKCJvbGRlc3RTaGFkb3ciKSk7CisgICAgZHVtcENvbXB1dGVkU3R5bGUo
b2xkZXJTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm9sZGVyU2hhZG93IikpOworICAgIGR1bXBDb21w
dXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworCisgICAgLy8gYXBw
bHktYXV0aG9yLXN0eWxlcyBhZmZlY3RzIGJldHdlZW4gb2xkZXN0IHNoYWRvdyBhbmQgZG9jdW1l
bnQuCisgICAgb2xkZXJTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKyAgICBvbGRl
c3RTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlOworICAgIGR1bXBDb21wdXRlZFN0eWxl
KG9sZGVzdFNoYWRvdy5nZXRFbGVtZW50QnlJZCgib2xkZXN0U2hhZG93IikpOworICAgIGR1bXBD
b21wdXRlZFN0eWxlKG9sZGVyU2hhZG93LmdldEVsZW1lbnRCeUlkKCJvbGRlclNoYWRvdyIpKTsK
KyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsK
KworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGl2KTsKK30KKworZnVuY3Rpb24gdGVz
dE9yZGVyT2ZBcHBseVN0eWxlKCkKK3sKKyAgICBkZWJ1ZygndGVzdCBhIHN0eWxlIGlzIGFwcGxp
ZWQgaW4gZG9jdW1lbnQgb3JkZXIuJyk7CisKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CisgICAgZGl2LmlubmVySFRNTCA9ICc8c3R5bGUgc2NvcGVkPmRpdiB7
IGJvcmRlcjogMXB4IHNvbGlkIHJlZCB9PC9zdHlsZT48ZGl2IGlkPSJob3N0Ij48L2Rpdj4nOwor
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKworICAgIHZhciBvdXRlck1vc3RT
aGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaG9z
dCIpKTsKKyAgICBvdXRlck1vc3RTaGFkb3cuaW5uZXJIVE1MID0gJzxzdHlsZT5kaXYgeyBib3Jk
ZXI6IDFweCBzb2xpZCBibHVlOyB9PC9zdHlsZT48ZGl2IGlkPSJvdXRlck1vc3QiPm91dGVyTW9z
dDwvZGl2Pic7CisgICAgb3V0ZXJNb3N0U2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsK
KworICAgIHZhciBvdXRlclNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KG91dGVyTW9zdFNo
YWRvdy5nZXRFbGVtZW50QnlJZCgib3V0ZXJNb3N0IikpOworICAgIG91dGVyU2hhZG93LmlubmVy
SFRNTCA9ICc8c3R5bGU+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgZ3JlZW47IH08L3N0eWxlPjxk
aXYgaWQ9Im91dGVyIj5vdXRlcjwvZGl2Pic7CisgICAgb3V0ZXJTaGFkb3cuYXBwbHlBdXRob3JT
dHlsZXMgPSB0cnVlOworCisgICAgdmFyIHNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KG91
dGVyU2hhZG93LmdldEVsZW1lbnRCeUlkKCJvdXRlciIpKTsKKyAgICBzaGFkb3cuaW5uZXJIVE1M
ID0gJzxzdHlsZT5kaXYgeyBib3JkZXI6IDFweCBzb2xpZCB5ZWxsb3c7IH08L3N0eWxlPjxkaXYg
aWQ9InRhcmdldCI+dGFyZ2V0PC9kaXY+JzsKKyAgICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMg
PSB0cnVlOworCisgICAgLy8gVGhlIGxhc3Qgc2NvcGVkIHN0eWxlIHNob3VsZCBiZSBhcHBsaWVk
LgorICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iikp
OworCisgICAgc2hhZG93LmlubmVySFRNTCA9ICc8ZGl2IGlkPSJ0YXJnZXQiPnRhcmdldDwvZGl2
Pic7CisgICAgLy8gVGhlIG91dGVyJ3Mgc2NvcGVkIHN0eWxlIHNob3VsZCBiZSBhcHBsaWVkLgor
ICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOwor
CisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpOyAgIAorfQorCitmdW5jdGlvbiBy
dW5UZXN0cygpIHsKKyAgICB0ZXN0QmFzaWMoKTsKKyAgICB0ZXN0RW5jbG9zaW5nU2hhZG93KCk7
CisgICAgdGVzdEVuY2xvc2luZ1NoYWRvd1dpdGhTY29wZWQoKTsKKyAgICB0ZXN0TmVzdGVkU2hh
ZG93KCk7CisgICAgdGVzdE11bHRpcGxlU2hhZG93KCk7CisgICAgdGVzdE9yZGVyT2ZBcHBseVN0
eWxlKCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0cygp
Ij4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148268</attachid>
            <date>2012-06-18 23:59:28 -0700</date>
            <delta_ts>2012-06-19 19:59:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89061-20120619155928.patch</filename>
            <type>text/plain</type>
            <size>21609</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVjNTkxNTQ3YmIxOTZk
Y2MzY2E5Y2I5MjI4YmIzMjc4MGVkYmQzZC4uMDkxYzhjZDI1NTEwMzI2YWU4ZDAzM2RmNzJhNWFm
NDczMzIyODVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA2LTEzICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBhcHBseUF1dGhvclN0
eWxlcyBtYWtlcyBydWxlcyBkZWNsYXJlZCBpbiBhbGwgZW5jbG9zaW5nIHNoYWRvdyBkb20gc3Vi
dHJlZXMgYXBwbGljYWJsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg5MDYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRml4aW5nIGFwcGx5LWF1dGhvci1zdHlsZXMgYnVnLiBJZiB0aGVyZSBleGlzdHMg
c29tZSBzaGFkb3cgc3VidHJlZSBBCisgICAgICAgIGFuZCBBIGhhcyBhcHBseS1hdXRob3Itc3R5
bGVzIGZsYWcgc2V0LCB3aGV0aGVyIHNvbWUgcnVsZXMgZGVjbGFyZWQgaW4KKyAgICAgICAgYSB0
cmVlIEIgaXMgYXBwbGljYWJsZSBpbiBBIG9yIG5vdCBkZXBlbmRzIG9uOgorICAgICAgICAtIHRo
ZSB0cmVlIEIgZW5jbG9zZXMgdGhlIHRyZWUgQSwgYW5kCisgICAgICAgIC0gYWxsIHRyZWVzIHdo
aWNoIGVuY2xvc2UgQSBhbmQgYXJlIGVuY2xvc2VkIGJ5IEIgaGFzCisgICAgICAgICAgYXBwbHkt
YXV0aG9yLXN0eWxlcyBzZXQuCisgICAgICAgIGMuZi4KKyAgICAgICAgaHR0cDovL2R2Y3MudzMu
b3JnL2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwj
c3R5bGVzCisgICAgICAgIEhvd2V2ZXIgdGhlIHNlY29uZCBydWxlIHdhcyBub3QgaW1wbGVtZW50
ZWQuCisKKyAgICAgICAgVGVzdDogZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1h
cHBseS1hdXRob3Itc3R5bGVzLmh0bWwKKworICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnNldHVwU2NvcGVTdGFjayk6Cisg
ICAgICAgIE1vZGlmaWVkIHRvIGFkZCBhIGdyb3VwIG51bWJlciwgYXBwbHlBdXRob3JTdHlsZVNl
dEdyb3VwIHRvCisgICAgICAgIG1fc2NvcGVTdGFjay4gVGhlIGdyb3VwIG1lYW5zOiBpZiBzaGFk
b3cgZG9tIHN1YnRyZWUgQSBhbmQgQiBoYXMgdGhlCisgICAgICAgIHNhbWUgZ3JvdXAgbnVtYmVy
IGFuZCBBIGVuY2xvc2VzIEIsIGFsbCBzaGFkb3cgZG9tIHN1YnRyZWVzIHdoaWNoCisgICAgICAg
IGVuY2xvc2UgQiBhbmQgYXJlIGVuY2xvc2VkIGJ5IEIgaGF2ZSBhcHBseS1hdXRob3Itc3R5bGVz
IHNldC4gQW5kIEIKKyAgICAgICAgYWxzbyBoYXMgYXBwbHktYXV0aG9yLXN0eWxlcyBzZXQuIChT
ZWUgc2hhZG93IGRvbSBzcGVjJ3Mgc3R5bGVzKQorICAgICAgICBUaGlzIG1lYW5zLCBpZiBzb21l
IGVsZW1lbnQgWCBoYXMgYXBwbHlBdXRob3JTdHlsZVNldEdyb3VwIE4sIGFsbAorICAgICAgICBy
dWxlc2V0cyB3aG9zZSBzY29wZXMgaGF2ZSBhcHBseUF1dGhvclN0eWxlU2V0R3JvdXBOIGFyZSBh
cHBsaWNhYmxlIGluCisgICAgICAgIEIncyB0cmVlIHNjb3BlLiBJZiBhbGwgc2hhZG93IGRvbSBz
dWJ0cmVlcyBoYXZlIGFwcGx5LWF1dGhvci1zdHlsZXMKKyAgICAgICAgdW5zZXQsIHRoZSBncm91
cCBsb29rcyBhbG1vc3QgdGhlIHNhbWUgYXMgdHJlZVNjb3BlKCkuIEluIHRoaXMgY2FzZSwKKyAg
ICAgICAgUnVsZXMgaW4gZGlmZmVyZW50IHRyZWUgc2NvcGVzIGhhdmUgZGlmZmVyZW50IGdyb3Vw
IG51bWJlcnMuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpwdXNoU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cG9wU2NvcGUpOgorICAgICAgICBBZGRl
ZCB0aGUgY29kZSBmb3IgdXBkYXRpbmcgbV9zY29wZVN0YWNrUGFyZW50R3JvdXAuIFRoZSBtZW1i
ZXIKKyAgICAgICAgdmFyaWFibGUga2VlcHMgbV9zY29wZVN0YWNrUGFyZW50J3MgYXBwbHlBdXRo
b3JTdHlsZVNldCBncm91cCBudW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjptYXRjaFNjb3BlZEF1dGhvclJ1bGVzKToKKyAgICAgICAgTW9kaWZpZWQgdG8gY29uc2lkZXIg
YXBwbHlBdXRob3JTdHlsZVNldCBncm91cC4gRmlyc3RseSBhcHBseWluZworICAgICAgICBzY29w
ZWQgc3R5bGVzIGRlY2xhcmVkIGluIGRvY3VtZW50IGlmIGFwcGx5LWF1dGhvci1zdHlsZXMgaXMg
c2V0LgorICAgICAgICBOZXh0LCBhcHBseWluZyBzY29wZWQgc3R5bGVzIGRlY2xhcmVkIGluIHNo
YWRvdyBkb20gc3VidHJlZSB3aXRoCisgICAgICAgIGNvbnNpZGVyaW5nIGFwcGx5QXV0cmhvU3R5
bGVTZXQgZ3JvdXAgbnVtYmVyLCBpLmUuIGNvbnNpZGVyaW5nCisgICAgICAgIGFwcGx5LWF1dGhv
ci1zdHlsZXMgZmxhZy4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U2NvcGVTdGFja0ZyYW1lOjpTY29wZVN0YWNrRnJhbWUp
OgorICAgICAgICAoU2NvcGVTdGFja0ZyYW1lKToKKyAgICAgICAgQWRkZWQgbV9hcHBseUF1dHJo
b1N0eWxlU2V0R3JvdXAgdG8ga2VlcCBhcHBseUF1dGhvclN0eWxlcyBpbmZvcm1hdGlvbi4KKyAg
ICAgICAgbV9hcHBseUF1dHJob1N0eWxlU2V0R3JvdXAgaW5jcmVtZW50cyBieSAxIGlmIHNoYWRv
dyByb290IGlzIGdpdmVuIGFuZAorICAgICAgICBpdCBoYXMgYXBwbHlBdXRob3JTdHlsZXMgdW5z
ZXQuCisgICAgICAgIE5vdyBydWxlcyBpbiB0aGUgc2FtZSBhcHBseUF1dGhvclNldEdyb3VwIHNo
b3VsZCBiZSBhcHBsaWVkLgorICAgICAgICAoU3R5bGVSZXNvbHZlcik6CisgICAgICAgIEFkZGVk
IG1fc2NvcGVTdGFja1BhcmVudEdyb3VwLiBBcyBtX3Njb3BlU3RhY2tQYXJlbnRBcHBseUF1dGhv
clNldEdyb3VwCisgICAgICAgIGlzIGEgbGl0dGxlIGxvbmcsIHVzZWQgbV9zY29wZVN0YWNrUGFy
ZW50R3JvdXAuCisKIDIwMTItMDYtMTggIEdyZWdnIFRhdmFyZXMgIDxnbWFuQGdvb2dsZS5jb20+
CiAKICAgICAgICAgRXhwb3NlIFdFQkdMX2RlcHRoX3RleHR1cmUgZXh0ZW5zaW9uIHRvIFdlYkdM
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggOGJkNGNmMzQ3ZDRlMzQwNWYx
M2UwY2FiZGU2MzYyZWNmNzU3YWYxMS4uNzQ1MGExMzY5N2FiMWI3MDQzZjBjNDE0YWFlZTY5NjY2
ZGI0M2U2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMzcyLDYgKzM3
Miw3IEBAIFN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVzb2x2ZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBi
b29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykKICNlbmRpZgogI2lmIEVOQUJMRShTVFlMRV9T
Q09QRUQpCiAgICAgLCBtX3Njb3BlU3RhY2tQYXJlbnQoMCkKKyAgICAsIG1fc2NvcGVTdGFja1Bh
cmVudEdyb3VwKDApCiAjZW5kaWYKIHsKICAgICBFbGVtZW50KiByb290ID0gZG9jdW1lbnQtPmRv
Y3VtZW50RWxlbWVudCgpOwpAQCAtNTY0LDEzICs1NjUsMTcgQEAgdm9pZCBTdHlsZVJlc29sdmVy
OjpzZXR1cFNjb3BlU3RhY2soY29uc3QgQ29udGFpbmVyTm9kZSogcGFyZW50KQogICAgIEFTU0VS
VCghbV9zY29wZWRBdXRob3JTdHlsZXMuaXNFbXB0eSgpKTsKIAogICAgIG1fc2NvcGVTdGFjay5z
aHJpbmsoMCk7CisgICAgaW50IGFwcGx5QXV0aG9yU3R5bGVTZXRHcm91cCA9IDA7CiAgICAgZm9y
IChjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSA9IHBhcmVudDsgc2NvcGU7IHNjb3BlID0gc2Nv
cGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgewogICAgICAgICBSdWxlU2V0KiBydWxlU2V0ID0gcnVs
ZVNldEZvclNjb3BlKHNjb3BlKTsKICAgICAgICAgaWYgKHJ1bGVTZXQpCi0gICAgICAgICAgICBt
X3Njb3BlU3RhY2suYXBwZW5kKFNjb3BlU3RhY2tGcmFtZShzY29wZSwgcnVsZVNldCkpOworICAg
ICAgICAgICAgbV9zY29wZVN0YWNrLmFwcGVuZChTY29wZVN0YWNrRnJhbWUoc2NvcGUsIGFwcGx5
QXV0aG9yU3R5bGVTZXRHcm91cCwgcnVsZVNldCkpOworICAgICAgICBpZiAoc2NvcGUtPmlzU2hh
ZG93Um9vdCgpICYmICF0b1NoYWRvd1Jvb3Qoc2NvcGUpLT5hcHBseUF1dGhvclN0eWxlcygpKQor
ICAgICAgICAgICAgLS1hcHBseUF1dGhvclN0eWxlU2V0R3JvdXA7CiAgICAgfQogICAgIG1fc2Nv
cGVTdGFjay5yZXZlcnNlKCk7CiAgICAgbV9zY29wZVN0YWNrUGFyZW50ID0gcGFyZW50OworICAg
IG1fc2NvcGVTdGFja1BhcmVudEdyb3VwID0gMDsKIH0KIAogdm9pZCBTdHlsZVJlc29sdmVyOjpw
dXNoU2NvcGUoY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUsIGNvbnN0IENvbnRhaW5lck5vZGUq
IHNjb3BlUGFyZW50KQpAQCAtNTg3LDEwICs1OTIsMTIgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpw
dXNoU2NvcGUoY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUsIGNvbnN0IENvbnRhaW5lck5vZGUq
IHMKICAgICAgICAgc2V0dXBTY29wZVN0YWNrKHNjb3BlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KKyAgICBpZiAoc2NvcGUtPmlzU2hhZG93Um9vdCgpICYmICF0b1NoYWRvd1Jvb3Qoc2NvcGUp
LT5hcHBseUF1dGhvclN0eWxlcygpKQorICAgICAgICArK21fc2NvcGVTdGFja1BhcmVudEdyb3Vw
OwogICAgIC8vIE90aGVyd2lzZSBqdXN0IHB1c2ggdGhlIHBhcmVudCBvbnRvIHRoZSBzdGFjay4K
ICAgICBSdWxlU2V0KiBydWxlU2V0ID0gcnVsZVNldEZvclNjb3BlKHNjb3BlKTsKICAgICBpZiAo
cnVsZVNldCkKLSAgICAgICAgbV9zY29wZVN0YWNrLmFwcGVuZChTY29wZVN0YWNrRnJhbWUoc2Nv
cGUsIHJ1bGVTZXQpKTsKKyAgICAgICAgbV9zY29wZVN0YWNrLmFwcGVuZChTY29wZVN0YWNrRnJh
bWUoc2NvcGUsIG1fc2NvcGVTdGFja1BhcmVudEdyb3VwLCBydWxlU2V0KSk7CiAgICAgbV9zY29w
ZVN0YWNrUGFyZW50ID0gc2NvcGU7CiB9CiAKQEAgLTYwMCw2ICs2MDcsOCBAQCB2b2lkIFN0eWxl
UmVzb2x2ZXI6OnBvcFNjb3BlKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQogICAgIGlmIChz
Y29wZVN0YWNrSXNDb25zaXN0ZW50KHNjb3BlKSkgewogICAgICAgICBpZiAoIW1fc2NvcGVTdGFj
ay5pc0VtcHR5KCkgJiYgbV9zY29wZVN0YWNrLmxhc3QoKS5tX3Njb3BlID09IHNjb3BlKQogICAg
ICAgICAgICAgbV9zY29wZVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgaWYgKHNjb3BlLT5p
c1NoYWRvd1Jvb3QoKSAmJiAhdG9TaGFkb3dSb290KHNjb3BlKS0+YXBwbHlBdXRob3JTdHlsZXMo
KSkKKyAgICAgICAgICAgIC0tbV9zY29wZVN0YWNrUGFyZW50R3JvdXA7CiAgICAgICAgIG1fc2Nv
cGVTdGFja1BhcmVudCA9IHNjb3BlLT5wYXJlbnRPckhvc3ROb2RlKCk7CiAgICAgfQogfQpAQCAt
OTI2LDIyICs5MzUsMzggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaFNjb3BlZEF1dGhvclJ1
bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHQKICAgICBNYXRjaE9wdGlv
bnMgb3B0aW9ucyhpbmNsdWRlRW1wdHlSdWxlcyk7CiAKICAgICAvLyBNYXRjaCBzY29wZWQgYXV0
aG9yIHJ1bGVzIGJ5IHRyYXZlcnNpbmcgdGhlIHNjb3BlZCBlbGVtZW50IHN0YWNrIChyZWJ1aWxk
IGl0IGlmIGl0IGdvdCBpbmNvbnNpc3RlbnQpLgotICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHBh
cmVudCA9IG1fZWxlbWVudC0+cGFyZW50T3JIb3N0Tm9kZSgpOwotICAgIGlmICghc2NvcGVTdGFj
a0lzQ29uc2lzdGVudChwYXJlbnQpKQotICAgICAgICBzZXR1cFNjb3BlU3RhY2socGFyZW50KTsK
LSAgICBmb3IgKHNpemVfdCBpID0gbV9zY29wZVN0YWNrLnNpemUoKTsgaTsgLS1pKSB7Ci0gICAg
ICAgIGNvbnN0IFNjb3BlU3RhY2tGcmFtZSYgZnJhbWUgPSBtX3Njb3BlU3RhY2tbaSAtIDFdOwor
ICAgIGlmICghc2NvcGVTdGFja0lzQ29uc2lzdGVudChtX2VsZW1lbnQpKQorICAgICAgICBzZXR1
cFNjb3BlU3RhY2sobV9lbGVtZW50KTsKKworICAgIHVuc2lnbmVkIGludCBmaXJzdFNoYWRvd1Nj
b3BlSW5kZXggPSAwOworICAgIGlmIChtX2VsZW1lbnQtPnRyZWVTY29wZSgpLT5hcHBseUF1dGhv
clN0eWxlcygpKSB7CisgICAgICAgIHVuc2lnbmVkIGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkg
PCBtX3Njb3BlU3RhY2suc2l6ZSgpICYmICFtX3Njb3BlU3RhY2tbaV0ubV9zY29wZS0+aXNJblNo
YWRvd1RyZWUoKTsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBTY29wZVN0YWNrRnJhbWUmIGZy
YW1lID0gbV9zY29wZVN0YWNrW2ldOworICAgICAgICAgICAgb3B0aW9ucy5zY29wZSA9IGZyYW1l
Lm1fc2NvcGU7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhmcmFtZS5tX3J1bGVT
ZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRo
b3JSdWxlLCBvcHRpb25zKTsKKyAgICAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVn
aW9uKGZyYW1lLm1fcnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3Vs
dC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOworICAgICAgICB9CisgICAgICAgIGZp
cnN0U2hhZG93U2NvcGVJbmRleCA9IGk7CisgICAgfQorCisgICAgaWYgKCFtX2VsZW1lbnQtPmlz
SW5TaGFkb3dUcmVlKCkgfHwgbV9zY29wZVN0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgdW5zaWduZWQgc2NvcGVkSW5kZXggPSBtX3Njb3BlU3RhY2suc2l6ZSgpOworICAg
IGludCBhcHBseUF1dGhvclN0eWxlU2V0R3JvdXAgPSBtX3Njb3BlU3RhY2tQYXJlbnRHcm91cDsK
KyAgICBmb3IgKCA7IHNjb3BlZEluZGV4ID4gZmlyc3RTaGFkb3dTY29wZUluZGV4OyAtLXNjb3Bl
ZEluZGV4KSB7CisgICAgICAgIGlmIChhcHBseUF1dGhvclN0eWxlU2V0R3JvdXAgIT0gbV9zY29w
ZVN0YWNrW3Njb3BlZEluZGV4IC0gMV0ubV9hcHBseUF1dGhvclN0eWxlU2V0R3JvdXApCisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyBSdWxlc2V0IGZvciBhbmNlc3RvciBub2Rl
cyBzaG91bGQgYmUgYXBwbGllZCBmaXJzdC4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBzY29wZWRJ
bmRleDsgaSA8IG1fc2NvcGVTdGFjay5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBTY29w
ZVN0YWNrRnJhbWUmIGZyYW1lID0gbV9zY29wZVN0YWNrW2ldOwogICAgICAgICBvcHRpb25zLnNj
b3BlID0gZnJhbWUubV9zY29wZTsKICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoZnJhbWUu
bV9ydWxlU2V0LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5s
YXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7CiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9y
UmVnaW9uKGZyYW1lLm1fcnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJl
c3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwogICAgIH0KLSAgICAvLyBBbHNv
IGluY2x1ZGUgdGhlIGN1cnJlbnQgZWxlbWVudC4KLSAgICBSdWxlU2V0KiBydWxlU2V0ID0gcnVs
ZVNldEZvclNjb3BlKG1fZWxlbWVudCk7Ci0gICAgaWYgKHJ1bGVTZXQpIHsKLSAgICAgICAgb3B0
aW9ucy5zY29wZSA9IG1fZWxlbWVudDsKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMocnVs
ZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1
dGhvclJ1bGUsIG9wdGlvbnMpOwotICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lv
bihydWxlU2V0LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5s
YXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7Ci0gICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
cmVzdWx0KTsKICAgICBVTlVTRURfUEFSQU0oaW5jbHVkZUVtcHR5UnVsZXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmgKaW5kZXggOWY5Y2MyY2E0NWFjZGYwNzk1NGU4MjJkYTI1MGQ1MDM4
MzcxZjczYS4uMWQ2YmY5Yzc1MDExMzc3NmZlY2U2NTEyYjY3MDk2MWY1ZmMzNDAxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC01MzEsOSArNTMxLDEwIEBAIHByaXZhdGU6CiAg
ICAgU2NvcGVkUnVsZVNldE1hcCBtX3Njb3BlZEF1dGhvclN0eWxlczsKICAgICAKICAgICBzdHJ1
Y3QgU2NvcGVTdGFja0ZyYW1lIHsKLSAgICAgICAgU2NvcGVTdGFja0ZyYW1lKCkgOiBtX3Njb3Bl
KDApLCBtX3J1bGVTZXQoMCkgeyB9Ci0gICAgICAgIFNjb3BlU3RhY2tGcmFtZShjb25zdCBDb250
YWluZXJOb2RlKiBzY29wZSwgUnVsZVNldCogcnVsZVNldCkgOiBtX3Njb3BlKHNjb3BlKSwgbV9y
dWxlU2V0KHJ1bGVTZXQpIHsgfQorICAgICAgICBTY29wZVN0YWNrRnJhbWUoKSA6IG1fc2NvcGUo
MCksIG1fYXBwbHlBdXRob3JTdHlsZVNldEdyb3VwKDApLCBtX3J1bGVTZXQoMCkgeyB9CisgICAg
ICAgIFNjb3BlU3RhY2tGcmFtZShjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwgaW50IGFwcGx5
QXV0aG9yU3R5bGVTZXRHcm91cCwgUnVsZVNldCogcnVsZVNldCkgOiBtX3Njb3BlKHNjb3BlKSwg
bV9hcHBseUF1dGhvclN0eWxlU2V0R3JvdXAoYXBwbHlBdXRob3JTdHlsZVNldEdyb3VwKSwgbV9y
dWxlU2V0KHJ1bGVTZXQpIHsgfQogICAgICAgICBjb25zdCBDb250YWluZXJOb2RlKiBtX3Njb3Bl
OworICAgICAgICBpbnQgbV9hcHBseUF1dGhvclN0eWxlU2V0R3JvdXA7CiAgICAgICAgIFJ1bGVT
ZXQqIG1fcnVsZVNldDsKICAgICB9OwogICAgIC8vIFZlY3RvciAodXNlZCBhcyBzdGFjaykgdGhh
dCBrZWVwcyB0cmFjayBvZiBzY29waW5nIGVsZW1lbnRzIChpLmUuLCBlbGVtZW50cyB3aXRoIGEg
PHN0eWxlIHNjb3BlZD4gY2hpbGQpCkBAIC01NDIsNiArNTQzLDcgQEAgcHJpdmF0ZToKICAgICAv
LyBFbGVtZW50IGxhc3Qgc2VlbiBhcyBwYXJlbnQgZWxlbWVudCB3aGVuIHVwZGF0aW5nIG1fc2Nv
cGluZ0VsZW1lbnRTdGFjay4KICAgICAvLyBUaGlzIGlzIHVzZWQgdG8gZGVjaWRlIHdoZXRoZXIg
bV9zY29waW5nRWxlbWVudFN0YWNrIGlzIGNvbnNpc3RlbnQsIHNlcGFyYXRlbHkgZnJvbSBTZWxl
Y3RvckNoZWNrZXI6Om1fcGFyZW50U3RhY2suCiAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogbV9z
Y29wZVN0YWNrUGFyZW50OworICAgIGludCBtX3Njb3BlU3RhY2tQYXJlbnRHcm91cDsKICNlbmRp
ZgogCiAgICAgZnJpZW5kIGNsYXNzIFN0eWxlQnVpbGRlcjsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNjgxYmE1YmZmMDJi
ZTFlYjhhZDY4OGE2ZDdiYmJlYTBhZjA0MzhjLi42OTU0Y2VmNjQ5YWM3Y2Q0ZTg2MGJmMzViYjE1
ZGFhNDhjY2IyYTgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDYtMTMgIFRha2FzaGkg
U2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29tPgorCisgICAgICAgIGFwcGx5QXV0aG9yU3R5bGVz
IG1ha2VzIHJ1bGVzIGRlY2xhcmVkIGluIGFsbCBlbmNsb3Npbmcgc2hhZG93IGRvbSBzdWJ0cmVl
cyBhcHBsaWNhYmxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODkwNjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYXBwbHktYXV0aG9yLXN0
eWxlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLXNjb3Bl
ZC9zdHlsZS1zY29wZWQtYXBwbHktYXV0aG9yLXN0eWxlcy5odG1sOiBBZGRlZC4KKwogMjAxMi0w
Ni0xOCAgR3JlZ2cgVGF2YXJlcyAgPGdtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBFeHBvc2Ug
V0VCR0xfZGVwdGhfdGV4dHVyZSBleHRlbnNpb24gdG8gV2ViR0wKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYXBwbHktYXV0aG9yLXN0
eWxlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5
bGUtc2NvcGVkLWFwcGx5LWF1dGhvci1zdHlsZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZh
NjNkOWFhODQzNDdkNjcwZTYwZmU4NGNlNWVkOTZlM2Q2M2EyYjUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWFwcGx5LWF1
dGhvci1zdHlsZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzggQEAKK1BBU1Mgd2luZG93Lmlu
dGVybmFscyBpcyBkZWZpbmVkLgorUEFTUyB3aW5kb3cuaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jv
b3QgaXMgZGVmaW5lZC4KK1BBU1MgV2ViS2l0U2hhZG93Um9vdCBpcyBkZWZpbmVkLgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit0ZXN0IGEgc2NvcGVk
IHN0eWxlIGluIGRvY3VtZW50IGlzIGFwcGxpZWQgdG8gYSBub2RlIGluIHNoYWRvdyBkb20gc3Vi
dHJlZSB3aGVuIGFwcGx5LWF1dGhvci1zdHlsZXMgaXMgdHJ1ZS4KK3RhcmdldDogcmdiKDAsIDAs
IDApCit0YXJnZXQ6IHJnYigyNTUsIDAsIDApCit0ZXN0IGEgc3R5bGUgaW4gYW4gZW5jbG9zaW5n
IHNoYWRvdyBkb20gdHJlZSBpcyBhcHBsaWVkIHRvIGEgbm9kZSBpbiBzaGFkb3cgc3VidHJlZSB3
aGVuIGFwcGx5LWF1dGhvci1zdHlsZXMgaXMgdHJ1ZS4KK3RhcmdldDogcmdiKDAsIDAsIDApCit0
YXJnZXQ6IHJnYigyNTUsIDAsIDApCit0ZXN0IGEgc2NvcGVkIHN0eWxlIGluIGFuIGVuY2xvc2lu
ZyBzaGFkb3cgZG9tIHRyZWUgaXMgYXBwbGllZCB0byBhIG5vZGUgaW4gc2hhZG93IHN1YnRyZWUg
d2hlbiBhcHBseS1hdXRob3Itc3R5bGVzIGlzIHRydWUgYW5kIHRoZSBub2RlIGlzIGluIHRoZSBz
Y29wZS4KK3RhcmdldEluU2NvcGU6IHJnYigwLCAwLCAwKQordGFyZ2V0T3V0T2ZTY29wZTogcmdi
KDAsIDAsIDApCit0YXJnZXRJblNjb3BlOiByZ2IoMjU1LCAwLCAwKQordGFyZ2V0T3V0T2ZTY29w
ZTogcmdiKDAsIDAsIDApCit0ZXN0IGEgc3R5bGUgaW4gYSBzaGFkb3cgc3VidHJlZSBpcyBhcHBs
aWVkIHRvIGEgbm9kZSBpbiBpdHMgZGVzY2VuZGFudCBzaGFkb3cgc3VidHJlZSB3aGVuIGFsbCBh
cHBseS1hdXRob3Itc3R5bGVzIGluIHNoYWRvdyBzdWJ0cmVlcyBiZXR3ZWVuIHRoZSBzaGFkb3cg
c3VidHJlZSBhbmQgdGhlIGRlc2NlbmRhbnQgYXJlIHRydWUuCit0YXJnZXQ6IHJnYigwLCAwLCAw
KQordGFyZ2V0OiByZ2IoMjU1LCAwLCAwKQordGFyZ2V0OiByZ2IoMCwgMCwgMjU1KQordGVzdCBh
IHN0eWxlIGluIGRvY3VtZW50IGlzIGFwcGxpZWQgdG8gbm9kZXMgaW4gbXVsdGlwbGUgc2hhZG93
IHN1YnRyZWVzIHdoZW4gYXBwbHktYXV0aG9yLXN0eWxlcyBpcyB0cnVlLgorb2xkZXN0U2hhZG93
OiByZ2IoMCwgMCwgMCkKK29sZGVyU2hhZG93OiByZ2IoMCwgMCwgMjU1KQordGFyZ2V0OiByZ2Io
MCwgMCwgMCkKK29sZGVzdFNoYWRvdzogcmdiKDAsIDAsIDApCitvbGRlclNoYWRvdzogcmdiKDAs
IDAsIDI1NSkKK3RhcmdldDogcmdiKDI1NSwgMCwgMCkKK29sZGVzdFNoYWRvdzogcmdiKDAsIDAs
IDApCitvbGRlclNoYWRvdzogcmdiKDAsIDAsIDI1NSkKK3RhcmdldDogcmdiKDAsIDAsIDApCitv
bGRlc3RTaGFkb3c6IHJnYigyNTUsIDAsIDApCitvbGRlclNoYWRvdzogcmdiKDAsIDAsIDI1NSkK
K3RhcmdldDogcmdiKDAsIDAsIDApCit0ZXN0IGEgc3R5bGUgaXMgYXBwbGllZCBpbiBkb2N1bWVu
dCBvcmRlci4KK3RhcmdldDogcmdiKDI1NSwgMjU1LCAwKQordGFyZ2V0OiByZ2IoMCwgMTI4LCAw
KQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUt
c2NvcGVkLWFwcGx5LWF1dGhvci1zdHlsZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0
eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYXBwbHktYXV0aG9yLXN0eWxlcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjMyYjkwNjFmM2I3M2NkMWZjNTMyMzIwZGE5YThkZWRlNmYxY2I2NTQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWFw
cGx5LWF1dGhvci1zdHlsZXMuaHRtbApAQCAtMCwwICsxLDIyNSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZG9tL3NoYWRvdy9yZXNvdXJj
ZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworc2hvdWxkQmVEZWZpbmVkKCJ3aW5k
b3cuaW50ZXJuYWxzIik7CitzaG91bGRCZURlZmluZWQoIndpbmRvdy5pbnRlcm5hbHMuZW5zdXJl
U2hhZG93Um9vdCIpOworc2hvdWxkQmVEZWZpbmVkKCJXZWJLaXRTaGFkb3dSb290Iik7CisKK2Z1
bmN0aW9uIGR1bXBDb21wdXRlZFN0eWxlKG5vZGUpCit7CisgICAgZGVidWcobm9kZS5pZCArICI6
ICIgKyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKG5vZGUsIG51bGwpLmdl
dFByb3BlcnR5VmFsdWUoJ2JvcmRlci1jb2xvcicpKTsKK30KKworZnVuY3Rpb24gdGVzdEJhc2lj
KCkKK3sKKyAgICBkZWJ1ZygndGVzdCBhIHNjb3BlZCBzdHlsZSBpbiBkb2N1bWVudCBpcyBhcHBs
aWVkIHRvIGEgbm9kZSBpbiBzaGFkb3cgZG9tIHN1YnRyZWUgd2hlbiBhcHBseS1hdXRob3Itc3R5
bGVzIGlzIHRydWUuJyk7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworICAgIGRpdi5pbm5lckhUTUwgPSAnPGRpdj48c3R5bGUgc2NvcGVkPmRpdiB7IGJvcmRl
cjogMXB4IHNvbGlkIHJlZDsgfTwvc3R5bGU+PGRpdiBpZD0iaG9zdCI+PC9kaXY+PC9kaXY+JzsK
KyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisKKyAgICB2YXIgc2hhZG93ID0g
bmV3IFdlYktpdFNoYWRvd1Jvb3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvc3QiKSk7Cisg
ICAgc2hhZG93LmlubmVySFRNTCA9ICc8ZGl2IGlkPSJ0YXJnZXQiPnRhcmdldDwvZGl2Pic7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCisgICAgLy8gYmVmb3JlCisgICAg
c2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisgICAgZHVtcENvbXB1dGVkU3R5bGUo
c2hhZG93LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICAvLyBhZnRlcgorICAgIHNo
YWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IHRydWU7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hh
ZG93LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92
ZUNoaWxkKGRpdik7Cit9CisKK2Z1bmN0aW9uIHRlc3RFbmNsb3NpbmdTaGFkb3coKQoreworICAg
IGRlYnVnKCd0ZXN0IGEgc3R5bGUgaW4gYW4gZW5jbG9zaW5nIHNoYWRvdyBkb20gdHJlZSBpcyBh
cHBsaWVkIHRvIGEgbm9kZSBpbiBzaGFkb3cgc3VidHJlZSB3aGVuIGFwcGx5LWF1dGhvci1zdHls
ZXMgaXMgdHJ1ZS4nKTsKKworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisKKyAgICB2YXIgb3V0
ZXJTaGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIG91dGVyU2hhZG93Lmlu
bmVySFRNTCA9ICc8c3R5bGU+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9PC9zdHlsZT48
ZGl2IGlkPSJvdXRlciI+b3V0ZXI8L2Rpdj4nOworICAgIHZhciBzaGFkb3cgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChvdXRlclNoYWRvdy5nZXRFbGVtZW50QnlJZCgib3V0ZXIiKSk7CisgICAgc2hh
ZG93LmlubmVySFRNTCA9ICc8ZGl2IGlkPSJ0YXJnZXQiPnRhcmdldDwvZGl2Pic7CisKKyAgICAv
LyBiZWZvcmUKKyAgICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKyAgICBkdW1w
Q29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIC8v
IGFmdGVyCisgICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKyAgICBkdW1wQ29t
cHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKyAgICBkb2N1bWVu
dC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7ICAgCit9CisKK2Z1bmN0aW9uIHRlc3RFbmNsb3NpbmdT
aGFkb3dXaXRoU2NvcGVkKCkKK3sKKyAgICBkZWJ1ZygndGVzdCBhIHNjb3BlZCBzdHlsZSBpbiBh
biBlbmNsb3Npbmcgc2hhZG93IGRvbSB0cmVlIGlzIGFwcGxpZWQgdG8gYSBub2RlIGluIHNoYWRv
dyBzdWJ0cmVlIHdoZW4gYXBwbHktYXV0aG9yLXN0eWxlcyBpcyB0cnVlIGFuZCB0aGUgbm9kZSBp
cyBpbiB0aGUgc2NvcGUuJyk7CisKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCisgICAgdmFy
IG91dGVyU2hhZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKKyAgICBvdXRlclNoYWRv
dy5pbm5lckhUTUwgPSAnPGRpdj48c3R5bGUgc2NvcGVkPmRpdiB7IGJvcmRlcjogMXB4IHNvbGlk
IHJlZDsgfTwvc3R5bGU+PGRpdiBpZD0ib3V0ZXJJblNjb3BlIj5vdXRlckluU2NvcGU8L2Rpdj48
L2Rpdj48ZGl2IGlkPSJvdXRlck91dE9mU2NvcGUiPm91dGVyT3V0T2ZTY29wZTwvZGl2Pic7CisK
KyAgICB2YXIgc2hhZG93MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KG91dGVyU2hhZG93LmdldEVs
ZW1lbnRCeUlkKCJvdXRlckluU2NvcGUiKSk7CisgICAgc2hhZG93MS5pbm5lckhUTUwgPSAnPGRp
diBpZD0idGFyZ2V0SW5TY29wZSI+dGFyZ2V0SW5TY29wZTwvZGl2Pic7CisgICAgdmFyIHNoYWRv
dzIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChvdXRlclNoYWRvdy5nZXRFbGVtZW50QnlJZCgib3V0
ZXJPdXRPZlNjb3BlIikpOworICAgIHNoYWRvdzIuaW5uZXJIVE1MID0gJzxkaXYgaWQ9InRhcmdl
dE91dE9mU2NvcGUiPnRhcmdldE91dE9mU2NvcGU8L2Rpdj4nOworCisgICAgLy8gYmVmb3JlCisg
ICAgc2hhZG93MS5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworICAgIHNoYWRvdzIuYXBwbHlB
dXRob3JTdHlsZXMgPSBmYWxzZTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cxLmdldEVs
ZW1lbnRCeUlkKCJ0YXJnZXRJblNjb3BlIikpOworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRv
dzIuZ2V0RWxlbWVudEJ5SWQoInRhcmdldE91dE9mU2NvcGUiKSk7CisKKyAgICAvLyBhZnRlcgor
ICAgIHNoYWRvdzEuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlOworICAgIHNoYWRvdzIuYXBwbHlB
dXRob3JTdHlsZXMgPSB0cnVlOworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdzEuZ2V0RWxl
bWVudEJ5SWQoInRhcmdldEluU2NvcGUiKSk7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93
Mi5nZXRFbGVtZW50QnlJZCgidGFyZ2V0T3V0T2ZTY29wZSIpKTsKKworICAgIGRvY3VtZW50LmJv
ZHkucmVtb3ZlQ2hpbGQoZGl2KTsgICAKK30KKworZnVuY3Rpb24gdGVzdE5lc3RlZFNoYWRvdygp
Cit7CisgICAgZGVidWcoJ3Rlc3QgYSBzdHlsZSBpbiBhIHNoYWRvdyBzdWJ0cmVlIGlzIGFwcGxp
ZWQgdG8gYSBub2RlIGluIGl0cyBkZXNjZW5kYW50IHNoYWRvdyBzdWJ0cmVlIHdoZW4gYWxsIGFw
cGx5LWF1dGhvci1zdHlsZXMgaW4gc2hhZG93IHN1YnRyZWVzIGJldHdlZW4gdGhlIHNoYWRvdyBz
dWJ0cmVlIGFuZCB0aGUgZGVzY2VuZGFudCBhcmUgdHJ1ZS4nKTsKKworICAgIHZhciBkaXYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBkaXYuaW5uZXJIVE1MID0gJzxzdHls
ZSBzY29wZWQ+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgcmVkIH08L3N0eWxlPjxkaXYgaWQ9Imhv
c3QiPjwvZGl2Pic7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCisgICAg
dmFyIG91dGVyTW9zdFNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJob3N0IikpOworICAgIG91dGVyTW9zdFNoYWRvdy5pbm5lckhUTUwgPSAnPHN0
eWxlPmRpdiB7IGJvcmRlcjogMXB4IHNvbGlkIGJsdWU7IH08L3N0eWxlPjxkaXYgaWQ9Im91dGVy
TW9zdCI+b3V0ZXJNb3N0PC9kaXY+JzsKKyAgICBvdXRlck1vc3RTaGFkb3cuYXBwbHlBdXRob3JT
dHlsZXMgPSBmYWxzZTsKKworICAgIHZhciBvdXRlclNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KG91dGVyTW9zdFNoYWRvdy5nZXRFbGVtZW50QnlJZCgib3V0ZXJNb3N0IikpOworICAgIG91
dGVyU2hhZG93LmlubmVySFRNTCA9ICc8ZGl2IGlkPSJvdXRlciI+b3V0ZXI8L2Rpdj4nOworICAg
IG91dGVyU2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisKKyAgICB2YXIgc2hhZG93
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qob3V0ZXJTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm91dGVy
IikpOworICAgIHNoYWRvdy5pbm5lckhUTUwgPSAnPGRpdiBpZD0idGFyZ2V0Ij50YXJnZXQ8L2Rp
dj4nOworICAgIHNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworCisgICAgLy8gTm8g
c3R5bGVzIHNob3VsZCBiZSBhcHBsaWVkLgorICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdy5n
ZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworCisgICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVz
ID0gdHJ1ZTsKKyAgICAvLyBBIHN0eWxlIGluIGRvY3VtZW50IHNob3VsZCBiZSBhcHBsaWVkLgor
ICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOwor
CisgICAgb3V0ZXJTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlCisgICAgLy8gQSBzdHls
ZSBpbiAnb3V0ZXJNb3N0JyBzaGFkb3cgc2hvdWxkIGJlIGFwcGxpZWQuCisgICAgZHVtcENvbXB1
dGVkU3R5bGUoc2hhZG93LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICBkb2N1bWVu
dC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7ICAgCit9CisKK2Z1bmN0aW9uIHRlc3RNdWx0aXBsZVNo
YWRvdygpCit7CisgICAgZGVidWcoJ3Rlc3QgYSBzdHlsZSBpbiBkb2N1bWVudCBpcyBhcHBsaWVk
IHRvIG5vZGVzIGluIG11bHRpcGxlIHNoYWRvdyBzdWJ0cmVlcyB3aGVuIGFwcGx5LWF1dGhvci1z
dHlsZXMgaXMgdHJ1ZS4nKTsKKworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICBkaXYuaW5uZXJIVE1MID0gJzxzdHlsZSBzY29wZWQ+ZGl2IHsgYm9yZGVy
OiAxcHggc29saWQgcmVkIH08L3N0eWxlPjxkaXY+dGVzdDwvZGl2Pic7CisgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChkaXYpOworCisgICAgdmFyIG9sZGVzdFNoYWRvdyA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KGRpdik7CisgICAgb2xkZXN0U2hhZG93LmlubmVySFRNTCA9ICc8c2hhZG93
Pjwvc2hhZG93PjxkaXYgaWQ9Im9sZGVzdFNoYWRvdyI+b2xkZXN0U2hhZG93PC9kaXY+JzsKKyAg
ICBvbGRlc3RTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKworICAgIHZhciBvbGRl
clNoYWRvdyA9ICBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIG9sZGVyU2hhZG93Lmlu
bmVySFRNTCA9ICc8c3R5bGUgc2NvcGVkPmRpdiB7IGJvcmRlcjogMXB4IHNvbGlkIGJsdWUgfTwv
c3R5bGU+PHNoYWRvdz48L3NoYWRvdz48ZGl2IGlkPSJvbGRlclNoYWRvdyI+b2xkZXJTaGFkb3c8
L2Rpdj4nOworICAgIG9sZGVyU2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisKKyAg
ICB2YXIgc2hhZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKKyAgICBzaGFkb3cuaW5u
ZXJIVE1MID0gJzxzaGFkb3c+PC9zaGFkb3c+PGRpdiBpZD0idGFyZ2V0Ij5zaGFkb3c8L2Rpdj4n
OworICAgIHNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworCisgICAgLy8gYmVmb3Jl
CisgICAgZHVtcENvbXB1dGVkU3R5bGUob2xkZXN0U2hhZG93LmdldEVsZW1lbnRCeUlkKCJvbGRl
c3RTaGFkb3ciKSk7CisgICAgZHVtcENvbXB1dGVkU3R5bGUob2xkZXJTaGFkb3cuZ2V0RWxlbWVu
dEJ5SWQoIm9sZGVyU2hhZG93IikpOworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdy5nZXRF
bGVtZW50QnlJZCgidGFyZ2V0IikpOworCisgICAgLy8gZG9jdW1lbnQgLS0tKy0tLSBvbGRlc3RT
aGFkb3cKKyAgICAvLyAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgKy0tLSBvbGRl
clNoYWRvdworICAgIC8vICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICArLS0tIHNo
YWRvdworCisgICAgLy8gYXBwbHktYXV0aG9yLXN0eWxlcyBhZmZlY3RzIGJldHdlZW4gc2hhZG93
IGFuZCBkb2N1bWVudC4KKyAgICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlOworICAg
IGR1bXBDb21wdXRlZFN0eWxlKG9sZGVzdFNoYWRvdy5nZXRFbGVtZW50QnlJZCgib2xkZXN0U2hh
ZG93IikpOworICAgIGR1bXBDb21wdXRlZFN0eWxlKG9sZGVyU2hhZG93LmdldEVsZW1lbnRCeUlk
KCJvbGRlclNoYWRvdyIpKTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxlbWVu
dEJ5SWQoInRhcmdldCIpKTsKKworICAgIC8vIGFwcGx5LWF1dGhvci1zdHlsZXMgYWZmZWN0cyBi
ZXR3ZWVuIG9sZGVyIHNoYWRvdyBhbmQgZG9jdW1lbnQuCisgICAgc2hhZG93LmFwcGx5QXV0aG9y
U3R5bGVzID0gZmFsc2U7CisgICAgb2xkZXJTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVl
OworICAgIGR1bXBDb21wdXRlZFN0eWxlKG9sZGVzdFNoYWRvdy5nZXRFbGVtZW50QnlJZCgib2xk
ZXN0U2hhZG93IikpOworICAgIGR1bXBDb21wdXRlZFN0eWxlKG9sZGVyU2hhZG93LmdldEVsZW1l
bnRCeUlkKCJvbGRlclNoYWRvdyIpKTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0
RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIC8vIGFwcGx5LWF1dGhvci1zdHlsZXMgYWZm
ZWN0cyBiZXR3ZWVuIG9sZGVzdCBzaGFkb3cgYW5kIGRvY3VtZW50LgorICAgIG9sZGVyU2hhZG93
LmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisgICAgb2xkZXN0U2hhZG93LmFwcGx5QXV0aG9y
U3R5bGVzID0gdHJ1ZTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShvbGRlc3RTaGFkb3cuZ2V0RWxl
bWVudEJ5SWQoIm9sZGVzdFNoYWRvdyIpKTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShvbGRlclNo
YWRvdy5nZXRFbGVtZW50QnlJZCgib2xkZXJTaGFkb3ciKSk7CisgICAgZHVtcENvbXB1dGVkU3R5
bGUoc2hhZG93LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICBkb2N1bWVudC5ib2R5
LnJlbW92ZUNoaWxkKGRpdik7Cit9CisKK2Z1bmN0aW9uIHRlc3RPcmRlck9mQXBwbHlTdHlsZSgp
Cit7CisgICAgZGVidWcoJ3Rlc3QgYSBzdHlsZSBpcyBhcHBsaWVkIGluIGRvY3VtZW50IG9yZGVy
LicpOworCisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
IGRpdi5pbm5lckhUTUwgPSAnPHN0eWxlIHNjb3BlZD5kaXYgeyBib3JkZXI6IDFweCBzb2xpZCBy
ZWQgfTwvc3R5bGU+PGRpdiBpZD0iaG9zdCI+PC9kaXY+JzsKKyAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGRpdik7CisKKyAgICB2YXIgb3V0ZXJNb3N0U2hhZG93ID0gbmV3IFdlYktpdFNo
YWRvd1Jvb3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvc3QiKSk7CisgICAgb3V0ZXJNb3N0
U2hhZG93LmlubmVySFRNTCA9ICc8c3R5bGU+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgYmx1ZTsg
fTwvc3R5bGU+PGRpdiBpZD0ib3V0ZXJNb3N0Ij5vdXRlck1vc3Q8L2Rpdj4nOworICAgIG91dGVy
TW9zdFNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IHRydWU7CisKKyAgICB2YXIgb3V0ZXJTaGFk
b3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChvdXRlck1vc3RTaGFkb3cuZ2V0RWxlbWVudEJ5SWQo
Im91dGVyTW9zdCIpKTsKKyAgICBvdXRlclNoYWRvdy5pbm5lckhUTUwgPSAnPHN0eWxlPmRpdiB7
IGJvcmRlcjogMXB4IHNvbGlkIGdyZWVuOyB9PC9zdHlsZT48ZGl2IGlkPSJvdXRlciI+b3V0ZXI8
L2Rpdj4nOworICAgIG91dGVyU2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKworICAg
IHZhciBzaGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChvdXRlclNoYWRvdy5nZXRFbGVtZW50
QnlJZCgib3V0ZXIiKSk7CisgICAgc2hhZG93LmlubmVySFRNTCA9ICc8c3R5bGU+ZGl2IHsgYm9y
ZGVyOiAxcHggc29saWQgeWVsbG93OyB9PC9zdHlsZT48ZGl2IGlkPSJ0YXJnZXQiPnRhcmdldDwv
ZGl2Pic7CisgICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKworICAgIC8vIFRo
ZSBsYXN0IHNjb3BlZCBzdHlsZSBzaG91bGQgYmUgYXBwbGllZC4KKyAgICBkdW1wQ29tcHV0ZWRT
dHlsZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIHNoYWRvdy5pbm5l
ckhUTUwgPSAnPGRpdiBpZD0idGFyZ2V0Ij50YXJnZXQ8L2Rpdj4nOworICAgIC8vIFRoZSBvdXRl
cidzIHNjb3BlZCBzdHlsZSBzaG91bGQgYmUgYXBwbGllZC4KKyAgICBkdW1wQ29tcHV0ZWRTdHls
ZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIGRvY3VtZW50LmJvZHku
cmVtb3ZlQ2hpbGQoZGl2KTsgICAKK30KKworZnVuY3Rpb24gcnVuVGVzdHMoKSB7CisgICAgdGVz
dEJhc2ljKCk7CisgICAgdGVzdEVuY2xvc2luZ1NoYWRvdygpOworICAgIHRlc3RFbmNsb3NpbmdT
aGFkb3dXaXRoU2NvcGVkKCk7CisgICAgdGVzdE5lc3RlZFNoYWRvdygpOworICAgIHRlc3RNdWx0
aXBsZVNoYWRvdygpOworICAgIHRlc3RPcmRlck9mQXBwbHlTdHlsZSgpOworfQorCis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+CisgIDxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148489</attachid>
            <date>2012-06-19 20:00:00 -0700</date>
            <delta_ts>2012-06-20 00:16:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89061-20120620120000.patch</filename>
            <type>text/plain</type>
            <size>21657</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZjYjMwNDZmNjhkODRk
YWY2YjA5YWU2YTQ1MjM1M2UzZDVkOGNmYS4uYmUyMGQ5OTcyZjhjMDVlOGE2MGJhODYxMTc2NjQ0
YmE1YjAxOWU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA2LTEzICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBhcHBseUF1dGhvclN0
eWxlcyBtYWtlcyBydWxlcyBkZWNsYXJlZCBpbiBhbGwgZW5jbG9zaW5nIHNoYWRvdyBkb20gc3Vi
dHJlZXMgYXBwbGljYWJsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg5MDYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRml4aW5nIGFwcGx5LWF1dGhvci1zdHlsZXMgYnVnLiBJZiB0aGVyZSBleGlzdHMg
c29tZSBzaGFkb3cgc3VidHJlZSBBCisgICAgICAgIGFuZCBBIGhhcyBhcHBseS1hdXRob3Itc3R5
bGVzIGZsYWcgc2V0LCB3aGV0aGVyIHNvbWUgcnVsZXMgZGVjbGFyZWQgaW4KKyAgICAgICAgYSB0
cmVlIEIgaXMgYXBwbGljYWJsZSBpbiBBIG9yIG5vdCBkZXBlbmRzIG9uOgorICAgICAgICAtIHRo
ZSB0cmVlIEIgZW5jbG9zZXMgdGhlIHRyZWUgQSwgYW5kCisgICAgICAgIC0gYWxsIHRyZWVzIHdo
aWNoIGVuY2xvc2UgQSBhbmQgYXJlIGVuY2xvc2VkIGJ5IEIgaGFzCisgICAgICAgICAgYXBwbHkt
YXV0aG9yLXN0eWxlcyBzZXQuCisgICAgICAgIGMuZi4KKyAgICAgICAgaHR0cDovL2R2Y3MudzMu
b3JnL2hnL3dlYmNvbXBvbmVudHMvcmF3LWZpbGUvdGlwL3NwZWMvc2hhZG93L2luZGV4Lmh0bWwj
c3R5bGVzCisgICAgICAgIEhvd2V2ZXIgdGhlIHNlY29uZCBydWxlIHdhcyBub3QgaW1wbGVtZW50
ZWQuCisKKyAgICAgICAgVGVzdDogZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1h
cHBseS1hdXRob3Itc3R5bGVzLmh0bWwKKworICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnNldHVwU2NvcGVTdGFjayk6Cisg
ICAgICAgIE1vZGlmaWVkIHRvIGFkZCBhIG5ldyBtZW1iZXIgdmFyaWFibGUsIGF1dGhvclN0eWxl
Qm91bmRzSW5kZXggdG8KKyAgICAgICAgU2NvcGVTdGFja0ZyYW1lIHVzZWQgYnkgbV9zY29wZVN0
YWNrLiBUaGUgaW5kZXggbWVhbnM6IGlmIHNoYWRvdyBkb20KKyAgICAgICAgc3VidHJlZSBBIGFu
ZCBCIGhhcyB0aGUgc2FtZSB2YWx1ZSBhbmQgQSBlbmNsb3NlcyBCLCBhbGwgc2hhZG93IGRvbQor
ICAgICAgICBzdWJ0cmVlcyB3aGljaCBlbmNsb3NlIEIgYW5kIGFyZSBlbmNsb3NlZCBieSBCIGhh
dmUKKyAgICAgICAgYXBwbHktYXV0aG9yLXN0eWxlcyBzZXQuIEFuZCBCIGFsc28gaGFzIGFwcGx5
LWF1dGhvci1zdHlsZXMgc2V0LgorICAgICAgICBUaGlzIG1lYW5zLCBpZiBzb21lIGVsZW1lbnQg
WCBoYXMgYXV0aG9yU3R5bGVCb3VuZHNJbmRleCBOLCBhbGwKKyAgICAgICAgcnVsZXNldHMgd2hv
c2Ugc2NvcGVzIGhhdmUgYXV0aG9yU3R5bGVCb3VuZHNJbmRleCBOIGFyZSBhcHBsaWNhYmxlIGlu
CisgICAgICAgIEIncyB0cmVlIHNjb3BlLiBJZiBhbGwgc2hhZG93IGRvbSBzdWJ0cmVlcyBoYXZl
IGFwcGx5LWF1dGhvci1zdHlsZXMKKyAgICAgICAgdW5zZXQsIHRoZSBpbmRleCBsb29rcyBhbG1v
c3QgdGhlIHNhbWUgYXMgdHJlZVNjb3BlKCkuIEluIHRoaXMgY2FzZSwKKyAgICAgICAgUnVsZXMg
aW4gZGlmZmVyZW50IHRyZWUgc2NvcGVzIGhhdmUgZGlmZmVyZW50IGF1dGhvciBzdHlsZSBib3Vu
ZHMKKyAgICAgICAgaW5kZXguCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpwdXNo
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cG9wU2NvcGUpOgorICAg
ICAgICBBZGRlZCB0aGUgY29kZSBmb3IgdXBkYXRpbmcgbV9zY29wZVN0YWNrUGFyZW50Qm91bmRz
SW5kZXguIFRoZSBtZW1iZXIKKyAgICAgICAgdmFyaWFibGUga2VlcHMgbV9zY29wZVN0YWNrUGFy
ZW50J3MgYXV0aG9yIHN0eWxlIGJvdW5kcyBpbmRleC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6Om1hdGNoU2NvcGVkQXV0aG9yUnVsZXMpOgorICAgICAgICBNb2RpZmllZCB0byBj
b25zaWRlciBhdXRob3Igc3R5bGUncyBib3VuZHMgaW5kZXguIEZpcnN0bHkgYXBwbHlpbmcKKyAg
ICAgICAgc2NvcGVkIHN0eWxlcyBkZWNsYXJlZCBpbiBkb2N1bWVudCBpZiBhcHBseS1hdXRob3It
c3R5bGVzIGlzIHNldC4KKyAgICAgICAgTmV4dCwgYXBwbHlpbmcgc2NvcGVkIHN0eWxlcyBkZWNs
YXJlZCBpbiBzaGFkb3cgZG9tIHN1YnRyZWUgd2l0aAorICAgICAgICBjb25zaWRlcmluZyBhdXRo
b3Igc3R5bGUgYm91bmRzIGluZGV4LCBpLmUuIGNvbnNpZGVyaW5nCisgICAgICAgIGFwcGx5LWF1
dGhvci1zdHlsZXMgZmxhZy4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U2NvcGVTdGFja0ZyYW1lOjpTY29wZVN0YWNrRnJh
bWUpOgorICAgICAgICAoU2NvcGVTdGFja0ZyYW1lKToKKyAgICAgICAgQWRkZWQgbV9hdXRob3JT
dHlsZUJvdW5kc0luZGV4IHRvIGtlZXAgYXBwbHktYXV0aG9yLXN0eWxlcyBmbGFnCisgICAgICAg
IGluZm9ybWF0aW9uLiBtX2F1dGhvclN0eWxlQm91bmRzSW5kZXggaW5jcmVtZW50cyBieSAxIGlm
IHNoYWRvdyByb290IGlzCisgICAgICAgIGdpdmVuIGFuZCBpdCBoYXMgYXBwbHktYXV0aG9yLXN0
eWxlcyB1bnNldC4KKyAgICAgICAgTm93IHJ1bGVzIGluIHRoZSBzYW1lIGF1dGhvclN0eWxlQm91
bmRzSW5kZXggc2hvdWxkIGJlIGFwcGxpZWQuCisgICAgICAgIChTdHlsZVJlc29sdmVyKToKKyAg
ICAgICAgQWRkZWQgbV9zY29wZVN0YWNrUGFyZW50Qm91bmRzSW5kZXguCisgICAgICAgIEFzIG1f
c2NvcGVTdGFja1BhcmVudEF1dGhvclN0eWxlQm91bmRzSW5kZXggaXMgYSBsaXR0bGUgbG9uZywK
KyAgICAgICAgdXNlZCBtX3Njb3BlU3RhY2tQYXJlbnRCb3VuZHNJbmRleC4KKwogMjAxMi0wNi0x
OCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dT
dHJlYW1lcl0gMC4xMSB2aWRlby1zaW5rCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
aW5kZXggOTNkZmYyYmE1MGNlNTJiZjE0NzVjNTM4MmZmMTY1YWRlZmQ5ZWE0YS4uMDNkYzMxMDZj
ODUzYzBlNDcyMzQ0MzBlODRlMmU3YWQxNWIzNmU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcApAQCAtMzcyLDYgKzM3Miw3IEBAIFN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVzb2x2
ZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykKICNl
bmRpZgogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCiAgICAgLCBtX3Njb3BlU3RhY2tQYXJlbnQo
MCkKKyAgICAsIG1fc2NvcGVTdGFja1BhcmVudEJvdW5kc0luZGV4KDApCiAjZW5kaWYKIHsKICAg
ICBFbGVtZW50KiByb290ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwpAQCAtNTY0LDEz
ICs1NjUsMTcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpzZXR1cFNjb3BlU3RhY2soY29uc3QgQ29u
dGFpbmVyTm9kZSogcGFyZW50KQogICAgIEFTU0VSVCghbV9zY29wZWRBdXRob3JTdHlsZXMuaXNF
bXB0eSgpKTsKIAogICAgIG1fc2NvcGVTdGFjay5zaHJpbmsoMCk7CisgICAgaW50IGF1dGhvclN0
eWxlQm91bmRzSW5kZXggPSAwOwogICAgIGZvciAoY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUg
PSBwYXJlbnQ7IHNjb3BlOyBzY29wZSA9IHNjb3BlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKICAg
ICAgICAgUnVsZVNldCogcnVsZVNldCA9IHJ1bGVTZXRGb3JTY29wZShzY29wZSk7CiAgICAgICAg
IGlmIChydWxlU2V0KQotICAgICAgICAgICAgbV9zY29wZVN0YWNrLmFwcGVuZChTY29wZVN0YWNr
RnJhbWUoc2NvcGUsIHJ1bGVTZXQpKTsKKyAgICAgICAgICAgIG1fc2NvcGVTdGFjay5hcHBlbmQo
U2NvcGVTdGFja0ZyYW1lKHNjb3BlLCBhdXRob3JTdHlsZUJvdW5kc0luZGV4LCBydWxlU2V0KSk7
CisgICAgICAgIGlmIChzY29wZS0+aXNTaGFkb3dSb290KCkgJiYgIXRvU2hhZG93Um9vdChzY29w
ZSktPmFwcGx5QXV0aG9yU3R5bGVzKCkpCisgICAgICAgICAgICAtLWF1dGhvclN0eWxlQm91bmRz
SW5kZXg7CiAgICAgfQogICAgIG1fc2NvcGVTdGFjay5yZXZlcnNlKCk7CiAgICAgbV9zY29wZVN0
YWNrUGFyZW50ID0gcGFyZW50OworICAgIG1fc2NvcGVTdGFja1BhcmVudEJvdW5kc0luZGV4ID0g
MDsKIH0KIAogdm9pZCBTdHlsZVJlc29sdmVyOjpwdXNoU2NvcGUoY29uc3QgQ29udGFpbmVyTm9k
ZSogc2NvcGUsIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlUGFyZW50KQpAQCAtNTg3LDEwICs1
OTIsMTIgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpwdXNoU2NvcGUoY29uc3QgQ29udGFpbmVyTm9k
ZSogc2NvcGUsIGNvbnN0IENvbnRhaW5lck5vZGUqIHMKICAgICAgICAgc2V0dXBTY29wZVN0YWNr
KHNjb3BlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAoc2NvcGUtPmlzU2hhZG93
Um9vdCgpICYmICF0b1NoYWRvd1Jvb3Qoc2NvcGUpLT5hcHBseUF1dGhvclN0eWxlcygpKQorICAg
ICAgICArK21fc2NvcGVTdGFja1BhcmVudEJvdW5kc0luZGV4OwogICAgIC8vIE90aGVyd2lzZSBq
dXN0IHB1c2ggdGhlIHBhcmVudCBvbnRvIHRoZSBzdGFjay4KICAgICBSdWxlU2V0KiBydWxlU2V0
ID0gcnVsZVNldEZvclNjb3BlKHNjb3BlKTsKICAgICBpZiAocnVsZVNldCkKLSAgICAgICAgbV9z
Y29wZVN0YWNrLmFwcGVuZChTY29wZVN0YWNrRnJhbWUoc2NvcGUsIHJ1bGVTZXQpKTsKKyAgICAg
ICAgbV9zY29wZVN0YWNrLmFwcGVuZChTY29wZVN0YWNrRnJhbWUoc2NvcGUsIG1fc2NvcGVTdGFj
a1BhcmVudEJvdW5kc0luZGV4LCBydWxlU2V0KSk7CiAgICAgbV9zY29wZVN0YWNrUGFyZW50ID0g
c2NvcGU7CiB9CiAKQEAgLTYwMCw2ICs2MDcsOCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnBvcFNj
b3BlKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlKQogICAgIGlmIChzY29wZVN0YWNrSXNDb25z
aXN0ZW50KHNjb3BlKSkgewogICAgICAgICBpZiAoIW1fc2NvcGVTdGFjay5pc0VtcHR5KCkgJiYg
bV9zY29wZVN0YWNrLmxhc3QoKS5tX3Njb3BlID09IHNjb3BlKQogICAgICAgICAgICAgbV9zY29w
ZVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgaWYgKHNjb3BlLT5pc1NoYWRvd1Jvb3QoKSAm
JiAhdG9TaGFkb3dSb290KHNjb3BlKS0+YXBwbHlBdXRob3JTdHlsZXMoKSkKKyAgICAgICAgICAg
IC0tbV9zY29wZVN0YWNrUGFyZW50Qm91bmRzSW5kZXg7CiAgICAgICAgIG1fc2NvcGVTdGFja1Bh
cmVudCA9IHNjb3BlLT5wYXJlbnRPckhvc3ROb2RlKCk7CiAgICAgfQogfQpAQCAtOTI2LDIyICs5
MzUsMzggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaFNjb3BlZEF1dGhvclJ1bGVzKE1hdGNo
UmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHQKICAgICBNYXRjaE9wdGlvbnMgb3B0aW9u
cyhpbmNsdWRlRW1wdHlSdWxlcyk7CiAKICAgICAvLyBNYXRjaCBzY29wZWQgYXV0aG9yIHJ1bGVz
IGJ5IHRyYXZlcnNpbmcgdGhlIHNjb3BlZCBlbGVtZW50IHN0YWNrIChyZWJ1aWxkIGl0IGlmIGl0
IGdvdCBpbmNvbnNpc3RlbnQpLgotICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG1f
ZWxlbWVudC0+cGFyZW50T3JIb3N0Tm9kZSgpOwotICAgIGlmICghc2NvcGVTdGFja0lzQ29uc2lz
dGVudChwYXJlbnQpKQotICAgICAgICBzZXR1cFNjb3BlU3RhY2socGFyZW50KTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gbV9zY29wZVN0YWNrLnNpemUoKTsgaTsgLS1pKSB7Ci0gICAgICAgIGNvbnN0
IFNjb3BlU3RhY2tGcmFtZSYgZnJhbWUgPSBtX3Njb3BlU3RhY2tbaSAtIDFdOworICAgIGlmICgh
c2NvcGVTdGFja0lzQ29uc2lzdGVudChtX2VsZW1lbnQpKQorICAgICAgICBzZXR1cFNjb3BlU3Rh
Y2sobV9lbGVtZW50KTsKKworICAgIHVuc2lnbmVkIGludCBmaXJzdFNoYWRvd1Njb3BlSW5kZXgg
PSAwOworICAgIGlmIChtX2VsZW1lbnQtPnRyZWVTY29wZSgpLT5hcHBseUF1dGhvclN0eWxlcygp
KSB7CisgICAgICAgIHVuc2lnbmVkIGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtX3Njb3Bl
U3RhY2suc2l6ZSgpICYmICFtX3Njb3BlU3RhY2tbaV0ubV9zY29wZS0+aXNJblNoYWRvd1RyZWUo
KTsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBTY29wZVN0YWNrRnJhbWUmIGZyYW1lID0gbV9z
Y29wZVN0YWNrW2ldOworICAgICAgICAgICAgb3B0aW9ucy5zY29wZSA9IGZyYW1lLm1fc2NvcGU7
CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhmcmFtZS5tX3J1bGVTZXQsIHJlc3Vs
dC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBv
cHRpb25zKTsKKyAgICAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKGZyYW1l
Lm1fcnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMu
bGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOworICAgICAgICB9CisgICAgICAgIGZpcnN0U2hhZG93
U2NvcGVJbmRleCA9IGk7CisgICAgfQorCisgICAgaWYgKCFtX2VsZW1lbnQtPmlzSW5TaGFkb3dU
cmVlKCkgfHwgbV9zY29wZVN0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
dW5zaWduZWQgc2NvcGVkSW5kZXggPSBtX3Njb3BlU3RhY2suc2l6ZSgpOworICAgIGludCBhdXRo
b3JTdHlsZUJvdW5kc0luZGV4ID0gbV9zY29wZVN0YWNrUGFyZW50Qm91bmRzSW5kZXg7CisgICAg
Zm9yICggOyBzY29wZWRJbmRleCA+IGZpcnN0U2hhZG93U2NvcGVJbmRleDsgLS1zY29wZWRJbmRl
eCkgeworICAgICAgICBpZiAoYXV0aG9yU3R5bGVCb3VuZHNJbmRleCAhPSBtX3Njb3BlU3RhY2tb
c2NvcGVkSW5kZXggLSAxXS5tX2F1dGhvclN0eWxlQm91bmRzSW5kZXgpCisgICAgICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICAvLyBSdWxlc2V0IGZvciBhbmNlc3RvciBub2RlcyBzaG91bGQg
YmUgYXBwbGllZCBmaXJzdC4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBzY29wZWRJbmRleDsgaSA8
IG1fc2NvcGVTdGFjay5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBTY29wZVN0YWNrRnJh
bWUmIGZyYW1lID0gbV9zY29wZVN0YWNrW2ldOwogICAgICAgICBvcHRpb25zLnNjb3BlID0gZnJh
bWUubV9zY29wZTsKICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoZnJhbWUubV9ydWxlU2V0
LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9y
UnVsZSwgb3B0aW9ucyk7CiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yUmVnaW9uKGZy
YW1lLm1fcnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5n
ZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwogICAgIH0KLSAgICAvLyBBbHNvIGluY2x1ZGUg
dGhlIGN1cnJlbnQgZWxlbWVudC4KLSAgICBSdWxlU2V0KiBydWxlU2V0ID0gcnVsZVNldEZvclNj
b3BlKG1fZWxlbWVudCk7Ci0gICAgaWYgKHJ1bGVTZXQpIHsKLSAgICAgICAgb3B0aW9ucy5zY29w
ZSA9IG1fZWxlbWVudDsKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMocnVsZVNldCwgcmVz
dWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUs
IG9wdGlvbnMpOwotICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihydWxlU2V0
LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9y
UnVsZSwgb3B0aW9ucyk7Ci0gICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsK
ICAgICBVTlVTRURfUEFSQU0oaW5jbHVkZUVtcHR5UnVsZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmgKaW5kZXggOWY5Y2MyY2E0NWFjZGYwNzk1NGU4MjJkYTI1MGQ1MDM4MzcxZjczYS4u
MjlmODAwZTBjNmVjNzA1MmUzNmZjMjU5YThiMjFjOThiNjViMDlkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5oCkBAIC01MzEsOSArNTMxLDEwIEBAIHByaXZhdGU6CiAgICAgU2NvcGVk
UnVsZVNldE1hcCBtX3Njb3BlZEF1dGhvclN0eWxlczsKICAgICAKICAgICBzdHJ1Y3QgU2NvcGVT
dGFja0ZyYW1lIHsKLSAgICAgICAgU2NvcGVTdGFja0ZyYW1lKCkgOiBtX3Njb3BlKDApLCBtX3J1
bGVTZXQoMCkgeyB9Ci0gICAgICAgIFNjb3BlU3RhY2tGcmFtZShjb25zdCBDb250YWluZXJOb2Rl
KiBzY29wZSwgUnVsZVNldCogcnVsZVNldCkgOiBtX3Njb3BlKHNjb3BlKSwgbV9ydWxlU2V0KHJ1
bGVTZXQpIHsgfQorICAgICAgICBTY29wZVN0YWNrRnJhbWUoKSA6IG1fc2NvcGUoMCksIG1fYXV0
aG9yU3R5bGVCb3VuZHNJbmRleCgwKSwgbV9ydWxlU2V0KDApIHsgfQorICAgICAgICBTY29wZVN0
YWNrRnJhbWUoY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUsIGludCBhdXRob3JTdHlsZUJvdW5k
c0luZGV4LCBSdWxlU2V0KiBydWxlU2V0KSA6IG1fc2NvcGUoc2NvcGUpLCBtX2F1dGhvclN0eWxl
Qm91bmRzSW5kZXgoYXV0aG9yU3R5bGVCb3VuZHNJbmRleCksIG1fcnVsZVNldChydWxlU2V0KSB7
IH0KICAgICAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogbV9zY29wZTsKKyAgICAgICAgaW50IG1f
YXV0aG9yU3R5bGVCb3VuZHNJbmRleDsKICAgICAgICAgUnVsZVNldCogbV9ydWxlU2V0OwogICAg
IH07CiAgICAgLy8gVmVjdG9yICh1c2VkIGFzIHN0YWNrKSB0aGF0IGtlZXBzIHRyYWNrIG9mIHNj
b3BpbmcgZWxlbWVudHMgKGkuZS4sIGVsZW1lbnRzIHdpdGggYSA8c3R5bGUgc2NvcGVkPiBjaGls
ZCkKQEAgLTU0Miw2ICs1NDMsNyBAQCBwcml2YXRlOgogICAgIC8vIEVsZW1lbnQgbGFzdCBzZWVu
IGFzIHBhcmVudCBlbGVtZW50IHdoZW4gdXBkYXRpbmcgbV9zY29waW5nRWxlbWVudFN0YWNrLgog
ICAgIC8vIFRoaXMgaXMgdXNlZCB0byBkZWNpZGUgd2hldGhlciBtX3Njb3BpbmdFbGVtZW50U3Rh
Y2sgaXMgY29uc2lzdGVudCwgc2VwYXJhdGVseSBmcm9tIFNlbGVjdG9yQ2hlY2tlcjo6bV9wYXJl
bnRTdGFjay4KICAgICBjb25zdCBDb250YWluZXJOb2RlKiBtX3Njb3BlU3RhY2tQYXJlbnQ7Cisg
ICAgaW50IG1fc2NvcGVTdGFja1BhcmVudEJvdW5kc0luZGV4OwogI2VuZGlmCiAKICAgICBmcmll
bmQgY2xhc3MgU3R5bGVCdWlsZGVyOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ5OTQ0M2QyOTQyMDg2MTRiZWYyM2YyMWM4
MDk5MzMzODczMDliYjQuLmI5NWE5YWNiZmFkNmFjYmJmYzQ0MTJlMjhiN2M5MjM0Y2M5YjQxNDMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNi0xMyAgVGFrYXNoaSBTYWthbW90byAgPHRh
c2FrQGdvb2dsZS5jb20+CisKKyAgICAgICAgYXBwbHlBdXRob3JTdHlsZXMgbWFrZXMgcnVsZXMg
ZGVjbGFyZWQgaW4gYWxsIGVuY2xvc2luZyBzaGFkb3cgZG9tIHN1YnRyZWVzIGFwcGxpY2FibGUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTA2MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9j
c3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1hcHBseS1hdXRob3Itc3R5bGVzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3Bl
ZC1hcHBseS1hdXRob3Itc3R5bGVzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA2LTE5ICBKb24gSG9u
ZXljdXR0ICA8amhvbmV5Y3V0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBmYWls
aW5nIGV4cGVjdGVkIHJlc3VsdHMgYWRkZWQgaW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYXBwbHktYXV0aG9yLXN0eWxlcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVk
LWFwcGx5LWF1dGhvci1zdHlsZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhNjNkOWFhODQz
NDdkNjcwZTYwZmU4NGNlNWVkOTZlM2Q2M2EyYjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWFwcGx5LWF1dGhvci1zdHls
ZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzggQEAKK1BBU1Mgd2luZG93LmludGVybmFscyBp
cyBkZWZpbmVkLgorUEFTUyB3aW5kb3cuaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3QgaXMgZGVm
aW5lZC4KK1BBU1MgV2ViS2l0U2hhZG93Um9vdCBpcyBkZWZpbmVkLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit0ZXN0IGEgc2NvcGVkIHN0eWxlIGlu
IGRvY3VtZW50IGlzIGFwcGxpZWQgdG8gYSBub2RlIGluIHNoYWRvdyBkb20gc3VidHJlZSB3aGVu
IGFwcGx5LWF1dGhvci1zdHlsZXMgaXMgdHJ1ZS4KK3RhcmdldDogcmdiKDAsIDAsIDApCit0YXJn
ZXQ6IHJnYigyNTUsIDAsIDApCit0ZXN0IGEgc3R5bGUgaW4gYW4gZW5jbG9zaW5nIHNoYWRvdyBk
b20gdHJlZSBpcyBhcHBsaWVkIHRvIGEgbm9kZSBpbiBzaGFkb3cgc3VidHJlZSB3aGVuIGFwcGx5
LWF1dGhvci1zdHlsZXMgaXMgdHJ1ZS4KK3RhcmdldDogcmdiKDAsIDAsIDApCit0YXJnZXQ6IHJn
YigyNTUsIDAsIDApCit0ZXN0IGEgc2NvcGVkIHN0eWxlIGluIGFuIGVuY2xvc2luZyBzaGFkb3cg
ZG9tIHRyZWUgaXMgYXBwbGllZCB0byBhIG5vZGUgaW4gc2hhZG93IHN1YnRyZWUgd2hlbiBhcHBs
eS1hdXRob3Itc3R5bGVzIGlzIHRydWUgYW5kIHRoZSBub2RlIGlzIGluIHRoZSBzY29wZS4KK3Rh
cmdldEluU2NvcGU6IHJnYigwLCAwLCAwKQordGFyZ2V0T3V0T2ZTY29wZTogcmdiKDAsIDAsIDAp
Cit0YXJnZXRJblNjb3BlOiByZ2IoMjU1LCAwLCAwKQordGFyZ2V0T3V0T2ZTY29wZTogcmdiKDAs
IDAsIDApCit0ZXN0IGEgc3R5bGUgaW4gYSBzaGFkb3cgc3VidHJlZSBpcyBhcHBsaWVkIHRvIGEg
bm9kZSBpbiBpdHMgZGVzY2VuZGFudCBzaGFkb3cgc3VidHJlZSB3aGVuIGFsbCBhcHBseS1hdXRo
b3Itc3R5bGVzIGluIHNoYWRvdyBzdWJ0cmVlcyBiZXR3ZWVuIHRoZSBzaGFkb3cgc3VidHJlZSBh
bmQgdGhlIGRlc2NlbmRhbnQgYXJlIHRydWUuCit0YXJnZXQ6IHJnYigwLCAwLCAwKQordGFyZ2V0
OiByZ2IoMjU1LCAwLCAwKQordGFyZ2V0OiByZ2IoMCwgMCwgMjU1KQordGVzdCBhIHN0eWxlIGlu
IGRvY3VtZW50IGlzIGFwcGxpZWQgdG8gbm9kZXMgaW4gbXVsdGlwbGUgc2hhZG93IHN1YnRyZWVz
IHdoZW4gYXBwbHktYXV0aG9yLXN0eWxlcyBpcyB0cnVlLgorb2xkZXN0U2hhZG93OiByZ2IoMCwg
MCwgMCkKK29sZGVyU2hhZG93OiByZ2IoMCwgMCwgMjU1KQordGFyZ2V0OiByZ2IoMCwgMCwgMCkK
K29sZGVzdFNoYWRvdzogcmdiKDAsIDAsIDApCitvbGRlclNoYWRvdzogcmdiKDAsIDAsIDI1NSkK
K3RhcmdldDogcmdiKDI1NSwgMCwgMCkKK29sZGVzdFNoYWRvdzogcmdiKDAsIDAsIDApCitvbGRl
clNoYWRvdzogcmdiKDAsIDAsIDI1NSkKK3RhcmdldDogcmdiKDAsIDAsIDApCitvbGRlc3RTaGFk
b3c6IHJnYigyNTUsIDAsIDApCitvbGRlclNoYWRvdzogcmdiKDAsIDAsIDI1NSkKK3RhcmdldDog
cmdiKDAsIDAsIDApCit0ZXN0IGEgc3R5bGUgaXMgYXBwbGllZCBpbiBkb2N1bWVudCBvcmRlci4K
K3RhcmdldDogcmdiKDI1NSwgMjU1LCAwKQordGFyZ2V0OiByZ2IoMCwgMTI4LCAwKQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWFw
cGx5LWF1dGhvci1zdHlsZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3Bl
ZC9zdHlsZS1zY29wZWQtYXBwbHktYXV0aG9yLXN0eWxlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyYjkw
NjFmM2I3M2NkMWZjNTMyMzIwZGE5YThkZWRlNmYxY2I2NTQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWFwcGx5LWF1dGhv
ci1zdHlsZXMuaHRtbApAQCAtMCwwICsxLDIyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZG9tL3NoYWRvdy9yZXNvdXJjZXMvcG9seWZp
bGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworc2hvdWxkQmVEZWZpbmVkKCJ3aW5kb3cuaW50ZXJu
YWxzIik7CitzaG91bGRCZURlZmluZWQoIndpbmRvdy5pbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9v
dCIpOworc2hvdWxkQmVEZWZpbmVkKCJXZWJLaXRTaGFkb3dSb290Iik7CisKK2Z1bmN0aW9uIGR1
bXBDb21wdXRlZFN0eWxlKG5vZGUpCit7CisgICAgZGVidWcobm9kZS5pZCArICI6ICIgKyBkb2N1
bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKG5vZGUsIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoJ2JvcmRlci1jb2xvcicpKTsKK30KKworZnVuY3Rpb24gdGVzdEJhc2ljKCkKK3sKKyAg
ICBkZWJ1ZygndGVzdCBhIHNjb3BlZCBzdHlsZSBpbiBkb2N1bWVudCBpcyBhcHBsaWVkIHRvIGEg
bm9kZSBpbiBzaGFkb3cgZG9tIHN1YnRyZWUgd2hlbiBhcHBseS1hdXRob3Itc3R5bGVzIGlzIHRy
dWUuJyk7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
IGRpdi5pbm5lckhUTUwgPSAnPGRpdj48c3R5bGUgc2NvcGVkPmRpdiB7IGJvcmRlcjogMXB4IHNv
bGlkIHJlZDsgfTwvc3R5bGU+PGRpdiBpZD0iaG9zdCI+PC9kaXY+PC9kaXY+JzsKKyAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisKKyAgICB2YXIgc2hhZG93ID0gbmV3IFdlYktp
dFNoYWRvd1Jvb3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvc3QiKSk7CisgICAgc2hhZG93
LmlubmVySFRNTCA9ICc8ZGl2IGlkPSJ0YXJnZXQiPnRhcmdldDwvZGl2Pic7CisgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCisgICAgLy8gYmVmb3JlCisgICAgc2hhZG93LmFw
cGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93Lmdl
dEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICAvLyBhZnRlcgorICAgIHNoYWRvdy5hcHBs
eUF1dGhvclN0eWxlcyA9IHRydWU7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93LmdldEVs
ZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRp
dik7Cit9CisKK2Z1bmN0aW9uIHRlc3RFbmNsb3NpbmdTaGFkb3coKQoreworICAgIGRlYnVnKCd0
ZXN0IGEgc3R5bGUgaW4gYW4gZW5jbG9zaW5nIHNoYWRvdyBkb20gdHJlZSBpcyBhcHBsaWVkIHRv
IGEgbm9kZSBpbiBzaGFkb3cgc3VidHJlZSB3aGVuIGFwcGx5LWF1dGhvci1zdHlsZXMgaXMgdHJ1
ZS4nKTsKKworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisKKyAgICB2YXIgb3V0ZXJTaGFkb3cg
PSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIG91dGVyU2hhZG93LmlubmVySFRNTCA9
ICc8c3R5bGU+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9PC9zdHlsZT48ZGl2IGlkPSJv
dXRlciI+b3V0ZXI8L2Rpdj4nOworICAgIHZhciBzaGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9v
dChvdXRlclNoYWRvdy5nZXRFbGVtZW50QnlJZCgib3V0ZXIiKSk7CisgICAgc2hhZG93LmlubmVy
SFRNTCA9ICc8ZGl2IGlkPSJ0YXJnZXQiPnRhcmdldDwvZGl2Pic7CisKKyAgICAvLyBiZWZvcmUK
KyAgICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKyAgICBkdW1wQ29tcHV0ZWRT
dHlsZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIC8vIGFmdGVyCisg
ICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKyAgICBkdW1wQ29tcHV0ZWRTdHls
ZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKyAgICBkb2N1bWVudC5ib2R5LnJl
bW92ZUNoaWxkKGRpdik7ICAgCit9CisKK2Z1bmN0aW9uIHRlc3RFbmNsb3NpbmdTaGFkb3dXaXRo
U2NvcGVkKCkKK3sKKyAgICBkZWJ1ZygndGVzdCBhIHNjb3BlZCBzdHlsZSBpbiBhbiBlbmNsb3Np
bmcgc2hhZG93IGRvbSB0cmVlIGlzIGFwcGxpZWQgdG8gYSBub2RlIGluIHNoYWRvdyBzdWJ0cmVl
IHdoZW4gYXBwbHktYXV0aG9yLXN0eWxlcyBpcyB0cnVlIGFuZCB0aGUgbm9kZSBpcyBpbiB0aGUg
c2NvcGUuJyk7CisKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCisgICAgdmFyIG91dGVyU2hh
ZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKKyAgICBvdXRlclNoYWRvdy5pbm5lckhU
TUwgPSAnPGRpdj48c3R5bGUgc2NvcGVkPmRpdiB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfTwv
c3R5bGU+PGRpdiBpZD0ib3V0ZXJJblNjb3BlIj5vdXRlckluU2NvcGU8L2Rpdj48L2Rpdj48ZGl2
IGlkPSJvdXRlck91dE9mU2NvcGUiPm91dGVyT3V0T2ZTY29wZTwvZGl2Pic7CisKKyAgICB2YXIg
c2hhZG93MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KG91dGVyU2hhZG93LmdldEVsZW1lbnRCeUlk
KCJvdXRlckluU2NvcGUiKSk7CisgICAgc2hhZG93MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0idGFy
Z2V0SW5TY29wZSI+dGFyZ2V0SW5TY29wZTwvZGl2Pic7CisgICAgdmFyIHNoYWRvdzIgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChvdXRlclNoYWRvdy5nZXRFbGVtZW50QnlJZCgib3V0ZXJPdXRPZlNj
b3BlIikpOworICAgIHNoYWRvdzIuaW5uZXJIVE1MID0gJzxkaXYgaWQ9InRhcmdldE91dE9mU2Nv
cGUiPnRhcmdldE91dE9mU2NvcGU8L2Rpdj4nOworCisgICAgLy8gYmVmb3JlCisgICAgc2hhZG93
MS5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworICAgIHNoYWRvdzIuYXBwbHlBdXRob3JTdHls
ZXMgPSBmYWxzZTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cxLmdldEVsZW1lbnRCeUlk
KCJ0YXJnZXRJblNjb3BlIikpOworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdzIuZ2V0RWxl
bWVudEJ5SWQoInRhcmdldE91dE9mU2NvcGUiKSk7CisKKyAgICAvLyBhZnRlcgorICAgIHNoYWRv
dzEuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlOworICAgIHNoYWRvdzIuYXBwbHlBdXRob3JTdHls
ZXMgPSB0cnVlOworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdzEuZ2V0RWxlbWVudEJ5SWQo
InRhcmdldEluU2NvcGUiKSk7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93Mi5nZXRFbGVt
ZW50QnlJZCgidGFyZ2V0T3V0T2ZTY29wZSIpKTsKKworICAgIGRvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQoZGl2KTsgICAKK30KKworZnVuY3Rpb24gdGVzdE5lc3RlZFNoYWRvdygpCit7CisgICAg
ZGVidWcoJ3Rlc3QgYSBzdHlsZSBpbiBhIHNoYWRvdyBzdWJ0cmVlIGlzIGFwcGxpZWQgdG8gYSBu
b2RlIGluIGl0cyBkZXNjZW5kYW50IHNoYWRvdyBzdWJ0cmVlIHdoZW4gYWxsIGFwcGx5LWF1dGhv
ci1zdHlsZXMgaW4gc2hhZG93IHN1YnRyZWVzIGJldHdlZW4gdGhlIHNoYWRvdyBzdWJ0cmVlIGFu
ZCB0aGUgZGVzY2VuZGFudCBhcmUgdHJ1ZS4nKTsKKworICAgIHZhciBkaXYgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBkaXYuaW5uZXJIVE1MID0gJzxzdHlsZSBzY29wZWQ+
ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgcmVkIH08L3N0eWxlPjxkaXYgaWQ9Imhvc3QiPjwvZGl2
Pic7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpOworCisgICAgdmFyIG91dGVy
TW9zdFNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJob3N0IikpOworICAgIG91dGVyTW9zdFNoYWRvdy5pbm5lckhUTUwgPSAnPHN0eWxlPmRpdiB7
IGJvcmRlcjogMXB4IHNvbGlkIGJsdWU7IH08L3N0eWxlPjxkaXYgaWQ9Im91dGVyTW9zdCI+b3V0
ZXJNb3N0PC9kaXY+JzsKKyAgICBvdXRlck1vc3RTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBm
YWxzZTsKKworICAgIHZhciBvdXRlclNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KG91dGVy
TW9zdFNoYWRvdy5nZXRFbGVtZW50QnlJZCgib3V0ZXJNb3N0IikpOworICAgIG91dGVyU2hhZG93
LmlubmVySFRNTCA9ICc8ZGl2IGlkPSJvdXRlciI+b3V0ZXI8L2Rpdj4nOworICAgIG91dGVyU2hh
ZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisKKyAgICB2YXIgc2hhZG93ID0gbmV3IFdl
YktpdFNoYWRvd1Jvb3Qob3V0ZXJTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm91dGVyIikpOworICAg
IHNoYWRvdy5pbm5lckhUTUwgPSAnPGRpdiBpZD0idGFyZ2V0Ij50YXJnZXQ8L2Rpdj4nOworICAg
IHNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworCisgICAgLy8gTm8gc3R5bGVzIHNo
b3VsZCBiZSBhcHBsaWVkLgorICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50
QnlJZCgidGFyZ2V0IikpOworCisgICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsK
KyAgICAvLyBBIHN0eWxlIGluIGRvY3VtZW50IHNob3VsZCBiZSBhcHBsaWVkLgorICAgIGR1bXBD
b21wdXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworCisgICAgb3V0
ZXJTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlCisgICAgLy8gQSBzdHlsZSBpbiAnb3V0
ZXJNb3N0JyBzaGFkb3cgc2hvdWxkIGJlIGFwcGxpZWQuCisgICAgZHVtcENvbXB1dGVkU3R5bGUo
c2hhZG93LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICBkb2N1bWVudC5ib2R5LnJl
bW92ZUNoaWxkKGRpdik7ICAgCit9CisKK2Z1bmN0aW9uIHRlc3RNdWx0aXBsZVNoYWRvdygpCit7
CisgICAgZGVidWcoJ3Rlc3QgYSBzdHlsZSBpbiBkb2N1bWVudCBpcyBhcHBsaWVkIHRvIG5vZGVz
IGluIG11bHRpcGxlIHNoYWRvdyBzdWJ0cmVlcyB3aGVuIGFwcGx5LWF1dGhvci1zdHlsZXMgaXMg
dHJ1ZS4nKTsKKworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICBkaXYuaW5uZXJIVE1MID0gJzxzdHlsZSBzY29wZWQ+ZGl2IHsgYm9yZGVyOiAxcHggc29s
aWQgcmVkIH08L3N0eWxlPjxkaXY+dGVzdDwvZGl2Pic7CisgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChkaXYpOworCisgICAgdmFyIG9sZGVzdFNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KGRpdik7CisgICAgb2xkZXN0U2hhZG93LmlubmVySFRNTCA9ICc8c2hhZG93Pjwvc2hhZG93
PjxkaXYgaWQ9Im9sZGVzdFNoYWRvdyI+b2xkZXN0U2hhZG93PC9kaXY+JzsKKyAgICBvbGRlc3RT
aGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKworICAgIHZhciBvbGRlclNoYWRvdyA9
ICBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIG9sZGVyU2hhZG93LmlubmVySFRNTCA9
ICc8c3R5bGUgc2NvcGVkPmRpdiB7IGJvcmRlcjogMXB4IHNvbGlkIGJsdWUgfTwvc3R5bGU+PHNo
YWRvdz48L3NoYWRvdz48ZGl2IGlkPSJvbGRlclNoYWRvdyI+b2xkZXJTaGFkb3c8L2Rpdj4nOwor
ICAgIG9sZGVyU2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisKKyAgICB2YXIgc2hh
ZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKKyAgICBzaGFkb3cuaW5uZXJIVE1MID0g
JzxzaGFkb3c+PC9zaGFkb3c+PGRpdiBpZD0idGFyZ2V0Ij5zaGFkb3c8L2Rpdj4nOworICAgIHNo
YWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworCisgICAgLy8gYmVmb3JlCisgICAgZHVt
cENvbXB1dGVkU3R5bGUob2xkZXN0U2hhZG93LmdldEVsZW1lbnRCeUlkKCJvbGRlc3RTaGFkb3ci
KSk7CisgICAgZHVtcENvbXB1dGVkU3R5bGUob2xkZXJTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm9s
ZGVyU2hhZG93IikpOworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJ
ZCgidGFyZ2V0IikpOworCisgICAgLy8gZG9jdW1lbnQgLS0tKy0tLSBvbGRlc3RTaGFkb3cKKyAg
ICAvLyAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgKy0tLSBvbGRlclNoYWRvdwor
ICAgIC8vICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICArLS0tIHNoYWRvdworCisg
ICAgLy8gYXBwbHktYXV0aG9yLXN0eWxlcyBhZmZlY3RzIGJldHdlZW4gc2hhZG93IGFuZCBkb2N1
bWVudC4KKyAgICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlOworICAgIGR1bXBDb21w
dXRlZFN0eWxlKG9sZGVzdFNoYWRvdy5nZXRFbGVtZW50QnlJZCgib2xkZXN0U2hhZG93IikpOwor
ICAgIGR1bXBDb21wdXRlZFN0eWxlKG9sZGVyU2hhZG93LmdldEVsZW1lbnRCeUlkKCJvbGRlclNo
YWRvdyIpKTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoInRh
cmdldCIpKTsKKworICAgIC8vIGFwcGx5LWF1dGhvci1zdHlsZXMgYWZmZWN0cyBiZXR3ZWVuIG9s
ZGVyIHNoYWRvdyBhbmQgZG9jdW1lbnQuCisgICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0g
ZmFsc2U7CisgICAgb2xkZXJTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlOworICAgIGR1
bXBDb21wdXRlZFN0eWxlKG9sZGVzdFNoYWRvdy5nZXRFbGVtZW50QnlJZCgib2xkZXN0U2hhZG93
IikpOworICAgIGR1bXBDb21wdXRlZFN0eWxlKG9sZGVyU2hhZG93LmdldEVsZW1lbnRCeUlkKCJv
bGRlclNoYWRvdyIpKTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0RWxlbWVudEJ5
SWQoInRhcmdldCIpKTsKKworICAgIC8vIGFwcGx5LWF1dGhvci1zdHlsZXMgYWZmZWN0cyBiZXR3
ZWVuIG9sZGVzdCBzaGFkb3cgYW5kIGRvY3VtZW50LgorICAgIG9sZGVyU2hhZG93LmFwcGx5QXV0
aG9yU3R5bGVzID0gZmFsc2U7CisgICAgb2xkZXN0U2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0g
dHJ1ZTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShvbGRlc3RTaGFkb3cuZ2V0RWxlbWVudEJ5SWQo
Im9sZGVzdFNoYWRvdyIpKTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShvbGRlclNoYWRvdy5nZXRF
bGVtZW50QnlJZCgib2xkZXJTaGFkb3ciKSk7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93
LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNo
aWxkKGRpdik7Cit9CisKK2Z1bmN0aW9uIHRlc3RPcmRlck9mQXBwbHlTdHlsZSgpCit7CisgICAg
ZGVidWcoJ3Rlc3QgYSBzdHlsZSBpcyBhcHBsaWVkIGluIGRvY3VtZW50IG9yZGVyLicpOworCisg
ICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRpdi5pbm5l
ckhUTUwgPSAnPHN0eWxlIHNjb3BlZD5kaXYgeyBib3JkZXI6IDFweCBzb2xpZCByZWQgfTwvc3R5
bGU+PGRpdiBpZD0iaG9zdCI+PC9kaXY+JzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGRpdik7CisKKyAgICB2YXIgb3V0ZXJNb3N0U2hhZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvc3QiKSk7CisgICAgb3V0ZXJNb3N0U2hhZG93Lmlu
bmVySFRNTCA9ICc8c3R5bGU+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgYmx1ZTsgfTwvc3R5bGU+
PGRpdiBpZD0ib3V0ZXJNb3N0Ij5vdXRlck1vc3Q8L2Rpdj4nOworICAgIG91dGVyTW9zdFNoYWRv
dy5hcHBseUF1dGhvclN0eWxlcyA9IHRydWU7CisKKyAgICB2YXIgb3V0ZXJTaGFkb3cgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChvdXRlck1vc3RTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm91dGVyTW9z
dCIpKTsKKyAgICBvdXRlclNoYWRvdy5pbm5lckhUTUwgPSAnPHN0eWxlPmRpdiB7IGJvcmRlcjog
MXB4IHNvbGlkIGdyZWVuOyB9PC9zdHlsZT48ZGl2IGlkPSJvdXRlciI+b3V0ZXI8L2Rpdj4nOwor
ICAgIG91dGVyU2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKworICAgIHZhciBzaGFk
b3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChvdXRlclNoYWRvdy5nZXRFbGVtZW50QnlJZCgib3V0
ZXIiKSk7CisgICAgc2hhZG93LmlubmVySFRNTCA9ICc8c3R5bGU+ZGl2IHsgYm9yZGVyOiAxcHgg
c29saWQgeWVsbG93OyB9PC9zdHlsZT48ZGl2IGlkPSJ0YXJnZXQiPnRhcmdldDwvZGl2Pic7Cisg
ICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKworICAgIC8vIFRoZSBsYXN0IHNj
b3BlZCBzdHlsZSBzaG91bGQgYmUgYXBwbGllZC4KKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFk
b3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIHNoYWRvdy5pbm5lckhUTUwgPSAn
PGRpdiBpZD0idGFyZ2V0Ij50YXJnZXQ8L2Rpdj4nOworICAgIC8vIFRoZSBvdXRlcidzIHNjb3Bl
ZCBzdHlsZSBzaG91bGQgYmUgYXBwbGllZC4KKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cu
Z2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hp
bGQoZGl2KTsgICAKK30KKworZnVuY3Rpb24gcnVuVGVzdHMoKSB7CisgICAgdGVzdEJhc2ljKCk7
CisgICAgdGVzdEVuY2xvc2luZ1NoYWRvdygpOworICAgIHRlc3RFbmNsb3NpbmdTaGFkb3dXaXRo
U2NvcGVkKCk7CisgICAgdGVzdE5lc3RlZFNoYWRvdygpOworICAgIHRlc3RNdWx0aXBsZVNoYWRv
dygpOworICAgIHRlc3RPcmRlck9mQXBwbHlTdHlsZSgpOworfQorCis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdHMoKSI+CisgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148518</attachid>
            <date>2012-06-20 00:16:48 -0700</date>
            <delta_ts>2012-06-20 04:48:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89061-20120620161647.patch</filename>
            <type>text/plain</type>
            <size>21659</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZjYjMwNDZmNjhkODRk
YWY2YjA5YWU2YTQ1MjM1M2UzZDVkOGNmYS4uNzRlY2ZmYjIwZmZiYmIyNzQwZjI4NmJjZDA4MDll
NzhiNzU4ZjFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA2LTEzICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBhcHBseUF1dGhvclN0
eWxlcyBtYWtlcyBydWxlcyBkZWNsYXJlZCBpbiBhbGwgZW5jbG9zaW5nIHNoYWRvdyBkb20gc3Vi
dHJlZXMgYXBwbGljYWJsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg5MDYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292Lgor
CisgICAgICAgIEZpeGluZyBhcHBseS1hdXRob3Itc3R5bGVzIGJ1Zy4gSWYgdGhlcmUgZXhpc3Rz
IHNvbWUgc2hhZG93IHN1YnRyZWUgQQorICAgICAgICBhbmQgQSBoYXMgYXBwbHktYXV0aG9yLXN0
eWxlcyBmbGFnIHNldCwgd2hldGhlciBzb21lIHJ1bGVzIGRlY2xhcmVkIGluCisgICAgICAgIGEg
dHJlZSBCIGlzIGFwcGxpY2FibGUgaW4gQSBvciBub3QgZGVwZW5kcyBvbjoKKyAgICAgICAgLSB0
aGUgdHJlZSBCIGVuY2xvc2VzIHRoZSB0cmVlIEEsIGFuZAorICAgICAgICAtIGFsbCB0cmVlcyB3
aGljaCBlbmNsb3NlIEEgYW5kIGFyZSBlbmNsb3NlZCBieSBCIGhhcworICAgICAgICAgIGFwcGx5
LWF1dGhvci1zdHlsZXMgc2V0LgorICAgICAgICBjLmYuCisgICAgICAgIGh0dHA6Ly9kdmNzLncz
Lm9yZy9oZy93ZWJjb21wb25lbnRzL3Jhdy1maWxlL3RpcC9zcGVjL3NoYWRvdy9pbmRleC5odG1s
I3N0eWxlcworICAgICAgICBIb3dldmVyIHRoZSBzZWNvbmQgcnVsZSB3YXMgbm90IGltcGxlbWVu
dGVkLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQt
YXBwbHktYXV0aG9yLXN0eWxlcy5odG1sCisKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzZXR1cFNjb3BlU3RhY2spOgor
ICAgICAgICBNb2RpZmllZCB0byBhZGQgYSBuZXcgbWVtYmVyIHZhcmlhYmxlLCBhdXRob3JTdHls
ZUJvdW5kc0luZGV4IHRvCisgICAgICAgIFNjb3BlU3RhY2tGcmFtZSB1c2VkIGJ5IG1fc2NvcGVT
dGFjay4gVGhlIGluZGV4IG1lYW5zOiBpZiBzaGFkb3cgZG9tCisgICAgICAgIHN1YnRyZWUgQSBh
bmQgQiBoYXMgdGhlIHNhbWUgdmFsdWUgYW5kIEEgZW5jbG9zZXMgQiwgYWxsIHNoYWRvdyBkb20K
KyAgICAgICAgc3VidHJlZXMgd2hpY2ggZW5jbG9zZSBCIGFuZCBhcmUgZW5jbG9zZWQgYnkgQiBo
YXZlCisgICAgICAgIGFwcGx5LWF1dGhvci1zdHlsZXMgc2V0LiBBbmQgQiBhbHNvIGhhcyBhcHBs
eS1hdXRob3Itc3R5bGVzIHNldC4KKyAgICAgICAgVGhpcyBtZWFucywgaWYgc29tZSBlbGVtZW50
IFggaGFzIGF1dGhvclN0eWxlQm91bmRzSW5kZXggTiwgYWxsCisgICAgICAgIHJ1bGVzZXRzIHdo
b3NlIHNjb3BlcyBoYXZlIGF1dGhvclN0eWxlQm91bmRzSW5kZXggTiBhcmUgYXBwbGljYWJsZSBp
bgorICAgICAgICBCJ3MgdHJlZSBzY29wZS4gSWYgYWxsIHNoYWRvdyBkb20gc3VidHJlZXMgaGF2
ZSBhcHBseS1hdXRob3Itc3R5bGVzCisgICAgICAgIHVuc2V0LCB0aGUgaW5kZXggbG9va3MgYWxt
b3N0IHRoZSBzYW1lIGFzIHRyZWVTY29wZSgpLiBJbiB0aGlzIGNhc2UsCisgICAgICAgIFJ1bGVz
IGluIGRpZmZlcmVudCB0cmVlIHNjb3BlcyBoYXZlIGRpZmZlcmVudCBhdXRob3Igc3R5bGUgYm91
bmRzCisgICAgICAgIGluZGV4LgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cHVz
aFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnBvcFNjb3BlKToKKyAg
ICAgICAgQWRkZWQgdGhlIGNvZGUgZm9yIHVwZGF0aW5nIG1fc2NvcGVTdGFja1BhcmVudEJvdW5k
c0luZGV4LiBUaGUgbWVtYmVyCisgICAgICAgIHZhcmlhYmxlIGtlZXBzIG1fc2NvcGVTdGFja1Bh
cmVudCdzIGF1dGhvciBzdHlsZSBib3VuZHMgaW5kZXguCisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjptYXRjaFNjb3BlZEF1dGhvclJ1bGVzKToKKyAgICAgICAgTW9kaWZpZWQgdG8g
Y29uc2lkZXIgYXV0aG9yIHN0eWxlJ3MgYm91bmRzIGluZGV4LiBGaXJzdGx5IGFwcGx5aW5nCisg
ICAgICAgIHNjb3BlZCBzdHlsZXMgZGVjbGFyZWQgaW4gZG9jdW1lbnQgaWYgYXBwbHktYXV0aG9y
LXN0eWxlcyBpcyBzZXQuCisgICAgICAgIE5leHQsIGFwcGx5aW5nIHNjb3BlZCBzdHlsZXMgZGVj
bGFyZWQgaW4gc2hhZG93IGRvbSBzdWJ0cmVlIHdpdGgKKyAgICAgICAgY29uc2lkZXJpbmcgYXV0
aG9yIHN0eWxlIGJvdW5kcyBpbmRleCwgaS5lLiBjb25zaWRlcmluZworICAgICAgICBhcHBseS1h
dXRob3Itc3R5bGVzIGZsYWcuCisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlNjb3BlU3RhY2tGcmFtZTo6U2NvcGVTdGFja0Zy
YW1lKToKKyAgICAgICAgKFNjb3BlU3RhY2tGcmFtZSk6CisgICAgICAgIEFkZGVkIG1fYXV0aG9y
U3R5bGVCb3VuZHNJbmRleCB0byBrZWVwIGFwcGx5LWF1dGhvci1zdHlsZXMgZmxhZworICAgICAg
ICBpbmZvcm1hdGlvbi4gbV9hdXRob3JTdHlsZUJvdW5kc0luZGV4IGluY3JlbWVudHMgYnkgMSBp
ZiBzaGFkb3cgcm9vdCBpcworICAgICAgICBnaXZlbiBhbmQgaXQgaGFzIGFwcGx5LWF1dGhvci1z
dHlsZXMgdW5zZXQuCisgICAgICAgIE5vdyBydWxlcyBpbiB0aGUgc2FtZSBhdXRob3JTdHlsZUJv
dW5kc0luZGV4IHNob3VsZCBiZSBhcHBsaWVkLgorICAgICAgICAoU3R5bGVSZXNvbHZlcik6Cisg
ICAgICAgIEFkZGVkIG1fc2NvcGVTdGFja1BhcmVudEJvdW5kc0luZGV4LgorICAgICAgICBBcyBt
X3Njb3BlU3RhY2tQYXJlbnRBdXRob3JTdHlsZUJvdW5kc0luZGV4IGlzIGEgbGl0dGxlIGxvbmcs
CisgICAgICAgIHVzZWQgbV9zY29wZVN0YWNrUGFyZW50Qm91bmRzSW5kZXguCisKIDIwMTItMDYt
MTggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
U3RyZWFtZXJdIDAuMTEgdmlkZW8tc2luawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CmluZGV4IDkzZGZmMmJhNTBjZTUyYmYxNDc1YzUzODJmZjE2NWFkZWZkOWVhNGEuLjAzZGMzMTA2
Yzg1M2MwZTQ3MjM0NDMwZTg0ZTJlN2FkMTViMzZlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKQEAgLTM3Miw2ICszNzIsNyBAQCBTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29s
dmVyKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpCiAj
ZW5kaWYKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQogICAgICwgbV9zY29wZVN0YWNrUGFyZW50
KDApCisgICAgLCBtX3Njb3BlU3RhY2tQYXJlbnRCb3VuZHNJbmRleCgwKQogI2VuZGlmCiB7CiAg
ICAgRWxlbWVudCogcm9vdCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKQEAgLTU2NCwx
MyArNTY1LDE3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6c2V0dXBTY29wZVN0YWNrKGNvbnN0IENv
bnRhaW5lck5vZGUqIHBhcmVudCkKICAgICBBU1NFUlQoIW1fc2NvcGVkQXV0aG9yU3R5bGVzLmlz
RW1wdHkoKSk7CiAKICAgICBtX3Njb3BlU3RhY2suc2hyaW5rKDApOworICAgIGludCBhdXRob3JT
dHlsZUJvdW5kc0luZGV4ID0gMDsKICAgICBmb3IgKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3Bl
ID0gcGFyZW50OyBzY29wZTsgc2NvcGUgPSBzY29wZS0+cGFyZW50T3JIb3N0Tm9kZSgpKSB7CiAg
ICAgICAgIFJ1bGVTZXQqIHJ1bGVTZXQgPSBydWxlU2V0Rm9yU2NvcGUoc2NvcGUpOwogICAgICAg
ICBpZiAocnVsZVNldCkKLSAgICAgICAgICAgIG1fc2NvcGVTdGFjay5hcHBlbmQoU2NvcGVTdGFj
a0ZyYW1lKHNjb3BlLCBydWxlU2V0KSk7CisgICAgICAgICAgICBtX3Njb3BlU3RhY2suYXBwZW5k
KFNjb3BlU3RhY2tGcmFtZShzY29wZSwgYXV0aG9yU3R5bGVCb3VuZHNJbmRleCwgcnVsZVNldCkp
OworICAgICAgICBpZiAoc2NvcGUtPmlzU2hhZG93Um9vdCgpICYmICF0b1NoYWRvd1Jvb3Qoc2Nv
cGUpLT5hcHBseUF1dGhvclN0eWxlcygpKQorICAgICAgICAgICAgLS1hdXRob3JTdHlsZUJvdW5k
c0luZGV4OwogICAgIH0KICAgICBtX3Njb3BlU3RhY2sucmV2ZXJzZSgpOwogICAgIG1fc2NvcGVT
dGFja1BhcmVudCA9IHBhcmVudDsKKyAgICBtX3Njb3BlU3RhY2tQYXJlbnRCb3VuZHNJbmRleCA9
IDA7CiB9CiAKIHZvaWQgU3R5bGVSZXNvbHZlcjo6cHVzaFNjb3BlKGNvbnN0IENvbnRhaW5lck5v
ZGUqIHNjb3BlLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZVBhcmVudCkKQEAgLTU4NywxMCAr
NTkyLDEyIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6cHVzaFNjb3BlKGNvbnN0IENvbnRhaW5lck5v
ZGUqIHNjb3BlLCBjb25zdCBDb250YWluZXJOb2RlKiBzCiAgICAgICAgIHNldHVwU2NvcGVTdGFj
ayhzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKHNjb3BlLT5pc1NoYWRv
d1Jvb3QoKSAmJiAhdG9TaGFkb3dSb290KHNjb3BlKS0+YXBwbHlBdXRob3JTdHlsZXMoKSkKKyAg
ICAgICAgKyttX3Njb3BlU3RhY2tQYXJlbnRCb3VuZHNJbmRleDsKICAgICAvLyBPdGhlcndpc2Ug
anVzdCBwdXNoIHRoZSBwYXJlbnQgb250byB0aGUgc3RhY2suCiAgICAgUnVsZVNldCogcnVsZVNl
dCA9IHJ1bGVTZXRGb3JTY29wZShzY29wZSk7CiAgICAgaWYgKHJ1bGVTZXQpCi0gICAgICAgIG1f
c2NvcGVTdGFjay5hcHBlbmQoU2NvcGVTdGFja0ZyYW1lKHNjb3BlLCBydWxlU2V0KSk7CisgICAg
ICAgIG1fc2NvcGVTdGFjay5hcHBlbmQoU2NvcGVTdGFja0ZyYW1lKHNjb3BlLCBtX3Njb3BlU3Rh
Y2tQYXJlbnRCb3VuZHNJbmRleCwgcnVsZVNldCkpOwogICAgIG1fc2NvcGVTdGFja1BhcmVudCA9
IHNjb3BlOwogfQogCkBAIC02MDAsNiArNjA3LDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpwb3BT
Y29wZShjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSkKICAgICBpZiAoc2NvcGVTdGFja0lzQ29u
c2lzdGVudChzY29wZSkpIHsKICAgICAgICAgaWYgKCFtX3Njb3BlU3RhY2suaXNFbXB0eSgpICYm
IG1fc2NvcGVTdGFjay5sYXN0KCkubV9zY29wZSA9PSBzY29wZSkKICAgICAgICAgICAgIG1fc2Nv
cGVTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgIGlmIChzY29wZS0+aXNTaGFkb3dSb290KCkg
JiYgIXRvU2hhZG93Um9vdChzY29wZSktPmFwcGx5QXV0aG9yU3R5bGVzKCkpCisgICAgICAgICAg
ICAtLW1fc2NvcGVTdGFja1BhcmVudEJvdW5kc0luZGV4OwogICAgICAgICBtX3Njb3BlU3RhY2tQ
YXJlbnQgPSBzY29wZS0+cGFyZW50T3JIb3N0Tm9kZSgpOwogICAgIH0KIH0KQEAgLTkyNiwyMiAr
OTM1LDM4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hTY29wZWRBdXRob3JSdWxlcyhNYXRj
aFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0CiAgICAgTWF0Y2hPcHRpb25zIG9wdGlv
bnMoaW5jbHVkZUVtcHR5UnVsZXMpOwogCiAgICAgLy8gTWF0Y2ggc2NvcGVkIGF1dGhvciBydWxl
cyBieSB0cmF2ZXJzaW5nIHRoZSBzY29wZWQgZWxlbWVudCBzdGFjayAocmVidWlsZCBpdCBpZiBp
dCBnb3QgaW5jb25zaXN0ZW50KS4KLSAgICBjb25zdCBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBt
X2VsZW1lbnQtPnBhcmVudE9ySG9zdE5vZGUoKTsKLSAgICBpZiAoIXNjb3BlU3RhY2tJc0NvbnNp
c3RlbnQocGFyZW50KSkKLSAgICAgICAgc2V0dXBTY29wZVN0YWNrKHBhcmVudCk7Ci0gICAgZm9y
IChzaXplX3QgaSA9IG1fc2NvcGVTdGFjay5zaXplKCk7IGk7IC0taSkgewotICAgICAgICBjb25z
dCBTY29wZVN0YWNrRnJhbWUmIGZyYW1lID0gbV9zY29wZVN0YWNrW2kgLSAxXTsKKyAgICBpZiAo
IXNjb3BlU3RhY2tJc0NvbnNpc3RlbnQobV9lbGVtZW50KSkKKyAgICAgICAgc2V0dXBTY29wZVN0
YWNrKG1fZWxlbWVudCk7CisKKyAgICB1bnNpZ25lZCBpbnQgZmlyc3RTaGFkb3dTY29wZUluZGV4
ID0gMDsKKyAgICBpZiAobV9lbGVtZW50LT50cmVlU2NvcGUoKS0+YXBwbHlBdXRob3JTdHlsZXMo
KSkgeworICAgICAgICB1bnNpZ25lZCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbV9zY29w
ZVN0YWNrLnNpemUoKSAmJiAhbV9zY29wZVN0YWNrW2ldLm1fc2NvcGUtPmlzSW5TaGFkb3dUcmVl
KCk7ICsraSkgeworICAgICAgICAgICAgY29uc3QgU2NvcGVTdGFja0ZyYW1lJiBmcmFtZSA9IG1f
c2NvcGVTdGFja1tpXTsKKyAgICAgICAgICAgIG9wdGlvbnMuc2NvcGUgPSBmcmFtZS5tX3Njb3Bl
OworICAgICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXMoZnJhbWUubV9ydWxlU2V0LCByZXN1
bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwg
b3B0aW9ucyk7CisgICAgICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihmcmFt
ZS5tX3J1bGVTZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2Vz
Lmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKKyAgICAgICAgfQorICAgICAgICBmaXJzdFNoYWRv
d1Njb3BlSW5kZXggPSBpOworICAgIH0KKworICAgIGlmICghbV9lbGVtZW50LT5pc0luU2hhZG93
VHJlZSgpIHx8IG1fc2NvcGVTdGFjay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IHVuc2lnbmVkIHNjb3BlZEluZGV4ID0gbV9zY29wZVN0YWNrLnNpemUoKTsKKyAgICBpbnQgYXV0
aG9yU3R5bGVCb3VuZHNJbmRleCA9IG1fc2NvcGVTdGFja1BhcmVudEJvdW5kc0luZGV4OworICAg
IGZvciAoIDsgc2NvcGVkSW5kZXggPiBmaXJzdFNoYWRvd1Njb3BlSW5kZXg7IC0tc2NvcGVkSW5k
ZXgpIHsKKyAgICAgICAgaWYgKGF1dGhvclN0eWxlQm91bmRzSW5kZXggIT0gbV9zY29wZVN0YWNr
W3Njb3BlZEluZGV4IC0gMV0ubV9hdXRob3JTdHlsZUJvdW5kc0luZGV4KQorICAgICAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgLy8gUnVsZXNldCBmb3IgYW5jZXN0b3Igbm9kZXMgc2hvdWxk
IGJlIGFwcGxpZWQgZmlyc3QuCisgICAgZm9yICh1bnNpZ25lZCBpID0gc2NvcGVkSW5kZXg7IGkg
PCBtX3Njb3BlU3RhY2suc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgU2NvcGVTdGFja0Zy
YW1lJiBmcmFtZSA9IG1fc2NvcGVTdGFja1tpXTsKICAgICAgICAgb3B0aW9ucy5zY29wZSA9IGZy
YW1lLm1fc2NvcGU7CiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKGZyYW1lLm1fcnVsZVNl
dCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhv
clJ1bGUsIG9wdGlvbnMpOwogICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihm
cmFtZS5tX3J1bGVTZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFu
Z2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKICAgICB9Ci0gICAgLy8gQWxzbyBpbmNsdWRl
IHRoZSBjdXJyZW50IGVsZW1lbnQuCi0gICAgUnVsZVNldCogcnVsZVNldCA9IHJ1bGVTZXRGb3JT
Y29wZShtX2VsZW1lbnQpOwotICAgIGlmIChydWxlU2V0KSB7Ci0gICAgICAgIG9wdGlvbnMuc2Nv
cGUgPSBtX2VsZW1lbnQ7Ci0gICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzKHJ1bGVTZXQsIHJl
c3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxlLCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxl
LCBvcHRpb25zKTsKLSAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24ocnVsZVNl
dCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhv
clJ1bGUsIG9wdGlvbnMpOwotICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7
CiAgICAgVU5VU0VEX1BBUkFNKGluY2x1ZGVFbXB0eVJ1bGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5oCmluZGV4IDlmOWNjMmNhNDVhY2RmMDc5NTRlODIyZGEyNTBkNTAzODM3MWY3M2Eu
LjI5ZjgwMGUwYzZlYzcwNTJlMzZmYzI1OWE4YjIxYzk4YjY1YjA5ZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuaApAQCAtNTMxLDkgKzUzMSwxMCBAQCBwcml2YXRlOgogICAgIFNjb3Bl
ZFJ1bGVTZXRNYXAgbV9zY29wZWRBdXRob3JTdHlsZXM7CiAgICAgCiAgICAgc3RydWN0IFNjb3Bl
U3RhY2tGcmFtZSB7Ci0gICAgICAgIFNjb3BlU3RhY2tGcmFtZSgpIDogbV9zY29wZSgwKSwgbV9y
dWxlU2V0KDApIHsgfQotICAgICAgICBTY29wZVN0YWNrRnJhbWUoY29uc3QgQ29udGFpbmVyTm9k
ZSogc2NvcGUsIFJ1bGVTZXQqIHJ1bGVTZXQpIDogbV9zY29wZShzY29wZSksIG1fcnVsZVNldChy
dWxlU2V0KSB7IH0KKyAgICAgICAgU2NvcGVTdGFja0ZyYW1lKCkgOiBtX3Njb3BlKDApLCBtX2F1
dGhvclN0eWxlQm91bmRzSW5kZXgoMCksIG1fcnVsZVNldCgwKSB7IH0KKyAgICAgICAgU2NvcGVT
dGFja0ZyYW1lKGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlLCBpbnQgYXV0aG9yU3R5bGVCb3Vu
ZHNJbmRleCwgUnVsZVNldCogcnVsZVNldCkgOiBtX3Njb3BlKHNjb3BlKSwgbV9hdXRob3JTdHls
ZUJvdW5kc0luZGV4KGF1dGhvclN0eWxlQm91bmRzSW5kZXgpLCBtX3J1bGVTZXQocnVsZVNldCkg
eyB9CiAgICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIG1fc2NvcGU7CisgICAgICAgIGludCBt
X2F1dGhvclN0eWxlQm91bmRzSW5kZXg7CiAgICAgICAgIFJ1bGVTZXQqIG1fcnVsZVNldDsKICAg
ICB9OwogICAgIC8vIFZlY3RvciAodXNlZCBhcyBzdGFjaykgdGhhdCBrZWVwcyB0cmFjayBvZiBz
Y29waW5nIGVsZW1lbnRzIChpLmUuLCBlbGVtZW50cyB3aXRoIGEgPHN0eWxlIHNjb3BlZD4gY2hp
bGQpCkBAIC01NDIsNiArNTQzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBFbGVtZW50IGxhc3Qgc2Vl
biBhcyBwYXJlbnQgZWxlbWVudCB3aGVuIHVwZGF0aW5nIG1fc2NvcGluZ0VsZW1lbnRTdGFjay4K
ICAgICAvLyBUaGlzIGlzIHVzZWQgdG8gZGVjaWRlIHdoZXRoZXIgbV9zY29waW5nRWxlbWVudFN0
YWNrIGlzIGNvbnNpc3RlbnQsIHNlcGFyYXRlbHkgZnJvbSBTZWxlY3RvckNoZWNrZXI6Om1fcGFy
ZW50U3RhY2suCiAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogbV9zY29wZVN0YWNrUGFyZW50Owor
ICAgIGludCBtX3Njb3BlU3RhY2tQYXJlbnRCb3VuZHNJbmRleDsKICNlbmRpZgogCiAgICAgZnJp
ZW5kIGNsYXNzIFN0eWxlQnVpbGRlcjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkOTk0NDNkMjk0MjA4NjE0YmVmMjNmMjFj
ODA5OTMzMzg3MzA5YmI0Li4yZWVmMWRkMTdkNTYxYzJkYjYyMDRhNDQ3NTNjMjIyYTljMzA1YjE4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDYtMTMgIFRha2FzaGkgU2FrYW1vdG8gIDx0
YXNha0Bnb29nbGUuY29tPgorCisgICAgICAgIGFwcGx5QXV0aG9yU3R5bGVzIG1ha2VzIHJ1bGVz
IGRlY2xhcmVkIGluIGFsbCBlbmNsb3Npbmcgc2hhZG93IGRvbSBzdWJ0cmVlcyBhcHBsaWNhYmxl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkwNjEK
KworICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCisKKyAgICAgICAgKiBmYXN0
L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2NvcGVkLWFwcGx5LWF1dGhvci1zdHlsZXMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZS1zY29wZWQvc3R5bGUtc2Nv
cGVkLWFwcGx5LWF1dGhvci1zdHlsZXMuaHRtbDogQWRkZWQuCisKIDIwMTItMDYtMTkgIEpvbiBI
b25leWN1dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIGZh
aWxpbmcgZXhwZWN0ZWQgcmVzdWx0cyBhZGRlZCBpbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3N0eWxlLXNjb3BlZC1hcHBseS1hdXRob3Itc3R5bGVzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29w
ZWQtYXBwbHktYXV0aG9yLXN0eWxlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE2M2Q5YWE4
NDM0N2Q2NzBlNjBmZTg0Y2U1ZWQ5NmUzZDYzYTJiNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYXBwbHktYXV0aG9yLXN0
eWxlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzOCBAQAorUEFTUyB3aW5kb3cuaW50ZXJuYWxz
IGlzIGRlZmluZWQuCitQQVNTIHdpbmRvdy5pbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9vdCBpcyBk
ZWZpbmVkLgorUEFTUyBXZWJLaXRTaGFkb3dSb290IGlzIGRlZmluZWQuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK3Rlc3QgYSBzY29wZWQgc3R5bGUg
aW4gZG9jdW1lbnQgaXMgYXBwbGllZCB0byBhIG5vZGUgaW4gc2hhZG93IGRvbSBzdWJ0cmVlIHdo
ZW4gYXBwbHktYXV0aG9yLXN0eWxlcyBpcyB0cnVlLgordGFyZ2V0OiByZ2IoMCwgMCwgMCkKK3Rh
cmdldDogcmdiKDI1NSwgMCwgMCkKK3Rlc3QgYSBzdHlsZSBpbiBhbiBlbmNsb3Npbmcgc2hhZG93
IGRvbSB0cmVlIGlzIGFwcGxpZWQgdG8gYSBub2RlIGluIHNoYWRvdyBzdWJ0cmVlIHdoZW4gYXBw
bHktYXV0aG9yLXN0eWxlcyBpcyB0cnVlLgordGFyZ2V0OiByZ2IoMCwgMCwgMCkKK3RhcmdldDog
cmdiKDI1NSwgMCwgMCkKK3Rlc3QgYSBzY29wZWQgc3R5bGUgaW4gYW4gZW5jbG9zaW5nIHNoYWRv
dyBkb20gdHJlZSBpcyBhcHBsaWVkIHRvIGEgbm9kZSBpbiBzaGFkb3cgc3VidHJlZSB3aGVuIGFw
cGx5LWF1dGhvci1zdHlsZXMgaXMgdHJ1ZSBhbmQgdGhlIG5vZGUgaXMgaW4gdGhlIHNjb3BlLgor
dGFyZ2V0SW5TY29wZTogcmdiKDAsIDAsIDApCit0YXJnZXRPdXRPZlNjb3BlOiByZ2IoMCwgMCwg
MCkKK3RhcmdldEluU2NvcGU6IHJnYigyNTUsIDAsIDApCit0YXJnZXRPdXRPZlNjb3BlOiByZ2Io
MCwgMCwgMCkKK3Rlc3QgYSBzdHlsZSBpbiBhIHNoYWRvdyBzdWJ0cmVlIGlzIGFwcGxpZWQgdG8g
YSBub2RlIGluIGl0cyBkZXNjZW5kYW50IHNoYWRvdyBzdWJ0cmVlIHdoZW4gYWxsIGFwcGx5LWF1
dGhvci1zdHlsZXMgaW4gc2hhZG93IHN1YnRyZWVzIGJldHdlZW4gdGhlIHNoYWRvdyBzdWJ0cmVl
IGFuZCB0aGUgZGVzY2VuZGFudCBhcmUgdHJ1ZS4KK3RhcmdldDogcmdiKDAsIDAsIDApCit0YXJn
ZXQ6IHJnYigyNTUsIDAsIDApCit0YXJnZXQ6IHJnYigwLCAwLCAyNTUpCit0ZXN0IGEgc3R5bGUg
aW4gZG9jdW1lbnQgaXMgYXBwbGllZCB0byBub2RlcyBpbiBtdWx0aXBsZSBzaGFkb3cgc3VidHJl
ZXMgd2hlbiBhcHBseS1hdXRob3Itc3R5bGVzIGlzIHRydWUuCitvbGRlc3RTaGFkb3c6IHJnYigw
LCAwLCAwKQorb2xkZXJTaGFkb3c6IHJnYigwLCAwLCAyNTUpCit0YXJnZXQ6IHJnYigwLCAwLCAw
KQorb2xkZXN0U2hhZG93OiByZ2IoMCwgMCwgMCkKK29sZGVyU2hhZG93OiByZ2IoMCwgMCwgMjU1
KQordGFyZ2V0OiByZ2IoMjU1LCAwLCAwKQorb2xkZXN0U2hhZG93OiByZ2IoMCwgMCwgMCkKK29s
ZGVyU2hhZG93OiByZ2IoMCwgMCwgMjU1KQordGFyZ2V0OiByZ2IoMCwgMCwgMCkKK29sZGVzdFNo
YWRvdzogcmdiKDI1NSwgMCwgMCkKK29sZGVyU2hhZG93OiByZ2IoMCwgMCwgMjU1KQordGFyZ2V0
OiByZ2IoMCwgMCwgMCkKK3Rlc3QgYSBzdHlsZSBpcyBhcHBsaWVkIGluIGRvY3VtZW50IG9yZGVy
LgordGFyZ2V0OiByZ2IoMjU1LCAyNTUsIDApCit0YXJnZXQ6IHJnYigwLCAxMjgsIDApCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQt
YXBwbHktYXV0aG9yLXN0eWxlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2Nv
cGVkL3N0eWxlLXNjb3BlZC1hcHBseS1hdXRob3Itc3R5bGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJi
OTA2MWYzYjczY2QxZmM1MzIzMjBkYTlhOGRlZGU2ZjFjYjY1NAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9zdHlsZS1zY29wZWQtYXBwbHktYXV0
aG9yLXN0eWxlcy5odG1sCkBAIC0wLDAgKzEsMjI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9kb20vc2hhZG93L3Jlc291cmNlcy9wb2x5
ZmlsbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCitzaG91bGRCZURlZmluZWQoIndpbmRvdy5pbnRl
cm5hbHMiKTsKK3Nob3VsZEJlRGVmaW5lZCgid2luZG93LmludGVybmFscy5lbnN1cmVTaGFkb3dS
b290Iik7CitzaG91bGRCZURlZmluZWQoIldlYktpdFNoYWRvd1Jvb3QiKTsKKworZnVuY3Rpb24g
ZHVtcENvbXB1dGVkU3R5bGUobm9kZSkKK3sKKyAgICBkZWJ1Zyhub2RlLmlkICsgIjogIiArIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUobm9kZSwgbnVsbCkuZ2V0UHJvcGVy
dHlWYWx1ZSgnYm9yZGVyLWNvbG9yJykpOworfQorCitmdW5jdGlvbiB0ZXN0QmFzaWMoKQorewor
ICAgIGRlYnVnKCd0ZXN0IGEgc2NvcGVkIHN0eWxlIGluIGRvY3VtZW50IGlzIGFwcGxpZWQgdG8g
YSBub2RlIGluIHNoYWRvdyBkb20gc3VidHJlZSB3aGVuIGFwcGx5LWF1dGhvci1zdHlsZXMgaXMg
dHJ1ZS4nKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgZGl2LmlubmVySFRNTCA9ICc8ZGl2PjxzdHlsZSBzY29wZWQ+ZGl2IHsgYm9yZGVyOiAxcHgg
c29saWQgcmVkOyB9PC9zdHlsZT48ZGl2IGlkPSJob3N0Ij48L2Rpdj48L2Rpdj4nOworICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKworICAgIHZhciBzaGFkb3cgPSBuZXcgV2Vi
S2l0U2hhZG93Um9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaG9zdCIpKTsKKyAgICBzaGFk
b3cuaW5uZXJIVE1MID0gJzxkaXYgaWQ9InRhcmdldCI+dGFyZ2V0PC9kaXY+JzsKKyAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisKKyAgICAvLyBiZWZvcmUKKyAgICBzaGFkb3cu
YXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cu
Z2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIC8vIGFmdGVyCisgICAgc2hhZG93LmFw
cGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cuZ2V0
RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQo
ZGl2KTsKK30KKworZnVuY3Rpb24gdGVzdEVuY2xvc2luZ1NoYWRvdygpCit7CisgICAgZGVidWco
J3Rlc3QgYSBzdHlsZSBpbiBhbiBlbmNsb3Npbmcgc2hhZG93IGRvbSB0cmVlIGlzIGFwcGxpZWQg
dG8gYSBub2RlIGluIHNoYWRvdyBzdWJ0cmVlIHdoZW4gYXBwbHktYXV0aG9yLXN0eWxlcyBpcyB0
cnVlLicpOworCisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKKworICAgIHZhciBvdXRlclNoYWRv
dyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7CisgICAgb3V0ZXJTaGFkb3cuaW5uZXJIVE1M
ID0gJzxzdHlsZT5kaXYgeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH08L3N0eWxlPjxkaXYgaWQ9
Im91dGVyIj5vdXRlcjwvZGl2Pic7CisgICAgdmFyIHNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KG91dGVyU2hhZG93LmdldEVsZW1lbnRCeUlkKCJvdXRlciIpKTsKKyAgICBzaGFkb3cuaW5u
ZXJIVE1MID0gJzxkaXYgaWQ9InRhcmdldCI+dGFyZ2V0PC9kaXY+JzsKKworICAgIC8vIGJlZm9y
ZQorICAgIHNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworICAgIGR1bXBDb21wdXRl
ZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworCisgICAgLy8gYWZ0ZXIK
KyAgICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlOworICAgIGR1bXBDb21wdXRlZFN0
eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworICAgIGRvY3VtZW50LmJvZHku
cmVtb3ZlQ2hpbGQoZGl2KTsgICAKK30KKworZnVuY3Rpb24gdGVzdEVuY2xvc2luZ1NoYWRvd1dp
dGhTY29wZWQoKQoreworICAgIGRlYnVnKCd0ZXN0IGEgc2NvcGVkIHN0eWxlIGluIGFuIGVuY2xv
c2luZyBzaGFkb3cgZG9tIHRyZWUgaXMgYXBwbGllZCB0byBhIG5vZGUgaW4gc2hhZG93IHN1YnRy
ZWUgd2hlbiBhcHBseS1hdXRob3Itc3R5bGVzIGlzIHRydWUgYW5kIHRoZSBub2RlIGlzIGluIHRo
ZSBzY29wZS4nKTsKKworICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisKKyAgICB2YXIgb3V0ZXJT
aGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIG91dGVyU2hhZG93LmlubmVy
SFRNTCA9ICc8ZGl2PjxzdHlsZSBzY29wZWQ+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgcmVkOyB9
PC9zdHlsZT48ZGl2IGlkPSJvdXRlckluU2NvcGUiPm91dGVySW5TY29wZTwvZGl2PjwvZGl2Pjxk
aXYgaWQ9Im91dGVyT3V0T2ZTY29wZSI+b3V0ZXJPdXRPZlNjb3BlPC9kaXY+JzsKKworICAgIHZh
ciBzaGFkb3cxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qob3V0ZXJTaGFkb3cuZ2V0RWxlbWVudEJ5
SWQoIm91dGVySW5TY29wZSIpKTsKKyAgICBzaGFkb3cxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJ0
YXJnZXRJblNjb3BlIj50YXJnZXRJblNjb3BlPC9kaXY+JzsKKyAgICB2YXIgc2hhZG93MiA9IG5l
dyBXZWJLaXRTaGFkb3dSb290KG91dGVyU2hhZG93LmdldEVsZW1lbnRCeUlkKCJvdXRlck91dE9m
U2NvcGUiKSk7CisgICAgc2hhZG93Mi5pbm5lckhUTUwgPSAnPGRpdiBpZD0idGFyZ2V0T3V0T2ZT
Y29wZSI+dGFyZ2V0T3V0T2ZTY29wZTwvZGl2Pic7CisKKyAgICAvLyBiZWZvcmUKKyAgICBzaGFk
b3cxLmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisgICAgc2hhZG93Mi5hcHBseUF1dGhvclN0
eWxlcyA9IGZhbHNlOworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdzEuZ2V0RWxlbWVudEJ5
SWQoInRhcmdldEluU2NvcGUiKSk7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93Mi5nZXRF
bGVtZW50QnlJZCgidGFyZ2V0T3V0T2ZTY29wZSIpKTsKKworICAgIC8vIGFmdGVyCisgICAgc2hh
ZG93MS5hcHBseUF1dGhvclN0eWxlcyA9IHRydWU7CisgICAgc2hhZG93Mi5hcHBseUF1dGhvclN0
eWxlcyA9IHRydWU7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93MS5nZXRFbGVtZW50QnlJ
ZCgidGFyZ2V0SW5TY29wZSIpKTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFkb3cyLmdldEVs
ZW1lbnRCeUlkKCJ0YXJnZXRPdXRPZlNjb3BlIikpOworCisgICAgZG9jdW1lbnQuYm9keS5yZW1v
dmVDaGlsZChkaXYpOyAgIAorfQorCitmdW5jdGlvbiB0ZXN0TmVzdGVkU2hhZG93KCkKK3sKKyAg
ICBkZWJ1ZygndGVzdCBhIHN0eWxlIGluIGEgc2hhZG93IHN1YnRyZWUgaXMgYXBwbGllZCB0byBh
IG5vZGUgaW4gaXRzIGRlc2NlbmRhbnQgc2hhZG93IHN1YnRyZWUgd2hlbiBhbGwgYXBwbHktYXV0
aG9yLXN0eWxlcyBpbiBzaGFkb3cgc3VidHJlZXMgYmV0d2VlbiB0aGUgc2hhZG93IHN1YnRyZWUg
YW5kIHRoZSBkZXNjZW5kYW50IGFyZSB0cnVlLicpOworCisgICAgdmFyIGRpdiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRpdi5pbm5lckhUTUwgPSAnPHN0eWxlIHNjb3Bl
ZD5kaXYgeyBib3JkZXI6IDFweCBzb2xpZCByZWQgfTwvc3R5bGU+PGRpdiBpZD0iaG9zdCI+PC9k
aXY+JzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CisKKyAgICB2YXIgb3V0
ZXJNb3N0U2hhZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImhvc3QiKSk7CisgICAgb3V0ZXJNb3N0U2hhZG93LmlubmVySFRNTCA9ICc8c3R5bGU+ZGl2
IHsgYm9yZGVyOiAxcHggc29saWQgYmx1ZTsgfTwvc3R5bGU+PGRpdiBpZD0ib3V0ZXJNb3N0Ij5v
dXRlck1vc3Q8L2Rpdj4nOworICAgIG91dGVyTW9zdFNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9
IGZhbHNlOworCisgICAgdmFyIG91dGVyU2hhZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qob3V0
ZXJNb3N0U2hhZG93LmdldEVsZW1lbnRCeUlkKCJvdXRlck1vc3QiKSk7CisgICAgb3V0ZXJTaGFk
b3cuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Im91dGVyIj5vdXRlcjwvZGl2Pic7CisgICAgb3V0ZXJT
aGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKworICAgIHZhciBzaGFkb3cgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChvdXRlclNoYWRvdy5nZXRFbGVtZW50QnlJZCgib3V0ZXIiKSk7Cisg
ICAgc2hhZG93LmlubmVySFRNTCA9ICc8ZGl2IGlkPSJ0YXJnZXQiPnRhcmdldDwvZGl2Pic7Cisg
ICAgc2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisKKyAgICAvLyBObyBzdHlsZXMg
c2hvdWxkIGJlIGFwcGxpZWQuCisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93LmdldEVsZW1l
bnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVl
OworICAgIC8vIEEgc3R5bGUgaW4gZG9jdW1lbnQgc2hvdWxkIGJlIGFwcGxpZWQuCisgICAgZHVt
cENvbXB1dGVkU3R5bGUoc2hhZG93LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSk7CisKKyAgICBv
dXRlclNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IHRydWUKKyAgICAvLyBBIHN0eWxlIGluICdv
dXRlck1vc3QnIHNoYWRvdyBzaG91bGQgYmUgYXBwbGllZC4KKyAgICBkdW1wQ29tcHV0ZWRTdHls
ZShzaGFkb3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIGRvY3VtZW50LmJvZHku
cmVtb3ZlQ2hpbGQoZGl2KTsgICAKK30KKworZnVuY3Rpb24gdGVzdE11bHRpcGxlU2hhZG93KCkK
K3sKKyAgICBkZWJ1ZygndGVzdCBhIHN0eWxlIGluIGRvY3VtZW50IGlzIGFwcGxpZWQgdG8gbm9k
ZXMgaW4gbXVsdGlwbGUgc2hhZG93IHN1YnRyZWVzIHdoZW4gYXBwbHktYXV0aG9yLXN0eWxlcyBp
cyB0cnVlLicpOworCisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIGRpdi5pbm5lckhUTUwgPSAnPHN0eWxlIHNjb3BlZD5kaXYgeyBib3JkZXI6IDFweCBz
b2xpZCByZWQgfTwvc3R5bGU+PGRpdj50ZXN0PC9kaXY+JzsKKyAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGRpdik7CisKKyAgICB2YXIgb2xkZXN0U2hhZG93ID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3QoZGl2KTsKKyAgICBvbGRlc3RTaGFkb3cuaW5uZXJIVE1MID0gJzxzaGFkb3c+PC9zaGFk
b3c+PGRpdiBpZD0ib2xkZXN0U2hhZG93Ij5vbGRlc3RTaGFkb3c8L2Rpdj4nOworICAgIG9sZGVz
dFNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IGZhbHNlOworCisgICAgdmFyIG9sZGVyU2hhZG93
ID0gIG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7CisgICAgb2xkZXJTaGFkb3cuaW5uZXJIVE1M
ID0gJzxzdHlsZSBzY29wZWQ+ZGl2IHsgYm9yZGVyOiAxcHggc29saWQgYmx1ZSB9PC9zdHlsZT48
c2hhZG93Pjwvc2hhZG93PjxkaXYgaWQ9Im9sZGVyU2hhZG93Ij5vbGRlclNoYWRvdzwvZGl2Pic7
CisgICAgb2xkZXJTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSBmYWxzZTsKKworICAgIHZhciBz
aGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpOworICAgIHNoYWRvdy5pbm5lckhUTUwg
PSAnPHNoYWRvdz48L3NoYWRvdz48ZGl2IGlkPSJ0YXJnZXQiPnNoYWRvdzwvZGl2Pic7CisgICAg
c2hhZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gZmFsc2U7CisKKyAgICAvLyBiZWZvcmUKKyAgICBk
dW1wQ29tcHV0ZWRTdHlsZShvbGRlc3RTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm9sZGVzdFNoYWRv
dyIpKTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShvbGRlclNoYWRvdy5nZXRFbGVtZW50QnlJZCgi
b2xkZXJTaGFkb3ciKSk7CisgICAgZHVtcENvbXB1dGVkU3R5bGUoc2hhZG93LmdldEVsZW1lbnRC
eUlkKCJ0YXJnZXQiKSk7CisKKyAgICAvLyBkb2N1bWVudCAtLS0rLS0tIG9sZGVzdFNoYWRvdwor
ICAgIC8vICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICArLS0tIG9sZGVyU2hhZG93
CisgICAgLy8gICAgICAgICAgICAgfAorICAgIC8vICAgICAgICAgICAgICstLS0gc2hhZG93CisK
KyAgICAvLyBhcHBseS1hdXRob3Itc3R5bGVzIGFmZmVjdHMgYmV0d2VlbiBzaGFkb3cgYW5kIGRv
Y3VtZW50LgorICAgIHNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IHRydWU7CisgICAgZHVtcENv
bXB1dGVkU3R5bGUob2xkZXN0U2hhZG93LmdldEVsZW1lbnRCeUlkKCJvbGRlc3RTaGFkb3ciKSk7
CisgICAgZHVtcENvbXB1dGVkU3R5bGUob2xkZXJTaGFkb3cuZ2V0RWxlbWVudEJ5SWQoIm9sZGVy
U2hhZG93IikpOworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50QnlJZCgi
dGFyZ2V0IikpOworCisgICAgLy8gYXBwbHktYXV0aG9yLXN0eWxlcyBhZmZlY3RzIGJldHdlZW4g
b2xkZXIgc2hhZG93IGFuZCBkb2N1bWVudC4KKyAgICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMg
PSBmYWxzZTsKKyAgICBvbGRlclNoYWRvdy5hcHBseUF1dGhvclN0eWxlcyA9IHRydWU7CisgICAg
ZHVtcENvbXB1dGVkU3R5bGUob2xkZXN0U2hhZG93LmdldEVsZW1lbnRCeUlkKCJvbGRlc3RTaGFk
b3ciKSk7CisgICAgZHVtcENvbXB1dGVkU3R5bGUob2xkZXJTaGFkb3cuZ2V0RWxlbWVudEJ5SWQo
Im9sZGVyU2hhZG93IikpOworICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRvdy5nZXRFbGVtZW50
QnlJZCgidGFyZ2V0IikpOworCisgICAgLy8gYXBwbHktYXV0aG9yLXN0eWxlcyBhZmZlY3RzIGJl
dHdlZW4gb2xkZXN0IHNoYWRvdyBhbmQgZG9jdW1lbnQuCisgICAgb2xkZXJTaGFkb3cuYXBwbHlB
dXRob3JTdHlsZXMgPSBmYWxzZTsKKyAgICBvbGRlc3RTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMg
PSB0cnVlOworICAgIGR1bXBDb21wdXRlZFN0eWxlKG9sZGVzdFNoYWRvdy5nZXRFbGVtZW50QnlJ
ZCgib2xkZXN0U2hhZG93IikpOworICAgIGR1bXBDb21wdXRlZFN0eWxlKG9sZGVyU2hhZG93Lmdl
dEVsZW1lbnRCeUlkKCJvbGRlclNoYWRvdyIpKTsKKyAgICBkdW1wQ29tcHV0ZWRTdHlsZShzaGFk
b3cuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpKTsKKworICAgIGRvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQoZGl2KTsKK30KKworZnVuY3Rpb24gdGVzdE9yZGVyT2ZBcHBseVN0eWxlKCkKK3sKKyAg
ICBkZWJ1ZygndGVzdCBhIHN0eWxlIGlzIGFwcGxpZWQgaW4gZG9jdW1lbnQgb3JkZXIuJyk7CisK
KyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZGl2Lmlu
bmVySFRNTCA9ICc8c3R5bGUgc2NvcGVkPmRpdiB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZCB9PC9z
dHlsZT48ZGl2IGlkPSJob3N0Ij48L2Rpdj4nOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoZGl2KTsKKworICAgIHZhciBvdXRlck1vc3RTaGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9v
dChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaG9zdCIpKTsKKyAgICBvdXRlck1vc3RTaGFkb3cu
aW5uZXJIVE1MID0gJzxzdHlsZT5kaXYgeyBib3JkZXI6IDFweCBzb2xpZCBibHVlOyB9PC9zdHls
ZT48ZGl2IGlkPSJvdXRlck1vc3QiPm91dGVyTW9zdDwvZGl2Pic7CisgICAgb3V0ZXJNb3N0U2hh
ZG93LmFwcGx5QXV0aG9yU3R5bGVzID0gdHJ1ZTsKKworICAgIHZhciBvdXRlclNoYWRvdyA9IG5l
dyBXZWJLaXRTaGFkb3dSb290KG91dGVyTW9zdFNoYWRvdy5nZXRFbGVtZW50QnlJZCgib3V0ZXJN
b3N0IikpOworICAgIG91dGVyU2hhZG93LmlubmVySFRNTCA9ICc8c3R5bGU+ZGl2IHsgYm9yZGVy
OiAxcHggc29saWQgZ3JlZW47IH08L3N0eWxlPjxkaXYgaWQ9Im91dGVyIj5vdXRlcjwvZGl2Pic7
CisgICAgb3V0ZXJTaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlOworCisgICAgdmFyIHNo
YWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KG91dGVyU2hhZG93LmdldEVsZW1lbnRCeUlkKCJv
dXRlciIpKTsKKyAgICBzaGFkb3cuaW5uZXJIVE1MID0gJzxzdHlsZT5kaXYgeyBib3JkZXI6IDFw
eCBzb2xpZCB5ZWxsb3c7IH08L3N0eWxlPjxkaXYgaWQ9InRhcmdldCI+dGFyZ2V0PC9kaXY+JzsK
KyAgICBzaGFkb3cuYXBwbHlBdXRob3JTdHlsZXMgPSB0cnVlOworCisgICAgLy8gVGhlIGxhc3Qg
c2NvcGVkIHN0eWxlIHNob3VsZCBiZSBhcHBsaWVkLgorICAgIGR1bXBDb21wdXRlZFN0eWxlKHNo
YWRvdy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworCisgICAgc2hhZG93LmlubmVySFRNTCA9
ICc8ZGl2IGlkPSJ0YXJnZXQiPnRhcmdldDwvZGl2Pic7CisgICAgLy8gVGhlIG91dGVyJ3Mgc2Nv
cGVkIHN0eWxlIHNob3VsZCBiZSBhcHBsaWVkLgorICAgIGR1bXBDb21wdXRlZFN0eWxlKHNoYWRv
dy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworCisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVD
aGlsZChkaXYpOyAgIAorfQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKyAgICB0ZXN0QmFzaWMo
KTsKKyAgICB0ZXN0RW5jbG9zaW5nU2hhZG93KCk7CisgICAgdGVzdEVuY2xvc2luZ1NoYWRvd1dp
dGhTY29wZWQoKTsKKyAgICB0ZXN0TmVzdGVkU2hhZG93KCk7CisgICAgdGVzdE11bHRpcGxlU2hh
ZG93KCk7CisgICAgdGVzdE9yZGVyT2ZBcHBseVN0eWxlKCk7Cit9CisKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0cygpIj4KKyAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>