<?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>161726</bug_id>
          
          <creation_ts>2016-09-07 17:51:43 -0700</creation_ts>
          <short_desc>ScriptRunner should be driven by PendingScript rather than ScriptElement</short_desc>
          <delta_ts>2016-09-08 22:22:20 -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>WebCore JavaScript</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>161748</dependson>
    
    <dependson>161763</dependson>
          <blocked>148897</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1227445</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-07 17:51:43 -0700</bug_when>
    <thetext>ScriptElement::notifyFinished is only used when the script tag has defer / async.
It is tricky. We should use PendingScript&apos;s setClient,clearClient and drive ScriptRunner by itself (as the same to HTMLScriptRunner).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227519</commentid>
    <comment_count>1</comment_count>
      <attachid>288241</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-07 21:24:22 -0700</bug_when>
    <thetext>Created attachment 288241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227520</commentid>
    <comment_count>2</comment_count>
      <attachid>288242</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-07 21:27:42 -0700</bug_when>
    <thetext>Created attachment 288242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227522</commentid>
    <comment_count>3</comment_count>
      <attachid>288244</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-07 21:29:51 -0700</bug_when>
    <thetext>Created attachment 288244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227523</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-07 21:40:07 -0700</bug_when>
    <thetext>ah, i&apos;ll apply the slight change.
before calling clearClient, check whether it is watches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227535</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-09-07 22:35:30 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; ah, i&apos;ll apply the slight change.
&gt; before calling clearClient, check whether it is watches.

Do you want to upload a new patch before I review it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227540</commentid>
    <comment_count>6</comment_count>
      <attachid>288251</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-07 22:38:14 -0700</bug_when>
    <thetext>Created attachment 288251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227543</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-07 22:44:06 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; ah, i&apos;ll apply the slight change.
&gt; &gt; before calling clearClient, check whether it is watches.
&gt; 
&gt; Do you want to upload a new patch before I review it?

I&apos;ve just uploaded the patch :D! Now, ready for your review, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227551</commentid>
    <comment_count>8</comment_count>
      <attachid>288251</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-09-08 00:00:38 -0700</bug_when>
    <thetext>Comment on attachment 288251
Patch

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

r=me assuming you revert the change for IgnoreDestructiveWriteCountIncrementer in executeScriptForScriptRunner or explain why that&apos;s correct.

&gt; Source/WebCore/dom/ScriptElement.cpp:-370
&gt; -    IgnoreDestructiveWriteCountIncrementer ignoreDestructiveWriteCountIncrementer(&amp;m_element.document());

I don&apos;t think this is correct because we&apos;re dispatching load event in this function.
We need the counter to be non-zero while dispatching that event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227552</commentid>
    <comment_count>9</comment_count>
      <attachid>288251</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-08 00:15:37 -0700</bug_when>
    <thetext>Comment on attachment 288251
Patch

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

Thanks! I&apos;ll add the test to ensure the change.

&gt;&gt; Source/WebCore/dom/ScriptElement.cpp:-370
&gt;&gt; -    IgnoreDestructiveWriteCountIncrementer ignoreDestructiveWriteCountIncrementer(&amp;m_element.document());
&gt; 
&gt; I don&apos;t think this is correct because we&apos;re dispatching load event in this function.
&gt; We need the counter to be non-zero while dispatching that event.

Nice catch!!!
According to the spec[1], when firing the load event / the error event, this count should be already decremented.
So, the old behavior was incorrect. We should have the test to ensure that, thanks!

[1]: https://html.spec.whatwg.org/multipage/scripting.html#script-processing-model</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227558</commentid>
    <comment_count>10</comment_count>
      <attachid>288251</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-08 00:34:28 -0700</bug_when>
    <thetext>Comment on attachment 288251
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/ScriptElement.cpp:-370
&gt;&gt;&gt; -    IgnoreDestructiveWriteCountIncrementer ignoreDestructiveWriteCountIncrementer(&amp;m_element.document());
&gt;&gt; 
&gt;&gt; I don&apos;t think this is correct because we&apos;re dispatching load event in this function.
&gt;&gt; We need the counter to be non-zero while dispatching that event.
&gt; 
&gt; Nice catch!!!
&gt; According to the spec[1], when firing the load event / the error event, this count should be already decremented.
&gt; So, the old behavior was incorrect. We should have the test to ensure that, thanks!
&gt; 
&gt; [1]: https://html.spec.whatwg.org/multipage/scripting.html#script-processing-model

Correct link is this. https://html.spec.whatwg.org/multipage/scripting.html#execute-the-script-block</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227638</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-08 10:51:45 -0700</bug_when>
    <thetext>Committed r205652: &lt;http://trac.webkit.org/changeset/205652&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227666</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-08 11:46:32 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 161748</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228061</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-08 22:17:42 -0700</bug_when>
    <thetext>ASan crash was due to the bug in HashTable, not related to this patch.
Now, the fix is landed in r205694. Let&apos;s re-land it as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228062</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-09-08 22:22:20 -0700</bug_when>
    <thetext>Committed r205695: &lt;http://trac.webkit.org/changeset/205695&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288241</attachid>
            <date>2016-09-07 21:24:22 -0700</date>
            <delta_ts>2016-09-07 21:27:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161726-20160908132156.patch</filename>
            <type>text/plain</type>
            <size>14716</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2ZjNWJlMGM0ZTFmMDVk
ZTUxZWY4MTU2ODU3OGYyYjg0MWIxNjg4Zi4uMTFlN2M0Njk3ZmRkNTNlNjY5MGJmOTkyNWZmNzA1
YmRlZDc0MTk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ3IEBACiAyMDE2LTA5LTA3ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCisgICAgICAgIFNjcmlwdFJ1bm5l
ciBzaG91bGQgYmUgZHJpdmVuIGJ5IFBlbmRpbmdTY3JpcHQgcmF0aGVyIHRoYW4gU2NyaXB0RWxl
bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYx
NzI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Ny
aXB0UnVubmVyIGlzIGRyaXZlbiBieSBTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZC4gV2hp
bGUgU2NyaXB0UnVubmVyIGlzIGRyaXZlbiBieSB0aGlzLAorICAgICAgICBIVE1MU2NyaXB0UnVu
bmVyIGRvZXMgbm90IHVzZSBpdC4gSW5zdGVhZCwgSFRNTFNjcmlwdFJ1bm5lciB1c2VzIFBlbmRp
bmdTY3JpcHRDbGllbnQuIEFzIGEgcmVzdWx0LAorICAgICAgICBTY3JpcHRFbGVtZW50Ojpub3Rp
ZnlGaW5pc2hlZCBpcyB1c2VkIG9ubHkgd2hlbiB0aGUgc2NyaXB0IGlzIGFubm90YXRlZCB3aXRo
ICJkZWZlciIgb3IgImFzeW5jIgorICAgICAgICB3aGlsZSBhbGwgdGhlIGV4dGVybmFsIHNjcmlw
dCB3aWxsIGxvYWQgdGhlIExvYWRhYmxlU2NyaXB0LiBJdCBpcyBjb25mdXNpbmcuCisgICAgICAg
IFRoaXMgcGF0Y2ggcmVtb3ZlcyBTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCBhbmQgdXNl
IFBlbmRpbmdTY3JpcHQncyBvYnNlcnZpbmcgZnVuY3Rpb25hbGl0eQorICAgICAgICBpbiBTY3Jp
cHRSdW5uZXIgaW5zdGVhZC4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAg
ICAgKiBkb20vUGVuZGluZ1NjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nU2Ny
aXB0OjpjbGVhckNsaWVudCk6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOiBEcm9w
IExvYWRhYmxlU2NyaXB0Q2xpZW50IGludGVyZmFjZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEVsZW1lbnQ6OnByZXBhcmVTY3JpcHQpOiBEbyBub3QgdXNlIGFkZENsaWVudC4gU2NyaXB0UnVu
bmVyIHVzZSBQZW5kaW5nU2NyaXB0Ojp7c2V0Q2xpZW50LGNsZWFyQ2xpZW50fSBpbnN0ZWFkLgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdEZvclNjcmlwdFJ1
bm5lcik6IElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyIHdpbGwgYmUgZG9u
ZSBpbiBTY3JpcHRFbGVtZW50OjpleGVjdXRlU2NyaXB0LgorICAgICAgICBTbyBubyBuZWVkIHRv
IGRvIGl0IGhlcmUsIHRoYXQncyBkdXBsaWNhdGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RWxlbWVudDo6flNjcmlwdEVsZW1lbnQpOiBEZWxldGVkLiBTY3JpcHRFbGVtZW50IGRvZXMgbm90
IHVzZSBhZGRDbGllbnQvcmVtb3ZlQ2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxl
bWVudDo6c3RvcExvYWRSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHRGb3JIVE1MU2NyaXB0UnVubmVyKTogRGVsZXRlZC4gZXhl
Y3V0ZVNjcmlwdEZvckhUTUxTY3JpcHRSdW5uZXIgYW5kIGV4ZWN1dGVTY3JpcHRGb3JTY3JpcHRS
dW5uZXIgYXJlCisgICAgICAgIG1lcmdlZCBpbnRvIGV4ZWN1dGVTY3JpcHRGb3JSdW5uZXIuCisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6IERlbGV0ZWQu
CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEVsZW1lbnQ6On5TY3JpcHRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1l
bnQ6OndpbGxFeGVjdXRlSW5PcmRlcik6IFVzZWQgaW4gU2NyaXB0UnVubmVyIHRvIGRldGVybWlu
ZSB3aGV0aGVyIHRoZSBzY3JpcHQgaXMgYXN5bmMgb3IgZGVmZXIuCisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRFbGVtZW50Ojp3aWxsRXhlY3V0ZVdoZW5Eb2N1bWVudEZpbmlzaGVkUGFyc2luZyk6
IERlbGV0ZWQuCisgICAgICAgICogZG9tL1NjcmlwdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRSdW5uZXI6On5TY3JpcHRSdW5uZXIpOiBIYXNoU2V0J3MgaXRlcmF0b3Igd2ls
bCByZXR1cm4gYGNvbnN0IFBlbmRpbmdTY3JpcHQmYC4KKyAgICAgICAgQW5vdGhlciBvcHRpb24g
aXMgdXNpbmcgSGFzaFNldDxSZWZQdHI8UGVuZGluZ1NjcmlwdD4+LiBIZXJlLCB3ZSB1c2UgYSBs
aXR0bGUgYml0IHdlaXJlZCBjb25zdF9jYXN0LgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVu
bmVyOjpxdWV1ZVNjcmlwdEZvckV4ZWN1dGlvbik6IFVzZSBQZW5kaW5nU2NyaXB0OjpzZXRDbGll
bnQgdG8gd2FpdCBsb2FkaW5nLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjpub3Rp
ZnlGaW5pc2hlZCk6IE5vdGlmeSB0aGUgc2NyaXB0IHJlYWR5IGhlcmUuCisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRSdW5uZXI6OnRpbWVyRmlyZWQpOiBVc2UgZXhlY3V0ZVNjcmlwdEZvclNjcmlw
dFJ1bm5lci4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFJ1bm5lcjo6bm90aWZ5U2NyaXB0UmVh
ZHkpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9TY3JpcHRSdW5uZXIuaDoKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
Y3JpcHRSdW5uZXI6OmV4ZWN1dGVQZW5kaW5nU2NyaXB0QW5kRGlzcGF0Y2hFdmVudCk6IFVzZSBl
eGVjdXRlU2NyaXB0Rm9yU2NyaXB0UnVubmVyLgorCisyMDE2LTA5LTA3ICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCiAgICAgICAgIEludHJvZHVjZSBhYnN0cmFjdCBj
bGFzcyBMb2FkYWJsZVNjcmlwdCBmb3IgY2xhc3NpYyBzY3JpcHQgYW5kIG1vZHVsZSBncmFwaAog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNjc0CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9QZW5kaW5nU2NyaXB0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9QZW5kaW5nU2NyaXB0LmNwcAppbmRleCAzZWU0ZDI4ZWY5OTQxZmJhMmEx
YTkzZTQ5ZjA2NTRhN2QzYWFiNDg5Li41YmU4NTE3ODlkMzM2ZjJiNjY5YzZlMmZjMDJlM2IzYWJl
MzI5OWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUGVuZGluZ1NjcmlwdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BlbmRpbmdTY3JpcHQuY3BwCkBAIC05OCw3ICs5OCw2
IEBAIHZvaWQgUGVuZGluZ1NjcmlwdDo6c2V0Q2xpZW50KFBlbmRpbmdTY3JpcHRDbGllbnQqIGNs
aWVudCkKIAogdm9pZCBQZW5kaW5nU2NyaXB0OjpjbGVhckNsaWVudCgpCiB7Ci0gICAgQVNTRVJU
KG1fY2xpZW50KTsKICAgICBtX2NsaWVudCA9IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFbGVtZW50LmNwcAppbmRleCA0MmM4YzVmZWI4MjRiZDk5OGE2Nzg4MzEwODBlYjJmNDI3
YzJjMDk3Li5mYTc2MDA2Y2IwNzQ2ZDdlY2I1MWRmNDYwMTQwYjBlN2U2ZWJkMGM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBAIC03NSwxMSArNzUsNiBAQCBTY3JpcHRFbGVt
ZW50OjpTY3JpcHRFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgcGFyc2VySW5zZXJ0ZWQs
IGJvb2wgYWxyZWFkeQogICAgICAgICBtX3N0YXJ0TGluZU51bWJlciA9IG1fZWxlbWVudC5kb2N1
bWVudCgpLnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpLT50ZXh0UG9zaXRpb24oKS5tX2xpbmU7
CiB9CiAKLVNjcmlwdEVsZW1lbnQ6On5TY3JpcHRFbGVtZW50KCkKLXsKLSAgICBzdG9wTG9hZFJl
cXVlc3QoKTsKLX0KLQogYm9vbCBTY3JpcHRFbGVtZW50OjpzaG91bGRDYWxsRmluaXNoZWRJbnNl
cnRpbmdTdWJ0cmVlKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQogewogICAgIHJldHVy
biBpbnNlcnRpb25Qb2ludC5pbkRvY3VtZW50KCkgJiYgIW1fcGFyc2VySW5zZXJ0ZWQ7CkBAIC0y
NDUsMTEgKzI0MCw5IEBAIGJvb2wgU2NyaXB0RWxlbWVudDo6cHJlcGFyZVNjcmlwdChjb25zdCBU
ZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRpb24sIExlZ2FjCiAgICAgICAgIEFTU0VSVCht
X2xvYWRhYmxlU2NyaXB0KTsKICAgICAgICAgbV93aWxsRXhlY3V0ZUluT3JkZXIgPSB0cnVlOwog
ICAgICAgICBkb2N1bWVudC5zY3JpcHRSdW5uZXIoKS0+cXVldWVTY3JpcHRGb3JFeGVjdXRpb24o
dGhpcywgKm1fbG9hZGFibGVTY3JpcHQsIFNjcmlwdFJ1bm5lcjo6SU5fT1JERVJfRVhFQ1VUSU9O
KTsKLSAgICAgICAgbV9sb2FkYWJsZVNjcmlwdC0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICB9IGVs
c2UgaWYgKGhhc1NvdXJjZUF0dHJpYnV0ZSgpKSB7CiAgICAgICAgIEFTU0VSVChtX2xvYWRhYmxl
U2NyaXB0KTsKICAgICAgICAgbV9lbGVtZW50LmRvY3VtZW50KCkuc2NyaXB0UnVubmVyKCktPnF1
ZXVlU2NyaXB0Rm9yRXhlY3V0aW9uKHRoaXMsICptX2xvYWRhYmxlU2NyaXB0LCBTY3JpcHRSdW5u
ZXI6OkFTWU5DX0VYRUNVVElPTik7Ci0gICAgICAgIG1fbG9hZGFibGVTY3JpcHQtPmFkZENsaWVu
dCgqdGhpcyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gUmVzZXQgbGluZSBudW1iZXJpbmcg
Zm9yIG5lc3RlZCB3cml0ZXMuCiAgICAgICAgIFRleHRQb3NpdGlvbiBwb3NpdGlvbiA9IGRvY3Vt
ZW50LmlzSW5Eb2N1bWVudFdyaXRlKCkgPyBUZXh0UG9zaXRpb24oKSA6IHNjcmlwdFN0YXJ0UG9z
aXRpb247CkBAIC0zMzYsMTUgKzMyOSw2IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNj
cmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogICAgIH0KIH0KIAotdm9p
ZCBTY3JpcHRFbGVtZW50OjpzdG9wTG9hZFJlcXVlc3QoKQotewotICAgIGlmIChtX2xvYWRhYmxl
U2NyaXB0KSB7Ci0gICAgICAgIGlmICghbV93aWxsQmVQYXJzZXJFeGVjdXRlZCkKLSAgICAgICAg
ICAgIG1fbG9hZGFibGVTY3JpcHQtPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0gICAgICAgIG1fbG9h
ZGFibGVTY3JpcHQgPSBudWxscHRyOwotICAgIH0KLX0KLQogdm9pZCBTY3JpcHRFbGVtZW50Ojpl
eGVjdXRlU2NyaXB0QW5kRGlzcGF0Y2hFdmVudChMb2FkYWJsZVNjcmlwdCYgbG9hZGFibGVTY3Jp
cHQpCiB7CiAgICAgaWYgKE9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gZXJyb3IgPSBs
b2FkYWJsZVNjcmlwdC53YXNFcnJvcmVkKCkpIHsKQEAgLTM1OCwxNiArMzQyLDggQEAgdm9pZCBT
Y3JpcHRFbGVtZW50OjpleGVjdXRlU2NyaXB0QW5kRGlzcGF0Y2hFdmVudChMb2FkYWJsZVNjcmlw
dCYgbG9hZGFibGVTY3JpcHQKICAgICB9CiB9CiAKLXZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0
ZVNjcmlwdEZvclNjcmlwdFJ1bm5lcihMb2FkYWJsZVNjcmlwdCYgbG9hZGFibGVTY3JpcHQpCi17
Ci0gICAgQVNTRVJUKCFtX3dpbGxCZVBhcnNlckV4ZWN1dGVkKTsKLSAgICBleGVjdXRlU2NyaXB0
QW5kRGlzcGF0Y2hFdmVudChsb2FkYWJsZVNjcmlwdCk7Ci0gICAgbG9hZGFibGVTY3JpcHQucmVt
b3ZlQ2xpZW50KCp0aGlzKTsKLX0KLQotdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlU2NyaXB0
Rm9ySFRNTFNjcmlwdFJ1bm5lcihQZW5kaW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0KQordm9pZCBT
Y3JpcHRFbGVtZW50OjpleGVjdXRlU2NyaXB0Rm9yU2NyaXB0UnVubmVyKFBlbmRpbmdTY3JpcHQm
IHBlbmRpbmdTY3JpcHQpCiB7Ci0gICAgSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVt
ZW50ZXIgaWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIoJm1fZWxlbWVudC5k
b2N1bWVudCgpKTsKICAgICBpZiAoYXV0byogbG9hZGFibGVTY3JpcHQgPSBwZW5kaW5nU2NyaXB0
LmxvYWRhYmxlU2NyaXB0KCkpCiAgICAgICAgIGV4ZWN1dGVTY3JpcHRBbmREaXNwYXRjaEV2ZW50
KCpsb2FkYWJsZVNjcmlwdCk7CiAgICAgZWxzZSB7CkBAIC0zNzcsMjUgKzM1Myw2IEBAIHZvaWQg
U2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdEZvckhUTUxTY3JpcHRSdW5uZXIoUGVuZGluZ1Nj
cmlwdCYgcGVuZGluZ1NjcmlwCiAgICAgfQogfQogCi12b2lkIFNjcmlwdEVsZW1lbnQ6Om5vdGlm
eUZpbmlzaGVkKExvYWRhYmxlU2NyaXB0JikKLXsKLSAgICBBU1NFUlQoIW1fd2lsbEJlUGFyc2Vy
RXhlY3V0ZWQpOwotCi0gICAgLy8gTG9hZGFibGVTY3JpcHQgcG9zc2libHkgaW52b2tlcyB0aGlz
IG5vdGlmeUZpbmlzaGVkKCkgbW9yZSB0aGFuCi0gICAgLy8gb25jZSBiZWNhdXNlIFNjcmlwdEVs
ZW1lbnQgZG9lc24ndCB1bnN1YnNjcmliZSBpdHNlbGYgZnJvbQotICAgIC8vIExvYWRhYmxlU2Ny
aXB0IGhlcmUgYW5kIGRvZXMgaXQgaW4gZXhlY3V0ZSgpIGluc3RlYWQuCi0gICAgLy8gV2UgdXNl
IG1fbG9hZGFibGVTY3JpcHQgdG8gY2hlY2sgaWYgdGhpcyBmdW5jdGlvbiBpcyBhbHJlYWR5IGNh
bGxlZC4KLSAgICBpZiAoIW1fbG9hZGFibGVTY3JpcHQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGlmIChtX3dpbGxFeGVjdXRlSW5PcmRlcikKLSAgICAgICAgbV9lbGVtZW50LmRvY3VtZW50KCku
c2NyaXB0UnVubmVyKCktPm5vdGlmeVNjcmlwdFJlYWR5KHRoaXMsIFNjcmlwdFJ1bm5lcjo6SU5f
T1JERVJfRVhFQ1VUSU9OKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZWxlbWVudC5kb2N1bWVudCgp
LnNjcmlwdFJ1bm5lcigpLT5ub3RpZnlTY3JpcHRSZWFkeSh0aGlzLCBTY3JpcHRSdW5uZXI6OkFT
WU5DX0VYRUNVVElPTik7Ci0KLSAgICBtX2xvYWRhYmxlU2NyaXB0ID0gbnVsbHB0cjsKLX0KLQog
Ym9vbCBTY3JpcHRFbGVtZW50OjppZ25vcmVzTG9hZFJlcXVlc3QoKSBjb25zdAogewogICAgIHJl
dHVybiBtX2FscmVhZHlTdGFydGVkIHx8IG1faXNFeHRlcm5hbFNjcmlwdCB8fCBtX3BhcnNlcklu
c2VydGVkIHx8ICFtX2VsZW1lbnQuaW5Eb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVt
ZW50LmgKaW5kZXggNGRlODc4YzhmOWNlNzU4YzFlZTIzYmI4N2Y4YjIxZjgwNTY1ZTIzZi4uZjUy
Yjc3OGIxOWEwMjQ0NmUyNWRmYjFjNmVmNjY5OWUyM2RkZDE0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RWxlbWVudC5oCkBAIC0zOCw5ICszOCw5IEBAIGNsYXNzIFBlbmRpbmdTY3JpcHQ7CiBjbGFz
cyBTY3JpcHRFbGVtZW50OwogY2xhc3MgU2NyaXB0U291cmNlQ29kZTsKIAotY2xhc3MgU2NyaXB0
RWxlbWVudCA6IHByaXZhdGUgTG9hZGFibGVTY3JpcHRDbGllbnQgeworY2xhc3MgU2NyaXB0RWxl
bWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+U2NyaXB0RWxlbWVudCgpOworICAgIHZpcnR1
YWwgflNjcmlwdEVsZW1lbnQoKSB7IH0KIAogICAgIEVsZW1lbnQmIGVsZW1lbnQoKSB7IHJldHVy
biBtX2VsZW1lbnQ7IH0KICAgICBjb25zdCBFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9lbGVtZW50OyB9CkBAIC01Miw4ICs1Miw3IEBAIGNsYXNzIFNjcmlwdEVsZW1lbnQgOiBw
cml2YXRlIExvYWRhYmxlU2NyaXB0Q2xpZW50IHsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
c2NyaXB0Q29udGVudCgpIGNvbnN0OwogICAgIHZvaWQgZXhlY3V0ZVNjcmlwdChjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJik7CiAKLSAgICB2b2lkIGV4ZWN1dGVTY3JpcHRGb3JTY3JpcHRSdW5uZXIo
TG9hZGFibGVTY3JpcHQmKTsKLSAgICB2b2lkIGV4ZWN1dGVTY3JpcHRGb3JIVE1MU2NyaXB0UnVu
bmVyKFBlbmRpbmdTY3JpcHQmKTsKKyAgICB2b2lkIGV4ZWN1dGVTY3JpcHRGb3JTY3JpcHRSdW5u
ZXIoUGVuZGluZ1NjcmlwdCYpOwogCiAgICAgLy8gWE1MIHBhcnNlciBjYWxscyB0aGVzZQogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaExvYWRFdmVudCgpID0gMDsKQEAgLTYzLDYgKzYyLDcgQEAg
Y2xhc3MgU2NyaXB0RWxlbWVudCA6IHByaXZhdGUgTG9hZGFibGVTY3JpcHRDbGllbnQgewogICAg
IGJvb2wgd2lsbEJlUGFyc2VyRXhlY3V0ZWQoKSBjb25zdCB7IHJldHVybiBtX3dpbGxCZVBhcnNl
ckV4ZWN1dGVkOyB9CiAgICAgYm9vbCByZWFkeVRvQmVQYXJzZXJFeGVjdXRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVhZHlUb0JlUGFyc2VyRXhlY3V0ZWQ7IH0KICAgICBib29sIHdpbGxFeGVjdXRl
V2hlbkRvY3VtZW50RmluaXNoZWRQYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV93aWxsRXhlY3V0
ZVdoZW5Eb2N1bWVudEZpbmlzaGVkUGFyc2luZzsgfQorICAgIGJvb2wgd2lsbEV4ZWN1dGVJbk9y
ZGVyKCkgY29uc3QgeyByZXR1cm4gbV93aWxsRXhlY3V0ZUluT3JkZXI7IH0KICAgICBMb2FkYWJs
ZVNjcmlwdCogbG9hZGFibGVTY3JpcHQoKSB7IHJldHVybiBtX2xvYWRhYmxlU2NyaXB0LmdldCgp
OyB9CiAKIHByb3RlY3RlZDoKQEAgLTkyLDkgKzkyLDYgQEAgY2xhc3MgU2NyaXB0RWxlbWVudCA6
IHByaXZhdGUgTG9hZGFibGVTY3JpcHRDbGllbnQgewogICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFNjcmlwdD4gcmVxdWVzdFNjcmlwdFdpdGhDYWNoZShjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIG5vbmNlQXR0cmlidXRlLCBjb25zdCBTdHJpbmcmIGNyb3Nzb3JpZ2luQXR0cmlidXRl
KTsKIAogICAgIGJvb2wgcmVxdWVzdENsYXNzaWNTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwpOwotICAgIHZvaWQgc3RvcExvYWRSZXF1ZXN0KCk7Ci0KLSAgICB2b2lkIG5vdGlmeUZpbmlz
aGVkKExvYWRhYmxlU2NyaXB0Jikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBzb3Vy
Y2VBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBjaGFyc2V0
QXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0UnVubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3Bw
CmluZGV4IDlkN2VkM2ZjNWU2YmQyNDYwZjM3ZDJmNmFkYjViOTIzMDE5NTQ2ZTguLjk0NTQ3ZTll
M2Q4Mjk1NTM4NWQ5YzA5MGQyMmQxODNhOTY1Njk0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRS
dW5uZXIuY3BwCkBAIC00MCwxMiArNDAsMTggQEAgU2NyaXB0UnVubmVyOjpTY3JpcHRSdW5uZXIo
RG9jdW1lbnQmIGRvY3VtZW50KQogCiBTY3JpcHRSdW5uZXI6On5TY3JpcHRSdW5uZXIoKQogewot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zY3JpcHRzVG9FeGVjdXRlU29vbi5zaXplKCk7
ICsraSkKKyAgICBmb3IgKGF1dG8mIHBlbmRpbmdTY3JpcHQgOiBtX3NjcmlwdHNUb0V4ZWN1dGVT
b29uKSB7CisgICAgICAgIFVOVVNFRF9QQVJBTShwZW5kaW5nU2NyaXB0KTsKICAgICAgICAgbV9k
b2N1bWVudC5kZWNyZW1lbnRMb2FkRXZlbnREZWxheUNvdW50KCk7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3NjcmlwdHNUb0V4ZWN1dGVJbk9yZGVyLnNpemUoKTsgKytpKQorICAgIH0K
KyAgICBmb3IgKGF1dG8mIHBlbmRpbmdTY3JpcHQgOiBtX3NjcmlwdHNUb0V4ZWN1dGVJbk9yZGVy
KSB7CisgICAgICAgIHBlbmRpbmdTY3JpcHQtPmNsZWFyQ2xpZW50KCk7CiAgICAgICAgIG1fZG9j
dW1lbnQuZGVjcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOwotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX3BlbmRpbmdBc3luY1NjcmlwdHMuc2l6ZSgpOyArK2kpCisgICAgfQorICAg
IGZvciAoYXV0byYgcGVuZGluZ1NjcmlwdCA6IG1fcGVuZGluZ0FzeW5jU2NyaXB0cykgeworICAg
ICAgICBjb25zdF9jYXN0PFBlbmRpbmdTY3JpcHQmPihwZW5kaW5nU2NyaXB0LmdldCgpKS5jbGVh
ckNsaWVudCgpOwogICAgICAgICBtX2RvY3VtZW50LmRlY3JlbWVudExvYWRFdmVudERlbGF5Q291
bnQoKTsKKyAgICB9CiB9CiAKIHZvaWQgU2NyaXB0UnVubmVyOjpxdWV1ZVNjcmlwdEZvckV4ZWN1
dGlvbihTY3JpcHRFbGVtZW50KiBzY3JpcHRFbGVtZW50LCBMb2FkYWJsZVNjcmlwdCYgbG9hZGFi
bGVTY3JpcHQsIEV4ZWN1dGlvblR5cGUgZXhlY3V0aW9uVHlwZSkKQEAgLTU3LDE1ICs2MywxNyBA
QCB2b2lkIFNjcmlwdFJ1bm5lcjo6cXVldWVTY3JpcHRGb3JFeGVjdXRpb24oU2NyaXB0RWxlbWVu
dCogc2NyaXB0RWxlbWVudCwgTG9hZGFibAogCiAgICAgbV9kb2N1bWVudC5pbmNyZW1lbnRMb2Fk
RXZlbnREZWxheUNvdW50KCk7CiAKKyAgICBSZWY8UGVuZGluZ1NjcmlwdD4gcGVuZGluZ1Njcmlw
dCA9IFBlbmRpbmdTY3JpcHQ6OmNyZWF0ZShlbGVtZW50LCBsb2FkYWJsZVNjcmlwdCk7CiAgICAg
c3dpdGNoIChleGVjdXRpb25UeXBlKSB7CiAgICAgY2FzZSBBU1lOQ19FWEVDVVRJT046Ci0gICAg
ICAgIG1fcGVuZGluZ0FzeW5jU2NyaXB0cy5hZGQoc2NyaXB0RWxlbWVudCwgUGVuZGluZ1Njcmlw
dDo6Y3JlYXRlKGVsZW1lbnQsIGxvYWRhYmxlU2NyaXB0KSk7CisgICAgICAgIG1fcGVuZGluZ0Fz
eW5jU2NyaXB0cy5hZGQocGVuZGluZ1NjcmlwdC5jb3B5UmVmKCkpOwogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgSU5fT1JERVJfRVhFQ1VUSU9OOgotICAgICAgICBtX3NjcmlwdHNUb0V4ZWN1
dGVJbk9yZGVyLmFwcGVuZChQZW5kaW5nU2NyaXB0OjpjcmVhdGUoZWxlbWVudCwgbG9hZGFibGVT
Y3JpcHQpKTsKKyAgICAgICAgbV9zY3JpcHRzVG9FeGVjdXRlSW5PcmRlci5hcHBlbmQocGVuZGlu
Z1NjcmlwdC5jb3B5UmVmKCkpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgcGVuZGluZ1Nj
cmlwdC0+c2V0Q2xpZW50KHRoaXMpOwogfQogCiB2b2lkIFNjcmlwdFJ1bm5lcjo6c3VzcGVuZCgp
CkBAIC03OSwxOCArODcsMTcgQEAgdm9pZCBTY3JpcHRSdW5uZXI6OnJlc3VtZSgpCiAgICAgICAg
IG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCi12b2lkIFNjcmlwdFJ1bm5lcjo6bm90aWZ5
U2NyaXB0UmVhZHkoU2NyaXB0RWxlbWVudCogc2NyaXB0RWxlbWVudCwgRXhlY3V0aW9uVHlwZSBl
eGVjdXRpb25UeXBlKQordm9pZCBTY3JpcHRSdW5uZXI6Om5vdGlmeUZpbmlzaGVkKFBlbmRpbmdT
Y3JpcHQmIHBlbmRpbmdTY3JpcHQpCiB7Ci0gICAgc3dpdGNoIChleGVjdXRpb25UeXBlKSB7Ci0g
ICAgY2FzZSBBU1lOQ19FWEVDVVRJT046Ci0gICAgICAgIEFTU0VSVChtX3BlbmRpbmdBc3luY1Nj
cmlwdHMuY29udGFpbnMoc2NyaXB0RWxlbWVudCkpOwotICAgICAgICBtX3NjcmlwdHNUb0V4ZWN1
dGVTb29uLmFwcGVuZChtX3BlbmRpbmdBc3luY1NjcmlwdHMudGFrZShzY3JpcHRFbGVtZW50KS0+
cHRyKCkpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgSU5fT1JERVJfRVhFQ1VUSU9OOgor
ICAgIGF1dG8qIHNjcmlwdEVsZW1lbnQgPSB0b1NjcmlwdEVsZW1lbnRJZlBvc3NpYmxlKCZwZW5k
aW5nU2NyaXB0LmVsZW1lbnQoKSk7CisgICAgQVNTRVJUKHNjcmlwdEVsZW1lbnQpOworICAgIGlm
IChzY3JpcHRFbGVtZW50LT53aWxsRXhlY3V0ZUluT3JkZXIoKSkKICAgICAgICAgQVNTRVJUKCFt
X3NjcmlwdHNUb0V4ZWN1dGVJbk9yZGVyLmlzRW1wdHkoKSk7Ci0gICAgICAgIGJyZWFrOworICAg
IGVsc2UgeworICAgICAgICBBU1NFUlQobV9wZW5kaW5nQXN5bmNTY3JpcHRzLmNvbnRhaW5zKHBl
bmRpbmdTY3JpcHQpKTsKKyAgICAgICAgbV9zY3JpcHRzVG9FeGVjdXRlU29vbi5hcHBlbmQobV9w
ZW5kaW5nQXN5bmNTY3JpcHRzLnRha2UocGVuZGluZ1NjcmlwdCktPnB0cigpKTsKICAgICB9Cisg
ICAgcGVuZGluZ1NjcmlwdC5jbGVhckNsaWVudCgpOwogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90
KDApOwogfQogCkBAIC0xMTYsNyArMTIzLDcgQEAgdm9pZCBTY3JpcHRSdW5uZXI6OnRpbWVyRmly
ZWQoKQogICAgICAgICBhdXRvKiBzY3JpcHRFbGVtZW50ID0gdG9TY3JpcHRFbGVtZW50SWZQb3Nz
aWJsZSgmc2NyaXB0LT5lbGVtZW50KCkpOwogICAgICAgICBBU1NFUlQoc2NyaXB0RWxlbWVudCk7
CiAgICAgICAgIEFTU0VSVChzY3JpcHQtPm5lZWRzTG9hZGluZygpKTsKLSAgICAgICAgc2NyaXB0
RWxlbWVudC0+ZXhlY3V0ZVNjcmlwdEZvclNjcmlwdFJ1bm5lcigqc2NyaXB0LT5sb2FkYWJsZVNj
cmlwdCgpKTsKKyAgICAgICAgc2NyaXB0RWxlbWVudC0+ZXhlY3V0ZVNjcmlwdEZvclNjcmlwdFJ1
bm5lcigqc2NyaXB0KTsKICAgICAgICAgbV9kb2N1bWVudC5kZWNyZW1lbnRMb2FkRXZlbnREZWxh
eUNvdW50KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dFJ1bm5lci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5oCmluZGV4IGVlZTFh
MjYzYTkzOTlkZDAzODAyNmMwMDY2Y2FiMzhmNmIzZDM1NzcuLmRmY2YzYzVmYTkwZTRhNDUwOTQw
NDJkODc3ZGUzYmNlNDQ4MDBkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRSdW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmgKQEAgLTI1
LDggKzI1LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQZW5kaW5nU2NyaXB0Q2xp
ZW50LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zNyw3ICszOCw3IEBAIGNsYXNzIFBlbmRpbmdTY3Jp
cHQ7CiBjbGFzcyBTY3JpcHRFbGVtZW50OwogY2xhc3MgTG9hZGFibGVTY3JpcHQ7CiAKLWNsYXNz
IFNjcmlwdFJ1bm5lciB7CitjbGFzcyBTY3JpcHRSdW5uZXIgOiBwcml2YXRlIFBlbmRpbmdTY3Jp
cHRDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcmlwdFJ1bm5lcik7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFNjcmlwdFJ1bm5lcihE
b2N1bWVudCYpOwpAQCAtNTMsMTAgKzU0LDEyIEBAIGNsYXNzIFNjcmlwdFJ1bm5lciB7CiBwcml2
YXRlOgogICAgIHZvaWQgdGltZXJGaXJlZCgpOwogCisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChQ
ZW5kaW5nU2NyaXB0Jikgb3ZlcnJpZGU7CisKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKICAg
ICBWZWN0b3I8UmVmPFBlbmRpbmdTY3JpcHQ+PiBtX3NjcmlwdHNUb0V4ZWN1dGVJbk9yZGVyOwog
ICAgIFZlY3RvcjxSZWZQdHI8UGVuZGluZ1NjcmlwdD4+IG1fc2NyaXB0c1RvRXhlY3V0ZVNvb247
IC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3Nl
dC1vZi1zY3JpcHRzLXRoYXQtd2lsbC1leGVjdXRlLWFzLXNvb24tYXMtcG9zc2libGUKLSAgICBI
YXNoTWFwPFNjcmlwdEVsZW1lbnQqLCBSZWY8UGVuZGluZ1NjcmlwdD4+IG1fcGVuZGluZ0FzeW5j
U2NyaXB0czsKKyAgICBIYXNoU2V0PFJlZjxQZW5kaW5nU2NyaXB0Pj4gbV9wZW5kaW5nQXN5bmNT
Y3JpcHRzOwogICAgIFRpbWVyIG1fdGltZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCmluZGV4IDMzMWMyNzk4OTNhNGYwOGIxYjJl
ODVkMjVjY2VjNzI4Mjc5MWRkNzUuLjZiMTc2ZjEzZmMwYzU0MzViZWEwZjg1MDM3ZmJlODRmYjU0
MjJkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRS
dW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5u
ZXIuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRl
UGVuZGluZ1NjcmlwdEFuZERpc3BhdGNoRXZlbnQoUmVmUHRyPFBlbmRpbmdTY3JpcHQKIAogICAg
IGlmIChhdXRvKiBzY3JpcHRFbGVtZW50ID0gdG9TY3JpcHRFbGVtZW50SWZQb3NzaWJsZSgmcGVu
ZGluZ1NjcmlwdC0+ZWxlbWVudCgpKSkgewogICAgICAgICBOZXN0aW5nTGV2ZWxJbmNyZW1lbnRl
ciBuZXN0aW5nTGV2ZWxJbmNyZW1lbnRlcihtX3NjcmlwdE5lc3RpbmdMZXZlbCk7Ci0gICAgICAg
IHNjcmlwdEVsZW1lbnQtPmV4ZWN1dGVTY3JpcHRGb3JIVE1MU2NyaXB0UnVubmVyKCpwZW5kaW5n
U2NyaXB0KTsKKyAgICAgICAgc2NyaXB0RWxlbWVudC0+ZXhlY3V0ZVNjcmlwdEZvclNjcmlwdFJ1
bm5lcigqcGVuZGluZ1NjcmlwdCk7CiAgICAgfQogICAgIEFTU0VSVCghaXNFeGVjdXRpbmdTY3Jp
cHQoKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288242</attachid>
            <date>2016-09-07 21:27:42 -0700</date>
            <delta_ts>2016-09-07 21:29:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161726-20160908132516.patch</filename>
            <type>text/plain</type>
            <size>14874</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2ZjNWJlMGM0ZTFmMDVk
ZTUxZWY4MTU2ODU3OGYyYjg0MWIxNjg4Zi4uODhiZTVmNmQ2NzQ3YjU2ZTVmMjRlNjVlMzYwNzFk
NDIzNWYzNjhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4IEBACiAyMDE2LTA5LTA3ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCisgICAgICAgIFNjcmlwdFJ1bm5l
ciBzaG91bGQgYmUgZHJpdmVuIGJ5IFBlbmRpbmdTY3JpcHQgcmF0aGVyIHRoYW4gU2NyaXB0RWxl
bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYx
NzI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Ny
aXB0UnVubmVyIGlzIGRyaXZlbiBieSBTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZC4gV2hp
bGUgU2NyaXB0UnVubmVyIGlzIGRyaXZlbiBieSB0aGlzLAorICAgICAgICBIVE1MU2NyaXB0UnVu
bmVyIGRvZXMgbm90IHVzZSBpdC4gSW5zdGVhZCwgSFRNTFNjcmlwdFJ1bm5lciB1c2VzIFBlbmRp
bmdTY3JpcHRDbGllbnQuIEFzIGEgcmVzdWx0LAorICAgICAgICBTY3JpcHRFbGVtZW50Ojpub3Rp
ZnlGaW5pc2hlZCBpcyB1c2VkIG9ubHkgd2hlbiB0aGUgc2NyaXB0IGlzIGFubm90YXRlZCB3aXRo
ICJkZWZlciIgb3IgImFzeW5jIgorICAgICAgICB3aGlsZSBhbGwgdGhlIGV4dGVybmFsIHNjcmlw
dCB3aWxsIGxvYWQgdGhlIExvYWRhYmxlU2NyaXB0LiBJdCBpcyBjb25mdXNpbmcuCisgICAgICAg
IFRoaXMgcGF0Y2ggcmVtb3ZlcyBTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCBhbmQgdXNl
IFBlbmRpbmdTY3JpcHQncyBvYnNlcnZpbmcgZnVuY3Rpb25hbGl0eQorICAgICAgICBpbiBTY3Jp
cHRSdW5uZXIgaW5zdGVhZC4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAg
ICAgKiBkb20vUGVuZGluZ1NjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nU2Ny
aXB0OjpjbGVhckNsaWVudCk6IE5vdyBTY3JpcHRSdW5uZXIgY2FuIGNhbGwgaXQgbXVsdGlwbGUg
dGltZXM6IHdoZW4gdGhlIGRlc3RydWN0b3IgaXMgY2FsbGVkIHdoaWxlIHNvbWUgb2YKKyAgICAg
ICAgbV9zY3JpcHRzVG9FeGVjdXRlSW5PcmRlcidzIGNsZWFyQ2xpZW50IGFyZSBhbHJlYWR5IGNh
bGxlZC4KKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6IERyb3AgTG9hZGFibGVTY3Jp
cHRDbGllbnQgaW50ZXJmYWNlLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6cHJl
cGFyZVNjcmlwdCk6IERvIG5vdCB1c2UgYWRkQ2xpZW50LiBTY3JpcHRSdW5uZXIgdXNlIFBlbmRp
bmdTY3JpcHQ6OntzZXRDbGllbnQsY2xlYXJDbGllbnR9IGluc3RlYWQuCisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRFbGVtZW50OjpleGVjdXRlU2NyaXB0Rm9yU2NyaXB0UnVubmVyKTogSWdub3Jl
RGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIgd2lsbCBiZSBkb25lIGluIFNjcmlwdEVs
ZW1lbnQ6OmV4ZWN1dGVTY3JpcHQuCisgICAgICAgIFNvIG5vIG5lZWQgdG8gZG8gaXQgaGVyZSwg
dGhhdCdzIGR1cGxpY2F0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojp+U2Ny
aXB0RWxlbWVudCk6IERlbGV0ZWQuIFNjcmlwdEVsZW1lbnQgZG9lcyBub3QgdXNlIGFkZENsaWVu
dC9yZW1vdmVDbGllbnQuCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpzdG9wTG9h
ZFJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6ZXhl
Y3V0ZVNjcmlwdEZvckhUTUxTY3JpcHRSdW5uZXIpOiBEZWxldGVkLiBleGVjdXRlU2NyaXB0Rm9y
SFRNTFNjcmlwdFJ1bm5lciBhbmQgZXhlY3V0ZVNjcmlwdEZvclNjcmlwdFJ1bm5lciBhcmUKKyAg
ICAgICAgbWVyZ2VkIGludG8gZXhlY3V0ZVNjcmlwdEZvclJ1bm5lci4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBk
b20vU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6flNj
cmlwdEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6d2lsbEV4ZWN1
dGVJbk9yZGVyKTogVXNlZCBpbiBTY3JpcHRSdW5uZXIgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhl
IHNjcmlwdCBpcyBhc3luYyBvciBkZWZlci4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1l
bnQ6OndpbGxFeGVjdXRlV2hlbkRvY3VtZW50RmluaXNoZWRQYXJzaW5nKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBkb20vU2NyaXB0UnVubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFJ1
bm5lcjo6flNjcmlwdFJ1bm5lcik6IEhhc2hTZXQncyBpdGVyYXRvciB3aWxsIHJldHVybiBgY29u
c3QgUGVuZGluZ1NjcmlwdCZgLgorICAgICAgICBBbm90aGVyIG9wdGlvbiBpcyB1c2luZyBIYXNo
U2V0PFJlZlB0cjxQZW5kaW5nU2NyaXB0Pj4uIEhlcmUsIHdlIHVzZSBhIGxpdHRsZSBiaXQgd2Vp
cmVkIGNvbnN0X2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRSdW5uZXI6OnF1ZXVlU2Ny
aXB0Rm9yRXhlY3V0aW9uKTogVXNlIFBlbmRpbmdTY3JpcHQ6OnNldENsaWVudCB0byB3YWl0IGxv
YWRpbmcuCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRSdW5uZXI6Om5vdGlmeUZpbmlzaGVkKTog
Tm90aWZ5IHRoZSBzY3JpcHQgcmVhZHkgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFJ1
bm5lcjo6dGltZXJGaXJlZCk6IFVzZSBleGVjdXRlU2NyaXB0Rm9yU2NyaXB0UnVubmVyLgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjpub3RpZnlTY3JpcHRSZWFkeSk6IERlbGV0ZWQu
CisgICAgICAgICogZG9tL1NjcmlwdFJ1bm5lci5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxTY3JpcHRSdW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdFJ1bm5lcjo6
ZXhlY3V0ZVBlbmRpbmdTY3JpcHRBbmREaXNwYXRjaEV2ZW50KTogVXNlIGV4ZWN1dGVTY3JpcHRG
b3JTY3JpcHRSdW5uZXIuCisKKzIwMTYtMDktMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKICAgICAgICAgSW50cm9kdWNlIGFic3RyYWN0IGNsYXNzIExvYWRhYmxl
U2NyaXB0IGZvciBjbGFzc2ljIHNjcmlwdCBhbmQgbW9kdWxlIGdyYXBoCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE2NzQKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1BlbmRpbmdTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1BlbmRpbmdTY3JpcHQuY3BwCmluZGV4IDNlZTRkMjhlZjk5NDFmYmEyYTFhOTNlNDlmMDY1NGE3
ZDNhYWI0ODkuLjViZTg1MTc4OWQzMzZmMmI2NjljNmUyZmMwMmUzYjNhYmUzMjk5ZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9QZW5kaW5nU2NyaXB0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUGVuZGluZ1NjcmlwdC5jcHAKQEAgLTk4LDcgKzk4LDYgQEAgdm9pZCBQZW5k
aW5nU2NyaXB0OjpzZXRDbGllbnQoUGVuZGluZ1NjcmlwdENsaWVudCogY2xpZW50KQogCiB2b2lk
IFBlbmRpbmdTY3JpcHQ6OmNsZWFyQ2xpZW50KCkKIHsKLSAgICBBU1NFUlQobV9jbGllbnQpOwog
ICAgIG1fY2xpZW50ID0gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQu
Y3BwCmluZGV4IDQyYzhjNWZlYjgyNGJkOTk4YTY3ODgzMTA4MGViMmY0MjdjMmMwOTcuLmZhNzYw
MDZjYjA3NDZkN2VjYjUxZGY0NjAxNDBiMGU3ZTZlYmQwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RWxlbWVudC5jcHAKQEAgLTc1LDExICs3NSw2IEBAIFNjcmlwdEVsZW1lbnQ6OlNjcmlwdEVs
ZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgYm9vbCBwYXJzZXJJbnNlcnRlZCwgYm9vbCBhbHJlYWR5
CiAgICAgICAgIG1fc3RhcnRMaW5lTnVtYmVyID0gbV9lbGVtZW50LmRvY3VtZW50KCkuc2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyKCktPnRleHRQb3NpdGlvbigpLm1fbGluZTsKIH0KIAotU2NyaXB0
RWxlbWVudDo6flNjcmlwdEVsZW1lbnQoKQotewotICAgIHN0b3BMb2FkUmVxdWVzdCgpOwotfQot
CiBib29sIFNjcmlwdEVsZW1lbnQ6OnNob3VsZENhbGxGaW5pc2hlZEluc2VydGluZ1N1YnRyZWUo
Q29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgcmV0dXJuIGluc2VydGlvblBv
aW50LmluRG9jdW1lbnQoKSAmJiAhbV9wYXJzZXJJbnNlcnRlZDsKQEAgLTI0NSwxMSArMjQwLDkg
QEAgYm9vbCBTY3JpcHRFbGVtZW50OjpwcmVwYXJlU2NyaXB0KGNvbnN0IFRleHRQb3NpdGlvbiYg
c2NyaXB0U3RhcnRQb3NpdGlvbiwgTGVnYWMKICAgICAgICAgQVNTRVJUKG1fbG9hZGFibGVTY3Jp
cHQpOwogICAgICAgICBtX3dpbGxFeGVjdXRlSW5PcmRlciA9IHRydWU7CiAgICAgICAgIGRvY3Vt
ZW50LnNjcmlwdFJ1bm5lcigpLT5xdWV1ZVNjcmlwdEZvckV4ZWN1dGlvbih0aGlzLCAqbV9sb2Fk
YWJsZVNjcmlwdCwgU2NyaXB0UnVubmVyOjpJTl9PUkRFUl9FWEVDVVRJT04pOwotICAgICAgICBt
X2xvYWRhYmxlU2NyaXB0LT5hZGRDbGllbnQoKnRoaXMpOwogICAgIH0gZWxzZSBpZiAoaGFzU291
cmNlQXR0cmlidXRlKCkpIHsKICAgICAgICAgQVNTRVJUKG1fbG9hZGFibGVTY3JpcHQpOwogICAg
ICAgICBtX2VsZW1lbnQuZG9jdW1lbnQoKS5zY3JpcHRSdW5uZXIoKS0+cXVldWVTY3JpcHRGb3JF
eGVjdXRpb24odGhpcywgKm1fbG9hZGFibGVTY3JpcHQsIFNjcmlwdFJ1bm5lcjo6QVNZTkNfRVhF
Q1VUSU9OKTsKLSAgICAgICAgbV9sb2FkYWJsZVNjcmlwdC0+YWRkQ2xpZW50KCp0aGlzKTsKICAg
ICB9IGVsc2UgewogICAgICAgICAvLyBSZXNldCBsaW5lIG51bWJlcmluZyBmb3IgbmVzdGVkIHdy
aXRlcy4KICAgICAgICAgVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gZG9jdW1lbnQuaXNJbkRvY3Vt
ZW50V3JpdGUoKSA/IFRleHRQb3NpdGlvbigpIDogc2NyaXB0U3RhcnRQb3NpdGlvbjsKQEAgLTMz
NiwxNSArMzI5LDYgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlU2NyaXB0KGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiAgICAgfQogfQogCi12b2lkIFNjcmlwdEVsZW1l
bnQ6OnN0b3BMb2FkUmVxdWVzdCgpCi17Ci0gICAgaWYgKG1fbG9hZGFibGVTY3JpcHQpIHsKLSAg
ICAgICAgaWYgKCFtX3dpbGxCZVBhcnNlckV4ZWN1dGVkKQotICAgICAgICAgICAgbV9sb2FkYWJs
ZVNjcmlwdC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKLSAgICAgICAgbV9sb2FkYWJsZVNjcmlwdCA9
IG51bGxwdHI7Ci0gICAgfQotfQotCiB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHRB
bmREaXNwYXRjaEV2ZW50KExvYWRhYmxlU2NyaXB0JiBsb2FkYWJsZVNjcmlwdCkKIHsKICAgICBp
ZiAoT3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9yPiBlcnJvciA9IGxvYWRhYmxlU2NyaXB0
Lndhc0Vycm9yZWQoKSkgewpAQCAtMzU4LDE2ICszNDIsOCBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6
OmV4ZWN1dGVTY3JpcHRBbmREaXNwYXRjaEV2ZW50KExvYWRhYmxlU2NyaXB0JiBsb2FkYWJsZVNj
cmlwdAogICAgIH0KIH0KIAotdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlU2NyaXB0Rm9yU2Ny
aXB0UnVubmVyKExvYWRhYmxlU2NyaXB0JiBsb2FkYWJsZVNjcmlwdCkKLXsKLSAgICBBU1NFUlQo
IW1fd2lsbEJlUGFyc2VyRXhlY3V0ZWQpOwotICAgIGV4ZWN1dGVTY3JpcHRBbmREaXNwYXRjaEV2
ZW50KGxvYWRhYmxlU2NyaXB0KTsKLSAgICBsb2FkYWJsZVNjcmlwdC5yZW1vdmVDbGllbnQoKnRo
aXMpOwotfQotCi12b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHRGb3JIVE1MU2NyaXB0
UnVubmVyKFBlbmRpbmdTY3JpcHQmIHBlbmRpbmdTY3JpcHQpCit2b2lkIFNjcmlwdEVsZW1lbnQ6
OmV4ZWN1dGVTY3JpcHRGb3JTY3JpcHRSdW5uZXIoUGVuZGluZ1NjcmlwdCYgcGVuZGluZ1Njcmlw
dCkKIHsKLSAgICBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlciBpZ25vcmVE
ZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlcigmbV9lbGVtZW50LmRvY3VtZW50KCkpOwog
ICAgIGlmIChhdXRvKiBsb2FkYWJsZVNjcmlwdCA9IHBlbmRpbmdTY3JpcHQubG9hZGFibGVTY3Jp
cHQoKSkKICAgICAgICAgZXhlY3V0ZVNjcmlwdEFuZERpc3BhdGNoRXZlbnQoKmxvYWRhYmxlU2Ny
aXB0KTsKICAgICBlbHNlIHsKQEAgLTM3NywyNSArMzUzLDYgQEAgdm9pZCBTY3JpcHRFbGVtZW50
OjpleGVjdXRlU2NyaXB0Rm9ySFRNTFNjcmlwdFJ1bm5lcihQZW5kaW5nU2NyaXB0JiBwZW5kaW5n
U2NyaXAKICAgICB9CiB9CiAKLXZvaWQgU2NyaXB0RWxlbWVudDo6bm90aWZ5RmluaXNoZWQoTG9h
ZGFibGVTY3JpcHQmKQotewotICAgIEFTU0VSVCghbV93aWxsQmVQYXJzZXJFeGVjdXRlZCk7Ci0K
LSAgICAvLyBMb2FkYWJsZVNjcmlwdCBwb3NzaWJseSBpbnZva2VzIHRoaXMgbm90aWZ5RmluaXNo
ZWQoKSBtb3JlIHRoYW4KLSAgICAvLyBvbmNlIGJlY2F1c2UgU2NyaXB0RWxlbWVudCBkb2Vzbid0
IHVuc3Vic2NyaWJlIGl0c2VsZiBmcm9tCi0gICAgLy8gTG9hZGFibGVTY3JpcHQgaGVyZSBhbmQg
ZG9lcyBpdCBpbiBleGVjdXRlKCkgaW5zdGVhZC4KLSAgICAvLyBXZSB1c2UgbV9sb2FkYWJsZVNj
cmlwdCB0byBjaGVjayBpZiB0aGlzIGZ1bmN0aW9uIGlzIGFscmVhZHkgY2FsbGVkLgotICAgIGlm
ICghbV9sb2FkYWJsZVNjcmlwdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fd2lsbEV4
ZWN1dGVJbk9yZGVyKQotICAgICAgICBtX2VsZW1lbnQuZG9jdW1lbnQoKS5zY3JpcHRSdW5uZXIo
KS0+bm90aWZ5U2NyaXB0UmVhZHkodGhpcywgU2NyaXB0UnVubmVyOjpJTl9PUkRFUl9FWEVDVVRJ
T04pOwotICAgIGVsc2UKLSAgICAgICAgbV9lbGVtZW50LmRvY3VtZW50KCkuc2NyaXB0UnVubmVy
KCktPm5vdGlmeVNjcmlwdFJlYWR5KHRoaXMsIFNjcmlwdFJ1bm5lcjo6QVNZTkNfRVhFQ1VUSU9O
KTsKLQotICAgIG1fbG9hZGFibGVTY3JpcHQgPSBudWxscHRyOwotfQotCiBib29sIFNjcmlwdEVs
ZW1lbnQ6Omlnbm9yZXNMb2FkUmVxdWVzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYWxyZWFk
eVN0YXJ0ZWQgfHwgbV9pc0V4dGVybmFsU2NyaXB0IHx8IG1fcGFyc2VySW5zZXJ0ZWQgfHwgIW1f
ZWxlbWVudC5pbkRvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAppbmRleCA0
ZGU4NzhjOGY5Y2U3NThjMWVlMjNiYjg3ZjhiMjFmODA1NjVlMjNmLi5mNTJiNzc4YjE5YTAyNDQ2
ZTI1ZGZiMWM2ZWY2Njk5ZTIzZGRkMTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgK
QEAgLTM4LDkgKzM4LDkgQEAgY2xhc3MgUGVuZGluZ1NjcmlwdDsKIGNsYXNzIFNjcmlwdEVsZW1l
bnQ7CiBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlOwogCi1jbGFzcyBTY3JpcHRFbGVtZW50IDogcHJp
dmF0ZSBMb2FkYWJsZVNjcmlwdENsaWVudCB7CitjbGFzcyBTY3JpcHRFbGVtZW50IHsKIHB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5TY3JpcHRFbGVtZW50KCk7CisgICAgdmlydHVhbCB+U2NyaXB0RWxl
bWVudCgpIHsgfQogCiAgICAgRWxlbWVudCYgZWxlbWVudCgpIHsgcmV0dXJuIG1fZWxlbWVudDsg
fQogICAgIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQ7
IH0KQEAgLTUyLDggKzUyLDcgQEAgY2xhc3MgU2NyaXB0RWxlbWVudCA6IHByaXZhdGUgTG9hZGFi
bGVTY3JpcHRDbGllbnQgewogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzY3JpcHRDb250ZW50
KCkgY29uc3Q7CiAgICAgdm9pZCBleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUm
KTsKIAotICAgIHZvaWQgZXhlY3V0ZVNjcmlwdEZvclNjcmlwdFJ1bm5lcihMb2FkYWJsZVNjcmlw
dCYpOwotICAgIHZvaWQgZXhlY3V0ZVNjcmlwdEZvckhUTUxTY3JpcHRSdW5uZXIoUGVuZGluZ1Nj
cmlwdCYpOworICAgIHZvaWQgZXhlY3V0ZVNjcmlwdEZvclNjcmlwdFJ1bm5lcihQZW5kaW5nU2Ny
aXB0Jik7CiAKICAgICAvLyBYTUwgcGFyc2VyIGNhbGxzIHRoZXNlCiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoTG9hZEV2ZW50KCkgPSAwOwpAQCAtNjMsNiArNjIsNyBAQCBjbGFzcyBTY3JpcHRF
bGVtZW50IDogcHJpdmF0ZSBMb2FkYWJsZVNjcmlwdENsaWVudCB7CiAgICAgYm9vbCB3aWxsQmVQ
YXJzZXJFeGVjdXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lsbEJlUGFyc2VyRXhlY3V0ZWQ7IH0K
ICAgICBib29sIHJlYWR5VG9CZVBhcnNlckV4ZWN1dGVkKCkgY29uc3QgeyByZXR1cm4gbV9yZWFk
eVRvQmVQYXJzZXJFeGVjdXRlZDsgfQogICAgIGJvb2wgd2lsbEV4ZWN1dGVXaGVuRG9jdW1lbnRG
aW5pc2hlZFBhcnNpbmcoKSBjb25zdCB7IHJldHVybiBtX3dpbGxFeGVjdXRlV2hlbkRvY3VtZW50
RmluaXNoZWRQYXJzaW5nOyB9CisgICAgYm9vbCB3aWxsRXhlY3V0ZUluT3JkZXIoKSBjb25zdCB7
IHJldHVybiBtX3dpbGxFeGVjdXRlSW5PcmRlcjsgfQogICAgIExvYWRhYmxlU2NyaXB0KiBsb2Fk
YWJsZVNjcmlwdCgpIHsgcmV0dXJuIG1fbG9hZGFibGVTY3JpcHQuZ2V0KCk7IH0KIAogcHJvdGVj
dGVkOgpAQCAtOTIsOSArOTIsNiBAQCBjbGFzcyBTY3JpcHRFbGVtZW50IDogcHJpdmF0ZSBMb2Fk
YWJsZVNjcmlwdENsaWVudCB7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0
PiByZXF1ZXN0U2NyaXB0V2l0aENhY2hlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbm9uY2VB
dHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgY3Jvc3NvcmlnaW5BdHRyaWJ1dGUpOwogCiAgICAgYm9v
bCByZXF1ZXN0Q2xhc3NpY1NjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7Ci0gICAgdm9p
ZCBzdG9wTG9hZFJlcXVlc3QoKTsKLQotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoTG9hZGFibGVT
Y3JpcHQmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZUF0dHJpYnV0ZVZh
bHVlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGNoYXJzZXRBdHRyaWJ1dGVWYWx1
ZSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5u
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAKaW5kZXggOWQ3ZWQz
ZmM1ZTZiZDI0NjBmMzdkMmY2YWRiNWI5MjMwMTk1NDZlOC4uOTQ1NDdlOWUzZDgyOTU1Mzg1ZDlj
MDkwZDIyZDE4M2E5NjU2OTQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dFJ1bm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAKQEAg
LTQwLDEyICs0MCwxOCBAQCBTY3JpcHRSdW5uZXI6OlNjcmlwdFJ1bm5lcihEb2N1bWVudCYgZG9j
dW1lbnQpCiAKIFNjcmlwdFJ1bm5lcjo6flNjcmlwdFJ1bm5lcigpCiB7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX3NjcmlwdHNUb0V4ZWN1dGVTb29uLnNpemUoKTsgKytpKQorICAgIGZv
ciAoYXV0byYgcGVuZGluZ1NjcmlwdCA6IG1fc2NyaXB0c1RvRXhlY3V0ZVNvb24pIHsKKyAgICAg
ICAgVU5VU0VEX1BBUkFNKHBlbmRpbmdTY3JpcHQpOwogICAgICAgICBtX2RvY3VtZW50LmRlY3Jl
bWVudExvYWRFdmVudERlbGF5Q291bnQoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
c2NyaXB0c1RvRXhlY3V0ZUluT3JkZXIuc2l6ZSgpOyArK2kpCisgICAgfQorICAgIGZvciAoYXV0
byYgcGVuZGluZ1NjcmlwdCA6IG1fc2NyaXB0c1RvRXhlY3V0ZUluT3JkZXIpIHsKKyAgICAgICAg
cGVuZGluZ1NjcmlwdC0+Y2xlYXJDbGllbnQoKTsKICAgICAgICAgbV9kb2N1bWVudC5kZWNyZW1l
bnRMb2FkRXZlbnREZWxheUNvdW50KCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
cGVuZGluZ0FzeW5jU2NyaXB0cy5zaXplKCk7ICsraSkKKyAgICB9CisgICAgZm9yIChhdXRvJiBw
ZW5kaW5nU2NyaXB0IDogbV9wZW5kaW5nQXN5bmNTY3JpcHRzKSB7CisgICAgICAgIGNvbnN0X2Nh
c3Q8UGVuZGluZ1NjcmlwdCY+KHBlbmRpbmdTY3JpcHQuZ2V0KCkpLmNsZWFyQ2xpZW50KCk7CiAg
ICAgICAgIG1fZG9jdW1lbnQuZGVjcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOworICAgIH0K
IH0KIAogdm9pZCBTY3JpcHRSdW5uZXI6OnF1ZXVlU2NyaXB0Rm9yRXhlY3V0aW9uKFNjcmlwdEVs
ZW1lbnQqIHNjcmlwdEVsZW1lbnQsIExvYWRhYmxlU2NyaXB0JiBsb2FkYWJsZVNjcmlwdCwgRXhl
Y3V0aW9uVHlwZSBleGVjdXRpb25UeXBlKQpAQCAtNTcsMTUgKzYzLDE3IEBAIHZvaWQgU2NyaXB0
UnVubmVyOjpxdWV1ZVNjcmlwdEZvckV4ZWN1dGlvbihTY3JpcHRFbGVtZW50KiBzY3JpcHRFbGVt
ZW50LCBMb2FkYWJsCiAKICAgICBtX2RvY3VtZW50LmluY3JlbWVudExvYWRFdmVudERlbGF5Q291
bnQoKTsKIAorICAgIFJlZjxQZW5kaW5nU2NyaXB0PiBwZW5kaW5nU2NyaXB0ID0gUGVuZGluZ1Nj
cmlwdDo6Y3JlYXRlKGVsZW1lbnQsIGxvYWRhYmxlU2NyaXB0KTsKICAgICBzd2l0Y2ggKGV4ZWN1
dGlvblR5cGUpIHsKICAgICBjYXNlIEFTWU5DX0VYRUNVVElPTjoKLSAgICAgICAgbV9wZW5kaW5n
QXN5bmNTY3JpcHRzLmFkZChzY3JpcHRFbGVtZW50LCBQZW5kaW5nU2NyaXB0OjpjcmVhdGUoZWxl
bWVudCwgbG9hZGFibGVTY3JpcHQpKTsKKyAgICAgICAgbV9wZW5kaW5nQXN5bmNTY3JpcHRzLmFk
ZChwZW5kaW5nU2NyaXB0LmNvcHlSZWYoKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJ
Tl9PUkRFUl9FWEVDVVRJT046Ci0gICAgICAgIG1fc2NyaXB0c1RvRXhlY3V0ZUluT3JkZXIuYXBw
ZW5kKFBlbmRpbmdTY3JpcHQ6OmNyZWF0ZShlbGVtZW50LCBsb2FkYWJsZVNjcmlwdCkpOworICAg
ICAgICBtX3NjcmlwdHNUb0V4ZWN1dGVJbk9yZGVyLmFwcGVuZChwZW5kaW5nU2NyaXB0LmNvcHlS
ZWYoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBwZW5kaW5nU2NyaXB0LT5zZXRDbGll
bnQodGhpcyk7CiB9CiAKIHZvaWQgU2NyaXB0UnVubmVyOjpzdXNwZW5kKCkKQEAgLTc5LDE4ICs4
NywxNyBAQCB2b2lkIFNjcmlwdFJ1bm5lcjo6cmVzdW1lKCkKICAgICAgICAgbV90aW1lci5zdGFy
dE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgU2NyaXB0UnVubmVyOjpub3RpZnlTY3JpcHRSZWFkeShT
Y3JpcHRFbGVtZW50KiBzY3JpcHRFbGVtZW50LCBFeGVjdXRpb25UeXBlIGV4ZWN1dGlvblR5cGUp
Cit2b2lkIFNjcmlwdFJ1bm5lcjo6bm90aWZ5RmluaXNoZWQoUGVuZGluZ1NjcmlwdCYgcGVuZGlu
Z1NjcmlwdCkKIHsKLSAgICBzd2l0Y2ggKGV4ZWN1dGlvblR5cGUpIHsKLSAgICBjYXNlIEFTWU5D
X0VYRUNVVElPTjoKLSAgICAgICAgQVNTRVJUKG1fcGVuZGluZ0FzeW5jU2NyaXB0cy5jb250YWlu
cyhzY3JpcHRFbGVtZW50KSk7Ci0gICAgICAgIG1fc2NyaXB0c1RvRXhlY3V0ZVNvb24uYXBwZW5k
KG1fcGVuZGluZ0FzeW5jU2NyaXB0cy50YWtlKHNjcmlwdEVsZW1lbnQpLT5wdHIoKSk7Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBJTl9PUkRFUl9FWEVDVVRJT046CisgICAgYXV0byogc2Ny
aXB0RWxlbWVudCA9IHRvU2NyaXB0RWxlbWVudElmUG9zc2libGUoJnBlbmRpbmdTY3JpcHQuZWxl
bWVudCgpKTsKKyAgICBBU1NFUlQoc2NyaXB0RWxlbWVudCk7CisgICAgaWYgKHNjcmlwdEVsZW1l
bnQtPndpbGxFeGVjdXRlSW5PcmRlcigpKQogICAgICAgICBBU1NFUlQoIW1fc2NyaXB0c1RvRXhl
Y3V0ZUluT3JkZXIuaXNFbXB0eSgpKTsKLSAgICAgICAgYnJlYWs7CisgICAgZWxzZSB7CisgICAg
ICAgIEFTU0VSVChtX3BlbmRpbmdBc3luY1NjcmlwdHMuY29udGFpbnMocGVuZGluZ1NjcmlwdCkp
OworICAgICAgICBtX3NjcmlwdHNUb0V4ZWN1dGVTb29uLmFwcGVuZChtX3BlbmRpbmdBc3luY1Nj
cmlwdHMudGFrZShwZW5kaW5nU2NyaXB0KS0+cHRyKCkpOwogICAgIH0KKyAgICBwZW5kaW5nU2Ny
aXB0LmNsZWFyQ2xpZW50KCk7CiAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKQEAg
LTExNiw3ICsxMjMsNyBAQCB2b2lkIFNjcmlwdFJ1bm5lcjo6dGltZXJGaXJlZCgpCiAgICAgICAg
IGF1dG8qIHNjcmlwdEVsZW1lbnQgPSB0b1NjcmlwdEVsZW1lbnRJZlBvc3NpYmxlKCZzY3JpcHQt
PmVsZW1lbnQoKSk7CiAgICAgICAgIEFTU0VSVChzY3JpcHRFbGVtZW50KTsKICAgICAgICAgQVNT
RVJUKHNjcmlwdC0+bmVlZHNMb2FkaW5nKCkpOwotICAgICAgICBzY3JpcHRFbGVtZW50LT5leGVj
dXRlU2NyaXB0Rm9yU2NyaXB0UnVubmVyKCpzY3JpcHQtPmxvYWRhYmxlU2NyaXB0KCkpOworICAg
ICAgICBzY3JpcHRFbGVtZW50LT5leGVjdXRlU2NyaXB0Rm9yU2NyaXB0UnVubmVyKCpzY3JpcHQp
OwogICAgICAgICBtX2RvY3VtZW50LmRlY3JlbWVudExvYWRFdmVudERlbGF5Q291bnQoKTsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmgKaW5kZXggZWVlMWEyNjNhOTM5OWRkMDM4
MDI2YzAwNjZjYWIzOGY2YjNkMzU3Ny4uZGZjZjNjNWZhOTBlNGE0NTA5NDA0MmQ4NzdkZTNiY2U0
NDgwMGQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuaApAQCAtMjUsOCArMjUsOSBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlBlbmRpbmdTY3JpcHRDbGllbnQuaCIKICNpbmNs
dWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKQEAgLTM3LDcgKzM4LDcgQEAgY2xhc3MgUGVuZGluZ1NjcmlwdDsKIGNsYXNzIFNj
cmlwdEVsZW1lbnQ7CiBjbGFzcyBMb2FkYWJsZVNjcmlwdDsKIAotY2xhc3MgU2NyaXB0UnVubmVy
IHsKK2NsYXNzIFNjcmlwdFJ1bm5lciA6IHByaXZhdGUgUGVuZGluZ1NjcmlwdENsaWVudCB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NyaXB0UnVubmVyKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU2NyaXB0UnVubmVyKERvY3VtZW50Jik7CkBA
IC01MywxMCArNTQsMTIgQEAgY2xhc3MgU2NyaXB0UnVubmVyIHsKIHByaXZhdGU6CiAgICAgdm9p
ZCB0aW1lckZpcmVkKCk7CiAKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKFBlbmRpbmdTY3JpcHQm
KSBvdmVycmlkZTsKKwogICAgIERvY3VtZW50JiBtX2RvY3VtZW50OwogICAgIFZlY3RvcjxSZWY8
UGVuZGluZ1NjcmlwdD4+IG1fc2NyaXB0c1RvRXhlY3V0ZUluT3JkZXI7CiAgICAgVmVjdG9yPFJl
ZlB0cjxQZW5kaW5nU2NyaXB0Pj4gbV9zY3JpcHRzVG9FeGVjdXRlU29vbjsgLy8gaHR0cDovL3d3
dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jc2V0LW9mLXNjcmlwdHMt
dGhhdC13aWxsLWV4ZWN1dGUtYXMtc29vbi1hcy1wb3NzaWJsZQotICAgIEhhc2hNYXA8U2NyaXB0
RWxlbWVudCosIFJlZjxQZW5kaW5nU2NyaXB0Pj4gbV9wZW5kaW5nQXN5bmNTY3JpcHRzOworICAg
IEhhc2hTZXQ8UmVmPFBlbmRpbmdTY3JpcHQ+PiBtX3BlbmRpbmdBc3luY1NjcmlwdHM7CiAgICAg
VGltZXIgbV90aW1lcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFNjcmlwdFJ1bm5lci5jcHAKaW5kZXggMzMxYzI3OTg5M2E0ZjA4YjFiMmU4NWQyNWNjZWM3Mjgy
NzkxZGQ3NS4uNmIxNzZmMTNmYzBjNTQzNWJlYTBmODUwMzdmYmU4NGZiNTQyMmQ0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAKQEAgLTEy
MSw3ICsxMjEsNyBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQZW5kaW5nU2NyaXB0
QW5kRGlzcGF0Y2hFdmVudChSZWZQdHI8UGVuZGluZ1NjcmlwdAogCiAgICAgaWYgKGF1dG8qIHNj
cmlwdEVsZW1lbnQgPSB0b1NjcmlwdEVsZW1lbnRJZlBvc3NpYmxlKCZwZW5kaW5nU2NyaXB0LT5l
bGVtZW50KCkpKSB7CiAgICAgICAgIE5lc3RpbmdMZXZlbEluY3JlbWVudGVyIG5lc3RpbmdMZXZl
bEluY3JlbWVudGVyKG1fc2NyaXB0TmVzdGluZ0xldmVsKTsKLSAgICAgICAgc2NyaXB0RWxlbWVu
dC0+ZXhlY3V0ZVNjcmlwdEZvckhUTUxTY3JpcHRSdW5uZXIoKnBlbmRpbmdTY3JpcHQpOworICAg
ICAgICBzY3JpcHRFbGVtZW50LT5leGVjdXRlU2NyaXB0Rm9yU2NyaXB0UnVubmVyKCpwZW5kaW5n
U2NyaXB0KTsKICAgICB9CiAgICAgQVNTRVJUKCFpc0V4ZWN1dGluZ1NjcmlwdCgpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288244</attachid>
            <date>2016-09-07 21:29:51 -0700</date>
            <delta_ts>2016-09-07 22:38:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161726-20160908132725.patch</filename>
            <type>text/plain</type>
            <size>14864</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2ZjNWJlMGM0ZTFmMDVk
ZTUxZWY4MTU2ODU3OGYyYjg0MWIxNjg4Zi4uOGY0ODg1MTQ5Nzc1OGMwMjA0NGM0MDZkZDE5NTUx
OWE0ZWVkYmU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4IEBACiAyMDE2LTA5LTA3ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCisgICAgICAgIFNjcmlwdFJ1bm5l
ciBzaG91bGQgYmUgZHJpdmVuIGJ5IFBlbmRpbmdTY3JpcHQgcmF0aGVyIHRoYW4gU2NyaXB0RWxl
bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYx
NzI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Ny
aXB0UnVubmVyIGlzIGRyaXZlbiBieSBTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZC4gV2hp
bGUgU2NyaXB0UnVubmVyIGlzIGRyaXZlbiBieSB0aGlzLAorICAgICAgICBIVE1MU2NyaXB0UnVu
bmVyIGRvZXMgbm90IHVzZSBpdC4gSW5zdGVhZCwgSFRNTFNjcmlwdFJ1bm5lciB1c2VzIFBlbmRp
bmdTY3JpcHRDbGllbnQuIEFzIGEgcmVzdWx0LAorICAgICAgICBTY3JpcHRFbGVtZW50Ojpub3Rp
ZnlGaW5pc2hlZCBpcyB1c2VkIG9ubHkgd2hlbiB0aGUgc2NyaXB0IGlzIGFubm90YXRlZCB3aXRo
ICJkZWZlciIgb3IgImFzeW5jIgorICAgICAgICB3aGlsZSBhbGwgdGhlIGV4dGVybmFsIHNjcmlw
dCB3aWxsIGxvYWQgdGhlIExvYWRhYmxlU2NyaXB0LiBJdCBpcyBjb25mdXNpbmcuCisgICAgICAg
IFRoaXMgcGF0Y2ggcmVtb3ZlcyBTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCBhbmQgdXNl
IFBlbmRpbmdTY3JpcHQncyBvYnNlcnZhYmlsaXR5CisgICAgICAgIGluIFNjcmlwdFJ1bm5lciBp
bnN0ZWFkLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGRvbS9Q
ZW5kaW5nU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdTY3JpcHQ6OmNsZWFy
Q2xpZW50KTogTm93IFNjcmlwdFJ1bm5lciBjYW4gY2FsbCBpdCBtdWx0aXBsZSB0aW1lczogd2hl
biB0aGUgZGVzdHJ1Y3RvciBpcyBjYWxsZWQgd2hpbGUgc29tZSBvZgorICAgICAgICBtX3Njcmlw
dHNUb0V4ZWN1dGVJbk9yZGVyJ3MgY2xlYXJDbGllbnQgYXJlIGFscmVhZHkgY2FsbGVkLgorICAg
ICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDogRHJvcCBMb2FkYWJsZVNjcmlwdENsaWVudCBp
bnRlcmZhY2UuCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpwcmVwYXJlU2NyaXB0
KTogRG8gbm90IHVzZSBhZGRDbGllbnQuIFNjcmlwdFJ1bm5lciB1c2UgUGVuZGluZ1NjcmlwdDo6
e3NldENsaWVudCxjbGVhckNsaWVudH0gaW5zdGVhZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHRGb3JTY3JpcHRSdW5uZXIpOiBJZ25vcmVEZXN0cnVjdGl2
ZVdyaXRlQ291bnRJbmNyZW1lbnRlciB3aWxsIGJlIGRvbmUgaW4gU2NyaXB0RWxlbWVudDo6ZXhl
Y3V0ZVNjcmlwdC4KKyAgICAgICAgU28gbm8gbmVlZCB0byBkbyBpdCBoZXJlLCB0aGF0J3MgZHVw
bGljYXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6On5TY3JpcHRFbGVtZW50
KTogRGVsZXRlZC4gU2NyaXB0RWxlbWVudCBkb2VzIG5vdCB1c2UgYWRkQ2xpZW50L3JlbW92ZUNs
aWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnN0b3BMb2FkUmVxdWVzdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpleGVjdXRlU2NyaXB0
Rm9ySFRNTFNjcmlwdFJ1bm5lcik6IERlbGV0ZWQuIGV4ZWN1dGVTY3JpcHRGb3JIVE1MU2NyaXB0
UnVubmVyIGFuZCBleGVjdXRlU2NyaXB0Rm9yU2NyaXB0UnVubmVyIGFyZQorICAgICAgICBtZXJn
ZWQgaW50byBleGVjdXRlU2NyaXB0Rm9yUnVubmVyLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9TY3JpcHRF
bGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojp+U2NyaXB0RWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojp3aWxsRXhlY3V0ZUluT3JkZXIp
OiBVc2VkIGluIFNjcmlwdFJ1bm5lciB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgc2NyaXB0IGlz
IGFzeW5jIG9yIGRlZmVyLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6d2lsbEV4
ZWN1dGVXaGVuRG9jdW1lbnRGaW5pc2hlZFBhcnNpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGRv
bS9TY3JpcHRSdW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjp+U2Ny
aXB0UnVubmVyKTogSGFzaFNldCdzIGl0ZXJhdG9yIHdpbGwgcmV0dXJuIGBjb25zdCBQZW5kaW5n
U2NyaXB0JmAuCisgICAgICAgIEFub3RoZXIgb3B0aW9uIGlzIHVzaW5nIEhhc2hTZXQ8UmVmUHRy
PFBlbmRpbmdTY3JpcHQ+Pi4gSGVyZSwgd2UgdXNlIGEgbGl0dGxlIGJpdCB3ZWlyZWQgY29uc3Rf
Y2FzdC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFJ1bm5lcjo6cXVldWVTY3JpcHRGb3JFeGVj
dXRpb24pOiBVc2UgUGVuZGluZ1NjcmlwdDo6c2V0Q2xpZW50IHRvIHdhaXQgbG9hZGluZy4KKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFJ1bm5lcjo6bm90aWZ5RmluaXNoZWQpOiBOb3RpZnkgdGhl
IHNjcmlwdCByZWFkeSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjp0aW1l
ckZpcmVkKTogVXNlIGV4ZWN1dGVTY3JpcHRGb3JTY3JpcHRSdW5uZXIuCisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRSdW5uZXI6Om5vdGlmeVNjcmlwdFJlYWR5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBkb20vU2NyaXB0UnVubmVyLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1
bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGVu
ZGluZ1NjcmlwdEFuZERpc3BhdGNoRXZlbnQpOiBVc2UgZXhlY3V0ZVNjcmlwdEZvclNjcmlwdFJ1
bm5lci4KKworMjAxNi0wOS0wNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKwogICAgICAgICBJbnRyb2R1Y2UgYWJzdHJhY3QgY2xhc3MgTG9hZGFibGVTY3JpcHQgZm9y
IGNsYXNzaWMgc2NyaXB0IGFuZCBtb2R1bGUgZ3JhcGgKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTY3NAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUGVuZGluZ1NjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUGVuZGluZ1Nj
cmlwdC5jcHAKaW5kZXggM2VlNGQyOGVmOTk0MWZiYTJhMWE5M2U0OWYwNjU0YTdkM2FhYjQ4OS4u
NWJlODUxNzg5ZDMzNmYyYjY2OWM2ZTJmYzAyZTNiM2FiZTMyOTlmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1BlbmRpbmdTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9QZW5kaW5nU2NyaXB0LmNwcApAQCAtOTgsNyArOTgsNiBAQCB2b2lkIFBlbmRpbmdTY3JpcHQ6
OnNldENsaWVudChQZW5kaW5nU2NyaXB0Q2xpZW50KiBjbGllbnQpCiAKIHZvaWQgUGVuZGluZ1Nj
cmlwdDo6Y2xlYXJDbGllbnQoKQogewotICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAgbV9jbGll
bnQgPSBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXgg
NDJjOGM1ZmViODI0YmQ5OThhNjc4ODMxMDgwZWIyZjQyN2MyYzA5Ny4uZmE3NjAwNmNiMDc0NmQ3
ZWNiNTFkZjQ2MDE0MGIwZTdlNmViZDBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50
LmNwcApAQCAtNzUsMTEgKzc1LDYgQEAgU2NyaXB0RWxlbWVudDo6U2NyaXB0RWxlbWVudChFbGVt
ZW50JiBlbGVtZW50LCBib29sIHBhcnNlckluc2VydGVkLCBib29sIGFscmVhZHkKICAgICAgICAg
bV9zdGFydExpbmVOdW1iZXIgPSBtX2VsZW1lbnQuZG9jdW1lbnQoKS5zY3JpcHRhYmxlRG9jdW1l
bnRQYXJzZXIoKS0+dGV4dFBvc2l0aW9uKCkubV9saW5lOwogfQogCi1TY3JpcHRFbGVtZW50Ojp+
U2NyaXB0RWxlbWVudCgpCi17Ci0gICAgc3RvcExvYWRSZXF1ZXN0KCk7Ci19Ci0KIGJvb2wgU2Ny
aXB0RWxlbWVudDo6c2hvdWxkQ2FsbEZpbmlzaGVkSW5zZXJ0aW5nU3VidHJlZShDb250YWluZXJO
b2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1
bWVudCgpICYmICFtX3BhcnNlckluc2VydGVkOwpAQCAtMjQ1LDExICsyNDAsOSBAQCBib29sIFNj
cmlwdEVsZW1lbnQ6OnByZXBhcmVTY3JpcHQoY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFy
dFBvc2l0aW9uLCBMZWdhYwogICAgICAgICBBU1NFUlQobV9sb2FkYWJsZVNjcmlwdCk7CiAgICAg
ICAgIG1fd2lsbEV4ZWN1dGVJbk9yZGVyID0gdHJ1ZTsKICAgICAgICAgZG9jdW1lbnQuc2NyaXB0
UnVubmVyKCktPnF1ZXVlU2NyaXB0Rm9yRXhlY3V0aW9uKHRoaXMsICptX2xvYWRhYmxlU2NyaXB0
LCBTY3JpcHRSdW5uZXI6OklOX09SREVSX0VYRUNVVElPTik7Ci0gICAgICAgIG1fbG9hZGFibGVT
Y3JpcHQtPmFkZENsaWVudCgqdGhpcyk7CiAgICAgfSBlbHNlIGlmIChoYXNTb3VyY2VBdHRyaWJ1
dGUoKSkgewogICAgICAgICBBU1NFUlQobV9sb2FkYWJsZVNjcmlwdCk7CiAgICAgICAgIG1fZWxl
bWVudC5kb2N1bWVudCgpLnNjcmlwdFJ1bm5lcigpLT5xdWV1ZVNjcmlwdEZvckV4ZWN1dGlvbih0
aGlzLCAqbV9sb2FkYWJsZVNjcmlwdCwgU2NyaXB0UnVubmVyOjpBU1lOQ19FWEVDVVRJT04pOwot
ICAgICAgICBtX2xvYWRhYmxlU2NyaXB0LT5hZGRDbGllbnQoKnRoaXMpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIC8vIFJlc2V0IGxpbmUgbnVtYmVyaW5nIGZvciBuZXN0ZWQgd3JpdGVzLgogICAg
ICAgICBUZXh0UG9zaXRpb24gcG9zaXRpb24gPSBkb2N1bWVudC5pc0luRG9jdW1lbnRXcml0ZSgp
ID8gVGV4dFBvc2l0aW9uKCkgOiBzY3JpcHRTdGFydFBvc2l0aW9uOwpAQCAtMzM2LDE1ICszMjks
NiBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNl
Q29kZSYgc291cmNlQ29kZSkKICAgICB9CiB9CiAKLXZvaWQgU2NyaXB0RWxlbWVudDo6c3RvcExv
YWRSZXF1ZXN0KCkKLXsKLSAgICBpZiAobV9sb2FkYWJsZVNjcmlwdCkgewotICAgICAgICBpZiAo
IW1fd2lsbEJlUGFyc2VyRXhlY3V0ZWQpCi0gICAgICAgICAgICBtX2xvYWRhYmxlU2NyaXB0LT5y
ZW1vdmVDbGllbnQoKnRoaXMpOwotICAgICAgICBtX2xvYWRhYmxlU2NyaXB0ID0gbnVsbHB0cjsK
LSAgICB9Ci19Ci0KIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdEFuZERpc3BhdGNo
RXZlbnQoTG9hZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0KQogewogICAgIGlmIChPcHRpb25h
bDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+IGVycm9yID0gbG9hZGFibGVTY3JpcHQud2FzRXJyb3Jl
ZCgpKSB7CkBAIC0zNTgsMTYgKzM0Miw4IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNj
cmlwdEFuZERpc3BhdGNoRXZlbnQoTG9hZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0CiAgICAg
fQogfQogCi12b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHRGb3JTY3JpcHRSdW5uZXIo
TG9hZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0KQotewotICAgIEFTU0VSVCghbV93aWxsQmVQ
YXJzZXJFeGVjdXRlZCk7Ci0gICAgZXhlY3V0ZVNjcmlwdEFuZERpc3BhdGNoRXZlbnQobG9hZGFi
bGVTY3JpcHQpOwotICAgIGxvYWRhYmxlU2NyaXB0LnJlbW92ZUNsaWVudCgqdGhpcyk7Ci19Ci0K
LXZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdEZvckhUTUxTY3JpcHRSdW5uZXIoUGVu
ZGluZ1NjcmlwdCYgcGVuZGluZ1NjcmlwdCkKK3ZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNj
cmlwdEZvclNjcmlwdFJ1bm5lcihQZW5kaW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0KQogewotICAg
IElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyIGlnbm9yZURlc3RydWN0aXZl
V3JpdGVDb3VudEluY3JlbWVudGVyKCZtX2VsZW1lbnQuZG9jdW1lbnQoKSk7CiAgICAgaWYgKGF1
dG8qIGxvYWRhYmxlU2NyaXB0ID0gcGVuZGluZ1NjcmlwdC5sb2FkYWJsZVNjcmlwdCgpKQogICAg
ICAgICBleGVjdXRlU2NyaXB0QW5kRGlzcGF0Y2hFdmVudCgqbG9hZGFibGVTY3JpcHQpOwogICAg
IGVsc2UgewpAQCAtMzc3LDI1ICszNTMsNiBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVT
Y3JpcHRGb3JIVE1MU2NyaXB0UnVubmVyKFBlbmRpbmdTY3JpcHQmIHBlbmRpbmdTY3JpcAogICAg
IH0KIH0KIAotdm9pZCBTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChMb2FkYWJsZVNjcmlw
dCYpCi17Ci0gICAgQVNTRVJUKCFtX3dpbGxCZVBhcnNlckV4ZWN1dGVkKTsKLQotICAgIC8vIExv
YWRhYmxlU2NyaXB0IHBvc3NpYmx5IGludm9rZXMgdGhpcyBub3RpZnlGaW5pc2hlZCgpIG1vcmUg
dGhhbgotICAgIC8vIG9uY2UgYmVjYXVzZSBTY3JpcHRFbGVtZW50IGRvZXNuJ3QgdW5zdWJzY3Jp
YmUgaXRzZWxmIGZyb20KLSAgICAvLyBMb2FkYWJsZVNjcmlwdCBoZXJlIGFuZCBkb2VzIGl0IGlu
IGV4ZWN1dGUoKSBpbnN0ZWFkLgotICAgIC8vIFdlIHVzZSBtX2xvYWRhYmxlU2NyaXB0IHRvIGNo
ZWNrIGlmIHRoaXMgZnVuY3Rpb24gaXMgYWxyZWFkeSBjYWxsZWQuCi0gICAgaWYgKCFtX2xvYWRh
YmxlU2NyaXB0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV93aWxsRXhlY3V0ZUluT3Jk
ZXIpCi0gICAgICAgIG1fZWxlbWVudC5kb2N1bWVudCgpLnNjcmlwdFJ1bm5lcigpLT5ub3RpZnlT
Y3JpcHRSZWFkeSh0aGlzLCBTY3JpcHRSdW5uZXI6OklOX09SREVSX0VYRUNVVElPTik7Ci0gICAg
ZWxzZQotICAgICAgICBtX2VsZW1lbnQuZG9jdW1lbnQoKS5zY3JpcHRSdW5uZXIoKS0+bm90aWZ5
U2NyaXB0UmVhZHkodGhpcywgU2NyaXB0UnVubmVyOjpBU1lOQ19FWEVDVVRJT04pOwotCi0gICAg
bV9sb2FkYWJsZVNjcmlwdCA9IG51bGxwdHI7Ci19Ci0KIGJvb2wgU2NyaXB0RWxlbWVudDo6aWdu
b3Jlc0xvYWRSZXF1ZXN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9hbHJlYWR5U3RhcnRlZCB8
fCBtX2lzRXh0ZXJuYWxTY3JpcHQgfHwgbV9wYXJzZXJJbnNlcnRlZCB8fCAhbV9lbGVtZW50Lmlu
RG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCmluZGV4IDRkZTg3OGM4Zjlj
ZTc1OGMxZWUyM2JiODdmOGIyMWY4MDU2NWUyM2YuLmY1MmI3NzhiMTlhMDI0NDZlMjVkZmIxYzZl
ZjY2OTllMjNkZGQxNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaApAQCAtMzgsOSAr
MzgsOSBAQCBjbGFzcyBQZW5kaW5nU2NyaXB0OwogY2xhc3MgU2NyaXB0RWxlbWVudDsKIGNsYXNz
IFNjcmlwdFNvdXJjZUNvZGU7CiAKLWNsYXNzIFNjcmlwdEVsZW1lbnQgOiBwcml2YXRlIExvYWRh
YmxlU2NyaXB0Q2xpZW50IHsKK2NsYXNzIFNjcmlwdEVsZW1lbnQgewogcHVibGljOgotICAgIHZp
cnR1YWwgflNjcmlwdEVsZW1lbnQoKTsKKyAgICB2aXJ0dWFsIH5TY3JpcHRFbGVtZW50KCkgeyB9
CiAKICAgICBFbGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gbV9lbGVtZW50OyB9CiAgICAgY29u
c3QgRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQpAQCAtNTIs
OCArNTIsNyBAQCBjbGFzcyBTY3JpcHRFbGVtZW50IDogcHJpdmF0ZSBMb2FkYWJsZVNjcmlwdENs
aWVudCB7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNjcmlwdENvbnRlbnQoKSBjb25zdDsK
ICAgICB2b2lkIGV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwogCi0gICAg
dm9pZCBleGVjdXRlU2NyaXB0Rm9yU2NyaXB0UnVubmVyKExvYWRhYmxlU2NyaXB0Jik7Ci0gICAg
dm9pZCBleGVjdXRlU2NyaXB0Rm9ySFRNTFNjcmlwdFJ1bm5lcihQZW5kaW5nU2NyaXB0Jik7Cisg
ICAgdm9pZCBleGVjdXRlU2NyaXB0Rm9yU2NyaXB0UnVubmVyKFBlbmRpbmdTY3JpcHQmKTsKIAog
ICAgIC8vIFhNTCBwYXJzZXIgY2FsbHMgdGhlc2UKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hM
b2FkRXZlbnQoKSA9IDA7CkBAIC02Myw2ICs2Miw3IEBAIGNsYXNzIFNjcmlwdEVsZW1lbnQgOiBw
cml2YXRlIExvYWRhYmxlU2NyaXB0Q2xpZW50IHsKICAgICBib29sIHdpbGxCZVBhcnNlckV4ZWN1
dGVkKCkgY29uc3QgeyByZXR1cm4gbV93aWxsQmVQYXJzZXJFeGVjdXRlZDsgfQogICAgIGJvb2wg
cmVhZHlUb0JlUGFyc2VyRXhlY3V0ZWQoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5VG9CZVBhcnNl
ckV4ZWN1dGVkOyB9CiAgICAgYm9vbCB3aWxsRXhlY3V0ZVdoZW5Eb2N1bWVudEZpbmlzaGVkUGFy
c2luZygpIGNvbnN0IHsgcmV0dXJuIG1fd2lsbEV4ZWN1dGVXaGVuRG9jdW1lbnRGaW5pc2hlZFBh
cnNpbmc7IH0KKyAgICBib29sIHdpbGxFeGVjdXRlSW5PcmRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
d2lsbEV4ZWN1dGVJbk9yZGVyOyB9CiAgICAgTG9hZGFibGVTY3JpcHQqIGxvYWRhYmxlU2NyaXB0
KCkgeyByZXR1cm4gbV9sb2FkYWJsZVNjcmlwdC5nZXQoKTsgfQogCiBwcm90ZWN0ZWQ6CkBAIC05
Miw5ICs5Miw2IEBAIGNsYXNzIFNjcmlwdEVsZW1lbnQgOiBwcml2YXRlIExvYWRhYmxlU2NyaXB0
Q2xpZW50IHsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IHJlcXVlc3RT
Y3JpcHRXaXRoQ2FjaGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBub25jZUF0dHJpYnV0ZSwg
Y29uc3QgU3RyaW5nJiBjcm9zc29yaWdpbkF0dHJpYnV0ZSk7CiAKICAgICBib29sIHJlcXVlc3RD
bGFzc2ljU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLSAgICB2b2lkIHN0b3BMb2Fk
UmVxdWVzdCgpOwotCi0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChMb2FkYWJsZVNjcmlwdCYpIG92
ZXJyaWRlOwogCiAgICAgdmlydHVhbCBTdHJpbmcgc291cmNlQXR0cmlidXRlVmFsdWUoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgY2hhcnNldEF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcAppbmRleCA5ZDdlZDNmYzVlNmJkMjQ2
MGYzN2QyZjZhZGI1YjkyMzAxOTU0NmU4Li45NDU0N2U5ZTNkODI5NTUzODVkOWMwOTBkMjJkMTgz
YTk2NTY5NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcApAQCAtNDAsMTIgKzQw
LDE4IEBAIFNjcmlwdFJ1bm5lcjo6U2NyaXB0UnVubmVyKERvY3VtZW50JiBkb2N1bWVudCkKIAog
U2NyaXB0UnVubmVyOjp+U2NyaXB0UnVubmVyKCkKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fc2NyaXB0c1RvRXhlY3V0ZVNvb24uc2l6ZSgpOyArK2kpCisgICAgZm9yIChhdXRvJiBw
ZW5kaW5nU2NyaXB0IDogbV9zY3JpcHRzVG9FeGVjdXRlU29vbikgeworICAgICAgICBVTlVTRURf
UEFSQU0ocGVuZGluZ1NjcmlwdCk7CiAgICAgICAgIG1fZG9jdW1lbnQuZGVjcmVtZW50TG9hZEV2
ZW50RGVsYXlDb3VudCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zY3JpcHRzVG9F
eGVjdXRlSW5PcmRlci5zaXplKCk7ICsraSkKKyAgICB9CisgICAgZm9yIChhdXRvJiBwZW5kaW5n
U2NyaXB0IDogbV9zY3JpcHRzVG9FeGVjdXRlSW5PcmRlcikgeworICAgICAgICBwZW5kaW5nU2Ny
aXB0LT5jbGVhckNsaWVudCgpOwogICAgICAgICBtX2RvY3VtZW50LmRlY3JlbWVudExvYWRFdmVu
dERlbGF5Q291bnQoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wZW5kaW5nQXN5
bmNTY3JpcHRzLnNpemUoKTsgKytpKQorICAgIH0KKyAgICBmb3IgKGF1dG8mIHBlbmRpbmdTY3Jp
cHQgOiBtX3BlbmRpbmdBc3luY1NjcmlwdHMpIHsKKyAgICAgICAgY29uc3RfY2FzdDxQZW5kaW5n
U2NyaXB0Jj4ocGVuZGluZ1NjcmlwdC5nZXQoKSkuY2xlYXJDbGllbnQoKTsKICAgICAgICAgbV9k
b2N1bWVudC5kZWNyZW1lbnRMb2FkRXZlbnREZWxheUNvdW50KCk7CisgICAgfQogfQogCiB2b2lk
IFNjcmlwdFJ1bm5lcjo6cXVldWVTY3JpcHRGb3JFeGVjdXRpb24oU2NyaXB0RWxlbWVudCogc2Ny
aXB0RWxlbWVudCwgTG9hZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0LCBFeGVjdXRpb25UeXBl
IGV4ZWN1dGlvblR5cGUpCkBAIC01NywxNSArNjMsMTcgQEAgdm9pZCBTY3JpcHRSdW5uZXI6OnF1
ZXVlU2NyaXB0Rm9yRXhlY3V0aW9uKFNjcmlwdEVsZW1lbnQqIHNjcmlwdEVsZW1lbnQsIExvYWRh
YmwKIAogICAgIG1fZG9jdW1lbnQuaW5jcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogCisg
ICAgUmVmPFBlbmRpbmdTY3JpcHQ+IHBlbmRpbmdTY3JpcHQgPSBQZW5kaW5nU2NyaXB0OjpjcmVh
dGUoZWxlbWVudCwgbG9hZGFibGVTY3JpcHQpOwogICAgIHN3aXRjaCAoZXhlY3V0aW9uVHlwZSkg
ewogICAgIGNhc2UgQVNZTkNfRVhFQ1VUSU9OOgotICAgICAgICBtX3BlbmRpbmdBc3luY1Njcmlw
dHMuYWRkKHNjcmlwdEVsZW1lbnQsIFBlbmRpbmdTY3JpcHQ6OmNyZWF0ZShlbGVtZW50LCBsb2Fk
YWJsZVNjcmlwdCkpOworICAgICAgICBtX3BlbmRpbmdBc3luY1NjcmlwdHMuYWRkKHBlbmRpbmdT
Y3JpcHQuY29weVJlZigpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIElOX09SREVSX0VY
RUNVVElPTjoKLSAgICAgICAgbV9zY3JpcHRzVG9FeGVjdXRlSW5PcmRlci5hcHBlbmQoUGVuZGlu
Z1NjcmlwdDo6Y3JlYXRlKGVsZW1lbnQsIGxvYWRhYmxlU2NyaXB0KSk7CisgICAgICAgIG1fc2Ny
aXB0c1RvRXhlY3V0ZUluT3JkZXIuYXBwZW5kKHBlbmRpbmdTY3JpcHQuY29weVJlZigpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQorICAgIHBlbmRpbmdTY3JpcHQtPnNldENsaWVudCh0aGlzKTsK
IH0KIAogdm9pZCBTY3JpcHRSdW5uZXI6OnN1c3BlbmQoKQpAQCAtNzksMTggKzg3LDE3IEBAIHZv
aWQgU2NyaXB0UnVubmVyOjpyZXN1bWUoKQogICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgw
KTsKIH0KIAotdm9pZCBTY3JpcHRSdW5uZXI6Om5vdGlmeVNjcmlwdFJlYWR5KFNjcmlwdEVsZW1l
bnQqIHNjcmlwdEVsZW1lbnQsIEV4ZWN1dGlvblR5cGUgZXhlY3V0aW9uVHlwZSkKK3ZvaWQgU2Ny
aXB0UnVubmVyOjpub3RpZnlGaW5pc2hlZChQZW5kaW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0KQog
ewotICAgIHN3aXRjaCAoZXhlY3V0aW9uVHlwZSkgewotICAgIGNhc2UgQVNZTkNfRVhFQ1VUSU9O
OgotICAgICAgICBBU1NFUlQobV9wZW5kaW5nQXN5bmNTY3JpcHRzLmNvbnRhaW5zKHNjcmlwdEVs
ZW1lbnQpKTsKLSAgICAgICAgbV9zY3JpcHRzVG9FeGVjdXRlU29vbi5hcHBlbmQobV9wZW5kaW5n
QXN5bmNTY3JpcHRzLnRha2Uoc2NyaXB0RWxlbWVudCktPnB0cigpKTsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBjYXNlIElOX09SREVSX0VYRUNVVElPTjoKKyAgICBhdXRvKiBzY3JpcHRFbGVtZW50
ID0gdG9TY3JpcHRFbGVtZW50SWZQb3NzaWJsZSgmcGVuZGluZ1NjcmlwdC5lbGVtZW50KCkpOwor
ICAgIEFTU0VSVChzY3JpcHRFbGVtZW50KTsKKyAgICBpZiAoc2NyaXB0RWxlbWVudC0+d2lsbEV4
ZWN1dGVJbk9yZGVyKCkpCiAgICAgICAgIEFTU0VSVCghbV9zY3JpcHRzVG9FeGVjdXRlSW5PcmRl
ci5pc0VtcHR5KCkpOwotICAgICAgICBicmVhazsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJU
KG1fcGVuZGluZ0FzeW5jU2NyaXB0cy5jb250YWlucyhwZW5kaW5nU2NyaXB0KSk7CisgICAgICAg
IG1fc2NyaXB0c1RvRXhlY3V0ZVNvb24uYXBwZW5kKG1fcGVuZGluZ0FzeW5jU2NyaXB0cy50YWtl
KHBlbmRpbmdTY3JpcHQpLT5wdHIoKSk7CiAgICAgfQorICAgIHBlbmRpbmdTY3JpcHQuY2xlYXJD
bGllbnQoKTsKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIApAQCAtMTE2LDcgKzEy
Myw3IEBAIHZvaWQgU2NyaXB0UnVubmVyOjp0aW1lckZpcmVkKCkKICAgICAgICAgYXV0byogc2Ny
aXB0RWxlbWVudCA9IHRvU2NyaXB0RWxlbWVudElmUG9zc2libGUoJnNjcmlwdC0+ZWxlbWVudCgp
KTsKICAgICAgICAgQVNTRVJUKHNjcmlwdEVsZW1lbnQpOwogICAgICAgICBBU1NFUlQoc2NyaXB0
LT5uZWVkc0xvYWRpbmcoKSk7Ci0gICAgICAgIHNjcmlwdEVsZW1lbnQtPmV4ZWN1dGVTY3JpcHRG
b3JTY3JpcHRSdW5uZXIoKnNjcmlwdC0+bG9hZGFibGVTY3JpcHQoKSk7CisgICAgICAgIHNjcmlw
dEVsZW1lbnQtPmV4ZWN1dGVTY3JpcHRGb3JTY3JpcHRSdW5uZXIoKnNjcmlwdCk7CiAgICAgICAg
IG1fZG9jdW1lbnQuZGVjcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRSdW5uZXIuaAppbmRleCBlZWUxYTI2M2E5Mzk5ZGQwMzgwMjZjMDA2NmNh
YjM4ZjZiM2QzNTc3Li5kZmNmM2M1ZmE5MGU0YTQ1MDk0MDQyZDg3N2RlM2JjZTQ0ODAwZDlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5oCkBAIC0yNSw4ICsyNSw5IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiUGVuZGluZ1NjcmlwdENsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApA
QCAtMzcsNyArMzgsNyBAQCBjbGFzcyBQZW5kaW5nU2NyaXB0OwogY2xhc3MgU2NyaXB0RWxlbWVu
dDsKIGNsYXNzIExvYWRhYmxlU2NyaXB0OwogCi1jbGFzcyBTY3JpcHRSdW5uZXIgeworY2xhc3Mg
U2NyaXB0UnVubmVyIDogcHJpdmF0ZSBQZW5kaW5nU2NyaXB0Q2xpZW50IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShTY3JpcHRSdW5uZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBTY3JpcHRSdW5uZXIoRG9jdW1lbnQmKTsKQEAgLTUzLDEwICs1
NCwxMiBAQCBjbGFzcyBTY3JpcHRSdW5uZXIgewogcHJpdmF0ZToKICAgICB2b2lkIHRpbWVyRmly
ZWQoKTsKIAorICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoUGVuZGluZ1NjcmlwdCYpIG92ZXJyaWRl
OworCiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiAgICAgVmVjdG9yPFJlZjxQZW5kaW5nU2Ny
aXB0Pj4gbV9zY3JpcHRzVG9FeGVjdXRlSW5PcmRlcjsKICAgICBWZWN0b3I8UmVmUHRyPFBlbmRp
bmdTY3JpcHQ+PiBtX3NjcmlwdHNUb0V4ZWN1dGVTb29uOyAvLyBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNzZXQtb2Ytc2NyaXB0cy10aGF0LXdpbGwt
ZXhlY3V0ZS1hcy1zb29uLWFzLXBvc3NpYmxlCi0gICAgSGFzaE1hcDxTY3JpcHRFbGVtZW50Kiwg
UmVmPFBlbmRpbmdTY3JpcHQ+PiBtX3BlbmRpbmdBc3luY1NjcmlwdHM7CisgICAgSGFzaFNldDxS
ZWY8UGVuZGluZ1NjcmlwdD4+IG1fcGVuZGluZ0FzeW5jU2NyaXB0czsKICAgICBUaW1lciBtX3Rp
bWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNj
cmlwdFJ1bm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVu
bmVyLmNwcAppbmRleCAzMzFjMjc5ODkzYTRmMDhiMWIyZTg1ZDI1Y2NlYzcyODI3OTFkZDc1Li42
YjE3NmYxM2ZjMGM1NDM1YmVhMGY4NTAzN2ZiZTg0ZmI1NDIyZDQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcApAQCAtMTIxLDcgKzEyMSw3
IEBAIHZvaWQgSFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBlbmRpbmdTY3JpcHRBbmREaXNwYXRj
aEV2ZW50KFJlZlB0cjxQZW5kaW5nU2NyaXB0CiAKICAgICBpZiAoYXV0byogc2NyaXB0RWxlbWVu
dCA9IHRvU2NyaXB0RWxlbWVudElmUG9zc2libGUoJnBlbmRpbmdTY3JpcHQtPmVsZW1lbnQoKSkp
IHsKICAgICAgICAgTmVzdGluZ0xldmVsSW5jcmVtZW50ZXIgbmVzdGluZ0xldmVsSW5jcmVtZW50
ZXIobV9zY3JpcHROZXN0aW5nTGV2ZWwpOwotICAgICAgICBzY3JpcHRFbGVtZW50LT5leGVjdXRl
U2NyaXB0Rm9ySFRNTFNjcmlwdFJ1bm5lcigqcGVuZGluZ1NjcmlwdCk7CisgICAgICAgIHNjcmlw
dEVsZW1lbnQtPmV4ZWN1dGVTY3JpcHRGb3JTY3JpcHRSdW5uZXIoKnBlbmRpbmdTY3JpcHQpOwog
ICAgIH0KICAgICBBU1NFUlQoIWlzRXhlY3V0aW5nU2NyaXB0KCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288251</attachid>
            <date>2016-09-07 22:38:14 -0700</date>
            <delta_ts>2016-09-08 00:00:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161726-20160908143548.patch</filename>
            <type>text/plain</type>
            <size>14285</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2ZjNWJlMGM0ZTFmMDVk
ZTUxZWY4MTU2ODU3OGYyYjg0MWIxNjg4Zi4uN2FlYWE0NzJkZGQwMGM4ZjVhODgyYTAxZjhmYWI4
MTA4NWQ1ZDRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1IEBACiAyMDE2LTA5LTA3ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCisgICAgICAgIFNjcmlwdFJ1bm5l
ciBzaG91bGQgYmUgZHJpdmVuIGJ5IFBlbmRpbmdTY3JpcHQgcmF0aGVyIHRoYW4gU2NyaXB0RWxl
bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYx
NzI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Ny
aXB0UnVubmVyIGlzIGRyaXZlbiBieSBTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZC4gV2hp
bGUgU2NyaXB0UnVubmVyIGlzIGRyaXZlbiBieSB0aGlzLAorICAgICAgICBIVE1MU2NyaXB0UnVu
bmVyIGRvZXMgbm90IHVzZSBpdC4gSW5zdGVhZCwgSFRNTFNjcmlwdFJ1bm5lciB1c2VzIFBlbmRp
bmdTY3JpcHRDbGllbnQuIEFzIGEgcmVzdWx0LAorICAgICAgICBTY3JpcHRFbGVtZW50Ojpub3Rp
ZnlGaW5pc2hlZCBpcyB1c2VkIG9ubHkgd2hlbiB0aGUgc2NyaXB0IGlzIGFubm90YXRlZCB3aXRo
ICJkZWZlciIgb3IgImFzeW5jIgorICAgICAgICB3aGlsZSBhbGwgdGhlIGV4dGVybmFsIHNjcmlw
dCB3aWxsIGxvYWQgdGhlIExvYWRhYmxlU2NyaXB0LiBJdCBpcyBjb25mdXNpbmcuCisgICAgICAg
IFRoaXMgcGF0Y2ggcmVtb3ZlcyBTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCBhbmQgdXNl
IFBlbmRpbmdTY3JpcHQncyBvYnNlcnZhYmlsaXR5CisgICAgICAgIGluIFNjcmlwdFJ1bm5lciBp
bnN0ZWFkLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGRvbS9T
Y3JpcHRFbGVtZW50LmNwcDogRHJvcCBMb2FkYWJsZVNjcmlwdENsaWVudCBpbnRlcmZhY2UuCisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpwcmVwYXJlU2NyaXB0KTogRG8gbm90IHVz
ZSBhZGRDbGllbnQuIFNjcmlwdFJ1bm5lciB1c2UgUGVuZGluZ1NjcmlwdDo6e3NldENsaWVudCxj
bGVhckNsaWVudH0gaW5zdGVhZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV4
ZWN1dGVTY3JpcHRGb3JTY3JpcHRSdW5uZXIpOiBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJ
bmNyZW1lbnRlciB3aWxsIGJlIGRvbmUgaW4gU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdC4K
KyAgICAgICAgU28gbm8gbmVlZCB0byBkbyBpdCBoZXJlLCB0aGF0J3MgZHVwbGljYXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6On5TY3JpcHRFbGVtZW50KTogRGVsZXRlZC4g
U2NyaXB0RWxlbWVudCBkb2VzIG5vdCB1c2UgYWRkQ2xpZW50L3JlbW92ZUNsaWVudC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnN0b3BMb2FkUmVxdWVzdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpleGVjdXRlU2NyaXB0Rm9ySFRNTFNjcmlw
dFJ1bm5lcik6IERlbGV0ZWQuIGV4ZWN1dGVTY3JpcHRGb3JIVE1MU2NyaXB0UnVubmVyIGFuZCBl
eGVjdXRlU2NyaXB0Rm9yU2NyaXB0UnVubmVyIGFyZQorICAgICAgICBtZXJnZWQgaW50byBleGVj
dXRlU2NyaXB0Rm9yUnVubmVyLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6bm90
aWZ5RmluaXNoZWQpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojp+U2NyaXB0RWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojp3aWxsRXhlY3V0ZUluT3JkZXIpOiBVc2VkIGluIFNj
cmlwdFJ1bm5lciB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgc2NyaXB0IGlzIGFzeW5jIG9yIGRl
ZmVyLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6d2lsbEV4ZWN1dGVXaGVuRG9j
dW1lbnRGaW5pc2hlZFBhcnNpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9TY3JpcHRSdW5u
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjp+U2NyaXB0UnVubmVyKTog
SGFzaFNldCdzIGl0ZXJhdG9yIHdpbGwgcmV0dXJuIGBjb25zdCBQZW5kaW5nU2NyaXB0JmAuCisg
ICAgICAgIEFub3RoZXIgb3B0aW9uIGlzIHVzaW5nIEhhc2hTZXQ8UmVmUHRyPFBlbmRpbmdTY3Jp
cHQ+Pi4gSGVyZSwgd2UgdXNlIGEgbGl0dGxlIGJpdCB3ZWlyZWQgY29uc3RfY2FzdC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdFJ1bm5lcjo6cXVldWVTY3JpcHRGb3JFeGVjdXRpb24pOiBVc2Ug
UGVuZGluZ1NjcmlwdDo6c2V0Q2xpZW50IHRvIHdhaXQgbG9hZGluZy4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdFJ1bm5lcjo6bm90aWZ5RmluaXNoZWQpOiBOb3RpZnkgdGhlIHNjcmlwdCByZWFk
eSBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjp0aW1lckZpcmVkKTogVXNl
IGV4ZWN1dGVTY3JpcHRGb3JTY3JpcHRSdW5uZXIuCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRS
dW5uZXI6Om5vdGlmeVNjcmlwdFJlYWR5KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vU2NyaXB0
UnVubmVyLmg6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdEFu
ZERpc3BhdGNoRXZlbnQpOiBVc2UgZXhlY3V0ZVNjcmlwdEZvclNjcmlwdFJ1bm5lci4KKworMjAx
Ni0wOS0wNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAg
ICBJbnRyb2R1Y2UgYWJzdHJhY3QgY2xhc3MgTG9hZGFibGVTY3JpcHQgZm9yIGNsYXNzaWMgc2Ny
aXB0IGFuZCBtb2R1bGUgZ3JhcGgKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MTY3NAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5k
ZXggNDJjOGM1ZmViODI0YmQ5OThhNjc4ODMxMDgwZWIyZjQyN2MyYzA5Ny4uZmE3NjAwNmNiMDc0
NmQ3ZWNiNTFkZjQ2MDE0MGIwZTdlNmViZDBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVt
ZW50LmNwcApAQCAtNzUsMTEgKzc1LDYgQEAgU2NyaXB0RWxlbWVudDo6U2NyaXB0RWxlbWVudChF
bGVtZW50JiBlbGVtZW50LCBib29sIHBhcnNlckluc2VydGVkLCBib29sIGFscmVhZHkKICAgICAg
ICAgbV9zdGFydExpbmVOdW1iZXIgPSBtX2VsZW1lbnQuZG9jdW1lbnQoKS5zY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIoKS0+dGV4dFBvc2l0aW9uKCkubV9saW5lOwogfQogCi1TY3JpcHRFbGVtZW50
Ojp+U2NyaXB0RWxlbWVudCgpCi17Ci0gICAgc3RvcExvYWRSZXF1ZXN0KCk7Ci19Ci0KIGJvb2wg
U2NyaXB0RWxlbWVudDo6c2hvdWxkQ2FsbEZpbmlzaGVkSW5zZXJ0aW5nU3VidHJlZShDb250YWlu
ZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQuaW5E
b2N1bWVudCgpICYmICFtX3BhcnNlckluc2VydGVkOwpAQCAtMjQ1LDExICsyNDAsOSBAQCBib29s
IFNjcmlwdEVsZW1lbnQ6OnByZXBhcmVTY3JpcHQoY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRT
dGFydFBvc2l0aW9uLCBMZWdhYwogICAgICAgICBBU1NFUlQobV9sb2FkYWJsZVNjcmlwdCk7CiAg
ICAgICAgIG1fd2lsbEV4ZWN1dGVJbk9yZGVyID0gdHJ1ZTsKICAgICAgICAgZG9jdW1lbnQuc2Ny
aXB0UnVubmVyKCktPnF1ZXVlU2NyaXB0Rm9yRXhlY3V0aW9uKHRoaXMsICptX2xvYWRhYmxlU2Ny
aXB0LCBTY3JpcHRSdW5uZXI6OklOX09SREVSX0VYRUNVVElPTik7Ci0gICAgICAgIG1fbG9hZGFi
bGVTY3JpcHQtPmFkZENsaWVudCgqdGhpcyk7CiAgICAgfSBlbHNlIGlmIChoYXNTb3VyY2VBdHRy
aWJ1dGUoKSkgewogICAgICAgICBBU1NFUlQobV9sb2FkYWJsZVNjcmlwdCk7CiAgICAgICAgIG1f
ZWxlbWVudC5kb2N1bWVudCgpLnNjcmlwdFJ1bm5lcigpLT5xdWV1ZVNjcmlwdEZvckV4ZWN1dGlv
bih0aGlzLCAqbV9sb2FkYWJsZVNjcmlwdCwgU2NyaXB0UnVubmVyOjpBU1lOQ19FWEVDVVRJT04p
OwotICAgICAgICBtX2xvYWRhYmxlU2NyaXB0LT5hZGRDbGllbnQoKnRoaXMpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIC8vIFJlc2V0IGxpbmUgbnVtYmVyaW5nIGZvciBuZXN0ZWQgd3JpdGVzLgog
ICAgICAgICBUZXh0UG9zaXRpb24gcG9zaXRpb24gPSBkb2N1bWVudC5pc0luRG9jdW1lbnRXcml0
ZSgpID8gVGV4dFBvc2l0aW9uKCkgOiBzY3JpcHRTdGFydFBvc2l0aW9uOwpAQCAtMzM2LDE1ICsz
MjksNiBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291
cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICB9CiB9CiAKLXZvaWQgU2NyaXB0RWxlbWVudDo6c3Rv
cExvYWRSZXF1ZXN0KCkKLXsKLSAgICBpZiAobV9sb2FkYWJsZVNjcmlwdCkgewotICAgICAgICBp
ZiAoIW1fd2lsbEJlUGFyc2VyRXhlY3V0ZWQpCi0gICAgICAgICAgICBtX2xvYWRhYmxlU2NyaXB0
LT5yZW1vdmVDbGllbnQoKnRoaXMpOwotICAgICAgICBtX2xvYWRhYmxlU2NyaXB0ID0gbnVsbHB0
cjsKLSAgICB9Ci19Ci0KIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdEFuZERpc3Bh
dGNoRXZlbnQoTG9hZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0KQogewogICAgIGlmIChPcHRp
b25hbDxMb2FkYWJsZVNjcmlwdDo6RXJyb3I+IGVycm9yID0gbG9hZGFibGVTY3JpcHQud2FzRXJy
b3JlZCgpKSB7CkBAIC0zNTgsMTYgKzM0Miw4IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0
ZVNjcmlwdEFuZERpc3BhdGNoRXZlbnQoTG9hZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0CiAg
ICAgfQogfQogCi12b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHRGb3JTY3JpcHRSdW5u
ZXIoTG9hZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0KQotewotICAgIEFTU0VSVCghbV93aWxs
QmVQYXJzZXJFeGVjdXRlZCk7Ci0gICAgZXhlY3V0ZVNjcmlwdEFuZERpc3BhdGNoRXZlbnQobG9h
ZGFibGVTY3JpcHQpOwotICAgIGxvYWRhYmxlU2NyaXB0LnJlbW92ZUNsaWVudCgqdGhpcyk7Ci19
Ci0KLXZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdEZvckhUTUxTY3JpcHRSdW5uZXIo
UGVuZGluZ1NjcmlwdCYgcGVuZGluZ1NjcmlwdCkKK3ZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0
ZVNjcmlwdEZvclNjcmlwdFJ1bm5lcihQZW5kaW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0KQogewot
ICAgIElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyIGlnbm9yZURlc3RydWN0
aXZlV3JpdGVDb3VudEluY3JlbWVudGVyKCZtX2VsZW1lbnQuZG9jdW1lbnQoKSk7CiAgICAgaWYg
KGF1dG8qIGxvYWRhYmxlU2NyaXB0ID0gcGVuZGluZ1NjcmlwdC5sb2FkYWJsZVNjcmlwdCgpKQog
ICAgICAgICBleGVjdXRlU2NyaXB0QW5kRGlzcGF0Y2hFdmVudCgqbG9hZGFibGVTY3JpcHQpOwog
ICAgIGVsc2UgewpAQCAtMzc3LDI1ICszNTMsNiBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1
dGVTY3JpcHRGb3JIVE1MU2NyaXB0UnVubmVyKFBlbmRpbmdTY3JpcHQmIHBlbmRpbmdTY3JpcAog
ICAgIH0KIH0KIAotdm9pZCBTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChMb2FkYWJsZVNj
cmlwdCYpCi17Ci0gICAgQVNTRVJUKCFtX3dpbGxCZVBhcnNlckV4ZWN1dGVkKTsKLQotICAgIC8v
IExvYWRhYmxlU2NyaXB0IHBvc3NpYmx5IGludm9rZXMgdGhpcyBub3RpZnlGaW5pc2hlZCgpIG1v
cmUgdGhhbgotICAgIC8vIG9uY2UgYmVjYXVzZSBTY3JpcHRFbGVtZW50IGRvZXNuJ3QgdW5zdWJz
Y3JpYmUgaXRzZWxmIGZyb20KLSAgICAvLyBMb2FkYWJsZVNjcmlwdCBoZXJlIGFuZCBkb2VzIGl0
IGluIGV4ZWN1dGUoKSBpbnN0ZWFkLgotICAgIC8vIFdlIHVzZSBtX2xvYWRhYmxlU2NyaXB0IHRv
IGNoZWNrIGlmIHRoaXMgZnVuY3Rpb24gaXMgYWxyZWFkeSBjYWxsZWQuCi0gICAgaWYgKCFtX2xv
YWRhYmxlU2NyaXB0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV93aWxsRXhlY3V0ZUlu
T3JkZXIpCi0gICAgICAgIG1fZWxlbWVudC5kb2N1bWVudCgpLnNjcmlwdFJ1bm5lcigpLT5ub3Rp
ZnlTY3JpcHRSZWFkeSh0aGlzLCBTY3JpcHRSdW5uZXI6OklOX09SREVSX0VYRUNVVElPTik7Ci0g
ICAgZWxzZQotICAgICAgICBtX2VsZW1lbnQuZG9jdW1lbnQoKS5zY3JpcHRSdW5uZXIoKS0+bm90
aWZ5U2NyaXB0UmVhZHkodGhpcywgU2NyaXB0UnVubmVyOjpBU1lOQ19FWEVDVVRJT04pOwotCi0g
ICAgbV9sb2FkYWJsZVNjcmlwdCA9IG51bGxwdHI7Ci19Ci0KIGJvb2wgU2NyaXB0RWxlbWVudDo6
aWdub3Jlc0xvYWRSZXF1ZXN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9hbHJlYWR5U3RhcnRl
ZCB8fCBtX2lzRXh0ZXJuYWxTY3JpcHQgfHwgbV9wYXJzZXJJbnNlcnRlZCB8fCAhbV9lbGVtZW50
LmluRG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCmluZGV4IDRkZTg3OGM4
ZjljZTc1OGMxZWUyM2JiODdmOGIyMWY4MDU2NWUyM2YuLmY1MmI3NzhiMTlhMDI0NDZlMjVkZmIx
YzZlZjY2OTllMjNkZGQxNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaApAQCAtMzgs
OSArMzgsOSBAQCBjbGFzcyBQZW5kaW5nU2NyaXB0OwogY2xhc3MgU2NyaXB0RWxlbWVudDsKIGNs
YXNzIFNjcmlwdFNvdXJjZUNvZGU7CiAKLWNsYXNzIFNjcmlwdEVsZW1lbnQgOiBwcml2YXRlIExv
YWRhYmxlU2NyaXB0Q2xpZW50IHsKK2NsYXNzIFNjcmlwdEVsZW1lbnQgewogcHVibGljOgotICAg
IHZpcnR1YWwgflNjcmlwdEVsZW1lbnQoKTsKKyAgICB2aXJ0dWFsIH5TY3JpcHRFbGVtZW50KCkg
eyB9CiAKICAgICBFbGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4gbV9lbGVtZW50OyB9CiAgICAg
Y29uc3QgRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQpAQCAt
NTIsOCArNTIsNyBAQCBjbGFzcyBTY3JpcHRFbGVtZW50IDogcHJpdmF0ZSBMb2FkYWJsZVNjcmlw
dENsaWVudCB7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNjcmlwdENvbnRlbnQoKSBjb25z
dDsKICAgICB2b2lkIGV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwogCi0g
ICAgdm9pZCBleGVjdXRlU2NyaXB0Rm9yU2NyaXB0UnVubmVyKExvYWRhYmxlU2NyaXB0Jik7Ci0g
ICAgdm9pZCBleGVjdXRlU2NyaXB0Rm9ySFRNTFNjcmlwdFJ1bm5lcihQZW5kaW5nU2NyaXB0Jik7
CisgICAgdm9pZCBleGVjdXRlU2NyaXB0Rm9yU2NyaXB0UnVubmVyKFBlbmRpbmdTY3JpcHQmKTsK
IAogICAgIC8vIFhNTCBwYXJzZXIgY2FsbHMgdGhlc2UKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hMb2FkRXZlbnQoKSA9IDA7CkBAIC02Myw2ICs2Miw3IEBAIGNsYXNzIFNjcmlwdEVsZW1lbnQg
OiBwcml2YXRlIExvYWRhYmxlU2NyaXB0Q2xpZW50IHsKICAgICBib29sIHdpbGxCZVBhcnNlckV4
ZWN1dGVkKCkgY29uc3QgeyByZXR1cm4gbV93aWxsQmVQYXJzZXJFeGVjdXRlZDsgfQogICAgIGJv
b2wgcmVhZHlUb0JlUGFyc2VyRXhlY3V0ZWQoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5VG9CZVBh
cnNlckV4ZWN1dGVkOyB9CiAgICAgYm9vbCB3aWxsRXhlY3V0ZVdoZW5Eb2N1bWVudEZpbmlzaGVk
UGFyc2luZygpIGNvbnN0IHsgcmV0dXJuIG1fd2lsbEV4ZWN1dGVXaGVuRG9jdW1lbnRGaW5pc2hl
ZFBhcnNpbmc7IH0KKyAgICBib29sIHdpbGxFeGVjdXRlSW5PcmRlcigpIGNvbnN0IHsgcmV0dXJu
IG1fd2lsbEV4ZWN1dGVJbk9yZGVyOyB9CiAgICAgTG9hZGFibGVTY3JpcHQqIGxvYWRhYmxlU2Ny
aXB0KCkgeyByZXR1cm4gbV9sb2FkYWJsZVNjcmlwdC5nZXQoKTsgfQogCiBwcm90ZWN0ZWQ6CkBA
IC05Miw5ICs5Miw2IEBAIGNsYXNzIFNjcmlwdEVsZW1lbnQgOiBwcml2YXRlIExvYWRhYmxlU2Ny
aXB0Q2xpZW50IHsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IHJlcXVl
c3RTY3JpcHRXaXRoQ2FjaGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBub25jZUF0dHJpYnV0
ZSwgY29uc3QgU3RyaW5nJiBjcm9zc29yaWdpbkF0dHJpYnV0ZSk7CiAKICAgICBib29sIHJlcXVl
c3RDbGFzc2ljU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLSAgICB2b2lkIHN0b3BM
b2FkUmVxdWVzdCgpOwotCi0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChMb2FkYWJsZVNjcmlwdCYp
IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBTdHJpbmcgc291cmNlQXR0cmlidXRlVmFsdWUoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgY2hhcnNldEF0dHJpYnV0ZVZhbHVlKCkgY29u
c3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcAppbmRleCA5ZDdlZDNmYzVlNmJk
MjQ2MGYzN2QyZjZhZGI1YjkyMzAxOTU0NmU4Li42NTNlNDBmMGRlMTc1OGMxYmUzZTAyNDE0NGFh
ZWM1NGY5Y2YzODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcApAQCAtNDAsMTIg
KzQwLDIwIEBAIFNjcmlwdFJ1bm5lcjo6U2NyaXB0UnVubmVyKERvY3VtZW50JiBkb2N1bWVudCkK
IAogU2NyaXB0UnVubmVyOjp+U2NyaXB0UnVubmVyKCkKIHsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fc2NyaXB0c1RvRXhlY3V0ZVNvb24uc2l6ZSgpOyArK2kpCisgICAgZm9yIChhdXRv
JiBwZW5kaW5nU2NyaXB0IDogbV9zY3JpcHRzVG9FeGVjdXRlU29vbikgeworICAgICAgICBVTlVT
RURfUEFSQU0ocGVuZGluZ1NjcmlwdCk7CiAgICAgICAgIG1fZG9jdW1lbnQuZGVjcmVtZW50TG9h
ZEV2ZW50RGVsYXlDb3VudCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zY3JpcHRz
VG9FeGVjdXRlSW5PcmRlci5zaXplKCk7ICsraSkKKyAgICB9CisgICAgZm9yIChhdXRvJiBwZW5k
aW5nU2NyaXB0IDogbV9zY3JpcHRzVG9FeGVjdXRlSW5PcmRlcikgeworICAgICAgICBpZiAocGVu
ZGluZ1NjcmlwdC0+d2F0Y2hpbmdGb3JMb2FkKCkpCisgICAgICAgICAgICBwZW5kaW5nU2NyaXB0
LT5jbGVhckNsaWVudCgpOwogICAgICAgICBtX2RvY3VtZW50LmRlY3JlbWVudExvYWRFdmVudERl
bGF5Q291bnQoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wZW5kaW5nQXN5bmNT
Y3JpcHRzLnNpemUoKTsgKytpKQorICAgIH0KKyAgICBmb3IgKGF1dG8mIHBlbmRpbmdTY3JpcHQg
OiBtX3BlbmRpbmdBc3luY1NjcmlwdHMpIHsKKyAgICAgICAgaWYgKHBlbmRpbmdTY3JpcHQtPndh
dGNoaW5nRm9yTG9hZCgpKQorICAgICAgICAgICAgY29uc3RfY2FzdDxQZW5kaW5nU2NyaXB0Jj4o
cGVuZGluZ1NjcmlwdC5nZXQoKSkuY2xlYXJDbGllbnQoKTsKICAgICAgICAgbV9kb2N1bWVudC5k
ZWNyZW1lbnRMb2FkRXZlbnREZWxheUNvdW50KCk7CisgICAgfQogfQogCiB2b2lkIFNjcmlwdFJ1
bm5lcjo6cXVldWVTY3JpcHRGb3JFeGVjdXRpb24oU2NyaXB0RWxlbWVudCogc2NyaXB0RWxlbWVu
dCwgTG9hZGFibGVTY3JpcHQmIGxvYWRhYmxlU2NyaXB0LCBFeGVjdXRpb25UeXBlIGV4ZWN1dGlv
blR5cGUpCkBAIC01NywxNSArNjUsMTcgQEAgdm9pZCBTY3JpcHRSdW5uZXI6OnF1ZXVlU2NyaXB0
Rm9yRXhlY3V0aW9uKFNjcmlwdEVsZW1lbnQqIHNjcmlwdEVsZW1lbnQsIExvYWRhYmwKIAogICAg
IG1fZG9jdW1lbnQuaW5jcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogCisgICAgUmVmPFBl
bmRpbmdTY3JpcHQ+IHBlbmRpbmdTY3JpcHQgPSBQZW5kaW5nU2NyaXB0OjpjcmVhdGUoZWxlbWVu
dCwgbG9hZGFibGVTY3JpcHQpOwogICAgIHN3aXRjaCAoZXhlY3V0aW9uVHlwZSkgewogICAgIGNh
c2UgQVNZTkNfRVhFQ1VUSU9OOgotICAgICAgICBtX3BlbmRpbmdBc3luY1NjcmlwdHMuYWRkKHNj
cmlwdEVsZW1lbnQsIFBlbmRpbmdTY3JpcHQ6OmNyZWF0ZShlbGVtZW50LCBsb2FkYWJsZVNjcmlw
dCkpOworICAgICAgICBtX3BlbmRpbmdBc3luY1NjcmlwdHMuYWRkKHBlbmRpbmdTY3JpcHQuY29w
eVJlZigpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIElOX09SREVSX0VYRUNVVElPTjoK
LSAgICAgICAgbV9zY3JpcHRzVG9FeGVjdXRlSW5PcmRlci5hcHBlbmQoUGVuZGluZ1NjcmlwdDo6
Y3JlYXRlKGVsZW1lbnQsIGxvYWRhYmxlU2NyaXB0KSk7CisgICAgICAgIG1fc2NyaXB0c1RvRXhl
Y3V0ZUluT3JkZXIuYXBwZW5kKHBlbmRpbmdTY3JpcHQuY29weVJlZigpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQorICAgIHBlbmRpbmdTY3JpcHQtPnNldENsaWVudCh0aGlzKTsKIH0KIAogdm9p
ZCBTY3JpcHRSdW5uZXI6OnN1c3BlbmQoKQpAQCAtNzksMTggKzg5LDE3IEBAIHZvaWQgU2NyaXB0
UnVubmVyOjpyZXN1bWUoKQogICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAot
dm9pZCBTY3JpcHRSdW5uZXI6Om5vdGlmeVNjcmlwdFJlYWR5KFNjcmlwdEVsZW1lbnQqIHNjcmlw
dEVsZW1lbnQsIEV4ZWN1dGlvblR5cGUgZXhlY3V0aW9uVHlwZSkKK3ZvaWQgU2NyaXB0UnVubmVy
Ojpub3RpZnlGaW5pc2hlZChQZW5kaW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0KQogewotICAgIHN3
aXRjaCAoZXhlY3V0aW9uVHlwZSkgewotICAgIGNhc2UgQVNZTkNfRVhFQ1VUSU9OOgotICAgICAg
ICBBU1NFUlQobV9wZW5kaW5nQXN5bmNTY3JpcHRzLmNvbnRhaW5zKHNjcmlwdEVsZW1lbnQpKTsK
LSAgICAgICAgbV9zY3JpcHRzVG9FeGVjdXRlU29vbi5hcHBlbmQobV9wZW5kaW5nQXN5bmNTY3Jp
cHRzLnRha2Uoc2NyaXB0RWxlbWVudCktPnB0cigpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBj
YXNlIElOX09SREVSX0VYRUNVVElPTjoKKyAgICBhdXRvKiBzY3JpcHRFbGVtZW50ID0gdG9TY3Jp
cHRFbGVtZW50SWZQb3NzaWJsZSgmcGVuZGluZ1NjcmlwdC5lbGVtZW50KCkpOworICAgIEFTU0VS
VChzY3JpcHRFbGVtZW50KTsKKyAgICBpZiAoc2NyaXB0RWxlbWVudC0+d2lsbEV4ZWN1dGVJbk9y
ZGVyKCkpCiAgICAgICAgIEFTU0VSVCghbV9zY3JpcHRzVG9FeGVjdXRlSW5PcmRlci5pc0VtcHR5
KCkpOwotICAgICAgICBicmVhazsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fcGVuZGlu
Z0FzeW5jU2NyaXB0cy5jb250YWlucyhwZW5kaW5nU2NyaXB0KSk7CisgICAgICAgIG1fc2NyaXB0
c1RvRXhlY3V0ZVNvb24uYXBwZW5kKG1fcGVuZGluZ0FzeW5jU2NyaXB0cy50YWtlKHBlbmRpbmdT
Y3JpcHQpLT5wdHIoKSk7CiAgICAgfQorICAgIHBlbmRpbmdTY3JpcHQuY2xlYXJDbGllbnQoKTsK
ICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIApAQCAtMTE2LDcgKzEyNSw3IEBAIHZv
aWQgU2NyaXB0UnVubmVyOjp0aW1lckZpcmVkKCkKICAgICAgICAgYXV0byogc2NyaXB0RWxlbWVu
dCA9IHRvU2NyaXB0RWxlbWVudElmUG9zc2libGUoJnNjcmlwdC0+ZWxlbWVudCgpKTsKICAgICAg
ICAgQVNTRVJUKHNjcmlwdEVsZW1lbnQpOwogICAgICAgICBBU1NFUlQoc2NyaXB0LT5uZWVkc0xv
YWRpbmcoKSk7Ci0gICAgICAgIHNjcmlwdEVsZW1lbnQtPmV4ZWN1dGVTY3JpcHRGb3JTY3JpcHRS
dW5uZXIoKnNjcmlwdC0+bG9hZGFibGVTY3JpcHQoKSk7CisgICAgICAgIHNjcmlwdEVsZW1lbnQt
PmV4ZWN1dGVTY3JpcHRGb3JTY3JpcHRSdW5uZXIoKnNjcmlwdCk7CiAgICAgICAgIG1fZG9jdW1l
bnQuZGVjcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRSdW5uZXIuaAppbmRleCBlZWUxYTI2M2E5Mzk5ZGQwMzgwMjZjMDA2NmNhYjM4ZjZiM2Qz
NTc3Li5kZmNmM2M1ZmE5MGU0YTQ1MDk0MDQyZDg3N2RlM2JjZTQ0ODAwZDlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdFJ1bm5lci5oCkBAIC0yNSw4ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiUGVuZGluZ1NjcmlwdENsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMzcsNyAr
MzgsNyBAQCBjbGFzcyBQZW5kaW5nU2NyaXB0OwogY2xhc3MgU2NyaXB0RWxlbWVudDsKIGNsYXNz
IExvYWRhYmxlU2NyaXB0OwogCi1jbGFzcyBTY3JpcHRSdW5uZXIgeworY2xhc3MgU2NyaXB0UnVu
bmVyIDogcHJpdmF0ZSBQZW5kaW5nU2NyaXB0Q2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShTY3JpcHRSdW5uZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBTY3JpcHRSdW5uZXIoRG9jdW1lbnQmKTsKQEAgLTUzLDEwICs1NCwxMiBAQCBj
bGFzcyBTY3JpcHRSdW5uZXIgewogcHJpdmF0ZToKICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKIAor
ICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoUGVuZGluZ1NjcmlwdCYpIG92ZXJyaWRlOworCiAgICAg
RG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiAgICAgVmVjdG9yPFJlZjxQZW5kaW5nU2NyaXB0Pj4gbV9z
Y3JpcHRzVG9FeGVjdXRlSW5PcmRlcjsKICAgICBWZWN0b3I8UmVmUHRyPFBlbmRpbmdTY3JpcHQ+
PiBtX3NjcmlwdHNUb0V4ZWN1dGVTb29uOyAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mv
d2ViLWFwcHMvY3VycmVudC13b3JrLyNzZXQtb2Ytc2NyaXB0cy10aGF0LXdpbGwtZXhlY3V0ZS1h
cy1zb29uLWFzLXBvc3NpYmxlCi0gICAgSGFzaE1hcDxTY3JpcHRFbGVtZW50KiwgUmVmPFBlbmRp
bmdTY3JpcHQ+PiBtX3BlbmRpbmdBc3luY1NjcmlwdHM7CisgICAgSGFzaFNldDxSZWY8UGVuZGlu
Z1NjcmlwdD4+IG1fcGVuZGluZ0FzeW5jU2NyaXB0czsKICAgICBUaW1lciBtX3RpbWVyOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcApp
bmRleCAzMzFjMjc5ODkzYTRmMDhiMWIyZTg1ZDI1Y2NlYzcyODI3OTFkZDc1Li42YjE3NmYxM2Zj
MGM1NDM1YmVhMGY4NTAzN2ZiZTg0ZmI1NDIyZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQg
SFRNTFNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBlbmRpbmdTY3JpcHRBbmREaXNwYXRjaEV2ZW50KFJl
ZlB0cjxQZW5kaW5nU2NyaXB0CiAKICAgICBpZiAoYXV0byogc2NyaXB0RWxlbWVudCA9IHRvU2Ny
aXB0RWxlbWVudElmUG9zc2libGUoJnBlbmRpbmdTY3JpcHQtPmVsZW1lbnQoKSkpIHsKICAgICAg
ICAgTmVzdGluZ0xldmVsSW5jcmVtZW50ZXIgbmVzdGluZ0xldmVsSW5jcmVtZW50ZXIobV9zY3Jp
cHROZXN0aW5nTGV2ZWwpOwotICAgICAgICBzY3JpcHRFbGVtZW50LT5leGVjdXRlU2NyaXB0Rm9y
SFRNTFNjcmlwdFJ1bm5lcigqcGVuZGluZ1NjcmlwdCk7CisgICAgICAgIHNjcmlwdEVsZW1lbnQt
PmV4ZWN1dGVTY3JpcHRGb3JTY3JpcHRSdW5uZXIoKnBlbmRpbmdTY3JpcHQpOwogICAgIH0KICAg
ICBBU1NFUlQoIWlzRXhlY3V0aW5nU2NyaXB0KCkpOwogfQo=
</data>
<flag name="review"
          id="311624"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>