<?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>160871</bug_id>
          
          <creation_ts>2016-08-15 15:39:10 -0700</creation_ts>
          <short_desc>Cleanup WK2 platform gamepad handling</short_desc>
          <delta_ts>2016-08-16 14:46:06 -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>WebKit2</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>
          
          <blocked>134076</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1220187</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-15 15:39:10 -0700</bug_when>
    <thetext>Cleanup WK2 platform gamepad handling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220194</commentid>
    <comment_count>1</comment_count>
      <attachid>286103</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-15 15:45:52 -0700</bug_when>
    <thetext>Created attachment 286103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220342</commentid>
    <comment_count>2</comment_count>
      <attachid>286103</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-15 21:01:24 -0700</bug_when>
    <thetext>Comment on attachment 286103
Patch

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

&gt; Source/WebCore/platform/gamepad/GamepadProviderClient.h:40
&gt; +    virtual void setInitialConnectedGamepads(const Vector&lt;PlatformGamepad*&gt;&amp;) { }

I don&apos;t understand the lifetime of these PlatformGamepads.  Where do they come from?  How do we know they will still be alive as long as we have pointers to them?

&gt; Source/WebKit2/UIProcess/Gamepad/UIGamepadProvider.h:87
&gt; +    bool m_hasInitialGamepads { false };

This is only used in an assertion.  Could be compiled out.  Probably nbd

&gt; Source/WebKit2/WebProcess/WebProcess.cpp:1036
&gt; +void WebProcess::setInitialGamepads(const Vector&lt;WebKit::GamepadData&gt;&amp; gamepadDatas)

data is already plural</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220343</commentid>
    <comment_count>3</comment_count>
      <attachid>286103</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-15 21:01:40 -0700</bug_when>
    <thetext>Comment on attachment 286103
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests (No currently testable change in behavior).

:(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220441</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-16 08:30:25 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 286103 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=286103&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/gamepad/GamepadProviderClient.h:40
&gt; &gt; +    virtual void setInitialConnectedGamepads(const Vector&lt;PlatformGamepad*&gt;&amp;) { }
&gt; 
&gt; I don&apos;t understand the lifetime of these PlatformGamepads.  Where do they
&gt; come from?  How do we know they will still be alive as long as we have
&gt; pointers to them?

The platform GamepadProvider owns them. They are valid until you get a &quot;platformGamepadDisconnected&quot; message.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Gamepad/UIGamepadProvider.h:87
&gt; &gt; +    bool m_hasInitialGamepads { false };
&gt; 
&gt; This is only used in an assertion.  Could be compiled out.  Probably nbd

I&apos;d like to leave it for now, as there are grander plans for it going forward - Though I will remain cognizant of whether or not it is assertion-only.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebProcess.cpp:1036
&gt; &gt; +void WebProcess::setInitialGamepads(const Vector&lt;WebKit::GamepadData&gt;&amp; gamepadDatas)
&gt; 
&gt; data is already plural

Do you have a naming suggestion for a &quot;vector of GamepadData&quot; that is not &quot;gamepadDatas&quot; but also not &quot;gamepadDataVector&quot;? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220442</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-16 08:30:49 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 286103 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=286103&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        No new tests (No currently testable change in behavior).
&gt; 
&gt; :(

As you know, I have grand plans for next week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220457</commentid>
    <comment_count>6</comment_count>
      <attachid>286103</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-16 09:29:24 -0700</bug_when>
    <thetext>Comment on attachment 286103
Patch

Clearing flags on attachment: 286103

Committed r204506: &lt;http://trac.webkit.org/changeset/204506&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220458</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-16 09:29:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220464</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-16 09:53:25 -0700</bug_when>
    <thetext>/Volumes/Data/cdumez/WebKit/OpenSource/Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.cpp:105:77: error: null passed to a callee that requires a non-null argument [-Werror,-Wnonnull]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220469</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-16 09:58:54 -0700</bug_when>
    <thetext>Reverted r204506 for reason:

Broke the build

Committed r204509: &lt;http://trac.webkit.org/changeset/204509&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220479</commentid>
    <comment_count>10</comment_count>
      <attachid>286103</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-16 10:20:46 -0700</bug_when>
    <thetext>Comment on attachment 286103
Patch

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

&gt; Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.cpp:105
&gt; +    IOHIDManagerRegisterInputValueCallback(m_manager.get(), nullptr, nullptr);

It looks like the second parameter of this cannot be null :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220515</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-16 11:58:59 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 286103 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=286103&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.cpp:105
&gt; &gt; +    IOHIDManagerRegisterInputValueCallback(m_manager.get(), nullptr, nullptr);
&gt; 
&gt; It looks like the second parameter of this cannot be null :(

This is absolutely 100% incorrect.

From https://developer.apple.com/library/mac/documentation/DeviceDrivers/Conceptual/HID/new_api_10_5/tn2187.html

&quot;Note: To unregister pass NULL for the callback.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220516</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-16 11:59:10 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; /Volumes/Data/cdumez/WebKit/OpenSource/Source/WebCore/platform/gamepad/mac/
&gt; HIDGamepadProvider.cpp:105:77: error: null passed to a callee that requires
&gt; a non-null argument [-Werror,-Wnonnull]

Where did you see this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220517</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-16 12:02:05 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #8)
&gt; &gt; /Volumes/Data/cdumez/WebKit/OpenSource/Source/WebCore/platform/gamepad/mac/
&gt; &gt; HIDGamepadProvider.cpp:105:77: error: null passed to a callee that requires
&gt; &gt; a non-null argument [-Werror,-Wnonnull]
&gt; 
&gt; Where did you see this?

Locally but it also showed on internal bots and I provided a link on IRC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220521</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-16 12:08:06 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; /Volumes/Data/cdumez/WebKit/OpenSource/Source/WebCore/platform/gamepad/mac/
&gt; &gt; &gt; HIDGamepadProvider.cpp:105:77: error: null passed to a callee that requires
&gt; &gt; &gt; a non-null argument [-Werror,-Wnonnull]
&gt; &gt; 
&gt; &gt; Where did you see this?
&gt; 
&gt; Locally but it also showed on internal bots and I provided a link on IRC

I was not on IRC at the time, and internal bot links are currently broken. Yay!

Anyways, a macOS regression in this API.

Working around and filing a bug on the relevant team.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220524</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-16 12:08:17 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; &gt; /Volumes/Data/cdumez/WebKit/OpenSource/Source/WebCore/platform/gamepad/mac/
&gt; &gt; &gt; &gt; HIDGamepadProvider.cpp:105:77: error: null passed to a callee that requires
&gt; &gt; &gt; &gt; a non-null argument [-Werror,-Wnonnull]
&gt; &gt; &gt; 
&gt; &gt; &gt; Where did you see this?
&gt; &gt; 
&gt; &gt; Locally but it also showed on internal bots and I provided a link on IRC
&gt; 
&gt; I was not on IRC at the time, and internal bot links are currently broken.
&gt; Yay!
&gt; 
&gt; Anyways, a macOS regression in this API.

macOS Sierra*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220566</commentid>
    <comment_count>16</comment_count>
      <attachid>286202</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-16 14:15:54 -0700</bug_when>
    <thetext>Created attachment 286202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220579</commentid>
    <comment_count>17</comment_count>
      <attachid>286202</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-16 14:46:00 -0700</bug_when>
    <thetext>Comment on attachment 286202
Patch

Clearing flags on attachment: 286202

Committed r204524: &lt;http://trac.webkit.org/changeset/204524&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220580</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-16 14:46:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286103</attachid>
            <date>2016-08-15 15:45:52 -0700</date>
            <delta_ts>2016-08-16 14:15:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160871-20160815154407.patch</filename>
            <type>text/plain</type>
            <size>19265</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NDYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTEyYmFiNjY3YTFmMmE5
ZTI2OTdmMmMzZDc0YTAyYWEwOWI5YzgwYy4uNmIyZTQ5MzZiMzM5YWJmMTRlMmI3ODQ4YWNkN2Nh
ZWM2ZTdmMTA2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTA4LTE1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbnVwIFdLMiBwbGF0
Zm9ybSBnYW1lcGFkIGhhbmRsaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYwODcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChObyBjdXJyZW50bHkgdGVzdGFibGUgY2hhbmdl
IGluIGJlaGF2aW9yKS4KKworICAgICAgICBUaGlzIHBhdGNoIGRvZXMgYSBmZXcgdGhpbmdzOgor
ICAgICAgICAxIC0gU2VwYXJhdGVzIHRoZSBjb25jZXB0cyBvZiAibW9uaXRvcmluZyBnYW1lcGFk
cyIgYW5kICJtb25pdG9yaW5nIGdhbWVwYWQgaW5wdXRzIgorICAgICAgICAyIC0gVXNlcyB0aGlz
IG5ldyBjb25jZXB0IHRvIG11Y2ggbW9yZSBjbGVhbmx5IGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3
ZSBhcmUgbm90IGN1cnJlbnRseQorICAgICAgICAgICAgbW9uaXRvcmluZyBnYW1lcGFkIGlucHV0
cyBiZWNhdXNlIGFuIGludGVyZXN0ZWQgV0tXZWJWaWV3IGlzIG5vdCBmcm9udCBhbmQgY2VudGVy
LgorICAgICAgICAzIC0gUHJlLXBvcHVsYXRlcyB0aGUgImluaXRpYWwgc2V0IG9mIGdhbWVwYWRz
IiBpbiBXZWJQcm9jZXNzZXMgdGhhdCBzdGFydCBsaXN0ZW5pbmcgZm9yIGdhbWVwYWRzLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkUHJvdmlkZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdhbWVwYWRQcm92aWRlckNsaWVudDo6c2V0SW5pdGlhbENvbm5lY3RlZEdh
bWVwYWRzKToKKworICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92
aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6OkhJREdhbWVw
YWRQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6OnN0b3BN
b25pdG9yaW5nSW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpz
dGFydE1vbml0b3JpbmdJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlk
ZXI6OmNvbm5lY3Rpb25EZWxheVRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVw
YWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oOgorCiAyMDE2LTA4LTE0ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWxpZ24gdGhlIGV2ZW50IGxpc3RlbmVyIGZp
cmluZyBjb2RlIHdpdGggdGhlIGxhdGVzdCBET00gU3BlY2lmaWNhdGlvbiBhbmQgc2ltcGxpZnkg
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA0NDc2NzBiYjg0NjBlYmI2ZDA4NWZmZTQ2OTZlMzIyNjY2ODRjNWY1
Li43NmMwNTY5NjM4M2M5ZGZhYjUyZmQ0NWM5NWVjOWMzNWU2ZjU0NzI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMTYtMDgtMTUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIENsZWFudXAgV0syIHBsYXRmb3JtIGdhbWVwYWQgaGFuZGxpbmcuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA4NzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGRvZXMgYSBmZXcgdGhpbmdzOgorICAgICAgICAxIC0gU2VwYXJhdGVzIHRoZSBjb25jZXB0cyBv
ZiAibW9uaXRvcmluZyBnYW1lcGFkcyIgYW5kICJtb25pdG9yaW5nIGdhbWVwYWQgaW5wdXRzIgor
ICAgICAgICAyIC0gVXNlcyB0aGlzIG5ldyBjb25jZXB0IHRvIG11Y2ggbW9yZSBjbGVhbmx5IGhh
bmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBhcmUgbm90IGN1cnJlbnRseQorICAgICAgICAgICAgbW9u
aXRvcmluZyBnYW1lcGFkIGlucHV0cyBiZWNhdXNlIGFuIGludGVyZXN0ZWQgV0tXZWJWaWV3IGlz
IG5vdCBmcm9udCBhbmQgY2VudGVyLgorICAgICAgICAzIC0gUHJlLXBvcHVsYXRlcyB0aGUgImlu
aXRpYWwgc2V0IG9mIGdhbWVwYWRzIiBpbiBXZWJQcm9jZXNzZXMgdGhhdCBzdGFydCBsaXN0ZW5p
bmcgZm9yIGdhbWVwYWRzLgorICAgICAgICAKKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6
CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OmdhbWVwYWRTeW5jVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFs
Q29ubmVjdGVkR2FtZXBhZHMpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6
cHJvY2Vzc1Bvb2xTdG9wcGVkVXNpbmdHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6OlVJR2Ft
ZXBhZFByb3ZpZGVyOjp2aWV3QmVjYW1lQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1l
cGFkUHJvdmlkZXI6OnZpZXdCZWNhbWVJbmFjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OlVJR2Ft
ZXBhZFByb3ZpZGVyOjpzdG9wTW9uaXRvcmluZ0dhbWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6
VUlHYW1lcGFkUHJvdmlkZXI6OnNuYXBzaG90R2FtZXBhZHMpOgorICAgICAgICAoV2ViS2l0OjpV
SUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmluZ0lucHV0KToKKyAgICAgICAg
KFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RhcnRNb25pdG9yaW5nSW5wdXQp
OgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6VUlHYW1lcGFkUHJvdmlkZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6c2NoZWR1bGVE
aXNhYmxlR2FtZXBhZE1vbml0b3JpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpVSUdh
bWVwYWRQcm92aWRlcjo6ZGlzYWJsZU1vbml0b3JpbmdUaW1lckZpcmVkKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5oOgorICAgICAgICAK
KyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRv
cmluZ0lucHV0KToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3Jt
U3RhcnRNb25pdG9yaW5nSW5wdXQpOgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0SW5p
dGlhbENvbm5lY3RlZEdhbWVwYWRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaDoKKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQ
cm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6c2V0SW5p
dGlhbEdhbWVwYWRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFBy
b3ZpZGVyLmg6CisgICAgICAgIAorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldEluaXRpYWxHYW1lcGFkcyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE2LTA4LTE0ICBEYW4gQmVybnN0ZWluICA8bWl0ekBh
cHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBSZW1vdmUgZGVwcmVjYXRlZCBfV0tGb3JtRGVs
ZWdhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBh
ZFByb3ZpZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVw
YWRQcm92aWRlckNsaWVudC5oCmluZGV4IDFlYTEwMmE1ZWFkN2M1NDVjZjg5MTNjYjE4MGQ4MGVh
OWNkYTc1YjUuLjAxYTJjZWNlYTU1YmY1N2ZmZDhkZDE5MjI2ZjZmNTg1YTUwYjg3ODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZFByb3ZpZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkUHJvdmlk
ZXJDbGllbnQuaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAKKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGxh
dGZvcm1HYW1lcGFkOwpAQCAtMzUsNiArMzcsNyBAQCBjbGFzcyBHYW1lcGFkUHJvdmlkZXJDbGll
bnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkdhbWVwYWRQcm92aWRlckNsaWVudCgpIHsgfQog
CisgICAgdmlydHVhbCB2b2lkIHNldEluaXRpYWxDb25uZWN0ZWRHYW1lcGFkcyhjb25zdCBWZWN0
b3I8UGxhdGZvcm1HYW1lcGFkKj4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1HYW1l
cGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGxh
dGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgcGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSgpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlk
ZXIuY3BwCmluZGV4IGM1YTQzNWY5ZTA5MDlkYTI4NzVkYTMyNWY0ZWJiMTNiYTQ1ZTY1NTcuLjZk
MTBkMWVhNjdmMzA0YjZkZDA3ZDE4NzkyMWM1NmU3ZDcyYjBmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVy
LmNwcApAQCAtOTYsNiArOTYsMTcgQEAgSElER2FtZXBhZFByb3ZpZGVyOjpISURHYW1lcGFkUHJv
dmlkZXIoKQogICAgIElPSElETWFuYWdlclNldERldmljZU1hdGNoaW5nTXVsdGlwbGUobV9tYW5h
Z2VyLmdldCgpLCBtYXRjaGluZ0FycmF5LmdldCgpKTsKICAgICBJT0hJRE1hbmFnZXJSZWdpc3Rl
ckRldmljZU1hdGNoaW5nQ2FsbGJhY2sobV9tYW5hZ2VyLmdldCgpLCBkZXZpY2VBZGRlZENhbGxi
YWNrLCB0aGlzKTsKICAgICBJT0hJRE1hbmFnZXJSZWdpc3RlckRldmljZVJlbW92YWxDYWxsYmFj
ayhtX21hbmFnZXIuZ2V0KCksIGRldmljZVJlbW92ZWRDYWxsYmFjaywgdGhpcyk7CisKKyAgICBz
dGFydE1vbml0b3JpbmdJbnB1dCgpOworfQorCit2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6c3Rv
cE1vbml0b3JpbmdJbnB1dCgpCit7CisgICAgSU9ISURNYW5hZ2VyUmVnaXN0ZXJJbnB1dFZhbHVl
Q2FsbGJhY2sobV9tYW5hZ2VyLmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKK30KKwordm9pZCBI
SURHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9uaXRvcmluZ0lucHV0KCkKK3sKICAgICBJT0hJRE1h
bmFnZXJSZWdpc3RlcklucHV0VmFsdWVDYWxsYmFjayhtX21hbmFnZXIuZ2V0KCksIGRldmljZVZh
bHVlc0NoYW5nZWRDYWxsYmFjaywgdGhpcyk7CiB9CiAKQEAgLTExMSw2ICsxMjIsOSBAQCB1bnNp
Z25lZCBISURHYW1lcGFkUHJvdmlkZXI6OmluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKQog
dm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmNvbm5lY3Rpb25EZWxheVRpbWVyRmlyZWQoKQogewog
ICAgIG1fc2hvdWxkRGlzcGF0Y2hDYWxsYmFja3MgPSB0cnVlOworCisgICAgZm9yIChhdXRvKiBj
bGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+c2V0SW5pdGlhbENvbm5lY3RlZEdh
bWVwYWRzKG1fZ2FtZXBhZFZlY3Rvcik7CiB9CiAKIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpv
cGVuQW5kU2NoZWR1bGVNYW5hZ2VyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKaW5kZXggZjY2MTU0ZmMwNWI4
ZjcyYjhhYWU3Yzg0OGY0YmIzMGYyYzg5N2RkMC4uMTY3YWVmNTNkYmI5NmYyMjUyY2U4MGJjZGRh
MjYzMDcwNWEzZmVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmgKQEAgLTUxLDYgKzUxLDkgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE1vbml0b3JpbmdHYW1lcGFkcyhHYW1lcGFk
UHJvdmlkZXJDbGllbnQmKSBmaW5hbDsKICAgICBjb25zdCBWZWN0b3I8UGxhdGZvcm1HYW1lcGFk
Kj4mIHBsYXRmb3JtR2FtZXBhZHMoKSBmaW5hbCB7IHJldHVybiBtX2dhbWVwYWRWZWN0b3I7IH0K
IAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE1vbml0b3JpbmdJbnB1dCgpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRNb25pdG9yaW5nSW5wdXQoKTsKKyAgICAKICAgICB2b2lk
IGRldmljZUFkZGVkKElPSElERGV2aWNlUmVmKTsKICAgICB2b2lkIGRldmljZVJlbW92ZWQoSU9I
SUREZXZpY2VSZWYpOwogICAgIHZvaWQgdmFsdWVzQ2hhbmdlZChJT0hJRFZhbHVlUmVmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCA1ZDhlYWQwMDA5ZmEwNzYwMDI1Nzk5NGUzNDFk
OGFhYjJjYWNhOTE3Li4zMzgyNDVkMjc4YzI5ZDg5ODkxNDg3OWNmYWQ5NzI4YTRiNjc5MWY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC00Myw2ICs0Myw3IEBAIGV4dGVybiAiQyIg
ewogCiAjZGVmaW5lIFdFQktJVDJfTE9HX0NIQU5ORUxTKE0pIFwKICAgICBNKENvbnRleHRNZW51
KSBcCisgICAgTShHYW1lcGFkKSBcCiAgICAgTShJREIpIFwKICAgICBNKEljb25EYXRhYmFzZSkg
XAogICAgIE0oSW5kZXhlZERCKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggNzUwZWFlZmE2MTA3ODg3NTVm
MDFmZWM0NzM5YzZiNzA2ODdkYTllNi4uMjA0NmJmOTA3MzkzMWVlM2I4ZmYzNGRkYzI5NDM0M2Ez
OTExMDU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvVUlH
YW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFk
L1VJR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtNDgsNyArNDgsNiBAQCBVSUdhbWVwYWRQcm92aWRl
ciYgVUlHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpCiAKIFVJR2FtZXBhZFByb3ZpZGVyOjpV
SUdhbWVwYWRQcm92aWRlcigpCiAgICAgOiBtX2dhbWVwYWRTeW5jVGltZXIoUnVuTG9vcDo6bWFp
bigpLCB0aGlzLCAmVUlHYW1lcGFkUHJvdmlkZXI6OmdhbWVwYWRTeW5jVGltZXJGaXJlZCkKLSAg
ICAsIG1fZGlzYWJsZU1vbml0b3JpbmdUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZVSUdh
bWVwYWRQcm92aWRlcjo6ZGlzYWJsZU1vbml0b3JpbmdUaW1lckZpcmVkKQogewogfQogCkBAIC02
NCwxNyArNjMsNyBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkU3luY1RpbWVyRmly
ZWQoKQogICAgIGlmICghd2ViUGFnZVByb3h5IHx8ICFtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBh
ZHMuY29udGFpbnMoJndlYlBhZ2VQcm94eS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8R2FtZXBhZERhdGE+IGdhbWVwYWREYXRhczsKLSAg
ICBnYW1lcGFkRGF0YXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2dhbWVwYWRzLnNpemUoKSk7
Ci0KLSAgICBmb3IgKGF1dG8mIGdhbWVwYWQgOiBtX2dhbWVwYWRzKSB7Ci0gICAgICAgIGlmIChn
YW1lcGFkKQotICAgICAgICAgICAgZ2FtZXBhZERhdGFzLnVuY2hlY2tlZEFwcGVuZChnYW1lcGFk
LT5nYW1lcGFkRGF0YSgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZ2FtZXBhZERhdGFz
LnVuY2hlY2tlZEFwcGVuZCh7IH0pOwotICAgIH0KLQotICAgIHdlYlBhZ2VQcm94eS0+Z2FtZXBh
ZEFjdGl2aXR5KGdhbWVwYWREYXRhcyk7CisgICAgd2ViUGFnZVByb3h5LT5nYW1lcGFkQWN0aXZp
dHkoc25hcHNob3RHYW1lcGFkcygpKTsKIH0KIAogdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6c2No
ZWR1bGVHYW1lcGFkU3RhdGVTeW5jKCkKQEAgLTkwLDYgKzc5LDI0IEBAIHZvaWQgVUlHYW1lcGFk
UHJvdmlkZXI6OnNjaGVkdWxlR2FtZXBhZFN0YXRlU3luYygpCiAgICAgbV9nYW1lcGFkU3luY1Rp
bWVyLnN0YXJ0T25lU2hvdChtYXhpbXVtR2FtZXBhZFVwZGF0ZUludGVydmFsKTsKIH0KIAordm9p
ZCBVSUdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbENvbm5lY3RlZEdhbWVwYWRzKGNvbnN0IFZl
Y3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiYgaW5pdGlhbEdhbWVwYWRzKQoreworICAgIEFTU0VSVCgh
bV9oYXNJbml0aWFsR2FtZXBhZHMpOworCisgICAgbV9nYW1lcGFkcy5yZXNpemUoaW5pdGlhbEdh
bWVwYWRzLnNpemUoKSk7CisKKyAgICBmb3IgKGF1dG8qIGdhbWVwYWQgOiBpbml0aWFsR2FtZXBh
ZHMpIHsKKyAgICAgICAgaWYgKCFnYW1lcGFkKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC0+aW5kZXgoKV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFVJR2Ft
ZXBhZD4oKmdhbWVwYWQpOworICAgIH0KKworICAgIGZvciAoYXV0byYgcG9vbCA6IG1fcHJvY2Vz
c1Bvb2xzVXNpbmdHYW1lcGFkcykKKyAgICAgICAgcG9vbC0+c2V0SW5pdGlhbENvbm5lY3RlZEdh
bWVwYWRzKG1fZ2FtZXBhZHMpOworCisgICAgbV9oYXNJbml0aWFsR2FtZXBhZHMgPSB0cnVlOwor
fQorCiB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoUGxh
dGZvcm1HYW1lcGFkJiBnYW1lcGFkKQogewogICAgIGlmIChtX2dhbWVwYWRzLnNpemUoKSA8PSBn
YW1lcGFkLmluZGV4KCkpCkBAIC0xNTIsNyArMTU5LDcgQEAgdm9pZCBVSUdhbWVwYWRQcm92aWRl
cjo6cHJvY2Vzc1Bvb2xTdG9wcGVkVXNpbmdHYW1lcGFkcyhXZWJQcm9jZXNzUG9vbCYgcG9vbCkK
ICAgICBtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMucmVtb3ZlKCZwb29sKTsKIAogICAgIGlm
IChtX2lzTW9uaXRvcmluZ0dhbWVwYWRzICYmICFwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVw
YWRJbnB1dCgpKQotICAgICAgICBzY2hlZHVsZURpc2FibGVHYW1lcGFkTW9uaXRvcmluZygpOwor
ICAgICAgICBwbGF0Zm9ybVN0b3BNb25pdG9yaW5nSW5wdXQoKTsKIAogICAgIHNjaGVkdWxlR2Ft
ZXBhZFN0YXRlU3luYygpOwogfQpAQCAtMTYyLDI2ICsxNjksMTggQEAgdm9pZCBVSUdhbWVwYWRQ
cm92aWRlcjo6dmlld0JlY2FtZUFjdGl2ZShXZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAgaWYgKCFt
X3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMuY29udGFpbnMoJnBhZ2UucHJvY2VzcygpLnByb2Nl
c3NQb29sKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Rpc2FibGVNb25pdG9yaW5nVGlt
ZXIuc3RvcCgpOwotICAgIHN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKCk7CisgICAgaWYgKCFtX2lz
TW9uaXRvcmluZ0dhbWVwYWRzKQorICAgICAgICBzdGFydE1vbml0b3JpbmdHYW1lcGFkcygpOwor
CisgICAgaWYgKHBsYXRmb3JtV2ViUGFnZVByb3h5Rm9yR2FtZXBhZElucHV0KCkpCisgICAgICAg
IHBsYXRmb3JtU3RhcnRNb25pdG9yaW5nSW5wdXQoKTsKIH0KIAogdm9pZCBVSUdhbWVwYWRQcm92
aWRlcjo6dmlld0JlY2FtZUluYWN0aXZlKFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKICAgICBhdXRv
IHBhZ2VGb3JHYW1lcGFkSW5wdXQgPSBwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVwYWRJbnB1
dCgpOwogICAgIGlmIChwYWdlRm9yR2FtZXBhZElucHV0ID09ICZwYWdlKQotICAgICAgICBzY2hl
ZHVsZURpc2FibGVHYW1lcGFkTW9uaXRvcmluZygpOwotfQotCi12b2lkIFVJR2FtZXBhZFByb3Zp
ZGVyOjpzY2hlZHVsZURpc2FibGVHYW1lcGFkTW9uaXRvcmluZygpCi17Ci0gICAgaWYgKCFtX2Rp
c2FibGVNb25pdG9yaW5nVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9kaXNhYmxlTW9uaXRv
cmluZ1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6
ZGlzYWJsZU1vbml0b3JpbmdUaW1lckZpcmVkKCkKLXsKLSAgICBzdG9wTW9uaXRvcmluZ0dhbWVw
YWRzKCk7CisgICAgICAgIHBsYXRmb3JtU3RvcE1vbml0b3JpbmdJbnB1dCgpOwogfQogCiB2b2lk
IFVJR2FtZXBhZFByb3ZpZGVyOjpzdGFydE1vbml0b3JpbmdHYW1lcGFkcygpCkBAIC0yMDAsNiAr
MTk5LDIyIEBAIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnN0b3BNb25pdG9yaW5nR2FtZXBhZHMo
KQogCiAgICAgbV9pc01vbml0b3JpbmdHYW1lcGFkcyA9IGZhbHNlOwogICAgIHBsYXRmb3JtU3Rv
cE1vbml0b3JpbmdHYW1lcGFkcygpOworICAgIG1fZ2FtZXBhZHMuY2xlYXIoKTsKK30KKworVmVj
dG9yPEdhbWVwYWREYXRhPiBVSUdhbWVwYWRQcm92aWRlcjo6c25hcHNob3RHYW1lcGFkcygpCit7
CisgICAgVmVjdG9yPEdhbWVwYWREYXRhPiBnYW1lcGFkRGF0YXM7CisgICAgZ2FtZXBhZERhdGFz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9nYW1lcGFkcy5zaXplKCkpOworCisgICAgZm9yIChh
dXRvJiBnYW1lcGFkIDogbV9nYW1lcGFkcykgeworICAgICAgICBpZiAoZ2FtZXBhZCkKKyAgICAg
ICAgICAgIGdhbWVwYWREYXRhcy51bmNoZWNrZWRBcHBlbmQoZ2FtZXBhZC0+Z2FtZXBhZERhdGEo
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdhbWVwYWREYXRhcy51bmNoZWNrZWRBcHBl
bmQoeyB9KTsKKyAgICB9CisKKyAgICByZXR1cm4gZ2FtZXBhZERhdGFzOwogfQogCiAjaWYgIVBM
QVRGT1JNKE1BQykKQEAgLTIyNyw2ICsyNDIsMTQgQEAgV2ViUHJvY2Vzc1Byb3h5KiBVSUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1XZWJQcm9jZXNzUHJveHlGb3JHYW1lcGFkSW5wdXQoKQogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIG90aGVyIHBsYXRmb3JtcwogfQogCit2b2lkIFVJR2Ft
ZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0b3BNb25pdG9yaW5nSW5wdXQoKQoreworfQorCit2b2lk
IFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0YXJ0TW9uaXRvcmluZ0lucHV0KCkKK3sKK30K
KwogI2VuZGlmIC8vICFQTEFURk9STShNQUMpCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5oCmluZGV4IDcwZGM4NDJmYzM3
ZTIxOTAxNDY1YWZhY2VhMDQ4NDQ1OTVkNTU1YjUuLjQyY2E0MjEzNjljYzk4MzBhMzg5MGI0ODli
YTBmYmUzODI0ZDRjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1l
cGFkL1VJR2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dh
bWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuaApAQCAtNjQsNyArNjQsMTAgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHBsYXRmb3JtU3RvcE1vbml0b3JpbmdHYW1lcGFkcygpOwogICAgIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpQbGF0Zm9ybUdhbWVwYWQqPiYgcGxhdGZvcm1HYW1lcGFkcygpOwogICAgIFdl
YlBhZ2VQcm94eSogcGxhdGZvcm1XZWJQYWdlUHJveHlGb3JHYW1lcGFkSW5wdXQoKTsKKyAgICB2
b2lkIHBsYXRmb3JtU3RvcE1vbml0b3JpbmdJbnB1dCgpOworICAgIHZvaWQgcGxhdGZvcm1TdGFy
dE1vbml0b3JpbmdJbnB1dCgpOwogCisgICAgdm9pZCBzZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBh
ZHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZCo+JikgZmluYWw7CiAgICAg
dm9pZCBwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoV2ViQ29yZTo6UGxhdGZvcm1HYW1lcGFkJikg
ZmluYWw7CiAgICAgdm9pZCBwbGF0Zm9ybUdhbWVwYWREaXNjb25uZWN0ZWQoV2ViQ29yZTo6UGxh
dGZvcm1HYW1lcGFkJikgZmluYWw7CiAgICAgdm9pZCBwbGF0Zm9ybUdhbWVwYWRJbnB1dEFjdGl2
aXR5KCkgZmluYWw7CkBAIC03MiwxNyArNzUsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjaGVk
dWxlR2FtZXBhZFN0YXRlU3luYygpOwogICAgIHZvaWQgZ2FtZXBhZFN5bmNUaW1lckZpcmVkKCk7
CiAKLSAgICB2b2lkIHNjaGVkdWxlRGlzYWJsZUdhbWVwYWRNb25pdG9yaW5nKCk7Ci0gICAgdm9p
ZCBkaXNhYmxlTW9uaXRvcmluZ1RpbWVyRmlyZWQoKTsKKyAgICBWZWN0b3I8R2FtZXBhZERhdGE+
IHNuYXBzaG90R2FtZXBhZHMoKTsKIAogICAgIEhhc2hTZXQ8V2ViUHJvY2Vzc1Bvb2wqPiBtX3By
b2Nlc3NQb29sc1VzaW5nR2FtZXBhZHM7CiAKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFVJ
R2FtZXBhZD4+IG1fZ2FtZXBhZHM7CiAKICAgICBSdW5Mb29wOjpUaW1lcjxVSUdhbWVwYWRQcm92
aWRlcj4gbV9nYW1lcGFkU3luY1RpbWVyOwotICAgIFJ1bkxvb3A6OlRpbWVyPFVJR2FtZXBhZFBy
b3ZpZGVyPiBtX2Rpc2FibGVNb25pdG9yaW5nVGltZXI7CiAKICAgICBib29sIG1faXNNb25pdG9y
aW5nR2FtZXBhZHMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNJbml0aWFsR2FtZXBhZHMgeyBm
YWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dh
bWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlckhJRC5jcHAKaW5kZXggNzllYTMzY2Q0
MTQ2ZDk0ZmMyNjJkYTZlZmM1MjM3MjMyZGYzY2Y2Zi4uMWJhN2E0MTNiMGQ0MzA1NjRmZDY4MmY5
MGI0MTIzZTYzNTdhMjE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dh
bWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJISUQuY3BwCkBAIC01MSw2ICs1
MSwxNiBAQCBjb25zdCBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4mIFVJR2FtZXBhZFByb3ZpZGVy
OjpwbGF0Zm9ybUdhbWVwYWRzKCkKICAgICByZXR1cm4gSElER2FtZXBhZFByb3ZpZGVyOjpzaW5n
bGV0b24oKS5wbGF0Zm9ybUdhbWVwYWRzKCk7CiB9CiAKK3ZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtU3RvcE1vbml0b3JpbmdJbnB1dCgpCit7CisgICAgcmV0dXJuIEhJREdhbWVwYWRQ
cm92aWRlcjo6c2luZ2xldG9uKCkuc3RvcE1vbml0b3JpbmdJbnB1dCgpOworfQorCit2b2lkIFVJ
R2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0YXJ0TW9uaXRvcmluZ0lucHV0KCkKK3sKKyAgICBy
ZXR1cm4gSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdGFydE1vbml0b3JpbmdJbnB1
dCgpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGQ3NTFlMTI5MzM5MGIxMDg4M2M2
MzgwZDU5MmU1ZjRhMzVlM2IxMjIuLmFlYWFmNGIwMmZiYjIzZDM0ODBlNDFlMmUyZjYzYTcwMjU0
Y2NhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApA
QCAtMTI4Niw2ICsxMjg2LDIwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdhbWVwYWREaXNjb25u
ZWN0ZWQoY29uc3QgVUlHYW1lcGFkJiBnYW1lcGFkKQogICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpHYW1lcGFkRGlzY29ubmVjdGVkKGdhbWVwYWQuaW5kZXgoKSks
IDApOwogfQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBh
ZHMoY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxVSUdhbWVwYWQ+PiYgZ2FtZXBhZHMpCit7
CisgICAgVmVjdG9yPEdhbWVwYWREYXRhPiBnYW1lcGFkRGF0YXM7CisgICAgZ2FtZXBhZERhdGFz
LnJlc2l6ZShnYW1lcGFkcy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ2Ft
ZXBhZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFnYW1lcGFkc1tpXSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBnYW1lcGFkRGF0YXNbaV0gPSBnYW1lcGFkc1tpXS0+Z2Ft
ZXBhZERhdGEoKTsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3Nl
c1VzaW5nR2FtZXBhZHMpCisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OlNldEluaXRpYWxHYW1lcGFkcyhnYW1lcGFkRGF0YXMpLCAwKTsKK30KKwogI2VuZGlmIC8v
IEVOQUJMRShHQU1FUEFEKQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpnYXJiYWdlQ29sbGVjdEph
dmFTY3JpcHRPYmplY3RzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKaW5kZXggNmIwOWIwMDJjOTM0Y2QzNjc5Njg3MjY1MDZkZjhhMTg3MTkzMjFkZi4uMDU4NGJj
MDA5ZWNhYTNiMWE1MjZhYjg3ZTk4YmIyOGNlZjI2NDdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTM3MCw2ICszNzAsOCBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKEdBTUVQQUQpCiAgICAgdm9pZCBnYW1lcGFkQ29ubmVjdGVkKGNvbnN0IFVJR2FtZXBh
ZCYpOwogICAgIHZvaWQgZ2FtZXBhZERpc2Nvbm5lY3RlZChjb25zdCBVSUdhbWVwYWQmKTsKKwor
ICAgIHZvaWQgc2V0SW5pdGlhbENvbm5lY3RlZEdhbWVwYWRzKGNvbnN0IFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8VUlHYW1lcGFkPj4mKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNw
cAppbmRleCA0MTYwMzllOWQ1ZmRiMGJjMTQyYWVkZDdkMTY0ZWVhNWRlNDJlMWZkLi5kMzcxNjRi
ZDEwNWNiMDk5MTNjMjcxNzljOGJhZjM0NWJiMGY0NzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAt
NTMsNiArNTMsMjEgQEAgV2ViR2FtZXBhZFByb3ZpZGVyOjp+V2ViR2FtZXBhZFByb3ZpZGVyKCkK
IHsKIH0KIAordm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OnNldEluaXRpYWxHYW1lcGFkcyhjb25z
dCBWZWN0b3I8R2FtZXBhZERhdGE+JiBnYW1lcGFkRGF0YXMpCit7CisgICAgQVNTRVJUKG1fZ2Ft
ZXBhZHMuaXNFbXB0eSgpKTsKKworICAgIG1fZ2FtZXBhZHMucmVzaXplKGdhbWVwYWREYXRhcy5z
aXplKCkpOworICAgIG1fcmF3R2FtZXBhZHMucmVzaXplKGdhbWVwYWREYXRhcy5zaXplKCkpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ2FtZXBhZERhdGFzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIGlmIChnYW1lcGFkRGF0YXNbaV0uaXNOdWxsKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBtX2dhbWVwYWRzW2ldID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHYW1lcGFk
PihnYW1lcGFkRGF0YXNbaV0pOworICAgICAgICBtX3Jhd0dhbWVwYWRzW2ldID0gbV9nYW1lcGFk
c1tpXS5nZXQoKTsKKyAgICB9Cit9CisKIHZvaWQgV2ViR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFk
Q29ubmVjdGVkKGNvbnN0IEdhbWVwYWREYXRhJiBnYW1lcGFkRGF0YSkKIHsKICAgICBpZiAobV9n
YW1lcGFkcy5zaXplKCkgPD0gZ2FtZXBhZERhdGEuaW5kZXgpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuaAppbmRleCBh
NTM0ODNkNjIyODUwNTZlMzJhN2Q3YzAwMDBiNGM2NDhlOTVmOTU5Li5jZWE4NGUyMzMxZmI0ZjYz
MTQ5ODQzMGY2YzllMjA4NjdmZjNiZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5oCkBAIC00Niw2ICs0Niw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGdhbWVwYWREaXNjb25uZWN0ZWQodW5zaWduZWQgaW5kZXgpOwog
ICAgIHZvaWQgZ2FtZXBhZEFjdGl2aXR5KGNvbnN0IFZlY3RvcjxHYW1lcGFkRGF0YT4mKTsKIAor
ICAgIHZvaWQgc2V0SW5pdGlhbEdhbWVwYWRzKGNvbnN0IFZlY3RvcjxHYW1lcGFkRGF0YT4mKTsK
KwogcHJpdmF0ZToKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8V2ViR2FtZXBhZFByb3ZpZGVy
PjsKICAgICBXZWJHYW1lcGFkUHJvdmlkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCmluZGV4IDY1ODBmZGIzNGY3ZTBiMzRkYTgyZDYxYzUzZTY2YTA1NDE1NTJj
OTEuLjYxNDRhOTlhOTQ4OTBjY2RiYzliMjZiMzNlN2VmNTFlYzE5ZmZmNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTAzMyw2ICsxMDMzLDExIEBAIHZv
aWQgV2ViUHJvY2Vzczo6bWFpblRocmVhZFBpbmcoKQogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAK
K3ZvaWQgV2ViUHJvY2Vzczo6c2V0SW5pdGlhbEdhbWVwYWRzKGNvbnN0IFZlY3RvcjxXZWJLaXQ6
OkdhbWVwYWREYXRhPiYgZ2FtZXBhZERhdGFzKQoreworICAgIFdlYkdhbWVwYWRQcm92aWRlcjo6
c2luZ2xldG9uKCkuc2V0SW5pdGlhbEdhbWVwYWRzKGdhbWVwYWREYXRhcyk7Cit9CisKIHZvaWQg
V2ViUHJvY2Vzczo6Z2FtZXBhZENvbm5lY3RlZChjb25zdCBHYW1lcGFkRGF0YSYgZ2FtZXBhZERh
dGEpCiB7CiAgICAgV2ViR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5nYW1lcGFkQ29ubmVj
dGVkKGdhbWVwYWREYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5k
ZXggMTM3ZWM1N2Q5YjBmMjNlMWRmZDNhNTgzYzZkOTlkNjU1MjgyZTI4Yy4uNTExOGUyNmIwNmVk
NDljNDY3OThjMGZlYjkyNDQzZTk1MDEyMGU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgKQEAgLTI3Nyw2ICsyNzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbWFpblRo
cmVhZFBpbmcoKTsKIAogI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIHZvaWQgc2V0SW5pdGlhbEdh
bWVwYWRzKGNvbnN0IFZlY3RvcjxHYW1lcGFkRGF0YT4mKTsKICAgICB2b2lkIGdhbWVwYWRDb25u
ZWN0ZWQoY29uc3QgR2FtZXBhZERhdGEmKTsKICAgICB2b2lkIGdhbWVwYWREaXNjb25uZWN0ZWQo
dW5zaWduZWQgaW5kZXgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNTY4MTBhOTllNzY0MTA0MWUwOGU2ZDllN2Vl
NjFjYzQxOGQzMjAzNy4uMTI0NTg2NDEyNTNmYjJjMWQzY2EzN2RlYjc5M2U2NGY0M2I5YzcyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgpAQCAtMTAzLDYgKzEwMyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgewogICAgIE1haW5UaHJlYWRQaW5nKCkKIAogI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIFNl
dEluaXRpYWxHYW1lcGFkcyhWZWN0b3I8V2ViS2l0OjpHYW1lcGFkRGF0YT4gZ2FtZXBhZERhdGFz
KQogICAgIEdhbWVwYWRDb25uZWN0ZWQoc3RydWN0IFdlYktpdDo6R2FtZXBhZERhdGEgZ2FtZXBh
ZERhdGEpCiAgICAgR2FtZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCkKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286202</attachid>
            <date>2016-08-16 14:15:54 -0700</date>
            <delta_ts>2016-08-16 14:46:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160871-20160816141408.patch</filename>
            <type>text/plain</type>
            <size>19351</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFmYmY1ODkyYWNlZjNi
ZjU3NzgxMmI0NWYzMWUxNDM5YTc2MDgwMC4uNjJhZjBmMmZmZTQ3NGQ0NzU3YmJhZDk4ZWYyNWVl
YjQ2MGQxZDQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTA4LTE1ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbnVwIFdLMiBwbGF0
Zm9ybSBnYW1lcGFkIGhhbmRsaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYwODcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3Rl
bnNlbi4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE5vIGN1cnJlbnRseSB0ZXN0YWJsZSBjaGFu
Z2UgaW4gYmVoYXZpb3IpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZG9lcyBhIGZldyB0aGluZ3M6
CisgICAgICAgIDEgLSBTZXBhcmF0ZXMgdGhlIGNvbmNlcHRzIG9mICJtb25pdG9yaW5nIGdhbWVw
YWRzIiBhbmQgIm1vbml0b3JpbmcgZ2FtZXBhZCBpbnB1dHMiCisgICAgICAgIDIgLSBVc2VzIHRo
aXMgbmV3IGNvbmNlcHQgdG8gbXVjaCBtb3JlIGNsZWFubHkgaGFuZGxlIHRoZSBjYXNlIHdoZXJl
IHdlIGFyZSBub3QgY3VycmVudGx5CisgICAgICAgICAgICBtb25pdG9yaW5nIGdhbWVwYWQgaW5w
dXRzIGJlY2F1c2UgYW4gaW50ZXJlc3RlZCBXS1dlYlZpZXcgaXMgbm90IGZyb250IGFuZCBjZW50
ZXIuCisgICAgICAgIDMgLSBQcmUtcG9wdWxhdGVzIHRoZSAiaW5pdGlhbCBzZXQgb2YgZ2FtZXBh
ZHMiIGluIFdlYlByb2Nlc3NlcyB0aGF0IHN0YXJ0IGxpc3RlbmluZyBmb3IgZ2FtZXBhZHMuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRQcm92aWRlckNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6R2FtZXBhZFByb3ZpZGVyQ2xpZW50OjpzZXRJbml0aWFsQ29ubmVjdGVk
R2FtZXBhZHMpOgorCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6SElER2Ft
ZXBhZFByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6c3Rv
cE1vbml0b3JpbmdJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6
OnN0YXJ0TW9uaXRvcmluZ0lucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92
aWRlcjo6Y29ubmVjdGlvbkRlbGF5VGltZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ2Ft
ZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmg6CisKIDIwMTYtMDgtMTYgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBjdHguZHJhd0ltYWdlIHNob3VsZCBjbGlw
IHNvdXJjZSByZWN0IGlmIGl0IGlzIG91dHNpZGUgdGhlIHNvdXJjZSBpbWFnZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDA5MWUyOTBlYzQ0OTgxOTU5MTYyZmZhY2Y1ZjMyMTFiODBhNjA5NzcuLjAwNDQ1YTc4NmVi
YzM5MmQwYjI1NzdkOWRmMjI5OGY0YTZhMTcwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBA
QAorMjAxNi0wOC0xNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQ2xlYW51cCBXSzIgcGxhdGZvcm0gZ2FtZXBhZCBoYW5kbGluZy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDg3MQorCisgICAgICAgIFJldmll
d2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIGEgZmV3
IHRoaW5nczoKKyAgICAgICAgMSAtIFNlcGFyYXRlcyB0aGUgY29uY2VwdHMgb2YgIm1vbml0b3Jp
bmcgZ2FtZXBhZHMiIGFuZCAibW9uaXRvcmluZyBnYW1lcGFkIGlucHV0cyIKKyAgICAgICAgMiAt
IFVzZXMgdGhpcyBuZXcgY29uY2VwdCB0byBtdWNoIG1vcmUgY2xlYW5seSBoYW5kbGUgdGhlIGNh
c2Ugd2hlcmUgd2UgYXJlIG5vdCBjdXJyZW50bHkKKyAgICAgICAgICAgIG1vbml0b3JpbmcgZ2Ft
ZXBhZCBpbnB1dHMgYmVjYXVzZSBhbiBpbnRlcmVzdGVkIFdLV2ViVmlldyBpcyBub3QgZnJvbnQg
YW5kIGNlbnRlci4KKyAgICAgICAgMyAtIFByZS1wb3B1bGF0ZXMgdGhlICJpbml0aWFsIHNldCBv
ZiBnYW1lcGFkcyIgaW4gV2ViUHJvY2Vzc2VzIHRoYXQgc3RhcnQgbGlzdGVuaW5nIGZvciBnYW1l
cGFkcy4KKyAgICAgICAgCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAgICAK
KyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkU3luY1RpbWVyRmlyZWQpOgor
ICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbENvbm5lY3RlZEdh
bWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnByb2Nlc3NQb29s
U3RvcHBlZFVzaW5nR2FtZXBhZHMpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRl
cjo6dmlld0JlY2FtZUFjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVy
Ojp2aWV3QmVjYW1lSW5hY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRl
cjo6c3RvcE1vbml0b3JpbmdHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFBy
b3ZpZGVyOjpzbmFwc2hvdEdhbWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJv
dmlkZXI6OnBsYXRmb3JtU3RvcE1vbml0b3JpbmdJbnB1dCk6CisgICAgICAgIChXZWJLaXQ6OlVJ
R2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0YXJ0TW9uaXRvcmluZ0lucHV0KToKKyAgICAgICAg
KFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OlVJR2FtZXBhZFByb3ZpZGVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnNjaGVkdWxlRGlzYWJsZUdhbWVw
YWRNb25pdG9yaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlk
ZXI6OmRpc2FibGVNb25pdG9yaW5nVGltZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuaDoKKyAgICAgICAgCisgICAgICAgICog
VUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVySElELmNwcDoKKyAgICAgICAg
KFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RvcE1vbml0b3JpbmdJbnB1dCk6
CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVN0YXJ0TW9uaXRv
cmluZ0lucHV0KToKKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEluaXRpYWxDb25uZWN0
ZWRHYW1lcGFkcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAg
ICAgIAorICAgICAgICAqIFdlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1lcGFkUHJvdmlkZXI6OnNldEluaXRpYWxHYW1lcGFk
cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5oOgor
ICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRJbml0aWFsR2FtZXBhZHMpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbjoKKwogMjAxNi0wOC0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIENsZWFuIHVwIFdlYlNvY2tldHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZFByb3ZpZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRQcm92aWRlckNsaWVudC5oCmlu
ZGV4IDFlYTEwMmE1ZWFkN2M1NDVjZjg5MTNjYjE4MGQ4MGVhOWNkYTc1YjUuLjAxYTJjZWNlYTU1
YmY1N2ZmZDhkZDE5MjI2ZjZmNTg1YTUwYjg3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvR2FtZXBhZFByb3ZpZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkUHJvdmlkZXJDbGllbnQuaApAQCAtMjcsNiAr
MjcsOCBAQAogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGxhdGZvcm1HYW1lcGFkOwpAQCAtMzUs
NiArMzcsNyBAQCBjbGFzcyBHYW1lcGFkUHJvdmlkZXJDbGllbnQgewogcHVibGljOgogICAgIHZp
cnR1YWwgfkdhbWVwYWRQcm92aWRlckNsaWVudCgpIHsgfQogCisgICAgdmlydHVhbCB2b2lkIHNl
dEluaXRpYWxDb25uZWN0ZWRHYW1lcGFkcyhjb25zdCBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkKj4m
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKFBsYXRmb3Jt
R2FtZXBhZCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1HYW1lcGFkRGlzY29ubmVj
dGVkKFBsYXRmb3JtR2FtZXBhZCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1HYW1l
cGFkSW5wdXRBY3Rpdml0eSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IGM1YTQzNWY5
ZTA5MDlkYTI4NzVkYTMyNWY0ZWJiMTNiYTQ1ZTY1NTcuLjI0NjExYzgwYmMwNmQzODI1YjgyNDYx
YjFjZTVmNjM5NjllMzlmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtOTYsNiArOTYsMjAg
QEAgSElER2FtZXBhZFByb3ZpZGVyOjpISURHYW1lcGFkUHJvdmlkZXIoKQogICAgIElPSElETWFu
YWdlclNldERldmljZU1hdGNoaW5nTXVsdGlwbGUobV9tYW5hZ2VyLmdldCgpLCBtYXRjaGluZ0Fy
cmF5LmdldCgpKTsKICAgICBJT0hJRE1hbmFnZXJSZWdpc3RlckRldmljZU1hdGNoaW5nQ2FsbGJh
Y2sobV9tYW5hZ2VyLmdldCgpLCBkZXZpY2VBZGRlZENhbGxiYWNrLCB0aGlzKTsKICAgICBJT0hJ
RE1hbmFnZXJSZWdpc3RlckRldmljZVJlbW92YWxDYWxsYmFjayhtX21hbmFnZXIuZ2V0KCksIGRl
dmljZVJlbW92ZWRDYWxsYmFjaywgdGhpcyk7CisKKyAgICBzdGFydE1vbml0b3JpbmdJbnB1dCgp
OworfQorCit2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6c3RvcE1vbml0b3JpbmdJbnB1dCgpCit7
CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IGlnbm9yZWQgIi1Xbm9ubnVsbCIKKyAgICBJT0hJRE1hbmFnZXJSZWdpc3RlcklucHV0VmFsdWVD
YWxsYmFjayhtX21hbmFnZXIuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOworI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHBvcAorfQorCit2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6c3RhcnRNb25p
dG9yaW5nSW5wdXQoKQorewogICAgIElPSElETWFuYWdlclJlZ2lzdGVySW5wdXRWYWx1ZUNhbGxi
YWNrKG1fbWFuYWdlci5nZXQoKSwgZGV2aWNlVmFsdWVzQ2hhbmdlZENhbGxiYWNrLCB0aGlzKTsK
IH0KIApAQCAtMTExLDYgKzEyNSw5IEBAIHVuc2lnbmVkIEhJREdhbWVwYWRQcm92aWRlcjo6aW5k
ZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpCiB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6Y29u
bmVjdGlvbkRlbGF5VGltZXJGaXJlZCgpCiB7CiAgICAgbV9zaG91bGREaXNwYXRjaENhbGxiYWNr
cyA9IHRydWU7CisKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAg
Y2xpZW50LT5zZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBhZHMobV9nYW1lcGFkVmVjdG9yKTsKIH0K
IAogdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6Om9wZW5BbmRTY2hlZHVsZU1hbmFnZXIoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFk
UHJvdmlkZXIuaAppbmRleCBmNjYxNTRmYzA1YjhmNzJiOGFhZTdjODQ4ZjRiYjMwZjJjODk3ZGQw
Li4xNjdhZWY1M2RiYjk2ZjIyNTJjZTgwYmNkZGEyNjMwNzA1YTNmZWE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlk
ZXIuaApAQCAtNTEsNiArNTEsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
dG9wTW9uaXRvcmluZ0dhbWVwYWRzKEdhbWVwYWRQcm92aWRlckNsaWVudCYpIGZpbmFsOwogICAg
IGNvbnN0IFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQqPiYgcGxhdGZvcm1HYW1lcGFkcygpIGZpbmFs
IHsgcmV0dXJuIG1fZ2FtZXBhZFZlY3RvcjsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
dG9wTW9uaXRvcmluZ0lucHV0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydE1vbml0
b3JpbmdJbnB1dCgpOworICAgIAogICAgIHZvaWQgZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYp
OwogICAgIHZvaWQgZGV2aWNlUmVtb3ZlZChJT0hJRERldmljZVJlZik7CiAgICAgdm9pZCB2YWx1
ZXNDaGFuZ2VkKElPSElEVmFsdWVSZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4
IDVkOGVhZDAwMDlmYTA3NjAwMjU3OTk0ZTM0MWQ4YWFiMmNhY2E5MTcuLjMzODI0NWQyNzhjMjlk
ODk4OTE0ODc5Y2ZhZDk3MjhhNGI2NzkxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmgK
QEAgLTQzLDYgKzQzLDcgQEAgZXh0ZXJuICJDIiB7CiAKICNkZWZpbmUgV0VCS0lUMl9MT0dfQ0hB
Tk5FTFMoTSkgXAogICAgIE0oQ29udGV4dE1lbnUpIFwKKyAgICBNKEdhbWVwYWQpIFwKICAgICBN
KElEQikgXAogICAgIE0oSWNvbkRhdGFiYXNlKSBcCiAgICAgTShJbmRleGVkREIpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVy
LmNwcAppbmRleCA3NTBlYWVmYTYxMDc4ODc1NWYwMWZlYzQ3MzljNmI3MDY4N2RhOWU2Li4yMDQ2
YmY5MDczOTMxZWUzYjhmZjM0ZGRjMjk0MzQzYTM5MTEwNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC00
OCw3ICs0OCw2IEBAIFVJR2FtZXBhZFByb3ZpZGVyJiBVSUdhbWVwYWRQcm92aWRlcjo6c2luZ2xl
dG9uKCkKIAogVUlHYW1lcGFkUHJvdmlkZXI6OlVJR2FtZXBhZFByb3ZpZGVyKCkKICAgICA6IG1f
Z2FtZXBhZFN5bmNUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZVSUdhbWVwYWRQcm92aWRl
cjo6Z2FtZXBhZFN5bmNUaW1lckZpcmVkKQotICAgICwgbV9kaXNhYmxlTW9uaXRvcmluZ1RpbWVy
KFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlVJR2FtZXBhZFByb3ZpZGVyOjpkaXNhYmxlTW9uaXRv
cmluZ1RpbWVyRmlyZWQpCiB7CiB9CiAKQEAgLTY0LDE3ICs2Myw3IEBAIHZvaWQgVUlHYW1lcGFk
UHJvdmlkZXI6OmdhbWVwYWRTeW5jVGltZXJGaXJlZCgpCiAgICAgaWYgKCF3ZWJQYWdlUHJveHkg
fHwgIW1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcy5jb250YWlucygmd2ViUGFnZVByb3h5LT5w
cm9jZXNzKCkucHJvY2Vzc1Bvb2woKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxH
YW1lcGFkRGF0YT4gZ2FtZXBhZERhdGFzOwotICAgIGdhbWVwYWREYXRhcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KG1fZ2FtZXBhZHMuc2l6ZSgpKTsKLQotICAgIGZvciAoYXV0byYgZ2FtZXBhZCA6
IG1fZ2FtZXBhZHMpIHsKLSAgICAgICAgaWYgKGdhbWVwYWQpCi0gICAgICAgICAgICBnYW1lcGFk
RGF0YXMudW5jaGVja2VkQXBwZW5kKGdhbWVwYWQtPmdhbWVwYWREYXRhKCkpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBnYW1lcGFkRGF0YXMudW5jaGVja2VkQXBwZW5kKHsgfSk7Ci0gICAg
fQotCi0gICAgd2ViUGFnZVByb3h5LT5nYW1lcGFkQWN0aXZpdHkoZ2FtZXBhZERhdGFzKTsKKyAg
ICB3ZWJQYWdlUHJveHktPmdhbWVwYWRBY3Rpdml0eShzbmFwc2hvdEdhbWVwYWRzKCkpOwogfQog
CiB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpzY2hlZHVsZUdhbWVwYWRTdGF0ZVN5bmMoKQpAQCAt
OTAsNiArNzksMjQgQEAgdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6c2NoZWR1bGVHYW1lcGFkU3Rh
dGVTeW5jKCkKICAgICBtX2dhbWVwYWRTeW5jVGltZXIuc3RhcnRPbmVTaG90KG1heGltdW1HYW1l
cGFkVXBkYXRlSW50ZXJ2YWwpOwogfQogCit2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0
aWFsQ29ubmVjdGVkR2FtZXBhZHMoY29uc3QgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZCo+JiBpbml0
aWFsR2FtZXBhZHMpCit7CisgICAgQVNTRVJUKCFtX2hhc0luaXRpYWxHYW1lcGFkcyk7CisKKyAg
ICBtX2dhbWVwYWRzLnJlc2l6ZShpbml0aWFsR2FtZXBhZHMuc2l6ZSgpKTsKKworICAgIGZvciAo
YXV0byogZ2FtZXBhZCA6IGluaXRpYWxHYW1lcGFkcykgeworICAgICAgICBpZiAoIWdhbWVwYWQp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbV9nYW1lcGFkc1tnYW1lcGFkLT5pbmRl
eCgpXSA9IHN0ZDo6bWFrZV91bmlxdWU8VUlHYW1lcGFkPigqZ2FtZXBhZCk7CisgICAgfQorCisg
ICAgZm9yIChhdXRvJiBwb29sIDogbV9wcm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzKQorICAgICAg
ICBwb29sLT5zZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBhZHMobV9nYW1lcGFkcyk7CisKKyAgICBt
X2hhc0luaXRpYWxHYW1lcGFkcyA9IHRydWU7Cit9CisKIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmIGdhbWVwYWQpCiB7CiAg
ICAgaWYgKG1fZ2FtZXBhZHMuc2l6ZSgpIDw9IGdhbWVwYWQuaW5kZXgoKSkKQEAgLTE1Miw3ICsx
NTksNyBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwcm9jZXNzUG9vbFN0b3BwZWRVc2luZ0dh
bWVwYWRzKFdlYlByb2Nlc3NQb29sJiBwb29sKQogICAgIG1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1l
cGFkcy5yZW1vdmUoJnBvb2wpOwogCiAgICAgaWYgKG1faXNNb25pdG9yaW5nR2FtZXBhZHMgJiYg
IXBsYXRmb3JtV2ViUGFnZVByb3h5Rm9yR2FtZXBhZElucHV0KCkpCi0gICAgICAgIHNjaGVkdWxl
RGlzYWJsZUdhbWVwYWRNb25pdG9yaW5nKCk7CisgICAgICAgIHBsYXRmb3JtU3RvcE1vbml0b3Jp
bmdJbnB1dCgpOwogCiAgICAgc2NoZWR1bGVHYW1lcGFkU3RhdGVTeW5jKCk7CiB9CkBAIC0xNjIs
MjYgKzE2OSwxOCBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjp2aWV3QmVjYW1lQWN0aXZlKFdl
YlBhZ2VQcm94eSYgcGFnZSkKICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcy5j
b250YWlucygmcGFnZS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fZGlzYWJsZU1vbml0b3JpbmdUaW1lci5zdG9wKCk7Ci0gICAgc3RhcnRNb25pdG9y
aW5nR2FtZXBhZHMoKTsKKyAgICBpZiAoIW1faXNNb25pdG9yaW5nR2FtZXBhZHMpCisgICAgICAg
IHN0YXJ0TW9uaXRvcmluZ0dhbWVwYWRzKCk7CisKKyAgICBpZiAocGxhdGZvcm1XZWJQYWdlUHJv
eHlGb3JHYW1lcGFkSW5wdXQoKSkKKyAgICAgICAgcGxhdGZvcm1TdGFydE1vbml0b3JpbmdJbnB1
dCgpOwogfQogCiB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjp2aWV3QmVjYW1lSW5hY3RpdmUoV2Vi
UGFnZVByb3h5JiBwYWdlKQogewogICAgIGF1dG8gcGFnZUZvckdhbWVwYWRJbnB1dCA9IHBsYXRm
b3JtV2ViUGFnZVByb3h5Rm9yR2FtZXBhZElucHV0KCk7CiAgICAgaWYgKHBhZ2VGb3JHYW1lcGFk
SW5wdXQgPT0gJnBhZ2UpCi0gICAgICAgIHNjaGVkdWxlRGlzYWJsZUdhbWVwYWRNb25pdG9yaW5n
KCk7Ci19Ci0KLXZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnNjaGVkdWxlRGlzYWJsZUdhbWVwYWRN
b25pdG9yaW5nKCkKLXsKLSAgICBpZiAoIW1fZGlzYWJsZU1vbml0b3JpbmdUaW1lci5pc0FjdGl2
ZSgpKQotICAgICAgICBtX2Rpc2FibGVNb25pdG9yaW5nVGltZXIuc3RhcnRPbmVTaG90KDApOwot
fQotCi12b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpkaXNhYmxlTW9uaXRvcmluZ1RpbWVyRmlyZWQo
KQotewotICAgIHN0b3BNb25pdG9yaW5nR2FtZXBhZHMoKTsKKyAgICAgICAgcGxhdGZvcm1TdG9w
TW9uaXRvcmluZ0lucHV0KCk7CiB9CiAKIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnN0YXJ0TW9u
aXRvcmluZ0dhbWVwYWRzKCkKQEAgLTIwMCw2ICsxOTksMjIgQEAgdm9pZCBVSUdhbWVwYWRQcm92
aWRlcjo6c3RvcE1vbml0b3JpbmdHYW1lcGFkcygpCiAKICAgICBtX2lzTW9uaXRvcmluZ0dhbWVw
YWRzID0gZmFsc2U7CiAgICAgcGxhdGZvcm1TdG9wTW9uaXRvcmluZ0dhbWVwYWRzKCk7CisgICAg
bV9nYW1lcGFkcy5jbGVhcigpOworfQorCitWZWN0b3I8R2FtZXBhZERhdGE+IFVJR2FtZXBhZFBy
b3ZpZGVyOjpzbmFwc2hvdEdhbWVwYWRzKCkKK3sKKyAgICBWZWN0b3I8R2FtZXBhZERhdGE+IGdh
bWVwYWREYXRhczsKKyAgICBnYW1lcGFkRGF0YXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2dh
bWVwYWRzLnNpemUoKSk7CisKKyAgICBmb3IgKGF1dG8mIGdhbWVwYWQgOiBtX2dhbWVwYWRzKSB7
CisgICAgICAgIGlmIChnYW1lcGFkKQorICAgICAgICAgICAgZ2FtZXBhZERhdGFzLnVuY2hlY2tl
ZEFwcGVuZChnYW1lcGFkLT5nYW1lcGFkRGF0YSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgZ2FtZXBhZERhdGFzLnVuY2hlY2tlZEFwcGVuZCh7IH0pOworICAgIH0KKworICAgIHJldHVy
biBnYW1lcGFkRGF0YXM7CiB9CiAKICNpZiAhUExBVEZPUk0oTUFDKQpAQCAtMjI3LDYgKzI0Miwx
NCBAQCBXZWJQcm9jZXNzUHJveHkqIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdlYlByb2Nl
c3NQcm94eUZvckdhbWVwYWRJbnB1dCgpCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Igb3Ro
ZXIgcGxhdGZvcm1zCiB9CiAKK3ZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3RvcE1v
bml0b3JpbmdJbnB1dCgpCit7Cit9CisKK3ZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3Jt
U3RhcnRNb25pdG9yaW5nSW5wdXQoKQoreworfQorCiAjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQykK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1l
cGFkUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBh
ZFByb3ZpZGVyLmgKaW5kZXggNzBkYzg0MmZjMzdlMjE5MDE0NjVhZmFjZWEwNDg0NDU5NWQ1NTVi
NS4uNDJjYTQyMTM2OWNjOTgzMGEzODkwYjQ4OWJhMGZiZTM4MjRkNGM4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5oCkBA
IC02NCw3ICs2NCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1TdG9wTW9uaXRvcmlu
Z0dhbWVwYWRzKCk7CiAgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBsYXRmb3JtR2FtZXBhZCo+
JiBwbGF0Zm9ybUdhbWVwYWRzKCk7CiAgICAgV2ViUGFnZVByb3h5KiBwbGF0Zm9ybVdlYlBhZ2VQ
cm94eUZvckdhbWVwYWRJbnB1dCgpOworICAgIHZvaWQgcGxhdGZvcm1TdG9wTW9uaXRvcmluZ0lu
cHV0KCk7CisgICAgdm9pZCBwbGF0Zm9ybVN0YXJ0TW9uaXRvcmluZ0lucHV0KCk7CiAKKyAgICB2
b2lkIHNldEluaXRpYWxDb25uZWN0ZWRHYW1lcGFkcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGxh
dGZvcm1HYW1lcGFkKj4mKSBmaW5hbDsKICAgICB2b2lkIHBsYXRmb3JtR2FtZXBhZENvbm5lY3Rl
ZChXZWJDb3JlOjpQbGF0Zm9ybUdhbWVwYWQmKSBmaW5hbDsKICAgICB2b2lkIHBsYXRmb3JtR2Ft
ZXBhZERpc2Nvbm5lY3RlZChXZWJDb3JlOjpQbGF0Zm9ybUdhbWVwYWQmKSBmaW5hbDsKICAgICB2
b2lkIHBsYXRmb3JtR2FtZXBhZElucHV0QWN0aXZpdHkoKSBmaW5hbDsKQEAgLTcyLDE3ICs3NSwx
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVHYW1lcGFkU3RhdGVTeW5jKCk7CiAgICAg
dm9pZCBnYW1lcGFkU3luY1RpbWVyRmlyZWQoKTsKIAotICAgIHZvaWQgc2NoZWR1bGVEaXNhYmxl
R2FtZXBhZE1vbml0b3JpbmcoKTsKLSAgICB2b2lkIGRpc2FibGVNb25pdG9yaW5nVGltZXJGaXJl
ZCgpOworICAgIFZlY3RvcjxHYW1lcGFkRGF0YT4gc25hcHNob3RHYW1lcGFkcygpOwogCiAgICAg
SGFzaFNldDxXZWJQcm9jZXNzUG9vbCo+IG1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkczsKIAog
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VUlHYW1lcGFkPj4gbV9nYW1lcGFkczsKIAogICAg
IFJ1bkxvb3A6OlRpbWVyPFVJR2FtZXBhZFByb3ZpZGVyPiBtX2dhbWVwYWRTeW5jVGltZXI7Ci0g
ICAgUnVuTG9vcDo6VGltZXI8VUlHYW1lcGFkUHJvdmlkZXI+IG1fZGlzYWJsZU1vbml0b3JpbmdU
aW1lcjsKIAogICAgIGJvb2wgbV9pc01vbml0b3JpbmdHYW1lcGFkcyB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2hhc0luaXRpYWxHYW1lcGFkcyB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJI
SUQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dhbWVwYWQvbWFjL1VJR2FtZXBhZFBy
b3ZpZGVySElELmNwcAppbmRleCA3OWVhMzNjZDQxNDZkOTRmYzI2MmRhNmVmYzUyMzcyMzJkZjNj
ZjZmLi4xYmE3YTQxM2IwZDQzMDU2NGZkNjgyZjkwYjQxMjNlNjM1N2EyMTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJI
SUQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVw
YWRQcm92aWRlckhJRC5jcHAKQEAgLTUxLDYgKzUxLDE2IEBAIGNvbnN0IFZlY3RvcjxQbGF0Zm9y
bUdhbWVwYWQqPiYgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZHMoKQogICAgIHJl
dHVybiBISURHYW1lcGFkUHJvdmlkZXI6OnNpbmdsZXRvbigpLnBsYXRmb3JtR2FtZXBhZHMoKTsK
IH0KIAordm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1TdG9wTW9uaXRvcmluZ0lucHV0
KCkKK3sKKyAgICByZXR1cm4gSElER2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zdG9wTW9u
aXRvcmluZ0lucHV0KCk7Cit9CisKK3ZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtU3Rh
cnRNb25pdG9yaW5nSW5wdXQoKQoreworICAgIHJldHVybiBISURHYW1lcGFkUHJvdmlkZXI6OnNp
bmdsZXRvbigpLnN0YXJ0TW9uaXRvcmluZ0lucHV0KCk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKaW5kZXggZDc1MWUxMjkzMzkwYjEwODgzYzYzODBkNTkyZTVmNGEzNWUzYjEyMi4uYWVhYWY0
YjAyZmJiMjNkMzQ4MGU0MWUyZTJmNjNhNzAyNTRjY2FmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMjg2LDYgKzEyODYsMjAgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6Z2FtZXBhZERpc2Nvbm5lY3RlZChjb25zdCBVSUdhbWVwYWQmIGdhbWVw
YWQpCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkdhbWVwYWRE
aXNjb25uZWN0ZWQoZ2FtZXBhZC5pbmRleCgpKSwgMCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnNldEluaXRpYWxDb25uZWN0ZWRHYW1lcGFkcyhjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPFVJR2FtZXBhZD4+JiBnYW1lcGFkcykKK3sKKyAgICBWZWN0b3I8R2FtZXBhZERhdGE+IGdh
bWVwYWREYXRhczsKKyAgICBnYW1lcGFkRGF0YXMucmVzaXplKGdhbWVwYWRzLnNpemUoKSk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBnYW1lcGFkcy5zaXplKCk7ICsraSkgeworICAgICAg
ICBpZiAoIWdhbWVwYWRzW2ldKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGdhbWVw
YWREYXRhc1tpXSA9IGdhbWVwYWRzW2ldLT5nYW1lcGFkRGF0YSgpOworICAgIH0KKworICAgIGZv
ciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzVXNpbmdHYW1lcGFkcykKKyAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0SW5pdGlhbEdhbWVwYWRzKGdhbWVw
YWREYXRhcyksIDApOworfQorCiAjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCiAKIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA2YjA5YjAwMmM5MzRjZDM2Nzk2
ODcyNjUwNmRmOGExODcxOTMyMWRmLi4wNTg0YmMwMDllY2FhM2IxYTUyNmFiODdlOThiYjI4Y2Vm
MjY0N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAt
MzcwLDYgKzM3MCw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoR0FNRVBBRCkKICAgICB2b2lkIGdh
bWVwYWRDb25uZWN0ZWQoY29uc3QgVUlHYW1lcGFkJik7CiAgICAgdm9pZCBnYW1lcGFkRGlzY29u
bmVjdGVkKGNvbnN0IFVJR2FtZXBhZCYpOworCisgICAgdm9pZCBzZXRJbml0aWFsQ29ubmVjdGVk
R2FtZXBhZHMoY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxVSUdhbWVwYWQ+PiYpOwogI2Vu
ZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dh
bWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
R2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IDQxNjAzOWU5ZDVmZGIwYmMxNDJh
ZWRkN2QxNjRlZWE1ZGU0MmUxZmQuLmQzNzE2NGJkMTA1Y2IwOTkxM2MyNzE3OWM4YmFmMzQ1YmIw
ZjQ3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJH
YW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2FtZXBh
ZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC01Myw2ICs1MywyMSBAQCBXZWJHYW1lcGFkUHJv
dmlkZXI6On5XZWJHYW1lcGFkUHJvdmlkZXIoKQogewogfQogCit2b2lkIFdlYkdhbWVwYWRQcm92
aWRlcjo6c2V0SW5pdGlhbEdhbWVwYWRzKGNvbnN0IFZlY3RvcjxHYW1lcGFkRGF0YT4mIGdhbWVw
YWREYXRhcykKK3sKKyAgICBBU1NFUlQobV9nYW1lcGFkcy5pc0VtcHR5KCkpOworCisgICAgbV9n
YW1lcGFkcy5yZXNpemUoZ2FtZXBhZERhdGFzLnNpemUoKSk7CisgICAgbV9yYXdHYW1lcGFkcy5y
ZXNpemUoZ2FtZXBhZERhdGFzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBn
YW1lcGFkRGF0YXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGdhbWVwYWREYXRhc1tpXS5p
c051bGwoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIG1fZ2FtZXBhZHNbaV0g
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRhc1tpXSk7CisgICAgICAg
IG1fcmF3R2FtZXBhZHNbaV0gPSBtX2dhbWVwYWRzW2ldLmdldCgpOworICAgIH0KK30KKwogdm9p
ZCBXZWJHYW1lcGFkUHJvdmlkZXI6OmdhbWVwYWRDb25uZWN0ZWQoY29uc3QgR2FtZXBhZERhdGEm
IGdhbWVwYWREYXRhKQogewogICAgIGlmIChtX2dhbWVwYWRzLnNpemUoKSA8PSBnYW1lcGFkRGF0
YS5pbmRleCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFk
L1dlYkdhbWVwYWRQcm92aWRlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HYW1lcGFk
L1dlYkdhbWVwYWRQcm92aWRlci5oCmluZGV4IGE1MzQ4M2Q2MjI4NTA1NmUzMmE3ZDdjMDAwMGI0
YzY0OGU5NWY5NTkuLmNlYTg0ZTIzMzFmYjRmNjMxNDk4NDMwZjZjOWUyMDg2N2ZmM2JkNjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJv
dmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBh
ZFByb3ZpZGVyLmgKQEAgLTQ2LDYgKzQ2LDggQEAgcHVibGljOgogICAgIHZvaWQgZ2FtZXBhZERp
c2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCk7CiAgICAgdm9pZCBnYW1lcGFkQWN0aXZpdHkoY29u
c3QgVmVjdG9yPEdhbWVwYWREYXRhPiYpOwogCisgICAgdm9pZCBzZXRJbml0aWFsR2FtZXBhZHMo
Y29uc3QgVmVjdG9yPEdhbWVwYWREYXRhPiYpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBOZXZl
ckRlc3Ryb3llZDxXZWJHYW1lcGFkUHJvdmlkZXI+OwogICAgIFdlYkdhbWVwYWRQcm92aWRlcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMTRhZDc5ZDA1
YzI0MjU3ZmYwMzY3MTMwZmNjODE0ZGMyZDVkYzM5Zi4uMjA4YjZlNjc5OTczZmI4MWE3MDNkMzY4
ZDg3YjEyOGMzMDNkOWU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCkBAIC0xMDMwLDYgKzEwMzAsMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjptYWluVGhyZWFkUGlu
ZygpCiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKIAordm9pZCBXZWJQcm9jZXNzOjpzZXRJbml0aWFs
R2FtZXBhZHMoY29uc3QgVmVjdG9yPFdlYktpdDo6R2FtZXBhZERhdGE+JiBnYW1lcGFkRGF0YXMp
Cit7CisgICAgV2ViR2FtZXBhZFByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXRJbml0aWFsR2FtZXBh
ZHMoZ2FtZXBhZERhdGFzKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzOjpnYW1lcGFkQ29ubmVjdGVk
KGNvbnN0IEdhbWVwYWREYXRhJiBnYW1lcGFkRGF0YSkKIHsKICAgICBXZWJHYW1lcGFkUHJvdmlk
ZXI6OnNpbmdsZXRvbigpLmdhbWVwYWRDb25uZWN0ZWQoZ2FtZXBhZERhdGEpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBjOGFlMWQ1NTkxY2UxMTgxYjE5YTkxNTgz
NzFmYmYyYTQ4NmI4YmE3Li5iYjg4NzgyOWI4YjFmZWRlZTc1OGE3ZjllODk4NDMyZjNmODQxYzI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMjc2LDYgKzI3Niw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYWluVGhyZWFkUGluZygpOwogCiAjaWYgRU5BQkxFKEdB
TUVQQUQpCisgICAgdm9pZCBzZXRJbml0aWFsR2FtZXBhZHMoY29uc3QgVmVjdG9yPEdhbWVwYWRE
YXRhPiYpOwogICAgIHZvaWQgZ2FtZXBhZENvbm5lY3RlZChjb25zdCBHYW1lcGFkRGF0YSYpOwog
ICAgIHZvaWQgZ2FtZXBhZERpc2Nvbm5lY3RlZCh1bnNpZ25lZCBpbmRleCk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCA1NjgxMGE5OWU3NjQxMDQxZTA4ZTZkOWU3ZWU2MWNjNDE4ZDMyMDM3Li4xMjQ1ODY0MTI1M2Zi
MmMxZDNjYTM3ZGViNzkzZTY0ZjQzYjljNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMDMsNiArMTAzLDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgTWFpblRocmVhZFBpbmcoKQog
CiAjaWYgRU5BQkxFKEdBTUVQQUQpCisgICAgU2V0SW5pdGlhbEdhbWVwYWRzKFZlY3RvcjxXZWJL
aXQ6OkdhbWVwYWREYXRhPiBnYW1lcGFkRGF0YXMpCiAgICAgR2FtZXBhZENvbm5lY3RlZChzdHJ1
Y3QgV2ViS2l0OjpHYW1lcGFkRGF0YSBnYW1lcGFkRGF0YSkKICAgICBHYW1lcGFkRGlzY29ubmVj
dGVkKHVuc2lnbmVkIGluZGV4KQogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>