<?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>169456</bug_id>
          
          <creation_ts>2017-03-09 16:43:50 -0800</creation_ts>
          <short_desc>Allow termination of background WebProcesses that go over a given CPU usage threshold</short_desc>
          <delta_ts>2017-03-13 16:11:27 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>169425</dependson>
          <blocked>169573</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>andersca</cc>
    
    <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1285685</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-09 16:43:50 -0800</bug_when>
    <thetext>Allow termination background WebProcesses that goes over a given CPU usage threshold.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285686</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-03-09 16:45:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/30960968&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285925</commentid>
    <comment_count>2</comment_count>
      <attachid>304080</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-10 14:38:35 -0800</bug_when>
    <thetext>Created attachment 304080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285936</commentid>
    <comment_count>3</comment_count>
      <attachid>304084</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-10 15:08:16 -0800</bug_when>
    <thetext>Created attachment 304084
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285967</commentid>
    <comment_count>4</comment_count>
      <attachid>304096</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-10 16:21:01 -0800</bug_when>
    <thetext>Created attachment 304096
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287128</commentid>
    <comment_count>5</comment_count>
      <attachid>304096</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-03-13 03:47:29 -0700</bug_when>
    <thetext>Comment on attachment 304096
Patch

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

&gt; Source/WebKit2/ChangeLog:20
&gt; +        Once a WebProcess has been terminated, we do not the client know until one of its

do not -&gt; do not let

&gt; Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm:382
&gt; +    // Use the largest limit among all pages in this process.

Is this level of granularity really useful? When would we want to have different CPU limits for two different non-visible pages in the same process?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287177</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-13 08:58:59 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 304096 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=304096&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:20
&gt; &gt; +        Once a WebProcess has been terminated, we do not the client know until one of its
&gt; 
&gt; do not -&gt; do not let
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm:382
&gt; &gt; +    // Use the largest limit among all pages in this process.
&gt; 
&gt; Is this level of granularity really useful? When would we want to have
&gt; different CPU limits for two different non-visible pages in the same process?

Responded offline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287194</commentid>
    <comment_count>7</comment_count>
      <attachid>304263</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-13 09:32:22 -0700</bug_when>
    <thetext>Created attachment 304263
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287248</commentid>
    <comment_count>8</comment_count>
      <attachid>304263</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 11:09:34 -0700</bug_when>
    <thetext>Comment on attachment 304263
Patch

Clearing flags on attachment: 304263

Committed r213857: &lt;http://trac.webkit.org/changeset/213857&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287249</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-13 11:09:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287272</commentid>
    <comment_count>10</comment_count>
      <attachid>304283</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-13 12:03:57 -0700</bug_when>
    <thetext>Created attachment 304283
Test page</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287288</commentid>
    <comment_count>11</comment_count>
      <attachid>304263</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-03-13 12:32:03 -0700</bug_when>
    <thetext>Comment on attachment 304263
Patch

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

&gt; Source/WebKit2/ChangeLog:18
&gt; +        If such limit is set, whenever a WebContent process has no visible pages, we start
&gt; +        monitoring its CPU usage over 15 minutes periods. At the end of each period, we
&gt; +        check if the process&apos; average CPU usage over this period was greater than the
&gt; +        background CPU limit. If it greater, the WebContent process send an IPC message to
&gt; +        the UIProcess letting it know that it exceeded the CPU limit. The UI process will
&gt; +        then log a message and terminate the process unless it has any audio playing.

It seems like this design won&apos;t be able to solve a very common cause of background CPU usage: an infinite loop. If the main thread is busy looping, we&apos;ll never send this message.

&gt; Source/WebKit2/ChangeLog:24
&gt; +        Once a WebProcess has been terminated, we do not let the client know until one of its
&gt; +        pages becomes visible again. When this happens, we call the processDidCrash
&gt; +        delegate and Safari will take care of reloading the tab and showing the crash
&gt; +        banner then. This is done because we do not want to reload content that is
&gt; +        using a lot of CPU while in the background.

This is pretty weird. We&apos;re just not telling the truth about when the process crashed.

Why is this behavior specific to the CPU limit, whereas the memory limit notifies of crash right away?

Why does WebKit make the reload decision for Safari in this upside-down way, instead of allowing Safari to make the policy decision?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287346</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-13 14:27:11 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 304263 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=304263&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:18
&gt; &gt; +        If such limit is set, whenever a WebContent process has no visible pages, we start
&gt; &gt; +        monitoring its CPU usage over 15 minutes periods. At the end of each period, we
&gt; &gt; +        check if the process&apos; average CPU usage over this period was greater than the
&gt; &gt; +        background CPU limit. If it greater, the WebContent process send an IPC message to
&gt; &gt; +        the UIProcess letting it know that it exceeded the CPU limit. The UI process will
&gt; &gt; +        then log a message and terminate the process unless it has any audio playing.
&gt; 
&gt; It seems like this design won&apos;t be able to solve a very common cause of
&gt; background CPU usage: an infinite loop. If the main thread is busy looping,
&gt; we&apos;ll never send this message.

This case was already taken care of in &lt;rdar://problem/30558745&gt;.
We call the processDidBecomeUnresponsive in this case and Safari terminates it if it is a background process.

&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:24
&gt; &gt; +        Once a WebProcess has been terminated, we do not let the client know until one of its
&gt; &gt; +        pages becomes visible again. When this happens, we call the processDidCrash
&gt; &gt; +        delegate and Safari will take care of reloading the tab and showing the crash
&gt; &gt; +        banner then. This is done because we do not want to reload content that is
&gt; &gt; +        using a lot of CPU while in the background.
&gt; 
&gt; This is pretty weird. We&apos;re just not telling the truth about when the
&gt; process crashed.

We would notify the client right away but then we would want to implement the logic of delaying the load until the tab becomes visible on client side.
One possible issue of doing so currently is that the current API does not currently let the client know why a process crashed (regular crash, vs termination due to CPU use / memory use).
Unless we change the API, this means it would be hard to implement different policies on client side (maybe we do not want the policies to be different?).

&gt; 
&gt; Why is this behavior specific to the CPU limit, whereas the memory limit
&gt; notifies of crash right away?

I have not coordinated this with Andreas but I personally think we should do the same in the &quot;termination due to memory use&quot; case of background tabs.
This is to prevent yoyo effect.

&gt; 
&gt; Why does WebKit make the reload decision for Safari in this upside-down way,
&gt; instead of allowing Safari to make the policy decision?

Explained above but I am sure we can make this work if we&apos;d want to. We just need to agree on the best way to do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287356</commentid>
    <comment_count>13</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-03-13 14:46:51 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; Why is this behavior specific to the CPU limit, whereas the memory limit
&gt; &gt; notifies of crash right away?
&gt; 
&gt; I have not coordinated this with Andreas but I personally think we should do
&gt; the same in the &quot;termination due to memory use&quot; case of background tabs.
&gt; This is to prevent yoyo effect.

I agree. It would be better to make these two behave the same :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287362</commentid>
    <comment_count>14</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-03-13 15:00:14 -0700</bug_when>
    <thetext>I think it would be nice to let clients be able to distinguish between different causes of Web process termination. I don’t think it’s a good idea to have WebKit delay the reporting or decide how to handle web process termination. In particular, this doesn’t consider clients who never intend to put a web view in a window, such as an email client that does some processing of HTML email in the background.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287366</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-03-13 15:04:07 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; I think it would be nice to let clients be able to distinguish between
&gt; different causes of Web process termination. I don’t think it’s a good idea
&gt; to have WebKit delay the reporting or decide how to handle web process
&gt; termination. In particular, this doesn’t consider clients who never intend
&gt; to put a web view in a window, such as an email client that does some
&gt; processing of HTML email in the background.

Agreed, it would be much nicer to deal with this on client side and will work on this.
I do not know if we really need to distinguish different kinds of terminations. As mentioned earlier, we could maybe treat all crashes / terminations the same way in Safari (i.e. reload only when the tabs becomes visible again).

Unless there is a specific need to expose the termination reason, I would try and avoid it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304080</attachid>
            <date>2017-03-10 14:38:35 -0800</date>
            <delta_ts>2017-03-10 15:08:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169456-20170310143835.patch</filename>
            <type>text/plain</type>
            <size>39639</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVlNjBmNDQ0YjBmNDg0
YmRkYzU3NGUyM2IxOGJmNmJhYTA3NDBmYi4uNDE0OWJiYTlmNGI3OGExMmZiNjA3NTI2MDdiOTcx
Yzg2ZWQ4MDY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTAzLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdGVybWluYXRpb24g
YmFja2dyb3VuZCBXZWJQcm9jZXNzZXMgdGhhdCBnb2VzIG92ZXIgYSBnaXZlbiBDUFUgdXNhZ2Ug
dGhyZXNob2xkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk0NTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwOTYwOTY4PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBDUFVNb25pdG9yIHV0aWxp
dHkgY2xhc3MgdG8gbW9uaXRvciBDUFUgdXNhZ2UgYW5kIGNhbGwgYSBwcm92aWRlZCBsYW1iZGEK
KyAgICAgICAgd2hlbmV2ZXIgdGhlIHByb2Nlc3MgZXhjZWVkcyB0aGUgcHJvdmlkZWQgQ1BVIGxp
bWl0IG92ZXIgYSBnaXZlbiBwZXJpb2Qgb2YKKyAgICAgICAgdGltZS4KKworICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9DUFVN
b25pdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDUFVNb25pdG9yOjpDUFVNb25p
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNQVU1vbml0b3I6OnNldENQVUxpbWl0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNQVU1vbml0b3I6OnRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L0NQVU1vbml0b3IuaDogQWRkZWQuCisKIDIwMTctMDMtMTAgIEFudHRpIEtvaXZpc3RvICA8YW50
dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IHRoZSBwYWdlIHRvIHJlbmRlciBiZWZvcmUg
PGxpbms+IHN0eWxlc2hlZXQgdGFncyBpbiBib2R5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmNkNDVkODZhZTNl
YjlhYmUzNTNkMzI5YzZkODcwMTU0NTM1YWIwOS4uZmRkMzRmYmZiODRlNzZkODZkZGRkMDU0Y2Zj
YzY3Y2FhMDdlMzVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAxNy0wMy0xMCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHRlcm1pbmF0
aW9uIGJhY2tncm91bmQgV2ViUHJvY2Vzc2VzIHRoYXQgZ29lcyBvdmVyIGEgZ2l2ZW4gQ1BVIHVz
YWdlIHRocmVzaG9sZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY5NDU2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDk2MDk2OD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyB0ZXJtaW5hdGlv
biBiYWNrZ3JvdW5kIFdlYlByb2Nlc3NlcyB0aGF0IGdvZXMgb3ZlciBhIGdpdmVuIENQVSB1c2Fn
ZSB0aHJlc2hvbGQuCisgICAgICAgIFRoaXMgY2FuIGJlIGVuYWJsZWQgY2xpZW50IHNpZGUgdmlh
IHRoZSBXS1BhZ2VDb25maWd1cmF0aW9uU2V0QmFja2dyb3VuZENQVUxpbWl0KCkKKyAgICAgICAg
U1BJLiBUaGUgY2xpZW50IHByb3ZpZGVzIHRoZSBhY3R1YWwgQ1BVIHRocmVzaG9sZCBpdCB3YW50
cyB0byB1c2UgYXQgcGFnZSBsZXZlbC4KKworICAgICAgICBJZiBzdWNoIGxpbWl0IGlzIHNldCwg
d2hlbmV2ZXIgYSBXZWJDb250ZW50IHByb2Nlc3MgaGFzIG5vIHZpc2libGUgcGFnZXMsIHdlIHN0
YXJ0CisgICAgICAgIG1vbml0b3JpbmcgaXRzIENQVSB1c2FnZSBvdmVyIDE1IG1pbnV0ZXMgcGVy
aW9kcy4gQXQgdGhlIGVuZCBvZiBlYWNoIHBlcmlvZCwgd2UKKyAgICAgICAgY2hlY2sgaWYgdGhl
IHByb2Nlc3MnIGF2ZXJhZ2UgQ1BVIHVzYWdlIG92ZXIgdGhpcyBwZXJpb2Qgd2FzIGdyZWF0ZXIg
dGhhbiB0aGUKKyAgICAgICAgYmFja2dyb3VuZCBDUFUgbGltaXQuIElmIGl0IGdyZWF0ZXIsIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3Mgc2VuZCBhbiBJUEMgbWVzc2FnZSB0bworICAgICAgICB0aGUg
VUlQcm9jZXNzIGxldHRpbmcgaXQga25vdyB0aGF0IGl0IGV4Y2VlZGVkIHRoZSBDUFUgbGltaXQu
IFRoZSBVSSBwcm9jZXNzIHdpbGwKKyAgICAgICAgdGhlbiBsb2cgYSBtZXNzYWdlIGFuZCB0ZXJt
aW5hdGUgdGhlIHByb2Nlc3MgdW5sZXNzIGl0IGhhcyBhbnkgYXVkaW8gcGxheWluZy4KKworICAg
ICAgICBPbmNlIGEgV2ViUHJvY2VzcyBoYXMgYmVlbiB0ZXJtaW5hdGVkLCB3ZSBkbyBub3QgdGhl
IGNsaWVudCBrbm93IHVudGlsIG9uZSBvZiBpdHMKKyAgICAgICAgcGFnZXMgYmVjb21lcyB2aXNp
YmxlIGFnYWluLiBXaGVuIHRoaXMgaGFwcGVucywgd2UgY2FsbCB0aGUgcHJvY2Vzc0RpZENyYXNo
CisgICAgICAgIGRlbGVnYXRlIGFuZCBTYWZhcmkgd2lsbCB0YWtlIGNhcmUgb2YgcmVsb2FkaW5n
IHRoZSB0YWIgYW5kIHNob3dpbmcgdGhlIGNyYXNoCisgICAgICAgIGJhbm5lciB0aGVuLiBUaGlz
IGlzIGRvbmUgYmVjYXVzZSB3ZSBkbyBub3Qgd2FudCB0byByZWxvYWQgY29udGVudCB0aGF0IGlz
CisgICAgICAgIHVzaW5nIGEgbG90IG9mIENQVSB3aGlsZSBpbiB0aGUgYmFja2dyb3VuZC4KKwor
ICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICBBZGQgYmFja2dyb3VuZENQ
VUxpbWl0IHRvIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb246OmNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmJhY2tncm91bmRDUFVM
aW1pdCk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRCYWNrZ3JvdW5kQ1BV
TGltaXQpOgorICAgICAgICBBZGQgYmFja2dyb3VuZENQVUxpbWl0IHRvIEFQSVBhZ2VDb25maWd1
cmF0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25S
ZWYuY3BwOgorICAgICAgICAoV0tQYWdlQ29uZmlndXJhdGlvblNldEJhY2tncm91bmRDUFVMaW1p
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuaDoK
KyAgICAgICAgQWRkIFNQSSB0byBzZXQgYmFja2dyb3VuZCBDUFUgbGltaXQuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZWF0dGFjaFRvV2ViUHJvY2Vzcyk6CisgICAgICAgIFJlc2V0IG1fd2FzVGVybWluYXRl
ZER1ZVRvUmVzb3VyY2VFeGhhdXN0aW9uV2hpbGVJbkJhY2tncm91bmQgZmxhZworICAgICAgICBh
cyB0aGUgcHJvY2VzcyB3YXMgcmVzdGFydGVkLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKToKKyAgICAgICAgV2hlbiB0aGUgdmlz
aWJpbGl0eSBzdGF0ZSBjaGFuZ2VzIGZvciBhIHBhZ2UgdGhhdCB3YXMgdGVybWluYXRlZAorICAg
ICAgICB3aGlsZSBpbiB0aGUgYmFja2dyb3VuZCBkdWUgdG8gZXhjZWVkZWQgQ1BVIGxpbWl0LCBu
b3RpZnkgdGhlCisgICAgICAgIGNsaWVudCB0aGF0IHRoZSBwcm9jZXNzIGNyYXNoZWQgdmlhIHRo
ZSBwcm9jZXNzRGlkQ3Jhc2ggZGVsZWdhdGUuCisgICAgICAgIFNhZmFyaSB3aWxsIHVzZSB0aGlz
IGRlbGVnYXRlIHRvIHJlbG9hZCB0aGUgdGFiIGFuZCBzaG93IHRoZSBjcmFzaAorICAgICAgICBi
YW5uZXIuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp0ZXJtaW5hdGVQcm9jZXNz
KToKKyAgICAgICAgQWRkIHBhcmFtZXRlciB0byB0ZXJtaW5hdGVQcm9jZXNzKCkgdG8gcHJvdmlk
ZSB0aGUgcmVhc29uLiBJZiB0aGUKKyAgICAgICAgcGFnZSB3YXMgdGVybWluYXRlZCBkdWUgdG8g
cmVhY2hpbmcgQ1BVIGxpbWl0LCBzZXQgYSBmbGFnIHNvIHdlCisgICAgICAgIGNhbiBkZWxheSBj
YWxsaW5nIHByb2Nlc3NEaWRDcmFzaCB1bnRpbCB0aGUgcGFnZSBiZWNvbWVzIHZpc2libGUKKyAg
ICAgICAgYWdhaW4uCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBh
cmFtZXRlcnMpOgorICAgICAgICBTZXQgYmFja2dyb3VuZENQVUxpbWl0IG9uIHRoZSBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OnBhZ2VzQ29weSk6CisgICAgICAgIEFkZCB1dGlsaXR5IGZ1bmN0aW9uIHRvIGNvcHkg
dGhlIGxpc3Qgb2YgcGFnZXMgdG8gYSBWZWN0b3IuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Byb3h5OjpkaWRFeGNlZWRCYWNrZ3JvdW5kQ1BVTGltaXQpOgorICAgICAgICBXaGVuIHdl
IGdldCBhbiBJUEMgbWVzc2FnZSBmcm9tIGEgV2ViQ29udGVudCBwcm9jZXNzIHRvIGxldCB1cwor
ICAgICAgICBrbm93IHRoYXQgdGhlIHByb2Nlc3MgZXhjZWVkZWQgdGhlIGJhY2tncm91bmQgQ1BV
IGxpbWl0LCB3ZSBsb2cKKyAgICAgICAgYSBtZXNzYWdlIGFuZCB3ZSB0ZXJtaW5hdGUgaXQgaWYg
aXQgaGFzIG5vIGF1ZGlvIHBsYXlpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICBBZGQgRGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0IElQQyBtZXNzYWdl
IHNvIHRoZSBXZWJDb250ZW50IHByb2Nlc3MKKyAgICAgICAgY2FuIGxldCB1cyBrbm93IHdoZW4g
aXQgZ29lcyBvdmVyIHRoZSBiYWNrZ3JvdW5kIENQVSBsaW1pdC4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9iYWNrZ3JvdW5k
Q1BVTGltaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKToK
KyAgICAgICAgTm90aWZ5IHRoZSBXZWJQcm9jZXNzIHdoZW5ldmVyIHRoZSBhY3Rpdml0eSBzdGF0
ZSBvZiBhIFdlYlBhZ2UgY2hhbmdlcy4KKyAgICAgICAgVGhlIFdlYlByb2Nlc3MgY3VycmVudGx5
IHVzZXMgdGhpcyBpbmZvcm1hdGlvbiB0byBkZXRlcm1pbmUgd2hlbiB0aGUKKyAgICAgICAgdmlz
aWJpbGl0eSBvZiBhIHBhZ2UgY2hhbmdlcy4gVGhpcyBpcyBuZWVkZWQgYXMgd2Ugb25seSB3YW50
IHRvIG1vbml0b3IKKyAgICAgICAgQ1BVIHVzYWdlIG9mICpiYWNrZ3JvdW5kKiBXZWJDb250ZW50
IHByb2Nlc3NlcyAocHJvY2Vzc2VzIHRoYXQgaGF2ZSBubworICAgICAgICB2aXNpYmxlIFdlYlBh
Z2UpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6YmFja2dyb3VuZENQVUxpbWl0KToKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNyZWF0
ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKToK
KyAgICAgICAgQ2FsbCB1cGRhdGVCYWNrZ3JvdW5kQ1BVTGltaXQoKSB3aGVuZXZlciBhIFdlYlBh
Z2UgaXMgYWRkZWQgb3IgcmVtb3ZlZAorICAgICAgICBzaW5jZSB0aGUgbGltaXQgaXMgcGVyIHBh
Z2UuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXBkYXRlQmFja2dyb3VuZENQVUxp
bWl0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXBkYXRlQmFja2dyb3VuZENQVU1v
bml0b3JTdGF0ZSk6CisgICAgICAgIE5vLW9wcyBvbiBvdGhlciBwbGF0Zm9ybXMgdGhhbiBNYWMg
YXQgdGhlIG1vbWVudC4KKworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwYWdlQWN0aXZp
dHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIENhbGwgdXBkYXRlQmFja2dyb3VuZENQVU1vbml0
b3JTdGF0ZSgpIHdoZW5ldmVyIHRoZSB2aXNpYmlsaXR5IG9mIHRoZQorICAgICAgICBXZWJQYWdl
IGNoYW5nZXMgYXMgd2Ugb25seSBtb25pdG9yIHRoZSBDUFUgdXNhZ2Ugb2YgKmJhY2tncm91bmQq
IFdlYkNvbnRlbnQKKyAgICAgICAgcHJvY2Vzc2VzLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6Omhhc1Zpc2libGVXZWJQYWdlKToKKyAgICAgICAgQWRkIHV0aWxpdHkgZnVuY3Rpb24g
dG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGlzIGFueSB2aXNpYmxlIFdlYlBhZ2UgaW4gdGhpcworICAg
ICAgICBXZWJDb250ZW50IHByb2Nlc3MuIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGZhbHNlLCB0
aGVuIHdlIGNvbnNpZGVyIHRoZQorICAgICAgICBXZWJDb250ZW50IHByb2Nlc3MgdG8gYmUgYSAq
YmFja2dyb3VuZCogV2ViQ29udGVudCBwcm9jZXNzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXBkYXRlQmFja2dyb3VuZENQVUxp
bWl0KToKKyAgICAgICAgQ29tcHV0ZSB0aGUgV2ViUHJvY2VzcycgYmFja2dyb3VuZCBDUFUgbGlt
aXQgZ2l2ZW4gdGhlIGxpbWl0IHNldCBmb3IgZWFjaAorICAgICAgICBvZiBpdHMgV2ViUGFnZXMu
IFdlIHVzZSB0aGUgbGFyZ2VzdCAoaS5lLiBtb3N0IHBlcm1pc3NpdmUpIGJhY2tncm91bmQgQ1BV
CisgICAgICAgIGxpbWl0IGFtb25nIGFsbCB0aGUgcGFnZXMuCisKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6dXBkYXRlQmFja2dyb3VuZENQVU1vbml0b3JTdGF0ZSk6CisgICAgICAgIFVw
ZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIGJhY2tncm91bmQgQ1BVIG1vbml0b3IuIFRoaXMgaXMgY2Fs
bGVkIHdoZW5ldmVyCisgICAgICAgIHRoZSBiYWNrZ3JvdW5kIENQVSBsaW1pdCBvZiB0aGUgcHJv
Y2VzcyBjaGFuZ2VzIG9yIHdoZW5ldmVyIHRoZSB2aXNpYmlsaXR5CisgICAgICAgIG9mIGEgV2Vi
UGFnZSBjaGFuZ2VzLgorCiAyMDE3LTAzLTEwICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbV0syXSBHdWFyZCBHTGliLXNwZWNpZmljIHR5cGVkZWZzIGlu
IEluamVjdGVkQnVuZGxlLmggd2l0aCBVU0UoR0xJQikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhM2JiNmY2ZGExYzk2NzQzMjk3
NTFjYjhkMDc0OTY5YWNlYjhkMWRjLi5kMWEyZmFlZjA4NTBkM2JiNGJlZDJhMjQwYmJkMjRhMmJk
MTFjZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xODA1LDYgKzE4MDUsOCBAQAogCQk0NjczMDIwMjFDNEVGRTc4MDBCQ0Iz
NTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2MDBC
Q0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87IH07
CiAJCTQ2ODlGMUFGMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEwMEU4
RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLzsgfTsKIAkJNDZCNjNGNkMxQzZFOEQxOTAwMkU5MTRC
IC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0
Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNDZDNjk2Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkM5MUU3MjA1RTQwMDU5Nzkz
NyAvKiBDUFVNb25pdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0ExRTcy
MDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRDFBOUJCRTI5
MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZDODNFRkIxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVy
LmNwcCAqLzsgfTsKIAkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFB
OUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkRCQjY1MDFBQjhDOTZGMDBEOUE4MTMgLyogUG93
ZXJPYnNlcnZlck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZEQkI2NEUxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCAqLzsg
fTsKQEAgLTkyMjQsNiArOTIyNiw4IEBACiAJCTQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAvKiBJ
Z25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4
MCAvKiBGaWxlTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmls
ZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThD
REYwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTRXZlbnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDZDNjk2QzkxRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1BVTW9uaXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NkM2OTZDQTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDUFVNb25pdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDODNFRkIxQTlCQkUyOTAwQTc5QTQxIC8qIEdl
b05vdGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlb05v
dGlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDODNFRkMxQTlCQkUy
OTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdlb05vdGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REJCNjRF
MUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVyTWFjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIzMjI4LDYgKzIzMjMyLDggQEAKIAkJCQlEOEI2MTUyRTEwMzI0OTUxMDBDODU1
NEEgLyogQ29va2llLmggKi8sCiAJCQkJMzM5QjVCNjIxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tp
ZXNTdHJhdGVneS5oICovLAogCQkJCTg2MkYxMjlEMThDMTU3MkMwMDVDNTRBRiAvKiBDb3VudGVk
VXNlckFjdGl2aXR5LmggKi8sCisJCQkJNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1v
bml0b3IuY3BwICovLAorCQkJCTQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9y
LmggKi8sCiAJCQkJNDYzNzYzMDYxRTI2RkRCQTAwOENENDZEIC8qIENQVVRpbWUuY3BwICovLAog
CQkJCTQ2Mzc2MzA3MUUyNkZEQkEwMDhDRDQ2RCAvKiBDUFVUaW1lLmggKi8sCiAJCQkJRTExQUYx
NTAxMUI5QTFBMzAwODA1MTAzIC8qIEN1cnNvci5jcHAgKi8sCkBAIC0yODU4Miw2ICsyODU4OCw3
IEBACiAJCQkJRTEzOTg2NjQxNTQ3ODQ3NDAwMUUzRjY1IC8qIFN0eWxlUmVzb2x2ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0QkJFRDREMTRGQ0RCQTEwMDNGMEI5OCAvKiBTdHlsZVJ1bGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0OTQ2RUFGMTU2RTY0REQwMEQzMjk3RiAvKiBTdHlsZVJ1bGVJ
bXBvcnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QzY5NkNCMUU3MjA1RjcwMDU5NzkzNyAvKiBD
UFVNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDYxRDY1RjFCQjBDODBEMDBDQjU2NDUg
LyogU3R5bGVTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ3QTVFM0UxOTVCOEM4QTAwNDgz
MTAwIC8qIFN0eWxlU2Nyb2xsU25hcFBvaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUQ2Mzgw
MTAxQUYxNzMyMjAwMzFBMTVDIC8qIFN0eWxlU2VsZkFsaWdubWVudERhdGEuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjk4MTUsNiArMjk4MjIsNyBAQAogCQkJCTU5QjU5NzczMTEwODY1NkIwMDcxNTlF
OCAvKiBCcmlkZ2VKU0MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E0NTAzMkYxOERCNzE3MjAw
Mzc3QjM0IC8qIEJ1ZmZlcmVkTGluZVJlYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVC
M0RBRjEyNTFGMTJEMDAzRUYyNjkgLyogQnV0dG9uSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTQ2QzY5NkNDMUU3MjA1RkMwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBNTY5Q0Y3MEQ3RTJCODIwMDdDMzk4MyAvKiBjX2NsYXNzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUVDQTY4MEM5MUU2NzczMEIwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRp
ZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUNGOTBEN0UyQjgyMDA3QzM5ODMgLyogY19p
bnN0YW5jZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NQVU1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRv
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzIzNWI2MjgzZWI4ZjZjYzVlYzRiM2YwNzMwZmVjZGNlNjM5NGQ3
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3Iu
Y3BwCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQ1BVTW9uaXRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NQVU1vbml0
b3I6OkNQVU1vbml0b3IoU2Vjb25kcyBjaGVja0ludGVydmFsLCBFeGNlZWRlZENQVUxpbWl0SGFu
ZGxlciYmIGV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyKQorICAgIDogbV9jaGVja0ludGVydmFsKGNo
ZWNrSW50ZXJ2YWwpCisgICAgLCBtX2V4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyKFdURk1vdmUoZXhj
ZWVkZWRDUFVMaW1pdEhhbmRsZXIpKQorICAgICwgbV90aW1lcigqdGhpcywgJkNQVU1vbml0b3I6
OnRpbWVyRmlyZWQpCit7Cit9CisKK3ZvaWQgQ1BVTW9uaXRvcjo6c2V0Q1BVTGltaXQoc3RkOjpv
cHRpb25hbDxkb3VibGU+IGNwdUxpbWl0KQoreworICAgIGlmIChtX2NwdUxpbWl0ID09IGNwdUxp
bWl0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NwdUxpbWl0ID0gY3B1TGltaXQ7CisgICAg
aWYgKG1fY3B1TGltaXQpIHsKKyAgICAgICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpIHsKKyAg
ICAgICAgICAgIG1fbGFzdENQVVRpbWUgPSBnZXRDUFVUaW1lKCk7CisgICAgICAgICAgICBtX3Rp
bWVyLnN0YXJ0UmVwZWF0aW5nKG1fY2hlY2tJbnRlcnZhbCk7CisgICAgICAgIH0KKyAgICB9IGVs
c2UKKyAgICAgICAgbV90aW1lci5zdG9wKCk7Cit9CisKK3ZvaWQgQ1BVTW9uaXRvcjo6dGltZXJG
aXJlZCgpCit7CisgICAgQVNTRVJUKG1fY3B1TGltaXQpOworCisgICAgaWYgKCFtX2xhc3RDUFVU
aW1lKSB7CisgICAgICAgIG1fbGFzdENQVVRpbWUgPSBnZXRDUFVUaW1lKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNwdVRpbWUgPSBnZXRDUFVUaW1lKCk7CisgICAgaWYg
KCFjcHVUaW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNwdVVzYWdlUGVyY2VudCA9
IGNwdVRpbWUudmFsdWUoKS5wZXJjZW50YWdlQ1BVVXNhZ2VTaW5jZShtX2xhc3RDUFVUaW1lLnZh
bHVlKCkpOworICAgIGlmIChjcHVVc2FnZVBlcmNlbnQgPiBtX2NwdUxpbWl0LnZhbHVlKCkgKiAx
MDApCisgICAgICAgIG1fZXhjZWVkZWRDUFVMaW1pdEhhbmRsZXIoKTsKKworICAgIG1fbGFzdENQ
VVRpbWUgPSBjcHVUaW1lOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9DUFVNb25pdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg4ODI2ODE0M2U0MGEzZTg3ZDdlNjRj
MzUxMmM5OTZhYjFjY2Q3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0NQVU1vbml0b3IuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDUFVUaW1lLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKworI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENQVU1v
bml0b3IgeworcHVibGljOgorICAgIHVzaW5nIEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyID0gV1RG
OjpGdW5jdGlvbjx2b2lkKCk+OworICAgIFdFQkNPUkVfRVhQT1JUIENQVU1vbml0b3IoU2Vjb25k
cyBjaGVja0ludGVydmFsLCBFeGNlZWRlZENQVUxpbWl0SGFuZGxlciYmKTsKKworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q1BVTGltaXQoc3RkOjpvcHRpb25hbDxkb3VibGU+KTsKKworcHJp
dmF0ZToKKyAgICB2b2lkIHRpbWVyRmlyZWQoKTsKKworICAgIFNlY29uZHMgbV9jaGVja0ludGVy
dmFsOworICAgIEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyIG1fZXhjZWVkZWRDUFVMaW1pdEhhbmRs
ZXI7CisgICAgVGltZXIgbV90aW1lcjsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9jcHVM
aW1pdDsKKyAgICBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IG1fbGFzdENQVVRpbWU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggZTg1Y2QxMGY1ZTA1MTVlOGNmZTFmMGVk
MjAwMmE4OWI5ZWQ2YTU0My4uNTEzZjFiOWIwODUxZjhkZmViZDlmOTRlYWFiOTgwNzQyOWYxNzE0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcApAQCAtOTMsNiArOTMsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rlci5lbmNv
ZGVFbnVtKHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOwogICAgIGVuY29kZXIuZW5jb2Rl
RW51bShvYnNlcnZlZExheW91dE1pbGVzdG9uZXMpOwogICAgIGVuY29kZXIgPDwgb3ZlcnJpZGVD
b250ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgZW5jb2RlciA8PCBiYWNrZ3JvdW5kQ1BVTGltaXQ7
CiAgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVIYW5kbGVyczsKICNpZiBFTkFCTEUoV0VCX1JUQykK
ICAgICBlbmNvZGVyIDw8IGljZUNhbmRpZGF0ZUZpbHRlcmluZ0VuYWJsZWQ7CkBAIC0yMjIsNiAr
MjIzLDkgQEAgYm9vbCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLCBXZWJQYWdlQ3JlYXRpb25QYXIKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMub3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYmFja2dyb3Vu
ZENQVUxpbWl0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZUhhbmRsZXJzKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaAppbmRleCBiNGZlNmU2NjQ1YmM5NzExOTA3YmM0YzQ3OTJkYWU5OTZkZjc2ZGUwLi5jNDgz
M2I0Yjg3NTFiMmU1MWJiMGZmOTc1ZGIwYjcxODQxM2VjMTU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTE0Niw2ICsxNDYs
NyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgV2ViQ29yZTo6TGF5
b3V0TWlsZXN0b25lcyBvYnNlcnZlZExheW91dE1pbGVzdG9uZXM7CiAKICAgICBTdHJpbmcgb3Zl
cnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJh
Y2tncm91bmRDUFVMaW1pdDsKIAogICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gdXJsU2No
ZW1lSGFuZGxlcnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElQYWdlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggMzNjODE5MmUyMjM5NmJhZWFlMmZlYTRmZjc1
NDVhMWQ3MmRkMDc5My4uODgzNzUxMDU0Mjk0YzI3ZTk5NjAyMDY1YzBiYmU5ZGNjMjU3ODFhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmln
dXJhdGlvbi5jcHAKQEAgLTY4LDYgKzY4LDcgQEAgUmVmPFBhZ2VDb25maWd1cmF0aW9uPiBQYWdl
Q29uZmlndXJhdGlvbjo6Y29weSgpIGNvbnN0CiAgICAgY29weS0+bV9hbHdheXNSdW5zQXRGb3Jl
Z3JvdW5kUHJpb3JpdHkgPSB0aGlzLT5tX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTsK
ICNlbmRpZgogICAgIGNvcHktPm1faW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCA9IHRoaXMt
Pm1faW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZDsKKyAgICBjb3B5LT5tX2JhY2tncm91bmRD
UFVMaW1pdCA9IHRoaXMtPm1fYmFja2dyb3VuZENQVUxpbWl0OwogICAgIGNvcHktPm1fY29udHJv
bGxlZEJ5QXV0b21hdGlvbiA9IHRoaXMtPm1fY29udHJvbGxlZEJ5QXV0b21hdGlvbjsKICAgICBj
b3B5LT5tX292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gdGhpcy0+bV9vdmVycmlkZUNv
bnRlbnRTZWN1cml0eVBvbGljeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCmluZGV4IDk4YWUyYWE3MThlMWNmMmQ2NGMxNTI3
YzQ2YzYxNDdjODk0MGY4MDEuLjNmZjRlZmRiYTQzNDRlYmYwZjQxMTE4ZTRmNmNhYmZiMjBiMmI1
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25m
aWd1cmF0aW9uLmgKQEAgLTkzLDYgKzkzLDkgQEAgcHVibGljOgogICAgIGJvb2wgaW5pdGlhbENh
cGl0YWxpemF0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIG1faW5pdGlhbENhcGl0YWxpemF0aW9uRW5h
YmxlZDsgfQogICAgIHZvaWQgc2V0SW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZChib29sIGlu
aXRpYWxDYXBpdGFsaXphdGlvbkVuYWJsZWQpIHsgbV9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFi
bGVkID0gaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZDsgfQogCisgICAgc3RkOjpvcHRpb25h
bDxkb3VibGU+IGJhY2tncm91bmRDUFVMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3Vu
ZENQVUxpbWl0OyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ1BVTGltaXQoZG91YmxlIGNwdUxp
bWl0KSB7IG1fYmFja2dyb3VuZENQVUxpbWl0ID0gY3B1TGltaXQ7IH0KKwogICAgIGJvb2wgd2Fp
dHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fd2Fp
dHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdzsgfQogICAgIHZvaWQgc2V0V2FpdHNG
b3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdyhib29sIHNob3VsZFN5bmNocm9uaXplKSB7
IG1fd2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdyA9IHNob3VsZFN5bmNocm9u
aXplOyB9CiAKQEAgLTEyNCw2ICsxMjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pbml0aWFs
Q2FwaXRhbGl6YXRpb25FbmFibGVkID0gdHJ1ZTsKICAgICBib29sIG1fd2FpdHNGb3JQYWludEFm
dGVyVmlld0RpZE1vdmVUb1dpbmRvdyA9IHRydWU7CiAgICAgYm9vbCBtX2NvbnRyb2xsZWRCeUF1
dG9tYXRpb24gPSBmYWxzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9iYWNrZ3JvdW5k
Q1BVTGltaXQ7CiAKICAgICBXVEY6OlN0cmluZyBtX292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VDb25maWd1cmF0aW9uUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcAppbmRleCA0ZjRkNWYwOTRmMWI4NDNlMTIyNWYwYjA2
MzdhZGQ3NWM5MTk5ZjcyLi5mYjc1NzU0YmMwNmI2M2I4NTg5NmY2OWUwYmQxYzNkZDBlYTljMWVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmln
dXJhdGlvblJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZUNvbmZpZ3VyYXRpb25SZWYuY3BwCkBAIC0xMDgsMyArMTA4LDggQEAgdm9pZCBXS1BhZ2VDb25m
aWd1cmF0aW9uU2V0SW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZChXS1BhZ2VDb25maWd1cmF0
aW9uUmVmIGMKIHsKICAgICB0b0ltcGwoY29uZmlndXJhdGlvbiktPnNldEluaXRpYWxDYXBpdGFs
aXphdGlvbkVuYWJsZWQoZW5hYmxlZCk7CiB9CisKK3ZvaWQgV0tQYWdlQ29uZmlndXJhdGlvblNl
dEJhY2tncm91bmRDUFVMaW1pdChXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24s
IGRvdWJsZSBjcHVMaW1pdCkKK3sKKyAgICB0b0ltcGwoY29uZmlndXJhdGlvbiktPnNldEJhY2tn
cm91bmRDUFVMaW1pdChjcHVMaW1pdCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuaAppbmRleCA3MmU3YTZiYzI2
Y2I3YTg0NDhlYTE0YjllMDk4Mjk2NGZlMmQxMTYxLi42NjIzZTdjNTA1OTgxYWVmYjI4YTE4OGVh
NWFkMTMzMzZkMzE2NmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgV0tfRVhQ
T1JUIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1BhZ2VDb25maWd1cmF0aW9uR2V0V2Vic2l0ZURh
dGFTdG9yZShXS1BhZ2VDb24KIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRX
ZWJzaXRlRGF0YVN0b3JlKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIHdlYnNpdGVEYXRhU3RvcmUpOwogCiBXS19FWFBPUlQgdm9pZCBX
S1BhZ2VDb25maWd1cmF0aW9uU2V0SW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZChXS1BhZ2VD
b25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGJvb2wgZW5hYmxlZCk7CitXS19FWFBPUlQg
dm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0QmFja2dyb3VuZENQVUxpbWl0KFdLUGFnZUNvbmZp
Z3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgZG91YmxlIGNwdUxpbWl0KTsgLy8gVGVybWluYXRl
cyBwcm9jZXNzIGlmIGl0IHVzZXMgbW9yZSB0aGFuIENQVSBsaW1pdCBvdmVyIGFuIGV4dGVuZGVk
IHBlcmlvZCBvZiB0aW1lIHdoaWxlIGluIHRoZSBiYWNrZ3JvdW5kLgogCiAjaWZkZWYgX19jcGx1
c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNrZ3JvdW5k
UHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKaW5kZXggNWMwNzllNWNh
Njg1Y2ZmMTk3Y2QwNTdlZDFmMDZmNzBjNjBjNzJjMS4uMTg5YzA5ZTg2MjIxOGIxOTM2ZWM5NjRm
MWE2NmJkNGZlMGZjMmY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Jh
Y2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKQEAg
LTcxLDQgKzcxLDkgQEAgdm9pZCBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXI6
OnRpbWVyRmlyZWQoKQogICAgIH0pOwogfQogCit2b2lkIEJhY2tncm91bmRQcm9jZXNzUmVzcG9u
c2l2ZW5lc3NUaW1lcjo6aW52YWxpZGF0ZSgpCit7CisgICAgbV90aW1lci5zdG9wKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oCmluZGV4
IDE4NzQ5MjZkZTk5MDFlYjNhOWY0YmVmZjdiMTY4NzZkMWRkYTZhMjIuLmVjZDkyNmI0MjMyNTE4
MWFhZWVlMWU2NmFhNTdhNzUwYTcxYmQ1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9CYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVy
LmgKQEAgLTM0LDYgKzM0LDcgQEAgY2xhc3MgQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVz
c1RpbWVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNp
dmVuZXNzVGltZXIoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgdm9pZCB1cGRhdGVTdGF0ZSgpOwor
ICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiBwcml2YXRlOgogICAgIHZvaWQgdGltZXJGaXJlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjMDljNTUz
ZGIyMmY5OTUwZDdlNWU2NGFjYmY1YjI2MzEzMDEwZDYyLi5mYTY5ZTY5YTVkNDYxNDZhODNkOThi
OWEzYTZiZDJlYjU5Mjc0NjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtMzU2LDYgKzM1Niw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBh
Z2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAgICAg
LCBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eShtX2NvbmZpZ3VyYXRpb24tPmFsd2F5
c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSgpKQogI2VuZGlmCiAgICAgLCBtX2luaXRpYWxDYXBp
dGFsaXphdGlvbkVuYWJsZWQobV9jb25maWd1cmF0aW9uLT5pbml0aWFsQ2FwaXRhbGl6YXRpb25F
bmFibGVkKCkpCisgICAgLCBtX2JhY2tncm91bmRDUFVMaW1pdChtX2NvbmZpZ3VyYXRpb24tPmJh
Y2tncm91bmRDUFVMaW1pdCgpKQogICAgICwgbV9iYWNrRm9yd2FyZExpc3QoV2ViQmFja0Zvcndh
cmRMaXN0OjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9tYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlv
bihmYWxzZSkKICAgICAsIG1fd2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdyht
X2NvbmZpZ3VyYXRpb24tPndhaXRzRm9yUGFpbnRBZnRlclZpZXdEaWRNb3ZlVG9XaW5kb3coKSkK
QEAgLTcxNiw2ICs3MTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nl
c3MoKQogICAgIEFTU0VSVChtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpT
dGF0ZTo6VGVybWluYXRlZCk7CiAKICAgICBtX2lzVmFsaWQgPSB0cnVlOworICAgIG1fd2FzVGVy
bWluYXRlZER1ZVRvUmVzb3VyY2VFeGhhdXN0aW9uV2hpbGVJbkJhY2tncm91bmQgPSBmYWxzZTsK
ICAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UobV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlSUQpOwogCkBAIC0xNTI4LDggKzE1MzAsMTMgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiAgICAgbV9hY3Rpdml0eVN0
YXRlQ2hhbmdlRGlzcGF0Y2hlci0+aW52YWxpZGF0ZSgpOwogI2VuZGlmCiAKLSAgICBpZiAoIWlz
VmFsaWQoKSkKKyAgICBpZiAoIWlzVmFsaWQoKSkgeworICAgICAgICBpZiAobV9wb3RlbnRpYWxs
eUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgJiYg
bV93YXNUZXJtaW5hdGVkRHVlVG9SZXNvdXJjZUV4aGF1c3Rpb25XaGlsZUluQmFja2dyb3VuZCkg
eworICAgICAgICAgICAgbV93YXNUZXJtaW5hdGVkRHVlVG9SZXNvdXJjZUV4aGF1c3Rpb25XaGls
ZUluQmFja2dyb3VuZCA9IGZhbHNlOworICAgICAgICAgICAgcHJvY2Vzc0RpZENyYXNoKCk7Cisg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIElmIHRoZSB2aXNpYmls
aXR5IHN0YXRlIG1heSBoYXZlIGNoYW5nZWQsIHRoZW4gc28gbWF5IHRoZSB2aXN1YWxseSBpZGxl
ICYgb2NjbHVkZWQgYWdub3N0aWMgc3RhdGUuCiAgICAgaWYgKG1fcG90ZW50aWFsbHlDaGFuZ2Vk
QWN0aXZpdHlTdGF0ZUZsYWdzICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQpAQCAtMjM4Myw3
ICsyMzkwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUo
Y29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGVuY29kaW5nTmFtZSksIG1fcGFn
ZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnRlcm1pbmF0ZVByb2Nlc3MoKQordm9pZCBX
ZWJQYWdlUHJveHk6OnRlcm1pbmF0ZVByb2Nlc3MoVGVybWluYXRpb25SZWFzb24gdGVybWluYXRp
b25SZWFzb24pCiB7CiAgICAgLy8gTk9URTogVGhpcyB1c2VzIGEgY2hlY2sgb2YgbV9pc1ZhbGlk
IHJhdGhlciB0aGFuIGNhbGxpbmcgaXNWYWxpZCgpIHNpbmNlCiAgICAgLy8gd2Ugd2FudCB0aGlz
IHRvIHJ1biBldmVuIGZvciBwYWdlcyBiZWluZyBjbG9zZWQgb3IgdGhhdCBhbHJlYWR5IGNsb3Nl
ZC4KQEAgLTIzOTIsNiArMjM5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0ZXJtaW5hdGVQcm9j
ZXNzKCkKIAogICAgIG1fcHJvY2Vzcy0+cmVxdWVzdFRlcm1pbmF0aW9uKCk7CiAgICAgcmVzZXRT
dGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCgpOworICAgIG1fd2FzVGVybWluYXRlZER1ZVRvUmVzb3Vy
Y2VFeGhhdXN0aW9uV2hpbGVJbkJhY2tncm91bmQgPSB0ZXJtaW5hdGlvblJlYXNvbiA9PSBUZXJt
aW5hdGlvblJlYXNvbjo6UmVzb3VyY2VFeGhhdXN0aW9uV2hpbGVJbkJhY2tncm91bmQ7CiB9CiAK
IFNlc3Npb25TdGF0ZSBXZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZShjb25zdCBzdGQ6OmZ1bmN0
aW9uPGJvb2wgKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4mIGZpbHRlcikgY29uc3QKQEAgLTU1
ODksNiArNTU5Nyw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5Ojpj
cmVhdGlvblBhcmFtZXRlcnMoKQogICAgIHBhcmFtZXRlcnMudXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbiA9IG1fcGFnZUNsaWVudC51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CiAg
ICAgcGFyYW1ldGVycy5vYnNlcnZlZExheW91dE1pbGVzdG9uZXMgPSBtX29ic2VydmVkTGF5b3V0
TWlsZXN0b25lczsKICAgICBwYXJhbWV0ZXJzLm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
ID0gbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsKKyAgICBwYXJhbWV0ZXJzLmJhY2tn
cm91bmRDUFVMaW1pdCA9IG1fYmFja2dyb3VuZENQVUxpbWl0OwogCiAgICAgZm9yIChhdXRvJiBp
dGVyYXRvciA6IG1fdXJsU2NoZW1lSGFuZGxlcnNCeVNjaGVtZSkKICAgICAgICAgcGFyYW1ldGVy
cy51cmxTY2hlbWVIYW5kbGVycy5zZXQoaXRlcmF0b3Iua2V5LCBpdGVyYXRvci52YWx1ZS0+aWRl
bnRpZmllcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAz
N2RmNmJiNGFiZDg1YTJjZTg4OTY4OTQ5MDMyOGIxYTc5N2ViYTk2Li44YjJiOGNkN2Q1ZGMwM2Ix
NmJlMDlhN2Q2OGIxMDFjNTA1MzlmNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC02ODAsNyArNjgwLDggQEAgcHVibGljOgogCiAgICAgZG91YmxlIGVzdGlt
YXRlZFByb2dyZXNzKCkgY29uc3Q7CiAKLSAgICB2b2lkIHRlcm1pbmF0ZVByb2Nlc3MoKTsKKyAg
ICBlbnVtIGNsYXNzIFRlcm1pbmF0aW9uUmVhc29uIHsgUmVzb3VyY2VFeGhhdXN0aW9uV2hpbGVJ
bkJhY2tncm91bmQsIE90aGVyIH07CisgICAgdm9pZCB0ZXJtaW5hdGVQcm9jZXNzKFRlcm1pbmF0
aW9uUmVhc29uID0gVGVybWluYXRpb25SZWFzb246Ok90aGVyKTsKIAogICAgIFNlc3Npb25TdGF0
ZSBzZXNzaW9uU3RhdGUoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChXZWJCYWNrRm9yd2FyZExp
c3RJdGVtJik+JiA9IG51bGxwdHIpIGNvbnN0OwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IHJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSwgYm9vbCBuYXZpZ2F0ZSk7CkBA
IC0xNzIxLDYgKzE3MjIsNyBAQCBwcml2YXRlOgogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVn
cm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbjsKICNlbmRpZgogICAgIGJvb2wgbV9p
bml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBt
X2JhY2tncm91bmRDUFVMaW1pdDsKICAgICBSZWY8V2ViQmFja0ZvcndhcmRMaXN0PiBtX2JhY2tG
b3J3YXJkTGlzdDsKICAgICAgICAgCiAgICAgYm9vbCBtX21haW50YWluc0luYWN0aXZlU2VsZWN0
aW9uOwpAQCAtMTk4NCw2ICsxOTg2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgYm9vbCBt
X2lzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3dhc1Rl
cm1pbmF0ZWREdWVUb1Jlc291cmNlRXhoYXVzdGlvbldoaWxlSW5CYWNrZ3JvdW5kIHsgZmFsc2Ug
fTsKICAgICAgICAgCiAgICAgV2Vha1B0ckZhY3Rvcnk8V2ViUGFnZVByb3h5PiBtX3dlYWtQdHJG
YWN0b3J5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IGY2MzMwMjZiMmJhY2JjNmU3ZDkwMjM0NTdhOWEzMGVhMGQ1MmMxZjUuLmM2YmEwNWY1
N2RiNjE3ZmNkZjRiN2E3NGY2ZjUzOTFiN2M1NWZhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNzcsNiArMTc3LDggQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnNodXREb3duKCkKICAgICB9CiAKICAgICBtX3Jlc3BvbnNpdmVuZXNzVGlt
ZXIuaW52YWxpZGF0ZSgpOworICAgIGlmIChtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVy
KQorICAgICAgICBtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyLT5pbnZhbGlkYXRlKCk7
CiAgICAgbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7CiAKICAgICBWZWN0
b3I8UmVmUHRyPFdlYkZyYW1lUHJveHk+PiBmcmFtZXM7CkBAIC0xMDk3LDYgKzEwOTksMzMgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNYWluVGhyZWFkUGluZygpCiAgICAgICAg
IGNhbGxiYWNrKGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOwogfQogCitzdGF0aWMgVmVjdG9yPFJl
ZlB0cjxXZWJQYWdlUHJveHk+PiBwYWdlc0NvcHkoV1RGOjpJdGVyYXRvclJhbmdlPFdlYlByb2Nl
c3NQcm94eTo6V2ViUGFnZVByb3h5TWFwOjpjb25zdF9pdGVyYXRvcjo6VmFsdWVzPiBwYWdlcykK
K3sKKyAgICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2VQcm94eT4+IHZlY3RvcjsKKyAgICBmb3IgKGF1
dG8mIHBhZ2UgOiBwYWdlcykKKyAgICAgICAgdmVjdG9yLmFwcGVuZChwYWdlKTsKKyAgICByZXR1
cm4gdmVjdG9yOworfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRXhjZWVkQmFja2dyb3Vu
ZENQVUxpbWl0KCkKK3sKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlcygpKSB7CisgICAgICAg
IGlmIChwYWdlLT5pc1ZpZXdWaXNpYmxlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgaWYgKHBhZ2UtPmlzUGxheWluZ0F1ZGlvKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9H
KFBlcmZvcm1hbmNlTG9nZ2luZywgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5OjpkaWRFeGNlZWRCYWNr
Z3JvdW5kQ1BVTGltaXQoKSBXZWJQcm9jZXNzIGhhcyBleGNlZWRlZCB0aGUgYmFja2dyb3VuZCBD
UFUgbGltaXQgYnV0IHdlIGFyZSBub3QgdGVybWluYXRpbmcgaXQgYmVjYXVzZSB0aGVyZSBpcyBh
dWRpbyBwbGF5aW5nIiwgdGhpcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBSRUxFQVNFX0xPRyhQZXJmb3JtYW5jZUxvZ2dpbmcsICIlcCAtIFdlYlByb2Nl
c3NQcm94eTo6ZGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0KCkgVGVybWluYXRpbmcgYmFja2dy
b3VuZCBXZWJQcm9jZXNzIHRoYXQgaGFzIGV4Y2VlZGVkIHRoZSBiYWNrZ3JvdW5kIENQVSBsaW1p
dCIsIHRoaXMpOworCisgICAgLy8gV2Ugb25seSB0ZXJtaW5hdGUgdGhlIHByb2Nlc3MgaGVyZS4g
V2Ugd2lsbCBjYWxsIHByb2Nlc3NEaWRDcmFzaCgpIG9uY2Ugb25lIG9mIHRoZSBwYWdlcyBiZWNv
bWVzIHZpc2libGUgYWdhaW4gKHNlZSBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0
ZUNoYW5nZSgpKS4KKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlc0NvcHkocGFnZXMoKSkpCisg
ICAgICAgIHBhZ2UtPnRlcm1pbmF0ZVByb2Nlc3MoV2ViUGFnZVByb3h5OjpUZXJtaW5hdGlvblJl
YXNvbjo6UmVzb3VyY2VFeGhhdXN0aW9uV2hpbGVJbkJhY2tncm91bmQpOworfQorCiB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6dXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKQogewog
ICAgIGlmIChtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDAxY2I4OWYzNThiMjQyNjQyOTc0YTNi
MTA3MWExN2E1ZGIyNzU0NmYuLjY0Y2E3Mjc2YmM0ODlhZmU3YTAwNTQ5ZDVlYjUwODBkNDc1NTIz
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTE2
MSw2ICsxNjEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtZW1vcnlQcmVzc3VyZVN0YXR1c0NoYW5n
ZWQoYm9vbCBpc1VuZGVyTWVtb3J5UHJlc3N1cmUpIHsgbV9pc1VuZGVyTWVtb3J5UHJlc3N1cmUg
PSBpc1VuZGVyTWVtb3J5UHJlc3N1cmU7IH0KICAgICBib29sIGlzVW5kZXJNZW1vcnlQcmVzc3Vy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNVbmRlck1lbW9yeVByZXNzdXJlOyB9CiAKKyAgICB2b2lk
IGRpZEV4Y2VlZEJhY2tncm91bmRDUFVMaW1pdCgpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IFdlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggOTI1YjRkY2FhNTRjODE0MzkzYzc5ZGJlN2Q4YTMwMGIyMzc4MDIxMC4uYTk1
OTFjNDMyNGVhMWE5YjE3M2Q3NzdhNDZmYmU1NTNmZDJjZGVjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC00NSw2
ICs0NSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAK
ICAgICBTZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQog
CisgICAgRGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0KCkKKwogICAgIFJldGFpbkljb25Gb3JQ
YWdlVVJMKFN0cmluZyBwYWdlVVJMKQogICAgIFJlbGVhc2VJY29uRm9yUGFnZVVSTChTdHJpbmcg
cGFnZVVSTCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IGFlODBmNWYyNmUzMGI0OTZkOWU4NmM2MWYwZDE2ZTU3MDcwMmIwZTguLjQxN2Vh
OWRkZWQ3Y2IzYzQxNDYwYjlkMWNhNmIyMDk4Y2E4ZDA1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM2MSw2ICszNjEsNyBAQCBXZWJQ
YWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCiAgICAgLCBtX3VzZXJBY3Rpdml0eUh5c3RlcmVzaXMoW3RoaXNdKEh5c3Rl
cmVzaXNTdGF0ZSkgeyB1cGRhdGVVc2VyQWN0aXZpdHkoKTsgfSkKICAgICAsIG1fdXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbihwYXJhbWV0ZXJzLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24pCiAgICAgLCBtX292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5IHsgcGFyYW1ldGVycy5v
dmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB9CisgICAgLCBtX2JhY2tncm91bmRDUFVMaW1p
dChwYXJhbWV0ZXJzLmJhY2tncm91bmRDUFVMaW1pdCkKIHsKICAgICBBU1NFUlQobV9wYWdlSUQp
OwogCkBAIC0yNjI0LDYgKzI2MjUsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUo
QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSwgYm9vbCB3YW50c0RpZAogICAgICAg
ICBwbHVnaW5WaWV3LT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKGNoYW5nZWQpOwogCiAgICAgbV9k
cmF3aW5nQXJlYS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShjaGFuZ2VkLCB3YW50c0RpZFVwZGF0
ZUFjdGl2aXR5U3RhdGUsIGNhbGxiYWNrSURzKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZShtX3BhZ2VJRCwgY2hhbmdlZCk7CiAKICAgICBp
ZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpCiAgICAgICAgIHVwZGF0ZUlz
SW5XaW5kb3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IDM3ZDgxNDQ3MzlmNTdjNjAwNjc3NjFkN2MzNzg1MTk5YTQwYTlhYzEuLmNmMWZjYzdm
N2Y0MzQyY2NjYzk1NDA3ZjRmZjViNzc1MjE5NWViMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtOTcyLDYgKzk3Miw3IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAgICAgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5KiB1cmxTY2hlbWVIYW5kbGVyRm9y
U2NoZW1lKGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiYWNrZ3Jv
dW5kQ1BVTGltaXQoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDUFVMaW1pdDsgfQogCiBw
cml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJiYpOwpAQCAtMTU1MCw2ICsxNTUxLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpV
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIG1fdXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
biB7IFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiB9OwogCiAgICAg
Y29uc3QgU3RyaW5nIG1fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgY29uc3Qg
c3RkOjpvcHRpb25hbDxkb3VibGU+IG1fYmFja2dyb3VuZENQVUxpbWl0OwogCiAgICAgSGFzaE1h
cDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk+PiBtX3Nj
aGVtZVRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFdl
YlVSTFNjaGVtZUhhbmRsZXJQcm94eSo+IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclBy
b3h5TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNWRk
Y2E5OGMwZDY4OWRlNDA3NDVkOTZlZWEwM2U2ZjFmMzA4MmJmYi4uMGM5ZTc0ZGI3NDc2N2NmYzU0
YmY4NmU0YjY4YmM4ZDg5MzA0Yzg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCkBAIC03MSw2ICs3MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9BWE9iamVjdENh
Y2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0NQVU1vbml0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbW1vblZNLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9ETlMuaD4KQEAgLTU4MCw2ICs1ODEsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmNyZWF0
ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YQogCiAgICAgICAgIC8vIEJhbGFuY2VkIGJ5IGFuIGVuYWJsZVRlcm1pbmF0aW9uIGluIHJlbW92
ZVdlYlBhZ2UuCiAgICAgICAgIGRpc2FibGVUZXJtaW5hdGlvbigpOworICAgICAgICB1cGRhdGVC
YWNrZ3JvdW5kQ1BVTGltaXQoKTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS0+cmVpbml0aWFsaXplV2ViUGFnZShXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIApAQCAt
NTk0LDYgKzU5Niw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBw
YWdlSUQpCiAgICAgbV9wYWdlTWFwLnJlbW92ZShwYWdlSUQpOwogCiAgICAgZW5hYmxlVGVybWlu
YXRpb24oKTsKKyAgICB1cGRhdGVCYWNrZ3JvdW5kQ1BVTGltaXQoKTsKIH0KIAogYm9vbCBXZWJQ
cm9jZXNzOjpzaG91bGRUZXJtaW5hdGUoKQpAQCAtMTI2Myw4ICsxMjY2LDIyIEBAIHZvaWQgV2Vi
UHJvY2Vzczo6dXBkYXRlQWN0aXZlUGFnZXMoKQogewogfQogCit2b2lkIFdlYlByb2Nlc3M6OnVw
ZGF0ZUJhY2tncm91bmRDUFVMaW1pdCgpCit7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6dXBkYXRl
QmFja2dyb3VuZENQVU1vbml0b3JTdGF0ZSgpCit7Cit9CisKICNlbmRpZgogCit2b2lkIFdlYlBy
b2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHVpbnQ2NF90LCBXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkKQoreworICAgIGlmIChjaGFuZ2VkICYgV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQorICAgICAgICB1cGRhdGVCYWNrZ3JvdW5kQ1BVTW9u
aXRvclN0YXRlKCk7Cit9CisKICNpZiBQTEFURk9STShJT1MpCiB2b2lkIFdlYlByb2Nlc3M6OnJl
c2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9ucygpCiB7CkBAIC0xNTU2LDYgKzE1NzMsMTUgQEAg
dm9pZCBXZWJQcm9jZXNzOjpwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogICAg
IG1fZG5zUHJlZmV0Y2hIeXN0ZXJlcmlzLmltcHVsc2UoKTsKIH0KIAorYm9vbCBXZWJQcm9jZXNz
OjpoYXNWaXNpYmxlV2ViUGFnZSgpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBwYWdlIDogbV9w
YWdlTWFwLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChwYWdlLT5pc1Zpc2libGUoKSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNpZiBV
U0UoTElCV0VCUlRDKQogTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0
d29yaygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDAxYmFi
M2I1NDgwMzFhODYwMDkzZjk2ZmFiOGFmZGY3ZWQ1ZDE2YzAuLjliODA5NzlmNGI1MzRjOWUxZTI4
MjdmMmU5OTRkMGNkN2NmZjdjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCkBAIC02Miw2ICs2Miw3IEBAIGNsYXNzIE9iamVjdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBDUFVNb25pdG9yOwogY2xh
c3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgUGFnZUdyb3VwOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwpAQCAtMTk0LDYgKzE5NSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCB1cGRh
dGVBY3RpdmVQYWdlcygpOworICAgIHZvaWQgcGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UodWlu
dDY0X3QgcGFnZUlELCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkKTsKIAog
ICAgIHZvaWQgc2V0SGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0luY3JlYXNlTGltaXQoaW50
IG1pbGxpc2Vjb25kcyk7CiAKQEAgLTMxNyw2ICszMTksOSBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGVzdHJveUF1dG9tYXRpb25TZXNzaW9uUHJveHkoKTsKIAogICAgIHZvaWQgbG9nRGlhZ25vc3Rp
Y01lc3NhZ2VGb3JOZXR3b3JrUHJvY2Vzc0NyYXNoKCk7CisgICAgYm9vbCBoYXNWaXNpYmxlV2Vi
UGFnZSgpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlQmFja2dyb3VuZENQVUxpbWl0KCk7CisgICAg
dm9pZCB1cGRhdGVCYWNrZ3JvdW5kQ1BVTW9uaXRvclN0YXRlKCk7CiAKICAgICAvLyBDaGlsZFBy
b2Nlc3MKICAgICB2b2lkIGluaXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRp
YWxpemF0aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOwpAQCAtNDE4LDYgKzQyMywxMCBAQCBwcml2
YXRlOgogCiAgICAgdW5zaWduZWQgbV9wYWdlc01hcmtpbmdMYXllcnNBc1ZvbGF0aWxlIHsgMCB9
OwogICAgIGJvb2wgbV9zdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciB7IGZhbHNlIH07Cisj
aWYgUExBVEZPUk0oTUFDKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDUFVNb25pdG9y
PiBtX2JhY2tncm91bmRDUFVNb25pdG9yOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2Jh
Y2tncm91bmRDUFVMaW1pdDsKKyNlbmRpZgogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpVc2VyR2Vz
dHVyZVRva2VuICosIHVpbnQ2NF90PiBtX3VzZXJHZXN0dXJlVG9rZW5zOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGQ5
MjBiODg3YjE5YTVjNTZjMWU3MmYzODIwM2E0MjUwN2Q5MzVlM2UuLmUwZjgyNjk0MWNjY2NlOThj
YmNjZTIyMWE5ZGE3YTNhYmQ4ZGFkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0
IDxKYXZhU2NyaXB0Q29yZS9PcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0Q2Fj
aGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0NQVU1vbml0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Gb250Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udENhc2NhZGUuaD4KQEAg
LTc3LDYgKzc4LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAorI2lmIFBMQVRGT1JNKE1BQykKK3N0YXRpYyBjb25zdCBTZWNvbmRzIGJhY2tncm91
bmRDUFVNb25pdG9yaW5nSW50ZXJ2YWwgeyAxNV9taW4gfTsKKyNlbmRpZgorCiB2b2lkIFdlYlBy
b2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKQogewogfQpAQCAtMzY5LDYg
KzM3NCw0OSBAQCB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUFjdGl2ZVBhZ2VzKCkKICNlbmRpZgog
fQogCit2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUJhY2tncm91bmRDUFVMaW1pdCgpCit7CisjaWYg
UExBVEZPUk0oTUFDKQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiYWNrZ3JvdW5kQ1BVTGlt
aXQ7CisKKyAgICAvLyBVc2UgdGhlIGxhcmdlc3QgbGltaXQgYW1vbmcgYWxsIHBhZ2VzIGluIHRo
aXMgcHJvY2Vzcy4KKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpIHsK
KyAgICAgICAgYXV0byBwYWdlQ1BVTGltaXQgPSBwYWdlLT5iYWNrZ3JvdW5kQ1BVTGltaXQoKTsK
KyAgICAgICAgaWYgKCFwYWdlQ1BVTGltaXQpIHsKKyAgICAgICAgICAgIGJhY2tncm91bmRDUFVM
aW1pdCA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGlmICghYmFja2dyb3VuZENQVUxpbWl0IHx8IHBhZ2VDUFVMaW1pdCA+IGJhY2tncm91bmRD
UFVMaW1pdC52YWx1ZSgpKQorICAgICAgICAgICAgYmFja2dyb3VuZENQVUxpbWl0ID0gcGFnZUNQ
VUxpbWl0OworICAgIH0KKworICAgIGlmIChtX2JhY2tncm91bmRDUFVMaW1pdCA9PSBiYWNrZ3Jv
dW5kQ1BVTGltaXQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2dyb3VuZENQVUxpbWl0
ID0gYmFja2dyb3VuZENQVUxpbWl0OworICAgIHVwZGF0ZUJhY2tncm91bmRDUFVNb25pdG9yU3Rh
dGUoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUJhY2tncm91bmRDUFVN
b25pdG9yU3RhdGUoKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIW1fYmFja2dyb3Vu
ZENQVUxpbWl0IHx8IGhhc1Zpc2libGVXZWJQYWdlKCkpIHsKKyAgICAgICAgaWYgKG1fYmFja2dy
b3VuZENQVU1vbml0b3IpCisgICAgICAgICAgICBtX2JhY2tncm91bmRDUFVNb25pdG9yLT5zZXRD
UFVMaW1pdChzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KCFtX2JhY2tncm91bmRDUFVNb25pdG9yKSB7CisgICAgICAgIG1fYmFja2dyb3VuZENQVU1vbml0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENQVU1vbml0b3I+KGJhY2tncm91bmRDUFVNb25pdG9yaW5n
SW50ZXJ2YWwsIFt0aGlzXSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhQZXJmb3JtYW5jZUxv
Z2dpbmcsICIlcCAtIFdlYlByb2Nlc3MgZXhjZWVkZWQgYmFja2dyb3VuZCBDUFUgbGltaXQgb2Yg
JS4xZiUlIiwgdGhpcywgbV9iYWNrZ3JvdW5kQ1BVTGltaXQudmFsdWUoKSAqIDEwMCk7CisgICAg
ICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkRpZEV4Y2VlZEJhY2tncm91bmRDUFVMaW1pdCgpLCAwKTsKKyAgICAgICAgfSk7
CisgICAgfQorICAgIG1fYmFja2dyb3VuZENQVU1vbml0b3ItPnNldENQVUxpbWl0KG1fYmFja2dy
b3VuZENQVUxpbWl0LnZhbHVlKCkpOworI2VuZGlmCit9CisKIFJlZlB0cjxPYmpDT2JqZWN0R3Jh
cGg+IFdlYlByb2Nlc3M6OnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMoT2JqQ09iamVjdEdyYXBo
JiBvYmplY3RHcmFwaCkKIHsKICAgICBzdHJ1Y3QgVHJhbnNmb3JtZXIgZmluYWwgOiBPYmpDT2Jq
ZWN0R3JhcGg6OlRyYW5zZm9ybWVyIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304084</attachid>
            <date>2017-03-10 15:08:16 -0800</date>
            <delta_ts>2017-03-10 16:20:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169456-20170310150815.patch</filename>
            <type>text/plain</type>
            <size>39633</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVlNjBmNDQ0YjBmNDg0
YmRkYzU3NGUyM2IxOGJmNmJhYTA3NDBmYi4uZWQ4NGY1NzY5NjcyNzkxOTcxNGYxMGJlNzU0MjI2
MDhkNjEwNTYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTAzLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdGVybWluYXRpb24g
YmFja2dyb3VuZCBXZWJQcm9jZXNzZXMgdGhhdCBnbyBvdmVyIGEgZ2l2ZW4gQ1BVIHVzYWdlIHRo
cmVzaG9sZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY5NDU2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDk2MDk2OD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ1BVTW9uaXRvciB1dGlsaXR5
IGNsYXNzIHRvIG1vbml0b3IgQ1BVIHVzYWdlIGFuZCBjYWxsIGEgcHJvdmlkZWQgbGFtYmRhCisg
ICAgICAgIHdoZW5ldmVyIHRoZSBwcm9jZXNzIGV4Y2VlZHMgdGhlIHByb3ZpZGVkIENQVSBsaW1p
dCBvdmVyIGEgZ2l2ZW4gcGVyaW9kIG9mCisgICAgICAgIHRpbWUuCisKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vQ1BVTW9u
aXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1BVTW9uaXRvcjo6Q1BVTW9uaXRv
cik6CisgICAgICAgIChXZWJDb3JlOjpDUFVNb25pdG9yOjpzZXRDUFVMaW1pdCk6CisgICAgICAg
IChXZWJDb3JlOjpDUFVNb25pdG9yOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9D
UFVNb25pdG9yLmg6IEFkZGVkLgorCiAyMDE3LTAzLTEwICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyB0aGUgcGFnZSB0byByZW5kZXIgYmVmb3JlIDxs
aW5rPiBzdHlsZXNoZWV0IHRhZ3MgaW4gYm9keQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGJjZDQ1ZDg2YWUzZWI5
YWJlMzUzZDMyOWM2ZDg3MDE1NDUzNWFiMDkuLjU5MTRhNTdmMzAzZDEzNzUyMjA0ODgyMWY1MjE4
ZTA4ZmY1YjM5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjkgQEAKKzIwMTctMDMtMTAgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0ZXJtaW5hdGlv
biBiYWNrZ3JvdW5kIFdlYlByb2Nlc3NlcyB0aGF0IGdvIG92ZXIgYSBnaXZlbiBDUFUgdXNhZ2Ug
dGhyZXNob2xkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk0NTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwOTYwOTY4PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHRlcm1pbmF0aW9uIGJh
Y2tncm91bmQgV2ViUHJvY2Vzc2VzIHRoYXQgZ28gb3ZlciBhIGdpdmVuIENQVSB1c2FnZSB0aHJl
c2hvbGQuCisgICAgICAgIFRoaXMgY2FuIGJlIGVuYWJsZWQgY2xpZW50IHNpZGUgdmlhIHRoZSBX
S1BhZ2VDb25maWd1cmF0aW9uU2V0QmFja2dyb3VuZENQVUxpbWl0KCkKKyAgICAgICAgU1BJLiBU
aGUgY2xpZW50IHByb3ZpZGVzIHRoZSBhY3R1YWwgQ1BVIHRocmVzaG9sZCBpdCB3YW50cyB0byB1
c2UgYXQgcGFnZSBsZXZlbC4KKworICAgICAgICBJZiBzdWNoIGxpbWl0IGlzIHNldCwgd2hlbmV2
ZXIgYSBXZWJDb250ZW50IHByb2Nlc3MgaGFzIG5vIHZpc2libGUgcGFnZXMsIHdlIHN0YXJ0Cisg
ICAgICAgIG1vbml0b3JpbmcgaXRzIENQVSB1c2FnZSBvdmVyIDE1IG1pbnV0ZXMgcGVyaW9kcy4g
QXQgdGhlIGVuZCBvZiBlYWNoIHBlcmlvZCwgd2UKKyAgICAgICAgY2hlY2sgaWYgdGhlIHByb2Nl
c3MnIGF2ZXJhZ2UgQ1BVIHVzYWdlIG92ZXIgdGhpcyBwZXJpb2Qgd2FzIGdyZWF0ZXIgdGhhbiB0
aGUKKyAgICAgICAgYmFja2dyb3VuZCBDUFUgbGltaXQuIElmIGl0IGdyZWF0ZXIsIHRoZSBXZWJD
b250ZW50IHByb2Nlc3Mgc2VuZCBhbiBJUEMgbWVzc2FnZSB0bworICAgICAgICB0aGUgVUlQcm9j
ZXNzIGxldHRpbmcgaXQga25vdyB0aGF0IGl0IGV4Y2VlZGVkIHRoZSBDUFUgbGltaXQuIFRoZSBV
SSBwcm9jZXNzIHdpbGwKKyAgICAgICAgdGhlbiBsb2cgYSBtZXNzYWdlIGFuZCB0ZXJtaW5hdGUg
dGhlIHByb2Nlc3MgdW5sZXNzIGl0IGhhcyBhbnkgYXVkaW8gcGxheWluZy4KKworICAgICAgICBP
bmNlIGEgV2ViUHJvY2VzcyBoYXMgYmVlbiB0ZXJtaW5hdGVkLCB3ZSBkbyBub3QgdGhlIGNsaWVu
dCBrbm93IHVudGlsIG9uZSBvZiBpdHMKKyAgICAgICAgcGFnZXMgYmVjb21lcyB2aXNpYmxlIGFn
YWluLiBXaGVuIHRoaXMgaGFwcGVucywgd2UgY2FsbCB0aGUgcHJvY2Vzc0RpZENyYXNoCisgICAg
ICAgIGRlbGVnYXRlIGFuZCBTYWZhcmkgd2lsbCB0YWtlIGNhcmUgb2YgcmVsb2FkaW5nIHRoZSB0
YWIgYW5kIHNob3dpbmcgdGhlIGNyYXNoCisgICAgICAgIGJhbm5lciB0aGVuLiBUaGlzIGlzIGRv
bmUgYmVjYXVzZSB3ZSBkbyBub3Qgd2FudCB0byByZWxvYWQgY29udGVudCB0aGF0IGlzCisgICAg
ICAgIHVzaW5nIGEgbG90IG9mIENQVSB3aGlsZSBpbiB0aGUgYmFja2dyb3VuZC4KKworICAgICAg
ICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICBBZGQgYmFja2dyb3VuZENQVUxpbWl0
IHRvIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b246OmNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24u
aDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmJhY2tncm91bmRDUFVMaW1pdCk6
CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRCYWNrZ3JvdW5kQ1BVTGltaXQp
OgorICAgICAgICBBZGQgYmFja2dyb3VuZENQVUxpbWl0IHRvIEFQSVBhZ2VDb25maWd1cmF0aW9u
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuY3Bw
OgorICAgICAgICAoV0tQYWdlQ29uZmlndXJhdGlvblNldEJhY2tncm91bmRDUFVMaW1pdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuaDoKKyAgICAg
ICAgQWRkIFNQSSB0byBzZXQgYmFja2dyb3VuZCBDUFUgbGltaXQuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZWF0dGFjaFRvV2ViUHJvY2Vzcyk6CisgICAgICAgIFJlc2V0IG1fd2FzVGVybWluYXRlZER1ZVRv
UmVzb3VyY2VFeGhhdXN0aW9uV2hpbGVJbkJhY2tncm91bmQgZmxhZworICAgICAgICBhcyB0aGUg
cHJvY2VzcyB3YXMgcmVzdGFydGVkLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKToKKyAgICAgICAgV2hlbiB0aGUgdmlzaWJpbGl0
eSBzdGF0ZSBjaGFuZ2VzIGZvciBhIHBhZ2UgdGhhdCB3YXMgdGVybWluYXRlZAorICAgICAgICB3
aGlsZSBpbiB0aGUgYmFja2dyb3VuZCBkdWUgdG8gZXhjZWVkZWQgQ1BVIGxpbWl0LCBub3RpZnkg
dGhlCisgICAgICAgIGNsaWVudCB0aGF0IHRoZSBwcm9jZXNzIGNyYXNoZWQgdmlhIHRoZSBwcm9j
ZXNzRGlkQ3Jhc2ggZGVsZWdhdGUuCisgICAgICAgIFNhZmFyaSB3aWxsIHVzZSB0aGlzIGRlbGVn
YXRlIHRvIHJlbG9hZCB0aGUgdGFiIGFuZCBzaG93IHRoZSBjcmFzaAorICAgICAgICBiYW5uZXIu
CisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp0ZXJtaW5hdGVQcm9jZXNzKToKKyAg
ICAgICAgQWRkIHBhcmFtZXRlciB0byB0ZXJtaW5hdGVQcm9jZXNzKCkgdG8gcHJvdmlkZSB0aGUg
cmVhc29uLiBJZiB0aGUKKyAgICAgICAgcGFnZSB3YXMgdGVybWluYXRlZCBkdWUgdG8gcmVhY2hp
bmcgQ1BVIGxpbWl0LCBzZXQgYSBmbGFnIHNvIHdlCisgICAgICAgIGNhbiBkZWxheSBjYWxsaW5n
IHByb2Nlc3NEaWRDcmFzaCB1bnRpbCB0aGUgcGFnZSBiZWNvbWVzIHZpc2libGUKKyAgICAgICAg
YWdhaW4uCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRl
cnMpOgorICAgICAgICBTZXQgYmFja2dyb3VuZENQVUxpbWl0IG9uIHRoZSBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OnBhZ2VzQ29weSk6CisgICAgICAgIEFkZCB1dGlsaXR5IGZ1bmN0aW9uIHRvIGNvcHkgdGhlIGxp
c3Qgb2YgcGFnZXMgdG8gYSBWZWN0b3IuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpkaWRFeGNlZWRCYWNrZ3JvdW5kQ1BVTGltaXQpOgorICAgICAgICBXaGVuIHdlIGdldCBh
biBJUEMgbWVzc2FnZSBmcm9tIGEgV2ViQ29udGVudCBwcm9jZXNzIHRvIGxldCB1cworICAgICAg
ICBrbm93IHRoYXQgdGhlIHByb2Nlc3MgZXhjZWVkZWQgdGhlIGJhY2tncm91bmQgQ1BVIGxpbWl0
LCB3ZSBsb2cKKyAgICAgICAgYSBtZXNzYWdlIGFuZCB3ZSB0ZXJtaW5hdGUgaXQgaWYgaXQgaGFz
IG5vIGF1ZGlvIHBsYXlpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgor
ICAgICAgICBBZGQgRGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0IElQQyBtZXNzYWdlIHNvIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MKKyAgICAgICAgY2FuIGxldCB1cyBrbm93IHdoZW4gaXQgZ29l
cyBvdmVyIHRoZSBiYWNrZ3JvdW5kIENQVSBsaW1pdC4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9iYWNrZ3JvdW5kQ1BVTGlt
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKToKKyAgICAg
ICAgTm90aWZ5IHRoZSBXZWJQcm9jZXNzIHdoZW5ldmVyIHRoZSBhY3Rpdml0eSBzdGF0ZSBvZiBh
IFdlYlBhZ2UgY2hhbmdlcy4KKyAgICAgICAgVGhlIFdlYlByb2Nlc3MgY3VycmVudGx5IHVzZXMg
dGhpcyBpbmZvcm1hdGlvbiB0byBkZXRlcm1pbmUgd2hlbiB0aGUKKyAgICAgICAgdmlzaWJpbGl0
eSBvZiBhIHBhZ2UgY2hhbmdlcy4gVGhpcyBpcyBuZWVkZWQgYXMgd2Ugb25seSB3YW50IHRvIG1v
bml0b3IKKyAgICAgICAgQ1BVIHVzYWdlIG9mICpiYWNrZ3JvdW5kKiBXZWJDb250ZW50IHByb2Nl
c3NlcyAocHJvY2Vzc2VzIHRoYXQgaGF2ZSBubworICAgICAgICB2aXNpYmxlIFdlYlBhZ2UpLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6YmFja2dyb3VuZENQVUxpbWl0KToKKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNyZWF0ZVdlYlBh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKToKKyAgICAg
ICAgQ2FsbCB1cGRhdGVCYWNrZ3JvdW5kQ1BVTGltaXQoKSB3aGVuZXZlciBhIFdlYlBhZ2UgaXMg
YWRkZWQgb3IgcmVtb3ZlZAorICAgICAgICBzaW5jZSB0aGUgbGltaXQgaXMgcGVyIHBhZ2UuCisK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXBkYXRlQmFja2dyb3VuZENQVUxpbWl0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXBkYXRlQmFja2dyb3VuZENQVU1vbml0b3JT
dGF0ZSk6CisgICAgICAgIE5vLW9wcyBvbiBvdGhlciBwbGF0Zm9ybXMgdGhhbiBNYWMgYXQgdGhl
IG1vbWVudC4KKworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwYWdlQWN0aXZpdHlTdGF0
ZURpZENoYW5nZSk6CisgICAgICAgIENhbGwgdXBkYXRlQmFja2dyb3VuZENQVU1vbml0b3JTdGF0
ZSgpIHdoZW5ldmVyIHRoZSB2aXNpYmlsaXR5IG9mIHRoZQorICAgICAgICBXZWJQYWdlIGNoYW5n
ZXMgYXMgd2Ugb25seSBtb25pdG9yIHRoZSBDUFUgdXNhZ2Ugb2YgKmJhY2tncm91bmQqIFdlYkNv
bnRlbnQKKyAgICAgICAgcHJvY2Vzc2VzLgorCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
Omhhc1Zpc2libGVXZWJQYWdlKToKKyAgICAgICAgQWRkIHV0aWxpdHkgZnVuY3Rpb24gdG8gZGV0
ZXJtaW5lIGlmIHRoZXJlIGlzIGFueSB2aXNpYmxlIFdlYlBhZ2UgaW4gdGhpcworICAgICAgICBX
ZWJDb250ZW50IHByb2Nlc3MuIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGZhbHNlLCB0aGVuIHdl
IGNvbnNpZGVyIHRoZQorICAgICAgICBXZWJDb250ZW50IHByb2Nlc3MgdG8gYmUgYSAqYmFja2dy
b3VuZCogV2ViQ29udGVudCBwcm9jZXNzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXBkYXRlQmFja2dyb3VuZENQVUxpbWl0KToK
KyAgICAgICAgQ29tcHV0ZSB0aGUgV2ViUHJvY2VzcycgYmFja2dyb3VuZCBDUFUgbGltaXQgZ2l2
ZW4gdGhlIGxpbWl0IHNldCBmb3IgZWFjaAorICAgICAgICBvZiBpdHMgV2ViUGFnZXMuIFdlIHVz
ZSB0aGUgbGFyZ2VzdCAoaS5lLiBtb3N0IHBlcm1pc3NpdmUpIGJhY2tncm91bmQgQ1BVCisgICAg
ICAgIGxpbWl0IGFtb25nIGFsbCB0aGUgcGFnZXMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6dXBkYXRlQmFja2dyb3VuZENQVU1vbml0b3JTdGF0ZSk6CisgICAgICAgIFVwZGF0ZSB0
aGUgc3RhdGUgb2YgdGhlIGJhY2tncm91bmQgQ1BVIG1vbml0b3IuIFRoaXMgaXMgY2FsbGVkIHdo
ZW5ldmVyCisgICAgICAgIHRoZSBiYWNrZ3JvdW5kIENQVSBsaW1pdCBvZiB0aGUgcHJvY2VzcyBj
aGFuZ2VzIG9yIHdoZW5ldmVyIHRoZSB2aXNpYmlsaXR5CisgICAgICAgIG9mIGEgV2ViUGFnZSBj
aGFuZ2VzLgorCiAyMDE3LTAzLTEwICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbV0syXSBHdWFyZCBHTGliLXNwZWNpZmljIHR5cGVkZWZzIGluIEluamVj
dGVkQnVuZGxlLmggd2l0aCBVU0UoR0xJQikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhM2JiNmY2ZGExYzk2NzQzMjk3NTFjYjhk
MDc0OTY5YWNlYjhkMWRjLi5kMWEyZmFlZjA4NTBkM2JiNGJlZDJhMjQwYmJkMjRhMmJkMTFjZDAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xODA1LDYgKzE4MDUsOCBAQAogCQk0NjczMDIwMjFDNEVGRTc4MDBCQ0IzNTcgLyog
SWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcg
LyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87IH07CiAJCTQ2
ODlGMUFGMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAv
KiBGaWxlTWV0YWRhdGEuaCAqLzsgfTsKIAkJNDZCNjNGNkMxQzZFOEQxOTAwMkU5MTRCIC8qIEpT
RXZlbnRUYXJnZXRDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9t
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZD
Njk2Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBD
UFVNb25pdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0ExRTcyMDVFNDAw
NTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRDFBOUJCRTI5MDBBNzlB
NDEgLyogR2VvTm90aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZDODNFRkIxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmNwcCAq
LzsgfTsKIAkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJCRTI5
MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NkRCQjY1MDFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNl
cnZlck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZEQkI2NEUxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCAqLzsgfTsKQEAg
LTkyMjQsNiArOTIyNiw4IEBACiAJCTQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVP
cGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBG
aWxlTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZU1ldGFk
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJF
OTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRXZlbnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDZDNjk2QzkxRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ1BVTW9uaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0NkM2OTZDQTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDUFVNb25pdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDODNFRkIxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlm
aWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlb05vdGlmaWVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDODNFRkMxQTlCQkUyOTAwQTc5
QTQxIC8qIEdlb05vdGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdl
b05vdGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REJCNjRFMUFCOEM5
NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIzMjI4LDYgKzIzMjMyLDggQEAKIAkJCQlEOEI2MTUyRTEwMzI0OTUxMDBDODU1NEEgLyog
Q29va2llLmggKi8sCiAJCQkJMzM5QjVCNjIxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJh
dGVneS5oICovLAogCQkJCTg2MkYxMjlEMThDMTU3MkMwMDVDNTRBRiAvKiBDb3VudGVkVXNlckFj
dGl2aXR5LmggKi8sCisJCQkJNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3Iu
Y3BwICovLAorCQkJCTQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggKi8s
CiAJCQkJNDYzNzYzMDYxRTI2RkRCQTAwOENENDZEIC8qIENQVVRpbWUuY3BwICovLAogCQkJCTQ2
Mzc2MzA3MUUyNkZEQkEwMDhDRDQ2RCAvKiBDUFVUaW1lLmggKi8sCiAJCQkJRTExQUYxNTAxMUI5
QTFBMzAwODA1MTAzIC8qIEN1cnNvci5jcHAgKi8sCkBAIC0yODU4Miw2ICsyODU4OCw3IEBACiAJ
CQkJRTEzOTg2NjQxNTQ3ODQ3NDAwMUUzRjY1IC8qIFN0eWxlUmVzb2x2ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0QkJFRDREMTRGQ0RCQTEwMDNGMEI5OCAvKiBTdHlsZVJ1bGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0OTQ2RUFGMTU2RTY0REQwMEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QzY5NkNCMUU3MjA1RjcwMDU5NzkzNyAvKiBDUFVNb25p
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDYxRDY1RjFCQjBDODBEMDBDQjU2NDUgLyogU3R5
bGVTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ3QTVFM0UxOTVCOEM4QTAwNDgzMTAwIC8q
IFN0eWxlU2Nyb2xsU25hcFBvaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUQ2MzgwMTAxQUYx
NzMyMjAwMzFBMTVDIC8qIFN0eWxlU2VsZkFsaWdubWVudERhdGEuaCBpbiBIZWFkZXJzICovLApA
QCAtMjk4MTUsNiArMjk4MjIsNyBAQAogCQkJCTU5QjU5NzczMTEwODY1NkIwMDcxNTlFOCAvKiBC
cmlkZ2VKU0MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E0NTAzMkYxOERCNzE3MjAwMzc3QjM0
IC8qIEJ1ZmZlcmVkTGluZVJlYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVCM0RBRjEy
NTFGMTJEMDAzRUYyNjkgLyogQnV0dG9uSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTQ2QzY5NkNDMUU3MjA1RkMwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBNTY5Q0Y3MEQ3RTJCODIwMDdDMzk4MyAvKiBjX2NsYXNzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUVDQTY4MEM5MUU2NzczMEIwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0g
aW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUNGOTBEN0UyQjgyMDA3QzM5ODMgLyogY19pbnN0YW5j
ZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NQVU1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzIzNWI2MjgzZWI4ZjZjYzVlYzRiM2YwNzMwZmVjZGNlNjM5NGQ3YQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuY3BwCkBA
IC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ1BVTW9uaXRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NQVU1vbml0b3I6OkNQ
VU1vbml0b3IoU2Vjb25kcyBjaGVja0ludGVydmFsLCBFeGNlZWRlZENQVUxpbWl0SGFuZGxlciYm
IGV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyKQorICAgIDogbV9jaGVja0ludGVydmFsKGNoZWNrSW50
ZXJ2YWwpCisgICAgLCBtX2V4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyKFdURk1vdmUoZXhjZWVkZWRD
UFVMaW1pdEhhbmRsZXIpKQorICAgICwgbV90aW1lcigqdGhpcywgJkNQVU1vbml0b3I6OnRpbWVy
RmlyZWQpCit7Cit9CisKK3ZvaWQgQ1BVTW9uaXRvcjo6c2V0Q1BVTGltaXQoc3RkOjpvcHRpb25h
bDxkb3VibGU+IGNwdUxpbWl0KQoreworICAgIGlmIChtX2NwdUxpbWl0ID09IGNwdUxpbWl0KQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2NwdUxpbWl0ID0gY3B1TGltaXQ7CisgICAgaWYgKG1f
Y3B1TGltaXQpIHsKKyAgICAgICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAg
ICAgIG1fbGFzdENQVVRpbWUgPSBnZXRDUFVUaW1lKCk7CisgICAgICAgICAgICBtX3RpbWVyLnN0
YXJ0UmVwZWF0aW5nKG1fY2hlY2tJbnRlcnZhbCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAg
ICAgICAgbV90aW1lci5zdG9wKCk7Cit9CisKK3ZvaWQgQ1BVTW9uaXRvcjo6dGltZXJGaXJlZCgp
Cit7CisgICAgQVNTRVJUKG1fY3B1TGltaXQpOworCisgICAgaWYgKCFtX2xhc3RDUFVUaW1lKSB7
CisgICAgICAgIG1fbGFzdENQVVRpbWUgPSBnZXRDUFVUaW1lKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvIGNwdVRpbWUgPSBnZXRDUFVUaW1lKCk7CisgICAgaWYgKCFjcHVU
aW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNwdVVzYWdlUGVyY2VudCA9IGNwdVRp
bWUudmFsdWUoKS5wZXJjZW50YWdlQ1BVVXNhZ2VTaW5jZShtX2xhc3RDUFVUaW1lLnZhbHVlKCkp
OworICAgIGlmIChjcHVVc2FnZVBlcmNlbnQgPiBtX2NwdUxpbWl0LnZhbHVlKCkgKiAxMDApCisg
ICAgICAgIG1fZXhjZWVkZWRDUFVMaW1pdEhhbmRsZXIoKTsKKworICAgIG1fbGFzdENQVVRpbWUg
PSBjcHVUaW1lOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DUFVNb25pdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg4ODI2ODE0M2U0MGEzZTg3ZDdlNjRjMzUxMmM5
OTZhYjFjY2Q3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQ
VU1vbml0b3IuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJDUFVUaW1lLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKworI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENQVU1vbml0b3Ig
eworcHVibGljOgorICAgIHVzaW5nIEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyID0gV1RGOjpGdW5j
dGlvbjx2b2lkKCk+OworICAgIFdFQkNPUkVfRVhQT1JUIENQVU1vbml0b3IoU2Vjb25kcyBjaGVj
a0ludGVydmFsLCBFeGNlZWRlZENQVUxpbWl0SGFuZGxlciYmKTsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0Q1BVTGltaXQoc3RkOjpvcHRpb25hbDxkb3VibGU+KTsKKworcHJpdmF0ZToK
KyAgICB2b2lkIHRpbWVyRmlyZWQoKTsKKworICAgIFNlY29uZHMgbV9jaGVja0ludGVydmFsOwor
ICAgIEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyIG1fZXhjZWVkZWRDUFVMaW1pdEhhbmRsZXI7Cisg
ICAgVGltZXIgbV90aW1lcjsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9jcHVMaW1pdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IG1fbGFzdENQVVRpbWU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggZTg1Y2QxMGY1ZTA1MTVlOGNmZTFmMGVkMjAwMmE4
OWI5ZWQ2YTU0My4uNTEzZjFiOWIwODUxZjhkZmViZDlmOTRlYWFiOTgwNzQyOWYxNzE0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcApAQCAtOTMsNiArOTMsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVt
KHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShv
YnNlcnZlZExheW91dE1pbGVzdG9uZXMpOwogICAgIGVuY29kZXIgPDwgb3ZlcnJpZGVDb250ZW50
U2VjdXJpdHlQb2xpY3k7CisgICAgZW5jb2RlciA8PCBiYWNrZ3JvdW5kQ1BVTGltaXQ7CiAgICAg
ZW5jb2RlciA8PCB1cmxTY2hlbWVIYW5kbGVyczsKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBl
bmNvZGVyIDw8IGljZUNhbmRpZGF0ZUZpbHRlcmluZ0VuYWJsZWQ7CkBAIC0yMjIsNiArMjIzLDkg
QEAgYm9vbCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBXZWJQYWdlQ3JlYXRpb25QYXIKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMub3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYmFja2dyb3VuZENQVUxp
bWl0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLnVybFNjaGVtZUhhbmRsZXJzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApp
bmRleCBiNGZlNmU2NjQ1YmM5NzExOTA3YmM0YzQ3OTJkYWU5OTZkZjc2ZGUwLi5jNDgzM2I0Yjg3
NTFiMmU1MWJiMGZmOTc1ZGIwYjcxODQxM2VjMTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTE0Niw2ICsxNDYsNyBAQCBz
dHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgV2ViQ29yZTo6TGF5b3V0TWls
ZXN0b25lcyBvYnNlcnZlZExheW91dE1pbGVzdG9uZXM7CiAKICAgICBTdHJpbmcgb3ZlcnJpZGVD
b250ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJhY2tncm91
bmRDUFVMaW1pdDsKIAogICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gdXJsU2NoZW1lSGFu
ZGxlcnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQYWdl
Q29uZmlndXJhdGlvbi5jcHAKaW5kZXggMzNjODE5MmUyMjM5NmJhZWFlMmZlYTRmZjc1NDVhMWQ3
MmRkMDc5My4uODgzNzUxMDU0Mjk0YzI3ZTk5NjAyMDY1YzBiYmU5ZGNjMjU3ODFhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlv
bi5jcHAKQEAgLTY4LDYgKzY4LDcgQEAgUmVmPFBhZ2VDb25maWd1cmF0aW9uPiBQYWdlQ29uZmln
dXJhdGlvbjo6Y29weSgpIGNvbnN0CiAgICAgY29weS0+bV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5k
UHJpb3JpdHkgPSB0aGlzLT5tX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTsKICNlbmRp
ZgogICAgIGNvcHktPm1faW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCA9IHRoaXMtPm1faW5p
dGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZDsKKyAgICBjb3B5LT5tX2JhY2tncm91bmRDUFVMaW1p
dCA9IHRoaXMtPm1fYmFja2dyb3VuZENQVUxpbWl0OwogICAgIGNvcHktPm1fY29udHJvbGxlZEJ5
QXV0b21hdGlvbiA9IHRoaXMtPm1fY29udHJvbGxlZEJ5QXV0b21hdGlvbjsKICAgICBjb3B5LT5t
X292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gdGhpcy0+bV9vdmVycmlkZUNvbnRlbnRT
ZWN1cml0eVBvbGljeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElQYWdlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElQYWdlQ29uZmlndXJhdGlvbi5oCmluZGV4IDk4YWUyYWE3MThlMWNmMmQ2NGMxNTI3YzQ2YzYx
NDdjODk0MGY4MDEuLjNmZjRlZmRiYTQzNDRlYmYwZjQxMTE4ZTRmNmNhYmZiMjBiMmI1N2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0
aW9uLmgKQEAgLTkzLDYgKzkzLDkgQEAgcHVibGljOgogICAgIGJvb2wgaW5pdGlhbENhcGl0YWxp
emF0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIG1faW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZDsg
fQogICAgIHZvaWQgc2V0SW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZChib29sIGluaXRpYWxD
YXBpdGFsaXphdGlvbkVuYWJsZWQpIHsgbV9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkID0g
aW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZDsgfQogCisgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGJhY2tncm91bmRDUFVMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENQVUxp
bWl0OyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ1BVTGltaXQoZG91YmxlIGNwdUxpbWl0KSB7
IG1fYmFja2dyb3VuZENQVUxpbWl0ID0gY3B1TGltaXQ7IH0KKwogICAgIGJvb2wgd2FpdHNGb3JQ
YWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fd2FpdHNGb3JQ
YWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdzsgfQogICAgIHZvaWQgc2V0V2FpdHNGb3JQYWlu
dEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdyhib29sIHNob3VsZFN5bmNocm9uaXplKSB7IG1fd2Fp
dHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdyA9IHNob3VsZFN5bmNocm9uaXplOyB9
CiAKQEAgLTEyNCw2ICsxMjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pbml0aWFsQ2FwaXRh
bGl6YXRpb25FbmFibGVkID0gdHJ1ZTsKICAgICBib29sIG1fd2FpdHNGb3JQYWludEFmdGVyVmll
d0RpZE1vdmVUb1dpbmRvdyA9IHRydWU7CiAgICAgYm9vbCBtX2NvbnRyb2xsZWRCeUF1dG9tYXRp
b24gPSBmYWxzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9iYWNrZ3JvdW5kQ1BVTGlt
aXQ7CiAKICAgICBXVEY6OlN0cmluZyBtX292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25m
aWd1cmF0aW9uUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VD
b25maWd1cmF0aW9uUmVmLmNwcAppbmRleCA0ZjRkNWYwOTRmMWI4NDNlMTIyNWYwYjA2MzdhZGQ3
NWM5MTk5ZjcyLi5mYjc1NzU0YmMwNmI2M2I4NTg5NmY2OWUwYmQxYzNkZDBlYTljMWVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlv
blJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZp
Z3VyYXRpb25SZWYuY3BwCkBAIC0xMDgsMyArMTA4LDggQEAgdm9pZCBXS1BhZ2VDb25maWd1cmF0
aW9uU2V0SW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZChXS1BhZ2VDb25maWd1cmF0aW9uUmVm
IGMKIHsKICAgICB0b0ltcGwoY29uZmlndXJhdGlvbiktPnNldEluaXRpYWxDYXBpdGFsaXphdGlv
bkVuYWJsZWQoZW5hYmxlZCk7CiB9CisKK3ZvaWQgV0tQYWdlQ29uZmlndXJhdGlvblNldEJhY2tn
cm91bmRDUFVMaW1pdChXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGRvdWJs
ZSBjcHVMaW1pdCkKK3sKKyAgICB0b0ltcGwoY29uZmlndXJhdGlvbiktPnNldEJhY2tncm91bmRD
UFVMaW1pdChjcHVMaW1pdCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuaAppbmRleCA3MmU3YTZiYzI2Y2I3YTg0
NDhlYTE0YjllMDk4Mjk2NGZlMmQxMTYxLi42NjIzZTdjNTA1OTgxYWVmYjI4YTE4OGVhNWFkMTMz
MzZkMzE2NmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlQ29uZmlndXJhdGlvblJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgV0tfRVhQT1JUIFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBXS1BhZ2VDb25maWd1cmF0aW9uR2V0V2Vic2l0ZURhdGFTdG9y
ZShXS1BhZ2VDb24KIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRXZWJzaXRl
RGF0YVN0b3JlKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIHdlYnNpdGVEYXRhU3RvcmUpOwogCiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VD
b25maWd1cmF0aW9uU2V0SW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZChXS1BhZ2VDb25maWd1
cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGJvb2wgZW5hYmxlZCk7CitXS19FWFBPUlQgdm9pZCBX
S1BhZ2VDb25maWd1cmF0aW9uU2V0QmFja2dyb3VuZENQVUxpbWl0KFdLUGFnZUNvbmZpZ3VyYXRp
b25SZWYgY29uZmlndXJhdGlvbiwgZG91YmxlIGNwdUxpbWl0KTsgLy8gVGVybWluYXRlcyBwcm9j
ZXNzIGlmIGl0IHVzZXMgbW9yZSB0aGFuIENQVSBsaW1pdCBvdmVyIGFuIGV4dGVuZGVkIHBlcmlv
ZCBvZiB0aW1lIHdoaWxlIGluIHRoZSBiYWNrZ3JvdW5kLgogCiAjaWZkZWYgX19jcGx1c3BsdXMK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNrZ3JvdW5kUHJvY2Vz
c1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0JhY2tn
cm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKaW5kZXggNWMwNzllNWNhNjg1Y2Zm
MTk3Y2QwNTdlZDFmMDZmNzBjNjBjNzJjMS4uMTg5YzA5ZTg2MjIxOGIxOTM2ZWM5NjRmMWE2NmJk
NGZlMGZjMmY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0JhY2tncm91
bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKQEAgLTcxLDQg
KzcxLDkgQEAgdm9pZCBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXI6OnRpbWVy
RmlyZWQoKQogICAgIH0pOwogfQogCit2b2lkIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5l
c3NUaW1lcjo6aW52YWxpZGF0ZSgpCit7CisgICAgbV90aW1lci5zdG9wKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Jh
Y2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oCmluZGV4IDE4NzQ5
MjZkZTk5MDFlYjNhOWY0YmVmZjdiMTY4NzZkMWRkYTZhMjIuLmVjZDkyNmI0MjMyNTE4MWFhZWVl
MWU2NmFhNTdhNzUwYTcxYmQ1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9CYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmgKQEAg
LTM0LDYgKzM0LDcgQEAgY2xhc3MgQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVy
IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNz
VGltZXIoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgdm9pZCB1cGRhdGVTdGF0ZSgpOworICAgIHZv
aWQgaW52YWxpZGF0ZSgpOwogCiBwcml2YXRlOgogICAgIHZvaWQgdGltZXJGaXJlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjMDljNTUzZGIyMmY5
OTUwZDdlNWU2NGFjYmY1YjI2MzEzMDEwZDYyLi5mYTY5ZTY5YTVkNDYxNDZhODNkOThiOWEzYTZi
ZDJlYjU5Mjc0NjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtMzU2LDYgKzM1Niw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGll
bnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAgICAgLCBtX2Fs
d2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eShtX2NvbmZpZ3VyYXRpb24tPmFsd2F5c1J1bnNB
dEZvcmVncm91bmRQcmlvcml0eSgpKQogI2VuZGlmCiAgICAgLCBtX2luaXRpYWxDYXBpdGFsaXph
dGlvbkVuYWJsZWQobV9jb25maWd1cmF0aW9uLT5pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVk
KCkpCisgICAgLCBtX2JhY2tncm91bmRDUFVMaW1pdChtX2NvbmZpZ3VyYXRpb24tPmJhY2tncm91
bmRDUFVMaW1pdCgpKQogICAgICwgbV9iYWNrRm9yd2FyZExpc3QoV2ViQmFja0ZvcndhcmRMaXN0
OjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9tYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbihmYWxz
ZSkKICAgICAsIG1fd2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdyhtX2NvbmZp
Z3VyYXRpb24tPndhaXRzRm9yUGFpbnRBZnRlclZpZXdEaWRNb3ZlVG9XaW5kb3coKSkKQEAgLTcx
Niw2ICs3MTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MoKQog
ICAgIEFTU0VSVChtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpTdGF0ZTo6
VGVybWluYXRlZCk7CiAKICAgICBtX2lzVmFsaWQgPSB0cnVlOworICAgIG1fd2FzVGVybWluYXRl
ZER1ZVRvUmVzb3VyY2VFeGhhdXN0aW9uV2hpbGVJbkJhY2tncm91bmQgPSBmYWxzZTsKICAgICBt
X3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UobV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlSUQpOwogCkBAIC0xNTI4LDggKzE1MzAsMTMgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiAgICAgbV9hY3Rpdml0eVN0YXRlQ2hh
bmdlRGlzcGF0Y2hlci0+aW52YWxpZGF0ZSgpOwogI2VuZGlmCiAKLSAgICBpZiAoIWlzVmFsaWQo
KSkKKyAgICBpZiAoIWlzVmFsaWQoKSkgeworICAgICAgICBpZiAobV9wb3RlbnRpYWxseUNoYW5n
ZWRBY3Rpdml0eVN0YXRlRmxhZ3MgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUgJiYgbV93YXNU
ZXJtaW5hdGVkRHVlVG9SZXNvdXJjZUV4aGF1c3Rpb25XaGlsZUluQmFja2dyb3VuZCkgeworICAg
ICAgICAgICAgbV93YXNUZXJtaW5hdGVkRHVlVG9SZXNvdXJjZUV4aGF1c3Rpb25XaGlsZUluQmFj
a2dyb3VuZCA9IGZhbHNlOworICAgICAgICAgICAgcHJvY2Vzc0RpZENyYXNoKCk7CisgICAgICAg
IH0KICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIElmIHRoZSB2aXNpYmlsaXR5IHN0
YXRlIG1heSBoYXZlIGNoYW5nZWQsIHRoZW4gc28gbWF5IHRoZSB2aXN1YWxseSBpZGxlICYgb2Nj
bHVkZWQgYWdub3N0aWMgc3RhdGUuCiAgICAgaWYgKG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZp
dHlTdGF0ZUZsYWdzICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQpAQCAtMjM4Myw3ICsyMzkw
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3Qg
U3RyaW5nJiBlbmNvZGluZ05hbWUpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGVuY29kaW5nTmFtZSksIG1fcGFnZUlEKTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnRlcm1pbmF0ZVByb2Nlc3MoKQordm9pZCBXZWJQYWdl
UHJveHk6OnRlcm1pbmF0ZVByb2Nlc3MoVGVybWluYXRpb25SZWFzb24gdGVybWluYXRpb25SZWFz
b24pCiB7CiAgICAgLy8gTk9URTogVGhpcyB1c2VzIGEgY2hlY2sgb2YgbV9pc1ZhbGlkIHJhdGhl
ciB0aGFuIGNhbGxpbmcgaXNWYWxpZCgpIHNpbmNlCiAgICAgLy8gd2Ugd2FudCB0aGlzIHRvIHJ1
biBldmVuIGZvciBwYWdlcyBiZWluZyBjbG9zZWQgb3IgdGhhdCBhbHJlYWR5IGNsb3NlZC4KQEAg
LTIzOTIsNiArMjM5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0ZXJtaW5hdGVQcm9jZXNzKCkK
IAogICAgIG1fcHJvY2Vzcy0+cmVxdWVzdFRlcm1pbmF0aW9uKCk7CiAgICAgcmVzZXRTdGF0ZUFm
dGVyUHJvY2Vzc0V4aXRlZCgpOworICAgIG1fd2FzVGVybWluYXRlZER1ZVRvUmVzb3VyY2VFeGhh
dXN0aW9uV2hpbGVJbkJhY2tncm91bmQgPSB0ZXJtaW5hdGlvblJlYXNvbiA9PSBUZXJtaW5hdGlv
blJlYXNvbjo6UmVzb3VyY2VFeGhhdXN0aW9uV2hpbGVJbkJhY2tncm91bmQ7CiB9CiAKIFNlc3Np
b25TdGF0ZSBXZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZShjb25zdCBzdGQ6OmZ1bmN0aW9uPGJv
b2wgKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4mIGZpbHRlcikgY29uc3QKQEAgLTU1ODksNiAr
NTU5Nyw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlv
blBhcmFtZXRlcnMoKQogICAgIHBhcmFtZXRlcnMudXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
biA9IG1fcGFnZUNsaWVudC51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7CiAgICAgcGFy
YW1ldGVycy5vYnNlcnZlZExheW91dE1pbGVzdG9uZXMgPSBtX29ic2VydmVkTGF5b3V0TWlsZXN0
b25lczsKICAgICBwYXJhbWV0ZXJzLm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gbV9v
dmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsKKyAgICBwYXJhbWV0ZXJzLmJhY2tncm91bmRD
UFVMaW1pdCA9IG1fYmFja2dyb3VuZENQVUxpbWl0OwogCiAgICAgZm9yIChhdXRvJiBpdGVyYXRv
ciA6IG1fdXJsU2NoZW1lSGFuZGxlcnNCeVNjaGVtZSkKICAgICAgICAgcGFyYW1ldGVycy51cmxT
Y2hlbWVIYW5kbGVycy5zZXQoaXRlcmF0b3Iua2V5LCBpdGVyYXRvci52YWx1ZS0+aWRlbnRpZmll
cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAzN2RmNmJi
NGFiZDg1YTJjZTg4OTY4OTQ5MDMyOGIxYTc5N2ViYTk2Li44YjJiOGNkN2Q1ZGMwM2IxNmJlMDlh
N2Q2OGIxMDFjNTA1MzlmNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC02ODAsNyArNjgwLDggQEAgcHVibGljOgogCiAgICAgZG91YmxlIGVzdGltYXRlZFBy
b2dyZXNzKCkgY29uc3Q7CiAKLSAgICB2b2lkIHRlcm1pbmF0ZVByb2Nlc3MoKTsKKyAgICBlbnVt
IGNsYXNzIFRlcm1pbmF0aW9uUmVhc29uIHsgUmVzb3VyY2VFeGhhdXN0aW9uV2hpbGVJbkJhY2tn
cm91bmQsIE90aGVyIH07CisgICAgdm9pZCB0ZXJtaW5hdGVQcm9jZXNzKFRlcm1pbmF0aW9uUmVh
c29uID0gVGVybWluYXRpb25SZWFzb246Ok90aGVyKTsKIAogICAgIFNlc3Npb25TdGF0ZSBzZXNz
aW9uU3RhdGUoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChXZWJCYWNrRm9yd2FyZExpc3RJdGVt
Jik+JiA9IG51bGxwdHIpIGNvbnN0OwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IHJlc3Rv
cmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSwgYm9vbCBuYXZpZ2F0ZSk7CkBAIC0xNzIx
LDYgKzE3MjIsNyBAQCBwcml2YXRlOgogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRB
Y3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbjsKICNlbmRpZgogICAgIGJvb2wgbV9pbml0aWFs
Q2FwaXRhbGl6YXRpb25FbmFibGVkOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2JhY2tn
cm91bmRDUFVMaW1pdDsKICAgICBSZWY8V2ViQmFja0ZvcndhcmRMaXN0PiBtX2JhY2tGb3J3YXJk
TGlzdDsKICAgICAgICAgCiAgICAgYm9vbCBtX21haW50YWluc0luYWN0aXZlU2VsZWN0aW9uOwpA
QCAtMTk4NCw2ICsxOTg2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgYm9vbCBtX2lzVXNp
bmdIaWdoUGVyZm9ybWFuY2VXZWJHTCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3dhc1Rlcm1pbmF0
ZWREdWVUb1Jlc291cmNlRXhoYXVzdGlvbldoaWxlSW5CYWNrZ3JvdW5kIHsgZmFsc2UgfTsKICAg
ICAgICAgCiAgICAgV2Vha1B0ckZhY3Rvcnk8V2ViUGFnZVByb3h5PiBtX3dlYWtQdHJGYWN0b3J5
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4
IGY2MzMwMjZiMmJhY2JjNmU3ZDkwMjM0NTdhOWEzMGVhMGQ1MmMxZjUuLmM2YmEwNWY1N2RiNjE3
ZmNkZjRiN2E3NGY2ZjUzOTFiN2M1NWZhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNzcsNiArMTc3LDggQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnNodXREb3duKCkKICAgICB9CiAKICAgICBtX3Jlc3BvbnNpdmVuZXNzVGltZXIuaW52
YWxpZGF0ZSgpOworICAgIGlmIChtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKQorICAg
ICAgICBtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyLT5pbnZhbGlkYXRlKCk7CiAgICAg
bV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7CiAKICAgICBWZWN0b3I8UmVm
UHRyPFdlYkZyYW1lUHJveHk+PiBmcmFtZXM7CkBAIC0xMDk3LDYgKzEwOTksMzMgQEAgdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNYWluVGhyZWFkUGluZygpCiAgICAgICAgIGNhbGxi
YWNrKGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOwogfQogCitzdGF0aWMgVmVjdG9yPFJlZlB0cjxX
ZWJQYWdlUHJveHk+PiBwYWdlc0NvcHkoV1RGOjpJdGVyYXRvclJhbmdlPFdlYlByb2Nlc3NQcm94
eTo6V2ViUGFnZVByb3h5TWFwOjpjb25zdF9pdGVyYXRvcjo6VmFsdWVzPiBwYWdlcykKK3sKKyAg
ICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2VQcm94eT4+IHZlY3RvcjsKKyAgICBmb3IgKGF1dG8mIHBh
Z2UgOiBwYWdlcykKKyAgICAgICAgdmVjdG9yLmFwcGVuZChwYWdlKTsKKyAgICByZXR1cm4gdmVj
dG9yOworfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRXhjZWVkQmFja2dyb3VuZENQVUxp
bWl0KCkKK3sKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlcygpKSB7CisgICAgICAgIGlmIChw
YWdlLT5pc1ZpZXdWaXNpYmxlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYg
KHBhZ2UtPmlzUGxheWluZ0F1ZGlvKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFBlcmZv
cm1hbmNlTG9nZ2luZywgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5OjpkaWRFeGNlZWRCYWNrZ3JvdW5k
Q1BVTGltaXQoKSBXZWJQcm9jZXNzIGhhcyBleGNlZWRlZCB0aGUgYmFja2dyb3VuZCBDUFUgbGlt
aXQgYnV0IHdlIGFyZSBub3QgdGVybWluYXRpbmcgaXQgYmVjYXVzZSB0aGVyZSBpcyBhdWRpbyBw
bGF5aW5nIiwgdGhpcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBSRUxFQVNFX0xPRyhQZXJmb3JtYW5jZUxvZ2dpbmcsICIlcCAtIFdlYlByb2Nlc3NQcm94
eTo6ZGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0KCkgVGVybWluYXRpbmcgYmFja2dyb3VuZCBX
ZWJQcm9jZXNzIHRoYXQgaGFzIGV4Y2VlZGVkIHRoZSBiYWNrZ3JvdW5kIENQVSBsaW1pdCIsIHRo
aXMpOworCisgICAgLy8gV2Ugb25seSB0ZXJtaW5hdGUgdGhlIHByb2Nlc3MgaGVyZS4gV2Ugd2ls
bCBjYWxsIHByb2Nlc3NEaWRDcmFzaCgpIG9uY2Ugb25lIG9mIHRoZSBwYWdlcyBiZWNvbWVzIHZp
c2libGUgYWdhaW4gKHNlZSBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5n
ZSgpKS4KKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlc0NvcHkocGFnZXMoKSkpCisgICAgICAg
IHBhZ2UtPnRlcm1pbmF0ZVByb2Nlc3MoV2ViUGFnZVByb3h5OjpUZXJtaW5hdGlvblJlYXNvbjo6
UmVzb3VyY2VFeGhhdXN0aW9uV2hpbGVJbkJhY2tncm91bmQpOworfQorCiB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6dXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKQogewogICAgIGlm
IChtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDAxY2I4OWYzNThiMjQyNjQyOTc0YTNiMTA3MWEx
N2E1ZGIyNzU0NmYuLjY0Y2E3Mjc2YmM0ODlhZmU3YTAwNTQ5ZDVlYjUwODBkNDc1NTIzNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTE2MSw2ICsx
NjEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtZW1vcnlQcmVzc3VyZVN0YXR1c0NoYW5nZWQoYm9v
bCBpc1VuZGVyTWVtb3J5UHJlc3N1cmUpIHsgbV9pc1VuZGVyTWVtb3J5UHJlc3N1cmUgPSBpc1Vu
ZGVyTWVtb3J5UHJlc3N1cmU7IH0KICAgICBib29sIGlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNVbmRlck1lbW9yeVByZXNzdXJlOyB9CiAKKyAgICB2b2lkIGRpZEV4
Y2VlZEJhY2tncm91bmRDUFVMaW1pdCgpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlBy
b2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggOTI1YjRkY2FhNTRjODE0MzkzYzc5ZGJlN2Q4YTMwMGIyMzc4MDIxMC4uYTk1OTFjNDMy
NGVhMWE5YjE3M2Q3NzdhNDZmYmU1NTNmZDJjZGVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC00NSw2ICs0NSw4
IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBT
ZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogCisgICAg
RGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0KCkKKwogICAgIFJldGFpbkljb25Gb3JQYWdlVVJM
KFN0cmluZyBwYWdlVVJMKQogICAgIFJlbGVhc2VJY29uRm9yUGFnZVVSTChTdHJpbmcgcGFnZVVS
TCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IGFlODBmNWYyNmUzMGI0OTZkOWU4NmM2MWYwZDE2ZTU3MDcwMmIwZTguLjQxN2VhOWRkZWQ3
Y2IzYzQxNDYwYjlkMWNhNmIyMDk4Y2E4ZDA1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM2MSw2ICszNjEsNyBAQCBXZWJQYWdlOjpX
ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCiAgICAgLCBtX3VzZXJBY3Rpdml0eUh5c3RlcmVzaXMoW3RoaXNdKEh5c3RlcmVzaXNT
dGF0ZSkgeyB1cGRhdGVVc2VyQWN0aXZpdHkoKTsgfSkKICAgICAsIG1fdXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbihwYXJhbWV0ZXJzLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pCiAg
ICAgLCBtX292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5IHsgcGFyYW1ldGVycy5vdmVycmlk
ZUNvbnRlbnRTZWN1cml0eVBvbGljeSB9CisgICAgLCBtX2JhY2tncm91bmRDUFVMaW1pdChwYXJh
bWV0ZXJzLmJhY2tncm91bmRDUFVMaW1pdCkKIHsKICAgICBBU1NFUlQobV9wYWdlSUQpOwogCkBA
IC0yNjI0LDYgKzI2MjUsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoQWN0aXZp
dHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSwgYm9vbCB3YW50c0RpZAogICAgICAgICBwbHVn
aW5WaWV3LT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKGNoYW5nZWQpOwogCiAgICAgbV9kcmF3aW5n
QXJlYS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShjaGFuZ2VkLCB3YW50c0RpZFVwZGF0ZUFjdGl2
aXR5U3RhdGUsIGNhbGxiYWNrSURzKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYWdl
QWN0aXZpdHlTdGF0ZURpZENoYW5nZShtX3BhZ2VJRCwgY2hhbmdlZCk7CiAKICAgICBpZiAoY2hh
bmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpCiAgICAgICAgIHVwZGF0ZUlzSW5XaW5k
b3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IDM3ZDgxNDQ3MzlmNTdjNjAwNjc3NjFkN2MzNzg1MTk5YTQwYTlhYzEuLmNmMWZjYzdmN2Y0MzQy
Y2NjYzk1NDA3ZjRmZjViNzc1MjE5NWViMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtOTcyLDYgKzk3Miw3IEBAIHB1YmxpYzoKICNlbmRpZgog
CiAgICAgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5KiB1cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1l
KGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiYWNrZ3JvdW5kQ1BV
TGltaXQoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDUFVMaW1pdDsgfQogCiBwcml2YXRl
OgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
JiYpOwpAQCAtMTU1MCw2ICsxNTUxLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIG1fdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB7IFdl
YkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiB9OwogCiAgICAgY29uc3Qg
U3RyaW5nIG1fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgY29uc3Qgc3RkOjpv
cHRpb25hbDxkb3VibGU+IG1fYmFja2dyb3VuZENQVUxpbWl0OwogCiAgICAgSGFzaE1hcDxTdHJp
bmcsIHN0ZDo6dW5pcXVlX3B0cjxXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk+PiBtX3NjaGVtZVRv
VVJMU2NoZW1lSGFuZGxlclByb3h5TWFwOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYlVSTFNj
aGVtZUhhbmRsZXJQcm94eSo+IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNWRkY2E5OGMw
ZDY4OWRlNDA3NDVkOTZlZWEwM2U2ZjFmMzA4MmJmYi4uMGM5ZTc0ZGI3NDc2N2NmYzU0YmY4NmU0
YjY4YmM4ZDg5MzA0Yzg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCkBAIC03MSw2ICs3MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NQ
VU1vbml0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbW1vblZNLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9ETlMuaD4KQEAgLTU4MCw2ICs1ODEsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBh
Z2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYQogCiAg
ICAgICAgIC8vIEJhbGFuY2VkIGJ5IGFuIGVuYWJsZVRlcm1pbmF0aW9uIGluIHJlbW92ZVdlYlBh
Z2UuCiAgICAgICAgIGRpc2FibGVUZXJtaW5hdGlvbigpOworICAgICAgICB1cGRhdGVCYWNrZ3Jv
dW5kQ1BVTGltaXQoKTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS0+cmVpbml0aWFsaXplV2ViUGFnZShXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIApAQCAtNTk0LDYg
KzU5Niw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQp
CiAgICAgbV9wYWdlTWFwLnJlbW92ZShwYWdlSUQpOwogCiAgICAgZW5hYmxlVGVybWluYXRpb24o
KTsKKyAgICB1cGRhdGVCYWNrZ3JvdW5kQ1BVTGltaXQoKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNz
OjpzaG91bGRUZXJtaW5hdGUoKQpAQCAtMTI2Myw4ICsxMjY2LDIyIEBAIHZvaWQgV2ViUHJvY2Vz
czo6dXBkYXRlQWN0aXZlUGFnZXMoKQogewogfQogCit2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUJh
Y2tncm91bmRDUFVMaW1pdCgpCit7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQmFja2dy
b3VuZENQVU1vbml0b3JTdGF0ZSgpCit7Cit9CisKICNlbmRpZgogCit2b2lkIFdlYlByb2Nlc3M6
OnBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHVpbnQ2NF90LCBXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpGbGFncyBjaGFuZ2VkKQoreworICAgIGlmIChjaGFuZ2VkICYgV2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6SXNWaXNpYmxlKQorICAgICAgICB1cGRhdGVCYWNrZ3JvdW5kQ1BVTW9uaXRvclN0
YXRlKCk7Cit9CisKICNpZiBQTEFURk9STShJT1MpCiB2b2lkIFdlYlByb2Nlc3M6OnJlc2V0QWxs
R2VvbG9jYXRpb25QZXJtaXNzaW9ucygpCiB7CkBAIC0xNTU2LDYgKzE1NzMsMTUgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogICAgIG1fZG5z
UHJlZmV0Y2hIeXN0ZXJlcmlzLmltcHVsc2UoKTsKIH0KIAorYm9vbCBXZWJQcm9jZXNzOjpoYXNW
aXNpYmxlV2ViUGFnZSgpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFw
LnZhbHVlcygpKSB7CisgICAgICAgIGlmIChwYWdlLT5pc1Zpc2libGUoKSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNpZiBVU0UoTElC
V0VCUlRDKQogTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDAxYmFiM2I1NDgw
MzFhODYwMDkzZjk2ZmFiOGFmZGY3ZWQ1ZDE2YzAuLjliODA5NzlmNGI1MzRjOWUxZTI4MjdmMmU5
OTRkMGNkN2NmZjdjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBA
IC02Miw2ICs2Miw3IEBAIGNsYXNzIE9iamVjdDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBDUFVNb25pdG9yOwogY2xhc3MgQ2Vy
dGlmaWNhdGVJbmZvOwogY2xhc3MgUGFnZUdyb3VwOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpA
QCAtMTk0LDYgKzE5NSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCB1cGRhdGVBY3Rp
dmVQYWdlcygpOworICAgIHZvaWQgcGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UodWludDY0X3Qg
cGFnZUlELCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkKTsKIAogICAgIHZv
aWQgc2V0SGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0luY3JlYXNlTGltaXQoaW50IG1pbGxp
c2Vjb25kcyk7CiAKQEAgLTMxNyw2ICszMTksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJv
eUF1dG9tYXRpb25TZXNzaW9uUHJveHkoKTsKIAogICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3Nh
Z2VGb3JOZXR3b3JrUHJvY2Vzc0NyYXNoKCk7CisgICAgYm9vbCBoYXNWaXNpYmxlV2ViUGFnZSgp
IGNvbnN0OworICAgIHZvaWQgdXBkYXRlQmFja2dyb3VuZENQVUxpbWl0KCk7CisgICAgdm9pZCB1
cGRhdGVCYWNrZ3JvdW5kQ1BVTW9uaXRvclN0YXRlKCk7CiAKICAgICAvLyBDaGlsZFByb2Nlc3MK
ICAgICB2b2lkIGluaXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0
aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOwpAQCAtNDE4LDYgKzQyMywxMCBAQCBwcml2YXRlOgog
CiAgICAgdW5zaWduZWQgbV9wYWdlc01hcmtpbmdMYXllcnNBc1ZvbGF0aWxlIHsgMCB9OwogICAg
IGJvb2wgbV9zdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciB7IGZhbHNlIH07CisjaWYgUExB
VEZPUk0oTUFDKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDUFVNb25pdG9yPiBtX2Jh
Y2tncm91bmRDUFVNb25pdG9yOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2JhY2tncm91
bmRDUFVMaW1pdDsKKyNlbmRpZgogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpVc2VyR2VzdHVyZVRv
a2VuICosIHVpbnQ2NF90PiBtX3VzZXJHZXN0dXJlVG9rZW5zOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGQ5MjBiODg3
YjE5YTVjNTZjMWU3MmYzODIwM2E0MjUwN2Q5MzVlM2UuLmUwZjgyNjk0MWNjY2NlOThjYmNjZTIy
MWE5ZGE3YTNhYmQ4ZGFkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0IDxKYXZh
U2NyaXB0Q29yZS9PcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NQVU1v
bml0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Gb250Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udENhc2NhZGUuaD4KQEAgLTc3LDYg
Kzc4LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorI2lmIFBMQVRGT1JNKE1BQykKK3N0YXRpYyBjb25zdCBTZWNvbmRzIGJhY2tncm91bmRDUFVN
b25pdG9yaW5nSW50ZXJ2YWwgeyAxNV9taW4gfTsKKyNlbmRpZgorCiB2b2lkIFdlYlByb2Nlc3M6
OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKQogewogfQpAQCAtMzY5LDYgKzM3NCw0
OSBAQCB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUFjdGl2ZVBhZ2VzKCkKICNlbmRpZgogfQogCit2
b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUJhY2tncm91bmRDUFVMaW1pdCgpCit7CisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiYWNrZ3JvdW5kQ1BVTGltaXQ7CisK
KyAgICAvLyBVc2UgdGhlIGxhcmdlc3QgbGltaXQgYW1vbmcgYWxsIHBhZ2VzIGluIHRoaXMgcHJv
Y2Vzcy4KKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkpIHsKKyAgICAg
ICAgYXV0byBwYWdlQ1BVTGltaXQgPSBwYWdlLT5iYWNrZ3JvdW5kQ1BVTGltaXQoKTsKKyAgICAg
ICAgaWYgKCFwYWdlQ1BVTGltaXQpIHsKKyAgICAgICAgICAgIGJhY2tncm91bmRDUFVMaW1pdCA9
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlm
ICghYmFja2dyb3VuZENQVUxpbWl0IHx8IHBhZ2VDUFVMaW1pdCA+IGJhY2tncm91bmRDUFVMaW1p
dC52YWx1ZSgpKQorICAgICAgICAgICAgYmFja2dyb3VuZENQVUxpbWl0ID0gcGFnZUNQVUxpbWl0
OworICAgIH0KKworICAgIGlmIChtX2JhY2tncm91bmRDUFVMaW1pdCA9PSBiYWNrZ3JvdW5kQ1BV
TGltaXQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2dyb3VuZENQVUxpbWl0ID0gYmFj
a2dyb3VuZENQVUxpbWl0OworICAgIHVwZGF0ZUJhY2tncm91bmRDUFVNb25pdG9yU3RhdGUoKTsK
KyNlbmRpZgorfQorCit2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUJhY2tncm91bmRDUFVNb25pdG9y
U3RhdGUoKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIW1fYmFja2dyb3VuZENQVUxp
bWl0IHx8IGhhc1Zpc2libGVXZWJQYWdlKCkpIHsKKyAgICAgICAgaWYgKG1fYmFja2dyb3VuZENQ
VU1vbml0b3IpCisgICAgICAgICAgICBtX2JhY2tncm91bmRDUFVNb25pdG9yLT5zZXRDUFVMaW1p
dChzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtX2Jh
Y2tncm91bmRDUFVNb25pdG9yKSB7CisgICAgICAgIG1fYmFja2dyb3VuZENQVU1vbml0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPENQVU1vbml0b3I+KGJhY2tncm91bmRDUFVNb25pdG9yaW5nSW50ZXJ2
YWwsIFt0aGlzXSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhQZXJmb3JtYW5jZUxvZ2dpbmcs
ICIlcCAtIFdlYlByb2Nlc3MgZXhjZWVkZWQgYmFja2dyb3VuZCBDUFUgbGltaXQgb2YgJS4xZiUl
IiwgdGhpcywgbV9iYWNrZ3JvdW5kQ1BVTGltaXQudmFsdWUoKSAqIDEwMCk7CisgICAgICAgICAg
ICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkRpZEV4Y2VlZEJhY2tncm91bmRDUFVMaW1pdCgpLCAwKTsKKyAgICAgICAgfSk7CisgICAg
fQorICAgIG1fYmFja2dyb3VuZENQVU1vbml0b3ItPnNldENQVUxpbWl0KG1fYmFja2dyb3VuZENQ
VUxpbWl0LnZhbHVlKCkpOworI2VuZGlmCit9CisKIFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+IFdl
YlByb2Nlc3M6OnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMoT2JqQ09iamVjdEdyYXBoJiBvYmpl
Y3RHcmFwaCkKIHsKICAgICBzdHJ1Y3QgVHJhbnNmb3JtZXIgZmluYWwgOiBPYmpDT2JqZWN0R3Jh
cGg6OlRyYW5zZm9ybWVyIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304096</attachid>
            <date>2017-03-10 16:21:01 -0800</date>
            <delta_ts>2017-03-13 09:32:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169456-20170310162100.patch</filename>
            <type>text/plain</type>
            <size>39642</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVlNjBmNDQ0YjBmNDg0
YmRkYzU3NGUyM2IxOGJmNmJhYTA3NDBmYi4uY2FkMDVkMjgwODE3ZGQ2Yzg3NzE5MDYxMDYyNzBm
ODAwOTQxYzUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTAzLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdGVybWluYXRpb24g
b2YgYmFja2dyb3VuZCBXZWJQcm9jZXNzZXMgdGhhdCBnbyBvdmVyIGEgZ2l2ZW4gQ1BVIHVzYWdl
IHRocmVzaG9sZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY5NDU2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDk2MDk2OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ1BVTW9uaXRvciB1dGls
aXR5IGNsYXNzIHRvIG1vbml0b3IgQ1BVIHVzYWdlIGFuZCBjYWxsIGEgcHJvdmlkZWQgbGFtYmRh
CisgICAgICAgIHdoZW5ldmVyIHRoZSBwcm9jZXNzIGV4Y2VlZHMgdGhlIHByb3ZpZGVkIENQVSBs
aW1pdCBvdmVyIGEgZ2l2ZW4gcGVyaW9kIG9mCisgICAgICAgIHRpbWUuCisKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vQ1BV
TW9uaXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1BVTW9uaXRvcjo6Q1BVTW9u
aXRvcik6CisgICAgICAgIChXZWJDb3JlOjpDUFVNb25pdG9yOjpzZXRDUFVMaW1pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDUFVNb25pdG9yOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9DUFVNb25pdG9yLmg6IEFkZGVkLgorCiAyMDE3LTAzLTEwICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyB0aGUgcGFnZSB0byByZW5kZXIgYmVmb3Jl
IDxsaW5rPiBzdHlsZXNoZWV0IHRhZ3MgaW4gYm9keQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGJjZDQ1ZDg2YWUz
ZWI5YWJlMzUzZDMyOWM2ZDg3MDE1NDUzNWFiMDkuLjljMmYyODUxNGY4MDY4NWE5Y2YzN2RhYTc0
YzQ3NjhiMTlhOTY2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjkgQEAKKzIwMTctMDMtMTAg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0ZXJtaW5h
dGlvbiBvZiBiYWNrZ3JvdW5kIFdlYlByb2Nlc3NlcyB0aGF0IGdvIG92ZXIgYSBnaXZlbiBDUFUg
dXNhZ2UgdGhyZXNob2xkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjk0NTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwOTYwOTY4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHRlcm1pbmF0
aW9uIG9mIGJhY2tncm91bmQgV2ViUHJvY2Vzc2VzIHRoYXQgZ28gb3ZlciBhIGdpdmVuIENQVSB1
c2FnZSB0aHJlc2hvbGQuCisgICAgICAgIFRoaXMgY2FuIGJlIGVuYWJsZWQgY2xpZW50IHNpZGUg
dmlhIHRoZSBXS1BhZ2VDb25maWd1cmF0aW9uU2V0QmFja2dyb3VuZENQVUxpbWl0KCkKKyAgICAg
ICAgU1BJLiBUaGUgY2xpZW50IHByb3ZpZGVzIHRoZSBhY3R1YWwgQ1BVIHRocmVzaG9sZCBpdCB3
YW50cyB0byB1c2UgYXQgcGFnZSBsZXZlbC4KKworICAgICAgICBJZiBzdWNoIGxpbWl0IGlzIHNl
dCwgd2hlbmV2ZXIgYSBXZWJDb250ZW50IHByb2Nlc3MgaGFzIG5vIHZpc2libGUgcGFnZXMsIHdl
IHN0YXJ0CisgICAgICAgIG1vbml0b3JpbmcgaXRzIENQVSB1c2FnZSBvdmVyIDE1IG1pbnV0ZXMg
cGVyaW9kcy4gQXQgdGhlIGVuZCBvZiBlYWNoIHBlcmlvZCwgd2UKKyAgICAgICAgY2hlY2sgaWYg
dGhlIHByb2Nlc3MnIGF2ZXJhZ2UgQ1BVIHVzYWdlIG92ZXIgdGhpcyBwZXJpb2Qgd2FzIGdyZWF0
ZXIgdGhhbiB0aGUKKyAgICAgICAgYmFja2dyb3VuZCBDUFUgbGltaXQuIElmIGl0IGdyZWF0ZXIs
IHRoZSBXZWJDb250ZW50IHByb2Nlc3Mgc2VuZCBhbiBJUEMgbWVzc2FnZSB0bworICAgICAgICB0
aGUgVUlQcm9jZXNzIGxldHRpbmcgaXQga25vdyB0aGF0IGl0IGV4Y2VlZGVkIHRoZSBDUFUgbGlt
aXQuIFRoZSBVSSBwcm9jZXNzIHdpbGwKKyAgICAgICAgdGhlbiBsb2cgYSBtZXNzYWdlIGFuZCB0
ZXJtaW5hdGUgdGhlIHByb2Nlc3MgdW5sZXNzIGl0IGhhcyBhbnkgYXVkaW8gcGxheWluZy4KKwor
ICAgICAgICBPbmNlIGEgV2ViUHJvY2VzcyBoYXMgYmVlbiB0ZXJtaW5hdGVkLCB3ZSBkbyBub3Qg
dGhlIGNsaWVudCBrbm93IHVudGlsIG9uZSBvZiBpdHMKKyAgICAgICAgcGFnZXMgYmVjb21lcyB2
aXNpYmxlIGFnYWluLiBXaGVuIHRoaXMgaGFwcGVucywgd2UgY2FsbCB0aGUgcHJvY2Vzc0RpZENy
YXNoCisgICAgICAgIGRlbGVnYXRlIGFuZCBTYWZhcmkgd2lsbCB0YWtlIGNhcmUgb2YgcmVsb2Fk
aW5nIHRoZSB0YWIgYW5kIHNob3dpbmcgdGhlIGNyYXNoCisgICAgICAgIGJhbm5lciB0aGVuLiBU
aGlzIGlzIGRvbmUgYmVjYXVzZSB3ZSBkbyBub3Qgd2FudCB0byByZWxvYWQgY29udGVudCB0aGF0
IGlzCisgICAgICAgIHVzaW5nIGEgbG90IG9mIENQVSB3aGlsZSBpbiB0aGUgYmFja2dyb3VuZC4K
KworICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBT
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICBBZGQgYmFja2dyb3Vu
ZENQVUxpbWl0IHRvIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmJhY2tncm91bmRD
UFVMaW1pdCk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpzZXRCYWNrZ3JvdW5k
Q1BVTGltaXQpOgorICAgICAgICBBZGQgYmFja2dyb3VuZENQVUxpbWl0IHRvIEFQSVBhZ2VDb25m
aWd1cmF0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRp
b25SZWYuY3BwOgorICAgICAgICAoV0tQYWdlQ29uZmlndXJhdGlvblNldEJhY2tncm91bmRDUFVM
aW1pdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYu
aDoKKyAgICAgICAgQWRkIFNQSSB0byBzZXQgYmFja2dyb3VuZCBDUFUgbGltaXQuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2Vzcyk6CisgICAgICAgIFJlc2V0IG1fd2FzVGVybWlu
YXRlZER1ZVRvUmVzb3VyY2VFeGhhdXN0aW9uV2hpbGVJbkJhY2tncm91bmQgZmxhZworICAgICAg
ICBhcyB0aGUgcHJvY2VzcyB3YXMgcmVzdGFydGVkLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKToKKyAgICAgICAgV2hlbiB0aGUg
dmlzaWJpbGl0eSBzdGF0ZSBjaGFuZ2VzIGZvciBhIHBhZ2UgdGhhdCB3YXMgdGVybWluYXRlZAor
ICAgICAgICB3aGlsZSBpbiB0aGUgYmFja2dyb3VuZCBkdWUgdG8gZXhjZWVkZWQgQ1BVIGxpbWl0
LCBub3RpZnkgdGhlCisgICAgICAgIGNsaWVudCB0aGF0IHRoZSBwcm9jZXNzIGNyYXNoZWQgdmlh
IHRoZSBwcm9jZXNzRGlkQ3Jhc2ggZGVsZWdhdGUuCisgICAgICAgIFNhZmFyaSB3aWxsIHVzZSB0
aGlzIGRlbGVnYXRlIHRvIHJlbG9hZCB0aGUgdGFiIGFuZCBzaG93IHRoZSBjcmFzaAorICAgICAg
ICBiYW5uZXIuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp0ZXJtaW5hdGVQcm9j
ZXNzKToKKyAgICAgICAgQWRkIHBhcmFtZXRlciB0byB0ZXJtaW5hdGVQcm9jZXNzKCkgdG8gcHJv
dmlkZSB0aGUgcmVhc29uLiBJZiB0aGUKKyAgICAgICAgcGFnZSB3YXMgdGVybWluYXRlZCBkdWUg
dG8gcmVhY2hpbmcgQ1BVIGxpbWl0LCBzZXQgYSBmbGFnIHNvIHdlCisgICAgICAgIGNhbiBkZWxh
eSBjYWxsaW5nIHByb2Nlc3NEaWRDcmFzaCB1bnRpbCB0aGUgcGFnZSBiZWNvbWVzIHZpc2libGUK
KyAgICAgICAgYWdhaW4uCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlv
blBhcmFtZXRlcnMpOgorICAgICAgICBTZXQgYmFja2dyb3VuZENQVUxpbWl0IG9uIHRoZSBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OnBhZ2VzQ29weSk6CisgICAgICAgIEFkZCB1dGlsaXR5IGZ1bmN0aW9uIHRvIGNv
cHkgdGhlIGxpc3Qgb2YgcGFnZXMgdG8gYSBWZWN0b3IuCisKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5OjpkaWRFeGNlZWRCYWNrZ3JvdW5kQ1BVTGltaXQpOgorICAgICAgICBXaGVu
IHdlIGdldCBhbiBJUEMgbWVzc2FnZSBmcm9tIGEgV2ViQ29udGVudCBwcm9jZXNzIHRvIGxldCB1
cworICAgICAgICBrbm93IHRoYXQgdGhlIHByb2Nlc3MgZXhjZWVkZWQgdGhlIGJhY2tncm91bmQg
Q1BVIGxpbWl0LCB3ZSBsb2cKKyAgICAgICAgYSBtZXNzYWdlIGFuZCB3ZSB0ZXJtaW5hdGUgaXQg
aWYgaXQgaGFzIG5vIGF1ZGlvIHBsYXlpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICBBZGQgRGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0IElQQyBtZXNz
YWdlIHNvIHRoZSBXZWJDb250ZW50IHByb2Nlc3MKKyAgICAgICAgY2FuIGxldCB1cyBrbm93IHdo
ZW4gaXQgZ29lcyBvdmVyIHRoZSBiYWNrZ3JvdW5kIENQVSBsaW1pdC4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9iYWNrZ3Jv
dW5kQ1BVTGltaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRl
KToKKyAgICAgICAgTm90aWZ5IHRoZSBXZWJQcm9jZXNzIHdoZW5ldmVyIHRoZSBhY3Rpdml0eSBz
dGF0ZSBvZiBhIFdlYlBhZ2UgY2hhbmdlcy4KKyAgICAgICAgVGhlIFdlYlByb2Nlc3MgY3VycmVu
dGx5IHVzZXMgdGhpcyBpbmZvcm1hdGlvbiB0byBkZXRlcm1pbmUgd2hlbiB0aGUKKyAgICAgICAg
dmlzaWJpbGl0eSBvZiBhIHBhZ2UgY2hhbmdlcy4gVGhpcyBpcyBuZWVkZWQgYXMgd2Ugb25seSB3
YW50IHRvIG1vbml0b3IKKyAgICAgICAgQ1BVIHVzYWdlIG9mICpiYWNrZ3JvdW5kKiBXZWJDb250
ZW50IHByb2Nlc3NlcyAocHJvY2Vzc2VzIHRoYXQgaGF2ZSBubworICAgICAgICB2aXNpYmxlIFdl
YlBhZ2UpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6YmFja2dyb3VuZENQVUxpbWl0KToKKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNy
ZWF0ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdl
KToKKyAgICAgICAgQ2FsbCB1cGRhdGVCYWNrZ3JvdW5kQ1BVTGltaXQoKSB3aGVuZXZlciBhIFdl
YlBhZ2UgaXMgYWRkZWQgb3IgcmVtb3ZlZAorICAgICAgICBzaW5jZSB0aGUgbGltaXQgaXMgcGVy
IHBhZ2UuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXBkYXRlQmFja2dyb3VuZENQ
VUxpbWl0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXBkYXRlQmFja2dyb3VuZENQ
VU1vbml0b3JTdGF0ZSk6CisgICAgICAgIE5vLW9wcyBvbiBvdGhlciBwbGF0Zm9ybXMgdGhhbiBN
YWMgYXQgdGhlIG1vbWVudC4KKworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwYWdlQWN0
aXZpdHlTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIENhbGwgdXBkYXRlQmFja2dyb3VuZENQVU1v
bml0b3JTdGF0ZSgpIHdoZW5ldmVyIHRoZSB2aXNpYmlsaXR5IG9mIHRoZQorICAgICAgICBXZWJQ
YWdlIGNoYW5nZXMgYXMgd2Ugb25seSBtb25pdG9yIHRoZSBDUFUgdXNhZ2Ugb2YgKmJhY2tncm91
bmQqIFdlYkNvbnRlbnQKKyAgICAgICAgcHJvY2Vzc2VzLgorCisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6Omhhc1Zpc2libGVXZWJQYWdlKToKKyAgICAgICAgQWRkIHV0aWxpdHkgZnVuY3Rp
b24gdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGlzIGFueSB2aXNpYmxlIFdlYlBhZ2UgaW4gdGhpcwor
ICAgICAgICBXZWJDb250ZW50IHByb2Nlc3MuIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGZhbHNl
LCB0aGVuIHdlIGNvbnNpZGVyIHRoZQorICAgICAgICBXZWJDb250ZW50IHByb2Nlc3MgdG8gYmUg
YSAqYmFja2dyb3VuZCogV2ViQ29udGVudCBwcm9jZXNzLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXBkYXRlQmFja2dyb3VuZENQ
VUxpbWl0KToKKyAgICAgICAgQ29tcHV0ZSB0aGUgV2ViUHJvY2VzcycgYmFja2dyb3VuZCBDUFUg
bGltaXQgZ2l2ZW4gdGhlIGxpbWl0IHNldCBmb3IgZWFjaAorICAgICAgICBvZiBpdHMgV2ViUGFn
ZXMuIFdlIHVzZSB0aGUgbGFyZ2VzdCAoaS5lLiBtb3N0IHBlcm1pc3NpdmUpIGJhY2tncm91bmQg
Q1BVCisgICAgICAgIGxpbWl0IGFtb25nIGFsbCB0aGUgcGFnZXMuCisKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6dXBkYXRlQmFja2dyb3VuZENQVU1vbml0b3JTdGF0ZSk6CisgICAgICAg
IFVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIGJhY2tncm91bmQgQ1BVIG1vbml0b3IuIFRoaXMgaXMg
Y2FsbGVkIHdoZW5ldmVyCisgICAgICAgIHRoZSBiYWNrZ3JvdW5kIENQVSBsaW1pdCBvZiB0aGUg
cHJvY2VzcyBjaGFuZ2VzIG9yIHdoZW5ldmVyIHRoZSB2aXNpYmlsaXR5CisgICAgICAgIG9mIGEg
V2ViUGFnZSBjaGFuZ2VzLgorCiAyMDE3LTAzLTEwICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbV0syXSBHdWFyZCBHTGliLXNwZWNpZmljIHR5cGVkZWZz
IGluIEluamVjdGVkQnVuZGxlLmggd2l0aCBVU0UoR0xJQikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhM2JiNmY2ZGExYzk2NzQz
Mjk3NTFjYjhkMDc0OTY5YWNlYjhkMWRjLi5kMWEyZmFlZjA4NTBkM2JiNGJlZDJhMjQwYmJkMjRh
MmJkMTFjZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xODA1LDYgKzE4MDUsOCBAQAogCQk0NjczMDIwMjFDNEVGRTc4MDBC
Q0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2
MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87
IH07CiAJCTQ2ODlGMUFGMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEw
MEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLzsgfTsKIAkJNDZCNjNGNkMxQzZFOEQxOTAwMkU5
MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFy
Z2V0Q3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNDZDNjk2Q0IxRTcyMDVGNzAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzY5NkM5MUU3MjA1RTQwMDU5
NzkzNyAvKiBDUFVNb25pdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNDZDNjk2Q0MxRTcyMDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0Ex
RTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRDFBOUJC
RTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDODNFRkIxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlm
aWVyLmNwcCAqLzsgfTsKIAkJNDZDODNFRkUxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VG
QzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkRCQjY1MDFBQjhDOTZGMDBEOUE4MTMgLyog
UG93ZXJPYnNlcnZlck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZEQkI2NEUxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCAq
LzsgfTsKQEAgLTkyMjQsNiArOTIyNiw4IEBACiAJCTQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAv
KiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVu
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlGMUFFMTI2N0JBRTEwMEU4
RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmlsZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2
RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTRXZlbnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDZDNjk2QzkxRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1BVTW9uaXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0NkM2OTZDQTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDUFVNb25pdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDODNFRkIxQTlCQkUyOTAwQTc5QTQxIC8q
IEdlb05vdGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdl
b05vdGlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZDODNFRkMxQTlC
QkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdlb05vdGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REJC
NjRFMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVyTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIzMjI4LDYgKzIzMjMyLDggQEAKIAkJCQlEOEI2MTUyRTEwMzI0OTUxMDBD
ODU1NEEgLyogQ29va2llLmggKi8sCiAJCQkJMzM5QjVCNjIxMzFEQUEzMjAwRjQ4RDAyIC8qIENv
b2tpZXNTdHJhdGVneS5oICovLAogCQkJCTg2MkYxMjlEMThDMTU3MkMwMDVDNTRBRiAvKiBDb3Vu
dGVkVXNlckFjdGl2aXR5LmggKi8sCisJCQkJNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQ
VU1vbml0b3IuY3BwICovLAorCQkJCTQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25p
dG9yLmggKi8sCiAJCQkJNDYzNzYzMDYxRTI2RkRCQTAwOENENDZEIC8qIENQVVRpbWUuY3BwICov
LAogCQkJCTQ2Mzc2MzA3MUUyNkZEQkEwMDhDRDQ2RCAvKiBDUFVUaW1lLmggKi8sCiAJCQkJRTEx
QUYxNTAxMUI5QTFBMzAwODA1MTAzIC8qIEN1cnNvci5jcHAgKi8sCkBAIC0yODU4Miw2ICsyODU4
OCw3IEBACiAJCQkJRTEzOTg2NjQxNTQ3ODQ3NDAwMUUzRjY1IC8qIFN0eWxlUmVzb2x2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0QkJFRDREMTRGQ0RCQTEwMDNGMEI5OCAvKiBTdHlsZVJ1bGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUU0OTQ2RUFGMTU2RTY0REQwMEQzMjk3RiAvKiBTdHlsZVJ1
bGVJbXBvcnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2QzY5NkNCMUU3MjA1RjcwMDU5NzkzNyAv
KiBDUFVNb25pdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDYxRDY1RjFCQjBDODBEMDBDQjU2
NDUgLyogU3R5bGVTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ3QTVFM0UxOTVCOEM4QTAw
NDgzMTAwIC8qIFN0eWxlU2Nyb2xsU25hcFBvaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUQ2
MzgwMTAxQUYxNzMyMjAwMzFBMTVDIC8qIFN0eWxlU2VsZkFsaWdubWVudERhdGEuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjk4MTUsNiArMjk4MjIsNyBAQAogCQkJCTU5QjU5NzczMTEwODY1NkIwMDcx
NTlFOCAvKiBCcmlkZ2VKU0MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E0NTAzMkYxOERCNzE3
MjAwMzc3QjM0IC8qIEJ1ZmZlcmVkTGluZVJlYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlG
NTVCM0RBRjEyNTFGMTJEMDAzRUYyNjkgLyogQnV0dG9uSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTQ2QzY5NkNDMUU3MjA1RkMwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBNTY5Q0Y3MEQ3RTJCODIwMDdDMzk4MyAvKiBjX2NsYXNzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUVDQTY4MEM5MUU2NzczMEIwMDczMUQyMCAvKiBTdHJpbmdVdGls
aXRpZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUNGOTBEN0UyQjgyMDA3QzM5ODMgLyog
Y19pbnN0YW5jZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NQVU1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9u
aXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzIzNWI2MjgzZWI4ZjZjYzVlYzRiM2YwNzMwZmVjZGNlNjM5
NGQ3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0
b3IuY3BwCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ1BVTW9uaXRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NQVU1v
bml0b3I6OkNQVU1vbml0b3IoU2Vjb25kcyBjaGVja0ludGVydmFsLCBFeGNlZWRlZENQVUxpbWl0
SGFuZGxlciYmIGV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyKQorICAgIDogbV9jaGVja0ludGVydmFs
KGNoZWNrSW50ZXJ2YWwpCisgICAgLCBtX2V4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyKFdURk1vdmUo
ZXhjZWVkZWRDUFVMaW1pdEhhbmRsZXIpKQorICAgICwgbV90aW1lcigqdGhpcywgJkNQVU1vbml0
b3I6OnRpbWVyRmlyZWQpCit7Cit9CisKK3ZvaWQgQ1BVTW9uaXRvcjo6c2V0Q1BVTGltaXQoc3Rk
OjpvcHRpb25hbDxkb3VibGU+IGNwdUxpbWl0KQoreworICAgIGlmIChtX2NwdUxpbWl0ID09IGNw
dUxpbWl0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NwdUxpbWl0ID0gY3B1TGltaXQ7Cisg
ICAgaWYgKG1fY3B1TGltaXQpIHsKKyAgICAgICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpIHsK
KyAgICAgICAgICAgIG1fbGFzdENQVVRpbWUgPSBnZXRDUFVUaW1lKCk7CisgICAgICAgICAgICBt
X3RpbWVyLnN0YXJ0UmVwZWF0aW5nKG1fY2hlY2tJbnRlcnZhbCk7CisgICAgICAgIH0KKyAgICB9
IGVsc2UKKyAgICAgICAgbV90aW1lci5zdG9wKCk7Cit9CisKK3ZvaWQgQ1BVTW9uaXRvcjo6dGlt
ZXJGaXJlZCgpCit7CisgICAgQVNTRVJUKG1fY3B1TGltaXQpOworCisgICAgaWYgKCFtX2xhc3RD
UFVUaW1lKSB7CisgICAgICAgIG1fbGFzdENQVVRpbWUgPSBnZXRDUFVUaW1lKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNwdVRpbWUgPSBnZXRDUFVUaW1lKCk7CisgICAg
aWYgKCFjcHVUaW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGNwdVVzYWdlUGVyY2Vu
dCA9IGNwdVRpbWUudmFsdWUoKS5wZXJjZW50YWdlQ1BVVXNhZ2VTaW5jZShtX2xhc3RDUFVUaW1l
LnZhbHVlKCkpOworICAgIGlmIChjcHVVc2FnZVBlcmNlbnQgPiBtX2NwdUxpbWl0LnZhbHVlKCkg
KiAxMDApCisgICAgICAgIG1fZXhjZWVkZWRDUFVMaW1pdEhhbmRsZXIoKTsKKworICAgIG1fbGFz
dENQVVRpbWUgPSBjcHVUaW1lOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg4ODI2ODE0M2U0MGEzZTg3ZDdl
NjRjMzUxMmM5OTZhYjFjY2Q3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NQVU1vbml0b3IuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJDUFVUaW1lLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENQ
VU1vbml0b3IgeworcHVibGljOgorICAgIHVzaW5nIEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyID0g
V1RGOjpGdW5jdGlvbjx2b2lkKCk+OworICAgIFdFQkNPUkVfRVhQT1JUIENQVU1vbml0b3IoU2Vj
b25kcyBjaGVja0ludGVydmFsLCBFeGNlZWRlZENQVUxpbWl0SGFuZGxlciYmKTsKKworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q1BVTGltaXQoc3RkOjpvcHRpb25hbDxkb3VibGU+KTsKKwor
cHJpdmF0ZToKKyAgICB2b2lkIHRpbWVyRmlyZWQoKTsKKworICAgIFNlY29uZHMgbV9jaGVja0lu
dGVydmFsOworICAgIEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyIG1fZXhjZWVkZWRDUFVMaW1pdEhh
bmRsZXI7CisgICAgVGltZXIgbV90aW1lcjsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9j
cHVMaW1pdDsKKyAgICBzdGQ6Om9wdGlvbmFsPENQVVRpbWU+IG1fbGFzdENQVVRpbWU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggZTg1Y2QxMGY1ZTA1MTVlOGNmZTFm
MGVkMjAwMmE4OWI5ZWQ2YTU0My4uNTEzZjFiOWIwODUxZjhkZmViZDlmOTRlYWFiOTgwNzQyOWYx
NzE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcApAQCAtOTMsNiArOTMsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rlci5l
bmNvZGVFbnVtKHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOwogICAgIGVuY29kZXIuZW5j
b2RlRW51bShvYnNlcnZlZExheW91dE1pbGVzdG9uZXMpOwogICAgIGVuY29kZXIgPDwgb3ZlcnJp
ZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgZW5jb2RlciA8PCBiYWNrZ3JvdW5kQ1BVTGlt
aXQ7CiAgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVIYW5kbGVyczsKICNpZiBFTkFCTEUoV0VCX1JU
QykKICAgICBlbmNvZGVyIDw8IGljZUNhbmRpZGF0ZUZpbHRlcmluZ0VuYWJsZWQ7CkBAIC0yMjIs
NiArMjIzLDkgQEAgYm9vbCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBXZWJQYWdlQ3JlYXRpb25QYXIKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBhcmFtZXRlcnMub3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYmFja2dy
b3VuZENQVUxpbWl0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZUhhbmRsZXJzKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaAppbmRleCBiNGZlNmU2NjQ1YmM5NzExOTA3YmM0YzQ3OTJkYWU5OTZkZjc2ZGUwLi5j
NDgzM2I0Yjg3NTFiMmU1MWJiMGZmOTc1ZGIwYjcxODQxM2VjMTU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTE0Niw2ICsx
NDYsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgV2ViQ29yZTo6
TGF5b3V0TWlsZXN0b25lcyBvYnNlcnZlZExheW91dE1pbGVzdG9uZXM7CiAKICAgICBTdHJpbmcg
b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IGJhY2tncm91bmRDUFVMaW1pdDsKIAogICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gdXJs
U2NoZW1lSGFuZGxlcnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggMzNjODE5MmUyMjM5NmJhZWFlMmZlYTRm
Zjc1NDVhMWQ3MmRkMDc5My4uODgzNzUxMDU0Mjk0YzI3ZTk5NjAyMDY1YzBiYmU5ZGNjMjU3ODFh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmln
dXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29u
ZmlndXJhdGlvbi5jcHAKQEAgLTY4LDYgKzY4LDcgQEAgUmVmPFBhZ2VDb25maWd1cmF0aW9uPiBQ
YWdlQ29uZmlndXJhdGlvbjo6Y29weSgpIGNvbnN0CiAgICAgY29weS0+bV9hbHdheXNSdW5zQXRG
b3JlZ3JvdW5kUHJpb3JpdHkgPSB0aGlzLT5tX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0
eTsKICNlbmRpZgogICAgIGNvcHktPm1faW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCA9IHRo
aXMtPm1faW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZDsKKyAgICBjb3B5LT5tX2JhY2tncm91
bmRDUFVMaW1pdCA9IHRoaXMtPm1fYmFja2dyb3VuZENQVUxpbWl0OwogICAgIGNvcHktPm1fY29u
dHJvbGxlZEJ5QXV0b21hdGlvbiA9IHRoaXMtPm1fY29udHJvbGxlZEJ5QXV0b21hdGlvbjsKICAg
ICBjb3B5LT5tX292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gdGhpcy0+bV9vdmVycmlk
ZUNvbnRlbnRTZWN1cml0eVBvbGljeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCmluZGV4IDk4YWUyYWE3MThlMWNmMmQ2NGMx
NTI3YzQ2YzYxNDdjODk0MGY4MDEuLjNmZjRlZmRiYTQzNDRlYmYwZjQxMTE4ZTRmNmNhYmZiMjBi
MmI1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNv
bmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VD
b25maWd1cmF0aW9uLmgKQEAgLTkzLDYgKzkzLDkgQEAgcHVibGljOgogICAgIGJvb2wgaW5pdGlh
bENhcGl0YWxpemF0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIG1faW5pdGlhbENhcGl0YWxpemF0aW9u
RW5hYmxlZDsgfQogICAgIHZvaWQgc2V0SW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZChib29s
IGluaXRpYWxDYXBpdGFsaXphdGlvbkVuYWJsZWQpIHsgbV9pbml0aWFsQ2FwaXRhbGl6YXRpb25F
bmFibGVkID0gaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZDsgfQogCisgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IGJhY2tncm91bmRDUFVMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dy
b3VuZENQVUxpbWl0OyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ1BVTGltaXQoZG91YmxlIGNw
dUxpbWl0KSB7IG1fYmFja2dyb3VuZENQVUxpbWl0ID0gY3B1TGltaXQ7IH0KKwogICAgIGJvb2wg
d2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1f
d2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdzsgfQogICAgIHZvaWQgc2V0V2Fp
dHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdyhib29sIHNob3VsZFN5bmNocm9uaXpl
KSB7IG1fd2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdyA9IHNob3VsZFN5bmNo
cm9uaXplOyB9CiAKQEAgLTEyNCw2ICsxMjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pbml0
aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkID0gdHJ1ZTsKICAgICBib29sIG1fd2FpdHNGb3JQYWlu
dEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdyA9IHRydWU7CiAgICAgYm9vbCBtX2NvbnRyb2xsZWRC
eUF1dG9tYXRpb24gPSBmYWxzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9iYWNrZ3Jv
dW5kQ1BVTGltaXQ7CiAKICAgICBXVEY6OlN0cmluZyBtX292ZXJyaWRlQ29udGVudFNlY3VyaXR5
UG9saWN5OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcAppbmRleCA0ZjRkNWYwOTRmMWI4NDNlMTIyNWYw
YjA2MzdhZGQ3NWM5MTk5ZjcyLi5mYjc1NzU0YmMwNmI2M2I4NTg5NmY2OWUwYmQxYzNkZDBlYTlj
MWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29u
ZmlndXJhdGlvblJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZUNvbmZpZ3VyYXRpb25SZWYuY3BwCkBAIC0xMDgsMyArMTA4LDggQEAgdm9pZCBXS1BhZ2VD
b25maWd1cmF0aW9uU2V0SW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZChXS1BhZ2VDb25maWd1
cmF0aW9uUmVmIGMKIHsKICAgICB0b0ltcGwoY29uZmlndXJhdGlvbiktPnNldEluaXRpYWxDYXBp
dGFsaXphdGlvbkVuYWJsZWQoZW5hYmxlZCk7CiB9CisKK3ZvaWQgV0tQYWdlQ29uZmlndXJhdGlv
blNldEJhY2tncm91bmRDUFVMaW1pdChXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRp
b24sIGRvdWJsZSBjcHVMaW1pdCkKK3sKKyAgICB0b0ltcGwoY29uZmlndXJhdGlvbiktPnNldEJh
Y2tncm91bmRDUFVMaW1pdChjcHVMaW1pdCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuaAppbmRleCA3MmU3YTZi
YzI2Y2I3YTg0NDhlYTE0YjllMDk4Mjk2NGZlMmQxMTYxLi42NjIzZTdjNTA1OTgxYWVmYjI4YTE4
OGVhNWFkMTMzMzZkMzE2NmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgV0tf
RVhQT1JUIFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBXS1BhZ2VDb25maWd1cmF0aW9uR2V0V2Vic2l0
ZURhdGFTdG9yZShXS1BhZ2VDb24KIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25T
ZXRXZWJzaXRlRGF0YVN0b3JlKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwg
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIHdlYnNpdGVEYXRhU3RvcmUpOwogCiBXS19FWFBPUlQgdm9p
ZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0SW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZChXS1Bh
Z2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGJvb2wgZW5hYmxlZCk7CitXS19FWFBP
UlQgdm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0QmFja2dyb3VuZENQVUxpbWl0KFdLUGFnZUNv
bmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgZG91YmxlIGNwdUxpbWl0KTsgLy8gVGVybWlu
YXRlcyBwcm9jZXNzIGlmIGl0IHVzZXMgbW9yZSB0aGFuIENQVSBsaW1pdCBvdmVyIGFuIGV4dGVu
ZGVkIHBlcmlvZCBvZiB0aW1lIHdoaWxlIGluIHRoZSBiYWNrZ3JvdW5kLgogCiAjaWZkZWYgX19j
cGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9CYWNrZ3Jv
dW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKaW5kZXggNWMwNzll
NWNhNjg1Y2ZmMTk3Y2QwNTdlZDFmMDZmNzBjNjBjNzJjMS4uMTg5YzA5ZTg2MjIxOGIxOTM2ZWM5
NjRmMWE2NmJkNGZlMGZjMmY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAK
QEAgLTcxLDQgKzcxLDkgQEAgdm9pZCBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGlt
ZXI6OnRpbWVyRmlyZWQoKQogICAgIH0pOwogfQogCit2b2lkIEJhY2tncm91bmRQcm9jZXNzUmVz
cG9uc2l2ZW5lc3NUaW1lcjo6aW52YWxpZGF0ZSgpCit7CisgICAgbV90aW1lci5zdG9wKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0JhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oCmlu
ZGV4IDE4NzQ5MjZkZTk5MDFlYjNhOWY0YmVmZjdiMTY4NzZkMWRkYTZhMjIuLmVjZDkyNmI0MjMy
NTE4MWFhZWVlMWU2NmFhNTdhNzUwYTcxYmQ1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9CYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1Rp
bWVyLmgKQEAgLTM0LDYgKzM0LDcgQEAgY2xhc3MgQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZl
bmVzc1RpbWVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3Bv
bnNpdmVuZXNzVGltZXIoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgdm9pZCB1cGRhdGVTdGF0ZSgp
OworICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiBwcml2YXRlOgogICAgIHZvaWQgdGltZXJGaXJl
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjMDlj
NTUzZGIyMmY5OTUwZDdlNWU2NGFjYmY1YjI2MzEzMDEwZDYyLi5mYTY5ZTY5YTVkNDYxNDZhODNk
OThiOWEzYTZiZDJlYjU5Mjc0NjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtMzU2LDYgKzM1Niw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5
KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAg
ICAgLCBtX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eShtX2NvbmZpZ3VyYXRpb24tPmFs
d2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSgpKQogI2VuZGlmCiAgICAgLCBtX2luaXRpYWxD
YXBpdGFsaXphdGlvbkVuYWJsZWQobV9jb25maWd1cmF0aW9uLT5pbml0aWFsQ2FwaXRhbGl6YXRp
b25FbmFibGVkKCkpCisgICAgLCBtX2JhY2tncm91bmRDUFVMaW1pdChtX2NvbmZpZ3VyYXRpb24t
PmJhY2tncm91bmRDUFVMaW1pdCgpKQogICAgICwgbV9iYWNrRm9yd2FyZExpc3QoV2ViQmFja0Zv
cndhcmRMaXN0OjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9tYWludGFpbnNJbmFjdGl2ZVNlbGVj
dGlvbihmYWxzZSkKICAgICAsIG1fd2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRv
dyhtX2NvbmZpZ3VyYXRpb24tPndhaXRzRm9yUGFpbnRBZnRlclZpZXdEaWRNb3ZlVG9XaW5kb3co
KSkKQEAgLTcxNiw2ICs3MTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlBy
b2Nlc3MoKQogICAgIEFTU0VSVChtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5
OjpTdGF0ZTo6VGVybWluYXRlZCk7CiAKICAgICBtX2lzVmFsaWQgPSB0cnVlOworICAgIG1fd2Fz
VGVybWluYXRlZER1ZVRvUmVzb3VyY2VFeGhhdXN0aW9uV2hpbGVJbkJhY2tncm91bmQgPSBmYWxz
ZTsKICAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UobV9wYWdlSUQpOwogICAgIG1fcHJvY2Vz
cy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwogCkBAIC0xNTI4LDggKzE1MzAsMTMgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiAgICAgbV9hY3Rpdml0
eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlci0+aW52YWxpZGF0ZSgpOwogI2VuZGlmCiAKLSAgICBpZiAo
IWlzVmFsaWQoKSkKKyAgICBpZiAoIWlzVmFsaWQoKSkgeworICAgICAgICBpZiAobV9wb3RlbnRp
YWxseUNoYW5nZWRBY3Rpdml0eVN0YXRlRmxhZ3MgJiBBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUg
JiYgbV93YXNUZXJtaW5hdGVkRHVlVG9SZXNvdXJjZUV4aGF1c3Rpb25XaGlsZUluQmFja2dyb3Vu
ZCkgeworICAgICAgICAgICAgbV93YXNUZXJtaW5hdGVkRHVlVG9SZXNvdXJjZUV4aGF1c3Rpb25X
aGlsZUluQmFja2dyb3VuZCA9IGZhbHNlOworICAgICAgICAgICAgcHJvY2Vzc0RpZENyYXNoKCk7
CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIElmIHRoZSB2aXNp
YmlsaXR5IHN0YXRlIG1heSBoYXZlIGNoYW5nZWQsIHRoZW4gc28gbWF5IHRoZSB2aXN1YWxseSBp
ZGxlICYgb2NjbHVkZWQgYWdub3N0aWMgc3RhdGUuCiAgICAgaWYgKG1fcG90ZW50aWFsbHlDaGFu
Z2VkQWN0aXZpdHlTdGF0ZUZsYWdzICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQpAQCAtMjM4
Myw3ICsyMzkwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3RvbVRleHRFbmNvZGluZ05h
bWUoY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGVuY29kaW5nTmFtZSksIG1f
cGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnRlcm1pbmF0ZVByb2Nlc3MoKQordm9p
ZCBXZWJQYWdlUHJveHk6OnRlcm1pbmF0ZVByb2Nlc3MoVGVybWluYXRpb25SZWFzb24gdGVybWlu
YXRpb25SZWFzb24pCiB7CiAgICAgLy8gTk9URTogVGhpcyB1c2VzIGEgY2hlY2sgb2YgbV9pc1Zh
bGlkIHJhdGhlciB0aGFuIGNhbGxpbmcgaXNWYWxpZCgpIHNpbmNlCiAgICAgLy8gd2Ugd2FudCB0
aGlzIHRvIHJ1biBldmVuIGZvciBwYWdlcyBiZWluZyBjbG9zZWQgb3IgdGhhdCBhbHJlYWR5IGNs
b3NlZC4KQEAgLTIzOTIsNiArMjM5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0ZXJtaW5hdGVQ
cm9jZXNzKCkKIAogICAgIG1fcHJvY2Vzcy0+cmVxdWVzdFRlcm1pbmF0aW9uKCk7CiAgICAgcmVz
ZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCgpOworICAgIG1fd2FzVGVybWluYXRlZER1ZVRvUmVz
b3VyY2VFeGhhdXN0aW9uV2hpbGVJbkJhY2tncm91bmQgPSB0ZXJtaW5hdGlvblJlYXNvbiA9PSBU
ZXJtaW5hdGlvblJlYXNvbjo6UmVzb3VyY2VFeGhhdXN0aW9uV2hpbGVJbkJhY2tncm91bmQ7CiB9
CiAKIFNlc3Npb25TdGF0ZSBXZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZShjb25zdCBzdGQ6OmZ1
bmN0aW9uPGJvb2wgKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4mIGZpbHRlcikgY29uc3QKQEAg
LTU1ODksNiArNTU5Nyw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5
OjpjcmVhdGlvblBhcmFtZXRlcnMoKQogICAgIHBhcmFtZXRlcnMudXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbiA9IG1fcGFnZUNsaWVudC51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCk7
CiAgICAgcGFyYW1ldGVycy5vYnNlcnZlZExheW91dE1pbGVzdG9uZXMgPSBtX29ic2VydmVkTGF5
b3V0TWlsZXN0b25lczsKICAgICBwYXJhbWV0ZXJzLm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5ID0gbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsKKyAgICBwYXJhbWV0ZXJzLmJh
Y2tncm91bmRDUFVMaW1pdCA9IG1fYmFja2dyb3VuZENQVUxpbWl0OwogCiAgICAgZm9yIChhdXRv
JiBpdGVyYXRvciA6IG1fdXJsU2NoZW1lSGFuZGxlcnNCeVNjaGVtZSkKICAgICAgICAgcGFyYW1l
dGVycy51cmxTY2hlbWVIYW5kbGVycy5zZXQoaXRlcmF0b3Iua2V5LCBpdGVyYXRvci52YWx1ZS0+
aWRlbnRpZmllcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCAzN2RmNmJiNGFiZDg1YTJjZTg4OTY4OTQ5MDMyOGIxYTc5N2ViYTk2Li44YjJiOGNkN2Q1ZGMw
M2IxNmJlMDlhN2Q2OGIxMDFjNTA1MzlmNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC02ODAsNyArNjgwLDggQEAgcHVibGljOgogCiAgICAgZG91YmxlIGVz
dGltYXRlZFByb2dyZXNzKCkgY29uc3Q7CiAKLSAgICB2b2lkIHRlcm1pbmF0ZVByb2Nlc3MoKTsK
KyAgICBlbnVtIGNsYXNzIFRlcm1pbmF0aW9uUmVhc29uIHsgUmVzb3VyY2VFeGhhdXN0aW9uV2hp
bGVJbkJhY2tncm91bmQsIE90aGVyIH07CisgICAgdm9pZCB0ZXJtaW5hdGVQcm9jZXNzKFRlcm1p
bmF0aW9uUmVhc29uID0gVGVybWluYXRpb25SZWFzb246Ok90aGVyKTsKIAogICAgIFNlc3Npb25T
dGF0ZSBzZXNzaW9uU3RhdGUoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtJik+JiA9IG51bGxwdHIpIGNvbnN0OwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IHJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSwgYm9vbCBuYXZpZ2F0ZSk7
CkBAIC0xNzIxLDYgKzE3MjIsNyBAQCBwcml2YXRlOgogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkZv
cmVncm91bmRBY3Rpdml0eVRva2VuIG1fYWN0aXZpdHlUb2tlbjsKICNlbmRpZgogICAgIGJvb2wg
bV9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBtX2JhY2tncm91bmRDUFVMaW1pdDsKICAgICBSZWY8V2ViQmFja0ZvcndhcmRMaXN0PiBtX2Jh
Y2tGb3J3YXJkTGlzdDsKICAgICAgICAgCiAgICAgYm9vbCBtX21haW50YWluc0luYWN0aXZlU2Vs
ZWN0aW9uOwpAQCAtMTk4NCw2ICsxOTg2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgYm9v
bCBtX2lzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCB7IGZhbHNlIH07CisgICAgYm9vbCBtX3dh
c1Rlcm1pbmF0ZWREdWVUb1Jlc291cmNlRXhoYXVzdGlvbldoaWxlSW5CYWNrZ3JvdW5kIHsgZmFs
c2UgfTsKICAgICAgICAgCiAgICAgV2Vha1B0ckZhY3Rvcnk8V2ViUGFnZVByb3h5PiBtX3dlYWtQ
dHJGYWN0b3J5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCmluZGV4IGY2MzMwMjZiMmJhY2JjNmU3ZDkwMjM0NTdhOWEzMGVhMGQ1MmMxZjUuLmM2YmEw
NWY1N2RiNjE3ZmNkZjRiN2E3NGY2ZjUzOTFiN2M1NWZhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNzcsNiArMTc3LDggQEAgdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnNodXREb3duKCkKICAgICB9CiAKICAgICBtX3Jlc3BvbnNpdmVuZXNz
VGltZXIuaW52YWxpZGF0ZSgpOworICAgIGlmIChtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1Rp
bWVyKQorICAgICAgICBtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyLT5pbnZhbGlkYXRl
KCk7CiAgICAgbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7CiAKICAgICBW
ZWN0b3I8UmVmUHRyPFdlYkZyYW1lUHJveHk+PiBmcmFtZXM7CkBAIC0xMDk3LDYgKzEwOTksMzMg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNYWluVGhyZWFkUGluZygpCiAgICAg
ICAgIGNhbGxiYWNrKGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpOwogfQogCitzdGF0aWMgVmVjdG9y
PFJlZlB0cjxXZWJQYWdlUHJveHk+PiBwYWdlc0NvcHkoV1RGOjpJdGVyYXRvclJhbmdlPFdlYlBy
b2Nlc3NQcm94eTo6V2ViUGFnZVByb3h5TWFwOjpjb25zdF9pdGVyYXRvcjo6VmFsdWVzPiBwYWdl
cykKK3sKKyAgICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2VQcm94eT4+IHZlY3RvcjsKKyAgICBmb3Ig
KGF1dG8mIHBhZ2UgOiBwYWdlcykKKyAgICAgICAgdmVjdG9yLmFwcGVuZChwYWdlKTsKKyAgICBy
ZXR1cm4gdmVjdG9yOworfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRXhjZWVkQmFja2dy
b3VuZENQVUxpbWl0KCkKK3sKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlcygpKSB7CisgICAg
ICAgIGlmIChwYWdlLT5pc1ZpZXdWaXNpYmxlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaWYgKHBhZ2UtPmlzUGxheWluZ0F1ZGlvKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HKFBlcmZvcm1hbmNlTG9nZ2luZywgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5OjpkaWRFeGNlZWRC
YWNrZ3JvdW5kQ1BVTGltaXQoKSBXZWJQcm9jZXNzIGhhcyBleGNlZWRlZCB0aGUgYmFja2dyb3Vu
ZCBDUFUgbGltaXQgYnV0IHdlIGFyZSBub3QgdGVybWluYXRpbmcgaXQgYmVjYXVzZSB0aGVyZSBp
cyBhdWRpbyBwbGF5aW5nIiwgdGhpcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBSRUxFQVNFX0xPRyhQZXJmb3JtYW5jZUxvZ2dpbmcsICIlcCAtIFdlYlBy
b2Nlc3NQcm94eTo6ZGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0KCkgVGVybWluYXRpbmcgYmFj
a2dyb3VuZCBXZWJQcm9jZXNzIHRoYXQgaGFzIGV4Y2VlZGVkIHRoZSBiYWNrZ3JvdW5kIENQVSBs
aW1pdCIsIHRoaXMpOworCisgICAgLy8gV2Ugb25seSB0ZXJtaW5hdGUgdGhlIHByb2Nlc3MgaGVy
ZS4gV2Ugd2lsbCBjYWxsIHByb2Nlc3NEaWRDcmFzaCgpIG9uY2Ugb25lIG9mIHRoZSBwYWdlcyBi
ZWNvbWVzIHZpc2libGUgYWdhaW4gKHNlZSBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlT
dGF0ZUNoYW5nZSgpKS4KKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlc0NvcHkocGFnZXMoKSkp
CisgICAgICAgIHBhZ2UtPnRlcm1pbmF0ZVByb2Nlc3MoV2ViUGFnZVByb3h5OjpUZXJtaW5hdGlv
blJlYXNvbjo6UmVzb3VyY2VFeGhhdXN0aW9uV2hpbGVJbkJhY2tncm91bmQpOworfQorCiB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKQog
ewogICAgIGlmIChtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDAxY2I4OWYzNThiMjQyNjQyOTc0
YTNiMTA3MWExN2E1ZGIyNzU0NmYuLjY0Y2E3Mjc2YmM0ODlhZmU3YTAwNTQ5ZDVlYjUwODBkNDc1
NTIzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAg
LTE2MSw2ICsxNjEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtZW1vcnlQcmVzc3VyZVN0YXR1c0No
YW5nZWQoYm9vbCBpc1VuZGVyTWVtb3J5UHJlc3N1cmUpIHsgbV9pc1VuZGVyTWVtb3J5UHJlc3N1
cmUgPSBpc1VuZGVyTWVtb3J5UHJlc3N1cmU7IH0KICAgICBib29sIGlzVW5kZXJNZW1vcnlQcmVz
c3VyZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNVbmRlck1lbW9yeVByZXNzdXJlOyB9CiAKKyAgICB2
b2lkIGRpZEV4Y2VlZEJhY2tncm91bmRDUFVMaW1pdCgpOworCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IFdlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggOTI1YjRkY2FhNTRjODE0MzkzYzc5ZGJlN2Q4YTMwMGIyMzc4MDIxMC4u
YTk1OTFjNDMyNGVhMWE5YjE3M2Q3NzdhNDZmYmU1NTNmZDJjZGVjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC00
NSw2ICs0NSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7
CiAKICAgICBTZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVz
KQogCisgICAgRGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0KCkKKwogICAgIFJldGFpbkljb25G
b3JQYWdlVVJMKFN0cmluZyBwYWdlVVJMKQogICAgIFJlbGVhc2VJY29uRm9yUGFnZVVSTChTdHJp
bmcgcGFnZVVSTCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IGFlODBmNWYyNmUzMGI0OTZkOWU4NmM2MWYwZDE2ZTU3MDcwMmIwZTguLjQx
N2VhOWRkZWQ3Y2IzYzQxNDYwYjlkMWNhNmIyMDk4Y2E4ZDA1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM2MSw2ICszNjEsNyBAQCBX
ZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3VzZXJBY3Rpdml0eUh5c3RlcmVzaXMoW3RoaXNdKEh5
c3RlcmVzaXNTdGF0ZSkgeyB1cGRhdGVVc2VyQWN0aXZpdHkoKTsgfSkKICAgICAsIG1fdXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbihwYXJhbWV0ZXJzLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24pCiAgICAgLCBtX292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5IHsgcGFyYW1ldGVy
cy5vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB9CisgICAgLCBtX2JhY2tncm91bmRDUFVM
aW1pdChwYXJhbWV0ZXJzLmJhY2tncm91bmRDUFVMaW1pdCkKIHsKICAgICBBU1NFUlQobV9wYWdl
SUQpOwogCkBAIC0yNjI0LDYgKzI2MjUsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3Rh
dGUoQWN0aXZpdHlTdGF0ZTo6RmxhZ3MgYWN0aXZpdHlTdGF0ZSwgYm9vbCB3YW50c0RpZAogICAg
ICAgICBwbHVnaW5WaWV3LT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKGNoYW5nZWQpOwogCiAgICAg
bV9kcmF3aW5nQXJlYS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShjaGFuZ2VkLCB3YW50c0RpZFVw
ZGF0ZUFjdGl2aXR5U3RhdGUsIGNhbGxiYWNrSURzKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZShtX3BhZ2VJRCwgY2hhbmdlZCk7CiAKICAg
ICBpZiAoY2hhbmdlZCAmIEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpCiAgICAgICAgIHVwZGF0
ZUlzSW5XaW5kb3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IDM3ZDgxNDQ3MzlmNTdjNjAwNjc3NjFkN2MzNzg1MTk5YTQwYTlhYzEuLmNmMWZj
YzdmN2Y0MzQyY2NjYzk1NDA3ZjRmZjViNzc1MjE5NWViMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtOTcyLDYgKzk3Miw3IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAgICAgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5KiB1cmxTY2hlbWVIYW5kbGVy
Rm9yU2NoZW1lKGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiYWNr
Z3JvdW5kQ1BVTGltaXQoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDUFVMaW1pdDsgfQog
CiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOwpAQCAtMTU1MCw2ICsxNTUxLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3Jl
OjpVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIG1fdXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbiB7IFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiB9OwogCiAg
ICAgY29uc3QgU3RyaW5nIG1fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgY29u
c3Qgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fYmFja2dyb3VuZENQVUxpbWl0OwogCiAgICAgSGFz
aE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk+PiBt
X3NjaGVtZVRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwOwogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSo+IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxl
clByb3h5TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
NWRkY2E5OGMwZDY4OWRlNDA3NDVkOTZlZWEwM2U2ZjFmMzA4MmJmYi4uMGM5ZTc0ZGI3NDc2N2Nm
YzU0YmY4NmU0YjY4YmM4ZDg5MzA0Yzg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCkBAIC03MSw2ICs3MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9BWE9iamVj
dENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0NQVU1vbml0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbW1vblZNLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9ETlMuaD4KQEAgLTU4MCw2ICs1ODEsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmNy
ZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYQogCiAgICAgICAgIC8vIEJhbGFuY2VkIGJ5IGFuIGVuYWJsZVRlcm1pbmF0aW9uIGluIHJl
bW92ZVdlYlBhZ2UuCiAgICAgICAgIGRpc2FibGVUZXJtaW5hdGlvbigpOworICAgICAgICB1cGRh
dGVCYWNrZ3JvdW5kQ1BVTGltaXQoKTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS0+cmVpbml0aWFsaXplV2ViUGFnZShXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIApA
QCAtNTk0LDYgKzU5Niw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZSh1aW50NjRf
dCBwYWdlSUQpCiAgICAgbV9wYWdlTWFwLnJlbW92ZShwYWdlSUQpOwogCiAgICAgZW5hYmxlVGVy
bWluYXRpb24oKTsKKyAgICB1cGRhdGVCYWNrZ3JvdW5kQ1BVTGltaXQoKTsKIH0KIAogYm9vbCBX
ZWJQcm9jZXNzOjpzaG91bGRUZXJtaW5hdGUoKQpAQCAtMTI2Myw4ICsxMjY2LDIyIEBAIHZvaWQg
V2ViUHJvY2Vzczo6dXBkYXRlQWN0aXZlUGFnZXMoKQogewogfQogCit2b2lkIFdlYlByb2Nlc3M6
OnVwZGF0ZUJhY2tncm91bmRDUFVMaW1pdCgpCit7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6dXBk
YXRlQmFja2dyb3VuZENQVU1vbml0b3JTdGF0ZSgpCit7Cit9CisKICNlbmRpZgogCit2b2lkIFdl
YlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHVpbnQ2NF90LCBXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkKQoreworICAgIGlmIChjaGFuZ2VkICYgV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQorICAgICAgICB1cGRhdGVCYWNrZ3JvdW5kQ1BV
TW9uaXRvclN0YXRlKCk7Cit9CisKICNpZiBQTEFURk9STShJT1MpCiB2b2lkIFdlYlByb2Nlc3M6
OnJlc2V0QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9ucygpCiB7CkBAIC0xNTU2LDYgKzE1NzMsMTUg
QEAgdm9pZCBXZWJQcm9jZXNzOjpwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQog
ICAgIG1fZG5zUHJlZmV0Y2hIeXN0ZXJlcmlzLmltcHVsc2UoKTsKIH0KIAorYm9vbCBXZWJQcm9j
ZXNzOjpoYXNWaXNpYmxlV2ViUGFnZSgpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBwYWdlIDog
bV9wYWdlTWFwLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChwYWdlLT5pc1Zpc2libGUoKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNp
ZiBVU0UoTElCV0VCUlRDKQogTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRD
TmV0d29yaygpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDAx
YmFiM2I1NDgwMzFhODYwMDkzZjk2ZmFiOGFmZGY3ZWQ1ZDE2YzAuLjliODA5NzlmNGI1MzRjOWUx
ZTI4MjdmMmU5OTRkMGNkN2NmZjdjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCkBAIC02Miw2ICs2Miw3IEBAIGNsYXNzIE9iamVjdDsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBDUFVNb25pdG9yOwog
Y2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgUGFnZUdyb3VwOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwpAQCAtMTk0LDYgKzE5NSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCB1
cGRhdGVBY3RpdmVQYWdlcygpOworICAgIHZvaWQgcGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2Uo
dWludDY0X3QgcGFnZUlELCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFncyBjaGFuZ2VkKTsK
IAogICAgIHZvaWQgc2V0SGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0luY3JlYXNlTGltaXQo
aW50IG1pbGxpc2Vjb25kcyk7CiAKQEAgLTMxNyw2ICszMTksOSBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGVzdHJveUF1dG9tYXRpb25TZXNzaW9uUHJveHkoKTsKIAogICAgIHZvaWQgbG9nRGlhZ25v
c3RpY01lc3NhZ2VGb3JOZXR3b3JrUHJvY2Vzc0NyYXNoKCk7CisgICAgYm9vbCBoYXNWaXNpYmxl
V2ViUGFnZSgpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlQmFja2dyb3VuZENQVUxpbWl0KCk7Cisg
ICAgdm9pZCB1cGRhdGVCYWNrZ3JvdW5kQ1BVTW9uaXRvclN0YXRlKCk7CiAKICAgICAvLyBDaGls
ZFByb2Nlc3MKICAgICB2b2lkIGluaXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0lu
aXRpYWxpemF0aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOwpAQCAtNDE4LDYgKzQyMywxMCBAQCBw
cml2YXRlOgogCiAgICAgdW5zaWduZWQgbV9wYWdlc01hcmtpbmdMYXllcnNBc1ZvbGF0aWxlIHsg
MCB9OwogICAgIGJvb2wgbV9zdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciB7IGZhbHNlIH07
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDUFVNb25p
dG9yPiBtX2JhY2tncm91bmRDUFVNb25pdG9yOworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBt
X2JhY2tncm91bmRDUFVMaW1pdDsKKyNlbmRpZgogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpVc2Vy
R2VzdHVyZVRva2VuICosIHVpbnQ2NF90PiBtX3VzZXJHZXN0dXJlVG9rZW5zOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4
IGQ5MjBiODg3YjE5YTVjNTZjMWU3MmYzODIwM2E0MjUwN2Q5MzVlM2UuLmUwZjgyNjk0MWNjY2Nl
OThjYmNjZTIyMWE5ZGE3YTNhYmQ4ZGFkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC00OCw2ICs0OCw3IEBACiAjaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9PcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0
Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ0ZOZXR3b3JrU1BJLmg+CisjaW1wb3J0IDxXZWJD
b3JlL0NQVU1vbml0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Gb250Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udENhc2NhZGUuaD4K
QEAgLTc3LDYgKzc4LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAorI2lmIFBMQVRGT1JNKE1BQykKK3N0YXRpYyBjb25zdCBTZWNvbmRzIGJhY2tn
cm91bmRDUFVNb25pdG9yaW5nSW50ZXJ2YWwgeyAxNV9taW4gfTsKKyNlbmRpZgorCiB2b2lkIFdl
YlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsKQogewogfQpAQCAtMzY5
LDYgKzM3NCw0OSBAQCB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUFjdGl2ZVBhZ2VzKCkKICNlbmRp
ZgogfQogCit2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUJhY2tncm91bmRDUFVMaW1pdCgpCit7Cisj
aWYgUExBVEZPUk0oTUFDKQorICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBiYWNrZ3JvdW5kQ1BV
TGltaXQ7CisKKyAgICAvLyBVc2UgdGhlIGxhcmdlc3QgbGltaXQgYW1vbmcgYWxsIHBhZ2VzIGlu
IHRoaXMgcHJvY2Vzcy4KKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAudmFsdWVzKCkp
IHsKKyAgICAgICAgYXV0byBwYWdlQ1BVTGltaXQgPSBwYWdlLT5iYWNrZ3JvdW5kQ1BVTGltaXQo
KTsKKyAgICAgICAgaWYgKCFwYWdlQ1BVTGltaXQpIHsKKyAgICAgICAgICAgIGJhY2tncm91bmRD
UFVMaW1pdCA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGlmICghYmFja2dyb3VuZENQVUxpbWl0IHx8IHBhZ2VDUFVMaW1pdCA+IGJhY2tncm91
bmRDUFVMaW1pdC52YWx1ZSgpKQorICAgICAgICAgICAgYmFja2dyb3VuZENQVUxpbWl0ID0gcGFn
ZUNQVUxpbWl0OworICAgIH0KKworICAgIGlmIChtX2JhY2tncm91bmRDUFVMaW1pdCA9PSBiYWNr
Z3JvdW5kQ1BVTGltaXQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2dyb3VuZENQVUxp
bWl0ID0gYmFja2dyb3VuZENQVUxpbWl0OworICAgIHVwZGF0ZUJhY2tncm91bmRDUFVNb25pdG9y
U3RhdGUoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUJhY2tncm91bmRD
UFVNb25pdG9yU3RhdGUoKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIW1fYmFja2dy
b3VuZENQVUxpbWl0IHx8IGhhc1Zpc2libGVXZWJQYWdlKCkpIHsKKyAgICAgICAgaWYgKG1fYmFj
a2dyb3VuZENQVU1vbml0b3IpCisgICAgICAgICAgICBtX2JhY2tncm91bmRDUFVNb25pdG9yLT5z
ZXRDUFVMaW1pdChzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKCFtX2JhY2tncm91bmRDUFVNb25pdG9yKSB7CisgICAgICAgIG1fYmFja2dyb3VuZENQVU1v
bml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENQVU1vbml0b3I+KGJhY2tncm91bmRDUFVNb25pdG9y
aW5nSW50ZXJ2YWwsIFt0aGlzXSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhQZXJmb3JtYW5j
ZUxvZ2dpbmcsICIlcCAtIFdlYlByb2Nlc3MgZXhjZWVkZWQgYmFja2dyb3VuZCBDUFUgbGltaXQg
b2YgJS4xZiUlIiwgdGhpcywgbV9iYWNrZ3JvdW5kQ1BVTGltaXQudmFsdWUoKSAqIDEwMCk7Cisg
ICAgICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkRpZEV4Y2VlZEJhY2tncm91bmRDUFVMaW1pdCgpLCAwKTsKKyAgICAgICAg
fSk7CisgICAgfQorICAgIG1fYmFja2dyb3VuZENQVU1vbml0b3ItPnNldENQVUxpbWl0KG1fYmFj
a2dyb3VuZENQVUxpbWl0LnZhbHVlKCkpOworI2VuZGlmCit9CisKIFJlZlB0cjxPYmpDT2JqZWN0
R3JhcGg+IFdlYlByb2Nlc3M6OnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMoT2JqQ09iamVjdEdy
YXBoJiBvYmplY3RHcmFwaCkKIHsKICAgICBzdHJ1Y3QgVHJhbnNmb3JtZXIgZmluYWwgOiBPYmpD
T2JqZWN0R3JhcGg6OlRyYW5zZm9ybWVyIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304263</attachid>
            <date>2017-03-13 09:32:22 -0700</date>
            <delta_ts>2017-03-13 11:09:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169456-20170313093221.patch</filename>
            <type>text/plain</type>
            <size>38119</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjFiNmY4NDZlNDg2NDQw
YTY0NzNhMjhlZDY2MTUxM2M5YjNlYWQ1Ny4uNDQxMDg4M2M0NDNmNjRjNDJkMjhhN2QxMDVhMzE3
OTY5MDExN2NhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTAzLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdGVybWluYXRpb24g
b2YgYmFja2dyb3VuZCBXZWJQcm9jZXNzZXMgdGhhdCBnbyBvdmVyIGEgZ2l2ZW4gQ1BVIHVzYWdl
IHRocmVzaG9sZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY5NDU2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDk2MDk2OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ1BVTW9uaXRvciB1dGls
aXR5IGNsYXNzIHRvIG1vbml0b3IgQ1BVIHVzYWdlIGFuZCBjYWxsIGEgcHJvdmlkZWQgbGFtYmRh
CisgICAgICAgIHdoZW5ldmVyIHRoZSBwcm9jZXNzIGV4Y2VlZHMgdGhlIHByb3ZpZGVkIENQVSBs
aW1pdCBvdmVyIGEgZ2l2ZW4gcGVyaW9kIG9mCisgICAgICAgIHRpbWUuCisKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vQ1BV
TW9uaXRvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1BVTW9uaXRvcjo6Q1BVTW9u
aXRvcik6CisgICAgICAgIChXZWJDb3JlOjpDUFVNb25pdG9yOjpzZXRDUFVMaW1pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDUFVNb25pdG9yOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9DUFVNb25pdG9yLmg6IEFkZGVkLgorCiAyMDE3LTAzLTEzICBNaWd1ZWwgR29tZXogIDxtYWdv
bWV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgSW1hZ2VEZWNvZGVyIGNhbiBiZSBkZWxldGVkIHdo
aWxlIHRoZSBhc3luYyBkZWNvZGVyIHRocmVhZCBpcyBzdGlsbCB1c2luZyBpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDM3ZDdkYzRiYzM5ZTUwNjE5MmE0YTcyMTliNDVlNzY4MWExNmUyOWIuLjRiNzc5ZWE4YjFm
M2MyYThhNDIzZWE5MGZkYzIwZjk1OGIzYmM1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjkg
QEAKKzIwMTctMDMtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBBbGxvdyB0ZXJtaW5hdGlvbiBvZiBiYWNrZ3JvdW5kIFdlYlByb2Nlc3NlcyB0aGF0IGdvIG92
ZXIgYSBnaXZlbiBDUFUgdXNhZ2UgdGhyZXNob2xkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0NTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMw
OTYwOTY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFsbG93IHRlcm1pbmF0aW9uIG9mIGJhY2tncm91bmQgV2ViUHJvY2Vzc2VzIHRoYXQgZ28gb3Zl
ciBhIGdpdmVuIENQVSB1c2FnZSB0aHJlc2hvbGQuCisgICAgICAgIFRoaXMgY2FuIGJlIGVuYWJs
ZWQgY2xpZW50IHNpZGUgdmlhIHRoZSBXS1BhZ2VDb25maWd1cmF0aW9uU2V0QmFja2dyb3VuZENQ
VUxpbWl0KCkKKyAgICAgICAgU1BJLiBUaGUgY2xpZW50IHByb3ZpZGVzIHRoZSBhY3R1YWwgQ1BV
IHRocmVzaG9sZCBpdCB3YW50cyB0byB1c2UgYXQgcGFnZSBsZXZlbC4KKworICAgICAgICBJZiBz
dWNoIGxpbWl0IGlzIHNldCwgd2hlbmV2ZXIgYSBXZWJDb250ZW50IHByb2Nlc3MgaGFzIG5vIHZp
c2libGUgcGFnZXMsIHdlIHN0YXJ0CisgICAgICAgIG1vbml0b3JpbmcgaXRzIENQVSB1c2FnZSBv
dmVyIDE1IG1pbnV0ZXMgcGVyaW9kcy4gQXQgdGhlIGVuZCBvZiBlYWNoIHBlcmlvZCwgd2UKKyAg
ICAgICAgY2hlY2sgaWYgdGhlIHByb2Nlc3MnIGF2ZXJhZ2UgQ1BVIHVzYWdlIG92ZXIgdGhpcyBw
ZXJpb2Qgd2FzIGdyZWF0ZXIgdGhhbiB0aGUKKyAgICAgICAgYmFja2dyb3VuZCBDUFUgbGltaXQu
IElmIGl0IGdyZWF0ZXIsIHRoZSBXZWJDb250ZW50IHByb2Nlc3Mgc2VuZCBhbiBJUEMgbWVzc2Fn
ZSB0bworICAgICAgICB0aGUgVUlQcm9jZXNzIGxldHRpbmcgaXQga25vdyB0aGF0IGl0IGV4Y2Vl
ZGVkIHRoZSBDUFUgbGltaXQuIFRoZSBVSSBwcm9jZXNzIHdpbGwKKyAgICAgICAgdGhlbiBsb2cg
YSBtZXNzYWdlIGFuZCB0ZXJtaW5hdGUgdGhlIHByb2Nlc3MgdW5sZXNzIGl0IGhhcyBhbnkgYXVk
aW8gcGxheWluZy4KKworICAgICAgICBPbmNlIGEgV2ViUHJvY2VzcyBoYXMgYmVlbiB0ZXJtaW5h
dGVkLCB3ZSBkbyBub3QgbGV0IHRoZSBjbGllbnQga25vdyB1bnRpbCBvbmUgb2YgaXRzCisgICAg
ICAgIHBhZ2VzIGJlY29tZXMgdmlzaWJsZSBhZ2Fpbi4gV2hlbiB0aGlzIGhhcHBlbnMsIHdlIGNh
bGwgdGhlIHByb2Nlc3NEaWRDcmFzaAorICAgICAgICBkZWxlZ2F0ZSBhbmQgU2FmYXJpIHdpbGwg
dGFrZSBjYXJlIG9mIHJlbG9hZGluZyB0aGUgdGFiIGFuZCBzaG93aW5nIHRoZSBjcmFzaAorICAg
ICAgICBiYW5uZXIgdGhlbi4gVGhpcyBpcyBkb25lIGJlY2F1c2Ugd2UgZG8gbm90IHdhbnQgdG8g
cmVsb2FkIGNvbnRlbnQgdGhhdCBpcworICAgICAgICB1c2luZyBhIGxvdCBvZiBDUFUgd2hpbGUg
aW4gdGhlIGJhY2tncm91bmQuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6
OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAg
ICAgICAgQWRkIGJhY2tncm91bmRDUFVMaW1pdCB0byBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHA6Cisg
ICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjb3B5KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1
cmF0aW9uOjpiYWNrZ3JvdW5kQ1BVTGltaXQpOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJh
dGlvbjo6c2V0QmFja2dyb3VuZENQVUxpbWl0KToKKyAgICAgICAgQWRkIGJhY2tncm91bmRDUFVM
aW1pdCB0byBBUElQYWdlQ29uZmlndXJhdGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcDoKKyAgICAgICAgKFdLUGFnZUNvbmZpZ3VyYXRp
b25TZXRCYWNrZ3JvdW5kQ1BVTGltaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VDb25maWd1cmF0aW9uUmVmLmg6CisgICAgICAgIEFkZCBTUEkgdG8gc2V0IGJhY2tncm91bmQg
Q1BVIGxpbWl0LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MpOgorICAgICAg
ICBSZXNldCBtX3dhc1Rlcm1pbmF0ZWREdWVUb1Jlc291cmNlRXhoYXVzdGlvbldoaWxlSW5CYWNr
Z3JvdW5kIGZsYWcKKyAgICAgICAgYXMgdGhlIHByb2Nlc3Mgd2FzIHJlc3RhcnRlZC4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSk6
CisgICAgICAgIFdoZW4gdGhlIHZpc2liaWxpdHkgc3RhdGUgY2hhbmdlcyBmb3IgYSBwYWdlIHRo
YXQgd2FzIHRlcm1pbmF0ZWQKKyAgICAgICAgd2hpbGUgaW4gdGhlIGJhY2tncm91bmQgZHVlIHRv
IGV4Y2VlZGVkIENQVSBsaW1pdCwgbm90aWZ5IHRoZQorICAgICAgICBjbGllbnQgdGhhdCB0aGUg
cHJvY2VzcyBjcmFzaGVkIHZpYSB0aGUgcHJvY2Vzc0RpZENyYXNoIGRlbGVnYXRlLgorICAgICAg
ICBTYWZhcmkgd2lsbCB1c2UgdGhpcyBkZWxlZ2F0ZSB0byByZWxvYWQgdGhlIHRhYiBhbmQgc2hv
dyB0aGUgY3Jhc2gKKyAgICAgICAgYmFubmVyLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6dGVybWluYXRlUHJvY2Vzcyk6CisgICAgICAgIEFkZCBwYXJhbWV0ZXIgdG8gdGVybWlu
YXRlUHJvY2VzcygpIHRvIHByb3ZpZGUgdGhlIHJlYXNvbi4gSWYgdGhlCisgICAgICAgIHBhZ2Ug
d2FzIHRlcm1pbmF0ZWQgZHVlIHRvIHJlYWNoaW5nIENQVSBsaW1pdCwgc2V0IGEgZmxhZyBzbyB3
ZQorICAgICAgICBjYW4gZGVsYXkgY2FsbGluZyBwcm9jZXNzRGlkQ3Jhc2ggdW50aWwgdGhlIHBh
Z2UgYmVjb21lcyB2aXNpYmxlCisgICAgICAgIGFnYWluLgorCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgU2V0IGJhY2tncm91bmRD
UFVMaW1pdCBvbiB0aGUgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpwYWdlc0NvcHkpOgorICAgICAgICBBZGQgdXRp
bGl0eSBmdW5jdGlvbiB0byBjb3B5IHRoZSBsaXN0IG9mIHBhZ2VzIHRvIGEgVmVjdG9yLgorCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRXhjZWVkQmFja2dyb3VuZENQVUxp
bWl0KToKKyAgICAgICAgV2hlbiB3ZSBnZXQgYW4gSVBDIG1lc3NhZ2UgZnJvbSBhIFdlYkNvbnRl
bnQgcHJvY2VzcyB0byBsZXQgdXMKKyAgICAgICAga25vdyB0aGF0IHRoZSBwcm9jZXNzIGV4Y2Vl
ZGVkIHRoZSBiYWNrZ3JvdW5kIENQVSBsaW1pdCwgd2UgbG9nCisgICAgICAgIGEgbWVzc2FnZSBh
bmQgd2UgdGVybWluYXRlIGl0IGlmIGl0IGhhcyBubyBhdWRpbyBwbGF5aW5nLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgQWRkIERpZEV4Y2VlZEJhY2tncm91
bmRDUFVMaW1pdCBJUEMgbWVzc2FnZSBzbyB0aGUgV2ViQ29udGVudCBwcm9jZXNzCisgICAgICAg
IGNhbiBsZXQgdXMga25vdyB3aGVuIGl0IGdvZXMgb3ZlciB0aGUgYmFja2dyb3VuZCBDUFUgbGlt
aXQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Om1fYmFja2dyb3VuZENQVUxpbWl0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2V0QWN0aXZpdHlTdGF0ZSk6CisgICAgICAgIE5vdGlmeSB0aGUgV2ViUHJvY2VzcyB3aGVu
ZXZlciB0aGUgYWN0aXZpdHkgc3RhdGUgb2YgYSBXZWJQYWdlIGNoYW5nZXMuCisgICAgICAgIFRo
ZSBXZWJQcm9jZXNzIGN1cnJlbnRseSB1c2VzIHRoaXMgaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5l
IHdoZW4gdGhlCisgICAgICAgIHZpc2liaWxpdHkgb2YgYSBwYWdlIGNoYW5nZXMuIFRoaXMgaXMg
bmVlZGVkIGFzIHdlIG9ubHkgd2FudCB0byBtb25pdG9yCisgICAgICAgIENQVSB1c2FnZSBvZiAq
YmFja2dyb3VuZCogV2ViQ29udGVudCBwcm9jZXNzZXMgKHByb2Nlc3NlcyB0aGF0IGhhdmUgbm8K
KyAgICAgICAgdmlzaWJsZSBXZWJQYWdlKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmJhY2tncm91bmRDUFVMaW1p
dCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6cmVtb3ZlV2ViUGFnZSk6CisgICAgICAgIENhbGwgdXBkYXRlQmFja2dyb3VuZENQVUxp
bWl0KCkgd2hlbmV2ZXIgYSBXZWJQYWdlIGlzIGFkZGVkIG9yIHJlbW92ZWQKKyAgICAgICAgc2lu
Y2UgdGhlIGxpbWl0IGlzIHBlciBwYWdlLgorCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OnVwZGF0ZUJhY2tncm91bmRDUFVMaW1pdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OnVwZGF0ZUJhY2tncm91bmRDUFVNb25pdG9yU3RhdGUpOgorICAgICAgICBOby1vcHMgb24gb3Ro
ZXIgcGxhdGZvcm1zIHRoYW4gTWFjIGF0IHRoZSBtb21lbnQuCisKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICBDYWxsIHVw
ZGF0ZUJhY2tncm91bmRDUFVNb25pdG9yU3RhdGUoKSB3aGVuZXZlciB0aGUgdmlzaWJpbGl0eSBv
ZiB0aGUKKyAgICAgICAgV2ViUGFnZSBjaGFuZ2VzIGFzIHdlIG9ubHkgbW9uaXRvciB0aGUgQ1BV
IHVzYWdlIG9mICpiYWNrZ3JvdW5kKiBXZWJDb250ZW50CisgICAgICAgIHByb2Nlc3Nlcy4KKwor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpoYXNWaXNpYmxlV2ViUGFnZSk6CisgICAgICAg
IEFkZCB1dGlsaXR5IGZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiB0aGVyZSBpcyBhbnkgdmlzaWJs
ZSBXZWJQYWdlIGluIHRoaXMKKyAgICAgICAgV2ViQ29udGVudCBwcm9jZXNzLiBJZiB0aGUgZnVu
Y3Rpb24gcmV0dXJucyBmYWxzZSwgdGhlbiB3ZSBjb25zaWRlciB0aGUKKyAgICAgICAgV2ViQ29u
dGVudCBwcm9jZXNzIHRvIGJlIGEgKmJhY2tncm91bmQqIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OnVwZGF0ZUJhY2tncm91bmRDUFVMaW1pdCk6CisgICAgICAgIENvbXB1dGUgdGhlIFdlYlByb2Nl
c3MnIGJhY2tncm91bmQgQ1BVIGxpbWl0IGdpdmVuIHRoZSBsaW1pdCBzZXQgZm9yIGVhY2gKKyAg
ICAgICAgb2YgaXRzIFdlYlBhZ2VzLiBXZSB1c2UgdGhlIGxhcmdlc3QgKGkuZS4gbW9zdCBwZXJt
aXNzaXZlKSBiYWNrZ3JvdW5kIENQVQorICAgICAgICBsaW1pdCBhbW9uZyBhbGwgdGhlIHBhZ2Vz
LgorCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVwZGF0ZUJhY2tncm91bmRDUFVNb25p
dG9yU3RhdGUpOgorICAgICAgICBVcGRhdGUgdGhlIHN0YXRlIG9mIHRoZSBiYWNrZ3JvdW5kIENQ
VSBtb25pdG9yLiBUaGlzIGlzIGNhbGxlZCB3aGVuZXZlcgorICAgICAgICB0aGUgYmFja2dyb3Vu
ZCBDUFUgbGltaXQgb2YgdGhlIHByb2Nlc3MgY2hhbmdlcyBvciB3aGVuZXZlciB0aGUgdmlzaWJp
bGl0eQorICAgICAgICBvZiBhIFdlYlBhZ2UgY2hhbmdlcy4KKwogMjAxNy0wMy0xMyAgWmFuIERv
YmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dLMl0gTW92ZSBBY2Nl
bGVyYXRlZFN1cmZhY2UgZmlsZXMgdW5kZXIgV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA0NDVlMjVjYTNiYTg2ZWU4N2RmYWZhZWY4ZWViYjA1MjRhNjY0MTZlLi41
YTE5Y2M1YTU1MzdiODVlNzU2ZjYzMGNkNTg5ZmViOWE3MjVmZjNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xOTEyLDYgKzE5
MTIsOCBAQAogCQk0NjczMDIwMjFDNEVGRTc4MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdV
bmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJp
bmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87IH07CiAJCTQ2ODlGMUFGMTI2N0JBRTEwMEU4
RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAq
LzsgfTsKIAkJNDZCNjNGNkMxQzZFOEQxOTAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjYzRjZC
MUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZDNjk2Q0IxRTcyMDVGNzAwNTk3
OTM3IC8qIENQVU1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QzY5NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDZDNjk2Q0MxRTcy
MDVGQzAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0
b3IuY3BwICovOyB9OwogCQk0NkM4M0VGRDFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDODNF
RkIxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmNwcCAqLzsgfTsKIAkJNDZDODNFRkUx
QTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90
aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NkRCQjY1MDFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEQkI2NEUxQUI4Qzk2RjAw
RDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCAqLzsgfTsKQEAgLTk0ODEsNiArOTQ4Myw4IEBA
CiAJCTQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENv
dW50SW5jcmVtZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWdub3Jl
T3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2ZW50VGFy
Z2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZlbnRUYXJn
ZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZDNjk2QzkxRTcyMDVF
NDAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1BVTW9uaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkM2OTZDQTFF
NzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDUFVNb25pdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDZDODNFRkIxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlb05vdGlmaWVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb05vdGlmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REJCNjRFMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dl
ck9ic2VydmVyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvd2VyT2Jz
ZXJ2ZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNjM3LDYgKzIzNjQx
LDggQEAKIAkJCQlEOEI2MTUyRTEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmggKi8sCiAJCQkJ
MzM5QjVCNjIxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJhdGVneS5oICovLAogCQkJCTg2
MkYxMjlEMThDMTU3MkMwMDVDNTRBRiAvKiBDb3VudGVkVXNlckFjdGl2aXR5LmggKi8sCisJCQkJ
NDZDNjk2Q0ExRTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuY3BwICovLAorCQkJCTQ2QzY5
NkM5MUU3MjA1RTQwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggKi8sCiAJCQkJNDYzNzYzMDYxRTI2
RkRCQTAwOENENDZEIC8qIENQVVRpbWUuY3BwICovLAogCQkJCTQ2Mzc2MzA3MUUyNkZEQkEwMDhD
RDQ2RCAvKiBDUFVUaW1lLmggKi8sCiAJCQkJRTExQUYxNTAxMUI5QTFBMzAwODA1MTAzIC8qIEN1
cnNvci5jcHAgKi8sCkBAIC0yOTAyMyw2ICsyOTAyOSw3IEBACiAJCQkJRTEzOTg2NjQxNTQ3ODQ3
NDAwMUUzRjY1IC8qIFN0eWxlUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QkJFRDRE
MTRGQ0RCQTEwMDNGMEI5OCAvKiBTdHlsZVJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0OTQ2
RUFGMTU2RTY0REQwMEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQ2QzY5NkNCMUU3MjA1RjcwMDU5NzkzNyAvKiBDUFVNb25pdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNDYxRDY1RjFCQjBDODBEMDBDQjU2NDUgLyogU3R5bGVTY29wZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRjQ3QTVFM0UxOTVCOEM4QTAwNDgzMTAwIC8qIFN0eWxlU2Nyb2xsU25hcFBv
aW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUQ2MzgwMTAxQUYxNzMyMjAwMzFBMTVDIC8qIFN0
eWxlU2VsZkFsaWdubWVudERhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMzAyNjIsNiArMzAyNjks
NyBAQAogCQkJCTU5QjU5NzczMTEwODY1NkIwMDcxNTlFOCAvKiBCcmlkZ2VKU0MuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0E0NTAzMkYxOERCNzE3MjAwMzc3QjM0IC8qIEJ1ZmZlcmVkTGluZVJl
YWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVCM0RBRjEyNTFGMTJEMDAzRUYyNjkgLyog
QnV0dG9uSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ2QzY5NkNDMUU3MjA1RkMw
MDU5NzkzNyAvKiBDUFVNb25pdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5Q0Y3MEQ3
RTJCODIwMDdDMzk4MyAvKiBjX2NsYXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUVDQTY4MEM5
MUU2NzczMEIwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkxQTU2OUNGOTBEN0UyQjgyMDA3QzM5ODMgLyogY19pbnN0YW5jZS5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzIzNWI2
MjgzZWI4ZjZjYzVlYzRiM2YwNzMwZmVjZGNlNjM5NGQ3YQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuY3BwCkBAIC0wLDAgKzEsNzMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1BVTW9uaXRvci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NQVU1vbml0b3I6OkNQVU1vbml0b3IoU2Vjb25kcyBj
aGVja0ludGVydmFsLCBFeGNlZWRlZENQVUxpbWl0SGFuZGxlciYmIGV4Y2VlZGVkQ1BVTGltaXRI
YW5kbGVyKQorICAgIDogbV9jaGVja0ludGVydmFsKGNoZWNrSW50ZXJ2YWwpCisgICAgLCBtX2V4
Y2VlZGVkQ1BVTGltaXRIYW5kbGVyKFdURk1vdmUoZXhjZWVkZWRDUFVMaW1pdEhhbmRsZXIpKQor
ICAgICwgbV90aW1lcigqdGhpcywgJkNQVU1vbml0b3I6OnRpbWVyRmlyZWQpCit7Cit9CisKK3Zv
aWQgQ1BVTW9uaXRvcjo6c2V0Q1BVTGltaXQoc3RkOjpvcHRpb25hbDxkb3VibGU+IGNwdUxpbWl0
KQoreworICAgIGlmIChtX2NwdUxpbWl0ID09IGNwdUxpbWl0KQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2NwdUxpbWl0ID0gY3B1TGltaXQ7CisgICAgaWYgKG1fY3B1TGltaXQpIHsKKyAgICAg
ICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIG1fbGFzdENQVVRpbWUg
PSBnZXRDUFVUaW1lKCk7CisgICAgICAgICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKG1fY2hl
Y2tJbnRlcnZhbCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbV90aW1lci5zdG9w
KCk7Cit9CisKK3ZvaWQgQ1BVTW9uaXRvcjo6dGltZXJGaXJlZCgpCit7CisgICAgQVNTRVJUKG1f
Y3B1TGltaXQpOworCisgICAgaWYgKCFtX2xhc3RDUFVUaW1lKSB7CisgICAgICAgIG1fbGFzdENQ
VVRpbWUgPSBnZXRDUFVUaW1lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IGNwdVRpbWUgPSBnZXRDUFVUaW1lKCk7CisgICAgaWYgKCFjcHVUaW1lKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvIGNwdVVzYWdlUGVyY2VudCA9IGNwdVRpbWUudmFsdWUoKS5wZXJjZW50
YWdlQ1BVVXNhZ2VTaW5jZShtX2xhc3RDUFVUaW1lLnZhbHVlKCkpOworICAgIGlmIChjcHVVc2Fn
ZVBlcmNlbnQgPiBtX2NwdUxpbWl0LnZhbHVlKCkgKiAxMDApCisgICAgICAgIG1fZXhjZWVkZWRD
UFVMaW1pdEhhbmRsZXIoKTsKKworICAgIG1fbGFzdENQVVRpbWUgPSBjcHVUaW1lOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DUFVNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjg4ODI2ODE0M2U0MGEzZTg3ZDdlNjRjMzUxMmM5OTZhYjFjY2Q3OQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaApAQCAtMCww
ICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDUFVUaW1l
LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENQVU1vbml0b3IgeworcHVibGljOgorICAgIHVz
aW5nIEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKCk+OworICAg
IFdFQkNPUkVfRVhQT1JUIENQVU1vbml0b3IoU2Vjb25kcyBjaGVja0ludGVydmFsLCBFeGNlZWRl
ZENQVUxpbWl0SGFuZGxlciYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q1BVTGlt
aXQoc3RkOjpvcHRpb25hbDxkb3VibGU+KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHRpbWVyRmly
ZWQoKTsKKworICAgIFNlY29uZHMgbV9jaGVja0ludGVydmFsOworICAgIEV4Y2VlZGVkQ1BVTGlt
aXRIYW5kbGVyIG1fZXhjZWVkZWRDUFVMaW1pdEhhbmRsZXI7CisgICAgVGltZXIgbV90aW1lcjsK
KyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9jcHVMaW1pdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PENQVVRpbWU+IG1fbGFzdENQVVRpbWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAKaW5kZXggZTg1Y2QxMGY1ZTA1MTVlOGNmZTFmMGVkMjAwMmE4OWI5ZWQ2YTU0My4uNTEzZjFi
OWIwODUxZjhkZmViZDlmOTRlYWFiOTgwNzQyOWYxNzE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtOTMsNiArOTMs
NyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24pOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShvYnNlcnZlZExheW91dE1pbGVz
dG9uZXMpOwogICAgIGVuY29kZXIgPDwgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7Cisg
ICAgZW5jb2RlciA8PCBiYWNrZ3JvdW5kQ1BVTGltaXQ7CiAgICAgZW5jb2RlciA8PCB1cmxTY2hl
bWVIYW5kbGVyczsKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBlbmNvZGVyIDw8IGljZUNhbmRp
ZGF0ZUZpbHRlcmluZ0VuYWJsZWQ7CkBAIC0yMjIsNiArMjIzLDkgQEAgYm9vbCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQYWdlQ3Jl
YXRpb25QYXIKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMub3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3kpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYmFja2dyb3VuZENQVUxpbWl0KSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVt
ZUhhbmRsZXJzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBiNGZlNmU2NjQ1YmM5
NzExOTA3YmM0YzQ3OTJkYWU5OTZkZjc2ZGUwLi5jNDgzM2I0Yjg3NTFiMmU1MWJiMGZmOTc1ZGIw
YjcxODQxM2VjMTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKQEAgLTE0Niw2ICsxNDYsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyB7CiAgICAgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyBvYnNlcnZlZExh
eW91dE1pbGVzdG9uZXM7CiAKICAgICBTdHJpbmcgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xp
Y3k7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJhY2tncm91bmRDUFVMaW1pdDsKIAogICAg
IEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gdXJsU2NoZW1lSGFuZGxlcnM7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAK
aW5kZXggMzNjODE5MmUyMjM5NmJhZWFlMmZlYTRmZjc1NDVhMWQ3MmRkMDc5My4uODgzNzUxMDU0
Mjk0YzI3ZTk5NjAyMDY1YzBiYmU5ZGNjMjU3ODFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTY4LDYgKzY4
LDcgQEAgUmVmPFBhZ2VDb25maWd1cmF0aW9uPiBQYWdlQ29uZmlndXJhdGlvbjo6Y29weSgpIGNv
bnN0CiAgICAgY29weS0+bV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgPSB0aGlzLT5t
X2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTsKICNlbmRpZgogICAgIGNvcHktPm1faW5p
dGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCA9IHRoaXMtPm1faW5pdGlhbENhcGl0YWxpemF0aW9u
RW5hYmxlZDsKKyAgICBjb3B5LT5tX2JhY2tncm91bmRDUFVMaW1pdCA9IHRoaXMtPm1fYmFja2dy
b3VuZENQVUxpbWl0OwogICAgIGNvcHktPm1fY29udHJvbGxlZEJ5QXV0b21hdGlvbiA9IHRoaXMt
Pm1fY29udHJvbGxlZEJ5QXV0b21hdGlvbjsKICAgICBjb3B5LT5tX292ZXJyaWRlQ29udGVudFNl
Y3VyaXR5UG9saWN5ID0gdGhpcy0+bV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlv
bi5oCmluZGV4IDk4YWUyYWE3MThlMWNmMmQ2NGMxNTI3YzQ2YzYxNDdjODk0MGY4MDEuLjNmZjRl
ZmRiYTQzNDRlYmYwZjQxMTE4ZTRmNmNhYmZiMjBiMmI1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKQEAgLTkzLDYgKzkz
LDkgQEAgcHVibGljOgogICAgIGJvb2wgaW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCgpIHsg
cmV0dXJuIG1faW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZDsgfQogICAgIHZvaWQgc2V0SW5p
dGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZChib29sIGluaXRpYWxDYXBpdGFsaXphdGlvbkVuYWJs
ZWQpIHsgbV9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkID0gaW5pdGlhbENhcGl0YWxpemF0
aW9uRW5hYmxlZDsgfQogCisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGJhY2tncm91bmRDUFVM
aW1pdCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENQVUxpbWl0OyB9CisgICAgdm9pZCBz
ZXRCYWNrZ3JvdW5kQ1BVTGltaXQoZG91YmxlIGNwdUxpbWl0KSB7IG1fYmFja2dyb3VuZENQVUxp
bWl0ID0gY3B1TGltaXQ7IH0KKwogICAgIGJvb2wgd2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1v
dmVUb1dpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fd2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1v
dmVUb1dpbmRvdzsgfQogICAgIHZvaWQgc2V0V2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVU
b1dpbmRvdyhib29sIHNob3VsZFN5bmNocm9uaXplKSB7IG1fd2FpdHNGb3JQYWludEFmdGVyVmll
d0RpZE1vdmVUb1dpbmRvdyA9IHNob3VsZFN5bmNocm9uaXplOyB9CiAKQEAgLTEyNCw2ICsxMjcs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVkID0g
dHJ1ZTsKICAgICBib29sIG1fd2FpdHNGb3JQYWludEFmdGVyVmlld0RpZE1vdmVUb1dpbmRvdyA9
IHRydWU7CiAgICAgYm9vbCBtX2NvbnRyb2xsZWRCeUF1dG9tYXRpb24gPSBmYWxzZTsKKyAgICBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9iYWNrZ3JvdW5kQ1BVTGltaXQ7CiAKICAgICBXVEY6OlN0
cmluZyBtX292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNw
cAppbmRleCA0ZjRkNWYwOTRmMWI4NDNlMTIyNWYwYjA2MzdhZGQ3NWM5MTk5ZjcyLi5mYjc1NzU0
YmMwNmI2M2I4NTg5NmY2OWUwYmQxYzNkZDBlYTljMWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNvbmZpZ3VyYXRpb25SZWYuY3BwCkBA
IC0xMDgsMyArMTA4LDggQEAgdm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0SW5pdGlhbENhcGl0
YWxpemF0aW9uRW5hYmxlZChXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGMKIHsKICAgICB0b0ltcGwo
Y29uZmlndXJhdGlvbiktPnNldEluaXRpYWxDYXBpdGFsaXphdGlvbkVuYWJsZWQoZW5hYmxlZCk7
CiB9CisKK3ZvaWQgV0tQYWdlQ29uZmlndXJhdGlvblNldEJhY2tncm91bmRDUFVMaW1pdChXS1Bh
Z2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGRvdWJsZSBjcHVMaW1pdCkKK3sKKyAg
ICB0b0ltcGwoY29uZmlndXJhdGlvbiktPnNldEJhY2tncm91bmRDUFVMaW1pdChjcHVMaW1pdCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29u
ZmlndXJhdGlvblJlZi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUNv
bmZpZ3VyYXRpb25SZWYuaAppbmRleCA3MmU3YTZiYzI2Y2I3YTg0NDhlYTE0YjllMDk4Mjk2NGZl
MmQxMTYxLi42NjIzZTdjNTA1OTgxYWVmYjI4YTE4OGVhNWFkMTMzMzZkMzE2NmU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlQ29uZmlndXJhdGlvblJl
Zi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VDb25maWd1cmF0
aW9uUmVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgV0tfRVhQT1JUIFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBXS1BhZ2VDb25maWd1cmF0aW9uR2V0V2Vic2l0ZURhdGFTdG9yZShXS1BhZ2VDb24KIFdLX0VY
UE9SVCB2b2lkIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRXZWJzaXRlRGF0YVN0b3JlKFdLUGFnZUNv
bmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgV0tXZWJzaXRlRGF0YVN0b3JlUmVmIHdlYnNp
dGVEYXRhU3RvcmUpOwogCiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VDb25maWd1cmF0aW9uU2V0SW5p
dGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZChXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3Vy
YXRpb24sIGJvb2wgZW5hYmxlZCk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VDb25maWd1cmF0aW9u
U2V0QmFja2dyb3VuZENQVUxpbWl0KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlv
biwgZG91YmxlIGNwdUxpbWl0KTsgLy8gVGVybWluYXRlcyBwcm9jZXNzIGlmIGl0IHVzZXMgbW9y
ZSB0aGFuIENQVSBsaW1pdCBvdmVyIGFuIGV4dGVuZGVkIHBlcmlvZCBvZiB0aW1lIHdoaWxlIGlu
IHRoZSBiYWNrZ3JvdW5kLgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMTcxZDYxNzllZDRjYTgxNWIxMDIxMTQ0
ZjRlMTJkNDExNGFhOGI3OS4uOGE1MDcxNDk4NTY1NDA5ZTAyMmQyNWI3MGE4YjRhOWUxOTExMGNh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM1Niw2
ICszNTYsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xp
ZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogICAgICwgbV9hbHdheXNSdW5zQXRG
b3JlZ3JvdW5kUHJpb3JpdHkobV9jb25maWd1cmF0aW9uLT5hbHdheXNSdW5zQXRGb3JlZ3JvdW5k
UHJpb3JpdHkoKSkKICNlbmRpZgogICAgICwgbV9pbml0aWFsQ2FwaXRhbGl6YXRpb25FbmFibGVk
KG1fY29uZmlndXJhdGlvbi0+aW5pdGlhbENhcGl0YWxpemF0aW9uRW5hYmxlZCgpKQorICAgICwg
bV9iYWNrZ3JvdW5kQ1BVTGltaXQobV9jb25maWd1cmF0aW9uLT5iYWNrZ3JvdW5kQ1BVTGltaXQo
KSkKICAgICAsIG1fYmFja0ZvcndhcmRMaXN0KFdlYkJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlKCp0
aGlzKSkKICAgICAsIG1fbWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb24oZmFsc2UpCiAgICAgLCBt
X3dhaXRzRm9yUGFpbnRBZnRlclZpZXdEaWRNb3ZlVG9XaW5kb3cobV9jb25maWd1cmF0aW9uLT53
YWl0c0ZvclBhaW50QWZ0ZXJWaWV3RGlkTW92ZVRvV2luZG93KCkpCkBAIC03MTYsNiArNzE3LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzKCkKICAgICBBU1NFUlQo
bV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94eTo6U3RhdGU6OlRlcm1pbmF0ZWQp
OwogCiAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKKyAgICBtX3dhc1Rlcm1pbmF0ZWREdWVUb1Jlc291
cmNlRXhoYXVzdGlvbldoaWxlSW5CYWNrZ3JvdW5kID0gZmFsc2U7CiAgICAgbV9wcm9jZXNzLT5y
ZW1vdmVXZWJQYWdlKG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZUlEKTsKIApAQCAtMTUyOCw4ICsxNTMwLDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRj
aEFjdGl2aXR5U3RhdGVDaGFuZ2UoKQogICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNo
ZXItPmludmFsaWRhdGUoKTsKICNlbmRpZgogCi0gICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgaWYg
KCFpc1ZhbGlkKCkpIHsKKyAgICAgICAgaWYgKG1fcG90ZW50aWFsbHlDaGFuZ2VkQWN0aXZpdHlT
dGF0ZUZsYWdzICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlICYmIG1fd2FzVGVybWluYXRlZER1
ZVRvUmVzb3VyY2VFeGhhdXN0aW9uV2hpbGVJbkJhY2tncm91bmQpIHsKKyAgICAgICAgICAgIG1f
d2FzVGVybWluYXRlZER1ZVRvUmVzb3VyY2VFeGhhdXN0aW9uV2hpbGVJbkJhY2tncm91bmQgPSBm
YWxzZTsKKyAgICAgICAgICAgIHByb2Nlc3NEaWRDcmFzaCgpOworICAgICAgICB9CiAgICAgICAg
IHJldHVybjsKKyAgICB9CiAKICAgICAvLyBJZiB0aGUgdmlzaWJpbGl0eSBzdGF0ZSBtYXkgaGF2
ZSBjaGFuZ2VkLCB0aGVuIHNvIG1heSB0aGUgdmlzdWFsbHkgaWRsZSAmIG9jY2x1ZGVkIGFnbm9z
dGljIHN0YXRlLgogICAgIGlmIChtX3BvdGVudGlhbGx5Q2hhbmdlZEFjdGl2aXR5U3RhdGVGbGFn
cyAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkKQEAgLTIzODMsNyArMjM5MCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYgZW5j
b2RpbmdOYW1lKQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q3Vz
dG9tVGV4dEVuY29kaW5nTmFtZShlbmNvZGluZ05hbWUpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5Ojp0ZXJtaW5hdGVQcm9jZXNzKCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp0ZXJt
aW5hdGVQcm9jZXNzKFRlcm1pbmF0aW9uUmVhc29uIHRlcm1pbmF0aW9uUmVhc29uKQogewogICAg
IC8vIE5PVEU6IFRoaXMgdXNlcyBhIGNoZWNrIG9mIG1faXNWYWxpZCByYXRoZXIgdGhhbiBjYWxs
aW5nIGlzVmFsaWQoKSBzaW5jZQogICAgIC8vIHdlIHdhbnQgdGhpcyB0byBydW4gZXZlbiBmb3Ig
cGFnZXMgYmVpbmcgY2xvc2VkIG9yIHRoYXQgYWxyZWFkeSBjbG9zZWQuCkBAIC0yMzkyLDYgKzIz
OTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dGVybWluYXRlUHJvY2VzcygpCiAKICAgICBtX3By
b2Nlc3MtPnJlcXVlc3RUZXJtaW5hdGlvbigpOwogICAgIHJlc2V0U3RhdGVBZnRlclByb2Nlc3NF
eGl0ZWQoKTsKKyAgICBtX3dhc1Rlcm1pbmF0ZWREdWVUb1Jlc291cmNlRXhoYXVzdGlvbldoaWxl
SW5CYWNrZ3JvdW5kID0gdGVybWluYXRpb25SZWFzb24gPT0gVGVybWluYXRpb25SZWFzb246OlJl
c291cmNlRXhoYXVzdGlvbldoaWxlSW5CYWNrZ3JvdW5kOwogfQogCiBTZXNzaW9uU3RhdGUgV2Vi
UGFnZVByb3h5OjpzZXNzaW9uU3RhdGUoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sIChXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtJik+JiBmaWx0ZXIpIGNvbnN0CkBAIC01NTg5LDYgKzU1OTcsNyBAQCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJz
KCkKICAgICBwYXJhbWV0ZXJzLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gPSBtX3BhZ2VD
bGllbnQudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpOwogICAgIHBhcmFtZXRlcnMub2Jz
ZXJ2ZWRMYXlvdXRNaWxlc3RvbmVzID0gbV9vYnNlcnZlZExheW91dE1pbGVzdG9uZXM7CiAgICAg
cGFyYW1ldGVycy5vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IG1fb3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgcGFyYW1ldGVycy5iYWNrZ3JvdW5kQ1BVTGltaXQgPSBt
X2JhY2tncm91bmRDUFVMaW1pdDsKIAogICAgIGZvciAoYXV0byYgaXRlcmF0b3IgOiBtX3VybFNj
aGVtZUhhbmRsZXJzQnlTY2hlbWUpCiAgICAgICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lSGFuZGxl
cnMuc2V0KGl0ZXJhdG9yLmtleSwgaXRlcmF0b3IudmFsdWUtPmlkZW50aWZpZXIoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZWU1M2NjZDE1YjlhZGRmZGVk
MWZiYzliNGUzNmVmYzZlYzM5NTVhMS4uYmI1NzdmYWIyNzcwYWNmN2U0YTc3N2ZjNGMzM2RhYTI5
NjhjOThkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNjgw
LDcgKzY4MCw4IEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBlc3RpbWF0ZWRQcm9ncmVzcygpIGNv
bnN0OwogCi0gICAgdm9pZCB0ZXJtaW5hdGVQcm9jZXNzKCk7CisgICAgZW51bSBjbGFzcyBUZXJt
aW5hdGlvblJlYXNvbiB7IFJlc291cmNlRXhoYXVzdGlvbldoaWxlSW5CYWNrZ3JvdW5kLCBPdGhl
ciB9OworICAgIHZvaWQgdGVybWluYXRlUHJvY2VzcyhUZXJtaW5hdGlvblJlYXNvbiA9IFRlcm1p
bmF0aW9uUmVhc29uOjpPdGhlcik7CiAKICAgICBTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlKGNv
bnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpPiYgPSBudWxs
cHRyKSBjb25zdDsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiByZXN0b3JlRnJvbVNlc3Np
b25TdGF0ZShTZXNzaW9uU3RhdGUsIGJvb2wgbmF2aWdhdGUpOwpAQCAtMTcyMSw2ICsxNzIyLDcg
QEAgcHJpdmF0ZToKICAgICBQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlUb2tl
biBtX2FjdGl2aXR5VG9rZW47CiAjZW5kaWYKICAgICBib29sIG1faW5pdGlhbENhcGl0YWxpemF0
aW9uRW5hYmxlZDsKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9iYWNrZ3JvdW5kQ1BVTGlt
aXQ7CiAgICAgUmVmPFdlYkJhY2tGb3J3YXJkTGlzdD4gbV9iYWNrRm9yd2FyZExpc3Q7CiAgICAg
ICAgIAogICAgIGJvb2wgbV9tYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbjsKQEAgLTE5ODQsNiAr
MTk4Niw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGJvb2wgbV9pc1VzaW5nSGlnaFBlcmZv
cm1hbmNlV2ViR0wgeyBmYWxzZSB9OworICAgIGJvb2wgbV93YXNUZXJtaW5hdGVkRHVlVG9SZXNv
dXJjZUV4aGF1c3Rpb25XaGlsZUluQmFja2dyb3VuZCB7IGZhbHNlIH07CiAgICAgICAgIAogICAg
IFdlYWtQdHJGYWN0b3J5PFdlYlBhZ2VQcm94eT4gbV93ZWFrUHRyRmFjdG9yeTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBhMWJlMGNlYWVi
YWIwYTZjY2ZjZmQ4M2FiMWQ5Mzk3NzI1Mjc3ZmVlLi41ZmY2NGQ2NDhjNGI3ODQyNWZkOTEyNzA2
MzQ3ZjI4NzhmOTRlNTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcApAQCAtMTExMyw2ICsxMTEzLDMzIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpw
cm9jZXNzVGVybWluYXRlZCgpCiAgICAgbV9iYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lci5w
cm9jZXNzVGVybWluYXRlZCgpOwogfQogCitzdGF0aWMgVmVjdG9yPFJlZlB0cjxXZWJQYWdlUHJv
eHk+PiBwYWdlc0NvcHkoV1RGOjpJdGVyYXRvclJhbmdlPFdlYlByb2Nlc3NQcm94eTo6V2ViUGFn
ZVByb3h5TWFwOjpjb25zdF9pdGVyYXRvcjo6VmFsdWVzPiBwYWdlcykKK3sKKyAgICBWZWN0b3I8
UmVmUHRyPFdlYlBhZ2VQcm94eT4+IHZlY3RvcjsKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdl
cykKKyAgICAgICAgdmVjdG9yLmFwcGVuZChwYWdlKTsKKyAgICByZXR1cm4gdmVjdG9yOworfQor
Cit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRXhjZWVkQmFja2dyb3VuZENQVUxpbWl0KCkKK3sK
KyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlcygpKSB7CisgICAgICAgIGlmIChwYWdlLT5pc1Zp
ZXdWaXNpYmxlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHBhZ2UtPmlz
UGxheWluZ0F1ZGlvKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFBlcmZvcm1hbmNlTG9n
Z2luZywgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5OjpkaWRFeGNlZWRCYWNrZ3JvdW5kQ1BVTGltaXQo
KSBXZWJQcm9jZXNzIGhhcyBleGNlZWRlZCB0aGUgYmFja2dyb3VuZCBDUFUgbGltaXQgYnV0IHdl
IGFyZSBub3QgdGVybWluYXRpbmcgaXQgYmVjYXVzZSB0aGVyZSBpcyBhdWRpbyBwbGF5aW5nIiwg
dGhpcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBSRUxF
QVNFX0xPRyhQZXJmb3JtYW5jZUxvZ2dpbmcsICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6ZGlkRXhj
ZWVkQmFja2dyb3VuZENQVUxpbWl0KCkgVGVybWluYXRpbmcgYmFja2dyb3VuZCBXZWJQcm9jZXNz
IHRoYXQgaGFzIGV4Y2VlZGVkIHRoZSBiYWNrZ3JvdW5kIENQVSBsaW1pdCIsIHRoaXMpOworCisg
ICAgLy8gV2Ugb25seSB0ZXJtaW5hdGUgdGhlIHByb2Nlc3MgaGVyZS4gV2Ugd2lsbCBjYWxsIHBy
b2Nlc3NEaWRDcmFzaCgpIG9uY2Ugb25lIG9mIHRoZSBwYWdlcyBiZWNvbWVzIHZpc2libGUgYWdh
aW4gKHNlZSBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpKS4KKyAg
ICBmb3IgKGF1dG8mIHBhZ2UgOiBwYWdlc0NvcHkocGFnZXMoKSkpCisgICAgICAgIHBhZ2UtPnRl
cm1pbmF0ZVByb2Nlc3MoV2ViUGFnZVByb3h5OjpUZXJtaW5hdGlvblJlYXNvbjo6UmVzb3VyY2VF
eGhhdXN0aW9uV2hpbGVJbkJhY2tncm91bmQpOworfQorCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
dXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKQogewogICAgIG1fYmFja2dyb3Vu
ZFJlc3BvbnNpdmVuZXNzVGltZXIudXBkYXRlU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBlNjNkZDU0M2M5NGI5MzRlOTk0ZWI0NTI0MjNm
NDE5NGE3ZWM0MmIzLi5mNWU2MWFhMDAxODA2Nzc0ODJhZjM3MDdkY2JkYjE5OTUxN2ZhZjZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0xNjQsNiAr
MTY0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9pc1VuZGVyTWVtb3J5UHJlc3N1cmU7IH0KIAogICAgIHZvaWQgcHJvY2Vzc1Rl
cm1pbmF0ZWQoKTsKKyAgICB2b2lkIGRpZEV4Y2VlZEJhY2tncm91bmRDUFVMaW1pdCgpOwogCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFdl
YnNpdGVEYXRhU3RvcmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDQ2NTU2YWM1ZTlhNTgxNGRmZjg4Zjk1OWNh
OWI4YjNlZTE0MmE1NGMuLjZiMjFmOTkxNTQ0OWRiOWY0NGVlODA4YWViNTM2MGVjYThmMmRjNzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtNDUsNiArNDUsOCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzUHJveHkg
TGVnYWN5UmVjZWl2ZXIgewogCiAgICAgU2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hv
bGRpbmdMb2NrZWRGaWxlcykKIAorICAgIERpZEV4Y2VlZEJhY2tncm91bmRDUFVMaW1pdCgpCisK
ICAgICBSZXRhaW5JY29uRm9yUGFnZVVSTChTdHJpbmcgcGFnZVVSTCkKICAgICBSZWxlYXNlSWNv
bkZvclBhZ2VVUkwoU3RyaW5nIHBhZ2VVUkwpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBhZTgwZjVmMjZlMzBiNDk2ZDllODZjNjFmMGQx
NmU1NzA3MDJiMGU4Li40MTdlYTlkZGVkN2NiM2M0MTQ2MGI5ZDFjYTZiMjA5OGNhOGQwNTZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0z
NjEsNiArMzYxLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICwgbV91c2VyQWN0aXZpdHlIeXN0
ZXJlc2lzKFt0aGlzXShIeXN0ZXJlc2lzU3RhdGUpIHsgdXBkYXRlVXNlckFjdGl2aXR5KCk7IH0p
CiAgICAgLCBtX3VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24ocGFyYW1ldGVycy51c2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKQogICAgICwgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBv
bGljeSB7IHBhcmFtZXRlcnMub3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgfQorICAgICwg
bV9iYWNrZ3JvdW5kQ1BVTGltaXQocGFyYW1ldGVycy5iYWNrZ3JvdW5kQ1BVTGltaXQpCiB7CiAg
ICAgQVNTRVJUKG1fcGFnZUlEKTsKIApAQCAtMjYyNCw2ICsyNjI1LDcgQEAgdm9pZCBXZWJQYWdl
OjpzZXRBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGU6OkZsYWdzIGFjdGl2aXR5U3RhdGUsIGJv
b2wgd2FudHNEaWQKICAgICAgICAgcGx1Z2luVmlldy0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShj
aGFuZ2VkKTsKIAogICAgIG1fZHJhd2luZ0FyZWEtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoY2hh
bmdlZCwgd2FudHNEaWRVcGRhdGVBY3Rpdml0eVN0YXRlLCBjYWxsYmFja0lEcyk7CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UobV9wYWdlSUQs
IGNoYW5nZWQpOwogCiAgICAgaWYgKGNoYW5nZWQgJiBBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93
KQogICAgICAgICB1cGRhdGVJc0luV2luZG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAzN2Q4MTQ0NzM5ZjU3YzYwMDY3NzYxZDdjMzc4NTE5
OWE0MGE5YWMxLi5jZjFmY2M3ZjdmNDM0MmNjY2M5NTQwN2Y0ZmY1Yjc3NTIxOTVlYjMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTk3Miw2ICs5
NzIsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSog
dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gYmFja2dyb3VuZENQVUxpbWl0KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3Jv
dW5kQ1BVTGltaXQ7IH0KIAogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKQEAgLTE1NTAsNiArMTU1MSw3IEBAIHByaXZh
dGU6CiAgICAgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBtX3VzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24geyBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uOjpMVFIgfTsKIAogICAgIGNvbnN0IFN0cmluZyBtX292ZXJyaWRlQ29udGVudFNlY3VyaXR5
UG9saWN5OworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2JhY2tncm91bmRDUFVM
aW1pdDsKIAogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViVVJMU2NoZW1l
SGFuZGxlclByb3h5Pj4gbV9zY2hlbWVUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcDsKICAgICBI
YXNoTWFwPHVpbnQ2NF90LCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkqPiBtX2lkZW50aWZpZXJU
b1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDM3OTg3ZGFhZDQ4NTRiYjhkNzQyNWQ2NWU0MTc0OWUxNTQzOGUwODAu
LjZhNDFiNGNmMDczYzhiMDIyMTQxYWFjNWQzZjUzOThhOTk5NTA3ODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNzEsNiArNzEsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DUFVNb25pdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9D
b21tb25WTS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRE5TLmg+CkBAIC01ODAsNiArNTgxLDcgQEAgdm9p
ZCBXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYmIHBhcmEKIAogICAgICAgICAvLyBCYWxhbmNlZCBieSBhbiBlbmFibGVU
ZXJtaW5hdGlvbiBpbiByZW1vdmVXZWJQYWdlLgogICAgICAgICBkaXNhYmxlVGVybWluYXRpb24o
KTsKKyAgICAgICAgdXBkYXRlQmFja2dyb3VuZENQVUxpbWl0KCk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnJlaW5pdGlhbGl6ZVdlYlBhZ2UoV1RGTW92ZShw
YXJhbWV0ZXJzKSk7CiAKQEAgLTU5NCw2ICs1OTYsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnJlbW92
ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlEKQogICAgIG1fcGFnZU1hcC5yZW1vdmUocGFnZUlEKTsK
IAogICAgIGVuYWJsZVRlcm1pbmF0aW9uKCk7CisgICAgdXBkYXRlQmFja2dyb3VuZENQVUxpbWl0
KCk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzczo6c2hvdWxkVGVybWluYXRlKCkKQEAgLTEyNjgsOCAr
MTI3MSwyMiBAQCB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUFjdGl2ZVBhZ2VzKCkKIHsKIH0KIAor
dm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVCYWNrZ3JvdW5kQ1BVTGltaXQoKQoreworfQorCit2b2lk
IFdlYlByb2Nlc3M6OnVwZGF0ZUJhY2tncm91bmRDUFVNb25pdG9yU3RhdGUoKQoreworfQorCiAj
ZW5kaWYKIAordm9pZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZSh1aW50
NjRfdCwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZ3MgY2hhbmdlZCkKK3sKKyAgICBpZiAo
Y2hhbmdlZCAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkKKyAgICAgICAgdXBk
YXRlQmFja2dyb3VuZENQVU1vbml0b3JTdGF0ZSgpOworfQorCiAjaWYgUExBVEZPUk0oSU9TKQog
dm9pZCBXZWJQcm9jZXNzOjpyZXNldEFsbEdlb2xvY2F0aW9uUGVybWlzc2lvbnMoKQogewpAQCAt
MTU2MSw2ICsxNTc4LDE1IEBAIHZvaWQgV2ViUHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSkKICAgICBtX2Ruc1ByZWZldGNoSHlzdGVyZXJpcy5pbXB1bHNlKCk7CiB9
CiAKK2Jvb2wgV2ViUHJvY2Vzczo6aGFzVmlzaWJsZVdlYlBhZ2UoKSBjb25zdAoreworICAgIGZv
ciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAocGFnZS0+
aXNWaXNpYmxlKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOworfQorCiAjaWYgVVNFKExJQldFQlJUQykKIExpYldlYlJUQ05ldHdvcmsmIFdlYlBy
b2Nlc3M6OmxpYldlYlJUQ05ldHdvcmsoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAppbmRleCBlNDM3NTQwNWNhYmRjNzY2YjA0ZDgyZDU4OTQ0NjMzZWU3ZGQyYzZhLi44
MmY0NGIxY2Q5NGI0YTJmNWI3N2U1ZjQ0YmNkMzU4OGFiNzQyZWVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNjIsNiArNjIsNyBAQCBjbGFzcyBPYmplY3Q7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xh
c3MgQ1BVTW9uaXRvcjsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIFBhZ2VHcm91cDsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTE5NCw2ICsxOTUsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIHZvaWQgdXBkYXRlQWN0aXZlUGFnZXMoKTsKKyAgICB2b2lkIHBhZ2VBY3Rpdml0
eVN0YXRlRGlkQ2hhbmdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
RmxhZ3MgY2hhbmdlZCk7CiAKICAgICB2b2lkIHNldEhpZGRlblBhZ2VET01UaW1lclRocm90dGxp
bmdJbmNyZWFzZUxpbWl0KGludCBtaWxsaXNlY29uZHMpOwogCkBAIC0zMTgsNiArMzIwLDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lBdXRvbWF0aW9uU2Vzc2lvblByb3h5KCk7CiAKICAg
ICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlRm9yTmV0d29ya1Byb2Nlc3NDcmFzaCgpOworICAg
IGJvb2wgaGFzVmlzaWJsZVdlYlBhZ2UoKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUJhY2tncm91
bmRDUFVMaW1pdCgpOworICAgIHZvaWQgdXBkYXRlQmFja2dyb3VuZENQVU1vbml0b3JTdGF0ZSgp
OwogCiAgICAgLy8gQ2hpbGRQcm9jZXNzCiAgICAgdm9pZCBpbml0aWFsaXplUHJvY2Vzcyhjb25z
dCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKSBvdmVycmlkZTsKQEAgLTQx
OSw2ICs0MjQsMTAgQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIG1fcGFnZXNNYXJraW5nTGF5
ZXJzQXNWb2xhdGlsZSB7IDAgfTsKICAgICBib29sIG1fc3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhh
bmRsZXIgeyBmYWxzZSB9OworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6Q1BVTW9uaXRvcj4gbV9iYWNrZ3JvdW5kQ1BVTW9uaXRvcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gbV9iYWNrZ3JvdW5kQ1BVTGltaXQ7CisjZW5kaWYKIAogICAgIEhhc2hN
YXA8V2ViQ29yZTo6VXNlckdlc3R1cmVUb2tlbiAqLCB1aW50NjRfdD4gbV91c2VyR2VzdHVyZVRv
a2VuczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbQppbmRleCBkOTIwYjg4N2IxOWE1YzU2YzFlNzJmMzgyMDNhNDI1MDdkOTM1ZTNl
Li5lMGY4MjY5NDFjY2NjZTk4Y2JjY2UyMjFhOWRhN2EzYWJkOGRhZGU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtNDgs
NiArNDgsNyBAQAogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvT3B0aW9ucy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NGTmV0d29ya1NQSS5o
PgorI2ltcG9ydCA8V2ViQ29yZS9DUFVNb25pdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0ZvbnRDYXNjYWRlLmg+CkBAIC03Nyw2ICs3OCwxMCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKKyNpZiBQTEFURk9STShNQUMpCitzdGF0aWMgY29u
c3QgU2Vjb25kcyBiYWNrZ3JvdW5kQ1BVTW9uaXRvcmluZ0ludGVydmFsIHsgMTVfbWluIH07Cisj
ZW5kaWYKKwogdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2Rl
bCkKIHsKIH0KQEAgLTM2OSw2ICszNzQsNDkgQEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVBY3Rp
dmVQYWdlcygpCiAjZW5kaWYKIH0KIAordm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVCYWNrZ3JvdW5k
Q1BVTGltaXQoKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gYmFja2dyb3VuZENQVUxpbWl0OworCisgICAgLy8gVXNlIHRoZSBsYXJnZXN0IGxpbWl0IGFt
b25nIGFsbCBwYWdlcyBpbiB0aGlzIHByb2Nlc3MuCisgICAgZm9yIChhdXRvJiBwYWdlIDogbV9w
YWdlTWFwLnZhbHVlcygpKSB7CisgICAgICAgIGF1dG8gcGFnZUNQVUxpbWl0ID0gcGFnZS0+YmFj
a2dyb3VuZENQVUxpbWl0KCk7CisgICAgICAgIGlmICghcGFnZUNQVUxpbWl0KSB7CisgICAgICAg
ICAgICBiYWNrZ3JvdW5kQ1BVTGltaXQgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWJhY2tncm91bmRDUFVMaW1pdCB8fCBwYWdlQ1BV
TGltaXQgPiBiYWNrZ3JvdW5kQ1BVTGltaXQudmFsdWUoKSkKKyAgICAgICAgICAgIGJhY2tncm91
bmRDUFVMaW1pdCA9IHBhZ2VDUFVMaW1pdDsKKyAgICB9CisKKyAgICBpZiAobV9iYWNrZ3JvdW5k
Q1BVTGltaXQgPT0gYmFja2dyb3VuZENQVUxpbWl0KQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2JhY2tncm91bmRDUFVMaW1pdCA9IGJhY2tncm91bmRDUFVMaW1pdDsKKyAgICB1cGRhdGVCYWNr
Z3JvdW5kQ1BVTW9uaXRvclN0YXRlKCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJQcm9jZXNzOjp1
cGRhdGVCYWNrZ3JvdW5kQ1BVTW9uaXRvclN0YXRlKCkKK3sKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgaWYgKCFtX2JhY2tncm91bmRDUFVMaW1pdCB8fCBoYXNWaXNpYmxlV2ViUGFnZSgpKSB7Cisg
ICAgICAgIGlmIChtX2JhY2tncm91bmRDUFVNb25pdG9yKQorICAgICAgICAgICAgbV9iYWNrZ3Jv
dW5kQ1BVTW9uaXRvci0+c2V0Q1BVTGltaXQoc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmICghbV9iYWNrZ3JvdW5kQ1BVTW9uaXRvcikgeworICAgICAgICBt
X2JhY2tncm91bmRDUFVNb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDUFVNb25pdG9yPihiYWNr
Z3JvdW5kQ1BVTW9uaXRvcmluZ0ludGVydmFsLCBbdGhpc10geworICAgICAgICAgICAgUkVMRUFT
RV9MT0coUGVyZm9ybWFuY2VMb2dnaW5nLCAiJXAgLSBXZWJQcm9jZXNzIGV4Y2VlZGVkIGJhY2tn
cm91bmQgQ1BVIGxpbWl0IG9mICUuMWYlJSIsIHRoaXMsIG1fYmFja2dyb3VuZENQVUxpbWl0LnZh
bHVlKCkgKiAxMDApOworICAgICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpEaWRFeGNlZWRCYWNrZ3JvdW5kQ1BVTGltaXQo
KSwgMCk7CisgICAgICAgIH0pOworICAgIH0KKyAgICBtX2JhY2tncm91bmRDUFVNb25pdG9yLT5z
ZXRDUFVMaW1pdChtX2JhY2tncm91bmRDUFVMaW1pdC52YWx1ZSgpKTsKKyNlbmRpZgorfQorCiBS
ZWZQdHI8T2JqQ09iamVjdEdyYXBoPiBXZWJQcm9jZXNzOjp0cmFuc2Zvcm1IYW5kbGVzVG9PYmpl
Y3RzKE9iakNPYmplY3RHcmFwaCYgb2JqZWN0R3JhcGgpCiB7CiAgICAgc3RydWN0IFRyYW5zZm9y
bWVyIGZpbmFsIDogT2JqQ09iamVjdEdyYXBoOjpUcmFuc2Zvcm1lciB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>304283</attachid>
            <date>2017-03-13 12:03:57 -0700</date>
            <delta_ts>2017-03-13 12:03:57 -0700</delta_ts>
            <desc>Test page</desc>
            <filename>burn-cpu.html</filename>
            <type>text/html</type>
            <size>742</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+Cjxib2R5Pgo8cD5UZXN0IHBhZ2UgdXNpbmcgYSBsb3Qgb2YgQ1BVLjwv
cD4KPHNjcmlwdD4KZnVuY3Rpb24gc2ltdWxhdGVTZXRJbW1lZGlhdGUoKQp7CiAgICB2YXIgY2hh
bm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOwogICAgLy8gVXNlIGEgZmlmbyBsaW5rZWQgbGlz
dCB0byBjYWxsIGNhbGxiYWNrcyBpbiB0aGUgcmlnaHQgb3JkZXIuCiAgICB2YXIgaGVhZCA9IHt9
OwogICAgdmFyIHRhaWwgPSBoZWFkOwogICAgY2hhbm5lbFsncG9ydDEnXS5vbm1lc3NhZ2UgPSBm
dW5jdGlvbigpIHsKICAgICAgICBpZiAoaGVhZC5uZXh0ICE9IG51bGwpIHsKICAgICAgICAgICAg
aGVhZCA9IGhlYWQubmV4dDsKICAgICAgICAgICAgdmFyIGNiID0gaGVhZC5jYjsKICAgICAgICAg
ICAgaGVhZC5jYiA9IG51bGw7CiAgICAgICAgICAgIGNiKCk7CiAgICAgICAgfQogICAgfTsKICAg
IHJldHVybiBmdW5jdGlvbihjYikgewogICAgICAgIHRhaWwubmV4dCA9IHtjYjogY2J9OwogICAg
ICAgIHRhaWwgPSB0YWlsLm5leHQ7CiAgICAgICAgY2hhbm5lbFsncG9ydDInXS5wb3N0TWVzc2Fn
ZSgwKTsKICAgIH07Cn0KCndpbmRvdy5zZXRJbW1lZGlhdGUgPSBzaW11bGF0ZVNldEltbWVkaWF0
ZSgpOwoKdmFyIGkgPSAwOwpmdW5jdGlvbiBkb1dvcmsoKSB7CiAgICBpKys7CiAgICBzZXRJbW1l
ZGlhdGUoZG9Xb3JrKTsKfQoKc2V0SW1tZWRpYXRlKGRvV29yayk7Cjwvc2NyaXB0Pgo8L2JvZHk+
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>