<?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>82021</bug_id>
          
          <creation_ts>2012-03-22 23:21:16 -0700</creation_ts>
          <short_desc>Position should be able to have ShadowRoot as a container.</short_desc>
          <delta_ts>2012-05-09 02:26:22 -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>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>82177</dependson>
          <blocked>82697</blocked>
    
    <blocked>81741</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Shinya Kawanaka">shinyak</reporter>
          <assigned_to name="Shinya Kawanaka">shinyak</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>enrica</cc>
    
    <cc>hayato</cc>
    
    <cc>max.hong.shen</cc>
    
    <cc>morrita</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>586107</commentid>
    <comment_count>0</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-03-22 23:21:16 -0700</bug_when>
    <thetext>Currently Position and Range are not allowed to have ShadowRoot as a container.
However, this makes it difficult to point direct children of ShadowRoot. Position and Range try pointing direct children of ShadowRoot, but since it&apos;s not allowed, they become null. Since a lot of code does not expect Position and Range become null,  a lot of crashes are caused when doing something on elements in shadow subtrees.

We should try to allow Position and Range to have ShadowRoot as a container.
Note that we should be careful not to expose a ShadowRoot in JS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586140</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-23 00:12:35 -0700</bug_when>
    <thetext>This is going to be a really patch to review. You basically need to manually audit the entire editing code to make sure nothing depends on the current behavior. When text from controls transitioned to use new shadow DOM code, there were quite few places where we had to make changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588601</commentid>
    <comment_count>2</comment_count>
      <attachid>133987</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-03-26 23:49:50 -0700</bug_when>
    <thetext>Created attachment 133987
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588787</commentid>
    <comment_count>3</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-27 05:06:46 -0700</bug_when>
    <thetext>I support this approach.

From a higher viewpoint, it&apos;s the only path to allow position on shadow root
if we want to  define certain types of positions. And we want to do it.
Otherwise we&apos;d have no way to define any position between shadow children.

Veteran built-in elements avoid this ambiguousness by forming its shadow tree carefully
and making tricky position impossible by giving -webkit-user-modify:none.  
But such an approach is fragile and can cause problems like http://wkb.ug/65738</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591032</commentid>
    <comment_count>4</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-03-29 04:27:49 -0700</bug_when>
    <thetext>Could someone review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591233</commentid>
    <comment_count>5</comment_count>
      <attachid>133987</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-03-29 09:11:16 -0700</bug_when>
    <thetext>Comment on attachment 133987
Patch

The patch makes sense to me, but I defer to Ryosuke, because he knows this area a lot better. Niwa-san, review? review? review? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591663</commentid>
    <comment_count>6</comment_count>
      <attachid>133987</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-29 15:49:42 -0700</bug_when>
    <thetext>Comment on attachment 133987
Patch

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

How about all the places in VisibleSelection that call shadowAncestorNode and nonBoundaryShadowTreeRootNode? Editor::nextVisibleRange, Editor::rangeOfString, etc... call call some shadow-related functions.

In short, I don&apos;t know how to review this patch. Unfortunately, having passed all existing tests is not a good enough indication that a given change is correct in editing.

&gt; Source/WebCore/dom/Position.cpp:94
&gt; -    ASSERT(!((anchorType == PositionIsBeforeChildren || anchorType == PositionIsAfterChildren)
&gt; -        &amp;&amp; (m_anchorNode-&gt;isTextNode() || editingIgnoresContent(m_anchorNode.get()))));
&gt; +    ASSERT(!m_anchorNode.get()
&gt; +        || (!((anchorType == PositionIsBeforeChildren || anchorType == PositionIsAfterChildren)
&gt; +             &amp;&amp; (m_anchorNode-&gt;isTextNode() || editingIgnoresContent(m_anchorNode.get())))));

Why are we making this change? As far as I know, we should never be making a position before/after children with a null container.

&gt; LayoutTests/ChangeLog:22
&gt; +2012-03-26  Shinya Kawanaka  &lt;shinyak@chromium.org&gt;
&gt; +
&gt; +        Position should be able to have ShadowRoot as a container.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=82021
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        * fast/dom/shadow/doubleclick-on-meter-in-shadow-crash.html: Added.
&gt; +        * fast/dom/shadow/rightclick-on-meter-in-shadow-crash.html: Added.
&gt; +

Duplicate entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591859</commentid>
    <comment_count>7</comment_count>
      <attachid>134720</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-03-29 21:21:47 -0700</bug_when>
    <thetext>Created attachment 134720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605277</commentid>
    <comment_count>8</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-04-18 18:23:01 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I support this approach.
&gt; 
&gt; From a higher viewpoint, it&apos;s the only path to allow position on shadow root
&gt; if we want to  define certain types of positions. And we want to do it.
&gt; Otherwise we&apos;d have no way to define any position between shadow children.
&gt; 
&gt; Veteran built-in elements avoid this ambiguousness by forming its shadow tree carefully
&gt; and making tricky position impossible by giving -webkit-user-modify:none.  
&gt; But such an approach is fragile and can cause problems like http://wkb.ug/65738

Such a bug is caused by another issue. The reason of the bug is UA shadow elements is selectable.
But the reason of this bug is elements are not selectable correctly.

# I confirmed my patch doesn&apos;t fix http://wkb.ug/65738</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618295</commentid>
    <comment_count>9</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-05-07 21:49:14 -0700</bug_when>
    <thetext>I&apos;ve extracted all code where Position::containerNode() is used.

https://docs.google.com/a/chromium.org/spreadsheet/ccc?key=0Aty2DXLelNGhdFhuaWliQWFnNEY0blNtX2lLUTRDZHc&amp;pli=1#gid=0

Maybe we should create explicit tests for them to prove this patch does not introduce vulnerability...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618311</commentid>
    <comment_count>10</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-05-07 22:15:36 -0700</bug_when>
    <thetext>I&apos;ve talked with rniwa and morrita in IRC, we have decided to add this patch behind the SHADOW_DOM flag.

Fixing editing bugs in Shadow DOM is really necessary this patch. Most of them depends on this.
So when this patch is landed, we can proceed fixing editing bugs one by one. This could be a great step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618436</commentid>
    <comment_count>11</comment_count>
      <attachid>140698</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-05-08 02:27:16 -0700</bug_when>
    <thetext>Created attachment 140698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618496</commentid>
    <comment_count>12</comment_count>
      <attachid>140698</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-08 07:03:25 -0700</bug_when>
    <thetext>Comment on attachment 140698
Patch

Attachment 140698 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12642640</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618499</commentid>
    <comment_count>13</comment_count>
      <attachid>140698</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-05-08 07:07:41 -0700</bug_when>
    <thetext>Comment on attachment 140698
Patch

Attachment 140698 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12648292</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618500</commentid>
    <comment_count>14</comment_count>
      <attachid>140698</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-08 07:08:37 -0700</bug_when>
    <thetext>Comment on attachment 140698
Patch

Attachment 140698 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12643642</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618556</commentid>
    <comment_count>15</comment_count>
      <attachid>140698</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-05-08 09:17:38 -0700</bug_when>
    <thetext>Comment on attachment 140698
Patch

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

&gt; Source/WebCore/ChangeLog:16
&gt; +        Currently this change is only enabled if shadow dom flag is enabled, since we cannot
&gt; +        prove this change does not destroy the existing behavior. However, this change is really required
&gt; +        to fix other editing bugs in Shadow DOM. A bunch of patches and tests will be added to

I am ok with this as a temporary measure, but we need to have a plan to move forward. At some point, we will turn Shadow DOM on by default :)

&gt; Source/WebCore/dom/Position.h:221
&gt; +inline ContainerNode* findParent(const Node* node)

A free-standing function with a generic name like this seems like a bad thing. Can it be a static member of Position?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618574</commentid>
    <comment_count>16</comment_count>
      <attachid>140698</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-08 09:42:16 -0700</bug_when>
    <thetext>Comment on attachment 140698
Patch

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

Please fix all the nits below and builds before you land.

&gt; Source/WebCore/dom/Position.cpp:114
&gt; +    ASSERT(!m_anchorNode || !editingIgnoresContent(m_anchorNode.get()));

If RuntimeEnabledFeatures::shadowDOMEnabled() is false, then m_anchorNode should not be a shadow root.

&gt;&gt; Source/WebCore/dom/Position.h:221
&gt;&gt; +inline ContainerNode* findParent(const Node* node)
&gt; 
&gt; A free-standing function with a generic name like this seems like a bad thing. Can it be a static member of Position?

Yes, please make this a private static member of Position. I would also rename it to something like parent(). I don&apos;t think we want to prefix it with &quot;find&quot; because it doesn&apos;t really search for the parent.

&gt; Source/WebCore/dom/Position.h:227
&gt; +    // FIXME: Since enabling Position to have ShadowRoot as a container is not proved not to
&gt; +    // break editing code. However, this is really required for editing in Shadow DOM.
&gt; +    // So we implement this behind the flag. After writing a lot of tests for them to confirm
&gt; +    // this is safe, we will remove the flag for this purpose.
&gt; +    // See also this umbrella bugs. http://wkb.ug/82697

This comment just repeats what the code says. You should just say &quot;See http://webkit.org/b/82697&quot; IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>618575</commentid>
    <comment_count>17</comment_count>
      <attachid>140698</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-08 09:42:52 -0700</bug_when>
    <thetext>Comment on attachment 140698
Patch

Ugh... I meant r+, not r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619069</commentid>
    <comment_count>18</comment_count>
      <attachid>140843</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-05-08 18:42:55 -0700</bug_when>
    <thetext>Created attachment 140843
Build test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619076</commentid>
    <comment_count>19</comment_count>
      <attachid>140844</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-05-08 18:52:53 -0700</bug_when>
    <thetext>Created attachment 140844
Build test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619088</commentid>
    <comment_count>20</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-05-08 18:59:37 -0700</bug_when>
    <thetext>Thank you for the reviewing!
I&apos;ve updated the patch to fix what you mentioned. After all the bots are green, I&apos;ll land this patch.

(In reply to comment #16)
&gt; (From update of attachment 140698 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140698&amp;action=review
&gt; 
&gt; Please fix all the nits below and builds before you land.
&gt; 
&gt; &gt; Source/WebCore/dom/Position.cpp:114
&gt; &gt; +    ASSERT(!m_anchorNode || !editingIgnoresContent(m_anchorNode.get()));
&gt; 
&gt; If RuntimeEnabledFeatures::shadowDOMEnabled() is false, then m_anchorNode should not be a shadow root.
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/Position.h:221
&gt; &gt;&gt; +inline ContainerNode* findParent(const Node* node)
&gt; &gt; 
&gt; &gt; A free-standing function with a generic name like this seems like a bad thing. Can it be a static member of Position?
&gt; 
&gt; Yes, please make this a private static member of Position. I would also rename it to something like parent(). I don&apos;t think we want to prefix it with &quot;find&quot; because it doesn&apos;t really search for the parent.
&gt; 
&gt; &gt; Source/WebCore/dom/Position.h:227
&gt; &gt; +    // FIXME: Since enabling Position to have ShadowRoot as a container is not proved not to
&gt; &gt; +    // break editing code. However, this is really required for editing in Shadow DOM.
&gt; &gt; +    // So we implement this behind the flag. After writing a lot of tests for them to confirm
&gt; &gt; +    // this is safe, we will remove the flag for this purpose.
&gt; &gt; +    // See also this umbrella bugs. http://wkb.ug/82697
&gt; 
&gt; This comment just repeats what the code says. You should just say &quot;See http://webkit.org/b/82697&quot; IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619109</commentid>
    <comment_count>21</comment_count>
      <attachid>140844</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-08 19:28:30 -0700</bug_when>
    <thetext>Comment on attachment 140844
Build test

Attachment 140844 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12645546</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619110</commentid>
    <comment_count>22</comment_count>
      <attachid>140844</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-08 19:29:42 -0700</bug_when>
    <thetext>Comment on attachment 140844
Build test

Attachment 140844 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12650498</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619120</commentid>
    <comment_count>23</comment_count>
      <attachid>140856</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-05-08 19:39:44 -0700</bug_when>
    <thetext>Created attachment 140856
Build test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619210</commentid>
    <comment_count>24</comment_count>
      <attachid>140869</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-05-08 23:59:40 -0700</bug_when>
    <thetext>Created attachment 140869
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619304</commentid>
    <comment_count>25</comment_count>
      <attachid>140869</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-09 02:26:15 -0700</bug_when>
    <thetext>Comment on attachment 140869
Patch for landing

Clearing flags on attachment: 140869

Committed r116508: &lt;http://trac.webkit.org/changeset/116508&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619305</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-09 02:26:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133987</attachid>
            <date>2012-03-26 23:49:50 -0700</date>
            <delta_ts>2012-03-29 21:21:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82021-20120327154948.patch</filename>
            <type>text/plain</type>
            <size>15904</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2VhYjBjOTUwMGMzZjZl
MmQyYzUzMDJkOGRlMjExNjZmZWQ2ZTViYi4uYzEwMDg1NGRhMjdiZjcxZGIwMDFjZWI1MDE3ZDUw
ZjY4MGY4YmZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTAzLTI2ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBQb3NpdGlvbiBz
aG91bGQgYmUgYWJsZSB0byBoYXZlIFNoYWRvd1Jvb3QgYXMgYSBjb250YWluZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAyMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIFBvc2l0aW9uIGNv
dWxkIG5vdCB0YWtlIGEgc2hhZG93IHJvb3QgYXMgYSBjb250YWluZXIgbm9kZSwgcG9pbnRpbmcg
dGhlIGRpcmVjdCBjaGlsZHJlbgorICAgICAgICBvZiBhIHNoYWRvdyByb290IHdhcyBkaWZmaWN1
bHQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBpdCBlbmFibGVkLCBhbmQgZml4ZXMgYSBs
b3Qgb2YgY3Jhc2hlcyBjYXVzZWQgYnkgdGhhdCBsaW1pdGF0aW9uLgorICAgICAgICBBbHNvLCB3
ZSBjb25maXJtIHRoYXQgU2hhZG93Um9vdCBpcyBub3QgZXhwb3NlZCB0byBKYXZhU2NyaXB0IGxh
eWVyLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9zaGFkb3cvZG91YmxlY2xpY2stb24tbWV0
ZXItaW4tc2hhZG93LWNyYXNoLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9y
aWdodGNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFzaC5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2RvbS9zaGFkb3cvc2hhZG93LXNlbGVjdGlvbi1ub3QtZXhwb3J0ZWQuaHRtbAorCisgICAg
ICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6Y29udGFpbmVyTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpwcmV2aW91cyk6CisgICAgICAgIChXZWJDb3JlOjpQb3Np
dGlvbjo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6cGFyZW50RWRpdGluZ0Jv
dW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjphdFN0YXJ0T2ZUcmVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjphdEVuZE9mVHJlZSk6CisgICAgICAgICogZG9tL1Bv
c2l0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKToKKwogMjAxMi0w
My0yNiAgS2VuIEJ1Y2hhbmFuICA8a2VucmJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFzc2Vy
dCBmYWlsdXJlIGZyb20gY2FwaXRhbGl6ZWQgUmVuZGVyVGV4dEZyYWdtZW50CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bv
c2l0aW9uLmNwcAppbmRleCAzMWFiNDQ1YTAwNjIwNWQ2OTY1ZWRiMzI0ZjRlNWVjMjk1NmI1ZjBi
Li5jYzE3NDNhMjg4NzJkZjIxYzdlYzRlZGVjN2RiZDI1Yjc3YmFmOTJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5jcHAKQEAgLTgwLDcgKzgwLDYgQEAgUG9zaXRpb246OlBvc2l0aW9uKFBhc3NSZWZQ
dHI8Tm9kZT4gYW5jaG9yTm9kZSwgTGVnYWN5RWRpdGluZ09mZnNldCBvZmZzZXQpCiAgICAgLCBt
X2FuY2hvclR5cGUoYW5jaG9yVHlwZUZvckxlZ2FjeUVkaXRpbmdQb3NpdGlvbihtX2FuY2hvck5v
ZGUuZ2V0KCksIG1fb2Zmc2V0KSkKICAgICAsIG1faXNMZWdhY3lFZGl0aW5nUG9zaXRpb24odHJ1
ZSkKIHsKLSAgICBBU1NFUlQoIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRv
d1Jvb3QoKSk7CiB9CiAKIFBvc2l0aW9uOjpQb3NpdGlvbihQYXNzUmVmUHRyPE5vZGU+IGFuY2hv
ck5vZGUsIEFuY2hvclR5cGUgYW5jaG9yVHlwZSkKQEAgLTg5LDEwICs4OCwxMCBAQCBQb3NpdGlv
bjo6UG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBhbmNob3JOb2RlLCBBbmNob3JUeXBlIGFuY2hv
clR5cGUpCiAgICAgLCBtX2FuY2hvclR5cGUoYW5jaG9yVHlwZSkKICAgICAsIG1faXNMZWdhY3lF
ZGl0aW5nUG9zaXRpb24oZmFsc2UpCiB7Ci0gICAgQVNTRVJUKCFtX2FuY2hvck5vZGUgfHwgIW1f
YW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkpOwogICAgIEFTU0VSVChhbmNob3JUeXBlICE9IFBv
c2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7Ci0gICAgQVNTRVJUKCEoKGFuY2hvclR5cGUgPT0gUG9z
aXRpb25Jc0JlZm9yZUNoaWxkcmVuIHx8IGFuY2hvclR5cGUgPT0gUG9zaXRpb25Jc0FmdGVyQ2hp
bGRyZW4pCi0gICAgICAgICYmIChtX2FuY2hvck5vZGUtPmlzVGV4dE5vZGUoKSB8fCBlZGl0aW5n
SWdub3Jlc0NvbnRlbnQobV9hbmNob3JOb2RlLmdldCgpKSkpKTsKKyAgICBBU1NFUlQoIW1fYW5j
aG9yTm9kZS5nZXQoKQorICAgICAgICB8fCAoISgoYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzQmVm
b3JlQ2hpbGRyZW4gfHwgYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbikKKyAg
ICAgICAgICAgICAmJiAobV9hbmNob3JOb2RlLT5pc1RleHROb2RlKCkgfHwgZWRpdGluZ0lnbm9y
ZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkpKSkpOwogfQogCiBQb3NpdGlvbjo6UG9zaXRp
b24oUGFzc1JlZlB0cjxOb2RlPiBhbmNob3JOb2RlLCBpbnQgb2Zmc2V0LCBBbmNob3JUeXBlIGFu
Y2hvclR5cGUpCkBAIC0xMDEsNyArMTAwLDcgQEAgUG9zaXRpb246OlBvc2l0aW9uKFBhc3NSZWZQ
dHI8Tm9kZT4gYW5jaG9yTm9kZSwgaW50IG9mZnNldCwgQW5jaG9yVHlwZSBhbmNob3JUeXAKICAg
ICAsIG1fYW5jaG9yVHlwZShhbmNob3JUeXBlKQogICAgICwgbV9pc0xlZ2FjeUVkaXRpbmdQb3Np
dGlvbihmYWxzZSkKIHsKLSAgICBBU1NFUlQoIW1fYW5jaG9yTm9kZSB8fCAhZWRpdGluZ0lnbm9y
ZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dS
b290KCkpOworICAgIEFTU0VSVCghbV9hbmNob3JOb2RlIHx8ICFlZGl0aW5nSWdub3Jlc0NvbnRl
bnQobV9hbmNob3JOb2RlLmdldCgpKSk7CiAgICAgQVNTRVJUKGFuY2hvclR5cGUgPT0gUG9zaXRp
b25Jc09mZnNldEluQW5jaG9yKTsKIH0KIApAQCAtMTQzLDcgKzE0Miw3IEBAIE5vZGUqIFBvc2l0
aW9uOjpjb250YWluZXJOb2RlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIG1fYW5jaG9yTm9kZS5n
ZXQoKTsKICAgICBjYXNlIFBvc2l0aW9uSXNCZWZvcmVBbmNob3I6CiAgICAgY2FzZSBQb3NpdGlv
bklzQWZ0ZXJBbmNob3I6Ci0gICAgICAgIHJldHVybiBtX2FuY2hvck5vZGUtPm5vblNoYWRvd0Jv
dW5kYXJ5UGFyZW50Tm9kZSgpOworICAgICAgICByZXR1cm4gbV9hbmNob3JOb2RlLT5wYXJlbnRO
b2RlKCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpA
QCAtMjAzLDcgKzIwMiw3IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2
YWxlbnQoKSBjb25zdAogICAgIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBvbmx5IGJlIG5l
Y2Vzc2FyeSBmb3IgbGVnYWN5IHBvc2l0aW9ucywgYnV0IGlzIGFsc28gbmVlZGVkIGZvciBwb3Np
dGlvbnMgYmVmb3JlIGFuZCBhZnRlciBUYWJsZXMKICAgICBpZiAobV9vZmZzZXQgPD0gMCAmJiAo
bV9hbmNob3JUeXBlICE9IFBvc2l0aW9uSXNBZnRlckFuY2hvciAmJiBtX2FuY2hvclR5cGUgIT0g
UG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4pKSB7Ci0gICAgICAgIGlmIChtX2FuY2hvck5vZGUtPm5v
blNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpICYmIChlZGl0aW5nSWdub3Jlc0NvbnRlbnQobV9h
bmNob3JOb2RlLmdldCgpKSB8fCBpc1RhYmxlRWxlbWVudChtX2FuY2hvck5vZGUuZ2V0KCkpKSkK
KyAgICAgICAgaWYgKG1fYW5jaG9yTm9kZS0+cGFyZW50Tm9kZSgpICYmIChlZGl0aW5nSWdub3Jl
c0NvbnRlbnQobV9hbmNob3JOb2RlLmdldCgpKSB8fCBpc1RhYmxlRWxlbWVudChtX2FuY2hvck5v
ZGUuZ2V0KCkpKSkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9k
ZShtX2FuY2hvck5vZGUuZ2V0KCkpOwogICAgICAgICByZXR1cm4gUG9zaXRpb24obV9hbmNob3JO
b2RlLmdldCgpLCAwLCBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOwogICAgIH0KQEAgLTMxNiw3
ICszMTUsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6cHJldmlvdXMoUG9zaXRpb25Nb3ZlVHlwZSBt
b3ZlVHlwZSkgY29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIENvbnRhaW5lck5vZGUqIHBh
cmVudCA9IG4tPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpOworICAgIENvbnRhaW5lck5v
ZGUqIHBhcmVudCA9IG4tPnBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAg
cmV0dXJuICp0aGlzOwogCkBAIC0zNDgsNyArMzQ3LDcgQEAgUG9zaXRpb24gUG9zaXRpb246Om5l
eHQoUG9zaXRpb25Nb3ZlVHlwZSBtb3ZlVHlwZSkgY29uc3QKICAgICAgICAgcmV0dXJuIGNyZWF0
ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihuLCAobW92ZVR5cGUgPT0gQ2hhcmFjdGVyKSA/IHVuY2hl
Y2tlZE5leHRPZmZzZXQobiwgbykgOiBvICsgMSk7CiAgICAgfQogCi0gICAgQ29udGFpbmVyTm9k
ZSogcGFyZW50ID0gbi0+bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCk7CisgICAgQ29udGFp
bmVyTm9kZSogcGFyZW50ID0gbi0+cGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFyZW50KQogICAg
ICAgICByZXR1cm4gKnRoaXM7CiAKQEAgLTQzMiw3ICs0MzEsNiBAQCBOb2RlKiBQb3NpdGlvbjo6
cGFyZW50RWRpdGluZ0JvdW5kYXJ5KCkgY29uc3QKICAgICBOb2RlKiBib3VuZGFyeSA9IG1fYW5j
aG9yTm9kZS5nZXQoKTsKICAgICB3aGlsZSAoYm91bmRhcnkgIT0gZG9jdW1lbnRFbGVtZW50ICYm
IGJvdW5kYXJ5LT5ub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKSAmJiBtX2FuY2hvck5vZGUt
PnJlbmRlcmVySXNFZGl0YWJsZSgpID09IGJvdW5kYXJ5LT5wYXJlbnROb2RlKCktPnJlbmRlcmVy
SXNFZGl0YWJsZSgpKQogICAgICAgICBib3VuZGFyeSA9IGJvdW5kYXJ5LT5ub25TaGFkb3dCb3Vu
ZGFyeVBhcmVudE5vZGUoKTsKLSAgICAKICAgICByZXR1cm4gYm91bmRhcnk7CiB9CiAKQEAgLTQ0
MSwxNCArNDM5LDE2IEBAIGJvb2wgUG9zaXRpb246OmF0U3RhcnRPZlRyZWUoKSBjb25zdAogewog
ICAgIGlmIChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuICFkZXBy
ZWNhdGVkTm9kZSgpLT5ub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKSAmJiBtX29mZnNldCA8
PSAwOworCisgICAgcmV0dXJuICFkZXByZWNhdGVkTm9kZSgpLT5wYXJlbnROb2RlKCkgJiYgbV9v
ZmZzZXQgPD0gMDsKIH0KIAogYm9vbCBQb3NpdGlvbjo6YXRFbmRPZlRyZWUoKSBjb25zdAogewog
ICAgIGlmIChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuICFkZXBy
ZWNhdGVkTm9kZSgpLT5ub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKSAmJiBtX29mZnNldCA+
PSBsYXN0T2Zmc2V0Rm9yRWRpdGluZyhkZXByZWNhdGVkTm9kZSgpKTsKKworICAgIHJldHVybiAh
ZGVwcmVjYXRlZE5vZGUoKS0+cGFyZW50Tm9kZSgpICYmIG1fb2Zmc2V0ID49IGxhc3RPZmZzZXRG
b3JFZGl0aW5nKGRlcHJlY2F0ZWROb2RlKCkpOwogfQogCiBpbnQgUG9zaXRpb246OnJlbmRlcmVk
T2Zmc2V0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKaW5kZXggZjFlN2VmMzNkYjg0YTNiOTMz
NmNhNjJlOWZlYjllMjUyYjBmZjQyOS4uMmExNTY0MzZkODUyN2Q0YzU1MDQ1ZDBiN2UxMmRlMjE2
N2Y0NDBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKQEAgLTI0NCwxMyArMjQ0LDEzIEBAIGlubGlu
ZSBQb3NpdGlvbiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShjb25zdCBOb2RlKiBub2RlKQog
ICAgIC8vIEF0IGxlYXN0IG9uZSBjYWxsZXIgY3VycmVudGx5IGhpdHMgdGhpcyBBU1NFUlQgdGhv
dWdoLCB3aGljaCBpbmRpY2F0ZXMKICAgICAvLyB0aGF0IHRoZSBjYWxsZXIgaXMgdHJ5aW5nIHRv
IG1ha2UgYSBwb3NpdGlvbiByZWxhdGl2ZSB0byBhIGRpc2Nvbm5lY3RlZCBub2RlICh3aGljaCBp
cyBsaWtlbHkgYW4gZXJyb3IpCiAgICAgLy8gU3BlY2lmaWNhbGx5LCBlZGl0aW5nL2RlbGV0aW5n
L2RlbGV0ZS1saWdhdHVyZS0wMDEuaHRtbCBjcmFzaGVzIHdpdGggQVNTRVJUKG5vZGUtPnBhcmVu
dE5vZGUoKSkKLSAgICByZXR1cm4gUG9zaXRpb24obm9kZS0+bm9uU2hhZG93Qm91bmRhcnlQYXJl
bnROb2RlKCksIG5vZGUtPm5vZGVJbmRleCgpLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldElu
QW5jaG9yKTsKKyAgICByZXR1cm4gUG9zaXRpb24obm9kZS0+cGFyZW50Tm9kZSgpLCBub2RlLT5u
b2RlSW5kZXgoKSwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7CiB9CiAKIGlu
bGluZSBQb3NpdGlvbiBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKGNvbnN0IE5vZGUqIG5vZGUp
CiB7Ci0gICAgQVNTRVJUKG5vZGUtPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpKTsKLSAg
ICByZXR1cm4gUG9zaXRpb24obm9kZS0+bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCksIG5v
ZGUtPm5vZGVJbmRleCgpICsgMSwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7
CisgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSk7CisgICAgcmV0dXJuIFBvc2l0aW9uKG5v
ZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+bm9kZUluZGV4KCkgKyAxLCBQb3NpdGlvbjo6UG9zaXRp
b25Jc09mZnNldEluQW5jaG9yKTsKIH0KIAogLy8gcG9zaXRpb25CZWZvcmVOb2RlIGFuZCBwb3Np
dGlvbkFmdGVyTm9kZSByZXR1cm4gbmVpZ2hib3ItYW5jaG9yZWQgcG9zaXRpb25zLCBjb25zdHJ1
Y3Rpb24gaXMgTygxKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVjZTM3YmIwMjdiYjlmMTRiZjg5ZmExNGYyM2Y3MDZkOWY1
M2I1ZjcuLjZkNjViYmJmMWVhODVmZWZjMDliMGUyMzZlZWUwMTdjNWExOGI5NWQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNSBAQAorMjAxMi0wMy0yNiAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUG9zaXRpb24gc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSBTaGFk
b3dSb290IGFzIGEgY29udGFpbmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODIwMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kb3VibGVjbGljay1vbi1tZXRlci1pbi1z
aGFkb3ctY3Jhc2guaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3JpZ2h0
Y2xpY2stb24tbWV0ZXItaW4tc2hhZG93LWNyYXNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctc2VsZWN0aW9uLW5vdC1leHBvcnRlZC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctc2VsZWN0aW9uLW5vdC1l
eHBvcnRlZC5odG1sOiBBZGRlZC4KKworMjAxMi0wMy0yNiAgU2hpbnlhIEthd2FuYWthICA8c2hp
bnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9zaXRpb24gc2hvdWxkIGJlIGFibGUgdG8g
aGF2ZSBTaGFkb3dSb290IGFzIGEgY29udGFpbmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIwMjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kb3VibGVjbGljay1vbi1t
ZXRlci1pbi1zaGFkb3ctY3Jhc2guaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hh
ZG93L3JpZ2h0Y2xpY2stb24tbWV0ZXItaW4tc2hhZG93LWNyYXNoLmh0bWw6IEFkZGVkLgorCiAy
MDEyLTAzLTI2ICBLZW4gQnVjaGFuYW4gIDxrZW5yYkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
QXNzZXJ0IGZhaWx1cmUgZnJvbSBjYXBpdGFsaXplZCBSZW5kZXJUZXh0RnJhZ21lbnQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kb3VibGVjbGljay1vbi1tZXRlci1p
bi1zaGFkb3ctY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kb3VibGVj
bGljay1vbi1tZXRlci1pbi1zaGFkb3ctY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzNlMDQ4Yjg2
ZjhhZTM2Y2Y3YWM4NzAwOGUzY2Q1Y2E3YTYxZjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2RvdWJsZWNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFz
aC5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8cD5UaGlz
IHRlc3QgZW5zdXJlcyBjb250ZXh0IGNsaWNrIGFyb3VuZCBtZXRlciB3b24ndCBjcmFzaC48L3A+
Cis8ZGl2IGlkPSdjb250YWluZXInIHN0eWxlPSJ3aWR0aDoxMDBweDsgaGVpZ2h0OiAxMDBweCI+
PC9kaXY+Cis8cD5QQVNTPC9wPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZWRpdGluZy9lZGl0aW5nLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwordmFyIGNvbnRhaW5lciA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKTsKK3ZhciBzaGFkb3dSb290ID0gbmV3IFdl
YktpdFNoYWRvd1Jvb3QoY29udGFpbmVyKTsKK3ZhciBtZXRlciA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ21ldGVyJyk7CitzaGFkb3dSb290LmFwcGVuZENoaWxkKG1ldGVyKTsKKworLy8gRG8g
ZG91YmxlY2xpY2sgYXQgdmFyaW91cyBwb2ludHMuCitkb3VibGVDbGljayhtZXRlci5vZmZzZXRM
ZWZ0LCBtZXRlci5vZmZzZXRUb3ApOworZG91YmxlQ2xpY2sobWV0ZXIub2Zmc2V0TGVmdCAtIDEs
IG1ldGVyLm9mZnNldFRvcCk7Citkb3VibGVDbGljayhtZXRlci5vZmZzZXRMZWZ0LCBtZXRlci5v
ZmZzZXRUb3AgLSAxKTsKK2RvdWJsZUNsaWNrKG1ldGVyLm9mZnNldExlZnQgLSAxLCBtZXRlci5v
ZmZzZXRUb3AgLSAxKTsKK2RvdWJsZUNsaWNrKG1ldGVyLm9mZnNldExlZnQgKyAxLCBtZXRlci5v
ZmZzZXRUb3ApOworZG91YmxlQ2xpY2sobWV0ZXIub2Zmc2V0TGVmdCwgbWV0ZXIub2Zmc2V0VG9w
ICsgMSk7Citkb3VibGVDbGljayhtZXRlci5vZmZzZXRMZWZ0ICsgMSwgbWV0ZXIub2Zmc2V0VG9w
ICsgMSk7Citkb3VibGVDbGljayhtZXRlci5vZmZzZXRMZWZ0ICsgbWV0ZXIub2Zmc2V0V2lkdGgg
LyAyLCBtZXRlci5vZmZzZXRUb3AgKyBtZXRlci5vZmZzZXRIZWlnaHQgLyAyKTsKK2RvdWJsZUNs
aWNrKG1ldGVyLm9mZnNldExlZnQgKyBtZXRlci5vZmZzZXRXaWR0aCAtIDEsIG1ldGVyLm9mZnNl
dFRvcCArIG1ldGVyLm9mZnNldEhlaWdodCAtIDEpOworZG91YmxlQ2xpY2sobWV0ZXIub2Zmc2V0
TGVmdCArIG1ldGVyLm9mZnNldFdpZHRoICsgMSwgbWV0ZXIub2Zmc2V0VG9wICsgbWV0ZXIub2Zm
c2V0SGVpZ2h0ICsgMSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yaWdodGNsaWNrLW9uLW1ldGVyLWluLXNoYWRv
dy1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JpZ2h0Y2xpY2stb24t
bWV0ZXItaW4tc2hhZG93LWNyYXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGMyMzg2YTkwNGNlZDE1MzMx
YTAxNzBlZDVmZjUzMmFkZmM0NjE1YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9yaWdodGNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFzaC5odG1sCkBA
IC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8cD5UaGlzIHRlc3QgZW5z
dXJlcyBjb250ZXh0IGNsaWNrIGFyb3VuZCBtZXRlciB3b24ndCBjcmFzaC48L3A+Cis8ZGl2IGlk
PSdjb250YWluZXInIHN0eWxlPSJ3aWR0aDoxMDBweDsgaGVpZ2h0OiAxMDBweCI+PC9kaXY+Cis8
cD5QQVNTPC9wPgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9lZGl0aW5nL2VkaXRpbmcuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitmdW5jdGlvbiBjb250ZXh0Q2xpY2soeCwgeSkg
eworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLmNv
bnRleHRDbGljaygpOworfQorCit2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnRhaW5lcicpOwordmFyIHNoYWRvd1Jvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChj
b250YWluZXIpOwordmFyIG1ldGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbWV0ZXInKTsK
K3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQobWV0ZXIpOworCisvLyBEbyBjb250ZXh0IGNsaWNrIGF0
IHZhcmlvdXMgcG9pbnRzLgorY29udGV4dENsaWNrKG1ldGVyLm9mZnNldExlZnQsIG1ldGVyLm9m
ZnNldFRvcCk7Citjb250ZXh0Q2xpY2sobWV0ZXIub2Zmc2V0TGVmdCAtIDEsIG1ldGVyLm9mZnNl
dFRvcCk7Citjb250ZXh0Q2xpY2sobWV0ZXIub2Zmc2V0TGVmdCwgbWV0ZXIub2Zmc2V0VG9wIC0g
MSk7Citjb250ZXh0Q2xpY2sobWV0ZXIub2Zmc2V0TGVmdCAtIDEsIG1ldGVyLm9mZnNldFRvcCAt
IDEpOworY29udGV4dENsaWNrKG1ldGVyLm9mZnNldExlZnQgKyAxLCBtZXRlci5vZmZzZXRUb3Ap
OworY29udGV4dENsaWNrKG1ldGVyLm9mZnNldExlZnQsIG1ldGVyLm9mZnNldFRvcCArIDEpOwor
Y29udGV4dENsaWNrKG1ldGVyLm9mZnNldExlZnQgKyAxLCBtZXRlci5vZmZzZXRUb3AgKyAxKTsK
K2NvbnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0ICsgbWV0ZXIub2Zmc2V0V2lkdGggLyAyLCBt
ZXRlci5vZmZzZXRUb3AgKyBtZXRlci5vZmZzZXRIZWlnaHQgLyAyKTsKK2NvbnRleHRDbGljayht
ZXRlci5vZmZzZXRMZWZ0ICsgbWV0ZXIub2Zmc2V0V2lkdGggLSAxLCBtZXRlci5vZmZzZXRUb3Ag
KyBtZXRlci5vZmZzZXRIZWlnaHQgLSAxKTsKK2NvbnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0
ICsgbWV0ZXIub2Zmc2V0V2lkdGggKyAxLCBtZXRlci5vZmZzZXRUb3AgKyBtZXRlci5vZmZzZXRI
ZWlnaHQgKyAxKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1zZWxlY3Rpb24tbm90LWV4cG9ydGVkLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctc2VsZWN0aW9u
LW5vdC1leHBvcnRlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA2N2JjZDZkNjYxYTJkMjM1
N2FiYjkxOTRjYzUwYjRjYWM3Y2RiNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctc2VsZWN0aW9uLW5vdC1leHBvcnRlZC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMyBAQAorUEFTUyBhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uYW5jaG9y
Tm9kZSkgaXMgdHJ1ZQorUEFTUyBhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uZm9jdXNOb2Rl
KSBpcyB0cnVlCitQQVNTIGFzc2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5hbmNob3JOb2RlKSBp
cyB0cnVlCitQQVNTIGFzc2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5mb2N1c05vZGUpIGlzIHRy
dWUKK1BBU1MgYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmFuY2hvck5vZGUpIGlzIHRydWUK
K1BBU1MgYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmZvY3VzTm9kZSkgaXMgdHJ1ZQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitUaGlzIHRlc3Qg
ZW5zdXJlcyBzaGFkb3cgcm9vdCB3b24ndCBleHBvc2UgdG8gSlMgbGF5ZXIuCisKK0JFRk9SRQor
QUZURVIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctc2Vs
ZWN0aW9uLW5vdC1leHBvcnRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3No
YWRvdy1zZWxlY3Rpb24tbm90LWV4cG9ydGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmMyNzNiODFkNWFm
Yzc0NDQ5ZGFlNjBmYzcwYTExNmIyODE3ZDg3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctc2VsZWN0aW9uLW5vdC1leHBvcnRlZC5odG1sCkBA
IC0wLDAgKzEsODIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8cHJlIGlkPSJjb25zb2xl
Ij48L3ByZT4KKworPHA+VGhpcyB0ZXN0IGVuc3VyZXMgc2hhZG93IHJvb3Qgd29uJ3QgZXhwb3Nl
IHRvIEpTIGxheWVyLjxwPgorPGRpdiBpZD0nZGl2MSc+QkVGT1JFPC9kaXY+Cis8ZGl2IGlkPSdj
b250YWluZXInPkNPTlRBSU5FUjwvZGl2PgorPGRpdiBpZD0nZGl2NCc+QUZURVI8L2RpPgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZWRpdGluZy9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworCit2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bnRhaW5lcicpOwordmFyIHNoYWRvd1Jvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChjb250YWlu
ZXIpOworCit2YXIgZGl2MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworZGl2Mi5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnSU4gU0hBRE9XIFRSRUUgMScpKTsK
K3ZhciBkaXYzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CitkaXYzLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdJTiBTSEFET1cgVFJFRSAyJykpOworCitzaGFk
b3dSb290LmFwcGVuZENoaWxkKGRpdjIpOworc2hhZG93Um9vdC5hcHBlbmRDaGlsZChkaXYzKTsK
KworZnVuY3Rpb24gbWlkWChlbGVtZW50KSB7CisgICAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0TGVm
dCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworfQorCitmdW5jdGlvbiBtaWRZKGVsZW1lbnQp
IHsKKyAgICByZXR1cm4gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAv
IDI7Cit9CisKK2Z1bmN0aW9uIGFzc2VydE5vdEluU2hhZG93KGVsZW1lbnQpIHsKKyAgICBpZiAo
ZWxlbWVudCA9PSBkaXYyIHx8IGVsZW1lbnQgPT0gZGl2Mi5maXJzdENoaWxkKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKGVsZW1lbnQgPT0gZGl2MyB8fCBlbGVtZW50ID09IGRpdjMu
Zmlyc3RDaGlsZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQor
CitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgLy8gVHJ5IHNlbGVjdCBmcm9tIG91dHNp
ZGUgb2YgYSBzaGFkb3cgc3VidHJlZSB0byBpbnNpZGUgb2YgYSBzaGFkb3cgc3VidHJlZS4KKyAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhtaWRYKGRpdjEpLCBtaWRZKGRpdjEpKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhtaWRY
KGRpdjIpLCBtaWRZKGRpdjIpKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICB2
YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgIHNob3VsZEJlKCdhc3Nl
cnROb3RJblNoYWRvdyhzZWxlY3Rpb24uYW5jaG9yTm9kZSknLCAndHJ1ZScpOworICAgIHNob3Vs
ZEJlKCdhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uZm9jdXNOb2RlKScsICd0cnVlJyk7CisK
KyAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7CisKKyAgICAvLyBUcnkgc2VsZWN0IGZy
b20gaW5zaWRlIG9mIGEgc2hhZG93IHN1YnRyZWUgdG8gb3V0c2lkZSBvZiBhIHNoYWRvdyBzdWJ0
cmVlLgorICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG1pZFgoZGl2MyksIG1pZFkoZGl2Mykp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKG1pZFgoZGl2NCksIG1pZFkoZGl2NCkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsK
KworICAgIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICBzaG91bGRCZSgn
YXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmFuY2hvck5vZGUpJywgJ3RydWUnKTsKKyAgICBz
aG91bGRCZSgnYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmZvY3VzTm9kZSknLCAndHJ1ZScp
OworICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKworICAgIC8vIFRyeSBzZWxlY3Qg
aW5zaWRlIHNoYWRvdyBzdWJ0cmVlcy4KKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhtaWRY
KGRpdjIpLCBtaWRZKGRpdjIpKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhtaWRYKGRpdjMpLCBtaWRZKGRpdjMpKTsKKyAgICBldmVu
dFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCk7CisgICAgc2hvdWxkQmUoJ2Fzc2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5hbmNob3JOb2Rl
KScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ2Fzc2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5m
b2N1c05vZGUpJywgJ3RydWUnKTsKKyAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7Cit9
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134720</attachid>
            <date>2012-03-29 21:21:47 -0700</date>
            <delta_ts>2012-05-08 02:26:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82021-20120330132146.patch</filename>
            <type>text/plain</type>
            <size>15384</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDgwYWEzNjQ2YmRkZmY0
OTk1M2NmY2VmNjI0M2RkMTdiOTc5YzhjYy4uYmUxOTFlNGY4NDYwN2M2NzhjY2U4MGVmMTkyNmIw
YjhiMjA1ODJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTAzLTI2ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBQb3NpdGlvbiBz
aG91bGQgYmUgYWJsZSB0byBoYXZlIFNoYWRvd1Jvb3QgYXMgYSBjb250YWluZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAyMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIFBvc2l0aW9uIGNv
dWxkIG5vdCB0YWtlIGEgc2hhZG93IHJvb3QgYXMgYSBjb250YWluZXIgbm9kZSwgcG9pbnRpbmcg
dGhlIGRpcmVjdCBjaGlsZHJlbgorICAgICAgICBvZiBhIHNoYWRvdyByb290IHdhcyBkaWZmaWN1
bHQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBpdCBlbmFibGVkLCBhbmQgZml4ZXMgYSBs
b3Qgb2YgY3Jhc2hlcyBjYXVzZWQgYnkgdGhhdCBsaW1pdGF0aW9uLgorICAgICAgICBBbHNvLCB3
ZSBjb25maXJtIHRoYXQgU2hhZG93Um9vdCBpcyBub3QgZXhwb3NlZCB0byBKYXZhU2NyaXB0IGxh
eWVyLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9zaGFkb3cvZG91YmxlY2xpY2stb24tbWV0
ZXItaW4tc2hhZG93LWNyYXNoLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9y
aWdodGNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFzaC5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2RvbS9zaGFkb3cvc2hhZG93LXNlbGVjdGlvbi1ub3QtZXhwb3J0ZWQuaHRtbAorCisgICAg
ICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6Y29udGFpbmVyTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpwcmV2aW91cyk6CisgICAgICAgIChXZWJDb3JlOjpQb3Np
dGlvbjo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6cGFyZW50RWRpdGluZ0Jv
dW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjphdFN0YXJ0T2ZUcmVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjphdEVuZE9mVHJlZSk6CisgICAgICAgICogZG9tL1Bv
c2l0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKToKKwogMjAxMi0w
My0yOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxMTI1NzIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCAzMWFi
NDQ1YTAwNjIwNWQ2OTY1ZWRiMzI0ZjRlNWVjMjk1NmI1ZjBiLi5hMzllYTUxNTgwM2NmYWRhMjVk
NDc3NTkxOGYxMWYwNTgyYjUxZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTgwLDcg
KzgwLDYgQEAgUG9zaXRpb246OlBvc2l0aW9uKFBhc3NSZWZQdHI8Tm9kZT4gYW5jaG9yTm9kZSwg
TGVnYWN5RWRpdGluZ09mZnNldCBvZmZzZXQpCiAgICAgLCBtX2FuY2hvclR5cGUoYW5jaG9yVHlw
ZUZvckxlZ2FjeUVkaXRpbmdQb3NpdGlvbihtX2FuY2hvck5vZGUuZ2V0KCksIG1fb2Zmc2V0KSkK
ICAgICAsIG1faXNMZWdhY3lFZGl0aW5nUG9zaXRpb24odHJ1ZSkKIHsKLSAgICBBU1NFUlQoIW1f
YW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSk7CiB9CiAKIFBvc2l0
aW9uOjpQb3NpdGlvbihQYXNzUmVmUHRyPE5vZGU+IGFuY2hvck5vZGUsIEFuY2hvclR5cGUgYW5j
aG9yVHlwZSkKQEAgLTg5LDEwICs4OCw5IEBAIFBvc2l0aW9uOjpQb3NpdGlvbihQYXNzUmVmUHRy
PE5vZGU+IGFuY2hvck5vZGUsIEFuY2hvclR5cGUgYW5jaG9yVHlwZSkKICAgICAsIG1fYW5jaG9y
VHlwZShhbmNob3JUeXBlKQogICAgICwgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbihmYWxzZSkK
IHsKLSAgICBBU1NFUlQoIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jv
b3QoKSk7CiAgICAgQVNTRVJUKGFuY2hvclR5cGUgIT0gUG9zaXRpb25Jc09mZnNldEluQW5jaG9y
KTsKICAgICBBU1NFUlQoISgoYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzQmVmb3JlQ2hpbGRyZW4g
fHwgYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbikKLSAgICAgICAgJiYgKG1f
YW5jaG9yTm9kZS0+aXNUZXh0Tm9kZSgpIHx8IGVkaXRpbmdJZ25vcmVzQ29udGVudChtX2FuY2hv
ck5vZGUuZ2V0KCkpKSkpOworICAgICAgICAgICAgICYmIChtX2FuY2hvck5vZGUtPmlzVGV4dE5v
ZGUoKSB8fCBlZGl0aW5nSWdub3Jlc0NvbnRlbnQobV9hbmNob3JOb2RlLmdldCgpKSkpKTsKIH0K
IAogUG9zaXRpb246OlBvc2l0aW9uKFBhc3NSZWZQdHI8Tm9kZT4gYW5jaG9yTm9kZSwgaW50IG9m
ZnNldCwgQW5jaG9yVHlwZSBhbmNob3JUeXBlKQpAQCAtMTAxLDcgKzk5LDcgQEAgUG9zaXRpb246
OlBvc2l0aW9uKFBhc3NSZWZQdHI8Tm9kZT4gYW5jaG9yTm9kZSwgaW50IG9mZnNldCwgQW5jaG9y
VHlwZSBhbmNob3JUeXAKICAgICAsIG1fYW5jaG9yVHlwZShhbmNob3JUeXBlKQogICAgICwgbV9p
c0xlZ2FjeUVkaXRpbmdQb3NpdGlvbihmYWxzZSkKIHsKLSAgICBBU1NFUlQoIW1fYW5jaG9yTm9k
ZSB8fCAhZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkgfHwgIW1fYW5j
aG9yTm9kZS0+aXNTaGFkb3dSb290KCkpOworICAgIEFTU0VSVCghbV9hbmNob3JOb2RlIHx8ICFl
ZGl0aW5nSWdub3Jlc0NvbnRlbnQobV9hbmNob3JOb2RlLmdldCgpKSk7CiAgICAgQVNTRVJUKGFu
Y2hvclR5cGUgPT0gUG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKIH0KIApAQCAtMTQzLDcgKzE0
MSw3IEBAIE5vZGUqIFBvc2l0aW9uOjpjb250YWluZXJOb2RlKCkgY29uc3QKICAgICAgICAgcmV0
dXJuIG1fYW5jaG9yTm9kZS5nZXQoKTsKICAgICBjYXNlIFBvc2l0aW9uSXNCZWZvcmVBbmNob3I6
CiAgICAgY2FzZSBQb3NpdGlvbklzQWZ0ZXJBbmNob3I6Ci0gICAgICAgIHJldHVybiBtX2FuY2hv
ck5vZGUtPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpOworICAgICAgICByZXR1cm4gbV9h
bmNob3JOb2RlLT5wYXJlbnROb2RlKCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIHJldHVybiAwOwpAQCAtMjAzLDcgKzIwMSw3IEBAIFBvc2l0aW9uIFBvc2l0aW9uOjpw
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSBjb25zdAogICAgIAogICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBvbmx5IGJlIG5lY2Vzc2FyeSBmb3IgbGVnYWN5IHBvc2l0aW9ucywgYnV0IGlzIGFs
c28gbmVlZGVkIGZvciBwb3NpdGlvbnMgYmVmb3JlIGFuZCBhZnRlciBUYWJsZXMKICAgICBpZiAo
bV9vZmZzZXQgPD0gMCAmJiAobV9hbmNob3JUeXBlICE9IFBvc2l0aW9uSXNBZnRlckFuY2hvciAm
JiBtX2FuY2hvclR5cGUgIT0gUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4pKSB7Ci0gICAgICAgIGlm
IChtX2FuY2hvck5vZGUtPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpICYmIChlZGl0aW5n
SWdub3Jlc0NvbnRlbnQobV9hbmNob3JOb2RlLmdldCgpKSB8fCBpc1RhYmxlRWxlbWVudChtX2Fu
Y2hvck5vZGUuZ2V0KCkpKSkKKyAgICAgICAgaWYgKG1fYW5jaG9yTm9kZS0+cGFyZW50Tm9kZSgp
ICYmIChlZGl0aW5nSWdub3Jlc0NvbnRlbnQobV9hbmNob3JOb2RlLmdldCgpKSB8fCBpc1RhYmxl
RWxlbWVudChtX2FuY2hvck5vZGUuZ2V0KCkpKSkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bkluUGFyZW50QmVmb3JlTm9kZShtX2FuY2hvck5vZGUuZ2V0KCkpOwogICAgICAgICByZXR1cm4g
UG9zaXRpb24obV9hbmNob3JOb2RlLmdldCgpLCAwLCBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3Ip
OwogICAgIH0KQEAgLTMxNiw3ICszMTQsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6cHJldmlvdXMo
UG9zaXRpb25Nb3ZlVHlwZSBtb3ZlVHlwZSkgY29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAg
IENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG4tPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgp
OworICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IG4tPnBhcmVudE5vZGUoKTsKICAgICBpZiAo
IXBhcmVudCkKICAgICAgICAgcmV0dXJuICp0aGlzOwogCkBAIC0zNDgsNyArMzQ2LDcgQEAgUG9z
aXRpb24gUG9zaXRpb246Om5leHQoUG9zaXRpb25Nb3ZlVHlwZSBtb3ZlVHlwZSkgY29uc3QKICAg
ICAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihuLCAobW92ZVR5cGUgPT0g
Q2hhcmFjdGVyKSA/IHVuY2hlY2tlZE5leHRPZmZzZXQobiwgbykgOiBvICsgMSk7CiAgICAgfQog
Ci0gICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbi0+bm9uU2hhZG93Qm91bmRhcnlQYXJlbnRO
b2RlKCk7CisgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbi0+cGFyZW50Tm9kZSgpOwogICAg
IGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKQEAgLTQzMiw3ICs0MzAsNiBA
QCBOb2RlKiBQb3NpdGlvbjo6cGFyZW50RWRpdGluZ0JvdW5kYXJ5KCkgY29uc3QKICAgICBOb2Rl
KiBib3VuZGFyeSA9IG1fYW5jaG9yTm9kZS5nZXQoKTsKICAgICB3aGlsZSAoYm91bmRhcnkgIT0g
ZG9jdW1lbnRFbGVtZW50ICYmIGJvdW5kYXJ5LT5ub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUo
KSAmJiBtX2FuY2hvck5vZGUtPnJlbmRlcmVySXNFZGl0YWJsZSgpID09IGJvdW5kYXJ5LT5wYXJl
bnROb2RlKCktPnJlbmRlcmVySXNFZGl0YWJsZSgpKQogICAgICAgICBib3VuZGFyeSA9IGJvdW5k
YXJ5LT5ub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKTsKLSAgICAKICAgICByZXR1cm4gYm91
bmRhcnk7CiB9CiAKQEAgLTQ0MSwxNCArNDM4LDE2IEBAIGJvb2wgUG9zaXRpb246OmF0U3RhcnRP
ZlRyZWUoKSBjb25zdAogewogICAgIGlmIChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgcmV0dXJuICFkZXByZWNhdGVkTm9kZSgpLT5ub25TaGFkb3dCb3VuZGFyeVBhcmVudE5v
ZGUoKSAmJiBtX29mZnNldCA8PSAwOworCisgICAgcmV0dXJuICFkZXByZWNhdGVkTm9kZSgpLT5w
YXJlbnROb2RlKCkgJiYgbV9vZmZzZXQgPD0gMDsKIH0KIAogYm9vbCBQb3NpdGlvbjo6YXRFbmRP
ZlRyZWUoKSBjb25zdAogewogICAgIGlmIChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgcmV0dXJuICFkZXByZWNhdGVkTm9kZSgpLT5ub25TaGFkb3dCb3VuZGFyeVBhcmVudE5v
ZGUoKSAmJiBtX29mZnNldCA+PSBsYXN0T2Zmc2V0Rm9yRWRpdGluZyhkZXByZWNhdGVkTm9kZSgp
KTsKKworICAgIHJldHVybiAhZGVwcmVjYXRlZE5vZGUoKS0+cGFyZW50Tm9kZSgpICYmIG1fb2Zm
c2V0ID49IGxhc3RPZmZzZXRGb3JFZGl0aW5nKGRlcHJlY2F0ZWROb2RlKCkpOwogfQogCiBpbnQg
UG9zaXRpb246OnJlbmRlcmVkT2Zmc2V0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKaW5kZXgg
ZjFlN2VmMzNkYjg0YTNiOTMzNmNhNjJlOWZlYjllMjUyYjBmZjQyOS4uMmExNTY0MzZkODUyN2Q0
YzU1MDQ1ZDBiN2UxMmRlMjE2N2Y0NDBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKQEAgLTI0NCwx
MyArMjQ0LDEzIEBAIGlubGluZSBQb3NpdGlvbiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShj
b25zdCBOb2RlKiBub2RlKQogICAgIC8vIEF0IGxlYXN0IG9uZSBjYWxsZXIgY3VycmVudGx5IGhp
dHMgdGhpcyBBU1NFUlQgdGhvdWdoLCB3aGljaCBpbmRpY2F0ZXMKICAgICAvLyB0aGF0IHRoZSBj
YWxsZXIgaXMgdHJ5aW5nIHRvIG1ha2UgYSBwb3NpdGlvbiByZWxhdGl2ZSB0byBhIGRpc2Nvbm5l
Y3RlZCBub2RlICh3aGljaCBpcyBsaWtlbHkgYW4gZXJyb3IpCiAgICAgLy8gU3BlY2lmaWNhbGx5
LCBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saWdhdHVyZS0wMDEuaHRtbCBjcmFzaGVzIHdpdGgg
QVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSkKLSAgICByZXR1cm4gUG9zaXRpb24obm9kZS0+bm9u
U2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCksIG5vZGUtPm5vZGVJbmRleCgpLCBQb3NpdGlvbjo6
UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKKyAgICByZXR1cm4gUG9zaXRpb24obm9kZS0+cGFy
ZW50Tm9kZSgpLCBub2RlLT5ub2RlSW5kZXgoKSwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJ
bkFuY2hvcik7CiB9CiAKIGlubGluZSBQb3NpdGlvbiBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2Rl
KGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAgQVNTRVJUKG5vZGUtPm5vblNoYWRvd0JvdW5kYXJ5
UGFyZW50Tm9kZSgpKTsKLSAgICByZXR1cm4gUG9zaXRpb24obm9kZS0+bm9uU2hhZG93Qm91bmRh
cnlQYXJlbnROb2RlKCksIG5vZGUtPm5vZGVJbmRleCgpICsgMSwgUG9zaXRpb246OlBvc2l0aW9u
SXNPZmZzZXRJbkFuY2hvcik7CisgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSk7CisgICAg
cmV0dXJuIFBvc2l0aW9uKG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+bm9kZUluZGV4KCkgKyAx
LCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKIH0KIAogLy8gcG9zaXRpb25C
ZWZvcmVOb2RlIGFuZCBwb3NpdGlvbkFmdGVyTm9kZSByZXR1cm4gbmVpZ2hib3ItYW5jaG9yZWQg
cG9zaXRpb25zLCBjb25zdHJ1Y3Rpb24gaXMgTygxKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBiMjUxZDYyZDBjZDA3NGFh
ZWE2NWI3NjRlMDVmZDEwMWJkYWQwZTIuLmZiMDAzMmRiNmVlZDYwYTNkM2Y4ZTg4MWI2ZTEzYTgy
YzMzYjhmMTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMy0yNiAgU2hpbnlhIEthd2Fu
YWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9zaXRpb24gc2hvdWxkIGJl
IGFibGUgdG8gaGF2ZSBTaGFkb3dSb290IGFzIGEgY29udGFpbmVyLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIwMjEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kb3VibGVj
bGljay1vbi1tZXRlci1pbi1zaGFkb3ctY3Jhc2guaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vc2hhZG93L3JpZ2h0Y2xpY2stb24tbWV0ZXItaW4tc2hhZG93LWNyYXNoLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctc2VsZWN0aW9uLW5vdC1leHBv
cnRlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctc2VsZWN0aW9uLW5vdC1leHBvcnRlZC5odG1sOiBBZGRlZC4KKwogMjAxMi0wMy0yOSAgQmVh
ciBUcmF2aXMgIDxiZXRyYXZpc0BhZG9iZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHNoYXBlLWlu
c2lkZS9zaGFwZS1vdXRzaWRlIENTUyBFeGNsdXNpb24gcHJvcGVydGllcwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2RvdWJsZWNsaWNrLW9uLW1ldGVyLWluLXNoYWRv
dy1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2RvdWJsZWNsaWNrLW9u
LW1ldGVyLWluLXNoYWRvdy1jcmFzaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3M2UwNDhiODZmOGFlMzZj
ZjdhYzg3MDA4ZTNjZDVjYTdhNjFmNDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvZG91YmxlY2xpY2stb24tbWV0ZXItaW4tc2hhZG93LWNyYXNoLmh0bWwK
QEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxwPlRoaXMgdGVzdCBl
bnN1cmVzIGNvbnRleHQgY2xpY2sgYXJvdW5kIG1ldGVyIHdvbid0IGNyYXNoLjwvcD4KKzxkaXYg
aWQ9J2NvbnRhaW5lcicgc3R5bGU9IndpZHRoOjEwMHB4OyBoZWlnaHQ6IDEwMHB4Ij48L2Rpdj4K
KzxwPlBBU1M8L3A+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9lZGl0aW5nL2VkaXRpbmcuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOwordmFyIHNoYWRvd1Jvb3QgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChjb250YWluZXIpOwordmFyIG1ldGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
bWV0ZXInKTsKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQobWV0ZXIpOworCisvLyBEbyBkb3VibGVj
bGljayBhdCB2YXJpb3VzIHBvaW50cy4KK2RvdWJsZUNsaWNrKG1ldGVyLm9mZnNldExlZnQsIG1l
dGVyLm9mZnNldFRvcCk7Citkb3VibGVDbGljayhtZXRlci5vZmZzZXRMZWZ0IC0gMSwgbWV0ZXIu
b2Zmc2V0VG9wKTsKK2RvdWJsZUNsaWNrKG1ldGVyLm9mZnNldExlZnQsIG1ldGVyLm9mZnNldFRv
cCAtIDEpOworZG91YmxlQ2xpY2sobWV0ZXIub2Zmc2V0TGVmdCAtIDEsIG1ldGVyLm9mZnNldFRv
cCAtIDEpOworZG91YmxlQ2xpY2sobWV0ZXIub2Zmc2V0TGVmdCArIDEsIG1ldGVyLm9mZnNldFRv
cCk7Citkb3VibGVDbGljayhtZXRlci5vZmZzZXRMZWZ0LCBtZXRlci5vZmZzZXRUb3AgKyAxKTsK
K2RvdWJsZUNsaWNrKG1ldGVyLm9mZnNldExlZnQgKyAxLCBtZXRlci5vZmZzZXRUb3AgKyAxKTsK
K2RvdWJsZUNsaWNrKG1ldGVyLm9mZnNldExlZnQgKyBtZXRlci5vZmZzZXRXaWR0aCAvIDIsIG1l
dGVyLm9mZnNldFRvcCArIG1ldGVyLm9mZnNldEhlaWdodCAvIDIpOworZG91YmxlQ2xpY2sobWV0
ZXIub2Zmc2V0TGVmdCArIG1ldGVyLm9mZnNldFdpZHRoIC0gMSwgbWV0ZXIub2Zmc2V0VG9wICsg
bWV0ZXIub2Zmc2V0SGVpZ2h0IC0gMSk7Citkb3VibGVDbGljayhtZXRlci5vZmZzZXRMZWZ0ICsg
bWV0ZXIub2Zmc2V0V2lkdGggKyAxLCBtZXRlci5vZmZzZXRUb3AgKyBtZXRlci5vZmZzZXRIZWln
aHQgKyAxKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L3JpZ2h0Y2xpY2stb24tbWV0ZXItaW4tc2hhZG93LWNyYXNo
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmlnaHRjbGljay1vbi1tZXRlci1p
bi1zaGFkb3ctY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzIzODZhOTA0Y2VkMTUzMzFhMDE3MGVk
NWZmNTMyYWRmYzQ2MTVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3JpZ2h0Y2xpY2stb24tbWV0ZXItaW4tc2hhZG93LWNyYXNoLmh0bWwKQEAgLTAsMCAr
MSwzNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxwPlRoaXMgdGVzdCBlbnN1cmVzIGNv
bnRleHQgY2xpY2sgYXJvdW5kIG1ldGVyIHdvbid0IGNyYXNoLjwvcD4KKzxkaXYgaWQ9J2NvbnRh
aW5lcicgc3R5bGU9IndpZHRoOjEwMHB4OyBoZWlnaHQ6IDEwMHB4Ij48L2Rpdj4KKzxwPlBBU1M8
L3A+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2VkaXRpbmcvZWRpdGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKK2Z1bmN0aW9uIGNvbnRleHRDbGljayh4LCB5KSB7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIuY29udGV4dENs
aWNrKCk7Cit9CisKK3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29u
dGFpbmVyJyk7Cit2YXIgc2hhZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGNvbnRhaW5l
cik7Cit2YXIgbWV0ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdtZXRlcicpOworc2hhZG93
Um9vdC5hcHBlbmRDaGlsZChtZXRlcik7CisKKy8vIERvIGNvbnRleHQgY2xpY2sgYXQgdmFyaW91
cyBwb2ludHMuCitjb250ZXh0Q2xpY2sobWV0ZXIub2Zmc2V0TGVmdCwgbWV0ZXIub2Zmc2V0VG9w
KTsKK2NvbnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0IC0gMSwgbWV0ZXIub2Zmc2V0VG9wKTsK
K2NvbnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0LCBtZXRlci5vZmZzZXRUb3AgLSAxKTsKK2Nv
bnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0IC0gMSwgbWV0ZXIub2Zmc2V0VG9wIC0gMSk7Citj
b250ZXh0Q2xpY2sobWV0ZXIub2Zmc2V0TGVmdCArIDEsIG1ldGVyLm9mZnNldFRvcCk7Citjb250
ZXh0Q2xpY2sobWV0ZXIub2Zmc2V0TGVmdCwgbWV0ZXIub2Zmc2V0VG9wICsgMSk7Citjb250ZXh0
Q2xpY2sobWV0ZXIub2Zmc2V0TGVmdCArIDEsIG1ldGVyLm9mZnNldFRvcCArIDEpOworY29udGV4
dENsaWNrKG1ldGVyLm9mZnNldExlZnQgKyBtZXRlci5vZmZzZXRXaWR0aCAvIDIsIG1ldGVyLm9m
ZnNldFRvcCArIG1ldGVyLm9mZnNldEhlaWdodCAvIDIpOworY29udGV4dENsaWNrKG1ldGVyLm9m
ZnNldExlZnQgKyBtZXRlci5vZmZzZXRXaWR0aCAtIDEsIG1ldGVyLm9mZnNldFRvcCArIG1ldGVy
Lm9mZnNldEhlaWdodCAtIDEpOworY29udGV4dENsaWNrKG1ldGVyLm9mZnNldExlZnQgKyBtZXRl
ci5vZmZzZXRXaWR0aCArIDEsIG1ldGVyLm9mZnNldFRvcCArIG1ldGVyLm9mZnNldEhlaWdodCAr
IDEpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXNlbGVjdGlvbi1ub3QtZXhwb3J0ZWQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1zZWxlY3Rpb24tbm90LWV4
cG9ydGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDY3YmNkNmQ2NjFhMmQyMzU3YWJiOTE5
NGNjNTBiNGNhYzdjZGI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1zZWxlY3Rpb24tbm90LWV4cG9ydGVkLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEzIEBACitQQVNTIGFzc2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5hbmNob3JOb2RlKSBp
cyB0cnVlCitQQVNTIGFzc2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5mb2N1c05vZGUpIGlzIHRy
dWUKK1BBU1MgYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmFuY2hvck5vZGUpIGlzIHRydWUK
K1BBU1MgYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmZvY3VzTm9kZSkgaXMgdHJ1ZQorUEFT
UyBhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uYW5jaG9yTm9kZSkgaXMgdHJ1ZQorUEFTUyBh
c3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uZm9jdXNOb2RlKSBpcyB0cnVlCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK1RoaXMgdGVzdCBlbnN1cmVz
IHNoYWRvdyByb290IHdvbid0IGV4cG9zZSB0byBKUyBsYXllci4KKworQkVGT1JFCitBRlRFUgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1zZWxlY3Rpb24t
bm90LWV4cG9ydGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXNl
bGVjdGlvbi1ub3QtZXhwb3J0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzI3M2I4MWQ1YWZjNzQ0NDlk
YWU2MGZjNzBhMTE2YjI4MTdkODdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1zZWxlY3Rpb24tbm90LWV4cG9ydGVkLmh0bWwKQEAgLTAsMCAr
MSw4MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJl
PgorCis8cD5UaGlzIHRlc3QgZW5zdXJlcyBzaGFkb3cgcm9vdCB3b24ndCBleHBvc2UgdG8gSlMg
bGF5ZXIuPHA+Cis8ZGl2IGlkPSdkaXYxJz5CRUZPUkU8L2Rpdj4KKzxkaXYgaWQ9J2NvbnRhaW5l
cic+Q09OVEFJTkVSPC9kaXY+Cis8ZGl2IGlkPSdkaXY0Jz5BRlRFUjwvZGk+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9lZGl0aW5nL2VkaXRpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisKK3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVy
Jyk7Cit2YXIgc2hhZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGNvbnRhaW5lcik7CisK
K3ZhciBkaXYyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CitkaXYyLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdJTiBTSEFET1cgVFJFRSAxJykpOwordmFyIGRp
djMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2RpdjMuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0lOIFNIQURPVyBUUkVFIDInKSk7CisKK3NoYWRvd1Jvb3Qu
YXBwZW5kQ2hpbGQoZGl2Mik7CitzaGFkb3dSb290LmFwcGVuZENoaWxkKGRpdjMpOworCitmdW5j
dGlvbiBtaWRYKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxl
bWVudC5vZmZzZXRXaWR0aCAvIDI7Cit9CisKK2Z1bmN0aW9uIG1pZFkoZWxlbWVudCkgeworICAg
IHJldHVybiBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKK30K
KworZnVuY3Rpb24gYXNzZXJ0Tm90SW5TaGFkb3coZWxlbWVudCkgeworICAgIGlmIChlbGVtZW50
ID09IGRpdjIgfHwgZWxlbWVudCA9PSBkaXYyLmZpcnN0Q2hpbGQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoZWxlbWVudCA9PSBkaXYzIHx8IGVsZW1lbnQgPT0gZGl2My5maXJzdENo
aWxkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAvLyBUcnkgc2VsZWN0IGZyb20gb3V0c2lkZSBvZiBh
IHNoYWRvdyBzdWJ0cmVlIHRvIGluc2lkZSBvZiBhIHNoYWRvdyBzdWJ0cmVlLgorICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKG1pZFgoZGl2MSksIG1pZFkoZGl2MSkpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG1pZFgoZGl2Miks
IG1pZFkoZGl2MikpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAgIHZhciBzZWxl
Y3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgc2hvdWxkQmUoJ2Fzc2VydE5vdElu
U2hhZG93KHNlbGVjdGlvbi5hbmNob3JOb2RlKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ2Fz
c2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5mb2N1c05vZGUpJywgJ3RydWUnKTsKKworICAgIHNl
bGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKworICAgIC8vIFRyeSBzZWxlY3QgZnJvbSBpbnNp
ZGUgb2YgYSBzaGFkb3cgc3VidHJlZSB0byBvdXRzaWRlIG9mIGEgc2hhZG93IHN1YnRyZWUuCisg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8obWlkWChkaXYzKSwgbWlkWShkaXYzKSk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8obWlk
WChkaXY0KSwgbWlkWShkaXY0KSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworCisgICAg
c2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgIHNob3VsZEJlKCdhc3NlcnRO
b3RJblNoYWRvdyhzZWxlY3Rpb24uYW5jaG9yTm9kZSknLCAndHJ1ZScpOworICAgIHNob3VsZEJl
KCdhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uZm9jdXNOb2RlKScsICd0cnVlJyk7CisgICAg
c2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOworCisgICAgLy8gVHJ5IHNlbGVjdCBpbnNpZGUg
c2hhZG93IHN1YnRyZWVzLgorICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG1pZFgoZGl2Miks
IG1pZFkoZGl2MikpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKG1pZFgoZGl2MyksIG1pZFkoZGl2MykpOworICAgIGV2ZW50U2VuZGVy
Lm1vdXNlVXAoKTsKKworICAgIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAg
ICBzaG91bGRCZSgnYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmFuY2hvck5vZGUpJywgJ3Ry
dWUnKTsKKyAgICBzaG91bGRCZSgnYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmZvY3VzTm9k
ZSknLCAndHJ1ZScpOworICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKK30KKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140698</attachid>
            <date>2012-05-08 02:27:16 -0700</date>
            <delta_ts>2012-05-08 18:42:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82021-20120508182715.patch</filename>
            <type>text/plain</type>
            <size>22293</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGU2YmI4MWU4MGYyOGVm
NzA1ZjQ3MmUzNTE0ODU3Mzg0Zjc4Zjc0YS4uNTAxZTNhZGNhOTExMWE3NDJiYmU3NWMzMWU2MWQ4
MDExNmZmNGE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA1LTA4ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBQb3NpdGlvbiBz
aG91bGQgYmUgYWJsZSB0byBoYXZlIFNoYWRvd1Jvb3QgYXMgYSBjb250YWluZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAyMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIFBvc2l0aW9uIGNv
dWxkIG5vdCB0YWtlIGEgc2hhZG93IHJvb3QgYXMgYSBjb250YWluZXIgbm9kZSwgcG9pbnRpbmcg
dGhlIGRpcmVjdCBjaGlsZHJlbgorICAgICAgICBvZiBhIHNoYWRvdyByb290IHdhcyBkaWZmaWN1
bHQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBpdCBlbmFibGVkLCBhbmQgZml4ZXMgYSBs
b3Qgb2YgY3Jhc2hlcyBjYXVzZWQgYnkgdGhhdCBsaW1pdGF0aW9uLgorICAgICAgICBBbHNvLCB3
ZSBjb25maXJtIHRoYXQgU2hhZG93Um9vdCBpcyBub3QgZXhwb3NlZCB0byBKYXZhU2NyaXB0IGxh
eWVyLgorCisgICAgICAgIEN1cnJlbnRseSB0aGlzIGNoYW5nZSBpcyBvbmx5IGVuYWJsZWQgaWYg
c2hhZG93IGRvbSBmbGFnIGlzIGVuYWJsZWQsIHNpbmNlIHdlIGNhbm5vdAorICAgICAgICBwcm92
ZSB0aGlzIGNoYW5nZSBkb2VzIG5vdCBkZXN0cm95IHRoZSBleGlzdGluZyBiZWhhdmlvci4gSG93
ZXZlciwgdGhpcyBjaGFuZ2UgaXMgcmVhbGx5IHJlcXVpcmVkCisgICAgICAgIHRvIGZpeCBvdGhl
ciBlZGl0aW5nIGJ1Z3MgaW4gU2hhZG93IERPTS4gQSBidW5jaCBvZiBwYXRjaGVzIGFuZCB0ZXN0
cyB3aWxsIGJlIGFkZGVkIHRvCisgICAgICAgIGZpeCBvdGhlciBlZGl0aW5nIGJ1Z3MgYW5kIHRo
ZXkgd2lsbCBjaGVjayB0aGlzIHBhdGNoIGRvZXMgbm90IGJyZWFrIGVkaXRpbmcuCisgICAgICAg
IFdlIHdpbGwgYWxzbyBhZGQgYSBmdXp6ZXIgdG8gY2hlY2sgdGhlIHN0YWJpbGl0eSBvZiBlZGl0
aW5nIGluIFNoYWRvdyBET00gbGF0ZXIsIGFuZCBpdCB3aWxsCisgICAgICAgIGFsc28gaGVscCB0
byBjb25maXJtIHRoZSBwYXRjaCB3aWxsIG5vdCBicmVhayB0aGUgZWRpdGluZy4KKworICAgICAg
ICBUZXN0czogZWRpdGluZy9zaGFkb3cvZG91YmxlY2xpY2stb24tbWV0ZXItaW4tc2hhZG93LWNy
YXNoLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc2hhZG93L3JpZ2h0Y2xpY2stb24tbWV0
ZXItaW4tc2hhZG93LWNyYXNoLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc2hhZG93L3No
YWRvdy1zZWxlY3Rpb24tbm90LWV4cG9ydGVkLmh0bWwKKworICAgICAgICAqIGRvbS9Qb3NpdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6UG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UG9zaXRpb246OmNvbnRhaW5lck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9z
aXRpb246OnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3Np
dGlvbjo6cHJldmlvdXMpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246Om5leHQpOgorICAg
ICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmF0U3RhcnRPZlRyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UG9zaXRpb246OmF0RW5kT2ZUcmVlKToKKyAgICAgICAgKiBkb20vUG9zaXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OmZpbmRQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKToKKwogMjAxMi0wNS0wNyAgRGFuYSBKYW5zZW5z
ICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWdpb246OmludGVyc2VjdHMoKSBh
bmQgUmVnaW9uOjpjb250YWlucygpIGFyZSBzbG93IGR1ZSB0byBjb3B5IG92ZXJoZWFkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uLmNwcAppbmRleCBmZDc4ZWI5MWU5ZGY0YjMyOWIyNjhjN2ZiZmU0MmEyNjZk
OWU3MDFlLi40ZTQ4Y2Q5MjFmZDYwOGUyMmZhMmVhMDE1NTIwZGRiZWExNTM1NDBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTgwLDcgKzgwLDExIEBAIFBvc2l0aW9uOjpQb3NpdGlvbihQ
YXNzUmVmUHRyPE5vZGU+IGFuY2hvck5vZGUsIExlZ2FjeUVkaXRpbmdPZmZzZXQgb2Zmc2V0KQog
ICAgICwgbV9hbmNob3JUeXBlKGFuY2hvclR5cGVGb3JMZWdhY3lFZGl0aW5nUG9zaXRpb24obV9h
bmNob3JOb2RlLmdldCgpLCBtX29mZnNldCkpCiAgICAgLCBtX2lzTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKHRydWUpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgQVNTRVJUKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSB8fCAhbV9hbmNob3JOb2RlIHx8ICFt
X2FuY2hvck5vZGUtPmlzU2hhZG93Um9vdCgpKTsKKyNlbHNlCiAgICAgQVNTRVJUKCFtX2FuY2hv
ck5vZGUgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkpOworI2VuZGlmCiB9CiAKIFBv
c2l0aW9uOjpQb3NpdGlvbihQYXNzUmVmUHRyPE5vZGU+IGFuY2hvck5vZGUsIEFuY2hvclR5cGUg
YW5jaG9yVHlwZSkKQEAgLTg5LDcgKzkzLDEyIEBAIFBvc2l0aW9uOjpQb3NpdGlvbihQYXNzUmVm
UHRyPE5vZGU+IGFuY2hvck5vZGUsIEFuY2hvclR5cGUgYW5jaG9yVHlwZSkKICAgICAsIG1fYW5j
aG9yVHlwZShhbmNob3JUeXBlKQogICAgICwgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbihmYWxz
ZSkKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhZG93RE9NRW5hYmxlZCgpIHx8ICFtX2FuY2hvck5vZGUgfHwgIW1fYW5jaG9y
Tm9kZS0+aXNTaGFkb3dSb290KCkpOworI2Vsc2UKICAgICBBU1NFUlQoIW1fYW5jaG9yTm9kZSB8
fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSk7CisjZW5kaWYKKwogICAgIEFTU0VSVChh
bmNob3JUeXBlICE9IFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7CiAgICAgQVNTRVJUKCEoKGFu
Y2hvclR5cGUgPT0gUG9zaXRpb25Jc0JlZm9yZUNoaWxkcmVuIHx8IGFuY2hvclR5cGUgPT0gUG9z
aXRpb25Jc0FmdGVyQ2hpbGRyZW4pCiAgICAgICAgICYmIChtX2FuY2hvck5vZGUtPmlzVGV4dE5v
ZGUoKSB8fCBlZGl0aW5nSWdub3Jlc0NvbnRlbnQobV9hbmNob3JOb2RlLmdldCgpKSkpKTsKQEAg
LTEwMSw3ICsxMTAsMTIgQEAgUG9zaXRpb246OlBvc2l0aW9uKFBhc3NSZWZQdHI8Tm9kZT4gYW5j
aG9yTm9kZSwgaW50IG9mZnNldCwgQW5jaG9yVHlwZSBhbmNob3JUeXAKICAgICAsIG1fYW5jaG9y
VHlwZShhbmNob3JUeXBlKQogICAgICwgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbihmYWxzZSkK
IHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBBU1NFUlQoIW1fYW5jaG9yTm9kZSB8fCAh
ZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkpOworI2Vsc2UKICAgICBB
U1NFUlQoIW1fYW5jaG9yTm9kZSB8fCAhZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9k
ZS5nZXQoKSkgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkpOworI2VuZGlmCisKICAg
ICBBU1NFUlQoYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOwogfQogCkBA
IC0xNDMsNyArMTU3LDcgQEAgTm9kZSogUG9zaXRpb246OmNvbnRhaW5lck5vZGUoKSBjb25zdAog
ICAgICAgICByZXR1cm4gbV9hbmNob3JOb2RlLmdldCgpOwogICAgIGNhc2UgUG9zaXRpb25Jc0Jl
Zm9yZUFuY2hvcjoKICAgICBjYXNlIFBvc2l0aW9uSXNBZnRlckFuY2hvcjoKLSAgICAgICAgcmV0
dXJuIG1fYW5jaG9yTm9kZS0+bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCk7CisgICAgICAg
IHJldHVybiBmaW5kUGFyZW50KG1fYW5jaG9yTm9kZS5nZXQoKSk7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpAQCAtMjAzLDcgKzIxNyw3IEBAIFBvc2l0
aW9uIFBvc2l0aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSBjb25zdAogICAgIAogICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBvbmx5IGJlIG5lY2Vzc2FyeSBmb3IgbGVnYWN5IHBvc2l0
aW9ucywgYnV0IGlzIGFsc28gbmVlZGVkIGZvciBwb3NpdGlvbnMgYmVmb3JlIGFuZCBhZnRlciBU
YWJsZXMKICAgICBpZiAobV9vZmZzZXQgPD0gMCAmJiAobV9hbmNob3JUeXBlICE9IFBvc2l0aW9u
SXNBZnRlckFuY2hvciAmJiBtX2FuY2hvclR5cGUgIT0gUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4p
KSB7Ci0gICAgICAgIGlmIChtX2FuY2hvck5vZGUtPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9k
ZSgpICYmIChlZGl0aW5nSWdub3Jlc0NvbnRlbnQobV9hbmNob3JOb2RlLmdldCgpKSB8fCBpc1Rh
YmxlRWxlbWVudChtX2FuY2hvck5vZGUuZ2V0KCkpKSkKKyAgICAgICAgaWYgKGZpbmRQYXJlbnQo
bV9hbmNob3JOb2RlLmdldCgpKSAmJiAoZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9k
ZS5nZXQoKSkgfHwgaXNUYWJsZUVsZW1lbnQobV9hbmNob3JOb2RlLmdldCgpKSkpCiAgICAgICAg
ICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobV9hbmNob3JOb2RlLmdldCgp
KTsKICAgICAgICAgcmV0dXJuIFBvc2l0aW9uKG1fYW5jaG9yTm9kZS5nZXQoKSwgMCwgUG9zaXRp
b25Jc09mZnNldEluQW5jaG9yKTsKICAgICB9CkBAIC0zMTYsNyArMzMwLDcgQEAgUG9zaXRpb24g
UG9zaXRpb246OnByZXZpb3VzKFBvc2l0aW9uTW92ZVR5cGUgbW92ZVR5cGUpIGNvbnN0CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBuLT5ub25TaGFkb3dC
b3VuZGFyeVBhcmVudE5vZGUoKTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBmaW5kUGFy
ZW50KG4pOwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKQEAgLTM0
OCw3ICszNjIsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6bmV4dChQb3NpdGlvbk1vdmVUeXBlIG1v
dmVUeXBlKSBjb25zdAogICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KG4sIChtb3ZlVHlwZSA9PSBDaGFyYWN0ZXIpID8gdW5jaGVja2VkTmV4dE9mZnNldChuLCBvKSA6
IG8gKyAxKTsKICAgICB9CiAKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBuLT5ub25TaGFk
b3dCb3VuZGFyeVBhcmVudE5vZGUoKTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBmaW5k
UGFyZW50KG4pOwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKQEAg
LTQ0MSwxNCArNDU1LDE0IEBAIGJvb2wgUG9zaXRpb246OmF0U3RhcnRPZlRyZWUoKSBjb25zdAog
ewogICAgIGlmIChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuICFk
ZXByZWNhdGVkTm9kZSgpLT5ub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKSAmJiBtX29mZnNl
dCA8PSAwOworICAgIHJldHVybiAhZmluZFBhcmVudChkZXByZWNhdGVkTm9kZSgpKSAmJiBtX29m
ZnNldCA8PSAwOwogfQogCiBib29sIFBvc2l0aW9uOjphdEVuZE9mVHJlZSgpIGNvbnN0CiB7CiAg
ICAgaWYgKGlzTnVsbCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gIWRlcHJl
Y2F0ZWROb2RlKCktPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpICYmIG1fb2Zmc2V0ID49
IGxhc3RPZmZzZXRGb3JFZGl0aW5nKGRlcHJlY2F0ZWROb2RlKCkpOworICAgIHJldHVybiAhZmlu
ZFBhcmVudChkZXByZWNhdGVkTm9kZSgpKSAmJiBtX29mZnNldCA+PSBsYXN0T2Zmc2V0Rm9yRWRp
dGluZyhkZXByZWNhdGVkTm9kZSgpKTsKIH0KIAogaW50IFBvc2l0aW9uOjpyZW5kZXJlZE9mZnNl
dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCmluZGV4IDRlMjQ0YTBkMmQwOGE1Mzk4YThmMTkz
Y2NlODlkMDZjMGJkZDI3NjguLjBmOTQ0ZGNhNmYzMDVlMzJmODY3MWEwYzk2YzY0MDU4NzE3MmQw
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJD
b250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiRWRpdGluZ0JvdW5kYXJ5LmgiCisjaW5jbHVkZSAi
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlRleHRBZmZpbml0eS5oIgogI2lu
Y2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAt
MjE3LDYgKzIxOCwyMiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0xlZ2FjeUVkaXRpbmdQb3Np
dGlvbiA6IDE7CiB9OwogCitpbmxpbmUgQ29udGFpbmVyTm9kZSogZmluZFBhcmVudChjb25zdCBO
b2RlKiBub2RlKQoreworICAgIC8vIEZJWE1FOiBTaW5jZSBlbmFibGluZyBQb3NpdGlvbiB0byBo
YXZlIFNoYWRvd1Jvb3QgYXMgYSBjb250YWluZXIgaXMgbm90IHByb3ZlZCBub3QgdG8KKyAgICAv
LyBicmVhayBlZGl0aW5nIGNvZGUuIEhvd2V2ZXIsIHRoaXMgaXMgcmVhbGx5IHJlcXVpcmVkIGZv
ciBlZGl0aW5nIGluIFNoYWRvdyBET00uCisgICAgLy8gU28gd2UgaW1wbGVtZW50IHRoaXMgYmVo
aW5kIHRoZSBmbGFnLiBBZnRlciB3cml0aW5nIGEgbG90IG9mIHRlc3RzIGZvciB0aGVtIHRvIGNv
bmZpcm0KKyAgICAvLyB0aGlzIGlzIHNhZmUsIHdlIHdpbGwgcmVtb3ZlIHRoZSBmbGFnIGZvciB0
aGlzIHB1cnBvc2UuCisgICAgLy8gU2VlIGFsc28gdGhpcyB1bWJyZWxsYSBidWdzLiBodHRwOi8v
d2tiLnVnLzgyNjk3CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhZG93RE9NRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gbm9kZS0+
cGFyZW50Tm9kZSgpOworI2VuZGlmCisKKyAgICByZXR1cm4gbm9kZS0+bm9uU2hhZG93Qm91bmRh
cnlQYXJlbnROb2RlKCk7Cit9CisKIGlubGluZSBQb3NpdGlvbiBjcmVhdGVMZWdhY3lFZGl0aW5n
UG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBpbnQgb2Zmc2V0KQogewogICAgIHJldHVy
biBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6TGVnYWN5RWRpdGluZ09mZnNldChvZmZzZXQpKTsK
QEAgLTI0NCwxMyArMjYxLDEzIEBAIGlubGluZSBQb3NpdGlvbiBwb3NpdGlvbkluUGFyZW50QmVm
b3JlTm9kZShjb25zdCBOb2RlKiBub2RlKQogICAgIC8vIEF0IGxlYXN0IG9uZSBjYWxsZXIgY3Vy
cmVudGx5IGhpdHMgdGhpcyBBU1NFUlQgdGhvdWdoLCB3aGljaCBpbmRpY2F0ZXMKICAgICAvLyB0
aGF0IHRoZSBjYWxsZXIgaXMgdHJ5aW5nIHRvIG1ha2UgYSBwb3NpdGlvbiByZWxhdGl2ZSB0byBh
IGRpc2Nvbm5lY3RlZCBub2RlICh3aGljaCBpcyBsaWtlbHkgYW4gZXJyb3IpCiAgICAgLy8gU3Bl
Y2lmaWNhbGx5LCBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saWdhdHVyZS0wMDEuaHRtbCBjcmFz
aGVzIHdpdGggQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSkKLSAgICByZXR1cm4gUG9zaXRpb24o
bm9kZS0+bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCksIG5vZGUtPm5vZGVJbmRleCgpLCBQ
b3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKKyAgICByZXR1cm4gUG9zaXRpb24o
ZmluZFBhcmVudChub2RlKSwgbm9kZS0+bm9kZUluZGV4KCksIFBvc2l0aW9uOjpQb3NpdGlvbklz
T2Zmc2V0SW5BbmNob3IpOwogfQogCiBpbmxpbmUgUG9zaXRpb24gcG9zaXRpb25JblBhcmVudEFm
dGVyTm9kZShjb25zdCBOb2RlKiBub2RlKQogewotICAgIEFTU0VSVChub2RlLT5ub25TaGFkb3dC
b3VuZGFyeVBhcmVudE5vZGUoKSk7Ci0gICAgcmV0dXJuIFBvc2l0aW9uKG5vZGUtPm5vblNoYWRv
d0JvdW5kYXJ5UGFyZW50Tm9kZSgpLCBub2RlLT5ub2RlSW5kZXgoKSArIDEsIFBvc2l0aW9uOjpQ
b3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOworICAgIEFTU0VSVChmaW5kUGFyZW50KG5vZGUpKTsK
KyAgICByZXR1cm4gUG9zaXRpb24oZmluZFBhcmVudChub2RlKSwgbm9kZS0+bm9kZUluZGV4KCkg
KyAxLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKIH0KIAogLy8gcG9zaXRp
b25CZWZvcmVOb2RlIGFuZCBwb3NpdGlvbkFmdGVyTm9kZSByZXR1cm4gbmVpZ2hib3ItYW5jaG9y
ZWQgcG9zaXRpb25zLCBjb25zdHJ1Y3Rpb24gaXMgTygxKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhiODIzMDU2ZGJhZTRi
Y2EzYmMzNGMyNTE4YmY0YzFhMjgzMTQ2MWIuLjk2YzNmMTA2Yjk4NmIyMGE4OWQ3MmRlYmQwOTgx
OTc4N2RhNzAwMmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMi0wNS0wOCAgU2hpbnlhIEth
d2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9zaXRpb24gc2hvdWxk
IGJlIGFibGUgdG8gaGF2ZSBTaGFkb3dSb290IGFzIGEgY29udGFpbmVyLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIwMjEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTa2lwcGVkIG5vbi1jaHJvbWl1bSBw
b3J0IHNpbmNlIFNIQURPV19ET00gZmxhZyBpcyBub3QgZW5hYmxlZCBpbiB0aG9zZSBwbGF0Zm9y
bXMuCisgICAgICAgIFdlIHdpbGwgYWRkIGJ1bmNoIG9mIHRlc3RzIGZvciBlZGl0aW5nIGluIFNo
YWRvdyBET00gaW50byBlZGl0aW5nL3NoYWRvdyBsYXRlciwKKyAgICAgICAgc28gSSBhZGRlZCB0
aGUgd2hvbGUgZGlyZWN0b3J5IG5hbWUgdG8gdGhlIHNraXBwZWQgbGlzdC4KKworICAgICAgICAq
IGVkaXRpbmcvc2hhZG93L2RvdWJsZWNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFzaC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2hhZG93L2RvdWJsZWNsaWNrLW9u
LW1ldGVyLWluLXNoYWRvdy1jcmFzaC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3No
YWRvdy9yaWdodGNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFzaC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2hhZG93L3JpZ2h0Y2xpY2stb24tbWV0ZXItaW4tc2hh
ZG93LWNyYXNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2hhZG93L3NoYWRvdy1z
ZWxlY3Rpb24tbm90LWV4cG9ydGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRp
dGluZy9zaGFkb3cvc2hhZG93LXNlbGVjdGlvbi1ub3QtZXhwb3J0ZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZWZsL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lw
cGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQ6CisgICAgICAgICogcGxh
dGZvcm0vd2syL1NraXBwZWQ6CisKIDIwMTItMDUtMDcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBwbGF0Zm9ybS9tYWMvIHJlc3VsdHMgZm9yIG5ldyB0ZXN0
cyBhZGRlZCBieSByMTE2MzczLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFk
b3cvZG91YmxlY2xpY2stb24tbWV0ZXItaW4tc2hhZG93LWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L2RvdWJsZWNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1j
cmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTIyNzIxOGU4YzAzNTdiMWI3OWM1ZWRmMTRm
MzE4YTg2Y2I0MDAyYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2hh
ZG93L2RvdWJsZWNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFzaC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzIEBACitUaGlzIHRlc3QgZW5zdXJlcyBjb250ZXh0IGNsaWNrIGFyb3VuZCBtZXRl
ciB3b24ndCBjcmFzaC4KKworUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9z
aGFkb3cvZG91YmxlY2xpY2stb24tbWV0ZXItaW4tc2hhZG93LWNyYXNoLmh0bWwgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NoYWRvdy9kb3VibGVjbGljay1vbi1tZXRlci1pbi1zaGFkb3ctY3Jhc2gu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NmYyZTMyNGVhNDYwYzk3NjcyZWJmYjUyZTIzN2Q5NGE3Y2NkMDU5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvZG91YmxlY2xp
Y2stb24tbWV0ZXItaW4tc2hhZG93LWNyYXNoLmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxwPlRoaXMgdGVzdCBlbnN1cmVzIGNvbnRleHQgY2xpY2sgYXJv
dW5kIG1ldGVyIHdvbid0IGNyYXNoLjwvcD4KKzxkaXYgaWQ9J2NvbnRhaW5lcicgc3R5bGU9Indp
ZHRoOjEwMHB4OyBoZWlnaHQ6IDEwMHB4Ij48L2Rpdj4KKzxwPlBBU1M8L3A+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9kb20vc2hhZG93L3Jlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisKK3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29u
dGFpbmVyJyk7Cit2YXIgc2hhZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGNvbnRhaW5l
cik7Cit2YXIgbWV0ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdtZXRlcicpOworc2hhZG93
Um9vdC5hcHBlbmRDaGlsZChtZXRlcik7CisKKy8vIERvIGRvdWJsZWNsaWNrIGF0IHZhcmlvdXMg
cG9pbnRzLgorZG91YmxlQ2xpY2sobWV0ZXIub2Zmc2V0TGVmdCwgbWV0ZXIub2Zmc2V0VG9wKTsK
K2RvdWJsZUNsaWNrKG1ldGVyLm9mZnNldExlZnQgLSAxLCBtZXRlci5vZmZzZXRUb3ApOworZG91
YmxlQ2xpY2sobWV0ZXIub2Zmc2V0TGVmdCwgbWV0ZXIub2Zmc2V0VG9wIC0gMSk7Citkb3VibGVD
bGljayhtZXRlci5vZmZzZXRMZWZ0IC0gMSwgbWV0ZXIub2Zmc2V0VG9wIC0gMSk7Citkb3VibGVD
bGljayhtZXRlci5vZmZzZXRMZWZ0ICsgMSwgbWV0ZXIub2Zmc2V0VG9wKTsKK2RvdWJsZUNsaWNr
KG1ldGVyLm9mZnNldExlZnQsIG1ldGVyLm9mZnNldFRvcCArIDEpOworZG91YmxlQ2xpY2sobWV0
ZXIub2Zmc2V0TGVmdCArIDEsIG1ldGVyLm9mZnNldFRvcCArIDEpOworZG91YmxlQ2xpY2sobWV0
ZXIub2Zmc2V0TGVmdCArIG1ldGVyLm9mZnNldFdpZHRoIC8gMiwgbWV0ZXIub2Zmc2V0VG9wICsg
bWV0ZXIub2Zmc2V0SGVpZ2h0IC8gMik7Citkb3VibGVDbGljayhtZXRlci5vZmZzZXRMZWZ0ICsg
bWV0ZXIub2Zmc2V0V2lkdGggLSAxLCBtZXRlci5vZmZzZXRUb3AgKyBtZXRlci5vZmZzZXRIZWln
aHQgLSAxKTsKK2RvdWJsZUNsaWNrKG1ldGVyLm9mZnNldExlZnQgKyBtZXRlci5vZmZzZXRXaWR0
aCArIDEsIG1ldGVyLm9mZnNldFRvcCArIG1ldGVyLm9mZnNldEhlaWdodCArIDEpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3No
YWRvdy9yaWdodGNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFzaC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9yaWdodGNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1j
cmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTIyNzIxOGU4YzAzNTdiMWI3OWM1ZWRmMTRm
MzE4YTg2Y2I0MDAyYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2hh
ZG93L3JpZ2h0Y2xpY2stb24tbWV0ZXItaW4tc2hhZG93LWNyYXNoLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDMgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIGNvbnRleHQgY2xpY2sgYXJvdW5kIG1ldGVy
IHdvbid0IGNyYXNoLgorCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3No
YWRvdy9yaWdodGNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFzaC5odG1sIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zaGFkb3cvcmlnaHRjbGljay1vbi1tZXRlci1pbi1zaGFkb3ctY3Jhc2guaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44YzIzODZhOTA0Y2VkMTUzMzFhMDE3MGVkNWZmNTMyYWRmYzQ2MTVhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvcmlnaHRjbGljay1v
bi1tZXRlci1pbi1zaGFkb3ctY3Jhc2guaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPHA+VGhpcyB0ZXN0IGVuc3VyZXMgY29udGV4dCBjbGljayBhcm91bmQg
bWV0ZXIgd29uJ3QgY3Jhc2guPC9wPgorPGRpdiBpZD0nY29udGFpbmVyJyBzdHlsZT0id2lkdGg6
MTAwcHg7IGhlaWdodDogMTAwcHgiPjwvZGl2PgorPHA+UEFTUzwvcD4KKworPHNjcmlwdCBzcmM9
InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZWRpdGluZy9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KworZnVuY3Rpb24gY29udGV4dENsaWNrKHgsIHkpIHsKKyAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5jb250ZXh0Q2xpY2soKTsKK30KKwordmFyIGNv
bnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKTsKK3ZhciBzaGFk
b3dSb290ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoY29udGFpbmVyKTsKK3ZhciBtZXRlciA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ21ldGVyJyk7CitzaGFkb3dSb290LmFwcGVuZENoaWxkKG1l
dGVyKTsKKworLy8gRG8gY29udGV4dCBjbGljayBhdCB2YXJpb3VzIHBvaW50cy4KK2NvbnRleHRD
bGljayhtZXRlci5vZmZzZXRMZWZ0LCBtZXRlci5vZmZzZXRUb3ApOworY29udGV4dENsaWNrKG1l
dGVyLm9mZnNldExlZnQgLSAxLCBtZXRlci5vZmZzZXRUb3ApOworY29udGV4dENsaWNrKG1ldGVy
Lm9mZnNldExlZnQsIG1ldGVyLm9mZnNldFRvcCAtIDEpOworY29udGV4dENsaWNrKG1ldGVyLm9m
ZnNldExlZnQgLSAxLCBtZXRlci5vZmZzZXRUb3AgLSAxKTsKK2NvbnRleHRDbGljayhtZXRlci5v
ZmZzZXRMZWZ0ICsgMSwgbWV0ZXIub2Zmc2V0VG9wKTsKK2NvbnRleHRDbGljayhtZXRlci5vZmZz
ZXRMZWZ0LCBtZXRlci5vZmZzZXRUb3AgKyAxKTsKK2NvbnRleHRDbGljayhtZXRlci5vZmZzZXRM
ZWZ0ICsgMSwgbWV0ZXIub2Zmc2V0VG9wICsgMSk7Citjb250ZXh0Q2xpY2sobWV0ZXIub2Zmc2V0
TGVmdCArIG1ldGVyLm9mZnNldFdpZHRoIC8gMiwgbWV0ZXIub2Zmc2V0VG9wICsgbWV0ZXIub2Zm
c2V0SGVpZ2h0IC8gMik7Citjb250ZXh0Q2xpY2sobWV0ZXIub2Zmc2V0TGVmdCArIG1ldGVyLm9m
ZnNldFdpZHRoIC0gMSwgbWV0ZXIub2Zmc2V0VG9wICsgbWV0ZXIub2Zmc2V0SGVpZ2h0IC0gMSk7
Citjb250ZXh0Q2xpY2sobWV0ZXIub2Zmc2V0TGVmdCArIG1ldGVyLm9mZnNldFdpZHRoICsgMSwg
bWV0ZXIub2Zmc2V0VG9wICsgbWV0ZXIub2Zmc2V0SGVpZ2h0ICsgMSk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L3No
YWRvdy1zZWxlY3Rpb24tbm90LWV4cG9ydGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2hhZG93L3NoYWRvdy1zZWxlY3Rpb24tbm90LWV4cG9ydGVkLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43MDY3YmNkNmQ2NjFhMmQyMzU3YWJiOTE5NGNjNTBiNGNhYzdjZGI3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvc2hhZG93LXNlbGVjdGlv
bi1ub3QtZXhwb3J0ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1BBU1MgYXNzZXJ0
Tm90SW5TaGFkb3coc2VsZWN0aW9uLmFuY2hvck5vZGUpIGlzIHRydWUKK1BBU1MgYXNzZXJ0Tm90
SW5TaGFkb3coc2VsZWN0aW9uLmZvY3VzTm9kZSkgaXMgdHJ1ZQorUEFTUyBhc3NlcnROb3RJblNo
YWRvdyhzZWxlY3Rpb24uYW5jaG9yTm9kZSkgaXMgdHJ1ZQorUEFTUyBhc3NlcnROb3RJblNoYWRv
dyhzZWxlY3Rpb24uZm9jdXNOb2RlKSBpcyB0cnVlCitQQVNTIGFzc2VydE5vdEluU2hhZG93KHNl
bGVjdGlvbi5hbmNob3JOb2RlKSBpcyB0cnVlCitQQVNTIGFzc2VydE5vdEluU2hhZG93KHNlbGVj
dGlvbi5mb2N1c05vZGUpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorVGhpcyB0ZXN0IGVuc3VyZXMgc2hhZG93IHJvb3Qgd29uJ3QgZXhw
b3NlIHRvIEpTIGxheWVyLgorCitCRUZPUkUKK0FGVEVSCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NoYWRvdy9zaGFkb3ctc2VsZWN0aW9uLW5vdC1leHBvcnRlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvc2hhZG93LXNlbGVjdGlvbi1ub3QtZXhwb3J0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMGIzYjEyMGRhMzZhNWZkMDI1NWY2MjIxNjE3NWFiZDMyODg0YTNjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvc2hhZG93LXNlbGVj
dGlvbi1ub3QtZXhwb3J0ZWQuaHRtbApAQCAtMCwwICsxLDgyIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisKKzxwPlRoaXMgdGVzdCBlbnN1cmVz
IHNoYWRvdyByb290IHdvbid0IGV4cG9zZSB0byBKUyBsYXllci48cD4KKzxkaXYgaWQ9J2RpdjEn
PkJFRk9SRTwvZGl2PgorPGRpdiBpZD0nY29udGFpbmVyJz5DT05UQUlORVI8L2Rpdj4KKzxkaXYg
aWQ9J2RpdjQnPkFGVEVSPC9kaT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2RvbS9zaGFkb3cv
cmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5n
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciBj
b250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJyk7Cit2YXIgc2hh
ZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGNvbnRhaW5lcik7CisKK3ZhciBkaXYyID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CitkaXYyLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCdJTiBTSEFET1cgVFJFRSAxJykpOwordmFyIGRpdjMgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2RpdjMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoJ0lOIFNIQURPVyBUUkVFIDInKSk7CisKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQo
ZGl2Mik7CitzaGFkb3dSb290LmFwcGVuZENoaWxkKGRpdjMpOworCitmdW5jdGlvbiBtaWRYKGVs
ZW1lbnQpIHsKKyAgICByZXR1cm4gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRX
aWR0aCAvIDI7Cit9CisKK2Z1bmN0aW9uIG1pZFkoZWxlbWVudCkgeworICAgIHJldHVybiBlbGVt
ZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKK30KKworZnVuY3Rpb24g
YXNzZXJ0Tm90SW5TaGFkb3coZWxlbWVudCkgeworICAgIGlmIChlbGVtZW50ID09IGRpdjIgfHwg
ZWxlbWVudCA9PSBkaXYyLmZpcnN0Q2hpbGQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoZWxlbWVudCA9PSBkaXYzIHx8IGVsZW1lbnQgPT0gZGl2My5maXJzdENoaWxkKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAvLyBUcnkgc2VsZWN0IGZyb20gb3V0c2lkZSBvZiBhIHNoYWRvdyBzdWJ0
cmVlIHRvIGluc2lkZSBvZiBhIHNoYWRvdyBzdWJ0cmVlLgorICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKG1pZFgoZGl2MSksIG1pZFkoZGl2MSkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93
bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG1pZFgoZGl2MiksIG1pZFkoZGl2Mikp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAgIHZhciBzZWxlY3Rpb24gPSB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgc2hvdWxkQmUoJ2Fzc2VydE5vdEluU2hhZG93KHNlbGVj
dGlvbi5hbmNob3JOb2RlKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ2Fzc2VydE5vdEluU2hh
ZG93KHNlbGVjdGlvbi5mb2N1c05vZGUpJywgJ3RydWUnKTsKKworICAgIHNlbGVjdGlvbi5yZW1v
dmVBbGxSYW5nZXMoKTsKKworICAgIC8vIFRyeSBzZWxlY3QgZnJvbSBpbnNpZGUgb2YgYSBzaGFk
b3cgc3VidHJlZSB0byBvdXRzaWRlIG9mIGEgc2hhZG93IHN1YnRyZWUuCisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8obWlkWChkaXYzKSwgbWlkWShkaXYzKSk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8obWlkWChkaXY0KSwgbWlk
WShkaXY0KSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworCisgICAgc2VsZWN0aW9uID0g
d2luZG93LmdldFNlbGVjdGlvbigpOworICAgIHNob3VsZEJlKCdhc3NlcnROb3RJblNoYWRvdyhz
ZWxlY3Rpb24uYW5jaG9yTm9kZSknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdhc3NlcnROb3RJ
blNoYWRvdyhzZWxlY3Rpb24uZm9jdXNOb2RlKScsICd0cnVlJyk7CisgICAgc2VsZWN0aW9uLnJl
bW92ZUFsbFJhbmdlcygpOworCisgICAgLy8gVHJ5IHNlbGVjdCBpbnNpZGUgc2hhZG93IHN1YnRy
ZWVzLgorICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG1pZFgoZGl2MiksIG1pZFkoZGl2Mikp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKG1pZFgoZGl2MyksIG1pZFkoZGl2MykpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsK
KworICAgIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICBzaG91bGRCZSgn
YXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmFuY2hvck5vZGUpJywgJ3RydWUnKTsKKyAgICBz
aG91bGRCZSgnYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmZvY3VzTm9kZSknLCAndHJ1ZScp
OworICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
ZmwvU2tpcHBlZAppbmRleCA2ZmZiYmVhNDY3MTc2MjUyMmZlYjRkODI1OTM1MWRjN2YyMjY1Y2Rm
Li5kODA2Y2JkYmM4NGNlOWFjYWQ0NjBiNTc5MGYwNTQ4NzNiMGQwMzg3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwvU2tpcHBlZApAQCAtMjU5LDYgKzI1OSw3IEBAIGZhc3QvbWVkaWEvcHJpbnQtcmVzdG9y
ZXMtcHJldmlvdXMtbWVkaWF0eXBlLmh0bWwKIAogIyBFTkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlz
YWJsZWQKIGZhc3QvZG9tL3NoYWRvdworZWRpdGluZy9zaGFkb3cKIAogIyBFTkFCTEUoREFUQUxJ
U1QpIGlzIGRpc2FibGVkCiBmYXN0L2Zvcm1zL2RhdGFsaXN0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCA4YjJlZThkOGFjNDYwNjZjMWU1
YzY0MzQ1OGNlNGNhMDJiMDliMWE1Li4wMjAzZjNjZmZmNGQxZjIyY2RmOWE3MDA3YjljMTVkMDQ5
Y2U0MTBmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3Rh
dGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0aW9u
cy50eHQKQEAgLTIzNiw2ICsyMzYsNyBAQCBCVUdXS0dUSyBTS0lQIDogZmFzdC9yZWdpb25zL3N0
eWxlLXNjb3BlZC1pbi1mbG93Lmh0bWwgPSBGQUlMCiAKIC8vIEVOQUJMRShTSEFET1dfRE9NKSBp
cyBkaXNhYmxlZC4KIEJVR1dLR1RLIFNLSVAgOiBmYXN0L2RvbS9zaGFkb3cgPSBGQUlMCitCVUdX
S0dUSyBTS0lQIDogZWRpdGluZy9zaGFkb3cgPSBGQUlMCiAKIC8vIENTUyBSZWdpb25zIHN1cHBv
cnQgbm90IHlldCBlbmFibGVkLgogQlVHV0s1NzMxMiBTS0lQIDogZmFzdC9yZWdpb25zID0gRkFJ
TApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAppbmRleCA2NWM5ZGI5YTk5YmI1NmRmZDM5NDdlMDZm
NDZhMDJiYzlmODkxYzg5Li43OTQ3ZjM0MzMxZWRjN2EwZTkwOGY2Y2I1MDAyMDdkMGRlZjkxZmRk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApAQCAtNDQ3LDYgKzQ0Nyw3IEBAIGZhc3QvcmVn
aW9ucy9zdHlsZS1zY29wZWQtaW4tZmxvdy5odG1sCiAKICMgRU5BQkxFKFNIQURPV19ET00pIGlz
IGRpc2FibGVkLgogZmFzdC9kb20vc2hhZG93CitlZGl0aW5nL3NoYWRvdwogCiAjIEpTQyBkb2Vz
IG5vdCBzdXBwb3J0IHNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbiAoaHR0cDovL3dlYmtp
dC5vcmcvYi82MTU0MCkKIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9jcm9zcy1v
cmlnaW4teGhyLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBw
ZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IDAwNTA1MDA0NWVmMTEw
ODFiOWMyYTEwZDcwNzhmY2RkOGVhYjQ5OWIuLjg1ZjA5ODc2YTQyNWUwNjViZmZhY2Y4NDQ5YTZi
ODk0YTMwODAzZTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMTY5LDYgKzE2OSw3IEBA
IGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4tZmxvdy1vdmVycmlkZS1yZWdpb24tc3R5bGlu
Zy5odG1sCiBmYXN0L3JlZ2lvbnMvc3R5bGUtc2NvcGVkLWluLWZsb3cuaHRtbAogCiAjIEVOQUJM
RShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KK2VkaXRpbmcvc2hhZG93CiBmYXN0L2RvbS9zaGFk
b3cvYWNjZXNzLWtleS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvYWRvcHQtbm9kZS13aXRoLXNoYWRv
dy1yb290Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXIu
aHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCBmZDM3Y2JjY2ViYzZiZGNhZmNmMDcx
NWUzOGNlNjY0M2RlMTAzNzRmLi43M2E3MmM4NDQ3NWM1OTk1YzIwZGU3ZTc3MmEzOTY5YjVjYmFm
ZTNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtMTQ3Nyw2ICsxNDc3LDcgQEAgZmFz
dC9yZWdpb25zL3N0eWxlLXNjb3BlZC1pbi1mbG93LW92ZXJyaWRlLXJlZ2lvbi1zdHlsaW5nLmh0
bWwKIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4tZmxvdy5odG1sCiAKICMgRU5BQkxFKFNI
QURPV19ET00pIGlzIGRpc2FibGVkLgorZWRpdGluZy9zaGFkb3cKIGZhc3QvZG9tL3NoYWRvdy9j
b250ZW50LWVsZW1lbnQtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQt
b3V0c2lkZS1zaGFkb3cuaHRtbAogZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1vdXRz
aWRlLXNoYWRvdy1zdHlsZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZApp
bmRleCBmYjhkNGMxMDczYmM1YWQzOWRlYTAxNzhmNjNiMjdmNzgzOGNmZTQwLi5mOTUxZjQ3MzU3
MDBmZmViN2JhYWM0NGZlODJhM2YzOTYxZmExNzAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNh
aXJvL1NraXBwZWQKQEAgLTE5ODMsNiArMTk4Myw3IEBAIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29w
ZWQtaW4tZmxvdy1vdmVycmlkZS1yZWdpb24tc3R5bGluZy5odG1sCiBmYXN0L3JlZ2lvbnMvc3R5
bGUtc2NvcGVkLWluLWZsb3cuaHRtbAogCiAjIEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxl
ZC4KK2VkaXRpbmcvc2hhZG93CiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LWFwaS5o
dG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LW91dHNpZGUtc2hhZG93Lmh0bWwK
IGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtaW4tbWVkaWEtZWxlbWVudC5odG1sCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3drMi9Ta2lwcGVkCmluZGV4IDE1MzgxZWMyNzc3ZGIyMDRjMzE0ZGNkZjQzNWUw
ZDAyY2UwNDRlYmUuLjJlNzExNmZiZDY1MDlmZTY1ZDNhNTQwNGZjNjdjODA2MzY0YzdkZDkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCkBAIC0xMDkwLDYgKzEwOTAsNyBAQCBlZGl0aW5nL3Bh
c3RlYm9hcmQvZHJhZy1kcm9wLXVybC13aXRoLXN0eWxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9j
cmVhdGUtY29udGVudC1lbGVtZW50Lmh0bWwKIAogIyBFTkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlz
YWJsZWQuCitlZGl0aW5nL3NoYWRvdwogZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1h
cGkuaHRtbAogZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1vdXRzaWRlLXNoYWRvdy5o
dG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LW91dHNpZGUtc2hhZG93LXN0eWxl
Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140843</attachid>
            <date>2012-05-08 18:42:55 -0700</date>
            <delta_ts>2012-05-08 18:52:46 -0700</delta_ts>
            <desc>Build test</desc>
            <filename>bug-82021-20120509104253.patch</filename>
            <type>text/plain</type>
            <size>22488</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDE1ODQ1ZTUzODNlMTI5
OTVhY2U4MWMwMjIwNTEyMjM2YjIzM2MzNC4uYjNmMmE3ZmExNTI2Y2ZmOGQ3YmZlZTkzYWY0NjJk
NjhhNDZlZjI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA1LTA4ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBQb3NpdGlvbiBz
aG91bGQgYmUgYWJsZSB0byBoYXZlIFNoYWRvd1Jvb3QgYXMgYSBjb250YWluZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAyMQorCisgICAgICAg
IFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBTaW5jZSBQb3NpdGlvbiBjb3Vs
ZCBub3QgdGFrZSBhIHNoYWRvdyByb290IGFzIGEgY29udGFpbmVyIG5vZGUsIHBvaW50aW5nIHRo
ZSBkaXJlY3QgY2hpbGRyZW4KKyAgICAgICAgb2YgYSBzaGFkb3cgcm9vdCB3YXMgZGlmZmljdWx0
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgZW5hYmxlZCwgYW5kIGZpeGVzIGEgbG90
IG9mIGNyYXNoZXMgY2F1c2VkIGJ5IHRoYXQgbGltaXRhdGlvbi4KKyAgICAgICAgQWxzbywgd2Ug
Y29uZmlybSB0aGF0IFNoYWRvd1Jvb3QgaXMgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlwdCBsYXll
ci4KKworICAgICAgICBDdXJyZW50bHkgdGhpcyBjaGFuZ2UgaXMgb25seSBlbmFibGVkIGlmIHNo
YWRvdyBkb20gZmxhZyBpcyBlbmFibGVkLCBzaW5jZSB3ZSBjYW5ub3QKKyAgICAgICAgcHJvdmUg
dGhpcyBjaGFuZ2UgZG9lcyBub3QgZGVzdHJveSB0aGUgZXhpc3RpbmcgYmVoYXZpb3IuIEhvd2V2
ZXIsIHRoaXMgY2hhbmdlIGlzIHJlYWxseSByZXF1aXJlZAorICAgICAgICB0byBmaXggb3RoZXIg
ZWRpdGluZyBidWdzIGluIFNoYWRvdyBET00uIEEgYnVuY2ggb2YgcGF0Y2hlcyBhbmQgdGVzdHMg
d2lsbCBiZSBhZGRlZCB0bworICAgICAgICBmaXggb3RoZXIgZWRpdGluZyBidWdzIGFuZCB0aGV5
IHdpbGwgY2hlY2sgdGhpcyBwYXRjaCBkb2VzIG5vdCBicmVhayBlZGl0aW5nLgorICAgICAgICBX
ZSB3aWxsIGFsc28gYWRkIGEgZnV6emVyIHRvIGNoZWNrIHRoZSBzdGFiaWxpdHkgb2YgZWRpdGlu
ZyBpbiBTaGFkb3cgRE9NIGxhdGVyLCBhbmQgaXQgd2lsbAorICAgICAgICBhbHNvIGhlbHAgdG8g
Y29uZmlybSB0aGUgcGF0Y2ggd2lsbCBub3QgYnJlYWsgdGhlIGVkaXRpbmcuCisKKyAgICAgICAg
VGVzdHM6IGVkaXRpbmcvc2hhZG93L2RvdWJsZWNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFz
aC5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3NoYWRvdy9yaWdodGNsaWNrLW9uLW1ldGVy
LWluLXNoYWRvdy1jcmFzaC5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3NoYWRvdy9zaGFk
b3ctc2VsZWN0aW9uLW5vdC1leHBvcnRlZC5odG1sCisKKyAgICAgICAgKiBkb20vUG9zaXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OlBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlBvc2l0aW9uOjpjb250YWluZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0
aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRp
b246OnByZXZpb3VzKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpuZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBvc2l0aW9uOjphdFN0YXJ0T2ZUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvc2l0aW9uOjphdEVuZE9mVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6Zmlu
ZFBhcmVudCk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OnBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUpOgorCiAyMDEyLTA1LTA4ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgc3R5bGVzaGVldCBpbmhl
cml0YW5jZSBzdXBwb3J0IHRvIElGUkFNRV9TRUFNTEVTUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAK
aW5kZXggZmQ3OGViOTFlOWRmNGIzMjliMjY4YzdmYmZlNDJhMjY2ZDllNzAxZS4uZmUyOGRjODYy
Mzg4ZDc3MGY1MGVhOTFiMTJjN2JhZDViMmIxYTc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3Bw
CkBAIC04MCw3ICs4MCwxMSBAQCBQb3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBh
bmNob3JOb2RlLCBMZWdhY3lFZGl0aW5nT2Zmc2V0IG9mZnNldCkKICAgICAsIG1fYW5jaG9yVHlw
ZShhbmNob3JUeXBlRm9yTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG1fYW5jaG9yTm9kZS5nZXQoKSwg
bV9vZmZzZXQpKQogICAgICwgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbih0cnVlKQogeworI2lm
IEVOQUJMRShTSEFET1dfRE9NKQorICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFkb3dET01FbmFibGVkKCkgfHwgIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1No
YWRvd1Jvb3QoKSk7CisjZWxzZQogICAgIEFTU0VSVCghbV9hbmNob3JOb2RlIHx8ICFtX2FuY2hv
ck5vZGUtPmlzU2hhZG93Um9vdCgpKTsKKyNlbmRpZgogfQogCiBQb3NpdGlvbjo6UG9zaXRpb24o
UGFzc1JlZlB0cjxOb2RlPiBhbmNob3JOb2RlLCBBbmNob3JUeXBlIGFuY2hvclR5cGUpCkBAIC04
OSw3ICs5MywxMiBAQCBQb3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBhbmNob3JO
b2RlLCBBbmNob3JUeXBlIGFuY2hvclR5cGUpCiAgICAgLCBtX2FuY2hvclR5cGUoYW5jaG9yVHlw
ZSkKICAgICAsIG1faXNMZWdhY3lFZGl0aW5nUG9zaXRpb24oZmFsc2UpCiB7CisjaWYgRU5BQkxF
KFNIQURPV19ET00pCisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RP
TUVuYWJsZWQoKSB8fCAhbV9hbmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUtPmlzU2hhZG93Um9v
dCgpKTsKKyNlbHNlCiAgICAgQVNTRVJUKCFtX2FuY2hvck5vZGUgfHwgIW1fYW5jaG9yTm9kZS0+
aXNTaGFkb3dSb290KCkpOworI2VuZGlmCisKICAgICBBU1NFUlQoYW5jaG9yVHlwZSAhPSBQb3Np
dGlvbklzT2Zmc2V0SW5BbmNob3IpOwogICAgIEFTU0VSVCghKChhbmNob3JUeXBlID09IFBvc2l0
aW9uSXNCZWZvcmVDaGlsZHJlbiB8fCBhbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRlckNoaWxk
cmVuKQogICAgICAgICAmJiAobV9hbmNob3JOb2RlLT5pc1RleHROb2RlKCkgfHwgZWRpdGluZ0ln
bm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkpKSk7CkBAIC0xMDEsNyArMTEwLDEyIEBA
IFBvc2l0aW9uOjpQb3NpdGlvbihQYXNzUmVmUHRyPE5vZGU+IGFuY2hvck5vZGUsIGludCBvZmZz
ZXQsIEFuY2hvclR5cGUgYW5jaG9yVHlwCiAgICAgLCBtX2FuY2hvclR5cGUoYW5jaG9yVHlwZSkK
ICAgICAsIG1faXNMZWdhY3lFZGl0aW5nUG9zaXRpb24oZmFsc2UpCiB7CisjaWYgRU5BQkxFKFNI
QURPV19ET00pCisgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01F
bmFibGVkKCkgfHwgIW1fYW5jaG9yTm9kZSB8fCAhZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5j
aG9yTm9kZS5nZXQoKSkgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkpOworI2Vsc2UK
ICAgICBBU1NFUlQoIW1fYW5jaG9yTm9kZSB8fCAhZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5j
aG9yTm9kZS5nZXQoKSkgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkpOworI2VuZGlm
CisKICAgICBBU1NFUlQoYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOwog
fQogCkBAIC0xNDMsNyArMTU3LDcgQEAgTm9kZSogUG9zaXRpb246OmNvbnRhaW5lck5vZGUoKSBj
b25zdAogICAgICAgICByZXR1cm4gbV9hbmNob3JOb2RlLmdldCgpOwogICAgIGNhc2UgUG9zaXRp
b25Jc0JlZm9yZUFuY2hvcjoKICAgICBjYXNlIFBvc2l0aW9uSXNBZnRlckFuY2hvcjoKLSAgICAg
ICAgcmV0dXJuIG1fYW5jaG9yTm9kZS0+bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCk7Cisg
ICAgICAgIHJldHVybiBmaW5kUGFyZW50KG1fYW5jaG9yTm9kZS5nZXQoKSk7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpAQCAtMjAzLDcgKzIxNyw3IEBA
IFBvc2l0aW9uIFBvc2l0aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSBjb25zdAogICAg
IAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBvbmx5IGJlIG5lY2Vzc2FyeSBmb3IgbGVnYWN5
IHBvc2l0aW9ucywgYnV0IGlzIGFsc28gbmVlZGVkIGZvciBwb3NpdGlvbnMgYmVmb3JlIGFuZCBh
ZnRlciBUYWJsZXMKICAgICBpZiAobV9vZmZzZXQgPD0gMCAmJiAobV9hbmNob3JUeXBlICE9IFBv
c2l0aW9uSXNBZnRlckFuY2hvciAmJiBtX2FuY2hvclR5cGUgIT0gUG9zaXRpb25Jc0FmdGVyQ2hp
bGRyZW4pKSB7Ci0gICAgICAgIGlmIChtX2FuY2hvck5vZGUtPm5vblNoYWRvd0JvdW5kYXJ5UGFy
ZW50Tm9kZSgpICYmIChlZGl0aW5nSWdub3Jlc0NvbnRlbnQobV9hbmNob3JOb2RlLmdldCgpKSB8
fCBpc1RhYmxlRWxlbWVudChtX2FuY2hvck5vZGUuZ2V0KCkpKSkKKyAgICAgICAgaWYgKGZpbmRQ
YXJlbnQobV9hbmNob3JOb2RlLmdldCgpKSAmJiAoZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5j
aG9yTm9kZS5nZXQoKSkgfHwgaXNUYWJsZUVsZW1lbnQobV9hbmNob3JOb2RlLmdldCgpKSkpCiAg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobV9hbmNob3JOb2Rl
LmdldCgpKTsKICAgICAgICAgcmV0dXJuIFBvc2l0aW9uKG1fYW5jaG9yTm9kZS5nZXQoKSwgMCwg
UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKICAgICB9CkBAIC0zMTYsNyArMzMwLDcgQEAgUG9z
aXRpb24gUG9zaXRpb246OnByZXZpb3VzKFBvc2l0aW9uTW92ZVR5cGUgbW92ZVR5cGUpIGNvbnN0
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBuLT5ub25T
aGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBm
aW5kUGFyZW50KG4pOwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAK
QEAgLTM0OCw3ICszNjIsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6bmV4dChQb3NpdGlvbk1vdmVU
eXBlIG1vdmVUeXBlKSBjb25zdAogICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bv
c2l0aW9uKG4sIChtb3ZlVHlwZSA9PSBDaGFyYWN0ZXIpID8gdW5jaGVja2VkTmV4dE9mZnNldChu
LCBvKSA6IG8gKyAxKTsKICAgICB9CiAKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBuLT5u
b25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQg
PSBmaW5kUGFyZW50KG4pOwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gKnRoaXM7
CiAKQEAgLTQ0MSwxNCArNDU1LDE0IEBAIGJvb2wgUG9zaXRpb246OmF0U3RhcnRPZlRyZWUoKSBj
b25zdAogewogICAgIGlmIChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0
dXJuICFkZXByZWNhdGVkTm9kZSgpLT5ub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKSAmJiBt
X29mZnNldCA8PSAwOworICAgIHJldHVybiAhZmluZFBhcmVudChkZXByZWNhdGVkTm9kZSgpKSAm
JiBtX29mZnNldCA8PSAwOwogfQogCiBib29sIFBvc2l0aW9uOjphdEVuZE9mVHJlZSgpIGNvbnN0
CiB7CiAgICAgaWYgKGlzTnVsbCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4g
IWRlcHJlY2F0ZWROb2RlKCktPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpICYmIG1fb2Zm
c2V0ID49IGxhc3RPZmZzZXRGb3JFZGl0aW5nKGRlcHJlY2F0ZWROb2RlKCkpOworICAgIHJldHVy
biAhZmluZFBhcmVudChkZXByZWNhdGVkTm9kZSgpKSAmJiBtX29mZnNldCA+PSBsYXN0T2Zmc2V0
Rm9yRWRpdGluZyhkZXByZWNhdGVkTm9kZSgpKTsKIH0KIAogaW50IFBvc2l0aW9uOjpyZW5kZXJl
ZE9mZnNldCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCmluZGV4IDRlMjQ0YTBkMmQwOGE1Mzk4
YThmMTkzY2NlODlkMDZjMGJkZDI3NjguLjk1YmVmMmQxZTU1NmU1NjYzNGRmNzNlOTRjNzEzMTll
OWVlODA1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiRWRpdGluZ0JvdW5kYXJ5LmgiCisjaW5j
bHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlRleHRBZmZpbml0eS5o
IgogI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgpAQCAtMTg5LDYgKzE5MCw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGhhc1JlbmRl
cmVkTm9uQW5vbnltb3VzRGVzY2VuZGFudHNXaXRoSGVpZ2h0KFJlbmRlck9iamVjdCopOwogICAg
IHN0YXRpYyBib29sIG5vZGVJc1VzZXJTZWxlY3ROb25lKE5vZGUqKTsKKworICAgIHN0YXRpYyBD
b250YWluZXJOb2RlKiBmaW5kUGFyZW50KGNvbnN0IE5vZGUqKTsKICAgICAKICAgICB2b2lkIGRl
YnVnUG9zaXRpb24oY29uc3QgY2hhciogbXNnID0gIiIpIGNvbnN0OwogCkBAIC0yMDMsNiArMjA2
LDcgQEAgcHJpdmF0ZToKIAogICAgIGludCByZW5kZXJlZE9mZnNldCgpIGNvbnN0OwogCisgICAg
CiAgICAgUG9zaXRpb24gcHJldmlvdXNDaGFyYWN0ZXJQb3NpdGlvbihFQWZmaW5pdHkpIGNvbnN0
OwogICAgIFBvc2l0aW9uIG5leHRDaGFyYWN0ZXJQb3NpdGlvbihFQWZmaW5pdHkpIGNvbnN0Owog
CkBAIC0yMTcsNiArMjIxLDE5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uIDogMTsKIH07CiAKK2lubGluZSBDb250YWluZXJOb2RlKiBQb3NpdGlvbjo6Zmlu
ZFBhcmVudChjb25zdCBOb2RlKiBub2RlKQoreworICAgIC8vIEZJWE1FOiBTZWUgaHR0cDovL3dl
Yi51Zy84MjY5NworCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIG5vZGUtPnBh
cmVudE5vZGUoKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIG5vZGUtPm5vblNoYWRvd0JvdW5kYXJ5
UGFyZW50Tm9kZSgpOworfQorCisKIGlubGluZSBQb3NpdGlvbiBjcmVhdGVMZWdhY3lFZGl0aW5n
UG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBpbnQgb2Zmc2V0KQogewogICAgIHJldHVy
biBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6TGVnYWN5RWRpdGluZ09mZnNldChvZmZzZXQpKTsK
QEAgLTI0NCwxMyArMjYxLDEzIEBAIGlubGluZSBQb3NpdGlvbiBwb3NpdGlvbkluUGFyZW50QmVm
b3JlTm9kZShjb25zdCBOb2RlKiBub2RlKQogICAgIC8vIEF0IGxlYXN0IG9uZSBjYWxsZXIgY3Vy
cmVudGx5IGhpdHMgdGhpcyBBU1NFUlQgdGhvdWdoLCB3aGljaCBpbmRpY2F0ZXMKICAgICAvLyB0
aGF0IHRoZSBjYWxsZXIgaXMgdHJ5aW5nIHRvIG1ha2UgYSBwb3NpdGlvbiByZWxhdGl2ZSB0byBh
IGRpc2Nvbm5lY3RlZCBub2RlICh3aGljaCBpcyBsaWtlbHkgYW4gZXJyb3IpCiAgICAgLy8gU3Bl
Y2lmaWNhbGx5LCBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saWdhdHVyZS0wMDEuaHRtbCBjcmFz
aGVzIHdpdGggQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSkKLSAgICByZXR1cm4gUG9zaXRpb24o
bm9kZS0+bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCksIG5vZGUtPm5vZGVJbmRleCgpLCBQ
b3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKKyAgICByZXR1cm4gUG9zaXRpb24o
UG9zaXRpb246OmZpbmRQYXJlbnQobm9kZSksIG5vZGUtPm5vZGVJbmRleCgpLCBQb3NpdGlvbjo6
UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKIH0KIAogaW5saW5lIFBvc2l0aW9uIHBvc2l0aW9u
SW5QYXJlbnRBZnRlck5vZGUoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICBBU1NFUlQobm9kZS0+
bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCkpOwotICAgIHJldHVybiBQb3NpdGlvbihub2Rl
LT5ub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKSwgbm9kZS0+bm9kZUluZGV4KCkgKyAxLCBQ
b3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKKyAgICBBU1NFUlQoUG9zaXRpb246
OmZpbmRQYXJlbnQobm9kZSkpOworICAgIHJldHVybiBQb3NpdGlvbihQb3NpdGlvbjo6ZmluZFBh
cmVudChub2RlKSwgbm9kZS0+bm9kZUluZGV4KCkgKyAxLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09m
ZnNldEluQW5jaG9yKTsKIH0KIAogLy8gcG9zaXRpb25CZWZvcmVOb2RlIGFuZCBwb3NpdGlvbkFm
dGVyTm9kZSByZXR1cm4gbmVpZ2hib3ItYW5jaG9yZWQgcG9zaXRpb25zLCBjb25zdHJ1Y3Rpb24g
aXMgTygxKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGY0ZTNkZjFlNjQ3MzcxZDkzMjQ1MDFhYWJhZGRhNTQzNmMxOGQ5NGQu
LjEzMjdkZTY4OTdmZmMwOWYxODAzMDIyNWM5OTUyMWQ4ZmYwMWI4YmIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyOCBAQAorMjAxMi0wNS0wOCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUG9zaXRpb24gc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSBTaGFkb3dSb290
IGFzIGEgY29udGFpbmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODIwMjEKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAg
ICAgICAgU2tpcHBlZCBub24tY2hyb21pdW0gcG9ydCBzaW5jZSBTSEFET1dfRE9NIGZsYWcgaXMg
bm90IGVuYWJsZWQgaW4gdGhvc2UgcGxhdGZvcm1zLgorICAgICAgICBXZSB3aWxsIGFkZCBidW5j
aCBvZiB0ZXN0cyBmb3IgZWRpdGluZyBpbiBTaGFkb3cgRE9NIGludG8gZWRpdGluZy9zaGFkb3cg
bGF0ZXIsCisgICAgICAgIHNvIEkgYWRkZWQgdGhlIHdob2xlIGRpcmVjdG9yeSBuYW1lIHRvIHRo
ZSBza2lwcGVkIGxpc3QuCisKKyAgICAgICAgKiBlZGl0aW5nL3NoYWRvdy9kb3VibGVjbGljay1v
bi1tZXRlci1pbi1zaGFkb3ctY3Jhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBl
ZGl0aW5nL3NoYWRvdy9kb3VibGVjbGljay1vbi1tZXRlci1pbi1zaGFkb3ctY3Jhc2guaHRtbDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9zaGFkb3cvcmlnaHRjbGljay1vbi1tZXRlci1pbi1z
aGFkb3ctY3Jhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NoYWRv
dy9yaWdodGNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFzaC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL3NoYWRvdy9zaGFkb3ctc2VsZWN0aW9uLW5vdC1leHBvcnRlZC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2hhZG93L3NoYWRvdy1zZWxlY3Rpb24t
bm90LWV4cG9ydGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9Ta2lwcGVk
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5j
YWlyby9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9Ta2lwcGVkOgorCiAyMDEyLTA1
LTA4ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgc3R5bGVz
aGVldCBpbmhlcml0YW5jZSBzdXBwb3J0IHRvIElGUkFNRV9TRUFNTEVTUwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvZG91YmxlY2xpY2stb24tbWV0ZXItaW4tc2hhZG93
LWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L2RvdWJsZWNs
aWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTIy
NzIxOGU4YzAzNTdiMWI3OWM1ZWRmMTRmMzE4YTg2Y2I0MDAyYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L2RvdWJsZWNsaWNrLW9uLW1ldGVyLWluLXNoYWRv
dy1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3QgZW5zdXJlcyBj
b250ZXh0IGNsaWNrIGFyb3VuZCBtZXRlciB3b24ndCBjcmFzaC4KKworUEFTUwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvZG91YmxlY2xpY2stb24tbWV0ZXItaW4tc2hh
ZG93LWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9kb3VibGVjbGljay1v
bi1tZXRlci1pbi1zaGFkb3ctY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmYyZTMyNGVhNDYwYzk3
NjcyZWJmYjUyZTIzN2Q5NGE3Y2NkMDU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zaGFkb3cvZG91YmxlY2xpY2stb24tbWV0ZXItaW4tc2hhZG93LWNyYXNoLmh0bWwK
QEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxwPlRoaXMgdGVzdCBl
bnN1cmVzIGNvbnRleHQgY2xpY2sgYXJvdW5kIG1ldGVyIHdvbid0IGNyYXNoLjwvcD4KKzxkaXYg
aWQ9J2NvbnRhaW5lcicgc3R5bGU9IndpZHRoOjEwMHB4OyBoZWlnaHQ6IDEwMHB4Ij48L2Rpdj4K
KzxwPlBBU1M8L3A+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9kb20vc2hhZG93L3Jlc291cmNl
cy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGluZy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciBjb250YWluZXIgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJyk7Cit2YXIgc2hhZG93Um9vdCA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KGNvbnRhaW5lcik7Cit2YXIgbWV0ZXIgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdtZXRlcicpOworc2hhZG93Um9vdC5hcHBlbmRDaGlsZChtZXRlcik7CisKKy8vIERv
IGRvdWJsZWNsaWNrIGF0IHZhcmlvdXMgcG9pbnRzLgorZG91YmxlQ2xpY2sobWV0ZXIub2Zmc2V0
TGVmdCwgbWV0ZXIub2Zmc2V0VG9wKTsKK2RvdWJsZUNsaWNrKG1ldGVyLm9mZnNldExlZnQgLSAx
LCBtZXRlci5vZmZzZXRUb3ApOworZG91YmxlQ2xpY2sobWV0ZXIub2Zmc2V0TGVmdCwgbWV0ZXIu
b2Zmc2V0VG9wIC0gMSk7Citkb3VibGVDbGljayhtZXRlci5vZmZzZXRMZWZ0IC0gMSwgbWV0ZXIu
b2Zmc2V0VG9wIC0gMSk7Citkb3VibGVDbGljayhtZXRlci5vZmZzZXRMZWZ0ICsgMSwgbWV0ZXIu
b2Zmc2V0VG9wKTsKK2RvdWJsZUNsaWNrKG1ldGVyLm9mZnNldExlZnQsIG1ldGVyLm9mZnNldFRv
cCArIDEpOworZG91YmxlQ2xpY2sobWV0ZXIub2Zmc2V0TGVmdCArIDEsIG1ldGVyLm9mZnNldFRv
cCArIDEpOworZG91YmxlQ2xpY2sobWV0ZXIub2Zmc2V0TGVmdCArIG1ldGVyLm9mZnNldFdpZHRo
IC8gMiwgbWV0ZXIub2Zmc2V0VG9wICsgbWV0ZXIub2Zmc2V0SGVpZ2h0IC8gMik7Citkb3VibGVD
bGljayhtZXRlci5vZmZzZXRMZWZ0ICsgbWV0ZXIub2Zmc2V0V2lkdGggLSAxLCBtZXRlci5vZmZz
ZXRUb3AgKyBtZXRlci5vZmZzZXRIZWlnaHQgLSAxKTsKK2RvdWJsZUNsaWNrKG1ldGVyLm9mZnNl
dExlZnQgKyBtZXRlci5vZmZzZXRXaWR0aCArIDEsIG1ldGVyLm9mZnNldFRvcCArIG1ldGVyLm9m
ZnNldEhlaWdodCArIDEpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9yaWdodGNsaWNrLW9uLW1ldGVyLWluLXNoYWRv
dy1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9yaWdodGNs
aWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTIy
NzIxOGU4YzAzNTdiMWI3OWM1ZWRmMTRmMzE4YTg2Y2I0MDAyYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L3JpZ2h0Y2xpY2stb24tbWV0ZXItaW4tc2hhZG93
LWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIGNv
bnRleHQgY2xpY2sgYXJvdW5kIG1ldGVyIHdvbid0IGNyYXNoLgorCitQQVNTCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9yaWdodGNsaWNrLW9uLW1ldGVyLWluLXNoYWRv
dy1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvcmlnaHRjbGljay1vbi1t
ZXRlci1pbi1zaGFkb3ctY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzIzODZhOTA0Y2VkMTUzMzFh
MDE3MGVkNWZmNTMyYWRmYzQ2MTVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zaGFkb3cvcmlnaHRjbGljay1vbi1tZXRlci1pbi1zaGFkb3ctY3Jhc2guaHRtbApAQCAt
MCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHA+VGhpcyB0ZXN0IGVuc3Vy
ZXMgY29udGV4dCBjbGljayBhcm91bmQgbWV0ZXIgd29uJ3QgY3Jhc2guPC9wPgorPGRpdiBpZD0n
Y29udGFpbmVyJyBzdHlsZT0id2lkdGg6MTAwcHg7IGhlaWdodDogMTAwcHgiPjwvZGl2PgorPHA+
UEFTUzwvcD4KKworPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZWRpdGluZy9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gY29udGV4dENsaWNrKHgsIHkpIHsK
KyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5jb250
ZXh0Q2xpY2soKTsKK30KKwordmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb250YWluZXInKTsKK3ZhciBzaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoY29u
dGFpbmVyKTsKK3ZhciBtZXRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ21ldGVyJyk7Citz
aGFkb3dSb290LmFwcGVuZENoaWxkKG1ldGVyKTsKKworLy8gRG8gY29udGV4dCBjbGljayBhdCB2
YXJpb3VzIHBvaW50cy4KK2NvbnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0LCBtZXRlci5vZmZz
ZXRUb3ApOworY29udGV4dENsaWNrKG1ldGVyLm9mZnNldExlZnQgLSAxLCBtZXRlci5vZmZzZXRU
b3ApOworY29udGV4dENsaWNrKG1ldGVyLm9mZnNldExlZnQsIG1ldGVyLm9mZnNldFRvcCAtIDEp
OworY29udGV4dENsaWNrKG1ldGVyLm9mZnNldExlZnQgLSAxLCBtZXRlci5vZmZzZXRUb3AgLSAx
KTsKK2NvbnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0ICsgMSwgbWV0ZXIub2Zmc2V0VG9wKTsK
K2NvbnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0LCBtZXRlci5vZmZzZXRUb3AgKyAxKTsKK2Nv
bnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0ICsgMSwgbWV0ZXIub2Zmc2V0VG9wICsgMSk7Citj
b250ZXh0Q2xpY2sobWV0ZXIub2Zmc2V0TGVmdCArIG1ldGVyLm9mZnNldFdpZHRoIC8gMiwgbWV0
ZXIub2Zmc2V0VG9wICsgbWV0ZXIub2Zmc2V0SGVpZ2h0IC8gMik7Citjb250ZXh0Q2xpY2sobWV0
ZXIub2Zmc2V0TGVmdCArIG1ldGVyLm9mZnNldFdpZHRoIC0gMSwgbWV0ZXIub2Zmc2V0VG9wICsg
bWV0ZXIub2Zmc2V0SGVpZ2h0IC0gMSk7Citjb250ZXh0Q2xpY2sobWV0ZXIub2Zmc2V0TGVmdCAr
IG1ldGVyLm9mZnNldFdpZHRoICsgMSwgbWV0ZXIub2Zmc2V0VG9wICsgbWV0ZXIub2Zmc2V0SGVp
Z2h0ICsgMSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2VkaXRpbmcvc2hhZG93L3NoYWRvdy1zZWxlY3Rpb24tbm90LWV4cG9ydGVkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L3NoYWRvdy1zZWxlY3Rpb24tbm90
LWV4cG9ydGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDY3YmNkNmQ2NjFhMmQyMzU3YWJi
OTE5NGNjNTBiNGNhYzdjZGI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zaGFkb3cvc2hhZG93LXNlbGVjdGlvbi1ub3QtZXhwb3J0ZWQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTMgQEAKK1BBU1MgYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmFuY2hvck5vZGUp
IGlzIHRydWUKK1BBU1MgYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmZvY3VzTm9kZSkgaXMg
dHJ1ZQorUEFTUyBhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uYW5jaG9yTm9kZSkgaXMgdHJ1
ZQorUEFTUyBhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uZm9jdXNOb2RlKSBpcyB0cnVlCitQ
QVNTIGFzc2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5hbmNob3JOb2RlKSBpcyB0cnVlCitQQVNT
IGFzc2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5mb2N1c05vZGUpIGlzIHRydWUKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorVGhpcyB0ZXN0IGVuc3Vy
ZXMgc2hhZG93IHJvb3Qgd29uJ3QgZXhwb3NlIHRvIEpTIGxheWVyLgorCitCRUZPUkUKK0FGVEVS
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9zaGFkb3ctc2VsZWN0aW9u
LW5vdC1leHBvcnRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvc2hhZG93LXNl
bGVjdGlvbi1ub3QtZXhwb3J0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGIzYjEyMGRhMzZhNWZkMDI1
NWY2MjIxNjE3NWFiZDMyODg0YTNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zaGFkb3cvc2hhZG93LXNlbGVjdGlvbi1ub3QtZXhwb3J0ZWQuaHRtbApAQCAtMCwwICsx
LDgyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+
CisKKzxwPlRoaXMgdGVzdCBlbnN1cmVzIHNoYWRvdyByb290IHdvbid0IGV4cG9zZSB0byBKUyBs
YXllci48cD4KKzxkaXYgaWQ9J2RpdjEnPkJFRk9SRTwvZGl2PgorPGRpdiBpZD0nY29udGFpbmVy
Jz5DT05UQUlORVI8L2Rpdj4KKzxkaXYgaWQ9J2RpdjQnPkFGVEVSPC9kaT4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2RvbS9zaGFkb3cvcmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisKK3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29udGFpbmVyJyk7Cit2YXIgc2hhZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGNv
bnRhaW5lcik7CisKK3ZhciBkaXYyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Citk
aXYyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdJTiBTSEFET1cgVFJFRSAx
JykpOwordmFyIGRpdjMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2RpdjMuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0lOIFNIQURPVyBUUkVFIDInKSk7CisK
K3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoZGl2Mik7CitzaGFkb3dSb290LmFwcGVuZENoaWxkKGRp
djMpOworCitmdW5jdGlvbiBtaWRYKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gZWxlbWVudC5vZmZz
ZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7Cit9CisKK2Z1bmN0aW9uIG1pZFkoZWxl
bWVudCkgeworICAgIHJldHVybiBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVp
Z2h0IC8gMjsKK30KKworZnVuY3Rpb24gYXNzZXJ0Tm90SW5TaGFkb3coZWxlbWVudCkgeworICAg
IGlmIChlbGVtZW50ID09IGRpdjIgfHwgZWxlbWVudCA9PSBkaXYyLmZpcnN0Q2hpbGQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZWxlbWVudCA9PSBkaXYzIHx8IGVsZW1lbnQgPT0g
ZGl2My5maXJzdENoaWxkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAvLyBUcnkgc2VsZWN0IGZyb20g
b3V0c2lkZSBvZiBhIHNoYWRvdyBzdWJ0cmVlIHRvIGluc2lkZSBvZiBhIHNoYWRvdyBzdWJ0cmVl
LgorICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG1pZFgoZGl2MSksIG1pZFkoZGl2MSkpOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KG1pZFgoZGl2MiksIG1pZFkoZGl2MikpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKwor
ICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgc2hvdWxkQmUo
J2Fzc2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5hbmNob3JOb2RlKScsICd0cnVlJyk7CisgICAg
c2hvdWxkQmUoJ2Fzc2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5mb2N1c05vZGUpJywgJ3RydWUn
KTsKKworICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKworICAgIC8vIFRyeSBzZWxl
Y3QgZnJvbSBpbnNpZGUgb2YgYSBzaGFkb3cgc3VidHJlZSB0byBvdXRzaWRlIG9mIGEgc2hhZG93
IHN1YnRyZWUuCisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8obWlkWChkaXYzKSwgbWlkWShk
aXYzKSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8obWlkWChkaXY0KSwgbWlkWShkaXY0KSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VV
cCgpOworCisgICAgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgIHNob3Vs
ZEJlKCdhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uYW5jaG9yTm9kZSknLCAndHJ1ZScpOwor
ICAgIHNob3VsZEJlKCdhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uZm9jdXNOb2RlKScsICd0
cnVlJyk7CisgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOworCisgICAgLy8gVHJ5IHNl
bGVjdCBpbnNpZGUgc2hhZG93IHN1YnRyZWVzLgorICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KG1pZFgoZGl2MiksIG1pZFkoZGl2MikpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG1pZFgoZGl2MyksIG1pZFkoZGl2MykpOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAgIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKTsKKyAgICBzaG91bGRCZSgnYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmFuY2hv
ck5vZGUpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0
aW9uLmZvY3VzTm9kZSknLCAndHJ1ZScpOworICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMo
KTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAppbmRleCAxZTU0NDMxMzA1ZGQ0YWNl
ODcxOWQyZTk4YTk1ZmMyMWQyYWU0OTg0Li5kZDJjNGU0NWNiMjA2MTdjZTc4NzY2NTQxNmY2NmI0
ZTM1YmQzN2NjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZApAQCAtMjM1LDYgKzIzNSw3IEBA
IGZhc3QvbWVkaWEvcHJpbnQtcmVzdG9yZXMtcHJldmlvdXMtbWVkaWF0eXBlLmh0bWwKIAogIyBF
TkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlzYWJsZWQKIGZhc3QvZG9tL3NoYWRvdworZWRpdGluZy9z
aGFkb3cKIAogIyBFTkFCTEUoREFUQUxJU1QpIGlzIGRpc2FibGVkCiBmYXN0L2Zvcm1zL2RhdGFs
aXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlv
bnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApp
bmRleCA2YTkxZmZiNmI5ZjcyYzU1NmY4ZTljY2YxZjRmMmE5MGVjN2Q3ZTdkLi5jZGU0MzFlOGI3
NTQ4YTUxNzgyYjI1OGZlN2E4NTcxMDMzNmMwZGEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTIzNiw2ICsyMzYsNyBAQCBCVUdXS0dU
SyBTS0lQIDogZmFzdC9yZWdpb25zL3N0eWxlLXNjb3BlZC1pbi1mbG93Lmh0bWwgPSBGQUlMCiAK
IC8vIEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KIEJVR1dLR1RLIFNLSVAgOiBmYXN0
L2RvbS9zaGFkb3cgPSBGQUlMCitCVUdXS0dUSyBTS0lQIDogZWRpdGluZy9zaGFkb3cgPSBGQUlM
CiAKIC8vIENTUyBSZWdpb25zIHN1cHBvcnQgbm90IHlldCBlbmFibGVkLgogQlVHV0s1NzMxMiBT
S0lQIDogZmFzdC9yZWdpb25zID0gRkFJTApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAppbmRleCA5
MjYwMjkwOGI3MjQ0ZmE3NGVmMjA1ODc5MzZjZGJmMjgxZTk0MTU2Li45ZWM1NTFmMzg4YjRlMjlm
NDAyNGY4OWM0MjY5Mzk5ZjYyMzA2MzVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApAQCAt
NDQ3LDYgKzQ0Nyw3IEBAIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4tZmxvdy5odG1sCiAK
ICMgRU5BQkxFKFNIQURPV19ET00pIGlzIGRpc2FibGVkLgogZmFzdC9kb20vc2hhZG93CitlZGl0
aW5nL3NoYWRvdwogCiAjIEpTQyBkb2VzIG5vdCBzdXBwb3J0IHNldElzb2xhdGVkV29ybGRTZWN1
cml0eU9yaWdpbiAoaHR0cDovL3dlYmtpdC5vcmcvYi82MTU0MCkKIGh0dHAvdGVzdHMvc2VjdXJp
dHkvaXNvbGF0ZWRXb3JsZC9jcm9zcy1vcmlnaW4teGhyLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lw
cGVkCmluZGV4IDI1OTRhYThiYTJkODM0MzRhNmQ5ZmFmYTczYTVkMmI3OWI1YzkwN2YuLjhlNTc4
ZTY1NjU2ZGJiYzFjY2VjYTY3NDEwNjdhOGY0MzAxZTU3ZmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tp
cHBlZApAQCAtMTY5LDYgKzE2OSw3IEBAIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4tZmxv
dy1vdmVycmlkZS1yZWdpb24tc3R5bGluZy5odG1sCiBmYXN0L3JlZ2lvbnMvc3R5bGUtc2NvcGVk
LWluLWZsb3cuaHRtbAogCiAjIEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KK2VkaXRp
bmcvc2hhZG93CiBmYXN0L2RvbS9zaGFkb3cvYWNjZXNzLWtleS5odG1sCiBmYXN0L2RvbS9zaGFk
b3cvYWRvcHQtbm9kZS13aXRoLXNoYWRvdy1yb290Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jb21w
b3NlZC1zaGFkb3ctdHJlZS13YWxrZXIuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRl
eCBmZDM3Y2JjY2ViYzZiZGNhZmNmMDcxNWUzOGNlNjY0M2RlMTAzNzRmLi43M2E3MmM4NDQ3NWM1
OTk1YzIwZGU3ZTc3MmEzOTY5YjVjYmFmZTNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApA
QCAtMTQ3Nyw2ICsxNDc3LDcgQEAgZmFzdC9yZWdpb25zL3N0eWxlLXNjb3BlZC1pbi1mbG93LW92
ZXJyaWRlLXJlZ2lvbi1zdHlsaW5nLmh0bWwKIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4t
Zmxvdy5odG1sCiAKICMgRU5BQkxFKFNIQURPV19ET00pIGlzIGRpc2FibGVkLgorZWRpdGluZy9z
aGFkb3cKIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtYXBpLmh0bWwKIGZhc3QvZG9t
L3NoYWRvdy9jb250ZW50LWVsZW1lbnQtb3V0c2lkZS1zaGFkb3cuaHRtbAogZmFzdC9kb20vc2hh
ZG93L2NvbnRlbnQtZWxlbWVudC1vdXRzaWRlLXNoYWRvdy1zdHlsZS5odG1sCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luY2Fpcm8vU2tpcHBlZAppbmRleCBmYjhkNGMxMDczYmM1YWQzOWRlYTAxNzhmNjNi
MjdmNzgzOGNmZTQwLi5mOTUxZjQ3MzU3MDBmZmViN2JhYWM0NGZlODJhM2YzOTYxZmExNzAzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKQEAgLTE5ODMsNiArMTk4Myw3IEBA
IGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4tZmxvdy1vdmVycmlkZS1yZWdpb24tc3R5bGlu
Zy5odG1sCiBmYXN0L3JlZ2lvbnMvc3R5bGUtc2NvcGVkLWluLWZsb3cuaHRtbAogCiAjIEVOQUJM
RShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KK2VkaXRpbmcvc2hhZG93CiBmYXN0L2RvbS9zaGFk
b3cvY29udGVudC1lbGVtZW50LWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVt
ZW50LW91dHNpZGUtc2hhZG93Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQt
aW4tbWVkaWEtZWxlbWVudC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCmluZGV4IDE1Mzgx
ZWMyNzc3ZGIyMDRjMzE0ZGNkZjQzNWUwZDAyY2UwNDRlYmUuLjJlNzExNmZiZDY1MDlmZTY1ZDNh
NTQwNGZjNjdjODA2MzY0YzdkZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dr
Mi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCkBAIC0xMDkw
LDYgKzEwOTAsNyBAQCBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLXVybC13aXRoLXN0eWxl
Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jcmVhdGUtY29udGVudC1lbGVtZW50Lmh0bWwKIAogIyBF
TkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlzYWJsZWQuCitlZGl0aW5nL3NoYWRvdwogZmFzdC9kb20v
c2hhZG93L2NvbnRlbnQtZWxlbWVudC1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L2NvbnRlbnQt
ZWxlbWVudC1vdXRzaWRlLXNoYWRvdy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVt
ZW50LW91dHNpZGUtc2hhZG93LXN0eWxlLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140844</attachid>
            <date>2012-05-08 18:52:53 -0700</date>
            <delta_ts>2012-05-08 19:39:37 -0700</delta_ts>
            <desc>Build test</desc>
            <filename>bug-82021-20120509105251.patch</filename>
            <type>text/plain</type>
            <size>22501</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDE1ODQ1ZTUzODNlMTI5
OTVhY2U4MWMwMjIwNTEyMjM2YjIzM2MzNC4uYjNmMmE3ZmExNTI2Y2ZmOGQ3YmZlZTkzYWY0NjJk
NjhhNDZlZjI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA1LTA4ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBQb3NpdGlvbiBz
aG91bGQgYmUgYWJsZSB0byBoYXZlIFNoYWRvd1Jvb3QgYXMgYSBjb250YWluZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAyMQorCisgICAgICAg
IFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBTaW5jZSBQb3NpdGlvbiBjb3Vs
ZCBub3QgdGFrZSBhIHNoYWRvdyByb290IGFzIGEgY29udGFpbmVyIG5vZGUsIHBvaW50aW5nIHRo
ZSBkaXJlY3QgY2hpbGRyZW4KKyAgICAgICAgb2YgYSBzaGFkb3cgcm9vdCB3YXMgZGlmZmljdWx0
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgZW5hYmxlZCwgYW5kIGZpeGVzIGEgbG90
IG9mIGNyYXNoZXMgY2F1c2VkIGJ5IHRoYXQgbGltaXRhdGlvbi4KKyAgICAgICAgQWxzbywgd2Ug
Y29uZmlybSB0aGF0IFNoYWRvd1Jvb3QgaXMgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlwdCBsYXll
ci4KKworICAgICAgICBDdXJyZW50bHkgdGhpcyBjaGFuZ2UgaXMgb25seSBlbmFibGVkIGlmIHNo
YWRvdyBkb20gZmxhZyBpcyBlbmFibGVkLCBzaW5jZSB3ZSBjYW5ub3QKKyAgICAgICAgcHJvdmUg
dGhpcyBjaGFuZ2UgZG9lcyBub3QgZGVzdHJveSB0aGUgZXhpc3RpbmcgYmVoYXZpb3IuIEhvd2V2
ZXIsIHRoaXMgY2hhbmdlIGlzIHJlYWxseSByZXF1aXJlZAorICAgICAgICB0byBmaXggb3RoZXIg
ZWRpdGluZyBidWdzIGluIFNoYWRvdyBET00uIEEgYnVuY2ggb2YgcGF0Y2hlcyBhbmQgdGVzdHMg
d2lsbCBiZSBhZGRlZCB0bworICAgICAgICBmaXggb3RoZXIgZWRpdGluZyBidWdzIGFuZCB0aGV5
IHdpbGwgY2hlY2sgdGhpcyBwYXRjaCBkb2VzIG5vdCBicmVhayBlZGl0aW5nLgorICAgICAgICBX
ZSB3aWxsIGFsc28gYWRkIGEgZnV6emVyIHRvIGNoZWNrIHRoZSBzdGFiaWxpdHkgb2YgZWRpdGlu
ZyBpbiBTaGFkb3cgRE9NIGxhdGVyLCBhbmQgaXQgd2lsbAorICAgICAgICBhbHNvIGhlbHAgdG8g
Y29uZmlybSB0aGUgcGF0Y2ggd2lsbCBub3QgYnJlYWsgdGhlIGVkaXRpbmcuCisKKyAgICAgICAg
VGVzdHM6IGVkaXRpbmcvc2hhZG93L2RvdWJsZWNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFz
aC5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3NoYWRvdy9yaWdodGNsaWNrLW9uLW1ldGVy
LWluLXNoYWRvdy1jcmFzaC5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3NoYWRvdy9zaGFk
b3ctc2VsZWN0aW9uLW5vdC1leHBvcnRlZC5odG1sCisKKyAgICAgICAgKiBkb20vUG9zaXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OlBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlBvc2l0aW9uOjpjb250YWluZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0
aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRp
b246OnByZXZpb3VzKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpuZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBvc2l0aW9uOjphdFN0YXJ0T2ZUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvc2l0aW9uOjphdEVuZE9mVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6Zmlu
ZFBhcmVudCk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OnBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUpOgorCiAyMDEyLTA1LTA4ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgc3R5bGVzaGVldCBpbmhl
cml0YW5jZSBzdXBwb3J0IHRvIElGUkFNRV9TRUFNTEVTUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAK
aW5kZXggZmQ3OGViOTFlOWRmNGIzMjliMjY4YzdmYmZlNDJhMjY2ZDllNzAxZS4uZTgyNTIzMDQy
OTA4ZmU4MzA4Nzg3Yjc5Y2E1MTJhNWUwNjkyOTBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUG9zaXRpb25JdGVyYXRvci5oIgogI2luY2x1
ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgorI2luY2x1ZGUgIlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCkBAIC04MCw3ICs4MSwx
MSBAQCBQb3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBhbmNob3JOb2RlLCBMZWdh
Y3lFZGl0aW5nT2Zmc2V0IG9mZnNldCkKICAgICAsIG1fYW5jaG9yVHlwZShhbmNob3JUeXBlRm9y
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG1fYW5jaG9yTm9kZS5nZXQoKSwgbV9vZmZzZXQpKQogICAg
ICwgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbih0cnVlKQogeworI2lmIEVOQUJMRShTSEFET1df
RE9NKQorICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVk
KCkgfHwgIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSk7Cisj
ZWxzZQogICAgIEFTU0VSVCghbV9hbmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUtPmlzU2hhZG93
Um9vdCgpKTsKKyNlbmRpZgogfQogCiBQb3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0cjxOb2Rl
PiBhbmNob3JOb2RlLCBBbmNob3JUeXBlIGFuY2hvclR5cGUpCkBAIC04OSw3ICs5NCwxMiBAQCBQ
b3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBhbmNob3JOb2RlLCBBbmNob3JUeXBl
IGFuY2hvclR5cGUpCiAgICAgLCBtX2FuY2hvclR5cGUoYW5jaG9yVHlwZSkKICAgICAsIG1faXNM
ZWdhY3lFZGl0aW5nUG9zaXRpb24oZmFsc2UpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisg
ICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSB8fCAh
bV9hbmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUtPmlzU2hhZG93Um9vdCgpKTsKKyNlbHNlCiAg
ICAgQVNTRVJUKCFtX2FuY2hvck5vZGUgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkp
OworI2VuZGlmCisKICAgICBBU1NFUlQoYW5jaG9yVHlwZSAhPSBQb3NpdGlvbklzT2Zmc2V0SW5B
bmNob3IpOwogICAgIEFTU0VSVCghKChhbmNob3JUeXBlID09IFBvc2l0aW9uSXNCZWZvcmVDaGls
ZHJlbiB8fCBhbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRlckNoaWxkcmVuKQogICAgICAgICAm
JiAobV9hbmNob3JOb2RlLT5pc1RleHROb2RlKCkgfHwgZWRpdGluZ0lnbm9yZXNDb250ZW50KG1f
YW5jaG9yTm9kZS5nZXQoKSkpKSk7CkBAIC0xMDEsNyArMTExLDEyIEBAIFBvc2l0aW9uOjpQb3Np
dGlvbihQYXNzUmVmUHRyPE5vZGU+IGFuY2hvck5vZGUsIGludCBvZmZzZXQsIEFuY2hvclR5cGUg
YW5jaG9yVHlwCiAgICAgLCBtX2FuY2hvclR5cGUoYW5jaG9yVHlwZSkKICAgICAsIG1faXNMZWdh
Y3lFZGl0aW5nUG9zaXRpb24oZmFsc2UpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAg
IEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVkKCkgfHwgIW1f
YW5jaG9yTm9kZSB8fCAhZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkg
fHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkpOworI2Vsc2UKICAgICBBU1NFUlQoIW1f
YW5jaG9yTm9kZSB8fCAhZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkg
fHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkpOworI2VuZGlmCisKICAgICBBU1NFUlQo
YW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOwogfQogCkBAIC0xNDMsNyAr
MTU4LDcgQEAgTm9kZSogUG9zaXRpb246OmNvbnRhaW5lck5vZGUoKSBjb25zdAogICAgICAgICBy
ZXR1cm4gbV9hbmNob3JOb2RlLmdldCgpOwogICAgIGNhc2UgUG9zaXRpb25Jc0JlZm9yZUFuY2hv
cjoKICAgICBjYXNlIFBvc2l0aW9uSXNBZnRlckFuY2hvcjoKLSAgICAgICAgcmV0dXJuIG1fYW5j
aG9yTm9kZS0+bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCk7CisgICAgICAgIHJldHVybiBm
aW5kUGFyZW50KG1fYW5jaG9yTm9kZS5nZXQoKSk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiAwOwpAQCAtMjAzLDcgKzIxOCw3IEBAIFBvc2l0aW9uIFBvc2l0
aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSBjb25zdAogICAgIAogICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBvbmx5IGJlIG5lY2Vzc2FyeSBmb3IgbGVnYWN5IHBvc2l0aW9ucywgYnV0
IGlzIGFsc28gbmVlZGVkIGZvciBwb3NpdGlvbnMgYmVmb3JlIGFuZCBhZnRlciBUYWJsZXMKICAg
ICBpZiAobV9vZmZzZXQgPD0gMCAmJiAobV9hbmNob3JUeXBlICE9IFBvc2l0aW9uSXNBZnRlckFu
Y2hvciAmJiBtX2FuY2hvclR5cGUgIT0gUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4pKSB7Ci0gICAg
ICAgIGlmIChtX2FuY2hvck5vZGUtPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpICYmIChl
ZGl0aW5nSWdub3Jlc0NvbnRlbnQobV9hbmNob3JOb2RlLmdldCgpKSB8fCBpc1RhYmxlRWxlbWVu
dChtX2FuY2hvck5vZGUuZ2V0KCkpKSkKKyAgICAgICAgaWYgKGZpbmRQYXJlbnQobV9hbmNob3JO
b2RlLmdldCgpKSAmJiAoZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkg
fHwgaXNUYWJsZUVsZW1lbnQobV9hbmNob3JOb2RlLmdldCgpKSkpCiAgICAgICAgICAgICByZXR1
cm4gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobV9hbmNob3JOb2RlLmdldCgpKTsKICAgICAg
ICAgcmV0dXJuIFBvc2l0aW9uKG1fYW5jaG9yTm9kZS5nZXQoKSwgMCwgUG9zaXRpb25Jc09mZnNl
dEluQW5jaG9yKTsKICAgICB9CkBAIC0zMTYsNyArMzMxLDcgQEAgUG9zaXRpb24gUG9zaXRpb246
OnByZXZpb3VzKFBvc2l0aW9uTW92ZVR5cGUgbW92ZVR5cGUpIGNvbnN0CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBuLT5ub25TaGFkb3dCb3VuZGFyeVBh
cmVudE5vZGUoKTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBmaW5kUGFyZW50KG4pOwog
ICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKQEAgLTM0OCw3ICszNjMs
NyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6bmV4dChQb3NpdGlvbk1vdmVUeXBlIG1vdmVUeXBlKSBj
b25zdAogICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG4sIChtb3Zl
VHlwZSA9PSBDaGFyYWN0ZXIpID8gdW5jaGVja2VkTmV4dE9mZnNldChuLCBvKSA6IG8gKyAxKTsK
ICAgICB9CiAKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBuLT5ub25TaGFkb3dCb3VuZGFy
eVBhcmVudE5vZGUoKTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBmaW5kUGFyZW50KG4p
OwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKQEAgLTQ0MSwxNCAr
NDU2LDE0IEBAIGJvb2wgUG9zaXRpb246OmF0U3RhcnRPZlRyZWUoKSBjb25zdAogewogICAgIGlm
IChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuICFkZXByZWNhdGVk
Tm9kZSgpLT5ub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKSAmJiBtX29mZnNldCA8PSAwOwor
ICAgIHJldHVybiAhZmluZFBhcmVudChkZXByZWNhdGVkTm9kZSgpKSAmJiBtX29mZnNldCA8PSAw
OwogfQogCiBib29sIFBvc2l0aW9uOjphdEVuZE9mVHJlZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gIWRlcHJlY2F0ZWROb2Rl
KCktPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpICYmIG1fb2Zmc2V0ID49IGxhc3RPZmZz
ZXRGb3JFZGl0aW5nKGRlcHJlY2F0ZWROb2RlKCkpOworICAgIHJldHVybiAhZmluZFBhcmVudChk
ZXByZWNhdGVkTm9kZSgpKSAmJiBtX29mZnNldCA+PSBsYXN0T2Zmc2V0Rm9yRWRpdGluZyhkZXBy
ZWNhdGVkTm9kZSgpKTsKIH0KIAogaW50IFBvc2l0aW9uOjpyZW5kZXJlZE9mZnNldCgpIGNvbnN0
CkBAIC04MzQsNiArODQ5LDE4IEBAIGJvb2wgUG9zaXRpb246Om5vZGVJc1VzZXJTZWxlY3ROb25l
KE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSAmJiBub2Rl
LT5yZW5kZXJlcigpLT5zdHlsZSgpLT51c2VyU2VsZWN0KCkgPT0gU0VMRUNUX05PTkU7CiB9CiAK
K2lubGluZSBDb250YWluZXJOb2RlKiBQb3NpdGlvbjo6ZmluZFBhcmVudChjb25zdCBOb2RlKiBu
b2RlKQoreworICAgIC8vIEZJWE1FOiBTZWUgaHR0cDovL3dlYi51Zy84MjY5NworCisjaWYgRU5B
QkxFKFNIQURPV19ET00pCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RP
TUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIG5vZGUtPnBhcmVudE5vZGUoKTsKKyNlbmRpZgor
CisgICAgcmV0dXJuIG5vZGUtPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpOworfQorCiBi
b29sIFBvc2l0aW9uOjppc0NhbmRpZGF0ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzTnVsbCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUG9zaXRpb24uaAppbmRleCA0ZTI0NGEwZDJkMDhhNTM5OGE4ZjE5M2NjZTg5ZDA2YzBi
ZGQyNzY4Li4yN2MzZjQyOTcwMzE4ZDRlYjBlOGYyOTYyYjJlOWUzZWViYjYyMWUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9zaXRpb24uaApAQCAtMTg5LDYgKzE4OSw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBi
b29sIGhhc1JlbmRlcmVkTm9uQW5vbnltb3VzRGVzY2VuZGFudHNXaXRoSGVpZ2h0KFJlbmRlck9i
amVjdCopOwogICAgIHN0YXRpYyBib29sIG5vZGVJc1VzZXJTZWxlY3ROb25lKE5vZGUqKTsKKwor
ICAgIHN0YXRpYyBDb250YWluZXJOb2RlKiBmaW5kUGFyZW50KGNvbnN0IE5vZGUqKTsKICAgICAK
ICAgICB2b2lkIGRlYnVnUG9zaXRpb24oY29uc3QgY2hhciogbXNnID0gIiIpIGNvbnN0OwogCkBA
IC0yMDMsNiArMjA1LDcgQEAgcHJpdmF0ZToKIAogICAgIGludCByZW5kZXJlZE9mZnNldCgpIGNv
bnN0OwogCisgICAgCiAgICAgUG9zaXRpb24gcHJldmlvdXNDaGFyYWN0ZXJQb3NpdGlvbihFQWZm
aW5pdHkpIGNvbnN0OwogICAgIFBvc2l0aW9uIG5leHRDaGFyYWN0ZXJQb3NpdGlvbihFQWZmaW5p
dHkpIGNvbnN0OwogCkBAIC0yNDQsMTMgKzI0NywxMyBAQCBpbmxpbmUgUG9zaXRpb24gcG9zaXRp
b25JblBhcmVudEJlZm9yZU5vZGUoY29uc3QgTm9kZSogbm9kZSkKICAgICAvLyBBdCBsZWFzdCBv
bmUgY2FsbGVyIGN1cnJlbnRseSBoaXRzIHRoaXMgQVNTRVJUIHRob3VnaCwgd2hpY2ggaW5kaWNh
dGVzCiAgICAgLy8gdGhhdCB0aGUgY2FsbGVyIGlzIHRyeWluZyB0byBtYWtlIGEgcG9zaXRpb24g
cmVsYXRpdmUgdG8gYSBkaXNjb25uZWN0ZWQgbm9kZSAod2hpY2ggaXMgbGlrZWx5IGFuIGVycm9y
KQogICAgIC8vIFNwZWNpZmljYWxseSwgZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGlnYXR1cmUt
MDAxLmh0bWwgY3Jhc2hlcyB3aXRoIEFTU0VSVChub2RlLT5wYXJlbnROb2RlKCkpCi0gICAgcmV0
dXJuIFBvc2l0aW9uKG5vZGUtPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpLCBub2RlLT5u
b2RlSW5kZXgoKSwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7CisgICAgcmV0
dXJuIFBvc2l0aW9uKFBvc2l0aW9uOjpmaW5kUGFyZW50KG5vZGUpLCBub2RlLT5ub2RlSW5kZXgo
KSwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7CiB9CiAKIGlubGluZSBQb3Np
dGlvbiBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCiB7Ci0gICAg
QVNTRVJUKG5vZGUtPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpKTsKLSAgICByZXR1cm4g
UG9zaXRpb24obm9kZS0+bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCksIG5vZGUtPm5vZGVJ
bmRleCgpICsgMSwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7CisgICAgQVNT
RVJUKFBvc2l0aW9uOjpmaW5kUGFyZW50KG5vZGUpKTsKKyAgICByZXR1cm4gUG9zaXRpb24oUG9z
aXRpb246OmZpbmRQYXJlbnQobm9kZSksIG5vZGUtPm5vZGVJbmRleCgpICsgMSwgUG9zaXRpb246
OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7CiB9CiAKIC8vIHBvc2l0aW9uQmVmb3JlTm9kZSBh
bmQgcG9zaXRpb25BZnRlck5vZGUgcmV0dXJuIG5laWdoYm9yLWFuY2hvcmVkIHBvc2l0aW9ucywg
Y29uc3RydWN0aW9uIGlzIE8oMSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmNGUzZGYxZTY0NzM3MWQ5MzI0NTAxYWFiYWRk
YTU0MzZjMThkOTRkLi4xMzI3ZGU2ODk3ZmZjMDlmMTgwMzAyMjVjOTk1MjFkOGZmMDFiOGJiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMDUtMDggIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55
YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFBvc2l0aW9uIHNob3VsZCBiZSBhYmxlIHRvIGhh
dmUgU2hhZG93Um9vdCBhcyBhIGNvbnRhaW5lci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMDIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3Vr
ZSBOaXdhLgorCisgICAgICAgIFNraXBwZWQgbm9uLWNocm9taXVtIHBvcnQgc2luY2UgU0hBRE9X
X0RPTSBmbGFnIGlzIG5vdCBlbmFibGVkIGluIHRob3NlIHBsYXRmb3Jtcy4KKyAgICAgICAgV2Ug
d2lsbCBhZGQgYnVuY2ggb2YgdGVzdHMgZm9yIGVkaXRpbmcgaW4gU2hhZG93IERPTSBpbnRvIGVk
aXRpbmcvc2hhZG93IGxhdGVyLAorICAgICAgICBzbyBJIGFkZGVkIHRoZSB3aG9sZSBkaXJlY3Rv
cnkgbmFtZSB0byB0aGUgc2tpcHBlZCBsaXN0LgorCisgICAgICAgICogZWRpdGluZy9zaGFkb3cv
ZG91YmxlY2xpY2stb24tbWV0ZXItaW4tc2hhZG93LWNyYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZWRpdGluZy9zaGFkb3cvZG91YmxlY2xpY2stb24tbWV0ZXItaW4tc2hhZG93
LWNyYXNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2hhZG93L3JpZ2h0Y2xpY2st
b24tbWV0ZXItaW4tc2hhZG93LWNyYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZWRpdGluZy9zaGFkb3cvcmlnaHRjbGljay1vbi1tZXRlci1pbi1zaGFkb3ctY3Jhc2guaHRtbDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9zaGFkb3cvc2hhZG93LXNlbGVjdGlvbi1ub3QtZXhw
b3J0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NoYWRvdy9zaGFk
b3ctc2VsZWN0aW9uLW5vdC1leHBvcnRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9lZmwvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMu
dHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3Jt
L3F0L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisgICAgICAgICog
cGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93azIvU2tpcHBl
ZDoKKwogMjAxMi0wNS0wOCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQWRkIHN0eWxlc2hlZXQgaW5oZXJpdGFuY2Ugc3VwcG9ydCB0byBJRlJBTUVfU0VBTUxFU1MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L2RvdWJsZWNsaWNrLW9uLW1l
dGVyLWluLXNoYWRvdy1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3No
YWRvdy9kb3VibGVjbGljay1vbi1tZXRlci1pbi1zaGFkb3ctY3Jhc2gtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmEyMjcyMThlOGMwMzU3YjFiNzljNWVkZjE0ZjMxOGE4NmNiNDAwMmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9kb3VibGVjbGljay1vbi1t
ZXRlci1pbi1zaGFkb3ctY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGhpcyB0
ZXN0IGVuc3VyZXMgY29udGV4dCBjbGljayBhcm91bmQgbWV0ZXIgd29uJ3QgY3Jhc2guCisKK1BB
U1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L2RvdWJsZWNsaWNrLW9u
LW1ldGVyLWluLXNoYWRvdy1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cv
ZG91YmxlY2xpY2stb24tbWV0ZXItaW4tc2hhZG93LWNyYXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZm
MmUzMjRlYTQ2MGM5NzY3MmViZmI1MmUyMzdkOTRhN2NjZDA1OQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L2RvdWJsZWNsaWNrLW9uLW1ldGVyLWluLXNoYWRv
dy1jcmFzaC5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
cD5UaGlzIHRlc3QgZW5zdXJlcyBjb250ZXh0IGNsaWNrIGFyb3VuZCBtZXRlciB3b24ndCBjcmFz
aC48L3A+Cis8ZGl2IGlkPSdjb250YWluZXInIHN0eWxlPSJ3aWR0aDoxMDBweDsgaGVpZ2h0OiAx
MDBweCI+PC9kaXY+Cis8cD5QQVNTPC9wPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvZG9tL3No
YWRvdy9yZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Vk
aXRpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgY29u
dGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOwordmFyIHNoYWRv
d1Jvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChjb250YWluZXIpOwordmFyIG1ldGVyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnbWV0ZXInKTsKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQobWV0
ZXIpOworCisvLyBEbyBkb3VibGVjbGljayBhdCB2YXJpb3VzIHBvaW50cy4KK2RvdWJsZUNsaWNr
KG1ldGVyLm9mZnNldExlZnQsIG1ldGVyLm9mZnNldFRvcCk7Citkb3VibGVDbGljayhtZXRlci5v
ZmZzZXRMZWZ0IC0gMSwgbWV0ZXIub2Zmc2V0VG9wKTsKK2RvdWJsZUNsaWNrKG1ldGVyLm9mZnNl
dExlZnQsIG1ldGVyLm9mZnNldFRvcCAtIDEpOworZG91YmxlQ2xpY2sobWV0ZXIub2Zmc2V0TGVm
dCAtIDEsIG1ldGVyLm9mZnNldFRvcCAtIDEpOworZG91YmxlQ2xpY2sobWV0ZXIub2Zmc2V0TGVm
dCArIDEsIG1ldGVyLm9mZnNldFRvcCk7Citkb3VibGVDbGljayhtZXRlci5vZmZzZXRMZWZ0LCBt
ZXRlci5vZmZzZXRUb3AgKyAxKTsKK2RvdWJsZUNsaWNrKG1ldGVyLm9mZnNldExlZnQgKyAxLCBt
ZXRlci5vZmZzZXRUb3AgKyAxKTsKK2RvdWJsZUNsaWNrKG1ldGVyLm9mZnNldExlZnQgKyBtZXRl
ci5vZmZzZXRXaWR0aCAvIDIsIG1ldGVyLm9mZnNldFRvcCArIG1ldGVyLm9mZnNldEhlaWdodCAv
IDIpOworZG91YmxlQ2xpY2sobWV0ZXIub2Zmc2V0TGVmdCArIG1ldGVyLm9mZnNldFdpZHRoIC0g
MSwgbWV0ZXIub2Zmc2V0VG9wICsgbWV0ZXIub2Zmc2V0SGVpZ2h0IC0gMSk7Citkb3VibGVDbGlj
ayhtZXRlci5vZmZzZXRMZWZ0ICsgbWV0ZXIub2Zmc2V0V2lkdGggKyAxLCBtZXRlci5vZmZzZXRU
b3AgKyBtZXRlci5vZmZzZXRIZWlnaHQgKyAxKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvcmlnaHRjbGljay1vbi1t
ZXRlci1pbi1zaGFkb3ctY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9z
aGFkb3cvcmlnaHRjbGljay1vbi1tZXRlci1pbi1zaGFkb3ctY3Jhc2gtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmEyMjcyMThlOGMwMzU3YjFiNzljNWVkZjE0ZjMxOGE4NmNiNDAwMmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9yaWdodGNsaWNrLW9uLW1l
dGVyLWluLXNoYWRvdy1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIHRl
c3QgZW5zdXJlcyBjb250ZXh0IGNsaWNrIGFyb3VuZCBtZXRlciB3b24ndCBjcmFzaC4KKworUEFT
UwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvcmlnaHRjbGljay1vbi1t
ZXRlci1pbi1zaGFkb3ctY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L3Jp
Z2h0Y2xpY2stb24tbWV0ZXItaW4tc2hhZG93LWNyYXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGMyMzg2
YTkwNGNlZDE1MzMxYTAxNzBlZDVmZjUzMmFkZmM0NjE1YQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L3JpZ2h0Y2xpY2stb24tbWV0ZXItaW4tc2hhZG93LWNy
YXNoLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxwPlRo
aXMgdGVzdCBlbnN1cmVzIGNvbnRleHQgY2xpY2sgYXJvdW5kIG1ldGVyIHdvbid0IGNyYXNoLjwv
cD4KKzxkaXYgaWQ9J2NvbnRhaW5lcicgc3R5bGU9IndpZHRoOjEwMHB4OyBoZWlnaHQ6IDEwMHB4
Ij48L2Rpdj4KKzxwPlBBU1M8L3A+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcG9seWZpbGwu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2VkaXRpbmcvZWRpdGluZy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK2Z1bmN0aW9uIGNvbnRleHRD
bGljayh4LCB5KSB7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZl
bnRTZW5kZXIuY29udGV4dENsaWNrKCk7Cit9CisKK3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJyk7Cit2YXIgc2hhZG93Um9vdCA9IG5ldyBXZWJLaXRT
aGFkb3dSb290KGNvbnRhaW5lcik7Cit2YXIgbWV0ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdtZXRlcicpOworc2hhZG93Um9vdC5hcHBlbmRDaGlsZChtZXRlcik7CisKKy8vIERvIGNvbnRl
eHQgY2xpY2sgYXQgdmFyaW91cyBwb2ludHMuCitjb250ZXh0Q2xpY2sobWV0ZXIub2Zmc2V0TGVm
dCwgbWV0ZXIub2Zmc2V0VG9wKTsKK2NvbnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0IC0gMSwg
bWV0ZXIub2Zmc2V0VG9wKTsKK2NvbnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0LCBtZXRlci5v
ZmZzZXRUb3AgLSAxKTsKK2NvbnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0IC0gMSwgbWV0ZXIu
b2Zmc2V0VG9wIC0gMSk7Citjb250ZXh0Q2xpY2sobWV0ZXIub2Zmc2V0TGVmdCArIDEsIG1ldGVy
Lm9mZnNldFRvcCk7Citjb250ZXh0Q2xpY2sobWV0ZXIub2Zmc2V0TGVmdCwgbWV0ZXIub2Zmc2V0
VG9wICsgMSk7Citjb250ZXh0Q2xpY2sobWV0ZXIub2Zmc2V0TGVmdCArIDEsIG1ldGVyLm9mZnNl
dFRvcCArIDEpOworY29udGV4dENsaWNrKG1ldGVyLm9mZnNldExlZnQgKyBtZXRlci5vZmZzZXRX
aWR0aCAvIDIsIG1ldGVyLm9mZnNldFRvcCArIG1ldGVyLm9mZnNldEhlaWdodCAvIDIpOworY29u
dGV4dENsaWNrKG1ldGVyLm9mZnNldExlZnQgKyBtZXRlci5vZmZzZXRXaWR0aCAtIDEsIG1ldGVy
Lm9mZnNldFRvcCArIG1ldGVyLm9mZnNldEhlaWdodCAtIDEpOworY29udGV4dENsaWNrKG1ldGVy
Lm9mZnNldExlZnQgKyBtZXRlci5vZmZzZXRXaWR0aCArIDEsIG1ldGVyLm9mZnNldFRvcCArIG1l
dGVyLm9mZnNldEhlaWdodCArIDEpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9zaGFkb3ctc2VsZWN0aW9uLW5vdC1l
eHBvcnRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9zaGFkb3ct
c2VsZWN0aW9uLW5vdC1leHBvcnRlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA2N2JjZDZk
NjYxYTJkMjM1N2FiYjkxOTRjYzUwYjRjYWM3Y2RiNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2VkaXRpbmcvc2hhZG93L3NoYWRvdy1zZWxlY3Rpb24tbm90LWV4cG9ydGVkLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitQQVNTIGFzc2VydE5vdEluU2hhZG93KHNlbGVjdGlv
bi5hbmNob3JOb2RlKSBpcyB0cnVlCitQQVNTIGFzc2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5m
b2N1c05vZGUpIGlzIHRydWUKK1BBU1MgYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmFuY2hv
ck5vZGUpIGlzIHRydWUKK1BBU1MgYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmZvY3VzTm9k
ZSkgaXMgdHJ1ZQorUEFTUyBhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uYW5jaG9yTm9kZSkg
aXMgdHJ1ZQorUEFTUyBhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uZm9jdXNOb2RlKSBpcyB0
cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK1Ro
aXMgdGVzdCBlbnN1cmVzIHNoYWRvdyByb290IHdvbid0IGV4cG9zZSB0byBKUyBsYXllci4KKwor
QkVGT1JFCitBRlRFUgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvc2hh
ZG93LXNlbGVjdGlvbi1ub3QtZXhwb3J0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2hh
ZG93L3NoYWRvdy1zZWxlY3Rpb24tbm90LWV4cG9ydGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjBiM2Ix
MjBkYTM2YTVmZDAyNTVmNjIyMTYxNzVhYmQzMjg4NGEzYwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L3NoYWRvdy1zZWxlY3Rpb24tbm90LWV4cG9ydGVkLmh0
bWwKQEAgLTAsMCArMSw4MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxwcmUgaWQ9ImNv
bnNvbGUiPjwvcHJlPgorCis8cD5UaGlzIHRlc3QgZW5zdXJlcyBzaGFkb3cgcm9vdCB3b24ndCBl
eHBvc2UgdG8gSlMgbGF5ZXIuPHA+Cis8ZGl2IGlkPSdkaXYxJz5CRUZPUkU8L2Rpdj4KKzxkaXYg
aWQ9J2NvbnRhaW5lcic+Q09OVEFJTkVSPC9kaXY+Cis8ZGl2IGlkPSdkaXY0Jz5BRlRFUjwvZGk+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9kb20vc2hhZG93L3Jlc291cmNlcy9wb2x5ZmlsbC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGluZy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgY29udGFpbmVyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOwordmFyIHNoYWRvd1Jvb3QgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChjb250YWluZXIpOworCit2YXIgZGl2MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworZGl2Mi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnSU4g
U0hBRE9XIFRSRUUgMScpKTsKK3ZhciBkaXYzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CitkaXYzLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdJTiBTSEFET1cg
VFJFRSAyJykpOworCitzaGFkb3dSb290LmFwcGVuZENoaWxkKGRpdjIpOworc2hhZG93Um9vdC5h
cHBlbmRDaGlsZChkaXYzKTsKKworZnVuY3Rpb24gbWlkWChlbGVtZW50KSB7CisgICAgcmV0dXJu
IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworfQorCitmdW5j
dGlvbiBtaWRZKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVt
ZW50Lm9mZnNldEhlaWdodCAvIDI7Cit9CisKK2Z1bmN0aW9uIGFzc2VydE5vdEluU2hhZG93KGVs
ZW1lbnQpIHsKKyAgICBpZiAoZWxlbWVudCA9PSBkaXYyIHx8IGVsZW1lbnQgPT0gZGl2Mi5maXJz
dENoaWxkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGVsZW1lbnQgPT0gZGl2MyB8
fCBlbGVtZW50ID09IGRpdjMuZmlyc3RDaGlsZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiB0cnVlOworfQorCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgLy8gVHJ5
IHNlbGVjdCBmcm9tIG91dHNpZGUgb2YgYSBzaGFkb3cgc3VidHJlZSB0byBpbnNpZGUgb2YgYSBz
aGFkb3cgc3VidHJlZS4KKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhtaWRYKGRpdjEpLCBt
aWRZKGRpdjEpKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhtaWRYKGRpdjIpLCBtaWRZKGRpdjIpKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZVVwKCk7CisKKyAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwor
ICAgIHNob3VsZEJlKCdhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uYW5jaG9yTm9kZSknLCAn
dHJ1ZScpOworICAgIHNob3VsZEJlKCdhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uZm9jdXNO
b2RlKScsICd0cnVlJyk7CisKKyAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7CisKKyAg
ICAvLyBUcnkgc2VsZWN0IGZyb20gaW5zaWRlIG9mIGEgc2hhZG93IHN1YnRyZWUgdG8gb3V0c2lk
ZSBvZiBhIHNoYWRvdyBzdWJ0cmVlLgorICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG1pZFgo
ZGl2MyksIG1pZFkoZGl2MykpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG1pZFgoZGl2NCksIG1pZFkoZGl2NCkpOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlVXAoKTsKKworICAgIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24o
KTsKKyAgICBzaG91bGRCZSgnYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmFuY2hvck5vZGUp
JywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmZv
Y3VzTm9kZSknLCAndHJ1ZScpOworICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKwor
ICAgIC8vIFRyeSBzZWxlY3QgaW5zaWRlIHNoYWRvdyBzdWJ0cmVlcy4KKyAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhtaWRYKGRpdjIpLCBtaWRZKGRpdjIpKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhtaWRYKGRpdjMpLCBtaWRZ
KGRpdjMpKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICBzZWxlY3Rpb24gPSB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgc2hvdWxkQmUoJ2Fzc2VydE5vdEluU2hhZG93KHNl
bGVjdGlvbi5hbmNob3JOb2RlKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ2Fzc2VydE5vdElu
U2hhZG93KHNlbGVjdGlvbi5mb2N1c05vZGUpJywgJ3RydWUnKTsKKyAgICBzZWxlY3Rpb24ucmVt
b3ZlQWxsUmFuZ2VzKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggMWU1
NDQzMTMwNWRkNGFjZTg3MTlkMmU5OGE5NWZjMjFkMmFlNDk4NC4uZGQyYzRlNDVjYjIwNjE3Y2U3
ODc2NjU0MTZmNjZiNGUzNWJkMzdjYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
ZWZsL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTIz
NSw2ICsyMzUsNyBAQCBmYXN0L21lZGlhL3ByaW50LXJlc3RvcmVzLXByZXZpb3VzLW1lZGlhdHlw
ZS5odG1sCiAKICMgRU5BQkxFKFNIQURPV19ET00pIGlzIGRpc2FibGVkCiBmYXN0L2RvbS9zaGFk
b3cKK2VkaXRpbmcvc2hhZG93CiAKICMgRU5BQkxFKERBVEFMSVNUKSBpcyBkaXNhYmxlZAogZmFz
dC9mb3Jtcy9kYXRhbGlzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay90ZXN0X2V4cGVj
dGF0aW9ucy50eHQKaW5kZXggNmE5MWZmYjZiOWY3MmM1NTZmOGU5Y2NmMWY0ZjJhOTBlYzdkN2U3
ZC4uY2RlNDMxZThiNzU0OGE1MTc4MmIyNThmZTdhODU3MTAzMzZjMGRhMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0yMzYsNiArMjM2
LDcgQEAgQlVHV0tHVEsgU0tJUCA6IGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4tZmxvdy5o
dG1sID0gRkFJTAogCiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlzYWJsZWQuCiBCVUdXS0dU
SyBTS0lQIDogZmFzdC9kb20vc2hhZG93ID0gRkFJTAorQlVHV0tHVEsgU0tJUCA6IGVkaXRpbmcv
c2hhZG93ID0gRkFJTAogCiAvLyBDU1MgUmVnaW9ucyBzdXBwb3J0IG5vdCB5ZXQgZW5hYmxlZC4K
IEJVR1dLNTczMTIgU0tJUCA6IGZhc3QvcmVnaW9ucyA9IEZBSUwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Nr
aXBwZWQKaW5kZXggOTI2MDI5MDhiNzI0NGZhNzRlZjIwNTg3OTM2Y2RiZjI4MWU5NDE1Ni4uOWVj
NTUxZjM4OGI0ZTI5ZjQwMjRmODljNDI2OTM5OWY2MjMwNjM1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1NraXBwZWQKQEAgLTQ0Nyw2ICs0NDcsNyBAQCBmYXN0L3JlZ2lvbnMvc3R5bGUtc2NvcGVkLWlu
LWZsb3cuaHRtbAogCiAjIEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KIGZhc3QvZG9t
L3NoYWRvdworZWRpdGluZy9zaGFkb3cKIAogIyBKU0MgZG9lcyBub3Qgc3VwcG9ydCBzZXRJc29s
YXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4gKGh0dHA6Ly93ZWJraXQub3JnL2IvNjE1NDApCiBodHRw
L3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvY3Jvc3Mtb3JpZ2luLXhoci5odG1sCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvU2tpcHBlZAppbmRleCAyNTk0YWE4YmEyZDgzNDM0YTZkOWZhZmE3M2E1ZDJiNzli
NWM5MDdmLi44ZTU3OGU2NTY1NmRiYmMxY2NlY2E2NzQxMDY3YThmNDMwMWU1N2ZkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L1NraXBwZWQKQEAgLTE2OSw2ICsxNjksNyBAQCBmYXN0L3JlZ2lvbnMvc3R5bGUt
c2NvcGVkLWluLWZsb3ctb3ZlcnJpZGUtcmVnaW9uLXN0eWxpbmcuaHRtbAogZmFzdC9yZWdpb25z
L3N0eWxlLXNjb3BlZC1pbi1mbG93Lmh0bWwKIAogIyBFTkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlz
YWJsZWQuCitlZGl0aW5nL3NoYWRvdwogZmFzdC9kb20vc2hhZG93L2FjY2Vzcy1rZXkuaHRtbAog
ZmFzdC9kb20vc2hhZG93L2Fkb3B0LW5vZGUtd2l0aC1zaGFkb3ctcm9vdC5odG1sCiBmYXN0L2Rv
bS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L1NraXBwZWQKaW5kZXggZmQzN2NiY2NlYmM2YmRjYWZjZjA3MTVlMzhjZTY2NDNkZTEwMzc0Zi4u
NzNhNzJjODQ0NzVjNTk5NWMyMGRlN2U3NzJhMzk2OWI1Y2JhZmUzZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL1NraXBwZWQKQEAgLTE0NzcsNiArMTQ3Nyw3IEBAIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29w
ZWQtaW4tZmxvdy1vdmVycmlkZS1yZWdpb24tc3R5bGluZy5odG1sCiBmYXN0L3JlZ2lvbnMvc3R5
bGUtc2NvcGVkLWluLWZsb3cuaHRtbAogCiAjIEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxl
ZC4KK2VkaXRpbmcvc2hhZG93CiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LWFwaS5o
dG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LW91dHNpZGUtc2hhZG93Lmh0bWwK
IGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtb3V0c2lkZS1zaGFkb3ctc3R5bGUuaHRt
bApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKaW5kZXggZmI4ZDRjMTA3M2JjNWFk
MzlkZWEwMTc4ZjYzYjI3Zjc4MzhjZmU0MC4uZjk1MWY0NzM1NzAwZmZlYjdiYWFjNDRmZTgyYTNm
Mzk2MWZhMTcwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tp
cHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCkBAIC0xOTgz
LDYgKzE5ODMsNyBAQCBmYXN0L3JlZ2lvbnMvc3R5bGUtc2NvcGVkLWluLWZsb3ctb3ZlcnJpZGUt
cmVnaW9uLXN0eWxpbmcuaHRtbAogZmFzdC9yZWdpb25zL3N0eWxlLXNjb3BlZC1pbi1mbG93Lmh0
bWwKIAogIyBFTkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlzYWJsZWQuCitlZGl0aW5nL3NoYWRvdwog
ZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93
L2NvbnRlbnQtZWxlbWVudC1vdXRzaWRlLXNoYWRvdy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29u
dGVudC1lbGVtZW50LWluLW1lZGlhLWVsZW1lbnQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2syL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBl
ZAppbmRleCAxNTM4MWVjMjc3N2RiMjA0YzMxNGRjZGY0MzVlMGQwMmNlMDQ0ZWJlLi4yZTcxMTZm
YmQ2NTA5ZmU2NWQzYTU0MDRmYzY3YzgwNjM2NGM3ZGQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tp
cHBlZApAQCAtMTA5MCw2ICsxMDkwLDcgQEAgZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWctZHJvcC11
cmwtd2l0aC1zdHlsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY3JlYXRlLWNvbnRlbnQtZWxlbWVu
dC5odG1sCiAKICMgRU5BQkxFKFNIQURPV19ET00pIGlzIGRpc2FibGVkLgorZWRpdGluZy9zaGFk
b3cKIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtYXBpLmh0bWwKIGZhc3QvZG9tL3No
YWRvdy9jb250ZW50LWVsZW1lbnQtb3V0c2lkZS1zaGFkb3cuaHRtbAogZmFzdC9kb20vc2hhZG93
L2NvbnRlbnQtZWxlbWVudC1vdXRzaWRlLXNoYWRvdy1zdHlsZS5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140856</attachid>
            <date>2012-05-08 19:39:44 -0700</date>
            <delta_ts>2012-05-08 23:59:28 -0700</delta_ts>
            <desc>Build test</desc>
            <filename>bug-82021-20120509113943.patch</filename>
            <type>text/plain</type>
            <size>22494</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDE1ODQ1ZTUzODNlMTI5
OTVhY2U4MWMwMjIwNTEyMjM2YjIzM2MzNC4uYjNmMmE3ZmExNTI2Y2ZmOGQ3YmZlZTkzYWY0NjJk
NjhhNDZlZjI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA1LTA4ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBQb3NpdGlvbiBz
aG91bGQgYmUgYWJsZSB0byBoYXZlIFNoYWRvd1Jvb3QgYXMgYSBjb250YWluZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAyMQorCisgICAgICAg
IFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBTaW5jZSBQb3NpdGlvbiBjb3Vs
ZCBub3QgdGFrZSBhIHNoYWRvdyByb290IGFzIGEgY29udGFpbmVyIG5vZGUsIHBvaW50aW5nIHRo
ZSBkaXJlY3QgY2hpbGRyZW4KKyAgICAgICAgb2YgYSBzaGFkb3cgcm9vdCB3YXMgZGlmZmljdWx0
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgZW5hYmxlZCwgYW5kIGZpeGVzIGEgbG90
IG9mIGNyYXNoZXMgY2F1c2VkIGJ5IHRoYXQgbGltaXRhdGlvbi4KKyAgICAgICAgQWxzbywgd2Ug
Y29uZmlybSB0aGF0IFNoYWRvd1Jvb3QgaXMgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlwdCBsYXll
ci4KKworICAgICAgICBDdXJyZW50bHkgdGhpcyBjaGFuZ2UgaXMgb25seSBlbmFibGVkIGlmIHNo
YWRvdyBkb20gZmxhZyBpcyBlbmFibGVkLCBzaW5jZSB3ZSBjYW5ub3QKKyAgICAgICAgcHJvdmUg
dGhpcyBjaGFuZ2UgZG9lcyBub3QgZGVzdHJveSB0aGUgZXhpc3RpbmcgYmVoYXZpb3IuIEhvd2V2
ZXIsIHRoaXMgY2hhbmdlIGlzIHJlYWxseSByZXF1aXJlZAorICAgICAgICB0byBmaXggb3RoZXIg
ZWRpdGluZyBidWdzIGluIFNoYWRvdyBET00uIEEgYnVuY2ggb2YgcGF0Y2hlcyBhbmQgdGVzdHMg
d2lsbCBiZSBhZGRlZCB0bworICAgICAgICBmaXggb3RoZXIgZWRpdGluZyBidWdzIGFuZCB0aGV5
IHdpbGwgY2hlY2sgdGhpcyBwYXRjaCBkb2VzIG5vdCBicmVhayBlZGl0aW5nLgorICAgICAgICBX
ZSB3aWxsIGFsc28gYWRkIGEgZnV6emVyIHRvIGNoZWNrIHRoZSBzdGFiaWxpdHkgb2YgZWRpdGlu
ZyBpbiBTaGFkb3cgRE9NIGxhdGVyLCBhbmQgaXQgd2lsbAorICAgICAgICBhbHNvIGhlbHAgdG8g
Y29uZmlybSB0aGUgcGF0Y2ggd2lsbCBub3QgYnJlYWsgdGhlIGVkaXRpbmcuCisKKyAgICAgICAg
VGVzdHM6IGVkaXRpbmcvc2hhZG93L2RvdWJsZWNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFz
aC5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3NoYWRvdy9yaWdodGNsaWNrLW9uLW1ldGVy
LWluLXNoYWRvdy1jcmFzaC5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3NoYWRvdy9zaGFk
b3ctc2VsZWN0aW9uLW5vdC1leHBvcnRlZC5odG1sCisKKyAgICAgICAgKiBkb20vUG9zaXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OlBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlBvc2l0aW9uOjpjb250YWluZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0
aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRp
b246OnByZXZpb3VzKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpuZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBvc2l0aW9uOjphdFN0YXJ0T2ZUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvc2l0aW9uOjphdEVuZE9mVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6Zmlu
ZFBhcmVudCk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OnBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUpOgorCiAyMDEyLTA1LTA4ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgc3R5bGVzaGVldCBpbmhl
cml0YW5jZSBzdXBwb3J0IHRvIElGUkFNRV9TRUFNTEVTUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAK
aW5kZXggZmQ3OGViOTFlOWRmNGIzMjliMjY4YzdmYmZlNDJhMjY2ZDllNzAxZS4uMDhkZWE3M2I2
ZjFlOWVhOGRjYTgzN2NmMDI1NTMzNzYyNDE4ZWNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUG9zaXRpb25JdGVyYXRvci5oIgogI2luY2x1
ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgorI2luY2x1ZGUgIlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCkBAIC04MCw3ICs4MSwx
MSBAQCBQb3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBhbmNob3JOb2RlLCBMZWdh
Y3lFZGl0aW5nT2Zmc2V0IG9mZnNldCkKICAgICAsIG1fYW5jaG9yVHlwZShhbmNob3JUeXBlRm9y
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG1fYW5jaG9yTm9kZS5nZXQoKSwgbV9vZmZzZXQpKQogICAg
ICwgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbih0cnVlKQogeworI2lmIEVOQUJMRShTSEFET1df
RE9NKQorICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVk
KCkgfHwgIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSk7Cisj
ZWxzZQogICAgIEFTU0VSVCghbV9hbmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUtPmlzU2hhZG93
Um9vdCgpKTsKKyNlbmRpZgogfQogCiBQb3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0cjxOb2Rl
PiBhbmNob3JOb2RlLCBBbmNob3JUeXBlIGFuY2hvclR5cGUpCkBAIC04OSw3ICs5NCwxMiBAQCBQ
b3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBhbmNob3JOb2RlLCBBbmNob3JUeXBl
IGFuY2hvclR5cGUpCiAgICAgLCBtX2FuY2hvclR5cGUoYW5jaG9yVHlwZSkKICAgICAsIG1faXNM
ZWdhY3lFZGl0aW5nUG9zaXRpb24oZmFsc2UpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisg
ICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSB8fCAh
bV9hbmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUtPmlzU2hhZG93Um9vdCgpKTsKKyNlbHNlCiAg
ICAgQVNTRVJUKCFtX2FuY2hvck5vZGUgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkp
OworI2VuZGlmCisKICAgICBBU1NFUlQoYW5jaG9yVHlwZSAhPSBQb3NpdGlvbklzT2Zmc2V0SW5B
bmNob3IpOwogICAgIEFTU0VSVCghKChhbmNob3JUeXBlID09IFBvc2l0aW9uSXNCZWZvcmVDaGls
ZHJlbiB8fCBhbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRlckNoaWxkcmVuKQogICAgICAgICAm
JiAobV9hbmNob3JOb2RlLT5pc1RleHROb2RlKCkgfHwgZWRpdGluZ0lnbm9yZXNDb250ZW50KG1f
YW5jaG9yTm9kZS5nZXQoKSkpKSk7CkBAIC0xMDEsNyArMTExLDEyIEBAIFBvc2l0aW9uOjpQb3Np
dGlvbihQYXNzUmVmUHRyPE5vZGU+IGFuY2hvck5vZGUsIGludCBvZmZzZXQsIEFuY2hvclR5cGUg
YW5jaG9yVHlwCiAgICAgLCBtX2FuY2hvclR5cGUoYW5jaG9yVHlwZSkKICAgICAsIG1faXNMZWdh
Y3lFZGl0aW5nUG9zaXRpb24oZmFsc2UpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAg
IEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVkKCkgfHwgIW1f
YW5jaG9yTm9kZSB8fCAhZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkg
fHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkpOworI2Vsc2UKICAgICBBU1NFUlQoIW1f
YW5jaG9yTm9kZSB8fCAhZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkg
fHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkpOworI2VuZGlmCisKICAgICBBU1NFUlQo
YW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOwogfQogCkBAIC0xNDMsNyAr
MTU4LDcgQEAgTm9kZSogUG9zaXRpb246OmNvbnRhaW5lck5vZGUoKSBjb25zdAogICAgICAgICBy
ZXR1cm4gbV9hbmNob3JOb2RlLmdldCgpOwogICAgIGNhc2UgUG9zaXRpb25Jc0JlZm9yZUFuY2hv
cjoKICAgICBjYXNlIFBvc2l0aW9uSXNBZnRlckFuY2hvcjoKLSAgICAgICAgcmV0dXJuIG1fYW5j
aG9yTm9kZS0+bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCk7CisgICAgICAgIHJldHVybiBm
aW5kUGFyZW50KG1fYW5jaG9yTm9kZS5nZXQoKSk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiAwOwpAQCAtMjAzLDcgKzIxOCw3IEBAIFBvc2l0aW9uIFBvc2l0
aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSBjb25zdAogICAgIAogICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBvbmx5IGJlIG5lY2Vzc2FyeSBmb3IgbGVnYWN5IHBvc2l0aW9ucywgYnV0
IGlzIGFsc28gbmVlZGVkIGZvciBwb3NpdGlvbnMgYmVmb3JlIGFuZCBhZnRlciBUYWJsZXMKICAg
ICBpZiAobV9vZmZzZXQgPD0gMCAmJiAobV9hbmNob3JUeXBlICE9IFBvc2l0aW9uSXNBZnRlckFu
Y2hvciAmJiBtX2FuY2hvclR5cGUgIT0gUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4pKSB7Ci0gICAg
ICAgIGlmIChtX2FuY2hvck5vZGUtPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpICYmIChl
ZGl0aW5nSWdub3Jlc0NvbnRlbnQobV9hbmNob3JOb2RlLmdldCgpKSB8fCBpc1RhYmxlRWxlbWVu
dChtX2FuY2hvck5vZGUuZ2V0KCkpKSkKKyAgICAgICAgaWYgKGZpbmRQYXJlbnQobV9hbmNob3JO
b2RlLmdldCgpKSAmJiAoZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkg
fHwgaXNUYWJsZUVsZW1lbnQobV9hbmNob3JOb2RlLmdldCgpKSkpCiAgICAgICAgICAgICByZXR1
cm4gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobV9hbmNob3JOb2RlLmdldCgpKTsKICAgICAg
ICAgcmV0dXJuIFBvc2l0aW9uKG1fYW5jaG9yTm9kZS5nZXQoKSwgMCwgUG9zaXRpb25Jc09mZnNl
dEluQW5jaG9yKTsKICAgICB9CkBAIC0zMTYsNyArMzMxLDcgQEAgUG9zaXRpb24gUG9zaXRpb246
OnByZXZpb3VzKFBvc2l0aW9uTW92ZVR5cGUgbW92ZVR5cGUpIGNvbnN0CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBuLT5ub25TaGFkb3dCb3VuZGFyeVBh
cmVudE5vZGUoKTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBmaW5kUGFyZW50KG4pOwog
ICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKQEAgLTM0OCw3ICszNjMs
NyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6bmV4dChQb3NpdGlvbk1vdmVUeXBlIG1vdmVUeXBlKSBj
b25zdAogICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG4sIChtb3Zl
VHlwZSA9PSBDaGFyYWN0ZXIpID8gdW5jaGVja2VkTmV4dE9mZnNldChuLCBvKSA6IG8gKyAxKTsK
ICAgICB9CiAKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBuLT5ub25TaGFkb3dCb3VuZGFy
eVBhcmVudE5vZGUoKTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBmaW5kUGFyZW50KG4p
OwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKQEAgLTQ0MSwxNCAr
NDU2LDE0IEBAIGJvb2wgUG9zaXRpb246OmF0U3RhcnRPZlRyZWUoKSBjb25zdAogewogICAgIGlm
IChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuICFkZXByZWNhdGVk
Tm9kZSgpLT5ub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKSAmJiBtX29mZnNldCA8PSAwOwor
ICAgIHJldHVybiAhZmluZFBhcmVudChkZXByZWNhdGVkTm9kZSgpKSAmJiBtX29mZnNldCA8PSAw
OwogfQogCiBib29sIFBvc2l0aW9uOjphdEVuZE9mVHJlZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gIWRlcHJlY2F0ZWROb2Rl
KCktPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpICYmIG1fb2Zmc2V0ID49IGxhc3RPZmZz
ZXRGb3JFZGl0aW5nKGRlcHJlY2F0ZWROb2RlKCkpOworICAgIHJldHVybiAhZmluZFBhcmVudChk
ZXByZWNhdGVkTm9kZSgpKSAmJiBtX29mZnNldCA+PSBsYXN0T2Zmc2V0Rm9yRWRpdGluZyhkZXBy
ZWNhdGVkTm9kZSgpKTsKIH0KIAogaW50IFBvc2l0aW9uOjpyZW5kZXJlZE9mZnNldCgpIGNvbnN0
CkBAIC04MzQsNiArODQ5LDE4IEBAIGJvb2wgUG9zaXRpb246Om5vZGVJc1VzZXJTZWxlY3ROb25l
KE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSAmJiBub2Rl
LT5yZW5kZXJlcigpLT5zdHlsZSgpLT51c2VyU2VsZWN0KCkgPT0gU0VMRUNUX05PTkU7CiB9CiAK
K0NvbnRhaW5lck5vZGUqIFBvc2l0aW9uOjpmaW5kUGFyZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7
CisgICAgLy8gRklYTUU6IFNlZSBodHRwOi8vd2ViLnVnLzgyNjk3CisKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhZG93RE9NRW5hYmxl
ZCgpKQorICAgICAgICByZXR1cm4gbm9kZS0+cGFyZW50Tm9kZSgpOworI2VuZGlmCisKKyAgICBy
ZXR1cm4gbm9kZS0+bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCk7Cit9CisKIGJvb2wgUG9z
aXRpb246OmlzQ2FuZGlkYXRlKCkgY29uc3QKIHsKICAgICBpZiAoaXNOdWxsKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5oCmluZGV4IDRlMjQ0YTBkMmQwOGE1Mzk4YThmMTkzY2NlODlkMDZjMGJkZDI3Njgu
LjI3YzNmNDI5NzAzMThkNGViMGU4ZjI5NjJiMmU5ZTNlZWJiNjIxZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5oCkBAIC0xODksNiArMTg5LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgaGFz
UmVuZGVyZWROb25Bbm9ueW1vdXNEZXNjZW5kYW50c1dpdGhIZWlnaHQoUmVuZGVyT2JqZWN0Kik7
CiAgICAgc3RhdGljIGJvb2wgbm9kZUlzVXNlclNlbGVjdE5vbmUoTm9kZSopOworCisgICAgc3Rh
dGljIENvbnRhaW5lck5vZGUqIGZpbmRQYXJlbnQoY29uc3QgTm9kZSopOwogICAgIAogICAgIHZv
aWQgZGVidWdQb3NpdGlvbihjb25zdCBjaGFyKiBtc2cgPSAiIikgY29uc3Q7CiAKQEAgLTIwMyw2
ICsyMDUsNyBAQCBwcml2YXRlOgogCiAgICAgaW50IHJlbmRlcmVkT2Zmc2V0KCkgY29uc3Q7CiAK
KyAgICAKICAgICBQb3NpdGlvbiBwcmV2aW91c0NoYXJhY3RlclBvc2l0aW9uKEVBZmZpbml0eSkg
Y29uc3Q7CiAgICAgUG9zaXRpb24gbmV4dENoYXJhY3RlclBvc2l0aW9uKEVBZmZpbml0eSkgY29u
c3Q7CiAKQEAgLTI0NCwxMyArMjQ3LDEzIEBAIGlubGluZSBQb3NpdGlvbiBwb3NpdGlvbkluUGFy
ZW50QmVmb3JlTm9kZShjb25zdCBOb2RlKiBub2RlKQogICAgIC8vIEF0IGxlYXN0IG9uZSBjYWxs
ZXIgY3VycmVudGx5IGhpdHMgdGhpcyBBU1NFUlQgdGhvdWdoLCB3aGljaCBpbmRpY2F0ZXMKICAg
ICAvLyB0aGF0IHRoZSBjYWxsZXIgaXMgdHJ5aW5nIHRvIG1ha2UgYSBwb3NpdGlvbiByZWxhdGl2
ZSB0byBhIGRpc2Nvbm5lY3RlZCBub2RlICh3aGljaCBpcyBsaWtlbHkgYW4gZXJyb3IpCiAgICAg
Ly8gU3BlY2lmaWNhbGx5LCBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saWdhdHVyZS0wMDEuaHRt
bCBjcmFzaGVzIHdpdGggQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSkKLSAgICByZXR1cm4gUG9z
aXRpb24obm9kZS0+bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCksIG5vZGUtPm5vZGVJbmRl
eCgpLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKKyAgICByZXR1cm4gUG9z
aXRpb24oUG9zaXRpb246OmZpbmRQYXJlbnQobm9kZSksIG5vZGUtPm5vZGVJbmRleCgpLCBQb3Np
dGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKIH0KIAogaW5saW5lIFBvc2l0aW9uIHBv
c2l0aW9uSW5QYXJlbnRBZnRlck5vZGUoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICBBU1NFUlQo
bm9kZS0+bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCkpOwotICAgIHJldHVybiBQb3NpdGlv
bihub2RlLT5ub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKSwgbm9kZS0+bm9kZUluZGV4KCkg
KyAxLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKKyAgICBBU1NFUlQoUG9z
aXRpb246OmZpbmRQYXJlbnQobm9kZSkpOworICAgIHJldHVybiBQb3NpdGlvbihQb3NpdGlvbjo6
ZmluZFBhcmVudChub2RlKSwgbm9kZS0+bm9kZUluZGV4KCkgKyAxLCBQb3NpdGlvbjo6UG9zaXRp
b25Jc09mZnNldEluQW5jaG9yKTsKIH0KIAogLy8gcG9zaXRpb25CZWZvcmVOb2RlIGFuZCBwb3Np
dGlvbkFmdGVyTm9kZSByZXR1cm4gbmVpZ2hib3ItYW5jaG9yZWQgcG9zaXRpb25zLCBjb25zdHJ1
Y3Rpb24gaXMgTygxKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY0ZTNkZjFlNjQ3MzcxZDkzMjQ1MDFhYWJhZGRhNTQzNmMx
OGQ5NGQuLjEzMjdkZTY4OTdmZmMwOWYxODAzMDIyNWM5OTUyMWQ4ZmYwMWI4YmIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAxMi0wNS0wOCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUG9zaXRpb24gc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSBTaGFk
b3dSb290IGFzIGEgY29udGFpbmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODIwMjEKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2Eu
CisKKyAgICAgICAgU2tpcHBlZCBub24tY2hyb21pdW0gcG9ydCBzaW5jZSBTSEFET1dfRE9NIGZs
YWcgaXMgbm90IGVuYWJsZWQgaW4gdGhvc2UgcGxhdGZvcm1zLgorICAgICAgICBXZSB3aWxsIGFk
ZCBidW5jaCBvZiB0ZXN0cyBmb3IgZWRpdGluZyBpbiBTaGFkb3cgRE9NIGludG8gZWRpdGluZy9z
aGFkb3cgbGF0ZXIsCisgICAgICAgIHNvIEkgYWRkZWQgdGhlIHdob2xlIGRpcmVjdG9yeSBuYW1l
IHRvIHRoZSBza2lwcGVkIGxpc3QuCisKKyAgICAgICAgKiBlZGl0aW5nL3NoYWRvdy9kb3VibGVj
bGljay1vbi1tZXRlci1pbi1zaGFkb3ctY3Jhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL3NoYWRvdy9kb3VibGVjbGljay1vbi1tZXRlci1pbi1zaGFkb3ctY3Jhc2gu
aHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zaGFkb3cvcmlnaHRjbGljay1vbi1tZXRl
ci1pbi1zaGFkb3ctY3Jhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L3NoYWRvdy9yaWdodGNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFzaC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3NoYWRvdy9zaGFkb3ctc2VsZWN0aW9uLW5vdC1leHBvcnRlZC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2hhZG93L3NoYWRvdy1zZWxl
Y3Rpb24tbm90LWV4cG9ydGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9T
a2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tp
cHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9y
bS93aW5jYWlyby9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9Ta2lwcGVkOgorCiAy
MDEyLTA1LTA4ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQg
c3R5bGVzaGVldCBpbmhlcml0YW5jZSBzdXBwb3J0IHRvIElGUkFNRV9TRUFNTEVTUwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvZG91YmxlY2xpY2stb24tbWV0ZXItaW4t
c2hhZG93LWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L2Rv
dWJsZWNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTIyNzIxOGU4YzAzNTdiMWI3OWM1ZWRmMTRmMzE4YTg2Y2I0MDAyYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L2RvdWJsZWNsaWNrLW9uLW1ldGVyLWlu
LXNoYWRvdy1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3QgZW5z
dXJlcyBjb250ZXh0IGNsaWNrIGFyb3VuZCBtZXRlciB3b24ndCBjcmFzaC4KKworUEFTUwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvZG91YmxlY2xpY2stb24tbWV0ZXIt
aW4tc2hhZG93LWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9kb3VibGVj
bGljay1vbi1tZXRlci1pbi1zaGFkb3ctY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmYyZTMyNGVh
NDYwYzk3NjcyZWJmYjUyZTIzN2Q5NGE3Y2NkMDU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9zaGFkb3cvZG91YmxlY2xpY2stb24tbWV0ZXItaW4tc2hhZG93LWNyYXNo
Lmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxwPlRoaXMg
dGVzdCBlbnN1cmVzIGNvbnRleHQgY2xpY2sgYXJvdW5kIG1ldGVyIHdvbid0IGNyYXNoLjwvcD4K
KzxkaXYgaWQ9J2NvbnRhaW5lcicgc3R5bGU9IndpZHRoOjEwMHB4OyBoZWlnaHQ6IDEwMHB4Ij48
L2Rpdj4KKzxwPlBBU1M8L3A+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9kb20vc2hhZG93L3Jl
c291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGluZy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciBjb250YWluZXIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJyk7Cit2YXIgc2hhZG93Um9vdCA9
IG5ldyBXZWJLaXRTaGFkb3dSb290KGNvbnRhaW5lcik7Cit2YXIgbWV0ZXIgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdtZXRlcicpOworc2hhZG93Um9vdC5hcHBlbmRDaGlsZChtZXRlcik7CisK
Ky8vIERvIGRvdWJsZWNsaWNrIGF0IHZhcmlvdXMgcG9pbnRzLgorZG91YmxlQ2xpY2sobWV0ZXIu
b2Zmc2V0TGVmdCwgbWV0ZXIub2Zmc2V0VG9wKTsKK2RvdWJsZUNsaWNrKG1ldGVyLm9mZnNldExl
ZnQgLSAxLCBtZXRlci5vZmZzZXRUb3ApOworZG91YmxlQ2xpY2sobWV0ZXIub2Zmc2V0TGVmdCwg
bWV0ZXIub2Zmc2V0VG9wIC0gMSk7Citkb3VibGVDbGljayhtZXRlci5vZmZzZXRMZWZ0IC0gMSwg
bWV0ZXIub2Zmc2V0VG9wIC0gMSk7Citkb3VibGVDbGljayhtZXRlci5vZmZzZXRMZWZ0ICsgMSwg
bWV0ZXIub2Zmc2V0VG9wKTsKK2RvdWJsZUNsaWNrKG1ldGVyLm9mZnNldExlZnQsIG1ldGVyLm9m
ZnNldFRvcCArIDEpOworZG91YmxlQ2xpY2sobWV0ZXIub2Zmc2V0TGVmdCArIDEsIG1ldGVyLm9m
ZnNldFRvcCArIDEpOworZG91YmxlQ2xpY2sobWV0ZXIub2Zmc2V0TGVmdCArIG1ldGVyLm9mZnNl
dFdpZHRoIC8gMiwgbWV0ZXIub2Zmc2V0VG9wICsgbWV0ZXIub2Zmc2V0SGVpZ2h0IC8gMik7Citk
b3VibGVDbGljayhtZXRlci5vZmZzZXRMZWZ0ICsgbWV0ZXIub2Zmc2V0V2lkdGggLSAxLCBtZXRl
ci5vZmZzZXRUb3AgKyBtZXRlci5vZmZzZXRIZWlnaHQgLSAxKTsKK2RvdWJsZUNsaWNrKG1ldGVy
Lm9mZnNldExlZnQgKyBtZXRlci5vZmZzZXRXaWR0aCArIDEsIG1ldGVyLm9mZnNldFRvcCArIG1l
dGVyLm9mZnNldEhlaWdodCArIDEpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9yaWdodGNsaWNrLW9uLW1ldGVyLWlu
LXNoYWRvdy1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9y
aWdodGNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTIyNzIxOGU4YzAzNTdiMWI3OWM1ZWRmMTRmMzE4YTg2Y2I0MDAyYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L3JpZ2h0Y2xpY2stb24tbWV0ZXItaW4t
c2hhZG93LWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1RoaXMgdGVzdCBlbnN1
cmVzIGNvbnRleHQgY2xpY2sgYXJvdW5kIG1ldGVyIHdvbid0IGNyYXNoLgorCitQQVNTCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9yaWdodGNsaWNrLW9uLW1ldGVyLWlu
LXNoYWRvdy1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvcmlnaHRjbGlj
ay1vbi1tZXRlci1pbi1zaGFkb3ctY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzIzODZhOTA0Y2Vk
MTUzMzFhMDE3MGVkNWZmNTMyYWRmYzQ2MTVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zaGFkb3cvcmlnaHRjbGljay1vbi1tZXRlci1pbi1zaGFkb3ctY3Jhc2guaHRt
bApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHA+VGhpcyB0ZXN0
IGVuc3VyZXMgY29udGV4dCBjbGljayBhcm91bmQgbWV0ZXIgd29uJ3QgY3Jhc2guPC9wPgorPGRp
diBpZD0nY29udGFpbmVyJyBzdHlsZT0id2lkdGg6MTAwcHg7IGhlaWdodDogMTAwcHgiPjwvZGl2
PgorPHA+UEFTUzwvcD4KKworPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZWRpdGluZy9lZGl0aW5nLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gY29udGV4dENsaWNrKHgs
IHkpIHsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRl
ci5jb250ZXh0Q2xpY2soKTsKK30KKwordmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb250YWluZXInKTsKK3ZhciBzaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRvd1Jv
b3QoY29udGFpbmVyKTsKK3ZhciBtZXRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ21ldGVy
Jyk7CitzaGFkb3dSb290LmFwcGVuZENoaWxkKG1ldGVyKTsKKworLy8gRG8gY29udGV4dCBjbGlj
ayBhdCB2YXJpb3VzIHBvaW50cy4KK2NvbnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0LCBtZXRl
ci5vZmZzZXRUb3ApOworY29udGV4dENsaWNrKG1ldGVyLm9mZnNldExlZnQgLSAxLCBtZXRlci5v
ZmZzZXRUb3ApOworY29udGV4dENsaWNrKG1ldGVyLm9mZnNldExlZnQsIG1ldGVyLm9mZnNldFRv
cCAtIDEpOworY29udGV4dENsaWNrKG1ldGVyLm9mZnNldExlZnQgLSAxLCBtZXRlci5vZmZzZXRU
b3AgLSAxKTsKK2NvbnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0ICsgMSwgbWV0ZXIub2Zmc2V0
VG9wKTsKK2NvbnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0LCBtZXRlci5vZmZzZXRUb3AgKyAx
KTsKK2NvbnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0ICsgMSwgbWV0ZXIub2Zmc2V0VG9wICsg
MSk7Citjb250ZXh0Q2xpY2sobWV0ZXIub2Zmc2V0TGVmdCArIG1ldGVyLm9mZnNldFdpZHRoIC8g
MiwgbWV0ZXIub2Zmc2V0VG9wICsgbWV0ZXIub2Zmc2V0SGVpZ2h0IC8gMik7Citjb250ZXh0Q2xp
Y2sobWV0ZXIub2Zmc2V0TGVmdCArIG1ldGVyLm9mZnNldFdpZHRoIC0gMSwgbWV0ZXIub2Zmc2V0
VG9wICsgbWV0ZXIub2Zmc2V0SGVpZ2h0IC0gMSk7Citjb250ZXh0Q2xpY2sobWV0ZXIub2Zmc2V0
TGVmdCArIG1ldGVyLm9mZnNldFdpZHRoICsgMSwgbWV0ZXIub2Zmc2V0VG9wICsgbWV0ZXIub2Zm
c2V0SGVpZ2h0ICsgMSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L3NoYWRvdy1zZWxlY3Rpb24tbm90LWV4cG9ydGVk
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L3NoYWRvdy1zZWxlY3Rp
b24tbm90LWV4cG9ydGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDY3YmNkNmQ2NjFhMmQy
MzU3YWJiOTE5NGNjNTBiNGNhYzdjZGI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zaGFkb3cvc2hhZG93LXNlbGVjdGlvbi1ub3QtZXhwb3J0ZWQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTMgQEAKK1BBU1MgYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmFuY2hv
ck5vZGUpIGlzIHRydWUKK1BBU1MgYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmZvY3VzTm9k
ZSkgaXMgdHJ1ZQorUEFTUyBhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uYW5jaG9yTm9kZSkg
aXMgdHJ1ZQorUEFTUyBhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uZm9jdXNOb2RlKSBpcyB0
cnVlCitQQVNTIGFzc2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5hbmNob3JOb2RlKSBpcyB0cnVl
CitQQVNTIGFzc2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5mb2N1c05vZGUpIGlzIHRydWUKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorVGhpcyB0ZXN0
IGVuc3VyZXMgc2hhZG93IHJvb3Qgd29uJ3QgZXhwb3NlIHRvIEpTIGxheWVyLgorCitCRUZPUkUK
K0FGVEVSCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9zaGFkb3ctc2Vs
ZWN0aW9uLW5vdC1leHBvcnRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvc2hh
ZG93LXNlbGVjdGlvbi1ub3QtZXhwb3J0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGIzYjEyMGRhMzZh
NWZkMDI1NWY2MjIxNjE3NWFiZDMyODg0YTNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zaGFkb3cvc2hhZG93LXNlbGVjdGlvbi1ub3QtZXhwb3J0ZWQuaHRtbApAQCAt
MCwwICsxLDgyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHByZSBpZD0iY29uc29sZSI+
PC9wcmU+CisKKzxwPlRoaXMgdGVzdCBlbnN1cmVzIHNoYWRvdyByb290IHdvbid0IGV4cG9zZSB0
byBKUyBsYXllci48cD4KKzxkaXYgaWQ9J2RpdjEnPkJFRk9SRTwvZGl2PgorPGRpdiBpZD0nY29u
dGFpbmVyJz5DT05UQUlORVI8L2Rpdj4KKzxkaXYgaWQ9J2RpdjQnPkFGVEVSPC9kaT4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2RvbS9zaGFkb3cvcmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29udGFpbmVyJyk7Cit2YXIgc2hhZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KGNvbnRhaW5lcik7CisKK3ZhciBkaXYyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CitkaXYyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdJTiBTSEFET1cg
VFJFRSAxJykpOwordmFyIGRpdjMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2Rp
djMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0lOIFNIQURPVyBUUkVFIDIn
KSk7CisKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoZGl2Mik7CitzaGFkb3dSb290LmFwcGVuZENo
aWxkKGRpdjMpOworCitmdW5jdGlvbiBtaWRYKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gZWxlbWVu
dC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7Cit9CisKK2Z1bmN0aW9uIG1p
ZFkoZWxlbWVudCkgeworICAgIHJldHVybiBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zm
c2V0SGVpZ2h0IC8gMjsKK30KKworZnVuY3Rpb24gYXNzZXJ0Tm90SW5TaGFkb3coZWxlbWVudCkg
eworICAgIGlmIChlbGVtZW50ID09IGRpdjIgfHwgZWxlbWVudCA9PSBkaXYyLmZpcnN0Q2hpbGQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZWxlbWVudCA9PSBkaXYzIHx8IGVsZW1l
bnQgPT0gZGl2My5maXJzdENoaWxkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAvLyBUcnkgc2VsZWN0
IGZyb20gb3V0c2lkZSBvZiBhIHNoYWRvdyBzdWJ0cmVlIHRvIGluc2lkZSBvZiBhIHNoYWRvdyBz
dWJ0cmVlLgorICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG1pZFgoZGl2MSksIG1pZFkoZGl2
MSkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKG1pZFgoZGl2MiksIG1pZFkoZGl2MikpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAo
KTsKKworICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgc2hv
dWxkQmUoJ2Fzc2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5hbmNob3JOb2RlKScsICd0cnVlJyk7
CisgICAgc2hvdWxkQmUoJ2Fzc2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5mb2N1c05vZGUpJywg
J3RydWUnKTsKKworICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKworICAgIC8vIFRy
eSBzZWxlY3QgZnJvbSBpbnNpZGUgb2YgYSBzaGFkb3cgc3VidHJlZSB0byBvdXRzaWRlIG9mIGEg
c2hhZG93IHN1YnRyZWUuCisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8obWlkWChkaXYzKSwg
bWlkWShkaXYzKSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8obWlkWChkaXY0KSwgbWlkWShkaXY0KSk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOworCisgICAgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAg
IHNob3VsZEJlKCdhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uYW5jaG9yTm9kZSknLCAndHJ1
ZScpOworICAgIHNob3VsZEJlKCdhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uZm9jdXNOb2Rl
KScsICd0cnVlJyk7CisgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOworCisgICAgLy8g
VHJ5IHNlbGVjdCBpbnNpZGUgc2hhZG93IHN1YnRyZWVzLgorICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKG1pZFgoZGl2MiksIG1pZFkoZGl2MikpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93
bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG1pZFgoZGl2MyksIG1pZFkoZGl2Mykp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAgIHNlbGVjdGlvbiA9IHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKTsKKyAgICBzaG91bGRCZSgnYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9u
LmFuY2hvck5vZGUpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnYXNzZXJ0Tm90SW5TaGFkb3co
c2VsZWN0aW9uLmZvY3VzTm9kZSknLCAndHJ1ZScpOworICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxS
YW5nZXMoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Nr
aXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAppbmRleCAxZTU0NDMxMzA1
ZGQ0YWNlODcxOWQyZTk4YTk1ZmMyMWQyYWU0OTg0Li5kZDJjNGU0NWNiMjA2MTdjZTc4NzY2NTQx
NmY2NmI0ZTM1YmQzN2NjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tp
cHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZApAQCAtMjM1LDYgKzIz
NSw3IEBAIGZhc3QvbWVkaWEvcHJpbnQtcmVzdG9yZXMtcHJldmlvdXMtbWVkaWF0eXBlLmh0bWwK
IAogIyBFTkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlzYWJsZWQKIGZhc3QvZG9tL3NoYWRvdworZWRp
dGluZy9zaGFkb3cKIAogIyBFTkFCTEUoREFUQUxJU1QpIGlzIGRpc2FibGVkCiBmYXN0L2Zvcm1z
L2RhdGFsaXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBl
Y3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dAppbmRleCA2YTkxZmZiNmI5ZjcyYzU1NmY4ZTljY2YxZjRmMmE5MGVjN2Q3ZTdkLi5jZGU0
MzFlOGI3NTQ4YTUxNzgyYjI1OGZlN2E4NTcxMDMzNmMwZGEyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTIzNiw2ICsyMzYsNyBAQCBC
VUdXS0dUSyBTS0lQIDogZmFzdC9yZWdpb25zL3N0eWxlLXNjb3BlZC1pbi1mbG93Lmh0bWwgPSBG
QUlMCiAKIC8vIEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KIEJVR1dLR1RLIFNLSVAg
OiBmYXN0L2RvbS9zaGFkb3cgPSBGQUlMCitCVUdXS0dUSyBTS0lQIDogZWRpdGluZy9zaGFkb3cg
PSBGQUlMCiAKIC8vIENTUyBSZWdpb25zIHN1cHBvcnQgbm90IHlldCBlbmFibGVkLgogQlVHV0s1
NzMxMiBTS0lQIDogZmFzdC9yZWdpb25zID0gRkFJTApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApp
bmRleCA5MjYwMjkwOGI3MjQ0ZmE3NGVmMjA1ODc5MzZjZGJmMjgxZTk0MTU2Li45ZWM1NTFmMzg4
YjRlMjlmNDAyNGY4OWM0MjY5Mzk5ZjYyMzA2MzVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBl
ZApAQCAtNDQ3LDYgKzQ0Nyw3IEBAIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4tZmxvdy5o
dG1sCiAKICMgRU5BQkxFKFNIQURPV19ET00pIGlzIGRpc2FibGVkLgogZmFzdC9kb20vc2hhZG93
CitlZGl0aW5nL3NoYWRvdwogCiAjIEpTQyBkb2VzIG5vdCBzdXBwb3J0IHNldElzb2xhdGVkV29y
bGRTZWN1cml0eU9yaWdpbiAoaHR0cDovL3dlYmtpdC5vcmcvYi82MTU0MCkKIGh0dHAvdGVzdHMv
c2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9jcm9zcy1vcmlnaW4teGhyLmh0bWwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9Ta2lwcGVkCmluZGV4IDI1OTRhYThiYTJkODM0MzRhNmQ5ZmFmYTczYTVkMmI3OWI1YzkwN2Yu
LjhlNTc4ZTY1NjU2ZGJiYzFjY2VjYTY3NDEwNjdhOGY0MzAxZTU3ZmQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvU2tpcHBlZApAQCAtMTY5LDYgKzE2OSw3IEBAIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQt
aW4tZmxvdy1vdmVycmlkZS1yZWdpb24tc3R5bGluZy5odG1sCiBmYXN0L3JlZ2lvbnMvc3R5bGUt
c2NvcGVkLWluLWZsb3cuaHRtbAogCiAjIEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4K
K2VkaXRpbmcvc2hhZG93CiBmYXN0L2RvbS9zaGFkb3cvYWNjZXNzLWtleS5odG1sCiBmYXN0L2Rv
bS9zaGFkb3cvYWRvcHQtbm9kZS13aXRoLXNoYWRvdy1yb290Lmh0bWwKIGZhc3QvZG9tL3NoYWRv
dy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXIuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZAppbmRleCBmZDM3Y2JjY2ViYzZiZGNhZmNmMDcxNWUzOGNlNjY0M2RlMTAzNzRmLi43M2E3MmM4
NDQ3NWM1OTk1YzIwZGU3ZTc3MmEzOTY5YjVjYmFmZTNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tp
cHBlZApAQCAtMTQ3Nyw2ICsxNDc3LDcgQEAgZmFzdC9yZWdpb25zL3N0eWxlLXNjb3BlZC1pbi1m
bG93LW92ZXJyaWRlLXJlZ2lvbi1zdHlsaW5nLmh0bWwKIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29w
ZWQtaW4tZmxvdy5odG1sCiAKICMgRU5BQkxFKFNIQURPV19ET00pIGlzIGRpc2FibGVkLgorZWRp
dGluZy9zaGFkb3cKIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtYXBpLmh0bWwKIGZh
c3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtb3V0c2lkZS1zaGFkb3cuaHRtbAogZmFzdC9k
b20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1vdXRzaWRlLXNoYWRvdy1zdHlsZS5odG1sCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAppbmRleCBmYjhkNGMxMDczYmM1YWQzOWRlYTAx
NzhmNjNiMjdmNzgzOGNmZTQwLi5mOTUxZjQ3MzU3MDBmZmViN2JhYWM0NGZlODJhM2YzOTYxZmEx
NzAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKQEAgLTE5ODMsNiArMTk4
Myw3IEBAIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4tZmxvdy1vdmVycmlkZS1yZWdpb24t
c3R5bGluZy5odG1sCiBmYXN0L3JlZ2lvbnMvc3R5bGUtc2NvcGVkLWluLWZsb3cuaHRtbAogCiAj
IEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KK2VkaXRpbmcvc2hhZG93CiBmYXN0L2Rv
bS9zaGFkb3cvY29udGVudC1lbGVtZW50LWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVu
dC1lbGVtZW50LW91dHNpZGUtc2hhZG93Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVs
ZW1lbnQtaW4tbWVkaWEtZWxlbWVudC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93azIvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCmluZGV4
IDE1MzgxZWMyNzc3ZGIyMDRjMzE0ZGNkZjQzNWUwZDAyY2UwNDRlYmUuLjJlNzExNmZiZDY1MDlm
ZTY1ZDNhNTQwNGZjNjdjODA2MzY0YzdkZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3drMi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCkBA
IC0xMDkwLDYgKzEwOTAsNyBAQCBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLXVybC13aXRo
LXN0eWxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jcmVhdGUtY29udGVudC1lbGVtZW50Lmh0bWwK
IAogIyBFTkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlzYWJsZWQuCitlZGl0aW5nL3NoYWRvdwogZmFz
dC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L2Nv
bnRlbnQtZWxlbWVudC1vdXRzaWRlLXNoYWRvdy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVu
dC1lbGVtZW50LW91dHNpZGUtc2hhZG93LXN0eWxlLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140869</attachid>
            <date>2012-05-08 23:59:40 -0700</date>
            <delta_ts>2012-05-09 02:26:15 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-82021-20120509155938.patch</filename>
            <type>text/plain</type>
            <size>22494</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDE1ODQ1ZTUzODNlMTI5
OTVhY2U4MWMwMjIwNTEyMjM2YjIzM2MzNC4uYjNmMmE3ZmExNTI2Y2ZmOGQ3YmZlZTkzYWY0NjJk
NjhhNDZlZjI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA1LTA4ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBQb3NpdGlvbiBz
aG91bGQgYmUgYWJsZSB0byBoYXZlIFNoYWRvd1Jvb3QgYXMgYSBjb250YWluZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAyMQorCisgICAgICAg
IFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBTaW5jZSBQb3NpdGlvbiBjb3Vs
ZCBub3QgdGFrZSBhIHNoYWRvdyByb290IGFzIGEgY29udGFpbmVyIG5vZGUsIHBvaW50aW5nIHRo
ZSBkaXJlY3QgY2hpbGRyZW4KKyAgICAgICAgb2YgYSBzaGFkb3cgcm9vdCB3YXMgZGlmZmljdWx0
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgZW5hYmxlZCwgYW5kIGZpeGVzIGEgbG90
IG9mIGNyYXNoZXMgY2F1c2VkIGJ5IHRoYXQgbGltaXRhdGlvbi4KKyAgICAgICAgQWxzbywgd2Ug
Y29uZmlybSB0aGF0IFNoYWRvd1Jvb3QgaXMgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlwdCBsYXll
ci4KKworICAgICAgICBDdXJyZW50bHkgdGhpcyBjaGFuZ2UgaXMgb25seSBlbmFibGVkIGlmIHNo
YWRvdyBkb20gZmxhZyBpcyBlbmFibGVkLCBzaW5jZSB3ZSBjYW5ub3QKKyAgICAgICAgcHJvdmUg
dGhpcyBjaGFuZ2UgZG9lcyBub3QgZGVzdHJveSB0aGUgZXhpc3RpbmcgYmVoYXZpb3IuIEhvd2V2
ZXIsIHRoaXMgY2hhbmdlIGlzIHJlYWxseSByZXF1aXJlZAorICAgICAgICB0byBmaXggb3RoZXIg
ZWRpdGluZyBidWdzIGluIFNoYWRvdyBET00uIEEgYnVuY2ggb2YgcGF0Y2hlcyBhbmQgdGVzdHMg
d2lsbCBiZSBhZGRlZCB0bworICAgICAgICBmaXggb3RoZXIgZWRpdGluZyBidWdzIGFuZCB0aGV5
IHdpbGwgY2hlY2sgdGhpcyBwYXRjaCBkb2VzIG5vdCBicmVhayBlZGl0aW5nLgorICAgICAgICBX
ZSB3aWxsIGFsc28gYWRkIGEgZnV6emVyIHRvIGNoZWNrIHRoZSBzdGFiaWxpdHkgb2YgZWRpdGlu
ZyBpbiBTaGFkb3cgRE9NIGxhdGVyLCBhbmQgaXQgd2lsbAorICAgICAgICBhbHNvIGhlbHAgdG8g
Y29uZmlybSB0aGUgcGF0Y2ggd2lsbCBub3QgYnJlYWsgdGhlIGVkaXRpbmcuCisKKyAgICAgICAg
VGVzdHM6IGVkaXRpbmcvc2hhZG93L2RvdWJsZWNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFz
aC5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3NoYWRvdy9yaWdodGNsaWNrLW9uLW1ldGVy
LWluLXNoYWRvdy1jcmFzaC5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3NoYWRvdy9zaGFk
b3ctc2VsZWN0aW9uLW5vdC1leHBvcnRlZC5odG1sCisKKyAgICAgICAgKiBkb20vUG9zaXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OlBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlBvc2l0aW9uOjpjb250YWluZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0
aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRp
b246OnByZXZpb3VzKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpuZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBvc2l0aW9uOjphdFN0YXJ0T2ZUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvc2l0aW9uOjphdEVuZE9mVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6Zmlu
ZFBhcmVudCk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OnBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUpOgorCiAyMDEyLTA1LTA4ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgc3R5bGVzaGVldCBpbmhl
cml0YW5jZSBzdXBwb3J0IHRvIElGUkFNRV9TRUFNTEVTUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAK
aW5kZXggZmQ3OGViOTFlOWRmNGIzMjliMjY4YzdmYmZlNDJhMjY2ZDllNzAxZS4uMDhkZWE3M2I2
ZjFlOWVhOGRjYTgzN2NmMDI1NTMzNzYyNDE4ZWNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUG9zaXRpb25JdGVyYXRvci5oIgogI2luY2x1
ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgorI2luY2x1ZGUgIlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCkBAIC04MCw3ICs4MSwx
MSBAQCBQb3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBhbmNob3JOb2RlLCBMZWdh
Y3lFZGl0aW5nT2Zmc2V0IG9mZnNldCkKICAgICAsIG1fYW5jaG9yVHlwZShhbmNob3JUeXBlRm9y
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG1fYW5jaG9yTm9kZS5nZXQoKSwgbV9vZmZzZXQpKQogICAg
ICwgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbih0cnVlKQogeworI2lmIEVOQUJMRShTSEFET1df
RE9NKQorICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVk
KCkgfHwgIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSk7Cisj
ZWxzZQogICAgIEFTU0VSVCghbV9hbmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUtPmlzU2hhZG93
Um9vdCgpKTsKKyNlbmRpZgogfQogCiBQb3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0cjxOb2Rl
PiBhbmNob3JOb2RlLCBBbmNob3JUeXBlIGFuY2hvclR5cGUpCkBAIC04OSw3ICs5NCwxMiBAQCBQ
b3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBhbmNob3JOb2RlLCBBbmNob3JUeXBl
IGFuY2hvclR5cGUpCiAgICAgLCBtX2FuY2hvclR5cGUoYW5jaG9yVHlwZSkKICAgICAsIG1faXNM
ZWdhY3lFZGl0aW5nUG9zaXRpb24oZmFsc2UpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisg
ICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSB8fCAh
bV9hbmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUtPmlzU2hhZG93Um9vdCgpKTsKKyNlbHNlCiAg
ICAgQVNTRVJUKCFtX2FuY2hvck5vZGUgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkp
OworI2VuZGlmCisKICAgICBBU1NFUlQoYW5jaG9yVHlwZSAhPSBQb3NpdGlvbklzT2Zmc2V0SW5B
bmNob3IpOwogICAgIEFTU0VSVCghKChhbmNob3JUeXBlID09IFBvc2l0aW9uSXNCZWZvcmVDaGls
ZHJlbiB8fCBhbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRlckNoaWxkcmVuKQogICAgICAgICAm
JiAobV9hbmNob3JOb2RlLT5pc1RleHROb2RlKCkgfHwgZWRpdGluZ0lnbm9yZXNDb250ZW50KG1f
YW5jaG9yTm9kZS5nZXQoKSkpKSk7CkBAIC0xMDEsNyArMTExLDEyIEBAIFBvc2l0aW9uOjpQb3Np
dGlvbihQYXNzUmVmUHRyPE5vZGU+IGFuY2hvck5vZGUsIGludCBvZmZzZXQsIEFuY2hvclR5cGUg
YW5jaG9yVHlwCiAgICAgLCBtX2FuY2hvclR5cGUoYW5jaG9yVHlwZSkKICAgICAsIG1faXNMZWdh
Y3lFZGl0aW5nUG9zaXRpb24oZmFsc2UpCiB7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAg
IEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVkKCkgfHwgIW1f
YW5jaG9yTm9kZSB8fCAhZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkg
fHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkpOworI2Vsc2UKICAgICBBU1NFUlQoIW1f
YW5jaG9yTm9kZSB8fCAhZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkg
fHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkpOworI2VuZGlmCisKICAgICBBU1NFUlQo
YW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOwogfQogCkBAIC0xNDMsNyAr
MTU4LDcgQEAgTm9kZSogUG9zaXRpb246OmNvbnRhaW5lck5vZGUoKSBjb25zdAogICAgICAgICBy
ZXR1cm4gbV9hbmNob3JOb2RlLmdldCgpOwogICAgIGNhc2UgUG9zaXRpb25Jc0JlZm9yZUFuY2hv
cjoKICAgICBjYXNlIFBvc2l0aW9uSXNBZnRlckFuY2hvcjoKLSAgICAgICAgcmV0dXJuIG1fYW5j
aG9yTm9kZS0+bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCk7CisgICAgICAgIHJldHVybiBm
aW5kUGFyZW50KG1fYW5jaG9yTm9kZS5nZXQoKSk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiAwOwpAQCAtMjAzLDcgKzIxOCw3IEBAIFBvc2l0aW9uIFBvc2l0
aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSBjb25zdAogICAgIAogICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBvbmx5IGJlIG5lY2Vzc2FyeSBmb3IgbGVnYWN5IHBvc2l0aW9ucywgYnV0
IGlzIGFsc28gbmVlZGVkIGZvciBwb3NpdGlvbnMgYmVmb3JlIGFuZCBhZnRlciBUYWJsZXMKICAg
ICBpZiAobV9vZmZzZXQgPD0gMCAmJiAobV9hbmNob3JUeXBlICE9IFBvc2l0aW9uSXNBZnRlckFu
Y2hvciAmJiBtX2FuY2hvclR5cGUgIT0gUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4pKSB7Ci0gICAg
ICAgIGlmIChtX2FuY2hvck5vZGUtPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpICYmIChl
ZGl0aW5nSWdub3Jlc0NvbnRlbnQobV9hbmNob3JOb2RlLmdldCgpKSB8fCBpc1RhYmxlRWxlbWVu
dChtX2FuY2hvck5vZGUuZ2V0KCkpKSkKKyAgICAgICAgaWYgKGZpbmRQYXJlbnQobV9hbmNob3JO
b2RlLmdldCgpKSAmJiAoZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkg
fHwgaXNUYWJsZUVsZW1lbnQobV9hbmNob3JOb2RlLmdldCgpKSkpCiAgICAgICAgICAgICByZXR1
cm4gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobV9hbmNob3JOb2RlLmdldCgpKTsKICAgICAg
ICAgcmV0dXJuIFBvc2l0aW9uKG1fYW5jaG9yTm9kZS5nZXQoKSwgMCwgUG9zaXRpb25Jc09mZnNl
dEluQW5jaG9yKTsKICAgICB9CkBAIC0zMTYsNyArMzMxLDcgQEAgUG9zaXRpb24gUG9zaXRpb246
OnByZXZpb3VzKFBvc2l0aW9uTW92ZVR5cGUgbW92ZVR5cGUpIGNvbnN0CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBuLT5ub25TaGFkb3dCb3VuZGFyeVBh
cmVudE5vZGUoKTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBmaW5kUGFyZW50KG4pOwog
ICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKQEAgLTM0OCw3ICszNjMs
NyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6bmV4dChQb3NpdGlvbk1vdmVUeXBlIG1vdmVUeXBlKSBj
b25zdAogICAgICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG4sIChtb3Zl
VHlwZSA9PSBDaGFyYWN0ZXIpID8gdW5jaGVja2VkTmV4dE9mZnNldChuLCBvKSA6IG8gKyAxKTsK
ICAgICB9CiAKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBuLT5ub25TaGFkb3dCb3VuZGFy
eVBhcmVudE5vZGUoKTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBmaW5kUGFyZW50KG4p
OwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKQEAgLTQ0MSwxNCAr
NDU2LDE0IEBAIGJvb2wgUG9zaXRpb246OmF0U3RhcnRPZlRyZWUoKSBjb25zdAogewogICAgIGlm
IChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuICFkZXByZWNhdGVk
Tm9kZSgpLT5ub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKSAmJiBtX29mZnNldCA8PSAwOwor
ICAgIHJldHVybiAhZmluZFBhcmVudChkZXByZWNhdGVkTm9kZSgpKSAmJiBtX29mZnNldCA8PSAw
OwogfQogCiBib29sIFBvc2l0aW9uOjphdEVuZE9mVHJlZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gIWRlcHJlY2F0ZWROb2Rl
KCktPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpICYmIG1fb2Zmc2V0ID49IGxhc3RPZmZz
ZXRGb3JFZGl0aW5nKGRlcHJlY2F0ZWROb2RlKCkpOworICAgIHJldHVybiAhZmluZFBhcmVudChk
ZXByZWNhdGVkTm9kZSgpKSAmJiBtX29mZnNldCA+PSBsYXN0T2Zmc2V0Rm9yRWRpdGluZyhkZXBy
ZWNhdGVkTm9kZSgpKTsKIH0KIAogaW50IFBvc2l0aW9uOjpyZW5kZXJlZE9mZnNldCgpIGNvbnN0
CkBAIC04MzQsNiArODQ5LDE4IEBAIGJvb2wgUG9zaXRpb246Om5vZGVJc1VzZXJTZWxlY3ROb25l
KE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSAmJiBub2Rl
LT5yZW5kZXJlcigpLT5zdHlsZSgpLT51c2VyU2VsZWN0KCkgPT0gU0VMRUNUX05PTkU7CiB9CiAK
K0NvbnRhaW5lck5vZGUqIFBvc2l0aW9uOjpmaW5kUGFyZW50KGNvbnN0IE5vZGUqIG5vZGUpCit7
CisgICAgLy8gRklYTUU6IFNlZSBodHRwOi8vd2ViLnVnLzgyNjk3CisKKyNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhZG93RE9NRW5hYmxl
ZCgpKQorICAgICAgICByZXR1cm4gbm9kZS0+cGFyZW50Tm9kZSgpOworI2VuZGlmCisKKyAgICBy
ZXR1cm4gbm9kZS0+bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCk7Cit9CisKIGJvb2wgUG9z
aXRpb246OmlzQ2FuZGlkYXRlKCkgY29uc3QKIHsKICAgICBpZiAoaXNOdWxsKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5oCmluZGV4IDRlMjQ0YTBkMmQwOGE1Mzk4YThmMTkzY2NlODlkMDZjMGJkZDI3Njgu
LjI3YzNmNDI5NzAzMThkNGViMGU4ZjI5NjJiMmU5ZTNlZWJiNjIxZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5oCkBAIC0xODksNiArMTg5LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgaGFz
UmVuZGVyZWROb25Bbm9ueW1vdXNEZXNjZW5kYW50c1dpdGhIZWlnaHQoUmVuZGVyT2JqZWN0Kik7
CiAgICAgc3RhdGljIGJvb2wgbm9kZUlzVXNlclNlbGVjdE5vbmUoTm9kZSopOworCisgICAgc3Rh
dGljIENvbnRhaW5lck5vZGUqIGZpbmRQYXJlbnQoY29uc3QgTm9kZSopOwogICAgIAogICAgIHZv
aWQgZGVidWdQb3NpdGlvbihjb25zdCBjaGFyKiBtc2cgPSAiIikgY29uc3Q7CiAKQEAgLTIwMyw2
ICsyMDUsNyBAQCBwcml2YXRlOgogCiAgICAgaW50IHJlbmRlcmVkT2Zmc2V0KCkgY29uc3Q7CiAK
KyAgICAKICAgICBQb3NpdGlvbiBwcmV2aW91c0NoYXJhY3RlclBvc2l0aW9uKEVBZmZpbml0eSkg
Y29uc3Q7CiAgICAgUG9zaXRpb24gbmV4dENoYXJhY3RlclBvc2l0aW9uKEVBZmZpbml0eSkgY29u
c3Q7CiAKQEAgLTI0NCwxMyArMjQ3LDEzIEBAIGlubGluZSBQb3NpdGlvbiBwb3NpdGlvbkluUGFy
ZW50QmVmb3JlTm9kZShjb25zdCBOb2RlKiBub2RlKQogICAgIC8vIEF0IGxlYXN0IG9uZSBjYWxs
ZXIgY3VycmVudGx5IGhpdHMgdGhpcyBBU1NFUlQgdGhvdWdoLCB3aGljaCBpbmRpY2F0ZXMKICAg
ICAvLyB0aGF0IHRoZSBjYWxsZXIgaXMgdHJ5aW5nIHRvIG1ha2UgYSBwb3NpdGlvbiByZWxhdGl2
ZSB0byBhIGRpc2Nvbm5lY3RlZCBub2RlICh3aGljaCBpcyBsaWtlbHkgYW4gZXJyb3IpCiAgICAg
Ly8gU3BlY2lmaWNhbGx5LCBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saWdhdHVyZS0wMDEuaHRt
bCBjcmFzaGVzIHdpdGggQVNTRVJUKG5vZGUtPnBhcmVudE5vZGUoKSkKLSAgICByZXR1cm4gUG9z
aXRpb24obm9kZS0+bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCksIG5vZGUtPm5vZGVJbmRl
eCgpLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKKyAgICByZXR1cm4gUG9z
aXRpb24oUG9zaXRpb246OmZpbmRQYXJlbnQobm9kZSksIG5vZGUtPm5vZGVJbmRleCgpLCBQb3Np
dGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKIH0KIAogaW5saW5lIFBvc2l0aW9uIHBv
c2l0aW9uSW5QYXJlbnRBZnRlck5vZGUoY29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICBBU1NFUlQo
bm9kZS0+bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCkpOwotICAgIHJldHVybiBQb3NpdGlv
bihub2RlLT5ub25TaGFkb3dCb3VuZGFyeVBhcmVudE5vZGUoKSwgbm9kZS0+bm9kZUluZGV4KCkg
KyAxLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKKyAgICBBU1NFUlQoUG9z
aXRpb246OmZpbmRQYXJlbnQobm9kZSkpOworICAgIHJldHVybiBQb3NpdGlvbihQb3NpdGlvbjo6
ZmluZFBhcmVudChub2RlKSwgbm9kZS0+bm9kZUluZGV4KCkgKyAxLCBQb3NpdGlvbjo6UG9zaXRp
b25Jc09mZnNldEluQW5jaG9yKTsKIH0KIAogLy8gcG9zaXRpb25CZWZvcmVOb2RlIGFuZCBwb3Np
dGlvbkFmdGVyTm9kZSByZXR1cm4gbmVpZ2hib3ItYW5jaG9yZWQgcG9zaXRpb25zLCBjb25zdHJ1
Y3Rpb24gaXMgTygxKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY0ZTNkZjFlNjQ3MzcxZDkzMjQ1MDFhYWJhZGRhNTQzNmMx
OGQ5NGQuLjEzMjdkZTY4OTdmZmMwOWYxODAzMDIyNWM5OTUyMWQ4ZmYwMWI4YmIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAxMi0wNS0wOCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUG9zaXRpb24gc2hvdWxkIGJlIGFibGUgdG8gaGF2ZSBTaGFk
b3dSb290IGFzIGEgY29udGFpbmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODIwMjEKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2Eu
CisKKyAgICAgICAgU2tpcHBlZCBub24tY2hyb21pdW0gcG9ydCBzaW5jZSBTSEFET1dfRE9NIGZs
YWcgaXMgbm90IGVuYWJsZWQgaW4gdGhvc2UgcGxhdGZvcm1zLgorICAgICAgICBXZSB3aWxsIGFk
ZCBidW5jaCBvZiB0ZXN0cyBmb3IgZWRpdGluZyBpbiBTaGFkb3cgRE9NIGludG8gZWRpdGluZy9z
aGFkb3cgbGF0ZXIsCisgICAgICAgIHNvIEkgYWRkZWQgdGhlIHdob2xlIGRpcmVjdG9yeSBuYW1l
IHRvIHRoZSBza2lwcGVkIGxpc3QuCisKKyAgICAgICAgKiBlZGl0aW5nL3NoYWRvdy9kb3VibGVj
bGljay1vbi1tZXRlci1pbi1zaGFkb3ctY3Jhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL3NoYWRvdy9kb3VibGVjbGljay1vbi1tZXRlci1pbi1zaGFkb3ctY3Jhc2gu
aHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zaGFkb3cvcmlnaHRjbGljay1vbi1tZXRl
ci1pbi1zaGFkb3ctY3Jhc2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L3NoYWRvdy9yaWdodGNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFzaC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3NoYWRvdy9zaGFkb3ctc2VsZWN0aW9uLW5vdC1leHBvcnRlZC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2hhZG93L3NoYWRvdy1zZWxl
Y3Rpb24tbm90LWV4cG9ydGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9T
a2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tp
cHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9y
bS93aW5jYWlyby9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9Ta2lwcGVkOgorCiAy
MDEyLTA1LTA4ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQg
c3R5bGVzaGVldCBpbmhlcml0YW5jZSBzdXBwb3J0IHRvIElGUkFNRV9TRUFNTEVTUwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvZG91YmxlY2xpY2stb24tbWV0ZXItaW4t
c2hhZG93LWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L2Rv
dWJsZWNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTIyNzIxOGU4YzAzNTdiMWI3OWM1ZWRmMTRmMzE4YTg2Y2I0MDAyYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L2RvdWJsZWNsaWNrLW9uLW1ldGVyLWlu
LXNoYWRvdy1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3QgZW5z
dXJlcyBjb250ZXh0IGNsaWNrIGFyb3VuZCBtZXRlciB3b24ndCBjcmFzaC4KKworUEFTUwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvZG91YmxlY2xpY2stb24tbWV0ZXIt
aW4tc2hhZG93LWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9kb3VibGVj
bGljay1vbi1tZXRlci1pbi1zaGFkb3ctY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmYyZTMyNGVh
NDYwYzk3NjcyZWJmYjUyZTIzN2Q5NGE3Y2NkMDU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9zaGFkb3cvZG91YmxlY2xpY2stb24tbWV0ZXItaW4tc2hhZG93LWNyYXNo
Lmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxwPlRoaXMg
dGVzdCBlbnN1cmVzIGNvbnRleHQgY2xpY2sgYXJvdW5kIG1ldGVyIHdvbid0IGNyYXNoLjwvcD4K
KzxkaXYgaWQ9J2NvbnRhaW5lcicgc3R5bGU9IndpZHRoOjEwMHB4OyBoZWlnaHQ6IDEwMHB4Ij48
L2Rpdj4KKzxwPlBBU1M8L3A+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9kb20vc2hhZG93L3Jl
c291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGluZy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciBjb250YWluZXIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJyk7Cit2YXIgc2hhZG93Um9vdCA9
IG5ldyBXZWJLaXRTaGFkb3dSb290KGNvbnRhaW5lcik7Cit2YXIgbWV0ZXIgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdtZXRlcicpOworc2hhZG93Um9vdC5hcHBlbmRDaGlsZChtZXRlcik7CisK
Ky8vIERvIGRvdWJsZWNsaWNrIGF0IHZhcmlvdXMgcG9pbnRzLgorZG91YmxlQ2xpY2sobWV0ZXIu
b2Zmc2V0TGVmdCwgbWV0ZXIub2Zmc2V0VG9wKTsKK2RvdWJsZUNsaWNrKG1ldGVyLm9mZnNldExl
ZnQgLSAxLCBtZXRlci5vZmZzZXRUb3ApOworZG91YmxlQ2xpY2sobWV0ZXIub2Zmc2V0TGVmdCwg
bWV0ZXIub2Zmc2V0VG9wIC0gMSk7Citkb3VibGVDbGljayhtZXRlci5vZmZzZXRMZWZ0IC0gMSwg
bWV0ZXIub2Zmc2V0VG9wIC0gMSk7Citkb3VibGVDbGljayhtZXRlci5vZmZzZXRMZWZ0ICsgMSwg
bWV0ZXIub2Zmc2V0VG9wKTsKK2RvdWJsZUNsaWNrKG1ldGVyLm9mZnNldExlZnQsIG1ldGVyLm9m
ZnNldFRvcCArIDEpOworZG91YmxlQ2xpY2sobWV0ZXIub2Zmc2V0TGVmdCArIDEsIG1ldGVyLm9m
ZnNldFRvcCArIDEpOworZG91YmxlQ2xpY2sobWV0ZXIub2Zmc2V0TGVmdCArIG1ldGVyLm9mZnNl
dFdpZHRoIC8gMiwgbWV0ZXIub2Zmc2V0VG9wICsgbWV0ZXIub2Zmc2V0SGVpZ2h0IC8gMik7Citk
b3VibGVDbGljayhtZXRlci5vZmZzZXRMZWZ0ICsgbWV0ZXIub2Zmc2V0V2lkdGggLSAxLCBtZXRl
ci5vZmZzZXRUb3AgKyBtZXRlci5vZmZzZXRIZWlnaHQgLSAxKTsKK2RvdWJsZUNsaWNrKG1ldGVy
Lm9mZnNldExlZnQgKyBtZXRlci5vZmZzZXRXaWR0aCArIDEsIG1ldGVyLm9mZnNldFRvcCArIG1l
dGVyLm9mZnNldEhlaWdodCArIDEpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9yaWdodGNsaWNrLW9uLW1ldGVyLWlu
LXNoYWRvdy1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9y
aWdodGNsaWNrLW9uLW1ldGVyLWluLXNoYWRvdy1jcmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTIyNzIxOGU4YzAzNTdiMWI3OWM1ZWRmMTRmMzE4YTg2Y2I0MDAyYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L3JpZ2h0Y2xpY2stb24tbWV0ZXItaW4t
c2hhZG93LWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1RoaXMgdGVzdCBlbnN1
cmVzIGNvbnRleHQgY2xpY2sgYXJvdW5kIG1ldGVyIHdvbid0IGNyYXNoLgorCitQQVNTCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9yaWdodGNsaWNrLW9uLW1ldGVyLWlu
LXNoYWRvdy1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvcmlnaHRjbGlj
ay1vbi1tZXRlci1pbi1zaGFkb3ctY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzIzODZhOTA0Y2Vk
MTUzMzFhMDE3MGVkNWZmNTMyYWRmYzQ2MTVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zaGFkb3cvcmlnaHRjbGljay1vbi1tZXRlci1pbi1zaGFkb3ctY3Jhc2guaHRt
bApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHA+VGhpcyB0ZXN0
IGVuc3VyZXMgY29udGV4dCBjbGljayBhcm91bmQgbWV0ZXIgd29uJ3QgY3Jhc2guPC9wPgorPGRp
diBpZD0nY29udGFpbmVyJyBzdHlsZT0id2lkdGg6MTAwcHg7IGhlaWdodDogMTAwcHgiPjwvZGl2
PgorPHA+UEFTUzwvcD4KKworPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZWRpdGluZy9lZGl0aW5nLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gY29udGV4dENsaWNrKHgs
IHkpIHsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRl
ci5jb250ZXh0Q2xpY2soKTsKK30KKwordmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb250YWluZXInKTsKK3ZhciBzaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRvd1Jv
b3QoY29udGFpbmVyKTsKK3ZhciBtZXRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ21ldGVy
Jyk7CitzaGFkb3dSb290LmFwcGVuZENoaWxkKG1ldGVyKTsKKworLy8gRG8gY29udGV4dCBjbGlj
ayBhdCB2YXJpb3VzIHBvaW50cy4KK2NvbnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0LCBtZXRl
ci5vZmZzZXRUb3ApOworY29udGV4dENsaWNrKG1ldGVyLm9mZnNldExlZnQgLSAxLCBtZXRlci5v
ZmZzZXRUb3ApOworY29udGV4dENsaWNrKG1ldGVyLm9mZnNldExlZnQsIG1ldGVyLm9mZnNldFRv
cCAtIDEpOworY29udGV4dENsaWNrKG1ldGVyLm9mZnNldExlZnQgLSAxLCBtZXRlci5vZmZzZXRU
b3AgLSAxKTsKK2NvbnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0ICsgMSwgbWV0ZXIub2Zmc2V0
VG9wKTsKK2NvbnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0LCBtZXRlci5vZmZzZXRUb3AgKyAx
KTsKK2NvbnRleHRDbGljayhtZXRlci5vZmZzZXRMZWZ0ICsgMSwgbWV0ZXIub2Zmc2V0VG9wICsg
MSk7Citjb250ZXh0Q2xpY2sobWV0ZXIub2Zmc2V0TGVmdCArIG1ldGVyLm9mZnNldFdpZHRoIC8g
MiwgbWV0ZXIub2Zmc2V0VG9wICsgbWV0ZXIub2Zmc2V0SGVpZ2h0IC8gMik7Citjb250ZXh0Q2xp
Y2sobWV0ZXIub2Zmc2V0TGVmdCArIG1ldGVyLm9mZnNldFdpZHRoIC0gMSwgbWV0ZXIub2Zmc2V0
VG9wICsgbWV0ZXIub2Zmc2V0SGVpZ2h0IC0gMSk7Citjb250ZXh0Q2xpY2sobWV0ZXIub2Zmc2V0
TGVmdCArIG1ldGVyLm9mZnNldFdpZHRoICsgMSwgbWV0ZXIub2Zmc2V0VG9wICsgbWV0ZXIub2Zm
c2V0SGVpZ2h0ICsgMSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L3NoYWRvdy1zZWxlY3Rpb24tbm90LWV4cG9ydGVk
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2hhZG93L3NoYWRvdy1zZWxlY3Rp
b24tbm90LWV4cG9ydGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDY3YmNkNmQ2NjFhMmQy
MzU3YWJiOTE5NGNjNTBiNGNhYzdjZGI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zaGFkb3cvc2hhZG93LXNlbGVjdGlvbi1ub3QtZXhwb3J0ZWQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTMgQEAKK1BBU1MgYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmFuY2hv
ck5vZGUpIGlzIHRydWUKK1BBU1MgYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9uLmZvY3VzTm9k
ZSkgaXMgdHJ1ZQorUEFTUyBhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uYW5jaG9yTm9kZSkg
aXMgdHJ1ZQorUEFTUyBhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uZm9jdXNOb2RlKSBpcyB0
cnVlCitQQVNTIGFzc2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5hbmNob3JOb2RlKSBpcyB0cnVl
CitQQVNTIGFzc2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5mb2N1c05vZGUpIGlzIHRydWUKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorVGhpcyB0ZXN0
IGVuc3VyZXMgc2hhZG93IHJvb3Qgd29uJ3QgZXhwb3NlIHRvIEpTIGxheWVyLgorCitCRUZPUkUK
K0FGVEVSCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NoYWRvdy9zaGFkb3ctc2Vs
ZWN0aW9uLW5vdC1leHBvcnRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zaGFkb3cvc2hh
ZG93LXNlbGVjdGlvbi1ub3QtZXhwb3J0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGIzYjEyMGRhMzZh
NWZkMDI1NWY2MjIxNjE3NWFiZDMyODg0YTNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zaGFkb3cvc2hhZG93LXNlbGVjdGlvbi1ub3QtZXhwb3J0ZWQuaHRtbApAQCAt
MCwwICsxLDgyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHByZSBpZD0iY29uc29sZSI+
PC9wcmU+CisKKzxwPlRoaXMgdGVzdCBlbnN1cmVzIHNoYWRvdyByb290IHdvbid0IGV4cG9zZSB0
byBKUyBsYXllci48cD4KKzxkaXYgaWQ9J2RpdjEnPkJFRk9SRTwvZGl2PgorPGRpdiBpZD0nY29u
dGFpbmVyJz5DT05UQUlORVI8L2Rpdj4KKzxkaXYgaWQ9J2RpdjQnPkFGVEVSPC9kaT4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2RvbS9zaGFkb3cvcmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29udGFpbmVyJyk7Cit2YXIgc2hhZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KGNvbnRhaW5lcik7CisKK3ZhciBkaXYyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CitkaXYyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdJTiBTSEFET1cg
VFJFRSAxJykpOwordmFyIGRpdjMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2Rp
djMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0lOIFNIQURPVyBUUkVFIDIn
KSk7CisKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoZGl2Mik7CitzaGFkb3dSb290LmFwcGVuZENo
aWxkKGRpdjMpOworCitmdW5jdGlvbiBtaWRYKGVsZW1lbnQpIHsKKyAgICByZXR1cm4gZWxlbWVu
dC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7Cit9CisKK2Z1bmN0aW9uIG1p
ZFkoZWxlbWVudCkgeworICAgIHJldHVybiBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zm
c2V0SGVpZ2h0IC8gMjsKK30KKworZnVuY3Rpb24gYXNzZXJ0Tm90SW5TaGFkb3coZWxlbWVudCkg
eworICAgIGlmIChlbGVtZW50ID09IGRpdjIgfHwgZWxlbWVudCA9PSBkaXYyLmZpcnN0Q2hpbGQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoZWxlbWVudCA9PSBkaXYzIHx8IGVsZW1l
bnQgPT0gZGl2My5maXJzdENoaWxkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAvLyBUcnkgc2VsZWN0
IGZyb20gb3V0c2lkZSBvZiBhIHNoYWRvdyBzdWJ0cmVlIHRvIGluc2lkZSBvZiBhIHNoYWRvdyBz
dWJ0cmVlLgorICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG1pZFgoZGl2MSksIG1pZFkoZGl2
MSkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKG1pZFgoZGl2MiksIG1pZFkoZGl2MikpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAo
KTsKKworICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgc2hv
dWxkQmUoJ2Fzc2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5hbmNob3JOb2RlKScsICd0cnVlJyk7
CisgICAgc2hvdWxkQmUoJ2Fzc2VydE5vdEluU2hhZG93KHNlbGVjdGlvbi5mb2N1c05vZGUpJywg
J3RydWUnKTsKKworICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTsKKworICAgIC8vIFRy
eSBzZWxlY3QgZnJvbSBpbnNpZGUgb2YgYSBzaGFkb3cgc3VidHJlZSB0byBvdXRzaWRlIG9mIGEg
c2hhZG93IHN1YnRyZWUuCisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8obWlkWChkaXYzKSwg
bWlkWShkaXYzKSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8obWlkWChkaXY0KSwgbWlkWShkaXY0KSk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOworCisgICAgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAg
IHNob3VsZEJlKCdhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uYW5jaG9yTm9kZSknLCAndHJ1
ZScpOworICAgIHNob3VsZEJlKCdhc3NlcnROb3RJblNoYWRvdyhzZWxlY3Rpb24uZm9jdXNOb2Rl
KScsICd0cnVlJyk7CisgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOworCisgICAgLy8g
VHJ5IHNlbGVjdCBpbnNpZGUgc2hhZG93IHN1YnRyZWVzLgorICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKG1pZFgoZGl2MiksIG1pZFkoZGl2MikpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93
bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKG1pZFgoZGl2MyksIG1pZFkoZGl2Mykp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAgIHNlbGVjdGlvbiA9IHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKTsKKyAgICBzaG91bGRCZSgnYXNzZXJ0Tm90SW5TaGFkb3coc2VsZWN0aW9u
LmFuY2hvck5vZGUpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnYXNzZXJ0Tm90SW5TaGFkb3co
c2VsZWN0aW9uLmZvY3VzTm9kZSknLCAndHJ1ZScpOworICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxS
YW5nZXMoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Nr
aXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAppbmRleCAxZTU0NDMxMzA1
ZGQ0YWNlODcxOWQyZTk4YTk1ZmMyMWQyYWU0OTg0Li5kZDJjNGU0NWNiMjA2MTdjZTc4NzY2NTQx
NmY2NmI0ZTM1YmQzN2NjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tp
cHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZApAQCAtMjM1LDYgKzIz
NSw3IEBAIGZhc3QvbWVkaWEvcHJpbnQtcmVzdG9yZXMtcHJldmlvdXMtbWVkaWF0eXBlLmh0bWwK
IAogIyBFTkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlzYWJsZWQKIGZhc3QvZG9tL3NoYWRvdworZWRp
dGluZy9zaGFkb3cKIAogIyBFTkFCTEUoREFUQUxJU1QpIGlzIGRpc2FibGVkCiBmYXN0L2Zvcm1z
L2RhdGFsaXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBl
Y3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dAppbmRleCA2YTkxZmZiNmI5ZjcyYzU1NmY4ZTljY2YxZjRmMmE5MGVjN2Q3ZTdkLi5jZGU0
MzFlOGI3NTQ4YTUxNzgyYjI1OGZlN2E4NTcxMDMzNmMwZGEyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTIzNiw2ICsyMzYsNyBAQCBC
VUdXS0dUSyBTS0lQIDogZmFzdC9yZWdpb25zL3N0eWxlLXNjb3BlZC1pbi1mbG93Lmh0bWwgPSBG
QUlMCiAKIC8vIEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KIEJVR1dLR1RLIFNLSVAg
OiBmYXN0L2RvbS9zaGFkb3cgPSBGQUlMCitCVUdXS0dUSyBTS0lQIDogZWRpdGluZy9zaGFkb3cg
PSBGQUlMCiAKIC8vIENTUyBSZWdpb25zIHN1cHBvcnQgbm90IHlldCBlbmFibGVkLgogQlVHV0s1
NzMxMiBTS0lQIDogZmFzdC9yZWdpb25zID0gRkFJTApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApp
bmRleCA5MjYwMjkwOGI3MjQ0ZmE3NGVmMjA1ODc5MzZjZGJmMjgxZTk0MTU2Li45ZWM1NTFmMzg4
YjRlMjlmNDAyNGY4OWM0MjY5Mzk5ZjYyMzA2MzVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBl
ZApAQCAtNDQ3LDYgKzQ0Nyw3IEBAIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4tZmxvdy5o
dG1sCiAKICMgRU5BQkxFKFNIQURPV19ET00pIGlzIGRpc2FibGVkLgogZmFzdC9kb20vc2hhZG93
CitlZGl0aW5nL3NoYWRvdwogCiAjIEpTQyBkb2VzIG5vdCBzdXBwb3J0IHNldElzb2xhdGVkV29y
bGRTZWN1cml0eU9yaWdpbiAoaHR0cDovL3dlYmtpdC5vcmcvYi82MTU0MCkKIGh0dHAvdGVzdHMv
c2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9jcm9zcy1vcmlnaW4teGhyLmh0bWwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9Ta2lwcGVkCmluZGV4IDI1OTRhYThiYTJkODM0MzRhNmQ5ZmFmYTczYTVkMmI3OWI1YzkwN2Yu
LjhlNTc4ZTY1NjU2ZGJiYzFjY2VjYTY3NDEwNjdhOGY0MzAxZTU3ZmQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvU2tpcHBlZApAQCAtMTY5LDYgKzE2OSw3IEBAIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQt
aW4tZmxvdy1vdmVycmlkZS1yZWdpb24tc3R5bGluZy5odG1sCiBmYXN0L3JlZ2lvbnMvc3R5bGUt
c2NvcGVkLWluLWZsb3cuaHRtbAogCiAjIEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4K
K2VkaXRpbmcvc2hhZG93CiBmYXN0L2RvbS9zaGFkb3cvYWNjZXNzLWtleS5odG1sCiBmYXN0L2Rv
bS9zaGFkb3cvYWRvcHQtbm9kZS13aXRoLXNoYWRvdy1yb290Lmh0bWwKIGZhc3QvZG9tL3NoYWRv
dy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXIuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZAppbmRleCBmZDM3Y2JjY2ViYzZiZGNhZmNmMDcxNWUzOGNlNjY0M2RlMTAzNzRmLi43M2E3MmM4
NDQ3NWM1OTk1YzIwZGU3ZTc3MmEzOTY5YjVjYmFmZTNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tp
cHBlZApAQCAtMTQ3Nyw2ICsxNDc3LDcgQEAgZmFzdC9yZWdpb25zL3N0eWxlLXNjb3BlZC1pbi1m
bG93LW92ZXJyaWRlLXJlZ2lvbi1zdHlsaW5nLmh0bWwKIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29w
ZWQtaW4tZmxvdy5odG1sCiAKICMgRU5BQkxFKFNIQURPV19ET00pIGlzIGRpc2FibGVkLgorZWRp
dGluZy9zaGFkb3cKIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtYXBpLmh0bWwKIGZh
c3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtb3V0c2lkZS1zaGFkb3cuaHRtbAogZmFzdC9k
b20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1vdXRzaWRlLXNoYWRvdy1zdHlsZS5odG1sCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAppbmRleCBmYjhkNGMxMDczYmM1YWQzOWRlYTAx
NzhmNjNiMjdmNzgzOGNmZTQwLi5mOTUxZjQ3MzU3MDBmZmViN2JhYWM0NGZlODJhM2YzOTYxZmEx
NzAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKQEAgLTE5ODMsNiArMTk4
Myw3IEBAIGZhc3QvcmVnaW9ucy9zdHlsZS1zY29wZWQtaW4tZmxvdy1vdmVycmlkZS1yZWdpb24t
c3R5bGluZy5odG1sCiBmYXN0L3JlZ2lvbnMvc3R5bGUtc2NvcGVkLWluLWZsb3cuaHRtbAogCiAj
IEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KK2VkaXRpbmcvc2hhZG93CiBmYXN0L2Rv
bS9zaGFkb3cvY29udGVudC1lbGVtZW50LWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVu
dC1lbGVtZW50LW91dHNpZGUtc2hhZG93Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVs
ZW1lbnQtaW4tbWVkaWEtZWxlbWVudC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93azIvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCmluZGV4
IDE1MzgxZWMyNzc3ZGIyMDRjMzE0ZGNkZjQzNWUwZDAyY2UwNDRlYmUuLjJlNzExNmZiZDY1MDlm
ZTY1ZDNhNTQwNGZjNjdjODA2MzY0YzdkZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3drMi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCkBA
IC0xMDkwLDYgKzEwOTAsNyBAQCBlZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLXVybC13aXRo
LXN0eWxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9jcmVhdGUtY29udGVudC1lbGVtZW50Lmh0bWwK
IAogIyBFTkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlzYWJsZWQuCitlZGl0aW5nL3NoYWRvdwogZmFz
dC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L2Nv
bnRlbnQtZWxlbWVudC1vdXRzaWRlLXNoYWRvdy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvY29udGVu
dC1lbGVtZW50LW91dHNpZGUtc2hhZG93LXN0eWxlLmh0bWwK
</data>

          </attachment>
      

    </bug>

</bugzilla>