<?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>113362</bug_id>
          
          <creation_ts>2013-03-26 19:50:37 -0700</creation_ts>
          <short_desc>[Custom Elements]: document.register doesn&apos;t upgrade nodes in document above the registering script tag</short_desc>
          <delta_ts>2015-10-16 00:48:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          
          <blocked>99688</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Scott Miles">sjmiles</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>ericbidelman</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rniwa</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>864189</commentid>
    <comment_count>0</comment_count>
      <attachid>195209</attachid>
    <who name="Scott Miles">sjmiles</who>
    <bug_when>2013-03-26 19:50:37 -0700</bug_when>
    <thetext>Created attachment 195209
Test document for above

Given this construction:

  &lt;x-foo&gt;&lt;/x-foo&gt;
  &lt;script&gt;  
    document.register(&apos;x-foo&apos;, ...);
  &lt;/script&gt;
  &lt;x-foo&gt;&lt;/x-foo&gt;

Only the second x-foo gets upgraded.

The spec says that after document.register,

  9. For DOCUMENT tree and every shadow DOM subtree enclosed by DOCUMENT tree:
    1. Let TREE be this tree
    2. Run element upgrade algorithm with TREE and DEFINITION as arguments

I *think* that means both x-foos above should be upgraded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864190</commentid>
    <comment_count>1</comment_count>
      <attachid>195210</attachid>
    <who name="Scott Miles">sjmiles</who>
    <bug_when>2013-03-26 19:52:32 -0700</bug_when>
    <thetext>Created attachment 195210
Test showing document.register upgrade issue

Previous test said &quot;results in console&quot; when they are not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864191</commentid>
    <comment_count>2</comment_count>
      <attachid>195210</attachid>
    <who name="Scott Miles">sjmiles</who>
    <bug_when>2013-03-26 19:54:02 -0700</bug_when>
    <thetext>Comment on attachment 195210
Test showing document.register upgrade issue

&gt;&lt;!DOCTYPE html&gt;
&gt;&lt;!--
&gt;Copyright 2013 The Toolkitchen Authors. All rights reserved.
&gt;Use of this source code is governed by a BSD-style
&gt;license that can be found in the LICENSE file.
&gt;--&gt;
&gt;&lt;html&gt;
&gt;  &lt;head&gt;
&gt;    &lt;title&gt;CustomElements Workbench&lt;/title&gt;
&gt;    &lt;meta charset=&quot;UTF-8&quot;&gt;
&gt;  &lt;/head&gt;
&gt;  &lt;body
&gt;    &lt;x-foo&gt;XFoo One&lt;/x-foo&gt;
&gt;    &lt;script&gt;
&gt;      XFoo = document.webkitRegister(&apos;x-foo&apos;, {
&gt;        prototype: Object.create(HTMLElement.prototype, {
&gt;          readyCallback: {
&gt;            value: function() {
&gt;              this.textContent += &apos; -- [upgraded]&apos;;
&gt;            }
&gt;          },
&gt;          foo: {
&gt;            value: function() {
&gt;              this.style.cssText = &apos;border: 1px solid lightblue; padding: 8px;&apos;;
&gt;            }
&gt;          }
&gt;        })
&gt;      });
&gt;      window.addEventListener(&apos;load&apos;, function() {
&gt;        xfoo.foo();
&gt;      });
&gt;    &lt;/script&gt;
&gt;    &lt;x-foo id=&quot;xfoo&quot;&gt;XFoo Two&lt;/x-foo&gt;
&gt;  &lt;/body&gt;
&gt;&lt;/html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864249</commentid>
    <comment_count>3</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-26 23:14:37 -0700</bug_when>
    <thetext>Lifecycle callbacks should be also called
https://www.w3.org/Bugs/Public/show_bug.cgi?id=21409</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864340</commentid>
    <comment_count>4</comment_count>
      <attachid>195254</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-27 02:54:04 -0700</bug_when>
    <thetext>Created attachment 195254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864351</commentid>
    <comment_count>5</comment_count>
      <attachid>195254</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-27 03:19:53 -0700</bug_when>
    <thetext>Comment on attachment 195254
Patch

Attachment 195254 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17330173</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864352</commentid>
    <comment_count>6</comment_count>
      <attachid>195254</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-27 03:24:19 -0700</bug_when>
    <thetext>Comment on attachment 195254
Patch

Attachment 195254 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17314335</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864371</commentid>
    <comment_count>7</comment_count>
      <attachid>195265</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-27 03:44:50 -0700</bug_when>
    <thetext>Created attachment 195265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864628</commentid>
    <comment_count>8</comment_count>
      <attachid>195265</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-03-27 09:41:02 -0700</bug_when>
    <thetext>Comment on attachment 195265
Patch

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

Overall, the approach is solid. I have general angst over whether the spec is saying the right thing.

&gt; Source/WebCore/ChangeLog:32
&gt; +        document-register-upgrade.html would fail without this.

This is interesting. I wonder if it would make sense to upgrade the element in such cases?

&gt; Source/WebCore/ChangeLog:36
&gt; +        - Elements created with valid custom element names (at creation timing),

This is where I smell something wrong happening. The developers will get confused why an element is not custom.

&gt; Source/WebCore/dom/CustomElementRegistry.cpp:195
&gt; +    for (Node* node = root; node; node = NodeTraversal::next(node, root)) {

This is going to be slow, but probably okay as the first iteration. In the future, I imagined storing a table of all custom element candidates so that we don&apos;t have to walk the tree... or something like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865101</commentid>
    <comment_count>9</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-27 19:14:23 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 195265 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=195265&amp;action=review
&gt; 
&gt; Overall, the approach is solid. I have general angst over whether the spec is saying the right thing.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:32
&gt; &gt; +        document-register-upgrade.html would fail without this.
&gt; 
&gt; This is interesting. I wonder if it would make sense to upgrade the element in such cases?
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:36
&gt; &gt; +        - Elements created with valid custom element names (at creation timing),
&gt; 
&gt; This is where I smell something wrong happening. The developers will get confused why an element is not custom.

One idea is that yet-to-be custom elements can get &quot;infected&quot; to a registered element
definition once it is in  the tree. But I believe such approach will introduce yet another complication.
Anyway, this topic worth having more visible thread.

&gt; 
&gt; &gt; Source/WebCore/dom/CustomElementRegistry.cpp:195
&gt; &gt; +    for (Node* node = root; node; node = NodeTraversal::next(node, root)) {
&gt; 
&gt; This is going to be slow, but probably okay as the first iteration. In the future, I imagined storing a table of all custom element candidates so that we don&apos;t have to walk the tree... or something like that.

Yup. I:d like to have such an optimization in separate change once things gets more stable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866640</commentid>
    <comment_count>10</comment_count>
      <attachid>195265</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-30 11:17:39 -0700</bug_when>
    <thetext>Comment on attachment 195265
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/CustomElementRegistry.cpp:195
&gt;&gt;&gt; +    for (Node* node = root; node; node = NodeTraversal::next(node, root)) {
&gt;&gt; 
&gt;&gt; This is going to be slow, but probably okay as the first iteration. In the future, I imagined storing a table of all custom element candidates so that we don&apos;t have to walk the tree... or something like that.
&gt; 
&gt; Yup. I:d like to have such an optimization in separate change once things gets more stable.

Don&apos;t we need an iteration pattern that avoids raw pointers?  If the loop body triggers script execution, we can end up iterating over garbage.

&gt; Source/WebCore/dom/CustomElementRegistry.cpp:198
&gt; +        Element* element = toElement(node);

Do we need to grab a RefPtr to element here?

&gt; Source/WebCore/dom/CustomElementRegistry.cpp:201
&gt; +        if (ElementShadow* shadow = element-&gt;shadow()) {
&gt; +            for (ShadowRoot* shadowRoot = shadow-&gt;youngestShadowRoot(); shadowRoot; shadowRoot = shadowRoot-&gt;olderShadowRoot())

Same question about this weak iteration.

&gt; Source/WebCore/dom/CustomElementRegistry.cpp:205
&gt; +}

IMHO, it would be better to gather all the elements we need to upgrade in one pass and then upgrade them instead of intermixing the two operations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866887</commentid>
    <comment_count>11</comment_count>
      <attachid>195265</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-31 21:09:14 -0700</bug_when>
    <thetext>Comment on attachment 195265
Patch

Adam, thanks for the attack!
I&apos;ll come back here after I have clarified the behavior on the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866919</commentid>
    <comment_count>12</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-31 23:25:03 -0700</bug_when>
    <thetext>I posted my thinking here: https://www.w3.org/Bugs/Public/show_bug.cgi?id=21485
The main point is that I prefer current description than other approach that I came up with.
There might be better way though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866922</commentid>
    <comment_count>13</comment_count>
      <attachid>195265</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-31 23:29:52 -0700</bug_when>
    <thetext>Comment on attachment 195265
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:36
&gt;&gt; +        - Elements created with valid custom element names (at creation timing),
&gt; 
&gt; This is where I smell something wrong happening. The developers will get confused why an element is not custom.

I think that this complication comes from the fact that we create wrappers lazily.
The flag just emulates of custom element creation.
If we create wrappers there immediately, the code will look straightforward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866958</commentid>
    <comment_count>14</comment_count>
      <attachid>195934</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-04-01 00:28:18 -0700</bug_when>
    <thetext>Created attachment 195934
Addressed Adam&apos;s points</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867204</commentid>
    <comment_count>15</comment_count>
      <attachid>195934</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-04-01 10:27:26 -0700</bug_when>
    <thetext>Comment on attachment 195934
Addressed Adam&apos;s points

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

This is starting to come together. I am still not super-sure about the extra flag, but this discussion is progressing nicely on W3C bug.

&gt; Source/WebCore/dom/CustomElementRegistry.h:61
&gt; +        CreatedCallback,

NeedsReadyCallback?

&gt; Source/WebCore/dom/CustomElementRegistry.h:62
&gt; +        Upgrade

NeedsUpgrade?

&gt; Source/WebCore/dom/CustomElementRegistry.h:113
&gt; +    void didBecomeCustomElement(Element*, CustomElementConstructor*);

didUpgradeElement?

&gt; Source/WebCore/dom/Element.h:598
&gt; +#if ENABLE(DIALOG_ELEMENT)

CUSTOM_ELEMENTS?

&gt; Source/WebCore/dom/ElementRareData.h:205
&gt; +#if ENABLE(DIALOG_ELEMENT)

CUSTOM_ELEMENTS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133783</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-10-16 00:48:23 -0700</bug_when>
    <thetext>The old implementation has been removed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>195209</attachid>
            <date>2013-03-26 19:50:37 -0700</date>
            <delta_ts>2013-03-26 19:50:37 -0700</delta_ts>
            <desc>Test document for above</desc>
            <filename>webkitCustomElements.html</filename>
            <type>text/html</type>
            <size>932</size>
            <attacher name="Scott Miles">sjmiles</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjwhLS0KQ29weXJpZ2h0IDIwMTMgVGhlIFRvb2xraXRjaGVuIEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuClVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlCmxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KLS0+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPkN1c3RvbUVsZW1lbnRzIFdv
cmtiZW5jaDwvdGl0bGU+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgPC9oZWFkPgogIDxi
b2R5CiAgICA8cD5SZXN1bHRzIGluIGNvbnNvbGU8L3A+CiAgICA8eC1mb28+WEZvbyBPbmU8L3gt
Zm9vPgogICAgPHNjcmlwdD4KICAgICAgWEZvbyA9IGRvY3VtZW50LndlYmtpdFJlZ2lzdGVyKCd4
LWZvbycsIHsKICAgICAgICBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTEVsZW1lbnQucHJv
dG90eXBlLCB7CiAgICAgICAgICByZWFkeUNhbGxiYWNrOiB7CiAgICAgICAgICAgIHZhbHVlOiBm
dW5jdGlvbigpIHsKICAgICAgICAgICAgICB0aGlzLnRleHRDb250ZW50ICs9ICcgLS0gW3VwZ3Jh
ZGVkXSc7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICBmb286IHsKICAgICAg
ICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHRoaXMuc3R5bGUuY3NzVGV4
dCA9ICdib3JkZXI6IDFweCBzb2xpZCBsaWdodGJsdWU7IHBhZGRpbmc6IDhweDsnOwogICAgICAg
ICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSkKICAgICAgfSk7CiAgICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oKSB7CiAgICAgICAgeGZvby5mb28oKTsKICAg
ICAgfSk7CiAgICA8L3NjcmlwdD4KICAgIDx4LWZvbyBpZD0ieGZvbyI+WEZvbyBUd288L3gtZm9v
PgogIDwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>195210</attachid>
            <date>2013-03-26 19:52:32 -0700</date>
            <delta_ts>2013-03-26 19:54:02 -0700</delta_ts>
            <desc>Test showing document.register upgrade issue</desc>
            <filename>webkitCustomElements.html</filename>
            <type>text/plain</type>
            <size>902</size>
            <attacher name="Scott Miles">sjmiles</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjwhLS0KQ29weXJpZ2h0IDIwMTMgVGhlIFRvb2xraXRjaGVuIEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuClVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlCmxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KLS0+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPkN1c3RvbUVsZW1lbnRzIFdv
cmtiZW5jaDwvdGl0bGU+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgPC9oZWFkPgogIDxi
b2R5CiAgICA8eC1mb28+WEZvbyBPbmU8L3gtZm9vPgogICAgPHNjcmlwdD4KICAgICAgWEZvbyA9
IGRvY3VtZW50LndlYmtpdFJlZ2lzdGVyKCd4LWZvbycsIHsKICAgICAgICBwcm90b3R5cGU6IE9i
amVjdC5jcmVhdGUoSFRNTEVsZW1lbnQucHJvdG90eXBlLCB7CiAgICAgICAgICByZWFkeUNhbGxi
YWNrOiB7CiAgICAgICAgICAgIHZhbHVlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB0aGlz
LnRleHRDb250ZW50ICs9ICcgLS0gW3VwZ3JhZGVkXSc7CiAgICAgICAgICAgIH0KICAgICAgICAg
IH0sCiAgICAgICAgICBmb286IHsKICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgIHRoaXMuc3R5bGUuY3NzVGV4dCA9ICdib3JkZXI6IDFweCBzb2xpZCBsaWdodGJs
dWU7IHBhZGRpbmc6IDhweDsnOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSkK
ICAgICAgfSk7CiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24o
KSB7CiAgICAgICAgeGZvby5mb28oKTsKICAgICAgfSk7CiAgICA8L3NjcmlwdD4KICAgIDx4LWZv
byBpZD0ieGZvbyI+WEZvbyBUd288L3gtZm9vPgogIDwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195254</attachid>
            <date>2013-03-27 02:54:04 -0700</date>
            <delta_ts>2013-03-27 03:44:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113362-20130327184945.patch</filename>
            <type>text/plain</type>
            <size>21910</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2OTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWI1M2RiNDcxYjNjNzkw
OTNhZTU3OTA5OTc3ZDRmMjk4ODQ4Y2IzMy4uZTM3N2MyMWJmM2FkOTMyZDA1ZTAwMWZkNWZiNGM3
YWMwZWU4NGE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEzLTAzLTI3ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbQ3VzdG9tIEVsZW1l
bnRzXTogZG9jdW1lbnQucmVnaXN0ZXIgZG9lc24ndCB1cGdyYWRlIG5vZGVzIGluIGRvY3VtZW50
IGFib3ZlIHRoZSByZWdpc3RlcmluZyBzY3JpcHQgdGFnCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTMzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIHRoZSB1cGdy
YWRlIG1lY2hhbmlzbSBvZiBjdXN0b20gZWxlbWVudHMuCisKKyAgICAgICAgVGhlIGltcGxlbWVu
dGF0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gQXQgdGhlIGVuZCBvZgorICAgICAgICByZWdpc3Rl
ckVsZW1lbnQoKSwgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5IHRyYXZlcnNlcyB0aGUgZG9jdW1lbnQK
KyAgICAgICAgdHJlZSBhbmQgZG9lcyAidXBncmFkZSIgdG8gZWxlbWVudHMgd2hpY2ggbWF0Y2hl
cyBuZXdseSByZWdpc3RlcmVkCisgICAgICAgIGVsZW1lbnQgZGVmaW5pdGlvbi4KKworICAgICAg
ICBPbmUgY2F2ZWF0IGlzIG5ldyBFbGVtZW50Ojppc0N1c3RvbUVsZW1lbnQoKSBiaXQuIEJlZm9y
ZSB0aGlzCisgICAgICAgIGNoYW5nZSwgV2ViS2l0IGRlY2lkZXMgd2hldGhlciB0aGUgZWxlbWVu
dCBpcyBjdXN0b20gZWxlbWVudCBvcgorICAgICAgICBub3QgYmFzZWQgb25seSBvbiB0aGUgZWxl
bWVudCBuYW1lLCBAaXMgYXR0cmlidXRlIGFuZCByZWdpc3RlcmVkCisgICAgICAgIGRlZmluaXRp
b25zLgorCisgICAgICAgIFdpdGggdXBncmFkaW5nIHRob3VnaCwgdGhpcyBpcyBubyBsb25nZXIg
cG9zc2libGU6IEFuIGVsZW1lbnQgY2FuIGJlCisgICAgICAgIG5vbi1jdXN0b20gZXZlbiBpZiBp
dCBoYXMgYSByZWdpc3RlcmVkIGVsZW1lbnQgbmFtZS4gVGhhdCBoYXBwZW5zCisgICAgICAgIHdo
ZW46CisKKyAgICAgICAgLSBUaGUgZWxlbWVudCwgc2F5IDx4LWJhcj4sIGlzIGNyZWF0ZWQgb3V0
IG9mIHRyZWUsCisgICAgICAgIC0gZG9jdW1lbnQucmVnaXN0ZXIoIngtYmFyIikgaXMgbWFkZSwg
dGhlbgorICAgICAgICAtIHRoZSBlbGVtZW50IGlzIGluc2VydGVkIGludG8gdHJlZSBhbmQgZ2V0
cyBhIHdyYXBwZXIuCisKKyAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgZWxlbWVudCBzaG91bGRu
J3QgYmUgYSBjdXN0b20gZWxlbWVudCBiZWNhdXNlIGl0CisgICAgICAgIHdhcyBvdXQgb2YgdHJl
ZSB3aGVuIHRoZSByZWdpc3RyYXRpb24gaXMgbWFkZS4gSG93ZXZlciB3aXRob3V0IHRoZQorICAg
ICAgICBpc0N1c3RvbUVsZW1lbnQoKSBiaXQsIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBzZWUgdGhp
cyBmYWN0LgorICAgICAgICBGb3IgZGVtb25zdHJhdGlvbiwgImZvb1dyYXBwZWRBZnRlclJlZ2lz
dGVyIiBjYXNlIGluCisgICAgICAgIGRvY3VtZW50LXJlZ2lzdGVyLXVwZ3JhZGUuaHRtbCB3b3Vs
ZCBmYWlsIHdpdGhvdXQgdGhpcy4KKworICAgICAgICBUaGUgaXNDdXN0b21FbGVtZW50KCkgYml0
IGlzIHNldCB0byBzaG91bGQtYmUtY3VzdG9tIGVsZW1lbnRzLCB3aGljaCBhcmUKKworICAgICAg
ICAtIEVsZW1lbnRzIGNyZWF0ZWQgd2l0aCB2YWxpZCBjdXN0b20gZWxlbWVudCBuYW1lcyAoYXQg
Y3JlYXRpb24gdGltaW5nKSwKKyAgICAgICAgLSBFbGVtZW50cyB3aGljaCBnZXQgQGlzIGF0dHJp
YnV0ZXMgb2YgdmFsaWQgY3VzdG9tIGVsZW1lbnQgZGVmaW5pdGlvbnMgb3IKKyAgICAgICAgLSBV
cGdyYWRlZCBlbGVtZW50cy4KKworICAgICAgICBOb24tY3VzdG9tIGVsZW1lbnRzIGFyZSBleGNs
dWRlZCBmcm9tIGN1c3RvbSBlbGVtZW50IHdyYXBwZXIKKyAgICAgICAgY3JlYXRpb24gYmFzZWQg
b24gdGhpcyBmbGFnLiBJbiBpbXBsZW1lbnRhdGlvbiwgdGhlIGV4Y2x1c2lvbiBpcworICAgICAg
ICBkb25lIGJ5IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZmluZEZvcigpLgorCisgICAgICAgIFRl
c3Q6IGZhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci11cGdyYWRlLmh0bWwKKworICAg
ICAgICAqIGJpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnN0cnVjdG9yUHJvdG90eXBlKTogRXh0cmFjdGVkIGZyb20gY3JlYXRlV3JhcHBl
cigpCisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50SGVscGVyczo6Y3JlYXRlV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50SGVscGVyczo6dXBncmFkZVdyYXBw
ZXIpOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5o
OgorICAgICAgICAoQ3VzdG9tRWxlbWVudEhlbHBlcnMpOgorICAgICAgICAqIGRvbS9DdXN0b21F
bGVtZW50UmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lz
dHJ5OjpyZWdpc3RlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZWxlbWVudE5hbWVNYXRj
aGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6dXBncmFkZUVs
ZW1lbnRJZk5lZWRlZCk6IEFkZGVkCisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVn
aXN0cnk6OnVwZ3JhZGVUcmVlKTogQWRkZWQKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1l
bnRSZWdpc3RyeTo6ZmluZEZvcik6IERlY2xpbmluZyBub24tY3VzdG9tIGVsZW1lbnQKKyAgICAg
ICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZmluZEZvckludGVybmFsKTogRXh0
cmFjdGVkIGZyb20gZmluZEZvcigpCisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVn
aXN0cnk6OmRpZEdpdmVUeXBlRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVs
ZW1lbnRSZWdpc3RyeTo6ZGlkQ3JlYXRlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0
b21FbGVtZW50UmVnaXN0cnk6OmRpZEJlY29tZUN1c3RvbUVsZW1lbnQpOiBBZGRlZCB0byBjYWxs
IHNldEN1c3RvbUVsZW1lbnQoKQorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnku
aDoKKyAgICAgICAgKEN1c3RvbUVsZW1lbnRSZWdpc3RyeSk6CisgICAgICAgICogZG9tL0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aXNDdXN0b21FbGVtZW50KTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRDdXN0b21FbGVtZW50KTogQWRkZWQu
CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRh
Lmg6CisgICAgICAgIChFbGVtZW50UmFyZURhdGEpOiBBZGRlZCBtX2lzQ3VzdG9tRWxlbWVudAor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjppc0N1c3RvbUVsZW1lbnQpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0Q3VzdG9tRWxlbWVudCk6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFyZURh
dGEpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisKIDIwMTMtMDMtMjYgIFRha2VzaGkgWW9zaGlu
byAgPHR5b3NoaW5vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNYWtlIFNvY2tldFN0cmVhbUhh
bmRsZSAoQ2hyb21pdW0gcG9ydCkgZnVsbHkgdXNlIElQQyB3aW5kb3cgaW4gc2VuZCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5jcHAK
aW5kZXggOTA5OTBjN2UyNTViOWVhZWFmNTQ4YzUyYTVhMDBhNmI0ZjdkNzY4MC4uN2UxN2U3YTVj
NTFiMjBlNTUwYTYxOGYyODI4YzE2M2QzYzgyNTdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcApAQCAtNDMsNiArNDMsMTYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKIAor
c3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY29uc3RydWN0b3JQcm90b3R5cGUoQ3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rvciwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjb25zdHJ1Y3RvclZhbHVlID0gV2ViQ29yZTo6dG9WOChjb25zdHJ1Y3Rvciwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICBpZiAoY29uc3RydWN0b3JWYWx1ZS5Jc0Vt
cHR5KCkgfHwgIWNvbnN0cnVjdG9yVmFsdWUtPklzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjb25z
dHJ1Y3RvcldhcHBlciA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoY29uc3RydWN0b3JW
YWx1ZSk7CisgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoY29uc3RydWN0
b3JXYXBwZXItPkdldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInByb3RvdHlwZSIpKSk7Cit9CisK
Kwogdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBDdXN0b21FbGVtZW50SGVscGVyczo6Y3JlYXRlV3Jh
cHBlcihQYXNzUmVmUHRyPEVsZW1lbnQ+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0LCBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3Ry
dWN0b3IsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIEFTU0VSVChpbXBsKTsKQEAgLTU3
LDE1ICs2NywxMiBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IEN1c3RvbUVsZW1lbnRIZWxwZXJz
OjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8RWxlbWVudD4gaQogICAgICAgICByZXR1cm4gd3Jh
cHBlcjsKICAgICB9CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JWYWx1
ZSA9IFdlYkNvcmU6OnRvVjgoY29uc3RydWN0b3IuZ2V0KCksIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7Ci0gICAgaWYgKGNvbnN0cnVjdG9yVmFsdWUuSXNFbXB0eSgpIHx8ICFjb25zdHJ1Y3Rv
clZhbHVlLT5Jc09iamVjdCgpKQorICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG90eXBl
ID0gY29uc3RydWN0b3JQcm90b3R5cGUoY29uc3RydWN0b3IuZ2V0KCksIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7CisgICAgaWYgKHByb3RvdHlwZS5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
b25zdHJ1Y3RvcldhcHBlciA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoY29uc3RydWN0
b3JWYWx1ZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBwcm90b3R5cGUgPSB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGNvbnN0cnVjdG9yV2FwcGVyLT5HZXQodjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJwcm90b3R5cGUiKSkpOwogICAgIFdyYXBwZXJUeXBlSW5mbyogdHlwZUluZm8g
PSBDdXN0b21FbGVtZW50SGVscGVyczo6ZmluZFdyYXBwZXJUeXBlKHByb3RvdHlwZSk7CiAgICAg
aWYgKCF0eXBlSW5mbykKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsK
LQogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6Y3Jl
YXRlV3JhcHBlcihjcmVhdGlvbkNvbnRleHQsIHR5cGVJbmZvLCBpbXBsLmdldCgpLCBpc29sYXRl
KTsKICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+KCk7CkBAIC03NSw2ICs4MiwyMSBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IEN1c3RvbUVsZW1lbnRIZWxwZXJzOjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8RWxlbWVudD4g
aQogICAgIHJldHVybiB3cmFwcGVyOwogfQogCit2b2lkIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjp1
cGdyYWRlV3JhcHBlcihFbGVtZW50KiBlbGVtZW50LCBDdXN0b21FbGVtZW50Q29uc3RydWN0b3Iq
IGNvbnN0cnVjdG9yLCBTY3JpcHRTdGF0ZSogc3RhdGUpCit7CisgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHdyYXBwZXJWYWx1ZSA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlcihlbGVtZW50LCBz
dGF0ZS0+Y29udGV4dCgpLT5HZXRJc29sYXRlKCkpOworICAgIC8vIElmIHdyYXBwZXIgaGFzbid0
IGJlZW4gdGhlcmUsIHdlIGNhbiBsZXQgdGhlIGNyZWF0ZVdyYXBwZXIoKSBkbyB0aGUgam9iLgor
ICAgIGlmICh3cmFwcGVyVmFsdWUuSXNFbXB0eSgpIHx8ICF3cmFwcGVyVmFsdWUtPklzT2JqZWN0
KCkpCisgICAgICAgIHJldHVybjsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHdyYXBwZXJWYWx1ZSk7CisgICAgLy8gV2Ug
ZG9uJ3QgbmVlZCB2YWxpZCBjcmVhdGlvbkNvbnRleHQgaGVyZSBzaW5jZSB0aGUgY29uc3RydWN0
b3Igb2JqZWN0IHNob3VsZCBhbHJlYWR5IGhhdmUgYSB3cmFwcGVyCisgICAgLy8gYW5kIGNvbnN0
cnVjdG9yUHJvdG90eXBlKCkgc2hvdWxkIGJlIGFibGUgdG8gdXNlIGl0LgorICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gcHJvdG90eXBlID0gY29uc3RydWN0b3JQcm90b3R5cGUoY29uc3RydWN0
b3IsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgc3RhdGUtPmNvbnRleHQoKS0+R2V0SXNvbGF0
ZSgpKTsKKyAgICBpZiAocHJvdG90eXBlLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IHdyYXBwZXItPlNldFByb3RvdHlwZShwcm90b3R5cGUpOworfQorCiBib29sIEN1c3RvbUVsZW1l
bnRIZWxwZXJzOjppbml0aWFsaXplQ29uc3RydWN0b3JXcmFwcGVyKEN1c3RvbUVsZW1lbnRDb25z
dHJ1Y3RvciogY29uc3RydWN0b3IsIGNvbnN0IFNjcmlwdFZhbHVlJiBwcm90b3R5cGUsIFNjcmlw
dFN0YXRlKiBzdGF0ZSkKIHsKICAgICBBU1NFUlQoaXNGZWF0dXJlQWxsb3dlZChzdGF0ZSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBl
cnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmgK
aW5kZXggZGNmZTlmYjcxOWE4NDE2NjlhZjQ5YTE4MGUzYzEyNmViZTFlZjgzNC4uMDgzNTg0Yzc0
NmEzZTY4MDQzM2EzODhmNjYwMDBmZTYzM2QxZmNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5oCkBAIC02NSw2ICs2NSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSogZmluZExvY2FsTmFtZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNoYWluKTsKIAogICAgIHN0YXRpYyB2b2lkIGludm9rZVJlYWR5
Q2FsbGJhY2tzSWZOZWVkZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFZlY3RvcjxD
dXN0b21FbGVtZW50SW52b2NhdGlvbj4mKTsKKyAgICBzdGF0aWMgdm9pZCB1cGdyYWRlV3JhcHBl
cihFbGVtZW50KiwgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKiwgU2NyaXB0U3RhdGUqKTsKIAog
ICAgIC8vCiAgICAgLy8gWW91IGNhbiBqdXN0IHVzZSB0b1Y4KE5vZGUqKSB0byBnZXQgY29ycmVj
dCB3cmFwcGVyIG9iamVjdHMsIGV2ZW4gZm9yIGN1c3RvbSBlbGVtZW50cy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAKaW5kZXggNmE3ZjJkNTE4MmM3ZDNi
ZTkxYTU5ZDVlYmNhMjg1MDg0N2YzZDIxOC4uMTQ0NjBlYjMwMGViZmVkMTFhYTE4MjI4NTExZjVk
NjAyM2JiODQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRS
ZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3Ry
eS5jcHAKQEAgLTM5LDggKzM5LDEwIEBACiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnRT
aGFkb3cuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVW5rbm93bkVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KQEAgLTE2NCwxNyArMTY2LDU0IEBAIFBhc3NSZWZQdHI8Q3VzdG9tRWxl
bWVudENvbnN0cnVjdG9yPiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OnJlZ2lzdGVyRWxlbWVudChT
Y3JpCiAgICAgbV9jb25zdHJ1Y3RvcnMuYWRkKHN0ZDo6bWFrZV9wYWlyKGNvbnN0cnVjdG9yLT50
eXBlTmFtZSgpLCBjb25zdHJ1Y3Rvci0+bG9jYWxOYW1lKCkpLCBjb25zdHJ1Y3Rvcik7CiAgICAg
bV9uYW1lcy5hZGQoY29uc3RydWN0b3ItPnR5cGVOYW1lKCkpOwogCisgICAgdXBncmFkZVRyZWUo
c3RhdGUsIGRvY3VtZW50KCksIGNvbnN0cnVjdG9yLmdldCgpKTsKKwogICAgIHJldHVybiBjb25z
dHJ1Y3RvcjsKIH0KIAotUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IEN1c3Rv
bUVsZW1lbnRSZWdpc3RyeTo6ZmluZEZvcihFbGVtZW50KiBlbGVtZW50KSBjb25zdAorc3RhdGlj
IGlubGluZSBib29sIGVsZW1lbnROYW1lTWF0Y2hlcyhFbGVtZW50KiBlbGVtZW50LCBDdXN0b21F
bGVtZW50Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQogewotICAgIEFTU0VSVChlbGVtZW50LT5k
b2N1bWVudCgpLT5yZWdpc3RyeSgpID09IHRoaXMpOworICAgIGlmICghY29uc3RydWN0b3ItPmlz
RXh0ZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yLT5sb2NhbE5hbWUoKSA9PSBl
bGVtZW50LT50YWdRTmFtZSgpOworICAgIHJldHVybiBjb25zdHJ1Y3Rvci0+bG9jYWxOYW1lKCkg
PT0gZWxlbWVudC0+dGFnUU5hbWUoKQorICAgICAgICAmJiBlbGVtZW50LT5oYXNBdHRyaWJ1dGUo
SFRNTE5hbWVzOjppc0F0dHIpCisgICAgICAgICYmIChlbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRN
TE5hbWVzOjppc0F0dHIpID09IGNvbnN0cnVjdG9yLT50eXBlTmFtZSgpLmxvY2FsTmFtZSgpIAor
ICAgICAgICAgICAgfHwgZWxlbWVudC0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aXNBdHRyKS51
cHBlcigpID09IGNvbnN0cnVjdG9yLT50eXBlTmFtZSgpLmxvY2FsTmFtZVVwcGVyKCkpKTsKK30K
KworCitpbmxpbmUgdm9pZCBDdXN0b21FbGVtZW50UmVnaXN0cnk6OnVwZ3JhZGVFbGVtZW50SWZO
ZWVkZWQoU2NyaXB0U3RhdGUqIHN0YXRlLCBFbGVtZW50KiBlbGVtZW50LCBDdXN0b21FbGVtZW50
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQoreworICAgIGlmICghZWxlbWVudE5hbWVNYXRjaGVz
KGVsZW1lbnQsIGNvbnN0cnVjdG9yKSkKKyAgICAgICAgcmV0dXJuOworICAgIGRpZEJlY29tZUN1
c3RvbUVsZW1lbnQoZWxlbWVudCk7CisgICAgQ3VzdG9tRWxlbWVudEhlbHBlcnM6OnVwZ3JhZGVX
cmFwcGVyKGVsZW1lbnQsIGNvbnN0cnVjdG9yLCBzdGF0ZSk7Cit9CisKK3ZvaWQgQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5Ojp1cGdyYWRlVHJlZShTY3JpcHRTdGF0ZSogc3RhdGUsIE5vZGUqIHJvb3Qs
IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IpCit7CisgICAgZm9yIChOb2Rl
KiBub2RlID0gcm9vdDsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSwgcm9v
dCkpIHsKKyAgICAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudChub2RlKTsKKyAg
ICAgICAgdXBncmFkZUVsZW1lbnRJZk5lZWRlZChzdGF0ZSwgZWxlbWVudCwgY29uc3RydWN0b3Ip
OworICAgICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gZWxlbWVudC0+c2hhZG93KCkp
IHsKKyAgICAgICAgICAgIGZvciAoU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHNoYWRvdy0+eW91
bmdlc3RTaGFkb3dSb290KCk7IHNoYWRvd1Jvb3Q7IHNoYWRvd1Jvb3QgPSBzaGFkb3dSb290LT5v
bGRlclNoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgICAgICB1cGdyYWRlVHJlZShzdGF0ZSwgc2hh
ZG93Um9vdCwgY29uc3RydWN0b3IpOworICAgICAgICB9CisgICAgfQorfQogCi0gICAgLy8gTW9z
dCBlbGVtZW50cyBjYW4gYmUgcmVqZWN0ZWQgdGhpcyBxdWljayBzY3JlZW5pbmcuCi0gICAgaWYg
KCFuYW1lSW5jbHVkZXNIeXBoZW4oZWxlbWVudC0+dGFnTmFtZSgpKSAmJiAhZWxlbWVudC0+aGFz
QXR0cmlidXRlKEhUTUxOYW1lczo6aXNBdHRyKSkKK1Bhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENv
bnN0cnVjdG9yPiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmZpbmRGb3IoRWxlbWVudCogZWxlbWVu
dCkgY29uc3QKK3sKKyAgICBpZiAoIWVsZW1lbnQtPmlzQ3VzdG9tRWxlbWVudCgpKQogICAgICAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gZmluZEZvckludGVybmFsKGVsZW1lbnQpOworfQogCitp
bmxpbmUgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IEN1c3RvbUVsZW1lbnRS
ZWdpc3RyeTo6ZmluZEZvckludGVybmFsKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAg
QVNTRVJUKGVsZW1lbnQtPmRvY3VtZW50KCktPnJlZ2lzdHJ5KCkgPT0gdGhpcyk7CiAgICAgUXVh
bGlmaWVkTmFtZSBpZFZhbHVlKG51bGxBdG9tLCBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5h
bWVzOjppc0F0dHIpLCBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKTsKICAgICByZXR1cm4g
ZmluZChpZFZhbHVlLCBlbGVtZW50LT50YWdRTmFtZSgpKTsKIH0KQEAgLTIwNiwxNCArMjQ1LDIx
IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpjcmVhdGVFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIGxvCiAKIHZvaWQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
OjpkaWRHaXZlVHlwZUV4dGVuc2lvbihFbGVtZW50KiBlbGVtZW50KQogewotICAgIFJlZlB0cjxD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yID0gZmluZEZvcihlbGVtZW50KTsK
KyAgICBBU1NFUlQoZWxlbWVudC0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6aXNBdHRyKSk7Cisg
ICAgUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0b3IgPSBmaW5kRm9y
SW50ZXJuYWwoZWxlbWVudCk7CiAgICAgaWYgKCFjb25zdHJ1Y3RvciB8fCAhY29uc3RydWN0b3It
PmlzRXh0ZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGFjdGl2YXRlKEN1c3RvbUVsZW1l
bnRJbnZvY2F0aW9uKGVsZW1lbnQpKTsKKyAgICBkaWRCZWNvbWVDdXN0b21FbGVtZW50KGVsZW1l
bnQpOwogfQogCiB2b2lkIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGlkQ3JlYXRlRWxlbWVudChF
bGVtZW50KiBlbGVtZW50KQogeworICAgIGRpZEJlY29tZUN1c3RvbUVsZW1lbnQoZWxlbWVudCk7
Cit9CisKK2lubGluZSB2b2lkIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGlkQmVjb21lQ3VzdG9t
RWxlbWVudChFbGVtZW50KiBlbGVtZW50KQoreworICAgIGVsZW1lbnQtPnNldEN1c3RvbUVsZW1l
bnQoKTsKICAgICBhY3RpdmF0ZShDdXN0b21FbGVtZW50SW52b2NhdGlvbihlbGVtZW50KSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnku
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaAppbmRleCA4Mjg5
YjE5ZDI1ZmU1YzViMjhkZGFjNjYwYTQwNjk2OGY4YmY1M2I4Li42ODdiMzE1ZDUwNWQyOTA3OGI5
NDgyOTRkNmE3MTIyY2I4ODc2N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1l
bnRSZWdpc3RyeS5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBDdXN0
b21FbGVtZW50UmVnaXN0cnkoRG9jdW1lbnQqKTsKICAgICB+Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5
KCk7CiAKLSAgICBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gcmVnaXN0ZXJF
bGVtZW50KFdlYkNvcmU6OlNjcmlwdFN0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBj
b25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0
cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IHJlZ2lzdGVyRWxlbWVudChTY3JpcHRTdGF0ZSos
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBm
aW5kRm9yKEVsZW1lbnQqKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25z
dHJ1Y3Rvcj4gZmluZChjb25zdCBRdWFsaWZpZWROYW1lJiBlbGVtZW50TmFtZSwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgbG9jYWxOYW1lKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGVFeHRlbnNpb24pIGNvbnN0OwpAQCAtOTksNiArOTksMTEgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICBz
dGF0aWMgSW5zdGFuY2VTZXQmIGFjdGl2ZUN1c3RvbUVsZW1lbnRSZWdpc3RyaWVzKCk7CiAKKyAg
ICBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gZmluZEZvckludGVybmFsKEVs
ZW1lbnQqKSBjb25zdDsKKyAgICB2b2lkIGRpZEJlY29tZUN1c3RvbUVsZW1lbnQoRWxlbWVudCop
OworICAgIHZvaWQgdXBncmFkZUVsZW1lbnRJZk5lZWRlZChTY3JpcHRTdGF0ZSosIEVsZW1lbnQq
LCBDdXN0b21FbGVtZW50Q29uc3RydWN0b3IqKTsKKyAgICB2b2lkIHVwZ3JhZGVUcmVlKFNjcmlw
dFN0YXRlKiwgTm9kZSogcm9vdCwgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKik7CisKICAgICB2
b2lkIGFjdGl2YXRlKGNvbnN0IEN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uJik7CiAgICAgdm9pZCBk
ZWFjdGl2YXRlKCk7CiAgICAgdm9pZCBkZWxpdmVyTGlmZWN5Y2xlQ2FsbGJhY2tzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKaW5kZXggNDM3NDcxZDgzNjVkZTFiMTk0ZmRmMDgxOTM1ODZlODgwNmRj
YjQyOC4uOGFiMWQ2YjRkNDMzYzgyM2M1NzU5ZDAwMDJmNGIzOTgxMTc1NmI1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcApAQCAtMjUyMiw2ICsyNTIyLDE4IEBAIHZvaWQgRWxlbWVudDo6c2V0SXNJ
blRvcExheWVyKGJvb2wgaW5Ub3BMYXllcikKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENVU1RP
TV9FTEVNRU5UUykKK2Jvb2wgRWxlbWVudDo6aXNDdXN0b21FbGVtZW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+aXNDdXN0b21FbGVt
ZW50KCk7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0Q3VzdG9tRWxlbWVudCgpCit7CisgICAgZW5z
dXJlRWxlbWVudFJhcmVEYXRhKCktPnNldEN1c3RvbUVsZW1lbnQoKTsKK30KKyNlbmRpZgorCiAj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKIHZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVzdFBvaW50
ZXJMb2NrKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGRkODYwZjA2YzY0N2U2ZTdkOTMwMzE0
OWE0MzQ5MzQyZTlmOTU5ZmYuLmVkNTJiZDliNTUxZDQzZTgwMTFhM2ZjMjQ4YWZjN2U3MDVjYzU4
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNTk0LDYgKzU5NCwxMSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRJc0luVG9wTGF5ZXIoYm9vbCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShESUFMT0df
RUxFTUVOVCkKKyAgICBib29sIGlzQ3VzdG9tRWxlbWVudCgpIGNvbnN0OworICAgIHZvaWQgc2V0
Q3VzdG9tRWxlbWVudCgpOworI2VuZGlmCisKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAg
IHZvaWQgd2Via2l0UmVxdWVzdFBvaW50ZXJMb2NrKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50UmFyZURhdGEuaAppbmRleCAwYWE5MDBkZDU1ZmVlZjRkNTEzMGZkMTcwZjgyN2Q2Y2Nm
ZDZmNWY1Li5hZmNmOWFiZTBmM2I1NmI2NDZhODJkMTNlN2Y1YzA2MDYzNDI4NWRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC03MCw2ICs3MCwxMSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRJc0luVG9wTGF5ZXIoYm9vbCB2YWx1ZSkgeyBtX2lzSW5Ub3BMYXllciA9IHZh
bHVlOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisgICAgYm9vbCBp
c0N1c3RvbUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lzQ3VzdG9tRWxlbWVudDsgfQorICAg
IHZvaWQgc2V0Q3VzdG9tRWxlbWVudCgpIHsgbV9pc0N1c3RvbUVsZW1lbnQgPSB0cnVlOyB9Cisj
ZW5kaWYKKwogICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoKSBjb25zdCB7IHJldHVy
biBtX2NoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyOyB9CiAgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVj
dGVkQnlIb3Zlcihib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIgPSB2YWx1
ZTsgfQogICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4g
bV9jaGlsZHJlbkFmZmVjdGVkQnlBY3RpdmU7IH0KQEAgLTE0NCw2ICsxNDksOSBAQCBwcml2YXRl
OgogI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKICAgICB1bnNpZ25lZCBtX2lzSW5Ub3BMYXll
ciA6IDE7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgIHVuc2lnbmVk
IG1faXNDdXN0b21FbGVtZW50IDogMTsKKyNlbmRpZgogI2lmIEVOQUJMRShTVkcpCiAgICAgdW5z
aWduZWQgbV9oYXNQZW5kaW5nUmVzb3VyY2VzIDogMTsKICNlbmRpZgpAQCAtMTk0LDYgKzIwMiw5
IEBAIGlubGluZSBFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YShSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKQogI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKICAgICAsIG1faXNJblRvcExh
eWVyKGZhbHNlKQogI2VuZGlmCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgICwgbV9p
c0N1c3RvbUVsZW1lbnQoZmFsc2UpCisjZW5kaWYKICNpZiBFTkFCTEUoU1ZHKQogICAgICwgbV9o
YXNQZW5kaW5nUmVzb3VyY2VzKGZhbHNlKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA4YTZkZDgy
YzFmZWQwN2U0ZWY2N2M1Y2ZjZTI5NGUyZDdhNTBhNTI1Li4zZTAyMjljZWZjNDNiNTM1ZDg2ODc3
MWYxODRhYWEzZjZjZmFlNDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTczNSwxMSArNzM1LDEwIEBAIHBy
aXZhdGU6CiAjZW5kaWYKICAgICAgICAgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZyA9IDEgPDwg
MjUsCiAgICAgICAgIElzSW5TaGFkb3dUcmVlRmxhZyA9IDEgPDwgMjYsCi0KICAgICAgICAgRGVm
YXVsdE5vZGVGbGFncyA9IElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWRGbGFnCiAgICAgfTsKIAot
ICAgIC8vIDUgYml0cyByZW1haW5pbmcKKyAgICAvLyA0IGJpdHMgcmVtYWluaW5nCiAKICAgICBi
b29sIGdldEZsYWcoTm9kZUZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fbm9kZUZsYWdzICYg
bWFzazsgfQogICAgIHZvaWQgc2V0RmxhZyhib29sIGYsIE5vZGVGbGFncyBtYXNrKSBjb25zdCB7
IG1fbm9kZUZsYWdzID0gKG1fbm9kZUZsYWdzICYgfm1hc2spIHwgKC0oaW50MzJfdClmICYgbWFz
ayk7IH0gCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZjZhZDc2ZDgzOGMyYjhjYTVjYmNlNzljM2Q1YjkyNmZjNjgwNzI1My4u
YTliYmE4ODI0YzM2M2RhMGM4NGQ2YmEwYzU1YWFjZGZiZTYxNjc5YiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDEzLTAzLTI3ICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4K
KworICAgICAgICBbQ3VzdG9tIEVsZW1lbnRzXTogZG9jdW1lbnQucmVnaXN0ZXIgZG9lc24ndCB1
cGdyYWRlIG5vZGVzIGluIGRvY3VtZW50IGFib3ZlIHRoZSByZWdpc3RlcmluZyBzY3JpcHQgdGFn
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTMzNjIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3Qv
ZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci11cGdyYWRlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXVwZ3JhZGUuaHRt
bDogQWRkZWQuCisKIDIwMTMtMDMtMjYgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gUmViYXNlbGluZSBmYXN0L3JlcGxhY2VkL2Jv
cmRlci1yYWRpdXMtY2xpcC1jb250ZW50LWVkZ2UuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXVwZ3JhZGUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXVwZ3JhZGUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3MDhlZjVlYzQ3ZmVmODg1NWRiZGQzYTYzZWFhZDU3
Y2RmZDYxNzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20v
ZG9jdW1lbnQtcmVnaXN0ZXItdXBncmFkZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNCBAQAor
VGVzdGluZyBkb2N1bWVudC5yZWdpc3RlcigpIHR5cGUgZXh0ZW5zaW9uIGJlaGF2aW91cnMgdGhy
b3VnaCBjcmVhdGVFbGVtZW50KCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGZvb0FwcGVuZGVkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50IGlzIHRydWUKK1BB
U1MgYmFyQXBwZW5kZWQgaW5zdGFuY2VvZiBIVE1MRGl2RWxlbWVudCBpcyB0cnVlCitQQVNTIHdp
bmRvdy5yZWFkeUVsZW1lbnRzIGlzIFtmb29QYXJzZWQsIGZvb0luU2hhZG93LCBmb29BcHBlbmRl
ZCwgYmFyUGFyc2VkLCBiYXJJblNoYWRvdywgYmFyQXBwZW5kZWRdCitQQVNTIGZvb1BhcnNlZCBp
bnN0YW5jZW9mIEZvbyBpcyB0cnVlCitQQVNTIGJhclBhcnNlZCBpbnN0YW5jZW9mIEJhciBpcyB0
cnVlCitQQVNTIGZvb0FwcGVuZGVkIGluc3RhbmNlb2YgRm9vIGlzIHRydWUKK1BBU1MgYmFyQXBw
ZW5kZWQgaW5zdGFuY2VvZiBCYXIgaXMgdHJ1ZQorUEFTUyBmb29JblNoYWRvdyBpbnN0YW5jZW9m
IEZvbyBpcyB0cnVlCitQQVNTIGJhckluU2hhZG93IGluc3RhbmNlb2YgQmFyIGlzIHRydWUKK1BB
U1MgZm9vT3V0T2ZUcmVlIGluc3RhbmNlb2YgRm9vIGlzIGZhbHNlCitQQVNTIGJhck91dE9mVHJl
ZSBpbnN0YW5jZW9mIEJhciBpcyBmYWxzZQorUEFTUyBmb29PdXRPZlRyZWUgaW5zdGFuY2VvZiBG
b28gaXMgZmFsc2UKK1BBU1MgYmFyT3V0T2ZUcmVlIGluc3RhbmNlb2YgQmFyIGlzIGZhbHNlCitQ
QVNTIGZvb1dyYXBwZWRBZnRlclJlZ2lzdGVyIGluc3RhbmNlb2YgRm9vIGlzIGZhbHNlCitQQVNT
IGJhcldyYXBwZWRBZnRlclJlZ2lzdGVyIGluc3RhbmNlb2YgQmFyIGlzIGZhbHNlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXVwZ3JhZGUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci11cGdyYWRl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWQ0MzQ4NDliYzA4ZjcyYzA1OGU3ZWIyNTZhYTIxMDI5OGM4YzY4
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVu
dC1yZWdpc3Rlci11cGdyYWRlLmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bigiVGVzdGluZyBkb2N1bWVudC5yZWdpc3RlcigpIHR5cGUgZXh0ZW5zaW9uIGJlaGF2aW91cnMg
dGhyb3VnaCBjcmVhdGVFbGVtZW50KCkuIik7Citkb2N1bWVudC5yZWdpc3RlciA9IGRvY3VtZW50
LnJlZ2lzdGVyIHx8IGRvY3VtZW50LndlYmtpdFJlZ2lzdGVyOworPC9zY3JpcHQ+CisKKzx4LWZv
byBpZD0iZm9vUGFyc2VkIj48L3gtZm9vPgorPGRpdiBpcz0ieC1iYXIiIGlkPSJiYXJQYXJzZWQi
PjwvZGl2PgorPGRpdiBpZD0iaG9zdCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIGZvb0FwcGVuZGVk
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgieC1mb28iKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoZm9vQXBwZW5kZWQpOwordmFyIGJhckFwcGVuZGVkID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2IiwgIngtYmFyIik7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGJhckFwcGVu
ZGVkKTsKKwordmFyIHNoYWRvdyA9IGhvc3Qud2Via2l0Q3JlYXRlU2hhZG93Um9vdCgpOwordmFy
IGZvb0luU2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgieC1mb28iKTsKK3ZhciBiYXJJ
blNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIsICJ4LWJhciIpOworc2hhZG93
LmFwcGVuZENoaWxkKGZvb0luU2hhZG93KTsKK3NoYWRvdy5hcHBlbmRDaGlsZChiYXJJblNoYWRv
dyk7CisKK3ZhciBmb29PdXRPZlRyZWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ4LWZvbyIp
OwordmFyIGJhck91dE9mVHJlZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIsICJ4LWJh
ciIpOworCit2YXIgY29udGFpbmVyT3V0T2ZUcmVlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Citjb250YWluZXJPdXRPZlRyZWUuaW5uZXJIVE1MID0gKCI8eC1mb28gaWQ9J2Zvb1dy
YXBwZWRBZnRlclJlZ2lzdGVyJz48L3gtZm9vPiIgKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiPGRpdiBpcz0neC1iYXInIGlkPSdiYXJXcmFwcGVkQWZ0ZXJSZWdpc3Rlcic+PC94
LWZvbz4iKTsKKzwvc2NyaXB0PgorCis8c2NyaXB0PgorCitzaG91bGRCZVRydWUoImZvb0FwcGVu
ZGVkIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50Iik7CitzaG91bGRCZVRydWUoImJhckFw
cGVuZGVkIGluc3RhbmNlb2YgSFRNTERpdkVsZW1lbnQiKTsKKword2luZG93LnJlYWR5RWxlbWVu
dHMgPSBbXTsKK2Z1bmN0aW9uIG1hcmtpbmdSZWFkeUNhbGxiYWNrKCkgeyB3aW5kb3cucmVhZHlF
bGVtZW50cy5wdXNoKHRoaXMpOyB9CisKK0ZvbyA9IGRvY3VtZW50LnJlZ2lzdGVyKCd4LWZvbycs
IHsgcHJvdG90eXBlOiBPYmplY3QuY3JlYXRlKEhUTUxFbGVtZW50LnByb3RvdHlwZSwgeyByZWFk
eUNhbGxiYWNrOiB7IHZhbHVlOiBtYXJraW5nUmVhZHlDYWxsYmFjayB9IH0pIH0pOworQmFyID0g
ZG9jdW1lbnQucmVnaXN0ZXIoJ3gtYmFyJywgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRN
TERpdkVsZW1lbnQucHJvdG90eXBlLCB7IHJlYWR5Q2FsbGJhY2s6IHsgdmFsdWU6IG1hcmtpbmdS
ZWFkeUNhbGxiYWNrIH0gfSkgfSk7CitzaG91bGRCZSgid2luZG93LnJlYWR5RWxlbWVudHMiLCAi
W2Zvb1BhcnNlZCwgZm9vSW5TaGFkb3csIGZvb0FwcGVuZGVkLCBiYXJQYXJzZWQsIGJhckluU2hh
ZG93LCBiYXJBcHBlbmRlZF0iKTsKK3Nob3VsZEJlVHJ1ZSgiZm9vUGFyc2VkIGluc3RhbmNlb2Yg
Rm9vIik7CitzaG91bGRCZVRydWUoImJhclBhcnNlZCBpbnN0YW5jZW9mIEJhciIpOworc2hvdWxk
QmVUcnVlKCJmb29BcHBlbmRlZCBpbnN0YW5jZW9mIEZvbyIpOworc2hvdWxkQmVUcnVlKCJiYXJB
cHBlbmRlZCBpbnN0YW5jZW9mIEJhciIpOworc2hvdWxkQmVUcnVlKCJmb29JblNoYWRvdyBpbnN0
YW5jZW9mIEZvbyIpOworc2hvdWxkQmVUcnVlKCJiYXJJblNoYWRvdyBpbnN0YW5jZW9mIEJhciIp
Oworc2hvdWxkQmVGYWxzZSgiZm9vT3V0T2ZUcmVlIGluc3RhbmNlb2YgRm9vIik7CitzaG91bGRC
ZUZhbHNlKCJiYXJPdXRPZlRyZWUgaW5zdGFuY2VvZiBCYXIiKTsKKworLy8gVHJlZSBpbnNlcnRp
b24gYWZ0ZXIgcmVnaXN0ZXIoKSBzaG91bGRuJ3QgdXBncmFkZSBhbnkuCitkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGZvb091dE9mVHJlZSk7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGJh
ck91dE9mVHJlZSk7CitzaG91bGRCZUZhbHNlKCJmb29PdXRPZlRyZWUgaW5zdGFuY2VvZiBGb28i
KTsKK3Nob3VsZEJlRmFsc2UoImJhck91dE9mVHJlZSBpbnN0YW5jZW9mIEJhciIpOworCitkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lck91dE9mVHJlZSk7CitzaG91bGRCZUZhbHNl
KCJmb29XcmFwcGVkQWZ0ZXJSZWdpc3RlciBpbnN0YW5jZW9mIEZvbyIpOworc2hvdWxkQmVGYWxz
ZSgiYmFyV3JhcHBlZEFmdGVyUmVnaXN0ZXIgaW5zdGFuY2VvZiBCYXIiKTsKKworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195265</attachid>
            <date>2013-03-27 03:44:50 -0700</date>
            <delta_ts>2013-04-01 00:28:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113362-20130327194032.patch</filename>
            <type>text/plain</type>
            <size>21966</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2OTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ1NjIzYTFhMWUyNjAz
MmIyNWFmY2EyMTY5YThkY2VkYzEyNmFhYi4uYmQ4ZWMxNmJhMWJhYTkxOTY1YTU0OTYzN2NhZTA2
YmE0Nzc1OWY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEzLTAzLTI3ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbQ3VzdG9tIEVsZW1l
bnRzXTogZG9jdW1lbnQucmVnaXN0ZXIgZG9lc24ndCB1cGdyYWRlIG5vZGVzIGluIGRvY3VtZW50
IGFib3ZlIHRoZSByZWdpc3RlcmluZyBzY3JpcHQgdGFnCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTMzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIHRoZSB1cGdy
YWRlIG1lY2hhbmlzbSBvZiBjdXN0b20gZWxlbWVudHMuCisKKyAgICAgICAgVGhlIGltcGxlbWVu
dGF0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gQXQgdGhlIGVuZCBvZgorICAgICAgICByZWdpc3Rl
ckVsZW1lbnQoKSwgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5IHRyYXZlcnNlcyB0aGUgZG9jdW1lbnQK
KyAgICAgICAgdHJlZSBhbmQgZG9lcyAidXBncmFkZSIgdG8gZWxlbWVudHMgd2hpY2ggbWF0Y2hl
cyBuZXdseSByZWdpc3RlcmVkCisgICAgICAgIGVsZW1lbnQgZGVmaW5pdGlvbi4KKworICAgICAg
ICBPbmUgY2F2ZWF0IGlzIG5ldyBFbGVtZW50Ojppc0N1c3RvbUVsZW1lbnQoKSBiaXQuIEJlZm9y
ZSB0aGlzCisgICAgICAgIGNoYW5nZSwgV2ViS2l0IGRlY2lkZXMgd2hldGhlciB0aGUgZWxlbWVu
dCBpcyBjdXN0b20gZWxlbWVudCBvcgorICAgICAgICBub3QgYmFzZWQgb25seSBvbiB0aGUgZWxl
bWVudCBuYW1lLCBAaXMgYXR0cmlidXRlIGFuZCByZWdpc3RlcmVkCisgICAgICAgIGRlZmluaXRp
b25zLgorCisgICAgICAgIFdpdGggdXBncmFkaW5nIHRob3VnaCwgdGhpcyBpcyBubyBsb25nZXIg
cG9zc2libGU6IEFuIGVsZW1lbnQgY2FuIGJlCisgICAgICAgIG5vbi1jdXN0b20gZXZlbiBpZiBp
dCBoYXMgYSByZWdpc3RlcmVkIGVsZW1lbnQgbmFtZS4gVGhhdCBoYXBwZW5zCisgICAgICAgIHdo
ZW46CisKKyAgICAgICAgLSBUaGUgZWxlbWVudCwgc2F5IDx4LWJhcj4sIGlzIGNyZWF0ZWQgb3V0
IG9mIHRyZWUsCisgICAgICAgIC0gZG9jdW1lbnQucmVnaXN0ZXIoIngtYmFyIikgaXMgbWFkZSwg
dGhlbgorICAgICAgICAtIHRoZSBlbGVtZW50IGlzIGluc2VydGVkIGludG8gdHJlZSBhbmQgZ2V0
cyBhIHdyYXBwZXIuCisKKyAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgZWxlbWVudCBzaG91bGRu
J3QgYmUgYSBjdXN0b20gZWxlbWVudCBiZWNhdXNlIGl0CisgICAgICAgIHdhcyBvdXQgb2YgdHJl
ZSB3aGVuIHRoZSByZWdpc3RyYXRpb24gaXMgbWFkZS4gSG93ZXZlciB3aXRob3V0IHRoZQorICAg
ICAgICBpc0N1c3RvbUVsZW1lbnQoKSBiaXQsIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBzZWUgdGhp
cyBmYWN0LgorICAgICAgICBGb3IgZGVtb25zdHJhdGlvbiwgImZvb1dyYXBwZWRBZnRlclJlZ2lz
dGVyIiBjYXNlIGluCisgICAgICAgIGRvY3VtZW50LXJlZ2lzdGVyLXVwZ3JhZGUuaHRtbCB3b3Vs
ZCBmYWlsIHdpdGhvdXQgdGhpcy4KKworICAgICAgICBUaGUgaXNDdXN0b21FbGVtZW50KCkgYml0
IGlzIHNldCB0byBzaG91bGQtYmUtY3VzdG9tIGVsZW1lbnRzLCB3aGljaCBhcmUKKworICAgICAg
ICAtIEVsZW1lbnRzIGNyZWF0ZWQgd2l0aCB2YWxpZCBjdXN0b20gZWxlbWVudCBuYW1lcyAoYXQg
Y3JlYXRpb24gdGltaW5nKSwKKyAgICAgICAgLSBFbGVtZW50cyB3aGljaCBnZXQgQGlzIGF0dHJp
YnV0ZXMgb2YgdmFsaWQgY3VzdG9tIGVsZW1lbnQgZGVmaW5pdGlvbnMgb3IKKyAgICAgICAgLSBV
cGdyYWRlZCBlbGVtZW50cy4KKworICAgICAgICBOb24tY3VzdG9tIGVsZW1lbnRzIGFyZSBleGNs
dWRlZCBmcm9tIGN1c3RvbSBlbGVtZW50IHdyYXBwZXIKKyAgICAgICAgY3JlYXRpb24gYmFzZWQg
b24gdGhpcyBmbGFnLiBJbiBpbXBsZW1lbnRhdGlvbiwgdGhlIGV4Y2x1c2lvbiBpcworICAgICAg
ICBkb25lIGJ5IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZmluZEZvcigpLgorCisgICAgICAgIFRl
c3Q6IGZhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci11cGdyYWRlLmh0bWwKKworICAg
ICAgICAqIGJpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnN0cnVjdG9yUHJvdG90eXBlKTogRXh0cmFjdGVkIGZyb20gY3JlYXRlV3JhcHBl
cigpCisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50SGVscGVyczo6Y3JlYXRlV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50SGVscGVyczo6dXBncmFkZVdyYXBw
ZXIpOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5o
OgorICAgICAgICAoQ3VzdG9tRWxlbWVudEhlbHBlcnMpOgorICAgICAgICAqIGRvbS9DdXN0b21F
bGVtZW50UmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lz
dHJ5OjpyZWdpc3RlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZWxlbWVudE5hbWVNYXRj
aGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6dXBncmFkZUVs
ZW1lbnRJZk5lZWRlZCk6IEFkZGVkCisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVn
aXN0cnk6OnVwZ3JhZGVUcmVlKTogQWRkZWQKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1l
bnRSZWdpc3RyeTo6ZmluZEZvcik6IERlY2xpbmluZyBub24tY3VzdG9tIGVsZW1lbnQKKyAgICAg
ICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZmluZEZvckludGVybmFsKTogRXh0
cmFjdGVkIGZyb20gZmluZEZvcigpCisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVn
aXN0cnk6OmRpZEdpdmVUeXBlRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVs
ZW1lbnRSZWdpc3RyeTo6ZGlkQ3JlYXRlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0
b21FbGVtZW50UmVnaXN0cnk6OmRpZEJlY29tZUN1c3RvbUVsZW1lbnQpOiBBZGRlZCB0byBjYWxs
IHNldEN1c3RvbUVsZW1lbnQoKQorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnku
aDoKKyAgICAgICAgKEN1c3RvbUVsZW1lbnRSZWdpc3RyeSk6CisgICAgICAgICogZG9tL0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aXNDdXN0b21FbGVtZW50KTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRDdXN0b21FbGVtZW50KTogQWRkZWQu
CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRh
Lmg6CisgICAgICAgIChFbGVtZW50UmFyZURhdGEpOiBBZGRlZCBtX2lzQ3VzdG9tRWxlbWVudAor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjppc0N1c3RvbUVsZW1lbnQpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0Q3VzdG9tRWxlbWVudCk6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFyZURh
dGEpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisKIDIwMTMtMDMtMjcgIFl1cnkgU2VtaWtoYXRz
a3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogdXBkYXRl
IFRpbWVsaW5lLlRpbWVsaW5lRXZlbnQgZGVmaW5pdGlvbiB0byBpbmNsdWRlIERPTSBjb3VudGVy
cyBhbmQgbmF0aXZlIG1lbW9yeSBzdGF0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuY3BwCmluZGV4IDkwOTkwYzdlMjU1YjllYWVhZjU0
OGM1MmE1YTAwYTZiNGY3ZDc2ODAuLjdlMTdlN2E1YzUxYjIwZTU1MGE2MThmMjgyOGMxNjNkM2M4
MjU3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1l
bnRIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVt
ZW50SGVscGVycy5jcHAKQEAgLTQzLDYgKzQzLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
I2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNvbnN0cnVjdG9yUHJvdG90eXBlKEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvciogY29uc3Ry
dWN0b3IsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JWYWx1
ZSA9IFdlYkNvcmU6OnRvVjgoY29uc3RydWN0b3IsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7
CisgICAgaWYgKGNvbnN0cnVjdG9yVmFsdWUuSXNFbXB0eSgpIHx8ICFjb25zdHJ1Y3RvclZhbHVl
LT5Jc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwor
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY29uc3RydWN0b3JXYXBwZXIgPSB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KGNvbnN0cnVjdG9yVmFsdWUpOworICAgIHJldHVybiB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGNvbnN0cnVjdG9yV2FwcGVyLT5HZXQodjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJwcm90b3R5cGUiKSkpOworfQorCisKIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Q3VzdG9tRWxlbWVudEhlbHBlcnM6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxFbGVtZW50PiBp
bXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgUGFzc1JlZlB0cjxD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKIHsKICAgICBBU1NFUlQoaW1wbCk7CkBAIC01NywxNSArNjcsMTIgQEAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBDdXN0b21FbGVtZW50SGVscGVyczo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRy
PEVsZW1lbnQ+IGkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogCi0gICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yVmFsdWUgPSBXZWJDb3JlOjp0b1Y4KGNvbnN0cnVj
dG9yLmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwotICAgIGlmIChjb25zdHJ1Y3Rv
clZhbHVlLklzRW1wdHkoKSB8fCAhY29uc3RydWN0b3JWYWx1ZS0+SXNPYmplY3QoKSkKKyAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHByb3RvdHlwZSA9IGNvbnN0cnVjdG9yUHJvdG90eXBlKGNv
bnN0cnVjdG9yLmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAgIGlmIChwcm90
b3R5cGUuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pigp
OwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY29uc3RydWN0b3JXYXBwZXIgPSB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGNvbnN0cnVjdG9yVmFsdWUpOwotICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gcHJvdG90eXBlID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChjb25z
dHJ1Y3RvcldhcHBlci0+R2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgicHJvdG90eXBlIikpKTsK
ICAgICBXcmFwcGVyVHlwZUluZm8qIHR5cGVJbmZvID0gQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmZp
bmRXcmFwcGVyVHlwZShwcm90b3R5cGUpOwogICAgIGlmICghdHlwZUluZm8pCiAgICAgICAgIHJl
dHVybiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCk7Ci0KICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmNyZWF0ZVdyYXBwZXIoY3JlYXRpb25Db250ZXh0
LCB0eXBlSW5mbywgaW1wbC5nZXQoKSwgaXNvbGF0ZSk7CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwpAQCAtNzUsNiAr
ODIsMjEgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBDdXN0b21FbGVtZW50SGVscGVyczo6Y3Jl
YXRlV3JhcHBlcihQYXNzUmVmUHRyPEVsZW1lbnQ+IGkKICAgICByZXR1cm4gd3JhcHBlcjsKIH0K
IAordm9pZCBDdXN0b21FbGVtZW50SGVscGVyczo6dXBncmFkZVdyYXBwZXIoRWxlbWVudCogZWxl
bWVudCwgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciwgU2NyaXB0U3RhdGUq
IHN0YXRlKQoreworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyVmFsdWUgPSBET01E
YXRhU3RvcmU6OmdldFdyYXBwZXIoZWxlbWVudCwgc3RhdGUtPmNvbnRleHQoKS0+R2V0SXNvbGF0
ZSgpKTsKKyAgICAvLyBJZiB3cmFwcGVyIGhhc24ndCBiZWVuIHRoZXJlLCB3ZSBjYW4gbGV0IHRo
ZSBjcmVhdGVXcmFwcGVyKCkgZG8gdGhlIGpvYi4KKyAgICBpZiAod3JhcHBlclZhbHVlLklzRW1w
dHkoKSB8fCAhd3JhcHBlclZhbHVlLT5Jc09iamVjdCgpKQorICAgICAgICByZXR1cm47CisgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdCh3cmFwcGVyVmFsdWUpOworICAgIC8vIFdlIGRvbid0IG5lZWQgdmFsaWQgY3JlYXRpb25D
b250ZXh0IGhlcmUgc2luY2UgdGhlIGNvbnN0cnVjdG9yIG9iamVjdCBzaG91bGQgYWxyZWFkeSBo
YXZlIGEgd3JhcHBlcgorICAgIC8vIGFuZCBjb25zdHJ1Y3RvclByb3RvdHlwZSgpIHNob3VsZCBi
ZSBhYmxlIHRvIHVzZSBpdC4KKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHByb3RvdHlwZSA9
IGNvbnN0cnVjdG9yUHJvdG90eXBlKGNvbnN0cnVjdG9yLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
KCksIHN0YXRlLT5jb250ZXh0KCktPkdldElzb2xhdGUoKSk7CisgICAgaWYgKHByb3RvdHlwZS5J
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICB3cmFwcGVyLT5TZXRQcm90b3R5cGUocHJv
dG90eXBlKTsKK30KKwogYm9vbCBDdXN0b21FbGVtZW50SGVscGVyczo6aW5pdGlhbGl6ZUNvbnN0
cnVjdG9yV3JhcHBlcihDdXN0b21FbGVtZW50Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yLCBjb25z
dCBTY3JpcHRWYWx1ZSYgcHJvdG90eXBlLCBTY3JpcHRTdGF0ZSogc3RhdGUpCiB7CiAgICAgQVNT
RVJUKGlzRmVhdHVyZUFsbG93ZWQoc3RhdGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9DdXN0b21FbGVtZW50SGVscGVycy5oCmluZGV4IGRjZmU5ZmI3MTlhODQxNjY5YWY0
OWExODBlM2MxMjZlYmUxZWY4MzQuLjA4MzU4NGM3NDZhM2U2ODA0MzNhMzg4ZjY2MDAwZmU2MzNk
MWZjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0N1c3RvbUVsZW1l
bnRIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVu
dEhlbHBlcnMuaApAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFF1
YWxpZmllZE5hbWUqIGZpbmRMb2NhbE5hbWUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjaGFpbik7
CiAKICAgICBzdGF0aWMgdm9pZCBpbnZva2VSZWFkeUNhbGxiYWNrc0lmTmVlZGVkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBWZWN0b3I8Q3VzdG9tRWxlbWVudEludm9jYXRpb24+Jik7
CisgICAgc3RhdGljIHZvaWQgdXBncmFkZVdyYXBwZXIoRWxlbWVudCosIEN1c3RvbUVsZW1lbnRD
b25zdHJ1Y3RvciosIFNjcmlwdFN0YXRlKik7CiAKICAgICAvLwogICAgIC8vIFlvdSBjYW4ganVz
dCB1c2UgdG9WOChOb2RlKikgdG8gZ2V0IGNvcnJlY3Qgd3JhcHBlciBvYmplY3RzLCBldmVuIGZv
ciBjdXN0b20gZWxlbWVudHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9t
RWxlbWVudFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVn
aXN0cnkuY3BwCmluZGV4IDZhN2YyZDUxODJjN2QzYmU5MWE1OWQ1ZWJjYTI4NTA4NDdmM2QyMTgu
LmEyOGViYzA5NmE4NjBkMTQzYjdmODlkYjY2YmMzM2JlNTExMGFkYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwCkBAIC0zOSw4ICszOSwxMCBAQAog
I2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkVsZW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiSFRNTFVua25vd25FbGVtZW50LmgiCisjaW5jbHVkZSAiTm9kZVRy
YXZlcnNhbC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRl
IDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0xNjQsMTcg
KzE2Niw1NCBAQCBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5OjpyZWdpc3RlckVsZW1lbnQoU2NyaQogICAgIG1fY29uc3RydWN0b3JzLmFk
ZChzdGQ6Om1ha2VfcGFpcihjb25zdHJ1Y3Rvci0+dHlwZU5hbWUoKSwgY29uc3RydWN0b3ItPmxv
Y2FsTmFtZSgpKSwgY29uc3RydWN0b3IpOwogICAgIG1fbmFtZXMuYWRkKGNvbnN0cnVjdG9yLT50
eXBlTmFtZSgpKTsKIAorICAgIHVwZ3JhZGVUcmVlKHN0YXRlLCBkb2N1bWVudCgpLCBjb25zdHJ1
Y3Rvci5nZXQoKSk7CisKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9CiAKLVBhc3NSZWZQdHI8
Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmZpbmRGb3Io
RWxlbWVudCogZWxlbWVudCkgY29uc3QKK3N0YXRpYyBpbmxpbmUgYm9vbCBlbGVtZW50TmFtZU1h
dGNoZXMoRWxlbWVudCogZWxlbWVudCwgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvcikKIHsKLSAgICBBU1NFUlQoZWxlbWVudC0+ZG9jdW1lbnQoKS0+cmVnaXN0cnkoKSA9PSB0
aGlzKTsKKyAgICBpZiAoIWNvbnN0cnVjdG9yLT5pc0V4dGVuZGVkKCkpCisgICAgICAgIHJldHVy
biBjb25zdHJ1Y3Rvci0+bG9jYWxOYW1lKCkgPT0gZWxlbWVudC0+dGFnUU5hbWUoKTsKKyAgICBy
ZXR1cm4gY29uc3RydWN0b3ItPmxvY2FsTmFtZSgpID09IGVsZW1lbnQtPnRhZ1FOYW1lKCkKKyAg
ICAgICAgJiYgZWxlbWVudC0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6aXNBdHRyKQorICAgICAg
ICAmJiAoZWxlbWVudC0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aXNBdHRyKSA9PSBjb25zdHJ1
Y3Rvci0+dHlwZU5hbWUoKS5sb2NhbE5hbWUoKSAKKyAgICAgICAgICAgIHx8IGVsZW1lbnQtPmdl
dEF0dHJpYnV0ZShIVE1MTmFtZXM6OmlzQXR0cikudXBwZXIoKSA9PSBjb25zdHJ1Y3Rvci0+dHlw
ZU5hbWUoKS5sb2NhbE5hbWVVcHBlcigpKTsKK30KKworCitpbmxpbmUgdm9pZCBDdXN0b21FbGVt
ZW50UmVnaXN0cnk6OnVwZ3JhZGVFbGVtZW50SWZOZWVkZWQoU2NyaXB0U3RhdGUqIHN0YXRlLCBF
bGVtZW50KiBlbGVtZW50LCBDdXN0b21FbGVtZW50Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQor
eworICAgIGlmICghZWxlbWVudE5hbWVNYXRjaGVzKGVsZW1lbnQsIGNvbnN0cnVjdG9yKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGRpZEJlY29tZUN1c3RvbUVsZW1lbnQoZWxlbWVudCk7CisgICAg
Q3VzdG9tRWxlbWVudEhlbHBlcnM6OnVwZ3JhZGVXcmFwcGVyKGVsZW1lbnQsIGNvbnN0cnVjdG9y
LCBzdGF0ZSk7Cit9CisKK3ZvaWQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojp1cGdyYWRlVHJlZShT
Y3JpcHRTdGF0ZSogc3RhdGUsIE5vZGUqIHJvb3QsIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvciog
Y29uc3RydWN0b3IpCit7CisgICAgZm9yIChOb2RlKiBub2RlID0gcm9vdDsgbm9kZTsgbm9kZSA9
IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSwgcm9vdCkpIHsKKyAgICAgICAgaWYgKCFub2RlLT5p
c0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgRWxlbWVudCog
ZWxlbWVudCA9IHRvRWxlbWVudChub2RlKTsKKyAgICAgICAgdXBncmFkZUVsZW1lbnRJZk5lZWRl
ZChzdGF0ZSwgZWxlbWVudCwgY29uc3RydWN0b3IpOworICAgICAgICBpZiAoRWxlbWVudFNoYWRv
dyogc2hhZG93ID0gZWxlbWVudC0+c2hhZG93KCkpIHsKKyAgICAgICAgICAgIGZvciAoU2hhZG93
Um9vdCogc2hhZG93Um9vdCA9IHNoYWRvdy0+eW91bmdlc3RTaGFkb3dSb290KCk7IHNoYWRvd1Jv
b3Q7IHNoYWRvd1Jvb3QgPSBzaGFkb3dSb290LT5vbGRlclNoYWRvd1Jvb3QoKSkKKyAgICAgICAg
ICAgICAgICB1cGdyYWRlVHJlZShzdGF0ZSwgc2hhZG93Um9vdCwgY29uc3RydWN0b3IpOworICAg
ICAgICB9CisgICAgfQorfQogCi0gICAgLy8gTW9zdCBlbGVtZW50cyBjYW4gYmUgcmVqZWN0ZWQg
dGhpcyBxdWljayBzY3JlZW5pbmcuCi0gICAgaWYgKCFuYW1lSW5jbHVkZXNIeXBoZW4oZWxlbWVu
dC0+dGFnTmFtZSgpKSAmJiAhZWxlbWVudC0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6aXNBdHRy
KSkKK1Bhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBDdXN0b21FbGVtZW50UmVn
aXN0cnk6OmZpbmRGb3IoRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAgICBpZiAoIWVsZW1l
bnQtPmlzQ3VzdG9tRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gZmlu
ZEZvckludGVybmFsKGVsZW1lbnQpOworfQogCitpbmxpbmUgUGFzc1JlZlB0cjxDdXN0b21FbGVt
ZW50Q29uc3RydWN0b3I+IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZmluZEZvckludGVybmFsKEVs
ZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgQVNTRVJUKGVsZW1lbnQtPmRvY3VtZW50KCkt
PnJlZ2lzdHJ5KCkgPT0gdGhpcyk7CiAgICAgUXVhbGlmaWVkTmFtZSBpZFZhbHVlKG51bGxBdG9t
LCBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjppc0F0dHIpLCBIVE1MTmFtZXM6Onho
dG1sTmFtZXNwYWNlVVJJKTsKICAgICByZXR1cm4gZmluZChpZFZhbHVlLCBlbGVtZW50LT50YWdR
TmFtZSgpKTsKIH0KQEAgLTIwNiwxNCArMjQ1LDIxIEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIGxv
CiAKIHZvaWQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkaWRHaXZlVHlwZUV4dGVuc2lvbihFbGVt
ZW50KiBlbGVtZW50KQogewotICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNv
bnN0cnVjdG9yID0gZmluZEZvcihlbGVtZW50KTsKKyAgICBBU1NFUlQoZWxlbWVudC0+aGFzQXR0
cmlidXRlKEhUTUxOYW1lczo6aXNBdHRyKSk7CisgICAgUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25z
dHJ1Y3Rvcj4gY29uc3RydWN0b3IgPSBmaW5kRm9ySW50ZXJuYWwoZWxlbWVudCk7CiAgICAgaWYg
KCFjb25zdHJ1Y3RvciB8fCAhY29uc3RydWN0b3ItPmlzRXh0ZW5kZWQoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIGFjdGl2YXRlKEN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uKGVsZW1lbnQpKTsKKyAg
ICBkaWRCZWNvbWVDdXN0b21FbGVtZW50KGVsZW1lbnQpOwogfQogCiB2b2lkIEN1c3RvbUVsZW1l
bnRSZWdpc3RyeTo6ZGlkQ3JlYXRlRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogeworICAgIGRp
ZEJlY29tZUN1c3RvbUVsZW1lbnQoZWxlbWVudCk7Cit9CisKK2lubGluZSB2b2lkIEN1c3RvbUVs
ZW1lbnRSZWdpc3RyeTo6ZGlkQmVjb21lQ3VzdG9tRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQor
eworICAgIGVsZW1lbnQtPnNldEN1c3RvbUVsZW1lbnQoKTsKICAgICBhY3RpdmF0ZShDdXN0b21F
bGVtZW50SW52b2NhdGlvbihlbGVtZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0
b21FbGVtZW50UmVnaXN0cnkuaAppbmRleCA4Mjg5YjE5ZDI1ZmU1YzViMjhkZGFjNjYwYTQwNjk2
OGY4YmY1M2I4Li42ODdiMzE1ZDUwNWQyOTA3OGI5NDgyOTRkNmE3MTIyY2I4ODc2N2FlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oCkBAIC03OCw3ICs3OCw3
IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBDdXN0b21FbGVtZW50UmVnaXN0cnkoRG9jdW1lbnQq
KTsKICAgICB+Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5KCk7CiAKLSAgICBQYXNzUmVmUHRyPEN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rvcj4gcmVnaXN0ZXJFbGVtZW50KFdlYkNvcmU6OlNjcmlwdFN0YXRl
KiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBF
eGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0b3I+
IHJlZ2lzdGVyRWxlbWVudChTY3JpcHRTdGF0ZSosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
Y29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQ
dHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBmaW5kRm9yKEVsZW1lbnQqKSBjb25zdDsKICAg
ICBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gZmluZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBlbGVtZW50TmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lKSBjb25z
dDsKICAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVFeHRlbnNpb24pIGNvbnN0
OwpAQCAtOTksNiArOTksMTEgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkTmFt
ZShjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICBzdGF0aWMgSW5zdGFuY2VTZXQmIGFjdGl2ZUN1
c3RvbUVsZW1lbnRSZWdpc3RyaWVzKCk7CiAKKyAgICBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRD
b25zdHJ1Y3Rvcj4gZmluZEZvckludGVybmFsKEVsZW1lbnQqKSBjb25zdDsKKyAgICB2b2lkIGRp
ZEJlY29tZUN1c3RvbUVsZW1lbnQoRWxlbWVudCopOworICAgIHZvaWQgdXBncmFkZUVsZW1lbnRJ
Zk5lZWRlZChTY3JpcHRTdGF0ZSosIEVsZW1lbnQqLCBDdXN0b21FbGVtZW50Q29uc3RydWN0b3Iq
KTsKKyAgICB2b2lkIHVwZ3JhZGVUcmVlKFNjcmlwdFN0YXRlKiwgTm9kZSogcm9vdCwgQ3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yKik7CisKICAgICB2b2lkIGFjdGl2YXRlKGNvbnN0IEN1c3RvbUVs
ZW1lbnRJbnZvY2F0aW9uJik7CiAgICAgdm9pZCBkZWFjdGl2YXRlKCk7CiAgICAgdm9pZCBkZWxp
dmVyTGlmZWN5Y2xlQ2FsbGJhY2tzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNDM3NDcx
ZDgzNjVkZTFiMTk0ZmRmMDgxOTM1ODZlODgwNmRjYjQyOC4uOGFiMWQ2YjRkNDMzYzgyM2M1NzU5
ZDAwMDJmNGIzOTgxMTc1NmI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjUyMiw2ICsy
NTIyLDE4IEBAIHZvaWQgRWxlbWVudDo6c2V0SXNJblRvcExheWVyKGJvb2wgaW5Ub3BMYXllcikK
IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKK2Jvb2wgRWxlbWVudDo6
aXNDdXN0b21FbGVtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBl
bGVtZW50UmFyZURhdGEoKS0+aXNDdXN0b21FbGVtZW50KCk7Cit9CisKK3ZvaWQgRWxlbWVudDo6
c2V0Q3VzdG9tRWxlbWVudCgpCit7CisgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCktPnNldEN1
c3RvbUVsZW1lbnQoKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKIHZv
aWQgRWxlbWVudDo6d2Via2l0UmVxdWVzdFBvaW50ZXJMb2NrKCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CmluZGV4IGRkODYwZjA2YzY0N2U2ZTdkOTMwMzE0OWE0MzQ5MzQyZTlmOTU5ZmYuLmVkNTJiZDli
NTUxZDQzZTgwMTFhM2ZjMjQ4YWZjN2U3MDVjYzU4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAt
NTk0LDYgKzU5NCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0luVG9wTGF5ZXIoYm9vbCk7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBib29sIGlzQ3VzdG9t
RWxlbWVudCgpIGNvbnN0OworICAgIHZvaWQgc2V0Q3VzdG9tRWxlbWVudCgpOworI2VuZGlmCisK
ICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIHZvaWQgd2Via2l0UmVxdWVzdFBvaW50ZXJM
b2NrKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFy
ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCAwYWE5
MDBkZDU1ZmVlZjRkNTEzMGZkMTcwZjgyN2Q2Y2NmZDZmNWY1Li5hZmNmOWFiZTBmM2I1NmI2NDZh
ODJkMTNlN2Y1YzA2MDYzNDI4NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5o
CkBAIC03MCw2ICs3MCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0luVG9wTGF5ZXIoYm9v
bCB2YWx1ZSkgeyBtX2lzSW5Ub3BMYXllciA9IHZhbHVlOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShDVVNUT01fRUxFTUVOVFMpCisgICAgYm9vbCBpc0N1c3RvbUVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ3VzdG9tRWxlbWVudDsgfQorICAgIHZvaWQgc2V0Q3VzdG9tRWxlbWVudCgpIHsg
bV9pc0N1c3RvbUVsZW1lbnQgPSB0cnVlOyB9CisjZW5kaWYKKwogICAgIGJvb2wgY2hpbGRyZW5B
ZmZlY3RlZEJ5SG92ZXIoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeUhvdmVy
OyB9CiAgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlIb3Zlcihib29sIHZhbHVlKSB7IG1f
Y2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIgPSB2YWx1ZTsgfQogICAgIGJvb2wgY2hpbGRyZW5BZmZl
Y3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlBY3RpdmU7
IH0KQEAgLTE0NCw2ICsxNDksOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShESUFMT0dfRUxFTUVO
VCkKICAgICB1bnNpZ25lZCBtX2lzSW5Ub3BMYXllciA6IDE7CiAjZW5kaWYKKyNpZiBFTkFCTEUo
Q1VTVE9NX0VMRU1FTlRTKQorICAgIHVuc2lnbmVkIG1faXNDdXN0b21FbGVtZW50IDogMTsKKyNl
bmRpZgogI2lmIEVOQUJMRShTVkcpCiAgICAgdW5zaWduZWQgbV9oYXNQZW5kaW5nUmVzb3VyY2Vz
IDogMTsKICNlbmRpZgpAQCAtMTk0LDYgKzIwMiw5IEBAIGlubGluZSBFbGVtZW50UmFyZURhdGE6
OkVsZW1lbnRSYXJlRGF0YShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogI2lmIEVOQUJMRShESUFM
T0dfRUxFTUVOVCkKICAgICAsIG1faXNJblRvcExheWVyKGZhbHNlKQogI2VuZGlmCisjaWYgRU5B
QkxFKERJQUxPR19FTEVNRU5UKQorICAgICwgbV9pc0N1c3RvbUVsZW1lbnQoZmFsc2UpCisjZW5k
aWYKICNpZiBFTkFCTEUoU1ZHKQogICAgICwgbV9oYXNQZW5kaW5nUmVzb3VyY2VzKGZhbHNlKQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAppbmRleCA4YTZkZDgyYzFmZWQwN2U0ZWY2N2M1Y2ZjZTI5NGUyZDdh
NTBhNTI1Li4zZTAyMjljZWZjNDNiNTM1ZDg2ODc3MWYxODRhYWEzZjZjZmFlNDY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmgKQEAgLTczNSwxMSArNzM1LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgTmVl
ZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZyA9IDEgPDwgMjUsCiAgICAgICAgIElzSW5TaGFkb3dUcmVl
RmxhZyA9IDEgPDwgMjYsCi0KICAgICAgICAgRGVmYXVsdE5vZGVGbGFncyA9IElzUGFyc2luZ0No
aWxkcmVuRmluaXNoZWRGbGFnCiAgICAgfTsKIAotICAgIC8vIDUgYml0cyByZW1haW5pbmcKKyAg
ICAvLyA0IGJpdHMgcmVtYWluaW5nCiAKICAgICBib29sIGdldEZsYWcoTm9kZUZsYWdzIG1hc2sp
IGNvbnN0IHsgcmV0dXJuIG1fbm9kZUZsYWdzICYgbWFzazsgfQogICAgIHZvaWQgc2V0RmxhZyhi
b29sIGYsIE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IG1fbm9kZUZsYWdzID0gKG1fbm9kZUZsYWdz
ICYgfm1hc2spIHwgKC0oaW50MzJfdClmICYgbWFzayk7IH0gCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTA5NGQyMGNhNzZk
NTk3YTUwMzU3ZTIyYWM5YTM4ODdiM2I1NDEyMS4uZmNiOGIxMWYzZmM2YTA5NGI2MDM0MTFiODcy
OTZjMWExMDNiNGYxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAzLTI3ICBIYWppbWUg
TW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbQ3VzdG9tIEVsZW1lbnRz
XTogZG9jdW1lbnQucmVnaXN0ZXIgZG9lc24ndCB1cGdyYWRlIG5vZGVzIGluIGRvY3VtZW50IGFi
b3ZlIHRoZSByZWdpc3RlcmluZyBzY3JpcHQgdGFnCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTMzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rl
ci11cGdyYWRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY3VzdG9t
L2RvY3VtZW50LXJlZ2lzdGVyLXVwZ3JhZGUuaHRtbDogQWRkZWQuCisKIDIwMTMtMDMtMjcgIFZz
ZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogRm9sbG93LXVwIHRvIHIxNDY4OTg6IHRlc3QgdGhhdCB1aVNvdXJjZUNvZGVzIGFyZSBu
b3QgbGVha2luZyBpbiBicmVha3BvaW50IG1hbmFnZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItdXBncmFkZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItdXBncmFkZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTcwOGVmNWVjNDdmZWY4ODU1ZGJkZDNhNjNlYWFkNTdj
ZGZkNjE3MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9k
b2N1bWVudC1yZWdpc3Rlci11cGdyYWRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0IEBACitU
ZXN0aW5nIGRvY3VtZW50LnJlZ2lzdGVyKCkgdHlwZSBleHRlbnNpb24gYmVoYXZpb3VycyB0aHJv
dWdoIGNyZWF0ZUVsZW1lbnQoKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgZm9vQXBwZW5kZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQgaXMgdHJ1ZQorUEFT
UyBiYXJBcHBlbmRlZCBpbnN0YW5jZW9mIEhUTUxEaXZFbGVtZW50IGlzIHRydWUKK1BBU1Mgd2lu
ZG93LnJlYWR5RWxlbWVudHMgaXMgW2Zvb1BhcnNlZCwgZm9vSW5TaGFkb3csIGZvb0FwcGVuZGVk
LCBiYXJQYXJzZWQsIGJhckluU2hhZG93LCBiYXJBcHBlbmRlZF0KK1BBU1MgZm9vUGFyc2VkIGlu
c3RhbmNlb2YgRm9vIGlzIHRydWUKK1BBU1MgYmFyUGFyc2VkIGluc3RhbmNlb2YgQmFyIGlzIHRy
dWUKK1BBU1MgZm9vQXBwZW5kZWQgaW5zdGFuY2VvZiBGb28gaXMgdHJ1ZQorUEFTUyBiYXJBcHBl
bmRlZCBpbnN0YW5jZW9mIEJhciBpcyB0cnVlCitQQVNTIGZvb0luU2hhZG93IGluc3RhbmNlb2Yg
Rm9vIGlzIHRydWUKK1BBU1MgYmFySW5TaGFkb3cgaW5zdGFuY2VvZiBCYXIgaXMgdHJ1ZQorUEFT
UyBmb29PdXRPZlRyZWUgaW5zdGFuY2VvZiBGb28gaXMgZmFsc2UKK1BBU1MgYmFyT3V0T2ZUcmVl
IGluc3RhbmNlb2YgQmFyIGlzIGZhbHNlCitQQVNTIGZvb091dE9mVHJlZSBpbnN0YW5jZW9mIEZv
byBpcyBmYWxzZQorUEFTUyBiYXJPdXRPZlRyZWUgaW5zdGFuY2VvZiBCYXIgaXMgZmFsc2UKK1BB
U1MgZm9vV3JhcHBlZEFmdGVyUmVnaXN0ZXIgaW5zdGFuY2VvZiBGb28gaXMgZmFsc2UKK1BBU1Mg
YmFyV3JhcHBlZEFmdGVyUmVnaXN0ZXIgaW5zdGFuY2VvZiBCYXIgaXMgZmFsc2UKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItdXBncmFkZS5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXVwZ3JhZGUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hZDQzNDg0OWJjMDhmNzJjMDU4ZTdlYjI1NmFhMjEwMjk4YzhjNjhi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50
LXJlZ2lzdGVyLXVwZ3JhZGUuaHRtbApAQCAtMCwwICsxLDY4IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCJUZXN0aW5nIGRvY3VtZW50LnJlZ2lzdGVyKCkgdHlwZSBleHRlbnNpb24gYmVoYXZpb3VycyB0
aHJvdWdoIGNyZWF0ZUVsZW1lbnQoKS4iKTsKK2RvY3VtZW50LnJlZ2lzdGVyID0gZG9jdW1lbnQu
cmVnaXN0ZXIgfHwgZG9jdW1lbnQud2Via2l0UmVnaXN0ZXI7Cis8L3NjcmlwdD4KKworPHgtZm9v
IGlkPSJmb29QYXJzZWQiPjwveC1mb28+Cis8ZGl2IGlzPSJ4LWJhciIgaWQ9ImJhclBhcnNlZCI+
PC9kaXY+Cis8ZGl2IGlkPSJob3N0Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgZm9vQXBwZW5kZWQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ4LWZvbyIpOworZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChmb29BcHBlbmRlZCk7Cit2YXIgYmFyQXBwZW5kZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiLCAieC1iYXIiKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYmFyQXBwZW5k
ZWQpOworCit2YXIgc2hhZG93ID0gaG9zdC53ZWJraXRDcmVhdGVTaGFkb3dSb290KCk7Cit2YXIg
Zm9vSW5TaGFkb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ4LWZvbyIpOwordmFyIGJhcklu
U2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiwgIngtYmFyIik7CitzaGFkb3cu
YXBwZW5kQ2hpbGQoZm9vSW5TaGFkb3cpOworc2hhZG93LmFwcGVuZENoaWxkKGJhckluU2hhZG93
KTsKKwordmFyIGZvb091dE9mVHJlZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIngtZm9vIik7
Cit2YXIgYmFyT3V0T2ZUcmVlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiwgIngtYmFy
Iik7CisKK3ZhciBjb250YWluZXJPdXRPZlRyZWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKK2NvbnRhaW5lck91dE9mVHJlZS5pbm5lckhUTUwgPSAoIjx4LWZvbyBpZD0nZm9vV3Jh
cHBlZEFmdGVyUmVnaXN0ZXInPjwveC1mb28+IiArCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICI8ZGl2IGlzPSd4LWJhcicgaWQ9J2JhcldyYXBwZWRBZnRlclJlZ2lzdGVyJz48L3gt
Zm9vPiIpOworPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CisKK3Nob3VsZEJlVHJ1ZSgiZm9vQXBwZW5k
ZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQiKTsKK3Nob3VsZEJlVHJ1ZSgiYmFyQXBw
ZW5kZWQgaW5zdGFuY2VvZiBIVE1MRGl2RWxlbWVudCIpOworCit3aW5kb3cucmVhZHlFbGVtZW50
cyA9IFtdOworZnVuY3Rpb24gbWFya2luZ1JlYWR5Q2FsbGJhY2soKSB7IHdpbmRvdy5yZWFkeUVs
ZW1lbnRzLnB1c2godGhpcyk7IH0KKworRm9vID0gZG9jdW1lbnQucmVnaXN0ZXIoJ3gtZm9vJywg
eyBwcm90b3R5cGU6IE9iamVjdC5jcmVhdGUoSFRNTEVsZW1lbnQucHJvdG90eXBlLCB7IHJlYWR5
Q2FsbGJhY2s6IHsgdmFsdWU6IG1hcmtpbmdSZWFkeUNhbGxiYWNrIH0gfSkgfSk7CitCYXIgPSBk
b2N1bWVudC5yZWdpc3RlcigneC1iYXInLCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1M
RGl2RWxlbWVudC5wcm90b3R5cGUsIHsgcmVhZHlDYWxsYmFjazogeyB2YWx1ZTogbWFya2luZ1Jl
YWR5Q2FsbGJhY2sgfSB9KSB9KTsKK3Nob3VsZEJlKCJ3aW5kb3cucmVhZHlFbGVtZW50cyIsICJb
Zm9vUGFyc2VkLCBmb29JblNoYWRvdywgZm9vQXBwZW5kZWQsIGJhclBhcnNlZCwgYmFySW5TaGFk
b3csIGJhckFwcGVuZGVkXSIpOworc2hvdWxkQmVUcnVlKCJmb29QYXJzZWQgaW5zdGFuY2VvZiBG
b28iKTsKK3Nob3VsZEJlVHJ1ZSgiYmFyUGFyc2VkIGluc3RhbmNlb2YgQmFyIik7CitzaG91bGRC
ZVRydWUoImZvb0FwcGVuZGVkIGluc3RhbmNlb2YgRm9vIik7CitzaG91bGRCZVRydWUoImJhckFw
cGVuZGVkIGluc3RhbmNlb2YgQmFyIik7CitzaG91bGRCZVRydWUoImZvb0luU2hhZG93IGluc3Rh
bmNlb2YgRm9vIik7CitzaG91bGRCZVRydWUoImJhckluU2hhZG93IGluc3RhbmNlb2YgQmFyIik7
CitzaG91bGRCZUZhbHNlKCJmb29PdXRPZlRyZWUgaW5zdGFuY2VvZiBGb28iKTsKK3Nob3VsZEJl
RmFsc2UoImJhck91dE9mVHJlZSBpbnN0YW5jZW9mIEJhciIpOworCisvLyBUcmVlIGluc2VydGlv
biBhZnRlciByZWdpc3RlcigpIHNob3VsZG4ndCB1cGdyYWRlIGFueS4KK2RvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoZm9vT3V0T2ZUcmVlKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYmFy
T3V0T2ZUcmVlKTsKK3Nob3VsZEJlRmFsc2UoImZvb091dE9mVHJlZSBpbnN0YW5jZW9mIEZvbyIp
Oworc2hvdWxkQmVGYWxzZSgiYmFyT3V0T2ZUcmVlIGluc3RhbmNlb2YgQmFyIik7CisKK2RvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyT3V0T2ZUcmVlKTsKK3Nob3VsZEJlRmFsc2Uo
ImZvb1dyYXBwZWRBZnRlclJlZ2lzdGVyIGluc3RhbmNlb2YgRm9vIik7CitzaG91bGRCZUZhbHNl
KCJiYXJXcmFwcGVkQWZ0ZXJSZWdpc3RlciBpbnN0YW5jZW9mIEJhciIpOworCis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195934</attachid>
            <date>2013-04-01 00:28:18 -0700</date>
            <delta_ts>2013-04-01 10:27:25 -0700</delta_ts>
            <desc>Addressed Adam&apos;s points</desc>
            <filename>bug-113362-20130401162811.patch</filename>
            <type>text/plain</type>
            <size>25761</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODdiZjIzMGRjMDlkOWQ2
Y2ZlODE1N2I3MmY1M2NhZGQzODQ0YmNhNy4uMWNmMTRhNzJiYTRmZDY2NTI4OWE1MWNkNTRhZmVl
ZmFlMDZmYzY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDEzLTA0LTAxICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbQ3VzdG9tIEVsZW1l
bnRzXTogZG9jdW1lbnQucmVnaXN0ZXIgZG9lc24ndCB1cGdyYWRlIG5vZGVzIGluIGRvY3VtZW50
IGFib3ZlIHRoZSByZWdpc3RlcmluZyBzY3JpcHQgdGFnCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTMzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIHRoZSB1cGdy
YWRlIG1lY2hhbmlzbSBvZiBjdXN0b20gZWxlbWVudHMuCisKKyAgICAgICAgVGhlIGltcGxlbWVu
dGF0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gQXQgdGhlIGVuZCBvZgorICAgICAgICByZWdpc3Rl
ckVsZW1lbnQoKSwgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5IHRyYXZlcnNlcyB0aGUgZG9jdW1lbnQK
KyAgICAgICAgdHJlZSBhbmQgcXVldWVzIGVsZW1lbnRzIHRvIGludm9jYXRpb24gbGlzdCBmb3Ig
ZG9pbmcgInVwZ3JhZGUiLgorCisgICAgICAgIE9uZSBjYXZlYXQgaXMgbmV3IEVsZW1lbnQ6Omlz
Q3VzdG9tRWxlbWVudCgpIGJpdC4gQmVmb3JlIHRoaXMKKyAgICAgICAgY2hhbmdlLCBXZWJLaXQg
ZGVjaWRlcyB3aGV0aGVyIHRoZSBlbGVtZW50IGlzIGN1c3RvbSBlbGVtZW50IG9yCisgICAgICAg
IG5vdCBiYXNlZCBvbmx5IG9uIHRoZSBlbGVtZW50IG5hbWUsIEBpcyBhdHRyaWJ1dGUgYW5kIHJl
Z2lzdGVyZWQKKyAgICAgICAgZGVmaW5pdGlvbnMuCisKKyAgICAgICAgV2l0aCB1cGdyYWRpbmcg
dGhvdWdoLCB0aGlzIGlzIG5vIGxvbmdlciBwb3NzaWJsZTogQW4gZWxlbWVudCBjYW4gYmUKKyAg
ICAgICAgbm9uLWN1c3RvbSBldmVuIGlmIGl0IGhhcyBhIHJlZ2lzdGVyZWQgZWxlbWVudCBuYW1l
LiBUaGF0IGhhcHBlbnMKKyAgICAgICAgd2hlbjoKKworICAgICAgICAtIFRoZSBlbGVtZW50LCBz
YXkgPHgtYmFyPiwgaXMgY3JlYXRlZCBvdXQgb2YgdHJlZSwKKyAgICAgICAgLSBkb2N1bWVudC5y
ZWdpc3RlcigieC1iYXIiKSBpcyBtYWRlLCB0aGVuCisgICAgICAgIC0gdGhlIGVsZW1lbnQgaXMg
aW5zZXJ0ZWQgaW50byB0cmVlIGFuZCBnZXRzIGEgd3JhcHBlci4KKworICAgICAgICBJbiB0aGlz
IGNhc2UsIHRoZSBlbGVtZW50IHNob3VsZG4ndCBiZSBhIGN1c3RvbSBlbGVtZW50IGJlY2F1c2Ug
aXQKKyAgICAgICAgd2FzIG91dCBvZiB0cmVlIHdoZW4gdGhlIHJlZ2lzdHJhdGlvbiBpcyBtYWRl
LiBIb3dldmVyIHdpdGhvdXQgdGhlCisgICAgICAgIGlzQ3VzdG9tRWxlbWVudCgpIGJpdCwgaXQg
aXMgbm90IHBvc3NpYmxlIHRvIHNlZSB0aGlzIGZhY3QuCisgICAgICAgIEZvciBkZW1vbnN0cmF0
aW9uLCAiZm9vV3JhcHBlZEFmdGVyUmVnaXN0ZXIiIGNhc2UgaW4KKyAgICAgICAgZG9jdW1lbnQt
cmVnaXN0ZXItdXBncmFkZS5odG1sIHdvdWxkIGZhaWwgd2l0aG91dCB0aGlzLgorCisgICAgICAg
IFRoZSBpc0N1c3RvbUVsZW1lbnQoKSBiaXQgaXMgc2V0IHRvIHNob3VsZC1iZS1jdXN0b20gZWxl
bWVudHMsIHdoaWNoIGFyZQorCisgICAgICAgIC0gRWxlbWVudHMgY3JlYXRlZCB3aXRoIHZhbGlk
IGN1c3RvbSBlbGVtZW50IG5hbWVzIChhdCBjcmVhdGlvbiB0aW1pbmcpLAorICAgICAgICAtIEVs
ZW1lbnRzIHdoaWNoIGdldCBAaXMgYXR0cmlidXRlcyBvZiB2YWxpZCBjdXN0b20gZWxlbWVudCBk
ZWZpbml0aW9ucyBvcgorICAgICAgICAtIFVwZ3JhZGVkIGVsZW1lbnRzLgorCisgICAgICAgIE5v
bi1jdXN0b20gZWxlbWVudHMgYXJlIGV4Y2x1ZGVkIGZyb20gY3VzdG9tIGVsZW1lbnQgd3JhcHBl
cgorICAgICAgICBjcmVhdGlvbiBiYXNlZCBvbiB0aGlzIGZsYWcuIEluIGltcGxlbWVudGF0aW9u
LCB0aGUgZXhjbHVzaW9uIGlzCisgICAgICAgIGRvbmUgYnkgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
OjpmaW5kRm9yKCkuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJl
Z2lzdGVyLXVwZ3JhZGUuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVu
dEhlbHBlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0b3JQcm90b3R5cGUpOiBF
eHRyYWN0ZWQgZnJvbSBjcmVhdGVXcmFwcGVyKCkKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVs
ZW1lbnRIZWxwZXJzOjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVs
ZW1lbnRIZWxwZXJzOjp1cGdyYWRlV3JhcHBlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tRWxlbWVudEhlbHBlcnM6Omludm9rZUVsZW1lbnRzSWZOZWVkZWQpOiBSZW5hbWVkIGZy
b20gaW52b2tlUmVhZHlDYWxsYmFja3NJZk5lZWRlZCgpCisgICAgICAgICogYmluZGluZ3Mvdjgv
Q3VzdG9tRWxlbWVudEhlbHBlcnMuaDoKKyAgICAgICAgKEN1c3RvbUVsZW1lbnRIZWxwZXJzKToK
KyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uOjpDdXN0b21FbGVtZW50SW52b2NhdGlvbik6IEV4
dGVuZCB0byBob2xkIGludm9jYXRpb24gdHlwZQorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxl
bWVudFJlZ2lzdHJ5OjpyZWdpc3RlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZWxlbWVu
dE5hbWVNYXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6
dXBncmFkZVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpm
aW5kRm9yKTogRGVjbGluaW5nIG5vbi1jdXN0b20gZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZmluZEZvckludGVybmFsKTogRXh0cmFjdGVkIGZyb20g
ZmluZEZvcigpLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkaWRH
aXZlVHlwZUV4dGVuc2lvbik6IENhbGxpbmcgc2V0Q3VzdG9tRWxlbWVudCgpLgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkaWRDcmVhdGVFbGVtZW50KTogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRpZEJlY29tZUN1c3Rv
bUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWxp
dmVyTGlmZWN5Y2xlQ2FsbGJhY2tzKToKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5Lmg6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50SW52b2NhdGlvbjo6dHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50SW52b2NhdGlvbjo6Y29uc3RydWN0b3Ip
OgorICAgICAgICAoQ3VzdG9tRWxlbWVudEludm9jYXRpb24pOgorICAgICAgICAoQ3VzdG9tRWxl
bWVudFJlZ2lzdHJ5KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50Ojppc0N1c3RvbUVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OnNldEN1c3RvbUVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRWxlbWVu
dC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKEVsZW1lbnRS
YXJlRGF0YSk6IEFkZGVkIG1faXNDdXN0b21FbGVtZW50CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UmFyZURhdGE6OmlzQ3VzdG9tRWxlbWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudFJhcmVEYXRhOjpzZXRDdXN0b21FbGVtZW50KTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSk6CisgICAgICAgICogZG9tL05v
ZGUuaDoKKwogMjAxMy0wMy0zMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEdyYWRpZW50IGJhY2tncm91bmQgZG9lcyBub3QgZ2V0IHJlcGFpbnRlZCB3aGVuIGNo
aWxkIGJveCBpcyBleHBhbmRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmNwcAppbmRleCBmODlhNDQ4NDY2ZjVmMDZhZmQ4MDI3MGUy
OTY4MGMzOTAwMjgyZDgxLi4yODBkZjkxYmEyNjliNjlkZGY5YzU2NzU5YjExYTYyN2JhZTYzZjc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVtZW50SGVs
cGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhl
bHBlcnMuY3BwCkBAIC00NCw2ICs0NCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBF
TkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
b25zdHJ1Y3RvclByb3RvdHlwZShDdXN0b21FbGVtZW50Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9y
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCit7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yVmFsdWUgPSBX
ZWJDb3JlOjp0b1Y4KGNvbnN0cnVjdG9yLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworICAg
IGlmIChjb25zdHJ1Y3RvclZhbHVlLklzRW1wdHkoKSB8fCAhY29uc3RydWN0b3JWYWx1ZS0+SXNP
YmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKKyAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNvbnN0cnVjdG9yV2FwcGVyID0gdjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdChjb25zdHJ1Y3RvclZhbHVlKTsKKyAgICByZXR1cm4gdjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdChjb25zdHJ1Y3RvcldhcHBlci0+R2V0KHY4OjpTdHJpbmc6Ok5ld1N5
bWJvbCgicHJvdG90eXBlIikpKTsKK30KKworCiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IEN1c3Rv
bUVsZW1lbnRIZWxwZXJzOjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8RWxlbWVudD4gaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIFBhc3NSZWZQdHI8Q3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yPiBjb25zdHJ1Y3Rvciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7
CiAgICAgQVNTRVJUKGltcGwpOwpAQCAtNTgsMTUgKzY4LDEyIEBAIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxFbGVt
ZW50PiBpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIH0KIAotICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjb25zdHJ1Y3RvclZhbHVlID0gV2ViQ29yZTo6dG9WOChjb25zdHJ1Y3Rvci5n
ZXQoKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLSAgICBpZiAoY29uc3RydWN0b3JWYWx1
ZS5Jc0VtcHR5KCkgfHwgIWNvbnN0cnVjdG9yVmFsdWUtPklzT2JqZWN0KCkpCisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBwcm90b3R5cGUgPSBjb25zdHJ1Y3RvclByb3RvdHlwZShjb25zdHJ1
Y3Rvci5nZXQoKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKKyAgICBpZiAocHJvdG90eXBl
LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNvbnN0cnVjdG9yV2FwcGVyID0gdjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdChjb25zdHJ1Y3RvclZhbHVlKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHByb3RvdHlwZSA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoY29uc3RydWN0
b3JXYXBwZXItPkdldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInByb3RvdHlwZSIpKSk7CiAgICAg
V3JhcHBlclR5cGVJbmZvKiB0eXBlSW5mbyA9IEN1c3RvbUVsZW1lbnRIZWxwZXJzOjpmaW5kV3Jh
cHBlclR5cGUocHJvdG90eXBlKTsKICAgICBpZiAoIXR5cGVJbmZvKQogICAgICAgICByZXR1cm4g
djg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOwotCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gVjhET01XcmFwcGVyOjpjcmVhdGVXcmFwcGVyKGNyZWF0aW9uQ29udGV4dCwgdHlw
ZUluZm8sIGltcGwuZ2V0KCksIGlzb2xhdGUpOwogICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKQEAgLTc2LDYgKzgzLDIx
IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gQ3VzdG9tRWxlbWVudEhlbHBlcnM6OmNyZWF0ZVdy
YXBwZXIoUGFzc1JlZlB0cjxFbGVtZW50PiBpCiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKK3Zv
aWQgQ3VzdG9tRWxlbWVudEhlbHBlcnM6OnVwZ3JhZGVXcmFwcGVyKEVsZW1lbnQqIGVsZW1lbnQs
IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IsIHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IGNvbnRleHQpCit7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXJWYWx1
ZSA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlcihlbGVtZW50LCBjb250ZXh0LT5HZXRJc29sYXRl
KCkpOworICAgIC8vIElmIHdyYXBwZXIgaGFzbid0IGJlZW4gdGhlcmUsIHdlIGNhbiBsZXQgdGhl
IGNyZWF0ZVdyYXBwZXIoKSBkbyB0aGUgam9iLgorICAgIGlmICh3cmFwcGVyVmFsdWUuSXNFbXB0
eSgpIHx8ICF3cmFwcGVyVmFsdWUtPklzT2JqZWN0KCkpCisgICAgICAgIHJldHVybjsKKyAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KHdyYXBwZXJWYWx1ZSk7CisgICAgLy8gV2UgZG9uJ3QgbmVlZCB2YWxpZCBjcmVhdGlvbkNv
bnRleHQgaGVyZSBzaW5jZSB0aGUgY29uc3RydWN0b3Igb2JqZWN0IHNob3VsZCBhbHJlYWR5IGhh
dmUgYSB3cmFwcGVyCisgICAgLy8gYW5kIGNvbnN0cnVjdG9yUHJvdG90eXBlKCkgc2hvdWxkIGJl
IGFibGUgdG8gdXNlIGl0LgorICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG90eXBlID0g
Y29uc3RydWN0b3JQcm90b3R5cGUoY29uc3RydWN0b3IsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4o
KSwgY29udGV4dC0+R2V0SXNvbGF0ZSgpKTsKKyAgICBpZiAocHJvdG90eXBlLklzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIHdyYXBwZXItPlNldFByb3RvdHlwZShwcm90b3R5cGUpOwor
fQorCiBib29sIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjppbml0aWFsaXplQ29uc3RydWN0b3JXcmFw
cGVyKEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IsIGNvbnN0IFNjcmlwdFZh
bHVlJiBwcm90b3R5cGUsIFNjcmlwdFN0YXRlKiBzdGF0ZSkKIHsKICAgICBBU1NFUlQoaXNGZWF0
dXJlQWxsb3dlZChzdGF0ZSkpOwpAQCAtMjE3LDcgKzIzOSw3IEBAIHZvaWQgQ3VzdG9tRWxlbWVu
dEhlbHBlcnM6Omludm9rZVJlYWR5Q2FsbGJhY2tJZk5lZWRlZChFbGVtZW50KiBlbGVtZW50LCB2
ODo6SGFuCiB9CiAKIAotdm9pZCBDdXN0b21FbGVtZW50SGVscGVyczo6aW52b2tlUmVhZHlDYWxs
YmFja3NJZk5lZWRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBleGVjdXRpb25Db250ZXh0LCBj
b25zdCBWZWN0b3I8Q3VzdG9tRWxlbWVudEludm9jYXRpb24+JiBpbnZvY2F0aW9ucykKK3ZvaWQg
Q3VzdG9tRWxlbWVudEhlbHBlcnM6Omludm9rZUVsZW1lbnRzSWZOZWVkZWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogZXhlY3V0aW9uQ29udGV4dCwgY29uc3QgVmVjdG9yPEN1c3RvbUVsZW1lbnRJ
bnZvY2F0aW9uPiYgaW52b2NhdGlvbnMpCiB7CiAgICAgQVNTRVJUKCFpbnZvY2F0aW9ucy5pc0Vt
cHR5KCkpOwogCkBAIC0yMjksNyArMjUxLDE1IEBAIHZvaWQgQ3VzdG9tRWxlbWVudEhlbHBlcnM6
Omludm9rZVJlYWR5Q2FsbGJhY2tzSWZOZWVkZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCoKIAog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW52b2NhdGlvbnMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgQVNTRVJUKGV4ZWN1dGlvbkNvbnRleHQgPT0gaW52b2NhdGlvbnNbaV0uZWxlbWVudCgp
LT5kb2N1bWVudCgpKTsKLSAgICAgICAgaW52b2tlUmVhZHlDYWxsYmFja0lmTmVlZGVkKGludm9j
YXRpb25zW2ldLmVsZW1lbnQoKSwgY29udGV4dCk7CisgICAgICAgIHN3aXRjaCAoaW52b2NhdGlv
bnNbaV0udHlwZSgpKSB7CisgICAgICAgIGNhc2UgQ3VzdG9tRWxlbWVudEludm9jYXRpb246OkNy
ZWF0ZWRDYWxsYmFjazoKKyAgICAgICAgICAgIGludm9rZVJlYWR5Q2FsbGJhY2tJZk5lZWRlZChp
bnZvY2F0aW9uc1tpXS5lbGVtZW50KCksIGNvbnRleHQpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgQ3VzdG9tRWxlbWVudEludm9jYXRpb246OlVwZ3JhZGU6CisgICAgICAgICAg
ICB1cGdyYWRlV3JhcHBlcihpbnZvY2F0aW9uc1tpXS5lbGVtZW50KCksIGludm9jYXRpb25zW2ld
LmNvbnN0cnVjdG9yKCksIGNvbnRleHQpOworICAgICAgICAgICAgaW52b2tlUmVhZHlDYWxsYmFj
a0lmTmVlZGVkKGludm9jYXRpb25zW2ldLmVsZW1lbnQoKSwgY29udGV4dCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxlbWVudEhlbHBlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0N1c3RvbUVsZW1lbnRIZWxwZXJzLmgKaW5kZXggMTEyYzE1NDQ3NGM5Y2FjNWU4
ZTVmNzRhYzU2ODg3M2JiNGYwODk0NC4uMWU4MWE1NDZlZjkxMTc4ZWM2NTdjYTk1ZTBmMDRjMjMw
N2ExNDg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvQ3VzdG9tRWxl
bWVudEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9DdXN0b21FbGVt
ZW50SGVscGVycy5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV3JhcHBl
clR5cGVJbmZvKiBmaW5kV3JhcHBlclR5cGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNoYWluKTsK
ICAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSogZmluZExvY2FsTmFtZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGNoYWluKTsKIAotICAgIHN0YXRpYyB2b2lkIGludm9rZVJlYWR5Q2FsbGJh
Y2tzSWZOZWVkZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFZlY3RvcjxDdXN0b21F
bGVtZW50SW52b2NhdGlvbj4mKTsKKyAgICBzdGF0aWMgdm9pZCBpbnZva2VFbGVtZW50c0lmTmVl
ZGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBWZWN0b3I8Q3VzdG9tRWxlbWVudElu
dm9jYXRpb24+Jik7CiAKICAgICAvLwogICAgIC8vIFlvdSBjYW4ganVzdCB1c2UgdG9WOChOb2Rl
KikgdG8gZ2V0IGNvcnJlY3Qgd3JhcHBlciBvYmplY3RzLCBldmVuIGZvciBjdXN0b20gZWxlbWVu
dHMuCkBAIC03Nyw2ICs3Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9p
ZCBpbnZva2VSZWFkeUNhbGxiYWNrSWZOZWVkZWQoRWxlbWVudCosIHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+KTsKKyAgICBzdGF0aWMgdm9pZCB1cGdyYWRlV3JhcHBlcihFbGVtZW50KiwgQ3VzdG9t
RWxlbWVudENvbnN0cnVjdG9yKiwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4pOwogICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxFbGVtZW50
Piwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50Q29uc3Ry
dWN0b3I+LCB2ODo6SXNvbGF0ZSopOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9t
RWxlbWVudFJlZ2lzdHJ5LmNwcAppbmRleCAxNDA0N2YzY2ZiNzRlNDdmNjhlODM1NjgxYjQ1MWRk
Y2YyNzM1OWVkLi4yMzEzY2MyN2UwODE5ODkzNGM3MDllNmUyM2EyOTRiZDQwMjc5MDkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcApAQCAtMzksOCAr
MzksMTAgQEAKICNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxVbmtub3duRWxlbWVudC5oIgorI2luY2x1
ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgi
CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpA
QCAtNTUsOCArNTcsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DdXN0b21FbGVtZW50
SW52b2NhdGlvbjo6Q3VzdG9tRWxlbWVudEludm9jYXRpb24oUGFzc1JlZlB0cjxFbGVtZW50PiBl
bGVtZW50KQotICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCitDdXN0b21FbGVtZW50SW52b2NhdGlv
bjo6Q3VzdG9tRWxlbWVudEludm9jYXRpb24oQ3VzdG9tRWxlbWVudEludm9jYXRpb246OlR5cGUg
dHlwZSwgUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50KQorICAgIDogbV90eXBlKHR5cGUpCisg
ICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKK3sKK30KKworQ3VzdG9tRWxlbWVudEludm9jYXRpb246
OkN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uKEN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uOjpUeXBlIHR5
cGUsIFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50
Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yKQorICAgIDogbV90eXBlKHR5cGUpCisgICAgLCBtX2Vs
ZW1lbnQoZWxlbWVudCkKKyAgICAsIG1fY29uc3RydWN0b3IoY29uc3RydWN0b3IpCiB7CiB9CiAK
QEAgLTE2NiwxNyArMTc2LDQ2IEBAIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9y
PiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OnJlZ2lzdGVyRWxlbWVudChTY3JpCiAgICAgbV9jb25z
dHJ1Y3RvcnMuYWRkKHN0ZDo6bWFrZV9wYWlyKGNvbnN0cnVjdG9yLT50eXBlTmFtZSgpLCBjb25z
dHJ1Y3Rvci0+bG9jYWxOYW1lKCkpLCBjb25zdHJ1Y3Rvcik7CiAgICAgbV9uYW1lcy5hZGQobG93
ZXJOYW1lKTsKIAorICAgIHVwZ3JhZGVUcmVlKHN0YXRlLCBkb2N1bWVudCgpLCBjb25zdHJ1Y3Rv
ci5nZXQoKSk7CisKICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9CiAKLVBhc3NSZWZQdHI8Q3Vz
dG9tRWxlbWVudENvbnN0cnVjdG9yPiBDdXN0b21FbGVtZW50UmVnaXN0cnk6OmZpbmRGb3IoRWxl
bWVudCogZWxlbWVudCkgY29uc3QKK3N0YXRpYyBpbmxpbmUgYm9vbCBlbGVtZW50TmFtZU1hdGNo
ZXMoRWxlbWVudCogZWxlbWVudCwgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
cikKIHsKLSAgICBBU1NFUlQoZWxlbWVudC0+ZG9jdW1lbnQoKS0+cmVnaXN0cnkoKSA9PSB0aGlz
KTsKKyAgICBpZiAoIWNvbnN0cnVjdG9yLT5pc0V4dGVuZGVkKCkpCisgICAgICAgIHJldHVybiBj
b25zdHJ1Y3Rvci0+bG9jYWxOYW1lKCkgPT0gZWxlbWVudC0+dGFnUU5hbWUoKTsKKyAgICByZXR1
cm4gY29uc3RydWN0b3ItPmxvY2FsTmFtZSgpID09IGVsZW1lbnQtPnRhZ1FOYW1lKCkKKyAgICAg
ICAgJiYgZWxlbWVudC0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6aXNBdHRyKQorICAgICAgICAm
JiAoZWxlbWVudC0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aXNBdHRyKSA9PSBjb25zdHJ1Y3Rv
ci0+dHlwZU5hbWUoKS5sb2NhbE5hbWUoKSAKKyAgICAgICAgICAgIHx8IGVsZW1lbnQtPmdldEF0
dHJpYnV0ZShIVE1MTmFtZXM6OmlzQXR0cikudXBwZXIoKSA9PSBjb25zdHJ1Y3Rvci0+dHlwZU5h
bWUoKS5sb2NhbE5hbWVVcHBlcigpKTsKK30KIAotICAgIC8vIE1vc3QgZWxlbWVudHMgY2FuIGJl
IHJlamVjdGVkIHRoaXMgcXVpY2sgc2NyZWVuaW5nLgotICAgIGlmICghbmFtZUluY2x1ZGVzSHlw
aGVuKGVsZW1lbnQtPnRhZ05hbWUoKSkgJiYgIWVsZW1lbnQtPmhhc0F0dHJpYnV0ZShIVE1MTmFt
ZXM6OmlzQXR0cikpCit2b2lkIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6dXBncmFkZVRyZWUoU2Ny
aXB0U3RhdGUqIHN0YXRlLCBOb2RlKiByb290LCBDdXN0b21FbGVtZW50Q29uc3RydWN0b3IqIGNv
bnN0cnVjdG9yKQoreworICAgIGZvciAoTm9kZSogbm9kZSA9IHJvb3Q7IG5vZGU7IG5vZGUgPSBO
b2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUsIHJvb3QpKSB7CisgICAgICAgIGlmICghbm9kZS0+aXNF
bGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSB0b0VsZW1lbnQobm9kZSk7CisgICAgICAgIGlmIChlbGVtZW50TmFtZU1hdGNoZXMo
ZWxlbWVudCwgY29uc3RydWN0b3IpKQorICAgICAgICAgICAgZGlkQmVjb21lQ3VzdG9tRWxlbWVu
dChlbGVtZW50LCBjb25zdHJ1Y3Rvcik7CisgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFk
b3cgPSBlbGVtZW50LT5zaGFkb3coKSkgeworICAgICAgICAgICAgZm9yIChTaGFkb3dSb290KiBz
aGFkb3dSb290ID0gc2hhZG93LT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgc2hhZG93Um9vdDsgc2hh
ZG93Um9vdCA9IHNoYWRvd1Jvb3QtPm9sZGVyU2hhZG93Um9vdCgpKQorICAgICAgICAgICAgICAg
IHVwZ3JhZGVUcmVlKHN0YXRlLCBzaGFkb3dSb290LCBjb25zdHJ1Y3Rvcik7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK1Bhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBDdXN0b21F
bGVtZW50UmVnaXN0cnk6OmZpbmRGb3IoRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAgICBp
ZiAoIWVsZW1lbnQtPmlzQ3VzdG9tRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gZmluZEZvckludGVybmFsKGVsZW1lbnQpOworfQogCitpbmxpbmUgUGFzc1JlZlB0cjxD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I+IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZmluZEZvcklu
dGVybmFsKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgQVNTRVJUKGVsZW1lbnQtPmRv
Y3VtZW50KCktPnJlZ2lzdHJ5KCkgPT0gdGhpcyk7CiAgICAgUXVhbGlmaWVkTmFtZSBpZFZhbHVl
KG51bGxBdG9tLCBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjppc0F0dHIpLCBIVE1M
TmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKTsKICAgICByZXR1cm4gZmluZChpZFZhbHVlLCBlbGVt
ZW50LT50YWdRTmFtZSgpKTsKIH0KQEAgLTIwOCwxNSArMjQ3LDI0IEBAIFBhc3NSZWZQdHI8RWxl
bWVudD4gQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGxvCiAKIHZvaWQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkaWRHaXZlVHlwZUV4dGVu
c2lvbihFbGVtZW50KiBlbGVtZW50KQogewotICAgIFJlZlB0cjxDdXN0b21FbGVtZW50Q29uc3Ry
dWN0b3I+IGNvbnN0cnVjdG9yID0gZmluZEZvcihlbGVtZW50KTsKKyAgICBBU1NFUlQoZWxlbWVu
dC0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6aXNBdHRyKSk7CisgICAgUmVmUHRyPEN1c3RvbUVs
ZW1lbnRDb25zdHJ1Y3Rvcj4gY29uc3RydWN0b3IgPSBmaW5kRm9ySW50ZXJuYWwoZWxlbWVudCk7
CiAgICAgaWYgKCFjb25zdHJ1Y3RvciB8fCAhY29uc3RydWN0b3ItPmlzRXh0ZW5kZWQoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIGFjdGl2YXRlKEN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uKGVsZW1l
bnQpKTsKKyAgICBlbGVtZW50LT5zZXRDdXN0b21FbGVtZW50KCk7CisgICAgYWN0aXZhdGUoQ3Vz
dG9tRWxlbWVudEludm9jYXRpb24oQ3VzdG9tRWxlbWVudEludm9jYXRpb246OkNyZWF0ZWRDYWxs
YmFjaywgZWxlbWVudCkpOwogfQogCiB2b2lkIEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGlkQ3Jl
YXRlRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogewotICAgIGFjdGl2YXRlKEN1c3RvbUVsZW1l
bnRJbnZvY2F0aW9uKGVsZW1lbnQpKTsKKyAgICBlbGVtZW50LT5zZXRDdXN0b21FbGVtZW50KCk7
CisgICAgYWN0aXZhdGUoQ3VzdG9tRWxlbWVudEludm9jYXRpb24oQ3VzdG9tRWxlbWVudEludm9j
YXRpb246OkNyZWF0ZWRDYWxsYmFjaywgZWxlbWVudCkpOworfQorCitpbmxpbmUgdm9pZCBDdXN0
b21FbGVtZW50UmVnaXN0cnk6OmRpZEJlY29tZUN1c3RvbUVsZW1lbnQoRWxlbWVudCogZWxlbWVu
dCwgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKK3sKKyAgICBlbGVtZW50
LT5zZXRDdXN0b21FbGVtZW50KCk7CisgICAgYWN0aXZhdGUoQ3VzdG9tRWxlbWVudEludm9jYXRp
b24oQ3VzdG9tRWxlbWVudEludm9jYXRpb246OlVwZ3JhZGUsIGVsZW1lbnQsIGNvbnN0cnVjdG9y
KSk7CiB9CiAKIHZvaWQgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjphY3RpdmF0ZShjb25zdCBDdXN0
b21FbGVtZW50SW52b2NhdGlvbiYgaW52b2NhdGlvbikKQEAgLTI0Niw3ICsyOTQsNyBAQCB2b2lk
IEN1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVsaXZlckxpZmVjeWNsZUNhbGxiYWNrcygpCiAgICAg
aWYgKCFtX2ludm9jYXRpb25zLmlzRW1wdHkoKSkgewogICAgICAgICBWZWN0b3I8Q3VzdG9tRWxl
bWVudEludm9jYXRpb24+IGludm9jYXRpb25zOwogICAgICAgICBtX2ludm9jYXRpb25zLnN3YXAo
aW52b2NhdGlvbnMpOwotICAgICAgICBDdXN0b21FbGVtZW50SGVscGVyczo6aW52b2tlUmVhZHlD
YWxsYmFja3NJZk5lZWRlZChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGludm9jYXRpb25zKTsK
KyAgICAgICAgQ3VzdG9tRWxlbWVudEhlbHBlcnM6Omludm9rZUVsZW1lbnRzSWZOZWVkZWQobV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBpbnZvY2F0aW9ucyk7CiAgICAgfQogCiAgICAgQVNTRVJU
KG1faW52b2NhdGlvbnMuaXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DdXN0b21FbGVtZW50UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVt
ZW50UmVnaXN0cnkuaAppbmRleCAyMWJmNjg1OTkwNGNlY2RkMTU0M2RjNDJiMjJiZTUyMjFhYjAz
ZTY4Li5jMTg0N2VlNTQxNDVlMjU0MTEzNzI5ODgwM2Q4YmI1OTQyYTJmNjA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5oCkBAIC01NywxMyArNTcsMjMgQEAg
Y2xhc3MgUXVhbGlmaWVkTmFtZTsKIAogY2xhc3MgQ3VzdG9tRWxlbWVudEludm9jYXRpb24gewog
cHVibGljOgotICAgIGV4cGxpY2l0IEN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uKFBhc3NSZWZQdHI8
RWxlbWVudD4pOworICAgIGVudW0gVHlwZSB7CisgICAgICAgIENyZWF0ZWRDYWxsYmFjaywKKyAg
ICAgICAgVXBncmFkZQorICAgIH07CisKKyAgICBDdXN0b21FbGVtZW50SW52b2NhdGlvbihUeXBl
LCBQYXNzUmVmUHRyPEVsZW1lbnQ+KTsKKyAgICBDdXN0b21FbGVtZW50SW52b2NhdGlvbihUeXBl
LCBQYXNzUmVmUHRyPEVsZW1lbnQ+LCBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rv
cj4pOwogICAgIH5DdXN0b21FbGVtZW50SW52b2NhdGlvbigpOwogCisgICAgVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fZWxlbWVudC5nZXQoKTsgfQorICAgIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvciog
Y29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0cnVjdG9yLmdldCgpOyB9CiAKIHBy
aXZhdGU6CisgICAgVHlwZSBtX3R5cGU7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fZWxlbWVudDsK
KyAgICBSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBtX2NvbnN0cnVjdG9yOwogfTsK
IAogY2xhc3MgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5IDogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9t
RWxlbWVudFJlZ2lzdHJ5PiAsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CkBA
IC03OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBDdXN0b21FbGVtZW50UmVnaXN0
cnkoRG9jdW1lbnQqKTsKICAgICB+Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5KCk7CiAKLSAgICBQYXNz
UmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gcmVnaXN0ZXJFbGVtZW50KFdlYkNvcmU6
OlNjcmlwdFN0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBEaWN0aW9uYXJ5
JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxDdXN0b21FbGVtZW50
Q29uc3RydWN0b3I+IHJlZ2lzdGVyRWxlbWVudChTY3JpcHRTdGF0ZSosIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBmaW5kRm9yKEVsZW1lbnQq
KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gZmluZChj
b25zdCBRdWFsaWZpZWROYW1lJiBlbGVtZW50TmFtZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbG9j
YWxOYW1lKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGVFeHRl
bnNpb24pIGNvbnN0OwpAQCAtOTksNiArMTA5LDEwIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJv
b2wgaXNWYWxpZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgc3RhdGljIEluc3RhbmNl
U2V0JiBhY3RpdmVDdXN0b21FbGVtZW50UmVnaXN0cmllcygpOwogCisgICAgUGFzc1JlZlB0cjxD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGZpbmRGb3JJbnRlcm5hbChFbGVtZW50KikgY29uc3Q7
CisgICAgdm9pZCBkaWRCZWNvbWVDdXN0b21FbGVtZW50KEVsZW1lbnQqLCBDdXN0b21FbGVtZW50
Q29uc3RydWN0b3IqKTsKKyAgICB2b2lkIHVwZ3JhZGVUcmVlKFNjcmlwdFN0YXRlKiwgTm9kZSog
cm9vdCwgQ3VzdG9tRWxlbWVudENvbnN0cnVjdG9yKik7CisKICAgICB2b2lkIGFjdGl2YXRlKGNv
bnN0IEN1c3RvbUVsZW1lbnRJbnZvY2F0aW9uJik7CiAgICAgdm9pZCBkZWFjdGl2YXRlKCk7CiAg
ICAgdm9pZCBkZWxpdmVyTGlmZWN5Y2xlQ2FsbGJhY2tzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
aW5kZXggMDM4N2ExMmIwMzE1ZDRmNzU3ZGE1NzU3ZjA2NTFmZThmYWQzYmY3ZC4uYzhiNzYzYTc0
ZmQ1ZjRmNzBkZjk3MDY4MDQwZDJlZDA4MzExOTllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApA
QCAtMjUxNCw2ICsyNTE0LDE4IEBAIHZvaWQgRWxlbWVudDo6c2V0SXNJblRvcExheWVyKGJvb2wg
aW5Ub3BMYXllcikKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKK2Jv
b2wgRWxlbWVudDo6aXNDdXN0b21FbGVtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzUmFy
ZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+aXNDdXN0b21FbGVtZW50KCk7Cit9CisKK3Zv
aWQgRWxlbWVudDo6c2V0Q3VzdG9tRWxlbWVudCgpCit7CisgICAgZW5zdXJlRWxlbWVudFJhcmVE
YXRhKCktPnNldEN1c3RvbUVsZW1lbnQoKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKIHZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVzdFBvaW50ZXJMb2NrKCkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCmluZGV4IGQyYmI1ZGI3YzM5OTM5YWIxNzNjMmY3YzJlZTFjY2M1ZTQ5YTdj
MGEuLmJiNTUxMGZmMDI2ZTE2MDAwYWMzMGFkNDgxMWMwYTRjOGEwOGVmM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaApAQCAtNTk1LDYgKzU5NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0luVG9w
TGF5ZXIoYm9vbCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKKyAgICBi
b29sIGlzQ3VzdG9tRWxlbWVudCgpIGNvbnN0OworICAgIHZvaWQgc2V0Q3VzdG9tRWxlbWVudCgp
OworI2VuZGlmCisKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIHZvaWQgd2Via2l0UmVx
dWVzdFBvaW50ZXJMb2NrKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEu
aAppbmRleCAwYWE5MDBkZDU1ZmVlZjRkNTEzMGZkMTcwZjgyN2Q2Y2NmZDZmNWY1Li5hZmNmOWFi
ZTBmM2I1NmI2NDZhODJkMTNlN2Y1YzA2MDYzNDI4NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRSYXJlRGF0YS5oCkBAIC03MCw2ICs3MCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0lu
VG9wTGF5ZXIoYm9vbCB2YWx1ZSkgeyBtX2lzSW5Ub3BMYXllciA9IHZhbHVlOyB9CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisgICAgYm9vbCBpc0N1c3RvbUVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX2lzQ3VzdG9tRWxlbWVudDsgfQorICAgIHZvaWQgc2V0Q3VzdG9t
RWxlbWVudCgpIHsgbV9pc0N1c3RvbUVsZW1lbnQgPSB0cnVlOyB9CisjZW5kaWYKKwogICAgIGJv
b2wgY2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZm
ZWN0ZWRCeUhvdmVyOyB9CiAgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlIb3Zlcihib29s
IHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIgPSB2YWx1ZTsgfQogICAgIGJvb2wg
Y2hpbGRyZW5BZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVj
dGVkQnlBY3RpdmU7IH0KQEAgLTE0NCw2ICsxNDksOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShE
SUFMT0dfRUxFTUVOVCkKICAgICB1bnNpZ25lZCBtX2lzSW5Ub3BMYXllciA6IDE7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgIHVuc2lnbmVkIG1faXNDdXN0b21FbGVt
ZW50IDogMTsKKyNlbmRpZgogI2lmIEVOQUJMRShTVkcpCiAgICAgdW5zaWduZWQgbV9oYXNQZW5k
aW5nUmVzb3VyY2VzIDogMTsKICNlbmRpZgpAQCAtMTk0LDYgKzIwMiw5IEBAIGlubGluZSBFbGVt
ZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogI2lm
IEVOQUJMRShESUFMT0dfRUxFTUVOVCkKICAgICAsIG1faXNJblRvcExheWVyKGZhbHNlKQogI2Vu
ZGlmCisjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQorICAgICwgbV9pc0N1c3RvbUVsZW1lbnQo
ZmFsc2UpCisjZW5kaWYKICNpZiBFTkFCTEUoU1ZHKQogICAgICwgbV9oYXNQZW5kaW5nUmVzb3Vy
Y2VzKGZhbHNlKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA4YTZkZDgyYzFmZWQwN2U0ZWY2N2M1
Y2ZjZTI5NGUyZDdhNTBhNTI1Li4zZTAyMjljZWZjNDNiNTM1ZDg2ODc3MWYxODRhYWEzZjZjZmFl
NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTczNSwxMSArNzM1LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYK
ICAgICAgICAgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZyA9IDEgPDwgMjUsCiAgICAgICAgIElz
SW5TaGFkb3dUcmVlRmxhZyA9IDEgPDwgMjYsCi0KICAgICAgICAgRGVmYXVsdE5vZGVGbGFncyA9
IElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWRGbGFnCiAgICAgfTsKIAotICAgIC8vIDUgYml0cyBy
ZW1haW5pbmcKKyAgICAvLyA0IGJpdHMgcmVtYWluaW5nCiAKICAgICBib29sIGdldEZsYWcoTm9k
ZUZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fbm9kZUZsYWdzICYgbWFzazsgfQogICAgIHZv
aWQgc2V0RmxhZyhib29sIGYsIE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IG1fbm9kZUZsYWdzID0g
KG1fbm9kZUZsYWdzICYgfm1hc2spIHwgKC0oaW50MzJfdClmICYgbWFzayk7IH0gCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MDkyNDQxYzZlYzE5NzJhYzM3ODEwMWQ5OWRlOGFlNzcwYjgyNTg3Yi4uOTlhN2FiODFmNGRiOTlj
NjdjZDY3YzNhOGQ1ZDE4N2MwODIwOTUxMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAz
LTI3ICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbQ3Vz
dG9tIEVsZW1lbnRzXTogZG9jdW1lbnQucmVnaXN0ZXIgZG9lc24ndCB1cGdyYWRlIG5vZGVzIGlu
IGRvY3VtZW50IGFib3ZlIHRoZSByZWdpc3RlcmluZyBzY3JpcHQgdGFnCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTMzNjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL2N1c3RvbS9kb2N1
bWVudC1yZWdpc3Rlci11cGdyYWRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXVwZ3JhZGUuaHRtbDogQWRkZWQuCisKIDIw
MTMtMDMtMzEgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBHcmFk
aWVudCBiYWNrZ3JvdW5kIGRvZXMgbm90IGdldCByZXBhaW50ZWQgd2hlbiBjaGlsZCBib3ggaXMg
ZXhwYW5kZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0b20vZG9jdW1l
bnQtcmVnaXN0ZXItdXBncmFkZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9j
dXN0b20vZG9jdW1lbnQtcmVnaXN0ZXItdXBncmFkZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTcwOGVmNWVjNDdmZWY4ODU1ZGJkZDNhNjNlYWFkNTdjZGZkNjE3MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2N1c3RvbS9kb2N1bWVudC1yZWdpc3Rlci11cGdyYWRl
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0IEBACitUZXN0aW5nIGRvY3VtZW50LnJlZ2lzdGVy
KCkgdHlwZSBleHRlbnNpb24gYmVoYXZpb3VycyB0aHJvdWdoIGNyZWF0ZUVsZW1lbnQoKS4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZm9vQXBwZW5kZWQgaW5zdGFuY2Vv
ZiBIVE1MVW5rbm93bkVsZW1lbnQgaXMgdHJ1ZQorUEFTUyBiYXJBcHBlbmRlZCBpbnN0YW5jZW9m
IEhUTUxEaXZFbGVtZW50IGlzIHRydWUKK1BBU1Mgd2luZG93LnJlYWR5RWxlbWVudHMgaXMgW2Zv
b1BhcnNlZCwgZm9vSW5TaGFkb3csIGZvb0FwcGVuZGVkLCBiYXJQYXJzZWQsIGJhckluU2hhZG93
LCBiYXJBcHBlbmRlZF0KK1BBU1MgZm9vUGFyc2VkIGluc3RhbmNlb2YgRm9vIGlzIHRydWUKK1BB
U1MgYmFyUGFyc2VkIGluc3RhbmNlb2YgQmFyIGlzIHRydWUKK1BBU1MgZm9vQXBwZW5kZWQgaW5z
dGFuY2VvZiBGb28gaXMgdHJ1ZQorUEFTUyBiYXJBcHBlbmRlZCBpbnN0YW5jZW9mIEJhciBpcyB0
cnVlCitQQVNTIGZvb0luU2hhZG93IGluc3RhbmNlb2YgRm9vIGlzIHRydWUKK1BBU1MgYmFySW5T
aGFkb3cgaW5zdGFuY2VvZiBCYXIgaXMgdHJ1ZQorUEFTUyBmb29PdXRPZlRyZWUgaW5zdGFuY2Vv
ZiBGb28gaXMgZmFsc2UKK1BBU1MgYmFyT3V0T2ZUcmVlIGluc3RhbmNlb2YgQmFyIGlzIGZhbHNl
CitQQVNTIGZvb091dE9mVHJlZSBpbnN0YW5jZW9mIEZvbyBpcyBmYWxzZQorUEFTUyBiYXJPdXRP
ZlRyZWUgaW5zdGFuY2VvZiBCYXIgaXMgZmFsc2UKK1BBU1MgZm9vV3JhcHBlZEFmdGVyUmVnaXN0
ZXIgaW5zdGFuY2VvZiBGb28gaXMgZmFsc2UKK1BBU1MgYmFyV3JhcHBlZEFmdGVyUmVnaXN0ZXIg
aW5zdGFuY2VvZiBCYXIgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jdXN0
b20vZG9jdW1lbnQtcmVnaXN0ZXItdXBncmFkZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
Y3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXVwZ3JhZGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDQzNDg0
OWJjMDhmNzJjMDU4ZTdlYjI1NmFhMjEwMjk4YzhjNjhiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vY3VzdG9tL2RvY3VtZW50LXJlZ2lzdGVyLXVwZ3JhZGUuaHRtbApA
QCAtMCwwICsxLDY4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0aW5nIGRvY3VtZW50LnJlZ2lz
dGVyKCkgdHlwZSBleHRlbnNpb24gYmVoYXZpb3VycyB0aHJvdWdoIGNyZWF0ZUVsZW1lbnQoKS4i
KTsKK2RvY3VtZW50LnJlZ2lzdGVyID0gZG9jdW1lbnQucmVnaXN0ZXIgfHwgZG9jdW1lbnQud2Vi
a2l0UmVnaXN0ZXI7Cis8L3NjcmlwdD4KKworPHgtZm9vIGlkPSJmb29QYXJzZWQiPjwveC1mb28+
Cis8ZGl2IGlzPSJ4LWJhciIgaWQ9ImJhclBhcnNlZCI+PC9kaXY+Cis8ZGl2IGlkPSJob3N0Ij48
L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgZm9vQXBwZW5kZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJ4LWZvbyIpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmb29BcHBlbmRlZCk7Cit2YXIg
YmFyQXBwZW5kZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiLCAieC1iYXIiKTsKK2Rv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYmFyQXBwZW5kZWQpOworCit2YXIgc2hhZG93ID0gaG9z
dC53ZWJraXRDcmVhdGVTaGFkb3dSb290KCk7Cit2YXIgZm9vSW5TaGFkb3cgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJ4LWZvbyIpOwordmFyIGJhckluU2hhZG93ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2IiwgIngtYmFyIik7CitzaGFkb3cuYXBwZW5kQ2hpbGQoZm9vSW5TaGFkb3cp
Oworc2hhZG93LmFwcGVuZENoaWxkKGJhckluU2hhZG93KTsKKwordmFyIGZvb091dE9mVHJlZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIngtZm9vIik7Cit2YXIgYmFyT3V0T2ZUcmVlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiwgIngtYmFyIik7CisKK3ZhciBjb250YWluZXJPdXRP
ZlRyZWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2NvbnRhaW5lck91dE9mVHJl
ZS5pbm5lckhUTUwgPSAoIjx4LWZvbyBpZD0nZm9vV3JhcHBlZEFmdGVyUmVnaXN0ZXInPjwveC1m
b28+IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8ZGl2IGlzPSd4LWJhcicg
aWQ9J2JhcldyYXBwZWRBZnRlclJlZ2lzdGVyJz48L3gtZm9vPiIpOworPC9zY3JpcHQ+CisKKzxz
Y3JpcHQ+CisKK3Nob3VsZEJlVHJ1ZSgiZm9vQXBwZW5kZWQgaW5zdGFuY2VvZiBIVE1MVW5rbm93
bkVsZW1lbnQiKTsKK3Nob3VsZEJlVHJ1ZSgiYmFyQXBwZW5kZWQgaW5zdGFuY2VvZiBIVE1MRGl2
RWxlbWVudCIpOworCit3aW5kb3cucmVhZHlFbGVtZW50cyA9IFtdOworZnVuY3Rpb24gbWFya2lu
Z1JlYWR5Q2FsbGJhY2soKSB7IHdpbmRvdy5yZWFkeUVsZW1lbnRzLnB1c2godGhpcyk7IH0KKwor
Rm9vID0gZG9jdW1lbnQucmVnaXN0ZXIoJ3gtZm9vJywgeyBwcm90b3R5cGU6IE9iamVjdC5jcmVh
dGUoSFRNTEVsZW1lbnQucHJvdG90eXBlLCB7IHJlYWR5Q2FsbGJhY2s6IHsgdmFsdWU6IG1hcmtp
bmdSZWFkeUNhbGxiYWNrIH0gfSkgfSk7CitCYXIgPSBkb2N1bWVudC5yZWdpc3RlcigneC1iYXIn
LCB7IHByb3RvdHlwZTogT2JqZWN0LmNyZWF0ZShIVE1MRGl2RWxlbWVudC5wcm90b3R5cGUsIHsg
cmVhZHlDYWxsYmFjazogeyB2YWx1ZTogbWFya2luZ1JlYWR5Q2FsbGJhY2sgfSB9KSB9KTsKK3No
b3VsZEJlKCJ3aW5kb3cucmVhZHlFbGVtZW50cyIsICJbZm9vUGFyc2VkLCBmb29JblNoYWRvdywg
Zm9vQXBwZW5kZWQsIGJhclBhcnNlZCwgYmFySW5TaGFkb3csIGJhckFwcGVuZGVkXSIpOworc2hv
dWxkQmVUcnVlKCJmb29QYXJzZWQgaW5zdGFuY2VvZiBGb28iKTsKK3Nob3VsZEJlVHJ1ZSgiYmFy
UGFyc2VkIGluc3RhbmNlb2YgQmFyIik7CitzaG91bGRCZVRydWUoImZvb0FwcGVuZGVkIGluc3Rh
bmNlb2YgRm9vIik7CitzaG91bGRCZVRydWUoImJhckFwcGVuZGVkIGluc3RhbmNlb2YgQmFyIik7
CitzaG91bGRCZVRydWUoImZvb0luU2hhZG93IGluc3RhbmNlb2YgRm9vIik7CitzaG91bGRCZVRy
dWUoImJhckluU2hhZG93IGluc3RhbmNlb2YgQmFyIik7CitzaG91bGRCZUZhbHNlKCJmb29PdXRP
ZlRyZWUgaW5zdGFuY2VvZiBGb28iKTsKK3Nob3VsZEJlRmFsc2UoImJhck91dE9mVHJlZSBpbnN0
YW5jZW9mIEJhciIpOworCisvLyBUcmVlIGluc2VydGlvbiBhZnRlciByZWdpc3RlcigpIHNob3Vs
ZG4ndCB1cGdyYWRlIGFueS4KK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZm9vT3V0T2ZUcmVl
KTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYmFyT3V0T2ZUcmVlKTsKK3Nob3VsZEJlRmFs
c2UoImZvb091dE9mVHJlZSBpbnN0YW5jZW9mIEZvbyIpOworc2hvdWxkQmVGYWxzZSgiYmFyT3V0
T2ZUcmVlIGluc3RhbmNlb2YgQmFyIik7CisKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29u
dGFpbmVyT3V0T2ZUcmVlKTsKK3Nob3VsZEJlRmFsc2UoImZvb1dyYXBwZWRBZnRlclJlZ2lzdGVy
IGluc3RhbmNlb2YgRm9vIik7CitzaG91bGRCZUZhbHNlKCJiYXJXcmFwcGVkQWZ0ZXJSZWdpc3Rl
ciBpbnN0YW5jZW9mIEJhciIpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="217907"
          type_id="1"
          status="-"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>