<?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>157307</bug_id>
          
          <creation_ts>2016-05-03 02:19:42 -0700</creation_ts>
          <short_desc>DOMPromise should only restrict the resolution type</short_desc>
          <delta_ts>2016-05-17 03:19:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>157623</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1189716</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-05-03 02:19:42 -0700</bug_when>
    <thetext>Restricting the error type is not efficient as some promises may reject with exception codes (int) or some dedicated errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191494</commentid>
    <comment_count>1</comment_count>
      <attachid>278488</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-05-10 06:41:41 -0700</bug_when>
    <thetext>Created attachment 278488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191495</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-05-10 06:45:14 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created attachment 278488 [details]
&gt; Patch

Patch is removing the DOMPromise rejection type restriction.

It also tries to remove some limitations of the resolve/reject methods.
Currently these methods take const references as parameter.
For DOM objects, it may be better to pass either plain references or Ref/RefPtr rvalues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191879</commentid>
    <comment_count>3</comment_count>
      <attachid>278488</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-11 00:51:09 -0700</bug_when>
    <thetext>Comment on attachment 278488
Patch

Rejecting attachment 278488 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
Volumes/Data/EWS/WebKit/Source/WebCore/loader/archive/ArchiveFactory.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/ArchiveFactory.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/AccessibilityMediaControls.o accessibility/AccessibilityMediaControls.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Full output: http://webkit-queues.webkit.org/results/1302453</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192281</commentid>
    <comment_count>4</comment_count>
      <attachid>278719</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-05-12 02:06:25 -0700</bug_when>
    <thetext>Created attachment 278719
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192283</commentid>
    <comment_count>5</comment_count>
      <attachid>278719</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-05-12 02:09:40 -0700</bug_when>
    <thetext>Comment on attachment 278719
Patch for landing

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

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:544
&gt; +template&lt;typename T&gt; inline JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, RefPtr&lt;T&gt;&amp; ptr)

I hesitated on adding this one.
Ref&lt;T&gt; defines its cast to T&amp;, but RefPtr&lt;T&gt; is not doing that for T*.
Is there a reason for that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192289</commentid>
    <comment_count>6</comment_count>
      <attachid>278719</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-12 02:35:11 -0700</bug_when>
    <thetext>Comment on attachment 278719
Patch for landing

Clearing flags on attachment: 278719

Committed r200766: &lt;http://trac.webkit.org/changeset/200766&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192290</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-12 02:35:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192311</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-12 05:22:35 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 157623</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192697</commentid>
    <comment_count>9</comment_count>
      <attachid>278824</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-05-13 02:00:31 -0700</bug_when>
    <thetext>Created attachment 278824
Patch for landing - updating Ref/RefPtr detection</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192709</commentid>
    <comment_count>10</comment_count>
      <attachid>278828</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-05-13 03:23:07 -0700</bug_when>
    <thetext>Created attachment 278828
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192710</commentid>
    <comment_count>11</comment_count>
      <attachid>278828</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-13 03:25:17 -0700</bug_when>
    <thetext>Comment on attachment 278828
Patch for landing

Rejecting attachment 278828 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 278828, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WTF/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/1314216</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192711</commentid>
    <comment_count>12</comment_count>
      <attachid>278829</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-05-13 03:31:42 -0700</bug_when>
    <thetext>Created attachment 278829
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192714</commentid>
    <comment_count>13</comment_count>
      <attachid>278829</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-13 04:02:09 -0700</bug_when>
    <thetext>Comment on attachment 278829
Patch for landing

Clearing flags on attachment: 278829

Committed r200837: &lt;http://trac.webkit.org/changeset/200837&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192715</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-13 04:02:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192737</commentid>
    <comment_count>15</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-05-13 07:21:02 -0700</bug_when>
    <thetext>Last patch updated the way to detect Ref and RefPtr.
To make Yosemite build happy, I added Ref::isRef and RefPtr::isRefPtr constexpr.
The test is split in two tests (one for Ref and one for RefPtr) to make win bot happy.

I am not sure why Ref has a cast to T&amp;, but RefPtr does not have for T*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192753</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-13 08:39:42 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; I am not sure why Ref has a cast to T&amp;, but RefPtr does not have for T*.

Both are dangerous. Silently converting a smart pointer or reference to a raw one can be dangerous because the lifetime of the object is not extended and can lead to use after free. This primary comes into play when assigning to a local variable.

Both are convenient. Silently converting without a call to get() or ptr() can be much more elegant when passing an argument to a function, and in that case the lifetime works out just fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192836</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-13 12:09:36 -0700</bug_when>
    <thetext>I am still working on confirming but the bots showed a 3% regression on Speedometer / iOS when this patch landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192840</commentid>
    <comment_count>18</comment_count>
      <attachid>278829</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-13 12:13:48 -0700</bug_when>
    <thetext>Comment on attachment 278829
Patch for landing

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

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:-255
&gt; -template&lt;typename T&gt; JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, const Ref&lt;T&gt;&amp;);

To more overloads for Ref&lt;&gt;? Isn&apos;t it so now that if someone passes a Ref&lt;&gt;&amp;&amp; we&apos;re going to use the RefPtr&lt;&gt;&amp;&amp; overload and therefore do null checks?
This may have disabled my optimization from yesterday, which would explain why the benchmarks are back to their old scores.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192842</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-13 12:18:12 -0700</bug_when>
    <thetext>Reverted r200837 for reason:

Seems to have regressed Speedometer and JetStream on iOS

Committed r200875: &lt;http://trac.webkit.org/changeset/200875&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192852</commentid>
    <comment_count>20</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-05-13 12:35:57 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; I am still working on confirming but the bots showed a 3% regression on
&gt; Speedometer / iOS when this patch landed.

Is it possible to have access to monitor these results?

&gt; &gt; Source/WebCore/bindings/js/JSDOMBinding.h:-255
&gt; &gt; -template&lt;typename T&gt; JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, const Ref&lt;T&gt;&amp;);
&gt; 
&gt; To more overloads for Ref&lt;&gt;? Isn&apos;t it so now that if someone passes a
&gt; Ref&lt;&gt;&amp;&amp; we&apos;re going to use the RefPtr&lt;&gt;&amp;&amp; overload and therefore do null
&gt; checks?
&gt; This may have disabled my optimization from yesterday, which would explain
&gt; why the benchmarks are back to their old scores.

I guess we could add an additional toJS(... Ref&lt;T&gt;&amp;&amp;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192862</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-13 13:11:06 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #17)
&gt; &gt; I am still working on confirming but the bots showed a 3% regression on
&gt; &gt; Speedometer / iOS when this patch landed.
&gt; 
&gt; Is it possible to have access to monitor these results?

Not at the moment unfortunately. I am monitoring to make sure the scores go back up after the roll out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192867</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-13 13:33:18 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Reverted r200837 for reason:
&gt; 
&gt; Seems to have regressed Speedometer and JetStream on iOS
&gt; 
&gt; Committed r200875: &lt;http://trac.webkit.org/changeset/200875&gt;

FYI, this patch was also a 2% regression on Kraken / iOS even though my original toJS() change did not progress Kraken at all. So it seems this did more than just disabling my optimization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193073</commentid>
    <comment_count>23</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-05-14 05:14:24 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #19)
&gt; &gt; Reverted r200837 for reason:
&gt; &gt; 
&gt; &gt; Seems to have regressed Speedometer and JetStream on iOS
&gt; &gt; 
&gt; &gt; Committed r200875: &lt;http://trac.webkit.org/changeset/200875&gt;
&gt; 
&gt; FYI, this patch was also a 2% regression on Kraken / iOS even though my
&gt; original toJS() change did not progress Kraken at all. So it seems this did
&gt; more than just disabling my optimization.

That seems like a lot to me.
I was thinking Kraken was solely targetting JSC. 
I am surprised toJS() changes have such a big effect on Kraken results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193772</commentid>
    <comment_count>24</comment_count>
      <attachid>279107</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-05-17 02:48:33 -0700</bug_when>
    <thetext>Created attachment 279107
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193773</commentid>
    <comment_count>25</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-05-17 02:49:24 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Created attachment 279107 [details]
&gt; Patch for landing

I removed the toJS changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193777</commentid>
    <comment_count>26</comment_count>
      <attachid>279107</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-17 03:19:15 -0700</bug_when>
    <thetext>Comment on attachment 279107
Patch for landing

Clearing flags on attachment: 279107

Committed r201013: &lt;http://trac.webkit.org/changeset/201013&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193778</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-17 03:19:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278488</attachid>
            <date>2016-05-10 06:41:41 -0700</date>
            <delta_ts>2016-05-12 02:06:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157307-20160510154227.patch</filename>
            <type>text/plain</type>
            <size>33079</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk0NDI4YzlmMTAwMWQ5
NmJmNDg5OTQ1M2I3MzFkODMzZDZkNzZlYy4uN2I4MDUxYWVjNWJhNGVkMjJlOGRhNmU5MDA5ZWU1
Y2E2N2Q2NjY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc1IEBACiAyMDE2LTA1LTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKKyAgICAgICAgRE9NUHJv
bWlzZSBzaG91bGQgb25seSByZXN0cmljdCB0aGUgcmVzb2x1dGlvbiB0eXBlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTczMDcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmluZyBmcm9tIERPTVBy
b21pc2UgdGhlIHJlamVjdGlvbiB0ZW1wbGF0ZSBwYXJhbWV0ZXIuCisgICAgICAgIFN1cHBvcnRl
ZCByZWplY3Rpb24gdHlwZXMgYXJlIGludGVnZXJzIChFeGNlcHRpb24gY29kZXMpIGFuZCBET00g
b2JqZWN0cyAoRE9NRXJyb3IgdHlwaWNhbGx5KS4KKworICAgICAgICBVcGRhdGVkIHRvSlMgYW5k
IERlZmVycmVkV3JhcHBlciB0byBhY2NlcHQgUmVmPD4mJiBhbmQgUmVmUHRyPD4mJi4KKyAgICAg
ICAgUHJldmlvdXNseSBSZWY8PiYmIHdlcmUgbm90IGFjY2VwdGVkIGFuZCBvbmx5ICJjb25zdCBS
ZWZQdHI8PiYiIHdhcyBhY2NlcHRlZC4KKyAgICAgICAgVGhpcyBpbiB0dXJuIGNyZWF0ZWQgYW4g
dW5lY2Vzc2FyeSBjaHVybiBjb3VudCB3aGVuIGNhbGxpbmcgdG9KUy4KKworICAgICAgICBDaGFu
Z2VzIGFsc28gYWxsb3cgaW4gbW9zdCBjYXNlcyB0byByZW1vdmUgdGhlIG5lZWQgZm9yIGV4cGxp
Y3RseSBkZWNsYXJpbmcgdGhlCisgICAgICAgIHJlamVjdGlvbi9yZXNvbHV0aW9uIHR5cGUuCisK
KyAgICAgICAgTWlub3IgcmVmYWN0b3Jpbmcgb2YgRm9udEZhY2VTZXQgcHJvbWlzZSBoYW5kbGlu
ZyB0byB1c2UgRE9NUHJvbWlzZSBpbiBsaWV1IG9mIERlZmVycmVkV3JhcHBlci4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorICAgICAgICBDaGFuZ2VzIHNob3VsZCBub3Qg
YmUgdmlzaWJsZSBmcm9tIHVzZXIgc2NyaXB0cy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWVUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OmJsb2JGcm9tQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojps
b2FkaW5nRmFpbGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpmb3JtRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25l
cjo6YXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmJsb2Ip
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmZvcm1EYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpqc29uKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keU93bmVyOjp0ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmRpZENyZWF0ZVN0cmVhbSk6CisgICAgICAgICogTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
aDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6anNQYWlyKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZnVsZmlsbFByb21pc2VXaXRoSlNPTik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Q
cm9taXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpUeXBlSW5zcGVjdG9yOjpkZWNsdHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUeXBlSW5zcGVjdG9yOjp0ZXN0SXNWZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6VHlwZUluc3BlY3Rvcjo6dGVzdElzUmVmT3JSZWZQdHIpOgorICAgICAgICAoV2Vi
Q29yZTo6RGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVy
cmVkV3JhcHBlcjo6cmVqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OnJlc29s
dmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZTo6cmVqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZVdpdGhWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlamVjdFdpdGhWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpjYWxsUHJvbWlzZUZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N1YnRsZUNy
eXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6aW1wb3J0
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjp1bndyYXBLZXkpOgorICAg
ICAgICAqIGNzcy9Gb250RmFjZS5oOgorICAgICAgICAqIGNzcy9Gb250RmFjZVNldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6UGVuZGluZ1Byb21pc2U6OlBlbmRpbmdQcm9t
aXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0Ojpsb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRGYWNlU2V0OjpyZWdpc3RlclJlYWR5KToKKyAgICAgICAgKiBjc3MvRm9udEZh
Y2VTZXQuaDoKKworMjAxNi0wNS0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgorCiAgICAgICAgIE5vZGVMaXN0IHNob3VsZCBiZSBpdGVyYWJsZQogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDQzCiAgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yNTczMTUxOT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcAppbmRleCAxMGExMWYxNTVhYjcyNDE2MDZlY2VmYzI0ZTM5OTc0ZDc0YjYy
OGI0Li40NmFjNDVkOGI4ZTBkZTc4YTZiMzZlNGUwZTkyZDY0NDVjYTcyMzlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFJlZlB0cjxCbG9iPiBibG9iRnJvbUFycmF5
QnVmZmVyKEFycmF5QnVmZmVyKiwgY29uc3QgU3RyaW5nJik7CitzdGF0aWMgUmVmPEJsb2I+IGJs
b2JGcm9tQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXIqLCBjb25zdCBTdHJpbmcmKTsKIAogRmV0Y2hC
b2R5OjpGZXRjaEJvZHkoUmVmPEJsb2I+JiYgYmxvYikKICAgICA6IG1fdHlwZShUeXBlOjpCbG9i
KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lKEZldGNoQm9keU93
bmVyJiBvd25lciwgQ29uc3VtZXI6OlR5cGUgdHlwZSwgRGVmZXJyZWRXcmFwCiAgICAgfQogCiAg
ICAgLy8gRklYTUU6IFN1cHBvcnQgb3RoZXIgdHlwZXMuCi0gICAgcHJvbWlzZS5yZWplY3Q8RXhj
ZXB0aW9uQ29kZT4oMCk7CisgICAgcHJvbWlzZS5yZWplY3QoMCk7CiB9CiAKICNpZiBFTkFCTEUo
U1RSRUFNU19BUEkpCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVU
ZXh0KENvbnN1bWVyOjpUeXBlIHR5cGUsIERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBTdHJpbmcgY29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxp
emVkQ29udGVudFR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX21pbWVUeXBlKSk7
Ci0gICAgcHJvbWlzZS5yZXNvbHZlPFJlZlB0cjxCbG9iPj4oQmxvYjo6Y3JlYXRlKGV4dHJhY3RG
cm9tVGV4dCgpLCBjb250ZW50VHlwZSkpOworICAgIHByb21pc2UucmVzb2x2ZShCbG9iOjpjcmVh
dGUoZXh0cmFjdEZyb21UZXh0KCksIGNvbnRlbnRUeXBlKSk7CiB9CiAKIEZldGNoTG9hZGVyOjpU
eXBlIEZldGNoQm9keTo6bG9hZGluZ1R5cGUoQ29uc3VtZXI6OlR5cGUgdHlwZSkKQEAgLTIzNiw3
ICsyMzYsNyBAQCBWZWN0b3I8dWludDhfdD4gRmV0Y2hCb2R5OjpleHRyYWN0RnJvbVRleHQoKSBj
b25zdAogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8QmxvYj4g
YmxvYkZyb21BcnJheUJ1ZmZlcihBcnJheUJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKQorc3RhdGljIGlubGluZSBSZWY8QmxvYj4gYmxvYkZyb21BcnJheUJ1ZmZlcihB
cnJheUJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlm
ICghYnVmZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90Pigp
LCBjb250ZW50VHlwZSk7CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmZ1bGZp
bGxUZXh0UHJvbWlzZShGZXRjaEJvZHk6OkNvbnN1bWVyOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmlu
ZyYKIHZvaWQgRmV0Y2hCb2R5Ojpsb2FkaW5nRmFpbGVkKCkKIHsKICAgICBBU1NFUlQobV9jb25z
dW1lcik7Ci0gICAgbV9jb25zdW1lci0+cHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9uQ29kZT4oMCk7
CisgICAgbV9jb25zdW1lci0+cHJvbWlzZS5yZWplY3QoMCk7CiAgICAgbV9jb25zdW1lciA9IE51
bGxvcHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4
IDA0NjAxMGEwZmI5MmIyNjY4NTBlZWE1MjZiZWUwZWQ3NmNlMTg5MjIuLjU2ZjNkZmRjODU3MWMz
MTUxMTJmMjY2NWM2ZmZkYTk3NWE5ZGYzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBibG9iKEZl
dGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYpOwogICAgIHZvaWQganNvbihGZXRjaEJv
ZHlPd25lciYsIERlZmVycmVkV3JhcHBlciYmKTsKICAgICB2b2lkIHRleHQoRmV0Y2hCb2R5T3du
ZXImLCBEZWZlcnJlZFdyYXBwZXImJik7Ci0gICAgdm9pZCBmb3JtRGF0YShGZXRjaEJvZHlPd25l
ciYsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpIHsgcHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9u
Q29kZT4oMCk7IH0KKyAgICB2b2lkIGZvcm1EYXRhKEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRX
cmFwcGVyJiYgcHJvbWlzZSkgeyBwcm9taXNlLnJlamVjdCgwKTsgfQogCiAjaWYgRU5BQkxFKFNU
UkVBTVNfQVBJKQogICAgIHZvaWQgY29uc3VtZUFzU3RyZWFtKEZldGNoQm9keU93bmVyJiwgRmV0
Y2hSZXNwb25zZVNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keU93bmVyLmNwcAppbmRleCBjYWY0YWM4YjVjY2FkMTQzNWNlOGZhNjczNjE0MjU0YmEy
ZTQ4YzY5Li45NmMwNGMzZDYxZDEyOWFhZjIwNTQxNzhlYjY3NjkxNzJmZGU1NGNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcApAQCAtNzUs
NyArNzUsNyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjphcnJheUJ1ZmZlcihEZWZlcnJlZFdyYXBw
ZXImJiBwcm9taXNlKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChpc0Rpc3R1cmJl
ZCgpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0PEV4Y2VwdGlvbkNvZGU+KFR5cGVFcnJvcik7
CisgICAgICAgIHByb21pc2UucmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgbV9pc0Rpc3R1cmJlZCA9IHRydWU7CkBAIC04NSwxMSArODUsMTEgQEAgdm9pZCBG
ZXRjaEJvZHlPd25lcjo6YXJyYXlCdWZmZXIoRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKIHZv
aWQgRmV0Y2hCb2R5T3duZXI6OmJsb2IoRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKIHsKICAg
ICBpZiAobV9ib2R5LmlzRW1wdHkoKSkgewotICAgICAgICBwcm9taXNlLnJlc29sdmU8UmVmUHRy
PEJsb2I+PihCbG9iOjpjcmVhdGUoKSk7CisgICAgICAgIHByb21pc2UucmVzb2x2ZShCbG9iOjpj
cmVhdGUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGlzRGlzdHVyYmVkKCkp
IHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9uQ29kZT4oVHlwZUVycm9yKTsKKyAg
ICAgICAgcHJvbWlzZS5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBtX2lzRGlzdHVyYmVkID0gdHJ1ZTsKQEAgLTk5LDExICs5OSwxMSBAQCB2b2lkIEZldGNo
Qm9keU93bmVyOjpibG9iKERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiB2b2lkIEZldGNoQm9k
eU93bmVyOjpmb3JtRGF0YShEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIGlmICht
X2JvZHkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0PEV4Y2VwdGlvbkNvZGU+
KDApOworICAgICAgICBwcm9taXNlLnJlamVjdCgwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBpZiAoaXNEaXN0dXJiZWQoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdDxFeGNlcHRp
b25Db2RlPihUeXBlRXJyb3IpOworICAgICAgICBwcm9taXNlLnJlamVjdChUeXBlRXJyb3IpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1faXNEaXN0dXJiZWQgPSB0cnVlOwpAQCAtMTEz
LDExICsxMTMsMTEgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6Zm9ybURhdGEoRGVmZXJyZWRXcmFw
cGVyJiYgcHJvbWlzZSkKIHZvaWQgRmV0Y2hCb2R5T3duZXI6Ompzb24oRGVmZXJyZWRXcmFwcGVy
JiYgcHJvbWlzZSkKIHsKICAgICBpZiAobV9ib2R5LmlzRW1wdHkoKSkgewotICAgICAgICBwcm9t
aXNlLnJlamVjdDxFeGNlcHRpb25Db2RlPihTWU5UQVhfRVJSKTsKKyAgICAgICAgcHJvbWlzZS5y
ZWplY3QoU1lOVEFYX0VSUik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGlzRGlz
dHVyYmVkKCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9uQ29kZT4oVHlwZUVy
cm9yKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBtX2lzRGlzdHVyYmVkID0gdHJ1ZTsKQEAgLTEzMSw3ICsxMzEsNyBAQCB2
b2lkIEZldGNoQm9keU93bmVyOjp0ZXh0KERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGlzRGlzdHVyYmVkKCkpIHsKLSAgICAgICAgcHJv
bWlzZS5yZWplY3Q8RXhjZXB0aW9uQ29kZT4oVHlwZUVycm9yKTsKKyAgICAgICAgcHJvbWlzZS5y
ZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2lzRGlzdHVy
YmVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwCmluZGV4IDM1YmUyNDM5NGZlNGFjMjVlMDE3ZDAyNTVmZWI0NWNkODYzOGE4NDAuLjdj
OWI5ZTYwOGE1YThjYjhiNzA3NmRlNmM5ODVkNTZkNGNlMTlhODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMjEzLDcgKzIxMyw3IEBA
IHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc291CiAgICAgbV9yZXNwb25zZS5tX3Jlc3BvbnNlID0gcmVz
b3VyY2VSZXNwb25zZTsKICAgICBtX3Jlc3BvbnNlLm1faGVhZGVycy0+ZmlsdGVyQW5kRmlsbChy
ZXNvdXJjZVJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKSwgRmV0Y2hIZWFkZXJzOjpHdWFyZDo6
UmVzcG9uc2UpOwogCi0gICAgc3RkOjpleGNoYW5nZShtX3Byb21pc2UsIE51bGxvcHQpLT5yZXNv
bHZlKCZtX3Jlc3BvbnNlKTsKKyAgICBzdGQ6OmV4Y2hhbmdlKG1fcHJvbWlzZSwgTnVsbG9wdCkt
PnJlc29sdmUobV9yZXNwb25zZSk7CiB9CiAKIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDdlNDhiMDNiMDQz
NTljN2NmMDA0NjA4NzhmNzRkOWI5NmI2NGYzODcuLmVkMjQ3MTEzYjE5ZmRiNjAyOGQ0NmQwZTQ5
OGMxNmMyY2E3NGEzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEZldGNo
UmVzcG9uc2U+IGVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgUmVm
UHRyPEZldGNoUmVzcG9uc2U+IHJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25z
dCBTdHJpbmcmLCBpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHVzaW5nIEZldGNoUHJvbWlz
ZSA9IERPTVByb21pc2U8UmVmUHRyPEZldGNoUmVzcG9uc2U+LCBFeGNlcHRpb25Db2RlPjsKKyAg
ICB1c2luZyBGZXRjaFByb21pc2UgPSBET01Qcm9taXNlPEZldGNoUmVzcG9uc2U+OwogICAgIHN0
YXRpYyB2b2lkIGZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGZXRjaFJlcXVlc3QmLCBj
b25zdCBEaWN0aW9uYXJ5JiwgRmV0Y2hQcm9taXNlJiYpOwogICAgIHN0YXRpYyB2b2lkIGZldGNo
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBEaWN0aW9uYXJ5
JiwgRmV0Y2hQcm9taXNlJiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYURldmljZXMuaAppbmRleCA3MDIyNzJkZGI2NDQxMDAzNDVjN2NhODJhMWJh
OWZmYzIxMTIzNTc3Li5jNDhkODYwODZmZjQ5NDdjNDM2MTVhMDUwMmI1MzhjOTE5MTljZDY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
LmgKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3Q7CiAKLSAgICB0eXBlZGVmIERPTVByb21pc2U8UmVmUHRyPE1lZGlhU3RyZWFtPiwgUmVm
UHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yPj4gUHJvbWlzZTsKLSAgICB0eXBlZGVmIERPTVBy
b21pc2U8TWVkaWFEZXZpY2VJbmZvVmVjdG9yLCBFeGNlcHRpb25Db2RlPiBFbnVtZXJhdGVEZXZp
Y2VzUHJvbWlzZTsKKyAgICB0eXBlZGVmIERPTVByb21pc2U8TWVkaWFTdHJlYW0+IFByb21pc2U7
CisgICAgdHlwZWRlZiBET01Qcm9taXNlPE1lZGlhRGV2aWNlSW5mb1ZlY3Rvcj4gRW51bWVyYXRl
RGV2aWNlc1Byb21pc2U7CiAKICAgICB2b2lkIGdldFVzZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5
JiwgUHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgdm9pZCBlbnVtZXJhdGVE
ZXZpY2VzKEVudW1lcmF0ZURldmljZXNQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uQmFja2VuZC5oCmluZGV4IDUwZGU5MzBkMjQ1MDk5MjNkN2QyMjEzZjFiNzZjZjdk
ZTA1N2VlZWYuLmJmZmY0NGU4NzI5MTFkMDc3YzEzYmVjMTZkNzZiZTUxMjI2Y2M2ZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbkJhY2tlbmQuaApAQCAtNTMsOSArNTMsOSBAQCBjbGFzcyBSVENTdGF0c1Jlc3BvbnNl
OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogbmFtZXNwYWNlIFBlZXJDb25uZWN0
aW9uIHsKLXR5cGVkZWYgRE9NUHJvbWlzZTxSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiwg
UmVmUHRyPERPTUVycm9yPj4gU2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZTsKLXR5cGVkZWYgRE9N
UHJvbWlzZTxzdGQ6Om51bGxwdHJfdCwgUmVmUHRyPERPTUVycm9yPj4gVm9pZFByb21pc2U7Ci10
eXBlZGVmIERPTVByb21pc2U8UmVmUHRyPFJUQ1N0YXRzUmVzcG9uc2U+LCBSZWZQdHI8RE9NRXJy
b3I+PiBTdGF0c1Byb21pc2U7Cit0eXBlZGVmIERPTVByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0
aW9uPiBTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlOwordHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6
bnVsbHB0cl90PiBWb2lkUHJvbWlzZTsKK3R5cGVkZWYgRE9NUHJvbWlzZTxSVENTdGF0c1Jlc3Bv
bnNlPiBTdGF0c1Byb21pc2U7CiB9CiAKIGNsYXNzIFBlZXJDb25uZWN0aW9uQmFja2VuZENsaWVu
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcAppbmRleCA3M2IxNDliZTJhZjg4NmQ0ZGM1OThiNjdiMmFlNDU3Njg0
YzUyMGZhLi45Y2U0MTk4NGI4MWQwM2VjZjZmZGU5ZTBlYjYxYTYxZWViYjUwNzczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVx
dWVzdC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmRpZENy
ZWF0ZVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gcHJpdmF0ZVN0cgogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyA0IC0gQ3JlYXRlIHRoZSBNZWRpYVN0cmVhbSBhbmQgcGFz
cyBpdCB0byB0aGUgc3VjY2VzcyBjYWxsYmFjay4KLSAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHN0
cmVhbSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcHJp
dmF0ZVN0cmVhbSk7CisgICAgUmVmPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6
Y3JlYXRlKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHByaXZhdGVTdHJlYW0pOwogICAgIGlm
IChtX2F1ZGlvQ29uc3RyYWludHMpIHsKICAgICAgICAgZm9yIChhdXRvJiB0cmFjayA6IHN0cmVh
bS0+Z2V0QXVkaW9UcmFja3MoKSkgewogICAgICAgICAgICAgdHJhY2stPmFwcGx5Q29uc3RyYWlu
dHMoKm1fYXVkaW9Db25zdHJhaW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5oCmluZGV4IDBmZDE2ZjNlNjFmYTBiMWM4
ODBlNzJiYWQyOTI1N2MwZDVkYjU5MTAuLjA4N2I0NWM0Y2M3MWIyNDk3ZWFmOGMzYjcwOGNjYjlm
ZTliNjY2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVNvdXJjZS5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFJlYWRhYmxlU3Ry
ZWFtU291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1Tb3VyY2U+IHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5SZWFkYWJsZVN0cmVhbVNvdXJjZSgpIHsgfQogCi0gICAgdHlw
ZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0cl90LCBFeGNlcHRpb25Db2RlPiBQcm9taXNlOwor
ICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxzdGQ6Om51bGxwdHJfdD4gUHJvbWlzZTsKIAogICAgIHZv
aWQgc3RhcnQoUmVhZGFibGVTdHJlYW1Db250cm9sbGVyJiYsIFByb21pc2UmJik7CiAgICAgdm9p
ZCBjYW5jZWwoSlNDOjpKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDg1OGY2NDdhZmY3N2RiYjI1Mzg2NmZlMDkyMmE1NWQ0
ZGJhZmM1ZTcuLjE2YjJiM2M0NGQ4MjMxZTNmYzY0YWExNWEwYWU2MmRiMGIzNzg0ODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMTA5
LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBBY3RpdmVET01PYmplY3Q6OnN1c3BlbmQ7
CiAgICAgdXNpbmcgQWN0aXZlRE9NT2JqZWN0OjpyZXN1bWU7CiAKLSAgICB0eXBlZGVmIERPTVBy
b21pc2U8c3RkOjpudWxscHRyX3QsIEV4Y2VwdGlvbkNvZGU+IFByb21pc2U7CisgICAgdHlwZWRl
ZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0cl90PiBQcm9taXNlOwogCiAgICAgdm9pZCBzdXNwZW5k
KFByb21pc2UmJik7CiAgICAgdm9pZCByZXN1bWUoUHJvbWlzZSYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggMDZjZTQ3NDc2NTkzOWI2MjgzMzkwM2Y5
NjA1ZWI0YWExNmE1MDMxMi4uMWZlNjk1YWQ5NDEyM2JhNDI0NGVlOWQyNThiMDM5OGY2MDYyY2Y5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTI1MSw3
ICsyNTEsOCBAQCBKU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVuY2UoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUsIHVuc2lnbmVkJiBsZW5ndGgpOwogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIEpTQzo6QXJyYXlCdWZmZXIqKTsKIEpTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBKU0M6OkFy
cmF5QnVmZmVyVmlldyopOwogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpBcnJheUJ1ZmZlclZpZXcqKTsKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmpl
Y3QqLCBSZWZQdHI8VD4pOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZlB0cjxUPiYpOwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUds
b2JhbE9iamVjdCosIFJlZlB0cjxUPiYmKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRy
PFQ+KTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBjb25zdCBWZWN0b3I8VD4mKTsKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxP
YmplY3QqLCBjb25zdCBWZWN0b3I8UmVmUHRyPFQ+PiYpOwpAQCAtMjY3LDcgKzI2OCw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gSlNDOjpKU1ZhbHVlIGpz
QXJyYXkoSlNDOjpFeGVjU3RhdGUqCiBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTVmFsdWUganNBcnJh
eShKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0Pik7CiAKIEpTQzo6SlNWYWx1ZSBqc1BhaXIoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUds
b2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlKTsKLXRlbXBsYXRlPHR5cGVu
YW1lIEZpcnN0VHlwZSwgdHlwZW5hbWUgU2Vjb25kVHlwZT4gSlNDOjpKU1ZhbHVlIGpzUGFpcihK
U0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgRmlyc3RUeXBlJiwgY29u
c3QgU2Vjb25kVHlwZSYpOwordGVtcGxhdGU8dHlwZW5hbWUgRmlyc3RUeXBlLCB0eXBlbmFtZSBT
ZWNvbmRUeXBlPiBKU0M6OkpTVmFsdWUganNQYWlyKEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9i
YWxPYmplY3QqLCBGaXJzdFR5cGUmLCBTZWNvbmRUeXBlJik7CiAKIFJlZlB0cjxKU0M6OkFycmF5
QnVmZmVyVmlldz4gdG9BcnJheUJ1ZmZlclZpZXcoSlNDOjpKU1ZhbHVlKTsKIFJlZlB0cjxKU0M6
OkludDhBcnJheT4gdG9JbnQ4QXJyYXkoSlNDOjpKU1ZhbHVlKTsKQEAgLTU0MCw3ICs1NDEsMTIg
QEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICByZXR1cm4gdmlldy0+d3JhcChleGVjLCBn
bG9iYWxPYmplY3QpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFJlZlB0cjxUPiBwdHIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZlB0cjxUPiYgcHRyKQoreworICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgcHRyLmdldCgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZWZQdHI8VD4mJiBwdHIpCiB7CiAgICAgcmV0dXJuIHRvSlMoZXhlYywg
Z2xvYmFsT2JqZWN0LCBwdHIuZ2V0KCkpOwogfQpAQCAtNjQ0LDcgKzY1MCw3IEBAIGlubGluZSBK
U0M6OkpTVmFsdWUganNQYWlyKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjCiAgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KCZzdGF0ZSwgMCwgZ2xv
YmFsT2JqZWN0LCBhcmdzKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRmlyc3RUeXBlLCB0eXBl
bmFtZSBTZWNvbmRUeXBlPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIGpzUGFpcihKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEZpcnN0VHlw
ZSYgdmFsdWUxLCBjb25zdCBTZWNvbmRUeXBlJiB2YWx1ZTIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBG
aXJzdFR5cGUsIHR5cGVuYW1lIFNlY29uZFR5cGU+IGlubGluZSBKU0M6OkpTVmFsdWUganNQYWly
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Rmlyc3RUeXBlJiB2YWx1ZTEsIFNlY29uZFR5cGUmIHZhbHVlMikKIHsKICAgICByZXR1cm4ganNQ
YWlyKHN0YXRlLCBnbG9iYWxPYmplY3QsIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QsIHZhbHVl
MSksIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QsIHZhbHVlMikpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAKaW5kZXggODk2Zjg0OTQzNWIyYTQ5MDJk
YTdmMmQxN2VmN2NmNjc0M2E2MWYxMS4uYTIxNGI4N2JjNjk4ZTk1MDA4NDgyODNmMGY3N2RiNjAz
NTJhMjQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3Bw
CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgZnVsZmlsbFByb21pc2VXaXRoSlNPTihEZWZlcnJlZFdy
YXBwZXImIHByb21pc2UsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICBKU0M6OkpTVmFsdWUg
dmFsdWUgPSBwYXJzZUFzSlNPTihwcm9taXNlLmdsb2JhbE9iamVjdCgpLmdsb2JhbEV4ZWMoKSwg
ZGF0YSk7CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9u
Q29kZT4oU1lOVEFYX0VSUik7CisgICAgICAgIHByb21pc2UucmVqZWN0KFNZTlRBWF9FUlIpOwog
ICAgIGVsc2UKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKaW5kZXggZmI1MWI3MjI3ZjFmMTI5MWEwNjcz
OTVkOTBjYjJkMDg2NTc2MWMxNy4uYzEzY2E1ZmI5NzA1ZTg5ZTMxMDRjYjM2MTVjOWVmMDk1YTY4
ZDZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKQEAgLTMz
LDE1ICszMyw4OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IERPTUNsYXNzPgorc3RydWN0IFR5cGVJbnNwZWN0b3IgeworcHJpdmF0ZToKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3RleHByIGF1dG8gdGVzdElzVmVjdG9yKGludCkgLT4g
ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFQ+KCkuc2hyaW5rVG9GaXQoKSwgYm9vbCgpKSB7IHJldHVy
biB0cnVlOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0ZXhwciBib29s
IHRlc3RJc1ZlY3RvciguLi4pIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdGF0aWMgY29uc3RleHByIGF1dG8gdGVzdElzUmVmT3JSZWZQdHIoaW50KSAtPiBk
ZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5sZWFrUmVmKCksIGJvb2woKSkgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0ZXN0
SXNSZWZPclJlZlB0ciguLi4pIHsgcmV0dXJuIGZhbHNlOyB9CisKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNSZWZPclJlZlB0ciA9IHRlc3RJc1JlZk9yUmVmUHRyPERPTUNs
YXNzPigwKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNQYXNzQnlWYWx1ZVR5cGUgPSBz
dGQ6OmlzX3BvaW50ZXI8RE9NQ2xhc3M+Ojp2YWx1ZQorICAgICAgICB8fCBzdGQ6OmlzX3NhbWU8
RE9NQ2xhc3MsIHN0ZDo6bnVsbHB0cl90Pjo6dmFsdWUKKyAgICAgICAgfHwgc3RkOjppc19zYW1l
PERPTUNsYXNzLCBKU0M6OkpTVmFsdWU+Ojp2YWx1ZQorICAgICAgICB8fCBzdGQ6OmlzX3NhbWU8
RE9NQ2xhc3MsIGJvb2w+Ojp2YWx1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNQYXNz
QnlDb25zdFJlZlR5cGUgPSB0ZXN0SXNWZWN0b3I8RE9NQ2xhc3M+KDApIAorICAgICAgICB8fCBz
dGQ6OmlzX3NhbWU8RE9NQ2xhc3MsIFN0cmluZz46OnZhbHVlOworfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+CitzdHJ1Y3QgUHJvbWlzZVJl
c3VsdEluc3BlY3RvciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NC
eVZhbHVlID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeVJlZiA9IHRy
dWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeVVSZWYgPSBmYWxzZTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5Q29uc3RSZWYgPSBmYWxzZTsKKworICAgIHR5cGVk
ZWYgRE9NQ2xhc3MmIFR5cGU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcz4KK3N0
cnVjdCBQcm9taXNlUmVzdWx0SW5zcGVjdG9yPERPTUNsYXNzLCB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxUeXBlSW5zcGVjdG9yPERPTUNsYXNzPjo6aXNQYXNzQnlWYWx1ZVR5cGU+Ojp0eXBlPiB7
CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeVZhbHVlID0gdHJ1ZTsK
KyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5UmVmID0gZmFsc2U7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIHBhc3NCeVVSZWYgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgcGFzc0J5Q29uc3RSZWYgPSBmYWxzZTsKKworICAgIHR5cGVkZWYgRE9NQ2xhc3MgVHlw
ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPgorc3RydWN0IFByb21pc2VSZXN1
bHRJbnNwZWN0b3I8RE9NQ2xhc3MsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFR5cGVJbnNwZWN0
b3I8RE9NQ2xhc3M+Ojppc1Bhc3NCeUNvbnN0UmVmVHlwZT46OnR5cGU+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5VmFsdWUgPSBmYWxzZTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgcGFzc0J5UmVmID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIHBhc3NCeVVSZWYgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5
Q29uc3RSZWYgPSB0cnVlOworCisgICAgdHlwZWRlZiBjb25zdCBET01DbGFzcyYgVHlwZTsKK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPgorc3RydWN0IFByb21pc2VSZXN1bHRJbnNw
ZWN0b3I8RE9NQ2xhc3MsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFR5cGVJbnNwZWN0b3I8RE9N
Q2xhc3M+Ojppc1JlZk9yUmVmUHRyPjo6dHlwZT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBwYXNzQnlWYWx1ZSA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBwYXNzQnlS
ZWYgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5VVJlZiA9IHRydWU7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeUNvbnN0UmVmID0gZmFsc2U7Cit9Owor
CiBjbGFzcyBEZWZlcnJlZFdyYXBwZXIgewogcHVibGljOgogICAgIERlZmVycmVkV3JhcHBlcihK
U0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpKU1Byb21pc2VEZWZlcnJl
ZCopOwogCi0gICAgdGVtcGxhdGU8Y2xhc3MgUmVzb2x2ZVJlc3VsdFR5cGU+Ci0gICAgdm9pZCBy
ZXNvbHZlKGNvbnN0IFJlc29sdmVSZXN1bHRUeXBlJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgUmVz
b2x2ZVJlc3VsdFR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1bHRJbnNw
ZWN0b3I8UmVzb2x2ZVJlc3VsdFR5cGU+OjpwYXNzQnlWYWx1ZSwgdm9pZD46OnR5cGUKKyAgICBy
ZXNvbHZlKFJlc29sdmVSZXN1bHRUeXBlIHJlc3VsdCkgeyByZXNvbHZlV2l0aFZhbHVlKHJlc3Vs
dCk7IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8UHJvbWlzZVJlc3VsdEluc3BlY3RvcjxSZXNvbHZlUmVzdWx0VHlwZT46OnBh
c3NCeVJlZiwgdm9pZD46OnR5cGUKKyAgICByZXNvbHZlKFJlc29sdmVSZXN1bHRUeXBlJiByZXN1
bHQpIHsgcmVzb2x2ZVdpdGhWYWx1ZShyZXN1bHQpOyB9CisgICAgdGVtcGxhdGU8Y2xhc3MgUmVz
b2x2ZVJlc3VsdFR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1bHRJbnNw
ZWN0b3I8UmVzb2x2ZVJlc3VsdFR5cGU+OjpwYXNzQnlVUmVmLCB2b2lkPjo6dHlwZQorICAgIHJl
c29sdmUoUmVzb2x2ZVJlc3VsdFR5cGUmJiByZXN1bHQpIHsgcmVzb2x2ZVdpdGhWYWx1ZShzdGQ6
OmZvcndhcmQ8UmVzb2x2ZVJlc3VsdFR5cGU+KHJlc3VsdCkpOyB9CisgICAgdGVtcGxhdGU8Y2xh
c3MgUmVzb2x2ZVJlc3VsdFR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1
bHRJbnNwZWN0b3I8UmVzb2x2ZVJlc3VsdFR5cGU+OjpwYXNzQnlDb25zdFJlZiwgdm9pZD46OnR5
cGUKKyAgICByZXNvbHZlKGNvbnN0IFJlc29sdmVSZXN1bHRUeXBlJiByZXN1bHQpIHsgcmVzb2x2
ZVdpdGhWYWx1ZShyZXN1bHQpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBSZWplY3RSZXN1bHRU
eXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxQcm9taXNlUmVzdWx0SW5zcGVjdG9yPFJlamVj
dFJlc3VsdFR5cGU+OjpwYXNzQnlWYWx1ZSwgdm9pZD46OnR5cGUKKyAgICByZWplY3QoUmVqZWN0
UmVzdWx0VHlwZSByZXN1bHQpIHsgcmVqZWN0V2l0aFZhbHVlKHJlc3VsdCk7IH0KKyAgICB0ZW1w
bGF0ZTxjbGFzcyBSZWplY3RSZXN1bHRUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxQcm9t
aXNlUmVzdWx0SW5zcGVjdG9yPFJlamVjdFJlc3VsdFR5cGU+OjpwYXNzQnlSZWYsIHZvaWQ+Ojp0
eXBlCisgICAgcmVqZWN0KFJlamVjdFJlc3VsdFR5cGUmIHJlc3VsdCkgeyByZWplY3RXaXRoVmFs
dWUocmVzdWx0KTsgfQorICAgIHRlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+IHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1bHRJbnNwZWN0b3I8UmVqZWN0UmVzdWx0VHlw
ZT46OnBhc3NCeVVSZWYsIHZvaWQ+Ojp0eXBlCisgICAgcmVqZWN0KFJlamVjdFJlc3VsdFR5cGUm
JiByZXN1bHQpIHsgcmVqZWN0V2l0aFZhbHVlKHN0ZDo6Zm9yd2FyZDxSZWplY3RSZXN1bHRUeXBl
PihyZXN1bHQpKTsgfQorICAgIHRlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+IHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1bHRJbnNwZWN0b3I8UmVqZWN0UmVzdWx0VHlw
ZT46OnBhc3NCeUNvbnN0UmVmLCB2b2lkPjo6dHlwZQorICAgIHJlamVjdChjb25zdCBSZWplY3RS
ZXN1bHRUeXBlJiByZXN1bHQpIHsgcmVqZWN0V2l0aFZhbHVlKHJlc3VsdCk7IH0KIAotICAgIHRl
bXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+Ci0gICAgdm9pZCByZWplY3QoY29uc3QgUmVq
ZWN0UmVzdWx0VHlwZSYpOworICAgIHZvaWQgcmVqZWN0KEV4Y2VwdGlvbkNvZGUpOwogCiAgICAg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0OwogICAgIEpTQzo6SlNWYWx1
ZSBwcm9taXNlKCkgY29uc3Q7CkBAIC01MSw2ICsxMjUsOSBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVzb2x2ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSByZXNvbHV0aW9uKSB7
IGNhbGxGdW5jdGlvbihzdGF0ZSwgbV9kZWZlcnJlZC0+cmVzb2x2ZSgpLCByZXNvbHV0aW9uKTsg
fQogICAgIHZvaWQgcmVqZWN0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHJl
c29sdXRpb24pIHsgY2FsbEZ1bmN0aW9uKHN0YXRlLCBtX2RlZmVycmVkLT5yZWplY3QoKSwgcmVz
b2x1dGlvbik7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+IHZvaWQg
cmVqZWN0V2l0aFZhbHVlKFJlamVjdFJlc3VsdFR5cGUmJik7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
UmVzb2x2ZVJlc3VsdFR5cGU+IHZvaWQgcmVzb2x2ZVdpdGhWYWx1ZShSZXNvbHZlUmVzdWx0VHlw
ZSYmKTsKKwogICAgIEpTQzo6U3Ryb25nPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVj
dDsKICAgICBKU0M6OlN0cm9uZzxKU0M6OkpTUHJvbWlzZURlZmVycmVkPiBtX2RlZmVycmVkOwog
fTsKQEAgLTcxLDcgKzE0OCw3IEBAIGlubGluZSBKU0M6OkpTVmFsdWUgY2FsbFByb21pc2VGdW5j
dGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6RW5jb2RlZEpTVmFsCiAgICAgcmV0dXJu
IHByb21pc2VEZWZlcnJlZC5wcm9taXNlKCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXJyb3I+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFsdWU+CiBjbGFzcyBET01Q
cm9taXNlIHsKIHB1YmxpYzoKICAgICBET01Qcm9taXNlKERlZmVycmVkV3JhcHBlciYmIHdyYXBw
ZXIpIDogbV93cmFwcGVyKFdURk1vdmUod3JhcHBlcikpIHsgfQpAQCAtODAsMTA1ICsxNTcsMTA1
IEBAIHB1YmxpYzoKICAgICBET01Qcm9taXNlKGNvbnN0IERPTVByb21pc2UmKSA9IGRlZmF1bHQ7
CiAgICAgRE9NUHJvbWlzZSYgb3BlcmF0b3I9KERPTVByb21pc2UgY29uc3QmKSA9IGRlZmF1bHQ7
CiAKLSAgICB2b2lkIHJlc29sdmUoY29uc3QgVmFsdWUmIHZhbHVlKSB7IG1fd3JhcHBlci5yZXNv
bHZlPFZhbHVlPih2YWx1ZSk7IH0KLSAgICB2b2lkIHJlamVjdChjb25zdCBFcnJvciYgZXJyb3Ip
IHsgbV93cmFwcGVyLnJlamVjdDxFcnJvcj4oZXJyb3IpOyB9CisgICAgdm9pZCByZXNvbHZlKHR5
cGVuYW1lIFByb21pc2VSZXN1bHRJbnNwZWN0b3I8VmFsdWU+OjpUeXBlIHZhbHVlKSB7IG1fd3Jh
cHBlci5yZXNvbHZlKHZhbHVlKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXJyb3JUeXBl
PiB2b2lkIHJlamVjdChFcnJvclR5cGUmJiBlcnJvcikgeyBtX3dyYXBwZXIucmVqZWN0KHN0ZDo6
Zm9yd2FyZDxFcnJvclR5cGU+KGVycm9yKSk7IH0KIAogcHJpdmF0ZToKICAgICBEZWZlcnJlZFdy
YXBwZXIgbV93cmFwcGVyOwogfTsKIAotdGVtcGxhdGU8Y2xhc3MgUmVzb2x2ZVJlc3VsdFR5cGU+
Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmUoY29uc3QgUmVzb2x2ZVJlc3Vs
dFR5cGUmIHJlc3VsdCkKK2lubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0KEV4Y2Vw
dGlvbkNvZGUgZWMpCiB7CiAgICAgQVNTRVJUKG1fZGVmZXJyZWQpOwogICAgIEFTU0VSVChtX2ds
b2JhbE9iamVjdCk7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICBy
ZXNvbHZlKCpleGVjLCB0b0pTKGV4ZWMsIG1fZ2xvYmFsT2JqZWN0LmdldCgpLCByZXN1bHQpKTsK
KyAgICByZWplY3QoKmV4ZWMsIGNyZWF0ZURPTUV4Y2VwdGlvbihleGVjLCBlYykpOwogfQogCi10
ZW1wbGF0ZTxjbGFzcyBSZWplY3RSZXN1bHRUeXBlPgotaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFw
cGVyOjpyZWplY3QoY29uc3QgUmVqZWN0UmVzdWx0VHlwZSYgcmVzdWx0KQordGVtcGxhdGU8Y2xh
c3MgUmVzb2x2ZVJlc3VsdFR5cGU+CitpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29s
dmVXaXRoVmFsdWUoUmVzb2x2ZVJlc3VsdFR5cGUmJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1f
ZGVmZXJyZWQpOwogICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CiAgICAgSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICByZWplY3QoKmV4ZWMsIHRvSlMoZXhlYywgbV9nbG9i
YWxPYmplY3QuZ2V0KCksIHJlc3VsdCkpOworICAgIHJlc29sdmUoKmV4ZWMsIHRvSlMoZXhlYywg
bV9nbG9iYWxPYmplY3QuZ2V0KCksIHN0ZDo6Zm9yd2FyZDxSZXNvbHZlUmVzdWx0VHlwZT4ocmVz
dWx0KSkpOwogfQogCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJl
amVjdChjb25zdCBzdGQ6Om51bGxwdHJfdCYpCit0ZW1wbGF0ZTxjbGFzcyBSZWplY3RSZXN1bHRU
eXBlPgoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3RXaXRoVmFsdWUoUmVqZWN0
UmVzdWx0VHlwZSYmIHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9kZWZlcnJlZCk7CiAgICAgQVNT
RVJUKG1fZ2xvYmFsT2JqZWN0KTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMp
OwotICAgIHJlamVjdCgqZXhlYywgSlNDOjpqc051bGwoKSk7CisgICAgcmVqZWN0KCpleGVjLCB0
b0pTKGV4ZWMsIG1fZ2xvYmFsT2JqZWN0LmdldCgpLCBzdGQ6OmZvcndhcmQ8UmVqZWN0UmVzdWx0
VHlwZT4ocmVzdWx0KSkpOwogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdy
YXBwZXI6OnJlamVjdChjb25zdCBKU0M6OkpTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgRGVm
ZXJyZWRXcmFwcGVyOjpyZXNvbHZlKGJvb2wgcmVzdWx0KQogewogICAgIEFTU0VSVChtX2RlZmVy
cmVkKTsKICAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBl
eGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIoZXhlYyk7Ci0gICAgcmVqZWN0KCpleGVjLCB2YWx1ZSk7CisgICAgcmVzb2x2ZSgq
ZXhlYywgSlNDOjpqc0Jvb2xlYW4ocmVzdWx0KSk7CiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSB2
b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0PEV4Y2VwdGlvbkNvZGU+KGNvbnN0IEV4Y2VwdGlv
bkNvZGUmIGVjKQoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlKEpTQzo6SlNW
YWx1ZSB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9kZWZlcnJlZCk7CiAgICAgQVNTRVJUKG1fZ2xv
YmFsT2JqZWN0KTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAgIHJl
amVjdCgqZXhlYywgY3JlYXRlRE9NRXhjZXB0aW9uKGV4ZWMsIGVjKSk7CisgICAgcmVzb2x2ZSgq
ZXhlYywgdmFsdWUpOwogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBw
ZXI6OnJlc29sdmU8U3RyaW5nPihjb25zdCBTdHJpbmcmIHJlc3VsdCkKK2lubGluZSB2b2lkIERl
ZmVycmVkV3JhcHBlcjo6cmVqZWN0KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBBU1NFUlQo
bV9kZWZlcnJlZCk7CiAgICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKICAgICBKU0M6OkV4ZWNT
dGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAgIHJlc29sdmUoKmV4ZWMsIGpzU3RyaW5nKGV4ZWMs
IHJlc3VsdCkpOworICAgIHJlamVjdCgqZXhlYywgdmFsdWUpOwogfQogCiB0ZW1wbGF0ZTw+Ci1p
bmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmU8Ym9vbD4oY29uc3QgYm9vbCYgcmVz
dWx0KQoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlKHN0ZDo6bnVsbHB0cl90
KQogewogICAgIEFTU0VSVChtX2RlZmVycmVkKTsKICAgICBBU1NFUlQobV9nbG9iYWxPYmplY3Qp
OwogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgcmVzb2x2ZSgqZXhl
YywgSlNDOjpqc0Jvb2xlYW4ocmVzdWx0KSk7CisgICAgcmVzb2x2ZSgqZXhlYywgSlNDOjpqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVy
OjpyZXNvbHZlPEpTQzo6SlNWYWx1ZT4oY29uc3QgSlNDOjpKU1ZhbHVlJiB2YWx1ZSkKK2lubGlu
ZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0KHN0ZDo6bnVsbHB0cl90KQogewogICAgIEFT
U0VSVChtX2RlZmVycmVkKTsKICAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOwogICAgIEpTQzo6
RXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgcmVzb2x2ZSgqZXhlYywgdmFsdWUpOwor
ICAgIHJlamVjdCgqZXhlYywgSlNDOjpqc051bGwoKSk7CiB9CiAKIHRlbXBsYXRlPD4KLWlubGlu
ZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZShjb25zdCBzdGQ6Om51bGxwdHJfdCYpCitp
bmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmUoY29uc3QgU3RyaW5nJiByZXN1bHQp
CiB7CiAgICAgQVNTRVJUKG1fZGVmZXJyZWQpOwogICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7
CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
OwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICByZXNvbHZlKCpleGVj
LCBKU0M6OmpzVW5kZWZpbmVkKCkpOworICAgIHJlc29sdmUoKmV4ZWMsIGpzU3RyaW5nKGV4ZWMs
IHJlc3VsdCkpOwogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6
OnJlamVjdDxTdHJpbmc+KGNvbnN0IFN0cmluZyYgcmVzdWx0KQoraW5saW5lIHZvaWQgRGVmZXJy
ZWRXcmFwcGVyOjpyZWplY3QoY29uc3QgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1f
ZGVmZXJyZWQpOwogICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKaW5kZXggNGZhNjc4
MjRlNzVlZGI1Y2IzZTZiYTg4MDFhNmE3NGFjY2Y4OGRhYS4uOGM2ZDg4YTU4NGE5NmYzYjdhMDU4
MmY0ZTIyZWVjODFlMjFhMWIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcApAQCAtNTUwLDcgKzU1MCw3IEBAIEpTVmFsdWUg
SlNTdWJ0bGVDcnlwdG86OmltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlKQogICAgIEpTUHJvbWlz
ZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKCZz
dGF0ZSwgZ2xvYmFsT2JqZWN0KCkpOwogICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVyKCZzdGF0
ZSwgZ2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJlZCk7CiAgICAgYXV0byBzdWNjZXNzQ2Fs
bGJhY2sgPSBbd3JhcHBlcl0oQ3J5cHRvS2V5JiByZXN1bHQpIG11dGFibGUgewotICAgICAgICB3
cmFwcGVyLnJlc29sdmUoJnJlc3VsdCk7CisgICAgICAgIHdyYXBwZXIucmVzb2x2ZShyZXN1bHQp
OwogICAgIH07CiAgICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxl
IHsKICAgICAgICAgd3JhcHBlci5yZWplY3QobnVsbHB0cik7CkBAIC03ODUsNyArNzg1LDcgQEAg
SlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6dW53cmFwS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiAKICAg
ICBhdXRvIGRlY3J5cHRTdWNjZXNzQ2FsbGJhY2sgPSBbZG9tR2xvYmFsT2JqZWN0LCBrZXlGb3Jt
YXQsIHVud3JhcHBlZEtleUFsZ29yaXRobVB0ciwgdW53cmFwcGVkS2V5QWxnb3JpdGhtUGFyYW1l
dGVyc1B0ciwgZXh0cmFjdGFibGUsIGtleVVzYWdlcywgd3JhcHBlcl0oY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBhdXRvIGltcG9ydFN1Y2Nlc3NDYWxs
YmFjayA9IFt3cmFwcGVyXShDcnlwdG9LZXkmIGtleSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB3
cmFwcGVyLnJlc29sdmUoJmtleSk7CisgICAgICAgICAgICB3cmFwcGVyLnJlc29sdmUoa2V5KTsK
ICAgICAgICAgfTsKICAgICAgICAgYXV0byBpbXBvcnRGYWlsdXJlQ2FsbGJhY2sgPSBbd3JhcHBl
cl0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHdyYXBwZXIucmVqZWN0KG51bGxwdHIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZhY2UuaAppbmRleCA4OTcxZWYxZDI5N2EyMmZiZWNiY2UzZTBlYWJmMDM5YTQ3NmUx
MzYzLi5lMjQ5MzRkNzc0MmQ1MGRlMGQyNjY2N2ZhN2E2YWZhY2I2MzlkMTkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBMb2Fk
U3RhdHVzIHsgVW5sb2FkZWQsIExvYWRpbmcsIExvYWRlZCwgRXJyb3IgfTsKICAgICBMb2FkU3Rh
dHVzIHN0YXR1cygpIGNvbnN0OwogCi0gICAgdHlwZWRlZiBET01Qcm9taXNlPEZvbnRGYWNlJiwg
RXhjZXB0aW9uQ29kZT4gUHJvbWlzZTsKKyAgICB0eXBlZGVmIERPTVByb21pc2U8Rm9udEZhY2Um
PiBQcm9taXNlOwogICAgIHZvaWQgcmVnaXN0ZXJMb2FkZWQoUHJvbWlzZSYmKTsKIAogICAgIHZv
aWQgbG9hZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKaW5kZXggN2U3NDQ5ODNkZjgx
ZTdhYmQwZGMxMjMxYWU1NjIwNDQyMWY5OGMyNi4uMTg5ZTViZGZhZmQwMTdhYWE4NmZkOGQzNzdh
OTA1Y2ZjZWM3ODM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCkBAIC04Myw3ICs4
Myw3IEBAIFJlZlB0cjxGb250RmFjZT4gRm9udEZhY2VTZXQ6Okl0ZXJhdG9yOjpuZXh0KCkKICAg
ICByZXR1cm4gbV90YXJnZXQtPmJhY2tpbmcoKVttX2luZGV4KytdLndyYXBwZXIoKTsKIH0KIAot
Rm9udEZhY2VTZXQ6OlBlbmRpbmdQcm9taXNlOjpQZW5kaW5nUHJvbWlzZShQcm9taXNlJiYgcHJv
bWlzZSkKK0ZvbnRGYWNlU2V0OjpQZW5kaW5nUHJvbWlzZTo6UGVuZGluZ1Byb21pc2UoTG9hZFBy
b21pc2UmJiBwcm9taXNlKQogICAgIDogcHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKQogewogfQpA
QCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgRm9udEZhY2VTZXQ6OmNsZWFyKCkKICAgICAgICAgbV9i
YWNraW5nLT5yZW1vdmUobV9iYWNraW5nLmdldCgpWzBdKTsKIH0KIAotdm9pZCBGb250RmFjZVNl
dDo6bG9hZChjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRGVmZXJyZWRX
cmFwcGVyJiYgcHJvbWlzZSkKK3ZvaWQgRm9udEZhY2VTZXQ6OmxvYWQoY29uc3QgU3RyaW5nJiBm
b250LCBjb25zdCBTdHJpbmcmIHRleHQsIExvYWRQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvIG1hdGNoaW5nRmFjZXMgPSBtX2JhY2tpbmct
Pm1hdGNoaW5nRmFjZXMoZm9udCwgdGV4dCwgZWMpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQg
Rm9udEZhY2VTZXQ6OmxvYWQoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQs
IERlZmVycmVkV3JhcHBlciYmCiAKICAgICBmb3IgKGF1dG8mIGZhY2UgOiBtYXRjaGluZ0ZhY2Vz
KSB7CiAgICAgICAgIGlmIChmYWNlLmdldCgpLnN0YXR1cygpID09IENTU0ZvbnRGYWNlOjpTdGF0
dXM6OkZhaWx1cmUpIHsKLSAgICAgICAgICAgIHByb21pc2UucmVqZWN0KERPTUNvcmVFeGNlcHRp
b246OmNyZWF0ZShFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oTkVUV09SS19FUlIpKS5wdHIoKSk7
CisgICAgICAgICAgICBwcm9taXNlLnJlamVjdChET01Db3JlRXhjZXB0aW9uOjpjcmVhdGUoRXhj
ZXB0aW9uQ29kZURlc2NyaXB0aW9uKE5FVFdPUktfRVJSKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpAQCAtMTY3LDcgKzE2Nyw3IEBAIGJvb2wgRm9udEZhY2VTZXQ6
OmNoZWNrKGNvbnN0IFN0cmluZyYgZmFtaWx5LCBjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlv
bkNvZGUmCiAgICAgcmV0dXJuIG1fYmFja2luZy0+Y2hlY2soZmFtaWx5LCB0ZXh0LCBlYyk7CiB9
CiAKLXZvaWQgRm9udEZhY2VTZXQ6OnJlZ2lzdGVyUmVhZHkoUHJvbWlzZSYmIHByb21pc2UpCit2
b2lkIEZvbnRGYWNlU2V0OjpyZWdpc3RlclJlYWR5KFJlYWR5UHJvbWlzZSYmIHByb21pc2UpCiB7
CiAgICAgQVNTRVJUKCFtX3Byb21pc2UpOwogICAgIGlmIChtX2lzUmVhZHkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlU2V0LmgKaW5kZXggZjA0NzBlOWQ2MjhiYmU3YzAyOGE5MTBiZjcwZjA5YmZhYzZm
OGUwMS4uODlhZDA4ZDA5YmNmMjdkOTc4MTQ5NjNkOGM3ZjlkZjYzMzM4NzkyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRGYWNlU2V0LmgKQEAgLTQ3LDE0ICs0NywxNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBy
ZW1vdmUoRm9udEZhY2UmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICB2b2lkIGxvYWQoY29u
c3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQsIERlZmVycmVkV3JhcHBlciYmIHBy
b21pc2UpOworICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4+
IExvYWRQcm9taXNlOworICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0
cmluZyYgdGV4dCwgTG9hZFByb21pc2UmJik7CiAgICAgYm9vbCBjaGVjayhjb25zdCBTdHJpbmcm
IGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgZW51bSBj
bGFzcyBMb2FkU3RhdHVzIHsgTG9hZGluZywgTG9hZGVkIH07CiAgICAgTG9hZFN0YXR1cyBzdGF0
dXMoKSBjb25zdDsKIAotICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxGb250RmFjZVNldCYsIERPTUNv
cmVFeGNlcHRpb24mPiBQcm9taXNlOwotICAgIHZvaWQgcmVnaXN0ZXJSZWFkeShQcm9taXNlJiYp
OworICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxGb250RmFjZVNldCY+IFJlYWR5UHJvbWlzZTsKKyAg
ICB2b2lkIHJlZ2lzdGVyUmVhZHkoUmVhZHlQcm9taXNlJiYpOwogCiAgICAgQ1NTRm9udEZhY2VT
ZXQmIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KIApAQCAtNzQsMTkgKzc1LDE4IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgUGVuZGluZ1Byb21pc2UgOiBSZWZDb3Vu
dGVkPFBlbmRpbmdQcm9taXNlPiB7Ci0gICAgICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxWZWN0b3I8
UmVmUHRyPEZvbnRGYWNlPj4mLCBET01Db3JlRXhjZXB0aW9uJj4gUHJvbWlzZTsKLSAgICAgICAg
c3RhdGljIFJlZjxQZW5kaW5nUHJvbWlzZT4gY3JlYXRlKFByb21pc2UmJiBwcm9taXNlKQorICAg
ICAgICBzdGF0aWMgUmVmPFBlbmRpbmdQcm9taXNlPiBjcmVhdGUoTG9hZFByb21pc2UmJiBwcm9t
aXNlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQZW5kaW5n
UHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKSk7CiAgICAgICAgIH0KICAgICAgICAgflBlbmRpbmdQ
cm9taXNlKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBQZW5kaW5nUHJvbWlzZShQcm9taXNl
JiYpOworICAgICAgICBQZW5kaW5nUHJvbWlzZShMb2FkUHJvbWlzZSYmKTsKIAogICAgIHB1Ymxp
YzoKICAgICAgICAgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+IGZhY2VzOwotICAgICAgICBQcm9t
aXNlIHByb21pc2U7CisgICAgICAgIExvYWRQcm9taXNlIHByb21pc2U7CiAgICAgICAgIGJvb2wg
aGFzUmVhY2hlZFRlcm1pbmFsU3RhdGUgeyBmYWxzZSB9OwogICAgIH07CiAKQEAgLTExMCw3ICsx
MTAsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmPENTU0ZvbnRGYWNlU2V0PiBtX2JhY2tpbmc7CiAg
ICAgSGFzaE1hcDxSZWZQdHI8Q1NTRm9udEZhY2U+LCBWZWN0b3I8UmVmPFBlbmRpbmdQcm9taXNl
Pj4+IG1fcGVuZGluZ1Byb21pc2VzOwotICAgIE9wdGlvbmFsPFByb21pc2U+IG1fcHJvbWlzZTsK
KyAgICBPcHRpb25hbDxSZWFkeVByb21pc2U+IG1fcHJvbWlzZTsKICAgICBib29sIG1faXNSZWFk
eSB7IGZhbHNlIH07CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278719</attachid>
            <date>2016-05-12 02:06:25 -0700</date>
            <delta_ts>2016-05-13 02:00:24 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-157307-20160512110713.patch</filename>
            <type>text/plain</type>
            <size>33562</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRlNjgyM2VjNzZkZDNh
ODMzZjgzNGZlOThhMjFiNWJkY2JiOWNjNy4uOTZhMDA5MDQ3NjU1MDZlMWUyYjg0MjE1MzRjNmJk
Yzg4MzBhMzY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDE2LTA1LTEyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgRE9NUHJv
bWlzZSBzaG91bGQgb25seSByZXN0cmljdCB0aGUgcmVzb2x1dGlvbiB0eXBlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTczMDcKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZW1vdmluZyBmcm9tIERPTVByb21p
c2UgdGhlIHJlamVjdGlvbiB0ZW1wbGF0ZSBwYXJhbWV0ZXIuCisgICAgICAgIFN1cHBvcnRlZCBy
ZWplY3Rpb24gdHlwZXMgYXJlIGludGVnZXJzIChFeGNlcHRpb24gY29kZXMpIGFuZCBET00gb2Jq
ZWN0cyAoRE9NRXJyb3IgdHlwaWNhbGx5KS4KKworICAgICAgICBVcGRhdGVkIHRvSlMgYW5kIERl
ZmVycmVkV3JhcHBlciB0byBhY2NlcHQgUmVmPD4mJiBhbmQgUmVmUHRyPD4mJi4KKyAgICAgICAg
UHJldmlvdXNseSBSZWY8PiYmIHdlcmUgbm90IGFjY2VwdGVkIGFuZCBvbmx5ICJjb25zdCBSZWZQ
dHI8PiYiIHdhcyBhY2NlcHRlZC4KKyAgICAgICAgVGhpcyBpbiB0dXJuIGNyZWF0ZWQgYW4gdW5l
Y2Vzc2FyeSBjaHVybiBjb3VudCB3aGVuIGNhbGxpbmcgdG9KUy4KKworICAgICAgICBDaGFuZ2Vz
IGFsc28gYWxsb3cgaW4gbW9zdCBjYXNlcyB0byByZW1vdmUgdGhlIG5lZWQgZm9yIGV4cGxpY3Rs
eSBkZWNsYXJpbmcgdGhlCisgICAgICAgIHJlamVjdGlvbi9yZXNvbHV0aW9uIHR5cGUuCisKKyAg
ICAgICAgTWlub3IgcmVmYWN0b3Jpbmcgb2YgRm9udEZhY2VTZXQgcHJvbWlzZSBoYW5kbGluZyB0
byB1c2UgRE9NUHJvbWlzZSBpbiBsaWV1IG9mIERlZmVycmVkV3JhcHBlci4KKworICAgICAgICBD
b3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorICAgICAgICBDaGFuZ2VzIHNob3VsZCBub3QgYmUg
dmlzaWJsZSBmcm9tIHVzZXIgc2NyaXB0cy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OmJsb2JGcm9tQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpsb2Fk
aW5nRmFpbGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpmb3JtRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlPd25lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6
YXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmJsb2IpOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmZvcm1EYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keU93bmVyOjpqc29uKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eU93bmVyOjp0ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlVzZXJNZWRpYVJlcXVlc3Q6OmRpZENyZWF0ZVN0cmVhbSk6CisgICAgICAgICogTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6anNQYWlyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZnVsZmlsbFByb21pc2VXaXRoSlNPTik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpUeXBlSW5zcGVjdG9yOjpkZWNsdHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUeXBlSW5zcGVjdG9yOjp0ZXN0SXNWZWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6VHlwZUluc3BlY3Rvcjo6dGVzdElzUmVmT3JSZWZQdHIpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVk
V3JhcHBlcjo6cmVqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OnJlc29sdmUp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZTo6cmVqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZVdpdGhWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEZWZlcnJlZFdyYXBwZXI6OnJlamVjdFdpdGhWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpj
YWxsUHJvbWlzZUZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0
b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6aW1wb3J0S2V5
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjp1bndyYXBLZXkpOgorICAgICAg
ICAqIGNzcy9Gb250RmFjZS5oOgorICAgICAgICAqIGNzcy9Gb250RmFjZVNldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6UGVuZGluZ1Byb21pc2U6OlBlbmRpbmdQcm9taXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0Ojpsb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRGYWNlU2V0OjpyZWdpc3RlclJlYWR5KToKKyAgICAgICAgKiBjc3MvRm9udEZhY2VT
ZXQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKwogMjAxNi0wNS0xMSAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEtpbGwgTm9kZTo6YW5j
ZXN0b3JFbGVtZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNw
cAppbmRleCAxMGExMWYxNTVhYjcyNDE2MDZlY2VmYzI0ZTM5OTc0ZDc0YjYyOGI0Li40NmFjNDVk
OGI4ZTBkZTc4YTZiMzZlNGUwZTkyZDY0NDVjYTcyMzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIFJlZlB0cjxCbG9iPiBibG9iRnJvbUFycmF5QnVmZmVyKEFycmF5
QnVmZmVyKiwgY29uc3QgU3RyaW5nJik7CitzdGF0aWMgUmVmPEJsb2I+IGJsb2JGcm9tQXJyYXlC
dWZmZXIoQXJyYXlCdWZmZXIqLCBjb25zdCBTdHJpbmcmKTsKIAogRmV0Y2hCb2R5OjpGZXRjaEJv
ZHkoUmVmPEJsb2I+JiYgYmxvYikKICAgICA6IG1fdHlwZShUeXBlOjpCbG9iKQpAQCAtMTQxLDcg
KzE0MSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lKEZldGNoQm9keU93bmVyJiBvd25lciwg
Q29uc3VtZXI6OlR5cGUgdHlwZSwgRGVmZXJyZWRXcmFwCiAgICAgfQogCiAgICAgLy8gRklYTUU6
IFN1cHBvcnQgb3RoZXIgdHlwZXMuCi0gICAgcHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9uQ29kZT4o
MCk7CisgICAgcHJvbWlzZS5yZWplY3QoMCk7CiB9CiAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkp
CkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVUZXh0KENvbnN1bWVy
OjpUeXBlIHR5cGUsIERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBTdHJpbmcgY29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5
cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX21pbWVUeXBlKSk7Ci0gICAgcHJvbWlz
ZS5yZXNvbHZlPFJlZlB0cjxCbG9iPj4oQmxvYjo6Y3JlYXRlKGV4dHJhY3RGcm9tVGV4dCgpLCBj
b250ZW50VHlwZSkpOworICAgIHByb21pc2UucmVzb2x2ZShCbG9iOjpjcmVhdGUoZXh0cmFjdEZy
b21UZXh0KCksIGNvbnRlbnRUeXBlKSk7CiB9CiAKIEZldGNoTG9hZGVyOjpUeXBlIEZldGNoQm9k
eTo6bG9hZGluZ1R5cGUoQ29uc3VtZXI6OlR5cGUgdHlwZSkKQEAgLTIzNiw3ICsyMzYsNyBAQCBW
ZWN0b3I8dWludDhfdD4gRmV0Y2hCb2R5OjpleHRyYWN0RnJvbVRleHQoKSBjb25zdAogICAgIHJl
dHVybiB2YWx1ZTsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8QmxvYj4gYmxvYkZyb21BcnJh
eUJ1ZmZlcihBcnJheUJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQor
c3RhdGljIGlubGluZSBSZWY8QmxvYj4gYmxvYkZyb21BcnJheUJ1ZmZlcihBcnJheUJ1ZmZlciog
YnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PigpLCBjb250ZW50VHlw
ZSk7CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmZ1bGZpbGxUZXh0UHJvbWlz
ZShGZXRjaEJvZHk6OkNvbnN1bWVyOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYKIHZvaWQgRmV0
Y2hCb2R5Ojpsb2FkaW5nRmFpbGVkKCkKIHsKICAgICBBU1NFUlQobV9jb25zdW1lcik7Ci0gICAg
bV9jb25zdW1lci0+cHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9uQ29kZT4oMCk7CisgICAgbV9jb25z
dW1lci0+cHJvbWlzZS5yZWplY3QoMCk7CiAgICAgbV9jb25zdW1lciA9IE51bGxvcHQ7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IDA0NjAxMGEwZmI5
MmIyNjY4NTBlZWE1MjZiZWUwZWQ3NmNlMTg5MjIuLjU2ZjNkZmRjODU3MWMzMTUxMTJmMjY2NWM2
ZmZkYTk3NWE5ZGYzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
aApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBibG9iKEZldGNoQm9keU93bmVy
JiwgRGVmZXJyZWRXcmFwcGVyJiYpOwogICAgIHZvaWQganNvbihGZXRjaEJvZHlPd25lciYsIERl
ZmVycmVkV3JhcHBlciYmKTsKICAgICB2b2lkIHRleHQoRmV0Y2hCb2R5T3duZXImLCBEZWZlcnJl
ZFdyYXBwZXImJik7Ci0gICAgdm9pZCBmb3JtRGF0YShGZXRjaEJvZHlPd25lciYsIERlZmVycmVk
V3JhcHBlciYmIHByb21pc2UpIHsgcHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9uQ29kZT4oMCk7IH0K
KyAgICB2b2lkIGZvcm1EYXRhKEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYgcHJv
bWlzZSkgeyBwcm9taXNlLnJlamVjdCgwKTsgfQogCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQog
ICAgIHZvaWQgY29uc3VtZUFzU3RyZWFtKEZldGNoQm9keU93bmVyJiwgRmV0Y2hSZXNwb25zZVNv
dXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVy
LmNwcAppbmRleCBjYWY0YWM4YjVjY2FkMTQzNWNlOGZhNjczNjE0MjU0YmEyZTQ4YzY5Li45NmMw
NGMzZDYxZDEyOWFhZjIwNTQxNzhlYjY3NjkxNzJmZGU1NGNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2
b2lkIEZldGNoQm9keU93bmVyOjphcnJheUJ1ZmZlcihEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNl
KQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChpc0Rpc3R1cmJlZCgpKSB7Ci0gICAg
ICAgIHByb21pc2UucmVqZWN0PEV4Y2VwdGlvbkNvZGU+KFR5cGVFcnJvcik7CisgICAgICAgIHBy
b21pc2UucmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9p
c0Rpc3R1cmJlZCA9IHRydWU7CkBAIC04NSwxMSArODUsMTEgQEAgdm9pZCBGZXRjaEJvZHlPd25l
cjo6YXJyYXlCdWZmZXIoRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKIHZvaWQgRmV0Y2hCb2R5
T3duZXI6OmJsb2IoRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKIHsKICAgICBpZiAobV9ib2R5
LmlzRW1wdHkoKSkgewotICAgICAgICBwcm9taXNlLnJlc29sdmU8UmVmUHRyPEJsb2I+PihCbG9i
OjpjcmVhdGUoKSk7CisgICAgICAgIHByb21pc2UucmVzb2x2ZShCbG9iOjpjcmVhdGUoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGlzRGlzdHVyYmVkKCkpIHsKLSAgICAgICAg
cHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9uQ29kZT4oVHlwZUVycm9yKTsKKyAgICAgICAgcHJvbWlz
ZS5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2lzRGlz
dHVyYmVkID0gdHJ1ZTsKQEAgLTk5LDExICs5OSwxMSBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpi
bG9iKERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiB2b2lkIEZldGNoQm9keU93bmVyOjpmb3Jt
RGF0YShEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIGlmIChtX2JvZHkuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0PEV4Y2VwdGlvbkNvZGU+KDApOworICAgICAg
ICBwcm9taXNlLnJlamVjdCgwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoaXNE
aXN0dXJiZWQoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdDxFeGNlcHRpb25Db2RlPihUeXBl
RXJyb3IpOworICAgICAgICBwcm9taXNlLnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIG1faXNEaXN0dXJiZWQgPSB0cnVlOwpAQCAtMTEzLDExICsxMTMsMTEg
QEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6Zm9ybURhdGEoRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlz
ZSkKIHZvaWQgRmV0Y2hCb2R5T3duZXI6Ompzb24oRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkK
IHsKICAgICBpZiAobV9ib2R5LmlzRW1wdHkoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdDxF
eGNlcHRpb25Db2RlPihTWU5UQVhfRVJSKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoU1lOVEFY
X0VSUik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGlzRGlzdHVyYmVkKCkpIHsK
LSAgICAgICAgcHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9uQ29kZT4oVHlwZUVycm9yKTsKKyAgICAg
ICAgcHJvbWlzZS5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBtX2lzRGlzdHVyYmVkID0gdHJ1ZTsKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIEZldGNoQm9k
eU93bmVyOjp0ZXh0KERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgaWYgKGlzRGlzdHVyYmVkKCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3Q8
RXhjZXB0aW9uQ29kZT4oVHlwZUVycm9yKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoVHlwZUVy
cm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2lzRGlzdHVyYmVkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4
IDM1YmUyNDM5NGZlNGFjMjVlMDE3ZDAyNTVmZWI0NWNkODYzOGE4NDAuLjdjOWI5ZTYwOGE1YThj
YjhiNzA3NmRlNmM5ODVkNTZkNGNlMTlhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgRmV0Y2hS
ZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc291CiAgICAgbV9yZXNwb25zZS5tX3Jlc3BvbnNlID0gcmVzb3VyY2VSZXNwb25z
ZTsKICAgICBtX3Jlc3BvbnNlLm1faGVhZGVycy0+ZmlsdGVyQW5kRmlsbChyZXNvdXJjZVJlc3Bv
bnNlLmh0dHBIZWFkZXJGaWVsZHMoKSwgRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVzcG9uc2UpOwog
Ci0gICAgc3RkOjpleGNoYW5nZShtX3Byb21pc2UsIE51bGxvcHQpLT5yZXNvbHZlKCZtX3Jlc3Bv
bnNlKTsKKyAgICBzdGQ6OmV4Y2hhbmdlKG1fcHJvbWlzZSwgTnVsbG9wdCktPnJlc29sdmUobV9y
ZXNwb25zZSk7CiB9CiAKIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDdlNDhiMDNiMDQzNTljN2NmMDA0NjA4
NzhmNzRkOWI5NmI2NGYzODcuLmVkMjQ3MTEzYjE5ZmRiNjAyOGQ0NmQwZTQ5OGMxNmMyY2E3NGEz
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+IGVy
cm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgUmVmUHRyPEZldGNoUmVz
cG9uc2U+IHJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmLCBp
bnQsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHVzaW5nIEZldGNoUHJvbWlzZSA9IERPTVByb21p
c2U8UmVmUHRyPEZldGNoUmVzcG9uc2U+LCBFeGNlcHRpb25Db2RlPjsKKyAgICB1c2luZyBGZXRj
aFByb21pc2UgPSBET01Qcm9taXNlPEZldGNoUmVzcG9uc2U+OwogICAgIHN0YXRpYyB2b2lkIGZl
dGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGZXRjaFJlcXVlc3QmLCBjb25zdCBEaWN0aW9u
YXJ5JiwgRmV0Y2hQcm9taXNlJiYpOwogICAgIHN0YXRpYyB2b2lkIGZldGNoKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBEaWN0aW9uYXJ5JiwgRmV0Y2hQcm9t
aXNlJiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMuaAppbmRleCA3MDIyNzJkZGI2NDQxMDAzNDVjN2NhODJhMWJhOWZmYzIxMTIzNTc3
Li5jNDhkODYwODZmZjQ5NDdjNDM2MTVhMDUwMmI1MzhjOTE5MTljZDY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmgKQEAgLTU4LDgg
KzU4LDggQEAgcHVibGljOgogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CiAKLSAg
ICB0eXBlZGVmIERPTVByb21pc2U8UmVmUHRyPE1lZGlhU3RyZWFtPiwgUmVmUHRyPE5hdmlnYXRv
clVzZXJNZWRpYUVycm9yPj4gUHJvbWlzZTsKLSAgICB0eXBlZGVmIERPTVByb21pc2U8TWVkaWFE
ZXZpY2VJbmZvVmVjdG9yLCBFeGNlcHRpb25Db2RlPiBFbnVtZXJhdGVEZXZpY2VzUHJvbWlzZTsK
KyAgICB0eXBlZGVmIERPTVByb21pc2U8TWVkaWFTdHJlYW0+IFByb21pc2U7CisgICAgdHlwZWRl
ZiBET01Qcm9taXNlPE1lZGlhRGV2aWNlSW5mb1ZlY3Rvcj4gRW51bWVyYXRlRGV2aWNlc1Byb21p
c2U7CiAKICAgICB2b2lkIGdldFVzZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiwgUHJvbWlzZSYm
LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgdm9pZCBlbnVtZXJhdGVEZXZpY2VzKEVudW1l
cmF0ZURldmljZXNQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5oCmluZGV4IDUwZGU5MzBkMjQ1MDk5MjNkN2QyMjEzZjFiNzZjZjdkZTA1N2VlZWYuLmJm
ZmY0NGU4NzI5MTFkMDc3YzEzYmVjMTZkNzZiZTUxMjI2Y2M2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaApAQCAtNTMsOSArNTMsOSBAQCBjbGFzcyBSVENTdGF0c1Jlc3BvbnNlOwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKIAogbmFtZXNwYWNlIFBlZXJDb25uZWN0aW9uIHsKLXR5cGVk
ZWYgRE9NUHJvbWlzZTxSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiwgUmVmUHRyPERPTUVy
cm9yPj4gU2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZTsKLXR5cGVkZWYgRE9NUHJvbWlzZTxzdGQ6
Om51bGxwdHJfdCwgUmVmUHRyPERPTUVycm9yPj4gVm9pZFByb21pc2U7Ci10eXBlZGVmIERPTVBy
b21pc2U8UmVmUHRyPFJUQ1N0YXRzUmVzcG9uc2U+LCBSZWZQdHI8RE9NRXJyb3I+PiBTdGF0c1By
b21pc2U7Cit0eXBlZGVmIERPTVByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBTZXNzaW9u
RGVzY3JpcHRpb25Qcm9taXNlOwordHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0cl90PiBW
b2lkUHJvbWlzZTsKK3R5cGVkZWYgRE9NUHJvbWlzZTxSVENTdGF0c1Jlc3BvbnNlPiBTdGF0c1By
b21pc2U7CiB9CiAKIGNsYXNzIFBlZXJDb25uZWN0aW9uQmFja2VuZENsaWVudCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0
LmNwcAppbmRleCA3M2IxNDliZTJhZjg4NmQ0ZGM1OThiNjdiMmFlNDU3Njg0YzUyMGZhLi45Y2U0
MTk4NGI4MWQwM2VjZjZmZGU5ZTBlYjYxYTYxZWViYjUwNzczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAg
LTE3Miw3ICsxNzIsNyBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmRpZENyZWF0ZVN0cmVhbShQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gcHJpdmF0ZVN0cgogICAgICAgICByZXR1cm47
CiAKICAgICAvLyA0IC0gQ3JlYXRlIHRoZSBNZWRpYVN0cmVhbSBhbmQgcGFzcyBpdCB0byB0aGUg
c3VjY2VzcyBjYWxsYmFjay4KLSAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9IE1lZGlh
U3RyZWFtOjpjcmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcHJpdmF0ZVN0cmVhbSk7
CisgICAgUmVmPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKCptX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIHByaXZhdGVTdHJlYW0pOwogICAgIGlmIChtX2F1ZGlvQ29u
c3RyYWludHMpIHsKICAgICAgICAgZm9yIChhdXRvJiB0cmFjayA6IHN0cmVhbS0+Z2V0QXVkaW9U
cmFja3MoKSkgewogICAgICAgICAgICAgdHJhY2stPmFwcGx5Q29uc3RyYWludHMoKm1fYXVkaW9D
b25zdHJhaW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW1Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVNvdXJjZS5oCmluZGV4IDBmZDE2ZjNlNjFmYTBiMWM4ODBlNzJiYWQyOTI1
N2MwZDVkYjU5MTAuLjA4N2I0NWM0Y2M3MWIyNDk3ZWFmOGMzYjcwOGNjYjlmZTliNjY2OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVNvdXJjZS5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFJlYWRhYmxlU3RyZWFtU291cmNlIDog
cHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1Tb3VyY2U+IHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5SZWFkYWJsZVN0cmVhbVNvdXJjZSgpIHsgfQogCi0gICAgdHlwZWRlZiBET01Qcm9t
aXNlPHN0ZDo6bnVsbHB0cl90LCBFeGNlcHRpb25Db2RlPiBQcm9taXNlOworICAgIHR5cGVkZWYg
RE9NUHJvbWlzZTxzdGQ6Om51bGxwdHJfdD4gUHJvbWlzZTsKIAogICAgIHZvaWQgc3RhcnQoUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyJiYsIFByb21pc2UmJik7CiAgICAgdm9pZCBjYW5jZWwoSlND
OjpKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oCmluZGV4IDg1OGY2NDdhZmY3N2RiYjI1Mzg2NmZlMDkyMmE1NWQ0ZGJhZmM1ZTcuLjE2
YjJiM2M0NGQ4MjMxZTNmYzY0YWExNWEwYWU2MmRiMGIzNzg0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMTA5LDcgKzEwOSw3IEBA
IHB1YmxpYzoKICAgICB1c2luZyBBY3RpdmVET01PYmplY3Q6OnN1c3BlbmQ7CiAgICAgdXNpbmcg
QWN0aXZlRE9NT2JqZWN0OjpyZXN1bWU7CiAKLSAgICB0eXBlZGVmIERPTVByb21pc2U8c3RkOjpu
dWxscHRyX3QsIEV4Y2VwdGlvbkNvZGU+IFByb21pc2U7CisgICAgdHlwZWRlZiBET01Qcm9taXNl
PHN0ZDo6bnVsbHB0cl90PiBQcm9taXNlOwogCiAgICAgdm9pZCBzdXNwZW5kKFByb21pc2UmJik7
CiAgICAgdm9pZCByZXN1bWUoUHJvbWlzZSYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmgKaW5kZXggMDZjZTQ3NDc2NTkzOWI2MjgzMzkwM2Y5NjA1ZWI0YWExNmE1
MDMxMi4uMWZlNjk1YWQ5NDEyM2JhNDI0NGVlOWQyNThiMDM5OGY2MDYyY2Y5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTI1MSw3ICsyNTEsOCBAQCBK
U0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVuY2UoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUs
IHVuc2lnbmVkJiBsZW5ndGgpOwogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBK
U0RPTUdsb2JhbE9iamVjdCosIEpTQzo6QXJyYXlCdWZmZXIqKTsKIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBKU0M6OkFycmF5QnVmZmVyVmll
dyopOwogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpBcnJheUJ1ZmZlclZpZXcqKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IEpTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWZQdHI8
VD4pOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZlB0cjxUPiYpOwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCos
IFJlZlB0cjxUPiYmKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPFQ+KTsKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqLCBjb25zdCBWZWN0b3I8VD4mKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBjb25z
dCBWZWN0b3I8UmVmUHRyPFQ+PiYpOwpAQCAtMjY3LDcgKzI2OCw3IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gSlNDOjpKU1ZhbHVlIGpzQXJyYXkoSlNDOjpF
eGVjU3RhdGUqCiBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTVmFsdWUganNBcnJheShKU0M6OkV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0Pik7CiAK
IEpTQzo6SlNWYWx1ZSBqc1BhaXIoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCos
IEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlKTsKLXRlbXBsYXRlPHR5cGVuYW1lIEZpcnN0VHlw
ZSwgdHlwZW5hbWUgU2Vjb25kVHlwZT4gSlNDOjpKU1ZhbHVlIGpzUGFpcihKU0M6OkV4ZWNTdGF0
ZSYsIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgRmlyc3RUeXBlJiwgY29uc3QgU2Vjb25kVHlw
ZSYpOwordGVtcGxhdGU8dHlwZW5hbWUgRmlyc3RUeXBlLCB0eXBlbmFtZSBTZWNvbmRUeXBlPiBK
U0M6OkpTVmFsdWUganNQYWlyKEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3QqLCBG
aXJzdFR5cGUmLCBTZWNvbmRUeXBlJik7CiAKIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4g
dG9BcnJheUJ1ZmZlclZpZXcoSlNDOjpKU1ZhbHVlKTsKIFJlZlB0cjxKU0M6OkludDhBcnJheT4g
dG9JbnQ4QXJyYXkoSlNDOjpKU1ZhbHVlKTsKQEAgLTU0MCw3ICs1NDEsMTIgQEAgaW5saW5lIEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QKICAgICByZXR1cm4gdmlldy0+d3JhcChleGVjLCBnbG9iYWxPYmplY3Qp
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0
cjxUPiBwdHIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZlB0cjxUPiYgcHRyKQoreworICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHRy
LmdldCgpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWZQdHI8VD4mJiBwdHIpCiB7CiAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0
LCBwdHIuZ2V0KCkpOwogfQpAQCAtNjQ0LDcgKzY1MCw3IEBAIGlubGluZSBKU0M6OkpTVmFsdWUg
anNQYWlyKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjCiAgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KCZzdGF0ZSwgMCwgZ2xvYmFsT2JqZWN0LCBh
cmdzKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRmlyc3RUeXBlLCB0eXBlbmFtZSBTZWNvbmRU
eXBlPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIGpzUGFpcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEZpcnN0VHlwZSYgdmFsdWUxLCBj
b25zdCBTZWNvbmRUeXBlJiB2YWx1ZTIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdFR5cGUsIHR5
cGVuYW1lIFNlY29uZFR5cGU+IGlubGluZSBKU0M6OkpTVmFsdWUganNQYWlyKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRmlyc3RUeXBlJiB2
YWx1ZTEsIFNlY29uZFR5cGUmIHZhbHVlMikKIHsKICAgICByZXR1cm4ganNQYWlyKHN0YXRlLCBn
bG9iYWxPYmplY3QsIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QsIHZhbHVlMSksIHRvSlMoJnN0
YXRlLCBnbG9iYWxPYmplY3QsIHZhbHVlMikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NUHJvbWlzZS5jcHAKaW5kZXggODk2Zjg0OTQzNWIyYTQ5MDJkYTdmMmQxN2VmN2Nm
Njc0M2E2MWYxMS4uYTIxNGI4N2JjNjk4ZTk1MDA4NDgyODNmMGY3N2RiNjAzNTJhMjQ2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCkBAIC04OCw3ICs4
OCw3IEBAIHZvaWQgZnVsZmlsbFByb21pc2VXaXRoSlNPTihEZWZlcnJlZFdyYXBwZXImIHByb21p
c2UsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICBKU0M6OkpTVmFsdWUgdmFsdWUgPSBwYXJz
ZUFzSlNPTihwcm9taXNlLmdsb2JhbE9iamVjdCgpLmdsb2JhbEV4ZWMoKSwgZGF0YSk7CiAgICAg
aWYgKCF2YWx1ZSkKLSAgICAgICAgcHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9uQ29kZT4oU1lOVEFY
X0VSUik7CisgICAgICAgIHByb21pc2UucmVqZWN0KFNZTlRBWF9FUlIpOwogICAgIGVsc2UKICAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Qcm9taXNlLmgKaW5kZXggZmI1MWI3MjI3ZjFmMTI5MWEwNjczOTVkOTBjYjJkMDg2
NTc2MWMxNy4uYzEzY2E1ZmI5NzA1ZTg5ZTMxMDRjYjM2MTVjOWVmMDk1YTY4ZDZjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKQEAgLTMzLDE1ICszMyw4OSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPgor
c3RydWN0IFR5cGVJbnNwZWN0b3IgeworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdGF0aWMgY29uc3RleHByIGF1dG8gdGVzdElzVmVjdG9yKGludCkgLT4gZGVjbHR5cGUoc3Rk
OjpkZWNsdmFsPFQ+KCkuc2hyaW5rVG9GaXQoKSwgYm9vbCgpKSB7IHJldHVybiB0cnVlOyB9Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0ZXhwciBib29sIHRlc3RJc1ZlY3Rv
ciguLi4pIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0
aWMgY29uc3RleHByIGF1dG8gdGVzdElzUmVmT3JSZWZQdHIoaW50KSAtPiBkZWNsdHlwZShzdGQ6
OmRlY2x2YWw8VD4oKS5sZWFrUmVmKCksIGJvb2woKSkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0ZXN0SXNSZWZPclJlZlB0
ciguLi4pIHsgcmV0dXJuIGZhbHNlOyB9CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNSZWZPclJlZlB0ciA9IHRlc3RJc1JlZk9yUmVmUHRyPERPTUNsYXNzPigwKTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNQYXNzQnlWYWx1ZVR5cGUgPSBzdGQ6OmlzX3BvaW50
ZXI8RE9NQ2xhc3M+Ojp2YWx1ZQorICAgICAgICB8fCBzdGQ6OmlzX3NhbWU8RE9NQ2xhc3MsIHN0
ZDo6bnVsbHB0cl90Pjo6dmFsdWUKKyAgICAgICAgfHwgc3RkOjppc19zYW1lPERPTUNsYXNzLCBK
U0M6OkpTVmFsdWU+Ojp2YWx1ZQorICAgICAgICB8fCBzdGQ6OmlzX3NhbWU8RE9NQ2xhc3MsIGJv
b2w+Ojp2YWx1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNQYXNzQnlDb25zdFJlZlR5
cGUgPSB0ZXN0SXNWZWN0b3I8RE9NQ2xhc3M+KDApIAorICAgICAgICB8fCBzdGQ6OmlzX3NhbWU8
RE9NQ2xhc3MsIFN0cmluZz46OnZhbHVlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xh
c3MsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+CitzdHJ1Y3QgUHJvbWlzZVJlc3VsdEluc3BlY3Rv
ciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeVZhbHVlID0gZmFs
c2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeVJlZiA9IHRydWU7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIHBhc3NCeVVSZWYgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgcGFzc0J5Q29uc3RSZWYgPSBmYWxzZTsKKworICAgIHR5cGVkZWYgRE9NQ2xhc3Mm
IFR5cGU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcz4KK3N0cnVjdCBQcm9taXNl
UmVzdWx0SW5zcGVjdG9yPERPTUNsYXNzLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxUeXBlSW5z
cGVjdG9yPERPTUNsYXNzPjo6aXNQYXNzQnlWYWx1ZVR5cGU+Ojp0eXBlPiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeVZhbHVlID0gdHJ1ZTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgcGFzc0J5UmVmID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIHBhc3NCeVVSZWYgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5
Q29uc3RSZWYgPSBmYWxzZTsKKworICAgIHR5cGVkZWYgRE9NQ2xhc3MgVHlwZTsKK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPgorc3RydWN0IFByb21pc2VSZXN1bHRJbnNwZWN0b3I8
RE9NQ2xhc3MsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFR5cGVJbnNwZWN0b3I8RE9NQ2xhc3M+
Ojppc1Bhc3NCeUNvbnN0UmVmVHlwZT46OnR5cGU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgcGFzc0J5VmFsdWUgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgcGFzc0J5UmVmID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeVVS
ZWYgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5Q29uc3RSZWYgPSB0
cnVlOworCisgICAgdHlwZWRlZiBjb25zdCBET01DbGFzcyYgVHlwZTsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIERPTUNsYXNzPgorc3RydWN0IFByb21pc2VSZXN1bHRJbnNwZWN0b3I8RE9NQ2xh
c3MsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFR5cGVJbnNwZWN0b3I8RE9NQ2xhc3M+Ojppc1Jl
Zk9yUmVmUHRyPjo6dHlwZT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBwYXNzQnlWYWx1
ZSA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBwYXNzQnlSZWYgPSBmYWxzZTsK
KyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5VVJlZiA9IHRydWU7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIHBhc3NCeUNvbnN0UmVmID0gZmFsc2U7Cit9OworCiBjbGFzcyBEZWZl
cnJlZFdyYXBwZXIgewogcHVibGljOgogICAgIERlZmVycmVkV3JhcHBlcihKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCopOwogCi0gICAg
dGVtcGxhdGU8Y2xhc3MgUmVzb2x2ZVJlc3VsdFR5cGU+Ci0gICAgdm9pZCByZXNvbHZlKGNvbnN0
IFJlc29sdmVSZXN1bHRUeXBlJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgUmVzb2x2ZVJlc3VsdFR5
cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1bHRJbnNwZWN0b3I8UmVzb2x2
ZVJlc3VsdFR5cGU+OjpwYXNzQnlWYWx1ZSwgdm9pZD46OnR5cGUKKyAgICByZXNvbHZlKFJlc29s
dmVSZXN1bHRUeXBlIHJlc3VsdCkgeyByZXNvbHZlV2l0aFZhbHVlKHJlc3VsdCk7IH0KKyAgICB0
ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
UHJvbWlzZVJlc3VsdEluc3BlY3RvcjxSZXNvbHZlUmVzdWx0VHlwZT46OnBhc3NCeVJlZiwgdm9p
ZD46OnR5cGUKKyAgICByZXNvbHZlKFJlc29sdmVSZXN1bHRUeXBlJiByZXN1bHQpIHsgcmVzb2x2
ZVdpdGhWYWx1ZShyZXN1bHQpOyB9CisgICAgdGVtcGxhdGU8Y2xhc3MgUmVzb2x2ZVJlc3VsdFR5
cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1bHRJbnNwZWN0b3I8UmVzb2x2
ZVJlc3VsdFR5cGU+OjpwYXNzQnlVUmVmLCB2b2lkPjo6dHlwZQorICAgIHJlc29sdmUoUmVzb2x2
ZVJlc3VsdFR5cGUmJiByZXN1bHQpIHsgcmVzb2x2ZVdpdGhWYWx1ZShzdGQ6OmZvcndhcmQ8UmVz
b2x2ZVJlc3VsdFR5cGU+KHJlc3VsdCkpOyB9CisgICAgdGVtcGxhdGU8Y2xhc3MgUmVzb2x2ZVJl
c3VsdFR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1bHRJbnNwZWN0b3I8
UmVzb2x2ZVJlc3VsdFR5cGU+OjpwYXNzQnlDb25zdFJlZiwgdm9pZD46OnR5cGUKKyAgICByZXNv
bHZlKGNvbnN0IFJlc29sdmVSZXN1bHRUeXBlJiByZXN1bHQpIHsgcmVzb2x2ZVdpdGhWYWx1ZShy
ZXN1bHQpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBSZWplY3RSZXN1bHRUeXBlPiB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxQcm9taXNlUmVzdWx0SW5zcGVjdG9yPFJlamVjdFJlc3VsdFR5cGU+
OjpwYXNzQnlWYWx1ZSwgdm9pZD46OnR5cGUKKyAgICByZWplY3QoUmVqZWN0UmVzdWx0VHlwZSBy
ZXN1bHQpIHsgcmVqZWN0V2l0aFZhbHVlKHJlc3VsdCk7IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBS
ZWplY3RSZXN1bHRUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxQcm9taXNlUmVzdWx0SW5z
cGVjdG9yPFJlamVjdFJlc3VsdFR5cGU+OjpwYXNzQnlSZWYsIHZvaWQ+Ojp0eXBlCisgICAgcmVq
ZWN0KFJlamVjdFJlc3VsdFR5cGUmIHJlc3VsdCkgeyByZWplY3RXaXRoVmFsdWUocmVzdWx0KTsg
fQorICAgIHRlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPFByb21pc2VSZXN1bHRJbnNwZWN0b3I8UmVqZWN0UmVzdWx0VHlwZT46OnBhc3NCeVVS
ZWYsIHZvaWQ+Ojp0eXBlCisgICAgcmVqZWN0KFJlamVjdFJlc3VsdFR5cGUmJiByZXN1bHQpIHsg
cmVqZWN0V2l0aFZhbHVlKHN0ZDo6Zm9yd2FyZDxSZWplY3RSZXN1bHRUeXBlPihyZXN1bHQpKTsg
fQorICAgIHRlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPFByb21pc2VSZXN1bHRJbnNwZWN0b3I8UmVqZWN0UmVzdWx0VHlwZT46OnBhc3NCeUNv
bnN0UmVmLCB2b2lkPjo6dHlwZQorICAgIHJlamVjdChjb25zdCBSZWplY3RSZXN1bHRUeXBlJiBy
ZXN1bHQpIHsgcmVqZWN0V2l0aFZhbHVlKHJlc3VsdCk7IH0KIAotICAgIHRlbXBsYXRlPGNsYXNz
IFJlamVjdFJlc3VsdFR5cGU+Ci0gICAgdm9pZCByZWplY3QoY29uc3QgUmVqZWN0UmVzdWx0VHlw
ZSYpOworICAgIHZvaWQgcmVqZWN0KEV4Y2VwdGlvbkNvZGUpOwogCiAgICAgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0OwogICAgIEpTQzo6SlNWYWx1ZSBwcm9taXNlKCkg
Y29uc3Q7CkBAIC01MSw2ICsxMjUsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzb2x2ZShKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSByZXNvbHV0aW9uKSB7IGNhbGxGdW5jdGlv
bihzdGF0ZSwgbV9kZWZlcnJlZC0+cmVzb2x2ZSgpLCByZXNvbHV0aW9uKTsgfQogICAgIHZvaWQg
cmVqZWN0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHJlc29sdXRpb24pIHsg
Y2FsbEZ1bmN0aW9uKHN0YXRlLCBtX2RlZmVycmVkLT5yZWplY3QoKSwgcmVzb2x1dGlvbik7IH0K
IAorICAgIHRlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+IHZvaWQgcmVqZWN0V2l0aFZh
bHVlKFJlamVjdFJlc3VsdFR5cGUmJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgUmVzb2x2ZVJlc3Vs
dFR5cGU+IHZvaWQgcmVzb2x2ZVdpdGhWYWx1ZShSZXNvbHZlUmVzdWx0VHlwZSYmKTsKKwogICAg
IEpTQzo6U3Ryb25nPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKICAgICBKU0M6
OlN0cm9uZzxKU0M6OkpTUHJvbWlzZURlZmVycmVkPiBtX2RlZmVycmVkOwogfTsKQEAgLTcxLDcg
KzE0OCw3IEBAIGlubGluZSBKU0M6OkpTVmFsdWUgY2FsbFByb21pc2VGdW5jdGlvbihKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6RW5jb2RlZEpTVmFsCiAgICAgcmV0dXJuIHByb21pc2VEZWZl
cnJlZC5wcm9taXNlKCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUg
RXJyb3I+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFsdWU+CiBjbGFzcyBET01Qcm9taXNlIHsKIHB1
YmxpYzoKICAgICBET01Qcm9taXNlKERlZmVycmVkV3JhcHBlciYmIHdyYXBwZXIpIDogbV93cmFw
cGVyKFdURk1vdmUod3JhcHBlcikpIHsgfQpAQCAtODAsMTA1ICsxNTcsMTA1IEBAIHB1YmxpYzoK
ICAgICBET01Qcm9taXNlKGNvbnN0IERPTVByb21pc2UmKSA9IGRlZmF1bHQ7CiAgICAgRE9NUHJv
bWlzZSYgb3BlcmF0b3I9KERPTVByb21pc2UgY29uc3QmKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lk
IHJlc29sdmUoY29uc3QgVmFsdWUmIHZhbHVlKSB7IG1fd3JhcHBlci5yZXNvbHZlPFZhbHVlPih2
YWx1ZSk7IH0KLSAgICB2b2lkIHJlamVjdChjb25zdCBFcnJvciYgZXJyb3IpIHsgbV93cmFwcGVy
LnJlamVjdDxFcnJvcj4oZXJyb3IpOyB9CisgICAgdm9pZCByZXNvbHZlKHR5cGVuYW1lIFByb21p
c2VSZXN1bHRJbnNwZWN0b3I8VmFsdWU+OjpUeXBlIHZhbHVlKSB7IG1fd3JhcHBlci5yZXNvbHZl
KHZhbHVlKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXJyb3JUeXBlPiB2b2lkIHJlamVj
dChFcnJvclR5cGUmJiBlcnJvcikgeyBtX3dyYXBwZXIucmVqZWN0KHN0ZDo6Zm9yd2FyZDxFcnJv
clR5cGU+KGVycm9yKSk7IH0KIAogcHJpdmF0ZToKICAgICBEZWZlcnJlZFdyYXBwZXIgbV93cmFw
cGVyOwogfTsKIAotdGVtcGxhdGU8Y2xhc3MgUmVzb2x2ZVJlc3VsdFR5cGU+Ci1pbmxpbmUgdm9p
ZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmUoY29uc3QgUmVzb2x2ZVJlc3VsdFR5cGUmIHJlc3Vs
dCkKK2lubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0KEV4Y2VwdGlvbkNvZGUgZWMp
CiB7CiAgICAgQVNTRVJUKG1fZGVmZXJyZWQpOwogICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7
CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
OwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICByZXNvbHZlKCpleGVj
LCB0b0pTKGV4ZWMsIG1fZ2xvYmFsT2JqZWN0LmdldCgpLCByZXN1bHQpKTsKKyAgICByZWplY3Qo
KmV4ZWMsIGNyZWF0ZURPTUV4Y2VwdGlvbihleGVjLCBlYykpOwogfQogCi10ZW1wbGF0ZTxjbGFz
cyBSZWplY3RSZXN1bHRUeXBlPgotaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3Qo
Y29uc3QgUmVqZWN0UmVzdWx0VHlwZSYgcmVzdWx0KQordGVtcGxhdGU8Y2xhc3MgUmVzb2x2ZVJl
c3VsdFR5cGU+CitpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmVXaXRoVmFsdWUo
UmVzb2x2ZVJlc3VsdFR5cGUmJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1fZGVmZXJyZWQpOwog
ICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBt
X2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tl
cihleGVjKTsKLSAgICByZWplY3QoKmV4ZWMsIHRvSlMoZXhlYywgbV9nbG9iYWxPYmplY3QuZ2V0
KCksIHJlc3VsdCkpOworICAgIHJlc29sdmUoKmV4ZWMsIHRvSlMoZXhlYywgbV9nbG9iYWxPYmpl
Y3QuZ2V0KCksIHN0ZDo6Zm9yd2FyZDxSZXNvbHZlUmVzdWx0VHlwZT4ocmVzdWx0KSkpOwogfQog
Ci10ZW1wbGF0ZTw+Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlamVjdChjb25zdCBz
dGQ6Om51bGxwdHJfdCYpCit0ZW1wbGF0ZTxjbGFzcyBSZWplY3RSZXN1bHRUeXBlPgoraW5saW5l
IHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3RXaXRoVmFsdWUoUmVqZWN0UmVzdWx0VHlwZSYm
IHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9kZWZlcnJlZCk7CiAgICAgQVNTRVJUKG1fZ2xvYmFs
T2JqZWN0KTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAgIHJlamVj
dCgqZXhlYywgSlNDOjpqc051bGwoKSk7CisgICAgcmVqZWN0KCpleGVjLCB0b0pTKGV4ZWMsIG1f
Z2xvYmFsT2JqZWN0LmdldCgpLCBzdGQ6OmZvcndhcmQ8UmVqZWN0UmVzdWx0VHlwZT4ocmVzdWx0
KSkpOwogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlamVj
dChjb25zdCBKU0M6OkpTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVy
OjpyZXNvbHZlKGJvb2wgcmVzdWx0KQogewogICAgIEFTU0VSVChtX2RlZmVycmVkKTsKICAgICBB
U1NFUlQobV9nbG9iYWxPYmplY3QpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV9nbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhl
Yyk7Ci0gICAgcmVqZWN0KCpleGVjLCB2YWx1ZSk7CisgICAgcmVzb2x2ZSgqZXhlYywgSlNDOjpq
c0Jvb2xlYW4ocmVzdWx0KSk7CiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSB2b2lkIERlZmVycmVk
V3JhcHBlcjo6cmVqZWN0PEV4Y2VwdGlvbkNvZGU+KGNvbnN0IEV4Y2VwdGlvbkNvZGUmIGVjKQor
aW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlKEpTQzo6SlNWYWx1ZSB2YWx1ZSkK
IHsKICAgICBBU1NFUlQobV9kZWZlcnJlZCk7CiAgICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsK
ICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7
CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAgIHJlamVjdCgqZXhlYywg
Y3JlYXRlRE9NRXhjZXB0aW9uKGV4ZWMsIGVjKSk7CisgICAgcmVzb2x2ZSgqZXhlYywgdmFsdWUp
OwogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmU8
U3RyaW5nPihjb25zdCBTdHJpbmcmIHJlc3VsdCkKK2lubGluZSB2b2lkIERlZmVycmVkV3JhcHBl
cjo6cmVqZWN0KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9kZWZlcnJlZCk7
CiAgICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9
IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9j
a2VyKGV4ZWMpOwotICAgIHJlc29sdmUoKmV4ZWMsIGpzU3RyaW5nKGV4ZWMsIHJlc3VsdCkpOwor
ICAgIHJlamVjdCgqZXhlYywgdmFsdWUpOwogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgdm9pZCBE
ZWZlcnJlZFdyYXBwZXI6OnJlc29sdmU8Ym9vbD4oY29uc3QgYm9vbCYgcmVzdWx0KQoraW5saW5l
IHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlKHN0ZDo6bnVsbHB0cl90KQogewogICAgIEFT
U0VSVChtX2RlZmVycmVkKTsKICAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOwogICAgIEpTQzo6
RXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgcmVzb2x2ZSgqZXhlYywgSlNDOjpqc0Jv
b2xlYW4ocmVzdWx0KSk7CisgICAgcmVzb2x2ZSgqZXhlYywgSlNDOjpqc1VuZGVmaW5lZCgpKTsK
IH0KIAogdGVtcGxhdGU8PgotaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlPEpT
Qzo6SlNWYWx1ZT4oY29uc3QgSlNDOjpKU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIERlZmVy
cmVkV3JhcHBlcjo6cmVqZWN0KHN0ZDo6bnVsbHB0cl90KQogewogICAgIEFTU0VSVChtX2RlZmVy
cmVkKTsKICAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBl
eGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIoZXhlYyk7Ci0gICAgcmVzb2x2ZSgqZXhlYywgdmFsdWUpOworICAgIHJlamVjdCgq
ZXhlYywgSlNDOjpqc051bGwoKSk7CiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSB2b2lkIERlZmVy
cmVkV3JhcHBlcjo6cmVzb2x2ZShjb25zdCBzdGQ6Om51bGxwdHJfdCYpCitpbmxpbmUgdm9pZCBE
ZWZlcnJlZFdyYXBwZXI6OnJlc29sdmUoY29uc3QgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgQVNT
RVJUKG1fZGVmZXJyZWQpOwogICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CiAgICAgSlNDOjpF
eGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIEpTQzo6
SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICByZXNvbHZlKCpleGVjLCBKU0M6OmpzVW5k
ZWZpbmVkKCkpOworICAgIHJlc29sdmUoKmV4ZWMsIGpzU3RyaW5nKGV4ZWMsIHJlc3VsdCkpOwog
fQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlamVjdDxTdHJp
bmc+KGNvbnN0IFN0cmluZyYgcmVzdWx0KQoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpy
ZWplY3QoY29uc3QgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1fZGVmZXJyZWQpOwog
ICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKaW5kZXggNGZhNjc4MjRlNzVlZGI1Y2Iz
ZTZiYTg4MDFhNmE3NGFjY2Y4OGRhYS4uOGM2ZDg4YTU4NGE5NmYzYjdhMDU4MmY0ZTIyZWVjODFl
MjFhMWIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVD
cnlwdG9DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxl
Q3J5cHRvQ3VzdG9tLmNwcApAQCAtNTUwLDcgKzU1MCw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlw
dG86OmltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlKQogICAgIEpTUHJvbWlzZURlZmVycmVkKiBw
cm9taXNlRGVmZXJyZWQgPSBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFs
T2JqZWN0KCkpOwogICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVyKCZzdGF0ZSwgZ2xvYmFsT2Jq
ZWN0KCksIHByb21pc2VEZWZlcnJlZCk7CiAgICAgYXV0byBzdWNjZXNzQ2FsbGJhY2sgPSBbd3Jh
cHBlcl0oQ3J5cHRvS2V5JiByZXN1bHQpIG11dGFibGUgewotICAgICAgICB3cmFwcGVyLnJlc29s
dmUoJnJlc3VsdCk7CisgICAgICAgIHdyYXBwZXIucmVzb2x2ZShyZXN1bHQpOwogICAgIH07CiAg
ICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxlIHsKICAgICAgICAg
d3JhcHBlci5yZWplY3QobnVsbHB0cik7CkBAIC03ODUsNyArNzg1LDcgQEAgSlNWYWx1ZSBKU1N1
YnRsZUNyeXB0bzo6dW53cmFwS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiAKICAgICBhdXRvIGRlY3J5
cHRTdWNjZXNzQ2FsbGJhY2sgPSBbZG9tR2xvYmFsT2JqZWN0LCBrZXlGb3JtYXQsIHVud3JhcHBl
ZEtleUFsZ29yaXRobVB0ciwgdW53cmFwcGVkS2V5QWxnb3JpdGhtUGFyYW1ldGVyc1B0ciwgZXh0
cmFjdGFibGUsIGtleVVzYWdlcywgd3JhcHBlcl0oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1
bHQpIG11dGFibGUgewogICAgICAgICBhdXRvIGltcG9ydFN1Y2Nlc3NDYWxsYmFjayA9IFt3cmFw
cGVyXShDcnlwdG9LZXkmIGtleSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB3cmFwcGVyLnJlc29s
dmUoJmtleSk7CisgICAgICAgICAgICB3cmFwcGVyLnJlc29sdmUoa2V5KTsKICAgICAgICAgfTsK
ICAgICAgICAgYXV0byBpbXBvcnRGYWlsdXJlQ2FsbGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIHdyYXBwZXIucmVqZWN0KG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2Uu
aAppbmRleCA4OTcxZWYxZDI5N2EyMmZiZWNiY2UzZTBlYWJmMDM5YTQ3NmUxMzYzLi5lMjQ5MzRk
Nzc0MmQ1MGRlMGQyNjY2N2ZhN2E2YWZhY2I2MzlkMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaApA
QCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBMb2FkU3RhdHVzIHsgVW5s
b2FkZWQsIExvYWRpbmcsIExvYWRlZCwgRXJyb3IgfTsKICAgICBMb2FkU3RhdHVzIHN0YXR1cygp
IGNvbnN0OwogCi0gICAgdHlwZWRlZiBET01Qcm9taXNlPEZvbnRGYWNlJiwgRXhjZXB0aW9uQ29k
ZT4gUHJvbWlzZTsKKyAgICB0eXBlZGVmIERPTVByb21pc2U8Rm9udEZhY2UmPiBQcm9taXNlOwog
ICAgIHZvaWQgcmVnaXN0ZXJMb2FkZWQoUHJvbWlzZSYmKTsKIAogICAgIHZvaWQgbG9hZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKaW5kZXggN2U3NDQ5ODNkZjgxZTdhYmQwZGMxMjMx
YWU1NjIwNDQyMWY5OGMyNi4uMTg5ZTViZGZhZmQwMTdhYWE4NmZkOGQzNzdhOTA1Y2ZjZWM3ODM1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCkBAIC04Myw3ICs4Myw3IEBAIFJlZlB0
cjxGb250RmFjZT4gRm9udEZhY2VTZXQ6Okl0ZXJhdG9yOjpuZXh0KCkKICAgICByZXR1cm4gbV90
YXJnZXQtPmJhY2tpbmcoKVttX2luZGV4KytdLndyYXBwZXIoKTsKIH0KIAotRm9udEZhY2VTZXQ6
OlBlbmRpbmdQcm9taXNlOjpQZW5kaW5nUHJvbWlzZShQcm9taXNlJiYgcHJvbWlzZSkKK0ZvbnRG
YWNlU2V0OjpQZW5kaW5nUHJvbWlzZTo6UGVuZGluZ1Byb21pc2UoTG9hZFByb21pc2UmJiBwcm9t
aXNlKQogICAgIDogcHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKQogewogfQpAQCAtMTIzLDcgKzEy
Myw3IEBAIHZvaWQgRm9udEZhY2VTZXQ6OmNsZWFyKCkKICAgICAgICAgbV9iYWNraW5nLT5yZW1v
dmUobV9iYWNraW5nLmdldCgpWzBdKTsKIH0KIAotdm9pZCBGb250RmFjZVNldDo6bG9hZChjb25z
dCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRGVmZXJyZWRXcmFwcGVyJiYgcHJv
bWlzZSkKK3ZvaWQgRm9udEZhY2VTZXQ6OmxvYWQoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBT
dHJpbmcmIHRleHQsIExvYWRQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBhdXRvIG1hdGNoaW5nRmFjZXMgPSBtX2JhY2tpbmctPm1hdGNoaW5nRmFj
ZXMoZm9udCwgdGV4dCwgZWMpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgRm9udEZhY2VTZXQ6
OmxvYWQoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQsIERlZmVycmVkV3Jh
cHBlciYmCiAKICAgICBmb3IgKGF1dG8mIGZhY2UgOiBtYXRjaGluZ0ZhY2VzKSB7CiAgICAgICAg
IGlmIChmYWNlLmdldCgpLnN0YXR1cygpID09IENTU0ZvbnRGYWNlOjpTdGF0dXM6OkZhaWx1cmUp
IHsKLSAgICAgICAgICAgIHByb21pc2UucmVqZWN0KERPTUNvcmVFeGNlcHRpb246OmNyZWF0ZShF
eGNlcHRpb25Db2RlRGVzY3JpcHRpb24oTkVUV09SS19FUlIpKS5wdHIoKSk7CisgICAgICAgICAg
ICBwcm9taXNlLnJlamVjdChET01Db3JlRXhjZXB0aW9uOjpjcmVhdGUoRXhjZXB0aW9uQ29kZURl
c2NyaXB0aW9uKE5FVFdPUktfRVJSKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgfQpAQCAtMTY3LDcgKzE2Nyw3IEBAIGJvb2wgRm9udEZhY2VTZXQ6OmNoZWNrKGNvbnN0
IFN0cmluZyYgZmFtaWx5LCBjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmCiAgICAg
cmV0dXJuIG1fYmFja2luZy0+Y2hlY2soZmFtaWx5LCB0ZXh0LCBlYyk7CiB9CiAKLXZvaWQgRm9u
dEZhY2VTZXQ6OnJlZ2lzdGVyUmVhZHkoUHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEZvbnRGYWNl
U2V0OjpyZWdpc3RlclJlYWR5KFJlYWR5UHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgQVNTRVJU
KCFtX3Byb21pc2UpOwogICAgIGlmIChtX2lzUmVhZHkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0
LmgKaW5kZXggZjA0NzBlOWQ2MjhiYmU3YzAyOGE5MTBiZjcwZjA5YmZhYzZmOGUwMS4uODlhZDA4
ZDA5YmNmMjdkOTc4MTQ5NjNkOGM3ZjlkZjYzMzM4NzkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
U2V0LmgKQEAgLTQ3LDE0ICs0NywxNSBAQCBwdWJsaWM6CiAgICAgYm9vbCByZW1vdmUoRm9udEZh
Y2UmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiBm
b250LCBjb25zdCBTdHJpbmcmIHRleHQsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpOworICAg
IHR5cGVkZWYgRE9NUHJvbWlzZTxWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4+IExvYWRQcm9taXNl
OworICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwg
TG9hZFByb21pc2UmJik7CiAgICAgYm9vbCBjaGVjayhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0
IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgZW51bSBjbGFzcyBMb2FkU3Rh
dHVzIHsgTG9hZGluZywgTG9hZGVkIH07CiAgICAgTG9hZFN0YXR1cyBzdGF0dXMoKSBjb25zdDsK
IAotICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxGb250RmFjZVNldCYsIERPTUNvcmVFeGNlcHRpb24m
PiBQcm9taXNlOwotICAgIHZvaWQgcmVnaXN0ZXJSZWFkeShQcm9taXNlJiYpOworICAgIHR5cGVk
ZWYgRE9NUHJvbWlzZTxGb250RmFjZVNldCY+IFJlYWR5UHJvbWlzZTsKKyAgICB2b2lkIHJlZ2lz
dGVyUmVhZHkoUmVhZHlQcm9taXNlJiYpOwogCiAgICAgQ1NTRm9udEZhY2VTZXQmIGJhY2tpbmco
KSB7IHJldHVybiBtX2JhY2tpbmc7IH0KIApAQCAtNzQsMTkgKzc1LDE4IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBzdHJ1Y3QgUGVuZGluZ1Byb21pc2UgOiBSZWZDb3VudGVkPFBlbmRpbmdQ
cm9taXNlPiB7Ci0gICAgICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxWZWN0b3I8UmVmUHRyPEZvbnRG
YWNlPj4mLCBET01Db3JlRXhjZXB0aW9uJj4gUHJvbWlzZTsKLSAgICAgICAgc3RhdGljIFJlZjxQ
ZW5kaW5nUHJvbWlzZT4gY3JlYXRlKFByb21pc2UmJiBwcm9taXNlKQorICAgICAgICBzdGF0aWMg
UmVmPFBlbmRpbmdQcm9taXNlPiBjcmVhdGUoTG9hZFByb21pc2UmJiBwcm9taXNlKQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQZW5kaW5nUHJvbWlzZShXVEZN
b3ZlKHByb21pc2UpKSk7CiAgICAgICAgIH0KICAgICAgICAgflBlbmRpbmdQcm9taXNlKCk7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBQZW5kaW5nUHJvbWlzZShQcm9taXNlJiYpOworICAgICAg
ICBQZW5kaW5nUHJvbWlzZShMb2FkUHJvbWlzZSYmKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAg
VmVjdG9yPFJlZlB0cjxGb250RmFjZT4+IGZhY2VzOwotICAgICAgICBQcm9taXNlIHByb21pc2U7
CisgICAgICAgIExvYWRQcm9taXNlIHByb21pc2U7CiAgICAgICAgIGJvb2wgaGFzUmVhY2hlZFRl
cm1pbmFsU3RhdGUgeyBmYWxzZSB9OwogICAgIH07CiAKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2
YXRlOgogCiAgICAgUmVmPENTU0ZvbnRGYWNlU2V0PiBtX2JhY2tpbmc7CiAgICAgSGFzaE1hcDxS
ZWZQdHI8Q1NTRm9udEZhY2U+LCBWZWN0b3I8UmVmPFBlbmRpbmdQcm9taXNlPj4+IG1fcGVuZGlu
Z1Byb21pc2VzOwotICAgIE9wdGlvbmFsPFByb21pc2U+IG1fcHJvbWlzZTsKKyAgICBPcHRpb25h
bDxSZWFkeVByb21pc2U+IG1fcHJvbWlzZTsKICAgICBib29sIG1faXNSZWFkeSB7IGZhbHNlIH07
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGQ4YmMxNTVk
MTcyZjAzZDZhODMyZDQ2MjA4ODhmNzQ3MWFjYThjYmYuLjAxODRiZTA4NTZhOGNkY2U4N2NjNjY5
ZmRjNWZhNzgyMzQzMzhmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CkBAIC0yMTIsNyArMjEyLDcgQEAgcHVibGljOgogICAgIGJvb2wgbG9vcCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0TG9vcChib29sIGIpOwogCi0gICAgdHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVs
bHB0cl90LCBET01FcnJvciY+IFBsYXlQcm9taXNlOworICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxz
dGQ6Om51bGxwdHJfdD4gUGxheVByb21pc2U7CiAgICAgdm9pZCBwbGF5KFBsYXlQcm9taXNlJiYp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF5KCkgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278824</attachid>
            <date>2016-05-13 02:00:31 -0700</date>
            <delta_ts>2016-05-13 03:23:00 -0700</delta_ts>
            <desc>Patch for landing - updating Ref/RefPtr detection</desc>
            <filename>bug-157307-20160513110121.patch</filename>
            <type>text/plain</type>
            <size>36880</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMwYmZmMjc0MjI3NTE4Nzk2MTBmZGRl
OTU2ZWEyZmFiZGRmNDdlY2QuLjRlYTU0NzI2OTQzYWRmODU4MGM5ZTQ4M2RiMmRlZDNlNWM0OTQ1
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDUtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBET01Qcm9taXNlIHNob3VsZCBvbmx5
IHJlc3RyaWN0IHRoZSByZXNvbHV0aW9uIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzMwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1JlZi5oOiBBZGRpbmcgc3RhdGljIGNvbnN0ZXhw
ciB0byBlYXNlIGRldGVjdGlvbiBvZiBSZWYgZm9yIHRlbXBsYXRlcy4KKyAgICAgICAgKiB3dGYv
UmVmUHRyLmg6IERpdHRvLgorCiAyMDE2LTA1LTEyICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBVc2UgU2VjVGFzayBTUEkgdG8gcmV0cmlldmUgY29kZSBzaWdu
aW5nIGlkZW50aWZpZXIgZm9yIHVzZXIgZGlyZWN0b3J5IHN1ZmZpeApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQw
YzYwZThmYmU1MjhmMDUwNjZlNTJhOGEyOWY0OWM5YjM0NDU2ZWEuLjBhNGI0MjEzZGIwYjcyNmVh
OTRjODg4MGFiNzI2NWI2OTNjYWI0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NCBAQAorMjAx
Ni0wNS0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisg
ICAgICAgIERPTVByb21pc2Ugc2hvdWxkIG9ubHkgcmVzdHJpY3QgdGhlIHJlc29sdXRpb24gdHlw
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MzA3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVtb3Zpbmcg
ZnJvbSBET01Qcm9taXNlIHRoZSByZWplY3Rpb24gdGVtcGxhdGUgcGFyYW1ldGVyLgorICAgICAg
ICBTdXBwb3J0ZWQgcmVqZWN0aW9uIHR5cGVzIGFyZSBpbnRlZ2VycyAoRXhjZXB0aW9uIGNvZGVz
KSBhbmQgRE9NIG9iamVjdHMgKERPTUVycm9yIHR5cGljYWxseSkuCisKKyAgICAgICAgVXBkYXRl
ZCB0b0pTIGFuZCBEZWZlcnJlZFdyYXBwZXIgdG8gYWNjZXB0IFJlZjw+JiYgYW5kIFJlZlB0cjw+
JiYuCisgICAgICAgIFByZXZpb3VzbHkgUmVmPD4mJiB3ZXJlIG5vdCBhY2NlcHRlZCBhbmQgb25s
eSAiY29uc3QgUmVmUHRyPD4mIiB3YXMgYWNjZXB0ZWQuCisgICAgICAgIFRoaXMgaW4gdHVybiBj
cmVhdGVkIGFuIHVuZWNlc3NhcnkgY2h1cm4gY291bnQgd2hlbiBjYWxsaW5nIHRvSlMuCisKKyAg
ICAgICAgQ2hhbmdlcyBhbHNvIGFsbG93IGluIG1vc3QgY2FzZXMgdG8gcmVtb3ZlIHRoZSBuZWVk
IGZvciBleHBsaWN0bHkgZGVjbGFyaW5nIHRoZQorICAgICAgICByZWplY3Rpb24vcmVzb2x1dGlv
biB0eXBlLgorCisgICAgICAgIE1pbm9yIHJlZmFjdG9yaW5nIG9mIEZvbnRGYWNlU2V0IHByb21p
c2UgaGFuZGxpbmcgdG8gdXNlIERPTVByb21pc2UgaW4gbGlldSBvZiBEZWZlcnJlZFdyYXBwZXIu
CisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKyAgICAgICAgQ2hhbmdlcyBz
aG91bGQgbm90IGJlIHZpc2libGUgZnJvbSB1c2VyIHNjcmlwdHMuCisKKyAgICAgICAgKiBNb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNv
bnN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lVGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpibG9iRnJvbUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keTo6bG9hZGluZ0ZhaWxlZCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Zm9ybURhdGEpOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5T3duZXI6OmFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93
bmVyOjpibG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpmb3JtRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6anNvbik6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlPd25lcjo6dGV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpkaWRDcmVhdGVTdHJlYW0pOgorICAgICAg
ICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzUGFpcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmZ1bGZpbGxQcm9taXNlV2l0aEpTT04pOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NUHJvbWlzZS5oOgorICAgICAgICAoV2ViQ29yZTo6VHlwZUluc3BlY3Rvcjo6ZGVj
bHR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VHlwZUluc3BlY3Rvcjo6dGVzdElzVmVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlR5cGVJbnNwZWN0b3I6OnRlc3RJc1JlZk9yUmVmUHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9t
aXNlOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OnJlamVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmVXaXRoVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVmZXJyZWRXcmFwcGVyOjpyZWplY3RXaXRoVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y2FsbFByb21pc2VGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlw
dG86OmltcG9ydEtleSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6dW53cmFw
S2V5KToKKyAgICAgICAgKiBjc3MvRm9udEZhY2UuaDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2VT
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OlBlbmRpbmdQcm9taXNlOjpQ
ZW5kaW5nUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6bG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6cmVnaXN0ZXJSZWFkeSk6CisgICAgICAgICog
Y3NzL0ZvbnRGYWNlU2V0Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisK
IDIwMTYtMDUtMTIgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW2Nzcy1ncmlkXSBTaG93IGF1dG8tcmVwZWF0IGxpbmUgbmFtZXMgaW4gQ29tcHV0
ZWRTdHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmLmggYi9Tb3VyY2UvV1RGL3d0
Zi9SZWYuaAppbmRleCA1MGE1ZTc2MTczMmRmYzI3MmYxY2JiOGRjOTViZGQ4ZjU0N2FlYWU4Li40
YTcyODhlNGUyZWZkOTk4Yjc5Yjg0YWRlOWZhMzY5YTA4NTc5ZDFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9SZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWYuaApAQCAtNDYsNiArNDYs
OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBSZWY8VD4gYWRvcHRSZWYoVCYpOwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjbGFzcyBSZWYgewogcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc1JlZiA9IHRydWU7CisKICAgICB+UmVmKCkKICAgICB7CiAjaWYgQVNBTl9FTkFCTEVE
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1Jl
ZlB0ci5oCmluZGV4IGNhNDQ2ZjRmNWRmYzM2MDFiYjUxNzUxNTUxOWJiZDNkNzNhZGRmNmIuLmVk
NTFlZTZlNzQyOWFmZGE4ZWUzOTA1M2VhNWFlNmJjMWVlMDA2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1JlZlB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCkBAIC0zOSw2
ICszOSw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFQgVmFsdWVUeXBlOwogICAgIHR5cGVkZWYg
VmFsdWVUeXBlKiBQdHJUeXBlOwogCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUmVmUHRy
ID0gdHJ1ZTsKKwogICAgIEFMV0FZU19JTkxJTkUgUmVmUHRyKCkgOiBtX3B0cihudWxscHRyKSB7
IH0KICAgICBBTFdBWVNfSU5MSU5FIFJlZlB0cihUKiBwdHIpIDogbV9wdHIocHRyKSB7IHJlZklm
Tm90TnVsbChwdHIpOyB9CiAgICAgQUxXQVlTX0lOTElORSBSZWZQdHIoY29uc3QgUmVmUHRyJiBv
KSA6IG1fcHRyKG8ubV9wdHIpIHsgcmVmSWZOb3ROdWxsKG1fcHRyKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDEwYTExZjE1NWFiNzI0MTYwNmVj
ZWZjMjRlMzk5NzRkNzRiNjI4YjQuLjQ2YWM0NWQ4YjhlMGRlNzhhNmIzNmU0ZTBlOTJkNjQ0NWNh
NzIzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgUmVmUHRyPEJs
b2I+IGJsb2JGcm9tQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXIqLCBjb25zdCBTdHJpbmcmKTsKK3N0
YXRpYyBSZWY8QmxvYj4gYmxvYkZyb21BcnJheUJ1ZmZlcihBcnJheUJ1ZmZlciosIGNvbnN0IFN0
cmluZyYpOwogCiBGZXRjaEJvZHk6OkZldGNoQm9keShSZWY8QmxvYj4mJiBibG9iKQogICAgIDog
bV90eXBlKFR5cGU6OkJsb2IpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNv
bnN1bWUoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBDb25zdW1lcjo6VHlwZSB0eXBlLCBEZWZlcnJl
ZFdyYXAKICAgICB9CiAKICAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0eXBlcy4KLSAgICBw
cm9taXNlLnJlamVjdDxFeGNlcHRpb25Db2RlPigwKTsKKyAgICBwcm9taXNlLnJlamVjdCgwKTsK
IH0KIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIEZl
dGNoQm9keTo6Y29uc3VtZVRleHQoQ29uc3VtZXI6OlR5cGUgdHlwZSwgRGVmZXJyZWRXcmFwcGVy
JiBwcm9taXNlKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFN0cmluZyBjb250ZW50VHlw
ZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKG1fbWltZVR5cGUpKTsKLSAgICBwcm9taXNlLnJlc29sdmU8UmVmUHRyPEJsb2I+PihCbG9i
OjpjcmVhdGUoZXh0cmFjdEZyb21UZXh0KCksIGNvbnRlbnRUeXBlKSk7CisgICAgcHJvbWlzZS5y
ZXNvbHZlKEJsb2I6OmNyZWF0ZShleHRyYWN0RnJvbVRleHQoKSwgY29udGVudFR5cGUpKTsKIH0K
IAogRmV0Y2hMb2FkZXI6OlR5cGUgRmV0Y2hCb2R5Ojpsb2FkaW5nVHlwZShDb25zdW1lcjo6VHlw
ZSB0eXBlKQpAQCAtMjM2LDcgKzIzNiw3IEBAIFZlY3Rvcjx1aW50OF90PiBGZXRjaEJvZHk6OmV4
dHJhY3RGcm9tVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1zdGF0aWMgaW5s
aW5lIFJlZlB0cjxCbG9iPiBibG9iRnJvbUFycmF5QnVmZmVyKEFycmF5QnVmZmVyKiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCitzdGF0aWMgaW5saW5lIFJlZjxCbG9iPiBibG9i
RnJvbUFycmF5QnVmZmVyKEFycmF5QnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUo
VmVjdG9yPHVpbnQ4X3Q+KCksIGNvbnRlbnRUeXBlKTsKQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lk
IEZldGNoQm9keTo6ZnVsZmlsbFRleHRQcm9taXNlKEZldGNoQm9keTo6Q29uc3VtZXI6OlR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJgogdm9pZCBGZXRjaEJvZHk6OmxvYWRpbmdGYWlsZWQoKQogewog
ICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKLSAgICBtX2NvbnN1bWVyLT5wcm9taXNlLnJlamVjdDxF
eGNlcHRpb25Db2RlPigwKTsKKyAgICBtX2NvbnN1bWVyLT5wcm9taXNlLnJlamVjdCgwKTsKICAg
ICBtX2NvbnN1bWVyID0gTnVsbG9wdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmgKaW5kZXggMDQ2MDEwYTBmYjkyYjI2Njg1MGVlYTUyNmJlZTBlZDc2Y2UxODky
Mi4uNTZmM2RmZGM4NTcxYzMxNTExMmYyNjY1YzZmZmRhOTc1YTlkZjM5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGJsb2IoRmV0Y2hCb2R5T3duZXImLCBEZWZlcnJlZFdyYXBwZXImJik7CiAgICAg
dm9pZCBqc29uKEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYpOwogICAgIHZvaWQg
dGV4dChGZXRjaEJvZHlPd25lciYsIERlZmVycmVkV3JhcHBlciYmKTsKLSAgICB2b2lkIGZvcm1E
YXRhKEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkgeyBwcm9taXNl
LnJlamVjdDxFeGNlcHRpb25Db2RlPigwKTsgfQorICAgIHZvaWQgZm9ybURhdGEoRmV0Y2hCb2R5
T3duZXImLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKSB7IHByb21pc2UucmVqZWN0KDApOyB9
CiAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCiAgICAgdm9pZCBjb25zdW1lQXNTdHJlYW0oRmV0
Y2hCb2R5T3duZXImLCBGZXRjaFJlc3BvbnNlU291cmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCmluZGV4IGNhZjRhYzhiNWNjYWQxNDM1
Y2U4ZmE2NzM2MTQyNTRiYTJlNDhjNjkuLjk2YzA0YzNkNjFkMTI5YWFmMjA1NDE3OGViNjc2OTE3
MmZkZTU0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmFycmF5QnVm
ZmVyKERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgaWYgKGlzRGlzdHVyYmVkKCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9u
Q29kZT4oVHlwZUVycm9yKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoVHlwZUVycm9yKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2lzRGlzdHVyYmVkID0gdHJ1ZTsKQEAgLTg1LDEx
ICs4NSwxMSBAQCB2b2lkIEZldGNoQm9keU93bmVyOjphcnJheUJ1ZmZlcihEZWZlcnJlZFdyYXBw
ZXImJiBwcm9taXNlKQogdm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYihEZWZlcnJlZFdyYXBwZXIm
JiBwcm9taXNlKQogewogICAgIGlmIChtX2JvZHkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHByb21p
c2UucmVzb2x2ZTxSZWZQdHI8QmxvYj4+KEJsb2I6OmNyZWF0ZSgpKTsKKyAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKEJsb2I6OmNyZWF0ZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBp
ZiAoaXNEaXN0dXJiZWQoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdDxFeGNlcHRpb25Db2Rl
PihUeXBlRXJyb3IpOworICAgICAgICBwcm9taXNlLnJlamVjdChUeXBlRXJyb3IpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIG1faXNEaXN0dXJiZWQgPSB0cnVlOwpAQCAtOTksMTEgKzk5
LDExIEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2IoRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlz
ZSkKIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmZvcm1EYXRhKERlZmVycmVkV3JhcHBlciYmIHByb21p
c2UpCiB7CiAgICAgaWYgKG1fYm9keS5pc0VtcHR5KCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWpl
Y3Q8RXhjZXB0aW9uQ29kZT4oMCk7CisgICAgICAgIHByb21pc2UucmVqZWN0KDApOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGlmIChpc0Rpc3R1cmJlZCgpKSB7Ci0gICAgICAgIHByb21p
c2UucmVqZWN0PEV4Y2VwdGlvbkNvZGU+KFR5cGVFcnJvcik7CisgICAgICAgIHByb21pc2UucmVq
ZWN0KFR5cGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9pc0Rpc3R1cmJl
ZCA9IHRydWU7CkBAIC0xMTMsMTEgKzExMywxMSBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpmb3Jt
RGF0YShEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogdm9pZCBGZXRjaEJvZHlPd25lcjo6anNv
bihEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIGlmIChtX2JvZHkuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0PEV4Y2VwdGlvbkNvZGU+KFNZTlRBWF9FUlIpOwor
ICAgICAgICBwcm9taXNlLnJlamVjdChTWU5UQVhfRVJSKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBpZiAoaXNEaXN0dXJiZWQoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdDxFeGNl
cHRpb25Db2RlPihUeXBlRXJyb3IpOworICAgICAgICBwcm9taXNlLnJlamVjdChUeXBlRXJyb3Ip
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1faXNEaXN0dXJiZWQgPSB0cnVlOwpAQCAt
MTMxLDcgKzEzMSw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OnRleHQoRGVmZXJyZWRXcmFwcGVy
JiYgcHJvbWlzZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoaXNEaXN0dXJiZWQo
KSkgewotICAgICAgICBwcm9taXNlLnJlamVjdDxFeGNlcHRpb25Db2RlPihUeXBlRXJyb3IpOwor
ICAgICAgICBwcm9taXNlLnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIG1faXNEaXN0dXJiZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggMzViZTI0Mzk0ZmU0YWMyNWUwMTdkMDI1NWZl
YjQ1Y2Q4NjM4YTg0MC4uN2M5YjllNjA4YTVhOGNiOGI3MDc2ZGU2Yzk4NWQ1NmQ0Y2UxOWE4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBA
IC0yMTMsNyArMjEzLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKICAgICBtX3Jlc3BvbnNl
Lm1fcmVzcG9uc2UgPSByZXNvdXJjZVJlc3BvbnNlOwogICAgIG1fcmVzcG9uc2UubV9oZWFkZXJz
LT5maWx0ZXJBbmRGaWxsKHJlc291cmNlUmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLCBGZXRj
aEhlYWRlcnM6Okd1YXJkOjpSZXNwb25zZSk7CiAKLSAgICBzdGQ6OmV4Y2hhbmdlKG1fcHJvbWlz
ZSwgTnVsbG9wdCktPnJlc29sdmUoJm1fcmVzcG9uc2UpOworICAgIHN0ZDo6ZXhjaGFuZ2UobV9w
cm9taXNlLCBOdWxsb3B0KS0+cmVzb2x2ZShtX3Jlc3BvbnNlKTsKIH0KIAogdm9pZCBGZXRjaFJl
c3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgK
aW5kZXggN2U0OGIwM2IwNDM1OWM3Y2YwMDQ2MDg3OGY3NGQ5Yjk2YjY0ZjM4Ny4uZWQyNDcxMTNi
MTlmZGI2MDI4ZDQ2ZDBlNDk4YzE2YzJjYTc0YTNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBSZWY8RmV0Y2hSZXNwb25zZT4gZXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
OwogICAgIHN0YXRpYyBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gcmVkaXJlY3QoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYsIGludCwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAg
dXNpbmcgRmV0Y2hQcm9taXNlID0gRE9NUHJvbWlzZTxSZWZQdHI8RmV0Y2hSZXNwb25zZT4sIEV4
Y2VwdGlvbkNvZGU+OworICAgIHVzaW5nIEZldGNoUHJvbWlzZSA9IERPTVByb21pc2U8RmV0Y2hS
ZXNwb25zZT47CiAgICAgc3RhdGljIHZvaWQgZmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IEZldGNoUmVxdWVzdCYsIGNvbnN0IERpY3Rpb25hcnkmLCBGZXRjaFByb21pc2UmJik7CiAgICAg
c3RhdGljIHZvaWQgZmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IERpY3Rpb25hcnkmLCBGZXRjaFByb21pc2UmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCmluZGV4IDcwMjI3MmRkYjY0
NDEwMDM0NWM3Y2E4MmExYmE5ZmZjMjExMjM1NzcuLmM0OGQ4NjA4NmZmNDk0N2M0MzYxNWEwNTAy
YjUzOGM5MTkxOWNkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMuaApAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAKICAgICBEb2N1
bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAotICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxSZWZQdHI8
TWVkaWFTdHJlYW0+LCBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3I+PiBQcm9taXNlOwot
ICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxNZWRpYURldmljZUluZm9WZWN0b3IsIEV4Y2VwdGlvbkNv
ZGU+IEVudW1lcmF0ZURldmljZXNQcm9taXNlOworICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxNZWRp
YVN0cmVhbT4gUHJvbWlzZTsKKyAgICB0eXBlZGVmIERPTVByb21pc2U8TWVkaWFEZXZpY2VJbmZv
VmVjdG9yPiBFbnVtZXJhdGVEZXZpY2VzUHJvbWlzZTsKIAogICAgIHZvaWQgZ2V0VXNlck1lZGlh
KGNvbnN0IERpY3Rpb25hcnkmLCBQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAg
ICB2b2lkIGVudW1lcmF0ZURldmljZXMoRW51bWVyYXRlRGV2aWNlc1Byb21pc2UmJiwgRXhjZXB0
aW9uQ29kZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKaW5kZXggNTBkZTkzMGQyNDUwOTky
M2Q3ZDIyMTNmMWI3NmNmN2RlMDU3ZWVlZi4uYmZmZjQ0ZTg3MjkxMWQwNzdjMTNiZWMxNmQ3NmJl
NTEyMjZjYzZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCkBAIC01Myw5ICs1Myw5IEBAIGNsYXNz
IFJUQ1N0YXRzUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBuYW1l
c3BhY2UgUGVlckNvbm5lY3Rpb24gewotdHlwZWRlZiBET01Qcm9taXNlPFJlZlB0cjxSVENTZXNz
aW9uRGVzY3JpcHRpb24+LCBSZWZQdHI8RE9NRXJyb3I+PiBTZXNzaW9uRGVzY3JpcHRpb25Qcm9t
aXNlOwotdHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0cl90LCBSZWZQdHI8RE9NRXJyb3I+
PiBWb2lkUHJvbWlzZTsKLXR5cGVkZWYgRE9NUHJvbWlzZTxSZWZQdHI8UlRDU3RhdHNSZXNwb25z
ZT4sIFJlZlB0cjxET01FcnJvcj4+IFN0YXRzUHJvbWlzZTsKK3R5cGVkZWYgRE9NUHJvbWlzZTxS
VENTZXNzaW9uRGVzY3JpcHRpb24+IFNlc3Npb25EZXNjcmlwdGlvblByb21pc2U7Cit0eXBlZGVm
IERPTVByb21pc2U8c3RkOjpudWxscHRyX3Q+IFZvaWRQcm9taXNlOwordHlwZWRlZiBET01Qcm9t
aXNlPFJUQ1N0YXRzUmVzcG9uc2U+IFN0YXRzUHJvbWlzZTsKIH0KIAogY2xhc3MgUGVlckNvbm5l
Y3Rpb25CYWNrZW5kQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IDczYjE0OWJlMmFmODg2ZDRk
YzU5OGI2N2IyYWU0NTc2ODRjNTIwZmEuLjljZTQxOTg0YjgxZDAzZWNmNmZkZTllMGViNjFhNjFl
ZWJiNTA3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgVXNlck1l
ZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRl
PiBwcml2YXRlU3RyCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIDQgLSBDcmVhdGUgdGhlIE1l
ZGlhU3RyZWFtIGFuZCBwYXNzIGl0IHRvIHRoZSBzdWNjZXNzIGNhbGxiYWNrLgotICAgIFJlZlB0
cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSgqbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBwcml2YXRlU3RyZWFtKTsKKyAgICBSZWY8TWVkaWFTdHJlYW0+IHN0cmVh
bSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcHJpdmF0
ZVN0cmVhbSk7CiAgICAgaWYgKG1fYXVkaW9Db25zdHJhaW50cykgewogICAgICAgICBmb3IgKGF1
dG8mIHRyYWNrIDogc3RyZWFtLT5nZXRBdWRpb1RyYWNrcygpKSB7CiAgICAgICAgICAgICB0cmFj
ay0+YXBwbHlDb25zdHJhaW50cygqbV9hdWRpb0NvbnN0cmFpbnRzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKaW5kZXgg
MGZkMTZmM2U2MWZhMGIxYzg4MGU3MmJhZDI5MjU3YzBkNWRiNTkxMC4uMDg3YjQ1YzRjYzcxYjI0
OTdlYWY4YzNiNzA4Y2NiOWZlOWI2NjY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
Y2xhc3MgUmVhZGFibGVTdHJlYW1Tb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFkYWJsZVN0
cmVhbVNvdXJjZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgflJlYWRhYmxlU3RyZWFtU291cmNl
KCkgeyB9CiAKLSAgICB0eXBlZGVmIERPTVByb21pc2U8c3RkOjpudWxscHRyX3QsIEV4Y2VwdGlv
bkNvZGU+IFByb21pc2U7CisgICAgdHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0cl90PiBQ
cm9taXNlOwogCiAgICAgdm9pZCBzdGFydChSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXImJiwgUHJv
bWlzZSYmKTsKICAgICB2b2lkIGNhbmNlbChKU0M6OkpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggODU4ZjY0N2FmZjc3ZGJi
MjUzODY2ZmUwOTIyYTU1ZDRkYmFmYzVlNy4uMTZiMmIzYzQ0ZDgyMzFlM2ZjNjRhYTE1YTBhZTYy
ZGIwYjM3ODQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFjdGl2ZURP
TU9iamVjdDo6c3VzcGVuZDsKICAgICB1c2luZyBBY3RpdmVET01PYmplY3Q6OnJlc3VtZTsKIAot
ICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxzdGQ6Om51bGxwdHJfdCwgRXhjZXB0aW9uQ29kZT4gUHJv
bWlzZTsKKyAgICB0eXBlZGVmIERPTVByb21pc2U8c3RkOjpudWxscHRyX3Q+IFByb21pc2U7CiAK
ICAgICB2b2lkIHN1c3BlbmQoUHJvbWlzZSYmKTsKICAgICB2b2lkIHJlc3VtZShQcm9taXNlJiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCBiODhmMDYw
ODg1NmZkMGY1NzMzZTNjYWE4ZDVjMzVlYjEzMzE1ZDQ0Li44NmI3NDM3YjJlZDhiYTc3NTY3OTg4
MGE2MmJlNjA0ZjgwMjJjZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaApAQCAtMjUxLDEwICsyNTEsMTAgQEAgSlNDOjpKU09iamVjdCogdG9KU1NlcXVlbmNl
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCB1bnNpZ25lZCYgbGVuZ3RoKTsKIEpTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBKU0M6OkFy
cmF5QnVmZmVyKik7CiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xv
YmFsT2JqZWN0KiwgSlNDOjpBcnJheUJ1ZmZlclZpZXcqKTsKIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6QXJyYXlCdWZmZXJWaWV3
Kik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgUmVmUHRyPFQ+Jik7Ci10ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgUmVmPFQ+Jik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBKU0M6OkpTVmFsdWUg
dG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29u
c3QgUmVmUHRyPFQ+Jik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBKU0M6OkpTVmFsdWUgdG9KU05l
d2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgUmVm
PFQ+Jik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmUHRyPFQ+Jik7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0
KiwgUmVmUHRyPFQ+JiYpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gSlNDOjpKU1ZhbHVlIHRvSlNO
ZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZlB0cjxU
PiYpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQo
SlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZlB0cjxUPiYmKTsKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqLCBjb25zdCBWZWN0b3I8VD4mKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBjb25z
dCBWZWN0b3I8UmVmUHRyPFQ+PiYpOwogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpOwpAQCAtMjY5LDcgKzI2OSw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gSlNDOjpKU1ZhbHVl
IGpzQXJyYXkoSlNDOjpFeGVjU3RhdGUqCiBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTVmFsdWUganNB
cnJheShKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxET01T
dHJpbmdMaXN0Pik7CiAKIEpTQzo6SlNWYWx1ZSBqc1BhaXIoSlNDOjpFeGVjU3RhdGUmLCBKU0RP
TUdsb2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlKTsKLXRlbXBsYXRlPHR5
cGVuYW1lIEZpcnN0VHlwZSwgdHlwZW5hbWUgU2Vjb25kVHlwZT4gSlNDOjpKU1ZhbHVlIGpzUGFp
cihKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgRmlyc3RUeXBlJiwg
Y29uc3QgU2Vjb25kVHlwZSYpOwordGVtcGxhdGU8dHlwZW5hbWUgRmlyc3RUeXBlLCB0eXBlbmFt
ZSBTZWNvbmRUeXBlPiBKU0M6OkpTVmFsdWUganNQYWlyKEpTQzo6RXhlY1N0YXRlJiwgSlNET01H
bG9iYWxPYmplY3QqLCBGaXJzdFR5cGUmLCBTZWNvbmRUeXBlJik7CiAKIFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyVmlldz4gdG9BcnJheUJ1ZmZlclZpZXcoSlNDOjpKU1ZhbHVlKTsKIFJlZlB0cjxK
U0M6OkludDhBcnJheT4gdG9JbnQ4QXJyYXkoSlNDOjpKU1ZhbHVlKTsKQEAgLTU0Miw3ICs1NDIs
MTIgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICByZXR1cm4gdmlldy0+d3JhcChleGVj
LCBnbG9iYWxPYmplY3QpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFJlZlB0cjxUPiYgcHRyKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VD4mIHB0cikKK3sKKyAgICByZXR1cm4gdG9KUyhl
eGVjLCBnbG9iYWxPYmplY3QsIHB0ci5nZXQoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPFQ+JiYgcHRyKQogewogICAgIHJldHVybiB0
b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHRyLmdldCgpKTsKIH0KQEAgLTU1MiwxNCArNTU3LDE0
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPCiAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFs
T2JqZWN0LCBjb25zdF9jYXN0PFQmPihwdHIuZ2V0KCkpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBSZWZQdHI8VD4m
IHB0cikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5
Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUmVmUHRyPFQ+JiYgcHRyKQogewogICAgIHJldHVybiB0b0pTTmV3bHlDcmVhdGVkKGV4
ZWMsIGdsb2JhbE9iamVjdCwgcHRyLmdldCgpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4g
aW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBSZWY8VD4mIHB0cikKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVm
UHRyPFQ+JiBwdHIpCiB7Ci0gICAgcmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQoZXhlYywgZ2xvYmFs
T2JqZWN0LCBjb25zdF9jYXN0PFQmPihwdHIuZ2V0KCkpKTsKKyAgICByZXR1cm4gdG9KU05ld2x5
Q3JlYXRlZChleGVjLCBnbG9iYWxPYmplY3QsIHB0ci5nZXQoKSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFQ+JiB2ZWN0b3Ip
CkBAIC02NTYsNyArNjYxLDcgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSBqc1BhaXIoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICByZXR1cm4g
Y29uc3RydWN0QXJyYXkoJnN0YXRlLCAwLCBnbG9iYWxPYmplY3QsIGFyZ3MpOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBGaXJzdFR5cGUsIHR5cGVuYW1lIFNlY29uZFR5cGU+IGlubGluZSBKU0M6
OkpTVmFsdWUganNQYWlyKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgRmlyc3RUeXBlJiB2YWx1ZTEsIGNvbnN0IFNlY29uZFR5cGUm
IHZhbHVlMikKK3RlbXBsYXRlPHR5cGVuYW1lIEZpcnN0VHlwZSwgdHlwZW5hbWUgU2Vjb25kVHlw
ZT4gaW5saW5lIEpTQzo6SlNWYWx1ZSBqc1BhaXIoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBGaXJzdFR5cGUmIHZhbHVlMSwgU2Vjb25kVHlw
ZSYgdmFsdWUyKQogewogICAgIHJldHVybiBqc1BhaXIoc3RhdGUsIGdsb2JhbE9iamVjdCwgdG9K
Uygmc3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUxKSwgdG9KUygmc3RhdGUsIGdsb2JhbE9iamVj
dCwgdmFsdWUyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVByb21pc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNl
LmNwcAppbmRleCA4OTZmODQ5NDM1YjJhNDkwMmRhN2YyZDE3ZWY3Y2Y2NzQzYTYxZjExLi5hMjE0
Yjg3YmM2OThlOTUwMDg0ODI4M2YwZjc3ZGI2MDM1MmEyNDY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBmdWxm
aWxsUHJvbWlzZVdpdGhKU09OKERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSwgY29uc3QgU3RyaW5n
JiBkYXRhKQogewogICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IHBhcnNlQXNKU09OKHByb21pc2Uu
Z2xvYmFsT2JqZWN0KCkuZ2xvYmFsRXhlYygpLCBkYXRhKTsKICAgICBpZiAoIXZhbHVlKQotICAg
ICAgICBwcm9taXNlLnJlamVjdDxFeGNlcHRpb25Db2RlPihTWU5UQVhfRVJSKTsKKyAgICAgICAg
cHJvbWlzZS5yZWplY3QoU1lOVEFYX0VSUik7CiAgICAgZWxzZQogICAgICAgICBwcm9taXNlLnJl
c29sdmUodmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2Uu
aAppbmRleCBmYjUxYjcyMjdmMWYxMjkxYTA2NzM5NWQ5MGNiMmQwODY1NzYxYzE3Li4yNDYzMThj
NzhhOWEyYjlmZmIwOTYwOTI4NDNlNDY3ODE5YzgxMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVByb21pc2UuaApAQCAtMzMsMTUgKzMzLDkwIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAordGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3M+CitzdHJ1Y3QgVHlwZUluc3Bl
Y3RvciB7Citwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdGV4
cHIgYXV0byB0ZXN0SXNWZWN0b3IoaW50KSAtPiBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5z
aHJpbmtUb0ZpdCgpLCBib29sKCkpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdGF0aWMgY29uc3RleHByIGJvb2wgdGVzdElzVmVjdG9yKC4uLikgeyByZXR1cm4g
ZmFsc2U7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdGV4cHIgYXV0
byB0ZXN0SXNSZWZPclJlZlB0cihpbnQpIC0+IGRlY2x0eXBlKFQ6OmlzUmVmKSB7IHJldHVybiB0
cnVlOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRl
c3RJc1JlZk9yUmVmUHRyKGludCkgLT4gZGVjbHR5cGUoVDo6aXNSZWZQdHIpIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3RleHByIGJvb2wgdGVz
dElzUmVmT3JSZWZQdHIoLi4uKSB7IHJldHVybiBmYWxzZTsgfQorCitwdWJsaWM6CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzUmVmT3JSZWZQdHIgPSB0ZXN0SXNSZWZPclJlZlB0cjxET01D
bGFzcz4oMCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUGFzc0J5VmFsdWVUeXBlID0g
c3RkOjppc19wb2ludGVyPERPTUNsYXNzPjo6dmFsdWUKKyAgICAgICAgfHwgc3RkOjppc19zYW1l
PERPTUNsYXNzLCBzdGQ6Om51bGxwdHJfdD46OnZhbHVlCisgICAgICAgIHx8IHN0ZDo6aXNfc2Ft
ZTxET01DbGFzcywgSlNDOjpKU1ZhbHVlPjo6dmFsdWUKKyAgICAgICAgfHwgc3RkOjppc19zYW1l
PERPTUNsYXNzLCBib29sPjo6dmFsdWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUGFz
c0J5Q29uc3RSZWZUeXBlID0gdGVzdElzVmVjdG9yPERPTUNsYXNzPigwKQorICAgICAgICB8fCBz
dGQ6OmlzX3NhbWU8RE9NQ2xhc3MsIFN0cmluZz46OnZhbHVlOworfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+CitzdHJ1Y3QgUHJvbWlzZVJl
c3VsdEluc3BlY3RvciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NC
eVZhbHVlID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeVJlZiA9IHRy
dWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeVVSZWYgPSBmYWxzZTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5Q29uc3RSZWYgPSBmYWxzZTsKKworICAgIHR5cGVk
ZWYgRE9NQ2xhc3MmIFR5cGU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcz4KK3N0
cnVjdCBQcm9taXNlUmVzdWx0SW5zcGVjdG9yPERPTUNsYXNzLCB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxUeXBlSW5zcGVjdG9yPERPTUNsYXNzPjo6aXNQYXNzQnlWYWx1ZVR5cGU+Ojp0eXBlPiB7
CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeVZhbHVlID0gdHJ1ZTsK
KyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5UmVmID0gZmFsc2U7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIHBhc3NCeVVSZWYgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgcGFzc0J5Q29uc3RSZWYgPSBmYWxzZTsKKworICAgIHR5cGVkZWYgRE9NQ2xhc3MgVHlw
ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPgorc3RydWN0IFByb21pc2VSZXN1
bHRJbnNwZWN0b3I8RE9NQ2xhc3MsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFR5cGVJbnNwZWN0
b3I8RE9NQ2xhc3M+Ojppc1Bhc3NCeUNvbnN0UmVmVHlwZT46OnR5cGU+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5VmFsdWUgPSBmYWxzZTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgcGFzc0J5UmVmID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIHBhc3NCeVVSZWYgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5
Q29uc3RSZWYgPSB0cnVlOworCisgICAgdHlwZWRlZiBjb25zdCBET01DbGFzcyYgVHlwZTsKK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPgorc3RydWN0IFByb21pc2VSZXN1bHRJbnNw
ZWN0b3I8RE9NQ2xhc3MsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFR5cGVJbnNwZWN0b3I8RE9N
Q2xhc3M+Ojppc1JlZk9yUmVmUHRyPjo6dHlwZT4geworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBwYXNzQnlWYWx1ZSA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBwYXNzQnlS
ZWYgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5VVJlZiA9IHRydWU7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeUNvbnN0UmVmID0gZmFsc2U7Cit9Owor
CiBjbGFzcyBEZWZlcnJlZFdyYXBwZXIgewogcHVibGljOgogICAgIERlZmVycmVkV3JhcHBlcihK
U0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpKU1Byb21pc2VEZWZlcnJl
ZCopOwogCi0gICAgdGVtcGxhdGU8Y2xhc3MgUmVzb2x2ZVJlc3VsdFR5cGU+Ci0gICAgdm9pZCBy
ZXNvbHZlKGNvbnN0IFJlc29sdmVSZXN1bHRUeXBlJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgUmVz
b2x2ZVJlc3VsdFR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1bHRJbnNw
ZWN0b3I8UmVzb2x2ZVJlc3VsdFR5cGU+OjpwYXNzQnlWYWx1ZSwgdm9pZD46OnR5cGUKKyAgICBy
ZXNvbHZlKFJlc29sdmVSZXN1bHRUeXBlIHJlc3VsdCkgeyByZXNvbHZlV2l0aFZhbHVlKHJlc3Vs
dCk7IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8UHJvbWlzZVJlc3VsdEluc3BlY3RvcjxSZXNvbHZlUmVzdWx0VHlwZT46OnBh
c3NCeVJlZiwgdm9pZD46OnR5cGUKKyAgICByZXNvbHZlKFJlc29sdmVSZXN1bHRUeXBlJiByZXN1
bHQpIHsgcmVzb2x2ZVdpdGhWYWx1ZShyZXN1bHQpOyB9CisgICAgdGVtcGxhdGU8Y2xhc3MgUmVz
b2x2ZVJlc3VsdFR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1bHRJbnNw
ZWN0b3I8UmVzb2x2ZVJlc3VsdFR5cGU+OjpwYXNzQnlVUmVmLCB2b2lkPjo6dHlwZQorICAgIHJl
c29sdmUoUmVzb2x2ZVJlc3VsdFR5cGUmJiByZXN1bHQpIHsgcmVzb2x2ZVdpdGhWYWx1ZShzdGQ6
OmZvcndhcmQ8UmVzb2x2ZVJlc3VsdFR5cGU+KHJlc3VsdCkpOyB9CisgICAgdGVtcGxhdGU8Y2xh
c3MgUmVzb2x2ZVJlc3VsdFR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1
bHRJbnNwZWN0b3I8UmVzb2x2ZVJlc3VsdFR5cGU+OjpwYXNzQnlDb25zdFJlZiwgdm9pZD46OnR5
cGUKKyAgICByZXNvbHZlKGNvbnN0IFJlc29sdmVSZXN1bHRUeXBlJiByZXN1bHQpIHsgcmVzb2x2
ZVdpdGhWYWx1ZShyZXN1bHQpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBSZWplY3RSZXN1bHRU
eXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxQcm9taXNlUmVzdWx0SW5zcGVjdG9yPFJlamVj
dFJlc3VsdFR5cGU+OjpwYXNzQnlWYWx1ZSwgdm9pZD46OnR5cGUKKyAgICByZWplY3QoUmVqZWN0
UmVzdWx0VHlwZSByZXN1bHQpIHsgcmVqZWN0V2l0aFZhbHVlKHJlc3VsdCk7IH0KKyAgICB0ZW1w
bGF0ZTxjbGFzcyBSZWplY3RSZXN1bHRUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxQcm9t
aXNlUmVzdWx0SW5zcGVjdG9yPFJlamVjdFJlc3VsdFR5cGU+OjpwYXNzQnlSZWYsIHZvaWQ+Ojp0
eXBlCisgICAgcmVqZWN0KFJlamVjdFJlc3VsdFR5cGUmIHJlc3VsdCkgeyByZWplY3RXaXRoVmFs
dWUocmVzdWx0KTsgfQorICAgIHRlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+IHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1bHRJbnNwZWN0b3I8UmVqZWN0UmVzdWx0VHlw
ZT46OnBhc3NCeVVSZWYsIHZvaWQ+Ojp0eXBlCisgICAgcmVqZWN0KFJlamVjdFJlc3VsdFR5cGUm
JiByZXN1bHQpIHsgcmVqZWN0V2l0aFZhbHVlKHN0ZDo6Zm9yd2FyZDxSZWplY3RSZXN1bHRUeXBl
PihyZXN1bHQpKTsgfQorICAgIHRlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+IHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1bHRJbnNwZWN0b3I8UmVqZWN0UmVzdWx0VHlw
ZT46OnBhc3NCeUNvbnN0UmVmLCB2b2lkPjo6dHlwZQorICAgIHJlamVjdChjb25zdCBSZWplY3RS
ZXN1bHRUeXBlJiByZXN1bHQpIHsgcmVqZWN0V2l0aFZhbHVlKHJlc3VsdCk7IH0KIAotICAgIHRl
bXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+Ci0gICAgdm9pZCByZWplY3QoY29uc3QgUmVq
ZWN0UmVzdWx0VHlwZSYpOworICAgIHZvaWQgcmVqZWN0KEV4Y2VwdGlvbkNvZGUpOwogCiAgICAg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0OwogICAgIEpTQzo6SlNWYWx1
ZSBwcm9taXNlKCkgY29uc3Q7CkBAIC01MSw2ICsxMjYsOSBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVzb2x2ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSByZXNvbHV0aW9uKSB7
IGNhbGxGdW5jdGlvbihzdGF0ZSwgbV9kZWZlcnJlZC0+cmVzb2x2ZSgpLCByZXNvbHV0aW9uKTsg
fQogICAgIHZvaWQgcmVqZWN0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHJl
c29sdXRpb24pIHsgY2FsbEZ1bmN0aW9uKHN0YXRlLCBtX2RlZmVycmVkLT5yZWplY3QoKSwgcmVz
b2x1dGlvbik7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+IHZvaWQg
cmVqZWN0V2l0aFZhbHVlKFJlamVjdFJlc3VsdFR5cGUmJik7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
UmVzb2x2ZVJlc3VsdFR5cGU+IHZvaWQgcmVzb2x2ZVdpdGhWYWx1ZShSZXNvbHZlUmVzdWx0VHlw
ZSYmKTsKKwogICAgIEpTQzo6U3Ryb25nPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVj
dDsKICAgICBKU0M6OlN0cm9uZzxKU0M6OkpTUHJvbWlzZURlZmVycmVkPiBtX2RlZmVycmVkOwog
fTsKQEAgLTcxLDcgKzE0OSw3IEBAIGlubGluZSBKU0M6OkpTVmFsdWUgY2FsbFByb21pc2VGdW5j
dGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6RW5jb2RlZEpTVmFsCiAgICAgcmV0dXJu
IHByb21pc2VEZWZlcnJlZC5wcm9taXNlKCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXJyb3I+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFsdWU+CiBjbGFzcyBET01Q
cm9taXNlIHsKIHB1YmxpYzoKICAgICBET01Qcm9taXNlKERlZmVycmVkV3JhcHBlciYmIHdyYXBw
ZXIpIDogbV93cmFwcGVyKFdURk1vdmUod3JhcHBlcikpIHsgfQpAQCAtODAsMTA1ICsxNTgsMTA1
IEBAIHB1YmxpYzoKICAgICBET01Qcm9taXNlKGNvbnN0IERPTVByb21pc2UmKSA9IGRlZmF1bHQ7
CiAgICAgRE9NUHJvbWlzZSYgb3BlcmF0b3I9KERPTVByb21pc2UgY29uc3QmKSA9IGRlZmF1bHQ7
CiAKLSAgICB2b2lkIHJlc29sdmUoY29uc3QgVmFsdWUmIHZhbHVlKSB7IG1fd3JhcHBlci5yZXNv
bHZlPFZhbHVlPih2YWx1ZSk7IH0KLSAgICB2b2lkIHJlamVjdChjb25zdCBFcnJvciYgZXJyb3Ip
IHsgbV93cmFwcGVyLnJlamVjdDxFcnJvcj4oZXJyb3IpOyB9CisgICAgdm9pZCByZXNvbHZlKHR5
cGVuYW1lIFByb21pc2VSZXN1bHRJbnNwZWN0b3I8VmFsdWU+OjpUeXBlIHZhbHVlKSB7IG1fd3Jh
cHBlci5yZXNvbHZlKHZhbHVlKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXJyb3JUeXBl
PiB2b2lkIHJlamVjdChFcnJvclR5cGUmJiBlcnJvcikgeyBtX3dyYXBwZXIucmVqZWN0KHN0ZDo6
Zm9yd2FyZDxFcnJvclR5cGU+KGVycm9yKSk7IH0KIAogcHJpdmF0ZToKICAgICBEZWZlcnJlZFdy
YXBwZXIgbV93cmFwcGVyOwogfTsKIAotdGVtcGxhdGU8Y2xhc3MgUmVzb2x2ZVJlc3VsdFR5cGU+
Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmUoY29uc3QgUmVzb2x2ZVJlc3Vs
dFR5cGUmIHJlc3VsdCkKK2lubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0KEV4Y2Vw
dGlvbkNvZGUgZWMpCiB7CiAgICAgQVNTRVJUKG1fZGVmZXJyZWQpOwogICAgIEFTU0VSVChtX2ds
b2JhbE9iamVjdCk7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICBy
ZXNvbHZlKCpleGVjLCB0b0pTKGV4ZWMsIG1fZ2xvYmFsT2JqZWN0LmdldCgpLCByZXN1bHQpKTsK
KyAgICByZWplY3QoKmV4ZWMsIGNyZWF0ZURPTUV4Y2VwdGlvbihleGVjLCBlYykpOwogfQogCi10
ZW1wbGF0ZTxjbGFzcyBSZWplY3RSZXN1bHRUeXBlPgotaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFw
cGVyOjpyZWplY3QoY29uc3QgUmVqZWN0UmVzdWx0VHlwZSYgcmVzdWx0KQordGVtcGxhdGU8Y2xh
c3MgUmVzb2x2ZVJlc3VsdFR5cGU+CitpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29s
dmVXaXRoVmFsdWUoUmVzb2x2ZVJlc3VsdFR5cGUmJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1f
ZGVmZXJyZWQpOwogICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CiAgICAgSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICByZWplY3QoKmV4ZWMsIHRvSlMoZXhlYywgbV9nbG9i
YWxPYmplY3QuZ2V0KCksIHJlc3VsdCkpOworICAgIHJlc29sdmUoKmV4ZWMsIHRvSlMoZXhlYywg
bV9nbG9iYWxPYmplY3QuZ2V0KCksIHN0ZDo6Zm9yd2FyZDxSZXNvbHZlUmVzdWx0VHlwZT4ocmVz
dWx0KSkpOwogfQogCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJl
amVjdChjb25zdCBzdGQ6Om51bGxwdHJfdCYpCit0ZW1wbGF0ZTxjbGFzcyBSZWplY3RSZXN1bHRU
eXBlPgoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3RXaXRoVmFsdWUoUmVqZWN0
UmVzdWx0VHlwZSYmIHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9kZWZlcnJlZCk7CiAgICAgQVNT
RVJUKG1fZ2xvYmFsT2JqZWN0KTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMp
OwotICAgIHJlamVjdCgqZXhlYywgSlNDOjpqc051bGwoKSk7CisgICAgcmVqZWN0KCpleGVjLCB0
b0pTKGV4ZWMsIG1fZ2xvYmFsT2JqZWN0LmdldCgpLCBzdGQ6OmZvcndhcmQ8UmVqZWN0UmVzdWx0
VHlwZT4ocmVzdWx0KSkpOwogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdy
YXBwZXI6OnJlamVjdChjb25zdCBKU0M6OkpTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgRGVm
ZXJyZWRXcmFwcGVyOjpyZXNvbHZlKGJvb2wgcmVzdWx0KQogewogICAgIEFTU0VSVChtX2RlZmVy
cmVkKTsKICAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBl
eGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIoZXhlYyk7Ci0gICAgcmVqZWN0KCpleGVjLCB2YWx1ZSk7CisgICAgcmVzb2x2ZSgq
ZXhlYywgSlNDOjpqc0Jvb2xlYW4ocmVzdWx0KSk7CiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSB2
b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0PEV4Y2VwdGlvbkNvZGU+KGNvbnN0IEV4Y2VwdGlv
bkNvZGUmIGVjKQoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlKEpTQzo6SlNW
YWx1ZSB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9kZWZlcnJlZCk7CiAgICAgQVNTRVJUKG1fZ2xv
YmFsT2JqZWN0KTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAgIHJl
amVjdCgqZXhlYywgY3JlYXRlRE9NRXhjZXB0aW9uKGV4ZWMsIGVjKSk7CisgICAgcmVzb2x2ZSgq
ZXhlYywgdmFsdWUpOwogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBw
ZXI6OnJlc29sdmU8U3RyaW5nPihjb25zdCBTdHJpbmcmIHJlc3VsdCkKK2lubGluZSB2b2lkIERl
ZmVycmVkV3JhcHBlcjo6cmVqZWN0KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBBU1NFUlQo
bV9kZWZlcnJlZCk7CiAgICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKICAgICBKU0M6OkV4ZWNT
dGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAgIHJlc29sdmUoKmV4ZWMsIGpzU3RyaW5nKGV4ZWMs
IHJlc3VsdCkpOworICAgIHJlamVjdCgqZXhlYywgdmFsdWUpOwogfQogCiB0ZW1wbGF0ZTw+Ci1p
bmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmU8Ym9vbD4oY29uc3QgYm9vbCYgcmVz
dWx0KQoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlKHN0ZDo6bnVsbHB0cl90
KQogewogICAgIEFTU0VSVChtX2RlZmVycmVkKTsKICAgICBBU1NFUlQobV9nbG9iYWxPYmplY3Qp
OwogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgcmVzb2x2ZSgqZXhl
YywgSlNDOjpqc0Jvb2xlYW4ocmVzdWx0KSk7CisgICAgcmVzb2x2ZSgqZXhlYywgSlNDOjpqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVy
OjpyZXNvbHZlPEpTQzo6SlNWYWx1ZT4oY29uc3QgSlNDOjpKU1ZhbHVlJiB2YWx1ZSkKK2lubGlu
ZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0KHN0ZDo6bnVsbHB0cl90KQogewogICAgIEFT
U0VSVChtX2RlZmVycmVkKTsKICAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOwogICAgIEpTQzo6
RXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgcmVzb2x2ZSgqZXhlYywgdmFsdWUpOwor
ICAgIHJlamVjdCgqZXhlYywgSlNDOjpqc051bGwoKSk7CiB9CiAKIHRlbXBsYXRlPD4KLWlubGlu
ZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZShjb25zdCBzdGQ6Om51bGxwdHJfdCYpCitp
bmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmUoY29uc3QgU3RyaW5nJiByZXN1bHQp
CiB7CiAgICAgQVNTRVJUKG1fZGVmZXJyZWQpOwogICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7
CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
OwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICByZXNvbHZlKCpleGVj
LCBKU0M6OmpzVW5kZWZpbmVkKCkpOworICAgIHJlc29sdmUoKmV4ZWMsIGpzU3RyaW5nKGV4ZWMs
IHJlc3VsdCkpOwogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6
OnJlamVjdDxTdHJpbmc+KGNvbnN0IFN0cmluZyYgcmVzdWx0KQoraW5saW5lIHZvaWQgRGVmZXJy
ZWRXcmFwcGVyOjpyZWplY3QoY29uc3QgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1f
ZGVmZXJyZWQpOwogICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKaW5kZXggNGZhNjc4
MjRlNzVlZGI1Y2IzZTZiYTg4MDFhNmE3NGFjY2Y4OGRhYS4uOGM2ZDg4YTU4NGE5NmYzYjdhMDU4
MmY0ZTIyZWVjODFlMjFhMWIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcApAQCAtNTUwLDcgKzU1MCw3IEBAIEpTVmFsdWUg
SlNTdWJ0bGVDcnlwdG86OmltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlKQogICAgIEpTUHJvbWlz
ZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKCZz
dGF0ZSwgZ2xvYmFsT2JqZWN0KCkpOwogICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVyKCZzdGF0
ZSwgZ2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJlZCk7CiAgICAgYXV0byBzdWNjZXNzQ2Fs
bGJhY2sgPSBbd3JhcHBlcl0oQ3J5cHRvS2V5JiByZXN1bHQpIG11dGFibGUgewotICAgICAgICB3
cmFwcGVyLnJlc29sdmUoJnJlc3VsdCk7CisgICAgICAgIHdyYXBwZXIucmVzb2x2ZShyZXN1bHQp
OwogICAgIH07CiAgICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxl
IHsKICAgICAgICAgd3JhcHBlci5yZWplY3QobnVsbHB0cik7CkBAIC03ODUsNyArNzg1LDcgQEAg
SlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6dW53cmFwS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiAKICAg
ICBhdXRvIGRlY3J5cHRTdWNjZXNzQ2FsbGJhY2sgPSBbZG9tR2xvYmFsT2JqZWN0LCBrZXlGb3Jt
YXQsIHVud3JhcHBlZEtleUFsZ29yaXRobVB0ciwgdW53cmFwcGVkS2V5QWxnb3JpdGhtUGFyYW1l
dGVyc1B0ciwgZXh0cmFjdGFibGUsIGtleVVzYWdlcywgd3JhcHBlcl0oY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBhdXRvIGltcG9ydFN1Y2Nlc3NDYWxs
YmFjayA9IFt3cmFwcGVyXShDcnlwdG9LZXkmIGtleSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB3
cmFwcGVyLnJlc29sdmUoJmtleSk7CisgICAgICAgICAgICB3cmFwcGVyLnJlc29sdmUoa2V5KTsK
ICAgICAgICAgfTsKICAgICAgICAgYXV0byBpbXBvcnRGYWlsdXJlQ2FsbGJhY2sgPSBbd3JhcHBl
cl0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHdyYXBwZXIucmVqZWN0KG51bGxwdHIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZhY2UuaAppbmRleCA4OTcxZWYxZDI5N2EyMmZiZWNiY2UzZTBlYWJmMDM5YTQ3NmUx
MzYzLi5lMjQ5MzRkNzc0MmQ1MGRlMGQyNjY2N2ZhN2E2YWZhY2I2MzlkMTkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBMb2Fk
U3RhdHVzIHsgVW5sb2FkZWQsIExvYWRpbmcsIExvYWRlZCwgRXJyb3IgfTsKICAgICBMb2FkU3Rh
dHVzIHN0YXR1cygpIGNvbnN0OwogCi0gICAgdHlwZWRlZiBET01Qcm9taXNlPEZvbnRGYWNlJiwg
RXhjZXB0aW9uQ29kZT4gUHJvbWlzZTsKKyAgICB0eXBlZGVmIERPTVByb21pc2U8Rm9udEZhY2Um
PiBQcm9taXNlOwogICAgIHZvaWQgcmVnaXN0ZXJMb2FkZWQoUHJvbWlzZSYmKTsKIAogICAgIHZv
aWQgbG9hZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKaW5kZXggN2U3NDQ5ODNkZjgx
ZTdhYmQwZGMxMjMxYWU1NjIwNDQyMWY5OGMyNi4uMTg5ZTViZGZhZmQwMTdhYWE4NmZkOGQzNzdh
OTA1Y2ZjZWM3ODM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCkBAIC04Myw3ICs4
Myw3IEBAIFJlZlB0cjxGb250RmFjZT4gRm9udEZhY2VTZXQ6Okl0ZXJhdG9yOjpuZXh0KCkKICAg
ICByZXR1cm4gbV90YXJnZXQtPmJhY2tpbmcoKVttX2luZGV4KytdLndyYXBwZXIoKTsKIH0KIAot
Rm9udEZhY2VTZXQ6OlBlbmRpbmdQcm9taXNlOjpQZW5kaW5nUHJvbWlzZShQcm9taXNlJiYgcHJv
bWlzZSkKK0ZvbnRGYWNlU2V0OjpQZW5kaW5nUHJvbWlzZTo6UGVuZGluZ1Byb21pc2UoTG9hZFBy
b21pc2UmJiBwcm9taXNlKQogICAgIDogcHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKQogewogfQpA
QCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgRm9udEZhY2VTZXQ6OmNsZWFyKCkKICAgICAgICAgbV9i
YWNraW5nLT5yZW1vdmUobV9iYWNraW5nLmdldCgpWzBdKTsKIH0KIAotdm9pZCBGb250RmFjZVNl
dDo6bG9hZChjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRGVmZXJyZWRX
cmFwcGVyJiYgcHJvbWlzZSkKK3ZvaWQgRm9udEZhY2VTZXQ6OmxvYWQoY29uc3QgU3RyaW5nJiBm
b250LCBjb25zdCBTdHJpbmcmIHRleHQsIExvYWRQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvIG1hdGNoaW5nRmFjZXMgPSBtX2JhY2tpbmct
Pm1hdGNoaW5nRmFjZXMoZm9udCwgdGV4dCwgZWMpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQg
Rm9udEZhY2VTZXQ6OmxvYWQoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQs
IERlZmVycmVkV3JhcHBlciYmCiAKICAgICBmb3IgKGF1dG8mIGZhY2UgOiBtYXRjaGluZ0ZhY2Vz
KSB7CiAgICAgICAgIGlmIChmYWNlLmdldCgpLnN0YXR1cygpID09IENTU0ZvbnRGYWNlOjpTdGF0
dXM6OkZhaWx1cmUpIHsKLSAgICAgICAgICAgIHByb21pc2UucmVqZWN0KERPTUNvcmVFeGNlcHRp
b246OmNyZWF0ZShFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oTkVUV09SS19FUlIpKS5wdHIoKSk7
CisgICAgICAgICAgICBwcm9taXNlLnJlamVjdChET01Db3JlRXhjZXB0aW9uOjpjcmVhdGUoRXhj
ZXB0aW9uQ29kZURlc2NyaXB0aW9uKE5FVFdPUktfRVJSKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpAQCAtMTY3LDcgKzE2Nyw3IEBAIGJvb2wgRm9udEZhY2VTZXQ6
OmNoZWNrKGNvbnN0IFN0cmluZyYgZmFtaWx5LCBjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlv
bkNvZGUmCiAgICAgcmV0dXJuIG1fYmFja2luZy0+Y2hlY2soZmFtaWx5LCB0ZXh0LCBlYyk7CiB9
CiAKLXZvaWQgRm9udEZhY2VTZXQ6OnJlZ2lzdGVyUmVhZHkoUHJvbWlzZSYmIHByb21pc2UpCit2
b2lkIEZvbnRGYWNlU2V0OjpyZWdpc3RlclJlYWR5KFJlYWR5UHJvbWlzZSYmIHByb21pc2UpCiB7
CiAgICAgQVNTRVJUKCFtX3Byb21pc2UpOwogICAgIGlmIChtX2lzUmVhZHkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlU2V0LmgKaW5kZXggZjA0NzBlOWQ2MjhiYmU3YzAyOGE5MTBiZjcwZjA5YmZhYzZm
OGUwMS4uODlhZDA4ZDA5YmNmMjdkOTc4MTQ5NjNkOGM3ZjlkZjYzMzM4NzkyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRGYWNlU2V0LmgKQEAgLTQ3LDE0ICs0NywxNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBy
ZW1vdmUoRm9udEZhY2UmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICB2b2lkIGxvYWQoY29u
c3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQsIERlZmVycmVkV3JhcHBlciYmIHBy
b21pc2UpOworICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4+
IExvYWRQcm9taXNlOworICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0
cmluZyYgdGV4dCwgTG9hZFByb21pc2UmJik7CiAgICAgYm9vbCBjaGVjayhjb25zdCBTdHJpbmcm
IGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgZW51bSBj
bGFzcyBMb2FkU3RhdHVzIHsgTG9hZGluZywgTG9hZGVkIH07CiAgICAgTG9hZFN0YXR1cyBzdGF0
dXMoKSBjb25zdDsKIAotICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxGb250RmFjZVNldCYsIERPTUNv
cmVFeGNlcHRpb24mPiBQcm9taXNlOwotICAgIHZvaWQgcmVnaXN0ZXJSZWFkeShQcm9taXNlJiYp
OworICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxGb250RmFjZVNldCY+IFJlYWR5UHJvbWlzZTsKKyAg
ICB2b2lkIHJlZ2lzdGVyUmVhZHkoUmVhZHlQcm9taXNlJiYpOwogCiAgICAgQ1NTRm9udEZhY2VT
ZXQmIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KIApAQCAtNzQsMTkgKzc1LDE4IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgUGVuZGluZ1Byb21pc2UgOiBSZWZDb3Vu
dGVkPFBlbmRpbmdQcm9taXNlPiB7Ci0gICAgICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxWZWN0b3I8
UmVmUHRyPEZvbnRGYWNlPj4mLCBET01Db3JlRXhjZXB0aW9uJj4gUHJvbWlzZTsKLSAgICAgICAg
c3RhdGljIFJlZjxQZW5kaW5nUHJvbWlzZT4gY3JlYXRlKFByb21pc2UmJiBwcm9taXNlKQorICAg
ICAgICBzdGF0aWMgUmVmPFBlbmRpbmdQcm9taXNlPiBjcmVhdGUoTG9hZFByb21pc2UmJiBwcm9t
aXNlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQZW5kaW5n
UHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKSk7CiAgICAgICAgIH0KICAgICAgICAgflBlbmRpbmdQ
cm9taXNlKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBQZW5kaW5nUHJvbWlzZShQcm9taXNl
JiYpOworICAgICAgICBQZW5kaW5nUHJvbWlzZShMb2FkUHJvbWlzZSYmKTsKIAogICAgIHB1Ymxp
YzoKICAgICAgICAgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+IGZhY2VzOwotICAgICAgICBQcm9t
aXNlIHByb21pc2U7CisgICAgICAgIExvYWRQcm9taXNlIHByb21pc2U7CiAgICAgICAgIGJvb2wg
aGFzUmVhY2hlZFRlcm1pbmFsU3RhdGUgeyBmYWxzZSB9OwogICAgIH07CiAKQEAgLTExMCw3ICsx
MTAsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmPENTU0ZvbnRGYWNlU2V0PiBtX2JhY2tpbmc7CiAg
ICAgSGFzaE1hcDxSZWZQdHI8Q1NTRm9udEZhY2U+LCBWZWN0b3I8UmVmPFBlbmRpbmdQcm9taXNl
Pj4+IG1fcGVuZGluZ1Byb21pc2VzOwotICAgIE9wdGlvbmFsPFByb21pc2U+IG1fcHJvbWlzZTsK
KyAgICBPcHRpb25hbDxSZWFkeVByb21pc2U+IG1fcHJvbWlzZTsKICAgICBib29sIG1faXNSZWFk
eSB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmlu
ZGV4IGI0MzFiMGM3Mjc1NDFkYTAwZDAyMTkwOTQ3ZGY2ZjFkZGQxZDQ3YzEuLmM4NDE5M2IzZTAw
OTZkYjE5ZTVmODY0YTRiYjVhYjhiYjg2YzE5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCkBAIC0yMTIsNyArMjEyLDcgQEAgcHVibGljOgogICAgIGJvb2wgbG9vcCgp
IGNvbnN0OwogICAgIHZvaWQgc2V0TG9vcChib29sIGIpOwogCi0gICAgdHlwZWRlZiBET01Qcm9t
aXNlPHN0ZDo6bnVsbHB0cl90LCBET01FcnJvciY+IFBsYXlQcm9taXNlOworICAgIHR5cGVkZWYg
RE9NUHJvbWlzZTxzdGQ6Om51bGxwdHJfdD4gUGxheVByb21pc2U7CiAgICAgdm9pZCBwbGF5KFBs
YXlQcm9taXNlJiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF5KCkgb3ZlcnJpZGU7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278828</attachid>
            <date>2016-05-13 03:23:07 -0700</date>
            <delta_ts>2016-05-13 03:31:35 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-157307-20160513122357.patch</filename>
            <type>text/plain</type>
            <size>36966</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMwYmZmMjc0MjI3NTE4Nzk2MTBmZGRl
OTU2ZWEyZmFiZGRmNDdlY2QuLjRlYTU0NzI2OTQzYWRmODU4MGM5ZTQ4M2RiMmRlZDNlNWM0OTQ1
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDUtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBET01Qcm9taXNlIHNob3VsZCBvbmx5
IHJlc3RyaWN0IHRoZSByZXNvbHV0aW9uIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzMwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1JlZi5oOiBBZGRpbmcgc3RhdGljIGNvbnN0ZXhw
ciB0byBlYXNlIGRldGVjdGlvbiBvZiBSZWYgZm9yIHRlbXBsYXRlcy4KKyAgICAgICAgKiB3dGYv
UmVmUHRyLmg6IERpdHRvLgorCiAyMDE2LTA1LTEyICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBVc2UgU2VjVGFzayBTUEkgdG8gcmV0cmlldmUgY29kZSBzaWdu
aW5nIGlkZW50aWZpZXIgZm9yIHVzZXIgZGlyZWN0b3J5IHN1ZmZpeApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQw
YzYwZThmYmU1MjhmMDUwNjZlNTJhOGEyOWY0OWM5YjM0NDU2ZWEuLjBhNGI0MjEzZGIwYjcyNmVh
OTRjODg4MGFiNzI2NWI2OTNjYWI0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NCBAQAorMjAx
Ni0wNS0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisg
ICAgICAgIERPTVByb21pc2Ugc2hvdWxkIG9ubHkgcmVzdHJpY3QgdGhlIHJlc29sdXRpb24gdHlw
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MzA3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVtb3Zpbmcg
ZnJvbSBET01Qcm9taXNlIHRoZSByZWplY3Rpb24gdGVtcGxhdGUgcGFyYW1ldGVyLgorICAgICAg
ICBTdXBwb3J0ZWQgcmVqZWN0aW9uIHR5cGVzIGFyZSBpbnRlZ2VycyAoRXhjZXB0aW9uIGNvZGVz
KSBhbmQgRE9NIG9iamVjdHMgKERPTUVycm9yIHR5cGljYWxseSkuCisKKyAgICAgICAgVXBkYXRl
ZCB0b0pTIGFuZCBEZWZlcnJlZFdyYXBwZXIgdG8gYWNjZXB0IFJlZjw+JiYgYW5kIFJlZlB0cjw+
JiYuCisgICAgICAgIFByZXZpb3VzbHkgUmVmPD4mJiB3ZXJlIG5vdCBhY2NlcHRlZCBhbmQgb25s
eSAiY29uc3QgUmVmUHRyPD4mIiB3YXMgYWNjZXB0ZWQuCisgICAgICAgIFRoaXMgaW4gdHVybiBj
cmVhdGVkIGFuIHVuZWNlc3NhcnkgY2h1cm4gY291bnQgd2hlbiBjYWxsaW5nIHRvSlMuCisKKyAg
ICAgICAgQ2hhbmdlcyBhbHNvIGFsbG93IGluIG1vc3QgY2FzZXMgdG8gcmVtb3ZlIHRoZSBuZWVk
IGZvciBleHBsaWN0bHkgZGVjbGFyaW5nIHRoZQorICAgICAgICByZWplY3Rpb24vcmVzb2x1dGlv
biB0eXBlLgorCisgICAgICAgIE1pbm9yIHJlZmFjdG9yaW5nIG9mIEZvbnRGYWNlU2V0IHByb21p
c2UgaGFuZGxpbmcgdG8gdXNlIERPTVByb21pc2UgaW4gbGlldSBvZiBEZWZlcnJlZFdyYXBwZXIu
CisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKyAgICAgICAgQ2hhbmdlcyBz
aG91bGQgbm90IGJlIHZpc2libGUgZnJvbSB1c2VyIHNjcmlwdHMuCisKKyAgICAgICAgKiBNb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNv
bnN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lVGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpibG9iRnJvbUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keTo6bG9hZGluZ0ZhaWxlZCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Zm9ybURhdGEpOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5T3duZXI6OmFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93
bmVyOjpibG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpmb3JtRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6anNvbik6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlPd25lcjo6dGV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpkaWRDcmVhdGVTdHJlYW0pOgorICAgICAg
ICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzUGFpcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmZ1bGZpbGxQcm9taXNlV2l0aEpTT04pOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NUHJvbWlzZS5oOgorICAgICAgICAoV2ViQ29yZTo6VHlwZUluc3BlY3Rvcjo6ZGVj
bHR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VHlwZUluc3BlY3Rvcjo6dGVzdElzVmVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlR5cGVJbnNwZWN0b3I6OnRlc3RJc1JlZk9yUmVmUHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9t
aXNlOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OnJlamVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmVXaXRoVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVmZXJyZWRXcmFwcGVyOjpyZWplY3RXaXRoVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y2FsbFByb21pc2VGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlw
dG86OmltcG9ydEtleSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6dW53cmFw
S2V5KToKKyAgICAgICAgKiBjc3MvRm9udEZhY2UuaDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2VT
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OlBlbmRpbmdQcm9taXNlOjpQ
ZW5kaW5nUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6bG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6cmVnaXN0ZXJSZWFkeSk6CisgICAgICAgICog
Y3NzL0ZvbnRGYWNlU2V0Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisK
IDIwMTYtMDUtMTIgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW2Nzcy1ncmlkXSBTaG93IGF1dG8tcmVwZWF0IGxpbmUgbmFtZXMgaW4gQ29tcHV0
ZWRTdHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmLmggYi9Tb3VyY2UvV1RGL3d0
Zi9SZWYuaAppbmRleCA1MGE1ZTc2MTczMmRmYzI3MmYxY2JiOGRjOTViZGQ4ZjU0N2FlYWU4Li40
YTcyODhlNGUyZWZkOTk4Yjc5Yjg0YWRlOWZhMzY5YTA4NTc5ZDFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9SZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWYuaApAQCAtNDYsNiArNDYs
OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBSZWY8VD4gYWRvcHRSZWYoVCYpOwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjbGFzcyBSZWYgewogcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc1JlZiA9IHRydWU7CisKICAgICB+UmVmKCkKICAgICB7CiAjaWYgQVNBTl9FTkFCTEVE
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1Jl
ZlB0ci5oCmluZGV4IGNhNDQ2ZjRmNWRmYzM2MDFiYjUxNzUxNTUxOWJiZDNkNzNhZGRmNmIuLmVk
NTFlZTZlNzQyOWFmZGE4ZWUzOTA1M2VhNWFlNmJjMWVlMDA2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1JlZlB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCkBAIC0zOSw2
ICszOSw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFQgVmFsdWVUeXBlOwogICAgIHR5cGVkZWYg
VmFsdWVUeXBlKiBQdHJUeXBlOwogCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUmVmUHRy
ID0gdHJ1ZTsKKwogICAgIEFMV0FZU19JTkxJTkUgUmVmUHRyKCkgOiBtX3B0cihudWxscHRyKSB7
IH0KICAgICBBTFdBWVNfSU5MSU5FIFJlZlB0cihUKiBwdHIpIDogbV9wdHIocHRyKSB7IHJlZklm
Tm90TnVsbChwdHIpOyB9CiAgICAgQUxXQVlTX0lOTElORSBSZWZQdHIoY29uc3QgUmVmUHRyJiBv
KSA6IG1fcHRyKG8ubV9wdHIpIHsgcmVmSWZOb3ROdWxsKG1fcHRyKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDEwYTExZjE1NWFiNzI0MTYwNmVj
ZWZjMjRlMzk5NzRkNzRiNjI4YjQuLjQ2YWM0NWQ4YjhlMGRlNzhhNmIzNmU0ZTBlOTJkNjQ0NWNh
NzIzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgUmVmUHRyPEJs
b2I+IGJsb2JGcm9tQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXIqLCBjb25zdCBTdHJpbmcmKTsKK3N0
YXRpYyBSZWY8QmxvYj4gYmxvYkZyb21BcnJheUJ1ZmZlcihBcnJheUJ1ZmZlciosIGNvbnN0IFN0
cmluZyYpOwogCiBGZXRjaEJvZHk6OkZldGNoQm9keShSZWY8QmxvYj4mJiBibG9iKQogICAgIDog
bV90eXBlKFR5cGU6OkJsb2IpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNv
bnN1bWUoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBDb25zdW1lcjo6VHlwZSB0eXBlLCBEZWZlcnJl
ZFdyYXAKICAgICB9CiAKICAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0eXBlcy4KLSAgICBw
cm9taXNlLnJlamVjdDxFeGNlcHRpb25Db2RlPigwKTsKKyAgICBwcm9taXNlLnJlamVjdCgwKTsK
IH0KIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIEZl
dGNoQm9keTo6Y29uc3VtZVRleHQoQ29uc3VtZXI6OlR5cGUgdHlwZSwgRGVmZXJyZWRXcmFwcGVy
JiBwcm9taXNlKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFN0cmluZyBjb250ZW50VHlw
ZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKG1fbWltZVR5cGUpKTsKLSAgICBwcm9taXNlLnJlc29sdmU8UmVmUHRyPEJsb2I+PihCbG9i
OjpjcmVhdGUoZXh0cmFjdEZyb21UZXh0KCksIGNvbnRlbnRUeXBlKSk7CisgICAgcHJvbWlzZS5y
ZXNvbHZlKEJsb2I6OmNyZWF0ZShleHRyYWN0RnJvbVRleHQoKSwgY29udGVudFR5cGUpKTsKIH0K
IAogRmV0Y2hMb2FkZXI6OlR5cGUgRmV0Y2hCb2R5Ojpsb2FkaW5nVHlwZShDb25zdW1lcjo6VHlw
ZSB0eXBlKQpAQCAtMjM2LDcgKzIzNiw3IEBAIFZlY3Rvcjx1aW50OF90PiBGZXRjaEJvZHk6OmV4
dHJhY3RGcm9tVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1zdGF0aWMgaW5s
aW5lIFJlZlB0cjxCbG9iPiBibG9iRnJvbUFycmF5QnVmZmVyKEFycmF5QnVmZmVyKiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCitzdGF0aWMgaW5saW5lIFJlZjxCbG9iPiBibG9i
RnJvbUFycmF5QnVmZmVyKEFycmF5QnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUo
VmVjdG9yPHVpbnQ4X3Q+KCksIGNvbnRlbnRUeXBlKTsKQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lk
IEZldGNoQm9keTo6ZnVsZmlsbFRleHRQcm9taXNlKEZldGNoQm9keTo6Q29uc3VtZXI6OlR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJgogdm9pZCBGZXRjaEJvZHk6OmxvYWRpbmdGYWlsZWQoKQogewog
ICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKLSAgICBtX2NvbnN1bWVyLT5wcm9taXNlLnJlamVjdDxF
eGNlcHRpb25Db2RlPigwKTsKKyAgICBtX2NvbnN1bWVyLT5wcm9taXNlLnJlamVjdCgwKTsKICAg
ICBtX2NvbnN1bWVyID0gTnVsbG9wdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmgKaW5kZXggMDQ2MDEwYTBmYjkyYjI2Njg1MGVlYTUyNmJlZTBlZDc2Y2UxODky
Mi4uNTZmM2RmZGM4NTcxYzMxNTExMmYyNjY1YzZmZmRhOTc1YTlkZjM5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGJsb2IoRmV0Y2hCb2R5T3duZXImLCBEZWZlcnJlZFdyYXBwZXImJik7CiAgICAg
dm9pZCBqc29uKEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYpOwogICAgIHZvaWQg
dGV4dChGZXRjaEJvZHlPd25lciYsIERlZmVycmVkV3JhcHBlciYmKTsKLSAgICB2b2lkIGZvcm1E
YXRhKEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkgeyBwcm9taXNl
LnJlamVjdDxFeGNlcHRpb25Db2RlPigwKTsgfQorICAgIHZvaWQgZm9ybURhdGEoRmV0Y2hCb2R5
T3duZXImLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKSB7IHByb21pc2UucmVqZWN0KDApOyB9
CiAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCiAgICAgdm9pZCBjb25zdW1lQXNTdHJlYW0oRmV0
Y2hCb2R5T3duZXImLCBGZXRjaFJlc3BvbnNlU291cmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCmluZGV4IGNhZjRhYzhiNWNjYWQxNDM1
Y2U4ZmE2NzM2MTQyNTRiYTJlNDhjNjkuLjk2YzA0YzNkNjFkMTI5YWFmMjA1NDE3OGViNjc2OTE3
MmZkZTU0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmFycmF5QnVm
ZmVyKERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgaWYgKGlzRGlzdHVyYmVkKCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9u
Q29kZT4oVHlwZUVycm9yKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoVHlwZUVycm9yKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2lzRGlzdHVyYmVkID0gdHJ1ZTsKQEAgLTg1LDEx
ICs4NSwxMSBAQCB2b2lkIEZldGNoQm9keU93bmVyOjphcnJheUJ1ZmZlcihEZWZlcnJlZFdyYXBw
ZXImJiBwcm9taXNlKQogdm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYihEZWZlcnJlZFdyYXBwZXIm
JiBwcm9taXNlKQogewogICAgIGlmIChtX2JvZHkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHByb21p
c2UucmVzb2x2ZTxSZWZQdHI8QmxvYj4+KEJsb2I6OmNyZWF0ZSgpKTsKKyAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKEJsb2I6OmNyZWF0ZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBp
ZiAoaXNEaXN0dXJiZWQoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdDxFeGNlcHRpb25Db2Rl
PihUeXBlRXJyb3IpOworICAgICAgICBwcm9taXNlLnJlamVjdChUeXBlRXJyb3IpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIG1faXNEaXN0dXJiZWQgPSB0cnVlOwpAQCAtOTksMTEgKzk5
LDExIEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2IoRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlz
ZSkKIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmZvcm1EYXRhKERlZmVycmVkV3JhcHBlciYmIHByb21p
c2UpCiB7CiAgICAgaWYgKG1fYm9keS5pc0VtcHR5KCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWpl
Y3Q8RXhjZXB0aW9uQ29kZT4oMCk7CisgICAgICAgIHByb21pc2UucmVqZWN0KDApOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGlmIChpc0Rpc3R1cmJlZCgpKSB7Ci0gICAgICAgIHByb21p
c2UucmVqZWN0PEV4Y2VwdGlvbkNvZGU+KFR5cGVFcnJvcik7CisgICAgICAgIHByb21pc2UucmVq
ZWN0KFR5cGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9pc0Rpc3R1cmJl
ZCA9IHRydWU7CkBAIC0xMTMsMTEgKzExMywxMSBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpmb3Jt
RGF0YShEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogdm9pZCBGZXRjaEJvZHlPd25lcjo6anNv
bihEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIGlmIChtX2JvZHkuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0PEV4Y2VwdGlvbkNvZGU+KFNZTlRBWF9FUlIpOwor
ICAgICAgICBwcm9taXNlLnJlamVjdChTWU5UQVhfRVJSKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBpZiAoaXNEaXN0dXJiZWQoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdDxFeGNl
cHRpb25Db2RlPihUeXBlRXJyb3IpOworICAgICAgICBwcm9taXNlLnJlamVjdChUeXBlRXJyb3Ip
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1faXNEaXN0dXJiZWQgPSB0cnVlOwpAQCAt
MTMxLDcgKzEzMSw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OnRleHQoRGVmZXJyZWRXcmFwcGVy
JiYgcHJvbWlzZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoaXNEaXN0dXJiZWQo
KSkgewotICAgICAgICBwcm9taXNlLnJlamVjdDxFeGNlcHRpb25Db2RlPihUeXBlRXJyb3IpOwor
ICAgICAgICBwcm9taXNlLnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIG1faXNEaXN0dXJiZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggMzViZTI0Mzk0ZmU0YWMyNWUwMTdkMDI1NWZl
YjQ1Y2Q4NjM4YTg0MC4uN2M5YjllNjA4YTVhOGNiOGI3MDc2ZGU2Yzk4NWQ1NmQ0Y2UxOWE4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBA
IC0yMTMsNyArMjEzLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKICAgICBtX3Jlc3BvbnNl
Lm1fcmVzcG9uc2UgPSByZXNvdXJjZVJlc3BvbnNlOwogICAgIG1fcmVzcG9uc2UubV9oZWFkZXJz
LT5maWx0ZXJBbmRGaWxsKHJlc291cmNlUmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLCBGZXRj
aEhlYWRlcnM6Okd1YXJkOjpSZXNwb25zZSk7CiAKLSAgICBzdGQ6OmV4Y2hhbmdlKG1fcHJvbWlz
ZSwgTnVsbG9wdCktPnJlc29sdmUoJm1fcmVzcG9uc2UpOworICAgIHN0ZDo6ZXhjaGFuZ2UobV9w
cm9taXNlLCBOdWxsb3B0KS0+cmVzb2x2ZShtX3Jlc3BvbnNlKTsKIH0KIAogdm9pZCBGZXRjaFJl
c3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgK
aW5kZXggN2U0OGIwM2IwNDM1OWM3Y2YwMDQ2MDg3OGY3NGQ5Yjk2YjY0ZjM4Ny4uZWQyNDcxMTNi
MTlmZGI2MDI4ZDQ2ZDBlNDk4YzE2YzJjYTc0YTNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBSZWY8RmV0Y2hSZXNwb25zZT4gZXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
OwogICAgIHN0YXRpYyBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gcmVkaXJlY3QoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYsIGludCwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAg
dXNpbmcgRmV0Y2hQcm9taXNlID0gRE9NUHJvbWlzZTxSZWZQdHI8RmV0Y2hSZXNwb25zZT4sIEV4
Y2VwdGlvbkNvZGU+OworICAgIHVzaW5nIEZldGNoUHJvbWlzZSA9IERPTVByb21pc2U8RmV0Y2hS
ZXNwb25zZT47CiAgICAgc3RhdGljIHZvaWQgZmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IEZldGNoUmVxdWVzdCYsIGNvbnN0IERpY3Rpb25hcnkmLCBGZXRjaFByb21pc2UmJik7CiAgICAg
c3RhdGljIHZvaWQgZmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IERpY3Rpb25hcnkmLCBGZXRjaFByb21pc2UmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCmluZGV4IDcwMjI3MmRkYjY0
NDEwMDM0NWM3Y2E4MmExYmE5ZmZjMjExMjM1NzcuLmM0OGQ4NjA4NmZmNDk0N2M0MzYxNWEwNTAy
YjUzOGM5MTkxOWNkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMuaApAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAKICAgICBEb2N1
bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAotICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxSZWZQdHI8
TWVkaWFTdHJlYW0+LCBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3I+PiBQcm9taXNlOwot
ICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxNZWRpYURldmljZUluZm9WZWN0b3IsIEV4Y2VwdGlvbkNv
ZGU+IEVudW1lcmF0ZURldmljZXNQcm9taXNlOworICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxNZWRp
YVN0cmVhbT4gUHJvbWlzZTsKKyAgICB0eXBlZGVmIERPTVByb21pc2U8TWVkaWFEZXZpY2VJbmZv
VmVjdG9yPiBFbnVtZXJhdGVEZXZpY2VzUHJvbWlzZTsKIAogICAgIHZvaWQgZ2V0VXNlck1lZGlh
KGNvbnN0IERpY3Rpb25hcnkmLCBQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAg
ICB2b2lkIGVudW1lcmF0ZURldmljZXMoRW51bWVyYXRlRGV2aWNlc1Byb21pc2UmJiwgRXhjZXB0
aW9uQ29kZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKaW5kZXggNTBkZTkzMGQyNDUwOTky
M2Q3ZDIyMTNmMWI3NmNmN2RlMDU3ZWVlZi4uYmZmZjQ0ZTg3MjkxMWQwNzdjMTNiZWMxNmQ3NmJl
NTEyMjZjYzZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCkBAIC01Myw5ICs1Myw5IEBAIGNsYXNz
IFJUQ1N0YXRzUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBuYW1l
c3BhY2UgUGVlckNvbm5lY3Rpb24gewotdHlwZWRlZiBET01Qcm9taXNlPFJlZlB0cjxSVENTZXNz
aW9uRGVzY3JpcHRpb24+LCBSZWZQdHI8RE9NRXJyb3I+PiBTZXNzaW9uRGVzY3JpcHRpb25Qcm9t
aXNlOwotdHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0cl90LCBSZWZQdHI8RE9NRXJyb3I+
PiBWb2lkUHJvbWlzZTsKLXR5cGVkZWYgRE9NUHJvbWlzZTxSZWZQdHI8UlRDU3RhdHNSZXNwb25z
ZT4sIFJlZlB0cjxET01FcnJvcj4+IFN0YXRzUHJvbWlzZTsKK3R5cGVkZWYgRE9NUHJvbWlzZTxS
VENTZXNzaW9uRGVzY3JpcHRpb24+IFNlc3Npb25EZXNjcmlwdGlvblByb21pc2U7Cit0eXBlZGVm
IERPTVByb21pc2U8c3RkOjpudWxscHRyX3Q+IFZvaWRQcm9taXNlOwordHlwZWRlZiBET01Qcm9t
aXNlPFJUQ1N0YXRzUmVzcG9uc2U+IFN0YXRzUHJvbWlzZTsKIH0KIAogY2xhc3MgUGVlckNvbm5l
Y3Rpb25CYWNrZW5kQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IDczYjE0OWJlMmFmODg2ZDRk
YzU5OGI2N2IyYWU0NTc2ODRjNTIwZmEuLjljZTQxOTg0YjgxZDAzZWNmNmZkZTllMGViNjFhNjFl
ZWJiNTA3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgVXNlck1l
ZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRl
PiBwcml2YXRlU3RyCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIDQgLSBDcmVhdGUgdGhlIE1l
ZGlhU3RyZWFtIGFuZCBwYXNzIGl0IHRvIHRoZSBzdWNjZXNzIGNhbGxiYWNrLgotICAgIFJlZlB0
cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSgqbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBwcml2YXRlU3RyZWFtKTsKKyAgICBSZWY8TWVkaWFTdHJlYW0+IHN0cmVh
bSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcHJpdmF0
ZVN0cmVhbSk7CiAgICAgaWYgKG1fYXVkaW9Db25zdHJhaW50cykgewogICAgICAgICBmb3IgKGF1
dG8mIHRyYWNrIDogc3RyZWFtLT5nZXRBdWRpb1RyYWNrcygpKSB7CiAgICAgICAgICAgICB0cmFj
ay0+YXBwbHlDb25zdHJhaW50cygqbV9hdWRpb0NvbnN0cmFpbnRzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKaW5kZXgg
MGZkMTZmM2U2MWZhMGIxYzg4MGU3MmJhZDI5MjU3YzBkNWRiNTkxMC4uMDg3YjQ1YzRjYzcxYjI0
OTdlYWY4YzNiNzA4Y2NiOWZlOWI2NjY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
Y2xhc3MgUmVhZGFibGVTdHJlYW1Tb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFkYWJsZVN0
cmVhbVNvdXJjZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgflJlYWRhYmxlU3RyZWFtU291cmNl
KCkgeyB9CiAKLSAgICB0eXBlZGVmIERPTVByb21pc2U8c3RkOjpudWxscHRyX3QsIEV4Y2VwdGlv
bkNvZGU+IFByb21pc2U7CisgICAgdHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0cl90PiBQ
cm9taXNlOwogCiAgICAgdm9pZCBzdGFydChSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXImJiwgUHJv
bWlzZSYmKTsKICAgICB2b2lkIGNhbmNlbChKU0M6OkpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggODU4ZjY0N2FmZjc3ZGJi
MjUzODY2ZmUwOTIyYTU1ZDRkYmFmYzVlNy4uMTZiMmIzYzQ0ZDgyMzFlM2ZjNjRhYTE1YTBhZTYy
ZGIwYjM3ODQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFjdGl2ZURP
TU9iamVjdDo6c3VzcGVuZDsKICAgICB1c2luZyBBY3RpdmVET01PYmplY3Q6OnJlc3VtZTsKIAot
ICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxzdGQ6Om51bGxwdHJfdCwgRXhjZXB0aW9uQ29kZT4gUHJv
bWlzZTsKKyAgICB0eXBlZGVmIERPTVByb21pc2U8c3RkOjpudWxscHRyX3Q+IFByb21pc2U7CiAK
ICAgICB2b2lkIHN1c3BlbmQoUHJvbWlzZSYmKTsKICAgICB2b2lkIHJlc3VtZShQcm9taXNlJiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCBiODhmMDYw
ODg1NmZkMGY1NzMzZTNjYWE4ZDVjMzVlYjEzMzE1ZDQ0Li44NmI3NDM3YjJlZDhiYTc3NTY3OTg4
MGE2MmJlNjA0ZjgwMjJjZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaApAQCAtMjUxLDEwICsyNTEsMTAgQEAgSlNDOjpKU09iamVjdCogdG9KU1NlcXVlbmNl
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCB1bnNpZ25lZCYgbGVuZ3RoKTsKIEpTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBKU0M6OkFy
cmF5QnVmZmVyKik7CiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xv
YmFsT2JqZWN0KiwgSlNDOjpBcnJheUJ1ZmZlclZpZXcqKTsKIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6QXJyYXlCdWZmZXJWaWV3
Kik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgUmVmUHRyPFQ+Jik7Ci10ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgUmVmPFQ+Jik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBKU0M6OkpTVmFsdWUg
dG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29u
c3QgUmVmUHRyPFQ+Jik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBKU0M6OkpTVmFsdWUgdG9KU05l
d2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgUmVm
PFQ+Jik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmUHRyPFQ+Jik7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0
KiwgUmVmUHRyPFQ+JiYpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gSlNDOjpKU1ZhbHVlIHRvSlNO
ZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZlB0cjxU
PiYpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQo
SlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZlB0cjxUPiYmKTsKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01H
bG9iYWxPYmplY3QqLCBjb25zdCBWZWN0b3I8VD4mKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEpT
Qzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBjb25z
dCBWZWN0b3I8UmVmUHRyPFQ+PiYpOwogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
LCBKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpOwpAQCAtMjY5LDcgKzI2OSw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gSlNDOjpKU1ZhbHVl
IGpzQXJyYXkoSlNDOjpFeGVjU3RhdGUqCiBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTVmFsdWUganNB
cnJheShKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxET01T
dHJpbmdMaXN0Pik7CiAKIEpTQzo6SlNWYWx1ZSBqc1BhaXIoSlNDOjpFeGVjU3RhdGUmLCBKU0RP
TUdsb2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlKTsKLXRlbXBsYXRlPHR5
cGVuYW1lIEZpcnN0VHlwZSwgdHlwZW5hbWUgU2Vjb25kVHlwZT4gSlNDOjpKU1ZhbHVlIGpzUGFp
cihKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgRmlyc3RUeXBlJiwg
Y29uc3QgU2Vjb25kVHlwZSYpOwordGVtcGxhdGU8dHlwZW5hbWUgRmlyc3RUeXBlLCB0eXBlbmFt
ZSBTZWNvbmRUeXBlPiBKU0M6OkpTVmFsdWUganNQYWlyKEpTQzo6RXhlY1N0YXRlJiwgSlNET01H
bG9iYWxPYmplY3QqLCBGaXJzdFR5cGUmLCBTZWNvbmRUeXBlJik7CiAKIFJlZlB0cjxKU0M6OkFy
cmF5QnVmZmVyVmlldz4gdG9BcnJheUJ1ZmZlclZpZXcoSlNDOjpKU1ZhbHVlKTsKIFJlZlB0cjxK
U0M6OkludDhBcnJheT4gdG9JbnQ4QXJyYXkoSlNDOjpKU1ZhbHVlKTsKQEAgLTU0Miw3ICs1NDIs
MTIgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICByZXR1cm4gdmlldy0+d3JhcChleGVj
LCBnbG9iYWxPYmplY3QpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFJlZlB0cjxUPiYgcHRyKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VD4mIHB0cikKK3sKKyAgICByZXR1cm4gdG9KUyhl
eGVjLCBnbG9iYWxPYmplY3QsIHB0ci5nZXQoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPFQ+JiYgcHRyKQogewogICAgIHJldHVybiB0
b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHRyLmdldCgpKTsKIH0KQEAgLTU1MiwxNCArNTU3LDE0
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPCiAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFs
T2JqZWN0LCBjb25zdF9jYXN0PFQmPihwdHIuZ2V0KCkpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBSZWZQdHI8VD4m
IHB0cikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5
Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUmVmUHRyPFQ+JiYgcHRyKQogewogICAgIHJldHVybiB0b0pTTmV3bHlDcmVhdGVkKGV4
ZWMsIGdsb2JhbE9iamVjdCwgcHRyLmdldCgpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4g
aW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBSZWY8VD4mIHB0cikKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVm
UHRyPFQ+JiBwdHIpCiB7Ci0gICAgcmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQoZXhlYywgZ2xvYmFs
T2JqZWN0LCBjb25zdF9jYXN0PFQmPihwdHIuZ2V0KCkpKTsKKyAgICByZXR1cm4gdG9KU05ld2x5
Q3JlYXRlZChleGVjLCBnbG9iYWxPYmplY3QsIHB0ci5nZXQoKSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFQ+JiB2ZWN0b3Ip
CkBAIC02NTYsNyArNjYxLDcgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSBqc1BhaXIoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICByZXR1cm4g
Y29uc3RydWN0QXJyYXkoJnN0YXRlLCAwLCBnbG9iYWxPYmplY3QsIGFyZ3MpOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBGaXJzdFR5cGUsIHR5cGVuYW1lIFNlY29uZFR5cGU+IGlubGluZSBKU0M6
OkpTVmFsdWUganNQYWlyKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgRmlyc3RUeXBlJiB2YWx1ZTEsIGNvbnN0IFNlY29uZFR5cGUm
IHZhbHVlMikKK3RlbXBsYXRlPHR5cGVuYW1lIEZpcnN0VHlwZSwgdHlwZW5hbWUgU2Vjb25kVHlw
ZT4gaW5saW5lIEpTQzo6SlNWYWx1ZSBqc1BhaXIoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBGaXJzdFR5cGUmIHZhbHVlMSwgU2Vjb25kVHlw
ZSYgdmFsdWUyKQogewogICAgIHJldHVybiBqc1BhaXIoc3RhdGUsIGdsb2JhbE9iamVjdCwgdG9K
Uygmc3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUxKSwgdG9KUygmc3RhdGUsIGdsb2JhbE9iamVj
dCwgdmFsdWUyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVByb21pc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNl
LmNwcAppbmRleCA4OTZmODQ5NDM1YjJhNDkwMmRhN2YyZDE3ZWY3Y2Y2NzQzYTYxZjExLi5hMjE0
Yjg3YmM2OThlOTUwMDg0ODI4M2YwZjc3ZGI2MDM1MmEyNDY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBmdWxm
aWxsUHJvbWlzZVdpdGhKU09OKERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSwgY29uc3QgU3RyaW5n
JiBkYXRhKQogewogICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IHBhcnNlQXNKU09OKHByb21pc2Uu
Z2xvYmFsT2JqZWN0KCkuZ2xvYmFsRXhlYygpLCBkYXRhKTsKICAgICBpZiAoIXZhbHVlKQotICAg
ICAgICBwcm9taXNlLnJlamVjdDxFeGNlcHRpb25Db2RlPihTWU5UQVhfRVJSKTsKKyAgICAgICAg
cHJvbWlzZS5yZWplY3QoU1lOVEFYX0VSUik7CiAgICAgZWxzZQogICAgICAgICBwcm9taXNlLnJl
c29sdmUodmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2Uu
aAppbmRleCBmYjUxYjcyMjdmMWYxMjkxYTA2NzM5NWQ5MGNiMmQwODY1NzYxYzE3Li5kZDAyMTFj
YTEzZDkyYTc5MWI2MDk1Y2NhODZmOWE1OTE0ZWFhMWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVByb21pc2UuaApAQCAtMzMsMTUgKzMzLDkyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAordGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3M+CitzdHJ1Y3QgVHlwZUluc3Bl
Y3RvciB7Citwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdGV4
cHIgYXV0byB0ZXN0SXNWZWN0b3IoaW50KSAtPiBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5z
aHJpbmtUb0ZpdCgpLCBib29sKCkpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdGF0aWMgY29uc3RleHByIGJvb2wgdGVzdElzVmVjdG9yKC4uLikgeyByZXR1cm4g
ZmFsc2U7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdGV4cHIgYXV0
byB0ZXN0SXNSZWYoaW50KSAtPiBkZWNsdHlwZShUOjppc1JlZikgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0ZXN0SXNSZWYo
Li4uKSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIHRlc3RJc1JlZlB0cihpbnQpIC0+IGRlY2x0eXBlKFQ6OmlzUmVmUHRy
KSB7IHJldHVybiB0cnVlOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0
ZXhwciBib29sIHRlc3RJc1JlZlB0ciguLi4pIHsgcmV0dXJuIGZhbHNlOyB9CisKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNSZWZPclJlZlB0ciA9IHRlc3RJc1JlZjxET01D
bGFzcz4oMCkgfHwgdGVzdElzUmVmUHRyPERPTUNsYXNzPigwKTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNQYXNzQnlWYWx1ZVR5cGUgPSBzdGQ6OmlzX3BvaW50ZXI8RE9NQ2xhc3M+Ojp2
YWx1ZQorICAgICAgICB8fCBzdGQ6OmlzX3NhbWU8RE9NQ2xhc3MsIHN0ZDo6bnVsbHB0cl90Pjo6
dmFsdWUKKyAgICAgICAgfHwgc3RkOjppc19zYW1lPERPTUNsYXNzLCBKU0M6OkpTVmFsdWU+Ojp2
YWx1ZQorICAgICAgICB8fCBzdGQ6OmlzX3NhbWU8RE9NQ2xhc3MsIGJvb2w+Ojp2YWx1ZTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNQYXNzQnlDb25zdFJlZlR5cGUgPSB0ZXN0SXNWZWN0
b3I8RE9NQ2xhc3M+KDApCisgICAgICAgIHx8IHN0ZDo6aXNfc2FtZTxET01DbGFzcywgU3RyaW5n
Pjo6dmFsdWU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5hbWUgRW5h
YmxlID0gdm9pZD4KK3N0cnVjdCBQcm9taXNlUmVzdWx0SW5zcGVjdG9yIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5VmFsdWUgPSBmYWxzZTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgcGFzc0J5UmVmID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgcGFzc0J5VVJlZiA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBwYXNzQnlD
b25zdFJlZiA9IGZhbHNlOworCisgICAgdHlwZWRlZiBET01DbGFzcyYgVHlwZTsKK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPgorc3RydWN0IFByb21pc2VSZXN1bHRJbnNwZWN0b3I8
RE9NQ2xhc3MsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFR5cGVJbnNwZWN0b3I8RE9NQ2xhc3M+
Ojppc1Bhc3NCeVZhbHVlVHlwZT46OnR5cGU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgcGFzc0J5VmFsdWUgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBw
YXNzQnlSZWYgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5VVJlZiA9
IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBwYXNzQnlDb25zdFJlZiA9IGZhbHNl
OworCisgICAgdHlwZWRlZiBET01DbGFzcyBUeXBlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
RE9NQ2xhc3M+CitzdHJ1Y3QgUHJvbWlzZVJlc3VsdEluc3BlY3RvcjxET01DbGFzcywgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8VHlwZUluc3BlY3RvcjxET01DbGFzcz46OmlzUGFzc0J5Q29uc3RS
ZWZUeXBlPjo6dHlwZT4geworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBwYXNz
QnlWYWx1ZSA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBwYXNzQnlSZWYgPSBm
YWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5VVJlZiA9IGZhbHNlOworICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBwYXNzQnlDb25zdFJlZiA9IHRydWU7CisKKyAgICB0eXBl
ZGVmIGNvbnN0IERPTUNsYXNzJiBUeXBlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xh
c3M+CitzdHJ1Y3QgUHJvbWlzZVJlc3VsdEluc3BlY3RvcjxET01DbGFzcywgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8VHlwZUluc3BlY3RvcjxET01DbGFzcz46OmlzUmVmT3JSZWZQdHI+Ojp0eXBl
PiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeVZhbHVlID0gZmFsc2U7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeVJlZiA9IGZhbHNlOworICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBwYXNzQnlVUmVmID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
cGFzc0J5Q29uc3RSZWYgPSBmYWxzZTsKK307CisKIGNsYXNzIERlZmVycmVkV3JhcHBlciB7CiBw
dWJsaWM6CiAgICAgRGVmZXJyZWRXcmFwcGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxP
YmplY3QqLCBKU0M6OkpTUHJvbWlzZURlZmVycmVkKik7CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBS
ZXNvbHZlUmVzdWx0VHlwZT4KLSAgICB2b2lkIHJlc29sdmUoY29uc3QgUmVzb2x2ZVJlc3VsdFR5
cGUmKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8UHJvbWlzZVJlc3VsdEluc3BlY3RvcjxSZXNvbHZlUmVzdWx0VHlwZT46OnBh
c3NCeVZhbHVlLCB2b2lkPjo6dHlwZQorICAgIHJlc29sdmUoUmVzb2x2ZVJlc3VsdFR5cGUgcmVz
dWx0KSB7IHJlc29sdmVXaXRoVmFsdWUocmVzdWx0KTsgfQorICAgIHRlbXBsYXRlPGNsYXNzIFJl
c29sdmVSZXN1bHRUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxQcm9taXNlUmVzdWx0SW5z
cGVjdG9yPFJlc29sdmVSZXN1bHRUeXBlPjo6cGFzc0J5UmVmLCB2b2lkPjo6dHlwZQorICAgIHJl
c29sdmUoUmVzb2x2ZVJlc3VsdFR5cGUmIHJlc3VsdCkgeyByZXNvbHZlV2l0aFZhbHVlKHJlc3Vs
dCk7IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8UHJvbWlzZVJlc3VsdEluc3BlY3RvcjxSZXNvbHZlUmVzdWx0VHlwZT46OnBh
c3NCeVVSZWYsIHZvaWQ+Ojp0eXBlCisgICAgcmVzb2x2ZShSZXNvbHZlUmVzdWx0VHlwZSYmIHJl
c3VsdCkgeyByZXNvbHZlV2l0aFZhbHVlKHN0ZDo6Zm9yd2FyZDxSZXNvbHZlUmVzdWx0VHlwZT4o
cmVzdWx0KSk7IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8UHJvbWlzZVJlc3VsdEluc3BlY3RvcjxSZXNvbHZlUmVzdWx0VHlw
ZT46OnBhc3NCeUNvbnN0UmVmLCB2b2lkPjo6dHlwZQorICAgIHJlc29sdmUoY29uc3QgUmVzb2x2
ZVJlc3VsdFR5cGUmIHJlc3VsdCkgeyByZXNvbHZlV2l0aFZhbHVlKHJlc3VsdCk7IH0KKworICAg
IHRlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PFByb21pc2VSZXN1bHRJbnNwZWN0b3I8UmVqZWN0UmVzdWx0VHlwZT46OnBhc3NCeVZhbHVlLCB2
b2lkPjo6dHlwZQorICAgIHJlamVjdChSZWplY3RSZXN1bHRUeXBlIHJlc3VsdCkgeyByZWplY3RX
aXRoVmFsdWUocmVzdWx0KTsgfQorICAgIHRlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1bHRJbnNwZWN0b3I8UmVqZWN0UmVz
dWx0VHlwZT46OnBhc3NCeVJlZiwgdm9pZD46OnR5cGUKKyAgICByZWplY3QoUmVqZWN0UmVzdWx0
VHlwZSYgcmVzdWx0KSB7IHJlamVjdFdpdGhWYWx1ZShyZXN1bHQpOyB9CisgICAgdGVtcGxhdGU8
Y2xhc3MgUmVqZWN0UmVzdWx0VHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8UHJvbWlzZVJl
c3VsdEluc3BlY3RvcjxSZWplY3RSZXN1bHRUeXBlPjo6cGFzc0J5VVJlZiwgdm9pZD46OnR5cGUK
KyAgICByZWplY3QoUmVqZWN0UmVzdWx0VHlwZSYmIHJlc3VsdCkgeyByZWplY3RXaXRoVmFsdWUo
c3RkOjpmb3J3YXJkPFJlamVjdFJlc3VsdFR5cGU+KHJlc3VsdCkpOyB9CisgICAgdGVtcGxhdGU8
Y2xhc3MgUmVqZWN0UmVzdWx0VHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8UHJvbWlzZVJl
c3VsdEluc3BlY3RvcjxSZWplY3RSZXN1bHRUeXBlPjo6cGFzc0J5Q29uc3RSZWYsIHZvaWQ+Ojp0
eXBlCisgICAgcmVqZWN0KGNvbnN0IFJlamVjdFJlc3VsdFR5cGUmIHJlc3VsdCkgeyByZWplY3RX
aXRoVmFsdWUocmVzdWx0KTsgfQogCi0gICAgdGVtcGxhdGU8Y2xhc3MgUmVqZWN0UmVzdWx0VHlw
ZT4KLSAgICB2b2lkIHJlamVjdChjb25zdCBSZWplY3RSZXN1bHRUeXBlJik7CisgICAgdm9pZCBy
ZWplY3QoRXhjZXB0aW9uQ29kZSk7CiAKICAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KCkgY29uc3Q7CiAgICAgSlNDOjpKU1ZhbHVlIHByb21pc2UoKSBjb25zdDsKQEAgLTUxLDYg
KzEyOCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNvbHZlKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNDOjpKU1ZhbHVlIHJlc29sdXRpb24pIHsgY2FsbEZ1bmN0aW9uKHN0YXRlLCBtX2RlZmVy
cmVkLT5yZXNvbHZlKCksIHJlc29sdXRpb24pOyB9CiAgICAgdm9pZCByZWplY3QoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgcmVzb2x1dGlvbikgeyBjYWxsRnVuY3Rpb24oc3Rh
dGUsIG1fZGVmZXJyZWQtPnJlamVjdCgpLCByZXNvbHV0aW9uKTsgfQogCisgICAgdGVtcGxhdGU8
Y2xhc3MgUmVqZWN0UmVzdWx0VHlwZT4gdm9pZCByZWplY3RXaXRoVmFsdWUoUmVqZWN0UmVzdWx0
VHlwZSYmKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4gdm9pZCByZXNv
bHZlV2l0aFZhbHVlKFJlc29sdmVSZXN1bHRUeXBlJiYpOworCiAgICAgSlNDOjpTdHJvbmc8SlNE
T01HbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNQ
cm9taXNlRGVmZXJyZWQ+IG1fZGVmZXJyZWQ7CiB9OwpAQCAtNzEsNyArMTUxLDcgQEAgaW5saW5l
IEpTQzo6SlNWYWx1ZSBjYWxsUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNDOjpFbmNvZGVkSlNWYWwKICAgICByZXR1cm4gcHJvbWlzZURlZmVycmVkLnByb21pc2UoKTsK
IH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFcnJvcj4KK3RlbXBsYXRl
IDx0eXBlbmFtZSBWYWx1ZT4KIGNsYXNzIERPTVByb21pc2UgewogcHVibGljOgogICAgIERPTVBy
b21pc2UoRGVmZXJyZWRXcmFwcGVyJiYgd3JhcHBlcikgOiBtX3dyYXBwZXIoV1RGTW92ZSh3cmFw
cGVyKSkgeyB9CkBAIC04MCwxMDUgKzE2MCwxMDUgQEAgcHVibGljOgogICAgIERPTVByb21pc2Uo
Y29uc3QgRE9NUHJvbWlzZSYpID0gZGVmYXVsdDsKICAgICBET01Qcm9taXNlJiBvcGVyYXRvcj0o
RE9NUHJvbWlzZSBjb25zdCYpID0gZGVmYXVsdDsKIAotICAgIHZvaWQgcmVzb2x2ZShjb25zdCBW
YWx1ZSYgdmFsdWUpIHsgbV93cmFwcGVyLnJlc29sdmU8VmFsdWU+KHZhbHVlKTsgfQotICAgIHZv
aWQgcmVqZWN0KGNvbnN0IEVycm9yJiBlcnJvcikgeyBtX3dyYXBwZXIucmVqZWN0PEVycm9yPihl
cnJvcik7IH0KKyAgICB2b2lkIHJlc29sdmUodHlwZW5hbWUgUHJvbWlzZVJlc3VsdEluc3BlY3Rv
cjxWYWx1ZT46OlR5cGUgdmFsdWUpIHsgbV93cmFwcGVyLnJlc29sdmUodmFsdWUpOyB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFcnJvclR5cGU+IHZvaWQgcmVqZWN0KEVycm9yVHlwZSYmIGVy
cm9yKSB7IG1fd3JhcHBlci5yZWplY3Qoc3RkOjpmb3J3YXJkPEVycm9yVHlwZT4oZXJyb3IpKTsg
fQogCiBwcml2YXRlOgogICAgIERlZmVycmVkV3JhcHBlciBtX3dyYXBwZXI7CiB9OwogCi10ZW1w
bGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4KLWlubGluZSB2b2lkIERlZmVycmVkV3JhcHBl
cjo6cmVzb2x2ZShjb25zdCBSZXNvbHZlUmVzdWx0VHlwZSYgcmVzdWx0KQoraW5saW5lIHZvaWQg
RGVmZXJyZWRXcmFwcGVyOjpyZWplY3QoRXhjZXB0aW9uQ29kZSBlYykKIHsKICAgICBBU1NFUlQo
bV9kZWZlcnJlZCk7CiAgICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKICAgICBKU0M6OkV4ZWNT
dGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAgIHJlc29sdmUoKmV4ZWMsIHRvSlMoZXhlYywgbV9n
bG9iYWxPYmplY3QuZ2V0KCksIHJlc3VsdCkpOworICAgIHJlamVjdCgqZXhlYywgY3JlYXRlRE9N
RXhjZXB0aW9uKGV4ZWMsIGVjKSk7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5
cGU+Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlamVjdChjb25zdCBSZWplY3RSZXN1
bHRUeXBlJiByZXN1bHQpCit0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4KK2lubGlu
ZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZVdpdGhWYWx1ZShSZXNvbHZlUmVzdWx0VHlw
ZSYmIHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9kZWZlcnJlZCk7CiAgICAgQVNTRVJUKG1fZ2xv
YmFsT2JqZWN0KTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAgIHJl
amVjdCgqZXhlYywgdG9KUyhleGVjLCBtX2dsb2JhbE9iamVjdC5nZXQoKSwgcmVzdWx0KSk7Cisg
ICAgcmVzb2x2ZSgqZXhlYywgdG9KUyhleGVjLCBtX2dsb2JhbE9iamVjdC5nZXQoKSwgc3RkOjpm
b3J3YXJkPFJlc29sdmVSZXN1bHRUeXBlPihyZXN1bHQpKSk7CiB9CiAKLXRlbXBsYXRlPD4KLWlu
bGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0KGNvbnN0IHN0ZDo6bnVsbHB0cl90JikK
K3RlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+CitpbmxpbmUgdm9pZCBEZWZlcnJlZFdy
YXBwZXI6OnJlamVjdFdpdGhWYWx1ZShSZWplY3RSZXN1bHRUeXBlJiYgcmVzdWx0KQogewogICAg
IEFTU0VSVChtX2RlZmVycmVkKTsKICAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOwogICAgIEpT
Qzo6RXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgcmVqZWN0KCpleGVjLCBKU0M6Ompz
TnVsbCgpKTsKKyAgICByZWplY3QoKmV4ZWMsIHRvSlMoZXhlYywgbV9nbG9iYWxPYmplY3QuZ2V0
KCksIHN0ZDo6Zm9yd2FyZDxSZWplY3RSZXN1bHRUeXBlPihyZXN1bHQpKSk7CiB9CiAKIHRlbXBs
YXRlPD4KLWlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0KGNvbnN0IEpTQzo6SlNW
YWx1ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmUoYm9vbCBy
ZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1fZGVmZXJyZWQpOwogICAgIEFTU0VSVChtX2dsb2JhbE9i
amVjdCk7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICByZWplY3Qo
KmV4ZWMsIHZhbHVlKTsKKyAgICByZXNvbHZlKCpleGVjLCBKU0M6OmpzQm9vbGVhbihyZXN1bHQp
KTsKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3Q8
RXhjZXB0aW9uQ29kZT4oY29uc3QgRXhjZXB0aW9uQ29kZSYgZWMpCitpbmxpbmUgdm9pZCBEZWZl
cnJlZFdyYXBwZXI6OnJlc29sdmUoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIEFTU0VSVCht
X2RlZmVycmVkKTsKICAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOwogICAgIEpTQzo6RXhlY1N0
YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9j
a0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgcmVqZWN0KCpleGVjLCBjcmVhdGVET01FeGNlcHRp
b24oZXhlYywgZWMpKTsKKyAgICByZXNvbHZlKCpleGVjLCB2YWx1ZSk7CiB9CiAKIHRlbXBsYXRl
PD4KLWlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZTxTdHJpbmc+KGNvbnN0IFN0
cmluZyYgcmVzdWx0KQoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3QoSlNDOjpK
U1ZhbHVlIHZhbHVlKQogewogICAgIEFTU0VSVChtX2RlZmVycmVkKTsKICAgICBBU1NFUlQobV9n
bG9iYWxPYmplY3QpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAg
cmVzb2x2ZSgqZXhlYywganNTdHJpbmcoZXhlYywgcmVzdWx0KSk7CisgICAgcmVqZWN0KCpleGVj
LCB2YWx1ZSk7CiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6
cmVzb2x2ZTxib29sPihjb25zdCBib29sJiByZXN1bHQpCitpbmxpbmUgdm9pZCBEZWZlcnJlZFdy
YXBwZXI6OnJlc29sdmUoc3RkOjpudWxscHRyX3QpCiB7CiAgICAgQVNTRVJUKG1fZGVmZXJyZWQp
OwogICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMg
PSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxv
Y2tlcihleGVjKTsKLSAgICByZXNvbHZlKCpleGVjLCBKU0M6OmpzQm9vbGVhbihyZXN1bHQpKTsK
KyAgICByZXNvbHZlKCpleGVjLCBKU0M6OmpzVW5kZWZpbmVkKCkpOwogfQogCiB0ZW1wbGF0ZTw+
Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmU8SlNDOjpKU1ZhbHVlPihjb25z
dCBKU0M6OkpTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWpl
Y3Qoc3RkOjpudWxscHRyX3QpCiB7CiAgICAgQVNTRVJUKG1fZGVmZXJyZWQpOwogICAgIEFTU0VS
VChtX2dsb2JhbE9iamVjdCk7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsK
LSAgICByZXNvbHZlKCpleGVjLCB2YWx1ZSk7CisgICAgcmVqZWN0KCpleGVjLCBKU0M6OmpzTnVs
bCgpKTsKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNv
bHZlKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikKK2lubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6
cmVzb2x2ZShjb25zdCBTdHJpbmcmIHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9kZWZlcnJlZCk7
CiAgICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9
IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9j
a2VyKGV4ZWMpOwotICAgIHJlc29sdmUoKmV4ZWMsIEpTQzo6anNVbmRlZmluZWQoKSk7CisgICAg
cmVzb2x2ZSgqZXhlYywganNTdHJpbmcoZXhlYywgcmVzdWx0KSk7CiB9CiAKIHRlbXBsYXRlPD4K
LWlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0PFN0cmluZz4oY29uc3QgU3RyaW5n
JiByZXN1bHQpCitpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlamVjdChjb25zdCBTdHJp
bmcmIHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9kZWZlcnJlZCk7CiAgICAgQVNTRVJUKG1fZ2xv
YmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3Vi
dGxlQ3J5cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxl
Q3J5cHRvQ3VzdG9tLmNwcAppbmRleCA0ZmE2NzgyNGU3NWVkYjVjYjNlNmJhODgwMWE2YTc0YWNj
Zjg4ZGFhLi44YzZkODhhNTg0YTk2ZjNiN2EwNTgyZjRlMjJlZWM4MWUyMWExYjAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3Bw
CkBAIC01NTAsNyArNTUwLDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KEV4
ZWNTdGF0ZSYgc3RhdGUpCiAgICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCA9
IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSk7CiAgICAg
RGVmZXJyZWRXcmFwcGVyIHdyYXBwZXIoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgcHJvbWlzZURl
ZmVycmVkKTsKICAgICBhdXRvIHN1Y2Nlc3NDYWxsYmFjayA9IFt3cmFwcGVyXShDcnlwdG9LZXkm
IHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIHdyYXBwZXIucmVzb2x2ZSgmcmVzdWx0KTsKKyAg
ICAgICAgd3JhcHBlci5yZXNvbHZlKHJlc3VsdCk7CiAgICAgfTsKICAgICBhdXRvIGZhaWx1cmVD
YWxsYmFjayA9IFt3cmFwcGVyXSgpIG11dGFibGUgewogICAgICAgICB3cmFwcGVyLnJlamVjdChu
dWxscHRyKTsKQEAgLTc4NSw3ICs3ODUsNyBAQCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjp1bndy
YXBLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKIAogICAgIGF1dG8gZGVjcnlwdFN1Y2Nlc3NDYWxsYmFj
ayA9IFtkb21HbG9iYWxPYmplY3QsIGtleUZvcm1hdCwgdW53cmFwcGVkS2V5QWxnb3JpdGhtUHRy
LCB1bndyYXBwZWRLZXlBbGdvcml0aG1QYXJhbWV0ZXJzUHRyLCBleHRyYWN0YWJsZSwga2V5VXNh
Z2VzLCB3cmFwcGVyXShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJlc3VsdCkgbXV0YWJsZSB7CiAg
ICAgICAgIGF1dG8gaW1wb3J0U3VjY2Vzc0NhbGxiYWNrID0gW3dyYXBwZXJdKENyeXB0b0tleSYg
a2V5KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHdyYXBwZXIucmVzb2x2ZSgma2V5KTsKKyAgICAg
ICAgICAgIHdyYXBwZXIucmVzb2x2ZShrZXkpOwogICAgICAgICB9OwogICAgICAgICBhdXRvIGlt
cG9ydEZhaWx1cmVDYWxsYmFjayA9IFt3cmFwcGVyXSgpIG11dGFibGUgewogICAgICAgICAgICAg
d3JhcHBlci5yZWplY3QobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5oCmluZGV4IDg5NzFlZjFk
Mjk3YTIyZmJlY2JjZTNlMGVhYmYwMzlhNDc2ZTEzNjMuLmUyNDkzNGQ3NzQyZDUwZGUwZDI2NjY3
ZmE3YTZhZmFjYjYzOWQxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5oCkBAIC02NSw3ICs2NSw3IEBA
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIExvYWRTdGF0dXMgeyBVbmxvYWRlZCwgTG9hZGluZywg
TG9hZGVkLCBFcnJvciB9OwogICAgIExvYWRTdGF0dXMgc3RhdHVzKCkgY29uc3Q7CiAKLSAgICB0
eXBlZGVmIERPTVByb21pc2U8Rm9udEZhY2UmLCBFeGNlcHRpb25Db2RlPiBQcm9taXNlOworICAg
IHR5cGVkZWYgRE9NUHJvbWlzZTxGb250RmFjZSY+IFByb21pc2U7CiAgICAgdm9pZCByZWdpc3Rl
ckxvYWRlZChQcm9taXNlJiYpOwogCiAgICAgdm9pZCBsb2FkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
YWNlU2V0LmNwcAppbmRleCA3ZTc0NDk4M2RmODFlN2FiZDBkYzEyMzFhZTU2MjA0NDIxZjk4YzI2
Li4xODllNWJkZmFmZDAxN2FhYTg2ZmQ4ZDM3N2E5MDVjZmNlYzc4MzVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZVNldC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgUmVmUHRyPEZvbnRGYWNlPiBGb250
RmFjZVNldDo6SXRlcmF0b3I6Om5leHQoKQogICAgIHJldHVybiBtX3RhcmdldC0+YmFja2luZygp
W21faW5kZXgrK10ud3JhcHBlcigpOwogfQogCi1Gb250RmFjZVNldDo6UGVuZGluZ1Byb21pc2U6
OlBlbmRpbmdQcm9taXNlKFByb21pc2UmJiBwcm9taXNlKQorRm9udEZhY2VTZXQ6OlBlbmRpbmdQ
cm9taXNlOjpQZW5kaW5nUHJvbWlzZShMb2FkUHJvbWlzZSYmIHByb21pc2UpCiAgICAgOiBwcm9t
aXNlKFdURk1vdmUocHJvbWlzZSkpCiB7CiB9CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBGb250
RmFjZVNldDo6Y2xlYXIoKQogICAgICAgICBtX2JhY2tpbmctPnJlbW92ZShtX2JhY2tpbmcuZ2V0
KClbMF0pOwogfQogCi12b2lkIEZvbnRGYWNlU2V0Ojpsb2FkKGNvbnN0IFN0cmluZyYgZm9udCwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQordm9pZCBGb250
RmFjZVNldDo6bG9hZChjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgTG9h
ZFByb21pc2UmJiBwcm9taXNlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1
dG8gbWF0Y2hpbmdGYWNlcyA9IG1fYmFja2luZy0+bWF0Y2hpbmdGYWNlcyhmb250LCB0ZXh0LCBl
Yyk7CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBGb250RmFjZVNldDo6bG9hZChjb25zdCBTdHJp
bmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRGVmZXJyZWRXcmFwcGVyJiYKIAogICAgIGZv
ciAoYXV0byYgZmFjZSA6IG1hdGNoaW5nRmFjZXMpIHsKICAgICAgICAgaWYgKGZhY2UuZ2V0KCku
c3RhdHVzKCkgPT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6RmFpbHVyZSkgewotICAgICAgICAgICAg
cHJvbWlzZS5yZWplY3QoRE9NQ29yZUV4Y2VwdGlvbjo6Y3JlYXRlKEV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbihORVRXT1JLX0VSUikpLnB0cigpKTsKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0
KERPTUNvcmVFeGNlcHRpb246OmNyZWF0ZShFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oTkVUV09S
S19FUlIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0xNjcs
NyArMTY3LDcgQEAgYm9vbCBGb250RmFjZVNldDo6Y2hlY2soY29uc3QgU3RyaW5nJiBmYW1pbHks
IGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYKICAgICByZXR1cm4gbV9iYWNraW5n
LT5jaGVjayhmYW1pbHksIHRleHQsIGVjKTsKIH0KIAotdm9pZCBGb250RmFjZVNldDo6cmVnaXN0
ZXJSZWFkeShQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgRm9udEZhY2VTZXQ6OnJlZ2lzdGVyUmVh
ZHkoUmVhZHlQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1fcHJvbWlzZSk7CiAg
ICAgaWYgKG1faXNSZWFkeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
YWNlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAppbmRleCBmMDQ3MGU5
ZDYyOGJiZTdjMDI4YTkxMGJmNzBmMDliZmFjNmY4ZTAxLi44OWFkMDhkMDliY2YyN2Q5NzgxNDk2
M2Q4YzdmOWRmNjMzMzg3OTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZh
Y2VTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaApAQCAtNDcsMTQg
KzQ3LDE1IEBAIHB1YmxpYzoKICAgICBib29sIHJlbW92ZShGb250RmFjZSYpOwogICAgIHZvaWQg
Y2xlYXIoKTsKIAotICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmlu
ZyYgdGV4dCwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSk7CisgICAgdHlwZWRlZiBET01Qcm9t
aXNlPFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+Pj4gTG9hZFByb21pc2U7CisgICAgdm9pZCBsb2Fk
KGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBMb2FkUHJvbWlzZSYmKTsK
ICAgICBib29sIGNoZWNrKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBF
eGNlcHRpb25Db2RlJik7CiAKICAgICBlbnVtIGNsYXNzIExvYWRTdGF0dXMgeyBMb2FkaW5nLCBM
b2FkZWQgfTsKICAgICBMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OwogCi0gICAgdHlwZWRlZiBE
T01Qcm9taXNlPEZvbnRGYWNlU2V0JiwgRE9NQ29yZUV4Y2VwdGlvbiY+IFByb21pc2U7Ci0gICAg
dm9pZCByZWdpc3RlclJlYWR5KFByb21pc2UmJik7CisgICAgdHlwZWRlZiBET01Qcm9taXNlPEZv
bnRGYWNlU2V0Jj4gUmVhZHlQcm9taXNlOworICAgIHZvaWQgcmVnaXN0ZXJSZWFkeShSZWFkeVBy
b21pc2UmJik7CiAKICAgICBDU1NGb250RmFjZVNldCYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFj
a2luZzsgfQogCkBAIC03NCwxOSArNzUsMTggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHN0
cnVjdCBQZW5kaW5nUHJvbWlzZSA6IFJlZkNvdW50ZWQ8UGVuZGluZ1Byb21pc2U+IHsKLSAgICAg
ICAgdHlwZWRlZiBET01Qcm9taXNlPFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiYsIERPTUNvcmVF
eGNlcHRpb24mPiBQcm9taXNlOwotICAgICAgICBzdGF0aWMgUmVmPFBlbmRpbmdQcm9taXNlPiBj
cmVhdGUoUHJvbWlzZSYmIHByb21pc2UpCisgICAgICAgIHN0YXRpYyBSZWY8UGVuZGluZ1Byb21p
c2U+IGNyZWF0ZShMb2FkUHJvbWlzZSYmIHByb21pc2UpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFBlbmRpbmdQcm9taXNlKFdURk1vdmUocHJvbWlzZSkpKTsK
ICAgICAgICAgfQogICAgICAgICB+UGVuZGluZ1Byb21pc2UoKTsKIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIFBlbmRpbmdQcm9taXNlKFByb21pc2UmJik7CisgICAgICAgIFBlbmRpbmdQcm9taXNl
KExvYWRQcm9taXNlJiYpOwogCiAgICAgcHVibGljOgogICAgICAgICBWZWN0b3I8UmVmUHRyPEZv
bnRGYWNlPj4gZmFjZXM7Ci0gICAgICAgIFByb21pc2UgcHJvbWlzZTsKKyAgICAgICAgTG9hZFBy
b21pc2UgcHJvbWlzZTsKICAgICAgICAgYm9vbCBoYXNSZWFjaGVkVGVybWluYWxTdGF0ZSB7IGZh
bHNlIH07CiAgICAgfTsKIApAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8
Q1NTRm9udEZhY2VTZXQ+IG1fYmFja2luZzsKICAgICBIYXNoTWFwPFJlZlB0cjxDU1NGb250RmFj
ZT4sIFZlY3RvcjxSZWY8UGVuZGluZ1Byb21pc2U+Pj4gbV9wZW5kaW5nUHJvbWlzZXM7Ci0gICAg
T3B0aW9uYWw8UHJvbWlzZT4gbV9wcm9taXNlOworICAgIE9wdGlvbmFsPFJlYWR5UHJvbWlzZT4g
bV9wcm9taXNlOwogICAgIGJvb2wgbV9pc1JlYWR5IHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggYjQzMWIwYzcyNzU0MWRhMDBkMDIxOTA5
NDdkZjZmMWRkZDFkNDdjMS4uYzg0MTkzYjNlMDA5NmRiMTllNWY4NjRhNGJiNWFiOGJiODZjMTkz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTIxMiw3ICsyMTIs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBsb29wKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRMb29wKGJv
b2wgYik7CiAKLSAgICB0eXBlZGVmIERPTVByb21pc2U8c3RkOjpudWxscHRyX3QsIERPTUVycm9y
Jj4gUGxheVByb21pc2U7CisgICAgdHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0cl90PiBQ
bGF5UHJvbWlzZTsKICAgICB2b2lkIHBsYXkoUGxheVByb21pc2UmJik7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHBsYXkoKSBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278829</attachid>
            <date>2016-05-13 03:31:42 -0700</date>
            <delta_ts>2016-05-17 02:48:24 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-157307-20160513123232.patch</filename>
            <type>text/plain</type>
            <size>36963</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMwYmZmMjc0MjI3NTE4Nzk2MTBmZGRl
OTU2ZWEyZmFiZGRmNDdlY2QuLjcyZGIyNmZlYjY2ZDZkOWQ5NGExN2Y5MjBmMGY2NTI0Y2VhMDU5
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDUtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBET01Qcm9taXNlIHNob3VsZCBvbmx5
IHJlc3RyaWN0IHRoZSByZXNvbHV0aW9uIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzMwNworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgICogd3RmL1JlZi5oOiBBZGRpbmcgc3RhdGljIGNvbnN0ZXhwciB0
byBlYXNlIGRldGVjdGlvbiBvZiBSZWYgZm9yIHRlbXBsYXRlcy4KKyAgICAgICAgKiB3dGYvUmVm
UHRyLmg6IERpdHRvLgorCiAyMDE2LTA1LTEyICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxl
LmNvbT4KIAogICAgICAgICBVc2UgU2VjVGFzayBTUEkgdG8gcmV0cmlldmUgY29kZSBzaWduaW5n
IGlkZW50aWZpZXIgZm9yIHVzZXIgZGlyZWN0b3J5IHN1ZmZpeApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQwYzYw
ZThmYmU1MjhmMDUwNjZlNTJhOGEyOWY0OWM5YjM0NDU2ZWEuLjBhNGI0MjEzZGIwYjcyNmVhOTRj
ODg4MGFiNzI2NWI2OTNjYWI0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NCBAQAorMjAxNi0w
NS0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAg
ICAgIERPTVByb21pc2Ugc2hvdWxkIG9ubHkgcmVzdHJpY3QgdGhlIHJlc29sdXRpb24gdHlwZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MzA3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVtb3ZpbmcgZnJv
bSBET01Qcm9taXNlIHRoZSByZWplY3Rpb24gdGVtcGxhdGUgcGFyYW1ldGVyLgorICAgICAgICBT
dXBwb3J0ZWQgcmVqZWN0aW9uIHR5cGVzIGFyZSBpbnRlZ2VycyAoRXhjZXB0aW9uIGNvZGVzKSBh
bmQgRE9NIG9iamVjdHMgKERPTUVycm9yIHR5cGljYWxseSkuCisKKyAgICAgICAgVXBkYXRlZCB0
b0pTIGFuZCBEZWZlcnJlZFdyYXBwZXIgdG8gYWNjZXB0IFJlZjw+JiYgYW5kIFJlZlB0cjw+JiYu
CisgICAgICAgIFByZXZpb3VzbHkgUmVmPD4mJiB3ZXJlIG5vdCBhY2NlcHRlZCBhbmQgb25seSAi
Y29uc3QgUmVmUHRyPD4mIiB3YXMgYWNjZXB0ZWQuCisgICAgICAgIFRoaXMgaW4gdHVybiBjcmVh
dGVkIGFuIHVuZWNlc3NhcnkgY2h1cm4gY291bnQgd2hlbiBjYWxsaW5nIHRvSlMuCisKKyAgICAg
ICAgQ2hhbmdlcyBhbHNvIGFsbG93IGluIG1vc3QgY2FzZXMgdG8gcmVtb3ZlIHRoZSBuZWVkIGZv
ciBleHBsaWN0bHkgZGVjbGFyaW5nIHRoZQorICAgICAgICByZWplY3Rpb24vcmVzb2x1dGlvbiB0
eXBlLgorCisgICAgICAgIE1pbm9yIHJlZmFjdG9yaW5nIG9mIEZvbnRGYWNlU2V0IHByb21pc2Ug
aGFuZGxpbmcgdG8gdXNlIERPTVByb21pc2UgaW4gbGlldSBvZiBEZWZlcnJlZFdyYXBwZXIuCisK
KyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKyAgICAgICAgQ2hhbmdlcyBzaG91
bGQgbm90IGJlIHZpc2libGUgZnJvbSB1c2VyIHNjcmlwdHMuCisKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1
bWUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lVGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpibG9iRnJvbUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keTo6bG9hZGluZ0ZhaWxlZCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
aDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Zm9ybURhdGEpOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5T3duZXI6OmFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVy
OjpibG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpmb3JtRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6anNvbik6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlPd25lcjo6dGV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpkaWRDcmVhdGVTdHJlYW0pOgorICAgICAgICAq
IE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
UGFpcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmZ1bGZpbGxQcm9taXNlV2l0aEpTT04pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NUHJvbWlzZS5oOgorICAgICAgICAoV2ViQ29yZTo6VHlwZUluc3BlY3Rvcjo6ZGVjbHR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6VHlwZUluc3BlY3Rvcjo6dGVzdElzVmVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlR5cGVJbnNwZWN0b3I6OnRlc3RJc1JlZk9yUmVmUHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEZWZlcnJlZFdyYXBwZXI6OnJlamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpET01Qcm9taXNl
OjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OnJlamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmVXaXRoVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGVmZXJyZWRXcmFwcGVyOjpyZWplY3RXaXRoVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Y2FsbFByb21pc2VGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNT
dWJ0bGVDcnlwdG9DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86
OmltcG9ydEtleSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6dW53cmFwS2V5
KToKKyAgICAgICAgKiBjc3MvRm9udEZhY2UuaDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2VTZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OlBlbmRpbmdQcm9taXNlOjpQZW5k
aW5nUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6bG9hZCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6cmVnaXN0ZXJSZWFkeSk6CisgICAgICAgICogY3Nz
L0ZvbnRGYWNlU2V0Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisKIDIw
MTYtMDUtMTIgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW2Nzcy1ncmlkXSBTaG93IGF1dG8tcmVwZWF0IGxpbmUgbmFtZXMgaW4gQ29tcHV0ZWRT
dHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9S
ZWYuaAppbmRleCA1MGE1ZTc2MTczMmRmYzI3MmYxY2JiOGRjOTViZGQ4ZjU0N2FlYWU4Li40YTcy
ODhlNGUyZWZkOTk4Yjc5Yjg0YWRlOWZhMzY5YTA4NTc5ZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9SZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWYuaApAQCAtNDYsNiArNDYsOCBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBSZWY8VD4gYWRvcHRSZWYoVCYpOwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBjbGFzcyBSZWYgewogcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc1JlZiA9IHRydWU7CisKICAgICB+UmVmKCkKICAgICB7CiAjaWYgQVNBTl9FTkFCTEVECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0
ci5oCmluZGV4IGNhNDQ2ZjRmNWRmYzM2MDFiYjUxNzUxNTUxOWJiZDNkNzNhZGRmNmIuLmVkNTFl
ZTZlNzQyOWFmZGE4ZWUzOTA1M2VhNWFlNmJjMWVlMDA2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1JlZlB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCkBAIC0zOSw2ICsz
OSw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFQgVmFsdWVUeXBlOwogICAgIHR5cGVkZWYgVmFs
dWVUeXBlKiBQdHJUeXBlOwogCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUmVmUHRyID0g
dHJ1ZTsKKwogICAgIEFMV0FZU19JTkxJTkUgUmVmUHRyKCkgOiBtX3B0cihudWxscHRyKSB7IH0K
ICAgICBBTFdBWVNfSU5MSU5FIFJlZlB0cihUKiBwdHIpIDogbV9wdHIocHRyKSB7IHJlZklmTm90
TnVsbChwdHIpOyB9CiAgICAgQUxXQVlTX0lOTElORSBSZWZQdHIoY29uc3QgUmVmUHRyJiBvKSA6
IG1fcHRyKG8ubV9wdHIpIHsgcmVmSWZOb3ROdWxsKG1fcHRyKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDEwYTExZjE1NWFiNzI0MTYwNmVjZWZj
MjRlMzk5NzRkNzRiNjI4YjQuLjQ2YWM0NWQ4YjhlMGRlNzhhNmIzNmU0ZTBlOTJkNjQ0NWNhNzIz
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTQz
LDcgKzQzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgUmVmUHRyPEJsb2I+
IGJsb2JGcm9tQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXIqLCBjb25zdCBTdHJpbmcmKTsKK3N0YXRp
YyBSZWY8QmxvYj4gYmxvYkZyb21BcnJheUJ1ZmZlcihBcnJheUJ1ZmZlciosIGNvbnN0IFN0cmlu
ZyYpOwogCiBGZXRjaEJvZHk6OkZldGNoQm9keShSZWY8QmxvYj4mJiBibG9iKQogICAgIDogbV90
eXBlKFR5cGU6OkJsb2IpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1
bWUoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBDb25zdW1lcjo6VHlwZSB0eXBlLCBEZWZlcnJlZFdy
YXAKICAgICB9CiAKICAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0eXBlcy4KLSAgICBwcm9t
aXNlLnJlamVjdDxFeGNlcHRpb25Db2RlPigwKTsKKyAgICBwcm9taXNlLnJlamVjdCgwKTsKIH0K
IAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIEZldGNo
Qm9keTo6Y29uc3VtZVRleHQoQ29uc3VtZXI6OlR5cGUgdHlwZSwgRGVmZXJyZWRXcmFwcGVyJiBw
cm9taXNlKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFN0cmluZyBjb250ZW50VHlwZSA9
IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBl
KG1fbWltZVR5cGUpKTsKLSAgICBwcm9taXNlLnJlc29sdmU8UmVmUHRyPEJsb2I+PihCbG9iOjpj
cmVhdGUoZXh0cmFjdEZyb21UZXh0KCksIGNvbnRlbnRUeXBlKSk7CisgICAgcHJvbWlzZS5yZXNv
bHZlKEJsb2I6OmNyZWF0ZShleHRyYWN0RnJvbVRleHQoKSwgY29udGVudFR5cGUpKTsKIH0KIAog
RmV0Y2hMb2FkZXI6OlR5cGUgRmV0Y2hCb2R5Ojpsb2FkaW5nVHlwZShDb25zdW1lcjo6VHlwZSB0
eXBlKQpAQCAtMjM2LDcgKzIzNiw3IEBAIFZlY3Rvcjx1aW50OF90PiBGZXRjaEJvZHk6OmV4dHJh
Y3RGcm9tVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1zdGF0aWMgaW5saW5l
IFJlZlB0cjxCbG9iPiBibG9iRnJvbUFycmF5QnVmZmVyKEFycmF5QnVmZmVyKiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpCitzdGF0aWMgaW5saW5lIFJlZjxCbG9iPiBibG9iRnJv
bUFycmF5QnVmZmVyKEFycmF5QnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVj
dG9yPHVpbnQ4X3Q+KCksIGNvbnRlbnRUeXBlKTsKQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lkIEZl
dGNoQm9keTo6ZnVsZmlsbFRleHRQcm9taXNlKEZldGNoQm9keTo6Q29uc3VtZXI6OlR5cGUgdHlw
ZSwgY29uc3QgU3RyaW5nJgogdm9pZCBGZXRjaEJvZHk6OmxvYWRpbmdGYWlsZWQoKQogewogICAg
IEFTU0VSVChtX2NvbnN1bWVyKTsKLSAgICBtX2NvbnN1bWVyLT5wcm9taXNlLnJlamVjdDxFeGNl
cHRpb25Db2RlPigwKTsKKyAgICBtX2NvbnN1bWVyLT5wcm9taXNlLnJlamVjdCgwKTsKICAgICBt
X2NvbnN1bWVyID0gTnVsbG9wdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmgKaW5kZXggMDQ2MDEwYTBmYjkyYjI2Njg1MGVlYTUyNmJlZTBlZDc2Y2UxODkyMi4u
NTZmM2RmZGM4NTcxYzMxNTExMmYyNjY1YzZmZmRhOTc1YTlkZjM5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGJsb2IoRmV0Y2hCb2R5T3duZXImLCBEZWZlcnJlZFdyYXBwZXImJik7CiAgICAgdm9p
ZCBqc29uKEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYpOwogICAgIHZvaWQgdGV4
dChGZXRjaEJvZHlPd25lciYsIERlZmVycmVkV3JhcHBlciYmKTsKLSAgICB2b2lkIGZvcm1EYXRh
KEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkgeyBwcm9taXNlLnJl
amVjdDxFeGNlcHRpb25Db2RlPigwKTsgfQorICAgIHZvaWQgZm9ybURhdGEoRmV0Y2hCb2R5T3du
ZXImLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKSB7IHByb21pc2UucmVqZWN0KDApOyB9CiAK
ICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCiAgICAgdm9pZCBjb25zdW1lQXNTdHJlYW0oRmV0Y2hC
b2R5T3duZXImLCBGZXRjaFJlc3BvbnNlU291cmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCmluZGV4IGNhZjRhYzhiNWNjYWQxNDM1Y2U4
ZmE2NzM2MTQyNTRiYTJlNDhjNjkuLjk2YzA0YzNkNjFkMTI5YWFmMjA1NDE3OGViNjc2OTE3MmZk
ZTU0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3du
ZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmFycmF5QnVmZmVy
KERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
aWYgKGlzRGlzdHVyYmVkKCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9uQ29k
ZT4oVHlwZUVycm9yKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoVHlwZUVycm9yKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBtX2lzRGlzdHVyYmVkID0gdHJ1ZTsKQEAgLTg1LDExICs4
NSwxMSBAQCB2b2lkIEZldGNoQm9keU93bmVyOjphcnJheUJ1ZmZlcihEZWZlcnJlZFdyYXBwZXIm
JiBwcm9taXNlKQogdm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYihEZWZlcnJlZFdyYXBwZXImJiBw
cm9taXNlKQogewogICAgIGlmIChtX2JvZHkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHByb21pc2Uu
cmVzb2x2ZTxSZWZQdHI8QmxvYj4+KEJsb2I6OmNyZWF0ZSgpKTsKKyAgICAgICAgcHJvbWlzZS5y
ZXNvbHZlKEJsb2I6OmNyZWF0ZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAo
aXNEaXN0dXJiZWQoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdDxFeGNlcHRpb25Db2RlPihU
eXBlRXJyb3IpOworICAgICAgICBwcm9taXNlLnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIG1faXNEaXN0dXJiZWQgPSB0cnVlOwpAQCAtOTksMTEgKzk5LDEx
IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2IoRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkK
IHZvaWQgRmV0Y2hCb2R5T3duZXI6OmZvcm1EYXRhKERlZmVycmVkV3JhcHBlciYmIHByb21pc2Up
CiB7CiAgICAgaWYgKG1fYm9keS5pc0VtcHR5KCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3Q8
RXhjZXB0aW9uQ29kZT4oMCk7CisgICAgICAgIHByb21pc2UucmVqZWN0KDApOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGlmIChpc0Rpc3R1cmJlZCgpKSB7Ci0gICAgICAgIHByb21pc2Uu
cmVqZWN0PEV4Y2VwdGlvbkNvZGU+KFR5cGVFcnJvcik7CisgICAgICAgIHByb21pc2UucmVqZWN0
KFR5cGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9pc0Rpc3R1cmJlZCA9
IHRydWU7CkBAIC0xMTMsMTEgKzExMywxMSBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpmb3JtRGF0
YShEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogdm9pZCBGZXRjaEJvZHlPd25lcjo6anNvbihE
ZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIGlmIChtX2JvZHkuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIHByb21pc2UucmVqZWN0PEV4Y2VwdGlvbkNvZGU+KFNZTlRBWF9FUlIpOworICAg
ICAgICBwcm9taXNlLnJlamVjdChTWU5UQVhfRVJSKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBpZiAoaXNEaXN0dXJiZWQoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdDxFeGNlcHRp
b25Db2RlPihUeXBlRXJyb3IpOworICAgICAgICBwcm9taXNlLnJlamVjdChUeXBlRXJyb3IpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1faXNEaXN0dXJiZWQgPSB0cnVlOwpAQCAtMTMx
LDcgKzEzMSw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OnRleHQoRGVmZXJyZWRXcmFwcGVyJiYg
cHJvbWlzZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoaXNEaXN0dXJiZWQoKSkg
ewotICAgICAgICBwcm9taXNlLnJlamVjdDxFeGNlcHRpb25Db2RlPihUeXBlRXJyb3IpOworICAg
ICAgICBwcm9taXNlLnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIG1faXNEaXN0dXJiZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggMzViZTI0Mzk0ZmU0YWMyNWUwMTdkMDI1NWZlYjQ1
Y2Q4NjM4YTg0MC4uN2M5YjllNjA4YTVhOGNiOGI3MDc2ZGU2Yzk4NWQ1NmQ0Y2UxOWE4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0y
MTMsNyArMjEzLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKICAgICBtX3Jlc3BvbnNlLm1f
cmVzcG9uc2UgPSByZXNvdXJjZVJlc3BvbnNlOwogICAgIG1fcmVzcG9uc2UubV9oZWFkZXJzLT5m
aWx0ZXJBbmRGaWxsKHJlc291cmNlUmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLCBGZXRjaEhl
YWRlcnM6Okd1YXJkOjpSZXNwb25zZSk7CiAKLSAgICBzdGQ6OmV4Y2hhbmdlKG1fcHJvbWlzZSwg
TnVsbG9wdCktPnJlc29sdmUoJm1fcmVzcG9uc2UpOworICAgIHN0ZDo6ZXhjaGFuZ2UobV9wcm9t
aXNlLCBOdWxsb3B0KS0+cmVzb2x2ZShtX3Jlc3BvbnNlKTsKIH0KIAogdm9pZCBGZXRjaFJlc3Bv
bnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
c2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5k
ZXggN2U0OGIwM2IwNDM1OWM3Y2YwMDQ2MDg3OGY3NGQ5Yjk2YjY0ZjM4Ny4uZWQyNDcxMTNiMTlm
ZGI2MDI4ZDQ2ZDBlNDk4YzE2YzJjYTc0YTNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBSZWY8RmV0Y2hSZXNwb25zZT4gZXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwog
ICAgIHN0YXRpYyBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gcmVkaXJlY3QoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIGNvbnN0IFN0cmluZyYsIGludCwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdXNp
bmcgRmV0Y2hQcm9taXNlID0gRE9NUHJvbWlzZTxSZWZQdHI8RmV0Y2hSZXNwb25zZT4sIEV4Y2Vw
dGlvbkNvZGU+OworICAgIHVzaW5nIEZldGNoUHJvbWlzZSA9IERPTVByb21pc2U8RmV0Y2hSZXNw
b25zZT47CiAgICAgc3RhdGljIHZvaWQgZmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZl
dGNoUmVxdWVzdCYsIGNvbnN0IERpY3Rpb25hcnkmLCBGZXRjaFByb21pc2UmJik7CiAgICAgc3Rh
dGljIHZvaWQgZmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IERpY3Rpb25hcnkmLCBGZXRjaFByb21pc2UmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCmluZGV4IDcwMjI3MmRkYjY0NDEw
MDM0NWM3Y2E4MmExYmE5ZmZjMjExMjM1NzcuLmM0OGQ4NjA4NmZmNDk0N2M0MzYxNWEwNTAyYjUz
OGM5MTkxOWNkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZXMuaApAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQoKSBjb25zdDsKIAotICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxSZWZQdHI8TWVk
aWFTdHJlYW0+LCBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3I+PiBQcm9taXNlOwotICAg
IHR5cGVkZWYgRE9NUHJvbWlzZTxNZWRpYURldmljZUluZm9WZWN0b3IsIEV4Y2VwdGlvbkNvZGU+
IEVudW1lcmF0ZURldmljZXNQcm9taXNlOworICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxNZWRpYVN0
cmVhbT4gUHJvbWlzZTsKKyAgICB0eXBlZGVmIERPTVByb21pc2U8TWVkaWFEZXZpY2VJbmZvVmVj
dG9yPiBFbnVtZXJhdGVEZXZpY2VzUHJvbWlzZTsKIAogICAgIHZvaWQgZ2V0VXNlck1lZGlhKGNv
bnN0IERpY3Rpb25hcnkmLCBQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICB2
b2lkIGVudW1lcmF0ZURldmljZXMoRW51bWVyYXRlRGV2aWNlc1Byb21pc2UmJiwgRXhjZXB0aW9u
Q29kZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKaW5kZXggNTBkZTkzMGQyNDUwOTkyM2Q3
ZDIyMTNmMWI3NmNmN2RlMDU3ZWVlZi4uYmZmZjQ0ZTg3MjkxMWQwNzdjMTNiZWMxNmQ3NmJlNTEy
MjZjYzZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCkBAIC01Myw5ICs1Myw5IEBAIGNsYXNzIFJU
Q1N0YXRzUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBuYW1lc3Bh
Y2UgUGVlckNvbm5lY3Rpb24gewotdHlwZWRlZiBET01Qcm9taXNlPFJlZlB0cjxSVENTZXNzaW9u
RGVzY3JpcHRpb24+LCBSZWZQdHI8RE9NRXJyb3I+PiBTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNl
OwotdHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0cl90LCBSZWZQdHI8RE9NRXJyb3I+PiBW
b2lkUHJvbWlzZTsKLXR5cGVkZWYgRE9NUHJvbWlzZTxSZWZQdHI8UlRDU3RhdHNSZXNwb25zZT4s
IFJlZlB0cjxET01FcnJvcj4+IFN0YXRzUHJvbWlzZTsKK3R5cGVkZWYgRE9NUHJvbWlzZTxSVENT
ZXNzaW9uRGVzY3JpcHRpb24+IFNlc3Npb25EZXNjcmlwdGlvblByb21pc2U7Cit0eXBlZGVmIERP
TVByb21pc2U8c3RkOjpudWxscHRyX3Q+IFZvaWRQcm9taXNlOwordHlwZWRlZiBET01Qcm9taXNl
PFJUQ1N0YXRzUmVzcG9uc2U+IFN0YXRzUHJvbWlzZTsKIH0KIAogY2xhc3MgUGVlckNvbm5lY3Rp
b25CYWNrZW5kQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IDczYjE0OWJlMmFmODg2ZDRkYzU5
OGI2N2IyYWU0NTc2ODRjNTIwZmEuLjljZTQxOTg0YjgxZDAzZWNmNmZkZTllMGViNjFhNjFlZWJi
NTA3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgVXNlck1lZGlh
UmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiBw
cml2YXRlU3RyCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIDQgLSBDcmVhdGUgdGhlIE1lZGlh
U3RyZWFtIGFuZCBwYXNzIGl0IHRvIHRoZSBzdWNjZXNzIGNhbGxiYWNrLgotICAgIFJlZlB0cjxN
ZWRpYVN0cmVhbT4gc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSgqbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBwcml2YXRlU3RyZWFtKTsKKyAgICBSZWY8TWVkaWFTdHJlYW0+IHN0cmVhbSA9
IE1lZGlhU3RyZWFtOjpjcmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcHJpdmF0ZVN0
cmVhbSk7CiAgICAgaWYgKG1fYXVkaW9Db25zdHJhaW50cykgewogICAgICAgICBmb3IgKGF1dG8m
IHRyYWNrIDogc3RyZWFtLT5nZXRBdWRpb1RyYWNrcygpKSB7CiAgICAgICAgICAgICB0cmFjay0+
YXBwbHlDb25zdHJhaW50cygqbV9hdWRpb0NvbnN0cmFpbnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKaW5kZXggMGZk
MTZmM2U2MWZhMGIxYzg4MGU3MmJhZDI5MjU3YzBkNWRiNTkxMC4uMDg3YjQ1YzRjYzcxYjI0OTdl
YWY4YzNiNzA4Y2NiOWZlOWI2NjY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xh
c3MgUmVhZGFibGVTdHJlYW1Tb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFkYWJsZVN0cmVh
bVNvdXJjZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgflJlYWRhYmxlU3RyZWFtU291cmNlKCkg
eyB9CiAKLSAgICB0eXBlZGVmIERPTVByb21pc2U8c3RkOjpudWxscHRyX3QsIEV4Y2VwdGlvbkNv
ZGU+IFByb21pc2U7CisgICAgdHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0cl90PiBQcm9t
aXNlOwogCiAgICAgdm9pZCBzdGFydChSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXImJiwgUHJvbWlz
ZSYmKTsKICAgICB2b2lkIGNhbmNlbChKU0M6OkpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggODU4ZjY0N2FmZjc3ZGJiMjUz
ODY2ZmUwOTIyYTU1ZDRkYmFmYzVlNy4uMTZiMmIzYzQ0ZDgyMzFlM2ZjNjRhYTE1YTBhZTYyZGIw
YjM3ODQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFjdGl2ZURPTU9i
amVjdDo6c3VzcGVuZDsKICAgICB1c2luZyBBY3RpdmVET01PYmplY3Q6OnJlc3VtZTsKIAotICAg
IHR5cGVkZWYgRE9NUHJvbWlzZTxzdGQ6Om51bGxwdHJfdCwgRXhjZXB0aW9uQ29kZT4gUHJvbWlz
ZTsKKyAgICB0eXBlZGVmIERPTVByb21pc2U8c3RkOjpudWxscHRyX3Q+IFByb21pc2U7CiAKICAg
ICB2b2lkIHN1c3BlbmQoUHJvbWlzZSYmKTsKICAgICB2b2lkIHJlc3VtZShQcm9taXNlJiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCBiODhmMDYwODg1
NmZkMGY1NzMzZTNjYWE4ZDVjMzVlYjEzMzE1ZDQ0Li44NmI3NDM3YjJlZDhiYTc3NTY3OTg4MGE2
MmJlNjA0ZjgwMjJjZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaApAQCAtMjUxLDEwICsyNTEsMTAgQEAgSlNDOjpKU09iamVjdCogdG9KU1NlcXVlbmNlKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCB1bnNpZ25lZCYgbGVuZ3RoKTsKIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBKU0M6OkFycmF5
QnVmZmVyKik7CiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFs
T2JqZWN0KiwgSlNDOjpBcnJheUJ1ZmZlclZpZXcqKTsKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6QXJyYXlCdWZmZXJWaWV3Kik7
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSos
IEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgUmVmUHRyPFQ+Jik7Ci10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0
KiwgY29uc3QgUmVmPFQ+Jik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBKU0M6OkpTVmFsdWUgdG9K
U05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3Qg
UmVmUHRyPFQ+Jik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBKU0M6OkpTVmFsdWUgdG9KU05ld2x5
Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgUmVmPFQ+
Jik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmUHRyPFQ+Jik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kiwg
UmVmUHRyPFQ+JiYpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gSlNDOjpKU1ZhbHVlIHRvSlNOZXds
eUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZlB0cjxUPiYp
OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZlB0cjxUPiYmKTsKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9i
YWxPYmplY3QqLCBjb25zdCBWZWN0b3I8VD4mKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEpTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPFQ+PiYpOwogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBK
U0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gSlNDOjpKU1ZhbHVlIGpz
QXJyYXkoSlNDOjpFeGVjU3RhdGUqCiBXRUJDT1JFX0VYUE9SVCBKU0M6OkpTVmFsdWUganNBcnJh
eShKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0Pik7CiAKIEpTQzo6SlNWYWx1ZSBqc1BhaXIoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUds
b2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlKTsKLXRlbXBsYXRlPHR5cGVu
YW1lIEZpcnN0VHlwZSwgdHlwZW5hbWUgU2Vjb25kVHlwZT4gSlNDOjpKU1ZhbHVlIGpzUGFpcihK
U0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFsT2JqZWN0KiwgY29uc3QgRmlyc3RUeXBlJiwgY29u
c3QgU2Vjb25kVHlwZSYpOwordGVtcGxhdGU8dHlwZW5hbWUgRmlyc3RUeXBlLCB0eXBlbmFtZSBT
ZWNvbmRUeXBlPiBKU0M6OkpTVmFsdWUganNQYWlyKEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9i
YWxPYmplY3QqLCBGaXJzdFR5cGUmLCBTZWNvbmRUeXBlJik7CiAKIFJlZlB0cjxKU0M6OkFycmF5
QnVmZmVyVmlldz4gdG9BcnJheUJ1ZmZlclZpZXcoSlNDOjpKU1ZhbHVlKTsKIFJlZlB0cjxKU0M6
OkludDhBcnJheT4gdG9JbnQ4QXJyYXkoSlNDOjpKU1ZhbHVlKTsKQEAgLTU0Miw3ICs1NDIsMTIg
QEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICByZXR1cm4gdmlldy0+d3JhcChleGVjLCBn
bG9iYWxPYmplY3QpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFJlZlB0cjxUPiYgcHRyKQordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5l
IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VD4mIHB0cikKK3sKKyAgICByZXR1cm4gdG9KUyhleGVj
LCBnbG9iYWxPYmplY3QsIHB0ci5nZXQoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlu
bGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPFQ+JiYgcHRyKQogewogICAgIHJldHVybiB0b0pT
KGV4ZWMsIGdsb2JhbE9iamVjdCwgcHRyLmdldCgpKTsKIH0KQEAgLTU1MiwxNCArNTU3LDE0IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPCiAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBjb25zdF9jYXN0PFQmPihwdHIuZ2V0KCkpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBSZWZQdHI8VD4mIHB0
cikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3Jl
YXRlZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmUHRyPFQ+JiYgcHRyKQogewogICAgIHJldHVybiB0b0pTTmV3bHlDcmVhdGVkKGV4ZWMs
IGdsb2JhbE9iamVjdCwgcHRyLmdldCgpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5s
aW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBSZWY8VD4mIHB0cikKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRy
PFQ+JiBwdHIpCiB7Ci0gICAgcmV0dXJuIHRvSlNOZXdseUNyZWF0ZWQoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBjb25zdF9jYXN0PFQmPihwdHIuZ2V0KCkpKTsKKyAgICByZXR1cm4gdG9KU05ld2x5Q3Jl
YXRlZChleGVjLCBnbG9iYWxPYmplY3QsIHB0ci5nZXQoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFQ+JiB2ZWN0b3IpCkBA
IC02NTYsNyArNjYxLDcgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSBqc1BhaXIoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICByZXR1cm4gY29u
c3RydWN0QXJyYXkoJnN0YXRlLCAwLCBnbG9iYWxPYmplY3QsIGFyZ3MpOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBGaXJzdFR5cGUsIHR5cGVuYW1lIFNlY29uZFR5cGU+IGlubGluZSBKU0M6OkpT
VmFsdWUganNQYWlyKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgRmlyc3RUeXBlJiB2YWx1ZTEsIGNvbnN0IFNlY29uZFR5cGUmIHZh
bHVlMikKK3RlbXBsYXRlPHR5cGVuYW1lIEZpcnN0VHlwZSwgdHlwZW5hbWUgU2Vjb25kVHlwZT4g
aW5saW5lIEpTQzo6SlNWYWx1ZSBqc1BhaXIoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBGaXJzdFR5cGUmIHZhbHVlMSwgU2Vjb25kVHlwZSYg
dmFsdWUyKQogewogICAgIHJldHVybiBqc1BhaXIoc3RhdGUsIGdsb2JhbE9iamVjdCwgdG9KUygm
c3RhdGUsIGdsb2JhbE9iamVjdCwgdmFsdWUxKSwgdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCwg
dmFsdWUyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVByb21pc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNw
cAppbmRleCA4OTZmODQ5NDM1YjJhNDkwMmRhN2YyZDE3ZWY3Y2Y2NzQzYTYxZjExLi5hMjE0Yjg3
YmM2OThlOTUwMDg0ODI4M2YwZjc3ZGI2MDM1MmEyNDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBmdWxmaWxs
UHJvbWlzZVdpdGhKU09OKERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBk
YXRhKQogewogICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IHBhcnNlQXNKU09OKHByb21pc2UuZ2xv
YmFsT2JqZWN0KCkuZ2xvYmFsRXhlYygpLCBkYXRhKTsKICAgICBpZiAoIXZhbHVlKQotICAgICAg
ICBwcm9taXNlLnJlamVjdDxFeGNlcHRpb25Db2RlPihTWU5UQVhfRVJSKTsKKyAgICAgICAgcHJv
bWlzZS5yZWplY3QoU1lOVEFYX0VSUik7CiAgICAgZWxzZQogICAgICAgICBwcm9taXNlLnJlc29s
dmUodmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaApp
bmRleCBmYjUxYjcyMjdmMWYxMjkxYTA2NzM5NWQ5MGNiMmQwODY1NzYxYzE3Li5kZDAyMTFjYTEz
ZDkyYTc5MWI2MDk1Y2NhODZmOWE1OTE0ZWFhMWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVByb21pc2UuaApAQCAtMzMsMTUgKzMzLDkyIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAordGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3M+CitzdHJ1Y3QgVHlwZUluc3BlY3Rv
ciB7Citwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdGV4cHIg
YXV0byB0ZXN0SXNWZWN0b3IoaW50KSAtPiBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5zaHJp
bmtUb0ZpdCgpLCBib29sKCkpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdGF0aWMgY29uc3RleHByIGJvb2wgdGVzdElzVmVjdG9yKC4uLikgeyByZXR1cm4gZmFs
c2U7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdGV4cHIgYXV0byB0
ZXN0SXNSZWYoaW50KSAtPiBkZWNsdHlwZShUOjppc1JlZikgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0ZXN0SXNSZWYoLi4u
KSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGNv
bnN0ZXhwciBhdXRvIHRlc3RJc1JlZlB0cihpbnQpIC0+IGRlY2x0eXBlKFQ6OmlzUmVmUHRyKSB7
IHJldHVybiB0cnVlOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0ZXhw
ciBib29sIHRlc3RJc1JlZlB0ciguLi4pIHsgcmV0dXJuIGZhbHNlOyB9CisKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNSZWZPclJlZlB0ciA9IHRlc3RJc1JlZjxET01DbGFz
cz4oMCkgfHwgdGVzdElzUmVmUHRyPERPTUNsYXNzPigwKTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNQYXNzQnlWYWx1ZVR5cGUgPSBzdGQ6OmlzX3BvaW50ZXI8RE9NQ2xhc3M+Ojp2YWx1
ZQorICAgICAgICB8fCBzdGQ6OmlzX3NhbWU8RE9NQ2xhc3MsIHN0ZDo6bnVsbHB0cl90Pjo6dmFs
dWUKKyAgICAgICAgfHwgc3RkOjppc19zYW1lPERPTUNsYXNzLCBKU0M6OkpTVmFsdWU+Ojp2YWx1
ZQorICAgICAgICB8fCBzdGQ6OmlzX3NhbWU8RE9NQ2xhc3MsIGJvb2w+Ojp2YWx1ZTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNQYXNzQnlDb25zdFJlZlR5cGUgPSB0ZXN0SXNWZWN0b3I8
RE9NQ2xhc3M+KDApCisgICAgICAgIHx8IHN0ZDo6aXNfc2FtZTxET01DbGFzcywgU3RyaW5nPjo6
dmFsdWU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFzcywgdHlwZW5hbWUgRW5hYmxl
ID0gdm9pZD4KK3N0cnVjdCBQcm9taXNlUmVzdWx0SW5zcGVjdG9yIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5VmFsdWUgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgcGFzc0J5UmVmID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
cGFzc0J5VVJlZiA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBwYXNzQnlDb25z
dFJlZiA9IGZhbHNlOworCisgICAgdHlwZWRlZiBET01DbGFzcyYgVHlwZTsKK307CisKK3RlbXBs
YXRlPHR5cGVuYW1lIERPTUNsYXNzPgorc3RydWN0IFByb21pc2VSZXN1bHRJbnNwZWN0b3I8RE9N
Q2xhc3MsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFR5cGVJbnNwZWN0b3I8RE9NQ2xhc3M+Ojpp
c1Bhc3NCeVZhbHVlVHlwZT46OnR5cGU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgcGFzc0J5VmFsdWUgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBwYXNz
QnlSZWYgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5VVJlZiA9IGZh
bHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBwYXNzQnlDb25zdFJlZiA9IGZhbHNlOwor
CisgICAgdHlwZWRlZiBET01DbGFzcyBUeXBlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRE9N
Q2xhc3M+CitzdHJ1Y3QgUHJvbWlzZVJlc3VsdEluc3BlY3RvcjxET01DbGFzcywgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8VHlwZUluc3BlY3RvcjxET01DbGFzcz46OmlzUGFzc0J5Q29uc3RSZWZU
eXBlPjo6dHlwZT4geworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBwYXNzQnlW
YWx1ZSA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBwYXNzQnlSZWYgPSBmYWxz
ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5VVJlZiA9IGZhbHNlOworICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBwYXNzQnlDb25zdFJlZiA9IHRydWU7CisKKyAgICB0eXBlZGVm
IGNvbnN0IERPTUNsYXNzJiBUeXBlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRE9NQ2xhc3M+
CitzdHJ1Y3QgUHJvbWlzZVJlc3VsdEluc3BlY3RvcjxET01DbGFzcywgdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8VHlwZUluc3BlY3RvcjxET01DbGFzcz46OmlzUmVmT3JSZWZQdHI+Ojp0eXBlPiB7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeVZhbHVlID0gZmFsc2U7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIHBhc3NCeVJlZiA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBwYXNzQnlVUmVmID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFz
c0J5Q29uc3RSZWYgPSBmYWxzZTsKK307CisKIGNsYXNzIERlZmVycmVkV3JhcHBlciB7CiBwdWJs
aWM6CiAgICAgRGVmZXJyZWRXcmFwcGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmpl
Y3QqLCBKU0M6OkpTUHJvbWlzZURlZmVycmVkKik7CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBSZXNv
bHZlUmVzdWx0VHlwZT4KLSAgICB2b2lkIHJlc29sdmUoY29uc3QgUmVzb2x2ZVJlc3VsdFR5cGUm
KTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8UHJvbWlzZVJlc3VsdEluc3BlY3RvcjxSZXNvbHZlUmVzdWx0VHlwZT46OnBhc3NC
eVZhbHVlLCB2b2lkPjo6dHlwZQorICAgIHJlc29sdmUoUmVzb2x2ZVJlc3VsdFR5cGUgcmVzdWx0
KSB7IHJlc29sdmVXaXRoVmFsdWUocmVzdWx0KTsgfQorICAgIHRlbXBsYXRlPGNsYXNzIFJlc29s
dmVSZXN1bHRUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxQcm9taXNlUmVzdWx0SW5zcGVj
dG9yPFJlc29sdmVSZXN1bHRUeXBlPjo6cGFzc0J5UmVmLCB2b2lkPjo6dHlwZQorICAgIHJlc29s
dmUoUmVzb2x2ZVJlc3VsdFR5cGUmIHJlc3VsdCkgeyByZXNvbHZlV2l0aFZhbHVlKHJlc3VsdCk7
IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8UHJvbWlzZVJlc3VsdEluc3BlY3RvcjxSZXNvbHZlUmVzdWx0VHlwZT46OnBhc3NC
eVVSZWYsIHZvaWQ+Ojp0eXBlCisgICAgcmVzb2x2ZShSZXNvbHZlUmVzdWx0VHlwZSYmIHJlc3Vs
dCkgeyByZXNvbHZlV2l0aFZhbHVlKHN0ZDo6Zm9yd2FyZDxSZXNvbHZlUmVzdWx0VHlwZT4ocmVz
dWx0KSk7IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8UHJvbWlzZVJlc3VsdEluc3BlY3RvcjxSZXNvbHZlUmVzdWx0VHlwZT46
OnBhc3NCeUNvbnN0UmVmLCB2b2lkPjo6dHlwZQorICAgIHJlc29sdmUoY29uc3QgUmVzb2x2ZVJl
c3VsdFR5cGUmIHJlc3VsdCkgeyByZXNvbHZlV2l0aFZhbHVlKHJlc3VsdCk7IH0KKworICAgIHRl
bXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFBy
b21pc2VSZXN1bHRJbnNwZWN0b3I8UmVqZWN0UmVzdWx0VHlwZT46OnBhc3NCeVZhbHVlLCB2b2lk
Pjo6dHlwZQorICAgIHJlamVjdChSZWplY3RSZXN1bHRUeXBlIHJlc3VsdCkgeyByZWplY3RXaXRo
VmFsdWUocmVzdWx0KTsgfQorICAgIHRlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+IHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1bHRJbnNwZWN0b3I8UmVqZWN0UmVzdWx0
VHlwZT46OnBhc3NCeVJlZiwgdm9pZD46OnR5cGUKKyAgICByZWplY3QoUmVqZWN0UmVzdWx0VHlw
ZSYgcmVzdWx0KSB7IHJlamVjdFdpdGhWYWx1ZShyZXN1bHQpOyB9CisgICAgdGVtcGxhdGU8Y2xh
c3MgUmVqZWN0UmVzdWx0VHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8UHJvbWlzZVJlc3Vs
dEluc3BlY3RvcjxSZWplY3RSZXN1bHRUeXBlPjo6cGFzc0J5VVJlZiwgdm9pZD46OnR5cGUKKyAg
ICByZWplY3QoUmVqZWN0UmVzdWx0VHlwZSYmIHJlc3VsdCkgeyByZWplY3RXaXRoVmFsdWUoc3Rk
Ojpmb3J3YXJkPFJlamVjdFJlc3VsdFR5cGU+KHJlc3VsdCkpOyB9CisgICAgdGVtcGxhdGU8Y2xh
c3MgUmVqZWN0UmVzdWx0VHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8UHJvbWlzZVJlc3Vs
dEluc3BlY3RvcjxSZWplY3RSZXN1bHRUeXBlPjo6cGFzc0J5Q29uc3RSZWYsIHZvaWQ+Ojp0eXBl
CisgICAgcmVqZWN0KGNvbnN0IFJlamVjdFJlc3VsdFR5cGUmIHJlc3VsdCkgeyByZWplY3RXaXRo
VmFsdWUocmVzdWx0KTsgfQogCi0gICAgdGVtcGxhdGU8Y2xhc3MgUmVqZWN0UmVzdWx0VHlwZT4K
LSAgICB2b2lkIHJlamVjdChjb25zdCBSZWplY3RSZXN1bHRUeXBlJik7CisgICAgdm9pZCByZWpl
Y3QoRXhjZXB0aW9uQ29kZSk7CiAKICAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KCkgY29uc3Q7CiAgICAgSlNDOjpKU1ZhbHVlIHByb21pc2UoKSBjb25zdDsKQEAgLTUxLDYgKzEy
OCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNvbHZlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNDOjpKU1ZhbHVlIHJlc29sdXRpb24pIHsgY2FsbEZ1bmN0aW9uKHN0YXRlLCBtX2RlZmVycmVk
LT5yZXNvbHZlKCksIHJlc29sdXRpb24pOyB9CiAgICAgdm9pZCByZWplY3QoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgcmVzb2x1dGlvbikgeyBjYWxsRnVuY3Rpb24oc3RhdGUs
IG1fZGVmZXJyZWQtPnJlamVjdCgpLCByZXNvbHV0aW9uKTsgfQogCisgICAgdGVtcGxhdGU8Y2xh
c3MgUmVqZWN0UmVzdWx0VHlwZT4gdm9pZCByZWplY3RXaXRoVmFsdWUoUmVqZWN0UmVzdWx0VHlw
ZSYmKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4gdm9pZCByZXNvbHZl
V2l0aFZhbHVlKFJlc29sdmVSZXN1bHRUeXBlJiYpOworCiAgICAgSlNDOjpTdHJvbmc8SlNET01H
bG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNQcm9t
aXNlRGVmZXJyZWQ+IG1fZGVmZXJyZWQ7CiB9OwpAQCAtNzEsNyArMTUxLDcgQEAgaW5saW5lIEpT
Qzo6SlNWYWx1ZSBjYWxsUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlND
OjpFbmNvZGVkSlNWYWwKICAgICByZXR1cm4gcHJvbWlzZURlZmVycmVkLnByb21pc2UoKTsKIH0K
IAotdGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFcnJvcj4KK3RlbXBsYXRlIDx0
eXBlbmFtZSBWYWx1ZT4KIGNsYXNzIERPTVByb21pc2UgewogcHVibGljOgogICAgIERPTVByb21p
c2UoRGVmZXJyZWRXcmFwcGVyJiYgd3JhcHBlcikgOiBtX3dyYXBwZXIoV1RGTW92ZSh3cmFwcGVy
KSkgeyB9CkBAIC04MCwxMDUgKzE2MCwxMDUgQEAgcHVibGljOgogICAgIERPTVByb21pc2UoY29u
c3QgRE9NUHJvbWlzZSYpID0gZGVmYXVsdDsKICAgICBET01Qcm9taXNlJiBvcGVyYXRvcj0oRE9N
UHJvbWlzZSBjb25zdCYpID0gZGVmYXVsdDsKIAotICAgIHZvaWQgcmVzb2x2ZShjb25zdCBWYWx1
ZSYgdmFsdWUpIHsgbV93cmFwcGVyLnJlc29sdmU8VmFsdWU+KHZhbHVlKTsgfQotICAgIHZvaWQg
cmVqZWN0KGNvbnN0IEVycm9yJiBlcnJvcikgeyBtX3dyYXBwZXIucmVqZWN0PEVycm9yPihlcnJv
cik7IH0KKyAgICB2b2lkIHJlc29sdmUodHlwZW5hbWUgUHJvbWlzZVJlc3VsdEluc3BlY3RvcjxW
YWx1ZT46OlR5cGUgdmFsdWUpIHsgbV93cmFwcGVyLnJlc29sdmUodmFsdWUpOyB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBFcnJvclR5cGU+IHZvaWQgcmVqZWN0KEVycm9yVHlwZSYmIGVycm9y
KSB7IG1fd3JhcHBlci5yZWplY3Qoc3RkOjpmb3J3YXJkPEVycm9yVHlwZT4oZXJyb3IpKTsgfQog
CiBwcml2YXRlOgogICAgIERlZmVycmVkV3JhcHBlciBtX3dyYXBwZXI7CiB9OwogCi10ZW1wbGF0
ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4KLWlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6
cmVzb2x2ZShjb25zdCBSZXNvbHZlUmVzdWx0VHlwZSYgcmVzdWx0KQoraW5saW5lIHZvaWQgRGVm
ZXJyZWRXcmFwcGVyOjpyZWplY3QoRXhjZXB0aW9uQ29kZSBlYykKIHsKICAgICBBU1NFUlQobV9k
ZWZlcnJlZCk7CiAgICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKICAgICBKU0M6OkV4ZWNTdGF0
ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tI
b2xkZXIgbG9ja2VyKGV4ZWMpOwotICAgIHJlc29sdmUoKmV4ZWMsIHRvSlMoZXhlYywgbV9nbG9i
YWxPYmplY3QuZ2V0KCksIHJlc3VsdCkpOworICAgIHJlamVjdCgqZXhlYywgY3JlYXRlRE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKSk7CiB9CiAKLXRlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+
Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlamVjdChjb25zdCBSZWplY3RSZXN1bHRU
eXBlJiByZXN1bHQpCit0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4KK2lubGluZSB2
b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZVdpdGhWYWx1ZShSZXNvbHZlUmVzdWx0VHlwZSYm
IHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9kZWZlcnJlZCk7CiAgICAgQVNTRVJUKG1fZ2xvYmFs
T2JqZWN0KTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAgIHJlamVj
dCgqZXhlYywgdG9KUyhleGVjLCBtX2dsb2JhbE9iamVjdC5nZXQoKSwgcmVzdWx0KSk7CisgICAg
cmVzb2x2ZSgqZXhlYywgdG9KUyhleGVjLCBtX2dsb2JhbE9iamVjdC5nZXQoKSwgc3RkOjpmb3J3
YXJkPFJlc29sdmVSZXN1bHRUeXBlPihyZXN1bHQpKSk7CiB9CiAKLXRlbXBsYXRlPD4KLWlubGlu
ZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0KGNvbnN0IHN0ZDo6bnVsbHB0cl90JikKK3Rl
bXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+CitpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBw
ZXI6OnJlamVjdFdpdGhWYWx1ZShSZWplY3RSZXN1bHRUeXBlJiYgcmVzdWx0KQogewogICAgIEFT
U0VSVChtX2RlZmVycmVkKTsKICAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOwogICAgIEpTQzo6
RXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgcmVqZWN0KCpleGVjLCBKU0M6OmpzTnVs
bCgpKTsKKyAgICByZWplY3QoKmV4ZWMsIHRvSlMoZXhlYywgbV9nbG9iYWxPYmplY3QuZ2V0KCks
IHN0ZDo6Zm9yd2FyZDxSZWplY3RSZXN1bHRUeXBlPihyZXN1bHQpKSk7CiB9CiAKIHRlbXBsYXRl
PD4KLWlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0KGNvbnN0IEpTQzo6SlNWYWx1
ZSYgdmFsdWUpCitpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmUoYm9vbCByZXN1
bHQpCiB7CiAgICAgQVNTRVJUKG1fZGVmZXJyZWQpOwogICAgIEFTU0VSVChtX2dsb2JhbE9iamVj
dCk7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICByZWplY3QoKmV4
ZWMsIHZhbHVlKTsKKyAgICByZXNvbHZlKCpleGVjLCBKU0M6OmpzQm9vbGVhbihyZXN1bHQpKTsK
IH0KIAogdGVtcGxhdGU8PgotaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3Q8RXhj
ZXB0aW9uQ29kZT4oY29uc3QgRXhjZXB0aW9uQ29kZSYgZWMpCitpbmxpbmUgdm9pZCBEZWZlcnJl
ZFdyYXBwZXI6OnJlc29sdmUoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAgIEFTU0VSVChtX2Rl
ZmVycmVkKTsKICAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOwogICAgIEpTQzo6RXhlY1N0YXRl
KiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hv
bGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgcmVqZWN0KCpleGVjLCBjcmVhdGVET01FeGNlcHRpb24o
ZXhlYywgZWMpKTsKKyAgICByZXNvbHZlKCpleGVjLCB2YWx1ZSk7CiB9CiAKIHRlbXBsYXRlPD4K
LWlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZTxTdHJpbmc+KGNvbnN0IFN0cmlu
ZyYgcmVzdWx0KQoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3QoSlNDOjpKU1Zh
bHVlIHZhbHVlKQogewogICAgIEFTU0VSVChtX2RlZmVycmVkKTsKICAgICBBU1NFUlQobV9nbG9i
YWxPYmplY3QpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgcmVz
b2x2ZSgqZXhlYywganNTdHJpbmcoZXhlYywgcmVzdWx0KSk7CisgICAgcmVqZWN0KCpleGVjLCB2
YWx1ZSk7CiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVz
b2x2ZTxib29sPihjb25zdCBib29sJiByZXN1bHQpCitpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBw
ZXI6OnJlc29sdmUoc3RkOjpudWxscHRyX3QpCiB7CiAgICAgQVNTRVJUKG1fZGVmZXJyZWQpOwog
ICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBt
X2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tl
cihleGVjKTsKLSAgICByZXNvbHZlKCpleGVjLCBKU0M6OmpzQm9vbGVhbihyZXN1bHQpKTsKKyAg
ICByZXNvbHZlKCpleGVjLCBKU0M6OmpzVW5kZWZpbmVkKCkpOwogfQogCiB0ZW1wbGF0ZTw+Ci1p
bmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmU8SlNDOjpKU1ZhbHVlPihjb25zdCBK
U0M6OkpTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3Qo
c3RkOjpudWxscHRyX3QpCiB7CiAgICAgQVNTRVJUKG1fZGVmZXJyZWQpOwogICAgIEFTU0VSVCht
X2dsb2JhbE9iamVjdCk7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAg
ICByZXNvbHZlKCpleGVjLCB2YWx1ZSk7CisgICAgcmVqZWN0KCpleGVjLCBKU0M6OmpzTnVsbCgp
KTsKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZl
KGNvbnN0IHN0ZDo6bnVsbHB0cl90JikKK2lubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVz
b2x2ZShjb25zdCBTdHJpbmcmIHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9kZWZlcnJlZCk7CiAg
ICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1f
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2Vy
KGV4ZWMpOwotICAgIHJlc29sdmUoKmV4ZWMsIEpTQzo6anNVbmRlZmluZWQoKSk7CisgICAgcmVz
b2x2ZSgqZXhlYywganNTdHJpbmcoZXhlYywgcmVzdWx0KSk7CiB9CiAKIHRlbXBsYXRlPD4KLWlu
bGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0PFN0cmluZz4oY29uc3QgU3RyaW5nJiBy
ZXN1bHQpCitpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlamVjdChjb25zdCBTdHJpbmcm
IHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9kZWZlcnJlZCk7CiAgICAgQVNTRVJUKG1fZ2xvYmFs
T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxl
Q3J5cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5
cHRvQ3VzdG9tLmNwcAppbmRleCA0ZmE2NzgyNGU3NWVkYjVjYjNlNmJhODgwMWE2YTc0YWNjZjg4
ZGFhLi44YzZkODhhNTg0YTk2ZjNiN2EwNTgyZjRlMjJlZWM4MWUyMWExYjAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCkBA
IC01NTAsNyArNTUwLDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KEV4ZWNT
dGF0ZSYgc3RhdGUpCiAgICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCA9IEpT
UHJvbWlzZURlZmVycmVkOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSk7CiAgICAgRGVm
ZXJyZWRXcmFwcGVyIHdyYXBwZXIoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgcHJvbWlzZURlZmVy
cmVkKTsKICAgICBhdXRvIHN1Y2Nlc3NDYWxsYmFjayA9IFt3cmFwcGVyXShDcnlwdG9LZXkmIHJl
c3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIHdyYXBwZXIucmVzb2x2ZSgmcmVzdWx0KTsKKyAgICAg
ICAgd3JhcHBlci5yZXNvbHZlKHJlc3VsdCk7CiAgICAgfTsKICAgICBhdXRvIGZhaWx1cmVDYWxs
YmFjayA9IFt3cmFwcGVyXSgpIG11dGFibGUgewogICAgICAgICB3cmFwcGVyLnJlamVjdChudWxs
cHRyKTsKQEAgLTc4NSw3ICs3ODUsNyBAQCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjp1bndyYXBL
ZXkoRXhlY1N0YXRlJiBzdGF0ZSkKIAogICAgIGF1dG8gZGVjcnlwdFN1Y2Nlc3NDYWxsYmFjayA9
IFtkb21HbG9iYWxPYmplY3QsIGtleUZvcm1hdCwgdW53cmFwcGVkS2V5QWxnb3JpdGhtUHRyLCB1
bndyYXBwZWRLZXlBbGdvcml0aG1QYXJhbWV0ZXJzUHRyLCBleHRyYWN0YWJsZSwga2V5VXNhZ2Vz
LCB3cmFwcGVyXShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAg
ICAgIGF1dG8gaW1wb3J0U3VjY2Vzc0NhbGxiYWNrID0gW3dyYXBwZXJdKENyeXB0b0tleSYga2V5
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHdyYXBwZXIucmVzb2x2ZSgma2V5KTsKKyAgICAgICAg
ICAgIHdyYXBwZXIucmVzb2x2ZShrZXkpOwogICAgICAgICB9OwogICAgICAgICBhdXRvIGltcG9y
dEZhaWx1cmVDYWxsYmFjayA9IFt3cmFwcGVyXSgpIG11dGFibGUgewogICAgICAgICAgICAgd3Jh
cHBlci5yZWplY3QobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5oCmluZGV4IDg5NzFlZjFkMjk3
YTIyZmJlY2JjZTNlMGVhYmYwMzlhNDc2ZTEzNjMuLmUyNDkzNGQ3NzQyZDUwZGUwZDI2NjY3ZmE3
YTZhZmFjYjYzOWQxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5oCkBAIC02NSw3ICs2NSw3IEBAIHB1
YmxpYzoKICAgICBlbnVtIGNsYXNzIExvYWRTdGF0dXMgeyBVbmxvYWRlZCwgTG9hZGluZywgTG9h
ZGVkLCBFcnJvciB9OwogICAgIExvYWRTdGF0dXMgc3RhdHVzKCkgY29uc3Q7CiAKLSAgICB0eXBl
ZGVmIERPTVByb21pc2U8Rm9udEZhY2UmLCBFeGNlcHRpb25Db2RlPiBQcm9taXNlOworICAgIHR5
cGVkZWYgRE9NUHJvbWlzZTxGb250RmFjZSY+IFByb21pc2U7CiAgICAgdm9pZCByZWdpc3Rlckxv
YWRlZChQcm9taXNlJiYpOwogCiAgICAgdm9pZCBsb2FkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
U2V0LmNwcAppbmRleCA3ZTc0NDk4M2RmODFlN2FiZDBkYzEyMzFhZTU2MjA0NDIxZjk4YzI2Li4x
ODllNWJkZmFmZDAxN2FhYTg2ZmQ4ZDM3N2E5MDVjZmNlYzc4MzVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZVNldC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgUmVmUHRyPEZvbnRGYWNlPiBGb250RmFj
ZVNldDo6SXRlcmF0b3I6Om5leHQoKQogICAgIHJldHVybiBtX3RhcmdldC0+YmFja2luZygpW21f
aW5kZXgrK10ud3JhcHBlcigpOwogfQogCi1Gb250RmFjZVNldDo6UGVuZGluZ1Byb21pc2U6OlBl
bmRpbmdQcm9taXNlKFByb21pc2UmJiBwcm9taXNlKQorRm9udEZhY2VTZXQ6OlBlbmRpbmdQcm9t
aXNlOjpQZW5kaW5nUHJvbWlzZShMb2FkUHJvbWlzZSYmIHByb21pc2UpCiAgICAgOiBwcm9taXNl
KFdURk1vdmUocHJvbWlzZSkpCiB7CiB9CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBGb250RmFj
ZVNldDo6Y2xlYXIoKQogICAgICAgICBtX2JhY2tpbmctPnJlbW92ZShtX2JhY2tpbmcuZ2V0KClb
MF0pOwogfQogCi12b2lkIEZvbnRGYWNlU2V0Ojpsb2FkKGNvbnN0IFN0cmluZyYgZm9udCwgY29u
c3QgU3RyaW5nJiB0ZXh0LCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQordm9pZCBGb250RmFj
ZVNldDo6bG9hZChjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgTG9hZFBy
b21pc2UmJiBwcm9taXNlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8g
bWF0Y2hpbmdGYWNlcyA9IG1fYmFja2luZy0+bWF0Y2hpbmdGYWNlcyhmb250LCB0ZXh0LCBlYyk7
CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBGb250RmFjZVNldDo6bG9hZChjb25zdCBTdHJpbmcm
IGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRGVmZXJyZWRXcmFwcGVyJiYKIAogICAgIGZvciAo
YXV0byYgZmFjZSA6IG1hdGNoaW5nRmFjZXMpIHsKICAgICAgICAgaWYgKGZhY2UuZ2V0KCkuc3Rh
dHVzKCkgPT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6RmFpbHVyZSkgewotICAgICAgICAgICAgcHJv
bWlzZS5yZWplY3QoRE9NQ29yZUV4Y2VwdGlvbjo6Y3JlYXRlKEV4Y2VwdGlvbkNvZGVEZXNjcmlw
dGlvbihORVRXT1JLX0VSUikpLnB0cigpKTsKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KERP
TUNvcmVFeGNlcHRpb246OmNyZWF0ZShFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oTkVUV09SS19F
UlIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0xNjcsNyAr
MTY3LDcgQEAgYm9vbCBGb250RmFjZVNldDo6Y2hlY2soY29uc3QgU3RyaW5nJiBmYW1pbHksIGNv
bnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYKICAgICByZXR1cm4gbV9iYWNraW5nLT5j
aGVjayhmYW1pbHksIHRleHQsIGVjKTsKIH0KIAotdm9pZCBGb250RmFjZVNldDo6cmVnaXN0ZXJS
ZWFkeShQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgRm9udEZhY2VTZXQ6OnJlZ2lzdGVyUmVhZHko
UmVhZHlQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1fcHJvbWlzZSk7CiAgICAg
aWYgKG1faXNSZWFkeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAppbmRleCBmMDQ3MGU5ZDYy
OGJiZTdjMDI4YTkxMGJmNzBmMDliZmFjNmY4ZTAxLi44OWFkMDhkMDliY2YyN2Q5NzgxNDk2M2Q4
YzdmOWRmNjMzMzg3OTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VT
ZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaApAQCAtNDcsMTQgKzQ3
LDE1IEBAIHB1YmxpYzoKICAgICBib29sIHJlbW92ZShGb250RmFjZSYpOwogICAgIHZvaWQgY2xl
YXIoKTsKIAotICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYg
dGV4dCwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSk7CisgICAgdHlwZWRlZiBET01Qcm9taXNl
PFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+Pj4gTG9hZFByb21pc2U7CisgICAgdm9pZCBsb2FkKGNv
bnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBMb2FkUHJvbWlzZSYmKTsKICAg
ICBib29sIGNoZWNrKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNl
cHRpb25Db2RlJik7CiAKICAgICBlbnVtIGNsYXNzIExvYWRTdGF0dXMgeyBMb2FkaW5nLCBMb2Fk
ZWQgfTsKICAgICBMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OwogCi0gICAgdHlwZWRlZiBET01Q
cm9taXNlPEZvbnRGYWNlU2V0JiwgRE9NQ29yZUV4Y2VwdGlvbiY+IFByb21pc2U7Ci0gICAgdm9p
ZCByZWdpc3RlclJlYWR5KFByb21pc2UmJik7CisgICAgdHlwZWRlZiBET01Qcm9taXNlPEZvbnRG
YWNlU2V0Jj4gUmVhZHlQcm9taXNlOworICAgIHZvaWQgcmVnaXN0ZXJSZWFkeShSZWFkeVByb21p
c2UmJik7CiAKICAgICBDU1NGb250RmFjZVNldCYgYmFja2luZygpIHsgcmV0dXJuIG1fYmFja2lu
ZzsgfQogCkBAIC03NCwxOSArNzUsMTggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHN0cnVj
dCBQZW5kaW5nUHJvbWlzZSA6IFJlZkNvdW50ZWQ8UGVuZGluZ1Byb21pc2U+IHsKLSAgICAgICAg
dHlwZWRlZiBET01Qcm9taXNlPFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiYsIERPTUNvcmVFeGNl
cHRpb24mPiBQcm9taXNlOwotICAgICAgICBzdGF0aWMgUmVmPFBlbmRpbmdQcm9taXNlPiBjcmVh
dGUoUHJvbWlzZSYmIHByb21pc2UpCisgICAgICAgIHN0YXRpYyBSZWY8UGVuZGluZ1Byb21pc2U+
IGNyZWF0ZShMb2FkUHJvbWlzZSYmIHByb21pc2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFBlbmRpbmdQcm9taXNlKFdURk1vdmUocHJvbWlzZSkpKTsKICAg
ICAgICAgfQogICAgICAgICB+UGVuZGluZ1Byb21pc2UoKTsKIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIFBlbmRpbmdQcm9taXNlKFByb21pc2UmJik7CisgICAgICAgIFBlbmRpbmdQcm9taXNlKExv
YWRQcm9taXNlJiYpOwogCiAgICAgcHVibGljOgogICAgICAgICBWZWN0b3I8UmVmUHRyPEZvbnRG
YWNlPj4gZmFjZXM7Ci0gICAgICAgIFByb21pc2UgcHJvbWlzZTsKKyAgICAgICAgTG9hZFByb21p
c2UgcHJvbWlzZTsKICAgICAgICAgYm9vbCBoYXNSZWFjaGVkVGVybWluYWxTdGF0ZSB7IGZhbHNl
IH07CiAgICAgfTsKIApAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8Q1NT
Rm9udEZhY2VTZXQ+IG1fYmFja2luZzsKICAgICBIYXNoTWFwPFJlZlB0cjxDU1NGb250RmFjZT4s
IFZlY3RvcjxSZWY8UGVuZGluZ1Byb21pc2U+Pj4gbV9wZW5kaW5nUHJvbWlzZXM7Ci0gICAgT3B0
aW9uYWw8UHJvbWlzZT4gbV9wcm9taXNlOworICAgIE9wdGlvbmFsPFJlYWR5UHJvbWlzZT4gbV9w
cm9taXNlOwogICAgIGJvb2wgbV9pc1JlYWR5IHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggYjQzMWIwYzcyNzU0MWRhMDBkMDIxOTA5NDdk
ZjZmMWRkZDFkNDdjMS4uYzg0MTkzYjNlMDA5NmRiMTllNWY4NjRhNGJiNWFiOGJiODZjMTkzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTIxMiw3ICsyMTIsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBsb29wKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRMb29wKGJvb2wg
Yik7CiAKLSAgICB0eXBlZGVmIERPTVByb21pc2U8c3RkOjpudWxscHRyX3QsIERPTUVycm9yJj4g
UGxheVByb21pc2U7CisgICAgdHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0cl90PiBQbGF5
UHJvbWlzZTsKICAgICB2b2lkIHBsYXkoUGxheVByb21pc2UmJik7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHBsYXkoKSBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279107</attachid>
            <date>2016-05-17 02:48:33 -0700</date>
            <delta_ts>2016-05-17 03:19:15 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-157307-20160517114928.patch</filename>
            <type>text/plain</type>
            <size>32182</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwOTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNmZWU1ZGM1OGFkZjczNzQzZjUwMWVi
OTBiOTkyMGRhZjEwZDc1NDkuLjFmZmI5YmZiZTBhYzRmZDcwMzkyYTI0MmJjNDAzYTIxNzJkZjNh
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDUtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBET01Qcm9taXNlIHNob3VsZCBvbmx5
IHJlc3RyaWN0IHRoZSByZXNvbHV0aW9uIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzMwNworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgICogd3RmL1JlZi5oOiBBZGRpbmcgc3RhdGljIGNvbnN0ZXhwciB0
byBlYXNlIGRldGVjdGlvbiBvZiBSZWYgZm9yIHRlbXBsYXRlcy4KKyAgICAgICAgKiB3dGYvUmVm
UHRyLmg6IERpdHRvLgorCiAyMDE2LTA1LTE2ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgogCiAgICAgICAgIEFSTVY3SzogQ3Jhc2ggYXQgSmF2YVNjcmlwdENvcmU6IFdURjo6
U2NvcGVkTGFtYmRhRnVuY3Rvcjxib29sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA5ZmJmMzFiNjU0MDlmYzdk
MzA1ZTA4NWQ3ZGM2NTQ5MTdjOTcwYy4uMTk2MTM0MTk5NzM2MGJiY2NkY2MzNmIyYWZiYThiZWNj
NWYyNzU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE2LTA1LTE2ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgRE9NUHJvbWlz
ZSBzaG91bGQgb25seSByZXN0cmljdCB0aGUgcmVzb2x1dGlvbiB0eXBlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTczMDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZW1vdmluZyBmcm9tIERPTVByb21pc2Ug
dGhlIHJlamVjdGlvbiB0ZW1wbGF0ZSBwYXJhbWV0ZXIuCisgICAgICAgIFN1cHBvcnRlZCByZWpl
Y3Rpb24gdHlwZXMgYXJlIGludGVnZXJzIChFeGNlcHRpb24gY29kZXMpIGFuZCBET00gb2JqZWN0
cyAoRE9NRXJyb3IgdHlwaWNhbGx5KS4KKworICAgICAgICBVcGRhdGVkIERlZmVycmVkV3JhcHBl
ciB0byBhY2NlcHQgUmVmPD4mJiBhbmQgUmVmUHRyPD4mJi4KKyAgICAgICAgUmVsYW5kaW5nIHdp
dGhvdXQgdG91Y2hpbmcgSlNET01CaW5kaW5nLmggYXMgdGhpcyBzZWVtZWQgdG8gYmUgaW1wYWN0
aW5nIHBlcmZvcm1hbmNlcy4KKworICAgICAgICBDaGFuZ2VzIGFsc28gYWxsb3cgaW4gbW9zdCBj
YXNlcyB0byByZW1vdmUgdGhlIG5lZWQgZm9yIGV4cGxpY3RseSBkZWNsYXJpbmcgdGhlCisgICAg
ICAgIHJlamVjdGlvbi9yZXNvbHV0aW9uIHR5cGUuCisKKyAgICAgICAgTWlub3IgcmVmYWN0b3Jp
bmcgb2YgRm9udEZhY2VTZXQgcHJvbWlzZSBoYW5kbGluZyB0byB1c2UgRE9NUHJvbWlzZSBpbiBs
aWV1IG9mIERlZmVycmVkV3JhcHBlci4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorICAgICAgICBDaGFuZ2VzIHNob3VsZCBub3QgYmUgdmlzaWJsZSBmcm9tIHVzZXIgc2Ny
aXB0cy4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHk6OmNvbnN1bWVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmJsb2JGcm9tQXJyYXlCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpsb2FkaW5nRmFpbGVkKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Ojpmb3JtRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6YXJyYXlCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5T3duZXI6OmZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVy
Ojpqc29uKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjp0ZXh0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhRGV2aWNlcy5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmRp
ZENyZWF0ZVN0cmVhbSk6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFt
U291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZnVsZmlsbFByb21pc2VXaXRoSlNPTik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpUeXBlSW5zcGVjdG9yOjpkZWNsdHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUeXBlSW5zcGVjdG9yOjp0ZXN0SXNWZWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6VHlwZUluc3BlY3Rvcjo6dGVzdElzUmVmT3JSZWZQdHIpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVk
V3JhcHBlcjo6cmVqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVByb21pc2U6OnJlc29sdmUp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NUHJvbWlzZTo6cmVqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZVdpdGhWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEZWZlcnJlZFdyYXBwZXI6OnJlamVjdFdpdGhWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpj
YWxsUHJvbWlzZUZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0
b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6aW1wb3J0S2V5
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjp1bndyYXBLZXkpOgorICAgICAg
ICAqIGNzcy9Gb250RmFjZS5oOgorICAgICAgICAqIGNzcy9Gb250RmFjZVNldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6UGVuZGluZ1Byb21pc2U6OlBlbmRpbmdQcm9taXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0Ojpsb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRGYWNlU2V0OjpyZWdpc3RlclJlYWR5KToKKyAgICAgICAgKiBjc3MvRm9udEZhY2VT
ZXQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKwogMjAxNi0wNS0xNiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBSZW5kZXJEZXNj
ZW5kYW50SXRlcmF0b3IgdG8gdHJhdmVyc2UgYSBSZW5kZXJPYmplY3QncyBkZXNjZW5kYW50cwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWYuaApp
bmRleCA3YjRhNDhiMWM5MDkwOWIyYWZmYjBhYjA2YmYxN2NmMDg4YTU1N2YzLi4zYmE5ZGQ3NTQx
MTlhZTI5MGMwNjQxYWY3MDE4ODY1YjFmZDg2MGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9SZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWYuaApAQCAtNDYsNiArNDYsOCBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBSZWY8VD4gYWRvcHRSZWYoVCYpOwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBjbGFzcyBSZWYgewogcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1Jl
ZiA9IHRydWU7CisKICAgICB+UmVmKCkKICAgICB7CiAjaWYgQVNBTl9FTkFCTEVECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCmlu
ZGV4IGNhNDQ2ZjRmNWRmYzM2MDFiYjUxNzUxNTUxOWJiZDNkNzNhZGRmNmIuLmVkNTFlZTZlNzQy
OWFmZGE4ZWUzOTA1M2VhNWFlNmJjMWVlMDA2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1JlZlB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCkBAIC0zOSw2ICszOSw4IEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIFQgVmFsdWVUeXBlOwogICAgIHR5cGVkZWYgVmFsdWVUeXBl
KiBQdHJUeXBlOwogCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUmVmUHRyID0gdHJ1ZTsK
KwogICAgIEFMV0FZU19JTkxJTkUgUmVmUHRyKCkgOiBtX3B0cihudWxscHRyKSB7IH0KICAgICBB
TFdBWVNfSU5MSU5FIFJlZlB0cihUKiBwdHIpIDogbV9wdHIocHRyKSB7IHJlZklmTm90TnVsbChw
dHIpOyB9CiAgICAgQUxXQVlTX0lOTElORSBSZWZQdHIoY29uc3QgUmVmUHRyJiBvKSA6IG1fcHRy
KG8ubV9wdHIpIHsgcmVmSWZOb3ROdWxsKG1fcHRyKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDEwYTExZjE1NWFiNzI0MTYwNmVjZWZjMjRlMzk5
NzRkNzRiNjI4YjQuLjQ2YWM0NWQ4YjhlMGRlNzhhNmIzNmU0ZTBlOTJkNjQ0NWNhNzIzOWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgUmVmUHRyPEJsb2I+IGJsb2JG
cm9tQXJyYXlCdWZmZXIoQXJyYXlCdWZmZXIqLCBjb25zdCBTdHJpbmcmKTsKK3N0YXRpYyBSZWY8
QmxvYj4gYmxvYkZyb21BcnJheUJ1ZmZlcihBcnJheUJ1ZmZlciosIGNvbnN0IFN0cmluZyYpOwog
CiBGZXRjaEJvZHk6OkZldGNoQm9keShSZWY8QmxvYj4mJiBibG9iKQogICAgIDogbV90eXBlKFR5
cGU6OkJsb2IpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWUoRmV0
Y2hCb2R5T3duZXImIG93bmVyLCBDb25zdW1lcjo6VHlwZSB0eXBlLCBEZWZlcnJlZFdyYXAKICAg
ICB9CiAKICAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0eXBlcy4KLSAgICBwcm9taXNlLnJl
amVjdDxFeGNlcHRpb25Db2RlPigwKTsKKyAgICBwcm9taXNlLnJlamVjdCgwKTsKIH0KIAogI2lm
IEVOQUJMRShTVFJFQU1TX0FQSSkKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIEZldGNoQm9keTo6
Y29uc3VtZVRleHQoQ29uc3VtZXI6OlR5cGUgdHlwZSwgRGVmZXJyZWRXcmFwcGVyJiBwcm9taXNl
KQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFN0cmluZyBjb250ZW50VHlwZSA9IEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKG1fbWlt
ZVR5cGUpKTsKLSAgICBwcm9taXNlLnJlc29sdmU8UmVmUHRyPEJsb2I+PihCbG9iOjpjcmVhdGUo
ZXh0cmFjdEZyb21UZXh0KCksIGNvbnRlbnRUeXBlKSk7CisgICAgcHJvbWlzZS5yZXNvbHZlKEJs
b2I6OmNyZWF0ZShleHRyYWN0RnJvbVRleHQoKSwgY29udGVudFR5cGUpKTsKIH0KIAogRmV0Y2hM
b2FkZXI6OlR5cGUgRmV0Y2hCb2R5Ojpsb2FkaW5nVHlwZShDb25zdW1lcjo6VHlwZSB0eXBlKQpA
QCAtMjM2LDcgKzIzNiw3IEBAIFZlY3Rvcjx1aW50OF90PiBGZXRjaEJvZHk6OmV4dHJhY3RGcm9t
VGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0
cjxCbG9iPiBibG9iRnJvbUFycmF5QnVmZmVyKEFycmF5QnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpCitzdGF0aWMgaW5saW5lIFJlZjxCbG9iPiBibG9iRnJvbUFycmF5
QnVmZmVyKEFycmF5QnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9yPHVp
bnQ4X3Q+KCksIGNvbnRlbnRUeXBlKTsKQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lkIEZldGNoQm9k
eTo6ZnVsZmlsbFRleHRQcm9taXNlKEZldGNoQm9keTo6Q29uc3VtZXI6OlR5cGUgdHlwZSwgY29u
c3QgU3RyaW5nJgogdm9pZCBGZXRjaEJvZHk6OmxvYWRpbmdGYWlsZWQoKQogewogICAgIEFTU0VS
VChtX2NvbnN1bWVyKTsKLSAgICBtX2NvbnN1bWVyLT5wcm9taXNlLnJlamVjdDxFeGNlcHRpb25D
b2RlPigwKTsKKyAgICBtX2NvbnN1bWVyLT5wcm9taXNlLnJlamVjdCgwKTsKICAgICBtX2NvbnN1
bWVyID0gTnVsbG9wdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmgKaW5kZXggMDQ2MDEwYTBmYjkyYjI2Njg1MGVlYTUyNmJlZTBlZDc2Y2UxODkyMi4uNTZmM2Rm
ZGM4NTcxYzMxNTExMmYyNjY1YzZmZmRhOTc1YTlkZjM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGJsb2IoRmV0Y2hCb2R5T3duZXImLCBEZWZlcnJlZFdyYXBwZXImJik7CiAgICAgdm9pZCBqc29u
KEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYpOwogICAgIHZvaWQgdGV4dChGZXRj
aEJvZHlPd25lciYsIERlZmVycmVkV3JhcHBlciYmKTsKLSAgICB2b2lkIGZvcm1EYXRhKEZldGNo
Qm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkgeyBwcm9taXNlLnJlamVjdDxF
eGNlcHRpb25Db2RlPigwKTsgfQorICAgIHZvaWQgZm9ybURhdGEoRmV0Y2hCb2R5T3duZXImLCBE
ZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKSB7IHByb21pc2UucmVqZWN0KDApOyB9CiAKICNpZiBF
TkFCTEUoU1RSRUFNU19BUEkpCiAgICAgdm9pZCBjb25zdW1lQXNTdHJlYW0oRmV0Y2hCb2R5T3du
ZXImLCBGZXRjaFJlc3BvbnNlU291cmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCmluZGV4IGNhZjRhYzhiNWNjYWQxNDM1Y2U4ZmE2NzM2
MTQyNTRiYTJlNDhjNjkuLjk2YzA0YzNkNjFkMTI5YWFmMjA1NDE3OGViNjc2OTE3MmZkZTU0Y2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3Bw
CkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmFycmF5QnVmZmVyKERlZmVy
cmVkV3JhcHBlciYmIHByb21pc2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGlz
RGlzdHVyYmVkKCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9uQ29kZT4oVHlw
ZUVycm9yKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBtX2lzRGlzdHVyYmVkID0gdHJ1ZTsKQEAgLTg1LDExICs4NSwxMSBA
QCB2b2lkIEZldGNoQm9keU93bmVyOjphcnJheUJ1ZmZlcihEZWZlcnJlZFdyYXBwZXImJiBwcm9t
aXNlKQogdm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYihEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNl
KQogewogICAgIGlmIChtX2JvZHkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHByb21pc2UucmVzb2x2
ZTxSZWZQdHI8QmxvYj4+KEJsb2I6OmNyZWF0ZSgpKTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZl
KEJsb2I6OmNyZWF0ZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoaXNEaXN0
dXJiZWQoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdDxFeGNlcHRpb25Db2RlPihUeXBlRXJy
b3IpOworICAgICAgICBwcm9taXNlLnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIG1faXNEaXN0dXJiZWQgPSB0cnVlOwpAQCAtOTksMTEgKzk5LDExIEBAIHZv
aWQgRmV0Y2hCb2R5T3duZXI6OmJsb2IoRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKIHZvaWQg
RmV0Y2hCb2R5T3duZXI6OmZvcm1EYXRhKERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiB7CiAg
ICAgaWYgKG1fYm9keS5pc0VtcHR5KCkpIHsKLSAgICAgICAgcHJvbWlzZS5yZWplY3Q8RXhjZXB0
aW9uQ29kZT4oMCk7CisgICAgICAgIHByb21pc2UucmVqZWN0KDApOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGlmIChpc0Rpc3R1cmJlZCgpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0
PEV4Y2VwdGlvbkNvZGU+KFR5cGVFcnJvcik7CisgICAgICAgIHByb21pc2UucmVqZWN0KFR5cGVF
cnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9pc0Rpc3R1cmJlZCA9IHRydWU7
CkBAIC0xMTMsMTEgKzExMywxMSBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpmb3JtRGF0YShEZWZl
cnJlZFdyYXBwZXImJiBwcm9taXNlKQogdm9pZCBGZXRjaEJvZHlPd25lcjo6anNvbihEZWZlcnJl
ZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIGlmIChtX2JvZHkuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIHByb21pc2UucmVqZWN0PEV4Y2VwdGlvbkNvZGU+KFNZTlRBWF9FUlIpOworICAgICAgICBw
cm9taXNlLnJlamVjdChTWU5UQVhfRVJSKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBp
ZiAoaXNEaXN0dXJiZWQoKSkgewotICAgICAgICBwcm9taXNlLnJlamVjdDxFeGNlcHRpb25Db2Rl
PihUeXBlRXJyb3IpOworICAgICAgICBwcm9taXNlLnJlamVjdChUeXBlRXJyb3IpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIG1faXNEaXN0dXJiZWQgPSB0cnVlOwpAQCAtMTMxLDcgKzEz
MSw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OnRleHQoRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlz
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoaXNEaXN0dXJiZWQoKSkgewotICAg
ICAgICBwcm9taXNlLnJlamVjdDxFeGNlcHRpb25Db2RlPihUeXBlRXJyb3IpOworICAgICAgICBw
cm9taXNlLnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1f
aXNEaXN0dXJiZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5jcHAKaW5kZXggYzVmYWFmY2NiNTdlMTg2NjVkZDcxZjc4YmEwNDBiNTQ0YjI0
ZjZiZS4uNmYzODkwMmRhOTNiNDdlMTk2ODY3OTQzOTg0MWQ0ZWFjMmMxNWFkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0yMTMsNyAr
MjEzLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKICAgICBtX3Jlc3BvbnNlLm1fcmVzcG9u
c2UgPSByZXNvdXJjZVJlc3BvbnNlOwogICAgIG1fcmVzcG9uc2UubV9oZWFkZXJzLT5maWx0ZXJB
bmRGaWxsKHJlc291cmNlUmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLCBGZXRjaEhlYWRlcnM6
Okd1YXJkOjpSZXNwb25zZSk7CiAKLSAgICBzdGQ6OmV4Y2hhbmdlKG1fcHJvbWlzZSwgTnVsbG9w
dCktPnJlc29sdmUoJm1fcmVzcG9uc2UpOworICAgIHN0ZDo6ZXhjaGFuZ2UobV9wcm9taXNlLCBO
dWxsb3B0KS0+cmVzb2x2ZShtX3Jlc3BvbnNlKTsKIH0KIAogdm9pZCBGZXRjaFJlc3BvbnNlOjpC
b2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggN2U0
OGIwM2IwNDM1OWM3Y2YwMDQ2MDg3OGY3NGQ5Yjk2YjY0ZjM4Ny4uZWQyNDcxMTNiMTlmZGI2MDI4
ZDQ2ZDBlNDk4YzE2YzJjYTc0YTNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8RmV0Y2hSZXNwb25zZT4gZXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHN0
YXRpYyBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gcmVkaXJlY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGNvbnN0IFN0cmluZyYsIGludCwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdXNpbmcgRmV0
Y2hQcm9taXNlID0gRE9NUHJvbWlzZTxSZWZQdHI8RmV0Y2hSZXNwb25zZT4sIEV4Y2VwdGlvbkNv
ZGU+OworICAgIHVzaW5nIEZldGNoUHJvbWlzZSA9IERPTVByb21pc2U8RmV0Y2hSZXNwb25zZT47
CiAgICAgc3RhdGljIHZvaWQgZmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZldGNoUmVx
dWVzdCYsIGNvbnN0IERpY3Rpb25hcnkmLCBGZXRjaFByb21pc2UmJik7CiAgICAgc3RhdGljIHZv
aWQgZmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IERp
Y3Rpb25hcnkmLCBGZXRjaFByb21pc2UmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCmluZGV4IDcwMjI3MmRkYjY0NDEwMDM0NWM3
Y2E4MmExYmE5ZmZjMjExMjM1NzcuLmM0OGQ4NjA4NmZmNDk0N2M0MzYxNWEwNTAyYjUzOGM5MTkx
OWNkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YURldmljZXMuaApAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAKICAgICBEb2N1bWVudCogZG9j
dW1lbnQoKSBjb25zdDsKIAotICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxSZWZQdHI8TWVkaWFTdHJl
YW0+LCBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3I+PiBQcm9taXNlOwotICAgIHR5cGVk
ZWYgRE9NUHJvbWlzZTxNZWRpYURldmljZUluZm9WZWN0b3IsIEV4Y2VwdGlvbkNvZGU+IEVudW1l
cmF0ZURldmljZXNQcm9taXNlOworICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxNZWRpYVN0cmVhbT4g
UHJvbWlzZTsKKyAgICB0eXBlZGVmIERPTVByb21pc2U8TWVkaWFEZXZpY2VJbmZvVmVjdG9yPiBF
bnVtZXJhdGVEZXZpY2VzUHJvbWlzZTsKIAogICAgIHZvaWQgZ2V0VXNlck1lZGlhKGNvbnN0IERp
Y3Rpb25hcnkmLCBQcm9taXNlJiYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICB2b2lkIGVu
dW1lcmF0ZURldmljZXMoRW51bWVyYXRlRGV2aWNlc1Byb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKaW5kZXggNTBkZTkzMGQyNDUwOTkyM2Q3ZDIyMTNm
MWI3NmNmN2RlMDU3ZWVlZi4uYmZmZjQ0ZTg3MjkxMWQwNzdjMTNiZWMxNmQ3NmJlNTEyMjZjYzZl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCkBAIC01Myw5ICs1Myw5IEBAIGNsYXNzIFJUQ1N0YXRz
UmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBuYW1lc3BhY2UgUGVl
ckNvbm5lY3Rpb24gewotdHlwZWRlZiBET01Qcm9taXNlPFJlZlB0cjxSVENTZXNzaW9uRGVzY3Jp
cHRpb24+LCBSZWZQdHI8RE9NRXJyb3I+PiBTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlOwotdHlw
ZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0cl90LCBSZWZQdHI8RE9NRXJyb3I+PiBWb2lkUHJv
bWlzZTsKLXR5cGVkZWYgRE9NUHJvbWlzZTxSZWZQdHI8UlRDU3RhdHNSZXNwb25zZT4sIFJlZlB0
cjxET01FcnJvcj4+IFN0YXRzUHJvbWlzZTsKK3R5cGVkZWYgRE9NUHJvbWlzZTxSVENTZXNzaW9u
RGVzY3JpcHRpb24+IFNlc3Npb25EZXNjcmlwdGlvblByb21pc2U7Cit0eXBlZGVmIERPTVByb21p
c2U8c3RkOjpudWxscHRyX3Q+IFZvaWRQcm9taXNlOwordHlwZWRlZiBET01Qcm9taXNlPFJUQ1N0
YXRzUmVzcG9uc2U+IFN0YXRzUHJvbWlzZTsKIH0KIAogY2xhc3MgUGVlckNvbm5lY3Rpb25CYWNr
ZW5kQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IGJiMDgzNzU0YmE5YWE2ZTY2OWVhZGI1MjZh
YmUzN2I1ZjFhYzllZTcuLmUyNTJhNTVlYTU4MzQ1NjIwZGVlNGI3MjY4OTQ3YTk2N2NhNGY5NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgVXNlck1lZGlhUmVxdWVz
dDo6ZGlkQ3JlYXRlU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiBwcml2YXRl
U3RyCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIDQgLSBDcmVhdGUgdGhlIE1lZGlhU3RyZWFt
IGFuZCBwYXNzIGl0IHRvIHRoZSBzdWNjZXNzIGNhbGxiYWNrLgotICAgIFJlZlB0cjxNZWRpYVN0
cmVhbT4gc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSgqbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBwcml2YXRlU3RyZWFtKTsKKyAgICBSZWY8TWVkaWFTdHJlYW0+IHN0cmVhbSA9IE1lZGlh
U3RyZWFtOjpjcmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcHJpdmF0ZVN0cmVhbSk7
CiAgICAgaWYgKG1fYXVkaW9Db25zdHJhaW50cykgewogICAgICAgICBmb3IgKGF1dG8mIHRyYWNr
IDogc3RyZWFtLT5nZXRBdWRpb1RyYWNrcygpKSB7CiAgICAgICAgICAgICB0cmFjay0+YXBwbHlD
b25zdHJhaW50cygqbV9hdWRpb0NvbnN0cmFpbnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKaW5kZXggMGZkMTZmM2U2
MWZhMGIxYzg4MGU3MmJhZDI5MjU3YzBkNWRiNTkxMC4uMDg3YjQ1YzRjYzcxYjI0OTdlYWY4YzNi
NzA4Y2NiOWZlOWI2NjY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgUmVh
ZGFibGVTdHJlYW1Tb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFkYWJsZVN0cmVhbVNvdXJj
ZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgflJlYWRhYmxlU3RyZWFtU291cmNlKCkgeyB9CiAK
LSAgICB0eXBlZGVmIERPTVByb21pc2U8c3RkOjpudWxscHRyX3QsIEV4Y2VwdGlvbkNvZGU+IFBy
b21pc2U7CisgICAgdHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0cl90PiBQcm9taXNlOwog
CiAgICAgdm9pZCBzdGFydChSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXImJiwgUHJvbWlzZSYmKTsK
ICAgICB2b2lkIGNhbmNlbChKU0M6OkpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggODU4ZjY0N2FmZjc3ZGJiMjUzODY2ZmUw
OTIyYTU1ZDRkYmFmYzVlNy4uMTZiMmIzYzQ0ZDgyMzFlM2ZjNjRhYTE1YTBhZTYyZGIwYjM3ODQ4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5o
CkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEFjdGl2ZURPTU9iamVjdDo6
c3VzcGVuZDsKICAgICB1c2luZyBBY3RpdmVET01PYmplY3Q6OnJlc3VtZTsKIAotICAgIHR5cGVk
ZWYgRE9NUHJvbWlzZTxzdGQ6Om51bGxwdHJfdCwgRXhjZXB0aW9uQ29kZT4gUHJvbWlzZTsKKyAg
ICB0eXBlZGVmIERPTVByb21pc2U8c3RkOjpudWxscHRyX3Q+IFByb21pc2U7CiAKICAgICB2b2lk
IHN1c3BlbmQoUHJvbWlzZSYmKTsKICAgICB2b2lkIHJlc3VtZShQcm9taXNlJiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAKaW5kZXggODk2Zjg0OTQzNWIy
YTQ5MDJkYTdmMmQxN2VmN2NmNjc0M2E2MWYxMS4uYTIxNGI4N2JjNjk4ZTk1MDA4NDgyODNmMGY3
N2RiNjAzNTJhMjQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Qcm9taXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21p
c2UuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgZnVsZmlsbFByb21pc2VXaXRoSlNPTihEZWZl
cnJlZFdyYXBwZXImIHByb21pc2UsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKICAgICBKU0M6OkpT
VmFsdWUgdmFsdWUgPSBwYXJzZUFzSlNPTihwcm9taXNlLmdsb2JhbE9iamVjdCgpLmdsb2JhbEV4
ZWMoKSwgZGF0YSk7CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcHJvbWlzZS5yZWplY3Q8RXhj
ZXB0aW9uQ29kZT4oU1lOVEFYX0VSUik7CisgICAgICAgIHByb21pc2UucmVqZWN0KFNZTlRBWF9F
UlIpOwogICAgIGVsc2UKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHZhbHVlKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKaW5kZXggZmI1MWI3MjI3ZjFmMTI5
MWEwNjczOTVkOTBjYjJkMDg2NTc2MWMxNy4uYjkwNzc3M2QwMTIwZGM0NjcxNmFlYjg1NGVjOGUy
ZDM1NTgzZDliYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Q
cm9taXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgK
QEAgLTMzLDE1ICszMyw5MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlPHR5
cGVuYW1lIERPTUNsYXNzPgorc3RydWN0IFR5cGVJbnNwZWN0b3IgeworcHJpdmF0ZToKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3RleHByIGF1dG8gdGVzdElzVmVjdG9yKGlu
dCkgLT4gZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFQ+KCkuc2hyaW5rVG9GaXQoKSwgYm9vbCgpKSB7
IHJldHVybiB0cnVlOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0ZXhw
ciBib29sIHRlc3RJc1ZlY3RvciguLi4pIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3RleHByIGF1dG8gdGVzdElzUmVmKGludCkgLT4gZGVj
bHR5cGUoVDo6aXNSZWYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdGF0aWMgY29uc3RleHByIGJvb2wgdGVzdElzUmVmKC4uLikgeyByZXR1cm4gZmFsc2U7IH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdGV4cHIgYXV0byB0ZXN0SXNS
ZWZQdHIoaW50KSAtPiBkZWNsdHlwZShUOjppc1JlZlB0cikgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdGV4cHIgYm9vbCB0ZXN0SXNSZWZQdHIo
Li4uKSB7IHJldHVybiBmYWxzZTsgfQorCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzUmVmT3JSZWZQdHIgPSB0ZXN0SXNSZWY8RE9NQ2xhc3M+KDApIHx8IHRlc3RJc1JlZlB0
cjxET01DbGFzcz4oMCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUGFzc0J5VmFsdWVU
eXBlID0gc3RkOjppc19wb2ludGVyPERPTUNsYXNzPjo6dmFsdWUKKyAgICAgICAgfHwgc3RkOjpp
c19zYW1lPERPTUNsYXNzLCBzdGQ6Om51bGxwdHJfdD46OnZhbHVlCisgICAgICAgIHx8IHN0ZDo6
aXNfc2FtZTxET01DbGFzcywgSlNDOjpKU1ZhbHVlPjo6dmFsdWUKKyAgICAgICAgfHwgc3RkOjpp
c19zYW1lPERPTUNsYXNzLCBib29sPjo6dmFsdWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzUGFzc0J5Q29uc3RSZWZUeXBlID0gdGVzdElzVmVjdG9yPERPTUNsYXNzPigwKQorICAgICAg
ICB8fCBzdGQ6OmlzX3NhbWU8RE9NQ2xhc3MsIFN0cmluZz46OnZhbHVlOworfTsKKwordGVtcGxh
dGU8dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+CitzdHJ1Y3QgUHJv
bWlzZVJlc3VsdEluc3BlY3RvciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IHBhc3NCeVZhbHVlID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeVJl
ZiA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeVVSZWYgPSBmYWxzZTsK
KyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5Q29uc3RSZWYgPSBmYWxzZTsKKworICAg
IHR5cGVkZWYgRE9NQ2xhc3MmIFR5cGU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBET01DbGFz
cz4KK3N0cnVjdCBQcm9taXNlUmVzdWx0SW5zcGVjdG9yPERPTUNsYXNzLCB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxUeXBlSW5zcGVjdG9yPERPTUNsYXNzPjo6aXNQYXNzQnlWYWx1ZVR5cGU+Ojp0
eXBlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeVZhbHVlID0g
dHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5UmVmID0gZmFsc2U7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeVVSZWYgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgcGFzc0J5Q29uc3RSZWYgPSBmYWxzZTsKKworICAgIHR5cGVkZWYgRE9NQ2xh
c3MgVHlwZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPgorc3RydWN0IFByb21p
c2VSZXN1bHRJbnNwZWN0b3I8RE9NQ2xhc3MsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFR5cGVJ
bnNwZWN0b3I8RE9NQ2xhc3M+Ojppc1Bhc3NCeUNvbnN0UmVmVHlwZT46OnR5cGU+IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5VmFsdWUgPSBmYWxzZTsKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5UmVmID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIHBhc3NCeVVSZWYgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
cGFzc0J5Q29uc3RSZWYgPSB0cnVlOworCisgICAgdHlwZWRlZiBjb25zdCBET01DbGFzcyYgVHlw
ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIERPTUNsYXNzPgorc3RydWN0IFByb21pc2VSZXN1
bHRJbnNwZWN0b3I8RE9NQ2xhc3MsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFR5cGVJbnNwZWN0
b3I8RE9NQ2xhc3M+Ojppc1JlZk9yUmVmUHRyPjo6dHlwZT4geworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBwYXNzQnlWYWx1ZSA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBw
YXNzQnlSZWYgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgcGFzc0J5VVJlZiA9
IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHBhc3NCeUNvbnN0UmVmID0gZmFsc2U7
Cit9OworCiBjbGFzcyBEZWZlcnJlZFdyYXBwZXIgewogcHVibGljOgogICAgIERlZmVycmVkV3Jh
cHBlcihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpKU1Byb21pc2VE
ZWZlcnJlZCopOwogCi0gICAgdGVtcGxhdGU8Y2xhc3MgUmVzb2x2ZVJlc3VsdFR5cGU+Ci0gICAg
dm9pZCByZXNvbHZlKGNvbnN0IFJlc29sdmVSZXN1bHRUeXBlJik7CisgICAgdGVtcGxhdGU8Y2xh
c3MgUmVzb2x2ZVJlc3VsdFR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1
bHRJbnNwZWN0b3I8UmVzb2x2ZVJlc3VsdFR5cGU+OjpwYXNzQnlWYWx1ZSwgdm9pZD46OnR5cGUK
KyAgICByZXNvbHZlKFJlc29sdmVSZXN1bHRUeXBlIHJlc3VsdCkgeyByZXNvbHZlV2l0aFZhbHVl
KHJlc3VsdCk7IH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBSZXNvbHZlUmVzdWx0VHlwZT4gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8UHJvbWlzZVJlc3VsdEluc3BlY3RvcjxSZXNvbHZlUmVzdWx0VHlw
ZT46OnBhc3NCeVJlZiwgdm9pZD46OnR5cGUKKyAgICByZXNvbHZlKFJlc29sdmVSZXN1bHRUeXBl
JiByZXN1bHQpIHsgcmVzb2x2ZVdpdGhWYWx1ZShyZXN1bHQpOyB9CisgICAgdGVtcGxhdGU8Y2xh
c3MgUmVzb2x2ZVJlc3VsdFR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1
bHRJbnNwZWN0b3I8UmVzb2x2ZVJlc3VsdFR5cGU+OjpwYXNzQnlVUmVmLCB2b2lkPjo6dHlwZQor
ICAgIHJlc29sdmUoUmVzb2x2ZVJlc3VsdFR5cGUmJiByZXN1bHQpIHsgcmVzb2x2ZVdpdGhWYWx1
ZShzdGQ6OmZvcndhcmQ8UmVzb2x2ZVJlc3VsdFR5cGU+KHJlc3VsdCkpOyB9CisgICAgdGVtcGxh
dGU8Y2xhc3MgUmVzb2x2ZVJlc3VsdFR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21p
c2VSZXN1bHRJbnNwZWN0b3I8UmVzb2x2ZVJlc3VsdFR5cGU+OjpwYXNzQnlDb25zdFJlZiwgdm9p
ZD46OnR5cGUKKyAgICByZXNvbHZlKGNvbnN0IFJlc29sdmVSZXN1bHRUeXBlJiByZXN1bHQpIHsg
cmVzb2x2ZVdpdGhWYWx1ZShyZXN1bHQpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBSZWplY3RS
ZXN1bHRUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxQcm9taXNlUmVzdWx0SW5zcGVjdG9y
PFJlamVjdFJlc3VsdFR5cGU+OjpwYXNzQnlWYWx1ZSwgdm9pZD46OnR5cGUKKyAgICByZWplY3Qo
UmVqZWN0UmVzdWx0VHlwZSByZXN1bHQpIHsgcmVqZWN0V2l0aFZhbHVlKHJlc3VsdCk7IH0KKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBSZWplY3RSZXN1bHRUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxQcm9taXNlUmVzdWx0SW5zcGVjdG9yPFJlamVjdFJlc3VsdFR5cGU+OjpwYXNzQnlSZWYsIHZv
aWQ+Ojp0eXBlCisgICAgcmVqZWN0KFJlamVjdFJlc3VsdFR5cGUmIHJlc3VsdCkgeyByZWplY3RX
aXRoVmFsdWUocmVzdWx0KTsgfQorICAgIHRlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1bHRJbnNwZWN0b3I8UmVqZWN0UmVz
dWx0VHlwZT46OnBhc3NCeVVSZWYsIHZvaWQ+Ojp0eXBlCisgICAgcmVqZWN0KFJlamVjdFJlc3Vs
dFR5cGUmJiByZXN1bHQpIHsgcmVqZWN0V2l0aFZhbHVlKHN0ZDo6Zm9yd2FyZDxSZWplY3RSZXN1
bHRUeXBlPihyZXN1bHQpKTsgfQorICAgIHRlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPFByb21pc2VSZXN1bHRJbnNwZWN0b3I8UmVqZWN0UmVz
dWx0VHlwZT46OnBhc3NCeUNvbnN0UmVmLCB2b2lkPjo6dHlwZQorICAgIHJlamVjdChjb25zdCBS
ZWplY3RSZXN1bHRUeXBlJiByZXN1bHQpIHsgcmVqZWN0V2l0aFZhbHVlKHJlc3VsdCk7IH0KIAot
ICAgIHRlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+Ci0gICAgdm9pZCByZWplY3QoY29u
c3QgUmVqZWN0UmVzdWx0VHlwZSYpOworICAgIHZvaWQgcmVqZWN0KEV4Y2VwdGlvbkNvZGUpOwog
CiAgICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0OwogICAgIEpTQzo6
SlNWYWx1ZSBwcm9taXNlKCkgY29uc3Q7CkBAIC01MSw2ICsxMjgsOSBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVzb2x2ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSByZXNvbHV0
aW9uKSB7IGNhbGxGdW5jdGlvbihzdGF0ZSwgbV9kZWZlcnJlZC0+cmVzb2x2ZSgpLCByZXNvbHV0
aW9uKTsgfQogICAgIHZvaWQgcmVqZWN0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1Zh
bHVlIHJlc29sdXRpb24pIHsgY2FsbEZ1bmN0aW9uKHN0YXRlLCBtX2RlZmVycmVkLT5yZWplY3Qo
KSwgcmVzb2x1dGlvbik7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+
IHZvaWQgcmVqZWN0V2l0aFZhbHVlKFJlamVjdFJlc3VsdFR5cGUmJik7CisgICAgdGVtcGxhdGU8
Y2xhc3MgUmVzb2x2ZVJlc3VsdFR5cGU+IHZvaWQgcmVzb2x2ZVdpdGhWYWx1ZShSZXNvbHZlUmVz
dWx0VHlwZSYmKTsKKwogICAgIEpTQzo6U3Ryb25nPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2dsb2Jh
bE9iamVjdDsKICAgICBKU0M6OlN0cm9uZzxKU0M6OkpTUHJvbWlzZURlZmVycmVkPiBtX2RlZmVy
cmVkOwogfTsKQEAgLTcxLDcgKzE1MSw4IEBAIGlubGluZSBKU0M6OkpTVmFsdWUgY2FsbFByb21p
c2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6RW5jb2RlZEpTVmFsCiAgICAg
cmV0dXJuIHByb21pc2VEZWZlcnJlZC5wcm9taXNlKCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXJyb3I+CisvLyBBdCB0aGUgbW9tZW50LCBWYWx1ZSBjYW5ub3Qg
YmUgYSBSZWY8VD4gb3IgUmVmUHRyPFQ+LCBpdCBzaG91bGQgYmUgYSBET00gY2xhc3MuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVmFsdWU+CiBjbGFzcyBET01Qcm9taXNlIHsKIHB1YmxpYzoKICAgICBE
T01Qcm9taXNlKERlZmVycmVkV3JhcHBlciYmIHdyYXBwZXIpIDogbV93cmFwcGVyKFdURk1vdmUo
d3JhcHBlcikpIHsgfQpAQCAtODAsMTA1ICsxNjEsMTA1IEBAIHB1YmxpYzoKICAgICBET01Qcm9t
aXNlKGNvbnN0IERPTVByb21pc2UmKSA9IGRlZmF1bHQ7CiAgICAgRE9NUHJvbWlzZSYgb3BlcmF0
b3I9KERPTVByb21pc2UgY29uc3QmKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIHJlc29sdmUoY29u
c3QgVmFsdWUmIHZhbHVlKSB7IG1fd3JhcHBlci5yZXNvbHZlPFZhbHVlPih2YWx1ZSk7IH0KLSAg
ICB2b2lkIHJlamVjdChjb25zdCBFcnJvciYgZXJyb3IpIHsgbV93cmFwcGVyLnJlamVjdDxFcnJv
cj4oZXJyb3IpOyB9CisgICAgdm9pZCByZXNvbHZlKHR5cGVuYW1lIFByb21pc2VSZXN1bHRJbnNw
ZWN0b3I8VmFsdWU+OjpUeXBlIHZhbHVlKSB7IG1fd3JhcHBlci5yZXNvbHZlKHZhbHVlKTsgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXJyb3JUeXBlPiB2b2lkIHJlamVjdChFcnJvclR5cGUm
JiBlcnJvcikgeyBtX3dyYXBwZXIucmVqZWN0KHN0ZDo6Zm9yd2FyZDxFcnJvclR5cGU+KGVycm9y
KSk7IH0KIAogcHJpdmF0ZToKICAgICBEZWZlcnJlZFdyYXBwZXIgbV93cmFwcGVyOwogfTsKIAot
dGVtcGxhdGU8Y2xhc3MgUmVzb2x2ZVJlc3VsdFR5cGU+Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdy
YXBwZXI6OnJlc29sdmUoY29uc3QgUmVzb2x2ZVJlc3VsdFR5cGUmIHJlc3VsdCkKK2lubGluZSB2
b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0KEV4Y2VwdGlvbkNvZGUgZWMpCiB7CiAgICAgQVNT
RVJUKG1fZGVmZXJyZWQpOwogICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CiAgICAgSlNDOjpF
eGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIEpTQzo6
SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICByZXNvbHZlKCpleGVjLCB0b0pTKGV4ZWMs
IG1fZ2xvYmFsT2JqZWN0LmdldCgpLCByZXN1bHQpKTsKKyAgICByZWplY3QoKmV4ZWMsIGNyZWF0
ZURPTUV4Y2VwdGlvbihleGVjLCBlYykpOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBSZWplY3RSZXN1
bHRUeXBlPgotaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3QoY29uc3QgUmVqZWN0
UmVzdWx0VHlwZSYgcmVzdWx0KQordGVtcGxhdGU8Y2xhc3MgUmVzb2x2ZVJlc3VsdFR5cGU+Citp
bmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmVXaXRoVmFsdWUoUmVzb2x2ZVJlc3Vs
dFR5cGUmJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1fZGVmZXJyZWQpOwogICAgIEFTU0VSVCht
X2dsb2JhbE9iamVjdCk7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKLSAg
ICByZWplY3QoKmV4ZWMsIHRvSlMoZXhlYywgbV9nbG9iYWxPYmplY3QuZ2V0KCksIHJlc3VsdCkp
OworICAgIHJlc29sdmUoKmV4ZWMsIHRvSlMoZXhlYywgbV9nbG9iYWxPYmplY3QuZ2V0KCksIHN0
ZDo6Zm9yd2FyZDxSZXNvbHZlUmVzdWx0VHlwZT4ocmVzdWx0KSkpOwogfQogCi10ZW1wbGF0ZTw+
Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlamVjdChjb25zdCBzdGQ6Om51bGxwdHJf
dCYpCit0ZW1wbGF0ZTxjbGFzcyBSZWplY3RSZXN1bHRUeXBlPgoraW5saW5lIHZvaWQgRGVmZXJy
ZWRXcmFwcGVyOjpyZWplY3RXaXRoVmFsdWUoUmVqZWN0UmVzdWx0VHlwZSYmIHJlc3VsdCkKIHsK
ICAgICBBU1NFUlQobV9kZWZlcnJlZCk7CiAgICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKICAg
ICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAg
ICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAgIHJlamVjdCgqZXhlYywgSlND
Ojpqc051bGwoKSk7CisgICAgcmVqZWN0KCpleGVjLCB0b0pTKGV4ZWMsIG1fZ2xvYmFsT2JqZWN0
LmdldCgpLCBzdGQ6OmZvcndhcmQ8UmVqZWN0UmVzdWx0VHlwZT4ocmVzdWx0KSkpOwogfQogCiB0
ZW1wbGF0ZTw+Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlamVjdChjb25zdCBKU0M6
OkpTVmFsdWUmIHZhbHVlKQoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlKGJv
b2wgcmVzdWx0KQogewogICAgIEFTU0VSVChtX2RlZmVycmVkKTsKICAgICBBU1NFUlQobV9nbG9i
YWxPYmplY3QpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgcmVq
ZWN0KCpleGVjLCB2YWx1ZSk7CisgICAgcmVzb2x2ZSgqZXhlYywgSlNDOjpqc0Jvb2xlYW4ocmVz
dWx0KSk7CiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVq
ZWN0PEV4Y2VwdGlvbkNvZGU+KGNvbnN0IEV4Y2VwdGlvbkNvZGUmIGVjKQoraW5saW5lIHZvaWQg
RGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBBU1NF
UlQobV9kZWZlcnJlZCk7CiAgICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKICAgICBKU0M6OkV4
ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAgIHJlamVjdCgqZXhlYywgY3JlYXRlRE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKSk7CisgICAgcmVzb2x2ZSgqZXhlYywgdmFsdWUpOwogfQogCiB0ZW1w
bGF0ZTw+Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmU8U3RyaW5nPihjb25z
dCBTdHJpbmcmIHJlc3VsdCkKK2lubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0KEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9kZWZlcnJlZCk7CiAgICAgQVNTRVJU
KG1fZ2xvYmFsT2JqZWN0KTsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwot
ICAgIHJlc29sdmUoKmV4ZWMsIGpzU3RyaW5nKGV4ZWMsIHJlc3VsdCkpOworICAgIHJlamVjdCgq
ZXhlYywgdmFsdWUpOwogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBw
ZXI6OnJlc29sdmU8Ym9vbD4oY29uc3QgYm9vbCYgcmVzdWx0KQoraW5saW5lIHZvaWQgRGVmZXJy
ZWRXcmFwcGVyOjpyZXNvbHZlKHN0ZDo6bnVsbHB0cl90KQogewogICAgIEFTU0VSVChtX2RlZmVy
cmVkKTsKICAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBl
eGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIoZXhlYyk7Ci0gICAgcmVzb2x2ZSgqZXhlYywgSlNDOjpqc0Jvb2xlYW4ocmVzdWx0
KSk7CisgICAgcmVzb2x2ZSgqZXhlYywgSlNDOjpqc1VuZGVmaW5lZCgpKTsKIH0KIAogdGVtcGxh
dGU8PgotaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlPEpTQzo6SlNWYWx1ZT4o
Y29uc3QgSlNDOjpKU1ZhbHVlJiB2YWx1ZSkKK2lubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6
cmVqZWN0KHN0ZDo6bnVsbHB0cl90KQogewogICAgIEFTU0VSVChtX2RlZmVycmVkKTsKICAgICBB
U1NFUlQobV9nbG9iYWxPYmplY3QpOwogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV9nbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhl
Yyk7Ci0gICAgcmVzb2x2ZSgqZXhlYywgdmFsdWUpOworICAgIHJlamVjdCgqZXhlYywgSlNDOjpq
c051bGwoKSk7CiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6
cmVzb2x2ZShjb25zdCBzdGQ6Om51bGxwdHJfdCYpCitpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBw
ZXI6OnJlc29sdmUoY29uc3QgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1fZGVmZXJy
ZWQpOwogICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4
ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVy
IGxvY2tlcihleGVjKTsKLSAgICByZXNvbHZlKCpleGVjLCBKU0M6OmpzVW5kZWZpbmVkKCkpOwor
ICAgIHJlc29sdmUoKmV4ZWMsIGpzU3RyaW5nKGV4ZWMsIHJlc3VsdCkpOwogfQogCiB0ZW1wbGF0
ZTw+Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlamVjdDxTdHJpbmc+KGNvbnN0IFN0
cmluZyYgcmVzdWx0KQoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3QoY29uc3Qg
U3RyaW5nJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1fZGVmZXJyZWQpOwogICAgIEFTU0VSVCht
X2dsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1
YnRsZUNyeXB0b0N1c3RvbS5jcHAKaW5kZXggNGZhNjc4MjRlNzVlZGI1Y2IzZTZiYTg4MDFhNmE3
NGFjY2Y4OGRhYS4uOGM2ZDg4YTU4NGE5NmYzYjdhMDU4MmY0ZTIyZWVjODFlMjFhMWIwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9t
LmNwcApAQCAtNTUwLDcgKzU1MCw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OmltcG9ydEtl
eShFeGVjU3RhdGUmIHN0YXRlKQogICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJy
ZWQgPSBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCkpOwog
ICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVyKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHByb21p
c2VEZWZlcnJlZCk7CiAgICAgYXV0byBzdWNjZXNzQ2FsbGJhY2sgPSBbd3JhcHBlcl0oQ3J5cHRv
S2V5JiByZXN1bHQpIG11dGFibGUgewotICAgICAgICB3cmFwcGVyLnJlc29sdmUoJnJlc3VsdCk7
CisgICAgICAgIHdyYXBwZXIucmVzb2x2ZShyZXN1bHQpOwogICAgIH07CiAgICAgYXV0byBmYWls
dXJlQ2FsbGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxlIHsKICAgICAgICAgd3JhcHBlci5yZWpl
Y3QobnVsbHB0cik7CkBAIC03ODUsNyArNzg1LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6
dW53cmFwS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiAKICAgICBhdXRvIGRlY3J5cHRTdWNjZXNzQ2Fs
bGJhY2sgPSBbZG9tR2xvYmFsT2JqZWN0LCBrZXlGb3JtYXQsIHVud3JhcHBlZEtleUFsZ29yaXRo
bVB0ciwgdW53cmFwcGVkS2V5QWxnb3JpdGhtUGFyYW1ldGVyc1B0ciwgZXh0cmFjdGFibGUsIGtl
eVVzYWdlcywgd3JhcHBlcl0oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bHQpIG11dGFibGUg
ewogICAgICAgICBhdXRvIGltcG9ydFN1Y2Nlc3NDYWxsYmFjayA9IFt3cmFwcGVyXShDcnlwdG9L
ZXkmIGtleSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB3cmFwcGVyLnJlc29sdmUoJmtleSk7Cisg
ICAgICAgICAgICB3cmFwcGVyLnJlc29sdmUoa2V5KTsKICAgICAgICAgfTsKICAgICAgICAgYXV0
byBpbXBvcnRGYWlsdXJlQ2FsbGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIHdyYXBwZXIucmVqZWN0KG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAppbmRleCA4OTcx
ZWYxZDI5N2EyMmZiZWNiY2UzZTBlYWJmMDM5YTQ3NmUxMzYzLi5lMjQ5MzRkNzc0MmQ1MGRlMGQy
NjY2N2ZhN2E2YWZhY2I2MzlkMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaApAQCAtNjUsNyArNjUs
NyBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBMb2FkU3RhdHVzIHsgVW5sb2FkZWQsIExvYWRp
bmcsIExvYWRlZCwgRXJyb3IgfTsKICAgICBMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OwogCi0g
ICAgdHlwZWRlZiBET01Qcm9taXNlPEZvbnRGYWNlJiwgRXhjZXB0aW9uQ29kZT4gUHJvbWlzZTsK
KyAgICB0eXBlZGVmIERPTVByb21pc2U8Rm9udEZhY2UmPiBQcm9taXNlOwogICAgIHZvaWQgcmVn
aXN0ZXJMb2FkZWQoUHJvbWlzZSYmKTsKIAogICAgIHZvaWQgbG9hZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZVNldC5jcHAKaW5kZXggN2U3NDQ5ODNkZjgxZTdhYmQwZGMxMjMxYWU1NjIwNDQyMWY5
OGMyNi4uMTg5ZTViZGZhZmQwMTdhYWE4NmZkOGQzNzdhOTA1Y2ZjZWM3ODM1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2VTZXQuY3BwCkBAIC04Myw3ICs4Myw3IEBAIFJlZlB0cjxGb250RmFjZT4g
Rm9udEZhY2VTZXQ6Okl0ZXJhdG9yOjpuZXh0KCkKICAgICByZXR1cm4gbV90YXJnZXQtPmJhY2tp
bmcoKVttX2luZGV4KytdLndyYXBwZXIoKTsKIH0KIAotRm9udEZhY2VTZXQ6OlBlbmRpbmdQcm9t
aXNlOjpQZW5kaW5nUHJvbWlzZShQcm9taXNlJiYgcHJvbWlzZSkKK0ZvbnRGYWNlU2V0OjpQZW5k
aW5nUHJvbWlzZTo6UGVuZGluZ1Byb21pc2UoTG9hZFByb21pc2UmJiBwcm9taXNlKQogICAgIDog
cHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKQogewogfQpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQg
Rm9udEZhY2VTZXQ6OmNsZWFyKCkKICAgICAgICAgbV9iYWNraW5nLT5yZW1vdmUobV9iYWNraW5n
LmdldCgpWzBdKTsKIH0KIAotdm9pZCBGb250RmFjZVNldDo6bG9hZChjb25zdCBTdHJpbmcmIGZv
bnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKK3ZvaWQg
Rm9udEZhY2VTZXQ6OmxvYWQoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQs
IExvYWRQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBhdXRvIG1hdGNoaW5nRmFjZXMgPSBtX2JhY2tpbmctPm1hdGNoaW5nRmFjZXMoZm9udCwgdGV4
dCwgZWMpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgRm9udEZhY2VTZXQ6OmxvYWQoY29uc3Qg
U3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQsIERlZmVycmVkV3JhcHBlciYmCiAKICAg
ICBmb3IgKGF1dG8mIGZhY2UgOiBtYXRjaGluZ0ZhY2VzKSB7CiAgICAgICAgIGlmIChmYWNlLmdl
dCgpLnN0YXR1cygpID09IENTU0ZvbnRGYWNlOjpTdGF0dXM6OkZhaWx1cmUpIHsKLSAgICAgICAg
ICAgIHByb21pc2UucmVqZWN0KERPTUNvcmVFeGNlcHRpb246OmNyZWF0ZShFeGNlcHRpb25Db2Rl
RGVzY3JpcHRpb24oTkVUV09SS19FUlIpKS5wdHIoKSk7CisgICAgICAgICAgICBwcm9taXNlLnJl
amVjdChET01Db3JlRXhjZXB0aW9uOjpjcmVhdGUoRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKE5F
VFdPUktfRVJSKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAt
MTY3LDcgKzE2Nyw3IEBAIGJvb2wgRm9udEZhY2VTZXQ6OmNoZWNrKGNvbnN0IFN0cmluZyYgZmFt
aWx5LCBjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmCiAgICAgcmV0dXJuIG1fYmFj
a2luZy0+Y2hlY2soZmFtaWx5LCB0ZXh0LCBlYyk7CiB9CiAKLXZvaWQgRm9udEZhY2VTZXQ6OnJl
Z2lzdGVyUmVhZHkoUHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEZvbnRGYWNlU2V0OjpyZWdpc3Rl
clJlYWR5KFJlYWR5UHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgQVNTRVJUKCFtX3Byb21pc2Up
OwogICAgIGlmIChtX2lzUmVhZHkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmgKaW5kZXggZjA0
NzBlOWQ2MjhiYmU3YzAyOGE5MTBiZjcwZjA5YmZhYzZmOGUwMS4uODlhZDA4ZDA5YmNmMjdkOTc4
MTQ5NjNkOGM3ZjlkZjYzMzM4NzkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmgKQEAgLTQ3
LDE0ICs0NywxNSBAQCBwdWJsaWM6CiAgICAgYm9vbCByZW1vdmUoRm9udEZhY2UmKTsKICAgICB2
b2lkIGNsZWFyKCk7CiAKLSAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBT
dHJpbmcmIHRleHQsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpOworICAgIHR5cGVkZWYgRE9N
UHJvbWlzZTxWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4+IExvYWRQcm9taXNlOworICAgIHZvaWQg
bG9hZChjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgTG9hZFByb21pc2Um
Jik7CiAgICAgYm9vbCBjaGVjayhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4
dCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgZW51bSBjbGFzcyBMb2FkU3RhdHVzIHsgTG9hZGlu
ZywgTG9hZGVkIH07CiAgICAgTG9hZFN0YXR1cyBzdGF0dXMoKSBjb25zdDsKIAotICAgIHR5cGVk
ZWYgRE9NUHJvbWlzZTxGb250RmFjZVNldCYsIERPTUNvcmVFeGNlcHRpb24mPiBQcm9taXNlOwot
ICAgIHZvaWQgcmVnaXN0ZXJSZWFkeShQcm9taXNlJiYpOworICAgIHR5cGVkZWYgRE9NUHJvbWlz
ZTxGb250RmFjZVNldCY+IFJlYWR5UHJvbWlzZTsKKyAgICB2b2lkIHJlZ2lzdGVyUmVhZHkoUmVh
ZHlQcm9taXNlJiYpOwogCiAgICAgQ1NTRm9udEZhY2VTZXQmIGJhY2tpbmcoKSB7IHJldHVybiBt
X2JhY2tpbmc7IH0KIApAQCAtNzQsMTkgKzc1LDE4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBzdHJ1Y3QgUGVuZGluZ1Byb21pc2UgOiBSZWZDb3VudGVkPFBlbmRpbmdQcm9taXNlPiB7Ci0g
ICAgICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4mLCBET01D
b3JlRXhjZXB0aW9uJj4gUHJvbWlzZTsKLSAgICAgICAgc3RhdGljIFJlZjxQZW5kaW5nUHJvbWlz
ZT4gY3JlYXRlKFByb21pc2UmJiBwcm9taXNlKQorICAgICAgICBzdGF0aWMgUmVmPFBlbmRpbmdQ
cm9taXNlPiBjcmVhdGUoTG9hZFByb21pc2UmJiBwcm9taXNlKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQZW5kaW5nUHJvbWlzZShXVEZNb3ZlKHByb21pc2Up
KSk7CiAgICAgICAgIH0KICAgICAgICAgflBlbmRpbmdQcm9taXNlKCk7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBQZW5kaW5nUHJvbWlzZShQcm9taXNlJiYpOworICAgICAgICBQZW5kaW5nUHJv
bWlzZShMb2FkUHJvbWlzZSYmKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPFJlZlB0
cjxGb250RmFjZT4+IGZhY2VzOwotICAgICAgICBQcm9taXNlIHByb21pc2U7CisgICAgICAgIExv
YWRQcm9taXNlIHByb21pc2U7CiAgICAgICAgIGJvb2wgaGFzUmVhY2hlZFRlcm1pbmFsU3RhdGUg
eyBmYWxzZSB9OwogICAgIH07CiAKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogCiAgICAg
UmVmPENTU0ZvbnRGYWNlU2V0PiBtX2JhY2tpbmc7CiAgICAgSGFzaE1hcDxSZWZQdHI8Q1NTRm9u
dEZhY2U+LCBWZWN0b3I8UmVmPFBlbmRpbmdQcm9taXNlPj4+IG1fcGVuZGluZ1Byb21pc2VzOwot
ICAgIE9wdGlvbmFsPFByb21pc2U+IG1fcHJvbWlzZTsKKyAgICBPcHRpb25hbDxSZWFkeVByb21p
c2U+IG1fcHJvbWlzZTsKICAgICBib29sIG1faXNSZWFkeSB7IGZhbHNlIH07CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGU1MmU4Nzk4ZTQ0YmFlNzQ0YjVm
OTk4MzVkMjc3NzMzOGJjMzc5ODUuLmIzODkzOThiMzNhZDY3YTI4MmNhMTIzYzk1Mjg5ZjUyYTRh
NTBmMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0yMTIsNyAr
MjEyLDcgQEAgcHVibGljOgogICAgIGJvb2wgbG9vcCgpIGNvbnN0OwogICAgIHZvaWQgc2V0TG9v
cChib29sIGIpOwogCi0gICAgdHlwZWRlZiBET01Qcm9taXNlPHN0ZDo6bnVsbHB0cl90LCBET01F
cnJvciY+IFBsYXlQcm9taXNlOworICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxzdGQ6Om51bGxwdHJf
dD4gUGxheVByb21pc2U7CiAgICAgdm9pZCBwbGF5KFBsYXlQcm9taXNlJiYpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBwbGF5KCkgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>