<?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>161471</bug_id>
          
          <creation_ts>2016-08-31 20:13:43 -0700</creation_ts>
          <short_desc>WASM functions should be able to use arguments</short_desc>
          <delta_ts>2016-09-07 12:52:38 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1225224</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-08-31 20:13:43 -0700</bug_when>
    <thetext>WASM functions should be able to use arguments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225232</commentid>
    <comment_count>1</comment_count>
      <attachid>287591</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-08-31 20:46:07 -0700</bug_when>
    <thetext>Created attachment 287591
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225236</commentid>
    <comment_count>2</comment_count>
      <attachid>287593</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-08-31 20:57:07 -0700</bug_when>
    <thetext>Created attachment 287593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225237</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-31 21:00:07 -0700</bug_when>
    <thetext>Attachment 287593 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/WASMFormat.h:63:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/testWASM.cpp:335:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 2 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225238</commentid>
    <comment_count>4</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-08-31 21:02:50 -0700</bug_when>
    <thetext>&gt; ERROR: Source/JavaScriptCore/wasm/WASMFormat.h:63:  Tests for true/false,
&gt; null/non-null, and zero/non-zero should all be done without equality
&gt; comparisons.  [readability/comparison_to_zero] [5]
&gt; ERROR: Source/JavaScriptCore/testWASM.cpp:335:  Tests for true/false,
&gt; null/non-null, and zero/non-zero should all be done without equality
&gt; comparisons.  [readability/comparison_to_zero] [5]
&gt; Total errors found: 2 in 21 files

While these are technically violations of WebKit style I think they are warranted in those spots. Each case is surrounded by other checks that the result of similar expressions are equal to non-zero values. Using ! instead just makes the code harder to read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225240</commentid>
    <comment_count>5</comment_count>
      <attachid>287594</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-08-31 21:07:03 -0700</bug_when>
    <thetext>Created attachment 287594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225241</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-31 21:08:56 -0700</bug_when>
    <thetext>Attachment 287594 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/WASMFormat.h:63:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/testWASM.cpp:335:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 2 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225372</commentid>
    <comment_count>7</comment_count>
      <attachid>287594</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-01 10:31:38 -0700</bug_when>
    <thetext>Comment on attachment 287594
Patch

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

&gt; Source/JavaScriptCore/B3CallingConventions.cpp:29
&gt; +

There should be a `#if ENABLE(B3_JIT)` here. That fixes the 32-bit build. I&apos;ll make sure to change that before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225538</commentid>
    <comment_count>8</comment_count>
      <attachid>287681</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-01 14:35:05 -0700</bug_when>
    <thetext>Created attachment 287681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225540</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-01 14:37:34 -0700</bug_when>
    <thetext>Attachment 287681 did not pass style-queue:


ERROR: Source/JavaScriptCore/testWASM.cpp:335:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225594</commentid>
    <comment_count>10</comment_count>
      <attachid>287681</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-09-01 16:06:23 -0700</bug_when>
    <thetext>Comment on attachment 287681
Patch

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

&gt; Source/JavaScriptCore/testWASM.cpp:196
&gt; +// FIXME: This is pure hacks and should be changed... please...

If this is still true, you need a bug url to go with this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225618</commentid>
    <comment_count>11</comment_count>
      <attachid>287681</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-09-01 16:52:29 -0700</bug_when>
    <thetext>Comment on attachment 287681
Patch

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

&gt;&gt; Source/JavaScriptCore/testWASM.cpp:196
&gt;&gt; +// FIXME: This is pure hacks and should be changed... please...
&gt; 
&gt; If this is still true, you need a bug url to go with this.

I don&apos;t think that&apos;s an issue. All this code is just here until the actual testing infrastructure is in place. I&apos;ll change the comment to exclude a FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225623</commentid>
    <comment_count>12</comment_count>
      <attachid>287681</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-09-01 17:06:34 -0700</bug_when>
    <thetext>Comment on attachment 287681
Patch

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

&gt; Source/JavaScriptCore/B3CallingConventions.cpp:35
&gt; +static JSCCallingConvention* staticJSCCallingConvention;

This should be inside jscCallingConvention.

Personally I find it nicer to explicitly initialize it.

&gt; Source/JavaScriptCore/B3CallingConventions.cpp:41
&gt; +    staticJSCCallingConvention = new CallingConvention&lt;jscHeaderSize, nextJSCOffset&gt;(Vector&lt;GPRReg&gt;(), RegisterSet::calleeSaveRegisters());

You could use NeverDestroyed to avoid locking a heap page.

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:107
&gt; +    m_locals.grow(count);

I don&apos;t think that&apos;s what you want.
This change the size of m_locals TO count, and default initialize the value.

If count &gt; m_locals.size(), m_locals.append() will go after that.

What you want is reserveCapacity(size() + count)

&gt; Source/JavaScriptCore/wasm/WASMB3IRGenerator.cpp:127
&gt; +    ASSERT(index &lt; m_locals.size());

This should not be needed. Vector does that unless you tell it not to.

What could be valuable is 
    ASSERT(m_locals[index])
to make sure the value is not null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225653</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-09-01 19:15:02 -0700</bug_when>
    <thetext>Keith landed this patch in https://trac.webkit.org/changeset/205330.  

FYI, there was a ChangeLog mixup.  So, don&apos;t just believe what you read as the change on trac.  Check the ChangeLog diff itself.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287591</attachid>
            <date>2016-08-31 20:46:07 -0700</date>
            <delta_ts>2016-08-31 20:57:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161471-20160831204353.patch</filename>
            <type>text/plain</type>
            <size>60224</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZjVjM2Q5YWY5NTA0NGE2Mzk2MGY1MGQ5MTU5NjNiYzA0MzRhYjU3Li5lMzhhODlhZmY4MDc3ZWM5
ZGY1Y2U0MDcyODlhZTU3NmYzZDE4Y2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDEgQEAKKzIwMTYtMDgtMzEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgV0FTTSBmdW5jdGlvbnMgc2hvdWxkIGJlIGFibGUgdG8gdXNlIGFy
Z3VtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYxNDcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBkb2VzIGEgY291cGxlIG9mIGNoYW5nZXM6CisKKyAgICAgICAgMSkgUmVtb3Zl
cyB0aGUgcmVkdW5kYW5jeSBvZiBhbGwgdGhlIFdBU00gY2xhc3NlcyBwcmVmaXhpbmcgdGhlaXIg
bmFtZXMgd2l0aCBXQVNNLiBUaGF0J3Mgd2hhdCB0aGUgV0FTTSBuYW1lc3BhY2UgaXMgZm9yLgor
CisgICAgICAgIDIpIEFkZHMgYSBuZXcgQ2FsbGluZyBDb252ZW50aW9uIGNsYXNzIGZvciBCMy4g
VGhpcyBjbGFzcyBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSB0byBzcGVjaWZ5IHRoZSBjYWxsaW5n
IGNvbnZlbnRpb24gb2YgYSBmdW5jdGlvbi4gSW4gcGFydGljdWxhciBpdCBrbm93cyB3aGljaCBh
cmd1bWVudHMgYXJlIGluIHJlZ2lzdGVycyBhbmQgd2hpY2ggb25lcyBzaG91bGQgYmUgb24gdGhl
IHN0YWNrLiBGb3Igbm93LCBub3RoaW5nIHVzZXMgdGhlIGFyZ3VtZW50IHJlZ2lzdGVycywgaW4g
dGhlIGZ1dHVyZSB3ZSB3aWxsIHVzZSB0aGVzZSBmb3IgV0FTTSBhbmQvb3IgSlMuIEFkZGl0b25h
bGx5LCBpdCBrbm93cyB0aGUgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzIGZvciBhbnkgZ2l2ZW4gZnVu
Y3Rpb24uIFRoZSBtYWluIGFkdmFudGFnZSBvZiB0aGlzIGNsYXNzIGlzIHRoYXQgaXQgbWFrZXMg
aXQgZWFzeSB0byBpdGVyYXRlIG92ZXIgdGhlIGFyZ3VtZW50cyBvZiB5b3VyIGZ1bmN0aW9uIHdp
dGhvdXQgaGF2aW5nIHRvIHdvcnJ5IGFib3V0IHRoZSBkZXRhaWxzIG9mIHRoZSBjYWxsaW5nIGNv
bnZlbnRpb24geW91IGFyZSB1c2luZy4KKworICAgICAgICAzKSBNYWtlcyB0aGUgV0FTTSBjYWxs
aW5nIGNvbnZlbnRpb24gdGhlIHNhbWUgYXMgdGhlIEpTIG9uZS4gQ3VycmVudGx5LCB0aGUgQ29k
ZUJsb2NrLCBDb2RlT3JpZ2luLCBhbmQgQ2FsbGVlIGFyZSBhbGwgMC4gU2luY2UgdGhleSBoYXZl
IG5vIHZhbHVlLiBBZGRpdGlvbmFsbHksIHNpbmNlIHdlIGNhbGwgaW50byBXQVNNIGZyb20gQysr
IHRocm91Z2ggdm1FbnRyeVRvSmF2YVNjcmlwdCwgaWYgdGhlcmUgYXJlIG5vIGFyZ3VtZW50cyB0
byB0aGUgY2FsbGVlIHdlIGluc2VydCBhIG51bGwgcG9pbnRlciBhcyB0aGUgZmlyc3QgYXJndW1l
bnQuCisKKyAgICAgICAgNCkgU2luY2UgV0FTTSBleHBlY3RzIHRoZSBhcmd1bWVudHMgdG8gYmUg
bWFwcGVkIHRvIGZ1bmN0aW9uIGxvY2FscyB3ZSBtYXAgdGhlIGFyZ3VtZW50IHN0YWNrIHNsb3Rz
IHRvIHZhcmlhYmxlcyBpbW1lZGlhdGVseSBhZnRlciB0aGUgZnVuY3Rpb24gcHJvbG9ndWUuCisK
KyAgICAgICAgKiBCM0NhbGxpbmdDb252ZW50aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkNhbGxpbmdDb252ZW50aW9uOjpDYWxsaW5nQ29udmVudGlvbik6CisgICAgICAgIChKU0M6
OkIzOjpDYWxsaW5nQ29udmVudGlvbjo6aXRlcmF0ZSk6CisgICAgICAgIChKU0M6OkIzOjpuZXh0
SlNDT2Zmc2V0KToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGIzL0IzUHJvY2VkdXJlLmg6CisgICAgICAgICogYjMvQjNUeXBl
Lmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaDoKKyAgICAgICAgKiBs
bGludC9MTEludFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OnZtRW50cnlUb1dBU00pOgorICAg
ICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6CisgICAgICAgICogdGVzdFdBU00uY3BwOgorICAg
ICAgICAoaW52b2tlKToKKyAgICAgICAgKGJveCk6CisgICAgICAgIChydW5XQVNNVGVzdHMpOgor
ICAgICAgICAqIHdhc20vSlNXQVNNTW9kdWxlLmg6CisgICAgICAgIChKU0M6OkpTV0FTTU1vZHVs
ZTo6c2lnbmF0dXJlcyk6CisgICAgICAgIChKU0M6OkpTV0FTTU1vZHVsZTo6ZnVuY3Rpb25JbXBv
cnRzKToKKyAgICAgICAgKEpTQzo6SlNXQVNNTW9kdWxlOjpmdW5jdGlvbkltcG9ydFNpZ25hdHVy
ZXMpOgorICAgICAgICAoSlNDOjpKU1dBU01Nb2R1bGU6Omdsb2JhbFZhcmlhYmxlVHlwZXMpOgor
ICAgICAgICAoSlNDOjpKU1dBU01Nb2R1bGU6OmZ1bmN0aW9uRGVjbGFyYXRpb25zKToKKyAgICAg
ICAgKEpTQzo6SlNXQVNNTW9kdWxlOjpmdW5jdGlvblBvaW50ZXJUYWJsZXMpOgorICAgICAgICAq
IHdhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXQVNNOjp0b0IzT3Ap
OgorICAgICAgICAoSlNDOjpXQVNNOjpCM0lSR2VuZXJhdG9yOjphZGRMb2NhbCk6CisgICAgICAg
IChKU0M6OldBU006OkIzSVJHZW5lcmF0b3I6OmFkZEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6
OldBU006OkIzSVJHZW5lcmF0b3I6OmdldExvY2FsKToKKyAgICAgICAgKEpTQzo6V0FTTTo6QjNJ
UkdlbmVyYXRvcjo6dW5hcnlPcCk6CisgICAgICAgIChKU0M6OldBU006OkIzSVJHZW5lcmF0b3I6
OmJpbmFyeU9wKToKKyAgICAgICAgKEpTQzo6V0FTTTo6QjNJUkdlbmVyYXRvcjo6YWRkQ29uc3Rh
bnQpOgorICAgICAgICAoSlNDOjpXQVNNOjpwYXJzZUFuZENvbXBpbGUpOgorICAgICAgICAqIHdh
c20vV0FTTUIzSVJHZW5lcmF0b3IuaDoKKyAgICAgICAgKiB3YXNtL1dBU01Gb3JtYXQuaDoKKyAg
ICAgICAgKiB3YXNtL1dBU01GdW5jdGlvblBhcnNlci5oOgorICAgICAgICAoSlNDOjpXQVNNOjpG
dW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6RnVuY3Rpb25QYXJzZXIpOgorICAgICAgICAoSlNDOjpX
QVNNOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2UpOgorICAgICAgICAoSlNDOjpXQVNN
OjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OldB
U006OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAgICAo
SlNDOjpXQVNNOjpXQVNNRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OldBU01GdW5jdGlvblBhcnNl
cik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldBU006OldBU01GdW5jdGlvblBhcnNlcjxDb250
ZXh0Pjo6cGFyc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXQVNNOjpXQVNNRnVuY3Rpb25Q
YXJzZXI8Q29udGV4dD46OnBhcnNlQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXQVNN
OjpXQVNNRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6IERlbGV0ZWQu
CisgICAgICAgICogd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V0FT
TTo6TW9kdWxlUGFyc2VyOjpwYXJzZSk6CisgICAgICAgIChKU0M6OldBU006Ok1vZHVsZVBhcnNl
cjo6cGFyc2VGdW5jdGlvblR5cGVzKToKKyAgICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlUGFyc2Vy
OjpwYXJzZUZ1bmN0aW9uU2lnbmF0dXJlcyk6CisgICAgICAgIChKU0M6OldBU006Ok1vZHVsZVBh
cnNlcjo6cGFyc2VGdW5jdGlvbkRlZmluaXRpb25zKToKKyAgICAgICAgKEpTQzo6V0FTTTo6V0FT
TU1vZHVsZVBhcnNlcjo6cGFyc2UpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXQVNNOjpXQVNN
TW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uVHlwZXMpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpXQVNNOjpXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uU2lnbmF0dXJlcyk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OldBU006OldBU01Nb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25E
ZWZpbml0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmg6
CisgICAgICAgIChKU0M6OldBU006Ok1vZHVsZVBhcnNlcjo6TW9kdWxlUGFyc2VyKToKKyAgICAg
ICAgKEpTQzo6V0FTTTo6TW9kdWxlUGFyc2VyOjpmdW5jdGlvbkluZm9ybWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6V0FTTTo6V0FTTU1vZHVsZVBhcnNlcjo6V0FTTU1vZHVsZVBhcnNlcik6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OldBU006OldBU01Nb2R1bGVQYXJzZXI6OmZ1bmN0aW9uSW5mb3Jt
YXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV0FTTU9wcy5oOgorICAgICAgICAqIHdh
c20vV0FTTVBhcnNlci5oOgorICAgICAgICAoSlNDOjpXQVNNOjpQYXJzZXI6OlBhcnNlcik6Cisg
ICAgICAgIChKU0M6OldBU006OlBhcnNlcjo6Y29uc3VtZUNoYXJhY3Rlcik6CisgICAgICAgIChK
U0M6OldBU006OlBhcnNlcjo6Y29uc3VtZVN0cmluZyk6CisgICAgICAgIChKU0M6OldBU006OlBh
cnNlcjo6cGFyc2VVSW50MzIpOgorICAgICAgICAoSlNDOjpXQVNNOjpQYXJzZXI6OnBhcnNlVUlu
dDcpOgorICAgICAgICAoSlNDOjpXQVNNOjpQYXJzZXI6OnBhcnNlVmFyVUludDEpOgorICAgICAg
ICAoSlNDOjpXQVNNOjpQYXJzZXI6OnBhcnNlVmFsdWVUeXBlKToKKyAgICAgICAgKEpTQzo6V0FT
TTo6V0FTTVBhcnNlcjo6V0FTTVBhcnNlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldBU006
OldBU01QYXJzZXI6OmNvbnN1bWVDaGFyYWN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpX
QVNNOjpXQVNNUGFyc2VyOjpjb25zdW1lU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
V0FTTTo6V0FTTVBhcnNlcjo6cGFyc2VVSW50MzIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpX
QVNNOjpXQVNNUGFyc2VyOjpwYXJzZVVJbnQ3KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V0FT
TTo6V0FTTVBhcnNlcjo6cGFyc2VWYXJVSW50MSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldB
U006OldBU01QYXJzZXI6OnBhcnNlVmFsdWVUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNt
L1dBU01QbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6UGxhbjo6UGxhbik6CisgICAgICAg
ICogd2FzbS9XQVNNU2VjdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpXQVNNOjpTZWN0aW9uczo6
bG9va3VwKToKKyAgICAgICAgKEpTQzo6V0FTTTo6V0FTTVNlY3Rpb25zOjpsb29rdXApOiBEZWxl
dGVkLgorICAgICAgICAqIHdhc20vV0FTTVNlY3Rpb25zLmg6CisgICAgICAgIChKU0M6OldBU006
OlNlY3Rpb25zOjp2YWxpZGF0ZU9yZGVyKToKKyAgICAgICAgKEpTQzo6V0FTTTo6V0FTTVNlY3Rp
b25zOjp2YWxpZGF0ZU9yZGVyKTogRGVsZXRlZC4KKwogMjAxNi0wOC0yMiAgS2VpdGggTWlsbGVy
ICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBY3R1YWxseSBlbmFibGUgdGhl
IFdBU00gYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQjNDYWxsaW5n
Q29udmVudGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9CM0NhbGxpbmdDb252ZW50aW9u
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjMzNjU5NTliNThjZWMyNmJhYmZhNTViODM2MTVhOTA1Yzg1Yzc2MGEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQjNDYWxsaW5nQ29udmVu
dGlvbnMuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5j
bHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrLmgiCisj
aW5jbHVkZSAiQjNDb25zdDY0VmFsdWUuaCIKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisj
aW5jbHVkZSAiQjNUeXBlLmgiCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiUmVn
aXN0ZXJTZXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK25hbWVzcGFjZSBCMyB7CisKK3R5cGVk
ZWYgdW5zaWduZWQgKCpOZXh0T2Zmc2V0KSh1bnNpZ25lZCBjdXJyZW50T2Zmc2V0LCBUeXBlIHR5
cGUpOworCit0ZW1wbGF0ZTx1bnNpZ25lZCBvZmZzZXQsIE5leHRPZmZzZXQgdXBkYXRlT2Zmc2V0
PgorY2xhc3MgQ2FsbGluZ0NvbnZlbnRpb24geworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBoZWFkZXJTaXplID0gb2Zmc2V0OworCisgICAgQ2FsbGluZ0NvbnZlbnRpb24oVmVj
dG9yPEdQUlJlZz4mJiByZWdpc3RlckFyZ3VtZW50cywgUmVnaXN0ZXJTZXQmJiBjYWxsZWVTYXZl
UmVnaXN0ZXJzKQorICAgICAgICA6IG1fcmVnaXN0ZXJBcmd1bWVudHMocmVnaXN0ZXJBcmd1bWVu
dHMpCisgICAgICAgICwgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzKGNhbGxlZVNhdmVSZWdpc3RlcnMp
CisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9p
ZCBpdGVyYXRlKGNvbnN0IFZlY3RvcjxUeXBlPiYgYXJndW1lbnRUeXBlcywgUHJvY2VkdXJlJiBw
cm9jLCBCYXNpY0Jsb2NrKiBibG9jaywgT3JpZ2luIG9yaWdpbiwgY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQgPSBoZWFk
ZXJTaXplOworICAgICAgICBWYWx1ZSogZnJhbWVQb2ludGVyID0gYmxvY2stPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgRnJhbWVQb2ludGVyLCBvcmlnaW4pOworCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBhcmd1bWVudFR5cGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBW
YWx1ZSogYXJndW1lbnQ7CisgICAgICAgICAgICBpZiAoaSA8IG1fcmVnaXN0ZXJBcmd1bWVudHMu
c2l6ZSgpKQorICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0gYmxvY2stPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBvcmlnaW4sIG1fcmVnaXN0ZXJBcmd1bWVudHNbaV0pOworICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSBibG9jay0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIG9yaWdpbiwgZnJhbWVQb2ludGVyLAorICAgICAg
ICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgb3JpZ2lu
LCBjdXJyZW50T2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYXJndW1lbnQgPSBibG9jay0+YXBw
ZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBhcmd1bWVudFR5cGVzW2ldLCBvcmlnaW4s
IGFkZHJlc3MpOworICAgICAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQgPSB1cGRhdGVPZmZzZXQo
Y3VycmVudE9mZnNldCwgYXJndW1lbnRUeXBlc1tpXSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBmdW5jdG9yKGFyZ3VtZW50LCBpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0
IFZlY3RvcjxHUFJSZWc+IG1fcmVnaXN0ZXJBcmd1bWVudHM7CisgICAgY29uc3QgUmVnaXN0ZXJT
ZXQgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOworICAgIGNvbnN0IFJlZ2lzdGVyU2V0IG1fY2FsbGVy
U2F2ZVJlZ2lzdGVyczsKK307CisKK2lubGluZSB1bnNpZ25lZCBuZXh0SlNDT2Zmc2V0KHVuc2ln
bmVkIGN1cnJlbnRPZmZzZXQsIFR5cGUpCit7CisgICAgcmV0dXJuIGN1cnJlbnRPZmZzZXQgKyBz
aXplb2YoUmVnaXN0ZXIpOworfQorCitjb25zdGV4cHIgdW5zaWduZWQganNjSGVhZGVyU2l6ZSA9
IEV4ZWNTdGF0ZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzICogc2l6ZW9mKFJlZ2lzdGVyKTsKK3R5
cGVkZWYgQ2FsbGluZ0NvbnZlbnRpb248anNjSGVhZGVyU2l6ZSwgbmV4dEpTQ09mZnNldD4gSlND
Q2FsbGluZ0NvbnZlbnRpb247CisKK0pTQ0NhbGxpbmdDb252ZW50aW9uKiBqc2NDYWxsaW5nQ29u
dmVudGlvbigpOworCit9IC8vIG5hbWVzcGFjZSBCMworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGVhMDNjYjYyYjhlMTM4ZmI5YmNiMzVmZjE2ZjM5NjcyMDE1MjhhNDEuLjQzMDg0YTc1OGI5YWU0
OWQ1MjcwMDU4Yjc2MjJmMTczMDY2ZDNjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMTgxLDYgKzExODEsNyBAQAogCQk1MkM5NTJCOTE5QTI4QTFDMDA2OUIzODYgLyogVHlw
ZVByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUyQzk1MkI4MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuY3BwICovOyB9Owog
CQk1MzEzNzRCRDFENUNFNjc2MDBBRjdBMEIgLyogV0FTTVBsYW4uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTM3NEJDMUQ1Q0U2NzYwMEFGN0EwQiAv
KiBXQVNNUGxhbi5oICovOyB9OwogCQk1MzEzNzRCRjFENUNFOTUwMDBBRjdBMEIgLyogV0FTTVBs
YW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMx
Mzc0QkUxRDVDRTk1MDAwQUY3QTBCIC8qIFdBU01QbGFuLmNwcCAqLzsgfTsKKwkJNTMxQjNDODcx
RDc0QzYwMzAwNUIzMjM2IC8qIEIzQ2FsbGluZ0NvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzFCM0M4NjFENzRDNjAzMDA1QjMyMzYg
LyogQjNDYWxsaW5nQ29udmVudGlvbnMuaCAqLzsgfTsKIAkJNTM0ODZCQjcxQzE3OTVDMzAwRjZG
M0FGIC8qIEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNTM0ODZCQkIx
QzE4RTg0NTAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ4NkJCQTFDMThFODQ1MDBGNkYzQUYgLyogSlNU
eXBlZEFycmF5LmNwcCAqLzsgfTsKIAkJNTM0OTAyODUxQzcyNzZCNzAwMTJCQ0I4IC8qIFR5cGVk
QXJyYXlDVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MzQ5MDI4MjFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCAqLzsg
fTsKQEAgLTExODksNiArMTE5MCw3IEBACiAJCTUzNTI5QTRDMUM0NTdCNzUwMDBCNDlDNiAvKiBB
UElVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTM1MjlBNEIxQzQ1N0I3NTAwMEI0OUM2IC8qIEFQSVV0aWxzLmggKi87IH07CiAJCTUzNzBCNEY1
MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzNzBCNEYzMUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1
ZVdhdGNocG9pbnRCYXNlLmNwcCAqLzsgfTsKIAkJNTM3MEI0RjYxQkYyNjIwNTAwNUM0MEZDIC8q
IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNzBCNEY0MUJGMjVFQTIwMDVD
NDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggKi87
IH07CisJCTUzODhCNDA0MUQ3NjY0MEIwMEQzRDg1MiAvKiBCM0NhbGxpbmdDb252ZW50aW9ucy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Mzg4QjQw
MzFENzY2NDBCMDBEM0Q4NTIgLyogQjNDYWxsaW5nQ29udmVudGlvbnMuY3BwICovOyB9OwogCQk1
MzkxN0U3QjFCNzkwNkZBMDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5
cGVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzOTE3RTdBMUI3OTA2RTQwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1By
b3RvdHlwZUZ1bmN0aW9ucy5oICovOyB9OwogCQk1MzlFQjA3OTFENTU2MDcwMDBDODJFRjcgLyog
Rm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFt
ZXdvcmsgKi87IH07CiAJCTUzOUVCMDdBMUQ1NTYwNzAwMEM4MkVGNyAvKiBKYXZhU2NyaXB0Q29y
ZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3Jr
ICovOyB9OwpAQCAtMTIwMCw3ICsxMjAyLDcgQEAKIAkJNTNGNDBFOEQxRDU5MDFGMjAwOTlBMUI2
IC8qIFdBU01QYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzRjQwRThDMUQ1OTAxRjIwMDk5QTFCNiAvKiBXQVNNUGFyc2VyLmggKi87IH07CiAJ
CTUzRjQwRThGMUQ1OTAyODIwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4RTFENTkwMjgy
MDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuY3BwICovOyB9OwogCQk1M0Y0MEU5MTFENTkw
MzAyMDA5OUExQjYgLyogV0FTTU9wcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTNGNDBFOTAxRDU5MDMwMjAwOTlBMUI2IC8qIFdBU01PcHMuaCAqLzsg
fTsKLSAgICAgICAgICAgICAgICA1M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJH
ZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzRjQwRTkyMUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oICovOyB9Owor
CQk1M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRTkyMUQ1QTRBQjMw
MDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oICovOyB9OwogCQk1M0Y0MEU5NTFENUE3QUVG
MDA5OUExQjYgLyogV0FTTU1vZHVsZVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNDBFOTQxRDVBN0FFRjAwOTlBMUI2IC8qIFdBU01Nb2R1
bGVQYXJzZXIuaCAqLzsgfTsKIAkJNTNGNDBFOTcxRDVBN0JFQzAwOTlBMUI2IC8qIFdBU01Nb2R1
bGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTNGNDBFOTYxRDVBN0JFQzAwOTlBMUI2IC8qIFdBU01Nb2R1bGVQYXJzZXIuY3BwICovOyB9
OwogCQk1M0Y2QkY2RDFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRp
b25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1M0Y2QkY2QzFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Q
cm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTMzNjcsNiArMzM2OSw3IEBACiAJCTUyQzk1MkI4MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBl
UHJvZmlsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHlwZVByb2ZpbGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMzc0QkMxRDVDRTY3NjAwQUY3QTBCIC8qIFdBU01Q
bGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01QbGFuLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTM3NEJFMUQ1Q0U5NTAwMEFGN0EwQiAvKiBXQVNN
UGxhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXQVNNUGxhbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMUIzQzg2MUQ3NEM2MDMwMDVCMzIz
NiAvKiBCM0NhbGxpbmdDb252ZW50aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBCM0NhbGxpbmdDb252ZW50aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MzQ4NkJCNjFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MzQ4NkJCQTFDMThFODQ1MDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHlwZWRBcnJheS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDkwMjgyMUM3MjQyQzgwMDEyQkNCOCAvKiBU
eXBlZEFycmF5Q1Rlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
VHlwZWRBcnJheUNUZXN0LmNwcDsgcGF0aCA9IEFQSS90ZXN0cy9UeXBlZEFycmF5Q1Rlc3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzM3Nyw2ICszMzgwLDcgQEAKIAkJNTM1
MjlBNEIxQzQ1N0I3NTAwMEI0OUM2IC8qIEFQSVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFQSVV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUz
NzBCNEYzMUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdh
dGNocG9pbnRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFk
YXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MzcwQjRGNDFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJ
bmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzODhCNDAzMUQ3NjY0MEIwMEQzRDg1
MiAvKiBCM0NhbGxpbmdDb252ZW50aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBCM0NhbGxpbmdDb252ZW50aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUzOTE3RTdBMUI3OTA2RTQwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MzkxN0U3QzFCNzkxMTA2MDAwRUJEMzMgLyogSlNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUz
OTE3RTgzMUI3OTFDQjgwMDBFQkQzMyAvKiBUeXBlZEFycmF5UHJvdG90eXBlLmpzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gVHlwZWRBcnJheVByb3RvdHlwZS5qczsg
cGF0aCA9IGJ1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKQEAgLTMzOTAsNyArMzM5NCw3IEBACiAJCTUzRjQwRThDMUQ1OTAxRjIwMDk5
QTFCNiAvKiBXQVNNUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdB
U01QYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNGNDBFOEUxRDU5MDI4
MjAwOTlBMUI2IC8qIFdBU01CM0lSR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdBU01CM0lSR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTNGNDBFOTAxRDU5MDMwMjAwOTlBMUI2IC8qIFdBU01PcHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FTTU9wcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotICAgICAgICAgICAgICAgIDUzRjQwRTkyMUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNN
QjNJUkdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNNQjNJ
UkdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1M0Y0MEU5MjFENUE0
QUIzMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0FTTUIzSVJHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTNGNDBFOTQxRDVBN0FFRjAwOTlBMUI2IC8qIFdBU01Nb2R1bGVQYXJzZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FTTU1vZHVsZVBhcnNlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Y0MEU5NjFENUE3QkVDMDA5OUExQjYgLyogV0FTTU1v
ZHVsZVBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXQVNN
TW9kdWxlUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNGNkJGNkMx
QzNGMDYwQTAwRjQxRTVEIC8qIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlv
blByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3NjMsNiArNDc2Nyw4
IEBACiAJCQkJRENGREZCRDcxRDFGNUQ5ODAwRkUzRDcyIC8qIEIzQm90dG9tUHJvdmlkZXIuaCAq
LywKIAkJCQkwRjZCOEFERTFDNEVGRTE3MDA5NjkwNTIgLyogQjNCcmVha0NyaXRpY2FsRWRnZXMu
Y3BwICovLAogCQkJCTBGNkI4QURGMUM0RUZFMTcwMDk2OTA1MiAvKiBCM0JyZWFrQ3JpdGljYWxF
ZGdlcy5oICovLAorCQkJCTUzODhCNDAzMUQ3NjY0MEIwMEQzRDg1MiAvKiBCM0NhbGxpbmdDb252
ZW50aW9ucy5jcHAgKi8sCisJCQkJNTMxQjNDODYxRDc0QzYwMzAwNUIzMjM2IC8qIEIzQ2FsbGlu
Z0NvbnZlbnRpb25zLmggKi8sCiAJCQkJREM5QTBDMUMxRDJEOTRFRjAwODUxMjRFIC8qIEIzQ2Fz
ZUNvbGxlY3Rpb24uY3BwICovLAogCQkJCURDOUEwQzFEMUQyRDk0RUYwMDg1MTI0RSAvKiBCM0Nh
c2VDb2xsZWN0aW9uLmggKi8sCiAJCQkJREM5QTBDMUUxRDJEOTRFRjAwODUxMjRFIC8qIEIzQ2Fz
ZUNvbGxlY3Rpb25JbmxpbmVzLmggKi8sCkBAIC00ODc5LDkgKzQ4ODUsOSBAQAogCQkJCTBGRUM4
NEVGMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaFZhbHVlLmNwcCAqLywKIAkJCQkwRkVDODRG
MDFCREFDREFDMDA4MEZGNzQgLyogQjNTd2l0Y2hWYWx1ZS5oICovLAogCQkJCTBGNDU3MDNFMUJF
NTg0Q0EwMDYyQTYyOSAvKiBCM1RpbWluZ1Njb3BlLmNwcCAqLywKKwkJCQkwRkVDODRGMjFCREFD
REFDMDA4MEZGNzQgLyogQjNUeXBlLmggKi8sCiAJCQkJMEY0NTcwM0YxQkU1ODRDQTAwNjJBNjI5
IC8qIEIzVGltaW5nU2NvcGUuaCAqLywKIAkJCQkwRkVDODRGMTFCREFDREFDMDA4MEZGNzQgLyog
QjNUeXBlLmNwcCAqLywKLQkJCQkwRkVDODRGMjFCREFDREFDMDA4MEZGNzQgLyogQjNUeXBlLmgg
Ki8sCiAJCQkJRENGREZCRDgxRDFGNUQ5ODAwRkUzRDcyIC8qIEIzVHlwZU1hcC5oICovLAogCQkJ
CTBGRUM4NEYzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Vwc2lsb25WYWx1ZS5jcHAgKi8sCiAJCQkJ
MEZFQzg0RjQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVXBzaWxvblZhbHVlLmggKi8sCkBAIC01NTY0
LDcgKzU1NzAsNyBAQAogCQkJCTUzRjQwRTkwMUQ1OTAzMDIwMDk5QTFCNiAvKiBXQVNNT3BzLmgg
Ki8sCiAJCQkJN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8qIFdBU01Gb3JtYXQuaCAqLywKIAkJ
CQk1M0Y0MEU4RTFENTkwMjgyMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuY3BwICovLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1M0Y0MEU5MjFENUE0QUIzMDA5OUExQjYg
LyogV0FTTUIzSVJHZW5lcmF0b3IuaCAqLywKKwkJCQk1M0Y0MEU5MjFENUE0QUIzMDA5OUExQjYg
LyogV0FTTUIzSVJHZW5lcmF0b3IuaCAqLywKIAkJCQk1M0Y0MEU4QTFENTkwMUJCMDA5OUExQjYg
LyogV0FTTUZ1bmN0aW9uUGFyc2VyLmggKi8sCiAJCQkJNTNGNDBFOTYxRDVBN0JFQzAwOTlBMUI2
IC8qIFdBU01Nb2R1bGVQYXJzZXIuY3BwICovLAogCQkJCTUzRjQwRTk0MUQ1QTdBRUYwMDk5QTFC
NiAvKiBXQVNNTW9kdWxlUGFyc2VyLmggKi8sCkBAIC03OTUzLDcgKzc5NTksNyBAQAogCQkJCTBG
QjU0Njc3MTRGNTlCNUMwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTlEQTAwQjAxQkQ1OTk0RTAwRjQ1NzVDIC8qIGxhenl3cml0ZXIucHkg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQzMTBFMTZGNUNEMDBCMzQ0NjAgLyogTGV4ZXIuaCBp
biBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1M0Y0MEU5MzFE
NUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUzRjQwRTkzMUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM1MkUwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRENGM0Q1NkIxQ0QyOTQ3MjAwM0Q1QzY1IC8qIExhenlDbGFzc1N0cnVj
dHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMTg3QTAyMUJGQkU1NjEwMDM4QkJD
QSAvKiBKSVRNdWxHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtODI0Myw2ICs4MjQ5LDcg
QEAKIAkJCQk5OURBMDBCMTFCRDU5OTRFMDBGNDU3NUMgLyogVXBkYXRlQ29udGVudHMucHkgaW4g
SGVhZGVycyAqLywKIAkJCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIgLyogVmFsdWVQcm9maWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYgLyogVmFsdWVS
ZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTMxQjNDODcxRDc0QzYwMzAwNUIzMjM2IC8q
IEIzQ2FsbGluZ0NvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OUVFMEMwMDFCNEFG
Qjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY2QzczNTExQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkUwNTAyRDFBQTkwOTU2MDBEMzNCMzMgLyogVmFyT2Zmc2V0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTg4OTMsNiArODkwMCw3IEBACiAJCQkJNzA5NEM0REUxQUU0Mzk1
MzAwNDFBMkVFIC8qIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQzJGQ0FFMTIxN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMzOEUwRDFCRjAyNzZDMDAxM0M4OEYgLyogQjNE
YXRhU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Mzg4QjQwNDFENzY2NDBCMDBEM0Q4
NTIgLyogQjNDYWxsaW5nQ29udmVudGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVCODM5
MkYxQkFDQUQ2QTAwNDRFODI0IC8qIENhY2hlZFJlY292ZXJ5LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0MjgwODJEMTA3RUMwNTcwMDEzRTdCMiAvKiBDYWxsRGF0YS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjY0QjI3OTFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2UuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCmluZGV4IDU3NjQxM2Ux
MDkwYTg0NzdlMzRkNDIzNThjNjk4NDY1YzFhZDU5MWQuLjIzNWQ0MDZlYzNhMzdkMzU2NWFlZmNh
OWEzOGE3ZTdkZTRiZmFhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1Byb2NlZHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5o
CkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpZm5kZWYgQjNQcm9j
ZWR1cmVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5oCmluZGV4IDVkYjA2OTc3OTNhNzNjMWY1
MWQ0YjJmYzQxYTkzYWQyMDRlZjYxODUuLjI5YjdkMzZmMjhjZTAwNzY2M2U2N2M0NDk1YWZjN2Rh
OTYxODJlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksMTEgKzM5LDEyIEBACiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogZW51bSBUeXBlIDogaW50OF90IHsKLSAg
ICBWb2lkLAogICAgIEludDMyLAogICAgIEludDY0LAogICAgIEZsb2F0LAotICAgIERvdWJsZQor
ICAgIERvdWJsZSwKKyAgICBMYXN0VmFsdWVUeXBlID0gRG91YmxlLAorICAgIFZvaWQKIH07CiAK
IGlubGluZSBib29sIGlzSW50KFR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmgKaW5kZXggYWYzM2EzMDcyY2NjNjE1M2Rh
YTBjNzVhZTE0YmM2YjhiM2IyMTJjOS4uY2M3NzAxMDk2ZTFiNjIwY2U5MjQ3NTYwNjg2NTllM2I2
MmY5OWM2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1By
b3RvQ2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1By
b3RvQ2FsbEZyYW1lLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0
cnVjdCBQcm90b0NhbGxGcmFtZSB7CitzdHJ1Y3QgSlNfRVhQT1JUX1BSSVZBVEUgUHJvdG9DYWxs
RnJhbWUgewogICAgIFJlZ2lzdGVyIGNvZGVCbG9ja1ZhbHVlOwogICAgIFJlZ2lzdGVyIGNhbGxl
ZVZhbHVlOwogICAgIFJlZ2lzdGVyIGFyZ0NvdW50QW5kQ29kZU9yaWdpblZhbHVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKaW5kZXggYjZkNDgxNzQ5NmEy
YTc0M2VlNzE0NzExOWExYmUyODk0NDFiYzI4NC4uYjMzMzQxNGU5OTcyMzk0ZmNkOGQyZTQ5N2Nh
NWVhZGMwZWVmYWRjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50VGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVu
a3MuY3BwCkBAIC00MSw2ICs0MSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorRW5jb2RlZEpT
VmFsdWUgSlNfRVhQT1JUX1BSSVZBVEUgdm1FbnRyeVRvV0FTTSh2b2lkKiBjb2RlLCBWTSogdm0s
IFByb3RvQ2FsbEZyYW1lKiBmcmFtZSkKK3sKKyAgICByZXR1cm4gdm1FbnRyeVRvSmF2YVNjcmlw
dChjb2RlLCB2bSwgZnJhbWUpOworfQorICAgIAogI2lmIEVOQUJMRShKSVQpCiAKIG5hbWVzcGFj
ZSBMTEludCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCmluZGV4
IDk1YjBmNDQ4NDhiY2M1MjlkMTUwM2UyODliOTNlZmUzNzA1YzgzMTYuLjliN2UyNjZhZTQ5ZDdj
N2I2MDNlZTFjZWNhNzkxOTUwYWE0Njk3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFRodW5rcy5oCkBAIC0zOCw2ICszOCw4IEBAIGV4dGVybiAiQyIgewogICAgIEVuY29k
ZWRKU1ZhbHVlIHZtRW50cnlUb05hdGl2ZSh2b2lkKiwgVk0qLCBQcm90b0NhbGxGcmFtZSopOwog
fQogCitFbmNvZGVkSlNWYWx1ZSBKU19FWFBPUlRfUFJJVkFURSB2bUVudHJ5VG9XQVNNKHZvaWQq
LCBWTSosIFByb3RvQ2FsbEZyYW1lKik7CisKIG5hbWVzcGFjZSBMTEludCB7CiAKIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFdBU00uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNwcAppbmRleCAwN2EyMGY5NTA5MTZjYTFjMTYyNzcxMTMy
MTk4NjQ5MzU0N2M3OWFhLi5jMTVlZDVmNGQzYjQxNWRhMjliOTVlZWYxZDg5Y2IxMzgwNTY1NjI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFdBU00uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0V0FTTS5jcHAKQEAgLTI3LDcgKzI3LDEwIEBACiAKICNp
bmNsdWRlICJCM0NvbXBpbGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIK
KyNpbmNsdWRlICJMTEludFRodW5rcy5oIgorI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAj
aW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJXQVNNUGxhbi5oIgogI2luY2x1ZGUgPHd0Zi9EYXRh
TG9nLmg+CkBAIC0xOTAsMTcgKzE5MywzNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcg
bmFtZXNwYWNlIFdBU007CiB1c2luZyBuYW1lc3BhY2UgQjM7CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLVQgaW52b2tlKE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBwdHIsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisvLyBGSVhNRTogVGhpcyBpcyBwdXJlIGhh
Y2tzIGFuZCBzaG91bGQgYmUgY2hhbmdlZC4uLiBwbGVhc2UuLi4KK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitUIGludm9rZShNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcHRyLCBzdGQ6OmluaXRpYWxpemVy
X2xpc3Q8SlNWYWx1ZT4gYXJncykKIHsKLSAgICBUICgqZnVuY3Rpb24pKEFyZ3VtZW50cy4uLikg
PSBiaXR3aXNlX2Nhc3Q8VCgqKShBcmd1bWVudHMuLi4pPihwdHIuZXhlY3V0YWJsZUFkZHJlc3Mo
KSk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uKGFyZ3VtZW50cy4uLik7CisgICAgSlNWYWx1ZSBmaXJz
dEFyZ3VtZW50OworICAgIC8vIFNpbmNlIHZtRW50cnlUb0phdmFTY3JpcHQgZXhwZWN0cyBhIHRo
aXMgdmFsdWUgd2UgY2xhaW0gdGhlcmUgaXMgb25lLi4uIHRoZXJlIGlzbid0LgorICAgIGludCBh
cmdDb3VudCA9IDE7CisgICAgSlNWYWx1ZSogcmVtYWluaW5nQXJndW1lbnRzID0gbnVsbHB0cjsK
KyAgICBpZiAoYXJncy5zaXplKCkpIHsKKyAgICAgICAgcmVtYWluaW5nQXJndW1lbnRzID0gY29u
c3RfY2FzdDxKU1ZhbHVlKj4oYXJncy5iZWdpbigpKTsKKyAgICAgICAgZmlyc3RBcmd1bWVudCA9
ICpyZW1haW5pbmdBcmd1bWVudHM7CisgICAgICAgIHJlbWFpbmluZ0FyZ3VtZW50cysrOworICAg
ICAgICBhcmdDb3VudCA9IGFyZ3Muc2l6ZSgpOworICAgIH0KKworICAgIFByb3RvQ2FsbEZyYW1l
IHByb3RvQ2FsbEZyYW1lOworICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobnVsbHB0ciwgbnVsbHB0
ciwgZmlyc3RBcmd1bWVudCwgYXJnQ291bnQsIHJlbWFpbmluZ0FyZ3VtZW50cyk7CisKKyAgICAv
LyBUaGlzIHdvbid0IHdvcmsgZm9yIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBidXQgd2UgZG9uJ3Qg
aGF2ZSB0aG9zZSB5ZXQuCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHZtRW50cnlUb1dBU00o
cHRyLmV4ZWN1dGFibGVBZGRyZXNzKCksIHZtLCAmcHJvdG9DYWxsRnJhbWUpKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK1QgaW52b2tlKGNvbnN0IENvbXBpbGF0aW9uJiBjb2RlLCBzdGQ6
OmluaXRpYWxpemVyX2xpc3Q8SlNWYWx1ZT4gYXJncykKK3sKKyAgICByZXR1cm4gaW52b2tlPFQ+
KGNvZGUuY29kZSgpLCBhcmdzKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUu
Li4gQXJndW1lbnRzPgotVCBpbnZva2UoY29uc3QgQ29tcGlsYXRpb24mIGNvZGUsIEFyZ3VtZW50
cy4uLiBhcmd1bWVudHMpCitpbmxpbmUgSlNWYWx1ZSBib3godWludDY0X3QgdmFsdWUpCiB7Ci0g
ICAgcmV0dXJuIGludm9rZTxUPihjb2RlLmNvZGUoKSwgYXJndW1lbnRzLi4uKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKTsKIH0KIAogLy8gRm9yIG5vdyB3ZSBpbmxpbmUgdGhl
IHRlc3QgZmlsZXMuCkBAIC0yMjQsNyArMjQ3LDcgQEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3Rz
KCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0pID09IDUpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgfSkg
PT0gNSk7CiAgICAgfQogCiAKQEAgLTI0Niw3ICsyNjksNyBAQCBzdGF0aWMgdm9pZCBydW5XQVNN
VGVzdHMoKQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2gu
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSkgPT0g
MTEpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0s
IHsgfSkgPT0gMTEpOwogICAgIH0KICAgICAKICAgICB7CkBAIC0yNjcsNyArMjkwLDcgQEAgc3Rh
dGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhp
cyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnZva2U8aW50PigqcGxh
bi5yZXN1bHRbMF0pID09IDExKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW52b2tlPGludD4o
KnBsYW4ucmVzdWx0WzBdLCB7IH0pID09IDExKTsKICAgICB9CiAKICAgICB7CkBAIC0yODgsNyAr
MzExLDI5IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW52
b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdKSA9PSAxMSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyB9KSA9PSAxMSk7CisgICAgfQorCisgICAg
eworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbTogKG1vZHVsZSAoZnVuYyAkYWRkIChwYXJhbSAk
eCBpMzIpIChwYXJhbSAkeSBpMzIpIChyZXN1bHQgaTMyKSAocmV0dXJuIChpMzIuYWRkIChnZXRf
bG9jYWwgJHgpIChnZXRfbG9jYWwgJHkpKSkpICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZl
Y3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMsIDB4MDAs
IDB4MDAsIDB4MDAsIDB4MDQsIDB4NzQsIDB4NzksIDB4NzAsIDB4NjUsIDB4ODcsIDB4ODAsIDB4
ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAweDQwLCAweDAyLCAweDAxLCAweDAxLCAweDAx
LCAweDAxLCAweDA4LCAweDY2LCAweDc1LCAweDZlLCAweDYzLCAweDc0LCAweDY5LCAweDZmLAor
ICAgICAgICAgICAgMHg2ZSwgMHg4MiwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgw
NCwgMHg2MywgMHg2ZiwgMHg2NCwgMHg2NSwgMHg4ZSwgMHg4MCwgMHg4MCwgMHgwMCwKKyAgICAg
ICAgICAgIDB4MDEsIDB4ODksIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4MDAsIDB4
MTQsIDB4MDEsIDB4NDAsIDB4MDksIDB4MDEsIDB4MGYKKyAgICAgICAgfTsKKworICAgICAgICBQ
bGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6ZSgpICE9
IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1vZHVsZSBm
YWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwge2JveCgwKSwgYm94KDEp
fSkgPT0gMSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGludm9rZTxpbnQ+KCpwbGFuLnJlc3Vs
dFswXSwge2JveCgxMDApLCBib3goMSl9KSA9PSAxMDEpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHtib3goLTEpLCBib3goMSl9KSA9PSAwKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7Ym94
KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpLCBib3goMSl9KSA9PSBzdGQ6Om51bWVy
aWNfbGltaXRzPGludD46Om1pbigpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL0pTV0FTTU1vZHVsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vSlNXQVNNTW9kdWxlLmgKaW5kZXggNjFkZjlmNTNmYmIzMzQwNDFhNzgzMDcxZTlhMjli
YjQwY2Q4NDk4Yy4uYjk0MTg5NmNiMzdlN2Y5ZjQxZTljZTAwYzNkZTI4Mjk4NDFmNDVjMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXQVNNTW9kdWxlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXQVNNTW9kdWxlLmgKQEAgLTc2LDEyICs3Niwx
MiBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPHVpbnQzMl90PiYgaTMyQ29uc3RhbnRzKCkgeyByZXR1
cm4gbV9pMzJDb25zdGFudHM7IH0KICAgICBWZWN0b3I8ZmxvYXQ+JiBmMzJDb25zdGFudHMoKSB7
IHJldHVybiBtX2YzMkNvbnN0YW50czsgfQogICAgIFZlY3Rvcjxkb3VibGU+JiBmNjRDb25zdGFu
dHMoKSB7IHJldHVybiBtX2Y2NENvbnN0YW50czsgfQotICAgIFZlY3RvcjxXQVNNU2lnbmF0dXJl
PiYgc2lnbmF0dXJlcygpIHsgcmV0dXJuIG1fc2lnbmF0dXJlczsgfQotICAgIFZlY3RvcjxXQVNN
RnVuY3Rpb25JbXBvcnQ+JiBmdW5jdGlvbkltcG9ydHMoKSB7IHJldHVybiBtX2Z1bmN0aW9uSW1w
b3J0czsgfQotICAgIFZlY3RvcjxXQVNNRnVuY3Rpb25JbXBvcnRTaWduYXR1cmU+JiBmdW5jdGlv
bkltcG9ydFNpZ25hdHVyZXMoKSB7IHJldHVybiBtX2Z1bmN0aW9uSW1wb3J0U2lnbmF0dXJlczsg
fQotICAgIFZlY3RvcjxXQVNNVmFsdWVUeXBlPiYgZ2xvYmFsVmFyaWFibGVUeXBlcygpIHsgcmV0
dXJuIG1fZ2xvYmFsVmFyaWFibGVUeXBlczsgfQotICAgIFZlY3RvcjxXQVNNRnVuY3Rpb25EZWNs
YXJhdGlvbj4mIGZ1bmN0aW9uRGVjbGFyYXRpb25zKCkgeyByZXR1cm4gbV9mdW5jdGlvbkRlY2xh
cmF0aW9uczsgfQotICAgIFZlY3RvcjxXQVNNRnVuY3Rpb25Qb2ludGVyVGFibGU+JiBmdW5jdGlv
blBvaW50ZXJUYWJsZXMoKSB7IHJldHVybiBtX2Z1bmN0aW9uUG9pbnRlclRhYmxlczsgfQorICAg
IFZlY3RvcjxXQVNNOjpTaWduYXR1cmU+JiBzaWduYXR1cmVzKCkgeyByZXR1cm4gbV9zaWduYXR1
cmVzOyB9CisgICAgVmVjdG9yPFdBU006OkZ1bmN0aW9uSW1wb3J0PiYgZnVuY3Rpb25JbXBvcnRz
KCkgeyByZXR1cm4gbV9mdW5jdGlvbkltcG9ydHM7IH0KKyAgICBWZWN0b3I8V0FTTTo6RnVuY3Rp
b25JbXBvcnRTaWduYXR1cmU+JiBmdW5jdGlvbkltcG9ydFNpZ25hdHVyZXMoKSB7IHJldHVybiBt
X2Z1bmN0aW9uSW1wb3J0U2lnbmF0dXJlczsgfQorICAgIFZlY3RvcjxXQVNNOjpUeXBlPiYgZ2xv
YmFsVmFyaWFibGVUeXBlcygpIHsgcmV0dXJuIG1fZ2xvYmFsVmFyaWFibGVUeXBlczsgfQorICAg
IFZlY3RvcjxXQVNNOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiYgZnVuY3Rpb25EZWNsYXJhdGlvbnMo
KSB7IHJldHVybiBtX2Z1bmN0aW9uRGVjbGFyYXRpb25zOyB9CisgICAgVmVjdG9yPFdBU006OkZ1
bmN0aW9uUG9pbnRlclRhYmxlPiYgZnVuY3Rpb25Qb2ludGVyVGFibGVzKCkgeyByZXR1cm4gbV9m
dW5jdGlvblBvaW50ZXJUYWJsZXM7IH0KIAogICAgIGNvbnN0IEpTQXJyYXlCdWZmZXIqIGFycmF5
QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheUJ1ZmZlci5nZXQoKTsgfQogICAgIFZlY3Rv
cjxXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4+JiBmdW5jdGlvbnMoKSB7IHJldHVybiBtX2Z1bmN0
aW9uczsgfQpAQCAtOTYsMTIgKzk2LDEyIEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQzMl90
PiBtX2kzMkNvbnN0YW50czsKICAgICBWZWN0b3I8ZmxvYXQ+IG1fZjMyQ29uc3RhbnRzOwogICAg
IFZlY3Rvcjxkb3VibGU+IG1fZjY0Q29uc3RhbnRzOwotICAgIFZlY3RvcjxXQVNNU2lnbmF0dXJl
PiBtX3NpZ25hdHVyZXM7Ci0gICAgVmVjdG9yPFdBU01GdW5jdGlvbkltcG9ydD4gbV9mdW5jdGlv
bkltcG9ydHM7Ci0gICAgVmVjdG9yPFdBU01GdW5jdGlvbkltcG9ydFNpZ25hdHVyZT4gbV9mdW5j
dGlvbkltcG9ydFNpZ25hdHVyZXM7Ci0gICAgVmVjdG9yPFdBU01WYWx1ZVR5cGU+IG1fZ2xvYmFs
VmFyaWFibGVUeXBlczsKLSAgICBWZWN0b3I8V0FTTUZ1bmN0aW9uRGVjbGFyYXRpb24+IG1fZnVu
Y3Rpb25EZWNsYXJhdGlvbnM7Ci0gICAgVmVjdG9yPFdBU01GdW5jdGlvblBvaW50ZXJUYWJsZT4g
bV9mdW5jdGlvblBvaW50ZXJUYWJsZXM7CisgICAgVmVjdG9yPFdBU006OlNpZ25hdHVyZT4gbV9z
aWduYXR1cmVzOworICAgIFZlY3RvcjxXQVNNOjpGdW5jdGlvbkltcG9ydD4gbV9mdW5jdGlvbklt
cG9ydHM7CisgICAgVmVjdG9yPFdBU006OkZ1bmN0aW9uSW1wb3J0U2lnbmF0dXJlPiBtX2Z1bmN0
aW9uSW1wb3J0U2lnbmF0dXJlczsKKyAgICBWZWN0b3I8V0FTTTo6VHlwZT4gbV9nbG9iYWxWYXJp
YWJsZVR5cGVzOworICAgIFZlY3RvcjxXQVNNOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiBtX2Z1bmN0
aW9uRGVjbGFyYXRpb25zOworICAgIFZlY3RvcjxXQVNNOjpGdW5jdGlvblBvaW50ZXJUYWJsZT4g
bV9mdW5jdGlvblBvaW50ZXJUYWJsZXM7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNBcnJheUJ1ZmZl
cj4gbV9hcnJheUJ1ZmZlcjsKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+PiBt
X2Z1bmN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01C
M0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2Vu
ZXJhdG9yLmNwcAppbmRleCA4NTdmZjE1NzJmN2NiNTc3NjZjNTVhZTFlNDgwZjRmMDYxMDlhMWNh
Li42NDM4YzA5ZjZmOTNhYzU0YzY0MGU1MDAzOThiMmIwZDA1NWI0N2UxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0yNyw5ICsy
NywxMSBAQAogI2luY2x1ZGUgIldBU01CM0lSR2VuZXJhdG9yLmgiCiAKICNpbmNsdWRlICJCM0Jh
c2ljQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVkZSAiQjNDYWxsaW5nQ29udmVudGlvbnMuaCIKICNp
bmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzVmFyaWFibGUuaCIKICNpbmNs
dWRlICJCM1ZhcmlhYmxlVmFsdWUuaCIKKyNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNp
bmNsdWRlICJXQVNNRnVuY3Rpb25QYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
IApAQCAtNDEsMTkgKzQzLDE5IEBAIG5hbWVzcGFjZSBXQVNNIHsKIAogdXNpbmcgbmFtZXNwYWNl
IEIzOwogCi1pbmxpbmUgQjM6Ok9wY29kZSB0b0IzT3AoV0FTTUJpbmFyeU9wVHlwZSBvcCkKK2lu
bGluZSBCMzo6T3Bjb2RlIHRvQjNPcChCaW5hcnlPcFR5cGUgb3ApCiB7CiAgICAgc3dpdGNoIChv
cCkgewotI2RlZmluZSBDUkVBVEVfQ0FTRShuYW1lLCBvcCwgYjNvcCkgY2FzZSBXQVNNQmluYXJ5
T3BUeXBlOjpuYW1lOiByZXR1cm4gYjNvcDsKKyNkZWZpbmUgQ1JFQVRFX0NBU0UobmFtZSwgb3As
IGIzb3ApIGNhc2UgQmluYXJ5T3BUeXBlOjpuYW1lOiByZXR1cm4gYjNvcDsKICAgICBGT1JfRUFD
SF9XQVNNX0JJTkFSWV9PUChDUkVBVEVfQ0FTRSkKICN1bmRlZiBDUkVBVEVfQ0FTRQogICAgIH0K
IH0KIAotaW5saW5lIEIzOjpPcGNvZGUgdG9CM09wKFdBU01VbmFyeU9wVHlwZSBvcCkKK2lubGlu
ZSBCMzo6T3Bjb2RlIHRvQjNPcChVbmFyeU9wVHlwZSBvcCkKIHsKICAgICBzd2l0Y2ggKG9wKSB7
Ci0jZGVmaW5lIENSRUFURV9DQVNFKG5hbWUsIG9wLCBiM29wKSBjYXNlIFdBU01VbmFyeU9wVHlw
ZTo6bmFtZTogcmV0dXJuIGIzb3A7CisjZGVmaW5lIENSRUFURV9DQVNFKG5hbWUsIG9wLCBiM29w
KSBjYXNlIFVuYXJ5T3BUeXBlOjpuYW1lOiByZXR1cm4gYjNvcDsKICAgICBGT1JfRUFDSF9XQVNN
X1VOQVJZX09QKENSRUFURV9DQVNFKQogI3VuZGVmIENSRUFURV9DQVNFCiAgICAgfQpAQCAtNjUs
MTEgKzY3LDE0IEBAIHB1YmxpYzoKIAogICAgIEIzSVJHZW5lcmF0b3IoUHJvY2VkdXJlJik7CiAK
LSAgICB2b2lkIGFkZExvY2FsKFdBU01WYWx1ZVR5cGUsIHVpbnQzMl90KTsKLSAgICBFeHByZXNz
aW9uVHlwZSBhZGRDb25zdGFudChXQVNNVmFsdWVUeXBlLCB1aW50NjRfdCk7CisgICAgdm9pZCBh
ZGRBcmd1bWVudHMoY29uc3QgVmVjdG9yPFR5cGU+Jik7CisgICAgdm9pZCBhZGRMb2NhbChUeXBl
LCB1aW50MzJfdCk7CisgICAgRXhwcmVzc2lvblR5cGUgYWRkQ29uc3RhbnQoVHlwZSwgdWludDY0
X3QpOwogCi0gICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gYmluYXJ5T3AoV0FTTUJpbmFyeU9w
VHlwZSwgRXhwcmVzc2lvblR5cGUgbGVmdCwgRXhwcmVzc2lvblR5cGUgcmlnaHQsIEV4cHJlc3Np
b25UeXBlJiByZXN1bHQpOwotICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHVuYXJ5T3AoV0FT
TVVuYXJ5T3BUeXBlLCBFeHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQp
OworICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGdldExvY2FsKHVpbnQzMl90IGluZGV4LCBF
eHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKworICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGJp
bmFyeU9wKEJpbmFyeU9wVHlwZSwgRXhwcmVzc2lvblR5cGUgbGVmdCwgRXhwcmVzc2lvblR5cGUg
cmlnaHQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAgIGJvb2wgV0FSTl9VTlVTRURfUkVU
VVJOIHVuYXJ5T3AoVW5hcnlPcFR5cGUsIEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5
cGUmIHJlc3VsdCk7CiAKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRCbG9jaygpOwog
ICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGVuZEJsb2NrKFZlY3RvcjxFeHByZXNzaW9uVHlw
ZT4mIGV4cHJlc3Npb25TdGFjayk7CkBAIC04Niw2ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgQmFz
aWNCbG9jayogbV9jdXJyZW50QmxvY2s7CiAgICAgLy8gVGhpcyBpcyBhIHBhaXIgb2YgdGhlIGNv
bnRpbnVhdGlvbiBhbmQgdGhlIHR5cGVzIGV4cGVjdGVkIG9uIHRoZSBzdGFjayBmb3IgdGhhdCBj
b250aW51YXRpb24uCiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxCYXNpY0Jsb2NrKiwgT3B0aW9uYWw8
VmVjdG9yPFZhcmlhYmxlKj4+Pj4gbV9jb250cm9sU3RhY2s7CisgICAgVmVjdG9yPFZhcmlhYmxl
Kj4gbV9sb2NhbHM7CiB9OwogCiBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKFByb2NlZHVy
ZSYgcHJvY2VkdXJlKQpAQCAtOTQsMzMgKzEwMCw1NCBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2Vu
ZXJhdG9yKFByb2NlZHVyZSYgcHJvY2VkdXJlKQogICAgIG1fY3VycmVudEJsb2NrID0gbV9wcm9j
LmFkZEJsb2NrKCk7CiB9CiAKLXZvaWQgQjNJUkdlbmVyYXRvcjo6YWRkTG9jYWwoV0FTTVZhbHVl
VHlwZSwgdWludDMyX3QpCit2b2lkIEIzSVJHZW5lcmF0b3I6OmFkZExvY2FsKFR5cGUgdHlwZSwg
dWludDMyX3QgY291bnQpCit7CisgICAgbV9sb2NhbHMuZ3Jvdyhjb3VudCk7CisgICAgZm9yICh1
aW50MzJfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIG1fbG9jYWxzLmFwcGVuZCht
X3Byb2MuYWRkVmFyaWFibGUodHlwZSkpOworfQorCit2b2lkIEIzSVJHZW5lcmF0b3I6OmFkZEFy
Z3VtZW50cyhjb25zdCBWZWN0b3I8VHlwZT4mIHR5cGVzKQogewotICAgIC8vIFRPRE86IEFkZCBs
b2NhbHMuCisgICAgQVNTRVJUKCFtX2xvY2Fscy5zaXplKCkpOworICAgIG1fbG9jYWxzLnJlc2l6
ZSh0eXBlcy5zaXplKCkpOworICAgIGpzY0NhbGxpbmdDb252ZW50aW9uKCktPml0ZXJhdGUodHlw
ZXMsIG1fcHJvYywgbV9jdXJyZW50QmxvY2ssIE9yaWdpbigpLAorICAgICAgICBbJl0gKEV4cHJl
c3Npb25UeXBlIGFyZ3VtZW50LCB1bnNpZ25lZCBpKSB7CisgICAgICAgICAgICBWYXJpYWJsZSog
YXJndW1lbnRWYXJpYWJsZSA9IG1fcHJvYy5hZGRWYXJpYWJsZShhcmd1bWVudC0+dHlwZSgpKTsK
KyAgICAgICAgICAgIG1fbG9jYWxzW2ldID0gYXJndW1lbnRWYXJpYWJsZTsKKyAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4obV9wcm9jLCBTZXQsIE9y
aWdpbigpLCBhcmd1bWVudFZhcmlhYmxlLCBhcmd1bWVudCk7CisgICAgICAgIH0pOworfQorCiti
b29sIFdBUk5fVU5VU0VEX1JFVFVSTiBCM0lSR2VuZXJhdG9yOjpnZXRMb2NhbCh1aW50MzJfdCBp
bmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQoaW5kZXggPCBtX2xv
Y2Fscy5zaXplKCkpOworICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFy
aWFibGVWYWx1ZT4obV9wcm9jLCBCMzo6R2V0LCBPcmlnaW4oKSwgbV9sb2NhbHNbaW5kZXhdKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBCM0lSR2VuZXJhdG9yOjp1bmFyeU9wKFdBU01V
bmFyeU9wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KQorYm9vbCBCM0lSR2VuZXJhdG9yOjp1bmFyeU9wKFVuYXJ5T3BUeXBlIG9wLCBFeHByZXNzaW9u
VHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiB7CiAgICAgcmVzdWx0ID0gbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCB0b0IzT3Aob3ApLCBPcmlnaW4oKSwg
YXJnKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBCM0lSR2VuZXJhdG9yOjpiaW5hcnlP
cChXQVNNQmluYXJ5T3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBsZWZ0LCBFeHByZXNzaW9uVHlw
ZSByaWdodCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKK2Jvb2wgQjNJUkdlbmVyYXRvcjo6Ymlu
YXJ5T3AoQmluYXJ5T3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBsZWZ0LCBFeHByZXNzaW9uVHlw
ZSByaWdodCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIHsKICAgICByZXN1bHQgPSBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIHRvQjNPcChvcCksIE9yaWdpbigpLCBs
ZWZ0LCByaWdodCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUIzSVJHZW5lcmF0b3I6OkV4cHJl
c3Npb25UeXBlIEIzSVJHZW5lcmF0b3I6OmFkZENvbnN0YW50KFdBU01WYWx1ZVR5cGUgdHlwZSwg
dWludDY0X3QgdmFsdWUpCitCM0lSR2VuZXJhdG9yOjpFeHByZXNzaW9uVHlwZSBCM0lSR2VuZXJh
dG9yOjphZGRDb25zdGFudChUeXBlIHR5cGUsIHVpbnQ2NF90IHZhbHVlKQogewogICAgIHN3aXRj
aCAodHlwZSkgewotICAgIGNhc2UgV0FTTVZhbHVlVHlwZTo6STMyOgorICAgIGNhc2UgSW50MzI6
CiAgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4o
bV9wcm9jLCBPcmlnaW4oKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUpKTsKLSAgICBjYXNl
IFdBU01WYWx1ZVR5cGU6Okk2NDoKKyAgICBjYXNlIEludDY0OgogICAgICAgICByZXR1cm4gbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KG1fcHJvYywgT3JpZ2luKCksIHZh
bHVlKTsKLSAgICBjYXNlIFdBU01WYWx1ZVR5cGU6OkYzMjoKKyAgICBjYXNlIEZsb2F0OgogICAg
ICAgICByZXR1cm4gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KG1f
cHJvYywgT3JpZ2luKCksIGJpdHdpc2VfY2FzdDxmbG9hdD4oc3RhdGljX2Nhc3Q8aW50MzJfdD4o
dmFsdWUpKSk7Ci0gICAgY2FzZSBXQVNNVmFsdWVUeXBlOjpGNjQ6CisgICAgY2FzZSBEb3VibGU6
CiAgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFs
dWU+KG1fcHJvYywgT3JpZ2luKCksIGJpdHdpc2VfY2FzdDxkb3VibGU+KHZhbHVlKSk7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIwMywx
MSArMjMwLDExIEBAIEJhc2ljQmxvY2sqIEIzSVJHZW5lcmF0b3I6OmJsb2NrRm9yQ29udHJvbExl
dmVsKHVuc2lnbmVkIGxldmVsKQogICAgIHJldHVybiBtX2NvbnRyb2xTdGFja1ttX2NvbnRyb2xT
dGFjay5zaXplKCkgLSAxIC0gbGV2ZWxdLmZpcnN0OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Q29t
cGlsYXRpb24+IHBhcnNlQW5kQ29tcGlsZShWTSYgdm0sIFZlY3Rvcjx1aW50OF90PiYgc291cmNl
LCBXQVNNRnVuY3Rpb25JbmZvcm1hdGlvbiBpbmZvLCB1bnNpZ25lZCBvcHRMZXZlbCkKK3N0ZDo6
dW5pcXVlX3B0cjxDb21waWxhdGlvbj4gcGFyc2VBbmRDb21waWxlKFZNJiB2bSwgVmVjdG9yPHVp
bnQ4X3Q+JiBzb3VyY2UsIEZ1bmN0aW9uSW5mb3JtYXRpb24gaW5mbywgdW5zaWduZWQgb3B0TGV2
ZWwpCiB7CiAgICAgUHJvY2VkdXJlIHByb2NlZHVyZTsKICAgICBCM0lSR2VuZXJhdG9yIGNvbnRl
eHQocHJvY2VkdXJlKTsKLSAgICBXQVNNRnVuY3Rpb25QYXJzZXI8QjNJUkdlbmVyYXRvcj4gcGFy
c2VyKGNvbnRleHQsIHNvdXJjZSwgaW5mbyk7CisgICAgRnVuY3Rpb25QYXJzZXI8QjNJUkdlbmVy
YXRvcj4gcGFyc2VyKGNvbnRleHQsIHNvdXJjZSwgaW5mbyk7CiAgICAgaWYgKCFwYXJzZXIucGFy
c2UoKSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmgKaW5kZXggZTQ1MTk2MTQ3
MGRhNGYwZjlkZmZmODI1ODI3Njc5Mjc3NDdhNjc5Yy4uOGNjYThlZTg5NWJhYzBmZDE0ZTI0Yzc4
MDRlOTYyNjcyOTIyYjllNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTUIzSVJHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
QjNJUkdlbmVyYXRvci5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1l
c3BhY2UgV0FTTSB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxCMzo6Q29tcGlsYXRpb24+IHBhcnNlQW5k
Q29tcGlsZShWTSYsIFZlY3Rvcjx1aW50OF90PiYsIFdBU01GdW5jdGlvbkluZm9ybWF0aW9uLCB1
bnNpZ25lZCBvcHRMZXZlbCA9IDEpOworc3RkOjp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4g
cGFyc2VBbmRDb21waWxlKFZNJiwgVmVjdG9yPHVpbnQ4X3Q+JiwgRnVuY3Rpb25JbmZvcm1hdGlv
biwgdW5zaWduZWQgb3B0TGV2ZWwgPSAxKTsKIAogfSAvLyBuYW1lc3BhY2UgV0FTTQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRm9ybWF0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRm9ybWF0LmgKaW5kZXggNDUxY2Y2YTc5MTU5MGEwMjUw
NzA0NTc4N2YzMjg0NjFkOGEyYmViZi4uNzVmOTY3NDZlZmQzYTgzN2E0MWU1YzIxYjA2M2ViMTk3
YjkyMTQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZvcm1h
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaApAQCAtNDUs
NiArNDUsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCisjaW5jbHVkZSAiQjNUeXBl
LmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCkBAIC01Miw1MiArNTMsNTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTRnVu
Y3Rpb247CiAKLWVudW0gY2xhc3MgV0FTTVZhbHVlVHlwZSA6IHVpbnQ4X3QgewotICAgIEkzMiwK
LSAgICBJNjQsCi0gICAgRjMyLAotICAgIEY2NCwKLSAgICBOdW1iZXJPZlR5cGVzCi19OworbmFt
ZXNwYWNlIFdBU00gewogCi1lbnVtIGNsYXNzIFdBU01GdW5jdGlvblJldHVyblR5cGUgOiB1aW50
OF90IHsKLSAgICBJMzIsCi0gICAgSTY0LAotICAgIEYzMiwKLSAgICBGNjQsCi0gICAgVm9pZCwK
LSAgICBOdW1iZXJPZkV4cHJlc3Npb25UeXBlcwotfTsKK3VzaW5nIEIzOjpUeXBlOwordXNpbmcg
QjM6OkludDMyOwordXNpbmcgQjM6OkludDY0OwordXNpbmcgQjM6OkZsb2F0OwordXNpbmcgQjM6
OkRvdWJsZTsKIAotc3RydWN0IFdBU01TaWduYXR1cmUgewotICAgIFdBU01GdW5jdGlvblJldHVy
blR5cGUgcmV0dXJuVHlwZTsKLSAgICBWZWN0b3I8V0FTTVZhbHVlVHlwZT4gYXJndW1lbnRzOwor
c3RhdGljX2Fzc2VydChJbnQzMiA9PSAwLCAiV0FTTSBuZWVkcyBCMzo6VHlwZTo6SW50MzIgdG8g
aGF2ZSB0aGUgdmFsdWUgMCIpOworc3RhdGljX2Fzc2VydChJbnQ2NCA9PSAxLCAiV0FTTSBuZWVk
cyBCMzo6VHlwZTo6SW50NjQgdG8gaGF2ZSB0aGUgdmFsdWUgMSIpOworc3RhdGljX2Fzc2VydChG
bG9hdCA9PSAyLCAiV0FTTSBuZWVkcyBCMzo6VHlwZTo6RmxvYXQgdG8gaGF2ZSB0aGUgdmFsdWUg
MiIpOworc3RhdGljX2Fzc2VydChEb3VibGUgPT0gMywgIldBU00gbmVlZHMgQjM6OlR5cGU6OkRv
dWJsZSB0byBoYXZlIHRoZSB2YWx1ZSAzIik7CisKK3N0cnVjdCBTaWduYXR1cmUgeworICAgIFR5
cGUgcmV0dXJuVHlwZTsKKyAgICBWZWN0b3I8VHlwZT4gYXJndW1lbnRzOwogfTsKIAotc3RydWN0
IFdBU01GdW5jdGlvbkltcG9ydCB7CitzdHJ1Y3QgRnVuY3Rpb25JbXBvcnQgewogICAgIFN0cmlu
ZyBmdW5jdGlvbk5hbWU7CiB9OwogCi1zdHJ1Y3QgV0FTTUZ1bmN0aW9uSW1wb3J0U2lnbmF0dXJl
IHsKK3N0cnVjdCBGdW5jdGlvbkltcG9ydFNpZ25hdHVyZSB7CiAgICAgdWludDMyX3Qgc2lnbmF0
dXJlSW5kZXg7CiAgICAgdWludDMyX3QgZnVuY3Rpb25JbXBvcnRJbmRleDsKIH07CiAKLXN0cnVj
dCBXQVNNRnVuY3Rpb25EZWNsYXJhdGlvbiB7CitzdHJ1Y3QgRnVuY3Rpb25EZWNsYXJhdGlvbiB7
CiAgICAgdWludDMyX3Qgc2lnbmF0dXJlSW5kZXg7CiB9OwogCi1zdHJ1Y3QgV0FTTUZ1bmN0aW9u
UG9pbnRlclRhYmxlIHsKK3N0cnVjdCBGdW5jdGlvblBvaW50ZXJUYWJsZSB7CiAgICAgdWludDMy
X3Qgc2lnbmF0dXJlSW5kZXg7CiAgICAgVmVjdG9yPHVpbnQzMl90PiBmdW5jdGlvbkluZGljZXM7
CiAgICAgVmVjdG9yPEpTRnVuY3Rpb24qPiBmdW5jdGlvbnM7CiB9OwogCi1zdHJ1Y3QgV0FTTUZ1
bmN0aW9uSW5mb3JtYXRpb24geworc3RydWN0IEZ1bmN0aW9uSW5mb3JtYXRpb24geworICAgIFNp
Z25hdHVyZSogc2lnbmF0dXJlOwogICAgIHNpemVfdCBzdGFydDsKICAgICBzaXplX3QgZW5kOwog
fTsKIAorfSAvLyBuYW1lc3BhY2UgV0FTTQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlm
IC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggMjhiZWU5MjM3ZmE0ZTYxMjg2YzZiNTY5MjY5NWE0
MzczNjQ0YmNlMC4uYWRhNTc3NTNkOWQ1MGZlZTA5MTkzMzRjOGVmMWY2YmQwZjI4NmI4YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKQEAg
LTM1LDE5ICszNSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBXQVNNIHsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgQ29udGV4dD4KLWNsYXNzIFdBU01GdW5jdGlvblBhcnNlciA6IHB1Ymxp
YyBXQVNNUGFyc2VyIHsKK2NsYXNzIEZ1bmN0aW9uUGFyc2VyIDogcHVibGljIFBhcnNlciB7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDb250ZXh0OjpFeHByZXNzaW9uVHlwZSBFeHBy
ZXNzaW9uVHlwZTsKIAotICAgIFdBU01GdW5jdGlvblBhcnNlcihDb250ZXh0JiwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBzb3VyY2VCdWZmZXIsIGNvbnN0IFdBU01GdW5jdGlvbkluZm9ybWF0aW9u
Jik7CisgICAgRnVuY3Rpb25QYXJzZXIoQ29udGV4dCYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
c291cmNlQnVmZmVyLCBjb25zdCBGdW5jdGlvbkluZm9ybWF0aW9uJik7CiAKICAgICBib29sIFdB
Uk5fVU5VU0VEX1JFVFVSTiBwYXJzZSgpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCBi
b29sIHZlcmJvc2UgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gdHJ1
ZTsKIAogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlQmxvY2soKTsKLSAgICBib29s
IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUV4cHJlc3Npb24oV0FTTU9wVHlwZSk7CisgICAgYm9v
bCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VFeHByZXNzaW9uKE9wVHlwZSk7CiAgICAgYm9vbCBX
QVJOX1VOVVNFRF9SRVRVUk4gdW5pZnlDb250cm9sKFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mLCB1
bnNpZ25lZCBsZXZlbCk7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8RXhwcmVzc2lvblR5cGU+PiYg
c3RhY2tGb3JDb250cm9sTGV2ZWwodW5zaWduZWQgbGV2ZWwpOwpAQCAtNTcsMTQgKzU3LDE1IEBA
IHByaXZhdGU6CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0PgotV0FTTUZ1bmN0aW9u
UGFyc2VyPENvbnRleHQ+OjpXQVNNRnVuY3Rpb25QYXJzZXIoQ29udGV4dCYgY29udGV4dCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBzb3VyY2VCdWZmZXIsIGNvbnN0IFdBU01GdW5jdGlvbkluZm9y
bWF0aW9uJiBpbmZvKQotICAgIDogV0FTTVBhcnNlcihzb3VyY2VCdWZmZXIsIGluZm8uc3RhcnQs
IGluZm8uZW5kKQorRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OkZ1bmN0aW9uUGFyc2VyKENvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc291cmNlQnVmZmVyLCBjb25zdCBG
dW5jdGlvbkluZm9ybWF0aW9uJiBpbmZvKQorICAgIDogUGFyc2VyKHNvdXJjZUJ1ZmZlciwgaW5m
by5zdGFydCwgaW5mby5lbmQpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKIHsKKyAgICBtX2Nv
bnRleHQuYWRkQXJndW1lbnRzKGluZm8uc2lnbmF0dXJlLT5hcmd1bWVudHMpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb250ZXh0PgotYm9vbCBXQVNNRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46
OnBhcnNlKCkKK2Jvb2wgRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlKCkKIHsKICAgICB1
aW50MzJfdCBsb2NhbENvdW50OwogICAgIGlmICghcGFyc2VWYXJVSW50MzIobG9jYWxDb3VudCkp
CkBAIC03NSw3ICs3Niw3IEBAIGJvb2wgV0FTTUZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJz
ZSgpCiAgICAgICAgIGlmICghcGFyc2VVSW50MzIobnVtYmVyT2ZMb2NhbHNXaXRoVHlwZSkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgV0FTTVZhbHVlVHlwZSB0eXBlT2ZM
b2NhbDsKKyAgICAgICAgVHlwZSB0eXBlT2ZMb2NhbDsKICAgICAgICAgaWYgKCFwYXJzZVZhbHVl
VHlwZSh0eXBlT2ZMb2NhbCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTg2LDIw
ICs4NywyMCBAQCBib29sIFdBU01GdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2UoKQogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0PgotYm9vbCBXQVNNRnVuY3Rpb25QYXJzZXI8Q29u
dGV4dD46OnBhcnNlQmxvY2soKQorYm9vbCBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VC
bG9jaygpCiB7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgdWludDhfdCBvcDsKICAgICAg
ICAgaWYgKCFwYXJzZVVJbnQ3KG9wKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICBpZiAoIXBhcnNlRXhwcmVzc2lvbihzdGF0aWNfY2FzdDxXQVNNT3BUeXBlPihvcCkpKSB7
CisgICAgICAgIGlmICghcGFyc2VFeHByZXNzaW9uKHN0YXRpY19jYXN0PE9wVHlwZT4ob3ApKSkg
ewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJm
YWlsZWQgdG8gcHJvY2VzcyBvcDoiLCBvcCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAob3AgPT0gV0FTTU9wVHlwZTo6RW5kKQorICAgICAgICBp
ZiAob3AgPT0gT3BUeXBlOjpFbmQpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTEw
Nyw3ICsxMDgsNyBAQCBib29sIFdBU01GdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VCbG9j
aygpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+Ci1ib29sIFdBU01GdW5jdGlvblBh
cnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKFdBU01PcFR5cGUgb3ApCitib29sIEZ1bmN0
aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oT3BUeXBlIG9wKQogewogICAgIHN3
aXRjaCAob3ApIHsKICNkZWZpbmUgQ1JFQVRFX0NBU0UobmFtZSwgaWQsIGIzb3ApIGNhc2UgbmFt
ZToKQEAgLTExNSw3ICsxMTYsNyBAQCBib29sIFdBU01GdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6
cGFyc2VFeHByZXNzaW9uKFdBU01PcFR5cGUgb3ApCiAgICAgICAgIEV4cHJlc3Npb25UeXBlIGxl
ZnQgPSBtX2V4cHJlc3Npb25TdGFjay50YWtlTGFzdCgpOwogICAgICAgICBFeHByZXNzaW9uVHlw
ZSByaWdodCA9IG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7CiAgICAgICAgIEV4cHJlc3Np
b25UeXBlIHJlc3VsdDsKLSAgICAgICAgaWYgKCFtX2NvbnRleHQuYmluYXJ5T3Aoc3RhdGljX2Nh
c3Q8V0FTTUJpbmFyeU9wVHlwZT4ob3ApLCBsZWZ0LCByaWdodCwgcmVzdWx0KSkKKyAgICAgICAg
aWYgKCFtX2NvbnRleHQuYmluYXJ5T3Aoc3RhdGljX2Nhc3Q8QmluYXJ5T3BUeXBlPihvcCksIGxl
ZnQsIHJpZ2h0LCByZXN1bHQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBt
X2V4cHJlc3Npb25TdGFjay5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0xMjQsMjggKzEyNSw0MCBAQCBib29sIFdBU01GdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFy
c2VFeHByZXNzaW9uKFdBU01PcFR5cGUgb3ApCiAgICAgRk9SX0VBQ0hfV0FTTV9VTkFSWV9PUChD
UkVBVEVfQ0FTRSkgewogICAgICAgICBFeHByZXNzaW9uVHlwZSBhcmcgPSBtX2V4cHJlc3Npb25T
dGFjay50YWtlTGFzdCgpOwogICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQ7Ci0gICAgICAg
IGlmICghbV9jb250ZXh0LnVuYXJ5T3Aoc3RhdGljX2Nhc3Q8V0FTTVVuYXJ5T3BUeXBlPihvcCks
IGFyZywgcmVzdWx0KSkKKyAgICAgICAgaWYgKCFtX2NvbnRleHQudW5hcnlPcChzdGF0aWNfY2Fz
dDxVbmFyeU9wVHlwZT4ob3ApLCBhcmcsIHJlc3VsdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFwcGVuZChyZXN1bHQpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAjdW5kZWYgQ1JFQVRFX0NBU0UKIAotICAgIGNhc2UgV0FTTU9w
VHlwZTo6STMyQ29uc3Q6IHsKKyAgICBjYXNlIE9wVHlwZTo6STMyQ29uc3Q6IHsKICAgICAgICAg
dWludDMyX3QgY29uc3RhbnQ7CiAgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIoY29uc3RhbnQp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5h
cHBlbmQobV9jb250ZXh0LmFkZENvbnN0YW50KFdBU01WYWx1ZVR5cGU6OkkzMiwgY29uc3RhbnQp
KTsKKyAgICAgICAgbV9leHByZXNzaW9uU3RhY2suYXBwZW5kKG1fY29udGV4dC5hZGRDb25zdGFu
dChJbnQzMiwgY29uc3RhbnQpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
Y2FzZSBXQVNNT3BUeXBlOjpCbG9jazogeworICAgIGNhc2UgT3BUeXBlOjpHZXRMb2NhbDogewor
ICAgICAgICB1aW50MzJfdCBpbmRleDsKKyAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQzMihpbmRl
eCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEV4cHJlc3Npb25UeXBlIHJl
c3VsdDsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQuZ2V0TG9jYWwoaW5kZXgsIHJlc3VsdCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbV9leHByZXNzaW9uU3RhY2suYXBw
ZW5kKHJlc3VsdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGNhc2UgT3BU
eXBlOjpCbG9jazogewogICAgICAgICBpZiAoIW1fY29udGV4dC5hZGRCbG9jaygpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gcGFyc2VCbG9jaygpOwogICAgIH0K
IAotICAgIGNhc2UgV0FTTU9wVHlwZTo6UmV0dXJuOiB7CisgICAgY2FzZSBPcFR5cGU6OlJldHVy
bjogewogICAgICAgICB1aW50OF90IHJldHVybkNvdW50OwogICAgICAgICBpZiAoIXBhcnNlVmFy
VUludDEocmV0dXJuQ291bnQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTU2LDcg
KzE2OSw3IEBAIGJvb2wgV0FTTUZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Np
b24oV0FTTU9wVHlwZSBvcCkKICAgICAgICAgcmV0dXJuIG1fY29udGV4dC5hZGRSZXR1cm4ocmV0
dXJuVmFsdWVzKTsKICAgICB9CiAKLSAgICBjYXNlIFdBU01PcFR5cGU6OkVuZDoKKyAgICBjYXNl
IE9wVHlwZTo6RW5kOgogICAgICAgICByZXR1cm4gbV9jb250ZXh0LmVuZEJsb2NrKG1fZXhwcmVz
c2lvblN0YWNrKTsKIAogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TU1vZHVsZVBhcnNlci5jcHAKaW5kZXggN2E2NjdmYjdmNGQ1YTVkYzg4Y2M3ZjY0YTBhOTA2YmU0
ZTk4YTg0OC4uZmVmZTVmZDJmMjhhMGI4Y2YxZmE1ZWEyOTk5YzliNmQwY2ZlYzcxOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKQEAgLTM4
LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdBU00gewogCiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3Nl
ID0gZmFsc2U7CiAKLWJvb2wgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2UoKQorYm9vbCBNb2R1bGVQ
YXJzZXI6OnBhcnNlKCkKIHsKICAgICBpZiAobV9zb3VyY2VMZW5ndGggPCA4KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC01OSw3ICs1OSw3IEBAIGJvb2wgV0FTTU1vZHVsZVBhcnNlcjo6cGFy
c2UoKQogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nTG4oIlBhc3NlZCBwcm9jZXNz
aW5nIGhlYWRlci4iKTsKIAotICAgIFdBU01TZWN0aW9uczo6U2VjdGlvbiBwcmV2aW91c1NlY3Rp
b24gPSBXQVNNU2VjdGlvbnM6OlNlY3Rpb246OlVua25vd247CisgICAgU2VjdGlvbnM6OlNlY3Rp
b24gcHJldmlvdXNTZWN0aW9uID0gU2VjdGlvbnM6OlVua25vd247CiAgICAgd2hpbGUgKG1fb2Zm
c2V0IDwgbV9zb3VyY2VMZW5ndGgpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAg
ICBkYXRhTG9nTG4oIlN0YXJ0aW5nIHRvIHBhcnNlIG5leHQgc2VjdGlvbiBhdCBvZmZzZXQ6ICIs
IG1fb2Zmc2V0KTsKQEAgLTcxLDggKzcxLDggQEAgYm9vbCBXQVNNTW9kdWxlUGFyc2VyOjpwYXJz
ZSgpCiAgICAgICAgIGlmIChtX29mZnNldCArIHNlY3Rpb25OYW1lTGVuZ3RoICsgbWF4TEVCQnl0
ZUxlbmd0aCA+PSBtX3NvdXJjZUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICBXQVNNU2VjdGlvbnM6OlNlY3Rpb24gc2VjdGlvbiA9IFdBU01TZWN0aW9uczo6bG9v
a3VwKG1fc291cmNlLmRhdGEoKSArIG1fb2Zmc2V0LCBzZWN0aW9uTmFtZUxlbmd0aCk7Ci0gICAg
ICAgIGlmICghV0FTTVNlY3Rpb25zOjp2YWxpZGF0ZU9yZGVyKHByZXZpb3VzU2VjdGlvbiwgc2Vj
dGlvbikpCisgICAgICAgIFNlY3Rpb25zOjpTZWN0aW9uIHNlY3Rpb24gPSBTZWN0aW9uczo6bG9v
a3VwKG1fc291cmNlLmRhdGEoKSArIG1fb2Zmc2V0LCBzZWN0aW9uTmFtZUxlbmd0aCk7CisgICAg
ICAgIGlmICghU2VjdGlvbnM6OnZhbGlkYXRlT3JkZXIocHJldmlvdXNTZWN0aW9uLCBzZWN0aW9u
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbV9vZmZzZXQgKz0gc2VjdGlv
bk5hbWVMZW5ndGg7CiAKQEAgLTgzLDEwICs4MywxMCBAQCBib29sIFdBU01Nb2R1bGVQYXJzZXI6
OnBhcnNlKCkKICAgICAgICAgdW5zaWduZWQgZW5kID0gbV9vZmZzZXQgKyBzZWN0aW9uTGVuZ3Ro
OwogCiAgICAgICAgIHN3aXRjaCAoc2VjdGlvbikgewotICAgICAgICBjYXNlIFdBU01TZWN0aW9u
czo6U2VjdGlvbjo6RW5kOgorICAgICAgICBjYXNlIFNlY3Rpb25zOjpFbmQ6CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBjYXNlIFdBU01TZWN0aW9uczo6U2VjdGlvbjo6RnVu
Y3Rpb25UeXBlczogeworICAgICAgICBjYXNlIFNlY3Rpb25zOjpGdW5jdGlvblR5cGVzOiB7CiAg
ICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlBhcnNp
bmcgdHlwZXMuIik7CiAgICAgICAgICAgICBpZiAoIXBhcnNlRnVuY3Rpb25UeXBlcygpKQpAQCAt
OTQsNyArOTQsNyBAQCBib29sIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBXQVNNU2VjdGlvbnM6OlNlY3Rpb246
OlNpZ25hdHVyZXM6IHsKKyAgICAgICAgY2FzZSBTZWN0aW9uczo6U2lnbmF0dXJlczogewogICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJQYXJzaW5n
IGZ1bmN0aW9uIHNpZ25hdHVyZXMuIik7CiAgICAgICAgICAgICBpZiAoIXBhcnNlRnVuY3Rpb25T
aWduYXR1cmVzKCkpCkBAIC0xMDIsNyArMTAyLDcgQEAgYm9vbCBXQVNNTW9kdWxlUGFyc2VyOjpw
YXJzZSgpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgV0FT
TVNlY3Rpb25zOjpTZWN0aW9uOjpEZWZpbml0aW9uczogeworICAgICAgICBjYXNlIFNlY3Rpb25z
OjpEZWZpbml0aW9uczogewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgZGF0YUxvZ0xuKCJQYXJzaW5nIGZ1bmN0aW9uIGRlZmluaXRpb25zLiIpOwogICAgICAgICAg
ICAgaWYgKCFwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkKQEAgLTExMCw3ICsxMTAsNyBAQCBi
b29sIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FzZSBXQVNNU2VjdGlvbnM6OlNlY3Rpb246OlVua25vd246IHsKKyAg
ICAgICAgY2FzZSBTZWN0aW9uczo6VW5rbm93bjogewogICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJVbmtub3duIHNlY3Rpb24sIHNraXBwaW5nLiIp
OwogICAgICAgICAgICAgbV9vZmZzZXQgKz0gc2VjdGlvbkxlbmd0aDsKQEAgLTEzMSw3ICsxMzEs
NyBAQCBib29sIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uVHlwZXMoKQorYm9vbCBNb2R1
bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25UeXBlcygpCiB7CiAgICAgdWludDMyX3QgY291bnQ7CiAg
ICAgaWYgKCFwYXJzZVZhclVJbnQzMihjb3VudCkpCkBAIC0xNDAsNiArMTQwLDggQEAgYm9vbCBX
QVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uVHlwZXMoKQogICAgIGlmICh2ZXJib3NlKQog
ICAgICAgICBkYXRhTG9nTG4oImNvdW50OiAiLCBjb3VudCk7CiAKKyAgICBtX3NpZ25hdHVyZXMu
cmVzaXplKGNvdW50KTsKKwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjb3VudDsgKytp
KSB7CiAgICAgICAgIHVpbnQ4X3QgdHlwZTsKICAgICAgICAgaWYgKCFwYXJzZVVJbnQ3KHR5cGUp
KQpAQCAtMTU3LDM0ICsxNTksMzYgQEAgYm9vbCBXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0
aW9uVHlwZXMoKQogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2dMbigi
YXJndW1lbnRDb3VudDogIiwgYXJndW1lbnRDb3VudCk7CiAKLSAgICAgICAgVmVjdG9yPFdBU01W
YWx1ZVR5cGU+IGFyZ3VtZW50VHlwZXM7CisgICAgICAgIFZlY3RvcjxUeXBlPiBhcmd1bWVudFR5
cGVzOworICAgICAgICBhcmd1bWVudFR5cGVzLnJlc2l6ZShhcmd1bWVudENvdW50KTsKKwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytpKSB7Ci0gICAg
ICAgICAgICBpZiAoIXBhcnNlVUludDcodHlwZSkgfHwgdHlwZSA+PSBzdGF0aWNfY2FzdDx1aW50
OF90PihXQVNNVmFsdWVUeXBlOjpOdW1iZXJPZlR5cGVzKSkKKyAgICAgICAgICAgIGlmICghcGFy
c2VVSW50Nyh0eXBlKSB8fCB0eXBlID49IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFR5cGU6Okxhc3RW
YWx1ZVR5cGUpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGFy
Z3VtZW50VHlwZXMuYXBwZW5kKHN0YXRpY19jYXN0PFdBU01WYWx1ZVR5cGU+KHR5cGUpKTsKKyAg
ICAgICAgICAgIGFyZ3VtZW50VHlwZXMuYXBwZW5kKHN0YXRpY19jYXN0PFR5cGU+KHR5cGUpKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmICghcGFyc2VWYXJVSW50MSh0eXBlKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgV0FTTUZ1bmN0aW9uUmV0dXJuVHlwZSByZXR1cm5U
eXBlOworICAgICAgICBUeXBlIHJldHVyblR5cGU7CiAKICAgICAgICAgaWYgKHZlcmJvc2UpCiAg
ICAgICAgICAgICBkYXRhTG9nTG4odHlwZSk7CiAKICAgICAgICAgaWYgKHR5cGUpIHsKLSAgICAg
ICAgICAgIFdBU01WYWx1ZVR5cGUgdmFsdWU7CisgICAgICAgICAgICBUeXBlIHZhbHVlOwogICAg
ICAgICAgICAgaWYgKCFwYXJzZVZhbHVlVHlwZSh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuVHlwZSA9IHN0YXRpY19jYXN0PFdBU01GdW5j
dGlvblJldHVyblR5cGU+KHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVyblR5cGUgPSBzdGF0aWNf
Y2FzdDxUeXBlPih2YWx1ZSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0dXJuVHlw
ZSA9IFdBU01GdW5jdGlvblJldHVyblR5cGU6OlZvaWQ7CisgICAgICAgICAgICByZXR1cm5UeXBl
ID0gVHlwZTo6Vm9pZDsKIAotICAgICAgICAvLyBUT0RPOiBBY3R1YWxseSBkbyBzb21ldGhpbmcg
d2l0aCB0aGlzIGRhdGEuLi4KKyAgICAgICAgbV9zaWduYXR1cmVzW2ldID0geyByZXR1cm5UeXBl
LCBXVEZNb3ZlKGFyZ3VtZW50VHlwZXMpIH07CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25TaWduYXR1cmVzKCkKK2Jvb2wg
TW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uU2lnbmF0dXJlcygpCiB7CiAgICAgdWludDMyX3Qg
Y291bnQ7CiAgICAgaWYgKCFwYXJzZVZhclVJbnQzMihjb3VudCkpCkBAIC0xOTYsMTIgKzIwMCwx
NyBAQCBib29sIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25TaWduYXR1cmVzKCkKICAg
ICAgICAgdWludDMyX3QgdHlwZU51bWJlcjsKICAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQzMih0
eXBlTnVtYmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAodHlw
ZU51bWJlciA+PSBtX3NpZ25hdHVyZXMuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIG1fZnVuY3Rpb25zW2ldLnNpZ25hdHVyZSA9ICZtX3NpZ25hdHVyZXNbdHlw
ZU51bWJlcl07CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV0FTTU1vZHVs
ZVBhcnNlcjo6cGFyc2VGdW5jdGlvbkRlZmluaXRpb25zKCkKK2Jvb2wgTW9kdWxlUGFyc2VyOjpw
YXJzZUZ1bmN0aW9uRGVmaW5pdGlvbnMoKQogewogICAgIHVpbnQzMl90IGNvdW50OwogICAgIGlm
ICghcGFyc2VWYXJVSW50MzIoY291bnQpKQpAQCAtMjE1LDcgKzIyNCw3IEBAIGJvb2wgV0FTTU1v
ZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvbkRlZmluaXRpb25zKCkKICAgICAgICAgaWYgKCFwYXJz
ZVZhclVJbnQzMihmdW5jdGlvblNpemUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgICAgIFdBU01GdW5jdGlvbkluZm9ybWF0aW9uJiBpbmZvID0gbV9mdW5jdGlvbnNbaV07Cisg
ICAgICAgIEZ1bmN0aW9uSW5mb3JtYXRpb24mIGluZm8gPSBtX2Z1bmN0aW9uc1tpXTsKICAgICAg
ICAgaW5mby5zdGFydCA9IG1fb2Zmc2V0OwogICAgICAgICBpbmZvLmVuZCA9IG1fb2Zmc2V0ICsg
ZnVuY3Rpb25TaXplOwogICAgICAgICBtX29mZnNldCA9IGluZm8uZW5kOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5oCmluZGV4IDdlMzYyYzBjMmQxMDBi
ZWQ5MzdiNmI0Y2NkZjk2YzA1OTJlOGViZGIuLjc0Yjc2OWNhYTY5YmIxNDU0MGQyMzk4NzI0OWU1
MjU1NzZmNzM0OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01N
b2R1bGVQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxl
UGFyc2VyLmgKQEAgLTM1LDE5ICszNSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNl
IFdBU00gewogCi1jbGFzcyBXQVNNTW9kdWxlUGFyc2VyIDogcHVibGljIFdBU01QYXJzZXIgewor
Y2xhc3MgTW9kdWxlUGFyc2VyIDogcHVibGljIFBhcnNlciB7CiBwdWJsaWM6CiAKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgbWFnaWNOdW1iZXIgPSAweGM7CiAKLSAgICBXQVNNTW9kdWxlUGFy
c2VyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc291cmNlQnVmZmVyKQotICAgICAgICA6IFdBU01Q
YXJzZXIoc291cmNlQnVmZmVyLCAwLCBzb3VyY2VCdWZmZXIuc2l6ZSgpKQorICAgIE1vZHVsZVBh
cnNlcihjb25zdCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZUJ1ZmZlcikKKyAgICAgICAgOiBQYXJz
ZXIoc291cmNlQnVmZmVyLCAwLCBzb3VyY2VCdWZmZXIuc2l6ZSgpKQogICAgIHsKICAgICB9CiAK
ICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZSgpOwogCi0gICAgY29uc3QgVmVjdG9y
PFdBU01GdW5jdGlvbkluZm9ybWF0aW9uPiYgZnVuY3Rpb25JbmZvcm1hdGlvbigpIHsgcmV0dXJu
IG1fZnVuY3Rpb25zOyB9CisgICAgY29uc3QgVmVjdG9yPEZ1bmN0aW9uSW5mb3JtYXRpb24+JiBm
dW5jdGlvbkluZm9ybWF0aW9uKCkgeyByZXR1cm4gbV9mdW5jdGlvbnM7IH0KIAogcHJpdmF0ZToK
ICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUZ1bmN0aW9uVHlwZXMoKTsKQEAgLTU1
LDkgKzU1LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VG
dW5jdGlvbkRlZmluaXRpb25zKCk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VG
dW5jdGlvbkRlZmluaXRpb24odWludDMyX3QgbnVtYmVyKTsKICAgICBib29sIFdBUk5fVU5VU0VE
X1JFVFVSTiBwYXJzZUJsb2NrKCk7Ci0gICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VF
eHByZXNzaW9uKFdBU01PcFR5cGUpOworICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNl
RXhwcmVzc2lvbihPcFR5cGUpOwogCi0gICAgVmVjdG9yPFdBU01GdW5jdGlvbkluZm9ybWF0aW9u
PiBtX2Z1bmN0aW9uczsKKyAgICBWZWN0b3I8RnVuY3Rpb25JbmZvcm1hdGlvbj4gbV9mdW5jdGlv
bnM7CisgICAgVmVjdG9yPFNpZ25hdHVyZT4gbV9zaWduYXR1cmVzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV0FTTQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU9w
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU9wcy5oCmluZGV4IDVmZDZiYmY1
ZGVmNTM3MGMzMDRlNTExNDgzMDEyYzQ1NTk2YTMyZDMuLmMxZGI2ZTk3ODQxMTdkMDhiMTU0ZGNj
YThjYWE0YjUxYmZhMTQ5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dBU01PcHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNT3BzLmgKQEAg
LTMyLDcgKzMyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgV0FTTSB7CiAKICNkZWZp
bmUgRk9SX0VBQ0hfV0FTTV9TUEVDSUFMX09QKG1hY3JvKSBcCi0gICAgbWFjcm8oSTMyQ29uc3Qs
IDB4MTAsIE5BKQorICAgIG1hY3JvKEkzMkNvbnN0LCAweDEwLCBOQSkgXAorICAgIG1hY3JvKEdl
dExvY2FsLCAweDE0LCBOQSkKIAogI2RlZmluZSBGT1JfRUFDSF9XQVNNX0NPTlRST0xfRkxPV19P
UChtYWNybykgXAogICAgIG1hY3JvKEJsb2NrLCAweDAxLCBOQSkgXApAQCAtMTA2LDE1ICsxMDcs
MTUgQEAgbmFtZXNwYWNlIFdBU00gewogCiAjZGVmaW5lIENSRUFURV9FTlVNX1ZBTFVFKG5hbWUs
IGlkLCBiM29wKSBuYW1lID0gaWQsCiAKLWVudW0gV0FTTU9wVHlwZSA6IHVpbnQ4X3QgeworZW51
bSBPcFR5cGUgOiB1aW50OF90IHsKICAgICBGT1JfRUFDSF9XQVNNX09QKENSRUFURV9FTlVNX1ZB
TFVFKQogfTsKIAotZW51bSBjbGFzcyBXQVNNQmluYXJ5T3BUeXBlIDogdWludDhfdCB7CitlbnVt
IGNsYXNzIEJpbmFyeU9wVHlwZSA6IHVpbnQ4X3QgewogICAgIEZPUl9FQUNIX1dBU01fQklOQVJZ
X09QKENSRUFURV9FTlVNX1ZBTFVFKQogfTsKIAotZW51bSBjbGFzcyBXQVNNVW5hcnlPcFR5cGUg
OiB1aW50OF90IHsKK2VudW0gY2xhc3MgVW5hcnlPcFR5cGUgOiB1aW50OF90IHsKICAgICBGT1Jf
RUFDSF9XQVNNX1VOQVJZX09QKENSRUFURV9FTlVNX1ZBTFVFKQogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBhcnNlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTVBhcnNlci5oCmluZGV4IDE1ZjM4ZGY5MjZhNzQwNDEzNTU4NzUwNjE0
ZjViYzEzMzljMmM3MGYuLmRlNzVkYmRhNTA0NjFhNDMwYWI0MjNmZDIzZmIxMzJmZTFlMThlYzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGFyc2VyLmgKQEAgLTM4LDkgKzM4LDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBXQVNNIHsKIAotY2xhc3MgV0FTTVBhcnNl
ciB7CitjbGFzcyBQYXJzZXIgewogcHJvdGVjdGVkOgotICAgIFdBU01QYXJzZXIoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+Jiwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgZW5kKTsKKyAgICBQYXJzZXIoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+Jiwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgZW5kKTsKIAogICAgIGJv
b2wgV0FSTl9VTlVTRURfUkVUVVJOIGNvbnN1bWVDaGFyYWN0ZXIoY2hhcik7CiAgICAgYm9vbCBX
QVJOX1VOVVNFRF9SRVRVUk4gY29uc3VtZVN0cmluZyhjb25zdCBjaGFyKik7CkBAIC01MSwxNCAr
NTEsMTQgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVmFy
VUludDMyKHVpbnQzMl90JiByZXN1bHQpIHsgcmV0dXJuIGRlY29kZVVJbnQzMihtX3NvdXJjZS5k
YXRhKCksIG1fc291cmNlTGVuZ3RoLCBtX29mZnNldCwgcmVzdWx0KTsgfQogCiAKLSAgICBib29s
IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVZhbHVlVHlwZShXQVNNVmFsdWVUeXBlJiByZXN1bHQp
OworICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVmFsdWVUeXBlKFR5cGUmIHJlc3Vs
dCk7CiAKICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIG1fc291cmNlOwogICAgIHNpemVfdCBt
X3NvdXJjZUxlbmd0aDsKICAgICBzaXplX3QgbV9vZmZzZXQ7CiB9OwogCi1BTFdBWVNfSU5MSU5F
IFdBU01QYXJzZXI6OldBU01QYXJzZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzb3VyY2VCdWZm
ZXIsIHNpemVfdCBzdGFydCwgc2l6ZV90IGVuZCkKK0FMV0FZU19JTkxJTkUgUGFyc2VyOjpQYXJz
ZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzb3VyY2VCdWZmZXIsIHNpemVfdCBzdGFydCwgc2l6
ZV90IGVuZCkKICAgICA6IG1fc291cmNlKHNvdXJjZUJ1ZmZlcikKICAgICAsIG1fc291cmNlTGVu
Z3RoKGVuZCkKICAgICAsIG1fb2Zmc2V0KHN0YXJ0KQpAQCAtNjcsNyArNjcsNyBAQCBBTFdBWVNf
SU5MSU5FIFdBU01QYXJzZXI6OldBU01QYXJzZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzb3Vy
Y2VCdWZmZXIsIHNpemVfdAogICAgIEFTU0VSVChzdGFydCA8IGVuZCk7CiB9CiAKLUFMV0FZU19J
TkxJTkUgYm9vbCBXQVNNUGFyc2VyOjpjb25zdW1lQ2hhcmFjdGVyKGNoYXIgYykKK0FMV0FZU19J
TkxJTkUgYm9vbCBQYXJzZXI6OmNvbnN1bWVDaGFyYWN0ZXIoY2hhciBjKQogewogICAgIGlmICht
X29mZnNldCA+PSBtX3NvdXJjZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzgs
NyArNzgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgV0FTTVBhcnNlcjo6Y29uc3VtZUNoYXJhY3Rl
cihjaGFyIGMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgV0FT
TVBhcnNlcjo6Y29uc3VtZVN0cmluZyhjb25zdCBjaGFyKiBzdHIpCitBTFdBWVNfSU5MSU5FIGJv
b2wgUGFyc2VyOjpjb25zdW1lU3RyaW5nKGNvbnN0IGNoYXIqIHN0cikKIHsKICAgICB1bnNpZ25l
ZCBzdGFydCA9IG1fb2Zmc2V0OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IHN0cltpXTsgaSsr
KSB7CkBAIC05MCw3ICs5MCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBXQVNNUGFyc2VyOjpjb25z
dW1lU3RyaW5nKGNvbnN0IGNoYXIqIHN0cikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQUxXQVlT
X0lOTElORSBib29sIFdBU01QYXJzZXI6OnBhcnNlVUludDMyKHVpbnQzMl90JiByZXN1bHQpCitB
TFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyOjpwYXJzZVVJbnQzMih1aW50MzJfdCYgcmVzdWx0KQog
ewogICAgIGlmIChtX29mZnNldCArIDQgPj0gbV9zb3VyY2VMZW5ndGgpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTk5LDcgKzk5LDcgQEAgQUxXQVlTX0lOTElORSBib29sIFdBU01QYXJzZXI6
OnBhcnNlVUludDMyKHVpbnQzMl90JiByZXN1bHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUFM
V0FZU19JTkxJTkUgYm9vbCBXQVNNUGFyc2VyOjpwYXJzZVVJbnQ3KHVpbnQ4X3QmIHJlc3VsdCkK
K0FMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI6OnBhcnNlVUludDcodWludDhfdCYgcmVzdWx0KQog
ewogICAgIGlmIChtX29mZnNldCA+PSBtX3NvdXJjZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTA3LDcgKzEwNyw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBXQVNNUGFyc2VyOjpw
YXJzZVVJbnQ3KHVpbnQ4X3QmIHJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0IDwgMHg4MDsKIH0K
IAotQUxXQVlTX0lOTElORSBib29sIFdBU01QYXJzZXI6OnBhcnNlVmFyVUludDEodWludDhfdCYg
cmVzdWx0KQorQUxXQVlTX0lOTElORSBib29sIFBhcnNlcjo6cGFyc2VWYXJVSW50MSh1aW50OF90
JiByZXN1bHQpCiB7CiAgICAgdWludDMyX3QgdGVtcDsKICAgICBpZiAoIXBhcnNlVmFyVUludDMy
KHRlbXApKQpAQCAtMTE2LDE0ICsxMTYsMTQgQEAgQUxXQVlTX0lOTElORSBib29sIFdBU01QYXJz
ZXI6OnBhcnNlVmFyVUludDEodWludDhfdCYgcmVzdWx0KQogICAgIHJldHVybiB0ZW1wIDw9IDE7
CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBXQVNNUGFyc2VyOjpwYXJzZVZhbHVlVHlwZShXQVNN
VmFsdWVUeXBlJiByZXN1bHQpCitBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyOjpwYXJzZVZhbHVl
VHlwZShUeXBlJiByZXN1bHQpCiB7CiAgICAgdWludDhfdCB2YWx1ZTsKICAgICBpZiAoIXBhcnNl
VUludDcodmFsdWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHZhbHVlID49IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KFdBU01WYWx1ZVR5cGU6Ok51bWJlck9mVHlwZXMpKQorICAgIGlm
ICh2YWx1ZSA+PSBzdGF0aWNfY2FzdDx1aW50OF90PihUeXBlOjpMYXN0VmFsdWVUeXBlKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdBU01WYWx1ZVR5
cGU+KHZhbHVlKTsKKyAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dBU01QbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QbGFuLmNwcApp
bmRleCA5ZDI5YjllZTlhNzljOGI3MzZkNWE2OTI5OWI3MDkzZDk1NzBkYjA1Li4zMzFjNThhYzRl
Y2Q5MTAwOTBlOGFjMjgzNTBhODFiNGMzM2Q1MWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTVBsYW4uY3BwCkBAIC00Myw3ICs0Myw3IEBAIFBsYW46OlBsYW4oVk0mIHZtLCBWZWN0
b3I8dWludDhfdD4gc291cmNlKQogewogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9n
TG4oIlN0YXJ0aW5nIHBsYW4uIik7Ci0gICAgV0FTTU1vZHVsZVBhcnNlciBtb2R1bGVQYXJzZXIo
c291cmNlKTsKKyAgICBNb2R1bGVQYXJzZXIgbW9kdWxlUGFyc2VyKHNvdXJjZSk7CiAgICAgaWYg
KCFtb2R1bGVQYXJzZXIucGFyc2UoKSkgewogICAgICAgICBkYXRhTG9nTG4oIlBhcnNpbmcgbW9k
dWxlIGZhaWxlZC4iKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTIsNyArNTIsNyBAQCBQbGFuOjpQ
bGFuKFZNJiB2bSwgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSkKICAgICBpZiAodmVyYm9zZSkKICAg
ICAgICAgZGF0YUxvZ0xuKCJQYXJzZWQgbW9kdWxlLiIpOwogCi0gICAgZm9yIChjb25zdCBXQVNN
RnVuY3Rpb25JbmZvcm1hdGlvbiYgaW5mbyA6IG1vZHVsZVBhcnNlci5mdW5jdGlvbkluZm9ybWF0
aW9uKCkpIHsKKyAgICBmb3IgKGNvbnN0IEZ1bmN0aW9uSW5mb3JtYXRpb24mIGluZm8gOiBtb2R1
bGVQYXJzZXIuZnVuY3Rpb25JbmZvcm1hdGlvbigpKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQog
ICAgICAgICAgICAgZGF0YUxvZ0xuKCJQcm9jZXNzaW5nIGZ1bmNpb24gc3RhcnRpbmcgYXQ6ICIs
IGluZm8uc3RhcnQsICIgYW5kIGVuZGluZyBhdDogIiwgaW5mby5lbmQpOwogICAgICAgICByZXN1
bHQuYXBwZW5kKHBhcnNlQW5kQ29tcGlsZSh2bSwgc291cmNlLCBpbmZvKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTVNlY3Rpb25zLmNwcAppbmRleCAyODc2M2NjOWJlMzM0ZDky
ZWZhMGRmN2JhZDVjMzExOTBhMGE2YWU3Li41N2E0MWU2MzY2M2ZmNmNiZDdhNzU0Y2MyYTJkY2Zk
NDM0ZjY0ODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2Vj
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01TZWN0aW9ucy5j
cHAKQEAgLTQyLDE0ICs0MiwxNCBAQCBzdHJ1Y3QgU2VjdGlvbkRhdGEgewogCiBzdGF0aWMgY29u
c3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBzZWN0aW9u
RGF0YUxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihXQVNNU2VjdGlvbnM6OlNlY3Rpb246
OlVua25vd24pOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNlY3Rpb25EYXRhTGVuZ3RoID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFNlY3Rpb25zOjpVbmtub3duKTsKIHN0YXRpYyBjb25zdCBTZWN0
aW9uRGF0YSBzZWN0aW9uRGF0YVtzZWN0aW9uRGF0YUxlbmd0aF0gewogI2RlZmluZSBDUkVBVEVf
U0VDVElPTl9EQVRBKG5hbWUsIHN0cikgeyBzaXplb2Yoc3RyKSAtIDEsIHN0ciB9LAogICAgIEZP
Ul9FQUNIX1dBU01fU0VDVElPTl9UWVBFKENSRUFURV9TRUNUSU9OX0RBVEEpCiAjdW5kZWYgQ1JF
QVRFX1NFQ1RJT05fREFUQQogfTsKIAotV0FTTVNlY3Rpb25zOjpTZWN0aW9uIFdBU01TZWN0aW9u
czo6bG9va3VwKGNvbnN0IHVpbnQ4X3QqIG5hbWUsIHVuc2lnbmVkIGxlbmd0aCkKK1NlY3Rpb25z
OjpTZWN0aW9uIFNlY3Rpb25zOjpsb29rdXAoY29uc3QgdWludDhfdCogbmFtZSwgdW5zaWduZWQg
bGVuZ3RoKQogewogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nTG4oIkRlY29kaW5n
IHNlY3Rpb24gd2l0aCBuYW1lOiAiLCBTdHJpbmcobmFtZSwgbGVuZ3RoKSk7CkBAIC01Nyw5ICs1
Nyw5IEBAIFdBU01TZWN0aW9uczo6U2VjdGlvbiBXQVNNU2VjdGlvbnM6Omxvb2t1cChjb25zdCB1
aW50OF90KiBuYW1lLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgICAgIGlmIChzZWN0aW9uRGF0YVtp
XS5sZW5ndGggIT0gbGVuZ3RoKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICgh
bWVtY21wKG5hbWUsIHNlY3Rpb25EYXRhW2ldLm5hbWUsIGxlbmd0aCkpCi0gICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8V0FTTVNlY3Rpb25zOjpTZWN0aW9uPihpKTsKKyAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxTZWN0aW9uczo6U2VjdGlvbj4oaSk7CiAgICAgfQotICAgIHJl
dHVybiBXQVNNU2VjdGlvbnM6OlNlY3Rpb246OlVua25vd247CisgICAgcmV0dXJuIFNlY3Rpb25z
OjpVbmtub3duOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXQVNNCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01TZWN0aW9ucy5oCmluZGV4IGM5MDZhMmZhMDc3ZjExMjc0NzNkZTZmOWNjODEz
NmExMTYyOGQxNmYuLjFmYzU2ZWViODU0ZGNjZTk3NzUzMzJlMjJmYmVkNTIyOWVlNzhkMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01TZWN0aW9ucy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01TZWN0aW9ucy5oCkBAIC0zOCw4ICszOCw4
IEBAIG5hbWVzcGFjZSBXQVNNIHsKICAgICBtYWNybyhEZWZpbml0aW9ucywgImNvZGUiKSBcCiAg
ICAgbWFjcm8oRW5kLCAiZW5kIikKIAotc3RydWN0IFdBU01TZWN0aW9ucyB7Ci0gICAgZW51bSBj
bGFzcyBTZWN0aW9uIHsKK3N0cnVjdCBTZWN0aW9ucyB7CisgICAgZW51bSBTZWN0aW9uIHsKICNk
ZWZpbmUgQ1JFQVRFX1NFQ1RJT05fRU5VTShuYW1lLCBzdHIpIG5hbWUsCiAgICAgICAgIEZPUl9F
QUNIX1dBU01fU0VDVElPTl9UWVBFKENSRUFURV9TRUNUSU9OX0VOVU0pCiAjdW5kZWYgQ1JFQVRF
X1NFQ1RJT05fRU5VTQpAQCAtNTAsNyArNTAsNyBAQCBzdHJ1Y3QgV0FTTVNlY3Rpb25zIHsKICAg
ICB7CiAgICAgICAgIC8vIFRoaXMgYWxsb3dzIHVua25vd24gc2VjdGlvbnMgYWZ0ZXIgRW5kLCB3
aGljaCBJIGRvdWJ0IHdpbGwgZXZlciBiZSBzdXBwb3J0ZWQgYnV0CiAgICAgICAgIC8vIHRoZXJl
IGlzIG5vIHJlYXNvbiB0byBwb3RlbnRpYWxseSBicmVhayBiYWNrd2FyZHMgY29tcGF0YWJpbGl0
eS4KLSAgICAgICAgaWYgKHByZXZpb3VzID09IFNlY3Rpb246OlVua25vd24pCisgICAgICAgIGlm
IChwcmV2aW91cyA9PSBVbmtub3duKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IHJldHVybiBwcmV2aW91cyA8IG5leHQ7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287593</attachid>
            <date>2016-08-31 20:57:07 -0700</date>
            <delta_ts>2016-08-31 21:06:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161471-20160831205452.patch</filename>
            <type>text/plain</type>
            <size>56523</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1Mjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MjY4MWE4MGM2MjJmMTEzZWRiMzEwYjNjYTJmY2VhM2ZkNWUwMTQwLi43YzYyM2FjNjhjMGFjNzEy
YTA0NDQzZGQ4NmEwZWE2YTUwMmUwN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMTYtMDgtMzEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgV0FTTSBmdW5jdGlvbnMgc2hvdWxkIGJlIGFibGUgdG8gdXNlIGFy
Z3VtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYxNDcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBkb2VzIGEgY291cGxlIG9mIGNoYW5nZXM6CisKKyAgICAgICAgMSkgUmVtb3Zl
cyB0aGUgcmVkdW5kYW5jeSBvZiBhbGwgdGhlIFdBU00gY2xhc3NlcyBwcmVmaXhpbmcgdGhlaXIg
bmFtZXMgd2l0aCBXQVNNLiBUaGF0J3Mgd2hhdCB0aGUgV0FTTSBuYW1lc3BhY2UgaXMgZm9yLgor
CisgICAgICAgIDIpIEFkZHMgYSBuZXcgQ2FsbGluZyBDb252ZW50aW9uIGNsYXNzIGZvciBCMy4g
VGhpcyBjbGFzcyBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSB0byBzcGVjaWZ5IHRoZSBjYWxsaW5n
IGNvbnZlbnRpb24gb2YgYSBmdW5jdGlvbi4gSW4gcGFydGljdWxhciBpdCBrbm93cyB3aGljaCBh
cmd1bWVudHMgYXJlIGluIHJlZ2lzdGVycyBhbmQgd2hpY2ggb25lcyBzaG91bGQgYmUgb24gdGhl
IHN0YWNrLiBGb3Igbm93LCBub3RoaW5nIHVzZXMgdGhlIGFyZ3VtZW50IHJlZ2lzdGVycywgaW4g
dGhlIGZ1dHVyZSB3ZSB3aWxsIHVzZSB0aGVzZSBmb3IgV0FTTSBhbmQvb3IgSlMuIEFkZGl0b25h
bGx5LCBpdCBrbm93cyB0aGUgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzIGZvciBhbnkgZ2l2ZW4gZnVu
Y3Rpb24uIFRoZSBtYWluIGFkdmFudGFnZSBvZiB0aGlzIGNsYXNzIGlzIHRoYXQgaXQgbWFrZXMg
aXQgZWFzeSB0byBpdGVyYXRlIG92ZXIgdGhlIGFyZ3VtZW50cyBvZiB5b3VyIGZ1bmN0aW9uIHdp
dGhvdXQgaGF2aW5nIHRvIHdvcnJ5IGFib3V0IHRoZSBkZXRhaWxzIG9mIHRoZSBjYWxsaW5nIGNv
bnZlbnRpb24geW91IGFyZSB1c2luZy4KKworICAgICAgICAzKSBNYWtlcyB0aGUgV0FTTSBjYWxs
aW5nIGNvbnZlbnRpb24gdGhlIHNhbWUgYXMgdGhlIEpTIG9uZS4gQ3VycmVudGx5LCB0aGUgQ29k
ZUJsb2NrLCBDb2RlT3JpZ2luLCBhbmQgQ2FsbGVlIGFyZSBhbGwgMC4gU2luY2UgdGhleSBoYXZl
IG5vIHZhbHVlLiBBZGRpdGlvbmFsbHksIHNpbmNlIHdlIGNhbGwgaW50byBXQVNNIGZyb20gQysr
IHRocm91Z2ggdm1FbnRyeVRvSmF2YVNjcmlwdCwgaWYgdGhlcmUgYXJlIG5vIGFyZ3VtZW50cyB0
byB0aGUgY2FsbGVlIHdlIGluc2VydCBhIG51bGwgcG9pbnRlciBhcyB0aGUgZmlyc3QgYXJndW1l
bnQuCisKKyAgICAgICAgNCkgU2luY2UgV0FTTSBleHBlY3RzIHRoZSBhcmd1bWVudHMgdG8gYmUg
bWFwcGVkIHRvIGZ1bmN0aW9uIGxvY2FscyB3ZSBtYXAgdGhlIGFyZ3VtZW50IHN0YWNrIHNsb3Rz
IHRvIHZhcmlhYmxlcyBpbW1lZGlhdGVseSBhZnRlciB0aGUgZnVuY3Rpb24gcHJvbG9ndWUuCisK
KyAgICAgICAgNSkgUmVwbGFjZXMgV0FTTVZhbHVlVHlwZSB3aXRoIHRoZSBCMyBUeXBlLiBUaGlz
IG1ha2VzIGNvbnZlcnRpbmcgVmVjdG9ycyBvZiBXQVNNOjpUeXBlcyBpbnRvIEIzOjpUeXBlcyBl
YXN5IHNpbmNlIHRoZXkgYXJlIGJhY2tlZCBieSB0aGUgc2FtZSB0eXBlLgorCisgICAgICAgICog
QjNDYWxsaW5nQ29udmVudGlvbnMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkIzOjpDYWxsaW5n
Q29udmVudGlvbjo6Q2FsbGluZ0NvbnZlbnRpb24pOgorICAgICAgICAoSlNDOjpCMzo6Q2FsbGlu
Z0NvbnZlbnRpb246Oml0ZXJhdGUpOgorICAgICAgICAoSlNDOjpCMzo6bmV4dEpTQ09mZnNldCk6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiMy9CM1Byb2NlZHVyZS5oOgorICAgICAgICAqIGIzL0IzVHlwZS5oOgorICAgICAg
ICAqIGludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmg6CisgICAgICAgICogbGxpbnQvTExJbnRU
aHVua3MuY3BwOgorICAgICAgICAoSlNDOjp2bUVudHJ5VG9XQVNNKToKKyAgICAgICAgKiBsbGlu
dC9MTEludFRodW5rcy5oOgorICAgICAgICAqIHRlc3RXQVNNLmNwcDoKKyAgICAgICAgKGludm9r
ZSk6CisgICAgICAgIChib3gpOgorICAgICAgICAocnVuV0FTTVRlc3RzKToKKyAgICAgICAgKiB3
YXNtL0pTV0FTTU1vZHVsZS5oOgorICAgICAgICAoSlNDOjpKU1dBU01Nb2R1bGU6OnNpZ25hdHVy
ZXMpOgorICAgICAgICAoSlNDOjpKU1dBU01Nb2R1bGU6OmZ1bmN0aW9uSW1wb3J0cyk6CisgICAg
ICAgIChKU0M6OkpTV0FTTU1vZHVsZTo6ZnVuY3Rpb25JbXBvcnRTaWduYXR1cmVzKToKKyAgICAg
ICAgKEpTQzo6SlNXQVNNTW9kdWxlOjpnbG9iYWxWYXJpYWJsZVR5cGVzKToKKyAgICAgICAgKEpT
Qzo6SlNXQVNNTW9kdWxlOjpmdW5jdGlvbkRlY2xhcmF0aW9ucyk6CisgICAgICAgIChKU0M6OkpT
V0FTTU1vZHVsZTo6ZnVuY3Rpb25Qb2ludGVyVGFibGVzKToKKyAgICAgICAgKiB3YXNtL1dBU01C
M0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6dG9CM09wKToKKyAgICAgICAg
KEpTQzo6V0FTTTo6QjNJUkdlbmVyYXRvcjo6YWRkTG9jYWwpOgorICAgICAgICAoSlNDOjpXQVNN
OjpCM0lSR2VuZXJhdG9yOjphZGRBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpXQVNNOjpCM0lS
R2VuZXJhdG9yOjpnZXRMb2NhbCk6CisgICAgICAgIChKU0M6OldBU006OkIzSVJHZW5lcmF0b3I6
OnVuYXJ5T3ApOgorICAgICAgICAoSlNDOjpXQVNNOjpCM0lSR2VuZXJhdG9yOjpiaW5hcnlPcCk6
CisgICAgICAgIChKU0M6OldBU006OkIzSVJHZW5lcmF0b3I6OmFkZENvbnN0YW50KToKKyAgICAg
ICAgKEpTQzo6V0FTTTo6cGFyc2VBbmRDb21waWxlKToKKyAgICAgICAgKiB3YXNtL1dBU01CM0lS
R2VuZXJhdG9yLmg6CisgICAgICAgICogd2FzbS9XQVNNRm9ybWF0Lmg6CisgICAgICAgICogd2Fz
bS9XQVNNRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V0FTTTo6RnVuY3Rpb25QYXJz
ZXI8Q29udGV4dD46OkZ1bmN0aW9uUGFyc2VyKToKKyAgICAgICAgKEpTQzo6V0FTTTo6RnVuY3Rp
b25QYXJzZXI8Q29udGV4dD46OnBhcnNlKToKKyAgICAgICAgKEpTQzo6V0FTTTo6RnVuY3Rpb25Q
YXJzZXI8Q29udGV4dD46OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpXQVNNOjpGdW5jdGlv
blBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6V0FTTTo6
V0FTTUZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpXQVNNRnVuY3Rpb25QYXJzZXIpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpXQVNNOjpXQVNNRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V0FTTTo6V0FTTUZ1bmN0aW9uUGFyc2VyPENvbnRl
eHQ+OjpwYXJzZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V0FTTTo6V0FTTUZ1bmN0
aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAq
IHdhc20vV0FTTU1vZHVsZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OldBU006Ok1vZHVsZVBh
cnNlcjo6cGFyc2UpOgorICAgICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQYXJzZXI6OnBhcnNlRnVu
Y3Rpb25UeXBlcyk6CisgICAgICAgIChKU0M6OldBU006Ok1vZHVsZVBhcnNlcjo6cGFyc2VGdW5j
dGlvblNpZ25hdHVyZXMpOgorICAgICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQYXJzZXI6OnBhcnNl
RnVuY3Rpb25EZWZpbml0aW9ucyk6CisgICAgICAgIChKU0M6OldBU006OldBU01Nb2R1bGVQYXJz
ZXI6OnBhcnNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V0FTTTo6V0FTTU1vZHVsZVBhcnNl
cjo6cGFyc2VGdW5jdGlvblR5cGVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V0FTTTo6V0FT
TU1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvblNpZ25hdHVyZXMpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpXQVNNOjpXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbnMp
OiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV0FTTU1vZHVsZVBhcnNlci5oOgorICAgICAgICAo
SlNDOjpXQVNNOjpNb2R1bGVQYXJzZXI6Ok1vZHVsZVBhcnNlcik6CisgICAgICAgIChKU0M6OldB
U006Ok1vZHVsZVBhcnNlcjo6ZnVuY3Rpb25JbmZvcm1hdGlvbik6CisgICAgICAgIChKU0M6OldB
U006OldBU01Nb2R1bGVQYXJzZXI6OldBU01Nb2R1bGVQYXJzZXIpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpXQVNNOjpXQVNNTW9kdWxlUGFyc2VyOjpmdW5jdGlvbkluZm9ybWF0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB3YXNtL1dBU01PcHMuaDoKKyAgICAgICAgKiB3YXNtL1dBU01QYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6V0FTTTo6UGFyc2VyOjpQYXJzZXIpOgorICAgICAgICAoSlND
OjpXQVNNOjpQYXJzZXI6OmNvbnN1bWVDaGFyYWN0ZXIpOgorICAgICAgICAoSlNDOjpXQVNNOjpQ
YXJzZXI6OmNvbnN1bWVTdHJpbmcpOgorICAgICAgICAoSlNDOjpXQVNNOjpQYXJzZXI6OnBhcnNl
VUludDMyKToKKyAgICAgICAgKEpTQzo6V0FTTTo6UGFyc2VyOjpwYXJzZVVJbnQ3KToKKyAgICAg
ICAgKEpTQzo6V0FTTTo6UGFyc2VyOjpwYXJzZVZhclVJbnQxKToKKyAgICAgICAgKEpTQzo6V0FT
TTo6UGFyc2VyOjpwYXJzZVZhbHVlVHlwZSk6CisgICAgICAgIChKU0M6OldBU006OldBU01QYXJz
ZXI6OldBU01QYXJzZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXQVNNOjpXQVNNUGFyc2Vy
Ojpjb25zdW1lQ2hhcmFjdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V0FTTTo6V0FTTVBh
cnNlcjo6Y29uc3VtZVN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldBU006OldBU01Q
YXJzZXI6OnBhcnNlVUludDMyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V0FTTTo6V0FTTVBh
cnNlcjo6cGFyc2VVSW50Nyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldBU006OldBU01QYXJz
ZXI6OnBhcnNlVmFyVUludDEpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXQVNNOjpXQVNNUGFy
c2VyOjpwYXJzZVZhbHVlVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XQVNNUGxhbi5j
cHA6CisgICAgICAgIChKU0M6OldBU006OlBsYW46OlBsYW4pOgorICAgICAgICAqIHdhc20vV0FT
TVNlY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6U2VjdGlvbnM6Omxvb2t1cCk6Cisg
ICAgICAgIChKU0M6OldBU006OldBU01TZWN0aW9uczo6bG9va3VwKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3YXNtL1dBU01TZWN0aW9ucy5oOgorICAgICAgICAoSlNDOjpXQVNNOjpTZWN0aW9uczo6
dmFsaWRhdGVPcmRlcik6CisgICAgICAgIChKU0M6OldBU006OldBU01TZWN0aW9uczo6dmFsaWRh
dGVPcmRlcik6IERlbGV0ZWQuCisKIDIwMTYtMDgtMzEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gQWRkIGluaXRpYXRvciBwYXJhbWV0ZXIg
dG8gbW9kdWxlIHBpcGVsaW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQjND
YWxsaW5nQ29udmVudGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9CM0NhbGxpbmdDb252
ZW50aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzNjU5NTliNThjZWMyNmJhYmZhNTViODM2MTVhOTA1Yzg1
Yzc2MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQjNDYWxsaW5n
Q29udmVudGlvbnMuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQjNfSklUKQor
CisjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVkZSAiQjNCYXNpY0Jsb2Nr
LmgiCisjaW5jbHVkZSAiQjNDb25zdDY0VmFsdWUuaCIKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVl
LmgiCisjaW5jbHVkZSAiQjNUeXBlLmgiCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVk
ZSAiUmVnaXN0ZXJTZXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK25hbWVzcGFjZSBCMyB7CisK
K3R5cGVkZWYgdW5zaWduZWQgKCpOZXh0T2Zmc2V0KSh1bnNpZ25lZCBjdXJyZW50T2Zmc2V0LCBU
eXBlIHR5cGUpOworCit0ZW1wbGF0ZTx1bnNpZ25lZCBvZmZzZXQsIE5leHRPZmZzZXQgdXBkYXRl
T2Zmc2V0PgorY2xhc3MgQ2FsbGluZ0NvbnZlbnRpb24geworcHVibGljOgorICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBoZWFkZXJTaXplID0gb2Zmc2V0OworCisgICAgQ2FsbGluZ0NvbnZlbnRp
b24oVmVjdG9yPEdQUlJlZz4mJiByZWdpc3RlckFyZ3VtZW50cywgUmVnaXN0ZXJTZXQmJiBjYWxs
ZWVTYXZlUmVnaXN0ZXJzKQorICAgICAgICA6IG1fcmVnaXN0ZXJBcmd1bWVudHMocmVnaXN0ZXJB
cmd1bWVudHMpCisgICAgICAgICwgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzKGNhbGxlZVNhdmVSZWdp
c3RlcnMpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cisg
ICAgdm9pZCBpdGVyYXRlKGNvbnN0IFZlY3RvcjxUeXBlPiYgYXJndW1lbnRUeXBlcywgUHJvY2Vk
dXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaywgT3JpZ2luIG9yaWdpbiwgY29uc3QgRnVuY3Rv
ciYgZnVuY3RvcikgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQg
PSBoZWFkZXJTaXplOworICAgICAgICBWYWx1ZSogZnJhbWVQb2ludGVyID0gYmxvY2stPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgRnJhbWVQb2ludGVyLCBvcmlnaW4pOworCisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudFR5cGVzLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICBWYWx1ZSogYXJndW1lbnQ7CisgICAgICAgICAgICBpZiAoaSA8IG1fcmVnaXN0ZXJBcmd1
bWVudHMuc2l6ZSgpKQorICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0gYmxvY2stPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBvcmlnaW4sIG1fcmVnaXN0ZXJBcmd1bWVudHNbaV0p
OworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSBi
bG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIG9yaWdpbiwgZnJhbWVQb2ludGVyLAor
ICAgICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywg
b3JpZ2luLCBjdXJyZW50T2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgYXJndW1lbnQgPSBibG9j
ay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBhcmd1bWVudFR5cGVzW2ldLCBv
cmlnaW4sIGFkZHJlc3MpOworICAgICAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQgPSB1cGRhdGVP
ZmZzZXQoY3VycmVudE9mZnNldCwgYXJndW1lbnRUeXBlc1tpXSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBmdW5jdG9yKGFyZ3VtZW50LCBpKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGNvbnN0IFZlY3RvcjxHUFJSZWc+IG1fcmVnaXN0ZXJBcmd1bWVudHM7CisgICAgY29uc3QgUmVn
aXN0ZXJTZXQgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOworICAgIGNvbnN0IFJlZ2lzdGVyU2V0IG1f
Y2FsbGVyU2F2ZVJlZ2lzdGVyczsKK307CisKK2lubGluZSB1bnNpZ25lZCBuZXh0SlNDT2Zmc2V0
KHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQsIFR5cGUpCit7CisgICAgcmV0dXJuIGN1cnJlbnRPZmZz
ZXQgKyBzaXplb2YoUmVnaXN0ZXIpOworfQorCitjb25zdGV4cHIgdW5zaWduZWQganNjSGVhZGVy
U2l6ZSA9IEV4ZWNTdGF0ZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzICogc2l6ZW9mKFJlZ2lzdGVy
KTsKK3R5cGVkZWYgQ2FsbGluZ0NvbnZlbnRpb248anNjSGVhZGVyU2l6ZSwgbmV4dEpTQ09mZnNl
dD4gSlNDQ2FsbGluZ0NvbnZlbnRpb247CisKK0pTQ0NhbGxpbmdDb252ZW50aW9uKiBqc2NDYWxs
aW5nQ29udmVudGlvbigpOworCit9IC8vIG5hbWVzcGFjZSBCMworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGM1YmIzZjI0ZTEzOGI3NjZmYWM1ZTlhZGYwNDY3Y2UzZmQ2ODI2MmEuLmY0OWFiNjA3
YTBkYzE0YzYyZjQ0YjRlNDdkNjRiNmUxZGViMmJiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMTc5LDYgKzExNzksNyBAQAogCQk1MkM5NTJCOTE5QTI4QTFDMDA2OUIzODYg
LyogVHlwZVByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUyQzk1MkI4MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuY3BwICov
OyB9OwogCQk1MzEzNzRCRDFENUNFNjc2MDBBRjdBMEIgLyogV0FTTVBsYW4uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTM3NEJDMUQ1Q0U2NzYwMEFG
N0EwQiAvKiBXQVNNUGxhbi5oICovOyB9OwogCQk1MzEzNzRCRjFENUNFOTUwMDBBRjdBMEIgLyog
V0FTTVBsYW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTMxMzc0QkUxRDVDRTk1MDAwQUY3QTBCIC8qIFdBU01QbGFuLmNwcCAqLzsgfTsKKwkJNTMx
QjNDODcxRDc0QzYwMzAwNUIzMjM2IC8qIEIzQ2FsbGluZ0NvbnZlbnRpb25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzFCM0M4NjFENzRDNjAzMDA1
QjMyMzYgLyogQjNDYWxsaW5nQ29udmVudGlvbnMuaCAqLzsgfTsKIAkJNTM0ODZCQjcxQzE3OTVD
MzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJh
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNTM0
ODZCQkIxQzE4RTg0NTAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ4NkJCQTFDMThFODQ1MDBGNkYzQUYg
LyogSlNUeXBlZEFycmF5LmNwcCAqLzsgfTsKIAkJNTM0OTAyODUxQzcyNzZCNzAwMTJCQ0I4IC8q
IFR5cGVkQXJyYXlDVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzQ5MDI4MjFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNw
cCAqLzsgfTsKQEAgLTExODcsNiArMTE4OCw3IEBACiAJCTUzNTI5QTRDMUM0NTdCNzUwMDBCNDlD
NiAvKiBBUElVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTM1MjlBNEIxQzQ1N0I3NTAwMEI0OUM2IC8qIEFQSVV0aWxzLmggKi87IH07CiAJCTUz
NzBCNEY1MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdh
dGNocG9pbnRCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzNzBCNEYzMUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVy
dHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCAqLzsgfTsKIAkJNTM3MEI0RjYxQkYyNjIwNTAwNUM0
MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNzBCNEY0MUJGMjVF
QTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNl
LmggKi87IH07CisJCTUzODhCNDA0MUQ3NjY0MEIwMEQzRDg1MiAvKiBCM0NhbGxpbmdDb252ZW50
aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Mzg4QjQwMzFENzY2NDBCMDBEM0Q4NTIgLyogQjNDYWxsaW5nQ29udmVudGlvbnMuY3BwICovOyB9
OwogCQk1MzkxN0U3QjFCNzkwNkZBMDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzOTE3RTdBMUI3OTA2RTQwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oICovOyB9OwogCQk1MzlFQjA3OTFENTU2MDcwMDBDODJF
RjcgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlv
bi5mcmFtZXdvcmsgKi87IH07CiAJCTUzOUVCMDdBMUQ1NTYwNzAwMEM4MkVGNyAvKiBKYXZhU2Ny
aXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNjcmlwdENvcmUuZnJh
bWV3b3JrICovOyB9OwpAQCAtMzM3MSw2ICszMzczLDcgQEAKIAkJNTJDOTUyQjgxOUEyOEExQzAw
NjlCMzg2IC8qIFR5cGVQcm9maWxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlUHJvZmls
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzEzNzRCQzFENUNFNjc2MDBB
RjdBMEIgLyogV0FTTVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FT
TVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMzc0QkUxRDVDRTk1MDAw
QUY3QTBCIC8qIFdBU01QbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdBU01QbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMxQjNDODYx
RDc0QzYwMzAwNUIzMjM2IC8qIEIzQ2FsbGluZ0NvbnZlbnRpb25zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEIzQ2FsbGluZ0NvbnZlbnRpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAvKiBKU1R5cGVkQXJyYXku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDg2QkJBMUMxOEU4NDUwMEY2RjNBRiAvKiBKU1R5
cGVkQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUeXBl
ZEFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0OTAyODIxQzcyNDJD
ODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBUeXBlZEFycmF5Q1Rlc3QuY3BwOyBwYXRoID0gQVBJL3Rlc3RzL1R5cGVk
QXJyYXlDVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzgxLDYgKzMz
ODQsNyBAQAogCQk1MzUyOUE0QjFDNDU3Qjc1MDAwQjQ5QzYgLyogQVBJVXRpbHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNzBCNEY0MUJGMjVFQTIwMDVDNDBG
QyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVl
V2F0Y2hwb2ludEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM4OEI0MDMx
RDc2NjQwQjAwRDNEODUyIC8qIEIzQ2FsbGluZ0NvbnZlbnRpb25zLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEIzQ2FsbGluZ0NvbnZlbnRpb25zLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM5MTdFN0ExQjc5MDZFNDAwMEVCRDMzIC8qIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOTE3RTdDMUI3OTExMDYwMDBFQkQz
MyAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTM5MTdFODMxQjc5MUNCODAwMEVCRDMzIC8qIFR5cGVkQXJyYXlQcm90b3R5
cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBUeXBlZEFycmF5
UHJvdG90eXBlLmpzOyBwYXRoID0gYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5qczsgc291
cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwpAQCAtNDc3NSw2ICs0Nzc5LDggQEAKIAkJCQlEQ0ZE
RkJENzFEMUY1RDk4MDBGRTNENzIgLyogQjNCb3R0b21Qcm92aWRlci5oICovLAogCQkJCTBGNkI4
QURFMUM0RUZFMTcwMDk2OTA1MiAvKiBCM0JyZWFrQ3JpdGljYWxFZGdlcy5jcHAgKi8sCiAJCQkJ
MEY2QjhBREYxQzRFRkUxNzAwOTY5MDUyIC8qIEIzQnJlYWtDcml0aWNhbEVkZ2VzLmggKi8sCisJ
CQkJNTM4OEI0MDMxRDc2NjQwQjAwRDNEODUyIC8qIEIzQ2FsbGluZ0NvbnZlbnRpb25zLmNwcCAq
LywKKwkJCQk1MzFCM0M4NjFENzRDNjAzMDA1QjMyMzYgLyogQjNDYWxsaW5nQ29udmVudGlvbnMu
aCAqLywKIAkJCQlEQzlBMEMxQzFEMkQ5NEVGMDA4NTEyNEUgLyogQjNDYXNlQ29sbGVjdGlvbi5j
cHAgKi8sCiAJCQkJREM5QTBDMUQxRDJEOTRFRjAwODUxMjRFIC8qIEIzQ2FzZUNvbGxlY3Rpb24u
aCAqLywKIAkJCQlEQzlBMEMxRTFEMkQ5NEVGMDA4NTEyNEUgLyogQjNDYXNlQ29sbGVjdGlvbklu
bGluZXMuaCAqLywKQEAgLTQ4ODksOSArNDg5NSw5IEBACiAJCQkJMEZFQzg0RUYxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzU3dpdGNoVmFsdWUuY3BwICovLAogCQkJCTBGRUM4NEYwMUJEQUNEQUMwMDgw
RkY3NCAvKiBCM1N3aXRjaFZhbHVlLmggKi8sCiAJCQkJMEY0NTcwM0UxQkU1ODRDQTAwNjJBNjI5
IC8qIEIzVGltaW5nU2NvcGUuY3BwICovLAorCQkJCTBGRUM4NEYyMUJEQUNEQUMwMDgwRkY3NCAv
KiBCM1R5cGUuaCAqLywKIAkJCQkwRjQ1NzAzRjFCRTU4NENBMDA2MkE2MjkgLyogQjNUaW1pbmdT
Y29wZS5oICovLAogCQkJCTBGRUM4NEYxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1R5cGUuY3BwICov
LAotCQkJCTBGRUM4NEYyMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1R5cGUuaCAqLywKIAkJCQlEQ0ZE
RkJEODFEMUY1RDk4MDBGRTNENzIgLyogQjNUeXBlTWFwLmggKi8sCiAJCQkJMEZFQzg0RjMxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzVXBzaWxvblZhbHVlLmNwcCAqLywKIAkJCQkwRkVDODRGNDFCREFD
REFDMDA4MEZGNzQgLyogQjNVcHNpbG9uVmFsdWUuaCAqLywKQEAgLTgyNjUsNiArODI3MSw3IEBA
CiAJCQkJOTlEQTAwQjExQkQ1OTk0RTAwRjQ1NzVDIC8qIFVwZGF0ZUNvbnRlbnRzLnB5IGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY5NjNCMzgxM0ZDNkZFOTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MjZBNDgxNDYwQ0JCMzAwMTMxRjhGIC8qIFZhbHVlUmVj
b3ZlcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzMUIzQzg3MUQ3NEM2MDMwMDVCMzIzNiAvKiBC
M0NhbGxpbmdDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlFRTBDMDAxQjRBRkI4
NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NkM3MzUxMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURldGFpbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFMDUwMkQxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC04OTE2LDYgKzg5MjMsNyBAQAogCQkJCTcwOTRDNERFMUFFNDM5NTMw
MDQxQTJFRSAvKiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUMyRkNBRTEyMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzMzhFMEQxQkYwMjc2QzAwMTNDODhGIC8qIEIzRGF0
YVNlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM4OEI0MDQxRDc2NjQwQjAwRDNEODUy
IC8qIEIzQ2FsbGluZ0NvbnZlbnRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1QjgzOTJG
MUJBQ0FENkEwMDQ0RTgyNCAvKiBDYWNoZWRSZWNvdmVyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDI4MDgyRDEwN0VDMDU3MDAxM0U3QjIgLyogQ2FsbERhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY2NEIyNzkxQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAppbmRleCBlMmUxMzRkYWJl
Y2QwMzc0OWZlN2E5N2Y0ODhiZThmYTBiY2M0OGQ4Li4yZjAzOGEzMWRhNGQ1ZWNlMDBkMzViOTU3
NDk5MWU5YjA4NTI3MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQ
cm9jZWR1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaApA
QCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaWZuZGVmIEIzUHJvY2Vk
dXJlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuaAppbmRleCA1ZGIwNjk3NzkzYTczYzFmNTFk
NGIyZmM0MWE5M2FkMjA0ZWY2MTg1Li4yOWI3ZDM2ZjI4Y2UwMDc2NjNlNjdjNDQ5NWFmYzdkYTk2
MTgyZThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDExICszOSwxMiBAQAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKIGVudW0gVHlwZSA6IGludDhfdCB7Ci0gICAg
Vm9pZCwKICAgICBJbnQzMiwKICAgICBJbnQ2NCwKICAgICBGbG9hdCwKLSAgICBEb3VibGUKKyAg
ICBEb3VibGUsCisgICAgTGFzdFZhbHVlVHlwZSA9IERvdWJsZSwKKyAgICBWb2lkCiB9OwogCiBp
bmxpbmUgYm9vbCBpc0ludChUeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oCmluZGV4IGFmMzNhMzA3MmNjYzYxNTNkYWEw
Yzc1YWUxNGJjNmI4YjNiMjEyYzkuLmNjNzcwMTA5NmUxYjYyMGNlOTI0NzU2MDY4NjU5ZTNiNjJm
OTljNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90
b0NhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90
b0NhbGxGcmFtZS5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdHJ1
Y3QgUHJvdG9DYWxsRnJhbWUgeworc3RydWN0IEpTX0VYUE9SVF9QUklWQVRFIFByb3RvQ2FsbEZy
YW1lIHsKICAgICBSZWdpc3RlciBjb2RlQmxvY2tWYWx1ZTsKICAgICBSZWdpc3RlciBjYWxsZWVW
YWx1ZTsKICAgICBSZWdpc3RlciBhcmdDb3VudEFuZENvZGVPcmlnaW5WYWx1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCmluZGV4IGI2ZDQ4MTc0OTZhMmE3
NDNlZTcxNDcxMTlhMWJlMjg5NDQxYmMyODQuLmIzMzM0MTRlOTk3MjM5NGZjZDhkMmU0OTdjYTVl
YWRjMGVlZmFkY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtz
LmNwcApAQCAtNDEsNiArNDEsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0VuY29kZWRKU1Zh
bHVlIEpTX0VYUE9SVF9QUklWQVRFIHZtRW50cnlUb1dBU00odm9pZCogY29kZSwgVk0qIHZtLCBQ
cm90b0NhbGxGcmFtZSogZnJhbWUpCit7CisgICAgcmV0dXJuIHZtRW50cnlUb0phdmFTY3JpcHQo
Y29kZSwgdm0sIGZyYW1lKTsKK30KKyAgICAKICNpZiBFTkFCTEUoSklUKQogCiBuYW1lc3BhY2Ug
TExJbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1
bmtzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAppbmRleCA5
NWIwZjQ0ODQ4YmNjNTI5ZDE1MDNlMjg5YjkzZWZlMzcwNWM4MzE2Li45YjdlMjY2YWU0OWQ3Yzdi
NjAzZWUxY2VjYTc5MTk1MGFhNDY5NzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRUaHVua3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRUaHVua3MuaApAQCAtMzgsNiArMzgsOCBAQCBleHRlcm4gIkMiIHsKICAgICBFbmNvZGVk
SlNWYWx1ZSB2bUVudHJ5VG9OYXRpdmUodm9pZCosIFZNKiwgUHJvdG9DYWxsRnJhbWUqKTsKIH0K
IAorRW5jb2RlZEpTVmFsdWUgSlNfRVhQT1JUX1BSSVZBVEUgdm1FbnRyeVRvV0FTTSh2b2lkKiwg
Vk0qLCBQcm90b0NhbGxGcmFtZSopOworCiBuYW1lc3BhY2UgTExJbnQgewogCiBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihWTSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0V0FTTS5jcHAKaW5kZXggMDdhMjBmOTUwOTE2Y2ExYzE2Mjc3MTEzMjE5
ODY0OTM1NDdjNzlhYS4uYzE1ZWQ1ZjRkM2I0MTVkYTI5Yjk1ZWVmMWQ4OWNiMTM4MDU2NTYyNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdFdBU00uY3BwCkBAIC0yNyw3ICsyNywxMCBAQAogCiAjaW5j
bHVkZSAiQjNDb21waWxhdGlvbi5oIgogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisj
aW5jbHVkZSAiTExJbnRUaHVua3MuaCIKKyNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgogI2lu
Y2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiV0FTTVBsYW4uaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxv
Zy5oPgpAQCAtMTkwLDE3ICsxOTMsMzcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5h
bWVzcGFjZSBXQVNNOwogdXNpbmcgbmFtZXNwYWNlIEIzOwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci1UIGludm9rZShNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
cHRyLCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQorLy8gRklYTUU6IFRoaXMgaXMgcHVyZSBoYWNr
cyBhbmQgc2hvdWxkIGJlIGNoYW5nZWQuLi4gcGxlYXNlLi4uCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorVCBpbnZva2UoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHB0ciwgc3RkOjppbml0aWFsaXplcl9s
aXN0PEpTVmFsdWU+IGFyZ3MpCiB7Ci0gICAgVCAoKmZ1bmN0aW9uKShBcmd1bWVudHMuLi4pID0g
Yml0d2lzZV9jYXN0PFQoKikoQXJndW1lbnRzLi4uKT4ocHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkp
OwotICAgIHJldHVybiBmdW5jdGlvbihhcmd1bWVudHMuLi4pOworICAgIEpTVmFsdWUgZmlyc3RB
cmd1bWVudDsKKyAgICAvLyBTaW5jZSB2bUVudHJ5VG9KYXZhU2NyaXB0IGV4cGVjdHMgYSB0aGlz
IHZhbHVlIHdlIGNsYWltIHRoZXJlIGlzIG9uZS4uLiB0aGVyZSBpc24ndC4KKyAgICBpbnQgYXJn
Q291bnQgPSAxOworICAgIEpTVmFsdWUqIHJlbWFpbmluZ0FyZ3VtZW50cyA9IG51bGxwdHI7Cisg
ICAgaWYgKGFyZ3Muc2l6ZSgpKSB7CisgICAgICAgIHJlbWFpbmluZ0FyZ3VtZW50cyA9IGNvbnN0
X2Nhc3Q8SlNWYWx1ZSo+KGFyZ3MuYmVnaW4oKSk7CisgICAgICAgIGZpcnN0QXJndW1lbnQgPSAq
cmVtYWluaW5nQXJndW1lbnRzOworICAgICAgICByZW1haW5pbmdBcmd1bWVudHMrKzsKKyAgICAg
ICAgYXJnQ291bnQgPSBhcmdzLnNpemUoKTsKKyAgICB9CisKKyAgICBQcm90b0NhbGxGcmFtZSBw
cm90b0NhbGxGcmFtZTsKKyAgICBwcm90b0NhbGxGcmFtZS5pbml0KG51bGxwdHIsIG51bGxwdHIs
IGZpcnN0QXJndW1lbnQsIGFyZ0NvdW50LCByZW1haW5pbmdBcmd1bWVudHMpOworCisgICAgLy8g
VGhpcyB3b24ndCB3b3JrIGZvciBmbG9hdGluZyBwb2ludCB2YWx1ZXMgYnV0IHdlIGRvbid0IGhh
dmUgdGhvc2UgeWV0LgorICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPih2bUVudHJ5VG9XQVNNKHB0
ci5leGVjdXRhYmxlQWRkcmVzcygpLCB2bSwgJnByb3RvQ2FsbEZyYW1lKSk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+CitUIGludm9rZShjb25zdCBDb21waWxhdGlvbiYgY29kZSwgc3RkOjpp
bml0aWFsaXplcl9saXN0PEpTVmFsdWU+IGFyZ3MpCit7CisgICAgcmV0dXJuIGludm9rZTxUPihj
b2RlLmNvZGUoKSwgYXJncyk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KLVQgaW52b2tlKGNvbnN0IENvbXBpbGF0aW9uJiBjb2RlLCBBcmd1bWVudHMu
Li4gYXJndW1lbnRzKQoraW5saW5lIEpTVmFsdWUgYm94KHVpbnQ2NF90IHZhbHVlKQogewotICAg
IHJldHVybiBpbnZva2U8VD4oY29kZS5jb2RlKCksIGFyZ3VtZW50cy4uLik7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmRlY29kZSh2YWx1ZSk7CiB9CiAKIC8vIEZvciBub3cgd2UgaW5saW5lIHRoZSB0
ZXN0IGZpbGVzLgpAQCAtMjI0LDcgKzI0Nyw3IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygp
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdKSA9PSA1KTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IH0pID09
IDUpOwogICAgIH0KIAogCkBAIC0yNDYsNyArMjY5LDcgQEAgc3RhdGljIHZvaWQgcnVuV0FTTVRl
c3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgot
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0pID09IDEx
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7
IH0pID09IDExKTsKICAgICB9CiAgICAgCiAgICAgewpAQCAtMjY3LDcgKzI5MCw3IEBAIHN0YXRp
YyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMg
ZG9lc24ndCBjcmFzaC4KLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW52b2tlPGludD4oKnBsYW4u
cmVzdWx0WzBdKSA9PSAxMSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGludm9rZTxpbnQ+KCpw
bGFuLnJlc3VsdFswXSwgeyB9KSA9PSAxMSk7CiAgICAgfQogCiAgICAgewpAQCAtMjg4LDcgKzMx
MSwyOSBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAKICAgICAgICAg
Ly8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGludm9r
ZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSkgPT0gMTEpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChp
bnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHsgfSkgPT0gMTEpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgLy8gR2VuZXJhdGVkIGZyb206IChtb2R1bGUgKGZ1bmMgJGFkZCAocGFyYW0gJHgg
aTMyKSAocGFyYW0gJHkgaTMyKSAocmVzdWx0IGkzMikgKHJldHVybiAoaTMyLmFkZCAoZ2V0X2xv
Y2FsICR4KSAoZ2V0X2xvY2FsICR5KSkpKSApCisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0
b3IgPSB7CisgICAgICAgICAgICAweDAwLCAweDYxLCAweDczLCAweDZkLCAweDBjLCAweDAwLCAw
eDAwLCAweDAwLCAweDA0LCAweDc0LCAweDc5LCAweDcwLCAweDY1LCAweDg3LCAweDgwLCAweDgw
LAorICAgICAgICAgICAgMHgwMCwgMHgwMSwgMHg0MCwgMHgwMiwgMHgwMSwgMHgwMSwgMHgwMSwg
MHgwMSwgMHgwOCwgMHg2NiwgMHg3NSwgMHg2ZSwgMHg2MywgMHg3NCwgMHg2OSwgMHg2ZiwKKyAg
ICAgICAgICAgIDB4NmUsIDB4ODIsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDQs
IDB4NjMsIDB4NmYsIDB4NjQsIDB4NjUsIDB4OGUsIDB4ODAsIDB4ODAsIDB4MDAsCisgICAgICAg
ICAgICAweDAxLCAweDg5LCAweDgwLCAweDgwLCAweDAwLCAweDAwLCAweDE0LCAweDAwLCAweDE0
LCAweDAxLCAweDQwLCAweDA5LCAweDAxLCAweDBmCisgICAgICAgIH07CisKKyAgICAgICAgUGxh
biBwbGFuKCp2bSwgdmVjdG9yKTsKKyAgICAgICAgaWYgKHBsYW4ucmVzdWx0LnNpemUoKSAhPSAx
IHx8ICFwbGFuLnJlc3VsdFswXSkgeworICAgICAgICAgICAgZGF0YUxvZ0xuKCJNb2R1bGUgZmFp
bGVkIHRvIGNvbXBpbGUgY29ycmVjdGx5LiIpOworICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNoLgorICAgICAgICBSRUxF
QVNFX0FTU0VSVChpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHtib3goMCksIGJveCgxKX0p
ID09IDEpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnZva2U8aW50PigqcGxhbi5yZXN1bHRb
MF0sIHtib3goMTAwKSwgYm94KDEpfSkgPT0gMTAxKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7Ym94KC0xKSwgYm94KDEpfSkgPT0gMCk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwge2JveChz
dGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSwgYm94KDEpfSkgPT0gc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQ+OjptaW4oKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9KU1dBU01Nb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL0pTV0FTTU1vZHVsZS5oCmluZGV4IGNjMDJhYjQ3Mzc1YmZjODU1NTllOGYxNDlhOTUzZWM5
NThmODc5NGIuLjE0YjZlYjVmZDExYWM0ODIwNmRkZjM4YjAzZWM0YzQ1NDljZTgxNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV0FTTU1vZHVsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV0FTTU1vZHVsZS5oCkBAIC03NSwxMiArNzUsMTIg
QEAgcHVibGljOgogICAgIFZlY3Rvcjx1aW50MzJfdD4mIGkzMkNvbnN0YW50cygpIHsgcmV0dXJu
IG1faTMyQ29uc3RhbnRzOyB9CiAgICAgVmVjdG9yPGZsb2F0PiYgZjMyQ29uc3RhbnRzKCkgeyBy
ZXR1cm4gbV9mMzJDb25zdGFudHM7IH0KICAgICBWZWN0b3I8ZG91YmxlPiYgZjY0Q29uc3RhbnRz
KCkgeyByZXR1cm4gbV9mNjRDb25zdGFudHM7IH0KLSAgICBWZWN0b3I8V0FTTVNpZ25hdHVyZT4m
IHNpZ25hdHVyZXMoKSB7IHJldHVybiBtX3NpZ25hdHVyZXM7IH0KLSAgICBWZWN0b3I8V0FTTUZ1
bmN0aW9uSW1wb3J0PiYgZnVuY3Rpb25JbXBvcnRzKCkgeyByZXR1cm4gbV9mdW5jdGlvbkltcG9y
dHM7IH0KLSAgICBWZWN0b3I8V0FTTUZ1bmN0aW9uSW1wb3J0U2lnbmF0dXJlPiYgZnVuY3Rpb25J
bXBvcnRTaWduYXR1cmVzKCkgeyByZXR1cm4gbV9mdW5jdGlvbkltcG9ydFNpZ25hdHVyZXM7IH0K
LSAgICBWZWN0b3I8V0FTTVZhbHVlVHlwZT4mIGdsb2JhbFZhcmlhYmxlVHlwZXMoKSB7IHJldHVy
biBtX2dsb2JhbFZhcmlhYmxlVHlwZXM7IH0KLSAgICBWZWN0b3I8V0FTTUZ1bmN0aW9uRGVjbGFy
YXRpb24+JiBmdW5jdGlvbkRlY2xhcmF0aW9ucygpIHsgcmV0dXJuIG1fZnVuY3Rpb25EZWNsYXJh
dGlvbnM7IH0KLSAgICBWZWN0b3I8V0FTTUZ1bmN0aW9uUG9pbnRlclRhYmxlPiYgZnVuY3Rpb25Q
b2ludGVyVGFibGVzKCkgeyByZXR1cm4gbV9mdW5jdGlvblBvaW50ZXJUYWJsZXM7IH0KKyAgICBW
ZWN0b3I8V0FTTTo6U2lnbmF0dXJlPiYgc2lnbmF0dXJlcygpIHsgcmV0dXJuIG1fc2lnbmF0dXJl
czsgfQorICAgIFZlY3RvcjxXQVNNOjpGdW5jdGlvbkltcG9ydD4mIGZ1bmN0aW9uSW1wb3J0cygp
IHsgcmV0dXJuIG1fZnVuY3Rpb25JbXBvcnRzOyB9CisgICAgVmVjdG9yPFdBU006OkZ1bmN0aW9u
SW1wb3J0U2lnbmF0dXJlPiYgZnVuY3Rpb25JbXBvcnRTaWduYXR1cmVzKCkgeyByZXR1cm4gbV9m
dW5jdGlvbkltcG9ydFNpZ25hdHVyZXM7IH0KKyAgICBWZWN0b3I8V0FTTTo6VHlwZT4mIGdsb2Jh
bFZhcmlhYmxlVHlwZXMoKSB7IHJldHVybiBtX2dsb2JhbFZhcmlhYmxlVHlwZXM7IH0KKyAgICBW
ZWN0b3I8V0FTTTo6RnVuY3Rpb25EZWNsYXJhdGlvbj4mIGZ1bmN0aW9uRGVjbGFyYXRpb25zKCkg
eyByZXR1cm4gbV9mdW5jdGlvbkRlY2xhcmF0aW9uczsgfQorICAgIFZlY3RvcjxXQVNNOjpGdW5j
dGlvblBvaW50ZXJUYWJsZT4mIGZ1bmN0aW9uUG9pbnRlclRhYmxlcygpIHsgcmV0dXJuIG1fZnVu
Y3Rpb25Qb2ludGVyVGFibGVzOyB9CiAKICAgICBjb25zdCBKU0FycmF5QnVmZmVyKiBhcnJheUJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlCdWZmZXIuZ2V0KCk7IH0KICAgICBWZWN0b3I8
V3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+PiYgZnVuY3Rpb25zKCkgeyByZXR1cm4gbV9mdW5jdGlv
bnM7IH0KQEAgLTk1LDEyICs5NSwxMiBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx1aW50MzJfdD4g
bV9pMzJDb25zdGFudHM7CiAgICAgVmVjdG9yPGZsb2F0PiBtX2YzMkNvbnN0YW50czsKICAgICBW
ZWN0b3I8ZG91YmxlPiBtX2Y2NENvbnN0YW50czsKLSAgICBWZWN0b3I8V0FTTVNpZ25hdHVyZT4g
bV9zaWduYXR1cmVzOwotICAgIFZlY3RvcjxXQVNNRnVuY3Rpb25JbXBvcnQ+IG1fZnVuY3Rpb25J
bXBvcnRzOwotICAgIFZlY3RvcjxXQVNNRnVuY3Rpb25JbXBvcnRTaWduYXR1cmU+IG1fZnVuY3Rp
b25JbXBvcnRTaWduYXR1cmVzOwotICAgIFZlY3RvcjxXQVNNVmFsdWVUeXBlPiBtX2dsb2JhbFZh
cmlhYmxlVHlwZXM7Ci0gICAgVmVjdG9yPFdBU01GdW5jdGlvbkRlY2xhcmF0aW9uPiBtX2Z1bmN0
aW9uRGVjbGFyYXRpb25zOwotICAgIFZlY3RvcjxXQVNNRnVuY3Rpb25Qb2ludGVyVGFibGU+IG1f
ZnVuY3Rpb25Qb2ludGVyVGFibGVzOworICAgIFZlY3RvcjxXQVNNOjpTaWduYXR1cmU+IG1fc2ln
bmF0dXJlczsKKyAgICBWZWN0b3I8V0FTTTo6RnVuY3Rpb25JbXBvcnQ+IG1fZnVuY3Rpb25JbXBv
cnRzOworICAgIFZlY3RvcjxXQVNNOjpGdW5jdGlvbkltcG9ydFNpZ25hdHVyZT4gbV9mdW5jdGlv
bkltcG9ydFNpZ25hdHVyZXM7CisgICAgVmVjdG9yPFdBU006OlR5cGU+IG1fZ2xvYmFsVmFyaWFi
bGVUeXBlczsKKyAgICBWZWN0b3I8V0FTTTo6RnVuY3Rpb25EZWNsYXJhdGlvbj4gbV9mdW5jdGlv
bkRlY2xhcmF0aW9uczsKKyAgICBWZWN0b3I8V0FTTTo6RnVuY3Rpb25Qb2ludGVyVGFibGU+IG1f
ZnVuY3Rpb25Qb2ludGVyVGFibGVzOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTQXJyYXlCdWZmZXI+
IG1fYXJyYXlCdWZmZXI7CiAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPj4gbV9m
dW5jdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJ
UkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVy
YXRvci5jcHAKaW5kZXggZTE0ZDk3ZWVkNWRhNmY2ZjJhZmUyZjcwNmQwYzQ1YzEyYjNkMWQyMC4u
OTM1MTZjNjVjNzgzZTE0NGNiY2JlZGNkYjJkNmZmNzVlZTI2YzQ5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcApAQCAtMjksOSArMjks
MTEgQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiQjNDYWxsaW5nQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJC
M1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzVmFyaWFibGUuaCIKICNpbmNsdWRlICJCM1Zh
cmlhYmxlVmFsdWUuaCIKKyNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJX
QVNNRnVuY3Rpb25QYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIApAQCAtNDEs
MjAgKzQzLDIwIEBAIG5hbWVzcGFjZSBXQVNNIHsKIAogdXNpbmcgbmFtZXNwYWNlIEIzOwogCi1p
bmxpbmUgQjM6Ok9wY29kZSB0b0IzT3AoV0FTTUJpbmFyeU9wVHlwZSBvcCkKK2lubGluZSBCMzo6
T3Bjb2RlIHRvQjNPcChCaW5hcnlPcFR5cGUgb3ApCiB7CiAgICAgc3dpdGNoIChvcCkgewotI2Rl
ZmluZSBDUkVBVEVfQ0FTRShuYW1lLCBvcCwgYjNvcCkgY2FzZSBXQVNNQmluYXJ5T3BUeXBlOjpu
YW1lOiByZXR1cm4gYjNvcDsKKyNkZWZpbmUgQ1JFQVRFX0NBU0UobmFtZSwgb3AsIGIzb3ApIGNh
c2UgQmluYXJ5T3BUeXBlOjpuYW1lOiByZXR1cm4gYjNvcDsKICAgICBGT1JfRUFDSF9XQVNNX0JJ
TkFSWV9PUChDUkVBVEVfQ0FTRSkKICN1bmRlZiBDUkVBVEVfQ0FTRQogICAgIH0KICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1pbmxpbmUgQjM6Ok9wY29kZSB0b0IzT3Ao
V0FTTVVuYXJ5T3BUeXBlIG9wKQoraW5saW5lIEIzOjpPcGNvZGUgdG9CM09wKFVuYXJ5T3BUeXBl
IG9wKQogewogICAgIHN3aXRjaCAob3ApIHsKLSNkZWZpbmUgQ1JFQVRFX0NBU0UobmFtZSwgb3As
IGIzb3ApIGNhc2UgV0FTTVVuYXJ5T3BUeXBlOjpuYW1lOiByZXR1cm4gYjNvcDsKKyNkZWZpbmUg
Q1JFQVRFX0NBU0UobmFtZSwgb3AsIGIzb3ApIGNhc2UgVW5hcnlPcFR5cGU6Om5hbWU6IHJldHVy
biBiM29wOwogICAgIEZPUl9FQUNIX1dBU01fVU5BUllfT1AoQ1JFQVRFX0NBU0UpCiAjdW5kZWYg
Q1JFQVRFX0NBU0UKICAgICB9CkBAIC02NywxMSArNjksMTQgQEAgcHVibGljOgogCiAgICAgQjNJ
UkdlbmVyYXRvcihQcm9jZWR1cmUmKTsKIAotICAgIHZvaWQgYWRkTG9jYWwoV0FTTVZhbHVlVHlw
ZSwgdWludDMyX3QpOwotICAgIEV4cHJlc3Npb25UeXBlIGFkZENvbnN0YW50KFdBU01WYWx1ZVR5
cGUsIHVpbnQ2NF90KTsKKyAgICB2b2lkIGFkZEFyZ3VtZW50cyhjb25zdCBWZWN0b3I8VHlwZT4m
KTsKKyAgICB2b2lkIGFkZExvY2FsKFR5cGUsIHVpbnQzMl90KTsKKyAgICBFeHByZXNzaW9uVHlw
ZSBhZGRDb25zdGFudChUeXBlLCB1aW50NjRfdCk7CiAKLSAgICBib29sIFdBUk5fVU5VU0VEX1JF
VFVSTiBiaW5hcnlPcChXQVNNQmluYXJ5T3BUeXBlLCBFeHByZXNzaW9uVHlwZSBsZWZ0LCBFeHBy
ZXNzaW9uVHlwZSByaWdodCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7Ci0gICAgYm9vbCBXQVJO
X1VOVVNFRF9SRVRVUk4gdW5hcnlPcChXQVNNVW5hcnlPcFR5cGUsIEV4cHJlc3Npb25UeXBlIGFy
ZywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4g
Z2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworCisgICAg
Ym9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gYmluYXJ5T3AoQmluYXJ5T3BUeXBlLCBFeHByZXNzaW9u
VHlwZSBsZWZ0LCBFeHByZXNzaW9uVHlwZSByaWdodCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7
CisgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gdW5hcnlPcChVbmFyeU9wVHlwZSwgRXhwcmVz
c2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKIAogICAgIGJvb2wgV0FSTl9V
TlVTRURfUkVUVVJOIGFkZEJsb2NrKCk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gZW5k
QmxvY2soVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgZXhwcmVzc2lvblN0YWNrKTsKQEAgLTg4LDYg
KzkzLDcgQEAgcHJpdmF0ZToKICAgICBCYXNpY0Jsb2NrKiBtX2N1cnJlbnRCbG9jazsKICAgICAv
LyBUaGlzIGlzIGEgcGFpciBvZiB0aGUgY29udGludWF0aW9uIGFuZCB0aGUgdHlwZXMgZXhwZWN0
ZWQgb24gdGhlIHN0YWNrIGZvciB0aGF0IGNvbnRpbnVhdGlvbi4KICAgICBWZWN0b3I8c3RkOjpw
YWlyPEJhc2ljQmxvY2sqLCBPcHRpb25hbDxWZWN0b3I8VmFyaWFibGUqPj4+PiBtX2NvbnRyb2xT
dGFjazsKKyAgICBWZWN0b3I8VmFyaWFibGUqPiBtX2xvY2FsczsKIH07CiAKIEIzSVJHZW5lcmF0
b3I6OkIzSVJHZW5lcmF0b3IoUHJvY2VkdXJlJiBwcm9jZWR1cmUpCkBAIC05NiwzMyArMTAyLDU0
IEBAIEIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IoUHJvY2VkdXJlJiBwcm9jZWR1cmUpCiAg
ICAgbV9jdXJyZW50QmxvY2sgPSBtX3Byb2MuYWRkQmxvY2soKTsKIH0KIAotdm9pZCBCM0lSR2Vu
ZXJhdG9yOjphZGRMb2NhbChXQVNNVmFsdWVUeXBlLCB1aW50MzJfdCkKK3ZvaWQgQjNJUkdlbmVy
YXRvcjo6YWRkTG9jYWwoVHlwZSB0eXBlLCB1aW50MzJfdCBjb3VudCkKK3sKKyAgICBtX2xvY2Fs
cy5ncm93KGNvdW50KTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkK
KyAgICAgICAgbV9sb2NhbHMuYXBwZW5kKG1fcHJvYy5hZGRWYXJpYWJsZSh0eXBlKSk7Cit9CisK
K3ZvaWQgQjNJUkdlbmVyYXRvcjo6YWRkQXJndW1lbnRzKGNvbnN0IFZlY3RvcjxUeXBlPiYgdHlw
ZXMpCiB7Ci0gICAgLy8gVE9ETzogQWRkIGxvY2Fscy4KKyAgICBBU1NFUlQoIW1fbG9jYWxzLnNp
emUoKSk7CisgICAgbV9sb2NhbHMucmVzaXplKHR5cGVzLnNpemUoKSk7CisgICAganNjQ2FsbGlu
Z0NvbnZlbnRpb24oKS0+aXRlcmF0ZSh0eXBlcywgbV9wcm9jLCBtX2N1cnJlbnRCbG9jaywgT3Jp
Z2luKCksCisgICAgICAgIFsmXSAoRXhwcmVzc2lvblR5cGUgYXJndW1lbnQsIHVuc2lnbmVkIGkp
IHsKKyAgICAgICAgICAgIFZhcmlhYmxlKiBhcmd1bWVudFZhcmlhYmxlID0gbV9wcm9jLmFkZFZh
cmlhYmxlKGFyZ3VtZW50LT50eXBlKCkpOworICAgICAgICAgICAgbV9sb2NhbHNbaV0gPSBhcmd1
bWVudFZhcmlhYmxlOworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYXJp
YWJsZVZhbHVlPihtX3Byb2MsIFNldCwgT3JpZ2luKCksIGFyZ3VtZW50VmFyaWFibGUsIGFyZ3Vt
ZW50KTsKKyAgICAgICAgfSk7Cit9CisKK2Jvb2wgV0FSTl9VTlVTRURfUkVUVVJOIEIzSVJHZW5l
cmF0b3I6OmdldExvY2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQor
eworICAgIEFTU0VSVChpbmRleCA8IG1fbG9jYWxzLnNpemUoKSk7CisgICAgcmVzdWx0ID0gbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPihtX3Byb2MsIEIzOjpHZXQsIE9y
aWdpbigpLCBtX2xvY2Fsc1tpbmRleF0pOworICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEIz
SVJHZW5lcmF0b3I6OnVuYXJ5T3AoV0FTTVVuYXJ5T3BUeXBlIG9wLCBFeHByZXNzaW9uVHlwZSBh
cmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCitib29sIEIzSVJHZW5lcmF0b3I6OnVuYXJ5T3Ao
VW5hcnlPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCkKIHsKICAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3By
b2MsIHRvQjNPcChvcCksIE9yaWdpbigpLCBhcmcpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIEIzSVJHZW5lcmF0b3I6OmJpbmFyeU9wKFdBU01CaW5hcnlPcFR5cGUgb3AsIEV4cHJlc3Np
b25UeXBlIGxlZnQsIEV4cHJlc3Npb25UeXBlIHJpZ2h0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KQorYm9vbCBCM0lSR2VuZXJhdG9yOjpiaW5hcnlPcChCaW5hcnlPcFR5cGUgb3AsIEV4cHJlc3Np
b25UeXBlIGxlZnQsIEV4cHJlc3Npb25UeXBlIHJpZ2h0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KQogewogICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJv
YywgdG9CM09wKG9wKSwgT3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotQjNJUkdlbmVyYXRvcjo6RXhwcmVzc2lvblR5cGUgQjNJUkdlbmVyYXRvcjo6YWRkQ29u
c3RhbnQoV0FTTVZhbHVlVHlwZSB0eXBlLCB1aW50NjRfdCB2YWx1ZSkKK0IzSVJHZW5lcmF0b3I6
OkV4cHJlc3Npb25UeXBlIEIzSVJHZW5lcmF0b3I6OmFkZENvbnN0YW50KFR5cGUgdHlwZSwgdWlu
dDY0X3QgdmFsdWUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBXQVNNVmFsdWVU
eXBlOjpJMzI6CisgICAgY2FzZSBJbnQzMjoKICAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihtX3Byb2MsIE9yaWdpbigpLCBzdGF0aWNfY2FzdDxp
bnQzMl90Pih2YWx1ZSkpOwotICAgIGNhc2UgV0FTTVZhbHVlVHlwZTo6STY0OgorICAgIGNhc2Ug
SW50NjQ6CiAgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0NjRW
YWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgdmFsdWUpOwotICAgIGNhc2UgV0FTTVZhbHVlVHlwZTo6
RjMyOgorICAgIGNhc2UgRmxvYXQ6CiAgICAgICAgIHJldHVybiBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgYml0d2lzZV9jYXN0PGZs
b2F0PihzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSkpKTsKLSAgICBjYXNlIFdBU01WYWx1ZVR5
cGU6OkY2NDoKKyAgICBjYXNlIERvdWJsZToKICAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgYml0d2lzZV9j
YXN0PGRvdWJsZT4odmFsdWUpKTsKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjA1LDExICsyMzIsMTEgQEAgQmFzaWNCbG9jayogQjNJUkdl
bmVyYXRvcjo6YmxvY2tGb3JDb250cm9sTGV2ZWwodW5zaWduZWQgbGV2ZWwpCiAgICAgcmV0dXJu
IG1fY29udHJvbFN0YWNrW21fY29udHJvbFN0YWNrLnNpemUoKSAtIDEgLSBsZXZlbF0uZmlyc3Q7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxDb21waWxhdGlvbj4gcGFyc2VBbmRDb21waWxlKFZNJiB2
bSwgVmVjdG9yPHVpbnQ4X3Q+JiBzb3VyY2UsIFdBU01GdW5jdGlvbkluZm9ybWF0aW9uIGluZm8s
IHVuc2lnbmVkIG9wdExldmVsKQorc3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBwYXJzZUFu
ZENvbXBpbGUoVk0mIHZtLCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZSwgRnVuY3Rpb25JbmZvcm1h
dGlvbiBpbmZvLCB1bnNpZ25lZCBvcHRMZXZlbCkKIHsKICAgICBQcm9jZWR1cmUgcHJvY2VkdXJl
OwogICAgIEIzSVJHZW5lcmF0b3IgY29udGV4dChwcm9jZWR1cmUpOwotICAgIFdBU01GdW5jdGlv
blBhcnNlcjxCM0lSR2VuZXJhdG9yPiBwYXJzZXIoY29udGV4dCwgc291cmNlLCBpbmZvKTsKKyAg
ICBGdW5jdGlvblBhcnNlcjxCM0lSR2VuZXJhdG9yPiBwYXJzZXIoY29udGV4dCwgc291cmNlLCBp
bmZvKTsKICAgICBpZiAoIXBhcnNlci5wYXJzZSgpKQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
QVNNQjNJUkdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJH
ZW5lcmF0b3IuaAppbmRleCBhNDU4OTJmMjQ5MzhmODMxMmEyNDBhMjQwZjdmYmYwYzE1YTY4NDZm
Li5jMGU3ZjdkNjM5ZjUzMzQ5OTk0OTU1OTM1MzAwNzFkMDlmM2JlODVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmgKQEAgLTM1LDcgKzM1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBXQVNNIHsKIAotc3RkOjp1bmlxdWVfcHRy
PEIzOjpDb21waWxhdGlvbj4gcGFyc2VBbmRDb21waWxlKFZNJiwgVmVjdG9yPHVpbnQ4X3Q+Jiwg
V0FTTUZ1bmN0aW9uSW5mb3JtYXRpb24sIHVuc2lnbmVkIG9wdExldmVsID0gMSk7CitzdGQ6OnVu
aXF1ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0mLCBWZWN0b3I8dWlu
dDhfdD4mLCBGdW5jdGlvbkluZm9ybWF0aW9uLCB1bnNpZ25lZCBvcHRMZXZlbCA9IDEpOwogCiB9
IC8vIG5hbWVzcGFjZSBXQVNNCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01Gb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQu
aAppbmRleCAzOWM3Y2YyOTRlMmMzMTNkYTgwNjUxZjgyY2I1ODg3OTNmNzdlNTQ5Li45NzVmODJi
ZDY4YTViNDZkMTgxNmE0NDliZDRiNjkwMzhkZWE0MDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XQVNNRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV0FTTUZvcm1hdC5oCkBAIC00NCw2ICs0NCw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAKKyNpbmNsdWRlICJCM1R5cGUuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTUxLDUyICs1Miw1MSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogY2xhc3MgSlNGdW5jdGlvbjsKIAotZW51bSBjbGFzcyBXQVNNVmFsdWVU
eXBlIDogdWludDhfdCB7Ci0gICAgSTMyLAotICAgIEk2NCwKLSAgICBGMzIsCi0gICAgRjY0LAot
ICAgIE51bWJlck9mVHlwZXMKLX07CituYW1lc3BhY2UgV0FTTSB7CiAKLWVudW0gY2xhc3MgV0FT
TUZ1bmN0aW9uUmV0dXJuVHlwZSA6IHVpbnQ4X3QgewotICAgIEkzMiwKLSAgICBJNjQsCi0gICAg
RjMyLAotICAgIEY2NCwKLSAgICBWb2lkLAotICAgIE51bWJlck9mRXhwcmVzc2lvblR5cGVzCi19
OwordXNpbmcgQjM6OlR5cGU7Cit1c2luZyBCMzo6SW50MzI7Cit1c2luZyBCMzo6SW50NjQ7Cit1
c2luZyBCMzo6RmxvYXQ7Cit1c2luZyBCMzo6RG91YmxlOwogCi1zdHJ1Y3QgV0FTTVNpZ25hdHVy
ZSB7Ci0gICAgV0FTTUZ1bmN0aW9uUmV0dXJuVHlwZSByZXR1cm5UeXBlOwotICAgIFZlY3RvcjxX
QVNNVmFsdWVUeXBlPiBhcmd1bWVudHM7CitzdGF0aWNfYXNzZXJ0KEludDMyID09IDAsICJXQVNN
IG5lZWRzIEIzOjpUeXBlOjpJbnQzMiB0byBoYXZlIHRoZSB2YWx1ZSAwIik7CitzdGF0aWNfYXNz
ZXJ0KEludDY0ID09IDEsICJXQVNNIG5lZWRzIEIzOjpUeXBlOjpJbnQ2NCB0byBoYXZlIHRoZSB2
YWx1ZSAxIik7CitzdGF0aWNfYXNzZXJ0KEZsb2F0ID09IDIsICJXQVNNIG5lZWRzIEIzOjpUeXBl
OjpGbG9hdCB0byBoYXZlIHRoZSB2YWx1ZSAyIik7CitzdGF0aWNfYXNzZXJ0KERvdWJsZSA9PSAz
LCAiV0FTTSBuZWVkcyBCMzo6VHlwZTo6RG91YmxlIHRvIGhhdmUgdGhlIHZhbHVlIDMiKTsKKwor
c3RydWN0IFNpZ25hdHVyZSB7CisgICAgVHlwZSByZXR1cm5UeXBlOworICAgIFZlY3RvcjxUeXBl
PiBhcmd1bWVudHM7CiB9OwogCi1zdHJ1Y3QgV0FTTUZ1bmN0aW9uSW1wb3J0IHsKK3N0cnVjdCBG
dW5jdGlvbkltcG9ydCB7CiAgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZTsKIH07CiAKLXN0cnVjdCBX
QVNNRnVuY3Rpb25JbXBvcnRTaWduYXR1cmUgeworc3RydWN0IEZ1bmN0aW9uSW1wb3J0U2lnbmF0
dXJlIHsKICAgICB1aW50MzJfdCBzaWduYXR1cmVJbmRleDsKICAgICB1aW50MzJfdCBmdW5jdGlv
bkltcG9ydEluZGV4OwogfTsKIAotc3RydWN0IFdBU01GdW5jdGlvbkRlY2xhcmF0aW9uIHsKK3N0
cnVjdCBGdW5jdGlvbkRlY2xhcmF0aW9uIHsKICAgICB1aW50MzJfdCBzaWduYXR1cmVJbmRleDsK
IH07CiAKLXN0cnVjdCBXQVNNRnVuY3Rpb25Qb2ludGVyVGFibGUgeworc3RydWN0IEZ1bmN0aW9u
UG9pbnRlclRhYmxlIHsKICAgICB1aW50MzJfdCBzaWduYXR1cmVJbmRleDsKICAgICBWZWN0b3I8
dWludDMyX3Q+IGZ1bmN0aW9uSW5kaWNlczsKICAgICBWZWN0b3I8SlNGdW5jdGlvbio+IGZ1bmN0
aW9uczsKIH07CiAKLXN0cnVjdCBXQVNNRnVuY3Rpb25JbmZvcm1hdGlvbiB7CitzdHJ1Y3QgRnVu
Y3Rpb25JbmZvcm1hdGlvbiB7CisgICAgU2lnbmF0dXJlKiBzaWduYXR1cmU7CiAgICAgc2l6ZV90
IHN0YXJ0OwogICAgIHNpemVfdCBlbmQ7CiB9OwogCit9IC8vIG5hbWVzcGFjZSBXQVNNCisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaAppbmRleCA0OTQ2
OWY1ZGY4NzZhOWEwMDA5YWE2MzI3ZTk3YjVlMTA0M2Y3NTFkLi4zZWY1ZDQzYWMwNGQ4NDAzZGJl
MTEzYTI3YzgyNGI3Y2RlMTYzMGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNRnVuY3Rpb25QYXJzZXIuaApAQCAtMzUsMTkgKzM1LDE5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogbmFtZXNwYWNlIFdBU00gewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0PgotY2xhc3Mg
V0FTTUZ1bmN0aW9uUGFyc2VyIDogcHVibGljIFdBU01QYXJzZXIgeworY2xhc3MgRnVuY3Rpb25Q
YXJzZXIgOiBwdWJsaWMgUGFyc2VyIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIENv
bnRleHQ6OkV4cHJlc3Npb25UeXBlIEV4cHJlc3Npb25UeXBlOwogCi0gICAgV0FTTUZ1bmN0aW9u
UGFyc2VyKENvbnRleHQmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZUJ1ZmZlciwgY29u
c3QgV0FTTUZ1bmN0aW9uSW5mb3JtYXRpb24mKTsKKyAgICBGdW5jdGlvblBhcnNlcihDb250ZXh0
JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzb3VyY2VCdWZmZXIsIGNvbnN0IEZ1bmN0aW9uSW5m
b3JtYXRpb24mKTsKIAogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlKCk7CiAKIHBy
aXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworICAgIHN0YXRp
YyBjb25zdCBib29sIHZlcmJvc2UgPSB0cnVlOwogCiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRV
Uk4gcGFyc2VCbG9jaygpOwotICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRXhwcmVz
c2lvbihXQVNNT3BUeXBlKTsKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUV4cHJl
c3Npb24oT3BUeXBlKTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiB1bmlmeUNvbnRyb2wo
VmVjdG9yPEV4cHJlc3Npb25UeXBlPiYsIHVuc2lnbmVkIGxldmVsKTsKIAogICAgIE9wdGlvbmFs
PFZlY3RvcjxFeHByZXNzaW9uVHlwZT4+JiBzdGFja0ZvckNvbnRyb2xMZXZlbCh1bnNpZ25lZCBs
ZXZlbCk7CkBAIC01NywxNCArNTcsMTUgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIENvbnRleHQ+Ci1XQVNNRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OldBU01GdW5jdGlvblBh
cnNlcihDb250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZUJ1ZmZl
ciwgY29uc3QgV0FTTUZ1bmN0aW9uSW5mb3JtYXRpb24mIGluZm8pCi0gICAgOiBXQVNNUGFyc2Vy
KHNvdXJjZUJ1ZmZlciwgaW5mby5zdGFydCwgaW5mby5lbmQpCitGdW5jdGlvblBhcnNlcjxDb250
ZXh0Pjo6RnVuY3Rpb25QYXJzZXIoQ29udGV4dCYgY29udGV4dCwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBzb3VyY2VCdWZmZXIsIGNvbnN0IEZ1bmN0aW9uSW5mb3JtYXRpb24mIGluZm8pCisgICAg
OiBQYXJzZXIoc291cmNlQnVmZmVyLCBpbmZvLnN0YXJ0LCBpbmZvLmVuZCkKICAgICAsIG1fY29u
dGV4dChjb250ZXh0KQogeworICAgIG1fY29udGV4dC5hZGRBcmd1bWVudHMoaW5mby5zaWduYXR1
cmUtPmFyZ3VtZW50cyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+Ci1ib29sIFdB
U01GdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2UoKQorYm9vbCBGdW5jdGlvblBhcnNlcjxD
b250ZXh0Pjo6cGFyc2UoKQogewogICAgIHVpbnQzMl90IGxvY2FsQ291bnQ7CiAgICAgaWYgKCFw
YXJzZVZhclVJbnQzMihsb2NhbENvdW50KSkKQEAgLTc1LDcgKzc2LDcgQEAgYm9vbCBXQVNNRnVu
Y3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlKCkKICAgICAgICAgaWYgKCFwYXJzZVVJbnQzMihu
dW1iZXJPZkxvY2Fsc1dpdGhUeXBlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICBXQVNNVmFsdWVUeXBlIHR5cGVPZkxvY2FsOworICAgICAgICBUeXBlIHR5cGVPZkxvY2Fs
OwogICAgICAgICBpZiAoIXBhcnNlVmFsdWVUeXBlKHR5cGVPZkxvY2FsKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtODYsMjAgKzg3LDIwIEBAIGJvb2wgV0FTTUZ1bmN0aW9uUGFy
c2VyPENvbnRleHQ+OjpwYXJzZSgpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+Ci1i
b29sIFdBU01GdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VCbG9jaygpCitib29sIEZ1bmN0
aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUJsb2NrKCkKIHsKICAgICB3aGlsZSAodHJ1ZSkgewog
ICAgICAgICB1aW50OF90IG9wOwogICAgICAgICBpZiAoIXBhcnNlVUludDcob3ApKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICghcGFyc2VFeHByZXNzaW9uKHN0YXRp
Y19jYXN0PFdBU01PcFR5cGU+KG9wKSkpIHsKKyAgICAgICAgaWYgKCFwYXJzZUV4cHJlc3Npb24o
c3RhdGljX2Nhc3Q8T3BUeXBlPihvcCkpKSB7CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAg
ICAgICAgICAgICAgICBkYXRhTG9nTG4oImZhaWxlZCB0byBwcm9jZXNzIG9wOiIsIG9wKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChvcCA9PSBX
QVNNT3BUeXBlOjpFbmQpCisgICAgICAgIGlmIChvcCA9PSBPcFR5cGU6OkVuZCkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTA3LDcgKzEwOCw3IEBAIGJvb2wgV0FTTUZ1bmN0aW9u
UGFyc2VyPENvbnRleHQ+OjpwYXJzZUJsb2NrKCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29u
dGV4dD4KLWJvb2wgV0FTTUZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24o
V0FTTU9wVHlwZSBvcCkKK2Jvb2wgRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVz
c2lvbihPcFR5cGUgb3ApCiB7CiAgICAgc3dpdGNoIChvcCkgewogI2RlZmluZSBDUkVBVEVfQ0FT
RShuYW1lLCBpZCwgYjNvcCkgY2FzZSBuYW1lOgpAQCAtMTE1LDcgKzExNiw3IEBAIGJvb2wgV0FT
TUZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oV0FTTU9wVHlwZSBvcCkK
ICAgICAgICAgRXhwcmVzc2lvblR5cGUgbGVmdCA9IG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0
KCk7CiAgICAgICAgIEV4cHJlc3Npb25UeXBlIHJpZ2h0ID0gbV9leHByZXNzaW9uU3RhY2sudGFr
ZUxhc3QoKTsKICAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0OwotICAgICAgICBpZiAoIW1f
Y29udGV4dC5iaW5hcnlPcChzdGF0aWNfY2FzdDxXQVNNQmluYXJ5T3BUeXBlPihvcCksIGxlZnQs
IHJpZ2h0LCByZXN1bHQpKQorICAgICAgICBpZiAoIW1fY29udGV4dC5iaW5hcnlPcChzdGF0aWNf
Y2FzdDxCaW5hcnlPcFR5cGU+KG9wKSwgbGVmdCwgcmlnaHQsIHJlc3VsdCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFwcGVuZChyZXN1bHQp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyNCwyOCArMTI1LDQwIEBAIGJvb2wgV0FTTUZ1
bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24oV0FTTU9wVHlwZSBvcCkKICAg
ICBGT1JfRUFDSF9XQVNNX1VOQVJZX09QKENSRUFURV9DQVNFKSB7CiAgICAgICAgIEV4cHJlc3Np
b25UeXBlIGFyZyA9IG1fZXhwcmVzc2lvblN0YWNrLnRha2VMYXN0KCk7CiAgICAgICAgIEV4cHJl
c3Npb25UeXBlIHJlc3VsdDsKLSAgICAgICAgaWYgKCFtX2NvbnRleHQudW5hcnlPcChzdGF0aWNf
Y2FzdDxXQVNNVW5hcnlPcFR5cGU+KG9wKSwgYXJnLCByZXN1bHQpKQorICAgICAgICBpZiAoIW1f
Y29udGV4dC51bmFyeU9wKHN0YXRpY19jYXN0PFVuYXJ5T3BUeXBlPihvcCksIGFyZywgcmVzdWx0
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbV9leHByZXNzaW9uU3RhY2su
YXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICN1bmRlZiBDUkVB
VEVfQ0FTRQogCi0gICAgY2FzZSBXQVNNT3BUeXBlOjpJMzJDb25zdDogeworICAgIGNhc2UgT3BU
eXBlOjpJMzJDb25zdDogewogICAgICAgICB1aW50MzJfdCBjb25zdGFudDsKICAgICAgICAgaWYg
KCFwYXJzZVZhclVJbnQzMihjb25zdGFudCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFwcGVuZChtX2NvbnRleHQuYWRkQ29uc3RhbnQoV0FT
TVZhbHVlVHlwZTo6STMyLCBjb25zdGFudCkpOworICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5h
cHBlbmQobV9jb250ZXh0LmFkZENvbnN0YW50KEludDMyLCBjb25zdGFudCkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBjYXNlIFdBU01PcFR5cGU6OkJsb2NrOiB7CisgICAg
Y2FzZSBPcFR5cGU6OkdldExvY2FsOiB7CisgICAgICAgIHVpbnQzMl90IGluZGV4OworICAgICAg
ICBpZiAoIXBhcnNlVmFyVUludDMyKGluZGV4KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0OworICAgICAgICBpZiAoIW1fY29udGV4dC5n
ZXRMb2NhbChpbmRleCwgcmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICBtX2V4cHJlc3Npb25TdGFjay5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgY2FzZSBPcFR5cGU6OkJsb2NrOiB7CiAgICAgICAgIGlmICghbV9j
b250ZXh0LmFkZEJsb2NrKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJl
dHVybiBwYXJzZUJsb2NrKCk7CiAgICAgfQogCi0gICAgY2FzZSBXQVNNT3BUeXBlOjpSZXR1cm46
IHsKKyAgICBjYXNlIE9wVHlwZTo6UmV0dXJuOiB7CiAgICAgICAgIHVpbnQ4X3QgcmV0dXJuQ291
bnQ7CiAgICAgICAgIGlmICghcGFyc2VWYXJVSW50MShyZXR1cm5Db3VudCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xNTYsNyArMTY5LDcgQEAgYm9vbCBXQVNNRnVuY3Rpb25QYXJz
ZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbihXQVNNT3BUeXBlIG9wKQogICAgICAgICByZXR1
cm4gbV9jb250ZXh0LmFkZFJldHVybihyZXR1cm5WYWx1ZXMpOwogICAgIH0KIAotICAgIGNhc2Ug
V0FTTU9wVHlwZTo6RW5kOgorICAgIGNhc2UgT3BUeXBlOjpFbmQ6CiAgICAgICAgIHJldHVybiBt
X2NvbnRleHQuZW5kQmxvY2sobV9leHByZXNzaW9uU3RhY2spOwogCiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcAppbmRleCBmYjJjMzEy
ODJkMjRkMGM0Y2E3YWFlYTRjYzZlZWMyYTBkMmJkMGVhLi5lN2E1YTRlNDYyODE1YmY0MTBiMDdj
ZGY1MDZjZDVlODU5YzMwZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNTW9kdWxlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
QVNNTW9kdWxlUGFyc2VyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV0FTTSB7CiAK
IHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIAotYm9vbCBXQVNNTW9kdWxlUGFy
c2VyOjpwYXJzZSgpCitib29sIE1vZHVsZVBhcnNlcjo6cGFyc2UoKQogewogICAgIGlmIChtX3Nv
dXJjZUxlbmd0aCA8IDgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU5LDcgKzU5LDcgQEAg
Ym9vbCBXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZSgpCiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAg
IGRhdGFMb2dMbigiUGFzc2VkIHByb2Nlc3NpbmcgaGVhZGVyLiIpOwogCi0gICAgV0FTTVNlY3Rp
b25zOjpTZWN0aW9uIHByZXZpb3VzU2VjdGlvbiA9IFdBU01TZWN0aW9uczo6U2VjdGlvbjo6VW5r
bm93bjsKKyAgICBTZWN0aW9uczo6U2VjdGlvbiBwcmV2aW91c1NlY3Rpb24gPSBTZWN0aW9uczo6
VW5rbm93bjsKICAgICB3aGlsZSAobV9vZmZzZXQgPCBtX3NvdXJjZUxlbmd0aCkgewogICAgICAg
ICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2dMbigiU3RhcnRpbmcgdG8gcGFyc2Ug
bmV4dCBzZWN0aW9uIGF0IG9mZnNldDogIiwgbV9vZmZzZXQpOwpAQCAtNzEsOCArNzEsOCBAQCBi
b29sIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgaWYgKG1fb2Zmc2V0ICsgc2Vj
dGlvbk5hbWVMZW5ndGggKyBtYXhMRUJCeXRlTGVuZ3RoID49IG1fc291cmNlTGVuZ3RoKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFdBU01TZWN0aW9uczo6U2VjdGlvbiBz
ZWN0aW9uID0gV0FTTVNlY3Rpb25zOjpsb29rdXAobV9zb3VyY2UuZGF0YSgpICsgbV9vZmZzZXQs
IHNlY3Rpb25OYW1lTGVuZ3RoKTsKLSAgICAgICAgaWYgKCFXQVNNU2VjdGlvbnM6OnZhbGlkYXRl
T3JkZXIocHJldmlvdXNTZWN0aW9uLCBzZWN0aW9uKSkKKyAgICAgICAgU2VjdGlvbnM6OlNlY3Rp
b24gc2VjdGlvbiA9IFNlY3Rpb25zOjpsb29rdXAobV9zb3VyY2UuZGF0YSgpICsgbV9vZmZzZXQs
IHNlY3Rpb25OYW1lTGVuZ3RoKTsKKyAgICAgICAgaWYgKCFTZWN0aW9uczo6dmFsaWRhdGVPcmRl
cihwcmV2aW91c1NlY3Rpb24sIHNlY3Rpb24pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBtX29mZnNldCArPSBzZWN0aW9uTmFtZUxlbmd0aDsKIApAQCAtODMsMTAgKzgzLDEw
IEBAIGJvb2wgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICB1bnNpZ25lZCBlbmQg
PSBtX29mZnNldCArIHNlY3Rpb25MZW5ndGg7CiAKICAgICAgICAgc3dpdGNoIChzZWN0aW9uKSB7
Ci0gICAgICAgIGNhc2UgV0FTTVNlY3Rpb25zOjpTZWN0aW9uOjpFbmQ6CisgICAgICAgIGNhc2Ug
U2VjdGlvbnM6OkVuZDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGNhc2Ug
V0FTTVNlY3Rpb25zOjpTZWN0aW9uOjpGdW5jdGlvblR5cGVzOiB7CisgICAgICAgIGNhc2UgU2Vj
dGlvbnM6OkZ1bmN0aW9uVHlwZXM6IHsKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAg
ICAgICAgICAgIGRhdGFMb2dMbigiUGFyc2luZyB0eXBlcy4iKTsKICAgICAgICAgICAgIGlmICgh
cGFyc2VGdW5jdGlvblR5cGVzKCkpCkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgV0FTTU1vZHVsZVBh
cnNlcjo6cGFyc2UoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBj
YXNlIFdBU01TZWN0aW9uczo6U2VjdGlvbjo6U2lnbmF0dXJlczogeworICAgICAgICBjYXNlIFNl
Y3Rpb25zOjpTaWduYXR1cmVzOiB7CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAg
ICAgICAgICBkYXRhTG9nTG4oIlBhcnNpbmcgZnVuY3Rpb24gc2lnbmF0dXJlcy4iKTsKICAgICAg
ICAgICAgIGlmICghcGFyc2VGdW5jdGlvblNpZ25hdHVyZXMoKSkKQEAgLTEwMiw3ICsxMDIsNyBA
QCBib29sIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKLSAgICAgICAgY2FzZSBXQVNNU2VjdGlvbnM6OlNlY3Rpb246OkRlZmluaXRpb25z
OiB7CisgICAgICAgIGNhc2UgU2VjdGlvbnM6OkRlZmluaXRpb25zOiB7CiAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlBhcnNpbmcgZnVuY3Rpb24g
ZGVmaW5pdGlvbnMuIik7CiAgICAgICAgICAgICBpZiAoIXBhcnNlRnVuY3Rpb25EZWZpbml0aW9u
cygpKQpAQCAtMTEwLDcgKzExMCw3IEBAIGJvb2wgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2UoKQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIFdBU01TZWN0aW9u
czo6U2VjdGlvbjo6VW5rbm93bjogeworICAgICAgICBjYXNlIFNlY3Rpb25zOjpVbmtub3duOiB7
CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlVu
a25vd24gc2VjdGlvbiwgc2tpcHBpbmcuIik7CiAgICAgICAgICAgICBtX29mZnNldCArPSBzZWN0
aW9uTGVuZ3RoOwpAQCAtMTMxLDcgKzEzMSw3IEBAIGJvb2wgV0FTTU1vZHVsZVBhcnNlcjo6cGFy
c2UoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNl
RnVuY3Rpb25UeXBlcygpCitib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvblR5cGVzKCkK
IHsKICAgICB1aW50MzJfdCBjb3VudDsKICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGNvdW50KSkK
QEAgLTE0MCw2ICsxNDAsOCBAQCBib29sIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25U
eXBlcygpCiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2dMbigiY291bnQ6ICIsIGNv
dW50KTsKIAorICAgIG1fc2lnbmF0dXJlcy5yZXNpemUoY291bnQpOworCiAgICAgZm9yICh1aW50
MzJfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgdWludDhfdCB0eXBlOwogICAg
ICAgICBpZiAoIXBhcnNlVUludDcodHlwZSkpCkBAIC0xNTcsMzUgKzE1OSwzNiBAQCBib29sIFdB
U01Nb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25UeXBlcygpCiAgICAgICAgIGlmICh2ZXJib3Nl
KQogICAgICAgICAgICAgZGF0YUxvZ0xuKCJhcmd1bWVudENvdW50OiAiLCBhcmd1bWVudENvdW50
KTsKIAotICAgICAgICBWZWN0b3I8V0FTTVZhbHVlVHlwZT4gYXJndW1lbnRUeXBlczsKKyAgICAg
ICAgVmVjdG9yPFR5cGU+IGFyZ3VtZW50VHlwZXM7CisgICAgICAgIGFyZ3VtZW50VHlwZXMucmVz
aXplKGFyZ3VtZW50Q291bnQpOworCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBh
cmd1bWVudENvdW50OyArK2kpIHsKLSAgICAgICAgICAgIGlmICghcGFyc2VVSW50Nyh0eXBlKSB8
fCB0eXBlID49IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFdBU01WYWx1ZVR5cGU6Ok51bWJlck9mVHlw
ZXMpKQorICAgICAgICAgICAgaWYgKCFwYXJzZVVJbnQ3KHR5cGUpIHx8IHR5cGUgPj0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oVHlwZTo6TGFzdFZhbHVlVHlwZSkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgYXJndW1lbnRUeXBlcy5hcHBlbmQoc3RhdGljX2Nhc3Q8
V0FTTVZhbHVlVHlwZT4odHlwZSkpOworICAgICAgICAgICAgYXJndW1lbnRUeXBlcy5hcHBlbmQo
c3RhdGljX2Nhc3Q8VHlwZT4odHlwZSkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFwYXJz
ZVZhclVJbnQxKHR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBXQVNN
RnVuY3Rpb25SZXR1cm5UeXBlIHJldHVyblR5cGU7CisgICAgICAgIFR5cGUgcmV0dXJuVHlwZTsK
IAogICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgIGRhdGFMb2dMbih0eXBlKTsKIAog
ICAgICAgICBpZiAodHlwZSkgewotICAgICAgICAgICAgV0FTTVZhbHVlVHlwZSB2YWx1ZTsKKyAg
ICAgICAgICAgIFR5cGUgdmFsdWU7CiAgICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWVUeXBlKHZh
bHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm5U
eXBlID0gc3RhdGljX2Nhc3Q8V0FTTUZ1bmN0aW9uUmV0dXJuVHlwZT4odmFsdWUpOworICAgICAg
ICAgICAgcmV0dXJuVHlwZSA9IHN0YXRpY19jYXN0PFR5cGU+KHZhbHVlKTsKICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICByZXR1cm5UeXBlID0gV0FTTUZ1bmN0aW9uUmV0dXJuVHlwZTo6Vm9p
ZDsKKyAgICAgICAgICAgIHJldHVyblR5cGUgPSBUeXBlOjpWb2lkOwogCi0gICAgICAgIC8vIFRP
RE86IEFjdHVhbGx5IGRvIHNvbWV0aGluZyB3aXRoIHRoaXMgZGF0YS4uLgotICAgICAgICBVTlVT
RURfUEFSQU0ocmV0dXJuVHlwZSk7CisgICAgICAgIG1fc2lnbmF0dXJlc1tpXSA9IHsgcmV0dXJu
VHlwZSwgV1RGTW92ZShhcmd1bWVudFR5cGVzKSB9OwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uU2lnbmF0dXJlcygpCiti
b29sIE1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvblNpZ25hdHVyZXMoKQogewogICAgIHVpbnQz
Ml90IGNvdW50OwogICAgIGlmICghcGFyc2VWYXJVSW50MzIoY291bnQpKQpAQCAtMTk3LDEyICsy
MDAsMTcgQEAgYm9vbCBXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uU2lnbmF0dXJlcygp
CiAgICAgICAgIHVpbnQzMl90IHR5cGVOdW1iZXI7CiAgICAgICAgIGlmICghcGFyc2VWYXJVSW50
MzIodHlwZU51bWJlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYg
KHR5cGVOdW1iZXIgPj0gbV9zaWduYXR1cmVzLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICBtX2Z1bmN0aW9uc1tpXS5zaWduYXR1cmUgPSAmbV9zaWduYXR1cmVz
W3R5cGVOdW1iZXJdOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdBU01N
b2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25EZWZpbml0aW9ucygpCitib29sIE1vZHVsZVBhcnNl
cjo6cGFyc2VGdW5jdGlvbkRlZmluaXRpb25zKCkKIHsKICAgICB1aW50MzJfdCBjb3VudDsKICAg
ICBpZiAoIXBhcnNlVmFyVUludDMyKGNvdW50KSkKQEAgLTIxNiw3ICsyMjQsNyBAQCBib29sIFdB
U01Nb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25EZWZpbml0aW9ucygpCiAgICAgICAgIGlmICgh
cGFyc2VWYXJVSW50MzIoZnVuY3Rpb25TaXplKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICBXQVNNRnVuY3Rpb25JbmZvcm1hdGlvbiYgaW5mbyA9IG1fZnVuY3Rpb25zW2ld
OworICAgICAgICBGdW5jdGlvbkluZm9ybWF0aW9uJiBpbmZvID0gbV9mdW5jdGlvbnNbaV07CiAg
ICAgICAgIGluZm8uc3RhcnQgPSBtX29mZnNldDsKICAgICAgICAgaW5mby5lbmQgPSBtX29mZnNl
dCArIGZ1bmN0aW9uU2l6ZTsKICAgICAgICAgbV9vZmZzZXQgPSBpbmZvLmVuZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaAppbmRleCBjMTY1MDk5YmYw
YWFjY2Q2NGU5MTZkMDEwZGM1OGUyZTIyNjVmZjYzLi5jMzdhZWE5NTBjOTllNGQ2MGIzZmM5ZDE4
ZWI1ZjM2NmU3Y2VjYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
QVNNTW9kdWxlUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1v
ZHVsZVBhcnNlci5oCkBAIC0zNSwxOSArMzUsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVz
cGFjZSBXQVNNIHsKIAotY2xhc3MgV0FTTU1vZHVsZVBhcnNlciA6IHB1YmxpYyBXQVNNUGFyc2Vy
IHsKK2NsYXNzIE1vZHVsZVBhcnNlciA6IHB1YmxpYyBQYXJzZXIgewogcHVibGljOgogCiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIG1hZ2ljTnVtYmVyID0gMHhjOwogCi0gICAgV0FTTU1vZHVs
ZVBhcnNlcihjb25zdCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZUJ1ZmZlcikKLSAgICAgICAgOiBX
QVNNUGFyc2VyKHNvdXJjZUJ1ZmZlciwgMCwgc291cmNlQnVmZmVyLnNpemUoKSkKKyAgICBNb2R1
bGVQYXJzZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzb3VyY2VCdWZmZXIpCisgICAgICAgIDog
UGFyc2VyKHNvdXJjZUJ1ZmZlciwgMCwgc291cmNlQnVmZmVyLnNpemUoKSkKICAgICB7CiAgICAg
fQogCiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2UoKTsKIAotICAgIGNvbnN0IFZl
Y3RvcjxXQVNNRnVuY3Rpb25JbmZvcm1hdGlvbj4mIGZ1bmN0aW9uSW5mb3JtYXRpb24oKSB7IHJl
dHVybiBtX2Z1bmN0aW9uczsgfQorICAgIGNvbnN0IFZlY3RvcjxGdW5jdGlvbkluZm9ybWF0aW9u
PiYgZnVuY3Rpb25JbmZvcm1hdGlvbigpIHsgcmV0dXJuIG1fZnVuY3Rpb25zOyB9CiAKIHByaXZh
dGU6CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5jdGlvblR5cGVzKCk7CkBA
IC01NSw5ICs1NSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBh
cnNlRnVuY3Rpb25EZWZpbml0aW9ucygpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBh
cnNlRnVuY3Rpb25EZWZpbml0aW9uKHVpbnQzMl90IG51bWJlcik7CiAgICAgYm9vbCBXQVJOX1VO
VVNFRF9SRVRVUk4gcGFyc2VCbG9jaygpOwotICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBh
cnNlRXhwcmVzc2lvbihXQVNNT3BUeXBlKTsKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBw
YXJzZUV4cHJlc3Npb24oT3BUeXBlKTsKIAotICAgIFZlY3RvcjxXQVNNRnVuY3Rpb25JbmZvcm1h
dGlvbj4gbV9mdW5jdGlvbnM7CisgICAgVmVjdG9yPEZ1bmN0aW9uSW5mb3JtYXRpb24+IG1fZnVu
Y3Rpb25zOworICAgIFZlY3RvcjxTaWduYXR1cmU+IG1fc2lnbmF0dXJlczsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdBU00KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01PcHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01PcHMuaAppbmRleCA1ZmQ2
YmJmNWRlZjUzNzBjMzA0ZTUxMTQ4MzAxMmM0NTU5NmEzMmQzLi5jMWRiNmU5Nzg0MTE3ZDA4YjE1
NGRjY2E4Y2FhNGI1MWJmYTE0OTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XQVNNT3BzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU9wcy5o
CkBAIC0zMiw3ICszMiw4IEBAIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIFdBU00gewogCiAj
ZGVmaW5lIEZPUl9FQUNIX1dBU01fU1BFQ0lBTF9PUChtYWNybykgXAotICAgIG1hY3JvKEkzMkNv
bnN0LCAweDEwLCBOQSkKKyAgICBtYWNybyhJMzJDb25zdCwgMHgxMCwgTkEpIFwKKyAgICBtYWNy
byhHZXRMb2NhbCwgMHgxNCwgTkEpCiAKICNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9DT05UUk9MX0ZM
T1dfT1AobWFjcm8pIFwKICAgICBtYWNybyhCbG9jaywgMHgwMSwgTkEpIFwKQEAgLTEwNiwxNSAr
MTA3LDE1IEBAIG5hbWVzcGFjZSBXQVNNIHsKIAogI2RlZmluZSBDUkVBVEVfRU5VTV9WQUxVRShu
YW1lLCBpZCwgYjNvcCkgbmFtZSA9IGlkLAogCi1lbnVtIFdBU01PcFR5cGUgOiB1aW50OF90IHsK
K2VudW0gT3BUeXBlIDogdWludDhfdCB7CiAgICAgRk9SX0VBQ0hfV0FTTV9PUChDUkVBVEVfRU5V
TV9WQUxVRSkKIH07CiAKLWVudW0gY2xhc3MgV0FTTUJpbmFyeU9wVHlwZSA6IHVpbnQ4X3Qgewor
ZW51bSBjbGFzcyBCaW5hcnlPcFR5cGUgOiB1aW50OF90IHsKICAgICBGT1JfRUFDSF9XQVNNX0JJ
TkFSWV9PUChDUkVBVEVfRU5VTV9WQUxVRSkKIH07CiAKLWVudW0gY2xhc3MgV0FTTVVuYXJ5T3BU
eXBlIDogdWludDhfdCB7CitlbnVtIGNsYXNzIFVuYXJ5T3BUeXBlIDogdWludDhfdCB7CiAgICAg
Rk9SX0VBQ0hfV0FTTV9VTkFSWV9PUChDUkVBVEVfRU5VTV9WQUxVRSkKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01QYXJzZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01QYXJzZXIuaAppbmRleCAxYWY4MTQzM2FjNjU5MTExMDdkMWQ0
OGQyN2M0OTY1YmE4MjJjOTQyLi5kZjllOGIzNTM4MWFiYmU3ZTAwNTdjODA5OTYwOTA2MDNmMDA0
Y2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGFyc2VyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBhcnNlci5oCkBAIC0zOCw5ICsz
OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgV0FTTSB7CiAKLWNsYXNzIFdBU01Q
YXJzZXIgeworY2xhc3MgUGFyc2VyIHsKIHByb3RlY3RlZDoKLSAgICBXQVNNUGFyc2VyKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYsIHNpemVfdCBzdGFydCwgc2l6ZV90IGVuZCk7CisgICAgUGFyc2Vy
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIHNpemVfdCBzdGFydCwgc2l6ZV90IGVuZCk7CiAKICAg
ICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBjb25zdW1lQ2hhcmFjdGVyKGNoYXIpOwogICAgIGJv
b2wgV0FSTl9VTlVTRURfUkVUVVJOIGNvbnN1bWVTdHJpbmcoY29uc3QgY2hhciopOwpAQCAtNTEs
MTQgKzUxLDE0IEBAIHByb3RlY3RlZDoKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJz
ZVZhclVJbnQzMih1aW50MzJfdCYgcmVzdWx0KSB7IHJldHVybiBkZWNvZGVVSW50MzIobV9zb3Vy
Y2UuZGF0YSgpLCBtX3NvdXJjZUxlbmd0aCwgbV9vZmZzZXQsIHJlc3VsdCk7IH0KIAogCi0gICAg
Ym9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VWYWx1ZVR5cGUoV0FTTVZhbHVlVHlwZSYgcmVz
dWx0KTsKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVZhbHVlVHlwZShUeXBlJiBy
ZXN1bHQpOwogCiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtX3NvdXJjZTsKICAgICBzaXpl
X3QgbV9zb3VyY2VMZW5ndGg7CiAgICAgc2l6ZV90IG1fb2Zmc2V0OwogfTsKIAotQUxXQVlTX0lO
TElORSBXQVNNUGFyc2VyOjpXQVNNUGFyc2VyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc291cmNl
QnVmZmVyLCBzaXplX3Qgc3RhcnQsIHNpemVfdCBlbmQpCitBTFdBWVNfSU5MSU5FIFBhcnNlcjo6
UGFyc2VyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc291cmNlQnVmZmVyLCBzaXplX3Qgc3RhcnQs
IHNpemVfdCBlbmQpCiAgICAgOiBtX3NvdXJjZShzb3VyY2VCdWZmZXIpCiAgICAgLCBtX3NvdXJj
ZUxlbmd0aChlbmQpCiAgICAgLCBtX29mZnNldChzdGFydCkKQEAgLTY3LDcgKzY3LDcgQEAgQUxX
QVlTX0lOTElORSBXQVNNUGFyc2VyOjpXQVNNUGFyc2VyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
c291cmNlQnVmZmVyLCBzaXplX3QKICAgICBBU1NFUlQoc3RhcnQgPCBlbmQpOwogfQogCi1BTFdB
WVNfSU5MSU5FIGJvb2wgV0FTTVBhcnNlcjo6Y29uc3VtZUNoYXJhY3RlcihjaGFyIGMpCitBTFdB
WVNfSU5MSU5FIGJvb2wgUGFyc2VyOjpjb25zdW1lQ2hhcmFjdGVyKGNoYXIgYykKIHsKICAgICBp
ZiAobV9vZmZzZXQgPj0gbV9zb3VyY2VMZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTc4LDcgKzc4LDcgQEAgQUxXQVlTX0lOTElORSBib29sIFdBU01QYXJzZXI6OmNvbnN1bWVDaGFy
YWN0ZXIoY2hhciBjKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotQUxXQVlTX0lOTElORSBib29s
IFdBU01QYXJzZXI6OmNvbnN1bWVTdHJpbmcoY29uc3QgY2hhciogc3RyKQorQUxXQVlTX0lOTElO
RSBib29sIFBhcnNlcjo6Y29uc3VtZVN0cmluZyhjb25zdCBjaGFyKiBzdHIpCiB7CiAgICAgdW5z
aWduZWQgc3RhcnQgPSBtX29mZnNldDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBzdHJbaV07
IGkrKykgewpAQCAtOTAsNyArOTAsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgV0FTTVBhcnNlcjo6
Y29uc3VtZVN0cmluZyhjb25zdCBjaGFyKiBzdHIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUFM
V0FZU19JTkxJTkUgYm9vbCBXQVNNUGFyc2VyOjpwYXJzZVVJbnQzMih1aW50MzJfdCYgcmVzdWx0
KQorQUxXQVlTX0lOTElORSBib29sIFBhcnNlcjo6cGFyc2VVSW50MzIodWludDMyX3QmIHJlc3Vs
dCkKIHsKICAgICBpZiAobV9vZmZzZXQgKyA0ID49IG1fc291cmNlTGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC05OSw3ICs5OSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBXQVNNUGFy
c2VyOjpwYXJzZVVJbnQzMih1aW50MzJfdCYgcmVzdWx0KQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1BTFdBWVNfSU5MSU5FIGJvb2wgV0FTTVBhcnNlcjo6cGFyc2VVSW50Nyh1aW50OF90JiByZXN1
bHQpCitBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyOjpwYXJzZVVJbnQ3KHVpbnQ4X3QmIHJlc3Vs
dCkKIHsKICAgICBpZiAobV9vZmZzZXQgPj0gbV9zb3VyY2VMZW5ndGgpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgV0FTTVBhcnNl
cjo6cGFyc2VVSW50Nyh1aW50OF90JiByZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdCA8IDB4ODA7
CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBXQVNNUGFyc2VyOjpwYXJzZVZhclVJbnQxKHVpbnQ4
X3QmIHJlc3VsdCkKK0FMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI6OnBhcnNlVmFyVUludDEodWlu
dDhfdCYgcmVzdWx0KQogewogICAgIHVpbnQzMl90IHRlbXA7CiAgICAgaWYgKCFwYXJzZVZhclVJ
bnQzMih0ZW1wKSkKQEAgLTExNiwxNCArMTE2LDE0IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBXQVNN
UGFyc2VyOjpwYXJzZVZhclVJbnQxKHVpbnQ4X3QmIHJlc3VsdCkKICAgICByZXR1cm4gdGVtcCA8
PSAxOwogfQogCi1BTFdBWVNfSU5MSU5FIGJvb2wgV0FTTVBhcnNlcjo6cGFyc2VWYWx1ZVR5cGUo
V0FTTVZhbHVlVHlwZSYgcmVzdWx0KQorQUxXQVlTX0lOTElORSBib29sIFBhcnNlcjo6cGFyc2VW
YWx1ZVR5cGUoVHlwZSYgcmVzdWx0KQogewogICAgIHVpbnQ4X3QgdmFsdWU7CiAgICAgaWYgKCFw
YXJzZVVJbnQ3KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICh2YWx1ZSA+
PSBzdGF0aWNfY2FzdDx1aW50OF90PihXQVNNVmFsdWVUeXBlOjpOdW1iZXJPZlR5cGVzKSkKKyAg
ICBpZiAodmFsdWUgPj0gc3RhdGljX2Nhc3Q8dWludDhfdD4oVHlwZTo6TGFzdFZhbHVlVHlwZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxXQVNNVmFs
dWVUeXBlPih2YWx1ZSk7CisgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHlwZT4odmFsdWUpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XQVNNUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5j
cHAKaW5kZXggYjQ2OTMxZjY2OWFhZTYwMWFlYzBiMWI3NDBmNWIxZDI4YjBmOWIyZi4uNDdjNGNm
NmVlNTY3N2QyYTFjYmIyNWFhYzFkNGFmNmZjMGU5NzI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01QbGFuLmNwcApAQCAtNDMsNyArNDMsNyBAQCBQbGFuOjpQbGFuKFZNJiB2bSwg
VmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSkKIHsKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0
YUxvZ0xuKCJTdGFydGluZyBwbGFuLiIpOwotICAgIFdBU01Nb2R1bGVQYXJzZXIgbW9kdWxlUGFy
c2VyKHNvdXJjZSk7CisgICAgTW9kdWxlUGFyc2VyIG1vZHVsZVBhcnNlcihzb3VyY2UpOwogICAg
IGlmICghbW9kdWxlUGFyc2VyLnBhcnNlKCkpIHsKICAgICAgICAgZGF0YUxvZ0xuKCJQYXJzaW5n
IG1vZHVsZSBmYWlsZWQuIik7CiAgICAgICAgIHJldHVybjsKQEAgLTUyLDcgKzUyLDcgQEAgUGxh
bjo6UGxhbihWTSYgdm0sIFZlY3Rvcjx1aW50OF90PiBzb3VyY2UpCiAgICAgaWYgKHZlcmJvc2Up
CiAgICAgICAgIGRhdGFMb2dMbigiUGFyc2VkIG1vZHVsZS4iKTsKIAotICAgIGZvciAoY29uc3Qg
V0FTTUZ1bmN0aW9uSW5mb3JtYXRpb24mIGluZm8gOiBtb2R1bGVQYXJzZXIuZnVuY3Rpb25JbmZv
cm1hdGlvbigpKSB7CisgICAgZm9yIChjb25zdCBGdW5jdGlvbkluZm9ybWF0aW9uJiBpbmZvIDog
bW9kdWxlUGFyc2VyLmZ1bmN0aW9uSW5mb3JtYXRpb24oKSkgewogICAgICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgICAgIGRhdGFMb2dMbigiUHJvY2Vzc2luZyBmdW5jaW9uIHN0YXJ0aW5nIGF0
OiAiLCBpbmZvLnN0YXJ0LCAiIGFuZCBlbmRpbmcgYXQ6ICIsIGluZm8uZW5kKTsKICAgICAgICAg
cmVzdWx0LmFwcGVuZChwYXJzZUFuZENvbXBpbGUodm0sIHNvdXJjZSwgaW5mbykpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVNlY3Rpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01TZWN0aW9ucy5jcHAKaW5kZXggZTYwMjVjMWQ1Y2Fk
M2VmN2VmM2ZlNDg5YjlkZmJkYTBiMjNmY2M2My4uZjE5NjdmYjJlNmM1YmI2NzQ1NzJlOGMyOWNj
OTk2ZWMxM2IxMzM2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TVNlY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlv
bnMuY3BwCkBAIC00MiwxNCArNDIsMTQgQEAgc3RydWN0IFNlY3Rpb25EYXRhIHsKIAogc3RhdGlj
IGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgc2Vj
dGlvbkRhdGFMZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oV0FTTVNlY3Rpb25zOjpTZWN0
aW9uOjpVbmtub3duKTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzZWN0aW9uRGF0YUxlbmd0aCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihTZWN0aW9uczo6VW5rbm93bik7CiBzdGF0aWMgY29uc3Qg
U2VjdGlvbkRhdGEgc2VjdGlvbkRhdGFbc2VjdGlvbkRhdGFMZW5ndGhdIHsKICNkZWZpbmUgQ1JF
QVRFX1NFQ1RJT05fREFUQShuYW1lLCBzdHIpIHsgc2l6ZW9mKHN0cikgLSAxLCBzdHIgfSwKICAg
ICBGT1JfRUFDSF9XQVNNX1NFQ1RJT05fVFlQRShDUkVBVEVfU0VDVElPTl9EQVRBKQogI3VuZGVm
IENSRUFURV9TRUNUSU9OX0RBVEEKIH07CiAKLVdBU01TZWN0aW9uczo6U2VjdGlvbiBXQVNNU2Vj
dGlvbnM6Omxvb2t1cChjb25zdCB1aW50OF90KiBuYW1lLCB1bnNpZ25lZCBsZW5ndGgpCitTZWN0
aW9uczo6U2VjdGlvbiBTZWN0aW9uczo6bG9va3VwKGNvbnN0IHVpbnQ4X3QqIG5hbWUsIHVuc2ln
bmVkIGxlbmd0aCkKIHsKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZ0xuKCJEZWNv
ZGluZyBzZWN0aW9uIHdpdGggbmFtZTogIiwgU3RyaW5nKG5hbWUsIGxlbmd0aCkpOwpAQCAtNTcs
OSArNTcsOSBAQCBXQVNNU2VjdGlvbnM6OlNlY3Rpb24gV0FTTVNlY3Rpb25zOjpsb29rdXAoY29u
c3QgdWludDhfdCogbmFtZSwgdW5zaWduZWQgbGVuZ3RoKQogICAgICAgICBpZiAoc2VjdGlvbkRh
dGFbaV0ubGVuZ3RoICE9IGxlbmd0aCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBp
ZiAoIW1lbWNtcChuYW1lLCBzZWN0aW9uRGF0YVtpXS5uYW1lLCBsZW5ndGgpKQotICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFdBU01TZWN0aW9uczo6U2VjdGlvbj4oaSk7CisgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2VjdGlvbnM6OlNlY3Rpb24+KGkpOwogICAgIH0KLSAg
ICByZXR1cm4gV0FTTVNlY3Rpb25zOjpTZWN0aW9uOjpVbmtub3duOworICAgIHJldHVybiBTZWN0
aW9uczo6VW5rbm93bjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV0FTTQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVNlY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuaAppbmRleCBjOTA2YTJmYTA3N2YxMTI3NDczZGU2Zjlj
YzgxMzZhMTE2MjhkMTZmLi4xZmM1NmVlYjg1NGRjY2U5Nzc1MzMyZTIyZmJlZDUyMjllZTc4ZDIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuaApAQCAtMzgsOCAr
MzgsOCBAQCBuYW1lc3BhY2UgV0FTTSB7CiAgICAgbWFjcm8oRGVmaW5pdGlvbnMsICJjb2RlIikg
XAogICAgIG1hY3JvKEVuZCwgImVuZCIpCiAKLXN0cnVjdCBXQVNNU2VjdGlvbnMgewotICAgIGVu
dW0gY2xhc3MgU2VjdGlvbiB7CitzdHJ1Y3QgU2VjdGlvbnMgeworICAgIGVudW0gU2VjdGlvbiB7
CiAjZGVmaW5lIENSRUFURV9TRUNUSU9OX0VOVU0obmFtZSwgc3RyKSBuYW1lLAogICAgICAgICBG
T1JfRUFDSF9XQVNNX1NFQ1RJT05fVFlQRShDUkVBVEVfU0VDVElPTl9FTlVNKQogI3VuZGVmIENS
RUFURV9TRUNUSU9OX0VOVU0KQEAgLTUwLDcgKzUwLDcgQEAgc3RydWN0IFdBU01TZWN0aW9ucyB7
CiAgICAgewogICAgICAgICAvLyBUaGlzIGFsbG93cyB1bmtub3duIHNlY3Rpb25zIGFmdGVyIEVu
ZCwgd2hpY2ggSSBkb3VidCB3aWxsIGV2ZXIgYmUgc3VwcG9ydGVkIGJ1dAogICAgICAgICAvLyB0
aGVyZSBpcyBubyByZWFzb24gdG8gcG90ZW50aWFsbHkgYnJlYWsgYmFja3dhcmRzIGNvbXBhdGFi
aWxpdHkuCi0gICAgICAgIGlmIChwcmV2aW91cyA9PSBTZWN0aW9uOjpVbmtub3duKQorICAgICAg
ICBpZiAocHJldmlvdXMgPT0gVW5rbm93bikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICByZXR1cm4gcHJldmlvdXMgPCBuZXh0OwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287594</attachid>
            <date>2016-08-31 21:07:03 -0700</date>
            <delta_ts>2016-09-01 14:35:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161471-20160831210449.patch</filename>
            <type>text/plain</type>
            <size>58811</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1Mjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MjY4MWE4MGM2MjJmMTEzZWRiMzEwYjNjYTJmY2VhM2ZkNWUwMTQwLi45MDI4ZWVmNDZkYmMyYmVh
NzQ5MTMxZGNkMTFkNmQ4MjhjMzUxNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDUgQEAKKzIwMTYtMDgtMzEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgV0FTTSBmdW5jdGlvbnMgc2hvdWxkIGJlIGFibGUgdG8gdXNlIGFy
Z3VtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYxNDcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBkb2VzIGEgY291cGxlIG9mIGNoYW5nZXM6CisKKyAgICAgICAgMSkgUmVtb3Zl
cyB0aGUgcmVkdW5kYW5jeSBvZiBhbGwgdGhlIFdBU00gY2xhc3NlcyBwcmVmaXhpbmcgdGhlaXIg
bmFtZXMgd2l0aCBXQVNNLiBUaGF0J3Mgd2hhdCB0aGUgV0FTTSBuYW1lc3BhY2UgaXMgZm9yLgor
CisgICAgICAgIDIpIEFkZHMgYSBuZXcgQ2FsbGluZyBDb252ZW50aW9uIGNsYXNzIGZvciBCMy4g
VGhpcyBjbGFzcyBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSB0byBzcGVjaWZ5IHRoZSBjYWxsaW5n
IGNvbnZlbnRpb24gb2YgYSBmdW5jdGlvbi4gSW4gcGFydGljdWxhciBpdCBrbm93cyB3aGljaCBh
cmd1bWVudHMgYXJlIGluIHJlZ2lzdGVycyBhbmQgd2hpY2ggb25lcyBzaG91bGQgYmUgb24gdGhl
IHN0YWNrLiBGb3Igbm93LCBub3RoaW5nIHVzZXMgdGhlIGFyZ3VtZW50IHJlZ2lzdGVycywgaW4g
dGhlIGZ1dHVyZSB3ZSB3aWxsIHVzZSB0aGVzZSBmb3IgV0FTTSBhbmQvb3IgSlMuIEFkZGl0b25h
bGx5LCBpdCBrbm93cyB0aGUgY2FsbGVlIHNhdmUgcmVnaXN0ZXJzIGZvciBhbnkgZ2l2ZW4gZnVu
Y3Rpb24uIFRoZSBtYWluIGFkdmFudGFnZSBvZiB0aGlzIGNsYXNzIGlzIHRoYXQgaXQgbWFrZXMg
aXQgZWFzeSB0byBpdGVyYXRlIG92ZXIgdGhlIGFyZ3VtZW50cyBvZiB5b3VyIGZ1bmN0aW9uIHdp
dGhvdXQgaGF2aW5nIHRvIHdvcnJ5IGFib3V0IHRoZSBkZXRhaWxzIG9mIHRoZSBjYWxsaW5nIGNv
bnZlbnRpb24geW91IGFyZSB1c2luZy4KKworICAgICAgICAzKSBNYWtlcyB0aGUgV0FTTSBjYWxs
aW5nIGNvbnZlbnRpb24gdGhlIHNhbWUgYXMgdGhlIEpTIG9uZS4gQ3VycmVudGx5LCB0aGUgQ29k
ZUJsb2NrLCBDb2RlT3JpZ2luLCBhbmQgQ2FsbGVlIGFyZSBhbGwgMC4gU2luY2UgdGhleSBoYXZl
IG5vIHZhbHVlLiBBZGRpdGlvbmFsbHksIHNpbmNlIHdlIGNhbGwgaW50byBXQVNNIGZyb20gQysr
IHRocm91Z2ggdm1FbnRyeVRvSmF2YVNjcmlwdCwgaWYgdGhlcmUgYXJlIG5vIGFyZ3VtZW50cyB0
byB0aGUgY2FsbGVlIHdlIGluc2VydCBhIG51bGwgcG9pbnRlciBhcyB0aGUgZmlyc3QgYXJndW1l
bnQuCisKKyAgICAgICAgNCkgU2luY2UgV0FTTSBleHBlY3RzIHRoZSBhcmd1bWVudHMgdG8gYmUg
bWFwcGVkIHRvIGZ1bmN0aW9uIGxvY2FscyB3ZSBtYXAgdGhlIGFyZ3VtZW50IHN0YWNrIHNsb3Rz
IHRvIHZhcmlhYmxlcyBpbW1lZGlhdGVseSBhZnRlciB0aGUgZnVuY3Rpb24gcHJvbG9ndWUuCisK
KyAgICAgICAgNSkgUmVwbGFjZXMgV0FTTVZhbHVlVHlwZSB3aXRoIHRoZSBCMyBUeXBlLiBUaGlz
IG1ha2VzIGNvbnZlcnRpbmcgVmVjdG9ycyBvZiBXQVNNOjpUeXBlcyBpbnRvIEIzOjpUeXBlcyBl
YXN5IHNpbmNlIHRoZXkgYXJlIGJhY2tlZCBieSB0aGUgc2FtZSB0eXBlLgorCisgICAgICAgICog
QjNDYWxsaW5nQ29udmVudGlvbnMuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5oLgorICAgICAgICAoSlNDOjpCMzo6anNjQ2FsbGlu
Z0NvbnZlbnRpb24pOgorICAgICAgICAqIEIzQ2FsbGluZ0NvbnZlbnRpb25zLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpCMzo6Q2FsbGluZ0NvbnZlbnRpb246OkNhbGxpbmdDb252ZW50aW9uKToK
KyAgICAgICAgKEpTQzo6QjM6OkNhbGxpbmdDb252ZW50aW9uOjppdGVyYXRlKToKKyAgICAgICAg
KEpTQzo6QjM6Om5leHRKU0NPZmZzZXQpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYjMvQjNQcm9jZWR1cmUuaDoKKyAgICAg
ICAgKiBiMy9CM1R5cGUuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5o
OgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6dm1FbnRy
eVRvV0FTTSk6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3MuaDoKKyAgICAgICAgKiB0ZXN0
V0FTTS5jcHA6CisgICAgICAgIChpbnZva2UpOgorICAgICAgICAoYm94KToKKyAgICAgICAgKHJ1
bldBU01UZXN0cyk6CisgICAgICAgICogd2FzbS9KU1dBU01Nb2R1bGUuaDoKKyAgICAgICAgKEpT
Qzo6SlNXQVNNTW9kdWxlOjpzaWduYXR1cmVzKToKKyAgICAgICAgKEpTQzo6SlNXQVNNTW9kdWxl
OjpmdW5jdGlvbkltcG9ydHMpOgorICAgICAgICAoSlNDOjpKU1dBU01Nb2R1bGU6OmZ1bmN0aW9u
SW1wb3J0U2lnbmF0dXJlcyk6CisgICAgICAgIChKU0M6OkpTV0FTTU1vZHVsZTo6Z2xvYmFsVmFy
aWFibGVUeXBlcyk6CisgICAgICAgIChKU0M6OkpTV0FTTU1vZHVsZTo6ZnVuY3Rpb25EZWNsYXJh
dGlvbnMpOgorICAgICAgICAoSlNDOjpKU1dBU01Nb2R1bGU6OmZ1bmN0aW9uUG9pbnRlclRhYmxl
cyk6CisgICAgICAgICogd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OldBU006OnRvQjNPcCk6CisgICAgICAgIChKU0M6OldBU006OkIzSVJHZW5lcmF0b3I6OmFkZExv
Y2FsKToKKyAgICAgICAgKEpTQzo6V0FTTTo6QjNJUkdlbmVyYXRvcjo6YWRkQXJndW1lbnRzKToK
KyAgICAgICAgKEpTQzo6V0FTTTo6QjNJUkdlbmVyYXRvcjo6Z2V0TG9jYWwpOgorICAgICAgICAo
SlNDOjpXQVNNOjpCM0lSR2VuZXJhdG9yOjp1bmFyeU9wKToKKyAgICAgICAgKEpTQzo6V0FTTTo6
QjNJUkdlbmVyYXRvcjo6YmluYXJ5T3ApOgorICAgICAgICAoSlNDOjpXQVNNOjpCM0lSR2VuZXJh
dG9yOjphZGRDb25zdGFudCk6CisgICAgICAgIChKU0M6OldBU006OnBhcnNlQW5kQ29tcGlsZSk6
CisgICAgICAgICogd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5oOgorICAgICAgICAqIHdhc20vV0FT
TUZvcm1hdC5oOgorICAgICAgICAqIHdhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAg
IChKU0M6OldBU006OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpGdW5jdGlvblBhcnNlcik6Cisg
ICAgICAgIChKU0M6OldBU006OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZSk6CisgICAg
ICAgIChKU0M6OldBU006OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUJsb2NrKToKKyAg
ICAgICAgKEpTQzo6V0FTTTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lv
bik6CisgICAgICAgIChKU0M6OldBU006OldBU01GdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6V0FT
TUZ1bmN0aW9uUGFyc2VyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V0FTTTo6V0FTTUZ1bmN0
aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OldBU006
OldBU01GdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VCbG9jayk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OldBU006OldBU01GdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNz
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKEpTQzo6V0FT
TTo6TW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uVHlwZXMpOgorICAgICAgICAoSlNDOjpXQVNN
OjpNb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25TaWduYXR1cmVzKToKKyAgICAgICAgKEpTQzo6
V0FTTTo6TW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbnMpOgorICAgICAgICAo
SlNDOjpXQVNNOjpXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OldBU006OldBU01Nb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25UeXBlcyk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OldBU006OldBU01Nb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25TaWdu
YXR1cmVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V0FTTTo6V0FTTU1vZHVsZVBhcnNlcjo6
cGFyc2VGdW5jdGlvbkRlZmluaXRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL1dBU01N
b2R1bGVQYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlUGFyc2VyOjpNb2R1bGVQ
YXJzZXIpOgorICAgICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQYXJzZXI6OmZ1bmN0aW9uSW5mb3Jt
YXRpb24pOgorICAgICAgICAoSlNDOjpXQVNNOjpXQVNNTW9kdWxlUGFyc2VyOjpXQVNNTW9kdWxl
UGFyc2VyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V0FTTTo6V0FTTU1vZHVsZVBhcnNlcjo6
ZnVuY3Rpb25JbmZvcm1hdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XQVNNT3BzLmg6
CisgICAgICAgICogd2FzbS9XQVNNUGFyc2VyLmg6CisgICAgICAgIChKU0M6OldBU006OlBhcnNl
cjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6V0FTTTo6UGFyc2VyOjpjb25zdW1lQ2hhcmFjdGVy
KToKKyAgICAgICAgKEpTQzo6V0FTTTo6UGFyc2VyOjpjb25zdW1lU3RyaW5nKToKKyAgICAgICAg
KEpTQzo6V0FTTTo6UGFyc2VyOjpwYXJzZVVJbnQzMik6CisgICAgICAgIChKU0M6OldBU006OlBh
cnNlcjo6cGFyc2VVSW50Nyk6CisgICAgICAgIChKU0M6OldBU006OlBhcnNlcjo6cGFyc2VWYXJV
SW50MSk6CisgICAgICAgIChKU0M6OldBU006OlBhcnNlcjo6cGFyc2VWYWx1ZVR5cGUpOgorICAg
ICAgICAoSlNDOjpXQVNNOjpXQVNNUGFyc2VyOjpXQVNNUGFyc2VyKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6V0FTTTo6V0FTTVBhcnNlcjo6Y29uc3VtZUNoYXJhY3Rlcik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OldBU006OldBU01QYXJzZXI6OmNvbnN1bWVTdHJpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpXQVNNOjpXQVNNUGFyc2VyOjpwYXJzZVVJbnQzMik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OldBU006OldBU01QYXJzZXI6OnBhcnNlVUludDcpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpXQVNNOjpXQVNNUGFyc2VyOjpwYXJzZVZhclVJbnQxKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6V0FTTTo6V0FTTVBhcnNlcjo6cGFyc2VWYWx1ZVR5cGUpOiBEZWxldGVkLgor
ICAgICAgICAqIHdhc20vV0FTTVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXQVNNOjpQbGFuOjpQ
bGFuKToKKyAgICAgICAgKiB3YXNtL1dBU01TZWN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OldB
U006OlNlY3Rpb25zOjpsb29rdXApOgorICAgICAgICAoSlNDOjpXQVNNOjpXQVNNU2VjdGlvbnM6
Omxvb2t1cCk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XQVNNU2VjdGlvbnMuaDoKKyAgICAg
ICAgKEpTQzo6V0FTTTo6U2VjdGlvbnM6OnZhbGlkYXRlT3JkZXIpOgorICAgICAgICAoSlNDOjpX
QVNNOjpXQVNNU2VjdGlvbnM6OnZhbGlkYXRlT3JkZXIpOiBEZWxldGVkLgorCiAyMDE2LTA4LTMx
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtKU0Nd
IEFkZCBpbml0aWF0b3IgcGFyYW1ldGVyIHRvIG1vZHVsZSBwaXBlbGluZQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0IzQ2FsbGluZ0NvbnZlbnRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9CM0NhbGxpbmdDb252ZW50aW9ucy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDAyMDRl
YzY5NmY3NDI4M2ZjMTc3MjQ2MWE4MjUyYTBiMGJiODc2OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9CM0NhbGxpbmdDb252ZW50aW9ucy5jcHAKQEAgLTAsMCArMSw0
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCM0NhbGxpbmdDb252ZW50aW9ucy5oIgorCisKK25h
bWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgQjMgeworCitzdGF0aWMgSlNDQ2FsbGluZ0NvbnZl
bnRpb24qIHN0YXRpY0pTQ0NhbGxpbmdDb252ZW50aW9uOworCitKU0NDYWxsaW5nQ29udmVudGlv
bioganNjQ2FsbGluZ0NvbnZlbnRpb24oKQoreworICAgIGlmIChMSUtFTFkoc3RhdGljSlNDQ2Fs
bGluZ0NvbnZlbnRpb24pKQorICAgICAgICByZXR1cm4gc3RhdGljSlNDQ2FsbGluZ0NvbnZlbnRp
b247CisgICAgc3RhdGljSlNDQ2FsbGluZ0NvbnZlbnRpb24gPSBuZXcgQ2FsbGluZ0NvbnZlbnRp
b248anNjSGVhZGVyU2l6ZSwgbmV4dEpTQ09mZnNldD4oVmVjdG9yPEdQUlJlZz4oKSwgUmVnaXN0
ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgcmV0dXJuIHN0YXRpY0pTQ0NhbGxp
bmdDb252ZW50aW9uOworfQorCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9CM0NhbGxpbmdDb252ZW50aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0IzQ2Fs
bGluZ0NvbnZlbnRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzM2NTk1OWI1OGNlYzI2YmFiZmE1NWI4MzYx
NWE5MDVjODVjNzYwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9C
M0NhbGxpbmdDb252ZW50aW9ucy5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShC
M19KSVQpCisKKyNpbmNsdWRlICJCM0FyZ3VtZW50UmVnVmFsdWUuaCIKKyNpbmNsdWRlICJCM0Jh
c2ljQmxvY2suaCIKKyNpbmNsdWRlICJCM0NvbnN0NjRWYWx1ZS5oIgorI2luY2x1ZGUgIkIzTWVt
b3J5VmFsdWUuaCIKKyNpbmNsdWRlICJCM1R5cGUuaCIKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIK
KyNpbmNsdWRlICJSZWdpc3RlclNldC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNwYWNl
IEIzIHsKKwordHlwZWRlZiB1bnNpZ25lZCAoKk5leHRPZmZzZXQpKHVuc2lnbmVkIGN1cnJlbnRP
ZmZzZXQsIFR5cGUgdHlwZSk7CisKK3RlbXBsYXRlPHVuc2lnbmVkIG9mZnNldCwgTmV4dE9mZnNl
dCB1cGRhdGVPZmZzZXQ+CitjbGFzcyBDYWxsaW5nQ29udmVudGlvbiB7CitwdWJsaWM6CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGhlYWRlclNpemUgPSBvZmZzZXQ7CisKKyAgICBDYWxsaW5n
Q29udmVudGlvbihWZWN0b3I8R1BSUmVnPiYmIHJlZ2lzdGVyQXJndW1lbnRzLCBSZWdpc3RlclNl
dCYmIGNhbGxlZVNhdmVSZWdpc3RlcnMpCisgICAgICAgIDogbV9yZWdpc3RlckFyZ3VtZW50cyhy
ZWdpc3RlckFyZ3VtZW50cykKKyAgICAgICAgLCBtX2NhbGxlZVNhdmVSZWdpc3RlcnMoY2FsbGVl
U2F2ZVJlZ2lzdGVycykKKyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4KKyAgICB2b2lkIGl0ZXJhdGUoY29uc3QgVmVjdG9yPFR5cGU+JiBhcmd1bWVudFR5cGVz
LCBQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrLCBPcmlnaW4gb3JpZ2luLCBjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY3VycmVu
dE9mZnNldCA9IGhlYWRlclNpemU7CisgICAgICAgIFZhbHVlKiBmcmFtZVBvaW50ZXIgPSBibG9j
ay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGcmFtZVBvaW50ZXIsIG9yaWdpbik7CisKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3VtZW50VHlwZXMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgICAgIFZhbHVlKiBhcmd1bWVudDsKKyAgICAgICAgICAgIGlmIChpIDwgbV9yZWdp
c3RlckFyZ3VtZW50cy5zaXplKCkpCisgICAgICAgICAgICAgICAgYXJndW1lbnQgPSBibG9jay0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIG9yaWdpbiwgbV9yZWdpc3RlckFyZ3Vt
ZW50c1tpXSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBWYWx1ZSogYWRk
cmVzcyA9IGJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgb3JpZ2luLCBmcmFtZVBv
aW50ZXIsCisgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVl
Pihwcm9jLCBvcmlnaW4sIGN1cnJlbnRPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBhcmd1bWVu
dCA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIGFyZ3VtZW50VHlw
ZXNbaV0sIG9yaWdpbiwgYWRkcmVzcyk7CisgICAgICAgICAgICAgICAgY3VycmVudE9mZnNldCA9
IHVwZGF0ZU9mZnNldChjdXJyZW50T2Zmc2V0LCBhcmd1bWVudFR5cGVzW2ldKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGZ1bmN0b3IoYXJndW1lbnQsIGkpOworICAgICAgICB9CisgICAg
fQorCisgICAgY29uc3QgVmVjdG9yPEdQUlJlZz4gbV9yZWdpc3RlckFyZ3VtZW50czsKKyAgICBj
b25zdCBSZWdpc3RlclNldCBtX2NhbGxlZVNhdmVSZWdpc3RlcnM7CisgICAgY29uc3QgUmVnaXN0
ZXJTZXQgbV9jYWxsZXJTYXZlUmVnaXN0ZXJzOworfTsKKworaW5saW5lIHVuc2lnbmVkIG5leHRK
U0NPZmZzZXQodW5zaWduZWQgY3VycmVudE9mZnNldCwgVHlwZSkKK3sKKyAgICByZXR1cm4gY3Vy
cmVudE9mZnNldCArIHNpemVvZihSZWdpc3Rlcik7Cit9CisKK2NvbnN0ZXhwciB1bnNpZ25lZCBq
c2NIZWFkZXJTaXplID0gRXhlY1N0YXRlOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgKiBzaXplb2Yo
UmVnaXN0ZXIpOwordHlwZWRlZiBDYWxsaW5nQ29udmVudGlvbjxqc2NIZWFkZXJTaXplLCBuZXh0
SlNDT2Zmc2V0PiBKU0NDYWxsaW5nQ29udmVudGlvbjsKKworSlNDQ2FsbGluZ0NvbnZlbnRpb24q
IGpzY0NhbGxpbmdDb252ZW50aW9uKCk7CisKK30gLy8gbmFtZXNwYWNlIEIzCisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYzViYjNmMjRlMTM4Yjc2NmZhYzVlOWFkZjA0NjdjZTNmZDY4MjYyYS4u
ZjQ5YWI2MDdhMGRjMTRjNjJmNDRiNGU0N2Q2NGI2ZTFkZWIyYmI1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTExNzksNiArMTE3OSw3IEBACiAJCTUyQzk1MkI5MTlBMjhBMUMw
MDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTJDOTUyQjgxOUEyOEExQzAwNjlCMzg2IC8qIFR5cGVQcm9maWxl
ci5jcHAgKi87IH07CiAJCTUzMTM3NEJEMUQ1Q0U2NzYwMEFGN0EwQiAvKiBXQVNNUGxhbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMzc0QkMxRDVD
RTY3NjAwQUY3QTBCIC8qIFdBU01QbGFuLmggKi87IH07CiAJCTUzMTM3NEJGMUQ1Q0U5NTAwMEFG
N0EwQiAvKiBXQVNNUGxhbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzEzNzRCRTFENUNFOTUwMDBBRjdBMEIgLyogV0FTTVBsYW4uY3BwICovOyB9
OworCQk1MzFCM0M4NzFENzRDNjAzMDA1QjMyMzYgLyogQjNDYWxsaW5nQ29udmVudGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMUIzQzg2MUQ3
NEM2MDMwMDVCMzIzNiAvKiBCM0NhbGxpbmdDb252ZW50aW9ucy5oICovOyB9OwogCQk1MzQ4NkJC
NzFDMTc5NUMzMDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ4NkJCNjFDMTc5NUMzMDBGNkYzQUYgLyogSlNU
eXBlZEFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9
OwogCQk1MzQ4NkJCQjFDMThFODQ1MDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDg2QkJBMUMxOEU4NDUw
MEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuY3BwICovOyB9OwogCQk1MzQ5MDI4NTFDNzI3NkI3MDAx
MkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzNDkwMjgyMUM3MjQyQzgwMDEyQkNCOCAvKiBUeXBlZEFycmF5
Q1Rlc3QuY3BwICovOyB9OwpAQCAtMTE4Nyw2ICsxMTg4LDcgQEAKIAkJNTM1MjlBNEMxQzQ1N0I3
NTAwMEI0OUM2IC8qIEFQSVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MzUyOUE0QjFDNDU3Qjc1MDAwQjQ5QzYgLyogQVBJVXRpbHMuaCAqLzsg
fTsKIAkJNTM3MEI0RjUxQkYyNjIwMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0
eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwICovOyB9OwogCQk1MzcwQjRGNjFCRjI2
MjA1MDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM3MEI0
RjQxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2UuaCAqLzsgfTsKKwkJNTM4OEI0MDQxRDc2NjQwQjAwRDNEODUyIC8qIEIzQ2FsbGlu
Z0NvbnZlbnRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzODhCNDAzMUQ3NjY0MEIwMEQzRDg1MiAvKiBCM0NhbGxpbmdDb252ZW50aW9ucy5j
cHAgKi87IH07CiAJCTUzOTE3RTdCMUI3OTA2RkEwMDBFQkQzMyAvKiBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTM5MTdFN0ExQjc5MDZFNDAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggKi87IH07CiAJCTUzOUVCMDc5MUQ1NTYw
NzAwMEM4MkVGNyAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBG
b3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKIAkJNTM5RUIwN0ExRDU1NjA3MDAwQzgyRUY3IC8q
IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0
Q29yZS5mcmFtZXdvcmsgKi87IH07CkBAIC0zMzcxLDYgKzMzNzMsNyBAQAogCQk1MkM5NTJCODE5
QTI4QTFDMDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5
cGVQcm9maWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTM3NEJDMUQ1
Q0U2NzYwMEFGN0EwQiAvKiBXQVNNUGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXQVNNUGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzEzNzRCRTFE
NUNFOTUwMDBBRjdBMEIgLyogV0FTTVBsYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0FTTVBsYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MzFCM0M4NjFENzRDNjAzMDA1QjMyMzYgLyogQjNDYWxsaW5nQ29udmVudGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQjNDYWxsaW5nQ29udmVudGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlw
ZWRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVkQXJyYXku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM0ODZCQkExQzE4RTg0NTAwRjZGM0FG
IC8qIEpTVHlwZWRBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1R5cGVkQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzQ5MDI4
MjFDNzI0MkM4MDAxMkJDQjggLyogVHlwZWRBcnJheUNUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFR5cGVkQXJyYXlDVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVz
dHMvVHlwZWRBcnJheUNUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMz
ODEsNiArMzM4NCw3IEBACiAJCTUzNTI5QTRCMUM0NTdCNzUwMDBCNDlDNiAvKiBBUElVdGlscy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVdGlscy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MzcwQjRGMzFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJ
bmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM3MEI0RjQxQkYyNUVB
MjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWRhcHRpdmVJbmZlcnJlZFByb3Bl
cnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
Mzg4QjQwMzFENzY2NDBCMDBEM0Q4NTIgLyogQjNDYWxsaW5nQ29udmVudGlvbnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQjNDYWxsaW5nQ29udmVudGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzkxN0U3QTFCNzkwNkU0MDAwRUJEMzMg
LyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVG
dW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM5MTdFN0MxQjc5MTEw
NjAwMEVCRDMzIC8qIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MzkxN0U4MzFCNzkxQ0I4MDAwRUJEMzMgLyogVHlwZWRBcnJh
eVByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IFR5
cGVkQXJyYXlQcm90b3R5cGUuanM7IHBhdGggPSBidWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBl
LmpzOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CkBAIC00Nzc1LDYgKzQ3NzksOCBAQAog
CQkJCURDRkRGQkQ3MUQxRjVEOTgwMEZFM0Q3MiAvKiBCM0JvdHRvbVByb3ZpZGVyLmggKi8sCiAJ
CQkJMEY2QjhBREUxQzRFRkUxNzAwOTY5MDUyIC8qIEIzQnJlYWtDcml0aWNhbEVkZ2VzLmNwcCAq
LywKIAkJCQkwRjZCOEFERjFDNEVGRTE3MDA5NjkwNTIgLyogQjNCcmVha0NyaXRpY2FsRWRnZXMu
aCAqLywKKwkJCQk1Mzg4QjQwMzFENzY2NDBCMDBEM0Q4NTIgLyogQjNDYWxsaW5nQ29udmVudGlv
bnMuY3BwICovLAorCQkJCTUzMUIzQzg2MUQ3NEM2MDMwMDVCMzIzNiAvKiBCM0NhbGxpbmdDb252
ZW50aW9ucy5oICovLAogCQkJCURDOUEwQzFDMUQyRDk0RUYwMDg1MTI0RSAvKiBCM0Nhc2VDb2xs
ZWN0aW9uLmNwcCAqLywKIAkJCQlEQzlBMEMxRDFEMkQ5NEVGMDA4NTEyNEUgLyogQjNDYXNlQ29s
bGVjdGlvbi5oICovLAogCQkJCURDOUEwQzFFMUQyRDk0RUYwMDg1MTI0RSAvKiBCM0Nhc2VDb2xs
ZWN0aW9uSW5saW5lcy5oICovLApAQCAtNDg4OSw5ICs0ODk1LDkgQEAKIAkJCQkwRkVDODRFRjFC
REFDREFDMDA4MEZGNzQgLyogQjNTd2l0Y2hWYWx1ZS5jcHAgKi8sCiAJCQkJMEZFQzg0RjAxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzU3dpdGNoVmFsdWUuaCAqLywKIAkJCQkwRjQ1NzAzRTFCRTU4NENB
MDA2MkE2MjkgLyogQjNUaW1pbmdTY29wZS5jcHAgKi8sCisJCQkJMEZFQzg0RjIxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzVHlwZS5oICovLAogCQkJCTBGNDU3MDNGMUJFNTg0Q0EwMDYyQTYyOSAvKiBC
M1RpbWluZ1Njb3BlLmggKi8sCiAJCQkJMEZFQzg0RjExQkRBQ0RBQzAwODBGRjc0IC8qIEIzVHlw
ZS5jcHAgKi8sCi0JCQkJMEZFQzg0RjIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVHlwZS5oICovLAog
CQkJCURDRkRGQkQ4MUQxRjVEOTgwMEZFM0Q3MiAvKiBCM1R5cGVNYXAuaCAqLywKIAkJCQkwRkVD
ODRGMzFCREFDREFDMDA4MEZGNzQgLyogQjNVcHNpbG9uVmFsdWUuY3BwICovLAogCQkJCTBGRUM4
NEY0MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Vwc2lsb25WYWx1ZS5oICovLApAQCAtODI2NSw2ICs4
MjcxLDcgQEAKIAkJCQk5OURBMDBCMTFCRDU5OTRFMDBGNDU3NUMgLyogVXBkYXRlQ29udGVudHMu
cHkgaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIgLyogVmFsdWVQ
cm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYgLyog
VmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTMxQjNDODcxRDc0QzYwMzAwNUIz
MjM2IC8qIEIzQ2FsbGluZ0NvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OUVFMEMw
MDFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY2QzczNTExQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWls
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyRDFBQTkwOTU2MDBEMzNCMzMgLyogVmFyT2Zm
c2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTg5MTYsNiArODkyMyw3IEBACiAJCQkJNzA5NEM0REUx
QUU0Mzk1MzAwNDFBMkVFIC8qIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQzJGQ0FFMTIxN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMzOEUwRDFCRjAyNzZDMDAxM0M4OEYg
LyogQjNEYXRhU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1Mzg4QjQwNDFENzY2NDBC
MDBEM0Q4NTIgLyogQjNDYWxsaW5nQ29udmVudGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NjVCODM5MkYxQkFDQUQ2QTAwNDRFODI0IC8qIENhY2hlZFJlY292ZXJ5LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MjgwODJEMTA3RUMwNTcwMDEzRTdCMiAvKiBDYWxsRGF0YS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjY0QjI3OTFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2UuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9j
ZWR1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCmluZGV4IGUy
ZTEzNGRhYmVjZDAzNzQ5ZmU3YTk3ZjQ4OGJlOGZhMGJjYzQ4ZDguLjJmMDM4YTMxZGE0ZDVlY2Uw
MGQzNWI5NTc0OTkxZTliMDg1MjcyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1Byb2NlZHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2Nl
ZHVyZS5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpZm5kZWYg
QjNQcm9jZWR1cmVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlw
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5oCmluZGV4IDVkYjA2OTc3OTNh
NzNjMWY1MWQ0YjJmYzQxYTkzYWQyMDRlZjYxODUuLjI5YjdkMzZmMjhjZTAwNzY2M2U2N2M0NDk1
YWZjN2RhOTYxODJlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5
cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksMTEgKzM5LDEy
IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogZW51bSBUeXBlIDogaW50OF90
IHsKLSAgICBWb2lkLAogICAgIEludDMyLAogICAgIEludDY0LAogICAgIEZsb2F0LAotICAgIERv
dWJsZQorICAgIERvdWJsZSwKKyAgICBMYXN0VmFsdWVUeXBlID0gRG91YmxlLAorICAgIFZvaWQK
IH07CiAKIGlubGluZSBib29sIGlzSW50KFR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmgKaW5kZXggYWYzM2EzMDcyY2Nj
NjE1M2RhYTBjNzVhZTE0YmM2YjhiM2IyMTJjOS4uY2M3NzAxMDk2ZTFiNjIwY2U5MjQ3NTYwNjg2
NTllM2I2MmY5OWM2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1Byb3RvQ2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1Byb3RvQ2FsbEZyYW1lLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLXN0cnVjdCBQcm90b0NhbGxGcmFtZSB7CitzdHJ1Y3QgSlNfRVhQT1JUX1BSSVZBVEUgUHJv
dG9DYWxsRnJhbWUgewogICAgIFJlZ2lzdGVyIGNvZGVCbG9ja1ZhbHVlOwogICAgIFJlZ2lzdGVy
IGNhbGxlZVZhbHVlOwogICAgIFJlZ2lzdGVyIGFyZ0NvdW50QW5kQ29kZU9yaWdpblZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKaW5kZXggYjZkNDgx
NzQ5NmEyYTc0M2VlNzE0NzExOWExYmUyODk0NDFiYzI4NC4uYjMzMzQxNGU5OTcyMzk0ZmNkOGQy
ZTQ5N2NhNWVhZGMwZWVmYWRjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50VGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRUaHVua3MuY3BwCkBAIC00MSw2ICs0MSwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorRW5j
b2RlZEpTVmFsdWUgSlNfRVhQT1JUX1BSSVZBVEUgdm1FbnRyeVRvV0FTTSh2b2lkKiBjb2RlLCBW
TSogdm0sIFByb3RvQ2FsbEZyYW1lKiBmcmFtZSkKK3sKKyAgICByZXR1cm4gdm1FbnRyeVRvSmF2
YVNjcmlwdChjb2RlLCB2bSwgZnJhbWUpOworfQorICAgIAogI2lmIEVOQUJMRShKSVQpCiAKIG5h
bWVzcGFjZSBMTEludCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRUaHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5o
CmluZGV4IDk1YjBmNDQ4NDhiY2M1MjlkMTUwM2UyODliOTNlZmUzNzA1YzgzMTYuLjliN2UyNjZh
ZTQ5ZDdjN2I2MDNlZTFjZWNhNzkxOTUwYWE0Njk3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFRodW5rcy5oCkBAIC0zOCw2ICszOCw4IEBAIGV4dGVybiAiQyIgewogICAg
IEVuY29kZWRKU1ZhbHVlIHZtRW50cnlUb05hdGl2ZSh2b2lkKiwgVk0qLCBQcm90b0NhbGxGcmFt
ZSopOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU19FWFBPUlRfUFJJVkFURSB2bUVudHJ5VG9XQVNN
KHZvaWQqLCBWTSosIFByb3RvQ2FsbEZyYW1lKik7CisKIG5hbWVzcGFjZSBMTEludCB7CiAKIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKFZN
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFdBU00uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RXQVNNLmNwcAppbmRleCAwN2EyMGY5NTA5MTZjYTFjMTYy
NzcxMTMyMTk4NjQ5MzU0N2M3OWFhLi5jMTVlZDVmNGQzYjQxNWRhMjliOTVlZWYxZDg5Y2IxMzgw
NTY1NjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFdBU00uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0V0FTTS5jcHAKQEAgLTI3LDcgKzI3LDEwIEBA
CiAKICNpbmNsdWRlICJCM0NvbXBpbGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVh
ZGluZy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJp
bmcuaCIKKyNpbmNsdWRlICJMTEludFRodW5rcy5oIgorI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1l
LmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJXQVNNUGxhbi5oIgogI2luY2x1ZGUgPHd0
Zi9EYXRhTG9nLmg+CkBAIC0xOTAsMTcgKzE5MywzNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
dXNpbmcgbmFtZXNwYWNlIFdBU007CiB1c2luZyBuYW1lc3BhY2UgQjM7CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLVQgaW52b2tlKE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBwdHIsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCisvLyBGSVhNRTogVGhpcyBpcyBw
dXJlIGhhY2tzIGFuZCBzaG91bGQgYmUgY2hhbmdlZC4uLiBwbGVhc2UuLi4KK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+CitUIGludm9rZShNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcHRyLCBzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8SlNWYWx1ZT4gYXJncykKIHsKLSAgICBUICgqZnVuY3Rpb24pKEFyZ3VtZW50
cy4uLikgPSBiaXR3aXNlX2Nhc3Q8VCgqKShBcmd1bWVudHMuLi4pPihwdHIuZXhlY3V0YWJsZUFk
ZHJlc3MoKSk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uKGFyZ3VtZW50cy4uLik7CisgICAgSlNWYWx1
ZSBmaXJzdEFyZ3VtZW50OworICAgIC8vIFNpbmNlIHZtRW50cnlUb0phdmFTY3JpcHQgZXhwZWN0
cyBhIHRoaXMgdmFsdWUgd2UgY2xhaW0gdGhlcmUgaXMgb25lLi4uIHRoZXJlIGlzbid0LgorICAg
IGludCBhcmdDb3VudCA9IDE7CisgICAgSlNWYWx1ZSogcmVtYWluaW5nQXJndW1lbnRzID0gbnVs
bHB0cjsKKyAgICBpZiAoYXJncy5zaXplKCkpIHsKKyAgICAgICAgcmVtYWluaW5nQXJndW1lbnRz
ID0gY29uc3RfY2FzdDxKU1ZhbHVlKj4oYXJncy5iZWdpbigpKTsKKyAgICAgICAgZmlyc3RBcmd1
bWVudCA9ICpyZW1haW5pbmdBcmd1bWVudHM7CisgICAgICAgIHJlbWFpbmluZ0FyZ3VtZW50cysr
OworICAgICAgICBhcmdDb3VudCA9IGFyZ3Muc2l6ZSgpOworICAgIH0KKworICAgIFByb3RvQ2Fs
bEZyYW1lIHByb3RvQ2FsbEZyYW1lOworICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobnVsbHB0ciwg
bnVsbHB0ciwgZmlyc3RBcmd1bWVudCwgYXJnQ291bnQsIHJlbWFpbmluZ0FyZ3VtZW50cyk7CisK
KyAgICAvLyBUaGlzIHdvbid0IHdvcmsgZm9yIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBidXQgd2Ug
ZG9uJ3QgaGF2ZSB0aG9zZSB5ZXQuCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHZtRW50cnlU
b1dBU00ocHRyLmV4ZWN1dGFibGVBZGRyZXNzKCksIHZtLCAmcHJvdG9DYWxsRnJhbWUpKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1QgaW52b2tlKGNvbnN0IENvbXBpbGF0aW9uJiBjb2Rl
LCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8SlNWYWx1ZT4gYXJncykKK3sKKyAgICByZXR1cm4gaW52
b2tlPFQ+KGNvZGUuY29kZSgpLCBhcmdzKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUuLi4gQXJndW1lbnRzPgotVCBpbnZva2UoY29uc3QgQ29tcGlsYXRpb24mIGNvZGUsIEFy
Z3VtZW50cy4uLiBhcmd1bWVudHMpCitpbmxpbmUgSlNWYWx1ZSBib3godWludDY0X3QgdmFsdWUp
CiB7Ci0gICAgcmV0dXJuIGludm9rZTxUPihjb2RlLmNvZGUoKSwgYXJndW1lbnRzLi4uKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKTsKIH0KIAogLy8gRm9yIG5vdyB3ZSBpbmxp
bmUgdGhlIHRlc3QgZmlsZXMuCkBAIC0yMjQsNyArMjQ3LDcgQEAgc3RhdGljIHZvaWQgcnVuV0FT
TVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3QgdGhpcyBkb2Vzbid0IGNyYXNo
LgotICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0pID09
IDUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0s
IHsgfSkgPT0gNSk7CiAgICAgfQogCiAKQEAgLTI0Niw3ICsyNjksNyBAQCBzdGF0aWMgdm9pZCBy
dW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3Qg
Y3Jhc2guCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XSkgPT0gMTEpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0sIHsgfSkgPT0gMTEpOwogICAgIH0KICAgICAKICAgICB7CkBAIC0yNjcsNyArMjkwLDcg
QEAgc3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRl
c3QgdGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnZva2U8aW50
PigqcGxhbi5yZXN1bHRbMF0pID09IDExKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW52b2tl
PGludD4oKnBsYW4ucmVzdWx0WzBdLCB7IH0pID09IDExKTsKICAgICB9CiAKICAgICB7CkBAIC0y
ODgsNyArMzExLDI5IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdKSA9PSAxMSk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyB9KSA9PSAxMSk7CisgICAgfQor
CisgICAgeworICAgICAgICAvLyBHZW5lcmF0ZWQgZnJvbTogKG1vZHVsZSAoZnVuYyAkYWRkIChw
YXJhbSAkeCBpMzIpIChwYXJhbSAkeSBpMzIpIChyZXN1bHQgaTMyKSAocmV0dXJuIChpMzIuYWRk
IChnZXRfbG9jYWwgJHgpIChnZXRfbG9jYWwgJHkpKSkpICkKKyAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZlY3RvciA9IHsKKyAgICAgICAgICAgIDB4MDAsIDB4NjEsIDB4NzMsIDB4NmQsIDB4MGMs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4NzQsIDB4NzksIDB4NzAsIDB4NjUsIDB4ODcsIDB4
ODAsIDB4ODAsCisgICAgICAgICAgICAweDAwLCAweDAxLCAweDQwLCAweDAyLCAweDAxLCAweDAx
LCAweDAxLCAweDAxLCAweDA4LCAweDY2LCAweDc1LCAweDZlLCAweDYzLCAweDc0LCAweDY5LCAw
eDZmLAorICAgICAgICAgICAgMHg2ZSwgMHg4MiwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMSwgMHgw
MCwgMHgwNCwgMHg2MywgMHg2ZiwgMHg2NCwgMHg2NSwgMHg4ZSwgMHg4MCwgMHg4MCwgMHgwMCwK
KyAgICAgICAgICAgIDB4MDEsIDB4ODksIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MTQsIDB4
MDAsIDB4MTQsIDB4MDEsIDB4NDAsIDB4MDksIDB4MDEsIDB4MGYKKyAgICAgICAgfTsKKworICAg
ICAgICBQbGFuIHBsYW4oKnZtLCB2ZWN0b3IpOworICAgICAgICBpZiAocGxhbi5yZXN1bHQuc2l6
ZSgpICE9IDEgfHwgIXBsYW4ucmVzdWx0WzBdKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIk1v
ZHVsZSBmYWlsZWQgdG8gY29tcGlsZSBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICBDUkFTSCgp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwge2JveCgwKSwg
Ym94KDEpfSkgPT0gMSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGludm9rZTxpbnQ+KCpwbGFu
LnJlc3VsdFswXSwge2JveCgxMDApLCBib3goMSl9KSA9PSAxMDEpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVChpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHtib3goLTEpLCBib3goMSl9KSA9
PSAwKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBd
LCB7Ym94KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpLCBib3goMSl9KSA9PSBzdGQ6
Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV0FTTU1vZHVsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vSlNXQVNNTW9kdWxlLmgKaW5kZXggY2MwMmFiNDczNzViZmM4NTU1OWU4ZjE0
OWE5NTNlYzk1OGY4Nzk0Yi4uMTRiNmViNWZkMTFhYzQ4MjA2ZGRmMzhiMDNlYzRjNDU0OWNlODE0
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXQVNNTW9kdWxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXQVNNTW9kdWxlLmgKQEAgLTc1LDEy
ICs3NSwxMiBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPHVpbnQzMl90PiYgaTMyQ29uc3RhbnRzKCkg
eyByZXR1cm4gbV9pMzJDb25zdGFudHM7IH0KICAgICBWZWN0b3I8ZmxvYXQ+JiBmMzJDb25zdGFu
dHMoKSB7IHJldHVybiBtX2YzMkNvbnN0YW50czsgfQogICAgIFZlY3Rvcjxkb3VibGU+JiBmNjRD
b25zdGFudHMoKSB7IHJldHVybiBtX2Y2NENvbnN0YW50czsgfQotICAgIFZlY3RvcjxXQVNNU2ln
bmF0dXJlPiYgc2lnbmF0dXJlcygpIHsgcmV0dXJuIG1fc2lnbmF0dXJlczsgfQotICAgIFZlY3Rv
cjxXQVNNRnVuY3Rpb25JbXBvcnQ+JiBmdW5jdGlvbkltcG9ydHMoKSB7IHJldHVybiBtX2Z1bmN0
aW9uSW1wb3J0czsgfQotICAgIFZlY3RvcjxXQVNNRnVuY3Rpb25JbXBvcnRTaWduYXR1cmU+JiBm
dW5jdGlvbkltcG9ydFNpZ25hdHVyZXMoKSB7IHJldHVybiBtX2Z1bmN0aW9uSW1wb3J0U2lnbmF0
dXJlczsgfQotICAgIFZlY3RvcjxXQVNNVmFsdWVUeXBlPiYgZ2xvYmFsVmFyaWFibGVUeXBlcygp
IHsgcmV0dXJuIG1fZ2xvYmFsVmFyaWFibGVUeXBlczsgfQotICAgIFZlY3RvcjxXQVNNRnVuY3Rp
b25EZWNsYXJhdGlvbj4mIGZ1bmN0aW9uRGVjbGFyYXRpb25zKCkgeyByZXR1cm4gbV9mdW5jdGlv
bkRlY2xhcmF0aW9uczsgfQotICAgIFZlY3RvcjxXQVNNRnVuY3Rpb25Qb2ludGVyVGFibGU+JiBm
dW5jdGlvblBvaW50ZXJUYWJsZXMoKSB7IHJldHVybiBtX2Z1bmN0aW9uUG9pbnRlclRhYmxlczsg
fQorICAgIFZlY3RvcjxXQVNNOjpTaWduYXR1cmU+JiBzaWduYXR1cmVzKCkgeyByZXR1cm4gbV9z
aWduYXR1cmVzOyB9CisgICAgVmVjdG9yPFdBU006OkZ1bmN0aW9uSW1wb3J0PiYgZnVuY3Rpb25J
bXBvcnRzKCkgeyByZXR1cm4gbV9mdW5jdGlvbkltcG9ydHM7IH0KKyAgICBWZWN0b3I8V0FTTTo6
RnVuY3Rpb25JbXBvcnRTaWduYXR1cmU+JiBmdW5jdGlvbkltcG9ydFNpZ25hdHVyZXMoKSB7IHJl
dHVybiBtX2Z1bmN0aW9uSW1wb3J0U2lnbmF0dXJlczsgfQorICAgIFZlY3RvcjxXQVNNOjpUeXBl
PiYgZ2xvYmFsVmFyaWFibGVUeXBlcygpIHsgcmV0dXJuIG1fZ2xvYmFsVmFyaWFibGVUeXBlczsg
fQorICAgIFZlY3RvcjxXQVNNOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiYgZnVuY3Rpb25EZWNsYXJh
dGlvbnMoKSB7IHJldHVybiBtX2Z1bmN0aW9uRGVjbGFyYXRpb25zOyB9CisgICAgVmVjdG9yPFdB
U006OkZ1bmN0aW9uUG9pbnRlclRhYmxlPiYgZnVuY3Rpb25Qb2ludGVyVGFibGVzKCkgeyByZXR1
cm4gbV9mdW5jdGlvblBvaW50ZXJUYWJsZXM7IH0KIAogICAgIGNvbnN0IEpTQXJyYXlCdWZmZXIq
IGFycmF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheUJ1ZmZlci5nZXQoKTsgfQogICAg
IFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4+JiBmdW5jdGlvbnMoKSB7IHJldHVybiBt
X2Z1bmN0aW9uczsgfQpAQCAtOTUsMTIgKzk1LDEyIEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVp
bnQzMl90PiBtX2kzMkNvbnN0YW50czsKICAgICBWZWN0b3I8ZmxvYXQ+IG1fZjMyQ29uc3RhbnRz
OwogICAgIFZlY3Rvcjxkb3VibGU+IG1fZjY0Q29uc3RhbnRzOwotICAgIFZlY3RvcjxXQVNNU2ln
bmF0dXJlPiBtX3NpZ25hdHVyZXM7Ci0gICAgVmVjdG9yPFdBU01GdW5jdGlvbkltcG9ydD4gbV9m
dW5jdGlvbkltcG9ydHM7Ci0gICAgVmVjdG9yPFdBU01GdW5jdGlvbkltcG9ydFNpZ25hdHVyZT4g
bV9mdW5jdGlvbkltcG9ydFNpZ25hdHVyZXM7Ci0gICAgVmVjdG9yPFdBU01WYWx1ZVR5cGU+IG1f
Z2xvYmFsVmFyaWFibGVUeXBlczsKLSAgICBWZWN0b3I8V0FTTUZ1bmN0aW9uRGVjbGFyYXRpb24+
IG1fZnVuY3Rpb25EZWNsYXJhdGlvbnM7Ci0gICAgVmVjdG9yPFdBU01GdW5jdGlvblBvaW50ZXJU
YWJsZT4gbV9mdW5jdGlvblBvaW50ZXJUYWJsZXM7CisgICAgVmVjdG9yPFdBU006OlNpZ25hdHVy
ZT4gbV9zaWduYXR1cmVzOworICAgIFZlY3RvcjxXQVNNOjpGdW5jdGlvbkltcG9ydD4gbV9mdW5j
dGlvbkltcG9ydHM7CisgICAgVmVjdG9yPFdBU006OkZ1bmN0aW9uSW1wb3J0U2lnbmF0dXJlPiBt
X2Z1bmN0aW9uSW1wb3J0U2lnbmF0dXJlczsKKyAgICBWZWN0b3I8V0FTTTo6VHlwZT4gbV9nbG9i
YWxWYXJpYWJsZVR5cGVzOworICAgIFZlY3RvcjxXQVNNOjpGdW5jdGlvbkRlY2xhcmF0aW9uPiBt
X2Z1bmN0aW9uRGVjbGFyYXRpb25zOworICAgIFZlY3RvcjxXQVNNOjpGdW5jdGlvblBvaW50ZXJU
YWJsZT4gbV9mdW5jdGlvblBvaW50ZXJUYWJsZXM7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNBcnJh
eUJ1ZmZlcj4gbV9hcnJheUJ1ZmZlcjsKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTRnVuY3Rp
b24+PiBtX2Z1bmN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dBU01CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01C
M0lSR2VuZXJhdG9yLmNwcAppbmRleCBlMTRkOTdlZWQ1ZGE2ZjZmMmFmZTJmNzA2ZDBjNDVjMTJi
M2QxZDIwLi45MzUxNmM2NWM3ODNlMTQ0Y2JjYmVkY2RiMmQ2ZmY3NWVlMjZjNDlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0y
OSw5ICsyOSwxMSBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIkIzQmFz
aWNCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJCM0NhbGxpbmdDb252ZW50aW9ucy5oIgogI2lu
Y2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZS5oIgogI2luY2x1
ZGUgIkIzVmFyaWFibGVWYWx1ZS5oIgorI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2lu
Y2x1ZGUgIldBU01GdW5jdGlvblBhcnNlci5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgog
CkBAIC00MSwyMCArNDMsMjAgQEAgbmFtZXNwYWNlIFdBU00gewogCiB1c2luZyBuYW1lc3BhY2Ug
QjM7CiAKLWlubGluZSBCMzo6T3Bjb2RlIHRvQjNPcChXQVNNQmluYXJ5T3BUeXBlIG9wKQoraW5s
aW5lIEIzOjpPcGNvZGUgdG9CM09wKEJpbmFyeU9wVHlwZSBvcCkKIHsKICAgICBzd2l0Y2ggKG9w
KSB7Ci0jZGVmaW5lIENSRUFURV9DQVNFKG5hbWUsIG9wLCBiM29wKSBjYXNlIFdBU01CaW5hcnlP
cFR5cGU6Om5hbWU6IHJldHVybiBiM29wOworI2RlZmluZSBDUkVBVEVfQ0FTRShuYW1lLCBvcCwg
YjNvcCkgY2FzZSBCaW5hcnlPcFR5cGU6Om5hbWU6IHJldHVybiBiM29wOwogICAgIEZPUl9FQUNI
X1dBU01fQklOQVJZX09QKENSRUFURV9DQVNFKQogI3VuZGVmIENSRUFURV9DQVNFCiAgICAgfQog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLWlubGluZSBCMzo6T3Bjb2Rl
IHRvQjNPcChXQVNNVW5hcnlPcFR5cGUgb3ApCitpbmxpbmUgQjM6Ok9wY29kZSB0b0IzT3AoVW5h
cnlPcFR5cGUgb3ApCiB7CiAgICAgc3dpdGNoIChvcCkgewotI2RlZmluZSBDUkVBVEVfQ0FTRShu
YW1lLCBvcCwgYjNvcCkgY2FzZSBXQVNNVW5hcnlPcFR5cGU6Om5hbWU6IHJldHVybiBiM29wOwor
I2RlZmluZSBDUkVBVEVfQ0FTRShuYW1lLCBvcCwgYjNvcCkgY2FzZSBVbmFyeU9wVHlwZTo6bmFt
ZTogcmV0dXJuIGIzb3A7CiAgICAgRk9SX0VBQ0hfV0FTTV9VTkFSWV9PUChDUkVBVEVfQ0FTRSkK
ICN1bmRlZiBDUkVBVEVfQ0FTRQogICAgIH0KQEAgLTY3LDExICs2OSwxNCBAQCBwdWJsaWM6CiAK
ICAgICBCM0lSR2VuZXJhdG9yKFByb2NlZHVyZSYpOwogCi0gICAgdm9pZCBhZGRMb2NhbChXQVNN
VmFsdWVUeXBlLCB1aW50MzJfdCk7Ci0gICAgRXhwcmVzc2lvblR5cGUgYWRkQ29uc3RhbnQoV0FT
TVZhbHVlVHlwZSwgdWludDY0X3QpOworICAgIHZvaWQgYWRkQXJndW1lbnRzKGNvbnN0IFZlY3Rv
cjxUeXBlPiYpOworICAgIHZvaWQgYWRkTG9jYWwoVHlwZSwgdWludDMyX3QpOworICAgIEV4cHJl
c3Npb25UeXBlIGFkZENvbnN0YW50KFR5cGUsIHVpbnQ2NF90KTsKIAotICAgIGJvb2wgV0FSTl9V
TlVTRURfUkVUVVJOIGJpbmFyeU9wKFdBU01CaW5hcnlPcFR5cGUsIEV4cHJlc3Npb25UeXBlIGxl
ZnQsIEV4cHJlc3Npb25UeXBlIHJpZ2h0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKLSAgICBi
b29sIFdBUk5fVU5VU0VEX1JFVFVSTiB1bmFyeU9wKFdBU01VbmFyeU9wVHlwZSwgRXhwcmVzc2lv
blR5cGUgYXJnLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBib29sIFdBUk5fVU5VU0VE
X1JFVFVSTiBnZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7
CisKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBiaW5hcnlPcChCaW5hcnlPcFR5cGUsIEV4
cHJlc3Npb25UeXBlIGxlZnQsIEV4cHJlc3Npb25UeXBlIHJpZ2h0LCBFeHByZXNzaW9uVHlwZSYg
cmVzdWx0KTsKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiB1bmFyeU9wKFVuYXJ5T3BUeXBl
LCBFeHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCiAgICAgYm9v
bCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQmxvY2soKTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JF
VFVSTiBlbmRCbG9jayhWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBleHByZXNzaW9uU3RhY2spOwpA
QCAtODgsNiArOTMsNyBAQCBwcml2YXRlOgogICAgIEJhc2ljQmxvY2sqIG1fY3VycmVudEJsb2Nr
OwogICAgIC8vIFRoaXMgaXMgYSBwYWlyIG9mIHRoZSBjb250aW51YXRpb24gYW5kIHRoZSB0eXBl
cyBleHBlY3RlZCBvbiB0aGUgc3RhY2sgZm9yIHRoYXQgY29udGludWF0aW9uLgogICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8QmFzaWNCbG9jayosIE9wdGlvbmFsPFZlY3RvcjxWYXJpYWJsZSo+Pj4+IG1f
Y29udHJvbFN0YWNrOworICAgIFZlY3RvcjxWYXJpYWJsZSo+IG1fbG9jYWxzOwogfTsKIAogQjNJ
UkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihQcm9jZWR1cmUmIHByb2NlZHVyZSkKQEAgLTk2LDMz
ICsxMDIsNTQgQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihQcm9jZWR1cmUmIHByb2Nl
ZHVyZSkKICAgICBtX2N1cnJlbnRCbG9jayA9IG1fcHJvYy5hZGRCbG9jaygpOwogfQogCi12b2lk
IEIzSVJHZW5lcmF0b3I6OmFkZExvY2FsKFdBU01WYWx1ZVR5cGUsIHVpbnQzMl90KQordm9pZCBC
M0lSR2VuZXJhdG9yOjphZGRMb2NhbChUeXBlIHR5cGUsIHVpbnQzMl90IGNvdW50KQoreworICAg
IG1fbG9jYWxzLmdyb3coY291bnQpOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKQorICAgICAgICBtX2xvY2Fscy5hcHBlbmQobV9wcm9jLmFkZFZhcmlhYmxlKHR5cGUp
KTsKK30KKwordm9pZCBCM0lSR2VuZXJhdG9yOjphZGRBcmd1bWVudHMoY29uc3QgVmVjdG9yPFR5
cGU+JiB0eXBlcykKIHsKLSAgICAvLyBUT0RPOiBBZGQgbG9jYWxzLgorICAgIEFTU0VSVCghbV9s
b2NhbHMuc2l6ZSgpKTsKKyAgICBtX2xvY2Fscy5yZXNpemUodHlwZXMuc2l6ZSgpKTsKKyAgICBq
c2NDYWxsaW5nQ29udmVudGlvbigpLT5pdGVyYXRlKHR5cGVzLCBtX3Byb2MsIG1fY3VycmVudEJs
b2NrLCBPcmlnaW4oKSwKKyAgICAgICAgWyZdIChFeHByZXNzaW9uVHlwZSBhcmd1bWVudCwgdW5z
aWduZWQgaSkgeworICAgICAgICAgICAgVmFyaWFibGUqIGFyZ3VtZW50VmFyaWFibGUgPSBtX3By
b2MuYWRkVmFyaWFibGUoYXJndW1lbnQtPnR5cGUoKSk7CisgICAgICAgICAgICBtX2xvY2Fsc1tp
XSA9IGFyZ3VtZW50VmFyaWFibGU7CisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgU2V0LCBPcmlnaW4oKSwgYXJndW1lbnRWYXJpYWJs
ZSwgYXJndW1lbnQpOworICAgICAgICB9KTsKK30KKworYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4g
QjNJUkdlbmVyYXRvcjo6Z2V0TG9jYWwodWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpCit7CisgICAgQVNTRVJUKGluZGV4IDwgbV9sb2NhbHMuc2l6ZSgpKTsKKyAgICByZXN1
bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgQjM6
OkdldCwgT3JpZ2luKCksIG1fbG9jYWxzW2luZGV4XSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgQjNJUkdlbmVyYXRvcjo6dW5hcnlPcChXQVNNVW5hcnlPcFR5cGUgb3AsIEV4cHJlc3Np
b25UeXBlIGFyZywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKK2Jvb2wgQjNJUkdlbmVyYXRvcjo6
dW5hcnlPcChVbmFyeU9wVHlwZSBvcCwgRXhwcmVzc2lvblR5cGUgYXJnLCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KQogewogICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFs
dWU+KG1fcHJvYywgdG9CM09wKG9wKSwgT3JpZ2luKCksIGFyZyk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgQjNJUkdlbmVyYXRvcjo6YmluYXJ5T3AoV0FTTUJpbmFyeU9wVHlwZSBvcCwg
RXhwcmVzc2lvblR5cGUgbGVmdCwgRXhwcmVzc2lvblR5cGUgcmlnaHQsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpCitib29sIEIzSVJHZW5lcmF0b3I6OmJpbmFyeU9wKEJpbmFyeU9wVHlwZSBvcCwg
RXhwcmVzc2lvblR5cGUgbGVmdCwgRXhwcmVzc2lvblR5cGUgcmlnaHQsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpCiB7CiAgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1
ZT4obV9wcm9jLCB0b0IzT3Aob3ApLCBPcmlnaW4oKSwgbGVmdCwgcmlnaHQpOwogICAgIHJldHVy
biB0cnVlOwogfQogCi1CM0lSR2VuZXJhdG9yOjpFeHByZXNzaW9uVHlwZSBCM0lSR2VuZXJhdG9y
OjphZGRDb25zdGFudChXQVNNVmFsdWVUeXBlIHR5cGUsIHVpbnQ2NF90IHZhbHVlKQorQjNJUkdl
bmVyYXRvcjo6RXhwcmVzc2lvblR5cGUgQjNJUkdlbmVyYXRvcjo6YWRkQ29uc3RhbnQoVHlwZSB0
eXBlLCB1aW50NjRfdCB2YWx1ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFdB
U01WYWx1ZVR5cGU6OkkzMjoKKyAgICBjYXNlIEludDMyOgogICAgICAgICByZXR1cm4gbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksIHN0YXRp
Y19jYXN0PGludDMyX3Q+KHZhbHVlKSk7Ci0gICAgY2FzZSBXQVNNVmFsdWVUeXBlOjpJNjQ6Cisg
ICAgY2FzZSBJbnQ2NDoKICAgICAgICAgcmV0dXJuIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
Q29uc3Q2NFZhbHVlPihtX3Byb2MsIE9yaWdpbigpLCB2YWx1ZSk7Ci0gICAgY2FzZSBXQVNNVmFs
dWVUeXBlOjpGMzI6CisgICAgY2FzZSBGbG9hdDoKICAgICAgICAgcmV0dXJuIG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihtX3Byb2MsIE9yaWdpbigpLCBiaXR3aXNl
X2Nhc3Q8ZmxvYXQ+KHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKSkpOwotICAgIGNhc2UgV0FT
TVZhbHVlVHlwZTo6RjY0OgorICAgIGNhc2UgRG91YmxlOgogICAgICAgICByZXR1cm4gbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihtX3Byb2MsIE9yaWdpbigpLCBi
aXR3aXNlX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMDUsMTEgKzIzMiwxMSBAQCBCYXNpY0Jsb2Nr
KiBCM0lSR2VuZXJhdG9yOjpibG9ja0ZvckNvbnRyb2xMZXZlbCh1bnNpZ25lZCBsZXZlbCkKICAg
ICByZXR1cm4gbV9jb250cm9sU3RhY2tbbV9jb250cm9sU3RhY2suc2l6ZSgpIC0gMSAtIGxldmVs
XS5maXJzdDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBwYXJzZUFuZENvbXBp
bGUoVk0mIHZtLCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZSwgV0FTTUZ1bmN0aW9uSW5mb3JtYXRp
b24gaW5mbywgdW5zaWduZWQgb3B0TGV2ZWwpCitzdGQ6OnVuaXF1ZV9wdHI8Q29tcGlsYXRpb24+
IHBhcnNlQW5kQ29tcGlsZShWTSYgdm0sIFZlY3Rvcjx1aW50OF90PiYgc291cmNlLCBGdW5jdGlv
bkluZm9ybWF0aW9uIGluZm8sIHVuc2lnbmVkIG9wdExldmVsKQogewogICAgIFByb2NlZHVyZSBw
cm9jZWR1cmU7CiAgICAgQjNJUkdlbmVyYXRvciBjb250ZXh0KHByb2NlZHVyZSk7Ci0gICAgV0FT
TUZ1bmN0aW9uUGFyc2VyPEIzSVJHZW5lcmF0b3I+IHBhcnNlcihjb250ZXh0LCBzb3VyY2UsIGlu
Zm8pOworICAgIEZ1bmN0aW9uUGFyc2VyPEIzSVJHZW5lcmF0b3I+IHBhcnNlcihjb250ZXh0LCBz
b3VyY2UsIGluZm8pOwogICAgIGlmICghcGFyc2VyLnBhcnNlKCkpCiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
QVNNQjNJUkdlbmVyYXRvci5oCmluZGV4IGE0NTg5MmYyNDkzOGY4MzEyYTI0MGEyNDBmN2ZiZjBj
MTVhNjg0NmYuLmMwZTdmN2Q2MzlmNTMzNDk5OTQ5NTU5MzUzMDA3MWQwOWYzYmU4NWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuaApAQCAtMzUs
NyArMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIFdBU00gewogCi1zdGQ6OnVu
aXF1ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0mLCBWZWN0b3I8dWlu
dDhfdD4mLCBXQVNNRnVuY3Rpb25JbmZvcm1hdGlvbiwgdW5zaWduZWQgb3B0TGV2ZWwgPSAxKTsK
K3N0ZDo6dW5pcXVlX3B0cjxCMzo6Q29tcGlsYXRpb24+IHBhcnNlQW5kQ29tcGlsZShWTSYsIFZl
Y3Rvcjx1aW50OF90PiYsIEZ1bmN0aW9uSW5mb3JtYXRpb24sIHVuc2lnbmVkIG9wdExldmVsID0g
MSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdBU00KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TUZvcm1hdC5oCmluZGV4IDM5YzdjZjI5NGUyYzMxM2RhODA2NTFmODJjYjU4ODc5M2Y3N2U1NDku
Ljk3NWY4MmJkNjhhNWI0NmQxODE2YTQ0OWJkNGI2OTAzOGRlYTQwNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNRm9ybWF0LmgKQEAgLTQ0LDYgKzQ0LDcgQEAKIAogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIkIzVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNTEsNTIgKzUyLDUx
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU0Z1bmN0aW9uOwogCi1lbnVtIGNsYXNzIFdB
U01WYWx1ZVR5cGUgOiB1aW50OF90IHsKLSAgICBJMzIsCi0gICAgSTY0LAotICAgIEYzMiwKLSAg
ICBGNjQsCi0gICAgTnVtYmVyT2ZUeXBlcwotfTsKK25hbWVzcGFjZSBXQVNNIHsKIAotZW51bSBj
bGFzcyBXQVNNRnVuY3Rpb25SZXR1cm5UeXBlIDogdWludDhfdCB7Ci0gICAgSTMyLAotICAgIEk2
NCwKLSAgICBGMzIsCi0gICAgRjY0LAotICAgIFZvaWQsCi0gICAgTnVtYmVyT2ZFeHByZXNzaW9u
VHlwZXMKLX07Cit1c2luZyBCMzo6VHlwZTsKK3VzaW5nIEIzOjpJbnQzMjsKK3VzaW5nIEIzOjpJ
bnQ2NDsKK3VzaW5nIEIzOjpGbG9hdDsKK3VzaW5nIEIzOjpEb3VibGU7CiAKLXN0cnVjdCBXQVNN
U2lnbmF0dXJlIHsKLSAgICBXQVNNRnVuY3Rpb25SZXR1cm5UeXBlIHJldHVyblR5cGU7Ci0gICAg
VmVjdG9yPFdBU01WYWx1ZVR5cGU+IGFyZ3VtZW50czsKK3N0YXRpY19hc3NlcnQoSW50MzIgPT0g
MCwgIldBU00gbmVlZHMgQjM6OlR5cGU6OkludDMyIHRvIGhhdmUgdGhlIHZhbHVlIDAiKTsKK3N0
YXRpY19hc3NlcnQoSW50NjQgPT0gMSwgIldBU00gbmVlZHMgQjM6OlR5cGU6OkludDY0IHRvIGhh
dmUgdGhlIHZhbHVlIDEiKTsKK3N0YXRpY19hc3NlcnQoRmxvYXQgPT0gMiwgIldBU00gbmVlZHMg
QjM6OlR5cGU6OkZsb2F0IHRvIGhhdmUgdGhlIHZhbHVlIDIiKTsKK3N0YXRpY19hc3NlcnQoRG91
YmxlID09IDMsICJXQVNNIG5lZWRzIEIzOjpUeXBlOjpEb3VibGUgdG8gaGF2ZSB0aGUgdmFsdWUg
MyIpOworCitzdHJ1Y3QgU2lnbmF0dXJlIHsKKyAgICBUeXBlIHJldHVyblR5cGU7CisgICAgVmVj
dG9yPFR5cGU+IGFyZ3VtZW50czsKIH07CiAKLXN0cnVjdCBXQVNNRnVuY3Rpb25JbXBvcnQgewor
c3RydWN0IEZ1bmN0aW9uSW1wb3J0IHsKICAgICBTdHJpbmcgZnVuY3Rpb25OYW1lOwogfTsKIAot
c3RydWN0IFdBU01GdW5jdGlvbkltcG9ydFNpZ25hdHVyZSB7CitzdHJ1Y3QgRnVuY3Rpb25JbXBv
cnRTaWduYXR1cmUgewogICAgIHVpbnQzMl90IHNpZ25hdHVyZUluZGV4OwogICAgIHVpbnQzMl90
IGZ1bmN0aW9uSW1wb3J0SW5kZXg7CiB9OwogCi1zdHJ1Y3QgV0FTTUZ1bmN0aW9uRGVjbGFyYXRp
b24geworc3RydWN0IEZ1bmN0aW9uRGVjbGFyYXRpb24gewogICAgIHVpbnQzMl90IHNpZ25hdHVy
ZUluZGV4OwogfTsKIAotc3RydWN0IFdBU01GdW5jdGlvblBvaW50ZXJUYWJsZSB7CitzdHJ1Y3Qg
RnVuY3Rpb25Qb2ludGVyVGFibGUgewogICAgIHVpbnQzMl90IHNpZ25hdHVyZUluZGV4OwogICAg
IFZlY3Rvcjx1aW50MzJfdD4gZnVuY3Rpb25JbmRpY2VzOwogICAgIFZlY3RvcjxKU0Z1bmN0aW9u
Kj4gZnVuY3Rpb25zOwogfTsKIAotc3RydWN0IFdBU01GdW5jdGlvbkluZm9ybWF0aW9uIHsKK3N0
cnVjdCBGdW5jdGlvbkluZm9ybWF0aW9uIHsKKyAgICBTaWduYXR1cmUqIHNpZ25hdHVyZTsKICAg
ICBzaXplX3Qgc3RhcnQ7CiAgICAgc2l6ZV90IGVuZDsKIH07CiAKK30gLy8gbmFtZXNwYWNlIFdB
U00KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJz
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCmlu
ZGV4IDQ5NDY5ZjVkZjg3NmE5YTAwMDlhYTYzMjdlOTdiNWUxMDQzZjc1MWQuLjNlZjVkNDNhYzA0
ZDg0MDNkYmUxMTNhMjdjODI0YjdjZGUxNjMwZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCkBAIC0zNSwxOSArMzUsMTkgQEAgbmFtZXNw
YWNlIEpTQyB7CiBuYW1lc3BhY2UgV0FTTSB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+
Ci1jbGFzcyBXQVNNRnVuY3Rpb25QYXJzZXIgOiBwdWJsaWMgV0FTTVBhcnNlciB7CitjbGFzcyBG
dW5jdGlvblBhcnNlciA6IHB1YmxpYyBQYXJzZXIgewogcHVibGljOgogICAgIHR5cGVkZWYgdHlw
ZW5hbWUgQ29udGV4dDo6RXhwcmVzc2lvblR5cGUgRXhwcmVzc2lvblR5cGU7CiAKLSAgICBXQVNN
RnVuY3Rpb25QYXJzZXIoQ29udGV4dCYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc291cmNlQnVm
ZmVyLCBjb25zdCBXQVNNRnVuY3Rpb25JbmZvcm1hdGlvbiYpOworICAgIEZ1bmN0aW9uUGFyc2Vy
KENvbnRleHQmLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZUJ1ZmZlciwgY29uc3QgRnVu
Y3Rpb25JbmZvcm1hdGlvbiYpOwogCiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2Uo
KTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IHRydWU7CiAKICAgICBib29sIFdBUk5fVU5V
U0VEX1JFVFVSTiBwYXJzZUJsb2NrKCk7Ci0gICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFy
c2VFeHByZXNzaW9uKFdBU01PcFR5cGUpOworICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBh
cnNlRXhwcmVzc2lvbihPcFR5cGUpOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHVuaWZ5
Q29udHJvbChWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiwgdW5zaWduZWQgbGV2ZWwpOwogCiAgICAg
T3B0aW9uYWw8VmVjdG9yPEV4cHJlc3Npb25UeXBlPj4mIHN0YWNrRm9yQ29udHJvbExldmVsKHVu
c2lnbmVkIGxldmVsKTsKQEAgLTU3LDE0ICs1NywxNSBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgQ29udGV4dD4KLVdBU01GdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6V0FTTUZ1
bmN0aW9uUGFyc2VyKENvbnRleHQmIGNvbnRleHQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc291
cmNlQnVmZmVyLCBjb25zdCBXQVNNRnVuY3Rpb25JbmZvcm1hdGlvbiYgaW5mbykKLSAgICA6IFdB
U01QYXJzZXIoc291cmNlQnVmZmVyLCBpbmZvLnN0YXJ0LCBpbmZvLmVuZCkKK0Z1bmN0aW9uUGFy
c2VyPENvbnRleHQ+OjpGdW5jdGlvblBhcnNlcihDb250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHNvdXJjZUJ1ZmZlciwgY29uc3QgRnVuY3Rpb25JbmZvcm1hdGlvbiYgaW5m
bykKKyAgICA6IFBhcnNlcihzb3VyY2VCdWZmZXIsIGluZm8uc3RhcnQsIGluZm8uZW5kKQogICAg
ICwgbV9jb250ZXh0KGNvbnRleHQpCiB7CisgICAgbV9jb250ZXh0LmFkZEFyZ3VtZW50cyhpbmZv
LnNpZ25hdHVyZS0+YXJndW1lbnRzKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29udGV4dD4K
LWJvb2wgV0FTTUZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZSgpCitib29sIEZ1bmN0aW9u
UGFyc2VyPENvbnRleHQ+OjpwYXJzZSgpCiB7CiAgICAgdWludDMyX3QgbG9jYWxDb3VudDsKICAg
ICBpZiAoIXBhcnNlVmFyVUludDMyKGxvY2FsQ291bnQpKQpAQCAtNzUsNyArNzYsNyBAQCBib29s
IFdBU01GdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2UoKQogICAgICAgICBpZiAoIXBhcnNl
VUludDMyKG51bWJlck9mTG9jYWxzV2l0aFR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgIFdBU01WYWx1ZVR5cGUgdHlwZU9mTG9jYWw7CisgICAgICAgIFR5cGUgdHlw
ZU9mTG9jYWw7CiAgICAgICAgIGlmICghcGFyc2VWYWx1ZVR5cGUodHlwZU9mTG9jYWwpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC04NiwyMCArODcsMjAgQEAgYm9vbCBXQVNNRnVu
Y3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlKCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29u
dGV4dD4KLWJvb2wgV0FTTUZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUJsb2NrKCkKK2Jv
b2wgRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlQmxvY2soKQogewogICAgIHdoaWxlICh0
cnVlKSB7CiAgICAgICAgIHVpbnQ4X3Qgb3A7CiAgICAgICAgIGlmICghcGFyc2VVSW50NyhvcCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKCFwYXJzZUV4cHJlc3Np
b24oc3RhdGljX2Nhc3Q8V0FTTU9wVHlwZT4ob3ApKSkgeworICAgICAgICBpZiAoIXBhcnNlRXhw
cmVzc2lvbihzdGF0aWNfY2FzdDxPcFR5cGU+KG9wKSkpIHsKICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiZmFpbGVkIHRvIHByb2Nlc3Mgb3A6Iiwg
b3ApOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KG9wID09IFdBU01PcFR5cGU6OkVuZCkKKyAgICAgICAgaWYgKG9wID09IE9wVHlwZTo6RW5kKQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0xMDcsNyArMTA4LDcgQEAgYm9vbCBXQVNN
RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlQmxvY2soKQogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDb250ZXh0PgotYm9vbCBXQVNNRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhw
cmVzc2lvbihXQVNNT3BUeXBlIG9wKQorYm9vbCBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFy
c2VFeHByZXNzaW9uKE9wVHlwZSBvcCkKIHsKICAgICBzd2l0Y2ggKG9wKSB7CiAjZGVmaW5lIENS
RUFURV9DQVNFKG5hbWUsIGlkLCBiM29wKSBjYXNlIG5hbWU6CkBAIC0xMTUsNyArMTE2LDcgQEAg
Ym9vbCBXQVNNRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbihXQVNNT3BU
eXBlIG9wKQogICAgICAgICBFeHByZXNzaW9uVHlwZSBsZWZ0ID0gbV9leHByZXNzaW9uU3RhY2su
dGFrZUxhc3QoKTsKICAgICAgICAgRXhwcmVzc2lvblR5cGUgcmlnaHQgPSBtX2V4cHJlc3Npb25T
dGFjay50YWtlTGFzdCgpOwogICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQ7Ci0gICAgICAg
IGlmICghbV9jb250ZXh0LmJpbmFyeU9wKHN0YXRpY19jYXN0PFdBU01CaW5hcnlPcFR5cGU+KG9w
KSwgbGVmdCwgcmlnaHQsIHJlc3VsdCkpCisgICAgICAgIGlmICghbV9jb250ZXh0LmJpbmFyeU9w
KHN0YXRpY19jYXN0PEJpbmFyeU9wVHlwZT4ob3ApLCBsZWZ0LCByaWdodCwgcmVzdWx0KSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suYXBwZW5k
KHJlc3VsdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTI0LDI4ICsxMjUsNDAgQEAgYm9v
bCBXQVNNRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbihXQVNNT3BUeXBl
IG9wKQogICAgIEZPUl9FQUNIX1dBU01fVU5BUllfT1AoQ1JFQVRFX0NBU0UpIHsKICAgICAgICAg
RXhwcmVzc2lvblR5cGUgYXJnID0gbV9leHByZXNzaW9uU3RhY2sudGFrZUxhc3QoKTsKICAgICAg
ICAgRXhwcmVzc2lvblR5cGUgcmVzdWx0OwotICAgICAgICBpZiAoIW1fY29udGV4dC51bmFyeU9w
KHN0YXRpY19jYXN0PFdBU01VbmFyeU9wVHlwZT4ob3ApLCBhcmcsIHJlc3VsdCkpCisgICAgICAg
IGlmICghbV9jb250ZXh0LnVuYXJ5T3Aoc3RhdGljX2Nhc3Q8VW5hcnlPcFR5cGU+KG9wKSwgYXJn
LCByZXN1bHQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBtX2V4cHJlc3Np
b25TdGFjay5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI3Vu
ZGVmIENSRUFURV9DQVNFCiAKLSAgICBjYXNlIFdBU01PcFR5cGU6OkkzMkNvbnN0OiB7CisgICAg
Y2FzZSBPcFR5cGU6OkkzMkNvbnN0OiB7CiAgICAgICAgIHVpbnQzMl90IGNvbnN0YW50OwogICAg
ICAgICBpZiAoIXBhcnNlVmFyVUludDMyKGNvbnN0YW50KSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgbV9leHByZXNzaW9uU3RhY2suYXBwZW5kKG1fY29udGV4dC5hZGRDb25z
dGFudChXQVNNVmFsdWVUeXBlOjpJMzIsIGNvbnN0YW50KSk7CisgICAgICAgIG1fZXhwcmVzc2lv
blN0YWNrLmFwcGVuZChtX2NvbnRleHQuYWRkQ29uc3RhbnQoSW50MzIsIGNvbnN0YW50KSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGNhc2UgV0FTTU9wVHlwZTo6QmxvY2s6
IHsKKyAgICBjYXNlIE9wVHlwZTo6R2V0TG9jYWw6IHsKKyAgICAgICAgdWludDMyX3QgaW5kZXg7
CisgICAgICAgIGlmICghcGFyc2VWYXJVSW50MzIoaW5kZXgpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQ7CisgICAgICAgIGlmICghbV9j
b250ZXh0LmdldExvY2FsKGluZGV4LCByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFwcGVuZChyZXN1bHQpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBjYXNlIE9wVHlwZTo6QmxvY2s6IHsKICAgICAgICAg
aWYgKCFtX2NvbnRleHQuYWRkQmxvY2soKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgcmV0dXJuIHBhcnNlQmxvY2soKTsKICAgICB9CiAKLSAgICBjYXNlIFdBU01PcFR5cGU6
OlJldHVybjogeworICAgIGNhc2UgT3BUeXBlOjpSZXR1cm46IHsKICAgICAgICAgdWludDhfdCBy
ZXR1cm5Db3VudDsKICAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQxKHJldHVybkNvdW50KSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1Niw3ICsxNjksNyBAQCBib29sIFdBU01GdW5j
dGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKFdBU01PcFR5cGUgb3ApCiAgICAg
ICAgIHJldHVybiBtX2NvbnRleHQuYWRkUmV0dXJuKHJldHVyblZhbHVlcyk7CiAgICAgfQogCi0g
ICAgY2FzZSBXQVNNT3BUeXBlOjpFbmQ6CisgICAgY2FzZSBPcFR5cGU6OkVuZDoKICAgICAgICAg
cmV0dXJuIG1fY29udGV4dC5lbmRCbG9jayhtX2V4cHJlc3Npb25TdGFjayk7CiAKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwCmluZGV4
IGZiMmMzMTI4MmQyNGQwYzRjYTdhYWVhNGNjNmVlYzJhMGQyYmQwZWEuLmU3YTVhNGU0NjI4MTVi
ZjQxMGIwN2NkZjUwNmNkNWU4NTljMzBkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBX
QVNNIHsKIAogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCi1ib29sIFdBU01N
b2R1bGVQYXJzZXI6OnBhcnNlKCkKK2Jvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZSgpCiB7CiAgICAg
aWYgKG1fc291cmNlTGVuZ3RoIDwgOCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTksNyAr
NTksNyBAQCBib29sIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlKCkKICAgICBpZiAodmVyYm9zZSkK
ICAgICAgICAgZGF0YUxvZ0xuKCJQYXNzZWQgcHJvY2Vzc2luZyBoZWFkZXIuIik7CiAKLSAgICBX
QVNNU2VjdGlvbnM6OlNlY3Rpb24gcHJldmlvdXNTZWN0aW9uID0gV0FTTVNlY3Rpb25zOjpTZWN0
aW9uOjpVbmtub3duOworICAgIFNlY3Rpb25zOjpTZWN0aW9uIHByZXZpb3VzU2VjdGlvbiA9IFNl
Y3Rpb25zOjpVbmtub3duOwogICAgIHdoaWxlIChtX29mZnNldCA8IG1fc291cmNlTGVuZ3RoKSB7
CiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZ0xuKCJTdGFydGluZyB0
byBwYXJzZSBuZXh0IHNlY3Rpb24gYXQgb2Zmc2V0OiAiLCBtX29mZnNldCk7CkBAIC03MSw4ICs3
MSw4IEBAIGJvb2wgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICBpZiAobV9vZmZz
ZXQgKyBzZWN0aW9uTmFtZUxlbmd0aCArIG1heExFQkJ5dGVMZW5ndGggPj0gbV9zb3VyY2VMZW5n
dGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgV0FTTVNlY3Rpb25zOjpT
ZWN0aW9uIHNlY3Rpb24gPSBXQVNNU2VjdGlvbnM6Omxvb2t1cChtX3NvdXJjZS5kYXRhKCkgKyBt
X29mZnNldCwgc2VjdGlvbk5hbWVMZW5ndGgpOwotICAgICAgICBpZiAoIVdBU01TZWN0aW9uczo6
dmFsaWRhdGVPcmRlcihwcmV2aW91c1NlY3Rpb24sIHNlY3Rpb24pKQorICAgICAgICBTZWN0aW9u
czo6U2VjdGlvbiBzZWN0aW9uID0gU2VjdGlvbnM6Omxvb2t1cChtX3NvdXJjZS5kYXRhKCkgKyBt
X29mZnNldCwgc2VjdGlvbk5hbWVMZW5ndGgpOworICAgICAgICBpZiAoIVNlY3Rpb25zOjp2YWxp
ZGF0ZU9yZGVyKHByZXZpb3VzU2VjdGlvbiwgc2VjdGlvbikpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIG1fb2Zmc2V0ICs9IHNlY3Rpb25OYW1lTGVuZ3RoOwogCkBAIC04Mywx
MCArODMsMTAgQEAgYm9vbCBXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgIHVuc2ln
bmVkIGVuZCA9IG1fb2Zmc2V0ICsgc2VjdGlvbkxlbmd0aDsKIAogICAgICAgICBzd2l0Y2ggKHNl
Y3Rpb24pIHsKLSAgICAgICAgY2FzZSBXQVNNU2VjdGlvbnM6OlNlY3Rpb246OkVuZDoKKyAgICAg
ICAgY2FzZSBTZWN0aW9uczo6RW5kOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAg
ICAgY2FzZSBXQVNNU2VjdGlvbnM6OlNlY3Rpb246OkZ1bmN0aW9uVHlwZXM6IHsKKyAgICAgICAg
Y2FzZSBTZWN0aW9uczo6RnVuY3Rpb25UeXBlczogewogICAgICAgICAgICAgaWYgKHZlcmJvc2Up
CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJQYXJzaW5nIHR5cGVzLiIpOwogICAgICAgICAg
ICAgaWYgKCFwYXJzZUZ1bmN0aW9uVHlwZXMoKSkKQEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBXQVNN
TW9kdWxlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0g
ICAgICAgIGNhc2UgV0FTTVNlY3Rpb25zOjpTZWN0aW9uOjpTaWduYXR1cmVzOiB7CisgICAgICAg
IGNhc2UgU2VjdGlvbnM6OlNpZ25hdHVyZXM6IHsKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQog
ICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiUGFyc2luZyBmdW5jdGlvbiBzaWduYXR1cmVzLiIp
OwogICAgICAgICAgICAgaWYgKCFwYXJzZUZ1bmN0aW9uU2lnbmF0dXJlcygpKQpAQCAtMTAyLDcg
KzEwMiw3IEBAIGJvb2wgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIFdBU01TZWN0aW9uczo6U2VjdGlvbjo6RGVm
aW5pdGlvbnM6IHsKKyAgICAgICAgY2FzZSBTZWN0aW9uczo6RGVmaW5pdGlvbnM6IHsKICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiUGFyc2luZyBm
dW5jdGlvbiBkZWZpbml0aW9ucy4iKTsKICAgICAgICAgICAgIGlmICghcGFyc2VGdW5jdGlvbkRl
ZmluaXRpb25zKCkpCkBAIC0xMTAsNyArMTEwLDcgQEAgYm9vbCBXQVNNTW9kdWxlUGFyc2VyOjpw
YXJzZSgpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2UgV0FT
TVNlY3Rpb25zOjpTZWN0aW9uOjpVbmtub3duOiB7CisgICAgICAgIGNhc2UgU2VjdGlvbnM6OlVu
a25vd246IHsKICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgIGRhdGFM
b2dMbigiVW5rbm93biBzZWN0aW9uLCBza2lwcGluZy4iKTsKICAgICAgICAgICAgIG1fb2Zmc2V0
ICs9IHNlY3Rpb25MZW5ndGg7CkBAIC0xMzEsNyArMTMxLDcgQEAgYm9vbCBXQVNNTW9kdWxlUGFy
c2VyOjpwYXJzZSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV0FTTU1vZHVsZVBhcnNl
cjo6cGFyc2VGdW5jdGlvblR5cGVzKCkKK2Jvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9u
VHlwZXMoKQogewogICAgIHVpbnQzMl90IGNvdW50OwogICAgIGlmICghcGFyc2VWYXJVSW50MzIo
Y291bnQpKQpAQCAtMTQwLDYgKzE0MCw4IEBAIGJvb2wgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2VG
dW5jdGlvblR5cGVzKCkKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZ0xuKCJjb3Vu
dDogIiwgY291bnQpOwogCisgICAgbV9zaWduYXR1cmVzLnJlc2l6ZShjb3VudCk7CisKICAgICBm
b3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICB1aW50OF90IHR5
cGU7CiAgICAgICAgIGlmICghcGFyc2VVSW50Nyh0eXBlKSkKQEAgLTE1NywzNSArMTU5LDM2IEBA
IGJvb2wgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvblR5cGVzKCkKICAgICAgICAgaWYg
KHZlcmJvc2UpCiAgICAgICAgICAgICBkYXRhTG9nTG4oImFyZ3VtZW50Q291bnQ6ICIsIGFyZ3Vt
ZW50Q291bnQpOwogCi0gICAgICAgIFZlY3RvcjxXQVNNVmFsdWVUeXBlPiBhcmd1bWVudFR5cGVz
OworICAgICAgICBWZWN0b3I8VHlwZT4gYXJndW1lbnRUeXBlczsKKyAgICAgICAgYXJndW1lbnRU
eXBlcy5yZXNpemUoYXJndW1lbnRDb3VudCk7CisKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkgewotICAgICAgICAgICAgaWYgKCFwYXJzZVVJbnQ3
KHR5cGUpIHx8IHR5cGUgPj0gc3RhdGljX2Nhc3Q8dWludDhfdD4oV0FTTVZhbHVlVHlwZTo6TnVt
YmVyT2ZUeXBlcykpCisgICAgICAgICAgICBpZiAoIXBhcnNlVUludDcodHlwZSkgfHwgdHlwZSA+
PSBzdGF0aWNfY2FzdDx1aW50OF90PihUeXBlOjpMYXN0VmFsdWVUeXBlKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBhcmd1bWVudFR5cGVzLmFwcGVuZChzdGF0
aWNfY2FzdDxXQVNNVmFsdWVUeXBlPih0eXBlKSk7CisgICAgICAgICAgICBhcmd1bWVudFR5cGVz
LmFwcGVuZChzdGF0aWNfY2FzdDxUeXBlPih0eXBlKSk7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoIXBhcnNlVmFyVUludDEodHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIFdBU01GdW5jdGlvblJldHVyblR5cGUgcmV0dXJuVHlwZTsKKyAgICAgICAgVHlwZSByZXR1
cm5UeXBlOwogCiAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZ0xuKHR5
cGUpOwogCiAgICAgICAgIGlmICh0eXBlKSB7Ci0gICAgICAgICAgICBXQVNNVmFsdWVUeXBlIHZh
bHVlOworICAgICAgICAgICAgVHlwZSB2YWx1ZTsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1
ZVR5cGUodmFsdWUpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IHJldHVyblR5cGUgPSBzdGF0aWNfY2FzdDxXQVNNRnVuY3Rpb25SZXR1cm5UeXBlPih2YWx1ZSk7
CisgICAgICAgICAgICByZXR1cm5UeXBlID0gc3RhdGljX2Nhc3Q8VHlwZT4odmFsdWUpOwogICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVyblR5cGUgPSBXQVNNRnVuY3Rpb25SZXR1cm5U
eXBlOjpWb2lkOworICAgICAgICAgICAgcmV0dXJuVHlwZSA9IFR5cGU6OlZvaWQ7CiAKLSAgICAg
ICAgLy8gVE9ETzogQWN0dWFsbHkgZG8gc29tZXRoaW5nIHdpdGggdGhpcyBkYXRhLi4uCi0gICAg
ICAgIFVOVVNFRF9QQVJBTShyZXR1cm5UeXBlKTsKKyAgICAgICAgbV9zaWduYXR1cmVzW2ldID0g
eyByZXR1cm5UeXBlLCBXVEZNb3ZlKGFyZ3VtZW50VHlwZXMpIH07CiAgICAgfQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25TaWduYXR1
cmVzKCkKK2Jvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uU2lnbmF0dXJlcygpCiB7CiAg
ICAgdWludDMyX3QgY291bnQ7CiAgICAgaWYgKCFwYXJzZVZhclVJbnQzMihjb3VudCkpCkBAIC0x
OTcsMTIgKzIwMCwxNyBAQCBib29sIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb25TaWdu
YXR1cmVzKCkKICAgICAgICAgdWludDMyX3QgdHlwZU51bWJlcjsKICAgICAgICAgaWYgKCFwYXJz
ZVZhclVJbnQzMih0eXBlTnVtYmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICBpZiAodHlwZU51bWJlciA+PSBtX3NpZ25hdHVyZXMuc2l6ZSgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIG1fZnVuY3Rpb25zW2ldLnNpZ25hdHVyZSA9ICZtX3Np
Z25hdHVyZXNbdHlwZU51bWJlcl07CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvbkRlZmluaXRpb25zKCkKK2Jvb2wgTW9k
dWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbnMoKQogewogICAgIHVpbnQzMl90IGNv
dW50OwogICAgIGlmICghcGFyc2VWYXJVSW50MzIoY291bnQpKQpAQCAtMjE2LDcgKzIyNCw3IEBA
IGJvb2wgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvbkRlZmluaXRpb25zKCkKICAgICAg
ICAgaWYgKCFwYXJzZVZhclVJbnQzMihmdW5jdGlvblNpemUpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgICAgIFdBU01GdW5jdGlvbkluZm9ybWF0aW9uJiBpbmZvID0gbV9mdW5j
dGlvbnNbaV07CisgICAgICAgIEZ1bmN0aW9uSW5mb3JtYXRpb24mIGluZm8gPSBtX2Z1bmN0aW9u
c1tpXTsKICAgICAgICAgaW5mby5zdGFydCA9IG1fb2Zmc2V0OwogICAgICAgICBpbmZvLmVuZCA9
IG1fb2Zmc2V0ICsgZnVuY3Rpb25TaXplOwogICAgICAgICBtX29mZnNldCA9IGluZm8uZW5kOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5oCmluZGV4IGMx
NjUwOTliZjBhYWNjZDY0ZTkxNmQwMTBkYzU4ZTJlMjI2NWZmNjMuLmMzN2FlYTk1MGM5OWU0ZDYw
YjNmYzlkMThlYjVmMzY2ZTdjZWNhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNTW9kdWxlUGFyc2VyLmgKQEAgLTM1LDE5ICszNSwxOSBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogbmFtZXNwYWNlIFdBU00gewogCi1jbGFzcyBXQVNNTW9kdWxlUGFyc2VyIDogcHVibGljIFdB
U01QYXJzZXIgeworY2xhc3MgTW9kdWxlUGFyc2VyIDogcHVibGljIFBhcnNlciB7CiBwdWJsaWM6
CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWFnaWNOdW1iZXIgPSAweGM7CiAKLSAgICBX
QVNNTW9kdWxlUGFyc2VyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc291cmNlQnVmZmVyKQotICAg
ICAgICA6IFdBU01QYXJzZXIoc291cmNlQnVmZmVyLCAwLCBzb3VyY2VCdWZmZXIuc2l6ZSgpKQor
ICAgIE1vZHVsZVBhcnNlcihjb25zdCBWZWN0b3I8dWludDhfdD4mIHNvdXJjZUJ1ZmZlcikKKyAg
ICAgICAgOiBQYXJzZXIoc291cmNlQnVmZmVyLCAwLCBzb3VyY2VCdWZmZXIuc2l6ZSgpKQogICAg
IHsKICAgICB9CiAKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZSgpOwogCi0gICAg
Y29uc3QgVmVjdG9yPFdBU01GdW5jdGlvbkluZm9ybWF0aW9uPiYgZnVuY3Rpb25JbmZvcm1hdGlv
bigpIHsgcmV0dXJuIG1fZnVuY3Rpb25zOyB9CisgICAgY29uc3QgVmVjdG9yPEZ1bmN0aW9uSW5m
b3JtYXRpb24+JiBmdW5jdGlvbkluZm9ybWF0aW9uKCkgeyByZXR1cm4gbV9mdW5jdGlvbnM7IH0K
IAogcHJpdmF0ZToKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUZ1bmN0aW9uVHlw
ZXMoKTsKQEAgLTU1LDkgKzU1LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9S
RVRVUk4gcGFyc2VGdW5jdGlvbkRlZmluaXRpb25zKCk7CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9S
RVRVUk4gcGFyc2VGdW5jdGlvbkRlZmluaXRpb24odWludDMyX3QgbnVtYmVyKTsKICAgICBib29s
IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUJsb2NrKCk7Ci0gICAgYm9vbCBXQVJOX1VOVVNFRF9S
RVRVUk4gcGFyc2VFeHByZXNzaW9uKFdBU01PcFR5cGUpOworICAgIGJvb2wgV0FSTl9VTlVTRURf
UkVUVVJOIHBhcnNlRXhwcmVzc2lvbihPcFR5cGUpOwogCi0gICAgVmVjdG9yPFdBU01GdW5jdGlv
bkluZm9ybWF0aW9uPiBtX2Z1bmN0aW9uczsKKyAgICBWZWN0b3I8RnVuY3Rpb25JbmZvcm1hdGlv
bj4gbV9mdW5jdGlvbnM7CisgICAgVmVjdG9yPFNpZ25hdHVyZT4gbV9zaWduYXR1cmVzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV0FTTQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV0FTTU9wcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU9wcy5oCmlu
ZGV4IDVmZDZiYmY1ZGVmNTM3MGMzMDRlNTExNDgzMDEyYzQ1NTk2YTMyZDMuLmMxZGI2ZTk3ODQx
MTdkMDhiMTU0ZGNjYThjYWE0YjUxYmZhMTQ5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01PcHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
QVNNT3BzLmgKQEAgLTMyLDcgKzMyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgV0FT
TSB7CiAKICNkZWZpbmUgRk9SX0VBQ0hfV0FTTV9TUEVDSUFMX09QKG1hY3JvKSBcCi0gICAgbWFj
cm8oSTMyQ29uc3QsIDB4MTAsIE5BKQorICAgIG1hY3JvKEkzMkNvbnN0LCAweDEwLCBOQSkgXAor
ICAgIG1hY3JvKEdldExvY2FsLCAweDE0LCBOQSkKIAogI2RlZmluZSBGT1JfRUFDSF9XQVNNX0NP
TlRST0xfRkxPV19PUChtYWNybykgXAogICAgIG1hY3JvKEJsb2NrLCAweDAxLCBOQSkgXApAQCAt
MTA2LDE1ICsxMDcsMTUgQEAgbmFtZXNwYWNlIFdBU00gewogCiAjZGVmaW5lIENSRUFURV9FTlVN
X1ZBTFVFKG5hbWUsIGlkLCBiM29wKSBuYW1lID0gaWQsCiAKLWVudW0gV0FTTU9wVHlwZSA6IHVp
bnQ4X3QgeworZW51bSBPcFR5cGUgOiB1aW50OF90IHsKICAgICBGT1JfRUFDSF9XQVNNX09QKENS
RUFURV9FTlVNX1ZBTFVFKQogfTsKIAotZW51bSBjbGFzcyBXQVNNQmluYXJ5T3BUeXBlIDogdWlu
dDhfdCB7CitlbnVtIGNsYXNzIEJpbmFyeU9wVHlwZSA6IHVpbnQ4X3QgewogICAgIEZPUl9FQUNI
X1dBU01fQklOQVJZX09QKENSRUFURV9FTlVNX1ZBTFVFKQogfTsKIAotZW51bSBjbGFzcyBXQVNN
VW5hcnlPcFR5cGUgOiB1aW50OF90IHsKK2VudW0gY2xhc3MgVW5hcnlPcFR5cGUgOiB1aW50OF90
IHsKICAgICBGT1JfRUFDSF9XQVNNX1VOQVJZX09QKENSRUFURV9FTlVNX1ZBTFVFKQogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBhcnNlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVBhcnNlci5oCmluZGV4IDFhZjgxNDMzYWM2NTkx
MTEwN2QxZDQ4ZDI3YzQ5NjViYTgyMmM5NDIuLmRmOWU4YjM1MzgxYWJiZTdlMDA1N2M4MDk5NjA5
MDYwM2YwMDRjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Q
YXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGFyc2VyLmgKQEAg
LTM4LDkgKzM4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBXQVNNIHsKIAotY2xh
c3MgV0FTTVBhcnNlciB7CitjbGFzcyBQYXJzZXIgewogcHJvdGVjdGVkOgotICAgIFdBU01QYXJz
ZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jiwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgZW5kKTsKKyAg
ICBQYXJzZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jiwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgZW5k
KTsKIAogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGNvbnN1bWVDaGFyYWN0ZXIoY2hhcik7
CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gY29uc3VtZVN0cmluZyhjb25zdCBjaGFyKik7
CkBAIC01MSwxNCArNTEsMTQgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVU
VVJOIHBhcnNlVmFyVUludDMyKHVpbnQzMl90JiByZXN1bHQpIHsgcmV0dXJuIGRlY29kZVVJbnQz
MihtX3NvdXJjZS5kYXRhKCksIG1fc291cmNlTGVuZ3RoLCBtX29mZnNldCwgcmVzdWx0KTsgfQog
CiAKLSAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVZhbHVlVHlwZShXQVNNVmFsdWVU
eXBlJiByZXN1bHQpOworICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVmFsdWVUeXBl
KFR5cGUmIHJlc3VsdCk7CiAKICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIG1fc291cmNlOwog
ICAgIHNpemVfdCBtX3NvdXJjZUxlbmd0aDsKICAgICBzaXplX3QgbV9vZmZzZXQ7CiB9OwogCi1B
TFdBWVNfSU5MSU5FIFdBU01QYXJzZXI6OldBU01QYXJzZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBzb3VyY2VCdWZmZXIsIHNpemVfdCBzdGFydCwgc2l6ZV90IGVuZCkKK0FMV0FZU19JTkxJTkUg
UGFyc2VyOjpQYXJzZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzb3VyY2VCdWZmZXIsIHNpemVf
dCBzdGFydCwgc2l6ZV90IGVuZCkKICAgICA6IG1fc291cmNlKHNvdXJjZUJ1ZmZlcikKICAgICAs
IG1fc291cmNlTGVuZ3RoKGVuZCkKICAgICAsIG1fb2Zmc2V0KHN0YXJ0KQpAQCAtNjcsNyArNjcs
NyBAQCBBTFdBWVNfSU5MSU5FIFdBU01QYXJzZXI6OldBU01QYXJzZXIoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBzb3VyY2VCdWZmZXIsIHNpemVfdAogICAgIEFTU0VSVChzdGFydCA8IGVuZCk7CiB9
CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBXQVNNUGFyc2VyOjpjb25zdW1lQ2hhcmFjdGVyKGNoYXIg
YykKK0FMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI6OmNvbnN1bWVDaGFyYWN0ZXIoY2hhciBjKQog
ewogICAgIGlmIChtX29mZnNldCA+PSBtX3NvdXJjZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtNzgsNyArNzgsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgV0FTTVBhcnNlcjo6Y29u
c3VtZUNoYXJhY3RlcihjaGFyIGMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1BTFdBWVNfSU5M
SU5FIGJvb2wgV0FTTVBhcnNlcjo6Y29uc3VtZVN0cmluZyhjb25zdCBjaGFyKiBzdHIpCitBTFdB
WVNfSU5MSU5FIGJvb2wgUGFyc2VyOjpjb25zdW1lU3RyaW5nKGNvbnN0IGNoYXIqIHN0cikKIHsK
ICAgICB1bnNpZ25lZCBzdGFydCA9IG1fb2Zmc2V0OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IHN0cltpXTsgaSsrKSB7CkBAIC05MCw3ICs5MCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBXQVNN
UGFyc2VyOjpjb25zdW1lU3RyaW5nKGNvbnN0IGNoYXIqIHN0cikKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotQUxXQVlTX0lOTElORSBib29sIFdBU01QYXJzZXI6OnBhcnNlVUludDMyKHVpbnQzMl90
JiByZXN1bHQpCitBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyOjpwYXJzZVVJbnQzMih1aW50MzJf
dCYgcmVzdWx0KQogewogICAgIGlmIChtX29mZnNldCArIDQgPj0gbV9zb3VyY2VMZW5ndGgpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTk5LDcgKzk5LDcgQEAgQUxXQVlTX0lOTElORSBib29s
IFdBU01QYXJzZXI6OnBhcnNlVUludDMyKHVpbnQzMl90JiByZXN1bHQpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBXQVNNUGFyc2VyOjpwYXJzZVVJbnQ3KHVpbnQ4
X3QmIHJlc3VsdCkKK0FMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI6OnBhcnNlVUludDcodWludDhf
dCYgcmVzdWx0KQogewogICAgIGlmIChtX29mZnNldCA+PSBtX3NvdXJjZUxlbmd0aCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA3LDcgKzEwNyw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBX
QVNNUGFyc2VyOjpwYXJzZVVJbnQ3KHVpbnQ4X3QmIHJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0
IDwgMHg4MDsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIFdBU01QYXJzZXI6OnBhcnNlVmFyVUlu
dDEodWludDhfdCYgcmVzdWx0KQorQUxXQVlTX0lOTElORSBib29sIFBhcnNlcjo6cGFyc2VWYXJV
SW50MSh1aW50OF90JiByZXN1bHQpCiB7CiAgICAgdWludDMyX3QgdGVtcDsKICAgICBpZiAoIXBh
cnNlVmFyVUludDMyKHRlbXApKQpAQCAtMTE2LDE0ICsxMTYsMTQgQEAgQUxXQVlTX0lOTElORSBi
b29sIFdBU01QYXJzZXI6OnBhcnNlVmFyVUludDEodWludDhfdCYgcmVzdWx0KQogICAgIHJldHVy
biB0ZW1wIDw9IDE7CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBXQVNNUGFyc2VyOjpwYXJzZVZh
bHVlVHlwZShXQVNNVmFsdWVUeXBlJiByZXN1bHQpCitBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2Vy
OjpwYXJzZVZhbHVlVHlwZShUeXBlJiByZXN1bHQpCiB7CiAgICAgdWludDhfdCB2YWx1ZTsKICAg
ICBpZiAoIXBhcnNlVUludDcodmFsdWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KHZhbHVlID49IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFdBU01WYWx1ZVR5cGU6Ok51bWJlck9mVHlw
ZXMpKQorICAgIGlmICh2YWx1ZSA+PSBzdGF0aWNfY2FzdDx1aW50OF90PihUeXBlOjpMYXN0VmFs
dWVUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0
PFdBU01WYWx1ZVR5cGU+KHZhbHVlKTsKKyAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxUeXBlPih2
YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01QbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01QbGFuLmNwcAppbmRleCBiNDY5MzFmNjY5YWFlNjAxYWVjMGIxYjc0MGY1YjFkMjhiMGY5YjJm
Li40N2M0Y2Y2ZWU1Njc3ZDJhMWNiYjI1YWFjMWQ0YWY2ZmMwZTk3MjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTVBsYW4uY3BwCkBAIC00Myw3ICs0Myw3IEBAIFBsYW46OlBsYW4o
Vk0mIHZtLCBWZWN0b3I8dWludDhfdD4gc291cmNlKQogewogICAgIGlmICh2ZXJib3NlKQogICAg
ICAgICBkYXRhTG9nTG4oIlN0YXJ0aW5nIHBsYW4uIik7Ci0gICAgV0FTTU1vZHVsZVBhcnNlciBt
b2R1bGVQYXJzZXIoc291cmNlKTsKKyAgICBNb2R1bGVQYXJzZXIgbW9kdWxlUGFyc2VyKHNvdXJj
ZSk7CiAgICAgaWYgKCFtb2R1bGVQYXJzZXIucGFyc2UoKSkgewogICAgICAgICBkYXRhTG9nTG4o
IlBhcnNpbmcgbW9kdWxlIGZhaWxlZC4iKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTIsNyArNTIs
NyBAQCBQbGFuOjpQbGFuKFZNJiB2bSwgVmVjdG9yPHVpbnQ4X3Q+IHNvdXJjZSkKICAgICBpZiAo
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZ0xuKCJQYXJzZWQgbW9kdWxlLiIpOwogCi0gICAgZm9y
IChjb25zdCBXQVNNRnVuY3Rpb25JbmZvcm1hdGlvbiYgaW5mbyA6IG1vZHVsZVBhcnNlci5mdW5j
dGlvbkluZm9ybWF0aW9uKCkpIHsKKyAgICBmb3IgKGNvbnN0IEZ1bmN0aW9uSW5mb3JtYXRpb24m
IGluZm8gOiBtb2R1bGVQYXJzZXIuZnVuY3Rpb25JbmZvcm1hdGlvbigpKSB7CiAgICAgICAgIGlm
ICh2ZXJib3NlKQogICAgICAgICAgICAgZGF0YUxvZ0xuKCJQcm9jZXNzaW5nIGZ1bmNpb24gc3Rh
cnRpbmcgYXQ6ICIsIGluZm8uc3RhcnQsICIgYW5kIGVuZGluZyBhdDogIiwgaW5mby5lbmQpOwog
ICAgICAgICByZXN1bHQuYXBwZW5kKHBhcnNlQW5kQ29tcGlsZSh2bSwgc291cmNlLCBpbmZvKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTVNlY3Rpb25zLmNwcAppbmRleCBlNjAy
NWMxZDVjYWQzZWY3ZWYzZmU0ODliOWRmYmRhMGIyM2ZjYzYzLi5mMTk2N2ZiMmU2YzViYjY3NDU3
MmU4YzI5Y2M5OTZlYzEzYjEzMzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XQVNNU2VjdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01TZWN0aW9ucy5jcHAKQEAgLTQyLDE0ICs0MiwxNCBAQCBzdHJ1Y3QgU2VjdGlvbkRhdGEgewog
CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKLXN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzZWN0aW9uRGF0YUxlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihXQVNNU2VjdGlv
bnM6OlNlY3Rpb246OlVua25vd24pOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNlY3Rpb25EYXRh
TGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNlY3Rpb25zOjpVbmtub3duKTsKIHN0YXRp
YyBjb25zdCBTZWN0aW9uRGF0YSBzZWN0aW9uRGF0YVtzZWN0aW9uRGF0YUxlbmd0aF0gewogI2Rl
ZmluZSBDUkVBVEVfU0VDVElPTl9EQVRBKG5hbWUsIHN0cikgeyBzaXplb2Yoc3RyKSAtIDEsIHN0
ciB9LAogICAgIEZPUl9FQUNIX1dBU01fU0VDVElPTl9UWVBFKENSRUFURV9TRUNUSU9OX0RBVEEp
CiAjdW5kZWYgQ1JFQVRFX1NFQ1RJT05fREFUQQogfTsKIAotV0FTTVNlY3Rpb25zOjpTZWN0aW9u
IFdBU01TZWN0aW9uczo6bG9va3VwKGNvbnN0IHVpbnQ4X3QqIG5hbWUsIHVuc2lnbmVkIGxlbmd0
aCkKK1NlY3Rpb25zOjpTZWN0aW9uIFNlY3Rpb25zOjpsb29rdXAoY29uc3QgdWludDhfdCogbmFt
ZSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9n
TG4oIkRlY29kaW5nIHNlY3Rpb24gd2l0aCBuYW1lOiAiLCBTdHJpbmcobmFtZSwgbGVuZ3RoKSk7
CkBAIC01Nyw5ICs1Nyw5IEBAIFdBU01TZWN0aW9uczo6U2VjdGlvbiBXQVNNU2VjdGlvbnM6Omxv
b2t1cChjb25zdCB1aW50OF90KiBuYW1lLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgICAgIGlmIChz
ZWN0aW9uRGF0YVtpXS5sZW5ndGggIT0gbGVuZ3RoKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIGlmICghbWVtY21wKG5hbWUsIHNlY3Rpb25EYXRhW2ldLm5hbWUsIGxlbmd0aCkpCi0g
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V0FTTVNlY3Rpb25zOjpTZWN0aW9uPihpKTsK
KyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTZWN0aW9uczo6U2VjdGlvbj4oaSk7CiAg
ICAgfQotICAgIHJldHVybiBXQVNNU2VjdGlvbnM6OlNlY3Rpb246OlVua25vd247CisgICAgcmV0
dXJuIFNlY3Rpb25zOjpVbmtub3duOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXQVNNCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNU2VjdGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dBU01TZWN0aW9ucy5oCmluZGV4IGM5MDZhMmZhMDc3ZjExMjc0
NzNkZTZmOWNjODEzNmExMTYyOGQxNmYuLjFmYzU2ZWViODU0ZGNjZTk3NzUzMzJlMjJmYmVkNTIy
OWVlNzhkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01TZWN0
aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01TZWN0aW9ucy5oCkBA
IC0zOCw4ICszOCw4IEBAIG5hbWVzcGFjZSBXQVNNIHsKICAgICBtYWNybyhEZWZpbml0aW9ucywg
ImNvZGUiKSBcCiAgICAgbWFjcm8oRW5kLCAiZW5kIikKIAotc3RydWN0IFdBU01TZWN0aW9ucyB7
Ci0gICAgZW51bSBjbGFzcyBTZWN0aW9uIHsKK3N0cnVjdCBTZWN0aW9ucyB7CisgICAgZW51bSBT
ZWN0aW9uIHsKICNkZWZpbmUgQ1JFQVRFX1NFQ1RJT05fRU5VTShuYW1lLCBzdHIpIG5hbWUsCiAg
ICAgICAgIEZPUl9FQUNIX1dBU01fU0VDVElPTl9UWVBFKENSRUFURV9TRUNUSU9OX0VOVU0pCiAj
dW5kZWYgQ1JFQVRFX1NFQ1RJT05fRU5VTQpAQCAtNTAsNyArNTAsNyBAQCBzdHJ1Y3QgV0FTTVNl
Y3Rpb25zIHsKICAgICB7CiAgICAgICAgIC8vIFRoaXMgYWxsb3dzIHVua25vd24gc2VjdGlvbnMg
YWZ0ZXIgRW5kLCB3aGljaCBJIGRvdWJ0IHdpbGwgZXZlciBiZSBzdXBwb3J0ZWQgYnV0CiAgICAg
ICAgIC8vIHRoZXJlIGlzIG5vIHJlYXNvbiB0byBwb3RlbnRpYWxseSBicmVhayBiYWNrd2FyZHMg
Y29tcGF0YWJpbGl0eS4KLSAgICAgICAgaWYgKHByZXZpb3VzID09IFNlY3Rpb246OlVua25vd24p
CisgICAgICAgIGlmIChwcmV2aW91cyA9PSBVbmtub3duKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIHJldHVybiBwcmV2aW91cyA8IG5leHQ7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287681</attachid>
            <date>2016-09-01 14:35:05 -0700</date>
            <delta_ts>2016-09-01 17:06:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161471-20160901143250.patch</filename>
            <type>text/plain</type>
            <size>29143</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MjIwMjE2NWM4MzM4Y2ZmMjNjYmE1MTIwOTRiYzcwM2UyNTAyYjM5Li4yNGQ4NjBiYTIyMThjNzVl
OTAwZjk3MDA1MTFiNDdjNDczNjdlNmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0OSBAQAogMjAxNi0wOS0wMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KIAorICAgICAgICBXQVNNIGZ1bmN0aW9ucyBzaG91bGQgYmUgYWJsZSB0byB1c2UgYXJn
dW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjE0NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGRvZXMgYSBjb3VwbGUgb2YgY2hhbmdlczoKKworICAgICAgICAxKSBBZGRzIGEg
bmV3IENhbGxpbmcgQ29udmVudGlvbiBjbGFzcyBmb3IgQjMuIFRoaXMgY2xhc3MgaXMgdXNlZCB0
byBtYWtlIGl0IGVhc3kgdG8gc3BlY2lmeSB0aGUgY2FsbGluZyBjb252ZW50aW9uIG9mIGEgZnVu
Y3Rpb24uIEluIHBhcnRpY3VsYXIgaXQga25vd3Mgd2hpY2ggYXJndW1lbnRzIGFyZSBpbiByZWdp
c3RlcnMgYW5kIHdoaWNoIG9uZXMgc2hvdWxkIGJlIG9uIHRoZSBzdGFjay4gRm9yIG5vdywgbm90
aGluZyB1c2VzIHRoZSBhcmd1bWVudCByZWdpc3RlcnMsIGluIHRoZSBmdXR1cmUgd2Ugd2lsbCB1
c2UgdGhlc2UgZm9yIFdBU00gYW5kL29yIEpTLiBBZGRpdG9uYWxseSwgaXQga25vd3MgdGhlIGNh
bGxlZSBzYXZlIHJlZ2lzdGVycyBmb3IgYW55IGdpdmVuIGZ1bmN0aW9uLiBUaGUgbWFpbiBhZHZh
bnRhZ2Ugb2YgdGhpcyBjbGFzcyBpcyB0aGF0IGl0IG1ha2VzIGl0IGVhc3kgdG8gaXRlcmF0ZSBv
dmVyIHRoZSBhcmd1bWVudHMgb2YgeW91ciBmdW5jdGlvbiB3aXRob3V0IGhhdmluZyB0byB3b3Jy
eSBhYm91dCB0aGUgZGV0YWlscyBvZiB0aGUgY2FsbGluZyBjb252ZW50aW9uIHlvdSBhcmUgdXNp
bmcuCisKKyAgICAgICAgMikgTWFrZXMgdGhlIFdBU00gY2FsbGluZyBjb252ZW50aW9uIHRoZSBz
YW1lIGFzIHRoZSBKUyBvbmUuIEN1cnJlbnRseSwgdGhlIENvZGVCbG9jaywgQ29kZU9yaWdpbiwg
YW5kIENhbGxlZSBhcmUgYWxsIDAuIFNpbmNlIHRoZXkgaGF2ZSBubyB2YWx1ZS4gQWRkaXRpb25h
bGx5LCBzaW5jZSB3ZSBjYWxsIGludG8gV0FTTSBmcm9tIEMrKyB0aHJvdWdoIHZtRW50cnlUb0ph
dmFTY3JpcHQsIGlmIHRoZXJlIGFyZSBubyBhcmd1bWVudHMgdG8gdGhlIGNhbGxlZSB3ZSBpbnNl
cnQgYSBudWxsIHBvaW50ZXIgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LgorCisgICAgICAgIDMpIFNp
bmNlIFdBU00gZXhwZWN0cyB0aGUgYXJndW1lbnRzIHRvIGJlIG1hcHBlZCB0byBmdW5jdGlvbiBs
b2NhbHMgd2UgbWFwIHRoZSBhcmd1bWVudCBzdGFjayBzbG90cyB0byB2YXJpYWJsZXMgaW1tZWRp
YXRlbHkgYWZ0ZXIgdGhlIGZ1bmN0aW9uIHByb2xvZ3VlLgorCisgICAgICAgICogQjNDYWxsaW5n
Q29udmVudGlvbnMuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRUaHVua3MuaC4KKyAgICAgICAgKEpTQzo6QjM6OmpzY0NhbGxpbmdDb252ZW50aW9uKToK
KyAgICAgICAgKiBCM0NhbGxpbmdDb252ZW50aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkNhbGxpbmdDb252ZW50aW9uOjpDYWxsaW5nQ29udmVudGlvbik6CisgICAgICAgIChKU0M6
OkIzOjpDYWxsaW5nQ29udmVudGlvbjo6aXRlcmF0ZSk6CisgICAgICAgIChKU0M6OkIzOjpuZXh0
SlNDT2Zmc2V0KToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGludGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmg6CisgICAgICAg
ICogbGxpbnQvTExJbnRUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjp2bUVudHJ5VG9XQVNNKToK
KyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5oOgorICAgICAgICAqIHRlc3RXQVNNLmNwcDoK
KyAgICAgICAgKGludm9rZSk6CisgICAgICAgIChib3gpOgorICAgICAgICAocnVuV0FTTVRlc3Rz
KToKKyAgICAgICAgKiB3YXNtL1dBU01CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
V0FTTTo6QjNJUkdlbmVyYXRvcjo6YWRkTG9jYWwpOgorICAgICAgICAoSlNDOjpXQVNNOjpCM0lS
R2VuZXJhdG9yOjphZGRBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpXQVNNOjpCM0lSR2VuZXJh
dG9yOjpnZXRMb2NhbCk6CisgICAgICAgICogd2FzbS9XQVNNRm9ybWF0Lmg6CisgICAgICAgICog
d2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V0FTTTo6RnVuY3Rpb25Q
YXJzZXI8Q29udGV4dD46OkZ1bmN0aW9uUGFyc2VyKToKKyAgICAgICAgKEpTQzo6V0FTTTo6RnVu
Y3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgICogd2FzbS9X
QVNNTW9kdWxlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V0FTTTo6TW9kdWxlUGFyc2VyOjpw
YXJzZUZ1bmN0aW9uVHlwZXMpOgorICAgICAgICAoSlNDOjpXQVNNOjpNb2R1bGVQYXJzZXI6OnBh
cnNlRnVuY3Rpb25TaWduYXR1cmVzKToKKyAgICAgICAgKiB3YXNtL1dBU01Nb2R1bGVQYXJzZXIu
aDoKKyAgICAgICAgKiB3YXNtL1dBU01PcHMuaDoKKworMjAxNi0wOS0wMSAgS2VpdGggTWlsbGVy
ICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW5hbWUgV0FTTSBjbGFzc2Vz
IGRyb3BwaW5nIHRoZSBXQVNNIHByZWZpeAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTAwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9CM0NhbGxpbmdDb252ZW50aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQjND
YWxsaW5nQ29udmVudGlvbnMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyNzYxZjkyMjA1YzE2NWViMjA2OGZk
MzM4ZjU2OWJlZjU5ZWQ5ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQjNDYWxsaW5nQ29udmVudGlvbnMuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQjNDYWxsaW5nQ29udmVudGlvbnMuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisK
K25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgQjMgeworCitzdGF0aWMgSlNDQ2FsbGluZ0Nv
bnZlbnRpb24qIHN0YXRpY0pTQ0NhbGxpbmdDb252ZW50aW9uOworCitKU0NDYWxsaW5nQ29udmVu
dGlvbioganNjQ2FsbGluZ0NvbnZlbnRpb24oKQoreworICAgIGlmIChMSUtFTFkoc3RhdGljSlND
Q2FsbGluZ0NvbnZlbnRpb24pKQorICAgICAgICByZXR1cm4gc3RhdGljSlNDQ2FsbGluZ0NvbnZl
bnRpb247CisgICAgc3RhdGljSlNDQ2FsbGluZ0NvbnZlbnRpb24gPSBuZXcgQ2FsbGluZ0NvbnZl
bnRpb248anNjSGVhZGVyU2l6ZSwgbmV4dEpTQ09mZnNldD4oVmVjdG9yPEdQUlJlZz4oKSwgUmVn
aXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgcmV0dXJuIHN0YXRpY0pTQ0Nh
bGxpbmdDb252ZW50aW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBCMworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQjNDYWxsaW5nQ29udmVudGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9CM0NhbGxpbmdDb252ZW50aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzNjU5NTliNThjZWMyNmJhYmZh
NTViODM2MTVhOTA1Yzg1Yzc2MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQjNDYWxsaW5nQ29udmVudGlvbnMuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNBcmd1bWVudFJlZ1ZhbHVlLmgiCisjaW5jbHVk
ZSAiQjNCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAiQjNDb25zdDY0VmFsdWUuaCIKKyNpbmNsdWRl
ICJCM01lbW9yeVZhbHVlLmgiCisjaW5jbHVkZSAiQjNUeXBlLmgiCisjaW5jbHVkZSAiQ2FsbEZy
YW1lLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK25h
bWVzcGFjZSBCMyB7CisKK3R5cGVkZWYgdW5zaWduZWQgKCpOZXh0T2Zmc2V0KSh1bnNpZ25lZCBj
dXJyZW50T2Zmc2V0LCBUeXBlIHR5cGUpOworCit0ZW1wbGF0ZTx1bnNpZ25lZCBvZmZzZXQsIE5l
eHRPZmZzZXQgdXBkYXRlT2Zmc2V0PgorY2xhc3MgQ2FsbGluZ0NvbnZlbnRpb24geworcHVibGlj
OgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBoZWFkZXJTaXplID0gb2Zmc2V0OworCisgICAg
Q2FsbGluZ0NvbnZlbnRpb24oVmVjdG9yPEdQUlJlZz4mJiByZWdpc3RlckFyZ3VtZW50cywgUmVn
aXN0ZXJTZXQmJiBjYWxsZWVTYXZlUmVnaXN0ZXJzKQorICAgICAgICA6IG1fcmVnaXN0ZXJBcmd1
bWVudHMocmVnaXN0ZXJBcmd1bWVudHMpCisgICAgICAgICwgbV9jYWxsZWVTYXZlUmVnaXN0ZXJz
KGNhbGxlZVNhdmVSZWdpc3RlcnMpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+CisgICAgdm9pZCBpdGVyYXRlKGNvbnN0IFZlY3RvcjxUeXBlPiYgYXJndW1l
bnRUeXBlcywgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaywgT3JpZ2luIG9yaWdp
biwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVk
IGN1cnJlbnRPZmZzZXQgPSBoZWFkZXJTaXplOworICAgICAgICBWYWx1ZSogZnJhbWVQb2ludGVy
ID0gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRnJhbWVQb2ludGVyLCBvcmlnaW4pOwor
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudFR5cGVzLnNpemUoKTsg
KytpKSB7CisgICAgICAgICAgICBWYWx1ZSogYXJndW1lbnQ7CisgICAgICAgICAgICBpZiAoaSA8
IG1fcmVnaXN0ZXJBcmd1bWVudHMuc2l6ZSgpKQorICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0g
YmxvY2stPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBvcmlnaW4sIG1fcmVnaXN0
ZXJBcmd1bWVudHNbaV0pOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgVmFs
dWUqIGFkZHJlc3MgPSBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIG9yaWdpbiwg
ZnJhbWVQb2ludGVyLAorICAgICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PENvbnN0
NjRWYWx1ZT4ocHJvYywgb3JpZ2luLCBjdXJyZW50T2Zmc2V0KSk7CisgICAgICAgICAgICAgICAg
YXJndW1lbnQgPSBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBhcmd1
bWVudFR5cGVzW2ldLCBvcmlnaW4sIGFkZHJlc3MpOworICAgICAgICAgICAgICAgIGN1cnJlbnRP
ZmZzZXQgPSB1cGRhdGVPZmZzZXQoY3VycmVudE9mZnNldCwgYXJndW1lbnRUeXBlc1tpXSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBmdW5jdG9yKGFyZ3VtZW50LCBpKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGNvbnN0IFZlY3RvcjxHUFJSZWc+IG1fcmVnaXN0ZXJBcmd1bWVudHM7
CisgICAgY29uc3QgUmVnaXN0ZXJTZXQgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOworICAgIGNvbnN0
IFJlZ2lzdGVyU2V0IG1fY2FsbGVyU2F2ZVJlZ2lzdGVyczsKK307CisKK2lubGluZSB1bnNpZ25l
ZCBuZXh0SlNDT2Zmc2V0KHVuc2lnbmVkIGN1cnJlbnRPZmZzZXQsIFR5cGUpCit7CisgICAgcmV0
dXJuIGN1cnJlbnRPZmZzZXQgKyBzaXplb2YoUmVnaXN0ZXIpOworfQorCitjb25zdGV4cHIgdW5z
aWduZWQganNjSGVhZGVyU2l6ZSA9IEV4ZWNTdGF0ZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzICog
c2l6ZW9mKFJlZ2lzdGVyKTsKK3R5cGVkZWYgQ2FsbGluZ0NvbnZlbnRpb248anNjSGVhZGVyU2l6
ZSwgbmV4dEpTQ09mZnNldD4gSlNDQ2FsbGluZ0NvbnZlbnRpb247CisKK0pTQ0NhbGxpbmdDb252
ZW50aW9uKiBqc2NDYWxsaW5nQ29udmVudGlvbigpOworCit9IC8vIG5hbWVzcGFjZSBCMworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGM1YmIzZjI0ZTEzOGI3NjZmYWM1ZTlhZGYwNDY3Y2UzZmQ2
ODI2MmEuLmY0OWFiNjA3YTBkYzE0YzYyZjQ0YjRlNDdkNjRiNmUxZGViMmJiNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTc5LDYgKzExNzksNyBAQAogCQk1MkM5NTJCOTE5
QTI4QTFDMDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQzk1MkI4MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBl
UHJvZmlsZXIuY3BwICovOyB9OwogCQk1MzEzNzRCRDFENUNFNjc2MDBBRjdBMEIgLyogV0FTTVBs
YW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzMTM3
NEJDMUQ1Q0U2NzYwMEFGN0EwQiAvKiBXQVNNUGxhbi5oICovOyB9OwogCQk1MzEzNzRCRjFENUNF
OTUwMDBBRjdBMEIgLyogV0FTTVBsYW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTMxMzc0QkUxRDVDRTk1MDAwQUY3QTBCIC8qIFdBU01QbGFuLmNw
cCAqLzsgfTsKKwkJNTMxQjNDODcxRDc0QzYwMzAwNUIzMjM2IC8qIEIzQ2FsbGluZ0NvbnZlbnRp
b25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzFC
M0M4NjFENzRDNjAzMDA1QjMyMzYgLyogQjNDYWxsaW5nQ29udmVudGlvbnMuaCAqLzsgfTsKIAkJ
NTM0ODZCQjcxQzE3OTVDMzAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM0ODZCQjYxQzE3OTVDMzAwRjZGM0FG
IC8qIEpTVHlwZWRBcnJheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywg
KTsgfTsgfTsKIAkJNTM0ODZCQkIxQzE4RTg0NTAwRjZGM0FGIC8qIEpTVHlwZWRBcnJheS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ4NkJCQTFD
MThFODQ1MDBGNkYzQUYgLyogSlNUeXBlZEFycmF5LmNwcCAqLzsgfTsKIAkJNTM0OTAyODUxQzcy
NzZCNzAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzQ5MDI4MjFDNzI0MkM4MDAxMkJDQjggLyogVHlw
ZWRBcnJheUNUZXN0LmNwcCAqLzsgfTsKQEAgLTExODcsNiArMTE4OCw3IEBACiAJCTUzNTI5QTRD
MUM0NTdCNzUwMDBCNDlDNiAvKiBBUElVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTM1MjlBNEIxQzQ1N0I3NTAwMEI0OUM2IC8qIEFQSVV0aWxz
LmggKi87IH07CiAJCTUzNzBCNEY1MUJGMjYyMDIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVk
UHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNzBCNEYzMUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2
ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCAqLzsgfTsKIAkJNTM3MEI0
RjYxQkYyNjIwNTAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzNzBCNEY0MUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1
ZVdhdGNocG9pbnRCYXNlLmggKi87IH07CisJCTUzODhCNDA0MUQ3NjY0MEIwMEQzRDg1MiAvKiBC
M0NhbGxpbmdDb252ZW50aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Mzg4QjQwMzFENzY2NDBCMDBEM0Q4NTIgLyogQjNDYWxsaW5nQ29udmVu
dGlvbnMuY3BwICovOyB9OwogCQk1MzkxN0U3QjFCNzkwNkZBMDAwRUJEMzMgLyogSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzOTE3RTdBMUI3OTA2RTQwMDBFQkQzMyAvKiBKU0dl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oICovOyB9OwogCQk1MzlFQjA3
OTFENTU2MDcwMDBDODJFRjcgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwRUI2MTA1Qzg2QzZCMDBFNkRG
MUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCTUzOUVCMDdBMUQ1NTYwNzAwMEM4
MkVGNyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2
YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OwpAQCAtMzM3MSw2ICszMzczLDcgQEAKIAkJNTJD
OTUyQjgxOUEyOEExQzAwNjlCMzg2IC8qIFR5cGVQcm9maWxlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBUeXBlUHJvZmlsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzEz
NzRCQzFENUNFNjc2MDBBRjdBMEIgLyogV0FTTVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0FTTVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMx
Mzc0QkUxRDVDRTk1MDAwQUY3QTBCIC8qIFdBU01QbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdBU01QbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTMxQjNDODYxRDc0QzYwMzAwNUIzMjM2IC8qIEIzQ2FsbGluZ0NvbnZlbnRpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEIzQ2FsbGluZ0NvbnZlbnRpb25zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDg2QkI2MUMxNzk1QzMwMEY2RjNBRiAv
KiBKU1R5cGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUeXBl
ZEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNDg2QkJBMUMxOEU4NDUw
MEY2RjNBRiAvKiBKU1R5cGVkQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNUeXBlZEFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTM0OTAyODIxQzcyNDJDODAwMTJCQ0I4IC8qIFR5cGVkQXJyYXlDVGVzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUeXBlZEFycmF5Q1Rlc3QuY3BwOyBwYXRoID0g
QVBJL3Rlc3RzL1R5cGVkQXJyYXlDVGVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zMzgxLDYgKzMzODQsNyBAQAogCQk1MzUyOUE0QjFDNDU3Qjc1MDAwQjQ5QzYgLyogQVBJ
VXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVXRpbHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8qIEFk
YXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzNzBCNEY0
MUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTM4OEI0MDMxRDc2NjQwQjAwRDNEODUyIC8qIEIzQ2FsbGluZ0NvbnZlbnRpb25zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEIzQ2FsbGluZ0NvbnZlbnRp
b25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM5MTdFN0ExQjc5MDZFNDAw
MEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzOTE3RTdD
MUI3OTExMDYwMDBFQkQzMyAvKiBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTM5MTdFODMxQjc5MUNCODAwMEVCRDMzIC8qIFR5
cGVkQXJyYXlQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5h
bWUgPSBUeXBlZEFycmF5UHJvdG90eXBlLmpzOyBwYXRoID0gYnVpbHRpbnMvVHlwZWRBcnJheVBy
b3RvdHlwZS5qczsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwpAQCAtNDc3NSw2ICs0Nzc5
LDggQEAKIAkJCQlEQ0ZERkJENzFEMUY1RDk4MDBGRTNENzIgLyogQjNCb3R0b21Qcm92aWRlci5o
ICovLAogCQkJCTBGNkI4QURFMUM0RUZFMTcwMDk2OTA1MiAvKiBCM0JyZWFrQ3JpdGljYWxFZGdl
cy5jcHAgKi8sCiAJCQkJMEY2QjhBREYxQzRFRkUxNzAwOTY5MDUyIC8qIEIzQnJlYWtDcml0aWNh
bEVkZ2VzLmggKi8sCisJCQkJNTM4OEI0MDMxRDc2NjQwQjAwRDNEODUyIC8qIEIzQ2FsbGluZ0Nv
bnZlbnRpb25zLmNwcCAqLywKKwkJCQk1MzFCM0M4NjFENzRDNjAzMDA1QjMyMzYgLyogQjNDYWxs
aW5nQ29udmVudGlvbnMuaCAqLywKIAkJCQlEQzlBMEMxQzFEMkQ5NEVGMDA4NTEyNEUgLyogQjND
YXNlQ29sbGVjdGlvbi5jcHAgKi8sCiAJCQkJREM5QTBDMUQxRDJEOTRFRjAwODUxMjRFIC8qIEIz
Q2FzZUNvbGxlY3Rpb24uaCAqLywKIAkJCQlEQzlBMEMxRTFEMkQ5NEVGMDA4NTEyNEUgLyogQjND
YXNlQ29sbGVjdGlvbklubGluZXMuaCAqLywKQEAgLTQ4ODksOSArNDg5NSw5IEBACiAJCQkJMEZF
Qzg0RUYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3dpdGNoVmFsdWUuY3BwICovLAogCQkJCTBGRUM4
NEYwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaFZhbHVlLmggKi8sCiAJCQkJMEY0NTcwM0Ux
QkU1ODRDQTAwNjJBNjI5IC8qIEIzVGltaW5nU2NvcGUuY3BwICovLAorCQkJCTBGRUM4NEYyMUJE
QUNEQUMwMDgwRkY3NCAvKiBCM1R5cGUuaCAqLywKIAkJCQkwRjQ1NzAzRjFCRTU4NENBMDA2MkE2
MjkgLyogQjNUaW1pbmdTY29wZS5oICovLAogCQkJCTBGRUM4NEYxMUJEQUNEQUMwMDgwRkY3NCAv
KiBCM1R5cGUuY3BwICovLAotCQkJCTBGRUM4NEYyMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1R5cGUu
aCAqLywKIAkJCQlEQ0ZERkJEODFEMUY1RDk4MDBGRTNENzIgLyogQjNUeXBlTWFwLmggKi8sCiAJ
CQkJMEZFQzg0RjMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzVXBzaWxvblZhbHVlLmNwcCAqLywKIAkJ
CQkwRkVDODRGNDFCREFDREFDMDA4MEZGNzQgLyogQjNVcHNpbG9uVmFsdWUuaCAqLywKQEAgLTgy
NjUsNiArODI3MSw3IEBACiAJCQkJOTlEQTAwQjExQkQ1OTk0RTAwRjQ1NzVDIC8qIFVwZGF0ZUNv
bnRlbnRzLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NjNCMzgxM0ZDNkZFOTAwMDJEOUIyIC8q
IFZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0MjZBNDgxNDYwQ0JCMzAwMTMx
RjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTUzMUIzQzg3MUQ3NEM2
MDMwMDVCMzIzNiAvKiBCM0NhbGxpbmdDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NzlFRTBDMDAxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNkM3MzUxMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRlRmly
ZURldGFpbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMkQxQUE5MDk1NjAwRDMzQjMzIC8q
IFZhck9mZnNldC5oIGluIEhlYWRlcnMgKi8sCkBAIC04OTE2LDYgKzg5MjMsNyBAQAogCQkJCTcw
OTRDNERFMUFFNDM5NTMwMDQxQTJFRSAvKiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUMyRkNBRTEyMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzMzhFMEQxQkYwMjc2QzAw
MTNDODhGIC8qIEIzRGF0YVNlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTM4OEI0MDQx
RDc2NjQwQjAwRDNEODUyIC8qIEIzQ2FsbGluZ0NvbnZlbnRpb25zLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTY1QjgzOTJGMUJBQ0FENkEwMDQ0RTgyNCAvKiBDYWNoZWRSZWNvdmVyeS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNDI4MDgyRDEwN0VDMDU3MDAxM0U3QjIgLyogQ2FsbERhdGEuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2NEIyNzkxQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdl
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvUHJvdG9DYWxsRnJhbWUuaAppbmRleCBhZjMzYTMwNzJjY2M2MTUzZGFhMGM3NWFlMTRi
YzZiOGIzYjIxMmM5Li5jYzc3MDEwOTZlMWI2MjBjZTkyNDc1NjA2ODY1OWUzYjYyZjk5YzZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJh
bWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJh
bWUuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RydWN0IFByb3Rv
Q2FsbEZyYW1lIHsKK3N0cnVjdCBKU19FWFBPUlRfUFJJVkFURSBQcm90b0NhbGxGcmFtZSB7CiAg
ICAgUmVnaXN0ZXIgY29kZUJsb2NrVmFsdWU7CiAgICAgUmVnaXN0ZXIgY2FsbGVlVmFsdWU7CiAg
ICAgUmVnaXN0ZXIgYXJnQ291bnRBbmRDb2RlT3JpZ2luVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAppbmRleCBiNmQ0ODE3NDk2YTJhNzQzZWU3MTQ3
MTE5YTFiZTI4OTQ0MWJjMjg0Li5iMzMzNDE0ZTk5NzIzOTRmY2Q4ZDJlNDk3Y2E1ZWFkYzBlZWZh
ZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3Mu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKQEAg
LTQxLDYgKzQxLDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitFbmNvZGVkSlNWYWx1ZSBKU19F
WFBPUlRfUFJJVkFURSB2bUVudHJ5VG9XQVNNKHZvaWQqIGNvZGUsIFZNKiB2bSwgUHJvdG9DYWxs
RnJhbWUqIGZyYW1lKQoreworICAgIHJldHVybiB2bUVudHJ5VG9KYXZhU2NyaXB0KGNvZGUsIHZt
LCBmcmFtZSk7Cit9CisgICAgCiAjaWYgRU5BQkxFKEpJVCkKIAogbmFtZXNwYWNlIExMSW50IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKaW5kZXggOTViMGY0NDg0
OGJjYzUyOWQxNTAzZTI4OWI5M2VmZTM3MDVjODMxNi4uOWI3ZTI2NmFlNDlkN2M3YjYwM2VlMWNl
Y2E3OTE5NTBhYTQ2OTc5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50VGh1bmtzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1
bmtzLmgKQEAgLTM4LDYgKzM4LDggQEAgZXh0ZXJuICJDIiB7CiAgICAgRW5jb2RlZEpTVmFsdWUg
dm1FbnRyeVRvTmF0aXZlKHZvaWQqLCBWTSosIFByb3RvQ2FsbEZyYW1lKik7CiB9CiAKK0VuY29k
ZWRKU1ZhbHVlIEpTX0VYUE9SVF9QUklWQVRFIHZtRW50cnlUb1dBU00odm9pZCosIFZNKiwgUHJv
dG9DYWxsRnJhbWUqKTsKKwogbmFtZXNwYWNlIExMSW50IHsKIAogTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoVk0qKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0V0FTTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdFdBU00uY3BwCmluZGV4IDA3YTIwZjk1MDkxNmNhMWMxNjI3NzExMzIxOTg2NDkzNTQ3
Yzc5YWEuLmMxNWVkNWY0ZDNiNDE1ZGEyOWI5NWVlZjFkODljYjEzODA1NjU2MjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0V0FTTS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RXQVNNLmNwcApAQCAtMjcsNyArMjcsMTAgQEAKIAogI2luY2x1ZGUgIkIz
Q29tcGlsYXRpb24uaCIKICNpbmNsdWRlICJJbml0aWFsaXplVGhyZWFkaW5nLmgiCisjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUg
IkxMSW50VGh1bmtzLmgiCisjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKICNpbmNsdWRlICJW
TS5oIgogI2luY2x1ZGUgIldBU01QbGFuLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KQEAg
LTE5MCwxNyArMTkzLDM3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2Ug
V0FTTTsKIHVzaW5nIG5hbWVzcGFjZSBCMzsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUuLi4gQXJndW1lbnRzPgotVCBpbnZva2UoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHB0ciwgQXJn
dW1lbnRzLi4uIGFyZ3VtZW50cykKKy8vIEZJWE1FOiBUaGlzIGlzIHB1cmUgaGFja3MgYW5kIHNo
b3VsZCBiZSBjaGFuZ2VkLi4uIHBsZWFzZS4uLgordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1QgaW52
b2tlKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBwdHIsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxKU1Zh
bHVlPiBhcmdzKQogewotICAgIFQgKCpmdW5jdGlvbikoQXJndW1lbnRzLi4uKSA9IGJpdHdpc2Vf
Y2FzdDxUKCopKEFyZ3VtZW50cy4uLik+KHB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSAgICBy
ZXR1cm4gZnVuY3Rpb24oYXJndW1lbnRzLi4uKTsKKyAgICBKU1ZhbHVlIGZpcnN0QXJndW1lbnQ7
CisgICAgLy8gU2luY2Ugdm1FbnRyeVRvSmF2YVNjcmlwdCBleHBlY3RzIGEgdGhpcyB2YWx1ZSB3
ZSBjbGFpbSB0aGVyZSBpcyBvbmUuLi4gdGhlcmUgaXNuJ3QuCisgICAgaW50IGFyZ0NvdW50ID0g
MTsKKyAgICBKU1ZhbHVlKiByZW1haW5pbmdBcmd1bWVudHMgPSBudWxscHRyOworICAgIGlmIChh
cmdzLnNpemUoKSkgeworICAgICAgICByZW1haW5pbmdBcmd1bWVudHMgPSBjb25zdF9jYXN0PEpT
VmFsdWUqPihhcmdzLmJlZ2luKCkpOworICAgICAgICBmaXJzdEFyZ3VtZW50ID0gKnJlbWFpbmlu
Z0FyZ3VtZW50czsKKyAgICAgICAgcmVtYWluaW5nQXJndW1lbnRzKys7CisgICAgICAgIGFyZ0Nv
dW50ID0gYXJncy5zaXplKCk7CisgICAgfQorCisgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxs
RnJhbWU7CisgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChudWxscHRyLCBudWxscHRyLCBmaXJzdEFy
Z3VtZW50LCBhcmdDb3VudCwgcmVtYWluaW5nQXJndW1lbnRzKTsKKworICAgIC8vIFRoaXMgd29u
J3Qgd29yayBmb3IgZmxvYXRpbmcgcG9pbnQgdmFsdWVzIGJ1dCB3ZSBkb24ndCBoYXZlIHRob3Nl
IHlldC4KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4odm1FbnRyeVRvV0FTTShwdHIuZXhlY3V0
YWJsZUFkZHJlc3MoKSwgdm0sICZwcm90b0NhbGxGcmFtZSkpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorVCBpbnZva2UoY29uc3QgQ29tcGlsYXRpb24mIGNvZGUsIHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxKU1ZhbHVlPiBhcmdzKQoreworICAgIHJldHVybiBpbnZva2U8VD4oY29kZS5jb2Rl
KCksIGFyZ3MpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVu
dHM+Ci1UIGludm9rZShjb25zdCBDb21waWxhdGlvbiYgY29kZSwgQXJndW1lbnRzLi4uIGFyZ3Vt
ZW50cykKK2lubGluZSBKU1ZhbHVlIGJveCh1aW50NjRfdCB2YWx1ZSkKIHsKLSAgICByZXR1cm4g
aW52b2tlPFQ+KGNvZGUuY29kZSgpLCBhcmd1bWVudHMuLi4pOworICAgIHJldHVybiBKU1ZhbHVl
OjpkZWNvZGUodmFsdWUpOwogfQogCiAvLyBGb3Igbm93IHdlIGlubGluZSB0aGUgdGVzdCBmaWxl
cy4KQEAgLTIyNCw3ICsyNDcsNyBAQCBzdGF0aWMgdm9pZCBydW5XQVNNVGVzdHMoKQogICAgICAg
ICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3QgY3Jhc2guCi0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSkgPT0gNSk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyB9KSA9PSA1KTsKICAg
ICB9CiAKIApAQCAtMjQ2LDcgKzI2OSw3IEBAIHN0YXRpYyB2b2lkIHJ1bldBU01UZXN0cygpCiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdKSA9PSAxMSk7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFswXSwgeyB9KSA9PSAx
MSk7CiAgICAgfQogICAgIAogICAgIHsKQEAgLTI2Nyw3ICsyOTAsNyBAQCBzdGF0aWMgdm9pZCBy
dW5XQVNNVGVzdHMoKQogICAgICAgICB9CiAKICAgICAgICAgLy8gVGVzdCB0aGlzIGRvZXNuJ3Qg
Y3Jhc2guCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGludm9rZTxpbnQ+KCpwbGFuLnJlc3VsdFsw
XSkgPT0gMTEpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnZva2U8aW50PigqcGxhbi5yZXN1
bHRbMF0sIHsgfSkgPT0gMTEpOwogICAgIH0KIAogICAgIHsKQEAgLTI4OCw3ICszMTEsMjkgQEAg
c3RhdGljIHZvaWQgcnVuV0FTTVRlc3RzKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRlc3Qg
dGhpcyBkb2Vzbid0IGNyYXNoLgotICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnZva2U8aW50Pigq
cGxhbi5yZXN1bHRbMF0pID09IDExKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW52b2tlPGlu
dD4oKnBsYW4ucmVzdWx0WzBdLCB7IH0pID09IDExKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IC8vIEdlbmVyYXRlZCBmcm9tOiAobW9kdWxlIChmdW5jICRhZGQgKHBhcmFtICR4IGkzMikgKHBh
cmFtICR5IGkzMikgKHJlc3VsdCBpMzIpIChyZXR1cm4gKGkzMi5hZGQgKGdldF9sb2NhbCAkeCkg
KGdldF9sb2NhbCAkeSkpKSkgKQorICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yID0gewor
ICAgICAgICAgICAgMHgwMCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwYywgMHgwMCwgMHgwMCwgMHgw
MCwgMHgwNCwgMHg3NCwgMHg3OSwgMHg3MCwgMHg2NSwgMHg4NywgMHg4MCwgMHg4MCwKKyAgICAg
ICAgICAgIDB4MDAsIDB4MDEsIDB4NDAsIDB4MDIsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4
MDgsIDB4NjYsIDB4NzUsIDB4NmUsIDB4NjMsIDB4NzQsIDB4NjksIDB4NmYsCisgICAgICAgICAg
ICAweDZlLCAweDgyLCAweDgwLCAweDgwLCAweDAwLCAweDAxLCAweDAwLCAweDA0LCAweDYzLCAw
eDZmLCAweDY0LCAweDY1LCAweDhlLCAweDgwLCAweDgwLCAweDAwLAorICAgICAgICAgICAgMHgw
MSwgMHg4OSwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHgxNCwgMHgwMSwg
MHg0MCwgMHgwOSwgMHgwMSwgMHgwZgorICAgICAgICB9OworCisgICAgICAgIFBsYW4gcGxhbigq
dm0sIHZlY3Rvcik7CisgICAgICAgIGlmIChwbGFuLnJlc3VsdC5zaXplKCkgIT0gMSB8fCAhcGxh
bi5yZXN1bHRbMF0pIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTW9kdWxlIGZhaWxlZCB0byBj
b21waWxlIGNvcnJlY3RseS4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBUZXN0IHRoaXMgZG9lc24ndCBjcmFzaC4KKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7Ym94KDApLCBib3goMSl9KSA9PSAxKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW52b2tlPGludD4oKnBsYW4ucmVzdWx0WzBdLCB7Ym94
KDEwMCksIGJveCgxKX0pID09IDEwMSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGludm9rZTxp
bnQ+KCpwbGFuLnJlc3VsdFswXSwge2JveCgtMSksIGJveCgxKX0pID09IDApOworICAgICAgICBS
RUxFQVNFX0FTU0VSVChpbnZva2U8aW50PigqcGxhbi5yZXN1bHRbMF0sIHtib3goc3RkOjpudW1l
cmljX2xpbWl0czxpbnQ+OjptYXgoKSksIGJveCgxKX0pID09IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50Pjo6bWluKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDczYWU1OGRjM2VkYjU0OTljMTdmNzYxYTQx
MGYxY2RiOGJiODJkNzcuLjk5NWI3YmExMWNjMjc5OWY4ZjhiZjRjOGRkOGY4ZGU2NWNkMjA4NGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01CM0lSR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQjNJUkdlbmVyYXRvci5j
cHAKQEAgLTI5LDkgKzI5LDExIEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVk
ZSAiQjNCYXNpY0Jsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIkIzQ2FsbGluZ0NvbnZlbnRpb25z
LmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1ZhcmlhYmxlLmgi
CiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVlLmgiCisjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVy
LmgiCiAjaW5jbHVkZSAiV0FTTUZ1bmN0aW9uUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CiAKQEAgLTY3LDkgKzY5LDEyIEBAIHB1YmxpYzoKIAogICAgIEIzSVJHZW5lcmF0b3Io
UHJvY2VkdXJlJik7CiAKKyAgICB2b2lkIGFkZEFyZ3VtZW50cyhjb25zdCBWZWN0b3I8VHlwZT4m
KTsKICAgICB2b2lkIGFkZExvY2FsKFR5cGUsIHVpbnQzMl90KTsKICAgICBFeHByZXNzaW9uVHlw
ZSBhZGRDb25zdGFudChUeXBlLCB1aW50NjRfdCk7CiAKKyAgICBib29sIFdBUk5fVU5VU0VEX1JF
VFVSTiBnZXRMb2NhbCh1aW50MzJfdCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CisK
ICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBiaW5hcnlPcChCaW5hcnlPcFR5cGUsIEV4cHJl
c3Npb25UeXBlIGxlZnQsIEV4cHJlc3Npb25UeXBlIHJpZ2h0LCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0KTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiB1bmFyeU9wKFVuYXJ5T3BUeXBlLCBF
eHByZXNzaW9uVHlwZSBhcmcsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwogCkBAIC04OCw2ICs5
Myw3IEBAIHByaXZhdGU6CiAgICAgQmFzaWNCbG9jayogbV9jdXJyZW50QmxvY2s7CiAgICAgLy8g
VGhpcyBpcyBhIHBhaXIgb2YgdGhlIGNvbnRpbnVhdGlvbiBhbmQgdGhlIHR5cGVzIGV4cGVjdGVk
IG9uIHRoZSBzdGFjayBmb3IgdGhhdCBjb250aW51YXRpb24uCiAgICAgVmVjdG9yPHN0ZDo6cGFp
cjxCYXNpY0Jsb2NrKiwgT3B0aW9uYWw8VmVjdG9yPFZhcmlhYmxlKj4+Pj4gbV9jb250cm9sU3Rh
Y2s7CisgICAgVmVjdG9yPFZhcmlhYmxlKj4gbV9sb2NhbHM7CiB9OwogCiBCM0lSR2VuZXJhdG9y
OjpCM0lSR2VuZXJhdG9yKFByb2NlZHVyZSYgcHJvY2VkdXJlKQpAQCAtOTYsOSArMTAyLDMxIEBA
IEIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IoUHJvY2VkdXJlJiBwcm9jZWR1cmUpCiAgICAg
bV9jdXJyZW50QmxvY2sgPSBtX3Byb2MuYWRkQmxvY2soKTsKIH0KIAotdm9pZCBCM0lSR2VuZXJh
dG9yOjphZGRMb2NhbChUeXBlLCB1aW50MzJfdCkKK3ZvaWQgQjNJUkdlbmVyYXRvcjo6YWRkTG9j
YWwoVHlwZSB0eXBlLCB1aW50MzJfdCBjb3VudCkKK3sKKyAgICBtX2xvY2Fscy5ncm93KGNvdW50
KTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgbV9s
b2NhbHMuYXBwZW5kKG1fcHJvYy5hZGRWYXJpYWJsZSh0eXBlKSk7Cit9CisKK3ZvaWQgQjNJUkdl
bmVyYXRvcjo6YWRkQXJndW1lbnRzKGNvbnN0IFZlY3RvcjxUeXBlPiYgdHlwZXMpCiB7CiAgICAg
Ly8gVE9ETzogQWRkIGxvY2Fscy4KKyAgICBBU1NFUlQoIW1fbG9jYWxzLnNpemUoKSk7CisgICAg
bV9sb2NhbHMucmVzaXplKHR5cGVzLnNpemUoKSk7CisgICAganNjQ2FsbGluZ0NvbnZlbnRpb24o
KS0+aXRlcmF0ZSh0eXBlcywgbV9wcm9jLCBtX2N1cnJlbnRCbG9jaywgT3JpZ2luKCksCisgICAg
ICAgIFsmXSAoRXhwcmVzc2lvblR5cGUgYXJndW1lbnQsIHVuc2lnbmVkIGkpIHsKKyAgICAgICAg
ICAgIFZhcmlhYmxlKiBhcmd1bWVudFZhcmlhYmxlID0gbV9wcm9jLmFkZFZhcmlhYmxlKGFyZ3Vt
ZW50LT50eXBlKCkpOworICAgICAgICAgICAgbV9sb2NhbHNbaV0gPSBhcmd1bWVudFZhcmlhYmxl
OworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPiht
X3Byb2MsIFNldCwgT3JpZ2luKCksIGFyZ3VtZW50VmFyaWFibGUsIGFyZ3VtZW50KTsKKyAgICAg
ICAgfSk7Cit9CisKK2Jvb2wgV0FSTl9VTlVTRURfUkVUVVJOIEIzSVJHZW5lcmF0b3I6OmdldExv
Y2FsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQoreworICAgIEFTU0VS
VChpbmRleCA8IG1fbG9jYWxzLnNpemUoKSk7CisgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPihtX3Byb2MsIEIzOjpHZXQsIE9yaWdpbigpLCBtX2xv
Y2Fsc1tpbmRleF0pOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIEIzSVJHZW5lcmF0b3I6
OnVuYXJ5T3AoVW5hcnlPcFR5cGUgb3AsIEV4cHJlc3Npb25UeXBlIGFyZywgRXhwcmVzc2lvblR5
cGUmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01G
b3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Gb3JtYXQuaAppbmRleCA3
ZTgzODZjOWEzMWE0NjMyOWMyYjI2NWY4NjMxYTZhMzExMTBiMDU4Li45NzVmODJiZDY4YTViNDZk
MTgxNmE0NDliZDRiNjkwMzhkZWE0MDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TUZvcm1hdC5oCkBAIC05MCw2ICs5MCw3IEBAIHN0cnVjdCBGdW5jdGlvblBvaW50ZXJUYWJsZSB7
CiB9OwogCiBzdHJ1Y3QgRnVuY3Rpb25JbmZvcm1hdGlvbiB7CisgICAgU2lnbmF0dXJlKiBzaWdu
YXR1cmU7CiAgICAgc2l6ZV90IHN0YXJ0OwogICAgIHNpemVfdCBlbmQ7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaAppbmRleCAyMWQ2ODc4
N2I2ZWJhYjIzN2EzMTg0YmY1ODY2YWRkNDYxYTIyZGVlLi5iMTYxNTI0ZmU2M2I1NGI4NzU4OGJh
NWNlNjk3OGVmNmU1ZTJkNGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
QVNNRnVuY3Rpb25QYXJzZXIuaApAQCAtNjEsNiArNjEsNyBAQCBGdW5jdGlvblBhcnNlcjxDb250
ZXh0Pjo6RnVuY3Rpb25QYXJzZXIoQ29udGV4dCYgY29udGV4dCwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JgogICAgIDogUGFyc2VyKHNvdXJjZUJ1ZmZlciwgaW5mby5zdGFydCwgaW5mby5lbmQpCiAg
ICAgLCBtX2NvbnRleHQoY29udGV4dCkKIHsKKyAgICBtX2NvbnRleHQuYWRkQXJndW1lbnRzKGlu
Zm8uc2lnbmF0dXJlLT5hcmd1bWVudHMpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0
PgpAQCAtMTM4LDYgKzEzOSwxOCBAQCBib29sIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJz
ZUV4cHJlc3Npb24oT3BUeXBlIG9wKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAg
ICBjYXNlIE9wVHlwZTo6R2V0TG9jYWw6IHsKKyAgICAgICAgdWludDMyX3QgaW5kZXg7CisgICAg
ICAgIGlmICghcGFyc2VWYXJVSW50MzIoaW5kZXgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQ7CisgICAgICAgIGlmICghbV9jb250ZXh0
LmdldExvY2FsKGluZGV4LCByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFwcGVuZChyZXN1bHQpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKICAgICBjYXNlIE9wVHlwZTo6QmxvY2s6IHsKICAgICAgICAgaWYgKCFt
X2NvbnRleHQuYWRkQmxvY2soKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKaW5kZXggOTBjMWQ1
YTE0Nzg5NmIwYjNiNmEwZGQ4ZjE3ZmZmNTcxMzYzYTc5Zi4uZTdhNWE0ZTQ2MjgxNWJmNDEwYjA3
Y2RmNTA2Y2Q1ZTg1OWMzMGQyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTU1vZHVsZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTU1vZHVsZVBhcnNlci5jcHAKQEAgLTE0MCw2ICsxNDAsOCBAQCBib29sIE1vZHVsZVBhcnNl
cjo6cGFyc2VGdW5jdGlvblR5cGVzKCkKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxv
Z0xuKCJjb3VudDogIiwgY291bnQpOwogCisgICAgbV9zaWduYXR1cmVzLnJlc2l6ZShjb3VudCk7
CisKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICB1
aW50OF90IHR5cGU7CiAgICAgICAgIGlmICghcGFyc2VVSW50Nyh0eXBlKSkKQEAgLTE4MSw4ICsx
ODMsNyBAQCBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvblR5cGVzKCkKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICByZXR1cm5UeXBlID0gVHlwZTo6Vm9pZDsKIAotICAgICAgICAv
LyBUT0RPOiBBY3R1YWxseSBkbyBzb21ldGhpbmcgd2l0aCB0aGlzIGRhdGEuLi4KLSAgICAgICAg
VU5VU0VEX1BBUkFNKHJldHVyblR5cGUpOworICAgICAgICBtX3NpZ25hdHVyZXNbaV0gPSB7IHJl
dHVyblR5cGUsIFdURk1vdmUoYXJndW1lbnRUeXBlcykgfTsKICAgICB9CiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC0xOTksNiArMjAwLDExIEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0
aW9uU2lnbmF0dXJlcygpCiAgICAgICAgIHVpbnQzMl90IHR5cGVOdW1iZXI7CiAgICAgICAgIGlm
ICghcGFyc2VWYXJVSW50MzIodHlwZU51bWJlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgaWYgKHR5cGVOdW1iZXIgPj0gbV9zaWduYXR1cmVzLnNpemUoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBtX2Z1bmN0aW9uc1tpXS5zaWduYXR1cmUg
PSAmbV9zaWduYXR1cmVzW3R5cGVOdW1iZXJdOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5oCmluZGV4IDBk
MTRmNzg4M2UzNDMzMWJjNTJhMjlhYzY1ZjE2NTg5ZWIyZmZmNzYuLmMzN2FlYTk1MGM5OWU0ZDYw
YjNmYzlkMThlYjVmMzY2ZTdjZWNhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNTW9kdWxlUGFyc2VyLmgKQEAgLTU4LDYgKzU4LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUV4cHJlc3Npb24oT3BUeXBlKTsKIAogICAgIFZlY3Rv
cjxGdW5jdGlvbkluZm9ybWF0aW9uPiBtX2Z1bmN0aW9uczsKKyAgICBWZWN0b3I8U2lnbmF0dXJl
PiBtX3NpZ25hdHVyZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXQVNNCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNT3BzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNT3BzLmgKaW5kZXggODAwMmYyNjQxNTc0OTk1M2VlZTU4MDI5ZTg2MzBiY2Mx
OGI1YjRjOC4uYzFkYjZlOTc4NDExN2QwOGIxNTRkY2NhOGNhYTRiNTFiZmExNDk2YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU9wcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dBU01PcHMuaApAQCAtMzIsNyArMzIsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIG5hbWVzcGFjZSBXQVNNIHsKIAogI2RlZmluZSBGT1JfRUFDSF9XQVNNX1NQRUNJQUxf
T1AobWFjcm8pIFwKLSAgICBtYWNybyhJMzJDb25zdCwgMHgxMCwgTkEpCisgICAgbWFjcm8oSTMy
Q29uc3QsIDB4MTAsIE5BKSBcCisgICAgbWFjcm8oR2V0TG9jYWwsIDB4MTQsIE5BKQogCiAjZGVm
aW5lIEZPUl9FQUNIX1dBU01fQ09OVFJPTF9GTE9XX09QKG1hY3JvKSBcCiAgICAgbWFjcm8oQmxv
Y2ssIDB4MDEsIE5BKSBcCg==
</data>
<flag name="review"
          id="311120"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>