<?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>48980</bug_id>
          
          <creation_ts>2010-11-04 00:06:43 -0700</creation_ts>
          <short_desc>Implement form validation message UI</short_desc>
          <delta_ts>2011-01-13 22:25:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>31718</dependson>
    
    <dependson>46595</dependson>
    
    <dependson>48697</dependson>
          <blocked>28649</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>ap</cc>
    
    <cc>arv</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>mjs</cc>
    
    <cc>morrita</cc>
    
    <cc>peter</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>304508</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-04 00:06:43 -0700</bug_when>
    <thetext>Implement form validation message UI by shadow DOM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304533</commentid>
    <comment_count>1</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-04 01:50:36 -0700</bug_when>
    <thetext>Add Morita-san because the patch will change ShadowElement.{cpp.h}.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304534</commentid>
    <comment_count>2</comment_count>
      <attachid>72916</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-04 01:51:36 -0700</bug_when>
    <thetext>Created attachment 72916
Validation message appearance by actual code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304535</commentid>
    <comment_count>3</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-04 01:52:49 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=72916) [details]
&gt; Validation message appearance by actual code

This is &lt;input type=url title=&quot;Specify URL&quot;&gt; with input.validaity.typeMismatch==true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304537</commentid>
    <comment_count>4</comment_count>
      <attachid>72917</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-04 02:15:53 -0700</bug_when>
    <thetext>Created attachment 72917
Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304619</commentid>
    <comment_count>5</comment_count>
      <attachid>72917</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-04 06:23:00 -0700</bug_when>
    <thetext>Comment on attachment 72917
Patch 1

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

&gt; WebCore/html/ValidationMessage.cpp:116
&gt; +    // FIXME: Adjust the bubble location.

I thought we needed to update the bubble location periodically in order to follow the target element location.  But without the location adjustment (the curent code),
 - The default bubble position is nice.  It&apos;s put on the bottom of the target element.
 - If the target element is moved, the bubble automatically follows it.

So, I think we don&apos;t need to adjust the bubble location now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305089</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2010-11-04 18:43:30 -0700</bug_when>
    <thetext>Attachment 72917 did not build on win:
Build output: http://queues.webkit.org/results/5236008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305106</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-04 19:37:24 -0700</bug_when>
    <thetext>Attachment 72917 did not build on win:
Build output: http://queues.webkit.org/results/5343006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305130</commentid>
    <comment_count>8</comment_count>
      <attachid>73033</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-04 21:25:18 -0700</bug_when>
    <thetext>Created attachment 73033
Patch 2 (Windows build fix)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308716</commentid>
    <comment_count>9</comment_count>
      <attachid>73033</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-11-12 12:51:49 -0800</bug_when>
    <thetext>Comment on attachment 73033
Patch 2 (Windows build fix)

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

&gt; WebCore/html/ValidationMessage.cpp:112
&gt; +    renderer-&gt;style()-&gt;setOpacity(0.9f);

Is there a reason why this is not part of the css?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309147</commentid>
    <comment_count>10</comment_count>
      <attachid>73033</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-14 17:44:18 -0800</bug_when>
    <thetext>Comment on attachment 73033
Patch 2 (Windows build fix)

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

&gt;&gt; WebCore/html/ValidationMessage.cpp:112
&gt;&gt; +    renderer-&gt;style()-&gt;setOpacity(0.9f);
&gt; 
&gt; Is there a reason why this is not part of the css?

Ah, It&apos;s the remains of attempting to use CSS transition.  I&apos;ll move it to html.css.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309152</commentid>
    <comment_count>11</comment_count>
      <attachid>73033</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-14 18:19:11 -0800</bug_when>
    <thetext>Comment on attachment 73033
Patch 2 (Windows build fix)

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

I know you want to get the validation messages shipped, but I worry that the further use of this pattern will bring more subtle crashes. How about we try to first finish bug 48698 and then tackle this again?

&gt; WebCore/ChangeLog:20
&gt; +        new behavior is strongly timing-dependent.

How will we test this?

&gt; WebCore/html/ValidationMessage.h:64
&gt; +    RefPtr&lt;HTMLElement&gt; m_bubble;
&gt; +    RefPtr&lt;HTMLElement&gt; m_bubbleTopOuter;
&gt; +    RefPtr&lt;HTMLElement&gt; m_bubbleTopInner;
&gt; +    RefPtr&lt;HTMLElement&gt; m_bubbleMessage;

I am very concerned that we keep repeating the anti-pattern where the shadow DOM elements are hung off RenderObjects or in this case, a random object -- all at the same time as I am actively trying to eliminate it. Given that ValidationMessage&apos;s lifetime is tied to that of HTMLFormControlElement, this seems only marginally more sane.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309176</commentid>
    <comment_count>12</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-14 20:59:09 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 73033 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73033&amp;action=review
&gt; 
&gt; I know you want to get the validation messages shipped, but I worry that the further use of this pattern will bring more subtle crashes. How about we try to first finish bug 48698 and then tackle this again?

Do you have estimation when bug 46698 is completed?

&gt; &gt; WebCore/ChangeLog:20
&gt; &gt; +        new behavior is strongly timing-dependent.
&gt; 
&gt; How will we test this?

We need a manual test, or need to implement a way to stop a timer in DRT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309319</commentid>
    <comment_count>13</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-11-15 09:32:52 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 73033 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73033&amp;action=review
&gt; &gt; 
&gt; &gt; I know you want to get the validation messages shipped, but I worry that the further use of this pattern will bring more subtle crashes. How about we try to first finish bug 48698 and then tackle this again?
&gt; 
&gt; Do you have estimation when bug 46698 is completed?

I am actively working on it, hoping to have the basic framework completed in a couple of weeks. I have a patch that converts the slider to use the &quot;natural shadow DOM&quot; in bug 44907, but this patch is too large so I am breaking it up into smaller bits.

&gt; 
&gt; &gt; &gt; WebCore/ChangeLog:20
&gt; &gt; &gt; +        new behavior is strongly timing-dependent.
&gt; &gt; 
&gt; &gt; How will we test this?
&gt; 
&gt; We need a manual test, or need to implement a way to stop a timer in DRT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310098</commentid>
    <comment_count>14</comment_count>
      <attachid>73033</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-16 19:30:33 -0800</bug_when>
    <thetext>Comment on attachment 73033
Patch 2 (Windows build fix)

ok, I&apos;ll wait for Dimitri&apos;s changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332941</commentid>
    <comment_count>15</comment_count>
      <attachid>78660</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-01-12 00:10:44 -0800</bug_when>
    <thetext>Created attachment 78660
Patch 3 (follow recent shadow DOM changes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333089</commentid>
    <comment_count>16</comment_count>
      <attachid>78660</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-12 07:59:56 -0800</bug_when>
    <thetext>Comment on attachment 78660
Patch 3 (follow recent shadow DOM changes)

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

Yay, first clean-slate new shadow DOM implementation! Comments below:

&gt; Source/WebCore/html/ValidationMessage.cpp:77
&gt; +    m_bubbleMessage-&gt;removeAllChildren();

Why do you need this?

&gt; Source/WebCore/html/ValidationMessage.cpp:118
&gt; +    RenderObject* hostRenderer = host-&gt;renderer();
&gt; +    ASSERT(hostRenderer);

This should not be necessary anymore.

&gt; Source/WebCore/html/ValidationMessage.cpp:121


Be careful here. Until we have a better API to apply multiple shadows, you will be clobbering whatever was there before. And most inputs will have something there. Soo... we probably need to invent some way to _add_ a validation message, not replace existing shadow DOM with it.

&gt; Source/WebCore/html/ValidationMessage.cpp:127
&gt; +    host-&gt;setShadowRoot(m_bubble);
&gt; +    RefPtr&lt;RenderStyle&gt; style = doc-&gt;styleSelector()-&gt;styleForElement(m_bubble.get(), hostRenderer-&gt;style(), false);
&gt; +    m_bubble-&gt;setRenderer(m_bubble-&gt;createRenderer(hostRenderer-&gt;renderArena(), style.get()));
&gt; +    m_bubble-&gt;renderer()-&gt;setStyle(style.release());
&gt; +    m_bubble-&gt;setAttached();
&gt; +    m_bubble-&gt;setInDocument();
&gt; +    hostRenderer-&gt;addChild(m_bubble-&gt;renderer());

You shouldn&apos;t need any of this anymore.

&gt; Source/WebCore/html/ValidationMessage.cpp:133
&gt; +    // FIXME: We need to use different qualified names for the following three
&gt; +    // elements. CSSStyleSelector has a problem that each of elements with the
&gt; +    // same hierarchy and different pseudo IDs uses the style of the pseudo ID
&gt; +    // for the first element.

This sounds like a bug we should fix early on, not work around it.

&gt; Source/WebCore/html/ValidationMessage.cpp:158
&gt; +        m_bubble-&gt;detach();

Shouldn&apos;t need this anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334094</commentid>
    <comment_count>17</comment_count>
      <attachid>78886</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-01-13 20:42:42 -0800</bug_when>
    <thetext>Created attachment 78886
Patch 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334095</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-13 20:45:27 -0800</bug_when>
    <thetext>Attachment 78886 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/css/CSSStyleSelector.cpp:984:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334097</commentid>
    <comment_count>19</comment_count>
      <attachid>78660</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-01-13 20:50:56 -0800</bug_when>
    <thetext>Comment on attachment 78660
Patch 3 (follow recent shadow DOM changes)

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

Thank you for reviewing.

&gt;&gt; Source/WebCore/html/ValidationMessage.cpp:77
&gt;&gt; +    m_bubbleMessage-&gt;removeAllChildren();
&gt; 
&gt; Why do you need this?

We have a code path updating validation message without building the bubble DOM tree.
We need to erase the previous validation message in that case.

&gt;&gt; Source/WebCore/html/ValidationMessage.cpp:121
&gt;&gt; +    host-&gt;setShadowRoot(m_bubble);
&gt; 
&gt; Be careful here. Until we have a better API to apply multiple shadows, you will be clobbering whatever was there before. And most inputs will have something there. Soo... we probably need to invent some way to _add_ a validation message, not replace existing shadow DOM with it.

Ah, right.
Actually, this code didn&apos;t work with your type=range change.
I have updated the code so that it works even if the host already has a shadowRoot.

&gt;&gt; Source/WebCore/html/ValidationMessage.cpp:127
&gt;&gt; +    hostRenderer-&gt;addChild(m_bubble-&gt;renderer());
&gt; 
&gt; You shouldn&apos;t need any of this anymore.

I tried without these lines, and unfortunately it didn&apos;t work.
RenderTextControl::canHaveChildren() returns false.  So Node::createRenderIfNeeded() didn&apos;t create a renderer.  I have change Node::createRenderIfNeeded() so that it always allows child renderers for a shadow root.

&gt;&gt; Source/WebCore/html/ValidationMessage.cpp:133
&gt;&gt; +    // for the first element.
&gt; 
&gt; This sounds like a bug we should fix early on, not work around it.

Fixed.

&gt;&gt; Source/WebCore/html/ValidationMessage.cpp:158
&gt;&gt; +        m_bubble-&gt;detach();
&gt; 
&gt; Shouldn&apos;t need this anymore.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334100</commentid>
    <comment_count>20</comment_count>
      <attachid>78886</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-13 21:21:39 -0800</bug_when>
    <thetext>Comment on attachment 78886
Patch 4

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

Let&apos;s give it a spin. I am not sure yet whether the design with the holder class (ValidationMessage) is what we should use, but I don&apos;t know for sure. And please appease the style elf. He&apos;s angry.

&gt; Source/WebCore/css/CSSStyleSelector.cpp:984
&gt; +            (s-&gt;shadowPseudoId() == m_element-&gt;shadowPseudoId()) &amp;&amp;

Yay! Awesome.

&gt; Source/WebCore/dom/Node.cpp:1384
&gt; +    if (parentRenderer &amp;&amp; (parentRenderer-&gt;canHaveChildren() || isShadowRoot()) &amp;&amp; parent-&gt;childShouldCreateRenderer(this)) {

This is wrong, because we do need to respect canHaveChildren() on the renderer. Or do we? This is an interesting question. Can you at least put a FIXME at the top and file a bug to investigate this. So far, this is still a hack.

&gt; Source/WebCore/html/ValidationMessage.cpp:120
&gt; +    // FIXME: We need a way to host multiple shadow roots in a single node.

In XBL2, this is solved with inheritance, not multiple shadow roots. But yeah, this looks like a hack.

&gt; Source/WebCore/html/ValidationMessage.cpp:125
&gt; +        m_bubble-&gt;attach();

Shouldn&apos;t need this anymore. All attachment/detachment is done through the standard means. Perhaps we could just setNeedsStyleRecalc or something like that? At least put a FIXME here to investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334120</commentid>
    <comment_count>21</comment_count>
      <attachid>78886</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-01-13 22:24:45 -0800</bug_when>
    <thetext>Comment on attachment 78886
Patch 4

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

Thank you!
Landed with some modifications: http://trac.webkit.org/changeset/75770

&gt;&gt; Source/WebCore/dom/Node.cpp:1384
&gt;&gt; +    if (parentRenderer &amp;&amp; (parentRenderer-&gt;canHaveChildren() || isShadowRoot()) &amp;&amp; parent-&gt;childShouldCreateRenderer(this)) {
&gt; 
&gt; This is wrong, because we do need to respect canHaveChildren() on the renderer. Or do we? This is an interesting question. Can you at least put a FIXME at the top and file a bug to investigate this. So far, this is still a hack.

I have filed a bug: https://bugs.webkit.org/show_bug.cgi?id=52423
and added a comment to the code.

&gt;&gt; Source/WebCore/html/ValidationMessage.cpp:120
&gt;&gt; +    // FIXME: We need a way to host multiple shadow roots in a single node.
&gt; 
&gt; In XBL2, this is solved with inheritance, not multiple shadow roots. But yeah, this looks like a hack.

I updated the comment.

&gt;&gt; Source/WebCore/html/ValidationMessage.cpp:125
&gt;&gt; +        m_bubble-&gt;attach();
&gt; 
&gt; Shouldn&apos;t need this anymore. All attachment/detachment is done through the standard means. Perhaps we could just setNeedsStyleRecalc or something like that? At least put a FIXME here to investigate.

I add a FIXME comment.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>72916</attachid>
            <date>2010-11-04 01:51:36 -0700</date>
            <delta_ts>2010-11-04 01:51:36 -0700</delta_ts>
            <desc>Validation message appearance by actual code</desc>
            <filename>validation-message-safari.png</filename>
            <type>image/png</type>
            <size>12802</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72917</attachid>
            <date>2010-11-04 02:15:53 -0700</date>
            <delta_ts>2010-11-04 21:25:12 -0700</delta_ts>
            <desc>Patch 1</desc>
            <filename>bug-48980-20101104181551.patch</filename>
            <type>text/plain</type>
            <size>19660</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjBhNzdlZGFlYmM0Mzg3YzYwM2I4ZjE1OTlmZTU4MWQyNWZhY2I4MC4uMmNjMWVhZTY0Y2FmZWVl
YWNkZWNkODAxMjFkMDZkNTczOGVlM2FlMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAxMC0xMS0wNCAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdl
IFVJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODk4
MAorCisgICAgICAgICogQWRkIGZvdXIgaW50ZXJuYWwgcHNldWRvIHNlbGVjdG9yczoKKyAgICAg
ICAgICAtIC13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUKKyAgICAgICAgICAtIC13ZWJraXQtdmFs
aWRhdGlvbi1idWJibGUtbWVzc2FnZQorICAgICAgICAgIC0gLXdlYmtpdC12YWxpZGF0aW9uLWJ1
YmJsZS10b3Atb3V0ZXItYXJyb3cKKyAgICAgICAgICAtIC13ZWJraXQtdmFsaWRhdGlvbi1idWJi
bGUtdG9wLWlubmVyLWFycm93CisgICAgICAgICogQWRkIFNoYWRvd1NpbXBsZUVsZW1lbnQKKyAg
ICAgICAgICBUaGlzIGlzIHNpbWlsYXIgdG8gU2hhZG93QmxvY2tFbGVtZW50IGV4Y2VwdCBTaGFk
b3dTaW1wbGVFbGVtZW50IGlzIG5vdAorICAgICAgICAgIGEgYmxvY2sgZWxlbWVudC4KKyAgICAg
ICAgKiBJbXBsZW1lbnQgVmFsaWRhdGlvbk1lc3NhZ2UgZnVuY3Rpb25zCisgICAgICAgICAgU2hv
dyB0aGUgbWVzc2FnZSBmb3IgPHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycz4gLyAyMC4wIHNlY29u
ZHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlIG5ldyBiZWhhdmlvciBpcyBz
dHJvbmdseSB0aW1pbmctZGVwZW5kZW50LgorCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpwc2V1ZG9JZCk6CisgICAgICAgIChX
ZWJDb3JlOjpuYW1lVG9Qc2V1ZG9UeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVj
dG9yOjpleHRyYWN0UHNldWRvVHlwZSk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6Cisg
ICAgICAgICogY3NzL2h0bWwuY3NzOgorICAgICAgICAoOjotd2Via2l0LXZhbGlkYXRpb24tYnVi
YmxlKToKKyAgICAgICAgKDo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1tZXNzYWdlKToKKyAg
ICAgICAgKDo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS10b3Atb3V0ZXItYXJyb3cpOgorICAg
ICAgICAoOjotd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLXRvcC1pbm5lci1hcnJvdyk6CisgICAg
ICAgICogaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWYWxp
ZGF0aW9uTWVzc2FnZTo6VmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VmFs
aWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlv
bk1lc3NhZ2U6OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6
VmFsaWRhdGlvbk1lc3NhZ2U6OmhpZGVNZXNzYWdlKToKKyAgICAgICAgKiBodG1sL1ZhbGlkYXRp
b25NZXNzYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1NoYWRvd0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93U2ltcGxlRWxlbWVudDo6U2hhZG93U2ltcGxlRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dTaW1wbGVFbGVtZW50OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93U2ltcGxlRWxlbWVudDo6Y3JlYXRlRm9yUGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dTaW1wbGVFbGVtZW50Ojppbml0aWFsaXplRm9yUGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dTaW1wbGVFbGVtZW50OjpjcmVhdGVTdHlsZUZvclBhcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93QmxvY2tFbGVtZW50OjpTaGFkb3dCbG9ja0VsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93QmxvY2tFbGVtZW50Ojp1cGRhdGVTdHlsZUZvclBh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93QmxvY2tFbGVtZW50OjpjcmVhdGVGb3JQYXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Jsb2NrRWxlbWVudDo6Y3JlYXRlU3R5bGVGb3JQ
YXJ0KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2hhZG93RWxlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93RWxlbWVudDo6c2hhZG93UGFyZW50Tm9kZSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmg6CisKIDIwMTAtMTEtMDMgIEtlbnQgVGFt
dXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkg
R2xhemtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCBmYjhmNjk1YmQ3YjRjOWU1YmMzY2IwZTNhNDIy
MzUwNDJlOGNjZTY3Li5jOTk4Nzk1YjBmMWYxYWU3OTU0MTA4ZWU4YWQ1NGExYzY5MGJhNzg2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3IuY3BwCkBAIC0yNTQsNiArMjU0LDE1IEBAIFBzZXVkb0lkIENTU1NlbGVjdG9y
Ojpwc2V1ZG9JZChQc2V1ZG9UeXBlIHR5cGUpCiAgICAgY2FzZSBQc2V1ZG9GdWxsU2NyZWVuRG9j
dW1lbnQ6CiAgICAgICAgIHJldHVybiBGVUxMX1NDUkVFTl9ET0NVTUVOVDsKICNlbmRpZgorCisg
ICAgY2FzZSBQc2V1ZG9WYWxpZGF0aW9uQnViYmxlOgorICAgICAgICByZXR1cm4gVkFMSURBVElP
Tl9CVUJCTEU7CisgICAgY2FzZSBQc2V1ZG9WYWxpZGF0aW9uQnViYmxlTWVzc2FnZToKKyAgICAg
ICAgcmV0dXJuIFZBTElEQVRJT05fQlVCQkxFX01FU1NBR0U7CisgICAgY2FzZSBQc2V1ZG9WYWxp
ZGF0aW9uQnViYmxlVG9wSW5uZXI6CisgICAgICAgIHJldHVybiBWQUxJREFUSU9OX0JVQkJMRV9U
T1BfSU5ORVI7CisgICAgY2FzZSBQc2V1ZG9WYWxpZGF0aW9uQnViYmxlVG9wT3V0ZXI6CisgICAg
ICAgIHJldHVybiBWQUxJREFUSU9OX0JVQkJMRV9UT1BfT1VURVI7CiAgICAgICAgICAgICAKICAg
ICBjYXNlIFBzZXVkb0lucHV0TGlzdEJ1dHRvbjoKICNpZiBFTkFCTEUoREFUQUxJU1QpCkBAIC00
MTcsNiArNDI2LDEwIEBAIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxl
Y3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5cGVNYXAoCiAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIHNlbGVjdGlvbiwgKCJzZWxlY3Rpb24iKSk7CiAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNsaWRlclRodW1iLCAoIi13ZWJraXQtc2xp
ZGVyLXRodW1iIikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB0YXJn
ZXQsICgidGFyZ2V0IikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCB2
YWxpZGF0aW9uQnViYmxlLCAoIi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUiKSk7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHZhbGlkYXRpb25CdWJibGVNZXNzYWdlLCAo
Ii13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtbWVzc2FnZSIpKTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgdmFsaWRhdGlvbkJ1YmJsZVRvcElubmVyLCAoIi13ZWJraXQt
dmFsaWRhdGlvbi1idWJibGUtdG9wLWlubmVyLWFycm93IikpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXRvbWljU3RyaW5nLCB2YWxpZGF0aW9uQnViYmxlVG9wT3V0ZXIsICgiLXdlYmtpdC12
YWxpZGF0aW9uLWJ1YmJsZS10b3Atb3V0ZXItYXJyb3ciKSk7CiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIHZpc2l0ZWQsICgidmlzaXRlZCIpKTsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgd2luZG93SW5hY3RpdmUsICgid2luZG93LWluYWN0aXZl
IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBkZWNyZW1lbnQsICgi
ZGVjcmVtZW50IikpOwpAQCAtNTQ0LDYgKzU1NywxMCBAQCBzdGF0aWMgSGFzaE1hcDxBdG9taWNT
dHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGU+KiBuYW1lVG9Qc2V1ZG9UeXBlTWFw
KAogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoc2VsZWN0aW9uLmltcGwoKSwgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb1NlbGVjdGlvbik7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChz
bGlkZXJUaHVtYi5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9TbGlkZXJUaHVtYik7CiAgICAg
ICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldCh0YXJnZXQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNl
dWRvVGFyZ2V0KTsKKyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KHZhbGlkYXRpb25CdWJi
bGUuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvVmFsaWRhdGlvbkJ1YmJsZSk7CisgICAgICAg
IG5hbWVUb1BzZXVkb1R5cGUtPnNldCh2YWxpZGF0aW9uQnViYmxlTWVzc2FnZS5pbXBsKCksIENT
U1NlbGVjdG9yOjpQc2V1ZG9WYWxpZGF0aW9uQnViYmxlTWVzc2FnZSk7CisgICAgICAgIG5hbWVU
b1BzZXVkb1R5cGUtPnNldCh2YWxpZGF0aW9uQnViYmxlVG9wSW5uZXIuaW1wbCgpLCBDU1NTZWxl
Y3Rvcjo6UHNldWRvVmFsaWRhdGlvbkJ1YmJsZVRvcElubmVyKTsKKyAgICAgICAgbmFtZVRvUHNl
dWRvVHlwZS0+c2V0KHZhbGlkYXRpb25CdWJibGVUb3BPdXRlci5pbXBsKCksIENTU1NlbGVjdG9y
OjpQc2V1ZG9WYWxpZGF0aW9uQnViYmxlVG9wT3V0ZXIpOwogICAgICAgICBuYW1lVG9Qc2V1ZG9U
eXBlLT5zZXQodmlzaXRlZC5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9WaXNpdGVkKTsKICAg
ICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGZpcnN0UGFnZS5pbXBsKCksIENTU1NlbGVjdG9y
OjpQc2V1ZG9GaXJzdFBhZ2UpOwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQobGVmdFBh
Z2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvTGVmdFBhZ2UpOwpAQCAtNjI5LDYgKzY0Niwx
MCBAQCB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0CiAgICAgY2Fz
ZSBQc2V1ZG9TZWFyY2hSZXN1bHRzQnV0dG9uOgogICAgIGNhc2UgUHNldWRvU2VsZWN0aW9uOgog
ICAgIGNhc2UgUHNldWRvU2xpZGVyVGh1bWI6CisgICAgY2FzZSBQc2V1ZG9WYWxpZGF0aW9uQnVi
YmxlOgorICAgIGNhc2UgUHNldWRvVmFsaWRhdGlvbkJ1YmJsZU1lc3NhZ2U6CisgICAgY2FzZSBQ
c2V1ZG9WYWxpZGF0aW9uQnViYmxlVG9wSW5uZXI6CisgICAgY2FzZSBQc2V1ZG9WYWxpZGF0aW9u
QnViYmxlVG9wT3V0ZXI6CiAgICAgICAgIGVsZW1lbnQgPSB0cnVlOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFBzZXVkb1Vua25vd246CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvci5oIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCAwMGUyM2I5NGVmNDMxZWJk
NjVmZTc4NGFkYWVmNjYzYjE1MTE2ODRmLi4zOTk0YWI2ZmZjMWQ0NWFiZGIzMjUyYWNlYWM2YWY2
M2IzOWE1ZGNhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTIyMSw2ICsyMjEsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgUHNldWRvRnVsbFNjcmVlbiwKICAgICAgICAgICAgIFBzZXVk
b0Z1bGxTY3JlZW5Eb2N1bWVudCwKICNlbmRpZgorICAgICAgICAgICAgUHNldWRvVmFsaWRhdGlv
bkJ1YmJsZSwKKyAgICAgICAgICAgIFBzZXVkb1ZhbGlkYXRpb25CdWJibGVNZXNzYWdlLAorICAg
ICAgICAgICAgUHNldWRvVmFsaWRhdGlvbkJ1YmJsZVRvcElubmVyLAorICAgICAgICAgICAgUHNl
dWRvVmFsaWRhdGlvbkJ1YmJsZVRvcE91dGVyLAogICAgICAgICB9OwogCiAgICAgICAgIGVudW0g
TWFyZ2luQm94VHlwZSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9odG1sLmNzcyBiL1dlYkNv
cmUvY3NzL2h0bWwuY3NzCmluZGV4IDAyZmE2MjBiNzQ5MzI1YzEyYjJmMjg2ODIxNWY3ZDRlMDNi
Y2U2NmEuLjNmYWVjYzUwYmIyMGNkOGUxZTZjNGMxYmMwNmIxZGRjZmUzYjJiYzQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvY3NzL2h0bWwuY3NzCisrKyBiL1dlYkNvcmUvY3NzL2h0bWwuY3NzCkBAIC01
MzAsNiArNTMwLDU4IEBAIG9wdGlvbiB7CiAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKIH0KIAor
LyogZm9ybSB2YWxpZGF0aW9uIG1lc3NhZ2UgYnViYmxlICovCisKKzo6LXdlYmtpdC12YWxpZGF0
aW9uLWJ1YmJsZSB7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgei1pbmRleDogMTAwMDA7IC8q
IHNpZ25lZCBpbnQgKi8KKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgb3BhY2l0eTogMTsK
KyAgICBsaW5lLWhlaWdodDogMHB4OworICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAw
LjVzIGVhc2U7Cit9CisKKzo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1tZXNzYWdlIHsKKyAg
ICBkaXNwbGF5OiBibG9jazsKKyAgICBmb250OiBtZXNzYWdlLWJveDsKKyAgICBtaW4td2lkdGg6
IDUwcHg7CisgICAgbWF4LXdpZHRoOiAyMDBweDsKKyAgICBib3JkZXI6IHNvbGlkIDJweCBibGFj
azsKKyAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxl
ZnQgYm90dG9tLCBmcm9tKCNmOWY5ZmIpLCB0bygjZTRlNGYwKSk7CisgICAgcGFkZGluZzogOHB4
OworICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogOHB4OworICAgIC13ZWJraXQtYm94LXNoYWRv
dzogNHB4IDRweCA0cHggcmdiYSgyMDQsMjA0LDIwNCwwLjcpOworfQorCis6Oi13ZWJraXQtdmFs
aWRhdGlvbi1idWJibGUtdG9wLW91dGVyLWFycm93IHsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIGxlZnQ6IDE0cHg7CisgICAgaGVpZ2h0
OiAwOworICAgIHdpZHRoOiAwOworICAgIGJvcmRlci1zdHlsZTogc29saWQ7CisgICAgYm9yZGVy
LXdpZHRoOiAxNHB4OworICAgIGJvcmRlci1ib3R0b20tY29sb3I6IGJsYWNrOworICAgIGJvcmRl
ci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYm9yZGVyLXRvcC13aWR0aDogMDsKKyAg
ICBib3JkZXItbGVmdC13aWR0aDogMDsKK30KKworOjotd2Via2l0LXZhbGlkYXRpb24tYnViYmxl
LXRvcC1pbm5lci1hcnJvdyB7CisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIGhlaWdo
dDogMDsKKyAgICB3aWR0aDogMDsKKyAgICBib3JkZXItc3R5bGU6IHNvbGlkOworICAgIGJvcmRl
ci13aWR0aDogMTBweDsgLyogPG91dGVyIHdob2xlIHdpZHRoPiAtIDxtZXNzYWdlIGJvcmRlciB3
aWR0aD4gKiAyICovCisgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2Y5ZjlmYjsKKyAgICBib3Jk
ZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50OworICAgIGJvcmRlci10b3Atd2lkdGg6IDA7Cisg
ICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHRv
cDogMnB4OyAvKiA8bWVzc2FnZSBib3JkZXIgd2lkdGg+ICovCisgICAgbGVmdDogMnB4OyAvKiA8
b3V0ZXIgcG9zaXRpb24+ICsgPG1lc3NhZ2UgYm9yZGVyIHdpZHRoPiAtIDxvdXRlciB3aG9sZSB3
aWR0aD4gICovCit9CisKIC8qIG1ldGVyICovCiAKIG1ldGVyIHsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAgYi9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1l
c3NhZ2UuY3BwCmluZGV4IGQzMjkxN2VmOWNhNjUwMmI4OWEzMGYwN2U2ZWEyZjJmNmNmMGJlOTQu
LmFhY2UwZGUyZTE5NThlOGM2MjkxMDc0ZDVlODIxZjc5ZDFlYzE1MzIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL1ZhbGlk
YXRpb25NZXNzYWdlLmNwcApAQCAtMzEsMTAgKzMxLDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiVmFsaWRhdGlvbk1lc3NhZ2UuaCIKIAorI2luY2x1ZGUgIkhUTUxCUkVsZW1l
bnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
KyNpbmNsdWRlICJTaGFkb3dFbGVtZW50LmgiCisjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKKwogQUxXQVlTX0lOTElORSBWYWxpZGF0aW9uTWVzc2FnZTo6VmFsaWRh
dGlvbk1lc3NhZ2UoSFRNTEZvcm1Db250cm9sRWxlbWVudCogZWxlbWVudCkKICAgICA6IG1fZWxl
bWVudChlbGVtZW50KQogewpAQCAtNTIsMTggKzU5LDc1IEBAIFBhc3NPd25QdHI8VmFsaWRhdGlv
bk1lc3NhZ2U+IFZhbGlkYXRpb25NZXNzYWdlOjpjcmVhdGUoSFRNTEZvcm1Db250cm9sRWxlbWVu
dCoKIAogdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCiB7Ci0gICAgLy8gRklYTUU6IENvbnN0cnVjdCB2YWxpZGF0aW9uIG1lc3NhZ2UgVUkg
aWYgbV9tZXNzYWdlIGlzIGVtcHR5LgotCiAgICAgbV9tZXNzYWdlID0gbWVzc2FnZTsKKyAgICBp
ZiAoIW1fYnViYmxlKSB7CisgICAgICAgIC8vIFdlIGRvbid0IGJ1aWxkIGEgc2hhZG93IHRyZWUg
aGVyZSBiZWNhdXNlIGl0IG1ha2VzIG1fZWxlbWVudAorICAgICAgICAvLyBuZWVkc0xheW91dCgp
IHN0YXRlIGFuZCBtX2VsZW1lbnQtPmlzRm9jdXNhYmxlKCkgaW4KKyAgICAgICAgLy8gSFRNTEZv
cm1FbGVtZW50Ojp2YWxpZGF0ZUludGVyYWN0aXZlbHkoKSBjYW4ndCBiZSBjYWxsZWQuCisgICAg
ICAgIG1fdGltZXIuc2V0KG5ldyBUaW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4odGhpcywgJlZhbGlk
YXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUpKTsKKyAgICAgICAgbV90aW1lci0+c3RhcnRP
bmVTaG90KDApOworICAgIH0gZWxzZSB7CisgICAgICAgIHNldE1lc3NhZ2VET01BbmRTdGFydFRp
bWVyKCk7CisgICAgfQorfQorCit2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9N
QW5kU3RhcnRUaW1lcigpCit7CisgICAgbV9idWJibGVNZXNzYWdlLT5yZW1vdmVBbGxDaGlsZHJl
bigpOworICAgIFZlY3RvcjxTdHJpbmc+IGxpbmVzOworICAgIG1fbWVzc2FnZS5zcGxpdCgnXG4n
LCBsaW5lcyk7CisgICAgRG9jdW1lbnQqIGRvYyA9IG1fYnViYmxlTWVzc2FnZS0+ZG9jdW1lbnQo
KTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGluZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGkpIHsKKyAgICAgICAgICAgIG1f
YnViYmxlTWVzc2FnZS0+YXBwZW5kQ2hpbGQoSFRNTEJSRWxlbWVudDo6Y3JlYXRlKGRvYyksIGVj
KTsKKyAgICAgICAgICAgIG1fYnViYmxlTWVzc2FnZS0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRl
KGRvYywgbGluZXNbaV0pLCBlYyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSZWZQ
dHI8SFRNTEVsZW1lbnQ+IGJvbGQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKGJUYWcsIGRvYyk7Cisg
ICAgICAgICAgICBib2xkLT5zZXRJbm5lclRleHQobGluZXNbaV0sIGVjKTsKKyAgICAgICAgICAg
IG1fYnViYmxlTWVzc2FnZS0+YXBwZW5kQ2hpbGQoYm9sZC5yZWxlYXNlKCksIGVjKTsKKyAgICAg
ICAgfQorICAgIH0KIAogICAgIG1fdGltZXIuc2V0KG5ldyBUaW1lcjxWYWxpZGF0aW9uTWVzc2Fn
ZT4odGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpoaWRlTWVzc2FnZSkpOwotICAgIG1fdGltZXIt
PnN0YXJ0T25lU2hvdCg2LjApOyAvLyBGSVhNRTogc2hvdWxkIGJlIDxtZXNzYWdlIGxlbmd0aD4g
KiBzb21ldGhpbmcuCisgICAgbV90aW1lci0+c3RhcnRPbmVTaG90KG1heCg1LjAsIG1fbWVzc2Fn
ZS5sZW5ndGgoKSAvIDIwLjApKTsKIH0KIAotdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6aGlkZU1l
c3NhZ2UoVGltZXI8VmFsaWRhdGlvbk1lc3NhZ2U+KikKK3ZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6
OmJ1aWxkQnViYmxlVHJlZShUaW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4qKQogewotICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQuCisgICAgZnByaW50ZihzdGRlcnIsICIlczogQ3JlYXRlIGEgc2hhZG93
IHRyZWVcbiIsIF9fZnVuY19fKTsKKyAgICBtX2J1YmJsZSA9IFNoYWRvd1NpbXBsZUVsZW1lbnQ6
OmNyZWF0ZUZvclBhcnQobV9lbGVtZW50LCBWQUxJREFUSU9OX0JVQkJMRSk7CisgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IG1fYnViYmxlLT5yZW5kZXJlcigpOworCisgICAgbV9idWJibGVU
b3BPdXRlciA9IFNoYWRvd1NpbXBsZUVsZW1lbnQ6OmNyZWF0ZUZvclBhcnQobV9idWJibGUuZ2V0
KCksIFZBTElEQVRJT05fQlVCQkxFX1RPUF9PVVRFUik7CisgICAgcmVuZGVyZXItPmFkZENoaWxk
KG1fYnViYmxlVG9wT3V0ZXItPnJlbmRlcmVyKCkpOwogCisgICAgbV9idWJibGVUb3BJbm5lciA9
IFNoYWRvd1NpbXBsZUVsZW1lbnQ6OmNyZWF0ZUZvclBhcnQobV9idWJibGUuZ2V0KCksIFZBTElE
QVRJT05fQlVCQkxFX1RPUF9JTk5FUik7CisgICAgcmVuZGVyZXItPmFkZENoaWxkKG1fYnViYmxl
VG9wSW5uZXItPnJlbmRlcmVyKCkpOworCisgICAgbV9idWJibGVNZXNzYWdlID0gU2hhZG93U2lt
cGxlRWxlbWVudDo6Y3JlYXRlRm9yUGFydChtX2J1YmJsZS5nZXQoKSwgVkFMSURBVElPTl9CVUJC
TEVfTUVTU0FHRSk7CisgICAgcmVuZGVyZXItPmFkZENoaWxkKG1fYnViYmxlTWVzc2FnZS0+cmVu
ZGVyZXIoKSk7CisgICAgc2V0TWVzc2FnZURPTUFuZFN0YXJ0VGltZXIoKTsKKworICAgIG1fZWxl
bWVudC0+cmVuZGVyZXIoKS0+YWRkQ2hpbGQocmVuZGVyZXIpOworICAgIHJlbmRlcmVyLT5zdHls
ZSgpLT5zZXRPcGFjaXR5KDAuOWYpOworCisgICAgLy8gRklYTUU6IFVzZSB0cmFuc2l0aW9uIHRv
IHNob3cgdGhlIGJ1YmJsZS4KKyAgICAvLyBGSVhNRTogQWRqdXN0IHRoZSBidWJibGUgbG9jYXRp
b24uCit9CisKK3ZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OmhpZGVNZXNzYWdlKFRpbWVyPFZhbGlk
YXRpb25NZXNzYWdlPiopCit7CisgICAgaWYgKG1fYnViYmxlKSB7CisgICAgICAgIG1fYnViYmxl
VG9wT3V0ZXItPmRldGFjaCgpOworICAgICAgICBtX2J1YmJsZVRvcE91dGVyID0gMDsKKyAgICAg
ICAgbV9idWJibGVUb3BJbm5lci0+ZGV0YWNoKCk7CisgICAgICAgIG1fYnViYmxlVG9wSW5uZXIg
PSAwOworICAgICAgICBtX2J1YmJsZU1lc3NhZ2UtPmRldGFjaCgpOworICAgICAgICBtX2J1YmJs
ZU1lc3NhZ2UgPSAwOworICAgICAgICBtX2J1YmJsZS0+ZGV0YWNoKCk7CisgICAgICAgIG1fYnVi
YmxlID0gMDsKKyAgICB9CiAgICAgbV9tZXNzYWdlID0gU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5oIGIvV2ViQ29yZS9odG1sL1ZhbGlk
YXRpb25NZXNzYWdlLmgKaW5kZXggZmUxOGI2YjgzYThmOWVlZjU2NzY4MjRkM2IwZDkyZDcwMTc0
ODdmYy4uNzQ4ZWVhNWNmNTQ2NTE1ZmEyOTRjMjcxZWRiYzMwOWJmODUwY2E2MyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmgKKysrIGIvV2ViQ29yZS9odG1sL1Zh
bGlkYXRpb25NZXNzYWdlLmgKQEAgLTM0LDEwICszNCwxMiBAQAogI2luY2x1ZGUgIlRpbWVyLmgi
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBIVE1MRWxlbWVudDsKIGNsYXNzIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ7CiAKIGNsYXNzIFZhbGlkYXRpb25NZXNzYWdlIDogcHVibGljIE5v
bmNvcHlhYmxlIHsKQEAgLTQ5LDExICs1MSwxNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
VmFsaWRhdGlvbk1lc3NhZ2UoSFRNTEZvcm1Db250cm9sRWxlbWVudCopOworICAgIHZvaWQgc2V0
TWVzc2FnZURPTUFuZFN0YXJ0VGltZXIoKTsKKyAgICB2b2lkIGJ1aWxkQnViYmxlVHJlZShUaW1l
cjxWYWxpZGF0aW9uTWVzc2FnZT4qKTsKICAgICB2b2lkIGhpZGVNZXNzYWdlKFRpbWVyPFZhbGlk
YXRpb25NZXNzYWdlPiogPSAwKTsKIAogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIG1fZWxl
bWVudDsKICAgICBTdHJpbmcgbV9tZXNzYWdlOwogICAgIE93blB0cjxUaW1lcjxWYWxpZGF0aW9u
TWVzc2FnZT4gPiBtX3RpbWVyOworICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9idWJibGU7Cisg
ICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX2J1YmJsZVRvcE91dGVyOworICAgIFJlZlB0cjxIVE1M
RWxlbWVudD4gbV9idWJibGVUb3BJbm5lcjsKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1fYnVi
YmxlTWVzc2FnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL1NoYWRvd0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvU2hh
ZG93RWxlbWVudC5jcHAKaW5kZXggYzUyY2UxNzhiMTQ3NDM1NTJkNjAwOWMzMjAzZGZjNjMzZTlk
YzIzYy4uZGM0NDIzNjVlZDQ5Mzg4OTkzNjBhNjcyYzA3Njk3YWMwNWQyZTgyOSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvU2hhZG93RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvU2hhZG93RWxlbWVudC5jcHAKQEAgLTI5LDEzICsyOSw1NCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKK2lubGluZSBTaGFkb3dTaW1w
bGVFbGVtZW50OjpTaGFkb3dTaW1wbGVFbGVtZW50KEhUTUxFbGVtZW50KiBzaGFkb3dQYXJlbnQp
CisgICAgOiBTaGFkb3dFbGVtZW50PEhUTUxEaXZFbGVtZW50PihkaXZUYWcsIHNoYWRvd1BhcmVu
dCkKK3sKK30KKworUGFzc1JlZlB0cjxTaGFkb3dTaW1wbGVFbGVtZW50PiBTaGFkb3dTaW1wbGVF
bGVtZW50OjpjcmVhdGUoSFRNTEVsZW1lbnQqIHNoYWRvd1BhcmVudCkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNoYWRvd1NpbXBsZUVsZW1lbnQoc2hhZG93UGFyZW50KSk7Cit9CisKK1Bh
c3NSZWZQdHI8U2hhZG93U2ltcGxlRWxlbWVudD4gU2hhZG93U2ltcGxlRWxlbWVudDo6Y3JlYXRl
Rm9yUGFydChIVE1MRWxlbWVudCogc2hhZG93UGFyZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKK3sK
KyAgICBSZWZQdHI8U2hhZG93U2ltcGxlRWxlbWVudD4gcGFydCA9IGNyZWF0ZShzaGFkb3dQYXJl
bnQpOworICAgIHBhcnQtPmluaXRpYWxpemVGb3JQYXJ0KHBzZXVkb0lkKTsKKyAgICByZXR1cm4g
cGFydC5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgU2hhZG93U2ltcGxlRWxlbWVudDo6aW5pdGlhbGl6
ZUZvclBhcnQoUHNldWRvSWQgcHNldWRvSWQpCit7CisgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRS
ZW5kZXJlciA9IHNoYWRvd1BhcmVudE5vZGUoKS0+cmVuZGVyZXIoKTsKKyAgICBSZWZQdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlRm9yUGFydCA9IGNyZWF0ZVN0eWxlRm9yUGFydChwYXJlbnRSZW5kZXJl
ciwgcHNldWRvSWQpOworICAgIHNldFJlbmRlcmVyKGNyZWF0ZVJlbmRlcmVyKHBhcmVudFJlbmRl
cmVyLT5yZW5kZXJBcmVuYSgpLCBzdHlsZUZvclBhcnQuZ2V0KCkpKTsKKyAgICByZW5kZXJlcigp
LT5zZXRBbmltYXRhYmxlU3R5bGUoc3R5bGVGb3JQYXJ0LnJlbGVhc2UoKSk7CisgICAgc2V0QXR0
YWNoZWQoKTsKKyAgICBzZXRJbkRvY3VtZW50KCk7CisgICAgcmV0dXJuOworfQorCitQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBTaGFkb3dTaW1wbGVFbGVtZW50OjpjcmVhdGVTdHlsZUZvclBhcnQo
UmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciwgUHNldWRvSWQgcHNldWRvSWQpCit7CisgICAg
UmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvclBhcnQ7CisgICAgUmVuZGVyU3R5bGUqIHBzZXVk
b1N0eWxlID0gcGFyZW50UmVuZGVyZXItPmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0lkKTsK
KyAgICBpZiAocHNldWRvU3R5bGUpCisgICAgICAgIHN0eWxlRm9yUGFydCA9IFJlbmRlclN0eWxl
OjpjbG9uZShwc2V1ZG9TdHlsZSk7CisgICAgZWxzZQorICAgICAgICBzdHlsZUZvclBhcnQgPSBS
ZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisKKyAgICBzdHlsZUZvclBhcnQtPmluaGVyaXRGcm9tKHBh
cmVudFJlbmRlcmVyLT5zdHlsZSgpKTsKKyAgICByZXR1cm4gc3R5bGVGb3JQYXJ0LnJlbGVhc2Uo
KTsKK30KKwogUGFzc1JlZlB0cjxTaGFkb3dCbG9ja0VsZW1lbnQ+IFNoYWRvd0Jsb2NrRWxlbWVu
dDo6Y3JlYXRlKEhUTUxFbGVtZW50KiBzaGFkb3dQYXJlbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTaGFkb3dCbG9ja0VsZW1lbnQoc2hhZG93UGFyZW50KSk7CiB9CiAKIFNoYWRvd0Js
b2NrRWxlbWVudDo6U2hhZG93QmxvY2tFbGVtZW50KEhUTUxFbGVtZW50KiBzaGFkb3dQYXJlbnQp
Ci0gICAgOiBTaGFkb3dFbGVtZW50PEhUTUxEaXZFbGVtZW50PihkaXZUYWcsIHNoYWRvd1BhcmVu
dCkKKyAgICA6IFNoYWRvd1NpbXBsZUVsZW1lbnQoc2hhZG93UGFyZW50KQogewogfQogCkBAIC02
MywzNCArMTA0LDIyIEBAIHZvaWQgU2hhZG93QmxvY2tFbGVtZW50OjpsYXlvdXRBc1BhcnQoY29u
c3QgSW50UmVjdCYgcGFydFJlY3QpCiB2b2lkIFNoYWRvd0Jsb2NrRWxlbWVudDo6dXBkYXRlU3R5
bGVGb3JQYXJ0KFBzZXVkb0lkIHBzZXVkb0lkKQogewogICAgIGlmIChyZW5kZXJlcigpLT5zdHls
ZSgpLT5zdHlsZVR5cGUoKSAhPSBwc2V1ZG9JZCkKLSAgICAgICAgcmVuZGVyZXIoKS0+c2V0U3R5
bGUoY3JlYXRlU3R5bGVGb3JQYXJ0KHJlbmRlcmVyKCktPnBhcmVudCgpLCBwc2V1ZG9JZCkpOwor
ICAgICAgICByZW5kZXJlcigpLT5zZXRBbmltYXRhYmxlU3R5bGUoY3JlYXRlU3R5bGVGb3JQYXJ0
KHJlbmRlcmVyKCktPnBhcmVudCgpLCBwc2V1ZG9JZCkpOwogfQogCiBQYXNzUmVmUHRyPFNoYWRv
d0Jsb2NrRWxlbWVudD4gU2hhZG93QmxvY2tFbGVtZW50OjpjcmVhdGVGb3JQYXJ0KEhUTUxFbGVt
ZW50KiBzaGFkb3dQYXJlbnQsIFBzZXVkb0lkIHBzZXVkb0lkKQogewotICAgIFJlbmRlck9iamVj
dCogcGFyZW50UmVuZGVyZXIgPSBzaGFkb3dQYXJlbnQtPnJlbmRlcmVyKCk7Ci0gICAgUmVmUHRy
PFJlbmRlclN0eWxlPiBzdHlsZUZvclBhcnQgPSBjcmVhdGVTdHlsZUZvclBhcnQocGFyZW50UmVu
ZGVyZXIsIHBzZXVkb0lkKTsKICAgICBSZWZQdHI8U2hhZG93QmxvY2tFbGVtZW50PiBwYXJ0ID0g
Y3JlYXRlKHNoYWRvd1BhcmVudCk7Ci0gICAgcGFydC0+c2V0UmVuZGVyZXIocGFydC0+Y3JlYXRl
UmVuZGVyZXIocGFyZW50UmVuZGVyZXItPnJlbmRlckFyZW5hKCksIHN0eWxlRm9yUGFydC5nZXQo
KSkpOwotICAgIHBhcnQtPnJlbmRlcmVyKCktPnNldFN0eWxlKHN0eWxlRm9yUGFydC5yZWxlYXNl
KCkpOwotICAgIHBhcnQtPnNldEF0dGFjaGVkKCk7Ci0gICAgcGFydC0+c2V0SW5Eb2N1bWVudCgp
OworICAgIHBhcnQtPmluaXRpYWxpemVGb3JQYXJ0KHBzZXVkb0lkKTsKICAgICByZXR1cm4gcGFy
dC5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFNoYWRvd0Jsb2NrRWxl
bWVudDo6Y3JlYXRlU3R5bGVGb3JQYXJ0KFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIsIFBz
ZXVkb0lkIHBzZXVkb0lkKQogewotICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JQYXJ0
OwotICAgIFJlbmRlclN0eWxlKiBwc2V1ZG9TdHlsZSA9IHBhcmVudFJlbmRlcmVyLT5nZXRDYWNo
ZWRQc2V1ZG9TdHlsZShwc2V1ZG9JZCk7Ci0gICAgaWYgKHBzZXVkb1N0eWxlKQotICAgICAgICBz
dHlsZUZvclBhcnQgPSBSZW5kZXJTdHlsZTo6Y2xvbmUocHNldWRvU3R5bGUpOwotICAgIGVsc2UK
LSAgICAgICAgc3R5bGVGb3JQYXJ0ID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwotICAgIAotICAg
IHN0eWxlRm9yUGFydC0+aW5oZXJpdEZyb20ocGFyZW50UmVuZGVyZXItPnN0eWxlKCkpOworICAg
IFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yUGFydCA9IFNoYWRvd1NpbXBsZUVsZW1l
bnQ6OmNyZWF0ZVN0eWxlRm9yUGFydChwYXJlbnRSZW5kZXJlciwgcHNldWRvSWQpOwogICAgIHN0
eWxlRm9yUGFydC0+c2V0RGlzcGxheShCTE9DSyk7CiAgICAgc3R5bGVGb3JQYXJ0LT5zZXRBcHBl
YXJhbmNlKE5vQ29udHJvbFBhcnQpOwotICAgIHJldHVybiBzdHlsZUZvclBhcnQucmVsZWFzZSgp
OworICAgIHJldHVybiBzdHlsZUZvclBhcnQ7CiB9CiAKIGJvb2wgU2hhZG93QmxvY2tFbGVtZW50
OjpwYXJ0U2hvdWxkSGF2ZVN0eWxlKGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIs
IFBzZXVkb0lkIHBzZXVkb0lkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvU2hhZG93
RWxlbWVudC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvU2hhZG93RWxlbWVudC5oCmluZGV4IDA0ZGI2
MmJlN2YyYmIxMGViMDI0Y2UzMDIzZmVkNzBmMmMzMmRhOTIuLmFhYTk3YWI5MzJkNWU2YWJmYjAx
YWE2NDFhMmM1MzZiZmU5MTYzYWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1NoYWRv
d0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9TaGFkb3dFbGVtZW50LmgKQEAgLTQ0
LDE5ICs0NCwzMSBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiAgICAgSFRNTEVsZW1lbnQqIHNoYWRv
d1BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93UGFyZW50OyB9CisgICAgdmlydHVhbCBD
b250YWluZXJOb2RlKiBzaGFkb3dQYXJlbnROb2RlKCkgeyByZXR1cm4gbV9zaGFkb3dQYXJlbnQ7
IH0KIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFkb3dOb2RlKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgQ29udGFpbmVyTm9kZSogc2hhZG93UGFyZW50Tm9k
ZSgpIHsgcmV0dXJuIG1fc2hhZG93UGFyZW50OyB9CiAKICAgICBIVE1MRWxlbWVudCogbV9zaGFk
b3dQYXJlbnQ7CiB9OwogCi1jbGFzcyBTaGFkb3dCbG9ja0VsZW1lbnQgOiBwdWJsaWMgU2hhZG93
RWxlbWVudDxIVE1MRGl2RWxlbWVudD4geworY2xhc3MgU2hhZG93U2ltcGxlRWxlbWVudCA6IHB1
YmxpYyBTaGFkb3dFbGVtZW50PEhUTUxEaXZFbGVtZW50PiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2hhZG93U2ltcGxlRWxlbWVudD4gY3JlYXRlKEhUTUxFbGVtZW50Kik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhZG93U2ltcGxlRWxlbWVudD4gY3JlYXRlRm9yUGFydChI
VE1MRWxlbWVudCosIFBzZXVkb0lkKTsKKworcHJvdGVjdGVkOgorICAgIFNoYWRvd1NpbXBsZUVs
ZW1lbnQoSFRNTEVsZW1lbnQqKTsKKyAgICB2b2lkIGluaXRpYWxpemVGb3JQYXJ0KFBzZXVkb0lk
KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZVN0eWxlRm9yUGFy
dChSZW5kZXJPYmplY3QqLCBQc2V1ZG9JZCk7Cit9OworCisvLyBUaGlzIGVsZW1lbnQgZm9yY2Vz
IGl0cyBzdHlsZSB0byBiZSAiZGlzcGxheTpibG9jayIuCitjbGFzcyBTaGFkb3dCbG9ja0VsZW1l
bnQgOiBwdWJsaWMgU2hhZG93U2ltcGxlRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2hhZG93QmxvY2tFbGVtZW50PiBjcmVhdGUoSFRNTEVsZW1lbnQqKTsKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTaGFkb3dCbG9ja0VsZW1lbnQ+IGNyZWF0ZUZvclBhcnQoSFRNTEVs
ZW1lbnQqLCBQc2V1ZG9JZCk7Ci0gICAgc3RhdGljIGJvb2wgcGFydFNob3VsZEhhdmVTdHlsZShj
b25zdCBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyLCBQc2V1ZG9JZCBwc2V1ZG9JZCk7Cisg
ICAgc3RhdGljIGJvb2wgcGFydFNob3VsZEhhdmVTdHlsZShjb25zdCBSZW5kZXJPYmplY3QqIHBh
cmVudFJlbmRlcmVyLCBQc2V1ZG9JZCk7CiAgICAgdm9pZCBsYXlvdXRBc1BhcnQoY29uc3QgSW50
UmVjdCYgcGFydFJlY3QpOwogICAgIHZvaWQgdXBkYXRlU3R5bGVGb3JQYXJ0KFBzZXVkb0lkKTsK
IApAQCAtNjQsMTIgKzc2LDEzIEBAIHByb3RlY3RlZDoKICAgICBTaGFkb3dCbG9ja0VsZW1lbnQo
SFRNTEVsZW1lbnQqKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4gY3JlYXRlU3R5bGVGb3JQYXJ0KFJlbmRlck9iamVjdCosIFBzZXVkb0lkKTsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZVN0eWxlRm9yUGFydChSZW5kZXJP
YmplY3QqLCBQc2V1ZG9JZCk7CiB9OwogCiBjbGFzcyBTaGFkb3dJbnB1dEVsZW1lbnQgOiBwdWJs
aWMgU2hhZG93RWxlbWVudDxIVE1MSW5wdXRFbGVtZW50PiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2hhZG93SW5wdXRFbGVtZW50PiBjcmVhdGUoSFRNTEVsZW1lbnQqKTsKKwog
cHJvdGVjdGVkOgogICAgIFNoYWRvd0lucHV0RWxlbWVudChIVE1MRWxlbWVudCopOwogfTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgg
Yi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCmluZGV4IGI4
ZTIwNzkyMDE4MjkwYWRjYTA2Y2Q3NDEwODY2Y2Y4ZjQ4MmVhNWIuLjIyMzhiYzAzYzJkMDA3ZGEy
ZDg2NDFlMGI4YTdkODUxNjljNDgwNmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAtNzgsNiArNzgsNyBAQCBlbnVtIFBzZXVkb0lkIHsK
ICAgICBJTlBVVF9MSVNUX0JVVFRPTiwgSU5QVVRfU1BFRUNIX0JVVFRPTiwgSU5ORVJfU1BJTl9C
VVRUT04sIE9VVEVSX1NQSU5fQlVUVE9OLCBWSVNJVEVEX0xJTkssIFBST0dSRVNTX0JBUl9WQUxV
RSwKICAgICBNRVRFUl9IT1JJWk9OVEFMX0JBUiwgTUVURVJfSE9SSVpPTlRBTF9PUFRJTVVNLCBN
RVRFUl9IT1JJWk9OVEFMX1NVQk9QVElNQUwsIE1FVEVSX0hPUklaT05UQUxfRVZFTl9MRVNTX0dP
T0QsCiAgICAgTUVURVJfVkVSVElDQUxfQkFSLCBNRVRFUl9WRVJUSUNBTF9PUFRJTVVNLCBNRVRF
Ul9WRVJUSUNBTF9TVUJPUFRJTUFMLCBNRVRFUl9WRVJUSUNBTF9FVkVOX0xFU1NfR09PRCwgCisg
ICAgVkFMSURBVElPTl9CVUJCTEUsIFZBTElEQVRJT05fQlVCQkxFX01FU1NBR0UsIFZBTElEQVRJ
T05fQlVCQkxFX1RPUF9JTk5FUiwgVkFMSURBVElPTl9CVUJCTEVfVE9QX09VVEVSLAogICAgIEFG
VEVSX0xBU1RfSU5URVJOQUxfUFNFVURPSUQsCiAgICAgRlVMTF9TQ1JFRU4sIEZVTExfU0NSRUVO
X0RPQ1VNRU5ULAogICAgIEZJUlNUX1BVQkxJQ19QU0VVRE9JRCA9IEZJUlNUX0xJTkUsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73033</attachid>
            <date>2010-11-04 21:25:18 -0700</date>
            <delta_ts>2011-01-12 00:10:37 -0800</delta_ts>
            <desc>Patch 2 (Windows build fix)</desc>
            <filename>bug-48980-20101105132516.patch</filename>
            <type>text/plain</type>
            <size>20108</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTBlODlhZTMzZTg3NDE4ODVmZmE1ZTI4YjI1MDZjNzFjOTkzYWMzZS4uMTJkOWRmMzhkYzY0N2M4
NzcwZDA1MWIwZWI5NmMxNTcyYTU4NGVkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAxMC0xMS0wNCAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdl
IFVJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODk4
MAorCisgICAgICAgICogQWRkIGZvdXIgaW50ZXJuYWwgcHNldWRvIHNlbGVjdG9yczoKKyAgICAg
ICAgICAtIC13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUKKyAgICAgICAgICAtIC13ZWJraXQtdmFs
aWRhdGlvbi1idWJibGUtbWVzc2FnZQorICAgICAgICAgIC0gLXdlYmtpdC12YWxpZGF0aW9uLWJ1
YmJsZS10b3Atb3V0ZXItYXJyb3cKKyAgICAgICAgICAtIC13ZWJraXQtdmFsaWRhdGlvbi1idWJi
bGUtdG9wLWlubmVyLWFycm93CisgICAgICAgICogQWRkIFNoYWRvd1NpbXBsZUVsZW1lbnQKKyAg
ICAgICAgICBUaGlzIGlzIHNpbWlsYXIgdG8gU2hhZG93QmxvY2tFbGVtZW50IGV4Y2VwdCBTaGFk
b3dTaW1wbGVFbGVtZW50IGlzIG5vdAorICAgICAgICAgIGEgYmxvY2sgZWxlbWVudC4KKyAgICAg
ICAgKiBJbXBsZW1lbnQgVmFsaWRhdGlvbk1lc3NhZ2UgZnVuY3Rpb25zCisgICAgICAgICAgU2hv
dyB0aGUgbWVzc2FnZSBmb3IgPHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycz4gLyAyMC4wIHNlY29u
ZHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlIGZlYXR1cmUgaXMgZGlzYWJs
ZWQgYnkgZGVmYXVsdCBmb3Igbm93IGFuZCB0aGUKKyAgICAgICAgbmV3IGJlaGF2aW9yIGlzIHN0
cm9uZ2x5IHRpbWluZy1kZXBlbmRlbnQuCisKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3Bw
OiBIYW5kbGUgNCBpbnRlcm5hbCBzZWxlY3RvcnMuCisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxl
Y3Rvcjo6cHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6bmFtZVRvUHNldWRvVHlwZU1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOgorICAg
ICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOiBEZWZpbmUgdGhlIGludGVybmFsIHNlbGVjdG9ycy4K
KyAgICAgICAgKiBjc3MvaHRtbC5jc3M6IERlZmluZSBhcHBlYXJhbmNlIGZvciB0aGUgaW50ZXJu
YWwgc2VsZWN0b3JzLgorICAgICAgICAoOjotd2Via2l0LXZhbGlkYXRpb24tYnViYmxlKToKKyAg
ICAgICAgKDo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1tZXNzYWdlKToKKyAgICAgICAgKDo6
LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS10b3Atb3V0ZXItYXJyb3cpOgorICAgICAgICAoOjot
d2Via2l0LXZhbGlkYXRpb24tYnViYmxlLXRvcC1pbm5lci1hcnJvdyk6CisgICAgICAgICogaHRt
bC9WYWxpZGF0aW9uTWVzc2FnZS5jcHA6IEltcGxlbWVudGVkLgorICAgICAgICAoV2ViQ29yZTo6
VmFsaWRhdGlvbk1lc3NhZ2U6OlZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlk
YXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcik6CisgICAgICAgIChXZWJD
b3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKToKKyAgICAgICAgKFdlYkNv
cmU6OlZhbGlkYXRpb25NZXNzYWdlOjpoaWRlTWVzc2FnZSk6CisgICAgICAgICogaHRtbC9WYWxp
ZGF0aW9uTWVzc2FnZS5oOiBBZGQgbmV3IHByaXZhdGUgZnVuY3Rpb24vZGF0YSBtZW1iZXJzLgor
ICAgICAgICAqIHJlbmRlcmluZy9TaGFkb3dFbGVtZW50LmNwcDogSW50cm9kdWNlIFNoYWRvd1Np
bXBsZUVsZW1lbnQsIGFuZCBtYWtlCisgICAgICAgICAgU2hhZG93QmxvY2tFbGVtZW50IGEgc3Vi
Y2xhc3Mgb2YgU2hhZG93U2ltcGxlRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Np
bXBsZUVsZW1lbnQ6OlNoYWRvd1NpbXBsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
ZG93U2ltcGxlRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1NpbXBs
ZUVsZW1lbnQ6OmNyZWF0ZUZvclBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93U2ltcGxl
RWxlbWVudDo6aW5pdGlhbGl6ZUZvclBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93U2lt
cGxlRWxlbWVudDo6Y3JlYXRlU3R5bGVGb3JQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d0Jsb2NrRWxlbWVudDo6U2hhZG93QmxvY2tFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd0Jsb2NrRWxlbWVudDo6dXBkYXRlU3R5bGVGb3JQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd0Jsb2NrRWxlbWVudDo6Y3JlYXRlRm9yUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dCbG9ja0VsZW1lbnQ6OmNyZWF0ZVN0eWxlRm9yUGFydCk6CisgICAgICAgICogcmVuZGVy
aW5nL1NoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0VsZW1lbnQ6OnNo
YWRvd1BhcmVudE5vZGUpOiBNYWtlIGl0IHByb3RlY3RlZCB0byBiZSB1c2VkIGluCisgICAgICAg
ICAgU2hhZG93U2ltcGxlRWxlbWVudDo6aW5pdGlhbGl6ZWRGb3JQYXJ0KCkKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKyAgICAgICAgICBBZGQgc3lt
Ym9scyBmb3IgdGhlIGludGVybmFsIHNlbGVjdG9ycy4KKwogMjAxMC0xMS0wNCAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlhdHQu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5jcHAKaW5kZXggZmI4ZjY5NWJkN2I0YzllNWJjM2NiMGUzYTQyMjM1MDQyZThj
Y2U2Ny4uYzk5ODc5NWIwZjFmMWFlNzk1NDEwOGVlOGFkNTRhMWM2OTBiYTc4NiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmNwcApAQCAtMjU0LDYgKzI1NCwxNSBAQCBQc2V1ZG9JZCBDU1NTZWxlY3Rvcjo6cHNldWRv
SWQoUHNldWRvVHlwZSB0eXBlKQogICAgIGNhc2UgUHNldWRvRnVsbFNjcmVlbkRvY3VtZW50Ogog
ICAgICAgICByZXR1cm4gRlVMTF9TQ1JFRU5fRE9DVU1FTlQ7CiAjZW5kaWYKKworICAgIGNhc2Ug
UHNldWRvVmFsaWRhdGlvbkJ1YmJsZToKKyAgICAgICAgcmV0dXJuIFZBTElEQVRJT05fQlVCQkxF
OworICAgIGNhc2UgUHNldWRvVmFsaWRhdGlvbkJ1YmJsZU1lc3NhZ2U6CisgICAgICAgIHJldHVy
biBWQUxJREFUSU9OX0JVQkJMRV9NRVNTQUdFOworICAgIGNhc2UgUHNldWRvVmFsaWRhdGlvbkJ1
YmJsZVRvcElubmVyOgorICAgICAgICByZXR1cm4gVkFMSURBVElPTl9CVUJCTEVfVE9QX0lOTkVS
OworICAgIGNhc2UgUHNldWRvVmFsaWRhdGlvbkJ1YmJsZVRvcE91dGVyOgorICAgICAgICByZXR1
cm4gVkFMSURBVElPTl9CVUJCTEVfVE9QX09VVEVSOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQ
c2V1ZG9JbnB1dExpc3RCdXR0b246CiAjaWYgRU5BQkxFKERBVEFMSVNUKQpAQCAtNDE3LDYgKzQy
NiwxMCBAQCBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBz
ZXVkb1R5cGU+KiBuYW1lVG9Qc2V1ZG9UeXBlTWFwKAogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCBzZWxlY3Rpb24sICgic2VsZWN0aW9uIikpOwogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzbGlkZXJUaHVtYiwgKCItd2Via2l0LXNsaWRlci10aHVt
YiIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgdGFyZ2V0LCAoInRh
cmdldCIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgdmFsaWRhdGlv
bkJ1YmJsZSwgKCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxlIikpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCB2YWxpZGF0aW9uQnViYmxlTWVzc2FnZSwgKCItd2Via2l0
LXZhbGlkYXRpb24tYnViYmxlLW1lc3NhZ2UiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIHZhbGlkYXRpb25CdWJibGVUb3BJbm5lciwgKCItd2Via2l0LXZhbGlkYXRp
b24tYnViYmxlLXRvcC1pbm5lci1hcnJvdyIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgdmFsaWRhdGlvbkJ1YmJsZVRvcE91dGVyLCAoIi13ZWJraXQtdmFsaWRhdGlv
bi1idWJibGUtdG9wLW91dGVyLWFycm93IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCB2aXNpdGVkLCAoInZpc2l0ZWQiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIHdpbmRvd0luYWN0aXZlLCAoIndpbmRvdy1pbmFjdGl2ZSIpKTsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZGVjcmVtZW50LCAoImRlY3JlbWVu
dCIpKTsKQEAgLTU0NCw2ICs1NTcsMTAgQEAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1w
bCosIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlPiogbmFtZVRvUHNldWRvVHlwZU1hcCgKICAgICAg
ICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KHNlbGVjdGlvbi5pbXBsKCksIENTU1NlbGVjdG9yOjpQ
c2V1ZG9TZWxlY3Rpb24pOwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoc2xpZGVyVGh1
bWIuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvU2xpZGVyVGh1bWIpOwogICAgICAgICBuYW1l
VG9Qc2V1ZG9UeXBlLT5zZXQodGFyZ2V0LmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb1Rhcmdl
dCk7CisgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldCh2YWxpZGF0aW9uQnViYmxlLmltcGwo
KSwgQ1NTU2VsZWN0b3I6OlBzZXVkb1ZhbGlkYXRpb25CdWJibGUpOworICAgICAgICBuYW1lVG9Q
c2V1ZG9UeXBlLT5zZXQodmFsaWRhdGlvbkJ1YmJsZU1lc3NhZ2UuaW1wbCgpLCBDU1NTZWxlY3Rv
cjo6UHNldWRvVmFsaWRhdGlvbkJ1YmJsZU1lc3NhZ2UpOworICAgICAgICBuYW1lVG9Qc2V1ZG9U
eXBlLT5zZXQodmFsaWRhdGlvbkJ1YmJsZVRvcElubmVyLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBz
ZXVkb1ZhbGlkYXRpb25CdWJibGVUb3BJbm5lcik7CisgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUt
PnNldCh2YWxpZGF0aW9uQnViYmxlVG9wT3V0ZXIuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRv
VmFsaWRhdGlvbkJ1YmJsZVRvcE91dGVyKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0
KHZpc2l0ZWQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvVmlzaXRlZCk7CiAgICAgICAgIG5h
bWVUb1BzZXVkb1R5cGUtPnNldChmaXJzdFBhZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRv
Rmlyc3RQYWdlKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGxlZnRQYWdlLmltcGwo
KSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0xlZnRQYWdlKTsKQEAgLTYyOSw2ICs2NDYsMTAgQEAgdm9p
ZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdAogICAgIGNhc2UgUHNldWRv
U2VhcmNoUmVzdWx0c0J1dHRvbjoKICAgICBjYXNlIFBzZXVkb1NlbGVjdGlvbjoKICAgICBjYXNl
IFBzZXVkb1NsaWRlclRodW1iOgorICAgIGNhc2UgUHNldWRvVmFsaWRhdGlvbkJ1YmJsZToKKyAg
ICBjYXNlIFBzZXVkb1ZhbGlkYXRpb25CdWJibGVNZXNzYWdlOgorICAgIGNhc2UgUHNldWRvVmFs
aWRhdGlvbkJ1YmJsZVRvcElubmVyOgorICAgIGNhc2UgUHNldWRvVmFsaWRhdGlvbkJ1YmJsZVRv
cE91dGVyOgogICAgICAgICBlbGVtZW50ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBQc2V1ZG9Vbmtub3duOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBi
L1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKaW5kZXggMDBlMjNiOTRlZjQzMWViZDY1ZmU3ODRh
ZGFlZjY2M2IxNTExNjg0Zi4uMzk5NGFiNmZmYzFkNDVhYmRiMzI1MmFjZWFjNmFmNjNiMzlhNWRj
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAorKysgYi9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvci5oCkBAIC0yMjEsNiArMjIxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgIFBzZXVkb0Z1bGxTY3JlZW4sCiAgICAgICAgICAgICBQc2V1ZG9GdWxsU2Ny
ZWVuRG9jdW1lbnQsCiAjZW5kaWYKKyAgICAgICAgICAgIFBzZXVkb1ZhbGlkYXRpb25CdWJibGUs
CisgICAgICAgICAgICBQc2V1ZG9WYWxpZGF0aW9uQnViYmxlTWVzc2FnZSwKKyAgICAgICAgICAg
IFBzZXVkb1ZhbGlkYXRpb25CdWJibGVUb3BJbm5lciwKKyAgICAgICAgICAgIFBzZXVkb1ZhbGlk
YXRpb25CdWJibGVUb3BPdXRlciwKICAgICAgICAgfTsKIAogICAgICAgICBlbnVtIE1hcmdpbkJv
eFR5cGUgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvaHRtbC5jc3MgYi9XZWJDb3JlL2Nzcy9o
dG1sLmNzcwppbmRleCBhMjAxYWRjZWYwYTdlMDc3N2ZmOTVjNTlkMjQ2ZGE2MTEzZmMxYmU5Li5k
MDYyMjQ5NzY1OWM1ODA2ZDZlMmY1ZDY0Y2QwZmJiMzU2NWFiYzY2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2Nzcy9odG1sLmNzcworKysgYi9XZWJDb3JlL2Nzcy9odG1sLmNzcwpAQCAtNTM0LDYgKzUz
NCw1OCBAQCBvdXRwdXQgewogICAgIGRpc3BsYXk6IGlubGluZTsKIH0KIAorLyogZm9ybSB2YWxp
ZGF0aW9uIG1lc3NhZ2UgYnViYmxlICovCisKKzo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZSB7
CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgei1pbmRleDogMjE0NzQ4MzY0NzsKKyAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgb3BhY2l0eTogMTsKKyAgICBsaW5lLWhlaWdodDogMHB4Owor
ICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2U7Cit9CisKKzo6LXdlYmtp
dC12YWxpZGF0aW9uLWJ1YmJsZS1tZXNzYWdlIHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBm
b250OiBtZXNzYWdlLWJveDsKKyAgICBtaW4td2lkdGg6IDUwcHg7CisgICAgbWF4LXdpZHRoOiAy
MDBweDsKKyAgICBib3JkZXI6IHNvbGlkIDJweCBibGFjazsKKyAgICBiYWNrZ3JvdW5kOiAtd2Vi
a2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKCNmYmY5Zjkp
LCB0bygjZjBlNGU0KSk7CisgICAgcGFkZGluZzogOHB4OworICAgIC13ZWJraXQtYm9yZGVyLXJh
ZGl1czogOHB4OworICAgIC13ZWJraXQtYm94LXNoYWRvdzogNHB4IDRweCA0cHggcmdiYSgyMDQs
MjA0LDIwNCwwLjcpOworfQorCis6Oi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtdG9wLW91dGVy
LWFycm93IHsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgcG9zaXRpb246IHJlbGF0
aXZlOworICAgIGxlZnQ6IDE0cHg7CisgICAgaGVpZ2h0OiAwOworICAgIHdpZHRoOiAwOworICAg
IGJvcmRlci1zdHlsZTogc29saWQ7CisgICAgYm9yZGVyLXdpZHRoOiAxNHB4OworICAgIGJvcmRl
ci1ib3R0b20tY29sb3I6IGJsYWNrOworICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJl
bnQ7CisgICAgYm9yZGVyLXRvcC13aWR0aDogMDsKKyAgICBib3JkZXItbGVmdC13aWR0aDogMDsK
K30KKworOjotd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLXRvcC1pbm5lci1hcnJvdyB7CisgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIGhlaWdodDogMDsKKyAgICB3aWR0aDogMDsKKyAg
ICBib3JkZXItc3R5bGU6IHNvbGlkOworICAgIGJvcmRlci13aWR0aDogMTBweDsgLyogPGJvcmRl
ciBib3ggd2lkdGggb2Ygb3V0ZXItYXJyb3c+IC0gPG1lc3NhZ2UgYm9yZGVyIHdpZHRoPiAqIDIg
Ki8KKyAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmJmOWY5OworICAgIGJvcmRlci1yaWdodC1j
b2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYm9yZGVyLXRvcC13aWR0aDogMDsKKyAgICBib3JkZXIt
bGVmdC13aWR0aDogMDsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgdG9wOiAycHg7IC8q
IDxtZXNzYWdlIGJvcmRlciB3aWR0aD4gKi8KKyAgICBsZWZ0OiAycHg7IC8qIDxvdXRlci1hcnJv
dyBwb3NpdGlvbj4gKyA8bWVzc2FnZSBib3JkZXIgd2lkdGg+IC0gPGJvcmRlciBib3ggd2lkdGgg
b2Ygb3V0ZXItYXJyb3c+ICAqLworfQorCiAvKiBtZXRlciAqLwogCiBtZXRlciB7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwIGIvV2ViQ29yZS9odG1sL1Zh
bGlkYXRpb25NZXNzYWdlLmNwcAppbmRleCBkMzI5MTdlZjljYTY1MDJiODlhMzBmMDdlNmVhMmYy
ZjZjZjBiZTk0Li5lYWVmOTMxYWZlOTIzMzdlZTdkZmM3ZDE0NGQ0NjZkMmVlNGQzZTQ5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKQEAgLTMxLDEwICszMSwxNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlZhbGlkYXRpb25NZXNzYWdlLmgiCiAKKyNpbmNsdWRlICJI
VE1MQlJFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiUmVuZGVy
T2JqZWN0LmgiCisjaW5jbHVkZSAiU2hhZG93RWxlbWVudC5oIgorI2luY2x1ZGUgIlRleHQuaCIK
ICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3Vz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKIEFMV0FZU19JTkxJTkUgVmFsaWRhdGlvbk1lc3Nh
Z2U6OlZhbGlkYXRpb25NZXNzYWdlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKIHsKQEAgLTUyLDE4ICs1OSw3NSBAQCBQYXNzT3duUHRy
PFZhbGlkYXRpb25NZXNzYWdlPiBWYWxpZGF0aW9uTWVzc2FnZTo6Y3JlYXRlKEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQqCiAKIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogewotICAgIC8vIEZJWE1FOiBDb25zdHJ1Y3QgdmFsaWRhdGlvbiBt
ZXNzYWdlIFVJIGlmIG1fbWVzc2FnZSBpcyBlbXB0eS4KLQogICAgIG1fbWVzc2FnZSA9IG1lc3Nh
Z2U7CisgICAgaWYgKCFtX2J1YmJsZSkgeworICAgICAgICAvLyBXZSBkb24ndCBidWlsZCBhIHNo
YWRvdyB0cmVlIGhlcmUgYmVjYXVzZSBpdCBtYWtlcyBtX2VsZW1lbnQKKyAgICAgICAgLy8gbmVl
ZHNMYXlvdXQoKSBzdGF0ZSBhbmQgbV9lbGVtZW50LT5pc0ZvY3VzYWJsZSgpIGluCisgICAgICAg
IC8vIEhUTUxGb3JtRWxlbWVudDo6dmFsaWRhdGVJbnRlcmFjdGl2ZWx5KCkgY2FuJ3QgYmUgY2Fs
bGVkLgorICAgICAgICBtX3RpbWVyLnNldChuZXcgVGltZXI8VmFsaWRhdGlvbk1lc3NhZ2U+KHRo
aXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKSk7CisgICAgICAgIG1fdGlt
ZXItPnN0YXJ0T25lU2hvdCgwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzZXRNZXNzYWdlRE9N
QW5kU3RhcnRUaW1lcigpOworICAgIH0KK30KKwordm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6c2V0
TWVzc2FnZURPTUFuZFN0YXJ0VGltZXIoKQoreworICAgIG1fYnViYmxlTWVzc2FnZS0+cmVtb3Zl
QWxsQ2hpbGRyZW4oKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBsaW5lczsKKyAgICBtX21lc3NhZ2Uu
c3BsaXQoJ1xuJywgbGluZXMpOworICAgIERvY3VtZW50KiBkb2MgPSBtX2J1YmJsZU1lc3NhZ2Ut
PmRvY3VtZW50KCk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxpbmVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChpKSB7CisgICAg
ICAgICAgICBtX2J1YmJsZU1lc3NhZ2UtPmFwcGVuZENoaWxkKEhUTUxCUkVsZW1lbnQ6OmNyZWF0
ZShkb2MpLCBlYyk7CisgICAgICAgICAgICBtX2J1YmJsZU1lc3NhZ2UtPmFwcGVuZENoaWxkKFRl
eHQ6OmNyZWF0ZShkb2MsIGxpbmVzW2ldKSwgZWMpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBib2xkID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShiVGFn
LCBkb2MpOworICAgICAgICAgICAgYm9sZC0+c2V0SW5uZXJUZXh0KGxpbmVzW2ldLCBlYyk7Cisg
ICAgICAgICAgICBtX2J1YmJsZU1lc3NhZ2UtPmFwcGVuZENoaWxkKGJvbGQucmVsZWFzZSgpLCBl
Yyk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBtX3RpbWVyLnNldChuZXcgVGltZXI8VmFsaWRh
dGlvbk1lc3NhZ2U+KHRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6aGlkZU1lc3NhZ2UpKTsKLSAg
ICBtX3RpbWVyLT5zdGFydE9uZVNob3QoNi4wKTsgLy8gRklYTUU6IHNob3VsZCBiZSA8bWVzc2Fn
ZSBsZW5ndGg+ICogc29tZXRoaW5nLgorICAgIG1fdGltZXItPnN0YXJ0T25lU2hvdChtYXgoNS4w
LCBtX21lc3NhZ2UubGVuZ3RoKCkgLyAyMC4wKSk7CiB9CiAKLXZvaWQgVmFsaWRhdGlvbk1lc3Nh
Z2U6OmhpZGVNZXNzYWdlKFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPiopCit2b2lkIFZhbGlkYXRp
b25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUoVGltZXI8VmFsaWRhdGlvbk1lc3NhZ2U+KikKIHsK
LSAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIG1fYnViYmxlID0gU2hhZG93U2ltcGxlRWxl
bWVudDo6Y3JlYXRlRm9yUGFydChtX2VsZW1lbnQsIFZBTElEQVRJT05fQlVCQkxFKTsKKyAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9idWJibGUtPnJlbmRlcmVyKCk7CisKKyAgICBtX2J1
YmJsZVRvcE91dGVyID0gU2hhZG93U2ltcGxlRWxlbWVudDo6Y3JlYXRlRm9yUGFydChtX2J1YmJs
ZS5nZXQoKSwgVkFMSURBVElPTl9CVUJCTEVfVE9QX09VVEVSKTsKKyAgICByZW5kZXJlci0+YWRk
Q2hpbGQobV9idWJibGVUb3BPdXRlci0+cmVuZGVyZXIoKSk7CisKKyAgICBtX2J1YmJsZVRvcElu
bmVyID0gU2hhZG93U2ltcGxlRWxlbWVudDo6Y3JlYXRlRm9yUGFydChtX2J1YmJsZS5nZXQoKSwg
VkFMSURBVElPTl9CVUJCTEVfVE9QX0lOTkVSKTsKKyAgICByZW5kZXJlci0+YWRkQ2hpbGQobV9i
dWJibGVUb3BJbm5lci0+cmVuZGVyZXIoKSk7CiAKKyAgICBtX2J1YmJsZU1lc3NhZ2UgPSBTaGFk
b3dTaW1wbGVFbGVtZW50OjpjcmVhdGVGb3JQYXJ0KG1fYnViYmxlLmdldCgpLCBWQUxJREFUSU9O
X0JVQkJMRV9NRVNTQUdFKTsKKyAgICByZW5kZXJlci0+YWRkQ2hpbGQobV9idWJibGVNZXNzYWdl
LT5yZW5kZXJlcigpKTsKKyAgICBzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcigpOworCisgICAg
bV9lbGVtZW50LT5yZW5kZXJlcigpLT5hZGRDaGlsZChyZW5kZXJlcik7CisgICAgcmVuZGVyZXIt
PnN0eWxlKCktPnNldE9wYWNpdHkoMC45Zik7CisKKyAgICAvLyBGSVhNRTogVXNlIHRyYW5zaXRp
b24gdG8gc2hvdyB0aGUgYnViYmxlLgorCisgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBhZGp1c3Qg
dGhlIGJ1YmJsZSBsb2NhdGlvbi4gVGhlIGRlZmF1bHQgcG9zaXRpb24gaXMgZW5vdWdoLgorfQor
Cit2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpoaWRlTWVzc2FnZShUaW1lcjxWYWxpZGF0aW9uTWVz
c2FnZT4qKQoreworICAgIGlmIChtX2J1YmJsZSkgeworICAgICAgICBtX2J1YmJsZVRvcE91dGVy
LT5kZXRhY2goKTsKKyAgICAgICAgbV9idWJibGVUb3BPdXRlciA9IDA7CisgICAgICAgIG1fYnVi
YmxlVG9wSW5uZXItPmRldGFjaCgpOworICAgICAgICBtX2J1YmJsZVRvcElubmVyID0gMDsKKyAg
ICAgICAgbV9idWJibGVNZXNzYWdlLT5kZXRhY2goKTsKKyAgICAgICAgbV9idWJibGVNZXNzYWdl
ID0gMDsKKyAgICAgICAgbV9idWJibGUtPmRldGFjaCgpOworICAgICAgICBtX2J1YmJsZSA9IDA7
CisgICAgfQogICAgIG1fbWVzc2FnZSA9IFN0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuaCBiL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVz
c2FnZS5oCmluZGV4IGZlMThiNmI4M2E4ZjllZWY1Njc2ODI0ZDNiMGQ5MmQ3MDE3NDg3ZmMuLjc0
OGVlYTVjZjU0NjUxNWZhMjk0YzI3MWVkYmMzMDliZjg1MGNhNjMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9u
TWVzc2FnZS5oCkBAIC0zNCwxMCArMzQsMTIgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OwogCiBjbGFzcyBWYWxpZGF0aW9uTWVzc2FnZSA6IHB1YmxpYyBOb25jb3B5YWJs
ZSB7CkBAIC00OSwxMSArNTEsMTcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFZhbGlkYXRp
b25NZXNzYWdlKEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqKTsKKyAgICB2b2lkIHNldE1lc3NhZ2VE
T01BbmRTdGFydFRpbWVyKCk7CisgICAgdm9pZCBidWlsZEJ1YmJsZVRyZWUoVGltZXI8VmFsaWRh
dGlvbk1lc3NhZ2U+Kik7CiAgICAgdm9pZCBoaWRlTWVzc2FnZShUaW1lcjxWYWxpZGF0aW9uTWVz
c2FnZT4qID0gMCk7CiAKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBtX2VsZW1lbnQ7CiAg
ICAgU3RyaW5nIG1fbWVzc2FnZTsKICAgICBPd25QdHI8VGltZXI8VmFsaWRhdGlvbk1lc3NhZ2U+
ID4gbV90aW1lcjsKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1fYnViYmxlOworICAgIFJlZlB0
cjxIVE1MRWxlbWVudD4gbV9idWJibGVUb3BPdXRlcjsKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+
IG1fYnViYmxlVG9wSW5uZXI7CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX2J1YmJsZU1lc3Nh
Z2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9TaGFkb3dFbGVtZW50LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1NoYWRvd0VsZW1l
bnQuY3BwCmluZGV4IGM1MmNlMTc4YjE0NzQzNTUyZDYwMDljMzIwM2RmYzYzM2U5ZGMyM2MuLmRj
NDQyMzY1ZWQ0OTM4ODk5MzYwYTY3MmMwNzY5N2FjMDVkMmU4MjkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1NoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1No
YWRvd0VsZW1lbnQuY3BwCkBAIC0yOSwxMyArMjksNTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCitpbmxpbmUgU2hhZG93U2ltcGxlRWxlbWVu
dDo6U2hhZG93U2ltcGxlRWxlbWVudChIVE1MRWxlbWVudCogc2hhZG93UGFyZW50KQorICAgIDog
U2hhZG93RWxlbWVudDxIVE1MRGl2RWxlbWVudD4oZGl2VGFnLCBzaGFkb3dQYXJlbnQpCit7Cit9
CisKK1Bhc3NSZWZQdHI8U2hhZG93U2ltcGxlRWxlbWVudD4gU2hhZG93U2ltcGxlRWxlbWVudDo6
Y3JlYXRlKEhUTUxFbGVtZW50KiBzaGFkb3dQYXJlbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTaGFkb3dTaW1wbGVFbGVtZW50KHNoYWRvd1BhcmVudCkpOworfQorCitQYXNzUmVmUHRy
PFNoYWRvd1NpbXBsZUVsZW1lbnQ+IFNoYWRvd1NpbXBsZUVsZW1lbnQ6OmNyZWF0ZUZvclBhcnQo
SFRNTEVsZW1lbnQqIHNoYWRvd1BhcmVudCwgUHNldWRvSWQgcHNldWRvSWQpCit7CisgICAgUmVm
UHRyPFNoYWRvd1NpbXBsZUVsZW1lbnQ+IHBhcnQgPSBjcmVhdGUoc2hhZG93UGFyZW50KTsKKyAg
ICBwYXJ0LT5pbml0aWFsaXplRm9yUGFydChwc2V1ZG9JZCk7CisgICAgcmV0dXJuIHBhcnQucmVs
ZWFzZSgpOworfQorCit2b2lkIFNoYWRvd1NpbXBsZUVsZW1lbnQ6OmluaXRpYWxpemVGb3JQYXJ0
KFBzZXVkb0lkIHBzZXVkb0lkKQoreworICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIg
PSBzaGFkb3dQYXJlbnROb2RlKCktPnJlbmRlcmVyKCk7CisgICAgUmVmUHRyPFJlbmRlclN0eWxl
PiBzdHlsZUZvclBhcnQgPSBjcmVhdGVTdHlsZUZvclBhcnQocGFyZW50UmVuZGVyZXIsIHBzZXVk
b0lkKTsKKyAgICBzZXRSZW5kZXJlcihjcmVhdGVSZW5kZXJlcihwYXJlbnRSZW5kZXJlci0+cmVu
ZGVyQXJlbmEoKSwgc3R5bGVGb3JQYXJ0LmdldCgpKSk7CisgICAgcmVuZGVyZXIoKS0+c2V0QW5p
bWF0YWJsZVN0eWxlKHN0eWxlRm9yUGFydC5yZWxlYXNlKCkpOworICAgIHNldEF0dGFjaGVkKCk7
CisgICAgc2V0SW5Eb2N1bWVudCgpOworICAgIHJldHVybjsKK30KKworUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4gU2hhZG93U2ltcGxlRWxlbWVudDo6Y3JlYXRlU3R5bGVGb3JQYXJ0KFJlbmRlck9i
amVjdCogcGFyZW50UmVuZGVyZXIsIFBzZXVkb0lkIHBzZXVkb0lkKQoreworICAgIFJlZlB0cjxS
ZW5kZXJTdHlsZT4gc3R5bGVGb3JQYXJ0OworICAgIFJlbmRlclN0eWxlKiBwc2V1ZG9TdHlsZSA9
IHBhcmVudFJlbmRlcmVyLT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShwc2V1ZG9JZCk7CisgICAgaWYg
KHBzZXVkb1N0eWxlKQorICAgICAgICBzdHlsZUZvclBhcnQgPSBSZW5kZXJTdHlsZTo6Y2xvbmUo
cHNldWRvU3R5bGUpOworICAgIGVsc2UKKyAgICAgICAgc3R5bGVGb3JQYXJ0ID0gUmVuZGVyU3R5
bGU6OmNyZWF0ZSgpOworCisgICAgc3R5bGVGb3JQYXJ0LT5pbmhlcml0RnJvbShwYXJlbnRSZW5k
ZXJlci0+c3R5bGUoKSk7CisgICAgcmV0dXJuIHN0eWxlRm9yUGFydC5yZWxlYXNlKCk7Cit9CisK
IFBhc3NSZWZQdHI8U2hhZG93QmxvY2tFbGVtZW50PiBTaGFkb3dCbG9ja0VsZW1lbnQ6OmNyZWF0
ZShIVE1MRWxlbWVudCogc2hhZG93UGFyZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2hhZG93QmxvY2tFbGVtZW50KHNoYWRvd1BhcmVudCkpOwogfQogCiBTaGFkb3dCbG9ja0VsZW1l
bnQ6OlNoYWRvd0Jsb2NrRWxlbWVudChIVE1MRWxlbWVudCogc2hhZG93UGFyZW50KQotICAgIDog
U2hhZG93RWxlbWVudDxIVE1MRGl2RWxlbWVudD4oZGl2VGFnLCBzaGFkb3dQYXJlbnQpCisgICAg
OiBTaGFkb3dTaW1wbGVFbGVtZW50KHNoYWRvd1BhcmVudCkKIHsKIH0KIApAQCAtNjMsMzQgKzEw
NCwyMiBAQCB2b2lkIFNoYWRvd0Jsb2NrRWxlbWVudDo6bGF5b3V0QXNQYXJ0KGNvbnN0IEludFJl
Y3QmIHBhcnRSZWN0KQogdm9pZCBTaGFkb3dCbG9ja0VsZW1lbnQ6OnVwZGF0ZVN0eWxlRm9yUGFy
dChQc2V1ZG9JZCBwc2V1ZG9JZCkKIHsKICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS0+c3R5
bGVUeXBlKCkgIT0gcHNldWRvSWQpCi0gICAgICAgIHJlbmRlcmVyKCktPnNldFN0eWxlKGNyZWF0
ZVN0eWxlRm9yUGFydChyZW5kZXJlcigpLT5wYXJlbnQoKSwgcHNldWRvSWQpKTsKKyAgICAgICAg
cmVuZGVyZXIoKS0+c2V0QW5pbWF0YWJsZVN0eWxlKGNyZWF0ZVN0eWxlRm9yUGFydChyZW5kZXJl
cigpLT5wYXJlbnQoKSwgcHNldWRvSWQpKTsKIH0KIAogUGFzc1JlZlB0cjxTaGFkb3dCbG9ja0Vs
ZW1lbnQ+IFNoYWRvd0Jsb2NrRWxlbWVudDo6Y3JlYXRlRm9yUGFydChIVE1MRWxlbWVudCogc2hh
ZG93UGFyZW50LCBQc2V1ZG9JZCBwc2V1ZG9JZCkKIHsKLSAgICBSZW5kZXJPYmplY3QqIHBhcmVu
dFJlbmRlcmVyID0gc2hhZG93UGFyZW50LT5yZW5kZXJlcigpOwotICAgIFJlZlB0cjxSZW5kZXJT
dHlsZT4gc3R5bGVGb3JQYXJ0ID0gY3JlYXRlU3R5bGVGb3JQYXJ0KHBhcmVudFJlbmRlcmVyLCBw
c2V1ZG9JZCk7CiAgICAgUmVmUHRyPFNoYWRvd0Jsb2NrRWxlbWVudD4gcGFydCA9IGNyZWF0ZShz
aGFkb3dQYXJlbnQpOwotICAgIHBhcnQtPnNldFJlbmRlcmVyKHBhcnQtPmNyZWF0ZVJlbmRlcmVy
KHBhcmVudFJlbmRlcmVyLT5yZW5kZXJBcmVuYSgpLCBzdHlsZUZvclBhcnQuZ2V0KCkpKTsKLSAg
ICBwYXJ0LT5yZW5kZXJlcigpLT5zZXRTdHlsZShzdHlsZUZvclBhcnQucmVsZWFzZSgpKTsKLSAg
ICBwYXJ0LT5zZXRBdHRhY2hlZCgpOwotICAgIHBhcnQtPnNldEluRG9jdW1lbnQoKTsKKyAgICBw
YXJ0LT5pbml0aWFsaXplRm9yUGFydChwc2V1ZG9JZCk7CiAgICAgcmV0dXJuIHBhcnQucmVsZWFz
ZSgpOwogfQogCiBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBTaGFkb3dCbG9ja0VsZW1lbnQ6OmNy
ZWF0ZVN0eWxlRm9yUGFydChSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyLCBQc2V1ZG9JZCBw
c2V1ZG9JZCkKIHsKLSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yUGFydDsKLSAgICBS
ZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBwYXJlbnRSZW5kZXJlci0+Z2V0Q2FjaGVkUHNldWRv
U3R5bGUocHNldWRvSWQpOwotICAgIGlmIChwc2V1ZG9TdHlsZSkKLSAgICAgICAgc3R5bGVGb3JQ
YXJ0ID0gUmVuZGVyU3R5bGU6OmNsb25lKHBzZXVkb1N0eWxlKTsKLSAgICBlbHNlCi0gICAgICAg
IHN0eWxlRm9yUGFydCA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKLSAgICAKLSAgICBzdHlsZUZv
clBhcnQtPmluaGVyaXRGcm9tKHBhcmVudFJlbmRlcmVyLT5zdHlsZSgpKTsKKyAgICBQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvclBhcnQgPSBTaGFkb3dTaW1wbGVFbGVtZW50OjpjcmVh
dGVTdHlsZUZvclBhcnQocGFyZW50UmVuZGVyZXIsIHBzZXVkb0lkKTsKICAgICBzdHlsZUZvclBh
cnQtPnNldERpc3BsYXkoQkxPQ0spOwogICAgIHN0eWxlRm9yUGFydC0+c2V0QXBwZWFyYW5jZShO
b0NvbnRyb2xQYXJ0KTsKLSAgICByZXR1cm4gc3R5bGVGb3JQYXJ0LnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gc3R5bGVGb3JQYXJ0OwogfQogCiBib29sIFNoYWRvd0Jsb2NrRWxlbWVudDo6cGFydFNo
b3VsZEhhdmVTdHlsZShjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudFJlbmRlcmVyLCBQc2V1ZG9J
ZCBwc2V1ZG9JZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1NoYWRvd0VsZW1lbnQu
aCBiL1dlYkNvcmUvcmVuZGVyaW5nL1NoYWRvd0VsZW1lbnQuaAppbmRleCAwNGRiNjJiZTdmMmJi
MTBlYjAyNGNlMzAyM2ZlZDcwZjJjMzJkYTkyLi5hYWE5N2FiOTMyZDVlNmFiZmIwMWFhNjQxYTJj
NTM2YmZlOTE2M2FmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9TaGFkb3dFbGVtZW50
LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvU2hhZG93RWxlbWVudC5oCkBAIC00NCwxOSArNDQs
MzEgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogICAgIEhUTUxFbGVtZW50KiBzaGFkb3dQYXJlbnQo
KSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1BhcmVudDsgfQorICAgIHZpcnR1YWwgQ29udGFpbmVy
Tm9kZSogc2hhZG93UGFyZW50Tm9kZSgpIHsgcmV0dXJuIG1fc2hhZG93UGFyZW50OyB9CiAKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzU2hhZG93Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KLSAgICB2aXJ0dWFsIENvbnRhaW5lck5vZGUqIHNoYWRvd1BhcmVudE5vZGUoKSB7IHJl
dHVybiBtX3NoYWRvd1BhcmVudDsgfQogCiAgICAgSFRNTEVsZW1lbnQqIG1fc2hhZG93UGFyZW50
OwogfTsKIAotY2xhc3MgU2hhZG93QmxvY2tFbGVtZW50IDogcHVibGljIFNoYWRvd0VsZW1lbnQ8
SFRNTERpdkVsZW1lbnQ+IHsKK2NsYXNzIFNoYWRvd1NpbXBsZUVsZW1lbnQgOiBwdWJsaWMgU2hh
ZG93RWxlbWVudDxIVE1MRGl2RWxlbWVudD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNoYWRvd1NpbXBsZUVsZW1lbnQ+IGNyZWF0ZShIVE1MRWxlbWVudCopOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNoYWRvd1NpbXBsZUVsZW1lbnQ+IGNyZWF0ZUZvclBhcnQoSFRNTEVsZW1l
bnQqLCBQc2V1ZG9JZCk7CisKK3Byb3RlY3RlZDoKKyAgICBTaGFkb3dTaW1wbGVFbGVtZW50KEhU
TUxFbGVtZW50Kik7CisgICAgdm9pZCBpbml0aWFsaXplRm9yUGFydChQc2V1ZG9JZCk7CisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjcmVhdGVTdHlsZUZvclBhcnQoUmVuZGVy
T2JqZWN0KiwgUHNldWRvSWQpOworfTsKKworLy8gVGhpcyBlbGVtZW50IGZvcmNlcyBpdHMgc3R5
bGUgdG8gYmUgImRpc3BsYXk6YmxvY2siLgorY2xhc3MgU2hhZG93QmxvY2tFbGVtZW50IDogcHVi
bGljIFNoYWRvd1NpbXBsZUVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNoYWRvd0Jsb2NrRWxlbWVudD4gY3JlYXRlKEhUTUxFbGVtZW50Kik7CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2hhZG93QmxvY2tFbGVtZW50PiBjcmVhdGVGb3JQYXJ0KEhUTUxFbGVtZW50Kiwg
UHNldWRvSWQpOwotICAgIHN0YXRpYyBib29sIHBhcnRTaG91bGRIYXZlU3R5bGUoY29uc3QgUmVu
ZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciwgUHNldWRvSWQgcHNldWRvSWQpOworICAgIHN0YXRp
YyBib29sIHBhcnRTaG91bGRIYXZlU3R5bGUoY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5k
ZXJlciwgUHNldWRvSWQpOwogICAgIHZvaWQgbGF5b3V0QXNQYXJ0KGNvbnN0IEludFJlY3QmIHBh
cnRSZWN0KTsKICAgICB2b2lkIHVwZGF0ZVN0eWxlRm9yUGFydChQc2V1ZG9JZCk7CiAKQEAgLTY0
LDEyICs3NiwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgU2hhZG93QmxvY2tFbGVtZW50KEhUTUxFbGVt
ZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNy
ZWF0ZVN0eWxlRm9yUGFydChSZW5kZXJPYmplY3QqLCBQc2V1ZG9JZCk7CisgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjcmVhdGVTdHlsZUZvclBhcnQoUmVuZGVyT2JqZWN0Kiwg
UHNldWRvSWQpOwogfTsKIAogY2xhc3MgU2hhZG93SW5wdXRFbGVtZW50IDogcHVibGljIFNoYWRv
d0VsZW1lbnQ8SFRNTElucHV0RWxlbWVudD4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNoYWRvd0lucHV0RWxlbWVudD4gY3JlYXRlKEhUTUxFbGVtZW50Kik7CisKIHByb3RlY3Rl
ZDoKICAgICBTaGFkb3dJbnB1dEVsZW1lbnQoSFRNTEVsZW1lbnQqKTsKIH07CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAppbmRleCBiOGUyMDc5MjAx
ODI5MGFkY2EwNmNkNzQxMDg2NmNmOGY0ODJlYTViLi4yMjM4YmMwM2MyZDAwN2RhMmQ4NjQxZTBi
OGE3ZDg1MTY5YzQ4MDZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZUNvbnN0YW50cy5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlQ29uc3RhbnRzLmgKQEAgLTc4LDYgKzc4LDcgQEAgZW51bSBQc2V1ZG9JZCB7CiAgICAgSU5Q
VVRfTElTVF9CVVRUT04sIElOUFVUX1NQRUVDSF9CVVRUT04sIElOTkVSX1NQSU5fQlVUVE9OLCBP
VVRFUl9TUElOX0JVVFRPTiwgVklTSVRFRF9MSU5LLCBQUk9HUkVTU19CQVJfVkFMVUUsCiAgICAg
TUVURVJfSE9SSVpPTlRBTF9CQVIsIE1FVEVSX0hPUklaT05UQUxfT1BUSU1VTSwgTUVURVJfSE9S
SVpPTlRBTF9TVUJPUFRJTUFMLCBNRVRFUl9IT1JJWk9OVEFMX0VWRU5fTEVTU19HT09ELAogICAg
IE1FVEVSX1ZFUlRJQ0FMX0JBUiwgTUVURVJfVkVSVElDQUxfT1BUSU1VTSwgTUVURVJfVkVSVElD
QUxfU1VCT1BUSU1BTCwgTUVURVJfVkVSVElDQUxfRVZFTl9MRVNTX0dPT0QsIAorICAgIFZBTElE
QVRJT05fQlVCQkxFLCBWQUxJREFUSU9OX0JVQkJMRV9NRVNTQUdFLCBWQUxJREFUSU9OX0JVQkJM
RV9UT1BfSU5ORVIsIFZBTElEQVRJT05fQlVCQkxFX1RPUF9PVVRFUiwKICAgICBBRlRFUl9MQVNU
X0lOVEVSTkFMX1BTRVVET0lELAogICAgIEZVTExfU0NSRUVOLCBGVUxMX1NDUkVFTl9ET0NVTUVO
VCwKICAgICBGSVJTVF9QVUJMSUNfUFNFVURPSUQgPSBGSVJTVF9MSU5FLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78660</attachid>
            <date>2011-01-12 00:10:44 -0800</date>
            <delta_ts>2011-01-13 20:50:56 -0800</delta_ts>
            <desc>Patch 3 (follow recent shadow DOM changes)</desc>
            <filename>bug-48980-20110112171042.patch</filename>
            <type>text/plain</type>
            <size>12953</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlNDhiMDI0NTZmZTA4YTUxMGJjMjQ1OGQxZjEzMjc0YjM5N2NjNGRhLi4w
MGMzNWVjYjVmNTUwZjQ5NzY5YmEzZTk3MGZkYWI2OTgzNmQ2NWViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTEgQEAKKzIwMTEtMDEtMTEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxl
bWVudCBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZSBVSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg5ODAKKworICAgICAgICAqIEFkZCBmb3VyIGludGVy
bmFsIHBzZXVkbyBzZWxlY3RvcnM6CisgICAgICAgICAgLSAtd2Via2l0LXZhbGlkYXRpb24tYnVi
YmxlCisgICAgICAgICAgLSAtd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLW1lc3NhZ2UKKyAgICAg
ICAgICAtIC13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtdG9wLW91dGVyLWFycm93CisgICAgICAg
ICAgLSAtd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLXRvcC1pbm5lci1hcnJvdworCisgICAgICAg
ICogSW1wbGVtZW50IFZhbGlkYXRpb25NZXNzYWdlIGZ1bmN0aW9ucworICAgICAgICAgIFNob3cg
dGhlIG1lc3NhZ2UgZm9yIDx0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnM+IC8gMjAuMCBzZWNvbmRz
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZSBmZWF0dXJlIGlzIGRpc2FibGVk
IGJ5IGRlZmF1bHQgZm9yIG5vdyBhbmQgdGhlCisgICAgICAgIG5ldyBiZWhhdmlvciBpcyBzdHJv
bmdseSB0aW1pbmctZGVwZW5kZW50LgorCisgICAgICAgICogY3NzL2h0bWwuY3NzOiBEZWZpbmUg
YXBwZWFyYW5jZSBmb3IgdGhlIGludGVybmFsIHNlbGVjdG9ycy4KKyAgICAgICAgKDo6LXdlYmtp
dC12YWxpZGF0aW9uLWJ1YmJsZSk6CisgICAgICAgICg6Oi13ZWJraXQtdmFsaWRhdGlvbi1idWJi
bGUtbWVzc2FnZSk6CisgICAgICAgICg6Oi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtdG9wLW91
dGVyLWFycm93KToKKyAgICAgICAgKDo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS10b3AtaW5u
ZXItYXJyb3cpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkZXRhY2gpOgorICAgICAg
ICAgIFJlbW92ZSBtX3ZhbGlkYXRpb25NZXNzYWdlIGltbWVkaWF0ZWx5IGJlY2F1c2Ugd2UgY2Fu
J3QgdXNlCisgICAgICAgICAgaGlkZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpLCB3aGljaCBj
YWxscyBhIFZhbGlkYXRpb25NZXNzYWdlIGZ1bmN0aW9uIGxhdGVyLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdl
KToKKyAgICAgICAgICAtIERvbid0IGNyZWF0ZSBWYWxpZGF0aW9uTWVzc2FnZSBpZiB0aGUgbWVz
c2FnZSBpcyBlbXB0eS4KKyAgICAgICAgICAtIFJlbW92ZSB0aGUgY2hlY2sgZm9yIG1lc3NhZ2Ug
ZXF1YWxpdHkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpoaWRl
VmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgICBEb24ndCByZW1vdmUgbV92YWxp
ZGF0aW9uTWVzc2FnZSBpbW1lZGlhdGVseS4gV2Ugc2hvdWxkbid0IG1ha2UgdGhlCisgICAgICAg
ICAgZWxlbWVudCBuZWVkc0xheW91dCgpIHN0YXRlIGluIHRoaXMgY29udGV4dC4KKyAgICAgICAg
KiBodG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRp
b25NZXNzYWdlOjp+VmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAgIGhpZGVNZXNzYWdlKCkg
LT4gZGVsZXRlQnViYmxlVHJlZSgpIHJlbmFtaW5nLgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRh
dGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2UpOiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcik6CisgICAgICAg
ICAgQWRkZWQuIFRoaXMgdXBkYXRlcyB0aGUgdmFsaWRhdGlvbiBtZXNzYWdlIGFuZCBzdGFydHMg
dGhlIHRpbWVyIHRvIGhpZGUgaXQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50V2l0aFBzZXVk
b0lkKToKKyAgICAgICAgICBBZGRlZCB0byBoZWxwIGltcGxlbWVudGF0aW9ucyBvZiBzdHlsZWQg
c2hhZG93IG5vZGVzLgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1lc3NhZ2U6OmJ1aWxk
QnViYmxlVHJlZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1lc3NhZ2U6
OnJlcXVlc3RUb0hpZGVNZXNzYWdlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0
aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk6CisgICAgICAgICAgUmVuYW1lZCBmcm9tIGhp
ZGVNZXNzYWdlKCksIGFuZCBpbXBsZW1lbnRlZC4KKyAgICAgICAgKiBodG1sL1ZhbGlkYXRpb25N
ZXNzYWdlLmg6IEFkZCBkZWNsYXJhdGlvbnMuCisKIDIwMTEtMDEtMTEgIEFuZHkgRXN0ZXMgIDxh
ZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL2h0bWwuY3NzIGIvU291cmNlL1dlYkNvcmUvY3Nz
L2h0bWwuY3NzCmluZGV4IGQ2ZmJiZGZiZTEzODVkNTE3YWNlOTkwY2IxYzkxNWVlMGY1YjJkNmMu
LjYyNTE1NzhhNDYzODA5M2NmOGQ1M2YyNWQ0N2Q4MDVkYWQ1Nzc5MmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5j
c3MKQEAgLTU1Myw2ICs1NTMsNTkgQEAgb3V0cHV0IHsKICAgICBkaXNwbGF5OiBpbmxpbmU7CiB9
CiAKKy8qIGZvcm0gdmFsaWRhdGlvbiBtZXNzYWdlIGJ1YmJsZSAqLworCis6Oi13ZWJraXQtdmFs
aWRhdGlvbi1idWJibGUgeworICAgIGRpc3BsYXk6IGJsb2NrOworICAgIHotaW5kZXg6IDIxNDc0
ODM2NDc7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIG9wYWNpdHk6IDAuOTsKKyAgICBs
aW5lLWhlaWdodDogMDsKKyAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC41cyBlYXNl
OworfQorCis6Oi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtbWVzc2FnZSB7CisgICAgZGlzcGxh
eTogYmxvY2s7CisgICAgZm9udDogbWVzc2FnZS1ib3g7CisgICAgbWluLXdpZHRoOiA1MHB4Owor
ICAgIG1heC13aWR0aDogMjAwcHg7CisgICAgYm9yZGVyOiBzb2xpZCAycHggYmxhY2s7CisgICAg
YmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRv
bSwgZnJvbSgjZmJmOWY5KSwgdG8oI2YwZTRlNCkpOworICAgIHBhZGRpbmc6IDhweDsKKyAgICAt
d2Via2l0LWJvcmRlci1yYWRpdXM6IDhweDsKKyAgICAtd2Via2l0LWJveC1zaGFkb3c6IDRweCA0
cHggNHB4IHJnYmEoMjA0LDIwNCwyMDQsMC43KTsKKyAgICBsaW5lLWhlaWdodDogbm9ybWFsOwor
fQorCis6Oi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtdG9wLW91dGVyLWFycm93IHsKKyAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIGxlZnQ6
IDE0cHg7CisgICAgaGVpZ2h0OiAwOworICAgIHdpZHRoOiAwOworICAgIGJvcmRlci1zdHlsZTog
c29saWQ7CisgICAgYm9yZGVyLXdpZHRoOiAxNHB4OworICAgIGJvcmRlci1ib3R0b20tY29sb3I6
IGJsYWNrOworICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYm9yZGVy
LXRvcC13aWR0aDogMDsKKyAgICBib3JkZXItbGVmdC13aWR0aDogMDsKK30KKworOjotd2Via2l0
LXZhbGlkYXRpb24tYnViYmxlLXRvcC1pbm5lci1hcnJvdyB7CisgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgIGhlaWdodDogMDsKKyAgICB3aWR0aDogMDsKKyAgICBib3JkZXItc3R5bGU6
IHNvbGlkOworICAgIGJvcmRlci13aWR0aDogMTBweDsgLyogPGJvcmRlciBib3ggd2lkdGggb2Yg
b3V0ZXItYXJyb3c+IC0gPG1lc3NhZ2UgYm9yZGVyIHdpZHRoPiAqIDIgKi8KKyAgICBib3JkZXIt
Ym90dG9tLWNvbG9yOiAjZmJmOWY5OworICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJl
bnQ7CisgICAgYm9yZGVyLXRvcC13aWR0aDogMDsKKyAgICBib3JkZXItbGVmdC13aWR0aDogMDsK
KyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgdG9wOiAycHg7IC8qIDxtZXNzYWdlIGJvcmRl
ciB3aWR0aD4gKi8KKyAgICBsZWZ0OiAycHg7IC8qIDxvdXRlci1hcnJvdyBwb3NpdGlvbj4gKyA8
bWVzc2FnZSBib3JkZXIgd2lkdGg+IC0gPGJvcmRlciBib3ggd2lkdGggb2Ygb3V0ZXItYXJyb3c+
ICAqLworfQorCiAvKiBtZXRlciAqLwogCiBtZXRlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCA4NTU2YzFlOTg5MzAyYTEwYjQ4NmZj
YmVmZWY2MDRmOGJhMTg5OTA4Li45YTExOGE3NTRmZTdjZjM4MzQ2OTMzZDc5OTM0NjlkMGZiZDRj
Y2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5j
cHAKQEAgLTgwLDcgKzgwLDcgQEAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6fkhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQoKQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRldGFjaCgpCiB7
Ci0gICAgaGlkZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpOworICAgIG1fdmFsaWRhdGlvbk1l
c3NhZ2UgPSAwOwogICAgIEhUTUxFbGVtZW50OjpkZXRhY2goKTsKIH0KIApAQCAtMzA0LDE4ICsz
MDQsMjQgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsaWRh
dGlvbk1lc3NhZ2UoKQogICAgICAgICAgICAgbWVzc2FnZS5hcHBlbmQodGl0bGUpOwogICAgICAg
ICB9CiAgICAgfQorICAgIGlmIChtZXNzYWdlLmlzRW1wdHkoKSkgeworICAgICAgICBoaWRlVmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgaWYg
KCFtX3ZhbGlkYXRpb25NZXNzYWdlKSB7CiAgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UgPSBW
YWxpZGF0aW9uTWVzc2FnZTo6Y3JlYXRlKHRoaXMpOwogICAgICAgICBtX3ZhbGlkYXRpb25NZXNz
YWdlLT5zZXRNZXNzYWdlKG1lc3NhZ2UpOwotICAgIH0gZWxzZSBpZiAobWVzc2FnZS5pc0VtcHR5
KCkpCi0gICAgICAgIGhpZGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKLSAgICBlbHNlIGlm
IChtX3ZhbGlkYXRpb25NZXNzYWdlLT5tZXNzYWdlKCkgIT0gbWVzc2FnZSkKKyAgICB9IGVsc2Ug
eworICAgICAgICAvLyBDYWxsIHNldE1lc3NhZ2UoKSBldmVuIGlmIG1fdmFsaWRhdGlvbk1lc2Fn
ZS0+bWVzc2FnZSgpID09IG1lc3NhZ2UKKyAgICAgICAgLy8gYmVjYXVzZSB0aGUgZXhpc3Rpbmcg
bWVzc2FnZSBtaWdodCBiZSB0byBiZSBoaWRkZW4uCiAgICAgICAgIG1fdmFsaWRhdGlvbk1lc3Nh
Z2UtPnNldE1lc3NhZ2UobWVzc2FnZSk7CisgICAgfQogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ6OmhpZGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKQogewotICAgIG1fdmFsaWRh
dGlvbk1lc3NhZ2UgPSAwOworICAgIGlmIChtX3ZhbGlkYXRpb25NZXNzYWdlKQorICAgICAgICBt
X3ZhbGlkYXRpb25NZXNzYWdlLT5yZXF1ZXN0VG9IaWRlTWVzc2FnZSgpOwogfQogCiBTdHJpbmcg
SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKaW5kZXggNDQxODIzNTRk
NDY2NWU2NDgzZDk1YTBjOTMwZjNiMjBmZmY1NmYyOS4uNWU3NzcwN2E5ZDdlMjk2NzE3M2YwNGE2
ZjAxNWRjYjQwZGFkMjYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0
aW9uTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2Fn
ZS5jcHAKQEAgLTMxLDEwICszMSwxOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlZhbGlkYXRpb25NZXNzYWdlLmgiCiAKKyNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCisj
aW5jbHVkZSAiRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEJSRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgor
I2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKIEFMV0FZU19JTkxJ
TkUgVmFsaWRhdGlvbk1lc3NhZ2U6OlZhbGlkYXRpb25NZXNzYWdlKEZvcm1Bc3NvY2lhdGVkRWxl
bWVudCogZWxlbWVudCkKICAgICA6IG1fZWxlbWVudChlbGVtZW50KQogewpAQCAtNDIsNyArNTAs
NyBAQCBBTFdBWVNfSU5MSU5FIFZhbGlkYXRpb25NZXNzYWdlOjpWYWxpZGF0aW9uTWVzc2FnZShG
b3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1lbgogCiBWYWxpZGF0aW9uTWVzc2FnZTo6flZhbGlk
YXRpb25NZXNzYWdlKCkKIHsKLSAgICBoaWRlTWVzc2FnZSgpOworICAgIGRlbGV0ZUJ1YmJsZVRy
ZWUoKTsKIH0KIAogUGFzc093blB0cjxWYWxpZGF0aW9uTWVzc2FnZT4gVmFsaWRhdGlvbk1lc3Nh
Z2U6OmNyZWF0ZShGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1lbnQpCkBAIC01MiwxOCArNjAs
MTA0IEBAIFBhc3NPd25QdHI8VmFsaWRhdGlvbk1lc3NhZ2U+IFZhbGlkYXRpb25NZXNzYWdlOjpj
cmVhdGUoRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBlCiAKIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6
OnNldE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIC8vIEZJWE1FOiBDb25z
dHJ1Y3QgdmFsaWRhdGlvbiBtZXNzYWdlIFVJIGlmIG1fbWVzc2FnZSBpcyBlbXB0eS4KLQorICAg
IC8vIERvbid0IG1vZGlmeSB0aGUgRE9NIHRyZWUgaW4gdGhpcyBjb250ZXh0LgorICAgIC8vIElm
IHNvLCBhbiBhc3NlcnRpb24gaW4gTm9kZTo6aXNGb2N1c2FibGUoKSBmYWlscy4KKyAgICBBU1NF
UlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKICAgICBtX21lc3NhZ2UgPSBtZXNzYWdlOworICAgIGlm
ICghbV9idWJibGUpCisgICAgICAgIG1fdGltZXIuc2V0KG5ldyBUaW1lcjxWYWxpZGF0aW9uTWVz
c2FnZT4odGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUpKTsKKyAgICBl
bHNlCisgICAgICAgIG1fdGltZXIuc2V0KG5ldyBUaW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4odGhp
cywgJlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcikpOworICAg
IG1fdGltZXItPnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6
c2V0TWVzc2FnZURPTUFuZFN0YXJ0VGltZXIoVGltZXI8VmFsaWRhdGlvbk1lc3NhZ2U+KikKK3sK
KyAgICBBU1NFUlQobV9idWJibGVNZXNzYWdlKTsKKyAgICBtX2J1YmJsZU1lc3NhZ2UtPnJlbW92
ZUFsbENoaWxkcmVuKCk7CisgICAgVmVjdG9yPFN0cmluZz4gbGluZXM7CisgICAgbV9tZXNzYWdl
LnNwbGl0KCdcbicsIGxpbmVzKTsKKyAgICBEb2N1bWVudCogZG9jID0gbV9idWJibGVNZXNzYWdl
LT5kb2N1bWVudCgpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsaW5lcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoaSkgeworICAg
ICAgICAgICAgbV9idWJibGVNZXNzYWdlLT5hcHBlbmRDaGlsZChIVE1MQlJFbGVtZW50OjpjcmVh
dGUoZG9jKSwgZWMpOworICAgICAgICAgICAgbV9idWJibGVNZXNzYWdlLT5hcHBlbmRDaGlsZChU
ZXh0OjpjcmVhdGUoZG9jLCBsaW5lc1tpXSksIGVjKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gYm9sZCA9IEhUTUxFbGVtZW50OjpjcmVhdGUoYlRh
ZywgZG9jKTsKKyAgICAgICAgICAgIGJvbGQtPnNldElubmVyVGV4dChsaW5lc1tpXSwgZWMpOwor
ICAgICAgICAgICAgbV9idWJibGVNZXNzYWdlLT5hcHBlbmRDaGlsZChib2xkLnJlbGVhc2UoKSwg
ZWMpOworICAgICAgICB9CisgICAgfQogCi0gICAgbV90aW1lci5zZXQobmV3IFRpbWVyPFZhbGlk
YXRpb25NZXNzYWdlPih0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmhpZGVNZXNzYWdlKSk7Ci0g
ICAgbV90aW1lci0+c3RhcnRPbmVTaG90KDYuMCk7IC8vIEZJWE1FOiBzaG91bGQgYmUgPG1lc3Nh
Z2UgbGVuZ3RoPiAqIHNvbWV0aGluZy4KKyAgICBtX3RpbWVyLnNldChuZXcgVGltZXI8VmFsaWRh
dGlvbk1lc3NhZ2U+KHRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSkp
OworICAgIG1fdGltZXItPnN0YXJ0T25lU2hvdChtYXgoNS4wLCBtX21lc3NhZ2UubGVuZ3RoKCkg
LyAyMC4wKSk7CiB9CiAKLXZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OmhpZGVNZXNzYWdlKFRpbWVy
PFZhbGlkYXRpb25NZXNzYWdlPiopCitjbGFzcyBFbGVtZW50V2l0aFBzZXVkb0lkIDogcHVibGlj
IEhUTUxFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRWxlbWVu
dD4gY3JlYXRlKERvY3VtZW50KiBkb2MsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgcHNldWRvTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgRWxlbWVudFdpdGhQc2V1ZG9JZChkb2MsIHRhZ05hbWUsIHBzZXVkb05hbWUpKTsK
KyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBFbGVtZW50V2l0aFBzZXVkb0lkKERvY3VtZW50KiBk
b2MsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgcHNl
dWRvTmFtZSkKKyAgICAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2MpCisgICAgICAgICwg
bV9wc2V1ZG9OYW1lKHBzZXVkb05hbWUpIHsgfTsKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHNldWRvTmFtZTsgfQorCitwcml2YXRl
OgorICAgIEF0b21pY1N0cmluZyBtX3BzZXVkb05hbWU7Cit9OworCit2b2lkIFZhbGlkYXRpb25N
ZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUoVGltZXI8VmFsaWRhdGlvbk1lc3NhZ2U+KikKIHsKLSAg
ICAvLyBGSVhNRTogSW1wbGVtZW50LgorICAgIEhUTUxFbGVtZW50KiBob3N0ID0gdG9IVE1MRWxl
bWVudChtX2VsZW1lbnQpOworICAgIFJlbmRlck9iamVjdCogaG9zdFJlbmRlcmVyID0gaG9zdC0+
cmVuZGVyZXIoKTsKKyAgICBBU1NFUlQoaG9zdFJlbmRlcmVyKTsKKyAgICBEb2N1bWVudCogZG9j
ID0gaG9zdC0+ZG9jdW1lbnQoKTsKKyAgICBtX2J1YmJsZSA9IEVsZW1lbnRXaXRoUHNldWRvSWQ6
OmNyZWF0ZShkb2MsIGRpdlRhZywgIi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUiKTsKKyAgICBo
b3N0LT5zZXRTaGFkb3dSb290KG1fYnViYmxlKTsKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0
eWxlID0gZG9jLT5zdHlsZVNlbGVjdG9yKCktPnN0eWxlRm9yRWxlbWVudChtX2J1YmJsZS5nZXQo
KSwgaG9zdFJlbmRlcmVyLT5zdHlsZSgpLCBmYWxzZSk7CisgICAgbV9idWJibGUtPnNldFJlbmRl
cmVyKG1fYnViYmxlLT5jcmVhdGVSZW5kZXJlcihob3N0UmVuZGVyZXItPnJlbmRlckFyZW5hKCks
IHN0eWxlLmdldCgpKSk7CisgICAgbV9idWJibGUtPnJlbmRlcmVyKCktPnNldFN0eWxlKHN0eWxl
LnJlbGVhc2UoKSk7CisgICAgbV9idWJibGUtPnNldEF0dGFjaGVkKCk7CisgICAgbV9idWJibGUt
PnNldEluRG9jdW1lbnQoKTsKKyAgICBob3N0UmVuZGVyZXItPmFkZENoaWxkKG1fYnViYmxlLT5y
ZW5kZXJlcigpKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIC8vIEZJWE1FOiBX
ZSBuZWVkIHRvIHVzZSBkaWZmZXJlbnQgcXVhbGlmaWVkIG5hbWVzIGZvciB0aGUgZm9sbG93aW5n
IHRocmVlCisgICAgLy8gZWxlbWVudHMuIENTU1N0eWxlU2VsZWN0b3IgaGFzIGEgcHJvYmxlbSB0
aGF0IGVhY2ggb2YgZWxlbWVudHMgd2l0aCB0aGUKKyAgICAvLyBzYW1lIGhpZXJhcmNoeSBhbmQg
ZGlmZmVyZW50IHBzZXVkbyBJRHMgdXNlcyB0aGUgc3R5bGUgb2YgdGhlIHBzZXVkbyBJRAorICAg
IC8vIGZvciB0aGUgZmlyc3QgZWxlbWVudC4KKyAgICBtX2J1YmJsZS0+YXBwZW5kQ2hpbGQoRWxl
bWVudFdpdGhQc2V1ZG9JZDo6Y3JlYXRlKGRvYywgUXVhbGlmaWVkTmFtZSgiIiwgImRpdjEiLCAi
IiksICItd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLXRvcC1vdXRlci1hcnJvdyIpLCBlYyk7Cisg
ICAgbV9idWJibGUtPmFwcGVuZENoaWxkKEVsZW1lbnRXaXRoUHNldWRvSWQ6OmNyZWF0ZShkb2Ms
IFF1YWxpZmllZE5hbWUoIiIsICJkaXYyIiwgIiIpLCAiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJs
ZS10b3AtaW5uZXItYXJyb3ciKSwgZWMpOworICAgIG1fYnViYmxlTWVzc2FnZSA9IEVsZW1lbnRX
aXRoUHNldWRvSWQ6OmNyZWF0ZShkb2MsIFF1YWxpZmllZE5hbWUoIiIsICJkaXYzIiwgIiIpLCAi
LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1tZXNzYWdlIik7CisgICAgbV9idWJibGUtPmFwcGVu
ZENoaWxkKG1fYnViYmxlTWVzc2FnZSwgZWMpOwogCisgICAgc2V0TWVzc2FnZURPTUFuZFN0YXJ0
VGltZXIoKTsKKworICAgIC8vIEZJWE1FOiBVc2UgdHJhbnNpdGlvbiB0byBzaG93IHRoZSBidWJi
bGUuCisKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGFkanVzdCB0aGUgYnViYmxlIGxvY2F0aW9u
LiBUaGUgZGVmYXVsdCBwb3NpdGlvbiBpcyBlbm91Z2guCit9CisKK3ZvaWQgVmFsaWRhdGlvbk1l
c3NhZ2U6OnJlcXVlc3RUb0hpZGVNZXNzYWdlKCkKK3sKKyAgICAvLyBXZSBtdXN0IG5vdCBtb2Rp
ZnkgdGhlIERPTSB0cmVlIGluIHRoaXMgY29udGV4dCBieSB0aGUgc2FtZSByZWFzb24gYXMgc2V0
TWVzc2FnZSgpLgorICAgIG1fdGltZXIuc2V0KG5ldyBUaW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4o
dGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVCdWJibGVUcmVlKSk7CisgICAgbV90aW1l
ci0+c3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVC
dWJibGVUcmVlKFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPiopCit7CisgICAgaWYgKG1fYnViYmxl
KSB7CisgICAgICAgIG1fYnViYmxlTWVzc2FnZSA9IDA7CisgICAgICAgIHRvSFRNTEVsZW1lbnQo
bV9lbGVtZW50KS0+c2V0U2hhZG93Um9vdCgwKTsKKyAgICAgICAgbV9idWJibGUtPmRldGFjaCgp
OworICAgICAgICBtX2J1YmJsZSA9IDA7CisgICAgfQogICAgIG1fbWVzc2FnZSA9IFN0cmluZygp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmgKaW5kZXggZDc4ZTNm
MzM0NDYzNmU5MjNhOGJlN2I2Njg4NDdjYzlmYzI0NmRjYy4uNWZhMWY5NmY2OGFhZDVjN2VkMWYy
MTBkZjNlZjk0MzliNzZiNDE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxp
ZGF0aW9uTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3Nh
Z2UuaApAQCAtMzQsMTEgKzM0LDEzIEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDsKK2NsYXNzIEhUTUxFbGVt
ZW50OwogCiBjbGFzcyBWYWxpZGF0aW9uTWVzc2FnZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBw
dWJsaWM6CkBAIC00NiwxNCArNDgsMTkgQEAgcHVibGljOgogICAgIH5WYWxpZGF0aW9uTWVzc2Fn
ZSgpOwogICAgIFN0cmluZyBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9CiAg
ICAgdm9pZCBzZXRNZXNzYWdlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgcmVxdWVzdFRvSGlk
ZU1lc3NhZ2UoKTsKIAogcHJpdmF0ZToKICAgICBWYWxpZGF0aW9uTWVzc2FnZShGb3JtQXNzb2Np
YXRlZEVsZW1lbnQqKTsKLSAgICB2b2lkIGhpZGVNZXNzYWdlKFRpbWVyPFZhbGlkYXRpb25NZXNz
YWdlPiogPSAwKTsKKyAgICB2b2lkIHNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKFRpbWVyPFZh
bGlkYXRpb25NZXNzYWdlPiogPSAwKTsKKyAgICB2b2lkIGJ1aWxkQnViYmxlVHJlZShUaW1lcjxW
YWxpZGF0aW9uTWVzc2FnZT4qKTsKKyAgICB2b2lkIGRlbGV0ZUJ1YmJsZVRyZWUoVGltZXI8VmFs
aWRhdGlvbk1lc3NhZ2U+KiA9IDApOwogCiAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBtX2Vs
ZW1lbnQ7CiAgICAgU3RyaW5nIG1fbWVzc2FnZTsKICAgICBPd25QdHI8VGltZXI8VmFsaWRhdGlv
bk1lc3NhZ2U+ID4gbV90aW1lcjsKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1fYnViYmxlOwor
ICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9idWJibGVNZXNzYWdlOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78886</attachid>
            <date>2011-01-13 20:42:42 -0800</date>
            <delta_ts>2011-01-13 22:25:27 -0800</delta_ts>
            <desc>Patch 4</desc>
            <filename>bug-48980-20110114134240.patch</filename>
            <type>text/plain</type>
            <size>14424</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0ODJmOTRkOWU0NzVkMzI5ZDJlOTRiMWY2OTA5YzlhZjY2MTJkMzk2Li5i
NTQ4N2VhNTk5YzQxNzIzYTAxYTFiMmY1ODFhZjg0NTIzMGRiMzdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTcgQEAKKzIwMTEtMDEtMTEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxl
bWVudCBmb3JtIHZhbGlkYXRpb24gbWVzc2FnZSBVSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg5ODAKKworICAgICAgICAqIEFkZCBmb3VyIGludGVy
bmFsIHBzZXVkbyBzZWxlY3RvcnM6CisgICAgICAgICAgLSAtd2Via2l0LXZhbGlkYXRpb24tYnVi
YmxlCisgICAgICAgICAgLSAtd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLW1lc3NhZ2UKKyAgICAg
ICAgICAtIC13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtdG9wLW91dGVyLWFycm93CisgICAgICAg
ICAgLSAtd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLXRvcC1pbm5lci1hcnJvdworCisgICAgICAg
ICogSW1wbGVtZW50IFZhbGlkYXRpb25NZXNzYWdlIGZ1bmN0aW9ucworICAgICAgICAgIFNob3cg
dGhlIG1lc3NhZ2UgZm9yIDx0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnM+IC8gMjAuMCBzZWNvbmRz
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZSBmZWF0dXJlIGlzIGRpc2FibGVk
IGJ5IGRlZmF1bHQgZm9yIG5vdyBhbmQgdGhlCisgICAgICAgIG5ldyBiZWhhdmlvciBpcyBzdHJv
bmdseSB0aW1pbmctZGVwZW5kZW50LgorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2FuU2hhcmVTdHlsZVdp
dGhFbGVtZW50KToKKyAgICAgICAgICBEbyBub3Qgc2hhcmUgYSBzdHlsZSB3aXRoIGVsZW1lbnRz
IHdpdGggZGlmZmVyZW50IHNoYWRvd1BzZXVkb0lkKCkuCisgICAgICAgICogY3NzL2h0bWwuY3Nz
OiBEZWZpbmUgYXBwZWFyYW5jZSBmb3IgdGhlIGludGVybmFsIHNlbGVjdG9ycy4KKyAgICAgICAg
KDo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZSk6CisgICAgICAgICg6Oi13ZWJraXQtdmFsaWRh
dGlvbi1idWJibGUtbWVzc2FnZSk6CisgICAgICAgICg6Oi13ZWJraXQtdmFsaWRhdGlvbi1idWJi
bGUtdG9wLW91dGVyLWFycm93KToKKyAgICAgICAgKDo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJs
ZS10b3AtaW5uZXItYXJyb3cpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQpOgorICAgICAgICAgIEFsbG93IHRv
IGFkZCBzaGFkb3cgcmVuZGVyZXJzIGV2ZW4gaWYgY2FuSGF2ZUNoaWxkcmVuKCkgcmV0dXJucyBm
YWxzZS4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGV0YWNoKToKKyAgICAgICAgICBS
ZW1vdmUgbV92YWxpZGF0aW9uTWVzc2FnZSBpbW1lZGlhdGVseSBiZWNhdXNlIHdlIGNhbid0IHVz
ZQorICAgICAgICAgIGhpZGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKSwgd2hpY2ggY2FsbHMg
YSBWYWxpZGF0aW9uTWVzc2FnZSBmdW5jdGlvbiBsYXRlci4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSk6Cisg
ICAgICAgICAgLSBEb24ndCBjcmVhdGUgVmFsaWRhdGlvbk1lc3NhZ2UgaWYgdGhlIG1lc3NhZ2Ug
aXMgZW1wdHkuCisgICAgICAgICAgLSBSZW1vdmUgdGhlIGNoZWNrIGZvciBtZXNzYWdlIGVxdWFs
aXR5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6aGlkZVZpc2li
bGVWYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICAgRG9uJ3QgcmVtb3ZlIG1fdmFsaWRhdGlv
bk1lc3NhZ2UgaW1tZWRpYXRlbHkuIFdlIHNob3VsZG4ndCBtYWtlIHRoZQorICAgICAgICAgIGVs
ZW1lbnQgbmVlZHNMYXlvdXQoKSBzdGF0ZSBpbiB0aGlzIGNvbnRleHQuCisgICAgICAgICogaHRt
bC9WYWxpZGF0aW9uTWVzc2FnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVz
c2FnZTo6flZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgICBoaWRlTWVzc2FnZSgpIC0+IGRl
bGV0ZUJ1YmJsZVRyZWUoKSByZW5hbWluZy4KKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25N
ZXNzYWdlOjpzZXRNZXNzYWdlKTogSW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJDb3JlOjpWYWxp
ZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZURPTUFuZFN0YXJ0VGltZXIpOgorICAgICAgICAgIEFk
ZGVkLiBUaGlzIHVwZGF0ZXMgdGhlIHZhbGlkYXRpb24gbWVzc2FnZSBhbmQgc3RhcnRzIHRoZSB0
aW1lciB0byBoaWRlIGl0LgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFdpdGhQc2V1ZG9JZCk6
CisgICAgICAgICAgQWRkZWQgdG8gaGVscCBpbXBsZW1lbnRhdGlvbnMgb2Ygc3R5bGVkIHNoYWRv
dyBub2Rlcy4KKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJs
ZVRyZWUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpyZXF1
ZXN0VG9IaWRlTWVzc2FnZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1l
c3NhZ2U6OmRlbGV0ZUJ1YmJsZVRyZWUpOgorICAgICAgICAgIFJlbmFtZWQgZnJvbSBoaWRlTWVz
c2FnZSgpLCBhbmQgaW1wbGVtZW50ZWQuCisgICAgICAgICogaHRtbC9WYWxpZGF0aW9uTWVzc2Fn
ZS5oOiBBZGQgZGVjbGFyYXRpb25zLgorCiAyMDExLTAxLTEzICBFdmFuIE1hcnRpbiAgPGV2YW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggNjM2M2NhOWI2NmFiYWQ0Zjk3NGEx
NmY3MTI4ZjFhODRkNmVhYTYwNi4uYjlmOWJhYjdiZjgyZjBiNWY5NmJhYjVlYmMyNzFjYjc3ZTUw
MDA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtOTgxLDYg
Kzk4MSw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50
KE5vZGUqIG4pIGNvbnN0CiAgICAgICAgICAgICAocy0+aG92ZXJlZCgpID09IG1fZWxlbWVudC0+
aG92ZXJlZCgpKSAmJgogICAgICAgICAgICAgKHMtPmFjdGl2ZSgpID09IG1fZWxlbWVudC0+YWN0
aXZlKCkpICYmCiAgICAgICAgICAgICAocy0+Zm9jdXNlZCgpID09IG1fZWxlbWVudC0+Zm9jdXNl
ZCgpKSAmJgorICAgICAgICAgICAgKHMtPnNoYWRvd1BzZXVkb0lkKCkgPT0gbV9lbGVtZW50LT5z
aGFkb3dQc2V1ZG9JZCgpKSAmJgogICAgICAgICAgICAgKHMgIT0gcy0+ZG9jdW1lbnQoKS0+Y3Nz
VGFyZ2V0KCkgJiYgbV9lbGVtZW50ICE9IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+Y3NzVGFyZ2V0
KCkpICYmCiAgICAgICAgICAgICAocy0+ZmFzdEdldEF0dHJpYnV0ZSh0eXBlQXR0cikgPT0gbV9l
bGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKHR5cGVBdHRyKSkgJiYKICAgICAgICAgICAgIChzLT5m
YXN0R2V0QXR0cmlidXRlKFhNTE5hbWVzOjpsYW5nQXR0cikgPT0gbV9lbGVtZW50LT5mYXN0R2V0
QXR0cmlidXRlKFhNTE5hbWVzOjpsYW5nQXR0cikpICYmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvaHRtbC5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvaHRtbC5jc3MKaW5kZXggZmIz
YTJjOGYxZjM0OWRhNzU1OTI1ZWZmZmYyOWY0YmY4Nzk3MzQyMi4uZDViM2ExOWE5NDYyMmRiOTUx
YjFhZjdlM2JjODQ3ZDY2YmM3ZjA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL2h0
bWwuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9odG1sLmNzcwpAQCAtNTUzLDYgKzU1Myw1
OSBAQCBvdXRwdXQgewogICAgIGRpc3BsYXk6IGlubGluZTsKIH0KIAorLyogZm9ybSB2YWxpZGF0
aW9uIG1lc3NhZ2UgYnViYmxlICovCisKKzo6LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZSB7Cisg
ICAgZGlzcGxheTogYmxvY2s7CisgICAgei1pbmRleDogMjE0NzQ4MzY0NzsKKyAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgICAgb3BhY2l0eTogMC45OworICAgIGxpbmUtaGVpZ2h0OiAwOworICAg
IC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwNS41cyBlYXNlOworfQorCis6Oi13ZWJraXQt
dmFsaWRhdGlvbi1idWJibGUtbWVzc2FnZSB7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgZm9u
dDogbWVzc2FnZS1ib3g7CisgICAgbWluLXdpZHRoOiA1MHB4OworICAgIG1heC13aWR0aDogMjAw
cHg7CisgICAgYm9yZGVyOiBzb2xpZCAycHggYmxhY2s7CisgICAgYmFja2dyb3VuZDogLXdlYmtp
dC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbSgjZmJmOWY5KSwg
dG8oI2YwZTRlNCkpOworICAgIHBhZGRpbmc6IDhweDsKKyAgICAtd2Via2l0LWJvcmRlci1yYWRp
dXM6IDhweDsKKyAgICAtd2Via2l0LWJveC1zaGFkb3c6IDRweCA0cHggNHB4IHJnYmEoMjA0LDIw
NCwyMDQsMC43KTsKKyAgICBsaW5lLWhlaWdodDogbm9ybWFsOworfQorCis6Oi13ZWJraXQtdmFs
aWRhdGlvbi1idWJibGUtdG9wLW91dGVyLWFycm93IHsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIGxlZnQ6IDE0cHg7CisgICAgaGVpZ2h0
OiAwOworICAgIHdpZHRoOiAwOworICAgIGJvcmRlci1zdHlsZTogc29saWQ7CisgICAgYm9yZGVy
LXdpZHRoOiAxNHB4OworICAgIGJvcmRlci1ib3R0b20tY29sb3I6IGJsYWNrOworICAgIGJvcmRl
ci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYm9yZGVyLXRvcC13aWR0aDogMDsKKyAg
ICBib3JkZXItbGVmdC13aWR0aDogMDsKK30KKworOjotd2Via2l0LXZhbGlkYXRpb24tYnViYmxl
LXRvcC1pbm5lci1hcnJvdyB7CisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIGhlaWdo
dDogMDsKKyAgICB3aWR0aDogMDsKKyAgICBib3JkZXItc3R5bGU6IHNvbGlkOworICAgIGJvcmRl
ci13aWR0aDogMTBweDsgLyogPGJvcmRlciBib3ggd2lkdGggb2Ygb3V0ZXItYXJyb3c+IC0gPG1l
c3NhZ2UgYm9yZGVyIHdpZHRoPiAqIDIgKi8KKyAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmJm
OWY5OworICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CisgICAgYm9yZGVyLXRv
cC13aWR0aDogMDsKKyAgICBib3JkZXItbGVmdC13aWR0aDogMDsKKyAgICBwb3NpdGlvbjogcmVs
YXRpdmU7CisgICAgdG9wOiAycHg7IC8qIDxtZXNzYWdlIGJvcmRlciB3aWR0aD4gKi8KKyAgICBs
ZWZ0OiAycHg7IC8qIDxvdXRlci1hcnJvdyBwb3NpdGlvbj4gKyA8bWVzc2FnZSBib3JkZXIgd2lk
dGg+IC0gPGJvcmRlciBib3ggd2lkdGggb2Ygb3V0ZXItYXJyb3c+ICAqLworfQorCiAvKiBtZXRl
ciAqLwogCiBtZXRlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNzgzNzcwN2MxZjYyMzEzYjRkNGNl
ZDRkZTEzZjk1OWU5NDNmNzM1My4uMjY5M2ExYjRjNTU4YTQ1MTEyYWEzZjdhMjcyOGE3ODcwMDJj
OTAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTM4MSw3ICsxMzgxLDcgQEAgdm9pZCBOb2RlOjpj
cmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKICAgICB9CiAjZW5kaWYKICAgICAKLSAgICBpZiAocGFy
ZW50UmVuZGVyZXIgJiYgcGFyZW50UmVuZGVyZXItPmNhbkhhdmVDaGlsZHJlbigpICYmIHBhcmVu
dC0+Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcih0aGlzKSkgeworICAgIGlmIChwYXJlbnRSZW5k
ZXJlciAmJiAocGFyZW50UmVuZGVyZXItPmNhbkhhdmVDaGlsZHJlbigpIHx8IGlzU2hhZG93Um9v
dCgpKSAmJiBwYXJlbnQtPmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIodGhpcykpIHsKICAgICAg
ICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IHN0eWxlRm9yUmVuZGVyZXIoKTsKICAgICAg
ICAgaWYgKHJlbmRlcmVySXNOZWVkZWQoc3R5bGUuZ2V0KCkpKSB7CiAgICAgICAgICAgICBpZiAo
UmVuZGVyT2JqZWN0KiByID0gY3JlYXRlUmVuZGVyZXIoZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEo
KSwgc3R5bGUuZ2V0KCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmNwcAppbmRleCA3MTQzMTFlMWI1MTA0MWJlY2Y0MDAxNGE0YjhiZjdiZjk0ZGMy
OTdkLi5iM2FkN2M4NDNiNjM1MDU5NjhkZjZlM2M0ZTAzNDk1ODUxMzI0ZmY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTgwLDcgKzgw
LDcgQEAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6fkhUTUxGb3JtQ29udHJvbEVsZW1lbnQoKQog
CiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRldGFjaCgpCiB7Ci0gICAgaGlkZVZpc2li
bGVWYWxpZGF0aW9uTWVzc2FnZSgpOworICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UgPSAwOwogICAg
IEhUTUxFbGVtZW50OjpkZXRhY2goKTsKIH0KIApAQCAtMzEwLDE4ICszMTAsMjQgQEAgdm9pZCBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKQog
ICAgICAgICAgICAgbWVzc2FnZS5hcHBlbmQodGl0bGUpOwogICAgICAgICB9CiAgICAgfQorICAg
IGlmIChtZXNzYWdlLmlzRW1wdHkoKSkgeworICAgICAgICBoaWRlVmlzaWJsZVZhbGlkYXRpb25N
ZXNzYWdlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgaWYgKCFtX3ZhbGlkYXRpb25N
ZXNzYWdlKSB7CiAgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UgPSBWYWxpZGF0aW9uTWVzc2Fn
ZTo6Y3JlYXRlKHRoaXMpOwogICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlLT5zZXRNZXNzYWdl
KG1lc3NhZ2UpOwotICAgIH0gZWxzZSBpZiAobWVzc2FnZS5pc0VtcHR5KCkpCi0gICAgICAgIGhp
ZGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKLSAgICBlbHNlIGlmIChtX3ZhbGlkYXRpb25N
ZXNzYWdlLT5tZXNzYWdlKCkgIT0gbWVzc2FnZSkKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBD
YWxsIHNldE1lc3NhZ2UoKSBldmVuIGlmIG1fdmFsaWRhdGlvbk1lc2FnZS0+bWVzc2FnZSgpID09
IG1lc3NhZ2UKKyAgICAgICAgLy8gYmVjYXVzZSB0aGUgZXhpc3RpbmcgbWVzc2FnZSBtaWdodCBi
ZSB0byBiZSBoaWRkZW4uCiAgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UtPnNldE1lc3NhZ2Uo
bWVzc2FnZSk7CisgICAgfQogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmhpZGVW
aXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKQogewotICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UgPSAw
OworICAgIGlmIChtX3ZhbGlkYXRpb25NZXNzYWdlKQorICAgICAgICBtX3ZhbGlkYXRpb25NZXNz
YWdlLT5yZXF1ZXN0VG9IaWRlTWVzc2FnZSgpOwogfQogCiBTdHJpbmcgSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6dmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKaW5kZXggNDQxODIzNTRkNDY2NWU2NDgzZDk1YTBj
OTMwZjNiMjBmZmY1NmYyOS4uMmFlZjMzMWZmY2U3NTFiMDdmZjgzMjcyYzhmZmMwYWY3NzVhYzhk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKQEAgLTMxLDEw
ICszMSwxOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlZhbGlkYXRpb25NZXNz
YWdlLmgiCiAKKyNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCisjaW5jbHVkZSAiRm9ybUFz
c29jaWF0ZWRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEJSRWxlbWVudC5oIgorI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlRleHQu
aCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKIEFMV0FZU19JTkxJTkUgVmFsaWRhdGlvbk1l
c3NhZ2U6OlZhbGlkYXRpb25NZXNzYWdlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogZWxlbWVudCkK
ICAgICA6IG1fZWxlbWVudChlbGVtZW50KQogewpAQCAtNDIsNyArNTAsNyBAQCBBTFdBWVNfSU5M
SU5FIFZhbGlkYXRpb25NZXNzYWdlOjpWYWxpZGF0aW9uTWVzc2FnZShGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQqIGVsZW1lbgogCiBWYWxpZGF0aW9uTWVzc2FnZTo6flZhbGlkYXRpb25NZXNzYWdlKCkK
IHsKLSAgICBoaWRlTWVzc2FnZSgpOworICAgIGRlbGV0ZUJ1YmJsZVRyZWUoKTsKIH0KIAogUGFz
c093blB0cjxWYWxpZGF0aW9uTWVzc2FnZT4gVmFsaWRhdGlvbk1lc3NhZ2U6OmNyZWF0ZShGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQqIGVsZW1lbnQpCkBAIC01MiwxOCArNjAsMTAzIEBAIFBhc3NPd25Q
dHI8VmFsaWRhdGlvbk1lc3NhZ2U+IFZhbGlkYXRpb25NZXNzYWdlOjpjcmVhdGUoRm9ybUFzc29j
aWF0ZWRFbGVtZW50KiBlCiAKIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2UoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIC8vIEZJWE1FOiBDb25zdHJ1Y3QgdmFsaWRhdGlv
biBtZXNzYWdlIFVJIGlmIG1fbWVzc2FnZSBpcyBlbXB0eS4KLQorICAgIC8vIERvbid0IG1vZGlm
eSB0aGUgRE9NIHRyZWUgaW4gdGhpcyBjb250ZXh0LgorICAgIC8vIElmIHNvLCBhbiBhc3NlcnRp
b24gaW4gTm9kZTo6aXNGb2N1c2FibGUoKSBmYWlscy4KKyAgICBBU1NFUlQoIW1lc3NhZ2UuaXNF
bXB0eSgpKTsKICAgICBtX21lc3NhZ2UgPSBtZXNzYWdlOworICAgIGlmICghbV9idWJibGUpCisg
ICAgICAgIG1fdGltZXIuc2V0KG5ldyBUaW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4odGhpcywgJlZh
bGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUpKTsKKyAgICBlbHNlCisgICAgICAgIG1f
dGltZXIuc2V0KG5ldyBUaW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4odGhpcywgJlZhbGlkYXRpb25N
ZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcikpOworICAgIG1fdGltZXItPnN0YXJ0
T25lU2hvdCgwKTsKK30KKwordm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZURPTUFu
ZFN0YXJ0VGltZXIoVGltZXI8VmFsaWRhdGlvbk1lc3NhZ2U+KikKK3sKKyAgICBBU1NFUlQobV9i
dWJibGVNZXNzYWdlKTsKKyAgICBtX2J1YmJsZU1lc3NhZ2UtPnJlbW92ZUFsbENoaWxkcmVuKCk7
CisgICAgVmVjdG9yPFN0cmluZz4gbGluZXM7CisgICAgbV9tZXNzYWdlLnNwbGl0KCdcbicsIGxp
bmVzKTsKKyAgICBEb2N1bWVudCogZG9jID0gbV9idWJibGVNZXNzYWdlLT5kb2N1bWVudCgpOwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
aW5lcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoaSkgeworICAgICAgICAgICAgbV9idWJi
bGVNZXNzYWdlLT5hcHBlbmRDaGlsZChIVE1MQlJFbGVtZW50OjpjcmVhdGUoZG9jKSwgZWMpOwor
ICAgICAgICAgICAgbV9idWJibGVNZXNzYWdlLT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9j
LCBsaW5lc1tpXSksIGVjKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFJlZlB0cjxI
VE1MRWxlbWVudD4gYm9sZCA9IEhUTUxFbGVtZW50OjpjcmVhdGUoYlRhZywgZG9jKTsKKyAgICAg
ICAgICAgIGJvbGQtPnNldElubmVyVGV4dChsaW5lc1tpXSwgZWMpOworICAgICAgICAgICAgbV9i
dWJibGVNZXNzYWdlLT5hcHBlbmRDaGlsZChib2xkLnJlbGVhc2UoKSwgZWMpOworICAgICAgICB9
CisgICAgfQogCi0gICAgbV90aW1lci5zZXQobmV3IFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPih0
aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmhpZGVNZXNzYWdlKSk7Ci0gICAgbV90aW1lci0+c3Rh
cnRPbmVTaG90KDYuMCk7IC8vIEZJWE1FOiBzaG91bGQgYmUgPG1lc3NhZ2UgbGVuZ3RoPiAqIHNv
bWV0aGluZy4KKyAgICBtX3RpbWVyLnNldChuZXcgVGltZXI8VmFsaWRhdGlvbk1lc3NhZ2U+KHRo
aXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSkpOworICAgIG1fdGltZXIt
PnN0YXJ0T25lU2hvdChtYXgoNS4wLCBtX21lc3NhZ2UubGVuZ3RoKCkgLyAyMC4wKSk7CiB9CiAK
LXZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OmhpZGVNZXNzYWdlKFRpbWVyPFZhbGlkYXRpb25NZXNz
YWdlPiopCitjbGFzcyBFbGVtZW50V2l0aFBzZXVkb0lkIDogcHVibGljIEhUTUxFbGVtZW50IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlKERvY3Vt
ZW50KiBkb2MsIGNvbnN0IEF0b21pY1N0cmluZyYgcHNldWRvTmFtZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgRWxlbWVudFdpdGhQc2V1ZG9JZChkb2MsIHBzZXVkb05hbWUp
KTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICBFbGVtZW50V2l0aFBzZXVkb0lkKERvY3VtZW50
KiBkb2MsIGNvbnN0IEF0b21pY1N0cmluZyYgcHNldWRvTmFtZSkKKyAgICAgICAgOiBIVE1MRWxl
bWVudChkaXZUYWcsIGRvYykKKyAgICAgICAgLCBtX3BzZXVkb05hbWUocHNldWRvTmFtZSkgeyB9
OworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgeyByZXR1
cm4gbV9wc2V1ZG9OYW1lOyB9CisKK3ByaXZhdGU6CisgICAgQXRvbWljU3RyaW5nIG1fcHNldWRv
TmFtZTsKK307CisKK3ZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OmJ1aWxkQnViYmxlVHJlZShUaW1l
cjxWYWxpZGF0aW9uTWVzc2FnZT4qKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAg
SFRNTEVsZW1lbnQqIGhvc3QgPSB0b0hUTUxFbGVtZW50KG1fZWxlbWVudCk7CisgICAgRG9jdW1l
bnQqIGRvYyA9IGhvc3QtPmRvY3VtZW50KCk7CisgICAgbV9idWJibGUgPSBFbGVtZW50V2l0aFBz
ZXVkb0lkOjpjcmVhdGUoZG9jLCAiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZSIpOworICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIC8vIEZJWE1FOiBXZSBuZWVkIGEgd2F5IHRvIGhvc3Qg
bXVsdGlwbGUgc2hhZG93IHJvb3RzIGluIGEgc2luZ2xlIG5vZGUuCisgICAgaWYgKGhvc3QtPnNo
YWRvd1Jvb3QoKSkKKyAgICAgICAgaG9zdC0+c2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChtX2J1
YmJsZS5nZXQoKSwgZWMpOworICAgIGVsc2UgeworICAgICAgICBob3N0LT5zZXRTaGFkb3dSb290
KG1fYnViYmxlKTsKKyAgICAgICAgbV9idWJibGUtPmF0dGFjaCgpOworICAgIH0KKworICAgIG1f
YnViYmxlLT5hcHBlbmRDaGlsZChFbGVtZW50V2l0aFBzZXVkb0lkOjpjcmVhdGUoZG9jLCAiLXdl
YmtpdC12YWxpZGF0aW9uLWJ1YmJsZS10b3Atb3V0ZXItYXJyb3ciKSwgZWMpOworICAgIG1fYnVi
YmxlLT5hcHBlbmRDaGlsZChFbGVtZW50V2l0aFBzZXVkb0lkOjpjcmVhdGUoZG9jLCAiLXdlYmtp
dC12YWxpZGF0aW9uLWJ1YmJsZS10b3AtaW5uZXItYXJyb3ciKSwgZWMpOworICAgIG1fYnViYmxl
TWVzc2FnZSA9IEVsZW1lbnRXaXRoUHNldWRvSWQ6OmNyZWF0ZShkb2MsICItd2Via2l0LXZhbGlk
YXRpb24tYnViYmxlLW1lc3NhZ2UiKTsKKyAgICBtX2J1YmJsZS0+YXBwZW5kQ2hpbGQobV9idWJi
bGVNZXNzYWdlLCBlYyk7CiAKKyAgICBzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcigpOworCisg
ICAgLy8gRklYTUU6IFVzZSB0cmFuc2l0aW9uIHRvIHNob3cgdGhlIGJ1YmJsZS4KKworICAgIC8v
IFdlIGRvbid0IG5lZWQgdG8gYWRqdXN0IHRoZSBidWJibGUgbG9jYXRpb24uIFRoZSBkZWZhdWx0
IHBvc2l0aW9uIGlzIGVub3VnaC4KK30KKwordm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6cmVxdWVz
dFRvSGlkZU1lc3NhZ2UoKQoreworICAgIC8vIFdlIG11c3Qgbm90IG1vZGlmeSB0aGUgRE9NIHRy
ZWUgaW4gdGhpcyBjb250ZXh0IGJ5IHRoZSBzYW1lIHJlYXNvbiBhcyBzZXRNZXNzYWdlKCkuCisg
ICAgbV90aW1lci5zZXQobmV3IFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPih0aGlzLCAmVmFsaWRh
dGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRyZWUpKTsKKyAgICBtX3RpbWVyLT5zdGFydE9uZVNo
b3QoMCk7Cit9CisKK3ZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRyZWUoVGlt
ZXI8VmFsaWRhdGlvbk1lc3NhZ2U+KikKK3sKKyAgICBpZiAobV9idWJibGUpIHsKKyAgICAgICAg
bV9idWJibGVNZXNzYWdlID0gMDsKKyAgICAgICAgSFRNTEVsZW1lbnQqIGhvc3QgPSB0b0hUTUxF
bGVtZW50KG1fZWxlbWVudCk7CisgICAgICAgIGlmIChtX2J1YmJsZS0+aXNTaGFkb3dSb290KCkp
CisgICAgICAgICAgICBob3N0LT5zZXRTaGFkb3dSb290KDApOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgICAgICBob3N0LT5zaGFkb3dSb290
KCktPnJlbW92ZUNoaWxkKG1fYnViYmxlLmdldCgpLCBlYyk7CisgICAgICAgIH0KKyAgICAgICAg
bV9idWJibGUgPSAwOworICAgIH0KICAgICBtX21lc3NhZ2UgPSBTdHJpbmcoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5oCmluZGV4IGQ3OGUzZjMzNDQ2MzZlOTIz
YThiZTdiNjY4ODQ3Y2M5ZmMyNDZkY2MuLjVmYTFmOTZmNjhhYWQ1YzdlZDFmMjEwZGYzZWY5NDM5
Yjc2YjQxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3Nh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmgKQEAgLTM0
LDExICszNCwxMyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ7CitjbGFzcyBIVE1MRWxlbWVudDsKIAogY2xh
c3MgVmFsaWRhdGlvbk1lc3NhZ2UgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgpAQCAt
NDYsMTQgKzQ4LDE5IEBAIHB1YmxpYzoKICAgICB+VmFsaWRhdGlvbk1lc3NhZ2UoKTsKICAgICBT
dHJpbmcgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQogICAgIHZvaWQgc2V0
TWVzc2FnZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHJlcXVlc3RUb0hpZGVNZXNzYWdlKCk7
CiAKIHByaXZhdGU6CiAgICAgVmFsaWRhdGlvbk1lc3NhZ2UoRm9ybUFzc29jaWF0ZWRFbGVtZW50
Kik7Ci0gICAgdm9pZCBoaWRlTWVzc2FnZShUaW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4qID0gMCk7
CisgICAgdm9pZCBzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcihUaW1lcjxWYWxpZGF0aW9uTWVz
c2FnZT4qID0gMCk7CisgICAgdm9pZCBidWlsZEJ1YmJsZVRyZWUoVGltZXI8VmFsaWRhdGlvbk1l
c3NhZ2U+Kik7CisgICAgdm9pZCBkZWxldGVCdWJibGVUcmVlKFRpbWVyPFZhbGlkYXRpb25NZXNz
YWdlPiogPSAwKTsKIAogICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogbV9lbGVtZW50OwogICAg
IFN0cmluZyBtX21lc3NhZ2U7CiAgICAgT3duUHRyPFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPiA+
IG1fdGltZXI7CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX2J1YmJsZTsKKyAgICBSZWZQdHI8
SFRNTEVsZW1lbnQ+IG1fYnViYmxlTWVzc2FnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>