<?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>110612</bug_id>
          
          <creation_ts>2013-02-22 08:20:43 -0800</creation_ts>
          <short_desc>Enumerating an HTMLCollection needs to enumerate the named properties</short_desc>
          <delta_ts>2016-04-11 01:10:46 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Boris Zbarsky">bzbarsky</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>annevk</cc>
    
    <cc>ap</cc>
    
    <cc>arko</cc>
    
    <cc>arv</cc>
    
    <cc>barraclough</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>839587</commentid>
    <comment_count>0</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2013-02-22 08:20:43 -0800</bug_when>
    <thetext>Consider this testcase:

&lt;!DOCTYPE html&gt;
&lt;form id=&quot;x&quot;&gt;
&lt;script&gt;
for (var x in document.forms)
  document.writeln(x);
&lt;/script&gt;

EXPECTED RESULTS: &quot;0 x item namedItem length&quot; in some order

ACTUAL RESULTS: &quot;0 length item namedItem&quot;

Note the missing &apos;x&apos;.

Gecko and Presto get this right.  Trident in IE9 enumerates the &apos;x&apos; but not the &apos;0&apos;, as far as I can tell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840292</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-22 21:31:46 -0800</bug_when>
    <thetext>Confirmed on WebKit nightly and released version of Chrome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840294</commentid>
    <comment_count>2</comment_count>
      <attachid>189905</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-22 21:37:03 -0800</bug_when>
    <thetext>Created attachment 189905
Test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844628</commentid>
    <comment_count>3</comment_count>
      <attachid>190847</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2013-02-28 16:50:01 -0800</bug_when>
    <thetext>Created attachment 190847
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844635</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-02-28 17:06:47 -0800</bug_when>
    <thetext>Is this specified in WebIDL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844638</commentid>
    <comment_count>5</comment_count>
      <attachid>190847</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-28 17:10:54 -0800</bug_when>
    <thetext>Comment on attachment 190847
proposed patch

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

&gt; Source/WebCore/bindings/js/JSHTMLCollectionCustom.cpp:104
&gt; +    Vector&lt;String&gt; propertyNameStrings;
&gt; +    for (unsigned index = 0; index &lt; collection-&gt;length(); ++index) {
&gt; +        String attributeValue = toElement(collection-&gt;item(index))-&gt;getAttribute(HTMLNames::nameAttr);
&gt; +        if (!attributeValue.isEmpty() &amp;&amp; !propertyNameStrings.contains(attributeValue))
&gt; +            propertyNameStrings.append(attributeValue);
&gt; +
&gt; +        attributeValue = toElement(collection-&gt;item(index))-&gt;getIdAttribute();
&gt; +        if (!attributeValue.isEmpty() &amp;&amp; !propertyNameStrings.contains(attributeValue))
&gt; +            propertyNameStrings.append(attributeValue);
&gt; +    }

We shouldn&apos;t be iterating through nodes like this if we already have a cache (m_idCache and m_nameCache).
If needed, we should modify the cache structure of HTMLCollection to satisfy this use case.

&gt; LayoutTests/fast/dom/htmlcollection-enumeration.html:25
&gt; +shouldBeTrue(&quot;&apos;0&apos; in document.forms&quot;);
&gt; +shouldBeTrue(&quot;&apos;1&apos; in document.forms&quot;);
&gt; +shouldBeTrue(&quot;&apos;2&apos; in document.forms&quot;);
&gt; +shouldBeTrue(&quot;&apos;name1&apos; in document.forms&quot;);
&gt; +shouldBeTrue(&quot;&apos;id1&apos; in document.forms&quot;);
&gt; +shouldBeTrue(&quot;&apos;id2&apos; in document.forms&quot;);
&gt; +shouldBeTrue(&quot;&apos;name2&apos; in document.forms&quot;);
&gt; +shouldBeTrue(&quot;&apos;id3&apos; in document.forms&quot;);
&gt; +shouldBeTrue(&quot;&apos;id4&apos; in document.forms&quot;);
&gt; +shouldBeTrue(&quot;&apos;length&apos; in document.forms&quot;);
&gt; +shouldBeTrue(&quot;&apos;item&apos; in document.forms&quot;);
&gt; +shouldBeTrue(&quot;&apos;namedItem&apos; in document.forms&quot;);

Please make sure to test other subclasses of HTMLCollection like HTMLAllCollection, HTMLPropertiesCollection, etc...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844663</commentid>
    <comment_count>6</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2013-02-28 17:42:16 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Is this specified in WebIDL?

http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-75708506
namedItem() method retrieves a Node using a name. it first searches for a Node with a matching id attribute. If it doesn&apos;t find one, it then searches for a Node with a matching name attribute. We need to enumerate through the named properties for id and name attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844666</commentid>
    <comment_count>7</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2013-02-28 17:43:53 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; We shouldn&apos;t be iterating through nodes like this if we already have a cache (m_idCache and m_nameCache).
&gt; If needed, we should modify the cache structure of HTMLCollection to satisfy this use case.
&gt; 

Will do.

&gt; Please make sure to test other subclasses of HTMLCollection like HTMLAllCollection, HTMLPropertiesCollection, etc...

This patch only fixes HTMLCollection&apos;s enumeration. To fix other subclasses of HTMLCollection we need to use CustomGetPropertyNames and change their bindings respectively too.
One approach of this problem may be add a new idl attribute and use it to respective subclass to generate common code automatically. It will allow us to generate common code for all classes and no need to write custom binding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844700</commentid>
    <comment_count>8</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2013-02-28 18:23:37 -0800</bug_when>
    <thetext>&gt; Is this specified in WebIDL?

Yes.  See http://dev.w3.org/2006/webapi/WebIDL/#property-enumeration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845669</commentid>
    <comment_count>9</comment_count>
      <attachid>191082</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2013-03-01 17:32:41 -0800</bug_when>
    <thetext>Created attachment 191082
Patch

Incorporated review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845671</commentid>
    <comment_count>10</comment_count>
      <attachid>191082</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-01 17:37:18 -0800</bug_when>
    <thetext>Comment on attachment 191082
Patch

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

The patch looks much better. I&apos;ll wait &apos;til JSC/V8 binding experts can comment on this patch.

&gt; Source/WebCore/html/HTMLCollection.cpp:734
&gt; +        if (!propertyNameStrings.contains(attributeValue))

m_nameCache is a hash map, right? Why do we need to check contains?

&gt; Source/WebCore/html/HTMLCollection.cpp:739
&gt; +        if (!propertyNameStrings.contains(attributeValue))

Ditto.

&gt; Source/WebCore/html/HTMLCollection.h:70
&gt; +    void getPropertyNames(Vector&lt;String&gt;&amp; propertyNameStrings);

Should we make this virtual?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845672</commentid>
    <comment_count>11</comment_count>
      <attachid>191082</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-01 17:37:20 -0800</bug_when>
    <thetext>Comment on attachment 191082
Patch

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

The patch looks much better. I&apos;ll wait &apos;til JSC/V8 binding experts can comment on this patch.

&gt; Source/WebCore/html/HTMLCollection.cpp:734
&gt; +        if (!propertyNameStrings.contains(attributeValue))

m_nameCache is a hash map, right? Why do we need to check contains?

&gt; Source/WebCore/html/HTMLCollection.cpp:739
&gt; +        if (!propertyNameStrings.contains(attributeValue))

Ditto.

&gt; Source/WebCore/html/HTMLCollection.h:70
&gt; +    void getPropertyNames(Vector&lt;String&gt;&amp; propertyNameStrings);

Should we make this virtual?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845681</commentid>
    <comment_count>12</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2013-03-01 17:57:56 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; Source/WebCore/html/HTMLCollection.cpp:734
&gt; &gt; +        if (!propertyNameStrings.contains(attributeValue))
&gt; 
&gt; m_nameCache is a hash map, right? Why do we need to check contains?
&gt; 

Yes you are right, this check is not required. Will remove the check.

&gt; &gt; Source/WebCore/html/HTMLCollection.h:70
&gt; &gt; +    void getPropertyNames(Vector&lt;String&gt;&amp; propertyNameStrings);
&gt; 
&gt; Should we make this virtual?

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845729</commentid>
    <comment_count>13</comment_count>
      <attachid>191095</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2013-03-01 21:28:07 -0800</bug_when>
    <thetext>Created attachment 191095
patch1

Incorporated review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846647</commentid>
    <comment_count>14</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2013-03-04 11:05:05 -0800</bug_when>
    <thetext>Hi haraken,
can you please review the patch once. I have made changes in CodeGenerator so that it can generate namedPropertyEnumerator code automatically for HTMLCollection interface and its subclasses.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846941</commentid>
    <comment_count>15</comment_count>
      <attachid>191095</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-04 15:40:50 -0800</bug_when>
    <thetext>Comment on attachment 191095
patch1

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

Almost LGTM.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2223
&gt; +        if ($interfaceName =~ /^HTML\w*Collection$/) {

We don&apos;t want to hard-code interface names in an ad-hoc manner. Can&apos;t you use CodeGenerator::InheritsInterface($interface, &quot;HTMLCollection&quot;)?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2626
&gt; +    if ($interfaceName =~ /^HTML\w*Collection$/) {

Ditto.

&gt; Source/WebCore/html/HTMLCollection.cpp:734
&gt; +    for (NodeCacheMap::iterator it = m_nameCache.begin(); it != m_nameCache.end(); ++it)
&gt; +        propertyNameStrings.append(it-&gt;key);
&gt; +    for (NodeCacheMap::iterator it = m_idCache.begin(); it != m_idCache.end(); ++it)
&gt; +        propertyNameStrings.append(it-&gt;key);

Just to confirm: This order does not matter, right? i.e. The spec does not specify the order of enumeration, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847000</commentid>
    <comment_count>16</comment_count>
      <attachid>191344</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2013-03-04 16:34:33 -0800</bug_when>
    <thetext>Created attachment 191344
Patch3

Incorporated review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847004</commentid>
    <comment_count>17</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2013-03-04 16:36:32 -0800</bug_when>
    <thetext>(In reply to comment #15)

&gt; We don&apos;t want to hard-code interface names in an ad-hoc manner. Can&apos;t you use CodeGenerator::InheritsInterface($interface, &quot;HTMLCollection&quot;)?
&gt; 

Done.

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2626
&gt; &gt; +    if ($interfaceName =~ /^HTML\w*Collection$/) {
&gt; 
&gt; Ditto.

Done.

&gt; &gt; Source/WebCore/html/HTMLCollection.cpp:734
&gt; &gt; +    for (NodeCacheMap::iterator it = m_nameCache.begin(); it != m_nameCache.end(); ++it)
&gt; &gt; +        propertyNameStrings.append(it-&gt;key);
&gt; &gt; +    for (NodeCacheMap::iterator it = m_idCache.begin(); it != m_idCache.end(); ++it)
&gt; &gt; +        propertyNameStrings.append(it-&gt;key);
&gt; 
&gt; Just to confirm: This order does not matter, right? i.e. The spec does not specify the order of enumeration, right?

Yes you are right, the spec doesn&apos;t specify the order of enumeration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847016</commentid>
    <comment_count>18</comment_count>
      <attachid>191344</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-04 16:43:34 -0800</bug_when>
    <thetext>Comment on attachment 191344
Patch3

Looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847152</commentid>
    <comment_count>19</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2013-03-04 18:18:51 -0800</bug_when>
    <thetext>The spec does in fact specify the order of enumeration.

The relevant spec bits are http://dom.spec.whatwg.org/#interface-htmlcollection where it defines the &quot;supported property names&quot; (note that the definition is of an ordered set) and http://dev.w3.org/2006/webapi/WebIDL/#property-enumeration which defines that &quot;supported property names&quot; are enumerated in the order given in their definition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847153</commentid>
    <comment_count>20</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2013-03-04 18:20:18 -0800</bug_when>
    <thetext>And also, you probably want to watch out for cases when the collection contains an element with some id=&quot;x&quot; and another element with a name=&quot;x&quot;.  Not sure what the attached patch ends up doing for those, but it should of course only enumerate &quot;x&quot; once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979867</commentid>
    <comment_count>21</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2014-02-12 07:55:49 -0800</bug_when>
    <thetext>Note, I just changed http://dom.spec.whatwg.org/ around here. Named properties on HTMLCollection enumerate no longer. getOwnPropertyNames still gets them of course.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182627</commentid>
    <comment_count>22</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-04-11 01:08:44 -0700</bug_when>
    <thetext>This is still broken on Safari Technology Preview :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182628</commentid>
    <comment_count>23</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-04-11 01:10:46 -0700</bug_when>
    <thetext>Actually, this works as expected since
Object.getOwnPropertyNames(document.forms) returns [0, x].

In fact, our behavior matches that of Gecko.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>189905</attachid>
            <date>2013-02-22 21:37:03 -0800</date>
            <delta_ts>2013-02-22 21:37:03 -0800</delta_ts>
            <desc>Test</desc>
            <filename>bug110612.html</filename>
            <type>text/html</type>
            <size>241</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8Zm9ybSBpZD0ic29tZUlkIj48L2Zvcm0+CjxkaXYgaWQ9
InJlc3VsdCI+RkFJTDwvZGl2Pgo8c2NyaXB0PgoKZm9yICh2YXIgaXRlbSBpbiBkb2N1bWVudC5m
b3JtcykgewogICAgaWYgKGl0ZW0gPT0gJ3NvbWVJZCcpCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Jlc3VsdCcpLnRleHRDb250ZW50ID0gJ1BBU1MnOwp9Cgo8L3NjcmlwdD4KPC9i
b2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190847</attachid>
            <date>2013-02-28 16:50:01 -0800</date>
            <delta_ts>2013-03-01 17:32:41 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>bug-110612-02282013164420.diff</filename>
            <type>text/plain</type>
            <size>8993</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NDM5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEzLTAyLTI4ICBBcmtvIFNh
aGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBFbnVtZXJhdGluZyBhbiBIVE1MQ29s
bGVjdGlvbiBuZWVkcyB0byBlbnVtZXJhdGUgdGhlIG5hbWVkIHByb3BlcnRpZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDYxMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIEN1c3RvbUdldFBy
b3BlcnR5TmFtZXMgaW4gSFRNTENvbGxlY3Rpb24gaW50ZXJmYWNlIHRvIHVzZSBhCisgICAgICAg
IGN1c3RvbSBwcm9wZXJ0eSBlbnVtZXJhdG9yLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2h0
bWxjb2xsZWN0aW9uLWVudW1lcmF0aW9uLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ29sbGVj
dGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MQ29s
bGVjdGlvbjo6bmFtZWRQcm9wZXJ0eVF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTENv
bGxlY3Rpb246Om5hbWVkUHJvcGVydHlFbnVtZXJhdG9yKToKKyAgICAgICAgKiBodG1sL0hUTUxD
b2xsZWN0aW9uLmlkbDoKKwogMjAxMy0wMi0yOCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzIGhldXJpc3RpYyBzaG91bGQg
ZW5zdXJlIHRoZXJlIGlzIHNvbWUgY292ZXJhZ2UgaW4gdGhlIApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJl
dmlzaW9uIDE0NDM5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxl
Y3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNIVE1MQ29sbGVjdGlvbi5oIgogCisjaW5jbHVkZSAi
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxBbGxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRN
TENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgpA
QCAtODQsNCArODUsMjkgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9i
YQogICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCBIVE1M
Q29sbGVjdGlvbiwgY29sbGVjdGlvbik7CiB9CiAKK3ZvaWQgSlNIVE1MQ29sbGVjdGlvbjo6Z2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3sKKyAg
ICBKU0hUTUxDb2xsZWN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTSFRNTENvbGxlY3Rpb24q
PihvYmplY3QpOworICAgIEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uID0gdGhpc09iamVjdC0+
aW1wbCgpOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGNvbGxlY3Rpb24t
Pmxlbmd0aCgpOyArK2luZGV4KQorICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVy
Ojpmcm9tKGV4ZWMsIGluZGV4KSk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBwcm9wZXJ0eU5hbWVT
dHJpbmdzOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IGNvbGxlY3Rpb24t
Pmxlbmd0aCgpOyArK2luZGV4KSB7CisgICAgICAgIFN0cmluZyBhdHRyaWJ1dGVWYWx1ZSA9IHRv
RWxlbWVudChjb2xsZWN0aW9uLT5pdGVtKGluZGV4KSktPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6
Om5hbWVBdHRyKTsKKyAgICAgICAgaWYgKCFhdHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkgJiYgIXBy
b3BlcnR5TmFtZVN0cmluZ3MuY29udGFpbnMoYXR0cmlidXRlVmFsdWUpKQorICAgICAgICAgICAg
cHJvcGVydHlOYW1lU3RyaW5ncy5hcHBlbmQoYXR0cmlidXRlVmFsdWUpOworCisgICAgICAgIGF0
dHJpYnV0ZVZhbHVlID0gdG9FbGVtZW50KGNvbGxlY3Rpb24tPml0ZW0oaW5kZXgpKS0+Z2V0SWRB
dHRyaWJ1dGUoKTsKKyAgICAgICAgaWYgKCFhdHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkgJiYgIXBy
b3BlcnR5TmFtZVN0cmluZ3MuY29udGFpbnMoYXR0cmlidXRlVmFsdWUpKQorICAgICAgICAgICAg
cHJvcGVydHlOYW1lU3RyaW5ncy5hcHBlbmQoYXR0cmlidXRlVmFsdWUpOworICAgIH0KKworICAg
IGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHByb3BlcnR5TmFtZVN0cmluZ3Muc2l6
ZSgpOyArK2luZGV4KQorICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVyKGV4ZWMs
IHByb3BlcnR5TmFtZVN0cmluZ3NbaW5kZXhdLmltcGwoKSkpOworCisgICAgQmFzZTo6Z2V0T3du
UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKK30K
KworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3Bw
CShyZXZpc2lvbiAxNDQzOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJWOEhUTUxDb2xsZWN0aW9uLmgiCiAK
KyNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNs
dWRlICJIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5vZGVM
aXN0LmgiCkBAIC04NSw0ICs4NiwzMCBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoSFRN
TENvbGxlY3RpCiAgICAgcmV0dXJuIFY4SFRNTENvbGxlY3Rpb246OmNyZWF0ZVdyYXBwZXIoaW1w
bCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAordjg6OkhhbmRsZTx2ODo6SW50ZWdl
cj4gVjhIVE1MQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eVF1ZXJ5KHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiB2
OEludGVnZXIoMCwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCit2ODo6SGFuZGxlPHY4OjpBcnJh
eT4gVjhIVE1MQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUVudW1lcmF0b3IoY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IFY4
SFRNTENvbGxlY3Rpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFZlY3RvcjxTdHJp
bmc+IHByb3BlcnR5TmFtZVN0cmluZ3M7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGlu
ZGV4IDwgY29sbGVjdGlvbi0+bGVuZ3RoKCkgOyArK2luZGV4KSB7CisgICAgICAgIFN0cmluZyBh
dHRyaWJ1dGVWYWx1ZSA9IHRvRWxlbWVudChjb2xsZWN0aW9uLT5pdGVtKGluZGV4KSktPmdldEF0
dHJpYnV0ZShIVE1MTmFtZXM6Om5hbWVBdHRyKTsKKyAgICAgICAgaWYgKCFhdHRyaWJ1dGVWYWx1
ZS5pc0VtcHR5KCkgJiYgIXByb3BlcnR5TmFtZVN0cmluZ3MuY29udGFpbnMoYXR0cmlidXRlVmFs
dWUpKQorICAgICAgICAgICAgcHJvcGVydHlOYW1lU3RyaW5ncy5hcHBlbmQoYXR0cmlidXRlVmFs
dWUpOworCisgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gdG9FbGVtZW50KGNvbGxlY3Rpb24tPml0
ZW0oaW5kZXgpKS0+Z2V0SWRBdHRyaWJ1dGUoKTsKKyAgICAgICAgaWYgKCFhdHRyaWJ1dGVWYWx1
ZS5pc0VtcHR5KCkgJiYgIXByb3BlcnR5TmFtZVN0cmluZ3MuY29udGFpbnMoYXR0cmlidXRlVmFs
dWUpKQorICAgICAgICAgICAgcHJvcGVydHlOYW1lU3RyaW5ncy5hcHBlbmQoYXR0cmlidXRlVmFs
dWUpOworICAgIH0KKworICAgIHY4OjpIYW5kbGU8djg6OkFycmF5PiBwcm9wZXJ0eU5hbWVzID0g
djg6OkFycmF5OjpOZXcocHJvcGVydHlOYW1lU3RyaW5ncy5zaXplKCkpOworICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHByb3BlcnR5TmFtZVN0cmluZ3Muc2l6ZSgpOyArK2lu
ZGV4KQorICAgICAgICBwcm9wZXJ0eU5hbWVzLT5TZXQodjhJbnRlZ2VyKGluZGV4LCBpbmZvLkdl
dElzb2xhdGUoKSksIHY4U3RyaW5nKHByb3BlcnR5TmFtZVN0cmluZ3NbaW5kZXhdLCBpbmZvLkdl
dElzb2xhdGUoKSkpOworCisgICAgcmV0dXJuIHByb3BlcnR5TmFtZXM7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24u
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaWRs
CShyZXZpc2lvbiAxNDQzOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9u
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsOCBAQAogICAgIEdlbmVyYXRlSXNSZWFj
aGFibGU9SW1wbE93bmVyTm9kZVJvb3QsCiAgICAgVjhEZXBlbmRlbnRMaWZldGltZSwKICAgICBP
YmpDUG9seW1vcnBoaWMsCi0gICAgVjhTa2lwVlRhYmxlVmFsaWRhdGlvbgorICAgIFY4U2tpcFZU
YWJsZVZhbGlkYXRpb24sCisgICAgQ3VzdG9tRW51bWVyYXRlUHJvcGVydHkKIF0gaW50ZXJmYWNl
IEhUTUxDb2xsZWN0aW9uIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBs
ZW5ndGg7CiAgICAgTm9kZSBpdGVtKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIHVu
c2lnbmVkIGxvbmcgaW5kZXgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ0Mzk1KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDIt
MjggIEFya28gU2FoYSAgPGFya29AbW90b3JvbGEuY29tPgorCisgICAgICAgIEVudW1lcmF0aW5n
IGFuIEhUTUxDb2xsZWN0aW9uIG5lZWRzIHRvIGVudW1lcmF0ZSB0aGUgbmFtZWQgcHJvcGVydGll
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNjEy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0
L2RvbS9odG1sY29sbGVjdGlvbi1lbnVtZXJhdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLWVudW1lcmF0aW9uLmh0bWw6IEFkZGVkLgor
CiAyMDEzLTAyLTI4ICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcuIFNraXAgc3RvcmFnZSB0ZXN0cyBvbiBXaW5kb3dzLgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tZW51bWVyYXRpb24tZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWxjb2xsZWN0
aW9uLWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IEhUTUxDb2xs
ZWN0aW9uIGVudW1lcmF0ZXMgdGhlIG5hbWVkIHByb3BlcnRpZXMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTICcwJyBpbiBkb2N1bWVudC5mb3JtcyBpcyB0cnVlCitQQVNT
ICcxJyBpbiBkb2N1bWVudC5mb3JtcyBpcyB0cnVlCitQQVNTICcyJyBpbiBkb2N1bWVudC5mb3Jt
cyBpcyB0cnVlCitQQVNTICduYW1lMScgaW4gZG9jdW1lbnQuZm9ybXMgaXMgdHJ1ZQorUEFTUyAn
aWQxJyBpbiBkb2N1bWVudC5mb3JtcyBpcyB0cnVlCitQQVNTICdpZDInIGluIGRvY3VtZW50LmZv
cm1zIGlzIHRydWUKK1BBU1MgJ25hbWUyJyBpbiBkb2N1bWVudC5mb3JtcyBpcyB0cnVlCitQQVNT
ICdpZDMnIGluIGRvY3VtZW50LmZvcm1zIGlzIHRydWUKK1BBU1MgJ2lkNCcgaW4gZG9jdW1lbnQu
Zm9ybXMgaXMgdHJ1ZQorUEFTUyAnbGVuZ3RoJyBpbiBkb2N1bWVudC5mb3JtcyBpcyB0cnVlCitQ
QVNTICdpdGVtJyBpbiBkb2N1bWVudC5mb3JtcyBpcyB0cnVlCitQQVNTICduYW1lZEl0ZW0nIGlu
IGRvY3VtZW50LmZvcm1zIGlzIHRydWUKKworQ2hlY2sgZm9yIGNvcnJlY3QgZW51bWVyYXRlZCBu
YW1lZCBwcm9wZXJ0aWVzLgorUEFTUyBDb3JyZWN0IGVudW1lcmF0ZWQgbmFtZWQgcHJvcGVydGll
cy4KKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLWVudW1lcmF0aW9uLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tZW51
bWVyYXRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWxj
b2xsZWN0aW9uLWVudW1lcmF0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxmb3Jt
IGlkPSJpZDEiIG5hbWU9Im5hbWUxIj48L2Zvcm0+Cis8Zm9ybSBpZD0iaWQyIiBuYW1lPSJuYW1l
MSI+PC9mb3JtPgorPGZvcm0gaWQ9ImlkMyIgbmFtZT0ibmFtZTIiPjwvZm9ybT4KKzxmb3JtIGlk
PSJpZDQiIG5hbWU9ImlkMSI+PC9mb3JtPgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRl
c3QgZW5zdXJlcyB0aGF0ICBIVE1MQ29sbGVjdGlvbiBlbnVtZXJhdGVzIHRoZSBuYW1lZCBwcm9w
ZXJ0aWVzLiIpOworCitzaG91bGRCZVRydWUoIicwJyBpbiBkb2N1bWVudC5mb3JtcyIpOworc2hv
dWxkQmVUcnVlKCInMScgaW4gZG9jdW1lbnQuZm9ybXMiKTsKK3Nob3VsZEJlVHJ1ZSgiJzInIGlu
IGRvY3VtZW50LmZvcm1zIik7CitzaG91bGRCZVRydWUoIiduYW1lMScgaW4gZG9jdW1lbnQuZm9y
bXMiKTsKK3Nob3VsZEJlVHJ1ZSgiJ2lkMScgaW4gZG9jdW1lbnQuZm9ybXMiKTsKK3Nob3VsZEJl
VHJ1ZSgiJ2lkMicgaW4gZG9jdW1lbnQuZm9ybXMiKTsKK3Nob3VsZEJlVHJ1ZSgiJ25hbWUyJyBp
biBkb2N1bWVudC5mb3JtcyIpOworc2hvdWxkQmVUcnVlKCInaWQzJyBpbiBkb2N1bWVudC5mb3Jt
cyIpOworc2hvdWxkQmVUcnVlKCInaWQ0JyBpbiBkb2N1bWVudC5mb3JtcyIpOworc2hvdWxkQmVU
cnVlKCInbGVuZ3RoJyBpbiBkb2N1bWVudC5mb3JtcyIpOworc2hvdWxkQmVUcnVlKCInaXRlbScg
aW4gZG9jdW1lbnQuZm9ybXMiKTsKK3Nob3VsZEJlVHJ1ZSgiJ25hbWVkSXRlbScgaW4gZG9jdW1l
bnQuZm9ybXMiKTsKKworZGVidWcoIiIpOworZGVidWcoIkNoZWNrIGZvciBjb3JyZWN0IGVudW1l
cmF0ZWQgbmFtZWQgcHJvcGVydGllcy4iKTsKK3ZhciBjb3VudCA9IDA7Cit2YXIgbmFtZXMgPSBb
Im5hbWUxIiwgImlkMSIsICJpZDIiLCAibmFtZTIiLCAiaWQzIiwgImlkNCJdOworZm9yICh2YXIg
cHJvcGVydHlOYW1lIGluIGRvY3VtZW50LmZvcm1zKSB7CisgICAgaWYgKCFjb3VudCAmJiBwcm9w
ZXJ0eU5hbWUgIT0gIm5hbWUxIikKKyAgICAgICAgY29udGludWU7CisKKyAgICBpZiAocHJvcGVy
dHlOYW1lICE9IG5hbWVzW2NvdW50XSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJJbnZhbGlkIG5h
bWVkIHByb3BlcnR5IC0tIEV4cGVjdGVkOiAiICsgbmFtZXNbY291bnRdICsgIiBidXQgZ290OiAi
ICsgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCsrY291
bnQgPT0gbmFtZXMubGVuZ3RoKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkNvcnJlY3QgZW51bWVy
YXRlZCBuYW1lZCBwcm9wZXJ0aWVzLiIpOworICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191082</attachid>
            <date>2013-03-01 17:32:41 -0800</date>
            <delta_ts>2013-03-01 21:28:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110612-03012013172720.diff</filename>
            <type>text/plain</type>
            <size>16994</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NDUyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAzLTAxICBBcmtvIFNh
aGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBFbnVtZXJhdGluZyBhbiBIVE1MQ29s
bGVjdGlvbiBuZWVkcyB0byBlbnVtZXJhdGUgdGhlIG5hbWVkIHByb3BlcnRpZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDYxMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hZGUgY2hhbmdlcyBpbiBD
b2RlR2VuZXJhdG9yIHRvIGdlbmVyYXRlIG5hbWVkUHJvcGVydHlFbnVtZXJhdG9yIGNvZGUKKyAg
ICAgICAgYXV0b21hdGljYWxseSBmb3IgSFRNTENvbGxlY3Rpb24gaW50ZXJmYWNlIGFuZCBpdHMg
c3ViY2xhc3Nlcy4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vTWljcm9EYXRhL2h0bWxwcm9w
ZXJ0aWVzY29sbGVjdGlvbi1lbnVtZXJhdGlvbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Rv
bS9odG1sY29sbGVjdGlvbi1lbnVtZXJhdGlvbi5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRp
b24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAg
ICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbk5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVj
dGlvbk5hbWVkUHJvcGVydHlFbnVtZXJhdG9yKToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpnZXRQcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmg6CisgICAgICAgIChIVE1MQ29s
bGVjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjpnZXRQcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKiBodG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5oOgorICAgICAg
ICAoSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uKToKKwogMjAxMy0wMy0wMSAgQmVhciBUcmF2aXMg
IDxiZXRyYXZpc0BhZG9iZS5jb20+CiAKICAgICAgICAgW2NzcyBleGNsdXNpb25zXSBNb3ZlIEV4
Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyBpbnRvIFJlbmRlckJsb2NrUmFyZURhdGEKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CShyZXZpc2lvbiAxNDQ1MjApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjIxOCw5ICsyMjE4LDE1IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XG4iKTsKICAg
ICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbmRleGVkR2V0dGVy
In0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik51bWVyaWNJbmRleGVkR2V0
dGVyIn0pIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDwke2ludGVyZmFjZU5hbWV9Kj4odGhpc09iamVjdC0+
aW1wbCgpKS0+bGVuZ3RoKCk7ICsraSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkp
O1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7XG5cbiIpOwogICAgICAgICB9Ci0g
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpO1xuIik7CisgICAgICAgIGlm
ICgkaW50ZXJmYWNlTmFtZSA9fiAvXkhUTUxcdypDb2xsZWN0aW9uJC8pIHsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFZlY3RvcjxTdHJpbmc+IHByb3BlcnR5TmFtZVN0cmlu
Z3M7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRpY19jYXN0
PCR7aW50ZXJmYWNlTmFtZX0qPih0aGlzT2JqZWN0LT5pbXBsKCkpLT5nZXRQcm9wZXJ0eU5hbWVz
KHByb3BlcnR5TmFtZVN0cmluZ3MpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lU3RyaW5ncy5zaXpl
KCk7ICsraSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHBy
b3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgcHJvcGVydHlOYW1lU3RyaW5nc1tpXS5p
bXBsKCkpKTtcblxuIik7CisgICAgICAgIH0KKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNpb24gMTQ0NTIwKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHdvcmtpbmcgY29weSkKQEAgLTI2MjMs
NyArMjYyMywxMiBAQCBFTkQKICAgICAjIElmIHRoZXJlIGlzIGEgY3VzdG9tIGVudW1lcmF0b3Is
IHRoZXJlIE1VU1QgYmUgY3VzdG9tIHF1ZXJ5IHRvIHByb3Blcmx5IGNvbW11bmljYXRlIHByb3Bl
cnR5IGF0dHJpYnV0ZXMuCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICRoYXNFbnVtZXJhdG9yID8g
IiR7djhJbnRlcmZhY2VOYW1lfTo6bmFtZWRQcm9wZXJ0eVF1ZXJ5LCAiIDogIjAsICIpOwogICAg
IHB1c2goQGltcGxDb250ZW50LCAkaGFzRGVsZXRlciA/ICIke3Y4SW50ZXJmYWNlTmFtZX06Om5h
bWVkUHJvcGVydHlEZWxldGVyLCAiIDogIjAsICIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAk
aGFzRW51bWVyYXRvciA/ICIke3Y4SW50ZXJmYWNlTmFtZX06Om5hbWVkUHJvcGVydHlFbnVtZXJh
dG9yIiA6ICIwIik7CisgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJIVE1MQ29sbGVjdGlvbiIg
fHwgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxBbGxDb2xsZWN0aW9uIiB8fCAkaW50ZXJmYWNlTmFt
ZSBlcSAiSFRNTEZvcm1Db250cm9sQ29sbGVjdGlvbiIgfHwgJGludGVyZmFjZU5hbWUgZXEgIkhU
TUxPcHRpb25zQ29sbGVjdGlvbiIgfHwgICRpbnRlcmZhY2VOYW1lIGVxICJIVE1MUHJvcGVydGll
c0NvbGxlY3Rpb24iKSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiY29sbGVjdGlvbk5h
bWVkUHJvcGVydHlFbnVtZXJhdG9yPCR7aW50ZXJmYWNlTmFtZX0+Iik7CisgICAgfQorICAgIGVs
c2UgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGhhc0VudW1lcmF0b3IgPyAiJHt2OElu
dGVyZmFjZU5hbWV9OjpuYW1lZFByb3BlcnR5RW51bWVyYXRvciIgOiAiMCIpOworICAgIH0KICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIik7XG4iKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDE0NDUyMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYs
NiArMTI2LDE4IEBAIHRlbXBsYXRlPGNsYXNzIENvbGxlY3Rpb24+IHN0YXRpYyB2ODo6SGEKICAg
ICByZXR1cm4gcHJvcGVydGllczsKIH0KIAorLy8gR2V0IGFuIGFycmF5IGNvbnRhaW5pbmcgdGhl
IG5hbWVzIG9mIG5hbWVkIHByb3BlcnRpZXMgb2YgSFRNTENvbGxlY3Rpb24gYW5kIGl0cyBzdWJj
bGFzc2VzLgordGVtcGxhdGU8Y2xhc3MgQ29sbGVjdGlvbj4gc3RhdGljIHY4OjpIYW5kbGU8djg6
OkFycmF5PiBjb2xsZWN0aW9uTmFtZWRQcm9wZXJ0eUVudW1lcmF0b3IoY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBwcm9wZXJ0eU5hbWVTdHJpbmdz
OworICAgIHRvTmF0aXZlQ29sbGVjdGlvbjxDb2xsZWN0aW9uPihpbmZvLkhvbGRlcigpKS0+Z2V0
UHJvcGVydHlOYW1lcyhwcm9wZXJ0eU5hbWVTdHJpbmdzKTsKKworICAgIHY4OjpIYW5kbGU8djg6
OkFycmF5PiBwcm9wZXJ0eU5hbWVzID0gdjg6OkFycmF5OjpOZXcocHJvcGVydHlOYW1lU3RyaW5n
cy5zaXplKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9wZXJ0eU5hbWVTdHJp
bmdzLnNpemUoKTsgKytpKQorICAgICAgICBwcm9wZXJ0eU5hbWVzLT5TZXQodjhJbnRlZ2VyKGks
IGluZm8uR2V0SXNvbGF0ZSgpKSwgdjhTdHJpbmcocHJvcGVydHlOYW1lU3RyaW5nc1tpXSwgaW5m
by5HZXRJc29sYXRlKCkpKTsKKworICAgIHJldHVybiBwcm9wZXJ0eU5hbWVzOworfQogCiAvLyBB
IHRlbXBsYXRlIGZvciBpbmRleGVkIGdldHRlcnMgb24gY29sbGVjdGlvbnMgb2Ygc3RyaW5ncyB0
aGF0IHNob3VsZCByZXR1cm4gbnVsbCBpZiB0aGUgcmVzdWx0aW5nIHN0cmluZyBpcyBhIG51bGwg
c3RyaW5nLgogdGVtcGxhdGU8Y2xhc3MgQ29sbGVjdGlvbj4gc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjb2xsZWN0aW9uU3RyaW5nT3JVbmRlZmluZWRJbmRleGVkUHJvcGVydHlHZXR0ZXIo
dWludDMyX3QgaW5kZXgsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTQ0NTIwKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcy
NSw0ICs3MjUsMjAgQEAgdm9pZCBIVE1MQ29sbGVjdGlvbjo6YXBwZW5kKE5vZGVDYWNoZU1hcAog
ICAgIHZlY3Rvci0+YXBwZW5kKGVsZW1lbnQpOwogfQogCit2b2lkIEhUTUxDb2xsZWN0aW9uOjpn
ZXRQcm9wZXJ0eU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBwcm9wZXJ0eU5hbWVTdHJpbmdzKQorewor
ICAgIHVwZGF0ZU5hbWVDYWNoZSgpOworCisgICAgZm9yIChOb2RlQ2FjaGVNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9uYW1lQ2FjaGUuYmVnaW4oKTsgaXQgIT0gbV9uYW1lQ2FjaGUuZW5kKCk7ICsraXQp
IHsKKyAgICAgICAgU3RyaW5nIGF0dHJpYnV0ZVZhbHVlID0gaXQtPmtleTsKKyAgICAgICAgaWYg
KCFwcm9wZXJ0eU5hbWVTdHJpbmdzLmNvbnRhaW5zKGF0dHJpYnV0ZVZhbHVlKSkKKyAgICAgICAg
ICAgIHByb3BlcnR5TmFtZVN0cmluZ3MuYXBwZW5kKGF0dHJpYnV0ZVZhbHVlKTsKKyAgICB9Cisg
ICAgZm9yIChOb2RlQ2FjaGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pZENhY2hlLmJlZ2luKCk7IGl0
ICE9IG1faWRDYWNoZS5lbmQoKTsgKytpdCkgeworICAgICAgICBTdHJpbmcgYXR0cmlidXRlVmFs
dWUgPSBpdC0+a2V5OworICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVN0cmluZ3MuY29udGFpbnMo
YXR0cmlidXRlVmFsdWUpKQorICAgICAgICAgICAgcHJvcGVydHlOYW1lU3RyaW5ncy5hcHBlbmQo
YXR0cmlidXRlVmFsdWUpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAkocmV2aXNpb24gMTQ0NTIwKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Nyw2ICs2Nyw4IEBAIHB1YmxpYzoKICAgICBFbGVtZW50KiB0cmF2ZXJzZUZpcnN0RWxlbWVudCh1
bnNpZ25lZCYgb2Zmc2V0SW5BcnJheSwgQ29udGFpbmVyTm9kZSogcm9vdCkgY29uc3Q7CiAgICAg
RWxlbWVudCogdHJhdmVyc2VGb3J3YXJkVG9PZmZzZXQodW5zaWduZWQgb2Zmc2V0LCBFbGVtZW50
KiBjdXJyZW50RWxlbWVudCwgdW5zaWduZWQmIGN1cnJlbnRPZmZzZXQsIHVuc2lnbmVkJiBvZmZz
ZXRJbkFycmF5LCBDb250YWluZXJOb2RlKiByb290KSBjb25zdDsKIAorICAgIHZvaWQgZ2V0UHJv
cGVydHlOYW1lcyhWZWN0b3I8U3RyaW5nPiYgcHJvcGVydHlOYW1lU3RyaW5ncyk7CisKIHByb3Rl
Y3RlZDoKICAgICBIVE1MQ29sbGVjdGlvbihOb2RlKiBiYXNlLCBDb2xsZWN0aW9uVHlwZSwgSXRl
bUFmdGVyT3ZlcnJpZGVUeXBlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJv
cGVydGllc0NvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTQ0NTIwKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDksNiArMTQ5LDE1IEBAIGJvb2wgSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjpoYXNO
YW1lZEkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgSFRNTFByb3BlcnRpZXNDb2xsZWN0
aW9uOjpnZXRQcm9wZXJ0eU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBwcm9wZXJ0eU5hbWVTdHJpbmdz
KQoreworICAgIHVwZGF0ZU5hbWVDYWNoZSgpOworICAgIGlmICghbV9wcm9wZXJ0eU5hbWVzKQor
ICAgICAgICByZXR1cm47CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJvcGVydHlO
YW1lcy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgcHJvcGVydHlOYW1lU3RyaW5ncy5hcHBlbmQo
bV9wcm9wZXJ0eU5hbWVzLT5pdGVtKGkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKE1JQ1JPREFUQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaAkocmV2aXNpb24gMTQ0NTIwKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fcHJvcGVydHlOYW1lcy5jbGVh
cigpOwogICAgIH0KIAorICAgIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhWZWN0b3I8U3RyaW5nPiYg
cHJvcGVydHlOYW1lU3RyaW5ncyk7CisKIHByaXZhdGU6CiAgICAgSFRNTFByb3BlcnRpZXNDb2xs
ZWN0aW9uKE5vZGUqKTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ0NTIwKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDMtMDEg
IEFya28gU2FoYSAgPGFya29AbW90b3JvbGEuY29tPgorCisgICAgICAgIEVudW1lcmF0aW5nIGFu
IEhUTUxDb2xsZWN0aW9uIG5lZWRzIHRvIGVudW1lcmF0ZSB0aGUgbmFtZWQgcHJvcGVydGllcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNjEyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9NaWNyb0RhdGEvaHRtbHByb3BlcnRpZXNjb2xsZWN0aW9uLWVudW1lcmF0aW9uLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vTWljcm9EYXRhL2h0bWxwcm9wZXJ0aWVz
Y29sbGVjdGlvbi1lbnVtZXJhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9o
dG1sY29sbGVjdGlvbi1lbnVtZXJhdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLWVudW1lcmF0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEz
LTAzLTAxICBUZXJyeSBBbmRlcnNvbiAgPHRkYW5kZXJzb25AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZVNjcm9sbFVwZGF0ZSgpIHNob3VsZCBpbnZv
a2UgdGhlIHVzZXItZ2VuZXJhdGVkIHNjcm9sbCByb3V0aW5lcyAKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sY29sbGVjdGlvbi1lbnVtZXJhdGlvbi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sY29s
bGVjdGlvbi1lbnVtZXJhdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0OCBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBIVE1MQ29sbGVjdGlvbiBlbnVtZXJhdGVz
IHRoZSBuYW1lZCBwcm9wZXJ0aWVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
VGVzdCBIVE1MQ29sbGVjdGlvbi4uCitQQVNTICdmb3JtTmFtZTEnIGluIGRvY3VtZW50LmZvcm1z
IGlzIHRydWUKK1BBU1MgJ215Rm9ybScgaW4gZG9jdW1lbnQuZm9ybXMgaXMgdHJ1ZQorUEFTUyAn
Zm9ybU5hbWUyJyBpbiBkb2N1bWVudC5mb3JtcyBpcyB0cnVlCitQQVNTICdmb3JtSWQxJyBpbiBk
b2N1bWVudC5mb3JtcyBpcyB0cnVlCitQQVNTICdmb3JtSWQyJyBpbiBkb2N1bWVudC5mb3JtcyBp
cyB0cnVlCitQQVNTICdmb3JtSWQzJyBpbiBkb2N1bWVudC5mb3JtcyBpcyB0cnVlCitQQVNTICdm
b3JtSWQ0JyBpbiBkb2N1bWVudC5mb3JtcyBpcyB0cnVlCisKK1Rlc3QgSFRNTEFsbENvbGxlY3Rp
b24uLgorUEFTUyAnZm9ybU5hbWUxJyBpbiBkb2N1bWVudC5hbGwgaXMgdHJ1ZQorUEFTUyAnbXlG
b3JtJyBpbiBkb2N1bWVudC5hbGwgaXMgdHJ1ZQorUEFTUyAnZm9ybU5hbWUyJyBpbiBkb2N1bWVu
dC5hbGwgaXMgdHJ1ZQorUEFTUyAnZm9ybUlkMScgaW4gZG9jdW1lbnQuYWxsIGlzIHRydWUKK1BB
U1MgJ2Zvcm1JZDInIGluIGRvY3VtZW50LmFsbCBpcyB0cnVlCitQQVNTICdmb3JtSWQzJyBpbiBk
b2N1bWVudC5hbGwgaXMgdHJ1ZQorUEFTUyAnZm9ybUlkNCcgaW4gZG9jdW1lbnQuYWxsIGlzIHRy
dWUKK1BBU1MgJ215U2VsZWN0JyBpbiBkb2N1bWVudC5hbGwgaXMgdHJ1ZQorUEFTUyAnc2VsZWN0
TmFtZScgaW4gZG9jdW1lbnQuYWxsIGlzIHRydWUKK1BBU1MgJ3NlbGVjdElkMScgaW4gZG9jdW1l
bnQuYWxsIGlzIHRydWUKK1BBU1MgJ3NlbGVjdElkMicgaW4gZG9jdW1lbnQuYWxsIGlzIHRydWUK
K1BBU1MgJ3NlbGVjdElkMycgaW4gZG9jdW1lbnQuYWxsIGlzIHRydWUKK1BBU1MgJ29wdGlvbklk
MScgaW4gZG9jdW1lbnQuYWxsIGlzIHRydWUKK1BBU1MgJ29wdGlvbklkMicgaW4gZG9jdW1lbnQu
YWxsIGlzIHRydWUKK1BBU1MgJ29wdGlvbklkMycgaW4gZG9jdW1lbnQuYWxsIGlzIHRydWUKKwor
VGVzdCBIVE1MRm9ybUNvbnRyb2xDb2xsZWN0aW9uLi4KK1BBU1MgJ215U2VsZWN0JyBpbiBmb3Jt
LmVsZW1lbnRzIGlzIHRydWUKK1BBU1MgJ3NlbGVjdE5hbWUnIGluIGZvcm0uZWxlbWVudHMgaXMg
dHJ1ZQorUEFTUyAnc2VsZWN0SWQxJyBpbiBmb3JtLmVsZW1lbnRzIGlzIHRydWUKK1BBU1MgJ3Nl
bGVjdElkMicgaW4gZm9ybS5lbGVtZW50cyBpcyB0cnVlCitQQVNTICdzZWxlY3RJZDMnIGluIGZv
cm0uZWxlbWVudHMgaXMgdHJ1ZQorCitUZXN0IEhUTUxPcHRpb25Db2xsZWN0aW9uLi4KK1BBU1Mg
J215T3B0aW9uJyBpbiBzZWxlY3Qub3B0aW9ucyBpcyB0cnVlCitQQVNTICdvcHRpb25OYW1lJyBp
biBzZWxlY3Qub3B0aW9ucyBpcyB0cnVlCitQQVNTICdvcHRpb25JZDInIGluIHNlbGVjdC5vcHRp
b25zIGlzIHRydWUKK1BBU1MgJ29wdGlvbklkMycgaW4gc2VsZWN0Lm9wdGlvbnMgaXMgdHJ1ZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tZW51bWVyYXRpb24uaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sY29sbGVjdGlvbi1lbnVtZXJh
dGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbGNvbGxl
Y3Rpb24tZW51bWVyYXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk0IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IEhUTUxDb2xsZWN0aW9uIGVudW1l
cmF0ZXMgdGhlIG5hbWVkIHByb3BlcnRpZXMuIik7CisKK3ZhciBjb250YWluZXIgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFp
bmVyKTsKKworZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0eXBlLCBwcm9wcywgY29udGVudHMpIHsK
KyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodHlwZSk7CisgICAgZm9y
ICh2YXIgaSBpbiBwcm9wcykgeworICAgICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KGkpKSB7
CisgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKGkscHJvcHNbaV0pOworICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gZWxlbWVudDsKK30KKwordmFyIHNlbGVjdDsKK3ZhciBmb3JtOworZnVu
Y3Rpb24gc2V0dXAoKQoreworICAgIC8vIDxmb3JtPiBlbGVtZW50cyBmb3IgSFRNTENvbGxlY3Rp
b24gdGVzdAorICAgIGZvcm0gPSBjcmVhdGVFbGVtZW50KCJmb3JtIiwge2lkOiAiZm9ybUlkMSIs
IG5hbWU6ImZvcm1OYW1lMSJ9KTsKKyAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZm9ybSk7Cisg
ICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNyZWF0ZUVsZW1lbnQoImZvcm0iLCB7aWQ6ICJmb3Jt
SWQyIiwgbmFtZTogIm15Rm9ybSJ9KSk7CisgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNyZWF0
ZUVsZW1lbnQoImZvcm0iLCB7aWQ6ICJmb3JtSWQzIiwgbmFtZTogIm15Rm9ybSJ9KSk7CisgICAg
Y29udGFpbmVyLmFwcGVuZENoaWxkKGNyZWF0ZUVsZW1lbnQoImZvcm0iLCB7aWQ6ICJmb3JtSWQ0
IiwgbmFtZTogImZvcm1OYW1lMiJ9KSk7CisKKyAgICAvLyA8c2VsZWN0PiBlbGVtZW50cyBmb3Ig
SFRNTEZvcm1Db250cm9sQ29sbGVjdGlvbiB0ZXN0CisgICAgc2VsZWN0ID0gY3JlYXRlRWxlbWVu
dCgic2VsZWN0Iiwge2lkOiAic2VsZWN0SWQxIiwgbmFtZTogIm15U2VsZWN0In0pOworICAgIGZv
cm0uYXBwZW5kQ2hpbGQoc2VsZWN0KTsKKyAgICBmb3JtLmFwcGVuZENoaWxkKGNyZWF0ZUVsZW1l
bnQoInNlbGVjdCIsIHtpZDogInNlbGVjdElkMiIsIG5hbWU6ICJteVNlbGVjdCJ9KSk7CisgICAg
Zm9ybS5hcHBlbmRDaGlsZChjcmVhdGVFbGVtZW50KCJzZWxlY3QiLCB7aWQ6ICJzZWxlY3RJZDMi
LCBuYW1lOiAic2VsZWN0TmFtZSJ9KSk7CisKKyAgICAvLyA8b3B0aW9uPiBlbGVtZW50cyBmb3Ig
SFRNTE9wdGlvbkNvbGxlY3Rpb24KKyAgICB2YXIgb3B0aW9uID0gY3JlYXRlRWxlbWVudCgib3B0
aW9uIiwge2lkOiAib3B0aW9uSWQxIiwgbmFtZTogIm15T3B0aW9uIn0pOworICAgIHNlbGVjdC5h
cHBlbmRDaGlsZChvcHRpb24pOworICAgIHNlbGVjdC5hcHBlbmRDaGlsZChjcmVhdGVFbGVtZW50
KCJvcHRpb24iLCB7aWQ6ICJvcHRpb25JZDIiLCBuYW1lOiAibXlPcHRpb24ifSkpOworICAgIHNl
bGVjdC5hcHBlbmRDaGlsZChjcmVhdGVFbGVtZW50KCJvcHRpb24iLCB7aWQ6ICJvcHRpb25JZDMi
LCBuYW1lOiAib3B0aW9uTmFtZSJ9KSk7Cit9CisKK3NldHVwKCk7CisKK2RlYnVnKCJUZXN0IEhU
TUxDb2xsZWN0aW9uLi4iKTsKK3Nob3VsZEJlVHJ1ZSgiJ2Zvcm1OYW1lMScgaW4gZG9jdW1lbnQu
Zm9ybXMiKTsKK3Nob3VsZEJlVHJ1ZSgiJ215Rm9ybScgaW4gZG9jdW1lbnQuZm9ybXMiKTsKK3No
b3VsZEJlVHJ1ZSgiJ2Zvcm1OYW1lMicgaW4gZG9jdW1lbnQuZm9ybXMiKTsKK3Nob3VsZEJlVHJ1
ZSgiJ2Zvcm1JZDEnIGluIGRvY3VtZW50LmZvcm1zIik7CitzaG91bGRCZVRydWUoIidmb3JtSWQy
JyBpbiBkb2N1bWVudC5mb3JtcyIpOworc2hvdWxkQmVUcnVlKCInZm9ybUlkMycgaW4gZG9jdW1l
bnQuZm9ybXMiKTsKK3Nob3VsZEJlVHJ1ZSgiJ2Zvcm1JZDQnIGluIGRvY3VtZW50LmZvcm1zIik7
CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IEhUTUxBbGxDb2xsZWN0aW9uLi4iKTsKK3Nob3Vs
ZEJlVHJ1ZSgiJ2Zvcm1OYW1lMScgaW4gZG9jdW1lbnQuYWxsIik7CitzaG91bGRCZVRydWUoIidt
eUZvcm0nIGluIGRvY3VtZW50LmFsbCIpOworc2hvdWxkQmVUcnVlKCInZm9ybU5hbWUyJyBpbiBk
b2N1bWVudC5hbGwiKTsKK3Nob3VsZEJlVHJ1ZSgiJ2Zvcm1JZDEnIGluIGRvY3VtZW50LmFsbCIp
Oworc2hvdWxkQmVUcnVlKCInZm9ybUlkMicgaW4gZG9jdW1lbnQuYWxsIik7CitzaG91bGRCZVRy
dWUoIidmb3JtSWQzJyBpbiBkb2N1bWVudC5hbGwiKTsKK3Nob3VsZEJlVHJ1ZSgiJ2Zvcm1JZDQn
IGluIGRvY3VtZW50LmFsbCIpOworc2hvdWxkQmVUcnVlKCInbXlTZWxlY3QnIGluIGRvY3VtZW50
LmFsbCIpOworc2hvdWxkQmVUcnVlKCInc2VsZWN0TmFtZScgaW4gZG9jdW1lbnQuYWxsIik7Citz
aG91bGRCZVRydWUoIidzZWxlY3RJZDEnIGluIGRvY3VtZW50LmFsbCIpOworc2hvdWxkQmVUcnVl
KCInc2VsZWN0SWQyJyBpbiBkb2N1bWVudC5hbGwiKTsKK3Nob3VsZEJlVHJ1ZSgiJ3NlbGVjdElk
MycgaW4gZG9jdW1lbnQuYWxsIik7CitzaG91bGRCZVRydWUoIidvcHRpb25JZDEnIGluIGRvY3Vt
ZW50LmFsbCIpOworc2hvdWxkQmVUcnVlKCInb3B0aW9uSWQyJyBpbiBkb2N1bWVudC5hbGwiKTsK
K3Nob3VsZEJlVHJ1ZSgiJ29wdGlvbklkMycgaW4gZG9jdW1lbnQuYWxsIik7CisKK2RlYnVnKCIi
KTsKK2RlYnVnKCJUZXN0IEhUTUxGb3JtQ29udHJvbENvbGxlY3Rpb24uLiIpOworc2hvdWxkQmVU
cnVlKCInbXlTZWxlY3QnIGluIGZvcm0uZWxlbWVudHMiKTsKK3Nob3VsZEJlVHJ1ZSgiJ3NlbGVj
dE5hbWUnIGluIGZvcm0uZWxlbWVudHMiKTsKK3Nob3VsZEJlVHJ1ZSgiJ3NlbGVjdElkMScgaW4g
Zm9ybS5lbGVtZW50cyIpOworc2hvdWxkQmVUcnVlKCInc2VsZWN0SWQyJyBpbiBmb3JtLmVsZW1l
bnRzIik7CitzaG91bGRCZVRydWUoIidzZWxlY3RJZDMnIGluIGZvcm0uZWxlbWVudHMiKTsKKwor
ZGVidWcoIiIpOworZGVidWcoIlRlc3QgSFRNTE9wdGlvbkNvbGxlY3Rpb24uLiIpOworc2hvdWxk
QmVUcnVlKCInbXlPcHRpb24nIGluIHNlbGVjdC5vcHRpb25zIik7CitzaG91bGRCZVRydWUoIidv
cHRpb25OYW1lJyBpbiBzZWxlY3Qub3B0aW9ucyIpOworc2hvdWxkQmVUcnVlKCInb3B0aW9uSWQy
JyBpbiBzZWxlY3Qub3B0aW9ucyIpOworc2hvdWxkQmVUcnVlKCInb3B0aW9uSWQzJyBpbiBzZWxl
Y3Qub3B0aW9ucyIpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9odG1scHJvcGVydGllc2NvbGxlY3Rpb24tZW51bWVy
YXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01p
Y3JvRGF0YS9odG1scHJvcGVydGllc2NvbGxlY3Rpb24tZW51bWVyYXRpb24tZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL2h0bWxwcm9w
ZXJ0aWVzY29sbGVjdGlvbi1lbnVtZXJhdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxOCBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBIVE1MUHJvcGVydGllc0Nv
bGxlY3Rpb24gZW51bWVyYXRlcyB0aGUgbmFtZWQgcHJvcGVydGllcy4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK0NyZWF0ZWQgZWxlbWVudCBvZiB0eXBlOiBkaXYKKworU3RhcnQg
dGVzdC4uCitQQVNTICdxdXgnIGluIGVsZW1lbnQucHJvcGVydGllcyBpcyB0cnVlCitQQVNTICdi
YXInIGluIGVsZW1lbnQucHJvcGVydGllcyBpcyB0cnVlCitQQVNTICdGT08nIGluIGVsZW1lbnQu
cHJvcGVydGllcyBpcyB0cnVlCitQQVNTICdmb28nIGluIGVsZW1lbnQucHJvcGVydGllcyBpcyB0
cnVlCitQQVNTICdGT28nIGluIGVsZW1lbnQucHJvcGVydGllcyBpcyB0cnVlCitQQVNTICdiYXon
IGluIGVsZW1lbnQucHJvcGVydGllcyBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vTWlj
cm9EYXRhL2h0bWxwcm9wZXJ0aWVzY29sbGVjdGlvbi1lbnVtZXJhdGlvbi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9odG1scHJvcGVydGllc2NvbGxl
Y3Rpb24tZW51bWVyYXRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL01pY3JvRGF0YS9odG1scHJvcGVydGllc2NvbGxlY3Rpb24tZW51bWVyYXRpb24uaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbWljcm9kYXRhLWNvbW1vbi5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IGVuc3VyZXMgdGhhdCBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24gZW51bWVyYXRlcyB0aGUgbmFt
ZWQgcHJvcGVydGllcy4iKTsKK3ZhciBjb250YWluZXIgPSBjcmVhdGVFbGVtZW50KCdkaXYnLCB7
fSwgJzxkaXYgaXRlbXByb3A9InF1eCIgaWQ9InJlZklkIj48L2Rpdj48ZGl2IGl0ZW1zY29wZSBp
dGVtcmVmPSJyZWZJZCI+PGRpdiBpdGVtcHJvcD0iYmFyIj48ZGl2IGl0ZW1wcm9wPSJGT08iPjwv
ZGl2PjxkaXYgaXRlbXByb3A9ImZvbyBGT28gZm9vIj48L2Rpdj48L2Rpdj48ZGl2IGl0ZW1wcm9w
PSJiYXoiPjwvZGl2PjwvZGl2PicpOwordmFyIGVsZW1lbnQgPSBjb250YWluZXIuY2hpbGRyZW5b
MV07CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJTdGFydCB0ZXN0Li4iKTsKK3Nob3VsZEJlVHJ1ZSgi
J3F1eCcgaW4gZWxlbWVudC5wcm9wZXJ0aWVzIik7CitzaG91bGRCZVRydWUoIidiYXInIGluIGVs
ZW1lbnQucHJvcGVydGllcyIpOworc2hvdWxkQmVUcnVlKCInRk9PJyBpbiBlbGVtZW50LnByb3Bl
cnRpZXMiKTsKK3Nob3VsZEJlVHJ1ZSgiJ2ZvbycgaW4gZWxlbWVudC5wcm9wZXJ0aWVzIik7Citz
aG91bGRCZVRydWUoIidGT28nIGluIGVsZW1lbnQucHJvcGVydGllcyIpOworc2hvdWxkQmVUcnVl
KCInYmF6JyBpbiBlbGVtZW50LnByb3BlcnRpZXMiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191095</attachid>
            <date>2013-03-01 21:28:07 -0800</date>
            <delta_ts>2013-03-04 16:34:33 -0800</delta_ts>
            <desc>patch1</desc>
            <filename>bug-110612-03012013210420.diff</filename>
            <type>text/plain</type>
            <size>16566</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NDUyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAzLTAxICBBcmtvIFNh
aGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBFbnVtZXJhdGluZyBhbiBIVE1MQ29s
bGVjdGlvbiBuZWVkcyB0byBlbnVtZXJhdGUgdGhlIG5hbWVkIHByb3BlcnRpZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDYxMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hZGUgY2hhbmdlcyBpbiBD
b2RlR2VuZXJhdG9yIHRvIGdlbmVyYXRlIG5hbWVkUHJvcGVydHlFbnVtZXJhdG9yIGNvZGUKKyAg
ICAgICAgYXV0b21hdGljYWxseSBmb3IgSFRNTENvbGxlY3Rpb24gaW50ZXJmYWNlIGFuZCBpdHMg
c3ViY2xhc3Nlcy4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vTWljcm9EYXRhL2h0bWxwcm9w
ZXJ0aWVzY29sbGVjdGlvbi1lbnVtZXJhdGlvbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Rv
bS9odG1sY29sbGVjdGlvbi1lbnVtZXJhdGlvbi5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRp
b24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAg
ICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbk5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVj
dGlvbk5hbWVkUHJvcGVydHlFbnVtZXJhdG9yKToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpnZXRQcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmg6CisgICAgICAgIChIVE1MQ29s
bGVjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjpnZXRQcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKiBodG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5oOgorICAgICAg
ICAoSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uKToKKwogMjAxMy0wMy0wMSAgS2VudGFybyBIYXJh
ICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3R5bGUgcmVjYWxjdWxhdGlvbiB0
YWtlcyB0b28gbG9uZyB3aGVuIGFkZGluZyB3aGl0ZXNwYWNlIHRleHQgbm9kZXMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CShyZXZpc2lvbiAxNDQ1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjIxOCw5ICsyMjE4LDE1IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XG4iKTsKICAg
ICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbmRleGVkR2V0dGVy
In0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik51bWVyaWNJbmRleGVkR2V0
dGVyIn0pIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDwke2ludGVyZmFjZU5hbWV9Kj4odGhpc09iamVjdC0+
aW1wbCgpKS0+bGVuZ3RoKCk7ICsraSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkp
O1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7XG5cbiIpOwogICAgICAgICB9Ci0g
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpO1xuIik7CisgICAgICAgIGlm
ICgkaW50ZXJmYWNlTmFtZSA9fiAvXkhUTUxcdypDb2xsZWN0aW9uJC8pIHsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFZlY3RvcjxTdHJpbmc+IHByb3BlcnR5TmFtZVN0cmlu
Z3M7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRpY19jYXN0
PCR7aW50ZXJmYWNlTmFtZX0qPih0aGlzT2JqZWN0LT5pbXBsKCkpLT5nZXRQcm9wZXJ0eU5hbWVz
KHByb3BlcnR5TmFtZVN0cmluZ3MpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lU3RyaW5ncy5zaXpl
KCk7ICsraSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHBy
b3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgcHJvcGVydHlOYW1lU3RyaW5nc1tpXS5p
bXBsKCkpKTtcblxuIik7CisgICAgICAgIH0KKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNpb24gMTQ0NTI2KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHdvcmtpbmcgY29weSkKQEAgLTI2MjMs
NyArMjYyMywxMiBAQCBFTkQKICAgICAjIElmIHRoZXJlIGlzIGEgY3VzdG9tIGVudW1lcmF0b3Is
IHRoZXJlIE1VU1QgYmUgY3VzdG9tIHF1ZXJ5IHRvIHByb3Blcmx5IGNvbW11bmljYXRlIHByb3Bl
cnR5IGF0dHJpYnV0ZXMuCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICRoYXNFbnVtZXJhdG9yID8g
IiR7djhJbnRlcmZhY2VOYW1lfTo6bmFtZWRQcm9wZXJ0eVF1ZXJ5LCAiIDogIjAsICIpOwogICAg
IHB1c2goQGltcGxDb250ZW50LCAkaGFzRGVsZXRlciA/ICIke3Y4SW50ZXJmYWNlTmFtZX06Om5h
bWVkUHJvcGVydHlEZWxldGVyLCAiIDogIjAsICIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAk
aGFzRW51bWVyYXRvciA/ICIke3Y4SW50ZXJmYWNlTmFtZX06Om5hbWVkUHJvcGVydHlFbnVtZXJh
dG9yIiA6ICIwIik7CisgICAgaWYgKCRpbnRlcmZhY2VOYW1lID1+IC9eSFRNTFx3KkNvbGxlY3Rp
b24kLykgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImNvbGxlY3Rpb25OYW1lZFByb3Bl
cnR5RW51bWVyYXRvcjwke2ludGVyZmFjZU5hbWV9PiIpOworICAgIH0KKyAgICBlbHNlIHsKKyAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRoYXNFbnVtZXJhdG9yID8gIiR7djhJbnRlcmZhY2VO
YW1lfTo6bmFtZWRQcm9wZXJ0eUVudW1lcmF0b3IiIDogIjAiKTsKKyAgICB9CiAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIpO1xuIik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4Q29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4Q29sbGVjdGlvbi5oCShyZXZpc2lvbiAxNDQ1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOENvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiwx
OCBAQCB0ZW1wbGF0ZTxjbGFzcyBDb2xsZWN0aW9uPiBzdGF0aWMgdjg6OkhhCiAgICAgcmV0dXJu
IHByb3BlcnRpZXM7CiB9CiAKKy8vIEdldCBhbiBhcnJheSBjb250YWluaW5nIHRoZSBuYW1lcyBv
ZiBuYW1lZCBwcm9wZXJ0aWVzIG9mIEhUTUxDb2xsZWN0aW9uIGFuZCBpdHMgc3ViY2xhc3Nlcy4K
K3RlbXBsYXRlPGNsYXNzIENvbGxlY3Rpb24+IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpBcnJheT4g
Y29sbGVjdGlvbk5hbWVkUHJvcGVydHlFbnVtZXJhdG9yKGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgVmVjdG9yPFN0cmluZz4gcHJvcGVydHlOYW1lU3RyaW5nczsKKyAgICB0
b05hdGl2ZUNvbGxlY3Rpb248Q29sbGVjdGlvbj4oaW5mby5Ib2xkZXIoKSktPmdldFByb3BlcnR5
TmFtZXMocHJvcGVydHlOYW1lU3RyaW5ncyk7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpBcnJheT4g
cHJvcGVydHlOYW1lcyA9IHY4OjpBcnJheTo6TmV3KHByb3BlcnR5TmFtZVN0cmluZ3Muc2l6ZSgp
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lU3RyaW5ncy5zaXpl
KCk7ICsraSkKKyAgICAgICAgcHJvcGVydHlOYW1lcy0+U2V0KHY4SW50ZWdlcihpLCBpbmZvLkdl
dElzb2xhdGUoKSksIHY4U3RyaW5nKHByb3BlcnR5TmFtZVN0cmluZ3NbaV0sIGluZm8uR2V0SXNv
bGF0ZSgpKSk7CisKKyAgICByZXR1cm4gcHJvcGVydHlOYW1lczsKK30KIAogLy8gQSB0ZW1wbGF0
ZSBmb3IgaW5kZXhlZCBnZXR0ZXJzIG9uIGNvbGxlY3Rpb25zIG9mIHN0cmluZ3MgdGhhdCBzaG91
bGQgcmV0dXJuIG51bGwgaWYgdGhlIHJlc3VsdGluZyBzdHJpbmcgaXMgYSBudWxsIHN0cmluZy4K
IHRlbXBsYXRlPGNsYXNzIENvbGxlY3Rpb24+IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
Y29sbGVjdGlvblN0cmluZ09yVW5kZWZpbmVkSW5kZXhlZFByb3BlcnR5R2V0dGVyKHVpbnQzMl90
IGluZGV4LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDE0NDUyNikKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjUsNCArNzI1
LDEzIEBAIHZvaWQgSFRNTENvbGxlY3Rpb246OmFwcGVuZChOb2RlQ2FjaGVNYXAKICAgICB2ZWN0
b3ItPmFwcGVuZChlbGVtZW50KTsKIH0KIAordm9pZCBIVE1MQ29sbGVjdGlvbjo6Z2V0UHJvcGVy
dHlOYW1lcyhWZWN0b3I8U3RyaW5nPiYgcHJvcGVydHlOYW1lU3RyaW5ncykKK3sKKyAgICB1cGRh
dGVOYW1lQ2FjaGUoKTsKKyAgICBmb3IgKE5vZGVDYWNoZU1hcDo6aXRlcmF0b3IgaXQgPSBtX25h
bWVDYWNoZS5iZWdpbigpOyBpdCAhPSBtX25hbWVDYWNoZS5lbmQoKTsgKytpdCkKKyAgICAgICAg
cHJvcGVydHlOYW1lU3RyaW5ncy5hcHBlbmQoaXQtPmtleSk7CisgICAgZm9yIChOb2RlQ2FjaGVN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9pZENhY2hlLmJlZ2luKCk7IGl0ICE9IG1faWRDYWNoZS5lbmQo
KTsgKytpdCkKKyAgICAgICAgcHJvcGVydHlOYW1lU3RyaW5ncy5hcHBlbmQoaXQtPmtleSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xs
ZWN0aW9uLmgJKHJldmlzaW9uIDE0NDUyNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsOCBAQCBwdWJsaWM6CiAgICAg
RWxlbWVudCogdHJhdmVyc2VGaXJzdEVsZW1lbnQodW5zaWduZWQmIG9mZnNldEluQXJyYXksIENv
bnRhaW5lck5vZGUqIHJvb3QpIGNvbnN0OwogICAgIEVsZW1lbnQqIHRyYXZlcnNlRm9yd2FyZFRv
T2Zmc2V0KHVuc2lnbmVkIG9mZnNldCwgRWxlbWVudCogY3VycmVudEVsZW1lbnQsIHVuc2lnbmVk
JiBjdXJyZW50T2Zmc2V0LCB1bnNpZ25lZCYgb2Zmc2V0SW5BcnJheSwgQ29udGFpbmVyTm9kZSog
cm9vdCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhWZWN0b3I8
U3RyaW5nPiYgcHJvcGVydHlOYW1lU3RyaW5ncyk7CisKIHByb3RlY3RlZDoKICAgICBIVE1MQ29s
bGVjdGlvbihOb2RlKiBiYXNlLCBDb2xsZWN0aW9uVHlwZSwgSXRlbUFmdGVyT3ZlcnJpZGVUeXBl
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xs
ZWN0aW9uLmNwcAkocmV2aXNpb24gMTQ0NTI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UHJvcGVydGllc0NvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNiArMTQ5LDE1
IEBAIGJvb2wgSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjpoYXNOYW1lZEkKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKK3ZvaWQgSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjpnZXRQcm9wZXJ0eU5h
bWVzKFZlY3RvcjxTdHJpbmc+JiBwcm9wZXJ0eU5hbWVTdHJpbmdzKQoreworICAgIHVwZGF0ZU5h
bWVDYWNoZSgpOworICAgIGlmICghbV9wcm9wZXJ0eU5hbWVzKQorICAgICAgICByZXR1cm47Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJvcGVydHlOYW1lcy0+bGVuZ3RoKCk7ICsr
aSkKKyAgICAgICAgcHJvcGVydHlOYW1lU3RyaW5ncy5hcHBlbmQobV9wcm9wZXJ0eU5hbWVzLT5p
dGVtKGkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KE1JQ1JPREFUQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xs
ZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGll
c0NvbGxlY3Rpb24uaAkocmV2aXNpb24gMTQ0NTI2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsOCBA
QCBwdWJsaWM6CiAgICAgICAgIG1fcHJvcGVydHlOYW1lcy5jbGVhcigpOwogICAgIH0KIAorICAg
IHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBwcm9wZXJ0eU5h
bWVTdHJpbmdzKSBPVkVSUklERTsKKwogcHJpdmF0ZToKICAgICBIVE1MUHJvcGVydGllc0NvbGxl
Y3Rpb24oTm9kZSopOwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDQ1MjYpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMy0wMSAg
QXJrbyBTYWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgRW51bWVyYXRpbmcgYW4g
SFRNTENvbGxlY3Rpb24gbmVlZHMgdG8gZW51bWVyYXRlIHRoZSBuYW1lZCBwcm9wZXJ0aWVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA2MTIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9t
L01pY3JvRGF0YS9odG1scHJvcGVydGllc2NvbGxlY3Rpb24tZW51bWVyYXRpb24tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9NaWNyb0RhdGEvaHRtbHByb3BlcnRpZXNj
b2xsZWN0aW9uLWVudW1lcmF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2h0
bWxjb2xsZWN0aW9uLWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tZW51bWVyYXRpb24uaHRtbDogQWRkZWQuCisKIDIwMTMt
MDMtMDEgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFN0
eWxlIHJlY2FsY3VsYXRpb24gdGFrZXMgdG9vIGxvbmcgd2hlbiBhZGRpbmcgd2hpdGVzcGFjZSB0
ZXh0IG5vZGVzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sY29sbGVjdGlvbi1lbnVt
ZXJhdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
aHRtbGNvbGxlY3Rpb24tZW51bWVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tZW51bWVyYXRpb24tZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRo
YXQgSFRNTENvbGxlY3Rpb24gZW51bWVyYXRlcyB0aGUgbmFtZWQgcHJvcGVydGllcy4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3QgSFRNTENvbGxlY3Rpb24uLgorUEFTUyAn
Zm9ybU5hbWUxJyBpbiBkb2N1bWVudC5mb3JtcyBpcyB0cnVlCitQQVNTICdteUZvcm0nIGluIGRv
Y3VtZW50LmZvcm1zIGlzIHRydWUKK1BBU1MgJ2Zvcm1OYW1lMicgaW4gZG9jdW1lbnQuZm9ybXMg
aXMgdHJ1ZQorUEFTUyAnZm9ybUlkMScgaW4gZG9jdW1lbnQuZm9ybXMgaXMgdHJ1ZQorUEFTUyAn
Zm9ybUlkMicgaW4gZG9jdW1lbnQuZm9ybXMgaXMgdHJ1ZQorUEFTUyAnZm9ybUlkMycgaW4gZG9j
dW1lbnQuZm9ybXMgaXMgdHJ1ZQorUEFTUyAnZm9ybUlkNCcgaW4gZG9jdW1lbnQuZm9ybXMgaXMg
dHJ1ZQorCitUZXN0IEhUTUxBbGxDb2xsZWN0aW9uLi4KK1BBU1MgJ2Zvcm1OYW1lMScgaW4gZG9j
dW1lbnQuYWxsIGlzIHRydWUKK1BBU1MgJ215Rm9ybScgaW4gZG9jdW1lbnQuYWxsIGlzIHRydWUK
K1BBU1MgJ2Zvcm1OYW1lMicgaW4gZG9jdW1lbnQuYWxsIGlzIHRydWUKK1BBU1MgJ2Zvcm1JZDEn
IGluIGRvY3VtZW50LmFsbCBpcyB0cnVlCitQQVNTICdmb3JtSWQyJyBpbiBkb2N1bWVudC5hbGwg
aXMgdHJ1ZQorUEFTUyAnZm9ybUlkMycgaW4gZG9jdW1lbnQuYWxsIGlzIHRydWUKK1BBU1MgJ2Zv
cm1JZDQnIGluIGRvY3VtZW50LmFsbCBpcyB0cnVlCitQQVNTICdteVNlbGVjdCcgaW4gZG9jdW1l
bnQuYWxsIGlzIHRydWUKK1BBU1MgJ3NlbGVjdE5hbWUnIGluIGRvY3VtZW50LmFsbCBpcyB0cnVl
CitQQVNTICdzZWxlY3RJZDEnIGluIGRvY3VtZW50LmFsbCBpcyB0cnVlCitQQVNTICdzZWxlY3RJ
ZDInIGluIGRvY3VtZW50LmFsbCBpcyB0cnVlCitQQVNTICdzZWxlY3RJZDMnIGluIGRvY3VtZW50
LmFsbCBpcyB0cnVlCitQQVNTICdvcHRpb25JZDEnIGluIGRvY3VtZW50LmFsbCBpcyB0cnVlCitQ
QVNTICdvcHRpb25JZDInIGluIGRvY3VtZW50LmFsbCBpcyB0cnVlCitQQVNTICdvcHRpb25JZDMn
IGluIGRvY3VtZW50LmFsbCBpcyB0cnVlCisKK1Rlc3QgSFRNTEZvcm1Db250cm9sQ29sbGVjdGlv
bi4uCitQQVNTICdteVNlbGVjdCcgaW4gZm9ybS5lbGVtZW50cyBpcyB0cnVlCitQQVNTICdzZWxl
Y3ROYW1lJyBpbiBmb3JtLmVsZW1lbnRzIGlzIHRydWUKK1BBU1MgJ3NlbGVjdElkMScgaW4gZm9y
bS5lbGVtZW50cyBpcyB0cnVlCitQQVNTICdzZWxlY3RJZDInIGluIGZvcm0uZWxlbWVudHMgaXMg
dHJ1ZQorUEFTUyAnc2VsZWN0SWQzJyBpbiBmb3JtLmVsZW1lbnRzIGlzIHRydWUKKworVGVzdCBI
VE1MT3B0aW9uQ29sbGVjdGlvbi4uCitQQVNTICdteU9wdGlvbicgaW4gc2VsZWN0Lm9wdGlvbnMg
aXMgdHJ1ZQorUEFTUyAnb3B0aW9uTmFtZScgaW4gc2VsZWN0Lm9wdGlvbnMgaXMgdHJ1ZQorUEFT
UyAnb3B0aW9uSWQyJyBpbiBzZWxlY3Qub3B0aW9ucyBpcyB0cnVlCitQQVNTICdvcHRpb25JZDMn
IGluIHNlbGVjdC5vcHRpb25zIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWxj
b2xsZWN0aW9uLWVudW1lcmF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vaHRtbGNvbGxlY3Rpb24tZW51bWVyYXRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLWVudW1lcmF0aW9uLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw5NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3Vy
ZXMgdGhhdCBIVE1MQ29sbGVjdGlvbiBlbnVtZXJhdGVzIHRoZSBuYW1lZCBwcm9wZXJ0aWVzLiIp
OworCit2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7CisKK2Z1bmN0aW9uIGNyZWF0ZUVsZW1l
bnQodHlwZSwgcHJvcHMsIGNvbnRlbnRzKSB7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KHR5cGUpOworICAgIGZvciAodmFyIGkgaW4gcHJvcHMpIHsKKyAgICAgIGlm
IChwcm9wcy5oYXNPd25Qcm9wZXJ0eShpKSkgeworICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0
ZShpLHByb3BzW2ldKTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGVsZW1lbnQ7Cit9CisK
K3ZhciBzZWxlY3Q7Cit2YXIgZm9ybTsKK2Z1bmN0aW9uIHNldHVwKCkKK3sKKyAgICAvLyA8Zm9y
bT4gZWxlbWVudHMgZm9yIEhUTUxDb2xsZWN0aW9uIHRlc3QKKyAgICBmb3JtID0gY3JlYXRlRWxl
bWVudCgiZm9ybSIsIHtpZDogImZvcm1JZDEiLCBuYW1lOiJmb3JtTmFtZTEifSk7CisgICAgY29u
dGFpbmVyLmFwcGVuZENoaWxkKGZvcm0pOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChjcmVh
dGVFbGVtZW50KCJmb3JtIiwge2lkOiAiZm9ybUlkMiIsIG5hbWU6ICJteUZvcm0ifSkpOworICAg
IGNvbnRhaW5lci5hcHBlbmRDaGlsZChjcmVhdGVFbGVtZW50KCJmb3JtIiwge2lkOiAiZm9ybUlk
MyIsIG5hbWU6ICJteUZvcm0ifSkpOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChjcmVhdGVF
bGVtZW50KCJmb3JtIiwge2lkOiAiZm9ybUlkNCIsIG5hbWU6ICJmb3JtTmFtZTIifSkpOworCisg
ICAgLy8gPHNlbGVjdD4gZWxlbWVudHMgZm9yIEhUTUxGb3JtQ29udHJvbENvbGxlY3Rpb24gdGVz
dAorICAgIHNlbGVjdCA9IGNyZWF0ZUVsZW1lbnQoInNlbGVjdCIsIHtpZDogInNlbGVjdElkMSIs
IG5hbWU6ICJteVNlbGVjdCJ9KTsKKyAgICBmb3JtLmFwcGVuZENoaWxkKHNlbGVjdCk7CisgICAg
Zm9ybS5hcHBlbmRDaGlsZChjcmVhdGVFbGVtZW50KCJzZWxlY3QiLCB7aWQ6ICJzZWxlY3RJZDIi
LCBuYW1lOiAibXlTZWxlY3QifSkpOworICAgIGZvcm0uYXBwZW5kQ2hpbGQoY3JlYXRlRWxlbWVu
dCgic2VsZWN0Iiwge2lkOiAic2VsZWN0SWQzIiwgbmFtZTogInNlbGVjdE5hbWUifSkpOworCisg
ICAgLy8gPG9wdGlvbj4gZWxlbWVudHMgZm9yIEhUTUxPcHRpb25Db2xsZWN0aW9uCisgICAgdmFy
IG9wdGlvbiA9IGNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIsIHtpZDogIm9wdGlvbklkMSIsIG5hbWU6
ICJteU9wdGlvbiJ9KTsKKyAgICBzZWxlY3QuYXBwZW5kQ2hpbGQob3B0aW9uKTsKKyAgICBzZWxl
Y3QuYXBwZW5kQ2hpbGQoY3JlYXRlRWxlbWVudCgib3B0aW9uIiwge2lkOiAib3B0aW9uSWQyIiwg
bmFtZTogIm15T3B0aW9uIn0pKTsKKyAgICBzZWxlY3QuYXBwZW5kQ2hpbGQoY3JlYXRlRWxlbWVu
dCgib3B0aW9uIiwge2lkOiAib3B0aW9uSWQzIiwgbmFtZTogIm9wdGlvbk5hbWUifSkpOworfQor
CitzZXR1cCgpOworCitkZWJ1ZygiVGVzdCBIVE1MQ29sbGVjdGlvbi4uIik7CitzaG91bGRCZVRy
dWUoIidmb3JtTmFtZTEnIGluIGRvY3VtZW50LmZvcm1zIik7CitzaG91bGRCZVRydWUoIidteUZv
cm0nIGluIGRvY3VtZW50LmZvcm1zIik7CitzaG91bGRCZVRydWUoIidmb3JtTmFtZTInIGluIGRv
Y3VtZW50LmZvcm1zIik7CitzaG91bGRCZVRydWUoIidmb3JtSWQxJyBpbiBkb2N1bWVudC5mb3Jt
cyIpOworc2hvdWxkQmVUcnVlKCInZm9ybUlkMicgaW4gZG9jdW1lbnQuZm9ybXMiKTsKK3Nob3Vs
ZEJlVHJ1ZSgiJ2Zvcm1JZDMnIGluIGRvY3VtZW50LmZvcm1zIik7CitzaG91bGRCZVRydWUoIidm
b3JtSWQ0JyBpbiBkb2N1bWVudC5mb3JtcyIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBI
VE1MQWxsQ29sbGVjdGlvbi4uIik7CitzaG91bGRCZVRydWUoIidmb3JtTmFtZTEnIGluIGRvY3Vt
ZW50LmFsbCIpOworc2hvdWxkQmVUcnVlKCInbXlGb3JtJyBpbiBkb2N1bWVudC5hbGwiKTsKK3No
b3VsZEJlVHJ1ZSgiJ2Zvcm1OYW1lMicgaW4gZG9jdW1lbnQuYWxsIik7CitzaG91bGRCZVRydWUo
Iidmb3JtSWQxJyBpbiBkb2N1bWVudC5hbGwiKTsKK3Nob3VsZEJlVHJ1ZSgiJ2Zvcm1JZDInIGlu
IGRvY3VtZW50LmFsbCIpOworc2hvdWxkQmVUcnVlKCInZm9ybUlkMycgaW4gZG9jdW1lbnQuYWxs
Iik7CitzaG91bGRCZVRydWUoIidmb3JtSWQ0JyBpbiBkb2N1bWVudC5hbGwiKTsKK3Nob3VsZEJl
VHJ1ZSgiJ215U2VsZWN0JyBpbiBkb2N1bWVudC5hbGwiKTsKK3Nob3VsZEJlVHJ1ZSgiJ3NlbGVj
dE5hbWUnIGluIGRvY3VtZW50LmFsbCIpOworc2hvdWxkQmVUcnVlKCInc2VsZWN0SWQxJyBpbiBk
b2N1bWVudC5hbGwiKTsKK3Nob3VsZEJlVHJ1ZSgiJ3NlbGVjdElkMicgaW4gZG9jdW1lbnQuYWxs
Iik7CitzaG91bGRCZVRydWUoIidzZWxlY3RJZDMnIGluIGRvY3VtZW50LmFsbCIpOworc2hvdWxk
QmVUcnVlKCInb3B0aW9uSWQxJyBpbiBkb2N1bWVudC5hbGwiKTsKK3Nob3VsZEJlVHJ1ZSgiJ29w
dGlvbklkMicgaW4gZG9jdW1lbnQuYWxsIik7CitzaG91bGRCZVRydWUoIidvcHRpb25JZDMnIGlu
IGRvY3VtZW50LmFsbCIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBIVE1MRm9ybUNvbnRy
b2xDb2xsZWN0aW9uLi4iKTsKK3Nob3VsZEJlVHJ1ZSgiJ215U2VsZWN0JyBpbiBmb3JtLmVsZW1l
bnRzIik7CitzaG91bGRCZVRydWUoIidzZWxlY3ROYW1lJyBpbiBmb3JtLmVsZW1lbnRzIik7Citz
aG91bGRCZVRydWUoIidzZWxlY3RJZDEnIGluIGZvcm0uZWxlbWVudHMiKTsKK3Nob3VsZEJlVHJ1
ZSgiJ3NlbGVjdElkMicgaW4gZm9ybS5lbGVtZW50cyIpOworc2hvdWxkQmVUcnVlKCInc2VsZWN0
SWQzJyBpbiBmb3JtLmVsZW1lbnRzIik7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IEhUTUxP
cHRpb25Db2xsZWN0aW9uLi4iKTsKK3Nob3VsZEJlVHJ1ZSgiJ215T3B0aW9uJyBpbiBzZWxlY3Qu
b3B0aW9ucyIpOworc2hvdWxkQmVUcnVlKCInb3B0aW9uTmFtZScgaW4gc2VsZWN0Lm9wdGlvbnMi
KTsKK3Nob3VsZEJlVHJ1ZSgiJ29wdGlvbklkMicgaW4gc2VsZWN0Lm9wdGlvbnMiKTsKK3Nob3Vs
ZEJlVHJ1ZSgiJ29wdGlvbklkMycgaW4gc2VsZWN0Lm9wdGlvbnMiKTsKKworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvaHRt
bHByb3BlcnRpZXNjb2xsZWN0aW9uLWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvaHRtbHByb3BlcnRpZXNjb2xsZWN0
aW9uLWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL01pY3JvRGF0YS9odG1scHJvcGVydGllc2NvbGxlY3Rpb24tZW51bWVyYXRpb24t
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgdGVzdCBl
bnN1cmVzIHRoYXQgSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uIGVudW1lcmF0ZXMgdGhlIG5hbWVk
IHByb3BlcnRpZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitDcmVhdGVkIGVs
ZW1lbnQgb2YgdHlwZTogZGl2CisKK1N0YXJ0IHRlc3QuLgorUEFTUyAncXV4JyBpbiBlbGVtZW50
LnByb3BlcnRpZXMgaXMgdHJ1ZQorUEFTUyAnYmFyJyBpbiBlbGVtZW50LnByb3BlcnRpZXMgaXMg
dHJ1ZQorUEFTUyAnRk9PJyBpbiBlbGVtZW50LnByb3BlcnRpZXMgaXMgdHJ1ZQorUEFTUyAnZm9v
JyBpbiBlbGVtZW50LnByb3BlcnRpZXMgaXMgdHJ1ZQorUEFTUyAnRk9vJyBpbiBlbGVtZW50LnBy
b3BlcnRpZXMgaXMgdHJ1ZQorUEFTUyAnYmF6JyBpbiBlbGVtZW50LnByb3BlcnRpZXMgaXMgdHJ1
ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9odG1scHJvcGVydGllc2NvbGxlY3Rp
b24tZW51bWVyYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9N
aWNyb0RhdGEvaHRtbHByb3BlcnRpZXNjb2xsZWN0aW9uLWVudW1lcmF0aW9uLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvaHRtbHByb3BlcnRpZXNj
b2xsZWN0aW9uLWVudW1lcmF0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL21pY3JvZGF0YS1jb21tb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uIGVudW1lcmF0ZXMgdGhlIG5hbWVkIHByb3BlcnRpZXMuIik7Cit2YXIgY29udGFp
bmVyID0gY3JlYXRlRWxlbWVudCgnZGl2Jywge30sICc8ZGl2IGl0ZW1wcm9wPSJxdXgiIGlkPSJy
ZWZJZCI+PC9kaXY+PGRpdiBpdGVtc2NvcGUgaXRlbXJlZj0icmVmSWQiPjxkaXYgaXRlbXByb3A9
ImJhciI+PGRpdiBpdGVtcHJvcD0iRk9PIj48L2Rpdj48ZGl2IGl0ZW1wcm9wPSJmb28gRk9vIGZv
byI+PC9kaXY+PC9kaXY+PGRpdiBpdGVtcHJvcD0iYmF6Ij48L2Rpdj48L2Rpdj4nKTsKK3ZhciBl
bGVtZW50ID0gY29udGFpbmVyLmNoaWxkcmVuWzFdOworCitkZWJ1ZygiIik7CitkZWJ1ZygiU3Rh
cnQgdGVzdC4uIik7CitzaG91bGRCZVRydWUoIidxdXgnIGluIGVsZW1lbnQucHJvcGVydGllcyIp
Oworc2hvdWxkQmVUcnVlKCInYmFyJyBpbiBlbGVtZW50LnByb3BlcnRpZXMiKTsKK3Nob3VsZEJl
VHJ1ZSgiJ0ZPTycgaW4gZWxlbWVudC5wcm9wZXJ0aWVzIik7CitzaG91bGRCZVRydWUoIidmb28n
IGluIGVsZW1lbnQucHJvcGVydGllcyIpOworc2hvdWxkQmVUcnVlKCInRk9vJyBpbiBlbGVtZW50
LnByb3BlcnRpZXMiKTsKK3Nob3VsZEJlVHJ1ZSgiJ2JheicgaW4gZWxlbWVudC5wcm9wZXJ0aWVz
Iik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191344</attachid>
            <date>2013-03-04 16:34:33 -0800</date>
            <delta_ts>2013-03-04 16:43:33 -0800</delta_ts>
            <desc>Patch3</desc>
            <filename>bug-110612-03042013162838.patch</filename>
            <type>text/plain</type>
            <size>16578</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NDY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAzLTA0ICBBcmtvIFNh
aGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBFbnVtZXJhdGluZyBhbiBIVE1MQ29s
bGVjdGlvbiBuZWVkcyB0byBlbnVtZXJhdGUgdGhlIG5hbWVkIHByb3BlcnRpZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDYxMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hZGUgY2hhbmdlcyBpbiBD
b2RlR2VuZXJhdG9yIHRvIGdlbmVyYXRlIG5hbWVkUHJvcGVydHlFbnVtZXJhdG9yIGNvZGUKKyAg
ICAgICAgYXV0b21hdGljYWxseSBmb3IgSFRNTENvbGxlY3Rpb24gaW50ZXJmYWNlIGFuZCBpdHMg
c3ViY2xhc3Nlcy4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vTWljcm9EYXRhL2h0bWxwcm9w
ZXJ0aWVzY29sbGVjdGlvbi1lbnVtZXJhdGlvbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Rv
bS9odG1sY29sbGVjdGlvbi1lbnVtZXJhdGlvbi5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRp
b24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAg
ICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbk5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVj
dGlvbk5hbWVkUHJvcGVydHlFbnVtZXJhdG9yKToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpnZXRQcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmg6CisgICAgICAgIChIVE1MQ29s
bGVjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjpnZXRQcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKiBodG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5oOgorICAgICAg
ICAoSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uKToKKwogMjAxMy0wMi0yNyAgSmVmZnJleSBQZmF1
ICA8anBmYXVAYXBwbGUuY29tPgogCiAgICAgICAgIENhY2hlIHBhcnRpdGlvbmluZyBkb2VzIG5v
dCBhZmZlY3QgaWZyYW1lIE1haW5SZXNvdXJjZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxNDQ2OTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQko
d29ya2luZyBjb3B5KQpAQCAtMjIxOCw5ICsyMjE4LDE1IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7XG4iKTsKICAgICAgICAgaWYgKCRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbmRleGVkR2V0dGVyIn0gfHwgJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik51bWVyaWNJbmRleGVkR2V0dGVyIn0pIHsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdGF0
aWNfY2FzdDwke2ludGVyZmFjZU5hbWV9Kj4odGhpc09iamVjdC0+aW1wbCgpKS0+bGVuZ3RoKCk7
ICsraSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHByb3Bl
cnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpO1xuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmll
cjo6ZnJvbShleGVjLCBpKSk7XG5cbiIpOwogICAgICAgICB9Ci0gICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZXMsIG1vZGUpO1xuIik7CisgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+
SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIkhUTUxDb2xsZWN0aW9uIikpIHsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZlY3RvcjxTdHJpbmc+IHByb3BlcnR5TmFt
ZVN0cmluZ3M7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHN0YXRp
Y19jYXN0PCR7aW50ZXJmYWNlTmFtZX0qPih0aGlzT2JqZWN0LT5pbXBsKCkpLT5nZXRQcm9wZXJ0
eU5hbWVzKHByb3BlcnR5TmFtZVN0cmluZ3MpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVydHlOYW1lU3RyaW5n
cy5zaXplKCk7ICsraSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXIoZXhlYywgcHJvcGVydHlOYW1lU3RyaW5n
c1tpXS5pbXBsKCkpKTtcblxuIik7CisgICAgICAgIH0KKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBtb2RlKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2aXNpb24gMTQ0Njk0KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHdvcmtpbmcgY29weSkKQEAg
LTI2MjEsNyArMjYyMSwxMiBAQCBFTkQKICAgICAjIElmIHRoZXJlIGlzIGEgY3VzdG9tIGVudW1l
cmF0b3IsIHRoZXJlIE1VU1QgYmUgY3VzdG9tIHF1ZXJ5IHRvIHByb3Blcmx5IGNvbW11bmljYXRl
IHByb3BlcnR5IGF0dHJpYnV0ZXMuCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICRoYXNFbnVtZXJh
dG9yID8gIiR7djhJbnRlcmZhY2VOYW1lfTo6bmFtZWRQcm9wZXJ0eVF1ZXJ5LCAiIDogIjAsICIp
OwogICAgIHB1c2goQGltcGxDb250ZW50LCAkaGFzRGVsZXRlciA/ICIke3Y4SW50ZXJmYWNlTmFt
ZX06Om5hbWVkUHJvcGVydHlEZWxldGVyLCAiIDogIjAsICIpOwotICAgIHB1c2goQGltcGxDb250
ZW50LCAkaGFzRW51bWVyYXRvciA/ICIke3Y4SW50ZXJmYWNlTmFtZX06Om5hbWVkUHJvcGVydHlF
bnVtZXJhdG9yIiA6ICIwIik7CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVy
ZmFjZSgkaW50ZXJmYWNlLCAiSFRNTENvbGxlY3Rpb24iKSkgeworICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgImNvbGxlY3Rpb25OYW1lZFByb3BlcnR5RW51bWVyYXRvcjwke2ludGVyZmFjZU5h
bWV9PiIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRo
YXNFbnVtZXJhdG9yID8gIiR7djhJbnRlcmZhY2VOYW1lfTo6bmFtZWRQcm9wZXJ0eUVudW1lcmF0
b3IiIDogIjAiKTsKKyAgICB9CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIpO1xuIik7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5oCShyZXZpc2lv
biAxNDQ2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiwxOCBAQCB0ZW1wbGF0ZTxjbGFzcyBDb2xsZWN0
aW9uPiBzdGF0aWMgdjg6OkhhCiAgICAgcmV0dXJuIHByb3BlcnRpZXM7CiB9CiAKKy8vIEdldCBh
biBhcnJheSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBuYW1lZCBwcm9wZXJ0aWVzIG9mIEhUTUxD
b2xsZWN0aW9uIGFuZCBpdHMgc3ViY2xhc3Nlcy4KK3RlbXBsYXRlPGNsYXNzIENvbGxlY3Rpb24+
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpBcnJheT4gY29sbGVjdGlvbk5hbWVkUHJvcGVydHlFbnVt
ZXJhdG9yKGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVmVjdG9yPFN0cmlu
Zz4gcHJvcGVydHlOYW1lU3RyaW5nczsKKyAgICB0b05hdGl2ZUNvbGxlY3Rpb248Q29sbGVjdGlv
bj4oaW5mby5Ib2xkZXIoKSktPmdldFByb3BlcnR5TmFtZXMocHJvcGVydHlOYW1lU3RyaW5ncyk7
CisKKyAgICB2ODo6SGFuZGxlPHY4OjpBcnJheT4gcHJvcGVydHlOYW1lcyA9IHY4OjpBcnJheTo6
TmV3KHByb3BlcnR5TmFtZVN0cmluZ3Muc2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcHJvcGVydHlOYW1lU3RyaW5ncy5zaXplKCk7ICsraSkKKyAgICAgICAgcHJvcGVydHlO
YW1lcy0+U2V0KHY4SW50ZWdlcihpLCBpbmZvLkdldElzb2xhdGUoKSksIHY4U3RyaW5nKHByb3Bl
cnR5TmFtZVN0cmluZ3NbaV0sIGluZm8uR2V0SXNvbGF0ZSgpKSk7CisKKyAgICByZXR1cm4gcHJv
cGVydHlOYW1lczsKK30KIAogLy8gQSB0ZW1wbGF0ZSBmb3IgaW5kZXhlZCBnZXR0ZXJzIG9uIGNv
bGxlY3Rpb25zIG9mIHN0cmluZ3MgdGhhdCBzaG91bGQgcmV0dXJuIG51bGwgaWYgdGhlIHJlc3Vs
dGluZyBzdHJpbmcgaXMgYSBudWxsIHN0cmluZy4KIHRlbXBsYXRlPGNsYXNzIENvbGxlY3Rpb24+
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29sbGVjdGlvblN0cmluZ09yVW5kZWZpbmVk
SW5kZXhlZFByb3BlcnR5R2V0dGVyKHVpbnQzMl90IGluZGV4LCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAJKHJl
dmlzaW9uIDE0NDY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03MjUsNCArNzI1LDEzIEBAIHZvaWQgSFRNTENvbGxlY3Rpb246
OmFwcGVuZChOb2RlQ2FjaGVNYXAKICAgICB2ZWN0b3ItPmFwcGVuZChlbGVtZW50KTsKIH0KIAor
dm9pZCBIVE1MQ29sbGVjdGlvbjo6Z2V0UHJvcGVydHlOYW1lcyhWZWN0b3I8U3RyaW5nPiYgcHJv
cGVydHlOYW1lU3RyaW5ncykKK3sKKyAgICB1cGRhdGVOYW1lQ2FjaGUoKTsKKyAgICBmb3IgKE5v
ZGVDYWNoZU1hcDo6aXRlcmF0b3IgaXQgPSBtX25hbWVDYWNoZS5iZWdpbigpOyBpdCAhPSBtX25h
bWVDYWNoZS5lbmQoKTsgKytpdCkKKyAgICAgICAgcHJvcGVydHlOYW1lU3RyaW5ncy5hcHBlbmQo
aXQtPmtleSk7CisgICAgZm9yIChOb2RlQ2FjaGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pZENhY2hl
LmJlZ2luKCk7IGl0ICE9IG1faWRDYWNoZS5lbmQoKTsgKytpdCkKKyAgICAgICAgcHJvcGVydHlO
YW1lU3RyaW5ncy5hcHBlbmQoaXQtPmtleSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDE0NDY5NCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtNjcsNiArNjcsOCBAQCBwdWJsaWM6CiAgICAgRWxlbWVudCogdHJhdmVyc2VGaXJzdEVsZW1l
bnQodW5zaWduZWQmIG9mZnNldEluQXJyYXksIENvbnRhaW5lck5vZGUqIHJvb3QpIGNvbnN0Owog
ICAgIEVsZW1lbnQqIHRyYXZlcnNlRm9yd2FyZFRvT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCwgRWxl
bWVudCogY3VycmVudEVsZW1lbnQsIHVuc2lnbmVkJiBjdXJyZW50T2Zmc2V0LCB1bnNpZ25lZCYg
b2Zmc2V0SW5BcnJheSwgQ29udGFpbmVyTm9kZSogcm9vdCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhWZWN0b3I8U3RyaW5nPiYgcHJvcGVydHlOYW1lU3RyaW5n
cyk7CisKIHByb3RlY3RlZDoKICAgICBIVE1MQ29sbGVjdGlvbihOb2RlKiBiYXNlLCBDb2xsZWN0
aW9uVHlwZSwgSXRlbUFmdGVyT3ZlcnJpZGVUeXBlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTQ0Njk0
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDksNiArMTQ5LDE1IEBAIGJvb2wgSFRNTFByb3BlcnRpZXNDb2xs
ZWN0aW9uOjpoYXNOYW1lZEkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgSFRNTFByb3Bl
cnRpZXNDb2xsZWN0aW9uOjpnZXRQcm9wZXJ0eU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBwcm9wZXJ0
eU5hbWVTdHJpbmdzKQoreworICAgIHVwZGF0ZU5hbWVDYWNoZSgpOworICAgIGlmICghbV9wcm9w
ZXJ0eU5hbWVzKQorICAgICAgICByZXR1cm47CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fcHJvcGVydHlOYW1lcy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgcHJvcGVydHlOYW1lU3Ry
aW5ncy5hcHBlbmQobV9wcm9wZXJ0eU5hbWVzLT5pdGVtKGkpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1JQ1JPREFUQSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaAkocmV2aXNpb24gMTQ0
Njk0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fcHJvcGVy
dHlOYW1lcy5jbGVhcigpOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0eU5h
bWVzKFZlY3RvcjxTdHJpbmc+JiBwcm9wZXJ0eU5hbWVTdHJpbmdzKSBPVkVSUklERTsKKwogcHJp
dmF0ZToKICAgICBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24oTm9kZSopOwogCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxNDQ2OTQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMy0wNCAgQXJrbyBTYWhhICA8YXJrb0Btb3Rvcm9sYS5j
b20+CisKKyAgICAgICAgRW51bWVyYXRpbmcgYW4gSFRNTENvbGxlY3Rpb24gbmVlZHMgdG8gZW51
bWVyYXRlIHRoZSBuYW1lZCBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA2MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL01pY3JvRGF0YS9odG1scHJvcGVydGllc2Nv
bGxlY3Rpb24tZW51bWVyYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9NaWNyb0RhdGEvaHRtbHByb3BlcnRpZXNjb2xsZWN0aW9uLWVudW1lcmF0aW9uLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLWVudW1lcmF0aW9uLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tZW51
bWVyYXRpb24uaHRtbDogQWRkZWQuCisKIDIwMTMtMDItMjcgIEplZmZyZXkgUGZhdSAgPGpwZmF1
QGFwcGxlLmNvbT4KIAogICAgICAgICBDYWNoZSBwYXJ0aXRpb25pbmcgZG9lcyBub3QgYWZmZWN0
IGlmcmFtZSBNYWluUmVzb3VyY2VzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sY29s
bGVjdGlvbi1lbnVtZXJhdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tZW51bWVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tZW51bWVyYXRp
b24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKK1RoaXMgdGVz
dCBlbnN1cmVzIHRoYXQgSFRNTENvbGxlY3Rpb24gZW51bWVyYXRlcyB0aGUgbmFtZWQgcHJvcGVy
dGllcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3QgSFRNTENvbGxlY3Rp
b24uLgorUEFTUyAnZm9ybU5hbWUxJyBpbiBkb2N1bWVudC5mb3JtcyBpcyB0cnVlCitQQVNTICdt
eUZvcm0nIGluIGRvY3VtZW50LmZvcm1zIGlzIHRydWUKK1BBU1MgJ2Zvcm1OYW1lMicgaW4gZG9j
dW1lbnQuZm9ybXMgaXMgdHJ1ZQorUEFTUyAnZm9ybUlkMScgaW4gZG9jdW1lbnQuZm9ybXMgaXMg
dHJ1ZQorUEFTUyAnZm9ybUlkMicgaW4gZG9jdW1lbnQuZm9ybXMgaXMgdHJ1ZQorUEFTUyAnZm9y
bUlkMycgaW4gZG9jdW1lbnQuZm9ybXMgaXMgdHJ1ZQorUEFTUyAnZm9ybUlkNCcgaW4gZG9jdW1l
bnQuZm9ybXMgaXMgdHJ1ZQorCitUZXN0IEhUTUxBbGxDb2xsZWN0aW9uLi4KK1BBU1MgJ2Zvcm1O
YW1lMScgaW4gZG9jdW1lbnQuYWxsIGlzIHRydWUKK1BBU1MgJ215Rm9ybScgaW4gZG9jdW1lbnQu
YWxsIGlzIHRydWUKK1BBU1MgJ2Zvcm1OYW1lMicgaW4gZG9jdW1lbnQuYWxsIGlzIHRydWUKK1BB
U1MgJ2Zvcm1JZDEnIGluIGRvY3VtZW50LmFsbCBpcyB0cnVlCitQQVNTICdmb3JtSWQyJyBpbiBk
b2N1bWVudC5hbGwgaXMgdHJ1ZQorUEFTUyAnZm9ybUlkMycgaW4gZG9jdW1lbnQuYWxsIGlzIHRy
dWUKK1BBU1MgJ2Zvcm1JZDQnIGluIGRvY3VtZW50LmFsbCBpcyB0cnVlCitQQVNTICdteVNlbGVj
dCcgaW4gZG9jdW1lbnQuYWxsIGlzIHRydWUKK1BBU1MgJ3NlbGVjdE5hbWUnIGluIGRvY3VtZW50
LmFsbCBpcyB0cnVlCitQQVNTICdzZWxlY3RJZDEnIGluIGRvY3VtZW50LmFsbCBpcyB0cnVlCitQ
QVNTICdzZWxlY3RJZDInIGluIGRvY3VtZW50LmFsbCBpcyB0cnVlCitQQVNTICdzZWxlY3RJZDMn
IGluIGRvY3VtZW50LmFsbCBpcyB0cnVlCitQQVNTICdvcHRpb25JZDEnIGluIGRvY3VtZW50LmFs
bCBpcyB0cnVlCitQQVNTICdvcHRpb25JZDInIGluIGRvY3VtZW50LmFsbCBpcyB0cnVlCitQQVNT
ICdvcHRpb25JZDMnIGluIGRvY3VtZW50LmFsbCBpcyB0cnVlCisKK1Rlc3QgSFRNTEZvcm1Db250
cm9sQ29sbGVjdGlvbi4uCitQQVNTICdteVNlbGVjdCcgaW4gZm9ybS5lbGVtZW50cyBpcyB0cnVl
CitQQVNTICdzZWxlY3ROYW1lJyBpbiBmb3JtLmVsZW1lbnRzIGlzIHRydWUKK1BBU1MgJ3NlbGVj
dElkMScgaW4gZm9ybS5lbGVtZW50cyBpcyB0cnVlCitQQVNTICdzZWxlY3RJZDInIGluIGZvcm0u
ZWxlbWVudHMgaXMgdHJ1ZQorUEFTUyAnc2VsZWN0SWQzJyBpbiBmb3JtLmVsZW1lbnRzIGlzIHRy
dWUKKworVGVzdCBIVE1MT3B0aW9uQ29sbGVjdGlvbi4uCitQQVNTICdteU9wdGlvbicgaW4gc2Vs
ZWN0Lm9wdGlvbnMgaXMgdHJ1ZQorUEFTUyAnb3B0aW9uTmFtZScgaW4gc2VsZWN0Lm9wdGlvbnMg
aXMgdHJ1ZQorUEFTUyAnb3B0aW9uSWQyJyBpbiBzZWxlY3Qub3B0aW9ucyBpcyB0cnVlCitQQVNT
ICdvcHRpb25JZDMnIGluIHNlbGVjdC5vcHRpb25zIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL2h0bWxjb2xsZWN0aW9uLWVudW1lcmF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tZW51bWVyYXRpb24uaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLWVudW1lcmF0aW9u
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0IGVuc3VyZXMgdGhhdCBIVE1MQ29sbGVjdGlvbiBlbnVtZXJhdGVzIHRoZSBuYW1lZCBw
cm9wZXJ0aWVzLiIpOworCit2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7CisKK2Z1bmN0aW9u
IGNyZWF0ZUVsZW1lbnQodHlwZSwgcHJvcHMsIGNvbnRlbnRzKSB7CisgICAgdmFyIGVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHR5cGUpOworICAgIGZvciAodmFyIGkgaW4gcHJvcHMp
IHsKKyAgICAgIGlmIChwcm9wcy5oYXNPd25Qcm9wZXJ0eShpKSkgeworICAgICAgICBlbGVtZW50
LnNldEF0dHJpYnV0ZShpLHByb3BzW2ldKTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGVs
ZW1lbnQ7Cit9CisKK3ZhciBzZWxlY3Q7Cit2YXIgZm9ybTsKK2Z1bmN0aW9uIHNldHVwKCkKK3sK
KyAgICAvLyA8Zm9ybT4gZWxlbWVudHMgZm9yIEhUTUxDb2xsZWN0aW9uIHRlc3QKKyAgICBmb3Jt
ID0gY3JlYXRlRWxlbWVudCgiZm9ybSIsIHtpZDogImZvcm1JZDEiLCBuYW1lOiJmb3JtTmFtZTEi
fSk7CisgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGZvcm0pOworICAgIGNvbnRhaW5lci5hcHBl
bmRDaGlsZChjcmVhdGVFbGVtZW50KCJmb3JtIiwge2lkOiAiZm9ybUlkMiIsIG5hbWU6ICJteUZv
cm0ifSkpOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChjcmVhdGVFbGVtZW50KCJmb3JtIiwg
e2lkOiAiZm9ybUlkMyIsIG5hbWU6ICJteUZvcm0ifSkpOworICAgIGNvbnRhaW5lci5hcHBlbmRD
aGlsZChjcmVhdGVFbGVtZW50KCJmb3JtIiwge2lkOiAiZm9ybUlkNCIsIG5hbWU6ICJmb3JtTmFt
ZTIifSkpOworCisgICAgLy8gPHNlbGVjdD4gZWxlbWVudHMgZm9yIEhUTUxGb3JtQ29udHJvbENv
bGxlY3Rpb24gdGVzdAorICAgIHNlbGVjdCA9IGNyZWF0ZUVsZW1lbnQoInNlbGVjdCIsIHtpZDog
InNlbGVjdElkMSIsIG5hbWU6ICJteVNlbGVjdCJ9KTsKKyAgICBmb3JtLmFwcGVuZENoaWxkKHNl
bGVjdCk7CisgICAgZm9ybS5hcHBlbmRDaGlsZChjcmVhdGVFbGVtZW50KCJzZWxlY3QiLCB7aWQ6
ICJzZWxlY3RJZDIiLCBuYW1lOiAibXlTZWxlY3QifSkpOworICAgIGZvcm0uYXBwZW5kQ2hpbGQo
Y3JlYXRlRWxlbWVudCgic2VsZWN0Iiwge2lkOiAic2VsZWN0SWQzIiwgbmFtZTogInNlbGVjdE5h
bWUifSkpOworCisgICAgLy8gPG9wdGlvbj4gZWxlbWVudHMgZm9yIEhUTUxPcHRpb25Db2xsZWN0
aW9uCisgICAgdmFyIG9wdGlvbiA9IGNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIsIHtpZDogIm9wdGlv
bklkMSIsIG5hbWU6ICJteU9wdGlvbiJ9KTsKKyAgICBzZWxlY3QuYXBwZW5kQ2hpbGQob3B0aW9u
KTsKKyAgICBzZWxlY3QuYXBwZW5kQ2hpbGQoY3JlYXRlRWxlbWVudCgib3B0aW9uIiwge2lkOiAi
b3B0aW9uSWQyIiwgbmFtZTogIm15T3B0aW9uIn0pKTsKKyAgICBzZWxlY3QuYXBwZW5kQ2hpbGQo
Y3JlYXRlRWxlbWVudCgib3B0aW9uIiwge2lkOiAib3B0aW9uSWQzIiwgbmFtZTogIm9wdGlvbk5h
bWUifSkpOworfQorCitzZXR1cCgpOworCitkZWJ1ZygiVGVzdCBIVE1MQ29sbGVjdGlvbi4uIik7
CitzaG91bGRCZVRydWUoIidmb3JtTmFtZTEnIGluIGRvY3VtZW50LmZvcm1zIik7CitzaG91bGRC
ZVRydWUoIidteUZvcm0nIGluIGRvY3VtZW50LmZvcm1zIik7CitzaG91bGRCZVRydWUoIidmb3Jt
TmFtZTInIGluIGRvY3VtZW50LmZvcm1zIik7CitzaG91bGRCZVRydWUoIidmb3JtSWQxJyBpbiBk
b2N1bWVudC5mb3JtcyIpOworc2hvdWxkQmVUcnVlKCInZm9ybUlkMicgaW4gZG9jdW1lbnQuZm9y
bXMiKTsKK3Nob3VsZEJlVHJ1ZSgiJ2Zvcm1JZDMnIGluIGRvY3VtZW50LmZvcm1zIik7CitzaG91
bGRCZVRydWUoIidmb3JtSWQ0JyBpbiBkb2N1bWVudC5mb3JtcyIpOworCitkZWJ1ZygiIik7Citk
ZWJ1ZygiVGVzdCBIVE1MQWxsQ29sbGVjdGlvbi4uIik7CitzaG91bGRCZVRydWUoIidmb3JtTmFt
ZTEnIGluIGRvY3VtZW50LmFsbCIpOworc2hvdWxkQmVUcnVlKCInbXlGb3JtJyBpbiBkb2N1bWVu
dC5hbGwiKTsKK3Nob3VsZEJlVHJ1ZSgiJ2Zvcm1OYW1lMicgaW4gZG9jdW1lbnQuYWxsIik7Citz
aG91bGRCZVRydWUoIidmb3JtSWQxJyBpbiBkb2N1bWVudC5hbGwiKTsKK3Nob3VsZEJlVHJ1ZSgi
J2Zvcm1JZDInIGluIGRvY3VtZW50LmFsbCIpOworc2hvdWxkQmVUcnVlKCInZm9ybUlkMycgaW4g
ZG9jdW1lbnQuYWxsIik7CitzaG91bGRCZVRydWUoIidmb3JtSWQ0JyBpbiBkb2N1bWVudC5hbGwi
KTsKK3Nob3VsZEJlVHJ1ZSgiJ215U2VsZWN0JyBpbiBkb2N1bWVudC5hbGwiKTsKK3Nob3VsZEJl
VHJ1ZSgiJ3NlbGVjdE5hbWUnIGluIGRvY3VtZW50LmFsbCIpOworc2hvdWxkQmVUcnVlKCInc2Vs
ZWN0SWQxJyBpbiBkb2N1bWVudC5hbGwiKTsKK3Nob3VsZEJlVHJ1ZSgiJ3NlbGVjdElkMicgaW4g
ZG9jdW1lbnQuYWxsIik7CitzaG91bGRCZVRydWUoIidzZWxlY3RJZDMnIGluIGRvY3VtZW50LmFs
bCIpOworc2hvdWxkQmVUcnVlKCInb3B0aW9uSWQxJyBpbiBkb2N1bWVudC5hbGwiKTsKK3Nob3Vs
ZEJlVHJ1ZSgiJ29wdGlvbklkMicgaW4gZG9jdW1lbnQuYWxsIik7CitzaG91bGRCZVRydWUoIidv
cHRpb25JZDMnIGluIGRvY3VtZW50LmFsbCIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBI
VE1MRm9ybUNvbnRyb2xDb2xsZWN0aW9uLi4iKTsKK3Nob3VsZEJlVHJ1ZSgiJ215U2VsZWN0JyBp
biBmb3JtLmVsZW1lbnRzIik7CitzaG91bGRCZVRydWUoIidzZWxlY3ROYW1lJyBpbiBmb3JtLmVs
ZW1lbnRzIik7CitzaG91bGRCZVRydWUoIidzZWxlY3RJZDEnIGluIGZvcm0uZWxlbWVudHMiKTsK
K3Nob3VsZEJlVHJ1ZSgiJ3NlbGVjdElkMicgaW4gZm9ybS5lbGVtZW50cyIpOworc2hvdWxkQmVU
cnVlKCInc2VsZWN0SWQzJyBpbiBmb3JtLmVsZW1lbnRzIik7CisKK2RlYnVnKCIiKTsKK2RlYnVn
KCJUZXN0IEhUTUxPcHRpb25Db2xsZWN0aW9uLi4iKTsKK3Nob3VsZEJlVHJ1ZSgiJ215T3B0aW9u
JyBpbiBzZWxlY3Qub3B0aW9ucyIpOworc2hvdWxkQmVUcnVlKCInb3B0aW9uTmFtZScgaW4gc2Vs
ZWN0Lm9wdGlvbnMiKTsKK3Nob3VsZEJlVHJ1ZSgiJ29wdGlvbklkMicgaW4gc2VsZWN0Lm9wdGlv
bnMiKTsKK3Nob3VsZEJlVHJ1ZSgiJ29wdGlvbklkMycgaW4gc2VsZWN0Lm9wdGlvbnMiKTsKKwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9N
aWNyb0RhdGEvaHRtbHByb3BlcnRpZXNjb2xsZWN0aW9uLWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvaHRtbHByb3Bl
cnRpZXNjb2xsZWN0aW9uLWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9odG1scHJvcGVydGllc2NvbGxlY3Rpb24t
ZW51bWVyYXRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTggQEAK
K1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uIGVudW1lcmF0
ZXMgdGhlIG5hbWVkIHByb3BlcnRpZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitDcmVhdGVkIGVsZW1lbnQgb2YgdHlwZTogZGl2CisKK1N0YXJ0IHRlc3QuLgorUEFTUyAncXV4
JyBpbiBlbGVtZW50LnByb3BlcnRpZXMgaXMgdHJ1ZQorUEFTUyAnYmFyJyBpbiBlbGVtZW50LnBy
b3BlcnRpZXMgaXMgdHJ1ZQorUEFTUyAnRk9PJyBpbiBlbGVtZW50LnByb3BlcnRpZXMgaXMgdHJ1
ZQorUEFTUyAnZm9vJyBpbiBlbGVtZW50LnByb3BlcnRpZXMgaXMgdHJ1ZQorUEFTUyAnRk9vJyBp
biBlbGVtZW50LnByb3BlcnRpZXMgaXMgdHJ1ZQorUEFTUyAnYmF6JyBpbiBlbGVtZW50LnByb3Bl
cnRpZXMgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9odG1scHJvcGVy
dGllc2NvbGxlY3Rpb24tZW51bWVyYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9NaWNyb0RhdGEvaHRtbHByb3BlcnRpZXNjb2xsZWN0aW9uLWVudW1lcmF0aW9u
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvaHRt
bHByb3BlcnRpZXNjb2xsZWN0aW9uLWVudW1lcmF0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwyNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL21pY3JvZGF0YS1jb21tb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgSFRN
TFByb3BlcnRpZXNDb2xsZWN0aW9uIGVudW1lcmF0ZXMgdGhlIG5hbWVkIHByb3BlcnRpZXMuIik7
Cit2YXIgY29udGFpbmVyID0gY3JlYXRlRWxlbWVudCgnZGl2Jywge30sICc8ZGl2IGl0ZW1wcm9w
PSJxdXgiIGlkPSJyZWZJZCI+PC9kaXY+PGRpdiBpdGVtc2NvcGUgaXRlbXJlZj0icmVmSWQiPjxk
aXYgaXRlbXByb3A9ImJhciI+PGRpdiBpdGVtcHJvcD0iRk9PIj48L2Rpdj48ZGl2IGl0ZW1wcm9w
PSJmb28gRk9vIGZvbyI+PC9kaXY+PC9kaXY+PGRpdiBpdGVtcHJvcD0iYmF6Ij48L2Rpdj48L2Rp
dj4nKTsKK3ZhciBlbGVtZW50ID0gY29udGFpbmVyLmNoaWxkcmVuWzFdOworCitkZWJ1ZygiIik7
CitkZWJ1ZygiU3RhcnQgdGVzdC4uIik7CitzaG91bGRCZVRydWUoIidxdXgnIGluIGVsZW1lbnQu
cHJvcGVydGllcyIpOworc2hvdWxkQmVUcnVlKCInYmFyJyBpbiBlbGVtZW50LnByb3BlcnRpZXMi
KTsKK3Nob3VsZEJlVHJ1ZSgiJ0ZPTycgaW4gZWxlbWVudC5wcm9wZXJ0aWVzIik7CitzaG91bGRC
ZVRydWUoIidmb28nIGluIGVsZW1lbnQucHJvcGVydGllcyIpOworc2hvdWxkQmVUcnVlKCInRk9v
JyBpbiBlbGVtZW50LnByb3BlcnRpZXMiKTsKK3Nob3VsZEJlVHJ1ZSgiJ2JheicgaW4gZWxlbWVu
dC5wcm9wZXJ0aWVzIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="212284"
          type_id="1"
          status="+"
          setter="haraken"
    />
          </attachment>
      

    </bug>

</bugzilla>